feat: add benchmark-programs — 58 telecom COBOL test programs
作为子目录纳入系统,与核心测试管道协同 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. FileOrgExt.
|
||||
*> 文件編成 拡張テスト
|
||||
*> Coverage: FO-A001 (STATUS 95), FO-A004 (編成不一致OPEN)
|
||||
*> FO-R001 (FILE STATUS 確認)
|
||||
|
||||
ENVIRONMENT DIVISION.
|
||||
INPUT-OUTPUT SECTION.
|
||||
FILE-CONTROL.
|
||||
*> 正常SEQUENTIAL文件
|
||||
SELECT SEQ-FILE ASSIGN TO "SEQ.DAT"
|
||||
ORGANIZATION IS SEQUENTIAL
|
||||
FILE STATUS IS WS-FS1.
|
||||
|
||||
*> 故意用INDEXED组织但写SEQUENTIAL方式(編成不一致)
|
||||
SELECT BAD-OPEN ASSIGN TO "BAD.DAT"
|
||||
ORGANIZATION IS INDEXED
|
||||
RECORD KEY IS BAD-KEY
|
||||
FILE STATUS IS WS-FS2.
|
||||
|
||||
*> FILE STATUS驗證用
|
||||
SELECT VSAM-FILE ASSIGN TO "VSAM.DAT"
|
||||
ORGANIZATION IS INDEXED
|
||||
RECORD KEY IS VSAM-KEY
|
||||
FILE STATUS IS WS-FS3.
|
||||
|
||||
DATA DIVISION.
|
||||
FILE SECTION.
|
||||
FD SEQ-FILE RECORD CONTAINS 40 CHARACTERS.
|
||||
01 SEQ-REC PIC X(40).
|
||||
|
||||
FD BAD-OPEN RECORD CONTAINS 40 CHARACTERS.
|
||||
01 BAD-REC.
|
||||
05 BAD-KEY PIC X(10).
|
||||
05 BAD-DATA PIC X(30).
|
||||
|
||||
FD VSAM-FILE RECORD CONTAINS 40 CHARACTERS.
|
||||
01 VSAM-REC.
|
||||
05 VSAM-KEY PIC X(10).
|
||||
05 VSAM-DATA PIC X(30).
|
||||
|
||||
WORKING-STORAGE SECTION.
|
||||
01 WS-FS1 PIC X(2).
|
||||
01 WS-FS2 PIC X(2).
|
||||
01 WS-FS3 PIC X(2).
|
||||
01 WS-PASS PIC 9(2) VALUE 0.
|
||||
01 WS-FAIL PIC 9(2) VALUE 0.
|
||||
|
||||
PROCEDURE DIVISION.
|
||||
MAIN.
|
||||
DISPLAY "FILE-ORG-EXT: Starting file organization tests"
|
||||
|
||||
*> FO-R001: FILE STATUS 基本確認
|
||||
DISPLAY "FO-R001: Basic FILE STATUS check"
|
||||
OPEN OUTPUT SEQ-FILE.
|
||||
IF WS-FS1 = "00"
|
||||
ADD 1 TO WS-PASS
|
||||
DISPLAY "FO-R001: OPEN OUTPUT STATUS=00 PASS"
|
||||
ELSE
|
||||
ADD 1 TO WS-FAIL
|
||||
DISPLAY "FO-R001: OPEN STATUS=" WS-FS1
|
||||
END-IF.
|
||||
CLOSE SEQ-FILE.
|
||||
|
||||
*> FO-A004: 編成不一致OPEN
|
||||
*> SEQUENTIAL文件作为INDEXED打开→STATUS非0
|
||||
DISPLAY "FO-A004: Organization mismatch OPEN"
|
||||
OPEN INPUT BAD-OPEN.
|
||||
IF WS-FS2 NOT = "00" AND WS-FS2 NOT = "05"
|
||||
ADD 1 TO WS-PASS
|
||||
DISPLAY "FO-A004: PASS - STATUS=" WS-FS2
|
||||
" (expected non-zero)"
|
||||
ELSE
|
||||
ADD 1 TO WS-FAIL
|
||||
DISPLAY "FO-A004: FAIL - unexpected STATUS=" WS-FS2
|
||||
END-IF.
|
||||
CLOSE BAD-OPEN.
|
||||
|
||||
*> FO-A001: STATUS 95 (文件状態不一致)
|
||||
*> INDEXED文件作為INPUT打開但文件不存在
|
||||
DISPLAY "FO-A001: FILE STATUS 95 test"
|
||||
OPEN INPUT VSAM-FILE.
|
||||
DISPLAY "FO-A001: OPEN STATUS=" WS-FS3
|
||||
IF WS-FS3 = "35" OR WS-FS3 = "05"
|
||||
ADD 1 TO WS-PASS
|
||||
DISPLAY "FO-A001: PASS - STATUS=" WS-FS3
|
||||
" (file not found expected)"
|
||||
ELSE
|
||||
ADD 1 TO WS-FAIL
|
||||
DISPLAY "FO-A001: FAIL - STATUS=" WS-FS3
|
||||
END-IF.
|
||||
CLOSE VSAM-FILE.
|
||||
|
||||
*> FO-N005: LINE SEQUENTIAL 読書
|
||||
DISPLAY "FO-N005: LINE SEQUENTIAL test"
|
||||
OPEN OUTPUT SEQ-FILE.
|
||||
MOVE "LINE-SEQUENTIAL-TEST-RECORD-01" TO SEQ-REC.
|
||||
WRITE SEQ-REC.
|
||||
CLOSE SEQ-FILE.
|
||||
|
||||
OPEN INPUT SEQ-FILE.
|
||||
READ SEQ-FILE INTO SEQ-REC
|
||||
AT END
|
||||
ADD 1 TO WS-FAIL
|
||||
DISPLAY "FO-N005: FAIL - empty read"
|
||||
NOT AT END
|
||||
ADD 1 TO WS-PASS
|
||||
DISPLAY "FO-N005: PASS - LINE SEQ read OK"
|
||||
END-READ.
|
||||
CLOSE SEQ-FILE.
|
||||
|
||||
DISPLAY " "
|
||||
DISPLAY "FILE-ORG-EXT: PASS=" WS-PASS " FAIL=" WS-FAIL
|
||||
IF WS-FAIL = 0
|
||||
DISPLAY "FILE-ORG-EXT: ALL PASSED"
|
||||
STOP RUN RETURNING 0
|
||||
ELSE
|
||||
DISPLAY "FILE-ORG-EXT: FAILED"
|
||||
STOP RUN RETURNING 1
|
||||
END-IF
|
||||
.
|
||||
|
||||
END PROGRAM FileOrgExt.
|
||||
@@ -0,0 +1,121 @@
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. RRDSTest.
|
||||
*> RELATIVE(RRDS)文件編成測試
|
||||
*> Coverage: FO-N004, FO-A003, FO-R001
|
||||
|
||||
ENVIRONMENT DIVISION.
|
||||
INPUT-OUTPUT SECTION.
|
||||
FILE-CONTROL.
|
||||
SELECT RRDS-FILE ASSIGN TO "RRDS.DAT"
|
||||
ORGANIZATION IS RELATIVE
|
||||
ACCESS MODE IS RANDOM
|
||||
RELATIVE KEY IS WS-RRN
|
||||
FILE STATUS IS WS-FS.
|
||||
|
||||
DATA DIVISION.
|
||||
FILE SECTION.
|
||||
FD RRDS-FILE RECORD CONTAINS 40 CHARACTERS.
|
||||
01 RRDS-REC.
|
||||
05 RR-KEY PIC X(10).
|
||||
05 RR-DATA PIC X(30).
|
||||
|
||||
WORKING-STORAGE SECTION.
|
||||
01 WS-FS PIC X(2).
|
||||
01 WS-RRN PIC 9(5).
|
||||
01 WS-I PIC 9(3).
|
||||
01 WS-PASS PIC 9(2) VALUE 0.
|
||||
01 WS-FAIL PIC 9(2) VALUE 0.
|
||||
|
||||
PROCEDURE DIVISION.
|
||||
MAIN.
|
||||
DISPLAY "RRDS-TEST: Starting RELATIVE file test"
|
||||
|
||||
*> FO-N004: RRN指定WRITE
|
||||
OPEN OUTPUT RRDS-FILE.
|
||||
IF WS-FS NOT = "00"
|
||||
DISPLAY "OPEN OUTPUT FAIL: STATUS=" WS-FS
|
||||
STOP RUN RETURNING 1
|
||||
END-IF.
|
||||
DISPLAY "FO-N004: OPEN OUTPUT STATUS=" WS-FS
|
||||
|
||||
MOVE 1 TO WS-RRN.
|
||||
MOVE "RRN-00001" TO RR-KEY.
|
||||
MOVE "WRITE AT RRN 1" TO RR-DATA.
|
||||
WRITE RRDS-REC.
|
||||
IF WS-FS = "00"
|
||||
ADD 1 TO WS-PASS
|
||||
DISPLAY "FO-N004-1: WRITE RRN=1 PASS"
|
||||
ELSE
|
||||
ADD 1 TO WS-FAIL
|
||||
DISPLAY "FO-N004-1: WRITE FAIL STATUS=" WS-FS
|
||||
END-IF.
|
||||
|
||||
MOVE 5 TO WS-RRN.
|
||||
MOVE "RRN-00005" TO RR-KEY.
|
||||
MOVE "WRITE AT RRN 5" TO RR-DATA.
|
||||
WRITE RRDS-REC.
|
||||
IF WS-FS = "00"
|
||||
ADD 1 TO WS-PASS
|
||||
DISPLAY "FO-N004-2: WRITE RRN=5 PASS"
|
||||
ELSE
|
||||
ADD 1 TO WS-FAIL
|
||||
DISPLAY "FO-N004-2: WRITE FAIL STATUS=" WS-FS
|
||||
END-IF.
|
||||
|
||||
MOVE 10 TO WS-RRN.
|
||||
MOVE "RRN-00010" TO RR-KEY.
|
||||
MOVE "WRITE AT RRN 10" TO RR-DATA.
|
||||
WRITE RRDS-REC.
|
||||
IF WS-FS = "00"
|
||||
ADD 1 TO WS-PASS
|
||||
DISPLAY "FO-N004-3: WRITE RRN=10 PASS"
|
||||
ELSE
|
||||
ADD 1 TO WS-FAIL
|
||||
DISPLAY "FO-N004-3: WRITE FAIL STATUS=" WS-FS
|
||||
END-IF.
|
||||
CLOSE RRDS-FILE.
|
||||
|
||||
*> FO-N004: RRN指定READ
|
||||
OPEN INPUT RRDS-FILE.
|
||||
MOVE 5 TO WS-RRN.
|
||||
READ RRDS-FILE INTO RRDS-REC
|
||||
INVALID KEY
|
||||
ADD 1 TO WS-FAIL
|
||||
DISPLAY "FO-N004-4: READ RRN=5 FAIL"
|
||||
NOT INVALID KEY
|
||||
ADD 1 TO WS-PASS
|
||||
DISPLAY "FO-N004-4: READ RRN=5 PASS: " RR-KEY
|
||||
END-READ.
|
||||
CLOSE RRDS-FILE.
|
||||
|
||||
*> FO-A003: 範囲外RRNアクセス
|
||||
OPEN INPUT RRDS-FILE.
|
||||
MOVE 999 TO WS-RRN.
|
||||
READ RRDS-FILE INTO RRDS-REC
|
||||
INVALID KEY
|
||||
ADD 1 TO WS-PASS
|
||||
DISPLAY "FO-A003: PASS - OUT OF RANGE RRN=999"
|
||||
NOT INVALID KEY
|
||||
ADD 1 TO WS-FAIL
|
||||
DISPLAY "FO-A003: FAIL - RRN=999 read unexpected"
|
||||
END-READ.
|
||||
CLOSE RRDS-FILE.
|
||||
|
||||
*> FO-R001: FILE STATUS確認
|
||||
DISPLAY "FO-R001: File status codes"
|
||||
IF WS-FS = "23" OR "00"
|
||||
DISPLAY "FO-R001: STATUS=" WS-FS " checked"
|
||||
END-IF.
|
||||
|
||||
DISPLAY " "
|
||||
DISPLAY "RRDS-TEST: PASS=" WS-PASS " FAIL=" WS-FAIL
|
||||
IF WS-FAIL = 0
|
||||
DISPLAY "RRDS-TEST: ALL PASSED"
|
||||
STOP RUN RETURNING 0
|
||||
ELSE
|
||||
DISPLAY "RRDS-TEST: FAILED"
|
||||
STOP RUN RETURNING 1
|
||||
END-IF
|
||||
.
|
||||
|
||||
END PROGRAM RRDSTest.
|
||||
Reference in New Issue
Block a user