POST (転記)

自由形式構文 POST{(E) } {プログラム装置 } ファイル名
コード 演算項目 1 演算項目 2 結果フィールド 標識
POST (E)   ファイル名 INFDS 名 _ ER _
POST 命令は、情報を INFDS (ファイル情報データ構造) に入れます。 この情報には次のものが含まれます。
  • ファイルに関する RPG I/O に固有のファイル・フィードバック情報
  • ファイルのオープン・フィードバック情報
  • ファイルの入出力フィードバック情報および装置従属フィードバック情報 または属性入手情報

プログラム装置 オペランドにはプログラム装置名を指定して、その特定のプログラム装置についての情報を入手します。 プログラム装置を指定する場合には、ファイルはワークステーション・ファイルとして定義しなければなりません。 プログラム装置 が指定されている場合は、INFDS にオープン・フィードバック情報に続いて属性入手情報が入ります。長さが 10 桁以下の文字フィールド、文字リテラル、または文字の名前のつい た定数のいずれかを使用してください。 プログラム装置 が指定されていない場合は、INFDS ではオープン・フィードバック情報に続いて入出力フィードバック情報と装置依存情報が入ります。

ファイル名 オペランドにはファイルの名前を指定します。このファイルの情報が、この ファイルに対応する INFDS に転記されます。

自由形式構文では必ずファイル名 を指定する必要があり、INFDS 名は指定できません。従来型の構文ではファイル名 も INFDS 名もどちらでも指定できます。
  • INFDS 名を指定しない場合、ファイル仕様書の中で INFDS キーワードを使用している、このファイルに関連した INFDS が使用されます。
  • 従来型の構文において INFDS 名を指定しなかった場合には、ファイル仕様書の INFDS キーワードに使用されたデータ構造名を結果フィールドに指定しなければなりません。 ファイル仕様書の対応するファイルから情報が転記されます。

POST 例外 (ファイル状況コードが 1000 より大きい) を 処理するために、命令コード拡張 'E' またはエラー標識 ER を指定できますが、 両方を指定することはできません。 エラー処理の詳細については、ファイル例外/エラーを 参照してください。

POST 命令コードが処理されない場合でも、プログラム内にこの命令コードが存在することによって RPG IV 言語の動作に影響を与えることが可能です。プログラム装置が指定されていない場合に POST 命令が存在していると、1 つまたは複数のファイルへのフィードバックの転送に影響することがあります。
  • グローバル・ファイル仕様書で定義されているファイルにプログラム装置が指定されていない場合に、POST 命令が存在していると、モジュール内のすべてのグローバル・ファイルの INFDS に対する、暗黙的なフィードバック転送に影響が生じます。
  • グローバル・ファイルにプログラム装置が指定されていない場合に POST 命令が存在していても、サブプロシージャーで定義されているファイルの INFDS に対する、暗黙的なフィードバック転送には何ら影響はありません。
  • ローカルで定義されているファイルにプログラム装置が指定されていない場合に POST 命令が存在していると、そのファイルの INFDS に対する暗黙的なフィードバック転送にのみ影響が生じます。 グローバル・ファイルや、そのサブプロシージャーで定義されている他のファイルについては、何ら影響はありません。
  • パラメーターとして渡されるファイルの INFDS への暗黙的なフィードバック転送が実行されるかどうかは、ファイルが定義されているモジュールによって決まります。 フィードバック情報が常にそのファイルの INFDS に転送されている場合、プログラム装置が指定されていない POST 命令が、ファイル・パラメーターに対して冗長に実行されてしまうことがあります。
  • 同じモジュール内の他のプロシージャーに、グローバル・ファイルがパラメーターとして渡され、そのプロシージャーによってパラメーターに対する POST 命令が実行された場合、その POST 命令はグローバル・ファイルに対する POST 命令とはみなされません。

通常 INFDS は、入出力命令または命令ブロックごとに更新されます。 ただし、POST 命令の存在によって、ファイルの INFDS へのフィードバック転送に影響が生じる場合には、そのファイルに対する POST 命令が処理されたときにのみ、ファイルの INFDS 内の入出力フィードバック情報域および装置従属フィードバック情報域が、RPG IV によって更新されます。 INFDS のファイル従属情報は、すべての入出力操作で 更新されます。複数メンバーの処理用にファイルをオープンしている場合には、INFDS のオー プン・フィードバック情報は、入力操作 (READ、READP、READE READPE) によっ て新しいメンバーがオープンされる時に更新されます。

DUMP はその情報を、INFDS からでなく、オープン・データ・パスから直接 検索するので、DUMP のファイル情報セクションは POST に依存しないことに注 意してください。

プログラムに POST 命令コードがないか、またはプログラム装置 を指定した POST 命令コードだけがある場合には、入出力フィードバックおよび装置従属フィードバック・セクションは、それぞれの入出力命令または命令ブロックごとに更新されます。RPG でレコードがブロック化されている場合には、INFDS の情報のほとんどは 最後に処理された完全なレコード・ブロックに有効となるだけです。 ブロック化された入力をデータベース・ファイルから実行する場合には、RPG は、最後に処理されたレコード・ブロックだけでなく、それぞれの読み取りで INFDS の相対レコード番号およびキー情報を更新します。 より正確な情報が必要な場合には、レコードのブロック化を使用しないでくだ さい。 レコード・ブロック化の詳細については、ファイル情報データ構造を 参照してください。入出力操作の後で毎回 フィードバック情報を必要としない場合には、フィードバック情報が必要な時に だけ POST 命令を使用してパフォーマンスを改善することができます。

POST 命令が処理される時には、対応するファイルがオープンされていなけ ればなりません。 POST 命令でプログラム装置を指定する場合には、そのファイ ルによって装置が入手されている必要はありません。

詳細については、ファイル命令を参照してください。