7.52.4 EXCHANGE の使用例

以下は、一般的なEXCHANGEコマンドの例です。プログラムM@EXCHLのものではありません。

以下のようなRDMLプログラムが含まれる、FUNC1およびFUNC2という2つのファンクションについて考えます。

ファンクション:FUNC1

REQUEST    (#FIELD01 #FIELD02)
INSERT     FIELDS(#FIELD01 #FIELD02) TO_FILE(FILE01)
 

ファンクション:FUNC2

REQUEST    (#FIELD01 #FIELD02 #FIELD03 #FIELD04)
INSERT     FIELDS(#FIELD01 #FIELD02 #FIELD03 #FIELD04) TO_FILE(FILE02)
 

FUNC1に以下のコマンドを(最後のコマンドとして)追加し、再コンパイルします。

EXCHANGE   FIELDS(#FIELD01 #FIELD02)
 

この場合、ユーザーがファンクションFUNC1、ファンクションFUNC2の順に使用すると、FUNC2のREQUEST画面のフィールド#FIELD01および#FIELD02に、ファンクションFUNC1でユーザーが入力した値が「デフォルトで入り」ます。

このような操作を行うために、FUNC2を再コンパイルする必要はありません。ファンクションが呼び出されるたびに、交換リストが検索されることを覚えておいてください。フィールド#FIELD01および#FIELD02は、交換リストに配置された直後にファンクションFUNC2に「マッピング」されます。

さらに上記のEXCHANGEコマンドをFUNC2に追加し、FUNC2を再コンパイルすると、以下のようになります。

FUNC1の後にFUNC2が呼び出されるたびに、FUNC2のREQUEST画面の#FIELD01および#FIELD02に、FUNC1でユーザーが入力した値がデフォルトで入ります。

FUNC2の後にFUNC1が呼び出されるたびに、FUNC1のREQUEST画面の#FIELD01および#FIELD02に、FUNC2でユーザーが入力した値がデフォルトで入ります。

プロセス・メニューからFUNC1が繰り返し呼び出されると、#FIELD01および#FIELD02に、前の呼び出し時に入力された値がデフォルトで入ります。

すなわち、FUNC1はそれ自体と情報を交換していることになります。

FUNC1が初めて呼び出されたときは(FUNC2がまだ使用されていないとする)、交換リストは空です。この場合、#FIELD01および#FIELD02には、データ・ディクショナリまたはDEFINEコマンドでこれらのフィールドに指定されたデフォルト値が入ります。