ファイルと入出力装置との関連付け

ファイルは、入出力として使用される装置とプログラムとの接続リンクとして使用されます。 実際に装置と関連付けることは、ファイルをオープンする時点で行われます。 このタイプの入出力制御を使用すると、プログラムを変更することなく、 そのプログラムで使用されているファイル属性 (および、場合によっては装置) を変更できます。

ILE COBOL 言語では、ファイル制御記入項目の ASSIGN 文節の ASSIGNMENT-NAME 項目に指定されているファイル名を使用してファイルを指します。 このファイル名は、次のようにシステム・ファイル記述を指します。

テキストの図、下記

ASSIGN 文節の ILE COBOL 装置名は、選択したファイルで処理できる ILE COBOL 機能を定義します。 コンパイル時には、特定の ILE COBOL 機能は特定の ILE COBOL 装置タイプに限り有効です。 この点で、ILE COBOL は装置依存です。 装置依存の例を次に示します。

たとえば、ILE COBOL プログラムの中でファイル名 FILEY が FORMATFILE 装置と関連付けられる場合を考えてみます。 装置 FORMATFILE は独立装置タイプです。 したがって、有効な行制御やページ制御の仕様がないので、FORMATFILE ファイルの WRITE ステートメントに ADVANCING 句を指定することはできません。 プログラムが実行されると、実際の入出力装置が FILEY の記述中に指定されます。 たとえばプリンターの場合は、次のようにデフォルトかまたは DDS で定義されている行制御およびページ制御しか使用できません。

テキストの図、下記

CL コマンドを使用することによって、 指定されているファイル記述のパラメーターを指定変更するか、 あるいはコンパイル時または実行時にファイルを宛先変更できます。 ファイルを宛先変更すると、次のように、コンパイル時にあるファイルを指定し、 実行時には別のファイルを指定することができます。

テキストの図、下記

上記の例では、ディスケット・ファイル指定変更 (OVRDKTF) コマンドを使用することにより、 コンパイル時に指定されたのとまったく異なる装置ファイルを使用してプログラムを実行できます。

注:
FORMATFILE 装置を入力に使用することはできません。 入力できる装置 (DISKETTE 装置など) から FORMATFILE 装置に入出力を指定変更して入力操作をしようとすると、 予期しない結果になることがあります。

ファイル指定変更がすべて有効なわけではありません。 実行時に、処理されるファイルに対して ILE COBOL プログラムの中の仕様が有効かどうかを確認する検査が行われます。 ILE COBOL プログラムがファイル制御ブロックおよび I/O 要求で渡す仕様が誤っていると、その I/O 操作は失敗します。 プログラムに装置指定が含まれていても、オペレーティング・システムでファイルの宛先変更がなされる可能性があります。 たとえば、ILE COBOL 装置名が PRINTER で、プログラムが実際に使用するファイルがプリンターでない場合、 オペレーティング・システムは ILE COBOL の印刷行送りとスキップの仕様を無視します。

オペレーティング・システムで許されない、 ファイルが使用できなくなることもある、別のファイルの宛先変更もあります。 たとえば、ILE COBOL 装置名が DATABASE または DISK で、プログラムにキー順 READ 操作が指定されていて、 プログラムが実際に使用するファイルがディスク・ファイルまたはデータベース・ファイルでない場合、 そのファイルは使用できなくなります。

iSeries システムには入出力スプール機能があります。 個々の iSeries ファイル記述には、実行時にそのファイルにスプールが使用されたかどうかを判別するためのスプール属性があります。 ILE COBOL プログラムは、スプールが使用されたことを認識しません。 ファイルを読み書きする相手となる実際の物理装置は、スプール読み取りプログラムまたはスプール書き込みプログラムによって判別されます。 スプーリングの詳細については、Web サイト http://www.ibm.com/eserver/iseries/infocenter にある iSeries Information Center の 「データベース」カテゴリーを参照してください。