feat: add benchmark-programs — 58 telecom COBOL test programs
作为子目录纳入系统,与核心测试管道协同 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -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.
|
||||
Reference in New Issue
Block a user