6.2.3 データ名指定
データ名指定は,SELECT句で指定したファイル名にASSIGN句でデータ名を割り当て,このデータ名に物理ファイル名を転記して,物理ファイルを割り当てる方法です。
データ名指定で物理ファイルを割り当てる場合のCOBOLプログラムの記述形式を次に示します。
- 形式(COBOLプログラム)
SELECT 〔OPTIONAL〕 ファイル名 ASSIGN TO データ名
- 構文規則
-
-
データ名に指定する物理ファイル名は,ルートからの絶対パス名を指定します。このファイル名は,ファイルシステムの規則に従って指定する必要があります。
-
ディレクトリ名,ファイル名にNULL文字(X'00')および半角空白文字(X'20')を含んではなりません。NULL文字または半角空白文字を含んだディレクトリやファイル名を指定した場合,NULL文字または半角空白文字の直前までの文字列が有効となり,以降の文字列は無視されます。
-
- 一般規則
-
-
次の場合,データ名で指定した物理ファイルがなければ,指定した名称の物理ファイルが作成されます。
- (物理ファイルが作成される場合)
-
-
ファイルをOUTPUTモードで開いたとき
-
SELECT句のOPTIONAL指定のあるファイルをI-OまたはEXTENDモードで開いたとき
このとき,SELECT句にOPTIONAL指定がある場合は,入出力状態に05が設定されます。
-
-
ファイルが作成される場所は,データ名に指定した物理ファイル名の絶対パスに従います。ただし,指定した物理ファイル名中のディレクトリ名に相当するディレクトリがないと,物理ファイルは作成されません。
-
データ名の値によって指定されるファイル名が有効となるかどうかは,ファイルシステムに依存します。
-
ファイル名が絶対パス名でない場合は,OSの環境設定に従います。
-
物理ファイル名は,ファイルを開く前に設定する必要があります。また,ファイルを閉じる前に物理ファイル名を変更した場合,動作は保証しません。
-
ファイルを標準入力(stdin)から読み込んだり,標準出力(stdout)または標準エラー出力(stderr)へ書き出したりしたい場合は,データ名にstdin,stdout,またはstderrを指定します。ただし,索引編成ファイル,相対編成ファイル,順編成の行制御のない可変長ファイルには,stdin,stdout,およびstderrを指定できません。また,順編成の可変長ファイルには,stdinを指定できません。指定した場合,実行時にエラーとなります。
-
標準入出力ファイルを扱う場合,COBOLはすでに開かれているものとして処理します。
-
標準入力(stdin),標準出力(stdout),および標準エラー出力(stderr)を指定する場合は,英小文字で指定してください。「STDIN」のように英大文字で指定した場合,物理ファイル名として扱われます。
-
- 入出力状態の値とファイル自動生成規則
-
定数指定の場合と同じです。詳細は,「6.2.1 定数指定」の「入出力状態の値とファイル自動生成規則(定数指定の場合)」を参照してください。
- COBOLプログラムの記述例
-
プログラム内で使用するファイル名"FILE-1"を,"/dir"ディレクトリに格納されている"file.dat"ファイルに,データ名指定で割り当てる例を,次に示します。
: ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FILE-1 ASSIGN TO FILE-NAME. : DATA DIVISION. WORKING-STORAGE SECTION. 01 FILE-NAME PIC X(60). : PROCEDURE DIVISION. MOVE '/dir/file.dat' TO FILE-NAME. :