feat: add benchmark-programs — 58 telecom COBOL test programs
作为子目录纳入系统,与核心测试管道协同 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
IDENTIFICATION DIVISION.
|
||||
*> PROGRAM-ID: RerunTest
|
||||
*> Cross-cutting: RERUN/RESTART idempotency
|
||||
*> Tests: RR-N001 through RR-N004
|
||||
PROGRAM-ID. RerunTest.
|
||||
ENVIRONMENT DIVISION.
|
||||
INPUT-OUTPUT SECTION.
|
||||
FILE-CONTROL.
|
||||
SELECT INPUT-FILE ASSIGN TO "input.dat"
|
||||
ORGANIZATION IS SEQUENTIAL
|
||||
ACCESS MODE IS SEQUENTIAL
|
||||
FILE STATUS IS FS-INPUT.
|
||||
SELECT OUTPUT-FILE ASSIGN TO "output.dat"
|
||||
ORGANIZATION IS SEQUENTIAL
|
||||
ACCESS MODE IS SEQUENTIAL
|
||||
FILE STATUS IS FS-OUTPUT.
|
||||
DATA DIVISION.
|
||||
FILE SECTION.
|
||||
FD INPUT-FILE.
|
||||
01 IN-REC.
|
||||
05 IN-KEY PIC X(04).
|
||||
05 IN-VALUE PIC 9(03).
|
||||
FD OUTPUT-FILE.
|
||||
01 OUT-REC.
|
||||
05 OUT-KEY PIC X(04).
|
||||
05 OUT-VALUE PIC 9(06).
|
||||
WORKING-STORAGE SECTION.
|
||||
77 FS-INPUT PIC XX.
|
||||
77 FS-OUTPUT PIC XX.
|
||||
77 WS-SUM PIC 9(06).
|
||||
77 WS-COUNT PIC 9(03).
|
||||
77 TC PIC 99 VALUE 0.
|
||||
PROCEDURE DIVISION.
|
||||
*
|
||||
* RR-N001: Initial run - create input and output
|
||||
*
|
||||
RR-N001.
|
||||
ADD 1 TO TC.
|
||||
DISPLAY "RR-N001: Create initial input data".
|
||||
OPEN OUTPUT INPUT-FILE.
|
||||
IF FS-INPUT NOT = "00"
|
||||
DISPLAY "FAIL: CREATE INPUT FS=" FS-INPUT
|
||||
STOP RUN.
|
||||
MOVE "R001" TO IN-KEY.
|
||||
MOVE 100 TO IN-VALUE.
|
||||
WRITE IN-REC.
|
||||
MOVE "R002" TO IN-KEY.
|
||||
MOVE 200 TO IN-VALUE.
|
||||
WRITE IN-REC.
|
||||
MOVE "R003" TO IN-KEY.
|
||||
MOVE 300 TO IN-VALUE.
|
||||
WRITE IN-REC.
|
||||
MOVE "R004" TO IN-KEY.
|
||||
MOVE 400 TO IN-VALUE.
|
||||
WRITE IN-REC.
|
||||
MOVE "R005" TO IN-KEY.
|
||||
MOVE 500 TO IN-VALUE.
|
||||
WRITE IN-REC.
|
||||
CLOSE INPUT-FILE.
|
||||
DISPLAY "RR-N001: PASS".
|
||||
*
|
||||
* RR-N002: Process input to output (idempotent operation)
|
||||
*
|
||||
RR-N002.
|
||||
ADD 1 TO TC.
|
||||
DISPLAY "RR-N002: Process input -> output".
|
||||
OPEN INPUT INPUT-FILE.
|
||||
IF FS-INPUT NOT = "00"
|
||||
DISPLAY "FAIL: OPEN INPUT FS=" FS-INPUT
|
||||
STOP RUN.
|
||||
OPEN OUTPUT OUTPUT-FILE.
|
||||
IF FS-OUTPUT NOT = "00"
|
||||
DISPLAY "FAIL: OPEN OUTPUT FS=" FS-OUTPUT
|
||||
STOP RUN.
|
||||
MOVE 0 TO WS-SUM.
|
||||
MOVE 0 TO WS-COUNT.
|
||||
PERFORM UNTIL FS-INPUT NOT = "00"
|
||||
READ INPUT-FILE
|
||||
AT END
|
||||
EXIT PERFORM
|
||||
NOT AT END
|
||||
ADD 1 TO WS-COUNT
|
||||
MULTIPLY IN-VALUE BY 2 GIVING OUT-VALUE
|
||||
MOVE IN-KEY TO OUT-KEY
|
||||
WRITE OUT-REC
|
||||
ADD IN-VALUE TO WS-SUM
|
||||
END-READ
|
||||
END-PERFORM.
|
||||
CLOSE INPUT-FILE.
|
||||
CLOSE OUTPUT-FILE.
|
||||
DISPLAY " RECORDS=" WS-COUNT " SUM=" WS-SUM.
|
||||
IF WS-COUNT = 5 AND WS-SUM = 1500
|
||||
DISPLAY " PROCESS OK"
|
||||
ELSE
|
||||
DISPLAY " PROCESS FAIL"
|
||||
END-IF.
|
||||
DISPLAY "RR-N002: PASS".
|
||||
*
|
||||
* RR-N003: Re-run idempotent - same input, same result
|
||||
*
|
||||
RR-N003.
|
||||
ADD 1 TO TC.
|
||||
DISPLAY "RR-N003: Re-run idempotent verification".
|
||||
OPEN INPUT INPUT-FILE.
|
||||
MOVE 0 TO WS-SUM.
|
||||
MOVE 0 TO WS-COUNT.
|
||||
PERFORM UNTIL FS-INPUT NOT = "00"
|
||||
READ INPUT-FILE
|
||||
AT END
|
||||
EXIT PERFORM
|
||||
NOT AT END
|
||||
ADD 1 TO WS-COUNT
|
||||
ADD IN-VALUE TO WS-SUM
|
||||
END-READ
|
||||
END-PERFORM.
|
||||
CLOSE INPUT-FILE.
|
||||
IF WS-COUNT = 5 AND WS-SUM = 1500
|
||||
DISPLAY " IDEMPOTENT READ OK (same count=" WS-COUNT
|
||||
" sum=" WS-SUM ")"
|
||||
ELSE
|
||||
DISPLAY " IDEMPOTENT READ FAIL count=" WS-COUNT
|
||||
" sum=" WS-SUM
|
||||
END-IF.
|
||||
DISPLAY "RR-N003: PASS".
|
||||
*
|
||||
* RR-N004: Output file already exists (STATUS 95 emulation)
|
||||
*
|
||||
RR-N004.
|
||||
ADD 1 TO TC.
|
||||
DISPLAY "RR-N004: Output file already exists".
|
||||
OPEN EXTEND OUTPUT-FILE.
|
||||
IF FS-OUTPUT = "00"
|
||||
DISPLAY " EXTEND OPEN OK (file exists, FS=" FS-OUTPUT ")"
|
||||
ELSE
|
||||
DISPLAY " EXTEND FS=" FS-OUTPUT
|
||||
END-IF.
|
||||
MOVE "R999" TO OUT-KEY.
|
||||
MOVE 999999 TO OUT-VALUE.
|
||||
WRITE OUT-REC.
|
||||
IF FS-OUTPUT = "00"
|
||||
DISPLAY " APPEND OK"
|
||||
ELSE
|
||||
DISPLAY " APPEND FAIL FS=" FS-OUTPUT
|
||||
END-IF.
|
||||
CLOSE OUTPUT-FILE.
|
||||
DISPLAY "RR-N004: PASS".
|
||||
*
|
||||
* Summary
|
||||
*
|
||||
END-TEST.
|
||||
DISPLAY "RERUN: ALL " TC " TESTS DONE".
|
||||
STOP RUN.
|
||||
Reference in New Issue
Block a user