Hitachi

Cosminexus V11 BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編


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

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

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

〈この項の構成〉

(1) 検証内容

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

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

表4‒3 バイナリフォーマット定義ファイルの検証内容とエラーまたは警告発生時の対処

検証の対象

検証内容

エラーまたは警告発生時の対処

検証方法

自動

任意

全体

名称がNCName型か。

フォーマット名称および要素の名称をNCName型で指定します。

フォーマット

逐次構成の複合内容要素が設定されているか。

逐次構成の複合内容要素を設定します。

ルート要素が設定されているか。

バイナリフォーマット定義内の複合内容要素をルート要素として設定します。

コード変換ライブラリが使用できるか(クラスをロードできるか)。

コード変換機能のjarファイルを正しく設定したあと,Eclipseを再起動します。

文字コードにKEIS,IBM_CODE,JEFを選択している場合に,セパレータを定義している複合内容要素がないか。

フォーマットの文字コードを次の文字コード以外にするか,または複合内容のセパレータの指定を解除します。

  • KEIS

  • IBM_CODE

  • JEF

文字コードにKEIS,IBM_CODE,JEFを選択している場合に,データ種別に文字列以外を設定している単純内容要素がないか。

フォーマットの文字コードを次の文字コード以外にするか,または単純内容のデータ種別に文字列を指定します。

  • KEIS

  • IBM_CODE

  • JEF

パック形式数値およびゾーン形式数値のビット値(16進数)の値が16進数で設定されているか,または未設定でないか。

該当する符号ビットまたは文字を16進数で設定します。

ゾーン形式数値の符号文字(16進数)の値が16進数で設定されているか,または未設定でないか。

該当する符号ビットまたは文字を16進数で設定します。

エスケープ文字がラテン文字または半角スペースの1文字か。

ラテン文字の範囲(0x21〜0x7E)でエスケープ文字を設定します。

エスケープ文字とセパレータ値に同一の文字が指定されていないか。※1

エスケープ文字とセパレータ値に重複しない文字を指定します。

エスケープ文字を指定している場合,セパレータを設定した複合内容要素内に個別文字コードを指定した単純内容要素が存在していないか。

次のどれかの対策を実施してください。

  • エスケープ文字の指定を解除

  • 複合内容要素のセパレータの指定を解除

  • 単純内容要素の個別文字コードの指定を解除

コード変換テーブルの格納ディレクトリ名が64文字以下の英数字(0〜9,A〜Z,a〜z),およびアンダーバー(_)か。

コード変換テーブルの格納ディレクトリ名に64文字以下の英数字(0〜9,A〜Z,a〜z),アンダーバー(_)を指定します。

バイナリデータのエンコード,およびデコードでJava提供のエンコーダーとデコーダーを使用する場合,Javaでサポートされている文字コードが設定されているか。

文字コードにjava.nio API用の正準名または別名を指定してください。

単純内容要素

同じ名称の要素が同じ階層にないか。

同じ階層でユニークな名称を指定します。

グローバル定義の単純内容要素は,複合内容要素の構成要素に設定されているか。

該当する単純内容要素を複合内容要素の構成要素に設定します。

サイズが固定の場合,指定したサイズの値は次の式を満たすか。※2

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

サイズを1〜2,147,483,647の範囲で設定します。

次の条件をすべて満たす場合,指定したサイズの値が偶数か。

  • データ種別が文字列,整数,実数,固定小数部数値,または日付時刻

  • サイズが固定

  • 文字コードがUTF-16(BE/LE)

文字コードにUTF-16(BE/LE)以外を指定するか,該当する単純内容要素のサイズに偶数を指定します。

次の条件をすべて満たす場合,バイトサイズが2以上か。

  • データ種別が文字列

  • サイズが固定

  • 文字コードがKEIS,IBM_CODE,JEF

フォーマットの文字コード,または個別文字コードを次の文字コード以外にするか,該当する単純内容のサイズに2以上の値を指定します。

  • KEIS

  • IBM_CODE

  • JEF

次の条件をすべて満たす場合,0020〜D7DE,E000〜FFDC(大文字・小文字は区別しない)の値が設定されているか。

  • データ種別が文字列

  • 「代替文字に置換」を指定している

0020〜D7DE,E000〜FFDCの16進数を指定します。

次の条件をすべて満たす場合,埋め字が「0」以外か。

  • データ種別が整数,実数,または固定小数部数値

  • 左右寄せで「左」を指定している

左右寄せを「左」以外にするか,埋め字に「0」以外を指定します。

サイズが固定の場合,指定した整数は次の式を満たすか。

全体桁数>符号の桁数

全体桁数に符号の桁数よりも大きな値を指定します。

サイズが固定で全体桁数の指定がない場合,指定した整数は次の式を満たすか。

サイズ>符号サイズ

サイズに符号のバイトサイズよりも大きな値を指定します。

サイズが固定で全体桁数の指定がある場合,指定した整数は次の式を満たすか。

サイズ≧符号サイズ+整数部サイズ

サイズに全体桁数のバイトサイズ以上の値を指定します。

次の条件をすべて満たす場合,文字コードがKEIS,IBM_CODE,JEF以外か。

  • データ種別が整数,実数,固定小数部数値,ゾーン形式数値,パック形式数値,符号付2進整数,符号無2進整数,バイト列,ビット列,または日付時刻

フォーマットの文字コードを次の文字コード以外にするか,データ種別を文字列に指定します。

  • KEIS

  • IBM_CODE

  • JEF

指定した整数,実数,または固定小数部数値は次の式を満たすか。

1≦全体桁数≦34

該当する桁数を,設定可能範囲内の数値で設定します。

サイズが固定の場合,指定した実数は次の式を満たすか。

全体桁数≧符号の桁数+小数点の桁数+小数部桁数

かつ

全体桁数>符号の桁数

全体桁数に符号と小数点と小数部を合わせた桁数以上の値を指定します。

サイズが可変の場合,指定した実数または固定小数部数値は次の式を満たすか。

全体桁数≧小数部桁数

全体桁数に小数部桁数以上の値を指定します。

サイズが固定で全体桁数と小数部桁数の指定がない場合,指定した実数は次の式を満たすか。

サイズ>符号サイズ

サイズに符号のバイトサイズよりも大きな値を指定します。

サイズが固定で,全体桁数の指定がなく小数部桁数の指定がある場合,指定した実数は次の式を満たすか。

サイズ≧符号サイズ+小数点サイズ+小数部サイズ

かつ

サイズ>符号サイズ

サイズに符号と小数点と小数部を合わせたバイトサイズ以上の値を指定します。

サイズが固定で全体桁数の指定がある場合,指定した実数は次の式を満たすか。

サイズ≧符号サイズ+整数部サイズ+小数点サイズ+小数部サイズ

サイズに全体桁数のバイトサイズ以上の値を指定します。

サイズが固定の場合,指定した固定小数部数値は次の式を満たすか。

全体桁数≧符号の桁数+小数部桁数

かつ

全体桁数>符号の桁数

全体桁数に符号と小数部を合わせた桁数以上の値を指定します。

サイズが固定で全体桁数の指定がない場合,指定した固定小数部数値は次の式を満たすか。

サイズ≧符号サイズ+小数部サイズ

かつ

サイズ>符号サイズ

サイズに符号と小数部桁数を合わせたバイトサイズ以上の値を指定します。

サイズが固定で全体桁数の指定がある場合,指定した固定小数部数値は次の式を満たすか。

サイズ≧符号サイズ+整数部サイズ+小数部サイズ

サイズに全体桁数のバイトサイズ以上の値を指定します。

データ種別が実数,固定小数部数値,ゾーン形式数値,またはパック形式数値の場合,指定した小数部桁数は次の式を満たすか。

0≦小数部桁数≦33

小数部桁数を0〜33で設定します。

次の単純内容要素の祖先にセパレータを設定している場合,「セパレータ形式」が「ユーザ指定」になっているか。

  • データ種別がゾーン形式数値,パック形式数値,符号付2進整数,符号無2進整数,またはバイト列

ゾーン形式数値,パック形式数値,符号付2進整数,符号無2進整数,またはバイト列以外のデータ種別を指定します。または,単純内容に対するセパレータ形式の指定をユーザ指定にします。

次の条件をすべて満たす場合,「小数部桁数≦指定のサイズから求めた最大小数部桁数」になっているか。

  • データ種別がパック形式数値

  • サイズが固定

サイズに小数部桁数のバイト数以上の値を指定します。

データ種別が符号付2進整数または符号無2進整数の場合,指定したサイズは次の式を満たすか。

1≦サイズ≦8

該当する桁数を,設定できる範囲内の数値で設定します。

データ種別がビット列の場合,指定したサイズは次の式を満たすか。

1≦サイズ≦64

サイズを1〜64の範囲で設定します。

データ種別がビット列の場合,セパレータを定義している複合内容要素がバイナリフォーマット定義に存在しないか。

データ種別にビット列以外を指定するか,セパレータの指定を解除します。

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

0≦秒小数部桁数≦3

秒小数部桁数を0〜3で設定します。

データ種別が日付時刻で,サイズが固定の場合,指定したサイズは次の式を満たすか。

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

サイズに日付時刻形式のバイト数以上の値を設定します。

次の条件をすべて満たす場合,「小数部桁数≦指定のサイズから求めた最大小数部桁数」になっているか。

  • データ種別がゾーン形式数値

  • サイズが固定

  • 符号の設定がカスタム

  • 符号の種類が符号ビット

または,次の条件をすべて満たす場合,「小数部桁数≦指定のサイズから求めた最大小数部桁数」になっているか。

  • データ種別がゾーン形式数値

  • サイズが固定

  • 符号の設定が自動

サイズに小数部桁数のバイト数以上の値を指定します。

次の条件をすべて満たす場合,「指定したサイズの最大小数部桁数≧小数部桁数+符号文字」になっているか。かつ,指定したサイズが2バイト以上か。

  • データ種別がゾーン形式数値

  • サイズが固定

  • 符号の設定が「カスタム」

  • 符号の種類が「符号文字」

サイズには,小数部桁数のバイト数+符号文字のバイト数以上,かつ2バイト以上の値を指定します。

次の条件をすべて満たす場合,祖先にCSV形式のセパレータが設定されていないか。

  • データ種別が文字列,整数,または実数

  • 個別文字コードが指定されている

単純内容要素に対するCSV形式のセパレータの指定を解除するか,個別文字コードの指定を解除してください。

次の条件をすべて満たす場合,個別文字コードが指定されていないか。

  • データ種別が文字列,整数,または実数

  • 祖先にセパレータが設定されている

  • エスケープ文字が設定されている

次のどれかの対策を実施してください。

  • 単純内容要素の個別文字コードの指定を解除

  • 複合内容要素のセパレータの指定を解除

  • エスケープ文字の指定を解除

次の条件をすべて満たす場合,祖先にセパレータが設定されていないか。

  • データ種別が文字列

  • 文字コードがKEIS,IBM_CODE,JEF

単純内容要素に対するセパレータの指定を解除するか,単純内容要素の個別文字コードを次の文字コード以外にしてください。

  • KEIS

  • IBM_CODE

  • JEF

データ種別が整数,または実数の場合,個別文字コードがKEIS,IBM_CODE,JEF以外か。

個別文字コードを次の文字コード以外にするか,データ種別を文字列に指定します。

  • KEIS

  • IBM_CODE

  • JEF

サイズが0バイトの場合,親要素が選択構成になっているか。

単純内容のサイズを1バイト以上に変更するか,単純内容が定義されている複合内容を選択構成に変更してください。

複合内容要素

同じ名称の要素が同じ階層にないか。

同じ階層でユニークな名称を指定します。

ルート要素に設定されている複合内容要素が,ほかの複合内容要素の構成要素として設定されていないか。

複合内容要素の構成要素から,ルート要素に設定されている複合内容要素を削除します。

複合内容要素はほかの複合内容要素の構成要素に設定されているか(ただしルート要素の場合は除く)。

該当する複合内容要素を,ほかの複合内容要素の構成要素に設定します。

構成要素は設定されているか。

該当する複合内容要素に構成要素を設定します。

セパレータ形式に「CSV」を指定している場合,次の単純内容要素が存在しないか。

  • データ種別がゾーン形式数値,パック形式数値,符号付2進数整数,符号無2進数整数,またはバイト列

セパレータ形式をユーザ指定にするか,単純内容にゾーン形式数値,パック形式数値,符号付2進数整数,符号無2進数整数,またはバイト列以外のデータ種別を指定します。

開始セパレータの指定が正しいか。

開始セパレータに正しいセパレータを指定します。

中間区切りセパレータの指定が正しいか。

中間区切りセパレータに正しいセパレータを指定します。

終了セパレータの指定が正しいか。

終了セパレータに正しいセパレータを指定します。

セパレータを指定している場合,フォーマットの文字コードがKEIS,IBM_CODE,JEFでないか。

複合内容のセパレータの指定を解除するか,フォーマットの文字コードを次の文字コード以外にします。

  • KEIS

  • IBM_CODE

  • JEF

セパレータ名称が重複していないか。

1つの複合内容の中で,ほかのセパレータで指定されていないセパレータを指定します。

セパレータ値が重複していないか。

1つの複合内容の中で,ほかのセパレータ値と重複しないセパレータ値を指定します。

セパレータを指定している場合,文字コード変換中にエラーが発生しないか。

エラーの原因となった例外情報を参照し,その対処に従います。

セパレータを指定している場合,文字コード変換に失敗しないか。

エラーコードを参照し,その対処に従います。

セパレータを指定している場合,文字コードがコード変換ライブラリでサポートされているか。

コード変換ライブラリでサポートしている文字コードを選択します。

または,サポートしているコード変換ライブラリを使用します。

セパレータを指定している場合,バイナリフォーマット定義にビット列型の単純内容要素が存在しないか。

セパレータの指定を解除するか,単純内容要素のデータ種別にビット列以外を指定します。

セパレータを指定している場合,バイナリフォーマット定義にサイズノードを指定した複合内容要素が存在しないか。

セパレータの指定を解除するか,サイズノードを除去します。

逐次構成で,最後の子要素がビット列型の単純内容要素の場合,次の条件に該当しないか(ただし,ルート要素は除く)。

  • 連続するビット列型のサイズを合計し,サイズがバイト単位でない

ビット列型の子要素のサイズを確認します。

ビット列型の要素のサイズは,次のように算出します。

出現回数が固定の場合,「サイズ×最大出現回数」とします。

出現回数が固定以外の場合,次のように算出します。

  • 実際の出現回数が不明でサイズがバイト単位でない場合,警告とする。

  • サイズがバイト単位の場合は,出現回数が不明でも,「サイズ×出現回数」の値がバイト単位に常になるため,出現回数は1として算出し,「サイズ×1」とする。

選択構成で,子要素がビット列型の単純内容要素の場合,次の条件に該当しないか(ただし,ルート要素は除く)。

  • サイズがバイト単位でない

ビット列型の子要素のサイズを確認します。

ビット列型の要素のサイズは,次のように算出します。

出現回数が固定の場合,「サイズ×最大出現回数」とします。

出現回数が固定以外の場合,次のように算出します。

  • 実際の出現回数が不明でサイズがバイト単位でない場合,警告とする。

  • サイズがバイト単位の場合は,出現回数が不明でも,「サイズ×出現回数」の値がバイト単位に常になるため,出現回数は1として算出し,「サイズ×1」とする。

選択構成の場合,選択条件ノードが設定されているか。

該当する複合内容要素に選択条件ノードを設定します。

選択構成の場合,選択条件ノードに設定されている要素は単純内容要素か。

選択条件ノードとして単純内容要素のノードを設定します。

選択構成の場合,各構成要素に選択条件値が設定されているか(ただし,1つだけは選択条件値を設定しなくてもよい)。

各構成要素に選択条件値を設定し,選択条件値が設定されていない構成要素を1つ以下にします。

選択構成の場合,選択条件ノードに設定されている単純内容要素のデータ種別と,各構成要素の選択条件値に指定した値が一致するか。※3

選択条件ノードに設定されている単純内容要素のデータ種別によって検証の内容と対処が異なります。詳細については「表4-4 選択条件値に指定した値に関する検証内容と対処」を参照してください。

選択構成の場合,各構成要素の選択条件値に重複はないか。※3

選択条件値が重複した構成要素に,ほかの構成要素で設定されていない選択条件値を設定します。

選択構成の場合,選択条件ノード,およびそのすべての祖先ノードの出現回数が固定で,かつ1回か。

選択条件ノードとその祖先ノードの出現回数を1回固定になるように設定します。

選択構成の場合,選択条件ノードのサイズが固定か。

選択条件ノードのサイズを固定に設定します。

選択構成の場合,選択条件ノードのパスが正しいか。

選択条件ノードを示すパスが不正であるおそれがあります。対処方法については「表4-5 パスが不正である場合の原因と対処」を参照してください。

選択構成の場合,選択条件ノードのパスに選択構成の複合内容要素が含まれていないか(ただし,パスが絶対パスの場合,設定元のノードの祖先ノードは除く)。

選択条件ノードが実際のバイナリデータで出現しないおそれがあります。実際のバイナリデータで選択条件ノードに該当するデータが出現するか確認します。

選択構成の場合,選択条件ノードに指定したノードが,サイズノード指定した複合内容要素を含まないか(パスが絶対パスの場合は,設定元のノードの祖先であるノードは除く。パスが基準パスの場合は,基準ノードを除く)。

選択条件ノードが実際のバイナリデータで出現しないおそれがあります。実際のバイナリデータで選択条件ノードに該当するデータが出現するか確認します。

選択構成の場合,文字コード変換中にエラーが発生しないか。

エラーの原因となった例外情報を参照し,その対処に従います。

選択構成の場合,文字コード変換に失敗しないか。

エラーコードを参照し,その対処に従います。

選択構成の場合,文字コードがコード変換ライブラリでサポートされているか。

コード変換ライブラリでサポートしている文字コードを選択します。

または,サポートしているコード変換ライブラリを使用します。

選択構成の場合で構成要素の開始セパレータが設定されているとき,構成要素に設定されている単純内容要素の数は1つ以下か。

構成要素に設定する単純内容要素を1つ以下にします。

選択構成の場合,各構成要素(複合内容要素)に開始セパレータが設定されているか(ただし,構成要素に単純内容要素が設定されていない場合,1つだけは開始セパレータを設定しなくてもよい)。

構成要素に単純内容要素が設定されている場合,各構成要素に開始セパレータを設定します。構成要素に単純内容要素が設定されていない場合,開始セパレータが設定されていない構成要素を1つ以下にします。

選択構成の場合,各構成要素に設定されている開始セパレータの値に重複はないか。

開始セパレータが重複した構成要素に,ほかの構成要素で設定されていない開始セパレータの値を設定します。

セパレータ形式に「CSV」を指定している場合,個別文字コードを設定した単純内容要素が存在しないか。

個別文字コードの指定を解除するか,複合内容要素のセパレータ形式を変更してください。

セパレータを指定している場合,個別文字コードにKEIS,IBM_CODE,JEFを指定した単純内容要素が存在しないか。

複合内容要素のセパレータの指定を解除するか,単純内容の個別文字コードを次の文字コード以外にしてください。

  • KEIS

  • IBM_CODE

  • JEF

次の条件をすべて満たす場合,セパレータが指定されていないか。

  • 個別文字コードが設定されている

  • エスケープ文字が設定されている

次のどれかの対策を実施してください。

  • 複合内容要素のセパレータの指定を解除

  • 単純内容要素の個別文字コードの指定を解除

  • エスケープ文字の指定を解除

選択条件ノード,サイズノード,または出現回数ノードにLOW-VALUEの変換が有効な単純内容要素が指定されていないか。

選択条件ノード,サイズノード,または出現回数ノードに「LOW-VALUEの変換」が無効である単純内容を指定してください。

文字列型の選択条件ノードのサイズが1バイト以上か。

文字列型の選択条件ノードにはサイズが1バイト以上の単純内容を指定してください。

複数条件指定の場合,条件値が区切り文字だけで指定されていないか。または,区切り文字の後ろに条件値が指定されているか。

正しい区切り文字で条件値を指定してください。

複数条件指定の場合,区切り文字が指定されているか。

区切り文字を指定してください。

構成要素

出現回数が固定の場合,指定した出現回数は次の式を満たすか。

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

出現回数を1〜2,147,483,647の範囲で設定します。

出現回数が「出現回数ノード」の場合,出現回数ノードが設定されているか。

該当する構成要素に出現回数ノードを設定します。

出現回数が「出現回数ノード」の場合,出現回数ノードのデータ種別が数値型か(数値型とは,整数,実数,固定小数部数値,ゾーン形式数値,パック形式数値,符号付2進整数,または符号無2進整数)。

出現回数ノードには,データ種別が数値型の単純内容要素を設定します。

出現回数が「出現回数ノード」の場合,出現回数ノード,およびそのすべての祖先ノードの出現回数が固定,かつ1回か。

出現回数ノードとその祖先ノードの出現回数を1回固定になるように設定します。

出現回数が「出現回数ノード」の場合,出現回数ノードのパスが正しいか。

出現回数ノードを示すパスが不正であるおそれがあります。対処方法については「表4-5 パスが不正である場合の原因と対処」を参照してください。

出現回数が「出現回数ノード」の場合,出現回数ノードのパスに選択構成の複合内容要素が含まれていないか(ただし,パスが絶対パスの場合,設定元のノードの祖先ノードは除く)。

出現回数ノードが実際のバイナリデータで出現しないおそれがあります。実際のバイナリデータで出現回数ノードに該当するデータが出現するか確認します。

出現回数ノードに指定したノードが,サイズノード指定した複合内容要素を含まないか(パスが絶対パスの場合は,設定元のノードの祖先であるノードは除く。パスが基準パスの場合は,基準ノードを除く)。

選択条件ノードが実際のバイナリデータで出現しないおそれがあります。実際のバイナリデータで選択条件ノードに該当するデータが出現するか確認します。

再帰構造になっていないか。

再帰的に設定されている構成要素を削除します。

親要素が逐次構成の場合,次のすべての条件に該当しないか。

  • ビット列型以外の単純内容要素,または複合内容要素

  • 1つ前に存在する兄弟要素がビット列型の単純内容要素

  • 連続するビット列型のサイズを合計し,サイズがバイト単位でない

ビット列型の兄要素のサイズを確認します。

ビット列型の要素のサイズは,次のように算出します。

出現回数が固定の場合,「サイズ×最大出現回数」とします。

出現回数が固定以外の場合,次のように算出します。

  • 実際の出現回数が不明でサイズがバイト単位でない場合,警告とする。

  • サイズがバイト単位の場合は,出現回数が不明でも,「サイズ×出現回数」の値がバイト単位に常になるため,出現回数は1として算出し,「サイズ×1」とする。

構成要素が単純内容要素の場合で,データ種別が「ビット列」のとき,次のすべての条件に該当しないか。

  • 指定されたサイズが8ビット未満

  • 出現回数が「データの終端まで」または「範囲指定」

  • バイナリフォーマット定義の最後の要素

  • 祖先ノードにサイズノードの指定がない

単純内容要素の出現回数を「固定」または「出現回数ノード」に変更するか,サイズに8ビット以上の値を指定します。

構成要素が単純内容要素の場合で,サイズが「サイズノード」のとき,サイズノードが設定されているか。

該当する構成要素にサイズノードを設定します。

構成要素が単純内容要素の場合で,サイズが「サイズノード」のとき,サイズノードのデータ種別が数値型か(数値型とは,整数,実数,固定小数部数値,ゾーン形式数値,パック形式数値,符号付2進整数,または符号無2進整数)。

サイズノードには,データ種別が数値型の単純内容要素を設定します。

構成要素が単純内容要素の場合で,サイズが「サイズノード」のとき,サイズノード,およびそのすべて祖先ノードの出現回数が固定,かつ1回か。

サイズノードとその祖先ノードの出現回数を1回固定になるように設定します。

構成要素が単純内容要素の場合で,サイズが「サイズノード」のとき,サイズノードのパスが正しいか。

サイズノードを示すパスが不正であるおそれがあります。対処方法については「表4-5 パスが不正である場合の原因と対処」を参照してください。

構成要素が単純内容要素の場合で,サイズが「サイズノード」のとき,サイズノードのパスに選択構成の複合内容要素が含まれていないか(ただし,パスが絶対パスの場合,設定元のノードの祖先ノードは除く)。

サイズノードが実際のバイナリデータで出現しないおそれがあります。実際のバイナリデータでサイズノードに該当するデータが出現するか確認します。

構成要素が単純内容要素の場合で,サイズノードに指定したノードが,サイズノード指定した複合内容要素を含まないか(パスが絶対パスの場合は,設定元のノードの祖先であるノードは除く。パスが基準パスの場合は,基準ノードを除く)。

サイズノードが実際のバイナリデータで出現しないおそれがあります。実際のバイナリデータでサイズノードに該当するデータが出現するか確認します。

構成要素が単純内容要素の場合で,出現回数が「データの終端まで」のとき,出現の終わりを示すセパレータまたはサイズノードが設定されているか。

出現回数が可変の要素で,出現の終わりを示すセパレータまたは複合内容要素のサイズノードを指定します。

構成要素が単純内容要素の場合で,サイズが「データの終端まで」のとき,データの終了を示すセパレータまたはサイズノードが設定されているか。

サイズが可変長の要素で,データの終了を示すセパレータまたは複合内容要素のサイズノードを指定します。

構成要素が複合内容要素の場合で,出現回数が「データの終端まで」のとき,出現の終わりを示すセパレータまたはサイズノードが設定されているか。

出現回数が可変の要素で,出現の終わりを示すセパレータまたは複合内容要素のサイズノードを指定します。

構成要素が複合内容要素の場合で,出現回数が「データの終端まで」または「範囲指定」の場合,次のすべての条件に該当しないか。

  1. バイナリフォーマット定義の最後の要素のデータ種別が「ビット列」

  2. 1.の要素の出現回数が「固定」または「出現回数ノード」

  3. 1.の要素から祖先ノードにサイズノードの指定がない

  4. 1.の要素までの合計サイズが8ビット未満

複合内容要素の出現回数を「固定」または「出現回数ノード」に変更するか,複合内容要素のサイズが8ビット以上になるように定義します。

各要素のサイズは,次のように算出します。

  • データ種別がビット列,かつ出現回数が固定の場合は,「サイズに指定された値×最大出現回数」とする。

  • データ種別がビット列,かつ出現回数が固定以外の場合は,サイズに指定された値とする。ただし,最後の要素でなく,最小出現回数が0の場合,サイズを0とする。

  • データ種別がビット列以外の場合,サイズを8とする(合計サイズが8ビットを超えた時点で検証が終了するため)。ただし,最小出現回数が0の要素,またはサイズノードが指定された複合内容要素の場合,サイズを0とする。

構成要素が複合内容要素の場合で,サイズノードが設定され,子孫ノードにビット列が存在するとき,ビット列の合計サイズがバイト単位であるか。

ビット列型の単純内容要素のサイズを確認します。

構成要素が複合内容要素でサイズノードを設定する場合,セパレータを定義している複合内容要素がバイナリフォーマット定義に存在しないか。

サイズノードの指定を除去するか,セパレータの指定を解除します。

構成要素が複合内容要素の場合で,サイズノードのデータ種別が数値型であるか(数値型とは,整数,実数,固定小数部数値,ゾーン形式数値,パック形式数値,符号付2進整数,または符号無2進整数)。

サイズノードに数値型の単純内容を指定します。

構成要素が複合内容要素の場合で,サイズノードおよびそのすべての出現回数が固定かつ1回であるか。

サイズノードとその祖先は出現回数が1回固定のノードになるように定義します。

構成要素が複合内容要素の場合で,サイズノードのパスが正しいか。

サイズノードに指定したパスが壊れているおそれがあります。

詳細情報を参考にサイズノードを指定し直します。

構成要素が複合内容要素の場合で,サイズノードのパスに選択構成の複合内容要素を含まないか。

サイズノードが実際のバイナリデータで出現しないおそれがあります。実際のバイナリデータでサイズノードに該当するデータが出現するか確認します。

構成要素が複合内容要素の場合で,サイズノードに指定したノードが,サイズノード指定した複合内容要素を含まないか(パスが絶対パスの場合は,設定元のノードの祖先であるノードは除く。パスが基準パスの場合は,基準ノードを除く)。

サイズノードが実際のバイナリデータで出現しないおそれがあります。実際のバイナリデータでサイズノードに該当するデータが出現するか確認します。

構成要素が単純内容,または複合内容の場合,サイズノードのデータ種別が数値またはビット列型か。

サイズノードに数値型,またはビット列型の単純内容を指定してください。

(凡例)

○:検証されます。

−:検証されません。

注※1

セパレータ値の種別がバイト列のセパレータは検証されません。

注※2

文字列型のローカル単純内容要素だけ,サイズに0バイトを指定することができます。

注※3

複数の条件値を指定した場合,指定された条件値を先頭から順に検証します。すべての条件値が検証の対象になります。

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

データの種別

検証内容

対処

文字列

「代替文字に置換」が指定されていないとき,次の式を満たすか。※1

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

選択条件値のバイトサイズが選択条件ノードのサイズ以下になるように指定してください。

整数

指定した文字列の形式はnか。※2※3

選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。

次の式を満たすか。※1

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

選択条件値のバイトサイズが選択条件ノードのサイズ以下になるように指定してください。

符号の有無が「なし」の場合,0≦値か。

選択条件値に正の値を指定してください。

「全体桁数」の指定がある場合,条件値の桁数が「全体桁数」の指定桁数以下か。

選択条件値の入力値の桁数を全体桁数以下で指定してください。

「全体桁数」の指定がない場合,条件値の桁数が34桁以下か。

選択条件値に有効桁数が34桁以下の数値を指定してください。

実数

指定した文字列の形式はnまたはn.mか。※2※3

選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。

次の式を満たすか。※1※4

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

選択条件値のバイトサイズが選択条件ノードのサイズ以下になるように指定してください。

符号の有無が「なし」の場合,0≦値か。

選択条件値に正の値を指定してください。

「小数部桁数」の指定がある場合,条件値の小数部桁が「小数部桁数」の指定桁数以下か。

選択条件値の小数部の桁数を小数部桁数以下で指定してください。

「全体桁数」の指定がある場合,条件値の桁数が「全体桁数」の指定桁数以下か。※4

選択条件値の入力値の桁数を全体桁数以下で指定してください。

「全体桁数」の指定がない場合,条件値の桁数が34桁以下か。

選択条件値に有効桁数が34桁以下の数値を指定してください。

固定小数部数値

指定した文字列の形式はnまたはn.mか。※2※3

選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。

次の式を満たすか。※1

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

選択条件値のバイトサイズが選択条件ノードのサイズ以下になるように指定してください。

符号の有無が「なし」の場合,0≦値か。

選択条件値に正の値を指定してください。

条件値の小数部桁が「小数部桁数」の指定桁以下か。

選択条件値の小数部の桁数を小数部桁数以下で指定してください。

「全体桁数」の指定がある場合,暗黙的小数部付き数値に変換後の条件値の桁数が「全体桁数」の指定桁数以下か。

選択条件値の入力値の桁数を全体桁数以下で指定してください。

「全体桁数」の指定がない場合,条件値の桁数が34桁以下か。

選択条件値に有効桁数が34桁以下の数値を指定してください。

ゾーン形式数値

指定した文字列の形式はnまたはn.mか。※2

選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。

次の式を満たすか。

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

選択条件値のバイトサイズが選択条件ノードのサイズ以下になるように指定してください。

整数部桁+小数部桁が34桁以下の実数か。

選択条件値に有効桁数が34桁以下の数値を指定してください。

小数部桁は「小数部桁数」に指定した範囲内か。

選択条件値の小数部の桁数を小数部桁数以下で指定してください。

単純内容要素の符号の設定が「カスタム」,かつ符号の有無が「なし」の場合に,条件値に負の値を設定していないか。

選択条件値に正の値を指定してください。

パック形式数値

指定した文字列の形式はnまたはn.mか。※2

選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。

次の式を満たすか。

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

選択条件値のバイトサイズが選択条件ノードのサイズ以下になるように指定してください。

整数部桁+小数部桁が34桁以下の実数か。

選択条件値に有効桁数が34桁以下の数値を指定してください。

小数部桁は「小数部桁数」に指定した範囲内か。

選択条件値の小数部の桁数を小数部桁数以下で指定してください。

単純内容要素の符号の設定が「カスタム」,かつ符号の有無が「なし」の場合に,条件値に負の値を設定していないか。

選択条件値に正の値を指定してください。

符号付2進整数

指定した文字列の形式はnまたは-nか。※2

選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。

サイズがnバイト(n=1〜8)の場合,次の式を満たす整数か。

-1×2(8×n)-1≦値≦2(8×n)-1-1

選択条件値に有効な値を指定してください。

符号無2進整数

指定した文字列の形式はnか。※2

選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。

サイズがnバイト(n=1〜8)の場合,次の式を満たす整数か。

0≦値≦28×n-1

選択条件値に有効な値を指定してください。

バイト列

エンコード形式がhexBinaryの場合,指定した文字列の形式は0〜9,a〜f,A〜Fか。

エンコード形式がbase64Binaryの場合,指定した文字列の形式は0〜9,a〜z,A〜Z,+,/,=,空白文字か。

選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。

次の式を満たすか。

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

条件値のバイトサイズが選択条件ノードのバイトサイズと同じになるように定義してください。

ビット列

指定した文字列の形式は0〜9,a〜f,A〜Fか。

選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。

次の式を満たすか。

A=(<指定のサイズ>+7)/8(小数点以下切り捨て)

A×2=入力文字数

必要桁数を指定してください。

日付時刻

形式がCCYYMMDDの場合,指定した文字列形式はCCYYMMDDか。

選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。

形式がYYMMDDの場合,指定した文字列形式はYYMMDDか。

選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。

形式がhhmmssの場合,指定した文字列形式はhhmmssか。

選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。

形式がCCYYMMDDhhmmssの場合,指定した文字列形式はCCYYMMDDhhmmssか。

選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。

形式がYYMMDDhhmmssの場合,指定した文字列形式はYYMMDDhhmmssか。

選択条件値に選択条件ノードのデータ種別と一致した文字列を指定してください。

秒小数点の指定は,秒小数点の桁数と一致するか。

選択条件値の秒小数点桁数と選択条件ノードに指定した値を一致させてください。

指定した日付時刻は正しい日付時刻か。

選択条件値に正しい日付時刻を指定してください。

複数の条件値を指定した場合,指定された条件値を先頭から順に検証します。すべての条件値が検証の対象になります。

注※1

文字コードにCUSTOM以外が設定されている場合。

注※2

n,mは0〜9の数値を表します。ただし,nの先頭,およびmの末尾は1〜9の数値です。

注※3

条件値に付ける符号は,選択条件ノードの「符号の有無」の設定によって異なります。「常にあり」の場合は必ず符号を付けます。「なし」の場合,符号は指定できません。「負だけあり」の場合は「−」だけ指定できます。

注※4

条件値が小数部を持ち,整数部が0だけの場合,0を削除してからカウントします。

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

パス不正の原因

対処

選択条件,出現回数,またはサイズノードに指定したパスのノードが定義上から削除されている。

選択条件,出現回数,またはサイズノードを指定し直してください。

選択条件,出現回数,またはサイズノードを指定したあとに,階層構造が変更された。

選択条件,出現回数,またはサイズノードを指定し直してください。

選択条件,出現回数,またはサイズノードに指定したパスが,設定先の要素よりもあとに出現する。

選択条件,出現回数,またはサイズノードに,設定先より前に出現する要素を指定してください。

ノードパス設定先のノードを参照する構成要素が複数定義されている。

ノードパス設定先を参照する構成要素を1つにしてください。

絶対パスの最上位要素がルート要素ではない。

ルート要素を絶対パスの最上位要素に設定するか,パスを設定し直してください。

設定元のノードの祖先に基準ノードが存在しない。

ノードパスを設定し直してください。

基準パスの基準ノードが逐次構成の要素ではない。

基準ノードが逐次構成になるパスを設定してください。

パスと設定元のノードの共通の親が,選択構成の複合内容である。

パスと設定元のノードの共通の親を逐次構成の複合内容に設定してください。

(2) 検証方法

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

ダイアログの入力時の検証

バイナリフォーマット定義ファイルの各要素を設定するときに利用するダイアログでは,入力された値が逐次自動的に検証されます。

任意のタイミングでの検証

バイナリフォーマット定義ファイルの作成後,または作成途中の任意のタイミングで検証を実施できます。

検証を実施するには,バイナリフォーマット定義エディタ上の要素を選択して右クリックし,[検証]を選択します。バイナリフォーマット定義エディタに表示されているバイナリフォーマット定義ファイルが検証されます。

なお,検証するときにバイナリフォーマット定義エディタ上で選択する要素は任意です。どの要素を選択しても,バイナリフォーマット定義ファイル全体が検証されます。

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

(3) 検証結果の表示

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

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

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

バイナリフォーマット定義に関連するダイアログについては,マニュアル「サービスプラットフォーム リファレンス」の「1.2.1 バイナリフォーマット定義画面」を参照してください。

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

検証の結果が画面に表示されます。

画面の表示内容については,次の個所を参照してください。

検証が成功した場合

コンソールビューに検証が成功したことを示すメッセージが表示されます。

検証が失敗した場合

コンソールビューにエラー,警告,および情報通知の内容を示すメッセージが表示されます。また,画面上の各部分にエラー,警告,および情報通知の内容が表示されます。

バイナリフォーマット定義エディタ,アウトラインビュー

問題のあったノードにエラーまたは警告を示すアイコンが表示されます。エラーと警告の両方がある場合,エラーのアイコンが優先して表示されます。

パッケージ・エクスプローラー

問題のあったファイルとその祖先のフォルダにエラーまたは警告を示すアイコンが表示されます。エラーと警告の両方がある場合,エラーのアイコンが優先して表示されます。

問題ビュー

問題点を示すメッセージ,リソース名(ファイル名)およびフォルダ名が一覧表示されます。