tinycobol/test.code/t22/test22.cob

280 lines
5.6 KiB
COBOL

IDENTIFICATION DIVISION.
PROGRAM-ID. TEST22.
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 IDX 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-AGE-GROUP PIC 9(2).
88 WS-MINOR VALUE 1 THRU 18.
88 WS-YADULT VALUE 19, 20, 21, 22.
88 WS-ADULT VALUE 21 THRU 99.
01 WS-DEPT-GROUP1 PIC X.
88 WS-ACCOUNTING1 VALUE 'A', 'B', 'C'.
88 WS-OTHER1 VALUE 'D' THRU 'Z'.
01 WS-DEPT-GROUP PIC 9.
88 WS-ACCOUNTING VALUE 2, 3.
88 WS-OTHER VALUE 4 THRU 9.
01 WS-STATUS PIC X(1).
88 WS-DIVORCED VALUE 'D'.
88 WS-MARRIED VALUE 'M'.
88 WS-SINGLE VALUE 'S'.
01 WS-FULL-NAME PIC X(20).
01 WS-NUMBER pic X(10).
PROCEDURE DIVISION.
A-000.
DISPLAY "BEGIN: IF/ELSE TESTS".
MOVE 1 TO IDX.
MOVE 99 TO WS-IDX.
MOVE 1 TO WS-IDX1.
MOVE 2 TO WS-IDX2.
MOVE 'M' TO WS-STATUS.
MOVE 21 TO WS-AGE-GROUP.
MOVE 'PETER PAN' TO WS-FULL-NAME.
MOVE "1234" TO WS-NUMBER.
MOVE 2 TO WS-DEPT-GROUP.
MOVE 'A' TO WS-DEPT-GROUP1.
* MOVE 'D' TO WS-DEPT-GROUP1.
DISPLAY "A-100: WS-IDX1 ==" WS-IDX1 " WS-IDX2 ==" WS-IDX2 " WS-IDX ==" WS-IDX.
DISPLAY "A-100: WS-STATUS ==" WS-STATUS ": WS-AGE-GROUP ==" WS-AGE-GROUP ":".
DISPLAY "A-100: WS-FULL-NAME ==" WS-FULL-NAME ":".
PERFORM A-100.
PERFORM A-200.
PERFORM A-300.
PERFORM A-400.
PERFORM A-500.
PERFORM A-600.
PERFORM A-650.
PERFORM A-700.
PERFORM A-750.
PERFORM A-800.
PERFORM A-900.
PERFORM A-1000.
PERFORM A-1100.
PERFORM A-1200.
PERFORM A-1300.
DISPLAY "END : IF/ELSE TESTS".
MOVE RETURN-CODE TO WS-RCODE.
DISPLAY "WS-RCODE=" WS-RCODE.
STOP RUN.
A-100.
DISPLAY "ENTER A-100:".
IF ( WS-IDX1 EQUAL 1 ) AND ( WS-IDX2 EQUAL 2 )
THEN
DISPLAY "TEST1 (True): WS-IDX1 == 1 AND WS-IDX2 == 2"
ELSE
DISPLAY "TEST1 (False): WS-IDX1 != 1 OR WS-IDX2 != 2"
END-IF.
DISPLAY "EXIT A-100".
A-200.
DISPLAY "ENTER A-200:".
IF WS-IDX1 EQUAL 3
DISPLAY "TEST2 (True): WS-IDX1 == 3"
ELSE
DISPLAY "TEST2 (False): WS-IDX1 != 3"
END-IF.
DISPLAY "EXIT A-200".
A-300.
DISPLAY "ENTER A-300:".
IF WS-IDX EQUAL 99
DISPLAY "TEST3 (True): WS-IDX == 99"
ELSE
DISPLAY "TEST3 (False): WS-IDX != 99".
DISPLAY "EXIT A-300".
A-400.
DISPLAY "ENTER A-400:".
IF WS-IDX NOT EQUAL 99
DISPLAY "TEST4 (False): WS-IDX != 99"
ELSE
DISPLAY "TEST4 (True): WS-IDX == 99"
END-IF.
DISPLAY "EXIT A-400".
A-500.
DISPLAY "ENTER A-500:".
IF WS-MARRIED
DISPLAY "TEST5 (True): WS-STATUS == M"
ELSE
DISPLAY "TEST5 (False): WS-STATUS != M".
DISPLAY "EXIT A-500".
A-600.
DISPLAY "ENTER A-600:".
IF WS-ADULT
DISPLAY "TEST6 (True): WS-AGE-GROUP >= " WS-AGE-GROUP
ELSE
DISPLAY "TEST6 (False): WS-AGE-GROUP < " WS-AGE-GROUP.
DISPLAY "EXIT A-600".
A-650.
DISPLAY "ENTER A-650:".
IF WS-YADULT
DISPLAY "TEST6A (True): WS-AGE-GROUP >= " WS-AGE-GROUP
ELSE
DISPLAY "TEST6A (False): WS-AGE-GROUP < " WS-AGE-GROUP.
DISPLAY "EXIT A-650".
A-700.
DISPLAY "ENTER A-700:".
IF WS-FULL-NAME NUMERIC
DISPLAY "TEST7A (True): WS-FULL-NAME ==" WS-FULL-NAME ": (numeric)".
IF WS-FULL-NAME ALPHABETIC
DISPLAY "TEST7 (True): WS-FULL-NAME ==" WS-FULL-NAME ": (alphabetic)"
ELSE
DISPLAY "TEST7 (False): WS-FULL-NAME !=" WS-FULL-NAME ": (not alphabetic)".
DISPLAY "EXIT A-700".
A-750.
DISPLAY "ENTER A-750:".
IF WS-NUMBER NUMERIC
DISPLAY "TEST7A (True): WS-NUMBER ==" WS-NUMBER ": (numeric)"
ELSE
DISPLAY "TEST7A (False): WS-NUMBER !=" WS-NUMBER ": (not numeric)".
DISPLAY "EXIT A-750".
A-800.
DISPLAY "ENTER A-800:".
IF WS-IDX POSITIVE
DISPLAY "TEST8 (True): WS-IDX (positive)"
ELSE
DISPLAY "TEST8 (False): WS-IDX (not positive)".
DISPLAY "EXIT A-800".
A-900.
DISPLAY "ENTER A-900:".
MOVE WS-IDX1 TO WS-IDX2.
ADD 50 TO WS-IDX2.
IF WS-IDX = WS-IDX1 + 50
DISPLAY "TEST9 (True): WS-IDX ==" WS-IDX " WS-IDX1 + 50==" WS-IDX2 ":"
ELSE
DISPLAY "TEST9 (False): WS-IDX ==" WS-IDX " WS-IDX1 + 50==" WS-IDX2 ":".
DISPLAY "EXIT A-900".
A-1000.
DISPLAY "ENTER A-1000:".
* IF WS-OTHER
IF WS-ACCOUNTING
DISPLAY "TEST10 (True): WS-DEPT-GROUP ==" WS-DEPT-GROUP "== WS-ACCOUNTING"
ELSE
DISPLAY "TEST10 (False): WS-DEPT-GROUP ==" WS-DEPT-GROUP "!= WS-ACCOUNTING".
DISPLAY "EXIT A-1000".
A-1100.
DISPLAY "ENTER A-1100:".
* IF WS-OTHER1
IF WS-ACCOUNTING1
DISPLAY "TEST11 (True): WS-DEPT-GROUP1 ==" WS-DEPT-GROUP1 "== WS-ACCOUNTING1"
ELSE
DISPLAY "TEST11 (False): WS-DEPT-GROUP1 ==" WS-DEPT-GROUP1 "!= WS-ACCOUNTING1".
DISPLAY "EXIT A-1100".
A-1200.
DISPLAY "ENTER A-1200:".
IF WS-IDX > WS-IDX1 OR > IDX
THEN
DISPLAY "TEST12 (True): WS-IDX(" WS-IDX ") > WS-IDX1(" WS-IDX1 ") OR IDX(" IDX ")"
ELSE
DISPLAY "TEST12 (False) : WS-IDX(" WS-IDX ") > WS-IDX1(" WS-IDX1 ") OR IDX(" IDX ")"
END-IF
DISPLAY "EXIT A-1200".
A-1300.
DISPLAY "ENTER A-1300:".
IF (( WS-IDX = 100 OR 99 )
AND
( WS-IDX1 = 1 OR 12 OR 33 ))
OR
( WS-IDX2 = 51 OR 152 OR 253 )
THEN
DISPLAY "TEST13 (True) : ( ( WS-IDX [100 OR 99]=" WS-IDX " ) AND ( WS-IDX1 [1 OR 12 OR 33]=" WS-IDX1 " ) ) OR ( WS-IDX2 [51 OR 152 OR 253]=" WS-IDX2 " )"
ELSE
DISPLAY "TEST13 (False) : ( ( WS-IDX [100 OR 99]=" WS-IDX " ) AND ( WS-IDX1 [1 OR 12 OR 33]=" WS-IDX1 " ) ) OR ( WS-IDX2 [51 OR 152 OR 253]=" WS-IDX2 " )"
END-IF.
DISPLAY "EXIT A-1300".