8.6.1 DEFINE_MAPのパラメータ
パラメータを関連ルーチンから受け取ります。
以下の値が使用可能です。
*Input
*Output
*Both
*Result
*Input
*Output
パラメータが関連ルーチンから戻されます。
*Both
パラメータを関連ルーチンから受け取り、その後、パラメータを関連ルーチンに戻します。
*Result
パラメータが関連ルーチンから戻されます。
*Resultは、メソッド・ルーチンでのみ有効で、メソッドごとに1つの*Resultのみ許容されます。複数の結果を戻すには、*Outputを使用します。
DEFINE_MAPに*Resultが指定されている場合は、メソッド・ルーチンに定義済みの結果パラメータがあることを示します。これは、固有ファンクションの概念に似ているため、メソッド・ルーチンを式の一部として使用するようにできます。
CLASSは、渡される値のタイプを定義します。CLASSの値は、リポジトリに定義されているフィールドにすることができます。フィールドは、#SALARYなどの単純なフィールドにするか、#SALARY.VISUALまたは#SALARY.MYPARTなどの表示方法にすることができます。
*VARIANTは、バリアント型変数を使用できます。バリアント型変数から値を読み書きできますが、プロパティはありません。今のところ、バリアント型変数(#PRIM_VAR)を使用するのがより望ましい選択肢です。
1つのDEFINE_MAPステートメントでは1つの値のみを渡すことができることに注意してください。
名前によって、マップされた値を固有に識別します。名前は最大20文字まで入力することができ、フィールド名と同様、ハッシュ(#)で始まっている必要があります。
名前は、必ずシステム内で固有のものにしてください。プログラム内の他のフィールドやコンポーネントと同じ名前にすることはできません。また、リポジトリに定義されているすべてのフィールドやコンポーネントととも同じ名前にしないでください。
名前では、以下の点について注意する必要があります。
· フィールドに対する値を設定するためにCHANGEコマンドを使用する場合は、以下のように値のプロパティを参照する必要があります。
change #empno #curemp.value
· 値を変更する場合は、以下のようにSETコマンドを使用してください。
set com(#curemp) value('A0070')
· サブルーチンおよび組み込み関数では、以下のように、値のプロパティなしで名前を参照することができます。
use builtin(reverse) with_args(#curemp) to_get(#revname)
· 同じ名前を異なるイベント、メソッド、およびプロパティ・ルーチンで使用することができます。
· 名前には、LANSA専用として予約されている、#PRIM_、#LANSA、#SYS、#COM、および#LPの接頭辞を含まないようにしてください。
このパラメータを使用して、提供されているパラメータを変数名にマッピングする方法を指定します。
提供されているパラメータ*BY_VALUEがデフォルトです。つまり、この値のコピーが渡されることになります。
値が*BY_REFERENCEとして渡されると、ルーチンでフィールド値にアクセスし、フィールド値を変更することができます。
このパラメータを使用して、指定されるパラメータを必須指定(*YES)に設定します。
*NULLを指定すると、PASSが*BY_REFERENCEの場合に、メソッドのユーザーは、デフォルトでは参照パラメータを提供しなくてもよくなります。その後、メソッドのコードでIF_REFコマンドを使用してパラメータが提供されているかどうかを確認することができます。
パラメータが任意指定の場合は、パラメータのデフォルトをここで指定する必要があります。
以下のコードでは、任意指定のパラメータ#this_empのデフォルト値を定義します。
define_map *input class(#empno) name(#this_emp) mandatory('A1234')
以下のコードでは、任意指定のパラメータ#this_empのデフォルト値をブランクに定義します。
define_map *input class(#empno) name(#this_emp) mandatory('')
任意指定の出力パラメータに値を指定することもできます。この値は、ルーチンの開始時に変数を初期化するために使用されます。ルーチンの呼び出し時にパラメータが指定されている場合は、この値は置き換えられます。
以下のコードでは、#mNumberOfTimesをデフォルト値99に初期化し、#mValidをfalseに設定します。
define_map *output class(#std_count) name(#mNumberofTimes) mandatory(99)
define_map *result class(#prim_boln) name(#mValid) mandatory(false)
マッピングされた値について、DESCパラメータを使用して短い記述を指定できます。40文字が最長です。
HELPパラメータを使用して、マッピングされた値の長い記述を指定することができます。ヘルプ・テキストは、ヘルプメニューの機能オプションを使用して表示することができます。250文字が最長です。