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.
¤ Dauer der Verarbeitung: 0.16 Sekunden
(vorverarbeitet)
¤
|
Haftungshinweis
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.
|