- 意味
- 入力レコード編集フォーマットを指定します。
- 入力レコード中の編集する範囲(以降,編集フィールドと呼びます)を指定した位置に置くことで,レコード形式を再編成する機能です。
- 編集フィールドは,指定した順序に従って,順に前の編集フィールドの後方に隣接して置かれます。次の図に示すように,編集フィールドの一部または全部が重なり合う指定もできます。
図5-6 編集フィールドの指定例
![[図データ]](FIGURE/ZX010180.GIF)
- 固定長レコードの場合は,編集フィールドがレコード内にすべて含まれている必要があります。
- また可変長レコードの場合は,編集フィールドのバイト長を指定しなかった編集フィールドを除き,編集フィールドが実レコード内にすべて含まれている必要があります。
- 編集フィールドの指定例を次に示します。
(a) 固定長レコードの場合の例
例1:開始バイト位置<レコード長,かつ開始バイト位置+編集フィールド長≦レコード長
例2:開始バイト位置<レコード長,かつ開始バイト位置+編集フィールド長>レコード長
例3:開始バイト位置=レコード長
例4:開始バイト位置>レコード長
図5-7 固定長レコードの場合の指定例
![[図データ]](FIGURE/ZX010190.GIF)
(b) 可変長レコードおよびテキストの場合の例
- (1)編集フィールド長が指定されている場合
- 例1:開始バイト位置<レコード長,かつ開始バイト位置+編集フィールド長≦レコード長
- 例2:開始バイト位置<レコード長,かつ開始バイト位置+編集フィールド長>レコード長
- 例3:開始バイト位置=レコード長
- 例4:開始バイト位置>レコード長
図5-8 可変長レコードおよびテキストの場合の指定例(編集フィールド長指定あり)
![[図データ]](FIGURE/ZX010200.GIF)
- (2)編集フィールド長が指定されていない場合
- 例1:開始バイト位置≦レコード長−1
- 例2:開始バイト位置=レコード長
- 例3:開始バイト位置>レコード長
図5-9 可変長レコードおよびテキストの場合の指定例(編集フィールド長指定なし)
![[図データ]](FIGURE/ZX010210.GIF)
- reorgオペランド以外に,中間レコード(ソート,マージ,コピー結果)と,出力レコードに対してレコード編集を指定するパラメタ・オペランドがあります。レコード編集の種類によって,入力レコードと異なった位置にキーや項目を再編成するような場合は注意が必要となります。
- ソートキー,マージキー,集約キー,比較項目,および集約項目の位置(範囲)は,「付録F レコード編集処理で基になるレコード(SORT EEの機能)」に示す規則に従って指定してください。
- 形式
reorg=reorganization-format [△reorganization-format …]
- 指定できるフォーマットの個数は,1〜128個です。
- 指定値
- reorganization-formatの形式を次に示します。
- reorganization-formatオペランド形式1
[insertpos]+pos[−len][boundary]
- 入力レコード中の編集フィールドおよび挿入位置を指定します。
- [insertpos]+pos[−len][boundary]は必ず続けて指定してください。それぞれの値の間に空白やタブを指定しないでください。
- [insertpos]+pos[−len][boundary]を複数指定する場合は,1個以上の空白またはタブで区切って指定します。
- reorganization-formatオペランド形式2
[insertpos]+insertdata−cnt
- 挿入データ形式および挿入位置を指定します。
- [insertpos]+insertdata−cntは必ず続けて指定してください。それぞれの値の間に空白やタブを指定しないでください。
- [insertpos]+insertdata−cntを複数指定する場合は,1個以上の空白またはタブで区切って指定します。
- reorganization-formatに指定するそれぞれの値について次に示します。
- insertpos
- 編集フィールド,および挿入データ(文字列,16進数,または空白)の挿入開始バイト位置を5桁以内の数字で指定します。
- 前の編集フィールドや挿入データと重なる位置は指定できません。
- 前の編集フィールドまたは挿入データとの間に間隔が生じる場合には,空白を埋め込みます。
- -locatajstパラメタを指定したかどうかによって,レコード先頭の解釈が異なります。また,テキストファイルの場合は,入力データのエンコードによって指定範囲が異なります。挿入開始バイト位置に指定できる値の範囲を次の表に示します。
ファイル編成 |
-locatajstパラメタ |
指定あり |
指定なし |
固定長順編成ファイル |
1〜65,535 |
0〜65,534 |
可変長順編成ファイル |
1または5〜65,539※1 |
テキストファイル※2 |
改行文字
「LF」 |
ASCII
SJIS
EUC-JP
EUC-HJ
UTF-8 |
1〜65,535 |
UCS-2LE
UCS-2BE
UTF-16LE
UTF-16BE |
1〜65,533
(2の倍数+1※3) |
0〜65,532
(2の倍数※3) |
UCS-4LE
UCS-4BE
UTF-32LE
UTF-32BE |
1〜65,529
(4の倍数+1※4) |
0〜65,528
(4の倍数※4) |
改行文字
「CRLF」 |
ASCII
SJIS
EUC-JP
EUC-HJ
UTF-8 |
1〜65,534 |
0〜65,533 |
UCS-2LE
UCS-2BE
UTF-16LE
UTF-16BE |
1〜65,531
(2の倍数+1※3) |
0〜65,530
(2の倍数※3) |
UCS-4LE
UCS-4BE
UTF-32LE
UTF-32BE |
1〜65,525
(4の倍数+1※4) |
0〜65,524
(4の倍数※4) |
- 注※1
- レコードの前の4バイト領域(RDW:レコードヘッダ)の先頭が1となります。
- 注※2
- 入力レコードの改行文字については,「5.8.7 recsepaオペランド」を参照してください。また,入力データのエンコードについては,「5.8.13 codetypeオペランド」を参照してください。
-
- 注※3
- 2の倍数(-locatajstパラメタを同時に指定している場合は「2の倍数+1」)以外を指定すると,KBLS1500-Eメッセージが表示されてエラーになります。
-
- 注※4
- 4の倍数(-locatajstパラメタを同時に指定している場合は「4の倍数+1」)以外を指定すると,KBLS1500-Eメッセージが表示されてエラーになります。
- 2番目以降の編集フィールドの挿入開始バイト位置を省略した場合,直前の編集フィールドに隣接して配置します。
- 先頭の編集フィールドの挿入開始バイト位置を省略した場合,挿入開始バイト位置の仮定値を次の表に示します。
ファイル編成 |
-locatajstパラメタ |
指定あり |
指定なし |
固定長順編成ファイル |
1 |
0 |
可変長順編成ファイル |
1または5※ |
0 |
テキストファイル |
1 |
0 |
- 注※
- 編集フィールドのデータ位置(+pos)に1を指定した場合は1を仮定し,1以外を指定した場合は5を仮定します。
- +pos
- 編集フィールドのデータ位置を,5桁以内の数字で指定します。なお,-locatajstパラメタを指定したかどうかによって,レコード先頭の解釈が異なります。
- 入力データのエンコードに「UCS-2LE」,「UCS-2BE」,「UTF-16LE」,「UTF-16BE」または「UNICODE(入力ファイルのUnicodeシグニチャ(BOM)の形式がUTF-16LEまたはUTF-16BE)」を指定した場合,データ位置には「2の倍数」を指定してください。2の倍数以外を指定すると,KBLS1503-Eメッセージが表示されてエラーになります。なお,-locatajstパラメタを同時に指定している場合は,「2の倍数+1」を指定してください。
- 入力データのエンコードに「UCS-4LE」,「UCS-4BE」,「UTF-32LE」,「UTF-32BE」または「UNICODE(入力ファイルのUnicodeシグニチャ(BOM)の形式がUTF-32LEまたはUTF-32BE)」を指定した場合,データ位置には「4の倍数」を指定してください。4の倍数以外を指定すると,KBLS1503-Eメッセージが表示されてエラーになります。なお,-locatajstパラメタを同時に指定している場合は,「4の倍数+1」を指定してください。
- データ位置に指定できる値の範囲は,insertposの挿入開始バイト位置に指定できる値の範囲と同じです。
- −len
- 編集フィールドのバイト長を,5桁以内の数字で指定します。
- 入力ファイルが可変長順編成ファイル,またはテキストファイルの場合,最後の編集フィールドに限りバイト長を省略できます。省略した場合,指定したデータ位置から実レコードの最後までを編集フィールドとして扱います。
- 編集フィールドのバイト長に指定できる範囲を次の表に示します。
ファイル編成 |
-locatajstパラメタ |
指定あり |
指定なし |
固定長順編成ファイル |
1〜65,535 |
1〜65,535 |
可変長順編成ファイル |
1〜65,539 |
テキストファイル※1 |
改行文字
「LF」 |
ASCII
SJIS
EUC-JP
EUC-HJ
UTF-8 |
1〜65,535 |
UCS-2LE
UCS-2BE
UTF-16LE
UTF-16BE |
2〜65,534
(2の倍数※2) |
2〜65,534
(2の倍数※2) |
UCS-4LE
UCS-4BE
UTF-32LE
UTF-32BE |
4〜65,532
(4の倍数※3) |
4〜65,532
(4の倍数※3) |
改行文字
「CRLF」 |
ASCII
SJIS
EUC-JP
EUC-HJ
UTF-8 |
1〜65,534 |
1〜65,534 |
UCS-2LE
UCS-2BE
UTF-16LE
UTF-16BE |
2〜65,532
(2の倍数※2) |
2〜65,532
(2の倍数※2) |
UCS-4LE
UCS-4BE
UTF-32LE
UTF-32BE |
4〜65,528
(4の倍数※3) |
4〜65,528
(4の倍数※3) |
- 注※1
- 入力レコードの改行文字については,「5.8.7 recsepaオペランド」を参照してください。また,入力データのエンコードについては,「5.8.13 codetypeオペランド」を参照してください。
-
- 注※2
- 2の倍数以外を指定すると,KBLS1505-Eメッセージが表示されてエラーになります。
-
- 注※3
- 4の倍数以外を指定すると,KBLS1505-Eメッセージが表示されてエラーになります。
- +insertdata
- 挿入するデータの形式を指定します。
insertdataに指定する値を次の表に示します。
insertdataに指定できる値 |
データ形式 |
X |
空白 |
Z |
ゼロ |
C'文字列' |
文字列 |
X'16進数' |
16進数 |
- 入力ファイルがテキストファイルの場合,挿入データに改行文字は指定できません。
- 16進数として指定できるのは「0〜9」および「A〜F」だけです。
- 16進数に指定できる桁数は,次のとおりです。
ファイル編成 |
X'16進数'の指定桁数 |
固定長順編成ファイル |
偶数桁 |
可変長順編成ファイル |
偶数桁 |
テキストファイル |
ASCII |
偶数桁 |
SJIS |
EUC-JP |
EUC-HJ |
UTF-8 |
UCS-2LE |
4の倍数桁 |
UCS-2BE |
UTF-16LE |
UTF-16BE |
UCS-4LE |
8の倍数桁 |
UCS-4BE |
UTF-32LE |
UTF-32BE |
- 入力データのエンコードが「UCS-2LE」,「UCS-2BE」,「UTF-16LE」,「UTF-16BE」または「UNICODE(入力ファイルのUnicodeシグニチャ(BOM)の形式がUTF-16LEまたはUTF-16BE)」の場合,「UCS-2」の文字コードのデータ形式となります。「付録H Unicode操作文字コード一覧(SORT EE)」の「表H-3 ASCII対応予約文字一覧」を参照してください。
- 入力データのエンコードが「UCS-4LE」,「UCS-4BE」,「UTF-32LE」,「UTF-32BE」または「UNICODE(入力ファイルのUnicodeシグニチャ(BOM)の形式がUTF-32LEまたはUTF-32BE)」の場合,「UCS-4」の文字コードのデータ形式となります。「付録H Unicode操作文字コード一覧(SORT EE)」の「表H-3 ASCII対応予約文字一覧」を参照してください。
- 入力データのエンコードが「EUC-HJ」で,マルチバイト文字を挿入する場合は「X'16進数'」形式で指定してください。
- 文字列データをexsortコマンドに指定する場合,フォーマット全体をダブルクォーテーションで囲んで指定してください。
- exsortパラメタファイルに指定する場合は,ダブルクォーテーションで囲まないでください。
- 文字列データの指定例を次に示します。
指定先 |
記述例 |
備考 |
exsortコマンド |
reorg="0+32-10 +C'ABCD'-1" |
ダブルクォーテーションで囲みます。 |
exsortパラメタファイル |
reorg=0+32-10 +C'ABCD'-1 |
ダブルクォーテーションで囲みません。 |
- −cnt
- 挿入データの繰り返し回数を,1〜65,535の5桁以内の数字で指定します。
- この設定は省略できません。ただし,「挿入データのバイト長※×繰り返し回数」の値は,65,535バイト以下にする必要があります。(注※ 16進数で指定した場合は,2桁で1バイトとなります。)
- boundary
- 編集フィールドを配置するときの境界調整を指定します。
- レコードの先頭は8バイト境界から始まるものとします。
- 境界調整の結果,前の編集フィールドとの間にできる間隔にはX'00'が挿入されます。編集フィールドのバイト長を省略した場合は,境界調整は指定できません。
boundaryに指定できる値 |
意味 |
省略 |
境界調整をしない。 |
H |
2バイト境界に調整する。 |
F |
4バイト境界に調整する。 |
D |
8バイト境界に調整する。 |
- レコード編集後のレコード長の指定
- レコード編集後のレコード長を-outfileパラメタのreclenオペランドおよびminlenオペランドに指定します。
- 各オペランドの形式については,「5.10.3 reclenオペランド」および「5.10.4 minlenオペランド」を参照してください。
- レコード編集とreclenオペランドおよびminlenオペランドとの関係を次の表に示します。
表5-11 レコード編集とreclenオペランドおよびminlenオペランドとの関係
入力ファイル編成 |
条件(レコード編集後のレコード長とreclen,minlenオペランドとの関係) |
レコード編集結果 |
固定長順 |
reclen < 編集レコード長 |
×(KBLS1512-E) |
reclen = 編集レコード長 |
○ |
reclen > 編集レコード長 |
×(KBLS1512-E) |
可変長順 |
minlen > 編集レコード長 |
×(KBLS1513-E) |
minlen ≦ 編集レコード長 ≦ reclen |
○ |
編集レコード長 > reclen |
×(KBLS1511-E) |
テキスト |
minlen > 編集レコード長 |
×(KBLS1513-E) |
minlen ≦ 編集レコード長 ≦ reclen |
○ |
編集レコード長 > reclen |
×(KBLS1511-E) |
- (凡例)
- 編集レコード長:レコード編集後のレコード長を示します。
- ○:レコード編集後のレコードをそのまま出力します。
- ×:丸括弧内に記載しているメッセージが表示され,エラーとなります。
- 指定例
- 入力レコード形式が可変長レコード(最小レコード長12バイト,最大レコード長28バイト)で,-locatajstパラメタを指定した場合,および-locatajstパラメタを指定しない場合の指定例を示します。
- 指定例はexsortパラメタファイルに指定した場合です。exsortコマンドに指定する場合は,フォーマット全体をダブルクォーテーションで囲んでください。
- -locatajstパラメタを指定した場合の例(入力データのエンコードに「SJIS」を指定)
-locatajst
-inpfile
fileorg=V
reorg=+1-6 +9-4D +X'FF'-3 21+17
file=INFILE
-outfile
minlen=16
reclen=32
file=OUTFILE
|
- 入力レコード長
最小レコード長=12バイト,最大レコード長=28バイト(RDWの長さは含まない)
- 編集フィールド1
1〜6バイトの範囲をレコード先頭に挿入します。レコードの前の4バイト領域(RDW)の先頭を1バイト目とします。
- 編集フィールド2
9〜12バイトの範囲を編集フィールド1に隣接して挿入します。8バイト境界調整で生じた間隔には,NULLが挿入されます。
- 挿入データ
X'FF'のデータを編集フィールド2に隣接して3バイト挿入します。
- 編集フィールド3
可変長部分(最大16バイト)を21バイト目に挿入します。挿入データとの間に生じた間隔には,空白が挿入されます。
入力レコード長が最小レコード長の場合は,可変長部分はありません(0バイト)。入力レコード長が最大レコード長の場合は,可変長部分は16バイトです。
編集後のレコード長は,最小レコード長16バイト,最大レコード長32バイトとなります(RDWの長さ4バイトは含みません)。
![[図データ]](FIGURE/ZX010220.GIF)
- -locatajstパラメタを指定しない場合の例(入力データのエンコードに「SJIS」を指定)
-inpfile
fileorg=V
reorg=+0-2 +4-4D +X'FF'-3 16+12
file=INFILE
-outfile
minlen=16
reclen=32
file=OUTFILE
|
- 入力レコード長
最小レコード長=12バイト,最大レコード長=28バイト
- 編集フィールド1
0〜2バイトの範囲をレコード先頭に挿入する。
- 編集フィールド2
4〜7バイトの範囲を,編集フィールド1に隣接して挿入します。8バイト境界調整で生じた間隔には,NULLが挿入されます。
- 挿入データ
X'FF'のデータを,編集フィールド2に隣接して3バイト挿入します。
- 編集フィールド3
可変長部分(最大16バイト)を16バイト目に挿入します。挿入データとの間に生じた間隔には,空白が挿入されます。
入力レコード長が最小レコード長の場合は,可変長部分はありません(0バイト)。入力レコード長が最大レコード長の場合は,可変長部分は16バイトです。
編集後のレコード長は,最小レコード長16バイト,最大レコード長32バイトとなります。
![[図データ]](FIGURE/ZX010230.GIF)
- 注意事項
All Rights Reserved. Copyright (C) 2008, 2016, Hitachi, Ltd.