COBOL2002 使用の手引 手引編


6.2.1 定数指定

定数指定は,SELECT句で指定したファイル名に対し,ASSIGN句で物理ファイルを直接割り当てる方法です。

形式
SELECT 〔OPTIONAL〕 ファイル名 ASSIGN TO '物理ファイル名'
構文規則
  • 物理ファイル名は,引用符(')で囲んで指定します。

  • 物理ファイル名は,ルートからの絶対パス名を指定します。このファイル名は,ファイルシステムの規則に従って指定する必要があります。

  • ディレクトリ名,ファイル名にNULL文字(X'00')および半角空白文字(X'20')を含んではなりません。NULL文字または半角空白文字を含んだディレクトリやファイル名を指定した場合,NULL文字または半角空白文字の直前までの文字列が有効となり,以降の文字列は無視されます。

一般規則
  • 次の場合,定数で指定した物理ファイルがなければ,指定した名称の物理ファイルが作成されます。

(物理ファイルが作成される場合)
  1. ファイルをOUTPUTモードで開いたとき

  2. SELECT句のOPTIONAL指定のあるファイルをI-OまたはEXTENDモードで開いたとき

    このとき,SELECT句にOPTIONAL指定がある場合は,入出力状態に05が設定されます。

  • ファイルが作成される場所は,定数に指定した物理ファイル名の絶対パスに従います。ただし,指定した物理ファイル名中のディレクトリ名に相当するディレクトリがないと,物理ファイルは作成されません。

  • 定数によって指定されるファイル名が有効となるかどうかは,ファイルシステムに依存します。

  • ファイル名が絶対パス名でない場合は,OSの環境設定に従います。

  • ファイルを標準入力(stdin)から読み込んだり,標準出力(stdout)または標準エラー出力(stderr)へ書き出したりしたい場合は,定数にstdin,stdout,またはstderrを指定します。ただし,索引編成ファイル,相対編成ファイル,順編成の行制御のない可変長ファイルには,stdin,stdout,およびstderrを指定できません。また,順編成の可変長ファイルには,stdinを指定できません。指定した場合,実行時にエラーとなります。

  • 標準入出力ファイルを扱う場合,COBOLはすでに開かれているものとして処理します。

  • 標準入力(stdin),標準出力(stdout),および標準エラー出力(stderr)を指定する場合は,英小文字で指定してください。「STDIN」のように英大文字で指定した場合,物理ファイル名として扱われます。

入出力状態の値とファイル自動生成規則(定数指定の場合)

定数指定でファイルを割り当てた場合,ファイル入出力時の入出力状態の値,および物理ファイルが自動作成されるかどうかは,次の規則に従います。

OPENモード

OPTIONAL指定の有無

物理ファイルの状態

すでに存在する

存在しない

INPUT

なし

FS=00

FS=35

あり

FS=00

FS=05

自動作成されない

I-O

なし

FS=00

FS=35

あり

FS=00

FS=05

自動作成される※1

OUTPUT

なし

FS=00

再作成する※2

FS=00

自動作成される※1

EXTEND

なし

FS=00

FS=35

あり

FS=00

FS=05

自動作成される※1

(凡例)

FS=nn:FILE STATUS句を指定したときに,入出力状態にnnが設定されることを示す

注※1

自動作成される物理ファイル名は,SELECT句で指定した定数の名称となります。

注※2

再作成とは,ファイル中にデータレコードがない状態にすることです。

COBOLプログラムの記述例

プログラム内で使用するファイル名"FILE-1"を,"/DIR"ディレクトリに格納されている"FILE1.FIL"ファイルに割り当てる例を,次に示します。

       SELECT FILE-1 ASSIGN TO '/DIR/FILE1.FIL'