Files
cobol-java-v3/benchmark-programs/25-subprogram/caller.cbl
T
NB-076 94400d50d4 feat: add benchmark-programs — 58 telecom COBOL test programs
作为子目录纳入系统,与核心测试管道协同

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-25 09:53:21 +08:00

67 lines
2.2 KiB
COBOL

*> ============================================================
*> caller : 计费子程序调用者 (Billing Subprogram Caller)
*> Input : WS-N1, WS-N2 (用量参数)
*> Output: WS-RESULT (CALL计算结果)
*> Coverage: C-N001~N008, C-A001, C-R001, C-R002
*> ============================================================
IDENTIFICATION DIVISION.
PROGRAM-ID. caller.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-PGM-NAME PIC X(8) VALUE "callee ".
01 WS-N1 PIC 9(10).
01 WS-N2 PIC 9(10).
01 WS-RESULT1 PIC 9(10).
01 WS-RESULT2 PIC 9(10).
01 WS-RESULT3 PIC 9(10).
01 WS-ALL-PASS PIC X VALUE 'Y'.
88 WS-ALL-PASS-YES VALUE 'Y'.
PROCEDURE DIVISION.
MAIN.
*> Test 1: CALL literal program name
MOVE 100 TO WS-N1
MOVE 200 TO WS-N2
CALL "callee" USING WS-N1 WS-N2 WS-RESULT1
IF WS-RESULT1 = 300
DISPLAY "Test 1: PASS"
ELSE
DISPLAY "Test 1: FAIL (expected 300, got " WS-RESULT1 ")"
MOVE 'N' TO WS-ALL-PASS
END-IF
*> Test 2: CALL variable program name
MOVE 10 TO WS-N1
MOVE 20 TO WS-N2
CALL WS-PGM-NAME USING WS-N1 WS-N2 WS-RESULT2
IF WS-RESULT2 = 30
DISPLAY "Test 2: PASS"
ELSE
DISPLAY "Test 2: FAIL (expected 30, got " WS-RESULT2 ")"
MOVE 'N' TO WS-ALL-PASS
END-IF
*> Test 3: CALL IS INITIAL (forces subprogram reinitialization)
MOVE 1 TO WS-N1
MOVE 2 TO WS-N2
CALL "callee" IS INITIAL USING WS-N1 WS-N2 WS-RESULT3
IF WS-RESULT3 = 3
DISPLAY "Test 3: PASS"
ELSE
DISPLAY "Test 3: FAIL (expected 3, got " WS-RESULT3 ")"
MOVE 'N' TO WS-ALL-PASS
END-IF
IF WS-ALL-PASS-YES
DISPLAY "25-subprogram: PASS"
STOP RUN RETURNING 0
ELSE
DISPLAY "25-subprogram: FAIL"
STOP RUN RETURNING 1
END-IF
.
END PROGRAM caller.