94400d50d4
作为子目录纳入系统,与核心测试管道协同 Co-Authored-By: Claude <noreply@anthropic.com>
143 lines
4.2 KiB
COBOL
143 lines
4.2 KiB
COBOL
IDENTIFICATION DIVISION.
|
|
PROGRAM-ID. ProgStructEdge.
|
|
*> ============================================================
|
|
*> 程序構造境界テスト (Program Structure Edge Cases)
|
|
*> レガシーCOBOL構造: PERFORM THRU, GO TO DEPENDING ON,
|
|
*> 段落スルー, ALTER(非推奨), 複数SECTION
|
|
*> ============================================================
|
|
|
|
ENVIRONMENT DIVISION.
|
|
DATA DIVISION.
|
|
WORKING-STORAGE SECTION.
|
|
01 WS-SWITCH PIC X(1) VALUE 'N'.
|
|
88 WS-ON VALUE 'Y'.
|
|
01 WS-COUNT PIC 9(5) VALUE 0.
|
|
01 WS-GO-TO-IDX PIC 9(1) VALUE 0.
|
|
01 WS-PASS PIC 9(2) VALUE 0.
|
|
01 WS-FAIL PIC 9(2) VALUE 0.
|
|
|
|
PROCEDURE DIVISION.
|
|
MAIN.
|
|
DISPLAY "PROG-STRUCT-EDGE: Program structure edge tests"
|
|
|
|
*> Test 1: PERFORM THRU (段落範囲実行)
|
|
ADD 1 TO WS-COUNT.
|
|
DISPLAY "T1-THRU: PERFORM THRU para range"
|
|
PERFORM PARA-A THRU PARA-C
|
|
DISPLAY "T1-THRU: PASS"
|
|
ADD 1 TO WS-PASS.
|
|
|
|
*> Test 2: 段落スルー (Paragraph fall-through)
|
|
ADD 1 TO WS-COUNT.
|
|
DISPLAY "T2-FALL: Paragraph fall-through (A->B)"
|
|
PERFORM PARA-D THRU PARA-E
|
|
DISPLAY "T2-FALL: PASS"
|
|
ADD 1 TO WS-PASS.
|
|
|
|
*> Test 3: GO TO DEPENDING ON
|
|
ADD 1 TO WS-COUNT.
|
|
DISPLAY "T3-GOTO: GO TO DEPENDING ON"
|
|
MOVE 0 TO WS-GO-TO-IDX.
|
|
GO TO PARA-X PARA-Y PARA-Z
|
|
DEPENDING ON WS-GO-TO-IDX.
|
|
*> WS-GO-TO-IDX=0 → 次段落へ (何も実行しない)
|
|
DISPLAY "T3-GOTO: IDX=0 skipped (PASS)"
|
|
ADD 1 TO WS-PASS.
|
|
|
|
MOVE 2 TO WS-GO-TO-IDX.
|
|
GO TO PARA-X PARA-Y PARA-Z
|
|
DEPENDING ON WS-GO-TO-IDX
|
|
. *> ここには来ない
|
|
|
|
*> Test 4: GO TO (単純)
|
|
ADD 1 TO WS-COUNT.
|
|
DISPLAY "T4-GOTO-SIMPLE: Simple GO TO"
|
|
GO TO PARA-END-T4.
|
|
DISPLAY "T4-GOTO: FAIL - should not reach"
|
|
ADD 1 TO WS-FAIL.
|
|
GO TO PARA-END-T4-EXIT.
|
|
|
|
PARA-END-T4.
|
|
DISPLAY "T4-GOTO-SIMPLE: PASS"
|
|
ADD 1 TO WS-PASS.
|
|
|
|
PARA-END-T4-EXIT.
|
|
CONTINUE.
|
|
|
|
*> Test 5: EXIT PARAGRAPH vs EXIT SECTION
|
|
ADD 1 TO WS-COUNT.
|
|
DISPLAY "T5-EXIT: EXIT PARAGRAPH"
|
|
PERFORM PARA-EXIT-DEMO
|
|
DISPLAY "T5-EXIT: PASS"
|
|
ADD 1 TO WS-PASS.
|
|
|
|
*> Test 6: ALTER (非推奨だがレガシーCOBOLに存在)
|
|
ADD 1 TO WS-COUNT.
|
|
DISPLAY "T6-ALTER: ALTER (legacy)"
|
|
ALTER PARA-ALTER-TARGET TO PROCEED TO PARA-ALTER-OK
|
|
GO TO PARA-ALTER-TARGET.
|
|
|
|
PARA-ALTER-TARGET.
|
|
DISPLAY "T6-ALTER: FAIL - old path"
|
|
ADD 1 TO WS-FAIL.
|
|
GO TO PARA-ALTER-DONE.
|
|
|
|
PARA-ALTER-OK.
|
|
DISPLAY "T6-ALTER: PASS"
|
|
ADD 1 TO WS-PASS.
|
|
|
|
PARA-ALTER-DONE.
|
|
CONTINUE.
|
|
|
|
*> Summary
|
|
DISPLAY " "
|
|
DISPLAY "PROG-STRUCT-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
|
|
.
|
|
|
|
*> === PERFORM THRU 段落群 ===
|
|
PARA-A.
|
|
DISPLAY " PARA-A: start"
|
|
.
|
|
PARA-B.
|
|
DISPLAY " PARA-B: middle (THRU includes)"
|
|
.
|
|
PARA-C.
|
|
DISPLAY " PARA-C: end (THRU target)"
|
|
.
|
|
|
|
*> === 段落スルー デモ ===
|
|
PARA-D.
|
|
DISPLAY " PARA-D: fall through to PARA-E"
|
|
.
|
|
PARA-E.
|
|
DISPLAY " PARA-E: reached via fall-through"
|
|
.
|
|
|
|
*> === GO TO DEPENDING ON 飛び先 ===
|
|
PARA-X.
|
|
DISPLAY " PARA-X: IDX=1"
|
|
.
|
|
PARA-Y.
|
|
DISPLAY " PARA-Y: IDX=2"
|
|
.
|
|
PARA-Z.
|
|
DISPLAY " PARA-Z: IDX=3"
|
|
.
|
|
|
|
*> === EXIT PARAGRAPH デモ ===
|
|
PARA-EXIT-DEMO.
|
|
DISPLAY " Before EXIT PARAGRAPH"
|
|
IF WS-PASS >= 0
|
|
EXIT PARAGRAPH
|
|
END-IF
|
|
DISPLAY " After EXIT PARAGRAPH (NOT reached)"
|
|
.
|
|
|
|
END PROGRAM ProgStructEdge.
|