ファイル名マッピング

この COBOL システムには、プログラムで ASSIGN 句を使用して指定したファイル名を別の名前にマップする方法が複数用意されているため、実行時に柔軟に対応できます。これらの方法では環境変数を使用します。

プログラムを実行する前に、オペレーティング システムの SET (Windows) または export (UNIX) コマンドを実行して、使用する環境変数に適切な値を指定する必要があります。次に例を示します。

set dir=d2

または

export dir=d2

ファイル ハンドラーにファイル名 (定数、データ項目の内容、または ASSIGN TO EXTERNAL 構文を使用した場合は外部参照として) が指定されている場合は、次のように実行されます。

  1. ファイル名の最初の要素、つまり最初の区切り文字 (\)(Windows) または (/)(UNIX) より前にあるすべてのテキストを分離します。ファイル名に区切り文字が含まれない場合はすべてのテキストを分離し、区切り文字がファイル名の先頭にある場合は何も分離しません。
  2. 最初の要素が 2 個のドル記号 ($$) で始まる (ファイルが Fileshare サーバー上にあることを示す) 場合、検索処理をその Fileshare サーバーに切り替え、次の要素に対してファイル名のマッピング処理を続行します。
  3. 先頭にドル記号 ($) があれば削除し、最初の要素の先頭に「dd_」という文字を追加して、この名前を持つ環境変数を検索します。
  4. この環境変数が見つからず、ASSIGN EXTERNAL 構文が使用されているか、要素名がドル記号で始まる場合、この要素と同じ名前 (ドル記号が先頭にある場合にはドル記号を除く) を持つ環境変数を検索します。
  5. 検索に失敗すると要素は変更されません。ただし、要素名がドル記号で始まり、ファイル名に 1 つ以上の区切り文字が含まれる場合を除きます。この場合は、最初の要素全体 (最初の区切り文字を含む) が名前から削除されます。

続いて、この処理はファイル名の次の要素にも行われ、名前のすべての要素が処理されるまで繰り返されます。この処理結果は、物理ファイルのファイル名と見なされます。

以下に例を示します。

Windows:
ASSIGN 句のファイル名 検索対象の環境変数 環境変数の内容 物理ファイルのファイル名
dir\file1 dd_dir d2 d2\file1
$dir\file1 dd_dir;dir d2\d4 d2\d4\file1
dir1\dir2\file1 dd_dir1 d4 d4\dir2\file1
$dir1\$dir2\file1 1 回目の繰り返し:dd_dir1;dir1、2 回目の繰り返し:dd_dir2;dir2 dd_dir1 または dir1: d2\d4 dd_dir2 または dir2: d3 d2\d4\d3\file1
file1 dd_file1 d2 d2
UNIX:
ASSIGN 句のファイル名 検索対象の環境変数 環境変数の内容 物理ファイルのファイル名
dir/file1 dd_dir d2 d2/file1
$dir/file1 dd_dir;dir d2/d4 d2/d4/file1
dir1/dir2/file1 dd_dir1 d4 d4/dir2/file1
$dir1/$dir2/file1 1 回目の繰り返し:dd_dir1;dir1、2 回目の繰り返し:dd_dir2;dir2 dd_dir1 または dir1: d2/d4 dd_dir2 または dir2: d3 d2/d4/d3/file1
file1 dd_file1 d2 d2