4.4.1 バイナリフォーマット定義ファイルのデータ型文字コードの種類

バイナリフォーマット定義エディタでは,次に示すデータ型を使用してフォーマットを定義できます。

各データで扱う文字コードの種類については,マニュアル「Cosminexus サービスプラットフォーム リファレンス」の「1.3.2 単純内容要素ダイアログ」を参照してください。

次に各データ型の内容について説明します。

<この項の構成>
(1) 数値
(2) 文字列
(3) バイト列
(4) 日付時刻

(1) 数値

数値型には,数値属性によって文字列型数値とバイト列型数値に分けられます。それぞれの数値型に属する数値属性を次に示します。

●文字列型数値
  • 整数
  • 実数
  • 固定小数部数値
●バイト列型数値
  • ゾーン形式数値
  • パック形式数値
  • 符号付き2進整数
  • 符号なし2進整数

文字列型数値の符号は省略できます。符号の出現位置は数字列の前です。入力データに数字が一つも出現しない場合は0と見なします。また,埋め字に0またはスペースを使用できます。

どの数値属性もデータ変換では10進数として扱います。扱える10進数としての最大桁(整数部と小数部の桁数の合計)は34桁です。

文字列型数値をXML変換すると,XMLスキーマのdecimal型に変換されます。バイト列型数値をXML変換すると,ゾーン形式数値とパック形式数値の場合はXMLスキーマのdecimal型に変換され,符号付き2進整数と符号なし2進整数の場合はinteger型に変換されます。

それぞれの数値属性について説明します。

(a) 整数

「数字」および「符号」で構成される数値属性です。この数値属性は,内部的にBigIntegerクラスで処理されます。

整数は最大34桁で小数部を持ちません。

整数の例を次に示します。

(例1)
1234567890
(例2)
-1234567890
(b) 実数

「数字」,「符号」および「小数点」から構成される一般的な形式の数値属性です。この数値属性は内部的にBigDecimalクラスで処理されます。

実数は最大34桁で小数部を持ちます。ただし,入力データ中に数字がなく,小数点だけの場合はエラーになります。

実数の例を次に示します。

(例1)
1234567890
(例2)
-123.456
(c) 固定小数部数値

「符号」および「数字」から構成され,小数部の桁を指定すると小数点が暗黙的に設定される数値属性です。この数値属性は内部的にBigDecimalクラスで処理されます。

固定小数部数値は最大34桁で,小数部は最大33桁です。

小数部を4桁に指定した場合の固定小数部数値の例を示します。

(例1)「1234567890」の場合
123456.789
(1234567890 → 123456.7890 → 123456.789)
(例2)「+123」の場合
0.0123
(+123 → +0.0123 → 0.0123)
(例3)「-1230000」の場合
-123
(-1230000 → -123.0000 → -123)
(d) ゾーン形式数値

ゾーン形式の数値属性です。小数部の桁を指定すると小数点が暗黙的に設定されます。この数値属性は内部的にBigDecimalクラスで処理されます。

ゾーン形式数値は最大34桁で,符号は項目の最終バイトのゾーン部で表します。

文字コードがJIS8の場合,正符号は0x3,負符号は0x7で表します。

文字コードがEBCDIKの場合,正符号は0xCまたは0xF,負符号は0xDで表します。

符号の正負は変更できます。

最終バイト以外のゾーン部は各コードの正符号で表し,数値は各バイトの下位4ビットで表します(0x0~0x9)。

文字コードがJIS8の場合のゾーン形式数値の例を示します。

(例1)「0x31323334」(小数部の指定なし)の場合
1234
(例2)「0x31323334」(小数部を2桁に指定)の場合
12.34
(例3)「0x31323374」(小数部の指定なし)の場合
-1234
(e) パック形式数値

パック形式の数値属性です。小数部の桁を指定すると小数点が暗黙的に設定されます。この数値属性は内部的にBigDecimalクラスで処理されます。

パック形式数値は最大34桁で,桁数が偶数の場合,最上位バイトの上4ビットは0にしなければなりません。

符号は項目データの最終バイトの下位4ビットで表します。正符号は0xCまたは0xF,負符号は0xDで表し,数値は4ビットで表します(0x0~0x9)。符号の正負は変更できます。なお,データ変換は正符号として0xCを出力します。

文字コードがJIS8の場合のパック形式数値の例を示します。

(例1)「0x01234F」(小数部の指定なし)の場合
1234
(例2)「0x01234F」(小数部を2桁に指定)の場合
12.34
(例3)「0x01234D」(小数部の指定なし)の場合
-1234
(f) 符号付き2進整数

1~8バイトまでの符号付きの2進数で構成される数値属性です。この数値属性は内部的にBigIntegerクラスで処理されます。

エンディアンはフォーマットの情報に従います。

ビッグエンディアンの場合の符号付き2進整数の例を示します。

(例1)「256」の場合
0x0100
(例2)「-257」の場合
0xFEFF
(g) 符号なし2進整数

1~8バイトまでの符号なしの2進数で構成される数値属性です。この数値属性は内部的にBigIntegerクラスで処理されます。

エンディアンはフォーマットの情報に従います。

ビッグエンディアンの場合の符号なし2進整数の例を示します。

(例1)「-256」の場合
0x0100
(例1)「65279」の場合
0xFEFF

(2) 文字列

文字列型は,スペースまたは空文字(0x00)を埋め字として指定できます。埋め字指定がスペースの場合は,スペースの付いた入力文字列が抽出され,埋め字指定が空文字の場合は,空文字を除いた入力文字列が抽出されます。

文字列をXML形式からバイナリ形式の固定長要素に変換する場合,入力XMLの変換後のサイズが固定長要素のサイズより小さいと埋め字が追加されます。このとき,埋め字指定がスペースと空文字では次のように異なります。

文字列を比較する場合,左側にあるスペースだけ比較の対象になります。右側にあるスペースは比較の対象にはなりません。

データのサイズはバイト数で指定できます。サイズを指定するときは,シフトコードや解放文字を含んだ値を指定してください。

文字列型をXML変換すると,XMLスキーマのString型に変換されます。

(3) バイト列

バイト列型は,プラットフォーム間でビットパターンが保存されるバイト列そのものです。バイト列をXML変換すると,XMLスキーマのhexBinary型に変換されます。

(4) 日付時刻

日付時刻型は,年,月,日,時,分,秒のパートの組み合わせで構成する型です。個々のパートは数値を指定でき,秒を表すパートは小数部を持つことができます。

日付時刻型を指定する場合,次の制限事項があります。

日付時刻型のパートを次の表に示します。

表4-5 日付時刻型のパート

パート意味指定する桁数
CCYY西暦年(0~9999)1~4桁
YY年(西暦年下2桁)最大2桁
MM月(1~12)最大2桁
DD日(1~31)最大2桁
hh時(0~23)最大2桁
mm分(0~59)最大2桁
ss秒(0~59,小数部可)整数部最大2桁,小数部最大3桁

パートの組み合わせによって,日付時刻型は三つのデータ型(日付型,時刻型,および日付時刻型)を表現することができます。

データ型とパートの組み合わせを次の表に示します。

表4-6 データ型とパートの組み合わせ

データ型組み合わせ意味
日付型CCYYMMDD西暦年/月/日
YYMMDD西暦年下2桁/月/日
時刻型hhmmss時/分/秒
日付時刻型CCYYMMDDhhmmss西暦年/月/日/時/分/秒
YYMMDDhhmmss西暦年下2桁/月/日/時/分/秒
注※
日付型の「YYMMDD」形式の場合,指定できる範囲は西暦年換算で1951年~2050年になります。

日付型,時刻型,および日付時刻型をXML変換すると,それぞれ次のように変換されます

日付時刻型の例を次に示します。

(例1)「2001年1月24日」の場合
20010124
(例2)「1999年12月31日1時30分59秒」の場合
991231013059