ファイル入出力用の resourceAssociation 変数

プログラムが入出力操作でレコードを使用する場合、EGL は、レコード固有の recordName.resourceAssociation 変数に、そのレコードを保持する物理ファイルの名前が含まれているものと想定します (その変数が特定タイプのファイルをサポートしている場合)。

この変数は、生成時に使用される ResourceAssociation パーツに従って EGL により初期化されます。詳しくは、リソース関連パーツを参照してください。 入出力操作のオブジェクトは、異なる値を recordName.resourceAssociation 変数に配置することによって、実行時に変更できます。

大抵の場合、構文 recordName.resourceAssociation を使用する必要があります。以下のそれぞれの場合のように、EGL がユーザーの意図したレコードを判別できる場合は、recordName 部分を指定する必要はありません。

resourceAssociation には、以下の特性があります。
プリミティブ型
CHAR
データ長
Java™ 生成およびデバッグの場合は 300 文字、COBOL 生成の場合は 65 文字
複数のセグメントにわたって保存されるかどうか
はい

定義に関する考慮事項

recordName.resourceAssociation に移す値は、プログラムの生成時に指定したシステムとファイル・タイプに有効なシステム・リソース名でなければなりません。 同じファイル名を指定したレコードが複数存在する場合に そのファイル名を持ついずれかのレコードで resourceAssociation を変更すると、 プログラム内にあり同じファイル名を持つすべてのレコードで resourceAssociation の値が変更されます。

resourceAssociation で識別されるシステム・リソースは、以下の状況で閉じられます。
  • resourceAssociation を修飾するレコードと同じ EGL ファイル名を持つレコードに対して入出力オプションが実行された場合。
  • レコード変数が変更された場合。

resourceAssociation の現行設定に 関連付けられたファイルを閉じるには、close 文を使用します。 実行単位が終了するか、またはセグメント化された converse が発生すると、開いているすべての ファイルが EGL により自動で閉じられます。

COBOL 環境の場合、EGL は resourceAssociation の内容を、ファイルへのアクセスに使用する前に大文字に変換します。ただし、resourceAssociationに配置する値は、比較目的のために未変更のまま残されます。

プログラム間でのファイル共用

複数のプログラムがシステム・リソースを共用する場合は、各プログラムが同じリソースを参照する resourceAssociation を設定する必要があります。 同じ実行単位内の 2 つのプログラムで同じ論理ファイルがアクセスされる場合は、 プログラムの生成時に各プログラムで resourceAssociation を同じシステム・リソース名に設定して、ランタイムに両方のプログラムで同じシステム・リソースがアクセスされるようにする必要があります。

2 つのプログラムで同じ EGL ファイル名を使用する場合は、レコード固有の resourceAssociation 変数に同じ値が含まれていなければなりません。それ以外の場合は、新しいシステム・リソースがオープンするときに、以前にオープンされていたシステム・リソースがクローズされます。

2 つのプログラムで確実に同じ値が使用されるようにするには、生成時または実行時にシステム・リソース名を設定します。
生成時に設定する場合
同じ実行単位内の 2 つのプログラムで同じ論理ファイルがアクセスされる場合は、 生成時にその論理ファイルに対して同じシステム・リソース名を指定し、 ランタイムに両方のプログラムで同じ物理ファイル物理ファイルがアクセスされるようにします。
ランタイムに設定する場合
recordName.resourceAssociation を使用する場合は、 ファイルにアクセスする各プログラムに、 そのファイルの resourceAssociation を設定する必要があります。同じ実行単位内の 2 つのプログラムで同じ論理ファイルがアクセスされる場合は、 各プログラムで resourceAssociation を同じシステム・リソース名に設定して、 ランタイムに両方のプログラムで同じ物理ファイル物理ファイルがアクセスされるようにする必要があります。

WebSphere MQ レコード

WebSphere® MQ レコードのシステム・リソース名は、キュー・マネージャー名とキュー名を定義します。以下の形式で名前を指定します。

  queueManagerName:queueName
queueManagerName
キュー・マネージャーの名前
queueName
キューの名前

表示されているように、複数の名前はコロンで区切ります。ただし、queueManagerName とコロンは省略できます。システム・リソース名は、レコード固有の resourceAssociation フィールドで初期値であり、 レコードに関連付けられているデフォルトのキューを識別します。 詳しくは、WebSphere MQ メッセージ・キュー・アクセスを参照してください。

互換性

プラットフォーム 問題
CICS® for z/OS®
SPOOL
この値は、シリアル・ファイルに関連付けられた JES SPOOL ファイルの入力または出力ファイル名です。
入力ファイル名: userid.classuserid パラメーターは、4 から 8 文字の外部書き出しプログラム名かアスタリスク (*) です。 外部書き出しプログラム名を使用する場合、CICS では、外部書き出しプログラム名の最初の 4 文字と、 ACF/VTAM に CICS 領域を認識させる CICS APPLID の最初の 4 文字が同じでなければなりません。 class パラメーターは、1 文字のスプール・クラスです。class はオプション・パラメーターで、デフォルトでは "A" になります。 最大名前サイズは 10 バイトです。詳しくは、CICS のカスタマイズ資料を参照してください。
出力ファイル名: nodeid.userid.classnodeid パラメーターは、1 から 8 文字のシステム・ノード ID かアスタリスク (*) です。 userID パラメーターは、1 から 8 文字のシステム・ユーザー ID かアスタリスク (*) です。 class パラメーターは、1 文字のスプール・クラスです。class はオプション・パラメーターで、デフォルトでは "A" になります。 class が指定されない場合は、userid はオプションになり、デフォルトで CICS ユーザー ID (sysVar.usrID に保存された値) が使用されます。 最大名前サイズは 19 バイトです。詳しくは、CICS のカスタマイズ資料を参照してください。
TEMPMAIN
この値は、相対ファイルまたはシリアル・ファイルに関連付けられたメイン一時記憶キューを示す 8 バイトのキュー名です。 EGL で使用するためにいくつかのキュー名が予約済みであり、これらのキュー名は、接頭部に「EZE」が付いています。
一時記憶キュー名をレコード固有変数 recordName.resourceAssociation に移動すると、 (そのキューがまだ存在していなければ) キューが動的に作成されます。複数のユーザーが、単一の一時記憶キュー・ファイルを同時に共用することはできません。CICS ENQ は、プログラム内で初めて参照されるファイルへのアクセスをシリアライズします。DEQ は、プログラムでファイルが閉じられるときに発行されます。
TEMPAUX
TEMPAUX は、補助一時記憶キューに使用される点を除いて TEMPMAIN に似ています。
TRANSIENT
シリアル・ファイルに関連付けられた一時データ・キューを表す 4 バイトの DCT 名。 一時データ・キュー名は、CICS に定義される必要があります。
VSAM
索引付きファイル、相対ファイル、またはシリアル・ファイルに関連付けられた VSAM ファイルを表す 8 バイトの FCT 名。
IMS™ BMP IMS BMP では、z/OS バッチでサポートされるファイル・タイプに加え、IMS/VS でサポートされるものと同じファイル・タイプをサポートします。
IMS/VS
MMSGQ
出力でのみサポートされています。値 (8 バイトの論理端末名またはトランザクション・コード) は IMS システムに対して定義され、複数セグメントのメッセージを受け入れるメッセージ・キューに関連付けられます。 生成時に使用される ResourceAssociation パーツでは、ファイル名が、変更可能な代替 PCB または変更可能な特別代替 PCB と関連付けられます。
resourceAssociation の値は大文字にはなりません。
SMSGQ
出力でのみサポートされています。値 (8 バイトの論理端末名またはトランザクション・コード) は IMS システムに対して定義され、単一セグメントのメッセージを受け入れるメッセージ・キューに関連付けられます。 生成時に使用される ResourceAssociation パーツでは、ファイル名が、変更可能な代替 PCB または変更可能な特別代替 PCB と関連付けられます。
resourceAssociation の値は大文字にはなりません。
iSeries® COBOL fileTypeは、seq (順次) または vsam でなければなりません。値は、以下の方法のいずれかで、resourceAssociation に移動できます。
LIB/FILE MEMBER
Library、File、および Member を明示的に指定します。
LIB/FILE
ファイル内の最初のメンバーが使用されます。
FILE MEMBER
*LIBL を使用してファイルを検索します。
FILE
*LIBL を使用してファイルを検索し、そのファイル内の最初のメンバーを使用します。
resourceAssociation の値を変更すると、iSeries OVRDBF コマンドは以下のように機能します。
  1. 古いファイルのクローズ
  2. 新規の値へのオーバーライドの実行
  3. 新規ファイルのオープン

resourceAssociation に設定される値は、その呼び出しレベルから伝搬し、すべての従属呼び出しレベルに変更されます。そのファイルが以前にプログラムによって開かれていた場合、その値は伝搬されません。

MQSeries

WebSphere MQ レコードのシステム・リソース名は、キュー・マネージャー名とキュー名を定義します。以下のフォーマットを使用して、名前を指定します。

  queueManagerName:queueName
queueManagerName
キュー・マネージャーの名前。
queueName
キューの名前。

表示されているように、複数の名前はコロンで区切ります。ただし、queueManagerName とコロンは省略できます。システム・リソース名は、レコード固有の resourceAssociation フィールドで初期値として使用され、 レコードに関連付けられているデフォルトのキューを識別します。

z/OS バッチ
GSAM
サポートされていません。
SEQ
サポートされていません。
SEQRS
この値は、シリアル・ファイルに関連付けられたシステム順次ファイルを示す、54 バイトのデータ・セット名または 8 バイトの DD 名です。 ファイルの resourceAssociation に値が設定されていない場合、 プログラムでは、最初に、論理ファイル名を DD 名として使用してデータ・セットが事前割り振りされているかどうかが確認されます。その他の場合、EGL では、生成時に指定されたシステム・リソース名を使用してそのファイルにアクセスします。 データ・セット名を resourceAssociation に移動すると、 リソースは MVS™ 監視プログラム呼び出し (SVC99) を使用して、関連したレコード・ファイル名に動的に割り振られます。割り振りは、DISP オプションが SHR に設定されている場合に行われるため、 データ・セットは、出力用に開かれるごとに再書き込みされます。
VSAM
サポートされていません。
VSAMRS
この値は、索引ファイル、相対ファイル、またはシリアル・ファイルに関連付けられた VSAM ファイルを示す、44 バイトのデータ・セット名または 8 バイトの DD 名です。 ファイルの resourceAssociation に値が設定されていない場合、 プログラムでは、論理ファイル名を DD 名として使用してデータ・セットが事前割り振りされているかどうかが確認されます。その他の場合、EGL では、生成時に指定されたシステム・リソース名を使用してそのファイルにアクセスします。 データ・セット名を resourceAssociation に移動すると、 リソースは MVS 監視プログラム呼び出し (SVC99) を使用して、関連したレコード・ファイル名に動的に割り振られます。割り振りは、DISP オプションが SHR に設定されている場合に行われるため、 データ・セットは、出力用に開かれるごとに書き込まれます。

以下に、resourceAssociation 変数へのファイルの代入例を示します。

  if (process == 1)
    myrec.resourceAssociation = "myFile.txt";
  else
    myrec.resourceAssociation = "myFile02.txt";
  end

フィードバック