feat: add benchmark-programs — 58 telecom COBOL test programs
作为子目录纳入系统,与核心测试管道协同 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. SortAnomaly.
|
||||
*> SORT 異常系測試
|
||||
*> Coverage: SR-A002 (INPUT未RELEASE), SR-A003 (OUTPUT未RETURN)
|
||||
|
||||
ENVIRONMENT DIVISION.
|
||||
INPUT-OUTPUT SECTION.
|
||||
FILE-CONTROL.
|
||||
SELECT FILE-IN ASSIGN TO "INPUT.DAT"
|
||||
ORGANIZATION IS SEQUENTIAL.
|
||||
SELECT FILE-OUT ASSIGN TO "OUTPUT.DAT"
|
||||
ORGANIZATION IS SEQUENTIAL.
|
||||
SELECT WORK-F ASSIGN TO "WORK.TMP".
|
||||
|
||||
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(30).
|
||||
|
||||
FD FILE-OUT RECORD CONTAINS 40 CHARACTERS.
|
||||
01 OUT-REC PIC X(40).
|
||||
|
||||
SD WORK-F.
|
||||
01 WRK-REC PIC X(40).
|
||||
|
||||
WORKING-STORAGE SECTION.
|
||||
01 WS-EOF PIC X(1) VALUE 'N'.
|
||||
88 WS-EOF-Y VALUE 'Y' FALSE 'N'.
|
||||
01 WS-PASS PIC 9(2) VALUE 0.
|
||||
01 WS-FAIL PIC 9(2) VALUE 0.
|
||||
01 WS-TEST PIC 9(2) VALUE 0.
|
||||
01 WS-COUNT PIC 9(5).
|
||||
01 WS-I PIC 9(5).
|
||||
|
||||
01 WS-CDR-REC.
|
||||
COPY "telecom/TEL-CDR.cpy".
|
||||
|
||||
PROCEDURE DIVISION.
|
||||
MAIN.
|
||||
DISPLAY "SORT-ANOMALY: Starting anomaly tests"
|
||||
|
||||
*> 准备测试数据
|
||||
OPEN OUTPUT FILE-IN.
|
||||
PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > 10
|
||||
MOVE WS-I TO IN-KEY
|
||||
MOVE "RECORD-" TO IN-DATA
|
||||
WRITE IN-REC
|
||||
END-PERFORM.
|
||||
CLOSE FILE-IN.
|
||||
|
||||
*> SR-A002: INPUT PROCEDURE 内未RELEASE → 数据丢失
|
||||
ADD 1 TO WS-TEST.
|
||||
DISPLAY "SR-A002: INPUT procedure without RELEASE"
|
||||
SORT WORK-F ON ASCENDING KEY WRK-REC
|
||||
INPUT PROCEDURE IS NO-RELEASE-PROC
|
||||
GIVING FILE-OUT.
|
||||
|
||||
OPEN INPUT FILE-OUT.
|
||||
MOVE 0 TO WS-COUNT.
|
||||
PERFORM UNTIL WS-EOF-Y
|
||||
READ FILE-OUT INTO OUT-REC
|
||||
AT END SET WS-EOF-Y TO TRUE
|
||||
NOT AT END
|
||||
ADD 1 TO WS-COUNT
|
||||
END-READ
|
||||
END-PERFORM.
|
||||
CLOSE FILE-OUT.
|
||||
|
||||
IF WS-COUNT = 0
|
||||
ADD 1 TO WS-PASS
|
||||
DISPLAY "SR-A002: PASS - 0 records (none RELEASEd)"
|
||||
ELSE
|
||||
ADD 1 TO WS-FAIL
|
||||
DISPLAY "SR-A002: FAIL - " WS-COUNT " records found"
|
||||
END-IF.
|
||||
MOVE 'N' TO WS-EOF.
|
||||
|
||||
*> SR-A003: OUTPUT PROCEDURE 内未RETURN → 死循环风险
|
||||
*> 即使未RETURN, SORT OUTPUT PROC 应正常返回
|
||||
ADD 1 TO WS-TEST.
|
||||
DISPLAY "SR-A003: OUTPUT procedure without RETURN"
|
||||
OPEN INPUT FILE-IN.
|
||||
SORT WORK-F ON ASCENDING KEY WRK-REC
|
||||
USING FILE-IN
|
||||
OUTPUT PROCEDURE IS NO-RETURN-PROC.
|
||||
CLOSE FILE-IN.
|
||||
|
||||
IF RETURN-CODE < 16
|
||||
ADD 1 TO WS-PASS
|
||||
DISPLAY "SR-A003: PASS - completed (no RETURN block)"
|
||||
ELSE
|
||||
ADD 1 TO WS-FAIL
|
||||
DISPLAY "SR-A003: FAIL - RC=" RETURN-CODE
|
||||
END-IF.
|
||||
|
||||
DISPLAY " "
|
||||
DISPLAY "SORT-ANOMALY: PASS=" WS-PASS " FAIL=" WS-FAIL
|
||||
IF WS-FAIL = 0
|
||||
DISPLAY "SORT-ANOMALY: ALL PASSED"
|
||||
STOP RUN RETURNING 0
|
||||
ELSE
|
||||
DISPLAY "SORT-ANOMALY: FAILED"
|
||||
STOP RUN RETURNING 1
|
||||
END-IF
|
||||
.
|
||||
|
||||
NO-RELEASE-PROC SECTION.
|
||||
OPEN INPUT FILE-IN.
|
||||
PERFORM UNTIL WS-EOF-Y
|
||||
READ FILE-IN INTO IN-REC
|
||||
AT END SET WS-EOF-Y TO TRUE
|
||||
NOT AT END
|
||||
*> 故意不RELEASE — 数据丢失
|
||||
CONTINUE
|
||||
END-READ
|
||||
END-PERFORM.
|
||||
CLOSE FILE-IN.
|
||||
.
|
||||
|
||||
NO-RETURN-PROC SECTION.
|
||||
*> OUTPUT PROCEDURE 不RETURN, 直接結束
|
||||
DISPLAY "NO-RETURN-PROC: Entered (no RETURN here)"
|
||||
.
|
||||
|
||||
END PROGRAM SortAnomaly.
|
||||
Reference in New Issue
Block a user