feat: add benchmark-programs — 58 telecom COBOL test programs

作为子目录纳入系统,与核心测试管道协同

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
NB-076
2026-06-25 09:53:21 +08:00
parent 50f9f0f52f
commit 94400d50d4
278 changed files with 44125 additions and 0 deletions
@@ -0,0 +1,114 @@
*> ============================================================
*> main-edit-getput : 请求书编辑输出 (Invoice GETPUT)
*> Input : FILE-IN (INPUT.DAT: 客户/用量记录)
*> Output: FILE-OUT (OUTPUT.DAT: 编辑后输出)
*> Coverage: COM-N001, COM-N002, COM-N004~N006
*> ============================================================
IDENTIFICATION DIVISION.
PROGRAM-ID. EDIT-GETPUT.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT FILE-IN ASSIGN TO "INPUT.DAT"
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS WS-IN-STATUS.
SELECT FILE-OUT ASSIGN TO "OUTPUT.DAT"
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS WS-OUT-STATUS.
DATA DIVISION.
FILE SECTION.
FD FILE-IN
RECORD CONTAINS 40 CHARACTERS
RECORDING MODE IS F.
01 IN-RECORD.
05 IN-KEY PIC X(10).
05 IN-NAME PIC X(20).
05 IN-AMOUNT PIC 9(10).
FD FILE-OUT
RECORD CONTAINS 40 CHARACTERS
RECORDING MODE IS F.
01 OUT-RECORD.
05 OUT-KEY PIC X(10).
05 OUT-NAME PIC X(20).
05 OUT-AMOUNT PIC 9(10).
WORKING-STORAGE SECTION.
01 WS-IN-STATUS PIC X(2).
01 WS-OUT-STATUS PIC X(2).
01 WS-READ-COUNT PIC 9(10) VALUE 0.
01 WS-WRITE-COUNT PIC 9(10) VALUE 0.
01 WS-EOF-FLAG PIC X(1) VALUE 'N'.
88 WS-EOF VALUE 'Y' FALSE 'N'.
01 WS-INVOICE-REC.
COPY "telecom/TEL-INVOICE.cpy".
PROCEDURE DIVISION.
MAIN-PROCEDURE.
DISPLAY "EDIT-GETPUT: Starting"
DISPLAY "EDIT-GETPUT: Program start at "
FUNCTION CURRENT-DATE (1:8)
*> OPEN files
OPEN INPUT FILE-IN.
IF WS-IN-STATUS NOT = "00"
DISPLAY "EDIT-GETPUT: IN-OPEN STATUS=" WS-IN-STATUS
STOP RUN RETURNING 1
END-IF
OPEN OUTPUT FILE-OUT.
IF WS-OUT-STATUS NOT = "00"
DISPLAY "EDIT-GETPUT: OUT-OPEN STATUS=" WS-OUT-STATUS
STOP RUN RETURNING 1
END-IF
DISPLAY "EDIT-GETPUT: Files opened OK"
DISPLAY "EDIT-GETPUT: Input file = INPUT.DAT"
DISPLAY "EDIT-GETPUT: Output file = OUTPUT.DAT"
*> READ and WRITE loop
PERFORM UNTIL WS-EOF
READ FILE-IN INTO IN-RECORD
AT END
SET WS-EOF TO TRUE
NOT AT END
ADD 1 TO WS-READ-COUNT
MOVE IN-KEY TO OUT-KEY
MOVE IN-NAME TO OUT-NAME
MOVE IN-AMOUNT TO OUT-AMOUNT
WRITE OUT-RECORD
ADD 1 TO WS-WRITE-COUNT
END-READ
END-PERFORM.
*> Close files
CLOSE FILE-IN.
CLOSE FILE-OUT.
*> Verify
DISPLAY "EDIT-GETPUT: Read count = " WS-READ-COUNT
DISPLAY "EDIT-GETPUT: Write count = " WS-WRITE-COUNT
DISPLAY "EDIT-GETPUT: Output record length = 40"
IF WS-READ-COUNT = WS-WRITE-COUNT
DISPLAY "EDIT-GETPUT: PASS - Record counts match"
ELSE
DISPLAY "EDIT-GETPUT: FAIL - Count mismatch"
STOP RUN RETURNING 1
END-IF
IF WS-READ-COUNT > 0
DISPLAY "EDIT-GETPUT: PASS - Output file generated"
ELSE
DISPLAY "EDIT-GETPUT: FAIL - No output"
STOP RUN RETURNING 1
END-IF
DISPLAY "EDIT-GETPUT: Normal end"
STOP RUN RETURNING 0.
END PROGRAM EDIT-GETPUT.