feat: add benchmark-programs — 58 telecom COBOL test programs
作为子目录纳入系统,与核心测试管道协同 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
*> ============================================================
|
||||
*> caller-nested : 计费子程序嵌套调用 (Nested Subprogram Call)
|
||||
*> Input : WS-VAL-A, WS-VAL-B (传递参数)
|
||||
*> Output: WS-RESULT (嵌套计算结果)
|
||||
*> Coverage: C-N009
|
||||
*> ============================================================
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. CallerNested.
|
||||
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 WS-LEVEL PIC 9(1).
|
||||
01 WS-VAL-A PIC 9(5).
|
||||
01 WS-VAL-B PIC 9(5).
|
||||
01 WS-RESULT PIC 9(10).
|
||||
01 WS-PASS PIC 9(2) VALUE 0.
|
||||
01 WS-FAIL PIC 9(2) VALUE 0.
|
||||
|
||||
PROCEDURE DIVISION.
|
||||
MAIN.
|
||||
DISPLAY "CALLER-NESTED: 3-level CALL test (C-N009)"
|
||||
|
||||
*> Test: CALLER → SUB-A → SUB-B → SUB-C RETURNING
|
||||
MOVE 1 TO WS-LEVEL.
|
||||
MOVE 10 TO WS-VAL-A.
|
||||
MOVE 20 TO WS-VAL-B.
|
||||
|
||||
CALL 'SUB-A' USING WS-LEVEL WS-VAL-A WS-VAL-B WS-RESULT.
|
||||
|
||||
IF WS-RESULT = 100 *> (10+20) + (10+20) + 20 = 100
|
||||
ADD 1 TO WS-PASS
|
||||
DISPLAY "C-N009: PASS - 3-level result=" WS-RESULT
|
||||
ELSE
|
||||
ADD 1 TO WS-FAIL
|
||||
DISPLAY "C-N009: FAIL - result=" WS-RESULT
|
||||
END-IF.
|
||||
|
||||
*> Test: CALL with RETURN-CODE from nested
|
||||
MOVE 2 TO WS-LEVEL.
|
||||
MOVE 5 TO WS-VAL-A.
|
||||
MOVE 7 TO WS-VAL-B.
|
||||
CALL 'SUB-A' USING WS-LEVEL WS-VAL-A WS-VAL-B WS-RESULT.
|
||||
|
||||
IF WS-RESULT = 31 *> (5+7) + (5+7) + 7 = 31
|
||||
ADD 1 TO WS-PASS
|
||||
DISPLAY "C-N009-2: PASS - nested result=" WS-RESULT
|
||||
ELSE
|
||||
ADD 1 TO WS-FAIL
|
||||
DISPLAY "C-N009-2: FAIL - result=" WS-RESULT
|
||||
END-IF.
|
||||
|
||||
*> CALL nonexistent program (TC-A051)
|
||||
DISPLAY "TC-A051: CALL non-existent program"
|
||||
CALL 'NOPGM00' USING WS-VAL-A
|
||||
ON EXCEPTION
|
||||
ADD 1 TO WS-PASS
|
||||
DISPLAY "TC-A051: PASS - exception raised"
|
||||
NOT ON EXCEPTION
|
||||
ADD 1 TO WS-FAIL
|
||||
DISPLAY "TC-A051: FAIL - no exception"
|
||||
END-CALL.
|
||||
|
||||
DISPLAY " "
|
||||
DISPLAY "CALLER-NESTED: PASS=" WS-PASS " FAIL=" WS-FAIL
|
||||
IF WS-FAIL = 0
|
||||
DISPLAY "CALLER-NESTED: ALL PASSED"
|
||||
STOP RUN RETURNING 0
|
||||
ELSE
|
||||
DISPLAY "CALLER-NESTED: FAILED"
|
||||
STOP RUN RETURNING 1
|
||||
END-IF
|
||||
.
|
||||
|
||||
END PROGRAM CallerNested.
|
||||
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. SUB-A.
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 WS-RET PIC 9(10).
|
||||
LINKAGE SECTION.
|
||||
01 LK-LEVEL PIC 9(1).
|
||||
01 LK-VAL-A PIC 9(5).
|
||||
01 LK-VAL-B PIC 9(5).
|
||||
01 LK-RESULT PIC 9(10).
|
||||
PROCEDURE DIVISION USING LK-LEVEL LK-VAL-A LK-VAL-B LK-RESULT.
|
||||
ADD LK-VAL-A TO LK-VAL-B GIVING WS-RET.
|
||||
CALL 'SUB-B' USING LK-LEVEL LK-VAL-A LK-VAL-B WS-RET LK-RESULT.
|
||||
GOBACK.
|
||||
END PROGRAM SUB-A.
|
||||
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. SUB-B.
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 WS-TEMP PIC 9(10).
|
||||
LINKAGE SECTION.
|
||||
01 LK-LEVEL PIC 9(1).
|
||||
01 LK-VAL-A PIC 9(5).
|
||||
01 LK-VAL-B PIC 9(5).
|
||||
01 LK-INPUT PIC 9(10).
|
||||
01 LK-RESULT PIC 9(10).
|
||||
PROCEDURE DIVISION USING LK-LEVEL LK-VAL-A LK-VAL-B
|
||||
LK-INPUT LK-RESULT.
|
||||
COMPUTE WS-TEMP = LK-INPUT + LK-VAL-B.
|
||||
IF LK-LEVEL = 1
|
||||
COMPUTE LK-RESULT = WS-TEMP
|
||||
ELSE
|
||||
CALL 'SUB-C' USING LK-VAL-A LK-VAL-B WS-TEMP LK-RESULT
|
||||
END-IF.
|
||||
GOBACK.
|
||||
END PROGRAM SUB-B.
|
||||
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. SUB-C.
|
||||
DATA DIVISION.
|
||||
LINKAGE SECTION.
|
||||
01 LK-VAL-A PIC 9(5).
|
||||
01 LK-VAL-B PIC 9(5).
|
||||
01 LK-INPUT PIC 9(10).
|
||||
01 LK-RESULT PIC 9(10).
|
||||
PROCEDURE DIVISION USING LK-VAL-A LK-VAL-B LK-INPUT LK-RESULT.
|
||||
COMPUTE LK-RESULT = LK-INPUT + LK-VAL-B.
|
||||
GOBACK.
|
||||
END PROGRAM SUB-C.
|
||||
Reference in New Issue
Block a user