COBOL2002 ユーザーズガイド


6.2.3 データ名指定

データ名指定は,SELECT句で指定したファイル名にASSIGN句でデータ名を割り当て,このデータ名に物理ファイル名を転記して,物理ファイルを割り当てる方法です。

データ名指定で物理ファイルを割り当てる場合のCOBOLプログラムの記述形式を次に示します。

形式(COBOLプログラム)
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を指定できません。指定した場合,実行時にエラーとなります。

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

  • GUIモードの場合で,データ名にstdin,stdout,またはstderrを指定したとき,これらは物理ファイル名とみなされます。

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

入出力状態の値とファイル自動生成規則

定数指定の場合と同じです。詳細は,「6.2.1 定数指定」の「入出力状態の値とファイル自動生成規則(定数指定の場合)」を参照してください。

COBOLプログラムの記述例

プログラム内で使用するファイル名"FILE-1"を,Cドライブの"DIR"フォルダに格納されている"FILE1.FIL"ファイルに,データ名指定で割り当てる例を,次に示します。

           :
       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 'C:\DIR\FILE1.FIL' TO FILE-NAME.
           :