*> ============================================================ *> 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.