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