gnucobol-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [open-cobol-list] RANDOM-ly non-random


From: Robert Wolfe
Subject: Re: [open-cobol-list] RANDOM-ly non-random
Date: Thu, 30 May 2013 18:49:22 +0000

Yeah, my housemate used to program in COBOL on the big iron IBM machines (he programs in RPG LE on the iSeries boxes now).  I asked him about this and said that that is an issue with the way RANDOM gets compiled on PCs.

From: Michael Anderson
Sent: Thursday, May 30, 2013 11:20 AM
To: address@hidden
Subject: Re: [open-cobol-list] RANDOM-ly non-random

I think the random function maybe have some issues, I have vague memory of a discussion about it somewhere on the Internet. :-)

Other than that, the END PROGRAM is not required, rather the period after it is required.
You must have a period at the end of each paragraph, and I'm guessing you got away without a period in the main paragraph because of the GOBACK.

Personally, I still use periods where-ever possible, for me, it makes it easier to read, others will at least need a period at the end of each paragraph.

--
Mike.


On 05/30/2013 09:30 AM, Bruce M. Axtens wrote:
Context: MinGW

$ uname -a
MINGW32_NT-6.1 MERCURY 1.0.17(0.48/3/2) 2011-04-24 23:39 i686 Msys

$ cobc -v
cobc (OpenCOBOL) 1.1.0
Copyright (C) 2001-2009 Keisuke Nishida / Roger While
Built    May 29 2013 21:53:19
Packaged Feb 06 2009 10:30:55 CET

Sadly, I don't get to do much COBOL. The best I can do is the occasional RosettaCode task.

I was looking at <http://rosettacode.org/wiki/Loops/Break#COBOL>. I copied and pasted into a text editor, made it free-form, and started to fiddle.

I've got as far as this:
IDENTIFICATION DIVISION.
PROGRAM-ID. Random-Nums.

DATA DIVISION.
WORKING-STORAGE SECTION.
01    Num  PIC Z9.
01    SEED PIC 9V999999999.
PROCEDURE DIVISION.
Main.
    MOVE FUNCTION RANDOM(FUNCTION SECONDS-PAST-MIDNIGHT) TO SEED.
    PERFORM FOREVER
        PERFORM Generate-And-Display-Num

        IF Num = 10
            EXIT PERFORM
        ELSE
            PERFORM Generate-And-Display-Num
        END-IF
    END-PERFORM

    GOBACK
    .

Generate-And-Display-Num.
   COMPUTE Num =  FUNCTION REM(FUNCTION RANDOM * 100, 20)
   DISPLAY Num
   .
   END-PROGRAM.
The END-PROGRAM seemed to be mandatory. I wouldn't compile otherwise.

The thing that has me confused (and thus all the fiddling with RANDOM) is that the program runs properly occasionally, and other time just gets locked on a particular value and doesn't change.

A working runs looks like this:
$ breakloop.exe
23
67
23
21
67
18
14
17
27
11
16
25
29
26
12
23
90
27
14
20
30
29
10

but another run starts off nicely, but then gets stuck
$ breakloop.exe
25
18
29
80
14
16
26
24
26
36
18
29
54
47
29
29
29
... ad infinitum
Why is it so?

Kind regards,
Bruce.



------------------------------------------------------------------------------
Introducing AppDynamics Lite, a free troubleshooting tool for Java/.NET
Get 100% visibility into your production application - at no cost.
Code-level diagnostics for performance bottlenecks with <2% overhead
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap1


_______________________________________________
open-cobol-list mailing list
address@hidden
https://lists.sourceforge.net/lists/listinfo/open-cobol-list


reply via email to

[Prev in Thread] Current Thread [Next in Thread]