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 9V99 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 C=94 H=95 G=94
¤ Dauer der Verarbeitung: 0.3 Sekunden
¤
*© Formatika GbR, Deutschland