gnucobol-users
[Top][All Lists]
Advanced

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

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


From: Bruce M. Axtens
Subject: [open-cobol-list] RANDOM-ly non-random
Date: Thu, 30 May 2013 22:30:50 +0800
User-agent: Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20100101 Thunderbird/22.0

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]