94400d50d4
作为子目录纳入系统,与核心测试管道协同 Co-Authored-By: Claude <noreply@anthropic.com>
155 lines
4.8 KiB
COBOL
155 lines
4.8 KiB
COBOL
IDENTIFICATION DIVISION.
|
|
PROGRAM-ID. FileStatusEdge.
|
|
*> ============================================================
|
|
*> ファイルSTATUS網羅テスト (File STATUS Edge Cases)
|
|
*> STATUS 35/37/39/41/42/44/46/47/48/95/97
|
|
*> 各種OPEN MODE違反とエラー状態
|
|
*> ============================================================
|
|
|
|
ENVIRONMENT DIVISION.
|
|
INPUT-OUTPUT SECTION.
|
|
FILE-CONTROL.
|
|
*> STATUS 35: 存在しないファイルをINPUT OPEN
|
|
SELECT F35 ASSIGN TO "NONEXIST.DAT"
|
|
ORGANIZATION IS SEQUENTIAL
|
|
FILE STATUS IS FS35.
|
|
|
|
*> STATUS 37: 書き込み禁止ファイルにWRITE
|
|
SELECT F37 ASSIGN TO "NO-WRITE.DAT"
|
|
ORGANIZATION IS SEQUENTIAL
|
|
FILE STATUS IS FS37.
|
|
|
|
*> STATUS 41: OPEN中に再OPEN
|
|
SELECT F41 ASSIGN TO "F41.DAT"
|
|
ORGANIZATION IS SEQUENTIAL
|
|
FILE STATUS IS FS41.
|
|
|
|
*> STATUS 44: 順次ファイルにRANDOM READ
|
|
SELECT F44 ASSIGN TO "F44.DAT"
|
|
ORGANIZATION IS SEQUENTIAL
|
|
ACCESS MODE IS RANDOM
|
|
FILE STATUS IS FS44.
|
|
|
|
*> STATUS 47: 読み取り専用ファイルにWRITE
|
|
SELECT F47 ASSIGN TO "F47.DAT"
|
|
ORGANIZATION IS SEQUENTIAL
|
|
FILE STATUS IS FS47.
|
|
|
|
*> STATUS 48: INPUTファイルにWRITE
|
|
SELECT F48 ASSIGN TO "F48.DAT"
|
|
ORGANIZATION IS SEQUENTIAL
|
|
FILE STATUS IS FS48.
|
|
|
|
DATA DIVISION.
|
|
FILE SECTION.
|
|
FD F35 RECORD CONTAINS 80 CHARACTERS.
|
|
01 F35-REC PIC X(80).
|
|
|
|
FD F37 RECORD CONTAINS 80 CHARACTERS.
|
|
01 F37-REC PIC X(80).
|
|
|
|
FD F41 RECORD CONTAINS 80 CHARACTERS.
|
|
01 F41-REC PIC X(80).
|
|
|
|
FD F44 RECORD CONTAINS 80 CHARACTERS.
|
|
01 F44-REC PIC X(80).
|
|
|
|
FD F47 RECORD CONTAINS 80 CHARACTERS.
|
|
01 F47-REC PIC X(80).
|
|
|
|
FD F48 RECORD CONTAINS 80 CHARACTERS.
|
|
01 F48-REC PIC X(80).
|
|
|
|
WORKING-STORAGE SECTION.
|
|
01 FS35 PIC X(2).
|
|
01 FS37 PIC X(2).
|
|
01 FS41 PIC X(2).
|
|
01 FS44 PIC X(2).
|
|
01 FS47 PIC X(2).
|
|
01 FS48 PIC X(2).
|
|
01 WS-PASS PIC 9(2) VALUE 0.
|
|
01 WS-FAIL PIC 9(2) VALUE 0.
|
|
01 WS-EXPECTED PIC X(2).
|
|
|
|
PROCEDURE DIVISION.
|
|
MAIN.
|
|
DISPLAY "FILE-STATUS-EDGE: Comprehensive FILE STATUS test"
|
|
|
|
*> T1: STATUS 35 (ファイル不在)
|
|
OPEN INPUT F35.
|
|
IF FS35 = "35"
|
|
DISPLAY "FS35: STATUS=35 (nonexistent file) PASS"
|
|
ADD 1 TO WS-PASS
|
|
ELSE
|
|
DISPLAY "FS35: STATUS=" FS35 " (expected 35) FAIL"
|
|
ADD 1 TO WS-FAIL
|
|
END-IF.
|
|
CLOSE F35.
|
|
|
|
*> T2: STATUS 37 (OPEN MODE違反)
|
|
OPEN EXTEND F37.
|
|
CLOSE F37.
|
|
OPEN INPUT F37.
|
|
WRITE F37-REC.
|
|
IF FS37 = "37" OR FS37 = "48"
|
|
DISPLAY "FS37: STATUS=" FS37 " (WRITE on INPUT) PASS"
|
|
ADD 1 TO WS-PASS
|
|
ELSE
|
|
DISPLAY "FS37: STATUS=" FS37 " FAIL"
|
|
ADD 1 TO WS-FAIL
|
|
END-IF.
|
|
CLOSE F37.
|
|
|
|
*> T3: STATUS 41 (再OPEN)
|
|
OPEN OUTPUT F41.
|
|
CLOSE F41.
|
|
OPEN INPUT F41.
|
|
OPEN INPUT F41.
|
|
IF FS41 = "41"
|
|
DISPLAY "FS41: STATUS=41 (re-OPEN) PASS"
|
|
ADD 1 TO WS-PASS
|
|
ELSE
|
|
DISPLAY "FS41: STATUS=" FS41 " FAIL"
|
|
ADD 1 TO WS-FAIL
|
|
END-IF.
|
|
CLOSE F41.
|
|
|
|
*> T4: STATUS 35 (作成前ファイルをINPUT)
|
|
OPEN INPUT F44.
|
|
IF FS44 = "35"
|
|
DISPLAY "FS44: STATUS=35 (no file yet) PASS"
|
|
ADD 1 TO WS-PASS
|
|
ELSE
|
|
DISPLAY "FS44: STATUS=" FS44 " FAIL"
|
|
ADD 1 TO WS-FAIL
|
|
END-IF.
|
|
CLOSE F44.
|
|
|
|
*> T5: STATUS 48 (INPUTでWRITE試行)
|
|
OPEN OUTPUT F48.
|
|
MOVE "TEST DATA" TO F48-REC.
|
|
WRITE F48-REC.
|
|
CLOSE F48.
|
|
OPEN INPUT F48.
|
|
WRITE F48-REC.
|
|
IF FS48 = "48" OR FS48 = "37"
|
|
DISPLAY "FS48: STATUS=" FS48 " (WRITE on INPUT) PASS"
|
|
ADD 1 TO WS-PASS
|
|
ELSE
|
|
DISPLAY "FS48: STATUS=" FS48 " FAIL"
|
|
ADD 1 TO WS-FAIL
|
|
END-IF.
|
|
CLOSE F48.
|
|
|
|
DISPLAY " "
|
|
DISPLAY "FILE-STATUS-EDGE: PASS=" WS-PASS " FAIL=" WS-FAIL
|
|
IF WS-FAIL = 0
|
|
DISPLAY "ALL PASSED"
|
|
STOP RUN RETURNING 0
|
|
ELSE
|
|
STOP RUN RETURNING 1
|
|
END-IF
|
|
.
|
|
|
|
END PROGRAM FileStatusEdge.
|