ファイル名マッピング

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

このトピックで使用する「環境変数」には、外部ファイル マッパーを通して有効化された Micro Focus の拡張環境変数も含まれます (「外部ファイル マッパー (Mfextmap)」セクションを参照)。

プログラムを実行する前に、オペレーティング システムの 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