sql$get_error_text (buf [,errmsglen])
ベクターのテキストからユーザーのバッファへのコピー操作の結果として生じるステータス・コードです。
buf
テキストを受け取るために宣言されるバッファです。
値: テキストを受け取るために宣言されるバッファのアドレス データ型: 文字列 受渡しメカニズム: 記述子
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 ( txt : out text-buffer-name; len : out short_integer ); pragma INTERFACE (NONADA, SQL_GET_ERROR_TEXT): pragma IMPORT_PROCEDURE (INTERNAL => SQL_GET_ERROR_TEXT, EXTERNAL => 'SQL$GET_ERROR_TEXT', PARAMETER_TYPES => (text-buffer-name, short_integer,) MECHANISM =>(DESCRIPTOR, REFERENCE));
- BASIC
CALL SQL$GET_ERROR_TEXT(get_error_buffer)
- C
declaration of descriptor for text-buffer-name SQL$GET_ERROR_TEXT(&descriptor-name [, &text-buffer-length] )
- COBOL
CALL 'SQL$GET_ERROR_TEXT' USING BY DESCRIPTOR text-buffer-name [BY REFERENCE text-buffer-length]
- FORTRAN
CALL SQL$GET_ERROR_TEXT (%DESCR(text-buffer-name), [text-buffer-length])
- Pascal
type smallint = [word] -32768..32767; var buf : packed array [1..255] of char; len : smallint; procedure SQL$GET_ERROR_TEXT ( var err_buff : [class_s] packed array [$L2..$U2:integer] of char; var length : smallint); external; SQL$GET_ERROR_TEXT (buf, len);
- PL/I
DCL SQL$GET_ERROR_TEXT ENTRY (ANY, FIXED(15) BIN); CALL SQL$GET_ERROR_TEXT (DESCRIPTOR(text-buffer-name)[,text-buffer-length]
- sql$get_error_textルーチンにより、後続メッセージをプライマリ・メッセージと区別し、後続メッセージを互いに区別するための改行(CR、LF)文字が返されます。
sql$get_error_textルーチンにより、テキストをメッセージ間のデリミタとして受け取るために宣言されたバッファに文字が挿入されます。通常、これらが存在することにより、テキストを端末画面に表示しやすくなります。
ただし、プログラムでメッセージを表示するためにForms製品が使用される場合、改行(CR、LF)文字は印刷不可能な文字として解釈されます。
次のCOBOLの例は、バッファ内に存在する改行(CR、LF)文字を処理する1つの方法を示しています。
CALL "SQL$GET_ERROR_TEXT" USING BY DESCRIPTOR BUFFER, BY REFERENCE LEN STRING CARRIAGE-RET, LINE-FEED DELIMITED BY SIZE INTO CRLF UNSTRING BUFFER DELIMITED BY CRLF INTO MSG-TXT_RDBFEL(1), MSG-TXT_RDBFEL(2), MSG-TXT_RDBFEL(3) * * 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. *
次の例は、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 occur, * and allows the user to select the exit program option on the menu. void display_sqlget_message(void) { char get_error_buffer[301]; short error_msg_len; t_dsc.dsc$b_class = DSC$K_CLASS_S; t_dsc.dsc$b_dtype = DSC$K_DTYPE_T; t_dsc.dsc$w_length = 300; t_dsc.dsc$a_pointer = (char *) (&get_error_buffer); return_status = SQL$GET_ERROR_TEXT(&t_dsc,&error_msg_len); get_error_buffer[error_msg_len] = '\0'; printf("\n\nThis condition was not expected.\n\n"); printf("%s",get_error_buffer); release_screen = getchar(); printf("\n"); return; }