IDENTIFICATION DIVISION. PROGRAM-ID. Level88Edge. *> ============================================================ *> 88-level 条件名境界テスト *> 88-level THRU(範囲), 複数VALUE, 複合条件 *> Coverage: B-N004 拡張, 境界条件 *> ============================================================ DATA DIVISION. WORKING-STORAGE SECTION. *> T1: 88-level with THRU (範囲指定) 01 WS-SCORE PIC 9(3). 88 WS-GRADE-A VALUE 90 THRU 100. 88 WS-GRADE-B VALUE 75 THRU 89. 88 WS-GRADE-C VALUE 60 THRU 74. 88 WS-GRADE-D VALUE 0 THRU 59. *> T2: 88-level with 複数値 01 WS-DAY PIC X(3). 88 WS-WEEKDAY VALUE 'MON', 'TUE', 'WED', 'THU', 'FRI'. 88 WS-WEEKEND VALUE 'SAT', 'SUN'. *> T3: 88-level with 複数英字名 01 WS-PLAN PIC X(3). 88 WS-PLAN-PREPAID VALUE 'P01', 'P02'. 88 WS-PLAN-POSTPAID VALUE 'P03', 'P04'. 88 WS-PLAN-VIP VALUE 'V01', 'V02'. *> T4: 88-level with 極端な範囲(境界値) 01 WS-PCT PIC 9(3). 88 WS-PCT-LOW VALUE 0 THRU 10. 88 WS-PCT-MED VALUE 11 THRU 50. 88 WS-PCT-HIGH VALUE 51 THRU 100. 88 WS-PCT-OVR VALUE 101 THRU 999. *> T5: 88-level with SPACE/ZERO/LOW/HIGH 01 WS-FLAG PIC X(1). 88 WS-FLAG-YES VALUE 'Y'. 88 WS-FLAG-NO VALUE 'N'. 88 WS-FLAG-EMPTY VALUE SPACE. 01 WS-PASS PIC 9(2) VALUE 0. 01 WS-FAIL PIC 9(2) VALUE 0. 01 WS-TC PIC 9(2) VALUE 0. PROCEDURE DIVISION. MAIN. DISPLAY "88-LEVEL-EDGE: 88-level THRU/boundary tests" *> T1: THRU境界値テスト ADD 1 TO WS-TC. MOVE 90 TO WS-SCORE. IF WS-GRADE-A DISPLAY "T1-A: 90→GRADE-A PASS" ADD 1 TO WS-PASS ELSE ADD 1 TO WS-FAIL END-IF. ADD 1 TO WS-TC. MOVE 100 TO WS-SCORE. IF WS-GRADE-A DISPLAY "T1-B: 100→GRADE-A (upper bound) PASS" ADD 1 TO WS-PASS ELSE ADD 1 TO WS-FAIL END-IF. ADD 1 TO WS-TC. MOVE 89 TO WS-SCORE. IF WS-GRADE-B DISPLAY "T1-C: 89→GRADE-B (boundary) PASS" ADD 1 TO WS-PASS ELSE ADD 1 TO WS-FAIL END-IF. ADD 1 TO WS-TC. MOVE 75 TO WS-SCORE. IF WS-GRADE-B DISPLAY "T1-D: 75→GRADE-B (lower bound) PASS" ADD 1 TO WS-PASS ELSE ADD 1 TO WS-FAIL END-IF. *> T2: 複数値OR条件 ADD 1 TO WS-TC. MOVE 'MON' TO WS-DAY. IF WS-WEEKDAY DISPLAY "T2-A: MON→WEEKDAY PASS" ADD 1 TO WS-PASS ELSE ADD 1 TO WS-FAIL END-IF. ADD 1 TO WS-TC. MOVE 'SAT' TO WS-DAY. IF WS-WEEKEND DISPLAY "T2-B: SAT→WEEKEND PASS" ADD 1 TO WS-PASS ELSE ADD 1 TO WS-FAIL END-IF. *> T3: 複数英文字コード ADD 1 TO WS-TC. MOVE 'V01' TO WS-PLAN. IF WS-PLAN-VIP DISPLAY "T3-A: V01→VIP PASS" ADD 1 TO WS-PASS ELSE ADD 1 TO WS-FAIL END-IF. ADD 1 TO WS-TC. MOVE 'P01' TO WS-PLAN. IF WS-PLAN-PREPAID DISPLAY "T3-B: P01→PREPAID PASS" ADD 1 TO WS-PASS ELSE ADD 1 TO WS-FAIL END-IF. *> T4: 極端範囲値 ADD 1 TO WS-TC. MOVE 0 TO WS-PCT. IF WS-PCT-LOW DISPLAY "T4-A: 0→LOW (minimum) PASS" ADD 1 TO WS-PASS ELSE ADD 1 TO WS-FAIL END-IF. ADD 1 TO WS-TC. MOVE 999 TO WS-PCT. IF WS-PCT-OVR DISPLAY "T4-B: 999→OVER (maximum) PASS" ADD 1 TO WS-PASS ELSE ADD 1 TO WS-FAIL END-IF. *> T5: SPACE判定 ADD 1 TO WS-TC. MOVE SPACE TO WS-FLAG. IF WS-FLAG-EMPTY DISPLAY "T5: SPACE→EMPTY PASS" ADD 1 TO WS-PASS ELSE ADD 1 TO WS-FAIL END-IF. *> T6: EVALUATE + 88-level 複合 ADD 1 TO WS-TC. MOVE 85 TO WS-SCORE. MOVE 'WED' TO WS-DAY. EVALUATE TRUE WHEN WS-GRADE-A AND WS-WEEKDAY DISPLAY "T6: GRADE-A + WEEKDAY PASS" ADD 1 TO WS-PASS WHEN OTHER ADD 1 TO WS-FAIL END-EVALUATE. DISPLAY " " DISPLAY "88-LEVEL-EDGE: PASS=" WS-PASS " FAIL=" WS-FAIL IF WS-FAIL = 0 DISPLAY "ALL PASSED" STOP RUN RETURNING 0 ELSE STOP RUN RETURNING 1 END-IF . END PROGRAM Level88Edge.