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 16:37:08 +0000

Odd, because when I go to compile this code, I get this:

address@hidden:~$ cobc random.cbl
random.cbl: In paragraph 'Main':
random.cbl:11: Error: syntax error, unexpected PERFORM, expecting ADDRESS or "Identifier"

System is Debian 7 "Wheezy" AMD64 running in an ESXi 5 virtual machine.


From: Bruce M. Axtens
Sent: Thursday, May 30, 2013 9:30 AM
To: address@hidden
Subject: [open-cobol-list] RANDOM-ly non-random

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.


reply via email to

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