7.6.3 CALLの使用例
例1:ライブラリPRODLIB内のINVOICEというプログラムを呼び出し、請求書番号および照会日の2つのパラメータをリテラルとして渡します。
CALL PGM(PRODLIB/INVOICE) PARM('INV123' '010187')
例2:フィールド#BATCH、#ORDER、および現在の日付(システム変数*DATEから取得)を渡してプログラムPUTBATCHを呼び出します。
CALL PGM(PUTBATCH) PARM(#BATCH #ORDER *DATE)
例3:LANSAのプロセスORDERSを呼び出し、プロセスのメイン・メニューを表示するよう要求して、ユーザーが目的のファンクションを選択できるようにします。ユーザーが[メニュー]キーを押してプロセスORDERSを終了した場合、次のRDMLコマンドでこのファンクションの処理を続行します。
CALL PROCESS(ORDERS) FUNCTION(*MENU) MENU_USED(*NEXT)
例4:LANSAのプロセスORDERSを呼び出し、プロセスのメイン・メニューを表示せずにファンクションHEADERを直接呼び出すよう要求します。ユーザーが[メニュー]または[終了]キーを押してファンクションHEADERを終了した場合、次のRDMLコマンドでこのファンクションの処理を続行します。
CALL PROCESS(ORDERS) FUNCTION(HEADER)
EXIT_USED(*NEXT) MENU_USED(*NEXT)
例5:例4と同じ操作を実行しますが、ファンクションHEADERを直接呼び出します。
CALL PROCESS(*DIRECT) FUNCTION(HEADER)
EXIT_USED(*NEXT) MENU_USED(*NEXT)
例6:データ構造DATAFILEをファンクション(ORDER)に渡します。
これを行うには、DATAFILEというファイルをLANSAに定義する必要があります。このファイルの実フィールドは、データ構造として別のファンクションに渡すことができます。このデータ構造の末尾にはダミー・フィールドがあるため、データ構造内にフィールドが追加されるたびに、データ構造を受け取る各ファンクションを再コンパイルする必要がありません。(データ構造内で既存のフィールドの長さ、位置、またはタイプが変更されない限り)データ構造の長さが一定であれば、呼び出されるファンクションの再コンパイルは必要ありません。
CALL PROCESS(*DIRECT) FUNCTION(ORDER) PASS_DS(DATAFILE)
例7:作業リスト#ORDLINEをファンクション(ORDER)に渡します。
CALL PROCESS(*DIRECT) FUNCTION(ORDER) PASS_LST(#ORDLINE)
DEF_LIST NAME(#ORDLINE) FIELDS(#ORDLIN #PRODUCT #QUANTITY #PRICE) TYPE(*WORKING)
これにより、作業リスト#ORDLINEの内容をファンクションORDERから参照できるようになります。
例8:WEBROUTINE ORDERを呼び出します。
CALL WEBROUTINE(ORDER)
ORDER WEBROUTINEでFOR(*INPUT)が指定されたすべてのフィールドとリストの値が渡されます。
例9:ORDERS WAMでWEBROUTINE ORDERを呼び出します。
CALL WEBROUTINE(#ORDERS.ORDER)
ORDER WEBROUTINEでFOR(*INPUT)が指定されたすべてのフィールドのリストの値が渡されます。
例10:WEBROUTINEの名前を指定してフィールドから呼び出します。
#WEBRTN := 'ORDERS.ORDER'
CALL WEBROUTINE(*EVALUATE #WEBRTN)