ファイル入出力用の resourceAssociation 変数
プログラムが入出力操作でレコードを使用する場合、EGL は、レコード固有の recordName.resourceAssociation 変数に、そのレコードを保持する物理ファイルの名前が含まれているものと想定します (その変数が特定タイプのファイルをサポートしている場合)。
この変数は、生成時に使用される ResourceAssociation パーツに従って EGL により初期化されます。詳しくは、リソース関連パーツを参照してください。 入出力操作のオブジェクトは、異なる値を recordName.resourceAssociation 変数に配置することによって、実行時に変更できます。
大抵の場合、構文 recordName.resourceAssociation を使用する必要があります。以下のそれぞれの場合のように、EGL がユーザーの意図したレコードを判別できる場合は、recordName 部分を指定する必要はありません。
- 入出力は、プログラム内の 1 つのレコードに対してのみ実行される。
- resourceAssociation は、1 つのレコードに対してのみ入出力を実行する関数で使用される。
- I/O はプログラム内の複数のレコードに対して実行されるが、レコードがすべて同じファイル名になる。 この場合、I/O 文として表示される最初のレコードは暗黙の修飾子として使用される。
- プリミティブ型
- CHAR
- データ長
- Java™ 生成およびデバッグの場合は 300 文字、COBOL 生成の場合は 65 文字
- 複数のセグメントにわたって保存されるかどうか
- はい
定義に関する考慮事項
recordName.resourceAssociation に移す値は、プログラムの生成時に指定したシステムとファイル・タイプに有効なシステム・リソース名でなければなりません。 同じファイル名を指定したレコードが複数存在する場合に そのファイル名を持ついずれかのレコードで resourceAssociation を変更すると、 プログラム内にあり同じファイル名を持つすべてのレコードで resourceAssociation の値が変更されます。
- resourceAssociation を修飾するレコードと同じ EGL ファイル名を持つレコードに対して入出力オプションが実行された場合。
- レコード変数が変更された場合。
resourceAssociation の現行設定に 関連付けられたファイルを閉じるには、close 文を使用します。 実行単位が終了するか、またはセグメント化された converse が発生すると、開いているすべての ファイルが EGL により自動で閉じられます。
COBOL 環境の場合、EGL は resourceAssociation の内容を、ファイルへのアクセスに使用する前に大文字に変換します。ただし、resourceAssociationに配置する値は、比較目的のために未変更のまま残されます。
プログラム間でのファイル共用
複数のプログラムがシステム・リソースを共用する場合は、各プログラムが同じリソースを参照する resourceAssociation を設定する必要があります。 同じ実行単位内の 2 つのプログラムで同じ論理ファイルがアクセスされる場合は、 プログラムの生成時に各プログラムで resourceAssociation を同じシステム・リソース名に設定して、ランタイムに両方のプログラムで同じシステム・リソースがアクセスされるようにする必要があります。
2 つのプログラムで同じ EGL ファイル名を使用する場合は、レコード固有の resourceAssociation 変数に同じ値が含まれていなければなりません。それ以外の場合は、新しいシステム・リソースがオープンするときに、以前にオープンされていたシステム・リソースがクローズされます。
- 生成時に設定する場合
- 同じ実行単位内の 2 つのプログラムで同じ論理ファイルがアクセスされる場合は、 生成時にその論理ファイルに対して同じシステム・リソース名を指定し、 ランタイムに両方のプログラムで同じ物理ファイル物理ファイルがアクセスされるようにします。
- ランタイムに設定する場合
- recordName.resourceAssociation を使用する場合は、 ファイルにアクセスする各プログラムに、 そのファイルの resourceAssociation を設定する必要があります。同じ実行単位内の 2 つのプログラムで同じ論理ファイルがアクセスされる場合は、 各プログラムで resourceAssociation を同じシステム・リソース名に設定して、 ランタイムに両方のプログラムで同じ物理ファイル物理ファイルがアクセスされるようにする必要があります。
WebSphere MQ レコード
WebSphere® MQ レコードのシステム・リソース名は、キュー・マネージャー名とキュー名を定義します。以下の形式で名前を指定します。
queueManagerName:queueName
- queueManagerName
- キュー・マネージャーの名前
- queueName
- キューの名前
表示されているように、複数の名前はコロンで区切ります。ただし、queueManagerName とコロンは省略できます。システム・リソース名は、レコード固有の resourceAssociation フィールドで初期値であり、 レコードに関連付けられているデフォルトのキューを識別します。 詳しくは、WebSphere MQ メッセージ・キュー・アクセスを参照してください。
互換性
| プラットフォーム | 問題 |
|---|---|
| CICS® for z/OS® |
|
| IMS™ BMP | IMS BMP では、z/OS バッチでサポートされるファイル・タイプに加え、IMS/VS でサポートされるものと同じファイル・タイプをサポートします。 |
| IMS/VS |
|
| iSeries COBOL | fileTypeは、seq (順次) または vsam でなければなりません。値は、以下の方法のいずれかで、resourceAssociation に移動できます。
resourceAssociation の値を変更すると、iSeries OVRDBF コマンドは以下のように機能します。
resourceAssociation に設定される値は、その呼び出しレベルから伝搬し、すべての従属呼び出しレベルに変更されます。そのファイルが以前にプログラムによって開かれていた場合、その値は伝搬されません。 |
| MQSeries | WebSphere MQ レコードのシステム・リソース名は、キュー・マネージャー名とキュー名を定義します。以下のフォーマットを使用して、名前を指定します。
表示されているように、複数の名前はコロンで区切ります。ただし、queueManagerName とコロンは省略できます。システム・リソース名は、レコード固有の resourceAssociation フィールドで初期値として使用され、 レコードに関連付けられているデフォルトのキューを識別します。 |
| z/OS バッチ |
|
例
以下に、resourceAssociation 変数へのファイルの代入例を示します。
if (process == 1)
myrec.resourceAssociation = "myFile.txt";
else
myrec.resourceAssociation = "myFile02.txt";
end