ソートマージ

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

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サブオペランド
(2) calcサブオペランド
(3) posサブオペランド
(4) lenサブオペランド
(5) 桁の丸め方式サブオペランド
(6) paddingサブオペランド

(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サブオペランド」を参照してください。