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,150 @@
*> ============================================================
*> 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.