feat: add benchmark-programs — 58 telecom COBOL test programs
作为子目录纳入系统,与核心测试管道协同 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. CallEdgeCase.
|
||||
*> ============================================================
|
||||
*> CALL境界テスト (CALL Edge Cases)
|
||||
*> CALL CANCEL, 静的CALL, 動的CALL,
|
||||
*> CALL ON EXCEPTION, ネストプログラム
|
||||
*> ============================================================
|
||||
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 WS-PGM-NAME PIC X(8) VALUE "SUB-EDGE".
|
||||
01 WS-VAL-A PIC 9(5) VALUE 100.
|
||||
01 WS-VAL-B PIC 9(5) VALUE 200.
|
||||
01 WS-RESULT PIC 9(10) VALUE 0.
|
||||
01 WS-EXPECTED PIC 9(10) VALUE 300.
|
||||
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 "CALL-EDGE: CALL edge case tests"
|
||||
|
||||
*> T1: CALL ON EXCEPTION (存在しないプログラム)
|
||||
ADD 1 TO WS-TC.
|
||||
DISPLAY "T1: CALL nonexistent ON EXCEPTION"
|
||||
CALL 'NOPGM000' USING WS-VAL-A
|
||||
ON EXCEPTION
|
||||
DISPLAY "T1: Exception caught PASS"
|
||||
ADD 1 TO WS-PASS
|
||||
NOT ON EXCEPTION
|
||||
DISPLAY "T1: No exception FAIL"
|
||||
ADD 1 TO WS-FAIL
|
||||
END-CALL.
|
||||
|
||||
*> T2: CALL CANCEL (呼出→CANCEL→再呼出)
|
||||
ADD 1 TO WS-TC.
|
||||
DISPLAY "T2: CALL CANCEL cycle"
|
||||
MOVE 100 TO WS-VAL-A.
|
||||
MOVE 200 TO WS-VAL-B.
|
||||
CALL 'SUB-EDGE' USING WS-VAL-A WS-VAL-B WS-RESULT.
|
||||
DISPLAY "T2-1: RESULT=" WS-RESULT " (expect 300)".
|
||||
CANCEL 'SUB-EDGE'.
|
||||
MOVE 50 TO WS-VAL-A.
|
||||
MOVE 70 TO WS-VAL-B.
|
||||
CALL 'SUB-EDGE' USING WS-VAL-A WS-VAL-B WS-RESULT.
|
||||
IF WS-RESULT = 120
|
||||
DISPLAY "T2: CANCEL+recall PASS"
|
||||
ADD 1 TO WS-PASS
|
||||
ELSE
|
||||
DISPLAY "T2: CANCEL+recall FAIL (result=" WS-RESULT ")"
|
||||
ADD 1 TO WS-FAIL
|
||||
END-IF.
|
||||
|
||||
*> T3: CALL with RETURN-CODE
|
||||
ADD 1 TO WS-TC.
|
||||
MOVE 15 TO WS-VAL-A.
|
||||
MOVE 25 TO WS-VAL-B.
|
||||
CALL 'SUB-EDGE' USING WS-VAL-A WS-VAL-B WS-RESULT.
|
||||
IF RETURN-CODE = 0
|
||||
DISPLAY "T3: RETURN-CODE=0 PASS"
|
||||
ADD 1 TO WS-PASS
|
||||
ELSE
|
||||
DISPLAY "T3: RETURN-CODE=" RETURN-CODE " FAIL"
|
||||
ADD 1 TO WS-FAIL
|
||||
END-IF.
|
||||
|
||||
DISPLAY " "
|
||||
DISPLAY "CALL-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 CallEdgeCase.
|
||||
|
||||
*> ============================================================
|
||||
*> ネストサブプログラム (Nested Subprogram)
|
||||
*> ============================================================
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. SUB-EDGE.
|
||||
DATA DIVISION.
|
||||
LINKAGE SECTION.
|
||||
01 LK-A PIC 9(5).
|
||||
01 LK-B PIC 9(5).
|
||||
01 LK-RES PIC 9(10).
|
||||
PROCEDURE DIVISION USING LK-A LK-B LK-RES.
|
||||
COMPUTE LK-RES = LK-A + LK-B.
|
||||
GOBACK.
|
||||
END PROGRAM SUB-EDGE.
|
||||
Reference in New Issue
Block a user