7.114.1 SET_REFのパラメータ
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の割り当てが失敗した場合に実行されるアクションを示します。次のような理由によって、割り当てが失敗する可能性があります。
- *CREATE_FROM/*CREATE_ASオプションに指定された名前に対するコンポーネントDLLを検出できない
- SET_REFのCOM()パラメータに指定された変数に必要なクラスにコンポーネントをキャストできない
COM_ERRORパラメータは、次の値を取ることができます。
*ABORT | SET_REF割り当てが失敗した場合、コンポーネント実行は中止されます。 |
|---|---|
*IGNORE | 失敗したSET_REF割り当ては無視されます。*IGNOREによって、参照変数の値は変更されません。 |
*SET_NULL | 失敗したSET_REF割り当ては無視されます。*NULL参照は、SET_REFのCOM()パラメータに指定された変数に設定されます。 |