feat: add benchmark-programs — 58 telecom COBOL test programs
作为子目录纳入系统,与核心测试管道协同 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,154 @@
|
||||
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.
|
||||
Reference in New Issue
Block a user