Hitachi

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


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

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

各データ型は,データ変換機能によって,バイナリ型からXML型(DOM),またはXML型(DOM)からバイナリ型へ変換されます。このバイナリ型と中間形式との型変換処理をバイナリパース処理と呼びます。データ変換機能の変換処理については,マニュアル「サービスプラットフォーム 解説」の「付録B データ変換機能の処理概要」を参照してください。

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

バイナリデータ内で文字コードが混在する場合の対応については,「付録P バイナリデータ内に文字コードが混在する場合の対応」を参照してください。

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

〈この項の構成〉

(1) 数値

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

文字列型数値
  • 整数

  • 実数

  • 固定小数部数値

バイナリ型からXML型(DOM)への変換仕様を説明します。

XML型(DOM)からバイナリ型への変換仕様を説明します。

文字列型数値の符号は省略できます。符号の出現位置は数字列の前です。

バイト列型数値
  • ゾーン形式数値

  • パック形式数値

  • 符号付2進整数

  • 符号無2進整数

バイナリ型からXML型(DOM)への変換仕様を説明します。

XML型(DOM)からバイナリ型への変換仕様を説明します。

数値前後の空白(半角スペース,タブ,改行)を除いたデータを変換対象とする。

どの数値属性もデータ変換では10進数として扱います。扱える10進数としての最大桁(整数部と小数部の桁数の合計)は,整数部先頭の0,小数部末尾の0,符号,小数点を削除し,有効桁だけの状態で34桁です。

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

(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

(例2)「65279」の場合

0xFEFF

(2) 文字列

バイナリ型からXML型(DOM)への変換仕様を説明します。

XML型(DOM)からバイナリ型への変換仕様を説明します。

(3) バイト列

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

hexBinary型では,8ビット(1バイト)のバイナリデータの場合,16進数2桁の文字に変換します。例えば,300バイトの元データをhexBinary型で表現するには,300バイト×2文字(600文字)が必要になります。

base64Binary型では,6ビット(6/8バイト)のバイナリデータの場合,Base64エンコードされた1桁の文字に変換します。例えば,300バイトの元データをbase64Binary型で表現するには,300×8/6文字(400文字)が必要になります。

バイト列をバイナリパース処理する場合,サイズノード指定によって0バイトとなるデータは変換できません。また,XML型(DOM)をバイナリパース処理する場合,前後の空白(半角スペース,タブ,および改行)を除いたデータが対象となります。サイズが0のデータ(空ノードや空白だけのデータ)は,0x00として扱います。

(4) ビット列

ビット列とは,2進数で表されるビットが並んだものです。ビット列型とは,2進数のデータを1桁単位で扱うことのできるデータ型です。ビット列型はビッグエンディアンで処理されます。

図4‒5 ビット列およびビット列型のイメージ

[図データ]

バイナリ型からXML型(DOM)には,次のとおり変換します。

XML型(DOM)からバイナリ型には,次のとおり変換します。

(5) 日付時刻

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

日付時刻型をXML型(DOM)からバイナリ型の固定長要素に変換する場合,入力XMLの変換後のサイズが固定長要素のサイズより小さいときに,要素データを左右どちら側に寄せて表現するか(左右寄せ)を指定できます。

日付時刻型をXML型(DOM)からバイナリ型の固定長要素に変換する場合,前後の空白(半角スペース,タブ,および改行)を除いたデータが変換対象となります。入力XMLの変換後のサイズが固定長要素のサイズより小さいときに,要素データを左右どちら側に寄せて表現するか(左右寄せ)を指定できます。

サイズが0のデータ(空ノードや空白だけのデータ)の場合,形式ごとにデータの扱いが異なります。

サイズが0のデータ(空ノードや空白だけのデータ)の場合の日付時刻の例を示します。

(例1)「YYMMDD」形式の場合

000101

(例2)「CCYYMMDD」形式の場合

20000101

(例3)「hhmmss」形式の場合

000000

(例4)「YYMMDDhhmmss」形式の場合

000101000000

(例5)「CCYYMMDDhhmmss」形式の場合

20000101000000

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

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

表4‒1 日付時刻型のパート

パート

意味

指定する桁数

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桁

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

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

表4‒2 データ型とパートの組み合わせ

データ型

組み合わせ

意味

日付型

CCYYMMDD

西暦年/月/日

YYMMDD

西暦年下2桁/月/日

時刻型

hhmmss

時/分/秒

日付時刻型

CCYYMMDDhhmmss

西暦年/月/日/時/分/秒

YYMMDDhhmmss

西暦年下2桁/月/日/時/分/秒

注※

日付型の「YYMMDD」形式の場合,指定できる範囲は西暦年換算で1951年〜2050年になります。

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

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

(例1)「2001年1月24日」の場合

20010124

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

991231013059