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

[目次][用語][索引][前へ][次へ]

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

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

<この項の構成>
(1) 集団項目の記述形式
(2) 基本項目の記述形式
(3) フォーマットの設定方法
(4) 複合内容要素の設定方法
(5) 単純内容要素の設定方法
(6) COBOL登録集原文からバイナリフォーマット定義への変換例

(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 選択条件値]
[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 選択条件値]
[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 選択条件値]
[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 選択条件値]
[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 選択条件値]
[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 選択条件値]
[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 選択条件値]
[BASE64]
.
(g) BIT句によるビット列指定

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

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

(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句を記述しなかった場合の動作は次のとおりです。

(c) 選択構成

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

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

●選択種別に「選択条件ノード」を使用する場合
 
CHOOSE DEPENDING ON 選択条件ノード [ABSOLUTE]
 

●選択種別に「構成要素の開始セパレータ」を使用する場合
 
CHOOSE BY START-SEPARATOR
 
(d) 選択条件値

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

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

 
CASE 選択条件値
 

なお,バイト列,およびビット列の選択条件値を指定する場合,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) 詳細設定

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

●個別文字コード
個別文字コードを設定する場合,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.