Files
NB-076 94400d50d4 feat: add benchmark-programs — 58 telecom COBOL test programs
作为子目录纳入系统,与核心测试管道协同

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-25 09:53:21 +08:00

124 lines
4.0 KiB
COBOL

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.