ソートマージ


5.32.3 formatオペランド

意味

入力ファイル編成が固定長順またはテキストの場合の,出力レコードのフォーマットを定義します。

formatオペランドは出力フィールド(項目)単位に指定します。

項目の詳細をサブオペランドで指定します。

指定されたformatオペランドの順にデータを挿入し,出力レコードを作成します。

【例】

出力レコードが項目1から項目3まである場合,formatオペランドは3個指定します。

項目1,項目2,項目3

format=・・・・ 項目1の定義

format=・・・・ 項目2の定義

format=・・・・ 項目3の定義

形式
format={  val{ (alias-name.field-name)|(alias-name)|(insertdata) }
         |calc(calculation formula) }
       [△pos(position) ]
       [△len(length) ]
       [△rounding-method ]
       [△padding(C'padding-character'|X'hex-digit') ]
  • valまたはcalcのどちらかを必ず指定します。

  • pos,len,rounding-method,およびpaddingは省略できます。

  • calcを指定した場合,lenは必ず指定します。

  • val(別名)およびval(挿入データ)を指定した場合,lenは指定できません。

  • val(別名.フィールド名)でlenを省略した場合,挿入するデータ長はフィールドで定義した長さとします。

  • 1つのformatオペランドは複数行にわたって記述できます。また,1行に複数のサブオペランドを指定できます。ただし,1つのサブオペランドは複数行にわたって記述できません。

  • formatオペランドをダブルクォーテーション(")で囲まないでください。

  • 指定できるformatオペランドの個数は,環境ファイル「EXS_FORMATNUMMAX」で指定できます。環境ファイル「EXS_FORMATNUMMAX」については,「15.1.1(29) EXS_FORMATNUMMAX【SORT EE(64) 09-00以降】」を参照してください。

  • 挿入位置は,formatオペランド間で昇順となるように指定してください。昇順となっていない場合,KBLS2414-Eエラーとなります。

〈この項の構成〉

(1) valサブオペランド

意味

出力レコードへ挿入するフィールドや挿入データを指定します。

形式
val{ (alias-name.field-name)|(alias-name)|(insertdata) }
指定値

valに指定する内容を次の表に示します。

表5‒77 valに指定する内容

項目

指定値

(alias-name.field-name)

aliasオペランドで指定された別名が示すファイルから,fieldオペランドで指定されたフィールド名のフィールドのデータを挿入します。

(alias-name)

1レコードを挿入します。

(insertdata)

指定されたデータを挿入します。

指定できるフィールド名の属性を次の表に示します。

表5‒78 指定できるフィールド名の属性

指定できる属性※1

属性コード

文字

文字(JIS8単位コード)

j

文字

c

文字(文字順序変更機能で指定した文字)

q

文字(ワイド文字)※2

w

文字(マルチバイト文字)※2

u

文字(マルチバイト文字で,UnicodeのIVSに対応した属性)※2

v

文字(左分離符号付き数字)

d

2進数

符号付き固定小数点2進数

n

符号なし2進数(0から始まる整数)

m

内部浮動小数点

f

10進数

内部10進数

p

外部10進数

z

左符号付き外部10進数

x

右分離符号付き外部10進数

s

左分離符号付き外部10進数

t

日付

日付(英数字)

g

注※1

データの形式については,「3.2 キー属性と形式」を参照してください。

注※2

テキストファイルだけ指定できます。

挿入データの指定内容を次の表に示します。

表5‒79 挿入データ指定内容

指定値

指定内容

C'文字列'

任意の文字列(改行文字は指定できません)

X'16進数'

「0〜9」,「A〜F」,「a〜f」の偶数桁の16進数

注意事項
  • 挿入文字データ(C'nn')の中にシングルクォーテーション(')または円記号(\)のどちらかを指定する場合は,選択条件式の文字条件値と同じように指定してください。選択条件式の書き方については,「4.5.3 選択条件式の書き方」を参照してください。

  • テキストファイルの場合,X'16進数'の中に改行コードを含むことはできません。

  • 文字挿入データ「C'文字'」に日本語(マルチバイト文字)を含む場合,パラメタファイルに記述されたcode文で指定された文字コードから,入力ファイルパラメタのcodetypeに指定されたエンコードに変換し挿入します。エンコードに変換できなかった場合,KBLS2409-Eエラーとなります。

  • 入力フィールドに実レコードを超える範囲を指定した場合でもエラーとはなりません。また,lenの指定によって,挿入する長さも異なります。挿入するデータについて,次の表と図に示します。

    表5‒80 フォーマットの挿入データ

    len指定

    比較

    フォーマットの挿入データ

    なし

    実>P

    フィールドに指定された長さ分,データを挿入

    実<P+L

    実レコード長の範囲にあるデータだけ挿入

    実<P

    フィールドに指定された長さ分,パディング

    あり

    実>P

    lenで指定された長さ分,データを挿入

    実<P+L

    実レコード長の範囲にあるデータを挿入し,lenに足りない分はパディング

    実<P

    lenで指定された長さ分,パディング

    (凡例)

    実:実レコード長

    P:入力フィールドの開始位置

    L:入力フィールド長

    図5‒14 フォーマットの挿入データ

    [図データ]

  • 外部結合や完全結合で,結合条件が一致しなかったレコードまたはフィールドの挿入時の扱いについて,次の表に示します。

    表5‒81 結合条件が一致しなかったレコードまたはフィールド挿入時の扱い

    val指定

    挿入位置

    結合条件が一致しなかったレコードまたはフィールド挿入時の扱い

    (insertdata)

    出力レコードの先頭

    エラー。

    出力レコードの中間

    エラー。

    出力レコードの最終

    • 固定長順編成ファイルの場合

      指定されたパディング文字を,レコードの長さ分出力する。

    • テキストファイルの場合

      出力しない。

    出力するパディング文字については,「5.32.10 paddingオペランド」を参照してください。

    (alias-name.field-name)数値属性

    任意の個所

    ゼロ(0x30)を出力する。

    【出力する長さの優先順位】

    1. lenで指定された長さ

    2. 指定されたフィールドの長さ

    (alias-name.field-name)文字属性

    任意の個所

    指定されたパディング文字を出力する。

    【出力する長さの優先順位】

    1. lenで指定された長さ

    2. 指定されたフィールドの長さ

    出力するパディング文字については,「5.32.10 paddingオペランド」を参照してください。

(2) calcサブオペランド

意味

計算式,および挿入する数値データを指定します。詳細は,「5.10.14(2) calcサブオペランド」を参照してください。

形式
calc = { calculation formula | alias-name.field-name | 数値 }
指定値

calcに指定する内容を次の表に示します。

表5‒82 calcで指定できる内容

項目

指定値

calculation formula

指定された計算式の演算結果を挿入します。

alias-name.field-name

aliasオペランドで指定された別名が示すファイルから,fieldオペランドで指定されたフィールド名のフィールドのデータを挿入します(10進数項目)。

数値

指定された数値データを挿入します。

符号付き数値は,括弧で囲みます。

計算式に指定できる組み合わせを次の表に示します。

表5‒83 計算式に指定できる組み合わせ

指定種類

指定例

10進数項目と10進数項目

10進数項目A+10進数項目B

10進数項目と数値

10進数項目A*100

数値と数値

100*0.25

100*(-0.25)

注※

fieldオペランドで指定された10進数項目のフィールド名を示します。

計算式に指定できる10進数項目を次の表に示します。

表5‒84 計算式に指定できる10進数項目

ファイル編成

10進数項目

属性コード

固定長順編成ファイル(S)

テキストファイル(A)

内部10進数

p

外部10進数

z

左符号付き外部10進数

x

右分離符号付き外部10進数

s

左分離符号付き外部10進数

t

注※

データの形式については,「3.2 キー属性と形式」を参照してください。

計算式に指定できる内容を次の表に示します。

表5‒85 計算式で指定できる内容

指定内容

意味

指定最大

+(加算),-(減算),*(乗算),/(除算)

演算子

該当しない

「0〜9」の数字

数値データ

16個

( ),

({+|- } 「0〜9」の数字)

優先順位,符号付き数値

24ネスト

alias-name.field-name

fieldオペランドで指定された,10進数項目のフィールド名

16個

注※

レコード中の値を演算に使用する場合に指定します。

注意事項
  • 計算式にフィールド名を2つ以上使用する場合,フィールドの属性は同じであること。

  • 符号付き数字は()で囲みます。また,符号は数字の前に指定します。

    (例)(+3),(-3)

  • 演算結果を挿入するフィールド属性の形式を,次の表に示します。

    表5‒86 挿入するフィールド属性の形式

    field-name指定

    演算結果を挿入するフィールド属性

    あり

    入力レコードのフィールド属性の形式を継承

    なし

    外部10進数

  • 0除算の場合はKBLS2424-Eエラーとなります。

  • 数値項目のデータに形式以外のデータ(数値以外)があった場合,KBLS2413-Eエラーとなります。

  • lenサブオペランドは必ず指定してください。

(3) posサブオペランド

出力フィールドの出力位置を指定します。

詳細については,「5.10.14(3) posサブオペランド」を参照してください。

(4) lenサブオペランド

出力フィールドの長さを指定します。

詳細については,「5.10.14(4) lenサブオペランド」を参照してください。

(5) 桁の丸め方式サブオペランド

数値属性の入力フィールドに対する桁丸め(端数処理)方式を指定します。

詳細については,「5.10.14(5) 桁の丸め方式サブオペランド」を参照してください。

(6) paddingサブオペランド

文字属性の入力フィールドに対するパディング文字を指定します。

詳細については,「5.10.14(6) paddingサブオペランド」を参照してください。