sql_get_error_text (buf, len, errmsglen)
ベクターのテキストからユーザーのバッファへのコピー操作の結果として生じるステータス・コードです。
buf
テキストを受け取るために宣言されるバッファです。
値: テキストを受け取るために宣言されるバッファのアドレス データ型: 文字列 受渡しメカニズム: 参照
len
テキストを受け取るために宣言されるバッファの長さです。
値: 最初のパラメータによって指し示される文字列の長さ データ型: ロングワード 受渡しメカニズム: 値
errmsglen
返されるエラー・メッセージに割り当てられる文字数です。
値: エラー・メッセージに割り当てられる文字数 データ型: ロングワード 受渡しメカニズム: 参照
sql_get_error_textルーチンは、プログラムで処理するために書式設定されたASCII出力(FAO)置換とともにエラー・テキストをプログラムに渡すときに使用します。sql_get_error_textルーチンを使用するには、 SQLによって渡されるテキストを受け取るためのバッファ(フィールド)をプログラム宣言に含める必要があります。このフィールドは、RDB$LU_STATUS値に関連するメッセージおよびすべての後続のメッセージで想定される文字数を収容するために十分な長さを持つテキスト文字列として宣言します。
- このルーチンによって返されるステータス・コードは、メッセージ・ベクターのステータス・コードではありません。
- 次のリストは、sql_get_error_textルーチンを使用可能な言語と、各言語からのコール方法を示しています。
- Ada
procedure SQL_GET_ERROR_TEXT(ERROR_BUFFER : out string; ERROR_BUFFER_LEN : in integer; ERROR_MSG_LEN : out integer); pragma INTERFACE(SQL,SQL_GET_ERROR_TEXT); pragma IMPORT_PROCEDURE(internal => SQL_GET_ERROR_TEXT, external => "SQL$GET_ERROR_TEXT", parameter_types => (string,integer,integer), mechanism => (reference,value,reference)); -- sql_get_error_text variables. ERROR_BUFFER : string(1..256); ERROR_BUFFER_LEN : integer := 256; ERROR_MSG_LEN : integer; sql_get_error_text(error_buffer,error_buffer_len,error_msg_len);
- BASIC
external sub sql_get_error_text (string by ref, long by value, long by ref) MAP STRING error_buffer = 256 DECLARE LONG error_msg_len CALL sql_get_error_text (error_buffer, LEN(error_buffer), error_msg_len)
- C
char error_buffer[ n ]; int error_msg_len; sql_get_error_text(error_buffer, sizeof(error_buffer), &error_msg_len);
- COBOL
01 GETERRVARS. 02 error-buffer-len PIC S9(9) COMP VALUE 132. 02 error-msg-len PIC S9(9) COMP. 02 error-buffer PIC X(132). CALL "sql_get_error_text" USING BY REFERENCE error-buffer, BY VALUE error-buffer-len, BY REFERENCE error-msg-len.
- FORTRAN
CHARACTER*256 error_buffer INTEGER error_msg_len CALL sql_get_error_text (%REF(error_buffer), 1 %VAL(LEN(error_buffer)), 2 %REF(error_msg_len))
- Pascal
CONST error_buffer_len = 132; VAR error_buffer : packed array [1..error_buffer_len] of char; error_msg_len : integer; PROCEDURE sql_get_error_text (%ref err_buffer: packed array [l1..u1:integer] of char; %immed err_buflen: integer; var err_length: integer); EXTERNAL; sql_get_error_text (err_buffer := error_buffer, err_buflen := LENGTH(error_buffer), err_length := error_msg_len); WRITELN (err_buffer: err_length);
- PL/I
DECLARE error_buffer CHARACTER(256), error_buffer_len FIXED BINARY(31) INITIAL (256), error_msg_len FIXED BINARY(31); CALL sql_get_error_text (error_buffer, error_buffer_len, error_msg_len)
- sql_get_error_textルーチンにより、後続メッセージをプライマリ・メッセージと区別し、後続メッセージを互いに区別するための改行(CR、LF)文字が返されます。
sql_get_error_textルーチンにより、テキストをメッセージ間のデリミタとして受け取るために宣言されたバッファに文字が挿入されます。通常、これらが存在することにより、テキストを端末画面に表示しやすくなります。
ただし、プログラムでメッセージを表示するためにForms製品が使用される場合、改行(CR、LF)文字は印刷不可能な文字として解釈されます。
次のCOBOLの例は、バッファ内に存在する改行(CR、LF)文字を処理する1つの方法を示しています。
* * CRLF is a PIC XX field that contains <cr><lf>. * MSG-TXT-RDBFEL is an array of lines to be displayed for the error message. * STRING CARRIAGE-RET, LINE-FEED DELIMITED BY SIZE INTO CRLF. CALL "sql_get_error_text" USING BY REFERENCE BUFFER, BY VALUE BUF_LEN BY REFERENCE MSG_LEN. UNSTRING BUFFER DELIMITED BY CRLF INTO MSG-TXT_RDBFEL(1), MSG-TXT_RDBFEL(2), MSG-TXT_RDBFEL(3).
次の例は、Cプログラムで使用されるsql_get_error_textルーチンを示しています。
/* * This function uses the sql_get_error_text routine to display the * messages returned by various facilities for unexpected error conditions * that occur. This program continues after these unexpected errors. */ void display_sqlget_message(void) { char err_buf[ 1024 ]; int err_msg_len; sql_get_error_text(&err_buf, sizeof(err_buf), &err_msg_len); err_buf[err_msg_len] = 0; printf("%s\n",err_buf); return; }