プログラムが入出力操作でレコードを使用する場合、EGL は、レコード固有の recordName.resourceAssociation 変数に、そのレコードを保持する物理ファイルの名前が含まれているものと想定します (その変数が特定タイプのファイルをサポートしている場合)。
この変数は、生成時に使用される ResourceAssociation パーツに従って EGL により初期化されます。詳しくは、リソース関連パーツを参照してください。 入出力操作のオブジェクトは、異なる値を recordName.resourceAssociation 変数に配置することによって、実行時に変更できます。
大抵の場合、構文 recordName.resourceAssociation を使用する必要があります。以下のそれぞれの場合のように、EGL がユーザーの意図したレコードを判別できる場合は、recordName 部分を指定する必要はありません。
recordName.resourceAssociation に移す値は、プログラムの生成時に指定したシステムとファイル・タイプに有効なシステム・リソース名でなければなりません。 同じファイル名を指定したレコードが複数存在する場合に そのファイル名を持ついずれかのレコードで resourceAssociation を変更すると、 プログラム内にあり同じファイル名を持つすべてのレコードで resourceAssociation の値が変更されます。
resourceAssociation の現行設定に 関連付けられたファイルを閉じるには、close 文を使用します。 実行単位が終了するか、またはセグメント化された converse が発生すると、開いているすべての ファイルが EGL により自動で閉じられます。
COBOL 環境の場合、EGL は resourceAssociation の内容を、ファイルへのアクセスに使用する前に大文字に変換します。ただし、resourceAssociationに配置する値は、比較目的のために未変更のまま残されます。
複数のプログラムがシステム・リソースを共用する場合は、各プログラムが同じリソースを参照する resourceAssociation を設定する必要があります。 同じ実行単位内の 2 つのプログラムで同じ論理ファイルがアクセスされる場合は、 プログラムの生成時に各プログラムで resourceAssociation を同じシステム・リソース名に設定して、ランタイムに両方のプログラムで同じシステム・リソースがアクセスされるようにする必要があります。
2 つのプログラムで同じ EGL ファイル名を使用する場合は、レコード固有の resourceAssociation 変数に同じ値が含まれていなければなりません。それ以外の場合は、新しいシステム・リソースがオープンするときに、以前にオープンされていたシステム・リソースがクローズされます。
WebSphere® MQ レコードのシステム・リソース名は、キュー・マネージャー名とキュー名を定義します。以下の形式で名前を指定します。
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