4.4.5 バイナリフォーマット定義ファイルを検証する

必要な情報が設定されていなかったり,設定の内容や関係が正しくない場合,バイナリフォーマット定義ファイルを利用したデータ変換定義の作成や,データ変換が正しく行われません。

そのため,作成したバイナリフォーマット定義ファイルは,設定の内容が妥当かどうか検証します。検証は,任意のタイミングで実施できます。また,各要素を設定するダイアログでの入力時には,入力された値が自動的に検証されます。

<この項の構成>
(1) 検証内容
(2) 検証方法
(3) 検証結果の表示

(1) 検証内容

バイナリフォーマット定義ファイルの各要素の設定内容が検証できます。

検証内容とエラー発生時の対処,およびどの検証内容がどの検証方法の場合に実施されるかについて,次の表に示します。

表4-5 バイナリフォーマット定義ファイルの検証内容とエラー発生時の対処

検証の対象検証内容エラー発生時の対処検証方法
自動任意
全体名称がNCName型か。フォーマット名称および要素の名称をNCName型で指定します。
逐次構成の複合内容要素が設定されているか。逐次構成の複合内容要素を設定します。
ルート要素が設定されているか。バイナリフォーマット定義内の複合内容要素をルート要素として設定します。
単純内容要素同じ名称の要素が同じ階層にないか。同じ階層でユニークな名称を指定します。
グローバル定義の単純内容要素は,複合内容要素の構成要素に設定されているか。該当する単純内容要素を複合内容要素の構成要素に設定します。
サイズが固定の場合,指定したサイズの値は次の式を満たすか。

0<サイズ≦2,147,483,647

サイズを1~2,147,483,647で設定します。
次の条件をすべて満たす場合,指定したサイズの値が偶数か。
  • データ種別が文字列,整数,実数,固定小数部数値,または日付時刻
  • サイズが固定
  • 文字コードがUTF-16(BE/LE)
文字コードにUTF-16(BE/LE)以外を指定するか,該当する単純内容要素のサイズに偶数を指定します。
次の条件をすべて満たす場合,指定した小数部桁数が,サイズに指定した値から求められる最大の小数部桁数以下になっているか。
  • データ種別が固定小数部数値,ゾーン形式数値,またはパック形式数値
  • サイズが固定
サイズに小数部桁数のバイト数以上の値を設定します。
データ種別が固定小数部数値,ゾーン形式数値,またはパック形式数値の場合,指定した小数部桁数は次の式を満たすか。

0≦小数部桁数≦33

小数部桁数を0~33で設定します。
データ種別が日付時刻で,秒小数部桁数が指定されている場合,指定した小数部桁数は次の式を満たすか。

0≦秒小数部桁数≦3

秒小数部桁数を0~3で設定します。
データ種別が日付時刻で,サイズが固定の場合,指定したサイズは次の式を満たすか。

サイズ≧形式サイズ+小数点サイズ+秒小数部桁数

サイズに日付時刻形式のバイト数以上の値を設定します。
複合内容要素同じ名称の要素が同じ階層にないか。同じ階層でユニークな名称を指定します。
ルート要素に設定されている複合内容要素が,ほかの複合内容要素の構成要素として設定されていないか。複合内容要素の構成要素から,ルート要素に設定されている複合内容要素を削除します。
ルート要素からたどれるノードの数は,1,024以下か。ルート要素からたどれるツリー上のノードを削除し,ノード数を1,024以下にします。
複合内容要素はほかの複合内容要素の構成要素に設定されているか(ただしルート要素の場合は除く)。該当する複合内容要素を,ほかの複合内容要素の構成要素に設定します。
構成要素は設定されているか。該当する複合内容要素に構成要素を設定します。
選択構成の場合,選択条件ノードが設定されているか。該当する複合内容要素に選択条件ノードを設定します。
選択構成の場合,選択条件ノードに設定されている要素は単純内容要素か。選択条件ノードとして単純内容要素のノードを設定します。
選択構成の場合,各構成要素に選択条件値が設定されているか(ただし,一つだけは選択条件値を設定しなくてもよい)。各構成要素に選択条件値を設定し,選択条件値が設定されていない構成要素を一つ以下にします。
選択構成の場合,選択条件ノードに設定されている単純内容要素のデータ種別と,各構成要素の選択条件値に指定した値が一致するか。選択条件ノードに設定されている単純内容要素のデータ種別によって検証の内容と対処が異なります。詳細については「表4-6 選択条件値に指定した値に関する検証内容と対処」を参照してください。
選択構成の場合,各構成要素の選択条件値に重複はないか。選択条件値が重複した構成要素に,ほかの構成要素で設定されていない選択条件値を設定します。
選択構成の場合,選択条件ノード,およびそのすべての祖先ノードの出現回数が固定で,かつ1回か。選択条件ノードとその祖先ノードの出現回数を1回固定になるように設定します。
選択構成の場合,選択条件ノードのサイズが固定か。選択条件ノードのサイズを固定に設定します。
選択構成の場合,選択条件ノードのパスが正しいか。選択条件ノードを示すパスが不正であるおそれがあります。対処方法については「表4-7 パスが不正である場合の原因と対処」を参照してください。
選択構成の場合,選択条件ノードのパスに選択構成の複合内容要素が含まれていないか(ただし,パスが絶対パスの場合,設定元のノードの祖先ノードは除く)。選択条件ノードが実際のバイナリデータで出現しないおそれがあります。実際のバイナリデータで選択条件ノードに該当するデータが出現するか確認します。
選択構成の場合,コード変換ライブラリが使用できるか(クラスをロードできるか)。uCosminexus 日立コード変換 - Development Kitのjarファイルを正しく設定したあと,Eclipseを再起動します。
コード変換テーブルのパスが正しく設定されているか。コード変換テーブルパスに日立コード変換の変換用テーブルのパスを正しく指定してください。
選択構成の場合,構成要素に設定されている単純内容要素の数は一つ以下か。構成要素に設定する単純内容要素を一つ以下にします。
選択構成の場合,各構成要素(複合内容要素)に開始セパレータが設定されているか(ただし,構成要素に単純内容要素が設定されていない場合,一つだけは開始セパレータを設定しなくてもよい)。構成要素に単純内容要素が設定されている場合,各構成要素に開始セパレータを設定します。構成要素に単純内容要素が設定されていない場合,開始セパレータが設定されていない構成要素を一つ以下にします。
選択構成の場合,各構成要素に設定されている開始セパレータの値に重複はないか。開始セパレータが重複した構成要素に,ほかの構成要素で設定されていない開始セパレータの値を設定します。
構成要素出現回数が固定の場合,指定した出現回数は次の式を満たすか。

0<出現回数≦2,147,483,647

出現回数を1~2,147,483,647で設定します。
出現回数が「出現回数ノード」の場合,出現回数ノードが設定されているか。該当する構成要素に出現回数ノードを設定します。
出現回数が「出現回数ノード」の場合,出現回数ノードのデータ種別が数値型か(数値型とは,整数,実数,固定小数部数値,ゾーン形式数値,パック形式数値,符号付き2進整数,または符号なし2進整数)。出現回数ノードには,データ種別が数値型の単純内容要素を設定します。
出現回数が「出現回数ノード」の場合,出現回数ノード,およびそのすべての祖先ノードの出現回数が固定,かつ1回か。出現回数ノードとその祖先ノードの出現回数を1回固定になるように設定します。
出現回数が「出現回数ノード」の場合,出現回数ノードのパスが正しいか。出現回数ノードを示すパスが不正であるおそれがあります。対処方法については「表4-7 パスが不正である場合の原因と対処」を参照してください。
出現回数が「出現回数ノード」の場合,出現回数ノードのパスに選択構成の複合内容要素が含まれていないか。(ただし,パスが絶対パスの場合,設定元のノードの祖先ノードは除く)。出現回数ノードが実際のバイナリデータで出現しないおそれがあります。実際のバイナリデータで出現回数ノードに該当するデータが出現するか確認します。
再帰構造になっていないか。再帰的に設定されている構成要素を削除します。
構成要素が単純内容要素の場合で,サイズが「サイズノード」のとき,サイズノードが設定されているか。該当する構成要素にサイズノードを設定します。
構成要素が単純内容要素の場合で,サイズが「サイズノード」のとき,サイズノードのデータ種別が数値型か(数値型とは,整数,実数,固定小数部数値,ゾーン形式数値,パック形式数値,符号付き2進整数,または符号なし2進整数)。サイズノードには,データ種別が数値型の単純内容要素を設定します。
構成要素が単純内容要素の場合で,サイズが「サイズノード」のとき,サイズノード,およびそのすべて祖先ノードの出現回数が固定,かつ1回か。サイズノードとその祖先ノードの出現回数を1回固定になるように設定します。
構成要素が単純内容要素の場合で,サイズが「サイズノード」のとき,サイズノードのパスが正しいか。サイズノードを示すパスが不正であるおそれがあります。対処方法については「表4-7 パスが不正である場合の原因と対処」を参照してください。
構成要素が単純内容要素の場合で,サイズが「サイズノード」のとき,サイズノードのパスに選択構成の複合内容要素が含まれていないか(ただし,パスが絶対パスの場合,設定元のノードの祖先ノードは除く)。サイズノードが実際のバイナリデータで出現しないおそれがあります。実際のバイナリデータでサイズノードに該当するデータが出現するか確認します。
構成要素が単純内容要素の場合で,出現回数が「データの終端まで」の場合,出現の終わりを示すセパレータが設定されていること。出現回数が可変の要素で,出現の終わりを示すセパレータを指定します。
構成要素が単純内容要素の場合で,サイズが「データの終端まで」の場合,データの終了を示すセパレータが設定されていること。サイズが可変長の要素で,データの終了を示すセパレータを指定します。
構成要素が複合内容要素の場合で,出現回数が「データの終端まで」の場合,出現の終わりを示すセパレータが設定されていること。出現回数が可変の要素で,出現の終わりを示すセパレータを指定します。
(凡例)
○:検証されます。
-:検証されません。

表4-6 選択条件値に指定した値に関する検証内容と対処

データの種別検証内容対処
文字列次の式を満たすか。

文字コード変換後のサイズ≦指定のサイズ

選択条件値のバイトサイズが選択条件ノードのサイズ以下になるように指定してください。
整数指定した文字列の形式はnか。※1※2選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。
次の式を満たすか。

文字コード変換後のサイズ≦指定のサイズ

選択条件値のバイトサイズが選択条件ノードのサイズ以下になるように指定してください。
符号の有無が「なし」の場合,0≦値か。選択条件値に正の値を指定してください。
整数は34桁以下か。選択条件値に有効桁数が34桁以内の数値を指定してください。
実数指定した文字列の形式はnまたはn.mか。※1※2選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。
次の式を満たすか。

文字コード変換後のサイズ≦指定のサイズ

選択条件値のバイトサイズが選択条件ノードのサイズ以下になるように指定してください。
符号の有無が「なし」の場合,0≦値か。選択条件値に正の値を指定してください。
整数部桁+小数部桁が34桁以下の実数か。選択条件値に有効桁数が34桁以内の数値を指定してください。
固定小数部数値指定した文字列の形式はnまたはn.mか。※1※2選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。
次の式を満たすか。

暗黙的小数部付き数値に変換後のサイズ≦指定のサイズ

選択条件値のバイトサイズが選択条件ノードのサイズ以下になるように指定してください。
符号の有無が「なし」の場合,0≦値か。選択条件値に正の値を指定してください。
整数部桁+小数部桁が34桁以下の実数か。選択条件値に有効桁数が34桁以内の数値を指定してください。
小数部桁は「小数部桁数」に指定した範囲内か。選択条件値の小数部の桁数を小数部桁数以下で指定してください。
ゾーン形式数値指定した文字列の形式はnまたはn.mか。※1選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。
次の式を満たすか。

ゾーン形式に変換後のサイズ≦指定のサイズ

選択条件値のバイトサイズが選択条件ノードのサイズ以下になるように指定してください。
整数部桁+小数部桁が34桁以下の実数か。選択条件値に有効桁数が34桁以内の数値を指定してください。
小数部桁は「小数部桁数」に指定した範囲内か。選択条件値の小数部の桁数を小数部桁数以下で指定してください。
パック形式数値指定した文字列の形式はnまたはn.mか。※1選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。
次の式を満たすか。

パック形式に変換後のサイズ≦指定のサイズ

選択条件値のバイトサイズが選択条件ノードのサイズ以下になるように指定してください。
整数部桁+小数部桁が34桁以下の実数か。選択条件値に有効桁数が34桁以内の数値を指定してください。
小数部桁は「小数部桁数」に指定した範囲内か。選択条件値の小数部の桁数を小数部桁数以下で指定してください。
符号付き2進整数指定した文字列の形式はnまたは-nか。※1選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。
サイズが1バイトの場合,次の式を満たす整数か。

-27≦値≦27-1

選択条件値に有効な値を指定してください。
サイズが2バイトの場合,次の式を満たす整数か。

-215≦値≦215-1

選択条件値に有効な値を指定してください。
サイズが4バイトの場合,次の式を満たす整数か。

-231≦値≦231-1

選択条件値に有効な値を指定してください。
サイズが8バイトの場合,次の式を満たす整数か。

-263≦値≦263-1

選択条件値に有効な値を指定してください。
符号なし2進整数指定した文字列の形式はnか。※1選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。
サイズが1バイトの場合,次の式を満たす整数か。

0≦値<28

選択条件値に有効な値を指定してください。
サイズが2バイトの場合,次の式を満たす整数か。

0≦値<216

選択条件値に有効な値を指定してください。
サイズが4バイトの場合,次の式を満たす整数か。

0≦値<232

選択条件値に有効な値を指定してください。
サイズが8バイトの場合,次の式を満たす整数か。

0≦値<264

選択条件値に有効な値を指定してください。
バイト列指定した文字列の形式は0~9,a~f,A~Fか。選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。
次の式を満たすか。

バイト変換後のサイズ=指定のサイズ

条件値のバイトサイズが選択条件ノードのバイトサイズと同じになるように定義してください。
日付時刻形式がCCYYMMDDの場合,指定した文字列形式はCCYYMMDDか。選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。
形式がYYMMDDの場合,指定した文字列形式はYYMMDDか。選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。
形式がhhmmssの場合,指定した文字列形式はhhmmssか。選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。
形式がCCYYMMDDhhmmssの場合,指定した文字列形式はCCYYMMDDhhmmssか。選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。
形式がYYMMDDhhmmssの場合,指定した文字列形式はYYMMDDhhmmssか。選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。
秒小数点の指定は,秒小数点の桁数と一致するか。選択条件値の秒小数点桁数と選択条件ノードに指定した値を一致させてください。
指定した日付時刻は正しい日付時刻か。選択条件値に正しい日付時刻を指定してください。
注※1
n,mは0~9の数値を表します。ただし,nの先頭,およびmの末尾は1~9の数値です。
注※2
条件値に付ける符号は,選択条件ノードの「符号の有無」の設定によって異なります。「常にあり」の場合は必ず符号を付けます。「なし」の場合,符号は指定できません。「負だけあり」の場合は「-」だけ指定できます。

表4-7 パスが不正である場合の原因と対処

パス不正の原因対処
選択条件,出現回数,またはサイズノードに指定したパスのノードが定義上から削除されている。選択条件,出現回数,またはサイズノードを指定し直してください。
選択条件,出現回数,またはサイズノードを指定したあとに,階層構造が変更された。選択条件,出現回数,またはサイズノードを指定し直してください。
選択条件,出現回数,またはサイズノードに指定したパスが,設定先の要素よりもあとに出現する。選択条件,出現回数,またはサイズノードに,設定先より前に出現する要素を指定してください。
ノードパス設定先のノードを参照する構成要素が複数定義されている。ノードパス設定先を参照する構成要素を一つにしてください。
絶対パスの最上位要素がルート要素ではない。ルート要素を絶対パスの最上位要素に設定するか,パスを設定し直してください。
設定元のノードの祖先に基準ノードが存在しない。ノードパスを設定し直してください。
基準パスの基準ノードが逐次構成の要素ではない。基準ノードが逐次構成になるパスを設定してください。
パスと設定元のノードの共通の親が,選択構成の複合内容である。パスと設定元のノードの共通の親を逐次構成の複合内容に設定してください。

(2) 検証方法

検証方法には,次の二つがあります。検証方法によって検証される内容は異なります。詳細について「4.4.5(1) 検証内容」を参照してください。

ダイアログの入力時の検証
バイナリフォーマット定義ファイルの各要素を設定するときに利用するダイアログでは,入力された値が逐次自動的に検証されます。
任意のタイミングでの検証
バイナリフォーマット定義ファイルの作成後,または作成途中の任意のタイミングで検証を実施できます。
検証を実施するには,バイナリフォーマット定義エディタ上の要素を選択して右クリックし,[検証]を選択します。バイナリフォーマット定義エディタに表示されているバイナリフォーマット定義ファイルが検証されます。
なお,検証するときにバイナリフォーマット定義エディタ上で選択する要素は任意です。どの要素を選択しても,バイナリフォーマット定義ファイル全体が検証されます。

検証結果の表示については,「4.4.5(3) 検証結果の表示」を参照してください。

(3) 検証結果の表示

検証を実施した結果は,画面およびダイアログ上に表示されます。

(a) ダイアログの入力時の自動検証の結果の表示

ダイアログの入力時の自動検証の結果は,バイナリフォーマット定義に関連するダイアログの[インフォメーション]に表示されます。問題がない場合は,何も表示されません。

バイナリフォーマット定義に関連するダイアログについては,「11.3 バイナリフォーマット定義に関連するダイアログ」を参照してください。

(b) 任意のタイミングで検証した結果の表示

検証の結果が画面に表示されます。画面の表示内容については,「11.1 画面構成」および「11.2.1 バイナリフォーマット定義画面」を参照してください。

検証が成功した場合
コンソールビューに検証が成功したことを示すメッセージが表示されます。
検証が失敗した場合
コンソールビューにエラー,警告,および情報通知の内容を示すメッセージが表示されます。また,画面上の各部分にエラー,警告,および情報通知の内容が表示されます。
バイナリフォーマット定義エディタ,アウトラインビュー
問題のあったノードにエラーまたは警告を示すアイコンが表示されます。エラーと警告の両方がある場合,エラーのアイコンが優先して表示されます。
パッケージ・エクスプローラー
問題のあったファイルとその祖先のフォルダにエラーまたは警告を示すアイコンが表示されます。エラーと警告の両方がある場合,エラーのアイコンが優先して表示されます。
問題ビュー
問題点を示すメッセージ,リソース名(ファイル名)およびフォルダ名が一覧表示されます。