COBOL2002 ユーザーズガイド

[目次][用語][索引][前へ][次へ]

6.2.1 定数指定

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

形式
SELECT 〔OPTIONAL〕 ファイル名 ASSIGN TO '物理ファイル名'

構文規則
  • 物理ファイル名は,引用符(')で囲んで指定します。
  • 物理ファイル名は,ドライブ名からの絶対パス名を指定します。このファイル名は,ファイルシステムの規則に従って指定する必要があります。
  • フォルダ名,ファイル名にNULL文字(X'00')を含んではなりません。NULL文字を含んだフォルダ名やファイル名を指定した場合,NULL文字の直前までの文字列が有効となり,以降の文字列は無視されます。

一般規則
  • 次の場合,定数で指定した物理ファイルがなければ,指定した名称の物理ファイルが作成されます。
    (物理ファイルが作成される場合)
  1. ファイルをOUTPUTモードで開いたとき
  2. SELECT句のOPTIONAL指定のあるファイルをI-OまたはEXTENDモードで開いたとき
    このとき,SELECT句にOPTIONAL指定がある場合は,入出力状態に05が設定されます。
  • ファイルが作成される場所は,定数に指定した物理ファイル名の絶対パスに従います。ただし,指定した物理ファイル名中のフォルダ名に相当するフォルダがないと,物理ファイルは作成されません。
  • 定数によって指定されるファイル名が有効となるかどうかは,ファイルシステムに依存します。
  • ドライブ名を省略した場合,およびファイル名が絶対パス名でない場合は,OSの環境設定に従います。
  • CUIモードのときにファイルを標準入力stdin)から読み込んだり,標準出力stdout)または標準エラー出力stderr)へ書き出したりしたい場合は,定数にstdin,stdout,またはstderrを指定します。ただし,索引編成ファイル,相対編成ファイル,順編成の行制御のない可変長ファイルには,stdin,stdout,およびstderrを指定できません。また,順編成の可変長ファイルには,stdinを指定できません。指定した場合,実行時にエラーとなります。
  • CUIモードのときに標準入出力ファイルを扱う場合,COBOLはすでに開かれているものとして処理します。
  • GUIモードの場合で,定数にstdin,stdout,またはstderrを指定したとき,これらは物理ファイル名とみなされます。
  • 標準入力(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"を,Cドライブの"DIR"フォルダに格納されている"FILE1.FIL"ファイルに割り当てる例を,次に示します。
       
       SELECT FILE-1 ASSIGN TO 'C:\DIR\FILE1.FIL'