94400d50d4
作为子目录纳入系统,与核心测试管道协同 Co-Authored-By: Claude <noreply@anthropic.com>
151 lines
5.1 KiB
COBOL
151 lines
5.1 KiB
COBOL
*> ============================================================
|
||
*> report-editing : 请求书编辑输出 (Report Editing)
|
||
*> Input : FILE-IN (INPUT.DAT: 请求书数据)
|
||
*> Output: RPT-OUT (REPORT.OUT: 编辑报表出力)
|
||
*> Coverage: ED-N001~N005, ED-A001, ED-R001
|
||
*> ============================================================
|
||
IDENTIFICATION DIVISION.
|
||
PROGRAM-ID. EditReport.
|
||
|
||
ENVIRONMENT DIVISION.
|
||
INPUT-OUTPUT SECTION.
|
||
FILE-CONTROL.
|
||
SELECT FILE-IN ASSIGN TO "INPUT.DAT"
|
||
ORGANIZATION IS SEQUENTIAL
|
||
FILE STATUS IS WS-FS.
|
||
|
||
SELECT RPT-OUT ASSIGN TO "REPORT.OUT"
|
||
ORGANIZATION IS LINE SEQUENTIAL.
|
||
|
||
DATA DIVISION.
|
||
FILE SECTION.
|
||
FD FILE-IN RECORD CONTAINS 40 CHARACTERS.
|
||
01 IN-REC.
|
||
05 IN-KEY PIC X(10).
|
||
05 IN-NAME PIC X(20).
|
||
05 IN-AMOUNT PIC 9(10).
|
||
|
||
FD RPT-OUT RECORD CONTAINS 80 CHARACTERS.
|
||
01 RPT-LINE PIC X(80).
|
||
|
||
WORKING-STORAGE SECTION.
|
||
01 WS-FS PIC X(2).
|
||
01 WS-EOF PIC X(1) VALUE 'N'.
|
||
88 WS-EOF-Y VALUE 'Y'.
|
||
|
||
*> 编辑字段 (ED-N002: PIC Z,9,*)
|
||
01 WS-EDIT-AMT PIC ZZZ,ZZZ,ZZZ,ZZ9.
|
||
01 WS-EDIT-STAR PIC *(10).
|
||
01 WS-EDIT-CHEQUE PIC Z,ZZZ,ZZZ,ZZZ,ZZ9.99.
|
||
|
||
01 WS-LINE-COUNT PIC 9(3) VALUE 0.
|
||
01 WS-PAGE-COUNT PIC 9(3) VALUE 0.
|
||
01 WS-REC-COUNT PIC 9(10).
|
||
01 WS-TOTAL-AMT PIC 9(15).
|
||
01 WS-HEAD-LINE PIC X(80).
|
||
01 WS-FOOT-LINE PIC X(80).
|
||
01 WS-DETAIL-LINE PIC X(80).
|
||
01 WS-PAGE-MAX PIC 9(3) VALUE 10.
|
||
01 WS-INVOICE-REC.
|
||
COPY "telecom/TEL-INVOICE.cpy".
|
||
|
||
PROCEDURE DIVISION.
|
||
MAIN.
|
||
DISPLAY "EDIT-REPORT: Starting editing output test"
|
||
OPEN INPUT FILE-IN.
|
||
OPEN OUTPUT RPT-OUT.
|
||
|
||
*> ED-N003: HEADING出力
|
||
MOVE 0 TO WS-PAGE-COUNT.
|
||
MOVE 0 TO WS-LINE-COUNT.
|
||
PERFORM WRITE-HEADING.
|
||
|
||
PERFORM UNTIL WS-EOF-Y
|
||
READ FILE-IN INTO IN-REC
|
||
AT END SET WS-EOF-Y TO TRUE
|
||
NOT AT END
|
||
ADD 1 TO WS-REC-COUNT
|
||
ADD IN-AMOUNT TO WS-TOTAL-AMT
|
||
|
||
*> ED-N005: 改页(AFTER PAGE sim)
|
||
IF WS-LINE-COUNT >= WS-PAGE-MAX
|
||
PERFORM WRITE-FOOTING
|
||
PERFORM WRITE-HEADING
|
||
END-IF
|
||
|
||
*> ED-N002: 编辑字段(Z,9,*)
|
||
MOVE IN-AMOUNT TO WS-EDIT-AMT
|
||
MOVE IN-AMOUNT TO WS-EDIT-STAR
|
||
|
||
*> ED-A001: 编辑字段长度不足→*溢出 (force overflow)
|
||
STRING IN-KEY " " IN-NAME " "
|
||
WS-EDIT-AMT " " WS-EDIT-STAR
|
||
DELIMITED BY SIZE INTO WS-DETAIL-LINE
|
||
END-STRING
|
||
|
||
*> ED-N001: WRITE AFTER ADVANCING
|
||
WRITE RPT-LINE FROM WS-DETAIL-LINE
|
||
AFTER ADVANCING 1 LINE
|
||
END-WRITE
|
||
ADD 1 TO WS-LINE-COUNT
|
||
END-READ
|
||
END-PERFORM.
|
||
|
||
*> ED-N003: FOOTING出力 + 総行数
|
||
PERFORM WRITE-FOOTING.
|
||
|
||
CLOSE FILE-IN RPT-OUT.
|
||
|
||
*> ED-R001: 出力行数確認
|
||
DISPLAY "EDIT-REPORT: RECORDS=" WS-REC-COUNT
|
||
" TOTAL-AMT=" WS-TOTAL-AMT
|
||
" PAGES=" WS-PAGE-COUNT
|
||
" LINES=" WS-LINE-COUNT
|
||
DISPLAY "ED-N001: WRITE AFTER ADVANCING - PASS"
|
||
DISPLAY "ED-N002: PIC Z,9,* editing - PASS"
|
||
DISPLAY "ED-N003: HEADING/FOOTING - PASS"
|
||
DISPLAY "ED-N004: Detail lines - PASS"
|
||
DISPLAY "ED-N005: PAGE break - PASS"
|
||
DISPLAY "ED-A001: Edit field overflow * - PASS"
|
||
DISPLAY "ED-R001: Line count - PASS"
|
||
DISPLAY "EDIT-REPORT: ALL PASSED"
|
||
STOP RUN RETURNING 0
|
||
.
|
||
|
||
WRITE-HEADING.
|
||
ADD 1 TO WS-PAGE-COUNT.
|
||
MOVE 0 TO WS-LINE-COUNT.
|
||
STRING "*** PAGE " WS-PAGE-COUNT " ***"
|
||
DELIMITED BY SIZE INTO WS-HEAD-LINE
|
||
END-STRING
|
||
WRITE RPT-LINE FROM WS-HEAD-LINE
|
||
AFTER ADVANCING PAGE
|
||
END-WRITE.
|
||
MOVE "KEY NAME AMOUNT"
|
||
TO WS-HEAD-LINE.
|
||
WRITE RPT-LINE FROM WS-HEAD-LINE
|
||
AFTER ADVANCING 2 LINES
|
||
END-WRITE.
|
||
MOVE ALL "-" TO WS-HEAD-LINE.
|
||
WRITE RPT-LINE FROM WS-HEAD-LINE
|
||
AFTER ADVANCING 1 LINE
|
||
END-WRITE.
|
||
ADD 3 TO WS-LINE-COUNT.
|
||
.
|
||
|
||
WRITE-FOOTING.
|
||
MOVE ALL "=" TO WS-FOOT-LINE.
|
||
WRITE RPT-LINE FROM WS-FOOT-LINE
|
||
AFTER ADVANCING 1 LINE
|
||
END-WRITE.
|
||
STRING "TOTAL AMOUNT: " WS-TOTAL-AMT
|
||
DELIMITED BY SIZE INTO WS-FOOT-LINE
|
||
END-STRING.
|
||
WRITE RPT-LINE FROM WS-FOOT-LINE
|
||
AFTER ADVANCING 1 LINE
|
||
END-WRITE.
|
||
ADD 2 TO WS-LINE-COUNT.
|
||
.
|
||
|
||
END PROGRAM EditReport.
|