Hitachi

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


4.5.3 データ項目の設定(サービスプラットフォームで独自に拡張した形式を使用する場合)

サービスプラットフォームで独自に拡張した形式を使用する場合のデータ項目の設定について説明します。

〈この項の構成〉

(1) 集団項目の記述形式

集団項目の記述形式を次に示します。

レベル番号 {データ名|FILLER}
[{CHARSET {'MS932'|'UTF8'|'UTF16_BIG'|'UTF16_LITTLE'|'JIS'|'EUC'|'EUC_HJ'|'KEIS_EBCDIK'|'KEIS_EBCDIC'|'KEIS'|'IBM_EBCDIC_LATIN'|'IBM_EBCDIC_KANA'|'IBM_CODE'|'JEF_EBCDIK'|'JEF_EBCDIC'|'JEF'|'CUSTOM'}|JAVA-ENCODING-CHARSET 文字コード}]
[ESCAPE-CHARACTER エスケープ文字]
[LINEFEED {LF|CRLF}]
[DELETE EXTRA-SEPARATORS]
[(SEPARATOR セパレータ名 セパレータ値)*]
[OCCURS {最小出現回数 [TO UNBOUNDED] [TIMES]|DEPENDING ON ノード [ABSOLUTE]}]
[SIZE DEPENDING ON ノード [ABSOLUTE] [CALC {SYSTEM|DATA|NODE}]]
[CHOOSE {DEPENDING ON ノード [ABSOLUTE]|BY START-SEPARATOR}]
[CASE 選択条件値 [CASE-DELIMITER 区切り文字]]
[START-SEPARATOR 開始セパレータ名]
[MIDDLE-SEPARATOR 中間区切りセパレータ名]
[TERMINAL-SEPARATOR 終了セパレータ名]
[{LITTLE-ENDIAN|BIG-ENDIAN}]
[CODE-TABLE-DIRECTORY-NAME コード変換テーブルの格納ディレクトリ名]
.

次のオプションはレコードで記述できます。

また,次のオプションはレコードで記述できません。

(2) 基本項目の記述形式

基本項目の記述方法はデータ型によって異なります。

基本項目の記述形式を次に示します。

(a) PICTURE句によるデータ型指定

PICTURE句で指定できるのは,固定長のデータ型だけです。

PICTURE句に指定できる文字については,「4.5.2(1) データ項目の記述形式」を参照してください。

レベル番号 {データ名|FILLER}
{PICTURE|PIC} [IS] 文字列
[[USAGE [IS]] {COMPUTATIONAL-3|COMP-3|COMPUTATIONAL|COMP|DISPLAY|NATIONAL}]
[{JUSTIFIED|JUST} {LEFT|RIGHT}]
[OCCURS {最小出現回数 [TO UNBOUNDED] [TIMES]|DEPENDING ON ノード [ABSOLUTE]}]
[CASE 選択条件値 [CASE-DELIMITER 区切り文字]]
[CHARSET {'MS932'|'UTF8'|'UTF16_BIG'|'UTF16_LITTLE'|'JIS'|'EUC'|'EUC_HJ'|'KEIS_EBCDIK'|'KEIS_EBCDIC'|'KEIS'|'IBM_EBCDIC_LATIN'|'IBM_EBCDIC_KANA'|'IBM_CODE'|'JEF_EBCDIK'|'JEF_EBCDIC'|'JEF'|'CUSTOM'}]
[EMBEDDING-CHARACTER {SPACE|NULL [TERMINATION]}]
[DELETE UNNECESSARY-CHARACTER]
.

(b) STRING句によるデータ型の指定

文字列型の単純内容要素に変換する場合,STRING句で指定します。

レベル番号 {データ名|FILLER}
STRING SIZE {整数|DEPENDING ON ノード [ABSOLUTE] 
[CALC{SYSTEM|DATA|NODE}]|UNTIL EOD}
[{JUSTIFIED|JUST} {LEFT|RIGHT}]
[OCCURS {最小出現回数 [TO UNBOUNDED] [TIMES]|DEPENDING ON ノード [ABSOLUTE]}]
[CASE 選択条件値 [CASE-DELIMITER 区切り文字]]
[CHARSET {'MS932'|'UTF8'|'UTF16_BIG'|'UTF16_LITTLE'|'JIS'|'EUC'|'EUC_HJ'|'KEIS_EBCDIK'|'KEIS_EBCDIC'|'KEIS'|'IBM_EBCDIC_LATIN'|'IBM_EBCDIC_KANA'|'IBM_CODE'|'JEF_EBCDIK'|'JEF_EBCDIC'|'JEF'|'CUSTOM'}]
[EMBEDDING-CHARACTER {SPACE|NULL [TERMINATION]}]
[DELETE UNNECESSARY-CHARACTER]
[CONVERT-LOW-VALUE]
.

(c) INTEGER句による整数型指定

整数型の単純内容要素に変換する場合,INTEGER句で指定します。

レベル番号 {データ名|FILLER}
INTEGER SIZE {整数|DEPENDING ON ノード [ABSOLUTE] 
[CALC{SYSTEM|DATA|NODE}]|UNTIL EOD}
[{JUSTIFIED|JUST} {LEFT|RIGHT}]
[OCCURS {最小出現回数 [TO UNBOUNDED] [TIMES]|DEPENDING ON ノード [ABSOLUTE]}]
[CASE 選択条件値 [CASE-DELIMITER 区切り文字]]
[CHARSET {'MS932'|'UTF8'|'UTF16_BIG'|'UTF16_LITTLE'|'JIS'|'EUC'|'EUC_HJ'|'KEIS_EBCDIK'|'KEIS_EBCDIC'|'KEIS'|'IBM_EBCDIC_LATIN'|'IBM_EBCDIC_KANA'|'IBM_CODE'|'JEF_EBCDIK'|'JEF_EBCDIC'|'JEF'|'CUSTOM'}]
[EMBEDDING-CHARACTER {ZERO|SPACE}]
[DELETE UNNECESSARY-CHARACTER]
[SIGN {NONE|MINUS-ONLY|ALWAYS}]
[CONVERT-LOW-VALUE]
.

(d) ZONE句およびPACK句によるゾーン形式数値およびパック形式数値の指定

ゾーン形式数値またはパック形式数値の単純内容要素に変換する場合,ZONE句またはPACK句で指定します。

レベル番号 {データ名|FILLER}
{ZONE|PACK} SIZE {整数|DEPENDING ON ノード [ABSOLUTE] 
[VALUE-UNIT※ {BYTES|DIGITS}] [CALC{SYSTEM|DATA|NODE}]|UNTIL EOD}
[OCCURS {最小出現回数 [TO UNBOUNDED] [TIMES]|DEPENDING ON ノード [ABSOLUTE]}]
[CASE 選択条件値 [CASE-DELIMITER 区切り文字]]
[DECIMAL-DIGITS 小数桁]
[SIGN {NONE|ALWAYS}]
.
注※

VALUE-UNITはパック形式数値の場合だけ指定できます。

(e) BINARY句による符号付2進数整数型または符号無2進数整数型の指定

符号付2進数整数型または符号無2進数整数型の単純内容要素に変換する場合,BINARY句で指定します。

レベル番号 {データ名|FILLER}
BINARY SIZE 整数
[OCCURS {最小出現回数 [TO UNBOUNDED] [TIMES]|DEPENDING ON ノード [ABSOLUTE]}]
[CASE 選択条件値 [CASE-DELIMITER 区切り文字]]
[SIGN {NONE|ALWAYS}]
.

(f) BYTE句によるバイト列指定

バイト列型の単純内容要素に変換する場合,BYTE句で指定します。

レベル番号 {データ名|FILLER}
BYTE SIZE {整数|DEPENDING ON ノード [ABSOLUTE] 
[CALC{SYSTEM|DATA|NODE}]|UNTIL EOD}
[OCCURS {最小出現回数 [TO UNBOUNDED] [TIMES]|DEPENDING ON ノード [ABSOLUTE]}]
[CASE 選択条件値 [CASE-DELIMITER 区切り文字]]
[BASE64]
.

(g) BIT句によるビット列指定

ビット列型の単純内容要素に変換する場合,BIT句で指定します。

レベル番号 {データ名|FILLER}
BIT SIZE {整数}
[OCCURS {最小出現回数 [TO UNBOUNDED] [TIMES]|DEPENDING ON ノード [ABSOLUTE]}]
[CASE 選択条件値 [CASE-DELIMITER 区切り文字]]
.

(3) フォーマットの設定方法

レコードの集団項目にオプションの句を定義することによって,バイナリフォーマット定義のフォーマットの各項目を設定できます。設定項目,句および省略時のデフォルト値を次に示します。

表4‒10 フォーマットの設定項目

設定項目

対応するCOBOLの句

デフォルト値

文字コード

Code Converterが提供するエンコーダーとデコーダーで使用する文字コード

CHARSET

(ウィザードで設定した文字コード)

Javaが提供するエンコーダーとデコーダーで使用する文字コード

JAVA-ENCODING-CHARSET

windows-31j

セパレータ

エスケープ文字

ESCAPE-CHARACTER

(設定しない)

改行文字

LINEFEED

CR+LF

不要なセパレータの削除

DELETE EXTRA-SEPARATORS

無効

セパレータの定義

SEPARATOR

2進整数のエンディアン

リトルエンディアン

LITTLE-ENDIAN

(ウィザードで設定したエンディアン)

ビッグエンディアン

BIG-ENDIAN

コード変換テーブル

格納ディレクトリ名

CODE-TABLE-DIRECTORY-NAME

(設定しない)

(凡例)

−:該当する値はありません。

(a) 文字コード

バイナリフォーマット定義の文字コードを指定できます。

●Code Converterが提供するエンコーダーとデコーダーを使用する場合

文字コードをCHARASET句で指定します。

文字コードはウィザード上でも指定できますが,COBOL登録集原文で設定した内容が優先されます。

●Javaが提供するエンコーダーとデコーダーを使用する場合

文字コードをJAVA-ENCODING-CHARSET句で指定します。

文字コードはjava.nio API用の正準名または別名で設定します。ただし,次に示す文字コード以外の文字コードが設定された場合の動作は保障されません。

  • windows-31j

  • UTF-8

  • UTF-16BE

  • UTF-16LE

  • ISO-2022-JP

  • EUC-JP

  • x-IBM939

  • x-IBM930

次に文字コードオプションの書式を示します。

[{CHARSET {'MS932'|'UTF8'|'UTF16_BIG'|'UTF16_LITTLE'|'JIS'|'EUC'|'EUC_HJ'|'KEIS_EBCDIK'|'KEIS_EBCDIC'|'KEIS'|'IBM_EBCDIC_LATIN'|'IBM_EBCDIC_KANA'|'IBM_CODE'|'JEF_EBCDIK'|'JEF_EBCDIC'|'JEF'|'CUSTOM'}|JAVA-ENCODING-CHARSET 文字コード}]

(b) セパレータの指定

バイナリフォーマット定義のセパレータを指定できます。

●エスケープ文字を指定する場合

エスケープ文字を,ESCAPE-CHARACTER句で指定します。

ESCAPE-CHARACTER句の書式を次に示します。

ESCAPE-CHARACTER エスケープ文字
●改行文字を指定する場合

セパレータで使用する改行コードを,LINEFEED句で指定します。

LINEFEED句の書式を次に示します。

LINEFEED {LF|CRLF}

改行コードには,次のどちらかを指定できます。

  • LF:LF(0x0A)

  • CRLF:CR+LF(0x0D0A)

●不要なセパレータの削除を指定する場合

不要なセパレータの削除を,DELETE EXTRA-SEPARATORS句で指定します。

DELETE EXTRA-SEPARATORS句の書式を次に示します。

DELETE EXTRA-SEPARATORS
●セパレータを定義する場合

セパレータを定義する場合,SEPARATOR句で指定します。

SEPARATOR句の書式を次に示します。

SEPARATOR セパレータ名 セパレータ値

セパレータ名は文字列,セパレータ値は16進定数で指定します。

(c) 2進整数のエンディアン

バイナリフォーマット定義の2進整数のエンディアンを指定できます。

2進整数のエンディアンはウィザード上で指定できますが,COBOL登録集原文で設定した内容が優先されます。

●リトルエンディアンを指定する場合

2進整数のエンディアンオプションでリトルエンディアンを指定するときの書式を次に示します。

LITTLE-ENDIAN
●ビッグエンディアンを指定する場合

2進整数のエンディアンオプションでビッグエンディアンを指定するときの書式を次に示します。

BIG-ENDIAN

(d) コード変換テーブル

バイナリフォーマット定義のコード変換テーブルの格納ディレクトリ名を指定できます。

コード変換テーブルの格納ディレクトリ名は,CODE-TABLE-DIRECTORY-NAME句で指定します。

CODE-TABLE-DIRECTORY-NAME句の書式を次に示します。

CODE-TABLE-DIRECTORY-NAME コード変換テーブルの格納ディレクトリ名

(4) 複合内容要素の設定方法

レコード以外の集団項目にオプションの句を定義することによって,バイナリフォーマット定義ファイルの複合内容要素の各項目を設定できます。設定項目,句および省略時のデフォルト値を次に示します。

表4‒11 複合内容要素の設定項目

設定項目

対応するCOBOLの句

デフォルト値

出現回数

OCCURS

1

サイズノード

SIZE

(設定しない)

選択構成

CHOOSE

逐次構成

選択条件値

CASE

(設定しない)

開始セパレータ

START-SEPARATOR

(設定しない)

中間区切りセパレータ

MIDDLE-SEPARATOR

(設定しない)

終了セパレータ

TERMINAL-SEPARATOR

(設定しない)

(a) 出現回数

出現回数を設定する場合,OCCURS句で指定します。

OCCURS句の書式を次に示します。

●出現回数を固定とする場合
OCCURS 出現回数 [TIMES]

出現回数には,1〜2147483647の整数を指定します。

●出現回数をデータの終端までとする場合
OCCURS 最小出現回数 TO UNBOUNDED [TIMES]

最小出現回数には,0または1を指定できます。

1を指定した場合,[構成要素タブ]-[出現回数]-[データの省略不可]オプションが有効になります。

0を指定した場合,[構成要素タブ]-[出現回数]-[データの省略不可]オプションが無効になります。

●出現回数を出現回数ノード指定とした場合

出現回数ノード指定の場合,出現回数ノードに指定する単純内容要素のデータ項目名に対応するデータ項目名を設定します。

OCCURS DEPENDING ON 出現回数指定データ項目名 [ABSOLUTE]

ABSOLUTE句を指定した場合は絶対パスとして扱われ,指定しない場合は基準パスとして扱われます。

(b) サイズ指定

サイズノードを設定する場合,SIZE句で指定します。

SIZE句の書式を次に示します。

●サイズノードで「サイズ算出方法」を使用しない場合
SIZE DEPENDING ON サイズノード指定データ項目名 [ABSOLUTE]
●サイズノードで「サイズ算出方法」を使用する場合
SIZE DEPENDING ON サイズノード指定データ項目名 [ABSOLUTE]
  CALC {SYSTEM|DATA|NODE}

ABSOLUTE句を指定した場合は絶対パスとして扱われ,指定しない場合は基準パスとして扱われます。

なお,CALC句を記述しなかった場合の動作は次のとおりです。

  • サイズノードが可変長の数値型の場合

    サイズ算出方法の指定なしとして扱われます。

  • サイズノードが固定長の数値型の場合

    CALC SYSTEMを指定したとして扱われます。

  • サイズノードがビット列型の場合

    CALC DATAを指定したとして扱われます。

    ビット列型のサイズノードに対してCALC句を指定した場合,構文エラーになります。

(c) 選択構成

構成区分に選択構成を設定する場合,CHOOSE句で指定します。CHOOSE句を記述しない場合,構成区分は逐次構成となります。

CHOOSE句の書式を次に示します。

●選択種別に「選択条件ノード」を使用する場合
CHOOSE DEPENDING ON 選択条件ノード [ABSOLUTE]
●選択種別に「構成要素の開始セパレータ」を使用する場合
CHOOSE BY START-SEPARATOR

(d) 選択条件値

選択条件値を設定する場合,CASE句で指定します。また,複数の選択条件値を設定するときは,CASE-DELIMITER句で区切り文字を指定します。

CASE句の書式を次に示します。

●選択条件値を設定する場合
CASE 選択条件値
●区切り文字を指定して複数の選択条件値を設定する場合
CASE 選択条件値 [CASE-DELIMITER 区切り文字]

CASE-DELIMITER句に指定した区切り文字を使用して,複数の選択条件値を設定できます。

COBOL登録集原文の定義例については「(7) 複数の選択条件値を設定する場合のCOBOL登録集原文の定義例」を参照してください。

なお,選択条件値と区切り文字は文字列定数であるため「'」で囲んで記述してください。バイト列,およびビット列の選択条件値を指定する場合も,16進数の値を「'」で囲む必要があります(16進定数ではありません)。また,区切り文字を使用して複数の選択条件値を指定する場合は,選択条件値全体を「'」で囲んで記述してください。

(e) 開始セパレータ

開始セパレータを設定する場合,START-SEPARATOR句で指定します。

START-SEPARATOR句の書式を次に示します。

START-SEPARATOR 開始セパレータ名

(f) 中間区切りセパレータ

中間区切りセパレータを設定する場合,MIDDLE-SEPARATOR句で指定します。

MIDDLE-SEPARATOR句の書式を次に示します。

MIDDLE-SEPARATOR 中間区切りセパレータ名

(g) 終了セパレータ

終了セパレータを設定する場合,TERMINAL-SEPARATOR句で指定します。

TERMINAL-SEPARATOR句の書式を次に示します。

TERMINAL-SEPARATOR 終了セパレータ名

(5) 単純内容要素の設定方法

基本項目にオプションの句を定義することによって,バイナリフォーマット定義ファイルの単純内容要素の各項目を設定できます。

なお,PICTURE句で型指定した場合と,PICTURE句以外で型指定した場合とで設定項目,句および省略時のデフォルト値が異なります。

表4‒12 単純内容要素の設定項目(PICTURE句で型指定した場合)

設定項目

対応するCOBOLの句

デフォルト値

出現回数

OCCURS

1

選択条件値

CASE

(設定しない)

個別文字コード

CHARSET

(設定しない)

左右寄せ

JUSTIFIED

埋め字

EMBEDDING-CHARACTER

スペース(空白文字)

不要文字の削除

DELETE UNNECESSARY-CHARACTER

不要文字を削除しない

表4‒13 単純内容要素の設定項目(PICTURE句以外で型指定した場合)

設定項目

対応するCOBOLの句

デフォルト値

出現回数

OCCURS

1

選択条件値

CASE

(設定しない)

個別文字コード

CHARSET

(設定しない)

左右寄せ

JUSTIFIED

右(整数型の場合)

左(文字列型の場合)

埋め字

EMBEDDING-CHARACTER

スペース(空白文字)

不要文字の削除

DELETE UNNECESSARY-CHARACTER

不要文字を削除しない

符号の有無

SIGN

なし

小数部桁数

DECIMAL-DIGITS

0

エンコード形式

BASE64

hexBinary

LOW-VALUEの変換

CONVERT-LOW-VALUE

変換しない

(a) 出現回数

[単純内容要素]の[出現回数]を設定します。可変長([データの終端まで],[出現回数ノード])も含みます。

出現回数を設定する場合,OCCURS句で指定します。

OCCURS句の書式を次に示します。

●出現回数を固定とする場合
OCCURS 出現回数 [TIMES]

出現回数には,1〜2147483647の整数を指定します。

●出現回数をデータの終端までとする場合
OCCURS 最小出現回数 TO UNBOUNDED [TIMES]

最小出現回数には,0または1を指定できます。

1を指定した場合,[構成要素タブ]-[出現回数]-[データの省略不可]オプションが有効になります。

0を指定した場合,[構成要素タブ]-[出現回数]-[データの省略不可]オプションが無効になります。

●出現回数を出現回数ノード指定とした場合

出現回数ノード指定の場合,出現回数ノードに指定する単純内容要素のデータ項目名に対応するデータ項目名を設定します。

OCCURS DEPENDING ON 出現回数指定データ項目名 [ABSOLUTE]

ABSOLUTE句を指定した場合は絶対パスとして扱われ,指定しない場合は基準パスとして扱われます。

(b) 選択条件値

選択条件値を設定する場合,CASE句で指定します。

CASE句の書式を次に示します。

CASE 選択条件値

なお,バイト列,およびビット列の選択条件値を指定する場合,16進数の定数を「'」で囲む必要があります。

(c) データ種別

データ種別の判定は,PICTURE句で型指定された基本項目の場合と,PICTURE句以外で型指定された基本項目の場合で,次のように異なります。

●PICTURE句で型指定された基本項目の場合

PICTURE句の文字列によって判定します。

●PICTURE句以外で型指定された基本項目の場合

SIZE句の前にある句によって判定します。

SIZE句の前の句と単純内容要素のデータ種別の関係を次に示します。

SIZE句の前の句

単純内容要素のデータ種別

INTEGER

整数

STRING

文字列

ZONE

ゾーン形式数値

PACK

パック形式数値

BYTE

バイト列

BINARY

符号付(無)2進整数

(d) サイズ指定

[単純内容要素]の[サイズ]を指定します。可変長([データの終端まで],[サイズノード])も含みます。

●PICTURE句での指定

PICTURE句での指定は,PICTURE句の文字列によって異なります。

PICTURE句に指定できる文字については,「4.5.2(1) データ項目の記述形式」を参照してください。

●PICTURE句以外での指定

PICTURE句以外の句で型指定された基本項目から変換する単純内容要素のサイズは,固定値のほか可変値(サイズノード指定,データの終端まで)にも対応します。

固定値の場合はバイト単位で記述します。ただし,ビット列型の場合はビット単位で記述します。

次に固定値の場合の書式を示します。

SIZE 整数

整数に指定できる値を次に示します。

型指定句

SIZE句で指定できる整数値

INTEGER,ZONE,BYTE

1〜2147483647

STRING

0〜2147483647

PACK

1〜1073741823

BINARY

1〜8

BIT

1〜64

注※

文字列型のSIZE句で0を指定した場合,サイズ以外で指定することができる項目は選択条件値(CASE句)だけです。サイズ,選択条件値以外の項目が指定されていた場合は構文エラー(KECT26020-E)になります。

●サイズノードの指定

サイズノードを設定する場合,SIZE句で指定します。サイズノードの指定で,ABSOLUTE句を指定した場合は絶対パスとして扱われ,指定しない場合は基準パスとして扱われます。

SIZE句の書式を次に示します。

<サイズノードで「サイズ算出方法」を使用しない場合>
SIZE DEPENDING ON サイズノード指定データ項目名 [ABSOLUTE]
<サイズノードで「サイズ算出方法」を使用する場合>
SIZE DEPENDING ON サイズノード指定データ項目名 [ABSOLUTE]
   CALC {SYSTEM|DATA|NODE}

なお,CALC句を記述しなかった場合の動作は次のとおりです。

  • サイズノードが可変長の数値型の場合

    サイズ算出方法の指定なしとして扱われます。

  • サイズノードが固定長の数値型の場合

    CALC SYSTEMを指定したとして扱われます。

  • サイズノードがビット列型の場合

    CALC DATAを指定したとして扱われます。

    ビット列型のサイズノードに対してCALC句を指定した場合,構文エラーになります。

  • サイズノード値の単位が桁数の場合

    CALC DATAを指定したとして扱われます。

<サイズノードで「サイズノード値の単位」を設定する場合>
PACK SIZE DEPENDING ON サイズノード指定データ項目名 [ABSOLUTE] VALUE-UNIT {BYTES|DIGITS}

なお,VALUE-UNIT句を記述しなかった場合の動作は次のとおりです。

  • サイズノードでパック形式数値型を設定した場合

    VALUE-UNIT BYTESを指定したとして扱われます。

  • サイズノードでパック形式数値型以外を設定した場合

    サイズノード値の単位の指定なしとして扱われます。

●その他の指定

サイズをデータの終端までとする場合の書式を次に示します。

SIZE UNTIL EOD

(e) 詳細設定

次の項目について説明します。

  • 個別文字コード

  • 左右寄せ

  • 埋め字

  • 不要文字

  • 小数部桁数

  • 符号の有無

  • エンコード形式

  • LOW-VALUEの変換

●個別文字コード

個別文字コードを設定する場合,CHARSET句で指定します。

また,複合内容要素の直下にある単純内容要素の個別文字コードを一括で設定する場合,レコード以外の集団項目にCHARSET句を指定します。

CHARSET句の書式を示します。

[CHARSET {'MS932'|'UTF8'|'UTF16_BIG'|'UTF16_LITTLE'|'JIS'|'EUC'|'EUC_HJ'|'KEIS_EBCDIK'|'KEIS_EBCDIC'|'KEIS'|'IBM_EBCDIC_LATIN'|'IBM_EBCDIC_KANA'|'IBM_CODE'|'JEF_EBCDIK'|'JEF_EBCDIC'|'JEF'|'CUSTOM'}]
●左右寄せ

左右寄せを設定する場合,JUSTIFIED句で指定します。

JUSTIFIED句の書式を示します。

{JUSTIFIED|JUST} {LEFT|RIGHT}

なお,EMBEDDING-CHARACTER句でZEROが指定されている場合,LEFTは指定できません。

●埋め字

埋め字を設定する場合,EMBEDDING-CHARACTER句で指定します。

EMBEDDING-CHARACTER句の書式を示します。

<文字列型の場合>
EMBEDDING-CHARACTER {SPACE | NULL [TERMINATION]}
<整数型の場合>
EMBEDDING-CHARACTER {ZERO | SPACE}

埋め字には,次のどれかを指定できます。

  • ZERO:0

  • SPACE:空白文字

  • NULL:0x00

NULLを指定した場合に,TERMINATION句を記述すると「空文字(0x00)までをデータとする」オプションが有効となります。

なお,JUSTIFIED句でLEFTが指定されている場合,ZEROは指定できません。

●不要文字

不要文字の設定項目に「不要文字の削除」を設定する場合,DELETE句およびUNNECESSARY-CHARACTER句で指定します。

「不要文字の削除」を設定する場合の書式を次に示します。

DELETE UNNECESSARY-CHARACTER

DELETE句およびUNNECESSARY-CHARACTER句を記述しない場合,不要文字の設定項目に「不要文字を削除しない」が設定されます。

●小数部桁数

小数部桁数を設定する場合,DECIMAL-DIGITS句で指定します。

DECIMAL-DIGITS句の書式を示します。

DECIMAL-DIGITS 小数部桁数
●符号の有無

符号の有無を設定する場合,SIGN句で指定します。

SIGN句の書式を示します。

<整数型の場合>
SIGN {NONE|MINUS-ONLY|ALWAYS}
<パック形式数値,ゾーン形式数値,または符号付(無)2進整数の場合>
SIGN {NONE|ALWAYS}

符号の有無には,次のどれかを指定できます。

  • NONE:符号なし

  • MINUS-ONLY:負の符号だけあり

  • ALWAYS:常に符号あり

●エンコード形式

バイト列のエンコード形式を設定する場合,BASE64句で指定します。

BASE64句の書式を次に示します。

BASE64

BASE64句を記述しない場合,「hexBinary」が設定されます。

●LOW-VALUEの変換

LOW-VALUEの変換を設定する場合,CONVERT-LOW-VALUE句で指定します。

CONVERT-LOW-VALUE句の書式を次に示します。

CONVERT-LOW-VALUE

CONVERT-LOW-VALUE句の指定がない場合,LOW-VALUEの変換をしない設定となります。

CONVERT-LOW-VALUE句の定義がある場合でも,次の条件に一致しなければ構文エラーとなります。

  • 文字列型の場合

    SIZE句が整数(固定長かつ0でない),かつEMBEDDING-CHARACTER句がSPACE

  • 整数型の場合

    SIZE句が整数(固定長)

(6) COBOL登録集原文からバイナリフォーマット定義への変換例

構文拡張したCOBOL登録集原文からバイナリフォーマット定義への変換例を示します。

(a) 変換例1

[図データ]

●バイナリフォーマット定義の内容

要素名

区分

設定内容

Cobol2FdxTool-Ex01

フォーマット

文字コード:UTF8

セパレータの設定:

エスケープ文字:@

改行指定:LF

不要なセパレータの削除:有効

root

複合内容要素

構成区分:逐次構成

simple-str

単純内容要素

データ種別:文字列

サイズ:1バイト

個別文字コード:JIS

埋め字:空文字(0x00)

左右寄せ:右

complex-1

複合内容要素

構成区分:逐次構成

セパレータの定義:

Sepa-1:0xAA

中間区切りセパレータ名:Sepa-1

simple-int1

単純内容要素

データ種別:整数

サイズ:可変(データの終端まで)

符号の有無:負だけあり

埋め字:0

simple-int2

単純内容要素

データ種別:整数

サイズ:可変(データの終端まで)

符号の有無:負だけあり

左右寄せ:左

simple-str

単純内容要素

データ種別:文字列

サイズ:可変(データの終端まで)

左右寄せ:左

simple-pack

単純内容要素

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

サイズ:可変(データの終端まで)

simple-byte

単純内容要素

データ種別:バイト列

サイズ:1バイト

●COBOL登録集原文の内容

  01 root CHARSET 'UTF8' ESCAPE-CHARACTER '@'
          LINEFEED LF DELETE EXTRA-SEPARATORS SEPARATOR 'Sepa-1' X'AA'.
    03 simple-str STRING SIZE 1 JUSTIFIED RIGHT CHARSET 'JIS' EMBEDDING-CHARACTER NULL.
    03 complex-1 MIDDLE-SEPARATOR 'Sepa-1'.
      05 simple-int1 INTEGER SIZE UNTIL EOD EMBEDDING-CHARACTER ZERO SIGN MINUS-ONLY.
      05 simple-int2 INTEGER SIZE UNTIL EOD JUSTIFIED LEFT SIGN MINUS-ONLY.
      05 simple-str STRING SIZE UNTIL EOD.
      05 simple-pack PACK SIZE UNTIL EOD.
      05 simple-byte BYTE SIZE 1.

(b) 変換例2

[図データ]

●バイナリフォーマット定義の内容

要素名

区分

設定内容

root

複合内容要素

構成区分:逐次構成

complex-1

複合内容要素

構成区分:選択構成

選択種別:構成要素の開始セパレータ

セパレータの定義:

Sepa-1:0xAA

Sepa-2:0xBB

Sepa-3:0xCC

開始セパレータ:Sepa-1

中間区切りセパレータ:Sepa-2

終了セパレータ:Sepa-3

simple-int

単純内容要素

データ種別:整数

サイズ:可変(データの終端まで)

●COBOL登録集原文の内容

  01 root SEPARATOR 'Sepa-1' X'AA' SEPARATOR 'Sepa-2' X'BB' SEPARATOR 'Sepa-3' X'CC'.
    03 complex-1 CHOOSE BY START-SEPARATOR
       START-SEPARATOR 'Sepa-1' MIDDLE-SEPARATOR 'Sepa-2'
       TERMINAL-SEPARATOR 'Sepa-3'.
       05 simple-int INTEGER SIZE UNTIL EOD.

(c) 変換例3

[図データ]

●バイナリフォーマット定義の内容

要素名

区分

設定内容

root

複合内容要素

size-node

単純内容要素

データ種別:整数

サイズ:4バイト

occurs-node

単純内容要素

データ種別:整数

サイズ:4バイト

choose-node

単純内容要素

データ種別:整数

サイズ:1バイト

complex-choose

複合内容要素

構成区分:選択構成

選択種別:選択条件ノード

選択条件ノード:root/choose-node

(絶対パス)

simple-str

単純内容要素

データ種別:文字列

サイズ:可変(サイズノード)

サイズノード:root/size-node

(絶対パス)

選択条件値:1

simple-pack

単純内容要素

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

サイズ:可変(サイズノード)

サイズノード:root/size-node

(絶対パス)

complex-occurs

複合内容要素

構成区分逐次構成

出現回数ノード:root/occurs-node

(絶対パス)

simple-str

単純内容要素

データ種別:文字列

サイズ:可変(サイズノード)

サイズノード:root/size-node

(絶対パス)

(凡例)

−:該当しません。

●COBOL登録集原文の内容

  01 root.
    03 size-node INTEGER SIZE 4.
    03 occurs-node INTEGER SIZE 4.
    03 choose-node INTEGER SIZE 1.
    03 complex-choose CHOOSE DEPENDING ON choose-node ABSOLUTE.
      05 simple-str STRING SIZE DEPENDING ON size-node ABSOLUTE CASE '1'.
      05 simple-pack PACK SIZE DEPENDING ON size-node ABSOLUTE.
    03 complex-occurs OCCURS DEPENDING ON occurs-node ABSOLUTE.
      05 simple-str STRING SIZE DEPENDING ON size-node ABSOLUTE.

(d) 変換例4

[図データ]

●バイナリフォーマット定義の内容

要素名

区分

設定内容

root

複合内容要素

complex-1

複合内容要素

size-node

単純内容要素

データ種別:整数

サイズ:4バイト

simple-str

単純内容要素

データ種別:文字列

サイズ:可変(サイズノード)

サイズノード:complex-1/size-node

(基準パス)

(凡例)

−:該当しません。

●COBOL登録集原文の内容

  01 root.
    03 complex-1.
      05 size-node INTEGER SIZE 4.
      05 simple-str STRING SIZE DEPENDING ON size-node.

(e) 変換例5

[図データ]

●バイナリフォーマット定義の内容

要素名

区分

設定内容

root

複合内容要素

simple-int

単純内容要素

データ種別:整数

サイズ:8バイト

出現回数:固定(3回)

simple-str

単純内容要素

データ種別:文字列

サイズ:8バイト

出現回数:データの終端まで

(データの省略不可)

(凡例)

−:該当しません。

●COBOL登録集原文の内容

01 root.
    05 simple-int INTEGER SIZE 8 OCCURS 3.
    05 simple-str STRING SIZE 8 OCCURS 1 TO UNBOUNDED.

(f) 変換例6

[図データ]

●バイナリフォーマット定義の内容

要素名

区分

設定内容

root

複合内容要素

simple-int

単純内容要素

データ種別:整数

サイズ:8バイト

出現回数:データの終端まで

(データの省略不可)

simple-str

単純内容要素

データ種別:文字列

サイズ:8バイト

出現回数:データの終端まで

(データの省略可)

(凡例)

−:該当しません。

●COBOL登録集原文の内容

  01 root.
      05 simple-int INTEGER SIZE 8 OCCURS 1 TO UNBOUNDED.
      05 simple-str STRING SIZE 8 OCCURS 0 TO UNBOUNDED.

(g) 変換例7

[図データ]

●バイナリフォーマット定義の内容

要素名

区分

設定内容

root

複合内容要素

2進整数のエンディアン:ビッグエンディアン

simple-bin

単純内容要素

データ種別:符号無2進整数

サイズ:4バイト

●COBOL登録集原文の内容

  01 root BIG-ENDIAN.
      05 simple-bin PIC 9(8) COMP.

(7) 複数の選択条件値を設定する場合のCOBOL登録集原文の定義例

COBOL登録集原文では,集団項目にCHOOSE句(選択構成)を記述し,DEPENDING ON句で選択条件ノードを指定してください。次に集団項目の配下の項目でCASE句,およびCASE-DELIMITER句を使用して選択条件値を指定してください。定義例を次に示します。

●COBOL登録集原文の内容

  01 root.
    03 id STRING SIZE 3.
    03 complex CHOOSE DEPENDING ON id.
      05 A STRING SIZE 1 CASE 'aaa,bbb,ccc' CASE-DELIMITER ','.
      05 B INTEGER SIZE 1 CASE 'ddd'.
      05 C BYTE SIZE 1.

上記のCOBOL登録集原文でバイナリフォーマット定義ファイルを生成した場合,バイナリフォーマット定義エディタでは次の設定となります。

図4‒8 COBOL登録集原文から生成したバイナリフォーマット定義

[図データ]