feat: add benchmark-programs — 58 telecom COBOL test programs
作为子目录纳入系统,与核心测试管道协同 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,197 @@
|
||||
*> ============================================================
|
||||
*> main-88level : 88-level条件判定 (88-Level Condition Test)
|
||||
*> Input : FILE-IN (INPUT.DAT: 条件测试数据)
|
||||
*> Output: FILE-OUT (OUTPUT.DAT: 判定结果)
|
||||
*> Coverage: B-N004, B-R001
|
||||
*> ============================================================
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. Test88Level.
|
||||
|
||||
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.
|
||||
|
||||
DATA DIVISION.
|
||||
FILE SECTION.
|
||||
FD FILE-IN RECORD CONTAINS 40 CHARACTERS.
|
||||
01 IN-REC.
|
||||
05 IN-STATUS PIC X(2).
|
||||
05 IN-CODE PIC X(3).
|
||||
05 IN-VALUE PIC 9(5).
|
||||
05 IN-FLAG PIC X(1).
|
||||
05 FILLER PIC X(29).
|
||||
|
||||
FD FILE-OUT RECORD CONTAINS 80 CHARACTERS.
|
||||
01 OUT-REC.
|
||||
05 OUT-DESC PIC X(60).
|
||||
05 OUT-RESULT PIC X(10).
|
||||
|
||||
WORKING-STORAGE SECTION.
|
||||
*> 88-level 条件名定義
|
||||
01 WS-STATUS.
|
||||
05 WS-STATUS-X PIC X(2).
|
||||
88 WS-ACTIVE VALUE 'AC'.
|
||||
88 WS-INACTIVE VALUE 'IN'.
|
||||
88 WS-PENDING VALUE 'PE'.
|
||||
88 WS-CLOSED VALUE 'CL'.
|
||||
88 WS-ERROR VALUE 'ER'.
|
||||
|
||||
01 WS-CODE.
|
||||
05 WS-CODE-X PIC X(3).
|
||||
88 WS-CODE-A VALUE 'A01', 'A02', 'A03'.
|
||||
88 WS-CODE-B VALUE 'B01', 'B02'.
|
||||
88 WS-CODE-ERR VALUE 'ERR'.
|
||||
|
||||
01 WS-FLAG.
|
||||
05 WS-FLAG-X PIC X(1).
|
||||
88 WS-FLAG-YES VALUE 'Y' FALSE 'N'.
|
||||
88 WS-FLAG-NO VALUE 'N'.
|
||||
|
||||
01 WS-TYPE PIC X(10).
|
||||
01 WS-EOF PIC X(1) VALUE 'N'.
|
||||
88 WS-EOF-Y VALUE 'Y' FALSE 'N'.
|
||||
01 WS-COUNT PIC 9(5).
|
||||
01 WS-PASS PIC 9(2).
|
||||
01 WS-FAIL PIC 9(2).
|
||||
|
||||
01 WS-TELECOM-REC.
|
||||
COPY "telecom/TEL-BILLING.cpy".
|
||||
|
||||
PROCEDURE DIVISION.
|
||||
MAIN.
|
||||
DISPLAY "TEST-88LEVEL: Starting 88-level condition test"
|
||||
OPEN INPUT FILE-IN.
|
||||
OPEN OUTPUT FILE-OUT.
|
||||
|
||||
*> Test B-N004-1: 88-level 單值條件
|
||||
MOVE 'AC' TO WS-STATUS-X.
|
||||
IF WS-ACTIVE
|
||||
DISPLAY "B-N004-1: AC → ACTIVE PASS"
|
||||
ADD 1 TO WS-PASS
|
||||
ELSE
|
||||
DISPLAY "B-N004-1: FAIL"
|
||||
ADD 1 TO WS-FAIL
|
||||
END-IF.
|
||||
|
||||
*> Test B-N004-2: 88-level false condition
|
||||
MOVE 'IN' TO WS-STATUS-X.
|
||||
IF WS-ACTIVE
|
||||
DISPLAY "B-N004-2: IN → ACTIVE? FAIL"
|
||||
ADD 1 TO WS-FAIL
|
||||
ELSE
|
||||
DISPLAY "B-N004-2: IN → NOT ACTIVE PASS"
|
||||
ADD 1 TO WS-PASS
|
||||
END-IF.
|
||||
|
||||
*> Test B-N004-3: 88-level 複數值
|
||||
MOVE 'A01' TO WS-CODE-X.
|
||||
IF WS-CODE-A
|
||||
DISPLAY "B-N004-3: A01 → CODE-A PASS"
|
||||
ADD 1 TO WS-PASS
|
||||
ELSE
|
||||
DISPLAY "B-N004-3: FAIL"
|
||||
ADD 1 TO WS-FAIL
|
||||
END-IF.
|
||||
|
||||
MOVE 'A02' TO WS-CODE-X.
|
||||
IF WS-CODE-A
|
||||
DISPLAY "B-N004-4: A02 → CODE-A PASS"
|
||||
ADD 1 TO WS-PASS
|
||||
ELSE
|
||||
DISPLAY "B-N004-4: FAIL"
|
||||
ADD 1 TO WS-FAIL
|
||||
END-IF.
|
||||
|
||||
*> Test B-N004-5: 88-level with NOT
|
||||
MOVE 'PE' TO WS-STATUS-X.
|
||||
IF NOT WS-ACTIVE AND NOT WS-INACTIVE
|
||||
DISPLAY "B-N004-5: PE → NOT ACTIVE/INACTIVE PASS"
|
||||
ADD 1 TO WS-PASS
|
||||
ELSE
|
||||
DISPLAY "B-N004-5: FAIL"
|
||||
ADD 1 TO WS-FAIL
|
||||
END-IF.
|
||||
|
||||
*> Test B-N004-6: 88-level error code
|
||||
MOVE 'ERR' TO WS-CODE-X.
|
||||
IF WS-CODE-ERR
|
||||
DISPLAY "B-N004-6: ERR → CODE-ERR PASS"
|
||||
ADD 1 TO WS-PASS
|
||||
ELSE
|
||||
DISPLAY "B-N004-6: FAIL"
|
||||
ADD 1 TO WS-FAIL
|
||||
END-IF.
|
||||
|
||||
*> Test B-N004-7: Y/N flag 88-level
|
||||
MOVE 'Y' TO WS-FLAG-X.
|
||||
IF WS-FLAG-YES
|
||||
DISPLAY "B-N004-7: Y → FLAG-YES PASS"
|
||||
ADD 1 TO WS-PASS
|
||||
ELSE
|
||||
DISPLAY "B-N004-7: FAIL"
|
||||
ADD 1 TO WS-FAIL
|
||||
END-IF.
|
||||
|
||||
MOVE 'N' TO WS-FLAG-X.
|
||||
IF WS-FLAG-NO
|
||||
DISPLAY "B-N004-8: N → FLAG-NO PASS"
|
||||
ADD 1 TO WS-PASS
|
||||
ELSE
|
||||
DISPLAY "B-N004-8: FAIL"
|
||||
ADD 1 TO WS-FAIL
|
||||
END-IF.
|
||||
|
||||
*> Test B-R001: COBOL85 關係運算子
|
||||
IF WS-PASS > WS-FAIL
|
||||
DISPLAY "B-R001: RELOP > PASS"
|
||||
END-IF.
|
||||
IF WS-FAIL < WS-PASS
|
||||
DISPLAY "B-R001: RELOP < PASS"
|
||||
END-IF.
|
||||
IF WS-PASS >= 6
|
||||
DISPLAY "B-R001: RELOP >= PASS"
|
||||
END-IF.
|
||||
IF WS-FAIL <= 2
|
||||
DISPLAY "B-R001: RELOP <= PASS"
|
||||
END-IF.
|
||||
|
||||
*> 88-level with EVALUATE
|
||||
MOVE 'CL' TO WS-STATUS-X.
|
||||
EVALUATE TRUE
|
||||
WHEN WS-ACTIVE
|
||||
MOVE 'ACTIVE' TO WS-TYPE
|
||||
WHEN WS-INACTIVE
|
||||
MOVE 'INACTIVE' TO WS-TYPE
|
||||
WHEN WS-PENDING
|
||||
MOVE 'PENDING' TO WS-TYPE
|
||||
WHEN WS-CLOSED
|
||||
MOVE 'CLOSED' TO WS-TYPE
|
||||
WHEN WS-ERROR
|
||||
MOVE 'ERROR' TO WS-TYPE
|
||||
END-EVALUATE.
|
||||
IF WS-TYPE = 'CLOSED'
|
||||
DISPLAY "B-R001: EVALUATE+88-level PASS"
|
||||
ADD 1 TO WS-PASS
|
||||
ELSE
|
||||
DISPLAY "B-R001: EVALUATE+88-level FAIL"
|
||||
ADD 1 TO WS-FAIL
|
||||
END-IF.
|
||||
|
||||
CLOSE FILE-IN FILE-OUT.
|
||||
DISPLAY " "
|
||||
DISPLAY "88-LEVEL: PASS=" WS-PASS " FAIL=" WS-FAIL
|
||||
IF WS-FAIL = 0
|
||||
DISPLAY "88-LEVEL: ALL PASSED"
|
||||
STOP RUN RETURNING 0
|
||||
ELSE
|
||||
DISPLAY "88-LEVEL: FAILED"
|
||||
STOP RUN RETURNING 1
|
||||
END-IF
|
||||
.
|
||||
|
||||
END PROGRAM Test88Level.
|
||||
Reference in New Issue
Block a user