8.6.1 DEFINE_MAPのパラメータ

LANSA

8.6.1 DEFINE_MAPのパラメータ


FOR

CLASS

NAME

PASS

MANDATORY

DESC

HELP

FOR

パラメータを関連ルーチンから受け取ります。

以下の値が使用可能です。

*Input
*Output
*Both
*Result
*Input

*Output

パラメータが関連ルーチンから戻されます。

*Both

パラメータを関連ルーチンから受け取り、その後、パラメータを関連ルーチンに戻します。

*Result

パラメータが関連ルーチンから戻されます。

*Resultは、メソッド・ルーチンでのみ有効で、メソッドごとに1つの*Resultのみ許容されます。複数の結果を戻すには、*Outputを使用します。

DEFINE_MAPに*Resultが指定されている場合は、メソッド・ルーチンに定義済みの結果パラメータがあることを示します。これは、固有ファンクションの概念に似ているため、メソッド・ルーチンを式の一部として使用するようにできます。

CLASS

CLASSは、渡される値のタイプを定義します。CLASSの値は、リポジトリに定義されているフィールドにすることができます。フィールドは、#SALARYなどの単純なフィールドにするか、#SALARY.VISUALまたは#SALARY.MYPARTなどの表示方法にすることができます。

*VARIANTは、バリアント型変数を使用できます。バリアント型変数から値を読み書きできますが、プロパティはありません。今のところ、バリアント型変数(#PRIM_VAR)を使用するのがより望ましい選択肢です。

1つのDEFINE_MAPステートメントでは1つの値のみを渡すことができることに注意してください。

NAME

名前によって、マップされた値を固有に識別します。名前は最大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の接頭辞を含まないようにしてください。

PASS

このパラメータを使用して、提供されているパラメータを変数名にマッピングする方法を指定します。

提供されているパラメータ*BY_VALUEがデフォルトです。つまり、この値のコピーが渡されることになります。

値が*BY_REFERENCEとして渡されると、ルーチンでフィールド値にアクセスし、フィールド値を変更することができます。

MANDATORY

このパラメータを使用して、指定されるパラメータを必須指定(*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

マッピングされた値について、DESCパラメータを使用して短い記述を指定できます。40文字が最長です。

HELP

HELPパラメータを使用して、マッピングされた値の長い記述を指定することができます。ヘルプ・テキストは、ヘルプメニューの機能オプションを使用して表示することができます。250文字が最長です。