94400d50d4
作为子目录纳入系统,与核心测试管道协同 Co-Authored-By: Claude <noreply@anthropic.com>
198 lines
6.1 KiB
COBOL
198 lines
6.1 KiB
COBOL
*> ============================================================
|
|
*> 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.
|