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
挿入データの指定内容を次の表に示します。
表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で指定された長さ分,パディング
図5‒14 フォーマットの挿入データ -
外部結合や完全結合で,結合条件が一致しなかったレコードまたはフィールドの挿入時の扱いについて,次の表に示します。
表5‒81 結合条件が一致しなかったレコードまたはフィールド挿入時の扱い val指定
挿入位置
結合条件が一致しなかったレコードまたはフィールド挿入時の扱い
(insertdata)
出力レコードの先頭
エラー。
出力レコードの中間
エラー。
出力レコードの最終
-
固定長順編成ファイルの場合
指定されたパディング文字を,レコードの長さ分出力する。
-
テキストファイルの場合
出力しない。
出力するパディング文字については,「5.32.10 paddingオペランド」を参照してください。
(alias-name.field-name)数値属性
任意の個所
ゼロ(0x30)を出力する。
【出力する長さの優先順位】
-
lenで指定された長さ
-
指定されたフィールドの長さ
(alias-name.field-name)文字属性
任意の個所
指定されたパディング文字を出力する。
【出力する長さの優先順位】
-
lenで指定された長さ
-
指定されたフィールドの長さ
出力するパディング文字については,「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)
計算式に指定できる10進数項目を次の表に示します。
表5‒84 計算式に指定できる10進数項目 ファイル編成
10進数項目※
属性コード
固定長順編成ファイル(S)
テキストファイル(A)
内部10進数
p
外部10進数
z
左符号付き外部10進数
x
右分離符号付き外部10進数
s
左分離符号付き外部10進数
t
計算式に指定できる内容を次の表に示します。
表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サブオペランドは必ず指定してください。
-