語言環境介面參考手冊
每一個語言環境的介面函數都接收到指向 dtw_lei_t 結構的指標。dtw_lei_t 結構有下列格式:
typedef struct dtw_lei_t { /* 語言環境介面 */
char *function_name; /* 函數區塊名稱 */
int flags; /* 語言環境介面旗號 */
char *exec_statement; /* 語言環境陳述式 */
dtw_parm_data_t *parm_data_array; /* 參數陣列 */
char *default_error_message; /* 預設訊息 */
void *le_opaque_data; /* 語言環境專用資料 */
void *row; /* 用於一次一橫列處理*/
char reserved[64]; /* 保留 */
} dtw_lei_t;
dtw_lei_t 結構中的欄位:
- function_name
- function_name 欄位含有指向包含函數區塊之名稱的字串的指標。
在語言環境所顯示的錯誤訊息中要指定 FUNCTION 區塊名稱時,這會非常有用。 不應釋放或修改該指標,且不應修改字串內容。
- flags
- Net.Data 會使用旗號欄位來和語言環境通信。
用下列常數來執行 OR 作業,以指定旗號欄位:
- Net.Data 設定 DTW_STMT_EXEC,以指示 dtw_execute() 介面函數:
exec_statement 欄位有包含來自 EXEC 陳述式的檔名及參數。
- Net.Data 會設定 DTW_END_ABNORMAL,以指示 dtw_cleanup() 介面函數:
發生了異常或非預期的狀況,而且 Net.Data 正在停止執行巨集。
- 語言環境介面函數會設定 DTW_LE_FATAL_ERROR,以指示 Net.Data:
語言環境中發生了嚴重的錯誤。
如果已設定這個旗號,Net.Data 會停止處理 Net.Data 巨集,為所有使用的語言環境呼叫設定於旗號欄位中含有 DTW_END_ABNORMAL 的 dtw_cleanup(),列印預設訊息並結束。只有在語言環境呼叫傳回非零值時,旗號才會被驗證。
- 語言環境介面函數會設定 DTW_LE_MSG_KEEP,以指示 Net.Data:
不應釋放 default_error_message 所指的儲存體。
如果尚未設定此常數,Net.Data 會試圖釋放儲存體。
- dtw_execute() 介面函數會設定 DTW_LE_CONTINUE,
以命令 Net.Data 呼叫 dtw_getNextRow() 介面函數。
只有在已設定該旗號,且呼叫 dtw_execute() 介面函數的回覆值是零的狀況下,
Net.Data 才會呼叫 dtw_getNextRow()。 Net.Data
將繼續呼叫 dtw_getNextRow() 直到 DTW_LE_CONTINUE 不設定於旗號欄位中為止。
- exec_statement
- exec_statement 欄位包含下列其中一個指標:
- 指向包含來自 FUNCTION 區塊之可執行陳述式 (在變數替代之後) 的指標。
- 指向來自 EXEC 陳述式之檔名及參數的指標。如果 DTW_STMT_EXEC
設定在旗號欄位中,則 exec_statement 欄位會包含一個檔名。
不應釋放或修改該指標,且不應修改陳述式內容。
- parm_data_array
- parm_data_array 欄位含有 dtw_parm_data_t 結構陣列的指標。陣列的結尾是一個包含 0 的 parm_data 結構。
Net.Data 使用 dtw_parm_data_t 結構將變數和關聯值傳給某語言環境,
然後取回可能是由該語言環境對變數值所做的任何變更。
結構說明的相關資訊,請參閱 dtw_parm_data_t 結構。
- default_error_message
- 語言環境可將 default_error_message 欄位設定為一個描述錯誤狀況的字串。
如果因呼叫語言環境介面函數而傳回的回覆值不是 0,
而且該回覆值與 MESSAGE 區塊中的訊息值不符的話,就會顯示預設訊息。
否則,Net.Data 會顯示從 MESSAGE 區塊中選取的訊息。
Net.Data 將釋放空間給
default_error_message 所指的地方。若要防止 Net.Data 釋放儲存體,
請確定 DTW_LE_MSG_KEEP 設定於旗號欄位中。
- le_opaque_data
- le_opaque_data 欄位是由語言環境中的任何介面函數所設定,
可將參數從一個介面函數傳遞到另一個介面函數。
Net.Data 會儲存指標,並且會將它傳遞給每隔一個的 Net.Data 呼叫介面函數。
在每一個要求中,Net.Data 會在第一次呼叫語言環境之前,起始設定 le_opaque_data
為 NULL。此欄位可以用來儲存與現行要求有關的資料,但不可以被用來與其它要求共用資料。
只有在您有 dtw_cleanup() 介面函數的情況下,才能使用這個欄位,
這樣函數才可以釋放與 le_opaque_data 欄位相關的儲存體。
- row
- 在呼叫語言環境的 dtw_getNextRow() 介面函數之前,
Net.Data 會將橫列欄位設定為一個橫列物件。
dtw_getNextRow() 函數會用 Net.Data 橫列公用程式介面函數,
在物件中插入一列表格資料橫列。然後,Net.Data 會處理該橫列,
並持續呼叫 dtw_getNextRow(),直到語言環境指出沒有要處理的橫列為止。
reserved 欄位僅供 IBM 人員使用。
[ 頁面頂端 | 前一頁 | 下一頁 | 目錄 | 索引 ]