FILE 属性は、対応する名前がファイル定数またはファイル変数であることを指定します。
|
ファイル定数に、いずれかのファイル記述属性が付いていると、そのファイル定数には FILE 属性が暗黙に付けられます。 ある名前を、入出力ステートメントの FILE オプションに書くか、または任意の入出力条件に対する ON ステートメント内に書けば、その名前をファイル定数としてコンテキスト上から宣言することができます。
PL/I プログラムで処理するデータ・セットは、 それぞれファイル定数に関連づけられていなければなりません。
それぞれのファイル定数の個々の特性は、ファイル記述属性によって記述されます。 これらの属性は、代替属性と追加属性の 2 つのカテゴリーに分類されます。
代替 属性とは、属性のグループ内から選択される属性です。 あるグループ内の択一属性の 1 つが明示的にも暗黙的にも宣言されておらず、しかもそのグループ内の属性が必須である場合には、デフォルトの属性が使用されます。
表 29 では、PL/I の代替ファイル属性をリストしています。
|
グループ・ タイプ |
代替属性 |
デフォルトの属性 |
|---|---|---|
|
使用法 |
STREAM または RECORD |
STREAM |
|
関数 |
INPUT または OUTPUT または UPDATE |
INPUT |
|
アクセス |
SEQUENTIAL または DIRECT |
SEQUENTIAL |
|
バッファ リング |
BUFFERED または UNBUFFERED |
BUFFERED (SEQUENTIAL ファイルの場合) UNBUFFERED (DIRECT ファイルの場合) |
|
有効範囲 |
EXTERNAL または INTERNAL |
EXTERNAL |
追加 属性とは、明示的に宣言しなければならない属性、または明 示的に宣言された別の属性によって暗黙に定義される属性です。 追加属性には、ENVIRONMENT、 KEYED および PRINT があります。 追加属性 KEYED は、DIRECT 属性によって暗黙に定義されます。 追加属性 PRINT は、出力ファイル名 SYSPRINT によって暗黙に定義することができます。
表 30 は、それぞれのデータ伝送タイプに適用される 属性を示したものです。
| 伝送のタイプ | 属性 |
|---|---|
| ストリーム指向 | ENVIRONMENT |
| INPUT および OUTPUT | |
| STREAM | |
| レコード単位 | BUFFERED および UNBUFFERED |
| DIRECT および SEQUENTIAL | |
| ENVIRONMENT | |
| INPUT、OUTPUT、および UPDATE | |
| KEYED | |
| RECORD |
表 31 には、ファイル属性の正しい組み合わせが示されています。
|
ファイル・ タイプ |
S T R E A M |
RECORD |
凡例:
|
||||
|---|---|---|---|---|---|---|---|
|
SEQUENTIAL |
DIRECT |
||||||
|
データ・ セットの 編成 |
C o n s e c u t i v e |
C o n s e c u t i v e |
R e l a t i v e |
I n d e x e d |
R e l a t i v e |
I n d e x e d |
|
|
ファイル属性 |
暗黙指定属性 |
||||||
有効範囲については、宣言の有効範囲で説明されています。
ファイル定数に、この章で説明しているいずれかのファイル記述属性が付いていると、そのファイル 定数には FILE 属性が暗黙に付けられます。 ある名前を、入出力ステートメントの FILE オプションに書くか、または任意の入出力条件に対する ON ステートメント内に書けば、その名前をファイル定数としてコンテキスト上から宣言することができます。
次の例では、名前 Master は、ファイル定数として宣言されています。
declare Master file;
ファイル変数は、FILE 属性と VARIABLE 属性を持ちますが、 どのファイル定数記述属性も持つことはできません。 ファイル変数には、ファイル定数を割り当てることができます。 割り当て後、ファイル変数を参照することは、割り当てられたファイル定数を参照することと同じになります。
レコード単位の伝送ステートメントを使用して、データ・セットのファイル変数の値を伝送することができます。 伝送後は、そのデータ・セットのファイル変数の値は有効でないことがあります。
VARIABLE 属性は、VARIABLE 属性で説明されている環境において 暗黙に定義されます。
次の例に示す宣言 Account はファイル変数として宣言され、 Acct1 と Acct2 は、ファイル定数として宣言されています。 このあと、これらのファイル定数をこのファイル変数に割り当てることができます。
declare Account file variable,
Acct1 file,
Acc2 file;
構文については、VARIABLE 属性を参照してください。
ファイル参照は、ファイル定数、ファイル変数、または FILE 属性を持つ値を戻す関数参照のいずれかです。 ファイル参照は、次のように使用することができます。
ファイル定数の値を表すファイル変数を利用して、そのファイル定数用の ON ユニットを設定できます (ファイル変数のための ON ユニットを参照してください)。 次の例では、L1 と L2 のラベルが付いている 2 つのステートメントは、 同じファイルに対してヌルの ON ユニットを指定しています。
dcl F file,
G file variable;
G=F;
L1: on endfile(G);
L2: on endfile(F);