46 lines
1.6 KiB
COBOL
46 lines
1.6 KiB
COBOL
IDENTIFICATION DIVISION.
|
|
PROGRAM-ID. Nested-Loop.
|
|
|
|
DATA DIVISION.
|
|
LOCAL-STORAGE SECTION.
|
|
78 Table-Size VALUE 10.
|
|
01 Table-Area.
|
|
03 Table-Row OCCURS Table-Size TIMES
|
|
INDEXED BY Row-Index.
|
|
05 Table-Element PIC 99 OCCURS Table-Size TIMES
|
|
INDEXED BY Col-Index.
|
|
|
|
01 Current-Time PIC 9(8).
|
|
PROCEDURE DIVISION.
|
|
* *> Seed RANDOM.
|
|
ACCEPT Current-Time FROM TIME
|
|
MOVE FUNCTION RANDOM(Current-Time) TO Current-Time
|
|
|
|
* *> Put random numbers in the table.
|
|
* *> The AFTER clause is equivalent to a nested PERFORM VARYING
|
|
* *> statement.
|
|
PERFORM VARYING Row-Index FROM 1 BY 1
|
|
UNTIL Table-Size < Row-Index
|
|
AFTER Col-Index FROM 1 BY 1
|
|
UNTIL Table-Size < Col-Index
|
|
COMPUTE Table-Element (Row-Index, Col-Index) =
|
|
FUNCTION MOD((FUNCTION RANDOM * 1000), 20) + 1
|
|
END-PERFORM
|
|
|
|
* *> Search through table for 20.
|
|
* *> Using proper nested loops.
|
|
PERFORM VARYING Row-Index FROM 1 BY 1
|
|
UNTIL Table-Size < Row-Index
|
|
PERFORM VARYING Col-Index FROM 1 BY 1
|
|
UNTIL Table-Size < Col-Index
|
|
IF Table-Element (Row-Index, Col-Index) = 20
|
|
EXIT PERFORM
|
|
ELSE
|
|
DISPLAY Table-Element (Row-Index, Col-Index)
|
|
END-IF
|
|
END-PERFORM
|
|
END-PERFORM
|
|
|
|
GOBACK
|
|
.
|