[20061006 版 umsCodeGenerator リリース] Mitsuhiro TOYODA
umsCodeGenerator でサポートしていない以下のタグが mapping definition で 使用されている場合、エラーメッセージを出力するようにしました。
<include> <div> <externalRef> <parentRef> <notAllowed> <text>
エラーメッセージとしては、タグ名と mapping definition ファイル中で使用されている位置を出力します。 以下がエラーメッセージの出力例です。
file:///home/.../common.xsl; 行番号236; 列番号33; # Error - file:///home/.../scm_ce.ums line:18 column:23 element:<include> "<include> is not supported." file:///home/.../common.xsl; 行番号236; 列番号33; # Error - file:///home/.../scm_ce.ums line:19 column:20 element:<text> "<text> is not supported." file:///home/.../common.xsl; 行番号236; 列番号33; # Error - file:///home/.../scm_ce.ums line:20 column:19 element:<div> "<div> is not supported." file:///home/.../common.xsl; 行番号236; 列番号33; # Error - file:///home/.../scm_ce.ums line:21 column:27 element:<externalRef> "<externalRef> is not supported." file:///home/.../common.xsl; 行番号236; 列番号33; # Error - file:///home/.../scm_ce.ums line:22 column:25 element:<parentRef> "<parentRef> is not supported." file:///home/.../common.xsl; 行番号236; 列番号33; # Error - file:///home/.../scm_ce.ums line:23 column:26 element:<notAllowed> "<notAllowed> is not supported." file:///home/.../txt2clng.xsl; 行番号96; 列番号34; # Error - unsupported tag is used.
エラー種別の出力、入出力データのバイナリ表示、検出したエラー箇所の複数出力を行うようにいたしました。 以下がエラーメッセージの出力例です。
データがマッピング定義とマッチしません。 -- input data -- at line 2, column 9 at byte 26, bit 208 Address| 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f -------+------------------------------------------------ 0010 | 0a 43 48 4f 49 43 45 5f 4e 47 0a 63 68 6f 69 63 | . C H O I C E _ N G . c h o i c ^ -- mapping definition -- file:///home/.../scm.ums at line:38, column:46, element:<txt:value>, "データ(val)がデータ型のW3C datatypeで規定された形に一致しません。" value = 'CHOICE_A' at line:46, column:46, element:<txt:value>, "データ(val)がデータ型のW3C datatypeで規定された形に一致しません。" value = 'CHOICE_B' at line:54, column:46, element:<txt:value>, "データ(val)がデータ型のW3C datatypeで規定された形に一致しません。" value = 'CHOICE_C'
UmsLibrary から UmsException への移動に伴い、例外情報表示関数の関数名、使用方法が変更になりました。
C版の例外情報表示関数のインタフェースは以下の通りです。
/** * @fn void ums__exception_print( ums__exception_t *ex, char *buffer, int bitlen ) * @brief 例外通知メッセージと、入出力データのエラー位置を出力する。 * * @param ex エラー情報 * @param buffer 入力バッファ * @param bitlen 入力バッファ長 */ void ums__exception_print( ums__exception_t *ex, char *buffer, int bitlen ) {
/* 使用例 */ ums__exception_print( &ums__ex, buffer, bitlen );
Java版の例外情報表示関数のインタフェースは以下の通りです。
/** * 例外通知メッセージと、入出力データのエラー位置を出力する。 * * @param buffer 入出力バッファ * @param bitlen 入出力バッファ長 */ public void print( byte[] buffer, int bitlen )
/* 使用例 */ } catch ( UMSException ex ) { ex.print( buffer, bitlen ); }
致命的なエラーが発生した場合は全ての処理を停止し、パターンにマッチしなかった場合は 分岐したステートを削除するようにしました。
- [Bugzilla #117 remove と throw の違いの混同 http://eda.plain.isas.jaxa.jp/bugzilla/show_bug.cgi?id=117 ]
C版でもエラーメッセージと詳細情報が出力されるようにしました。
- [Bugzilla #126 m3, m4 で意味のあるエラーメッセージが出ない http://eda.plain.isas.jaxa.jp/bugzilla/show_bug.cgi?id=126 ]
テーブル処理でも、エラー情報が出力されるようにしました。
- [Bugzilla #114 エラーメッセージの機能のサポート範囲 http://eda.plain.isas.jaxa.jp/bugzilla/show_bug.cgi?id=114 ]
以上