94400d50d4
作为子目录纳入系统,与核心测试管道协同 Co-Authored-By: Claude <noreply@anthropic.com>
115 lines
3.8 KiB
COBOL
115 lines
3.8 KiB
COBOL
*> ============================================================
|
|
*> 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.
|