feat: add benchmark-programs — 58 telecom COBOL test programs
作为子目录纳入系统,与核心测试管道协同 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
*> ============================================================
|
||||
*> main-divide-50 : 请求书50分割 (Invoice 50-Split)
|
||||
*> Input : FILE-IN (INPUT.DAT: 请求书记录)
|
||||
*> Output: FILE-OUT (OUTPUT.DAT: 50件毎分割)
|
||||
*> Coverage: S-N001~N003, S-N006, S-N007, S-R001, S-R002
|
||||
*> ============================================================
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. DIVIDE-50.
|
||||
|
||||
ENVIRONMENT DIVISION.
|
||||
INPUT-OUTPUT SECTION.
|
||||
FILE-CONTROL.
|
||||
SELECT FILE-IN ASSIGN TO "INPUT.DAT"
|
||||
ORGANIZATION IS SEQUENTIAL
|
||||
FILE STATUS IS WS-FS.
|
||||
|
||||
SELECT FILE-OUT ASSIGN TO "OUTPUT.DAT"
|
||||
ORGANIZATION IS SEQUENTIAL.
|
||||
|
||||
DATA DIVISION.
|
||||
FILE SECTION.
|
||||
FD FILE-IN RECORD CONTAINS 40 CHARACTERS.
|
||||
01 IN-REC.
|
||||
05 IN-KEY PIC X(10).
|
||||
05 IN-DATA PIC X(20).
|
||||
05 IN-AMT PIC 9(10).
|
||||
|
||||
FD FILE-OUT RECORD CONTAINS 40 CHARACTERS.
|
||||
01 OUT-REC PIC X(40).
|
||||
|
||||
WORKING-STORAGE SECTION.
|
||||
01 WS-FS PIC X(2).
|
||||
01 WS-EOF PIC X(1) VALUE 'N'.
|
||||
88 WS-EOF-Y VALUE 'Y' FALSE 'N'.
|
||||
01 WS-COUNT PIC 9(10).
|
||||
01 WS-FILE-NUM PIC 9(2).
|
||||
01 WS-FILE-NAME PIC X(20).
|
||||
01 WS-TOTAL-IN PIC 9(10).
|
||||
01 WS-TOTAL-OUT PIC 9(10).
|
||||
01 WS-SPLIT-LIMIT PIC 9(5) VALUE 50.
|
||||
01 WS-INVOICE-REC.
|
||||
COPY "telecom/TEL-INVOICE.cpy".
|
||||
|
||||
PROCEDURE DIVISION.
|
||||
MAIN.
|
||||
DISPLAY "DIVIDE-50: Starting 50-split processing"
|
||||
DISPLAY "SPLIT LIMIT: " WS-SPLIT-LIMIT " records per file"
|
||||
|
||||
OPEN INPUT FILE-IN.
|
||||
IF WS-FS NOT = "00"
|
||||
DISPLAY "OPEN FAIL: " WS-FS
|
||||
STOP RUN RETURNING 1
|
||||
END-IF.
|
||||
|
||||
MOVE 1 TO WS-FILE-NUM.
|
||||
MOVE 0 TO WS-COUNT.
|
||||
MOVE 0 TO WS-TOTAL-IN.
|
||||
|
||||
PERFORM OPEN-NEXT-OUTPUT.
|
||||
|
||||
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-TOTAL-IN
|
||||
ADD 1 TO WS-COUNT
|
||||
MOVE IN-REC TO OUT-REC
|
||||
WRITE OUT-REC
|
||||
ADD 1 TO WS-TOTAL-OUT
|
||||
IF WS-COUNT >= WS-SPLIT-LIMIT
|
||||
CLOSE FILE-OUT
|
||||
ADD 1 TO WS-FILE-NUM
|
||||
MOVE 0 TO WS-COUNT
|
||||
PERFORM OPEN-NEXT-OUTPUT
|
||||
END-IF
|
||||
END-READ
|
||||
END-PERFORM.
|
||||
|
||||
CLOSE FILE-IN FILE-OUT.
|
||||
|
||||
DISPLAY "DIVIDE-50: Input=" WS-TOTAL-IN
|
||||
" Output-total=" WS-TOTAL-OUT
|
||||
" Files-created=" WS-FILE-NUM
|
||||
|
||||
IF WS-TOTAL-IN = WS-TOTAL-OUT
|
||||
DISPLAY "DIVIDE-50: PASS - record count match"
|
||||
STOP RUN RETURNING 0
|
||||
ELSE
|
||||
DISPLAY "DIVIDE-50: FAIL - count mismatch"
|
||||
STOP RUN RETURNING 1
|
||||
END-IF
|
||||
.
|
||||
|
||||
OPEN-NEXT-OUTPUT.
|
||||
STRING "SPLIT-" WS-FILE-NUM ".DAT"
|
||||
DELIMITED BY SIZE INTO WS-FILE-NAME
|
||||
END-STRING
|
||||
CLOSE FILE-OUT
|
||||
OPEN OUTPUT FILE-OUT
|
||||
DISPLAY "DIVIDE-50: Opening " WS-FILE-NAME
|
||||
.
|
||||
|
||||
END PROGRAM DIVIDE-50.
|
||||
Reference in New Issue
Block a user