HANDLE_PROMPTファンクション
関連するプロンプタ フォーム(VLハンドラー)をフィールドの横に表示します。フィールドとプロンプタフォームは、「高度なプロンプト」で説明しているように特別なフィールド受け渡しエリアで指定します。
必要に応じて、追加情報を渡したり、プロンプタフォームから追加情報を取得したりできます。
構文
HANDLE_PROMPT(sArgument1 [, sArgument2] [, sArgument3]...)
パラメータ
SArgumentn | 省略可能。ユーザー定義のプロンプタが要求する可能性がある値が入った文字列。デフォルトでは、ユーザー定義のプロンプタは、5250画面のすべての名前付きフィールドに双方向でアクセスできます。 |
戻り値
なし
例
if ( HANDLE_PROMPT() ) return;
プロンプタフォームでのsArgument1、sArgument2などで渡される値へのアクセス
RAMPスクリプトにある次のようなファンクションは、
HANDLE_PROMPT("HELLO","THERE",123);
プロンプタフォームで次のようにアクセスされます。
Invoke Method(#Com_Owner.uGet5250Field) Name(UARG1) Value(#Arg1Value) ... returns "HELLO" in #Arg1Value.
Invoke Method(#Com_Owner.uGet5250Field) Name(UARG2) Value(#Arg2Value) ... returna "THERE" in #Arg2Value.
Invoke Method(#Com_Owner.uGet5250Field) Name(UARG3) Value(#Arg3Value) ... returns "123" as a string in #Arg3Value.
渡すことができる引数の数に制限はありません。
数値を渡すことができますが、数値はVLコンポーネントでは文字列で示されるので、再度数値に変換する必要があります。
渡されない引数を参照しても問題はありません。以下のコードがあります。
#Arg15Value := "TEST"
Invoke Method(#Com_Owner.uGet5250Field) Name(UARG15) Value(#Arg15Value)
このコードを実行すると#ARG15Valueは"TEST"のまま残りますが、以下のコードを実行することによって値が渡されたかどうかを実際に確認できます。
Invoke Method(#Com_Owner.uGet5250Field) Name(UARG15) Value(#Arg15Value) Found(#Found)
If (#Found = TRUE) /* 15th argument was passed to HANDLE_PROMPT */
Else /* 15th argument was not passed)
プロンプタフォームが呼び出された画面上にない値にアクセスする必要がある場合は、HANDLE_PROMPTファンクションに追加の引数を使用できます。
例えば、最初の画面で顧客情報が入力され、次の画面で請求書番号の入力が指示される場合にこれを利用できます。 この請求書番号が最初の画面で入力された顧客情報に依存し、次の画面でその顧客情報にアクセスできない場合は、必要な顧客情報をobjGlobal変数に格納して、プロンプタ・フォーム・コードで適切な選択基準に対してHANDLE_PROMPT()パラメータとしてこの変数を渡すことができます。