7.98.2 POINT についてのコメント/警告

      POINT FILE(XXXXX) TO_FILE(XXXXX) TO_LIBRARY(*LIBL)
           TO_MEMBER(*FIRST)

すなわち、デフォルトでは、ファイルはコーディングされた名前と同じ名前で開かれます。このとき、ライブラリ・リストでファイルが検索され、そのファイル内の最初のメンバーへのアクセスが行われます。

例えば、以下のコマンドは2番目のFETCHで失敗します。

          POINT FILE(CUSTMST) TO_MEMBER(CURRENT)
          FETCH FIELDS(#NAME) FROM_FILE(CUSTMST) WITH_KEY(#CUSTNO)
          POINT FILE(CUSTMST) TO_MEMBER(ARCHIVE)
          FETCH FIELDS(#NAME) FROM_FILE(CUSTMST) WITH_KEY(#CUSTNO)

I/Oモジュールは異常終了し、メンバーCURRENTが開いている状態でメンバーARCHIVEに対してI/O要求が行われたことを示すエラーが発行されます。 

正しくは、以下のように指定します。 

          POINT FILE(CUSTMST) TO_MEMBER(CURRENT)
          FETCH FIELDS(#NAME) FROM_FILE(CUSTMST) WITH_KEY(#CUSTNO)
          CLOSE FILE(CUSTMST)
          POINT FILE(CUSTMST) TO_MEMBER(ARCHIVE)
         FETCH FIELDS(#NAME) FROM_FILE(CUSTMST) WITH_KEY(#CUSTNO)

複数メンバー財務システムで使用されるすべてのRDMLプログラムの先頭部分で一般的に見られる以下のコーディングの例について考えます。 

          POINT FILE(GLMAST) TO_MEMBER(*COMPANY_MBR)
          POINT FILE(SUMAST) TO_MEMBER(*COMPANY_MBR)
          POINT FILE(FTMAST) TO_MEMBER(*COMPANY_MBR)

同じ機能を使用して、使用するライブラリの名前を決定することができます。例えば、PRODUCTION、TESTING1、およびTESTING2というまったく同じ3つデータ・ライブラリを使用するシステムでは、すべてのRDMLプログラムの先頭部分に以下のようにコーディングします。 

          POINT FILE(GLMAST) TO_LIBRARY(*DATA_LIBRARY)
          POINT FILE(SUMAST) TO_LIBRARY(*DATA_LIBRARY)
          POINT FILE(FTMAST) TO_LIBRARY(*DATA_LIBRARY)

システム変数"*DATA_LIBRARY"を処理するプログラムは、ユーザー・プロファイルまたはその他の識別子から必要なライブラリ名を導き出します。