ソートマージ


5.16 -csvkeyパラメタ

意味

CSVファイルをソートまたはマージする場合のソートキー,マージキー,または集約キーを指定します。このパラメタは,CSVファイルを指定した場合だけ有効です。CSVファイル以外を指定した場合は,KBLS1213-Eエラーとなります。また,-keyパラメタと同時に指定できません。

形式
-csvkey csv-key-definition
  • このパラメタに指定したセルに対応するデータが入力されなかった場合,NULLセルとして処理します。NULLセルの扱いについては,「付録D CSVファイル内のNULLセルの扱い(SORT EEの機能)」を参照してください。

  • 指定できるキーの個数と合計長を,環境ファイル「EXS_CSVKEYNUMMAX」で指定できます。なお,キーの合計長は,入力データのエンコードによって異なります。環境ファイル「EXS_CSVKEYNUMMAX」については「15.1.1(17) EXS_CSVKEYNUMMAX」を参照してください。

  • キーを複数指定した場合,キーの指定順によってソートまたはマージの優先順位が決まります。先に指定したキーほど優先順位が高く,後に指定したキーほど優先順位が低くなります。

  • 入力セルデータの桁調整については,「付録B CSVファイルのデータの扱い(SORT EEの機能)」を参照してください。

  • ソート機能では,重複レコードの入力順序保存機能(-cmdopt DUP)を指定すると,重複キーのレコードを入力順に並べて出力できます。重複レコードの入力順序保存機能については,「5.5.1 重複レコードの入力順序保存機能(DUP|NODUPオプション)」を参照してください。

  • マージおよびコピー機能では,重複キーのレコードは入力順に並べて出力されます。

指定値

csv-key-definitionの形式を次に示します。

csv-key-definition 1形式
[r] key-attributecellposlen [△[r] key-attributecellposlen … ]
  • 文字データのセルを定義します。

  • key-attributeには,「j」,「c」,「d」,「w」,「u」,「v」または「q」を指定できます。指定できるキーの属性については,key-attributeに指定する値を示す表を参照してください。

  • [r]key-attributecellpos−len は必ず続けて指定してください。それぞれの値の間に空白やタブを指定しないでください。

  • [r]key-attributecellpos−len を複数指定する場合は,1個以上の空白またはタブで区切って指定します。

csv-key-definition 2形式
[r] key-attributecellposp [,s] [△[r] key-attributecellposp [,s] … ]
  • 数値データ(固定小数点数)のセルを定義します。

  • key-attributeには,「z」だけを指定できます。

  • データ中に,引用符による囲み,符号,通貨記号,桁修飾文字(コンマ,小数点,空白)が含まれる場合,これらの文字を除いた内部データ形式でキーを比較します。なお,セルデータが変更されることはありません。

  • 数値データ(固定小数点数)のセルを定義する場合,環境ファイル「EXS_ROUND」または-inpfile,-catinp,-splitinpパラメタのroundオペランドで,丸め方式(四捨五入,切り捨て,切り上げのどれか)を指定します。この場合,整数部または小数部は指定に従って処理されます。EXS_ROUNDおよびroundオペランドの両方の指定を省略している場合,切り捨てられて処理されます。詳細は,「5.8.11 roundオペランド」を参照してください。

  • [r]key-attributecellposp[,s]は必ず続けて指定してください。それぞれの値の間に空白やタブを指定しないでください。

  • [r]key-attributecellposp[,s]を複数指定する場合は,1個以上の空白またはタブで区切って指定します。

csv-key-definition 3形式
[r] key-attributecellposd,dateform [△[r] key-attributecellposd,dateform … ]
  • 日付データのセルを定義します。

  • key-attributeには,「g」だけを指定できます。

  • [r]key-attributecellnumは必ず続けて指定してください。それぞれの値の間に空白やタブを指定しないでください。

  • [r]key-attributecellnumを複数指定する場合は,1個以上の空白またはタブで区切って指定します。

csv-key-definition 4形式
[r] key-attribute cellpos −datedigit[,timedigit][△[r] key-attribute cellpos −datedigit[,timedigit]… ]
  • 日付時刻データのセルを定義します。

  • key-attributeには,「h」だけを指定できます。

  • [r]key-attributecellposdatedigit [,timedigit]は必ず続けて指定してください。それぞれの値の間に空白やタブを指定しないでください。

  • [r]key-attributecellposdatedigit[,timedigit]を複数指定する場合は,1個以上の空白またはタブで区切って指定します。

csv-key-definition 5形式
csvfield-name
  • csvfield-nameを複数指定する場合は,1個以上の空白,またはタブで区切って指定します。

csv-key-definitionに指定するそれぞれの値について次に示します。

[r]

キーのソート順序を指定します。

rオプション

意味

指定なし

キーの昇順でソートまたはマージします。

指定あり

キーの降順でソートまたはマージします。

  • 降順でソートまたはマージする場合は,「rc」のようにつなげて指定します。

  • 昇順か降順かは,キーごとに指定します。キーを複数指定して,昇順と降順を混在させたソートまたはマージもできます。

key-attribute

キーの属性を指定します。

key-attributeに指定する値

意味

指定できるcsv-key-definitionの形式

j

キーが文字(JIS8単位コード※1)であることを指定します。

形式1

c

キーが文字であることを指定します。※3

形式1

q

キーが文字(文字順序変更機能※2で指定した文字)であることを指定します。※3

形式1

d

キーが文字(左分離符号付き数字)であることを指定します。※5

形式1

z

キーが数値(固定小数点数)であることを指定します。※5

形式2

g

キーが日付であることを指定します。※5

形式3

h

キーが日付時刻(数字)であることを指定します。※7

形式4

w

キーが文字(ワイド文字※4,※6)であることを指定します。

形式1

u

キーが文字(マルチバイト文字※6,※8,※9)であることを指定します。

形式1

v

キーが文字(マルチバイト文字※6,※8,※9)であることを指定します(UnicodeのIVSに対応した属性です)。

形式1

注※1

ASCIIコード(0x00〜0x7F)を含む,JIS8単位コード(0x00〜0xFF)を意味します。

入力データに日本語などのマルチバイト文字が含まれている場合,マルチバイト文字として扱わず,シングルバイト文字として扱います。

EBCDIKコードの体系に従ってキーを比較する「EBCDIKコード比較オプション機能」を使用できます。EBCDIKコード比較オプション機能については,「5.5.3 EBCDIKコード比較オプション(EBCJ,EBCEオプション)」を参照してください。

注※2

文字順序変更機能については,「5.15 -altseqパラメタ」を参照してください。

注※3

入力データのエンコードの種別には対応しません。入力データの文字を構成するバイト長を意識しないで,常に1バイト長のシングルバイト文字として扱います。ASCIIコードおよびJIS8単位コード向けの属性です。

注※4

入力データのエンコードに「UCS-2LE」,「UCS-2BE」,「UTF-16LE」,「UTF-16BE」または「UNICODE(入力ファイルのUnicodeシグニチャ(BOM)の形式がUTF-16LEまたはUTF-16BE)」を指定した場合,1文字2バイトのワイド文字として扱います。また,サロゲートペア文字は2文字として扱います。

入力データのエンコードに「UCS-4LE」,「UCS-4BE」,「UTF-32LE」,「UTF-32BE」または「UNICODE(入力ファイルのUnicodeシグニチャ(BOM)の形式がUTF-32LEまたはUTF-32BE)」を指定した場合,1文字4バイトのワイド文字として扱います。文字のエンコードの指定方法については,「5.8.13 codetypeオペランド」を参照してください。

注※5

入力データのエンコードで解釈します。

「ASCII」,「SJIS」,「EUC-JP」,「EUC-HJ」または「UTF-8」を指定した場合は1バイト,「UCS-2LE」,「UCS-2BE」,「UTF-16LE」または「UTF-16BE」を指定した場合は2バイト,「UCS-4LE」,「UCS-4BE」,「UTF-32LE」または「UTF-32BE」を指定した場合は4バイトの長さで文字を扱います。

文字のエンコードの指定方法については,「5.8.13 codetypeオペランド」を参照してください。

注※6

キー範囲の入力データがすべてASCII対応コード(英数字)である場合は,属性コード「c」を指定した方が処理効率が向上します。属性コード「c」は1文字1バイトで扱いますので,エンコードに対応したバイト長を指定してください。

ASCII対応コードについては,「付録H Unicode操作文字コード一覧(SORT EE)」を参照してください。

1文字の長さについては,「付録I.2(1) 文字の長さ」を参照してください。

文字属性コードの特徴については,「付録I.2(2) 文字属性コードの特徴」を参照してください。

注※7

キー範囲の入力データが次の条件すべてに該当する場合は,属性コード「c」を指定した方が処理効率は向上します。

・桁数がそろっている。

・時刻が24時間制で表記されている。

・日付,時刻またがりのデータがない。

属性コード「c」は1文字1バイトで扱いますので,エンコードに対応したバイト長を指定してください。

1文字の長さについては,「付録I.2(1) 文字の長さ」を参照してください。

文字属性コードの特徴については,「付録I.2(2) 文字属性コードの特徴」を参照してください。

注※8

属性コード「u」と「v」は,入力データのエンコードで解釈します。1文字の長さは可変長として扱います。

文字のエンコードの指定方法については,「5.8.13 codetypeオペランド」を参照してください。また,マルチバイト文字の扱いについては,「付録I.2 文字列データの扱い」を参照してください。

注※9

入力データのエンコードに「UTF-8」,「UTF-16LE」,「UTF-16BE」,「UCS-4LE」,「UCS-4BE」,「UTF-32LE」,「UTF-32BE」または「UNICODE(入力ファイルのUnicodeシグニチャ(BOM)の形式がUTF-16LE,UTF-16BE,UTF-32LEまたはUTF-32BE)」のどれかを指定した場合,UnicodeのIVS(Ideographic Variation Sequence)を次のとおり解釈します。UnicodeのIVSについては,「付録I.2(6) IVS対応」を参照してください。

  • 属性コード「u」は,UCSコードが一致する文字であれば,UnicodeのIVSの異体字であっても同じ文字として扱います。

  • 属性コード「v」は,UCSコードが一致する文字であっても,VS(Variation Selector,異体字セレクタ)が異なる場合は,異なる文字として扱います。

cellpos

レコード内の処理対象セル(列)の位置を,番号で指定します。

  • レコードの先頭セル番号を「1」,最大セル番号を「n」とし,1〜nの番号を指定します。最大セル番号は,16384番となります。

−len

key-attributeに「j」,「c」,「q」,「w」,「u」,「v」または「d」を指定した場合に,文字データの最大バイト長を,10進数で指定します。

  • 属性「d」は最大桁数を指定します。

  • キーの長さを次の表に示す範囲で指定します。

    key-attribute

    に指定する値

    指定できる長さ(単位)

    j,c,q,w※1

    • 入力データのエンコードが「ASCII」,「SJIS」,「EUC-JP」,「EUC-HJ」または「UTF-8」の場合

      1〜4,096(バイト)

    • 入力データのエンコードが「UCS-2LE」,「UCS-2BE」,「UTF-16LE」または「UTF-16BE」の場合※2

      2〜8,192(バイト)

    • 入力データのエンコードが「UCS-4LE」,「UCS-4BE」,「UTF-32LE」または「UTF-32BE」の場合※3

      4〜16,384(バイト)

    u,v

    1〜4,096(文字数)※5

    d

    1〜256(桁)※4

    注※1

    入力データのエンコードの種別によって,マルチバイト文字の長さは異なります。詳細は「付録I.2 文字列データの扱い」を参照してください。

    注※2

    入力データのエンコードに「UCS-2LE」,「UCS-2BE」,「UTF-16LE」,「UTF-16BE」または「UNICODE(入力ファイルのUnicodeシグニチャ(BOM)の形式がUTF-16LEまたはUTF-16BE)」を指定した場合,長さには「2の倍数」を指定してください。

    2の倍数以外を指定すると,KBLS1207-Eメッセージが表示されてエラーになります。

    注※3

    入力データのエンコードに「UCS-4LE」,「UCS-4BE」,「UTF-32LE」,「UTF-32BE」または「UNICODE(入力ファイルのUnicodeシグニチャ(BOM)の形式がUTF-32LEまたはUTF-32BE)」を指定した場合,長さには「4の倍数」を指定してください。

    4の倍数以外を指定すると,KBLS1207-Eメッセージが表示されてエラーになります。

    注※4

    「バイト長」ではなく数値の「桁数」を指定してください。「UCS-2」,「UCS-4」,「UTF-16」および「UTF-32」の数値データの扱いについては,「付録I.3 数値データの扱い」を参照してください。

    注※5

    「バイト長」ではなく「文字数」を指定してください。UTF-16のサロゲートペア文字は1文字として扱います。また,UnicodeのVS(Variation Selector,異体字セレクタ)は文字数に数えません。マルチバイト文字の扱いについては,「付録I.2 文字列データの扱い」を参照してください。

  • 実際に入力したデータ長に過不足がある場合は調整を行います。詳細は,「付録B CSVファイルのデータの扱い(SORT EEの機能)」を参照してください。

  • 入力データを引用符で囲んでいる場合は,引用符を除いた内部データ形式でキーを比較します。なお,セルデータが変更されることはありません。

  • 入力データの先頭が引用符の場合だけ,対の引用符で囲んだ範囲がエスケープされます。詳細は,「付録B CSVファイルのデータの扱い(SORT EEの機能)」を参照してください。

  • 入力データの先頭および末尾の引用符は,有効バイト長に含まれません。また,エスケープされた引用符は,2文字で1文字となります。

  • マルチバイト文字(日本語)の途中で最大長を超えた場合,超えた部分のマルチバイト文字以降を切り捨て,代わりに1バイトの空白で埋め字をします。なお,切り捨てはキー属性「c」および「w」の場合だけです。キー属性「j」,「q」,および「d」は日本語として扱われません。詳細は,「付録B CSVファイルのデータの扱い(SORT EEの機能)」を参照してください。

p [,s]

key-attributeに「z」を指定した場合に,数値データの有効桁を10進数で指定します。

  • p(precision:精度)は,数値データの総桁数を表します。pからsを引いた桁が整数部の有効桁となります。

  • pに指定できる桁の範囲は,1〜38桁です。

  • s(scale:位)は,数値データの小数部(小数点以下)の有効桁を表します。

  • sに指定できる桁の範囲は,0〜p桁です(p以下の桁を指定 0≦sp)。p=sを指定した場合は,整数部の有効桁は0(整数部なし)となります。

  • sを省略した場合は,小数部の有効桁は0(小数部なし)を仮定します。データ中に小数点を含まない場合は,sの指定は必要ありません。

  • データ中には,0〜9の数字以外に,データを囲んでいる引用符,符号,通貨記号,および桁修飾文字(コンマ,小数点,空白)を含むことができ,これらの文字を除いた内部データ形式でキーを比較します。また,それぞれの除外文字は位置規則があります。違反するデータを検出した場合は,データ形式が不正と見なされ「KBLS1211-E キーにエラーデータを検出しました。」というメッセージが表示されて,エラーになります。メッセージが表示されたときの原因と対処方法の詳細は,「付録L メッセージ」を参照してください。データ形式が不正な場合でもエラーにしたくないときは,コマンドオプション「-cmdopt KEYNOCHK」を指定してください。

    除外文字の位置規則については,「付録B CSVファイルのデータの扱い(SORT EEの機能)」を参照してください。

  • データ中の符号,通貨記号,桁修飾文字(コンマ,小数点,空白),およびデータを囲んでいる引用符は,有効桁に含まれません。有効桁の対象は,0〜9の数字だけです。

  • データ中に小数点がある場合は,小数点位置を合わせて入力します。データ中に小数点がない場合は,データの末尾に小数点を仮定して入力します。詳細は,「付録B CSVファイルのデータの扱い(SORT EEの機能)」を参照してください。

  • 実際に入力したデータの桁に過不足がある場合は桁調整を行います。詳細は,「付録B CSVファイルのデータの扱い(SORT EEの機能)」を参照してください。

  • すべて空白のデータは,0(ゼロ)として入力します。

  • 環境ファイル「EXS_ROUND」または-inpfile,-catinp,-splitinpパラメタのroundオペランドで,指定した丸め方式(四捨五入,切り捨て,切り上げのどれか)に従って,整数部または小数部を丸め処理します。EXS_ROUNDおよびroundオペランドの両方の指定を省略している場合,切り捨てられます。詳細は,「5.8.11 roundオペランド」を参照してください。

  • 引用符,符号,通貨記号,桁修飾文字の除外,および丸め処理によって,入力セルデータが変更されることはありません。

数値データの指定例を次の図に示します。

図5‒11 数値データの指定例

[図データ]

ddateform

key-attributeに「g」を指定した場合に,日付データの有効桁,および書式番号を指定します。

  • d(digit:桁)は,日付データの有効桁を表します。

  • dに指定できる桁の範囲は,2〜8桁です。なお,書式3〜4の2桁年号に対して7桁以上を指定した場合,6桁を仮定します。

  • データの左端から指定された書式に適用します。有効桁以降のデータは無視されます。

  • 実際に入力したデータの桁に過不足がある場合は桁調整を行います。詳細は,「付録B CSVファイルのデータの扱い(SORT EEの機能)」を参照してください。

  • データ中には,データを囲んでいる引用符と年月日を区切る桁修飾文字を含むことができます。その場合,これらの文字を除いた内部データ形式でキーを比較します。日付データの形式については,「付録B CSVファイルのデータの扱い(SORT EEの機能)」を参照してください。

  • データの先頭と末尾を囲んでいる引用符,およびデータ中の桁修飾文字は,有効桁に含まれません。

  • 入力データの年号部分が数字「0〜9」以外を指定した場合,データ形式が不正と見なされ「KBLS1211-E キーにエラーデータを検出しました。」というメッセージが表示されてエラーになります。メッセージが表示されたときの原因と対処方法の詳細は,「付録L メッセージ」を参照してください。データ形式が不正な場合でもエラーにしたくないときは,コマンドオプション「-cmdopt DATENOCHK」を指定してください。なお,年号以外のデータ(月,日)は,形式チェックしません。

  • 引用符,および桁修飾文字の除外によって,入力セルデータが変更されることはありません。

  • 桁修飾文字は,「ハイフン(-)」と「スラント(/)」の2種類です。

  • 環境変数「EXSORTGOPTION(64ビット版は「EXSORT64GOPTION」)」を指定すると,「年月日{T|空白}時分秒」形式の入力データを扱えます。また,桁修飾文字は,「ハイフン」,「スラント」および「ピリオド(.)」の3種類に変更されます。環境変数については,「14.1.1(29) EXSORTGOPTION」または「14.1.2(29) EXSORT64GOPTION」を参照してください。

  • dateformは日付データの書式を表します。日付データの書式を次に示します。

    dateform

    (書式)

    データ形式

    書式

    d

    (桁)

    1

    前置4桁年号

    YYYY/MM/DD

    YYYY-MM-DD

    YYYY.MM.DD

    YYYYMMDD

    YYYY

    2〜8

    2

    後置4桁年号

    MM/DD/YYYY

    MM-DD-YYYY

    MM.DD.YYYY

    MMDDYYYY

    2〜8

    3

    前置2桁年号

    YY/MM/DD

    YY-MM-DD

    YY.MM.DD

    YYMMDD

    YY

    2〜6

    4

    後置2桁年号

    MM/DD/YY

    MM-DD-YY

    MM.DD.YY

    MMDDYY

    2〜6

    (凡例)

    YYYY:西暦4桁年号

    YY :西暦下2桁年号

    MM :月

    DD :日

    桁修飾文字で年月日を区切っている場合は,MMおよびDD部分のデータは1桁でもかまいません。

    (例)

    「YYYY-MM-DD 」…… 2008-7-7

    「MM/DD/YY  」……… 1/1/07

    注※

    環境変数「EXSORTGOPTION(64ビット版は「EXSORT64GOPTION」)」の指定がある場合,ピリオドを桁修飾文字として扱います。

日付データの指定例を次の図に示します。
図5‒12 日付データの指定例

[図データ]

datedigit [,timedigit]

key-attributeに「h」を指定した場合に,日付および時刻データの有効桁を10進数で指定します。

  • datedigitは,日付データの有効桁を表します。

  • timedigitは,時刻データの有効桁を表します。

  • datedigitに指定できる桁は0,4,6および8桁,timedigitに指定できる桁は0,2,4,6および9桁のどれかです。それ以外を指定した場合は,KBLS1217-Eメッセージが表示されてエラーになります。また,datedigitとtimedigit両方に0を指定した場合もエラーになります。

  • 入力データを項目の区切り文字で区切り,それぞれのデータの左端から指定された桁数の書式に適用します。

  • 入力したデータの桁に過不足がある場合は,項目によって桁調整が実施されるか,またはエラーとなります。端数処理の詳細については,「付録J 日付時刻データの形式(SORT EEの機能)」を参照してください。

  • データ中には,データの先頭と末尾を囲んでいる引用符,項目区切り文字('T'または空白),および桁修飾文字(スラント,ハイフン,コロン,およびピリオド)を含められ,これらの文字を除いた内部データ形式でキーを比較します。日付時刻データの形式については,「3.2 キー属性と形式」を参照してください。

  • データの先頭と末尾を囲んでいる引用符,項目区切り文字('T'または空白),桁修飾文字(スラント,ハイフン,コロン,およびピリオド),および12時間制表記は,有効桁に含まれません。

  • 引用符,項目の区切り文字,および桁修飾文字を取り除くことによって,入力セルデータが変更されません。

  • 入力データが数字「0〜9」以外を指定した場合,データ形式が不正と見なされ,KBLS1211-Eメッセージが表示されてエラーになります。また,年の桁数が4桁未満,または入力データが指定可能な範囲を超えた場合もエラーとなります。メッセージが表示されたときの原因と対処方法の詳細は,「付録L メッセージ」を参照してください。データ形式が不正な場合でもエラーにしたくないときは,コマンドオプション「-cmdopt DATETIMENOCHK」を指定してください。

  • 日付時刻として正しくないデータの場合も,扱える値の範囲内であればエラーにしないで日付,時刻またがりデータとして扱います。

  • 指定した桁数に応じた日付時刻キーの書式を次に示します。

    項目

    桁数

    書式

    日付

    4

    YYYY

    6

    YYYYMM

    YYYY-MM

    YYYY/MM

    YYYY.MM

    8

    YYYYMMDD

    YYYY-MM-DD

    YYYY/MM/DD

    YYYY.MM.DD

    時刻

    2

    hh

    4

    hhmm

    hh:mm

    hh.mm

    6

    hhmmss

    hh:mm:ss

    hh:mm.ss

    hh.mm.ss

    9

    hhmmssfff

    hh:mm:ss:fff

    hh:mm:ss.fff

    hh.mm.ss.fff

    12時間制表記

    2

    AM

    am

    PM

    pm

    4

    A.M.

    a.m.

    P.M.

    p.m.

    書式の説明を次に示します。

    書式

    説明

    日付

    YYYY

    西暦年4桁

    MM

    DD

    時刻

    hh

    mm

    ss

    fff

    秒の小数部(ミリ秒)

    12時間制表記

    AM

    am

    A.M.

    a.m.

    PM

    pm

    P.M.

    p.m.

    時(hh)を12時間制で表記した場合に指定

    項目区切り文字

    桁修飾文字

    /

    日付の桁修飾文字

    -

    日付の桁修飾文字

    :

    時刻の桁修飾文字

    .

    日付,時刻の桁修飾文字

    空白

    日付項目と時刻項目の区切り文字

    時刻項目と12時間制表記の区切り文字

    T

    日付項目と時刻項目の区切り文字

    注※

    桁修飾文字(スラント,ハイフン,コロン,およびピリオド)で年月日時分秒を区切っている場合は,月日時分秒の各データは1桁でもかまいません。

    (例)日付「YYYY-MM-DD」,項目区切り「T」,時刻「hh:mm:ss.fff」の場合

    2013-7-27T13:10:80.095

    日付時刻データの指定例を次の図に示します。

    図5‒13 日付時刻データの指定例

    [図データ]

csvfield-name

キーを,入力ファイルパラメタのcsvfieldオペランドで定義したフィールド名で指定します。