可変長フォーマット

可変長フォーマットとは、可変長データをフォーマット形式として扱うことのできる方法です。可変長フォーマットには「可変長のデリミタ指定」と「可変長の項目参照」があります。

= 備考 =

可変長フォーマットは、「項目タイプ」が"9"、"X"、"M"、"N"、"I"、"D"、"Z"のいずれかの場合にのみ指定できます。

(1) 可変長のデリミタ指定

データ区切りの識別用に任意のコードを指定し、この識別用コードを可変長データの終わりに必ずつけます。このような形式で指定する可変長フォーマットを「可変長のデリミタ指定」と呼びます。

たとえば、テキスト形式ファイルは、データ区切りの識別コードを改行コードとした可変長フォーマットと考えられます。

「可変長のデリミタ指定」はフォーマット情報の「固定長/可変長」で選択し、データ区切りの識別コードである「デリミタ値」と「デリミタ値」をカットするかどうかを指定します。

「デリミタ値」に指定するコードは、可変長データには使用されないコードを指定することをお勧めします。

また、入力時にデリミタの「カットする」を未選択の場合は、「可変長データ+デリミタ」がコード変換の対象になり、「デリミタ値」で指定したコードもコード変換されてしまいます。出力時は、コード変換後にデリミタを付加しますのでコード変換の対象にはなりません。

出力側の「デリミタ値」を指定しない場合、可変長データのデータ長がわからなくなってしまいます。データ長を出力するためには、マッピング情報設定画面-出力情報設定画面で、数値演算式 "$LEN()"または"$LENNUM()"を指定する必要があります。マッピング-出力情報の詳細は「DataMagic リファレンスマニュアル」を参照してください。

注意

デリミタにNULL文字(0x00)を使用する場合、入力時にデリミタを「カットする」を設定しないと、そこまでをデータとして判断します(「データ中のNULL文字の扱い」参照)。出力データにNULL文字(0x00)を付加する場合は、出力側の「デリミタ値」を設定してください。

表4.31 デリミタ指定一覧

 

出力側

設定する

設定しない

入力側

「カットする」を未選択

入力側のデリミタはカットされずに入力データとして処理されます。また、入力側にデリミタがない場合は、デリミタが付加されます。

このデリミタはコード変換処理の対象となります。

出力時に出力側のデリミタが付加されます。出力データの項目の終端は出力側のデリミタとなります。

入力側のデリミタはカットされずに入力データとして処理されます。また、入力側にデリミタがない場合は、デリミタが付加されます。

このデリミタはコード変換処理の対象となります。

項目の終端はコード変換されたデリミタとなります。

「カットする」を選択

出力時に出力側のデリミタが付加されます。

出力データの項目の終端は出力側のデリミタとなります。

デリミタは付加されません。

出力データは項目の終端が判別できません。

図4.124 可変長のデリミタ指定

(2) 可変長の項目参照

可変長データのデータ長を格納する任意の項目を指定し、この項目の値を参照して可変長データを処理します。このような形式で指定する可変長フォーマットを「可変長の項目参照」と呼びます。

たとえば、Mainframeで使用されている可変長レコードのRDWフィールドと同じ形式です。

「可変長の項目参照」はフォーマット情報の「固定長/可変長」で選択し、データ長を格納する任意の項目である「参照項目名」を指定します。

「参照項目名」に指定する項目は、以下の条件を満たしていなければなりません。

  • 「項目タイプ」が"9"、"B"、"F"、"S"、"P"、"Z"であること

    (「F」のときは、小数点以下を切り捨てて計算します)

  • 可変長データより前に存在していること

  • 第一階層であり、「繰り返し数」が"1"であること

  • 有効な項目であること

(3) 入力時の可変長の項目参照

入力時に「可変長の項目参照」を選択する場合は、「倍数項」と「定数項」を指定してください。可変長データのデータ長の計算式を以下に示します。

 

「参照項目名」で指定された領域に格納されている値 ×「倍数項」+「定数項」

 

データ加工は、上記の計算式で計算された値をデータ長として、可変長データを処理します。

図4.125 可変長の項目参照(入力時)

(4) 出力時の可変長の項目参照

出力時に「可変長の項目参照」を指定して入力側→出力側に関係線を結んだだけでは、「参照項目名」で指定した領域に、データ加工後のデータ長は出力されません。データ加工後のデータ長を出力させるには、マッピング情報設定画面-出力情報設定画面で数値演算式"$LEN()"を指定する必要があります。マッピング-出力情報の詳細は「DataMagic リファレンスマニュアル」を参照してください。

図4.126 可変長の項目参照(出力時)