IDENTIFICATION DIVISION .
PROGRAM-ID . GETTINGSTARTED.
AUTHOR .
* Aus COBUG von CB am 3.7.2007
ENVIRONMENT DIVISION .
input-output section .
file-control .
select f assign to file-f.
DATA DIVISION .
file section .
fd f
record contains 120 characters
data record is random-rec
label record is omitted .
01 random-rec.
05 i pic x(8 ).
WORKING-STORAGE SECTION .
01 account-rec.
05 i pic x(8 ).
01 RANDOM-NUM-GENERATER-FIELDS.
03 MULTIPLIER PIC 9 (05 ) VALUE 16807 .
03 MODULUS PIC 9 (10 ) VALUE 2147483646 .
03 QUOTIENT PIC 9 (06 ) VALUE 127736 .
03 REMDER PIC 9 (04 ) VALUE 2836 .
03 LO-NUM PIC 9 (06 ) VALUE ZEROES.
03 HI-NUM PIC 9 (06 ) VALUE ZEROES.
03 SEED PIC S9(10 ) VALUE ZEROES.
03 UNIFORM PIC 9 V99 VALUE ZEROES.
03 RANDOM-NUMBER PIC 9 (03 ) VALUE ZEROES.
LINKAGE SECTION .
77 random-cnt pic 9 (4 ).
77 ws-mm pic 9 (4 ).
77 ws-dd pic 9 (4 ).
77 ws-yy pic 9 (4 ).
77 ws-hr pic 9 (4 ).
77 ws-min pic 9 (4 ).
77 ws-sec pic 9 (4 ).
77 ws-hun pic 9 (4 ).
PROCEDURE DIVISION using random-cnt ws-mm ws-dd
ws-yy ws-hr ws-min ws-sec ws-hun.
COMPUTE SEED = ((WS-MM * WS-DD * WS-YY) +
(WS-HR * WS-MIN * WS-SEC * WS-HUN) + 1 ).
DIVIDE SEED BY QUOTIENT GIVING HI-NUM REMAINDER LO-NUM
COMPUTE SEED = (MULTIPLIER * LO-NUM) - (MULTIPLIER * HI-NUM)
IF SEED < 1
ADD MODULUS TO SEED
END-IF
COMPUTE UNIFORM = (SEED / MODULUS)
COMPUTE RANDOM-NUMBER = (UNIFORM * 100 ).
*****ONLY TAKE 2% OF THE INPUT RECORDS****
IF RANDOM-NUMBER < 2
WRITE RANDOM-REC FROM ACCOUNT-REC
ADD 1 TO RANDOM-CNT
END-IF .
Messung V0.5 in Prozent C=93 H=100 G=96
¤ Dauer der Verarbeitung: 0.2 Sekunden
¤
*© Formatika GbR, Deutschland