tinycobol/test.code/t20/test20a.cob

156 lines
3.4 KiB
COBOL

IDENTIFICATION DIVISION.
PROGRAM-ID. TEST20a.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
* SPECIAL-NAMES.
* DECIMAL-POINT IS PERIOD.
* INPUT-OUTPUT SECTION.
* FILE-CONTROL.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
01 WS-IDX PIC 9(3).
01 WS-IDX1 PIC 9(3).
01 WS-IDX2 PIC 9(3).
01 IDX2 PIC 9(3) COMP.
* 01 IDX1 PIC 9(3).
01 WS-RCODE PIC Z(4)9 VALUE ZERO.
01 WS-TABLE1-ENTRIES.
* copy TCtable1.
copy "TCtable1.cpy".
01 WS-TABLE1 REDEFINES WS-TABLE1-ENTRIES.
05 WS-TABLE1-ENTRY OCCURS 10 TIMES INDEXED BY IDX1.
10 WS-TABLE1-IDX PIC X(3).
10 WS-TABLE1-DATA PIC X(17).
01 WS-TABLE2-ENTRIES.
05 FILLER PIC X(20) VALUE '001MIS '.
05 FILLER PIC X(20) VALUE '002PAYROLL '.
05 FILLER PIC X(20) VALUE '003SALES '.
05 FILLER PIC X(20) VALUE '004SHIPPING '.
05 FILLER PIC X(20) VALUE '005ACCOUNTING '.
05 FILLER PIC X(20) VALUE '006DEPT1 '.
05 FILLER PIC X(20) VALUE '007DEPT2 '.
05 FILLER PIC X(20) VALUE '008DEPT3 '.
05 FILLER PIC X(20) VALUE '009DEPT4 '.
05 FILLER PIC X(20) VALUE '010OTHERS '.
01 WS-TABLE2 REDEFINES WS-TABLE2-ENTRIES.
05 WS-TABLE2-ENTRY OCCURS 10 TIMES.
10 WS-TABLE2-IDX PIC 9(3).
10 WS-TABLE2-DATA PIC X(17).
PROCEDURE DIVISION.
A-000.
MOVE 3 TO WS-IDX1.
PERFORM A-100.
MOVE 5 TO WS-IDX1.
PERFORM A-100.
MOVE 33 TO WS-IDX1.
PERFORM A-100.
MOVE 6 TO WS-IDX2.
PERFORM A-200.
MOVE 7 TO WS-IDX2.
PERFORM A-200.
MOVE 44 TO WS-IDX2.
PERFORM A-200.
MOVE RETURN-CODE TO WS-RCODE.
DISPLAY "WS-RCODE=" WS-RCODE.
STOP RUN.
A-100.
DISPLAY "ENTER A-100".
SET IDX1 TO 1.
* SET IDX2 TO 1.
* MOVE 1 TO IDX1.
SEARCH WS-TABLE1-ENTRY
* VARYING IDX2
AT END PERFORM A-400
WHEN WS-IDX1 = WS-TABLE1-IDX (IDX1)
* WHEN WS-IDX1 = WS-TABLE1-IDX (IDX2)
* NEXT SENTENCE.
MOVE 0 TO WS-IDX
PERFORM A-300.
DISPLAY "EXIT A-100".
A-200.
DISPLAY "ENTER A-200".
SET IDX2 TO 1.
* MOVE 1 TO IDX2.
SEARCH WS-TABLE2-ENTRY
VARYING IDX2
AT END PERFORM A-600
WHEN WS-IDX2 = WS-TABLE2-IDX (IDX2)
* NEXT SENTENCE.
MOVE 0 TO WS-IDX
PERFORM A-500.
DISPLAY "EXIT A-200".
A-300.
DISPLAY "ENTER A-300".
MOVE IDX1 TO WS-RCODE.
DISPLAY "Data found ... IDX1=" WS-RCODE.
DISPLAY "WS-TABLE1-IDX =" WS-TABLE1-IDX (IDX1) ":".
DISPLAY "WS-TABLE1-DATA =" WS-TABLE1-DATA (IDX1) ":".
* MOVE IDX2 TO WS-RCODE.
* DISPLAY "Data found ... IDX2=" WS-RCODE.
* DISPLAY "WS-TABLE1-IDX =" WS-TABLE1-IDX (IDX2) ":".
* DISPLAY "WS-TABLE1-DATA =" WS-TABLE1-DATA (IDX2) ":".
DISPLAY "EXIT A-300".
A-400.
DISPLAY "ENTER A-400".
DISPLAY "Data WS-IDX1 =" WS-IDX1 " not found in table WS-TABLE1".
MOVE IDX1 TO WS-RCODE.
DISPLAY "Index max IDX1 =" WS-RCODE.
* DISPLAY "Data WS-IDX1 =" WS-IDX1 " not found in table WS-TABLE1".
* MOVE IDX2 TO WS-RCODE.
* DISPLAY "Index max IDX2 =" WS-RCODE.
DISPLAY "EXIT A-400".
A-500.
DISPLAY "ENTER A-500".
MOVE IDX2 TO WS-RCODE.
DISPLAY "Data found ... IDX2=" WS-RCODE.
DISPLAY "WS-TABLE2-IDX =" WS-TABLE2-IDX (IDX2) ":".
DISPLAY "WS-TABLE2-DATA =" WS-TABLE2-DATA (IDX2) ":".
DISPLAY "EXIT A-500".
A-600.
DISPLAY "ENTER A-600".
DISPLAY "Data WS-IDX2 =" WS-IDX2 " not found in table WS-TABLE2".
MOVE IDX2 TO WS-RCODE.
DISPLAY "Index max IDX2 =" WS-RCODE.
DISPLAY "EXIT A-600".