言語環境解説書
各言語環境のインターフェース関数は、dtw_lei_t 構造体のポインターを受け取ります。
dtw_lei_t 構造体の形式は次のとおりです。
typedef struct dtw_lei_t { /* Lang. Env. Interface */
char *function_name; /* Function block name */
int flags; /* Lang. Env. Interface flags */
char *exec_statement; /* Lang. Env. statement(s) */
dtw_parm_data_t *parm_data_array; /* Parameter array */
char *default_error_message; /* Default message */
void *le_opaque_data; /* Lang. Env. specific data */
void *row; /* For row-at-a-time processing*/
char reserved[64]; /* Reserved */
} dtw_lei_t;
dtw_lei_t 構造体内のフィールド:
- function_name
- function_name フィールドには、
関数ブロックの名前が入った文字列へのポインターが含まれています。
これは、言語環境が表示するエラー・メッセージで FUNCTION ブロック名を指定するのに役立つ場合があります。
- flags
- flags フィールドは、Net.Data と言語環境間の通信に使用されます。
以下の定数を使用して OR 演算を行って、flags フィールド・ポインターを指定します。
- Net.Data は DTW_STMT_EXEC を設定して、
exec_statement フィールドに EXEC ステートメントからのファイル名とパラメーターが含まれていることを、
dtw_execute() インターフェース関数に知らせます。
- DTW_END_ABNORMAL が Net.Data によって設定され、異常もしくは予期しない状態が発生したことと、
Net.Data の終了前に言語環境が何らかのクリーンアップ処理 (すなわち保留資源の解放) を行う必要があることを、
dtw_cleanup() インターフェース関数に知らせます。
- DTW_LE_FATAL_ERROR が言語環境インターフェース関数によって設定され、
言語環境に致命的エラーが発生したことを Net.Data に知らせます。
このフラグが設定されると、Net.Data は Net.Data マクロの処理を停止し、フラグを DTW_END_ABNORMAL に設定して、
活動中のすべての言語環境の dtw_cleanup() インターフェース関数を呼び出し、デフォルト・メッセージを印刷して、終了します。
フラグは、言語環境呼び出しで非ゼロの戻り値が戻された場合にのみチェックされます。
- DTW_LE_MSG_KEEP が言語環境インターフェース関数によって設定され、
default_error_message が指し示す記憶域を解放してはならないことを、Net.Data に知らせます。
この定数が設定されないと、Net.Data は記憶域を解放しようとします。
- DTW_LE_CONTINUE が dtw_execute() インターフェース関数によって設定され、
Net.Data に dtw_getNextRow() インターフェース関数を呼び出すよう指示します。
Net.Data が dtw_getNextRow() を呼び出すのは、フラグが設定され、
呼び出しから dtw_execute() インターフェース関数への戻り値がゼロの場合のみです。
- exec_statement
- exec_statement フィールドには、以下のいずれかのポインターが入っています。
- FUNCTION ブロックから、(変数置換後の) 実行可能ステートメントを含むストリングへのポインター
- EXEC ステートメントからファイル名およびパラメーターへのポインター
- parm_data_array
- parm_data_array フィールドには、dtw_parm_data_t 構造体の配列のポインターが入ります。
配列は、ゼロの入った parm_data 構造体で終わります。
dtw_parm_data_t 構造体は、変数や関連する値を言語環境に渡したり、
言語環境によって行われる可能性がある変数値の変更を取得したりする場合に、
Net.Data によって使用されます。
構造体については、dtw_parm_data_t 構造体 を参照してください。
- default_error_message
- 言語環境によって、
エラー条件を記述する文字ストリングに default_error_message フィールドが設定されます。
呼び出しから言語環境インターフェース関数への戻り値が非ゼロで、
戻り値が MESSAGE ブロックのメッセージの値と一致しない場合は、デフォルト・メッセージが表示されます。
それ以外の場合、Net.Data は MESSAGE ブロックから選択されたメッセージを表示します。
- le_opaque_data
- le_opaque_data フィールドは、言語環境のインターフェース関数のいずれによっても設定されて、
インターフェース関数間でパラメーターを受け渡します。
Net.Data は、ポインターを保管し、それを Net.Data が呼び出す別のインターフェース関数に渡します。
Net.Data マクロの処理後で、かつNet.Data の呼び出し側に戻る前に、
Net.Data はそのポインターを NULL に定義します。
フィールドは、スレッドに固有であるため、言語環境はスレッド固有のデータを保管することができます。
このフィールドを使用するのは、dtw_cleanup() インターフェース関数を持っていて、
その関数が le_opaque_data フィールドに関連する記憶域を解放できる場合に限ります。
- row
- row フィールドは、言語環境の dtw_getNextRow() インターフェース関数を呼び出す前に、
行オブジェクトに対して Net.Data によって設定されます。
dtw_getNextRow() 関数は、Net.Data 行ユーティリティー・インターフェース関数を使用して、
表データの行をオブジェクトに挿入します。
その後、Net.Data はその行を処理し、処理する行がなくなるまで dtw_getNextRow() を呼び出します。
reserved フィールドは、IBM 専用の予約フィールドです。
[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]