7.112.1 SET_REFのパラメータ

COM

TO

CONTEXT

COM_ERROR

COM

COMパラメータでは、TOパラメータに指定された参照式の結果を割り当てる1つまたは複数のコンポーネントを指定します。このパラメータで指定するコンポーネントは、DEFINE_COMパラメータの動的参照で指定されている必要があります。

TO

: SET_REF *CREATE はオブジェクトのショート・ネームでのみ作動します。ロング・ネームを使ってオブジェクトをロードすることはできません。これは、ランタイムでは、ロング・ネームが使用できないからです。

TOパラメータは、COMパラメータに指定された変数に割り当てられるコンポーネント参照を抽出します。参照式は、次のいずれかの形式で指定する必要があります。

#変数名

変数名に含まれる参照をCOMパラメータによって識別される各変数に割り当てます。変数には互換性が必要です。

*NULL

COMパラメータによって識別されるすべてのコンポーネント変数に*NULL参照を割り当てます。

*DYNAMIC #変数名

変数名に含まれる参照をCOMパラメータによって識別される各変数に割り当てます。コンパイル時に、変数に互換性があるかどうかの検査は実行されません。

実行時に、COMパラメータによって識別されるどの変数にも変数名をキャストできない場合、エラーが発生します。

*CREATE_AS クラス名

クラス名によって識別されるコンポーネントのインスタンスを作成します。クラスは、#SALARY.Visualなど、LANSAリポジトリで定義される必要があります。

キー付きコレクションのインスタンスを作成する場合、次のようにパラメータ化されたコレクション構文を使用する必要があります。

SET_REF #variable To(*Create_As #Prim-KCol<#PRIM_PHBN #STD_NUM>)

*CREATE_FROM クラス名

クラス名によって識別されるコンポーネントのインスタンスを作成します。クラス名は、文字列または変数で指定することができます。

実行時に、クラス名が解決できない場合、エラーが発生します。

CONTEXT

CONTEXTパラメータは、新しいコンポーネント参照がメモリーを取得できるコンテキストにどのように割り当てられるかを制御します。このパラメータによって、オブジェクト・プーリングを管理することができます。

デフォルトでは、オブジェクトのメモリー使用量は、DLLのロード/アンロードによって、またはあるフォームから別のフォームにコンポーネントを渡すことによって、自動的に管理されます。メモリーは、プールにアクティブなオブジェクトがなくなると、破棄されます。

CONTEXTパラメータを使用すると、オブジェクトのメモリー・プーリングをプログラムで管理することができます。例えば、関連するオブジェクトをそのオブジェクト自身のメモリ領域にロードすることができます。

例えば、大きくて複雑なフォームをメモリーにロードし、その後そのフォームを閉じることがあります。このとき、フォーム内のコンポーネント(またはオブジェクトのインスタンス)が1つでもアクティブな場合、メモリーは解放されません。CONTEXTパラメータでは、メイン・メモリーを解放できるように残りのオブジェクト用のプールを個別に作成することによって、このようなフォームを管理することができます。

CONTEXTパラメータを使用できるのは、TOパラメータが*CREATE_ASまたは*CREATE_FROMに設定されている場合だけです。このパラメータは、次のいずれかの値を取ることができます。

*DEFAULT

基本コンポーネント・クラスの場合、*DEFAULTは*OWNERです。基本以外のコンポーネント・クラスの場合、*DEFAULTは*MODULEです。

*OWNER

ルーチンが実行されているコンポーネントのインスタンスのコンテキストを使用します。

*MODULE

SET_REFコマンドを実行しているルーチンを含むモジュール(DLL)に割り当てられたコンテキストを使用します。

*NEW

このコンポーネント用に新しいコンテキストを作成します。

*NAMED #変数

コンテキストは、変数名によって識別されるコンポーネント参照です。

COM_ERROR

COM_ERRORパラメータは、SET_REFの割り当てが失敗した場合に実行されるアクションを示します。次のような理由によって、割り当てが失敗する可能性があります。

COM_ERRORパラメータは、次の値を取ることができます。

*ABORT

SET_REF割り当てが失敗した場合、コンポーネント実行は中止されます。

*IGNORE

失敗したSET_REF割り当ては無視されます。*IGNOREによって、参照変数の値は変更されません。

*SET_NULL

失敗したSET_REF割り当ては無視されます。*NULL参照は、SET_REFのCOM()パラメータに指定された変数に設定されます。