ソートマージ


5.21.3 nosplitdataオペランド

意味

非分割データを指定します。

形式
nosplitdata=no-split-data-definition
            [△no-split-data-definition…]
指定値
no-split-data-definitionオペランド形式1

data-attributeposlen

no-split-data-definisionオペランド形式2

data-attributeposmaskbit

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

data-attribute

非分割データの属性を指定します。

data-attributeに指定する値

意味

no-split-data-definision

形式

j

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

形式1

c

データが文字(英数字,漢字)であることを指定します。※3

形式1

n

データが符号付き小数点2進数であることを指定します。※9,※10

形式1

m

データが符号なし2進数(0から始まる整数)であることを指定します。※9,※10

形式1

a

データが符号なし2進数(0から始まる整数)であることを指定します※9,※10

(マスクビットで指定するビット単位のキーです)。

形式2

b

データが符号なし2進数(バイトデータ)であることを指定します※10

(マスクビットで指定するビット単位のキーです)。

形式2

p

データが内部10進数であることを指定します。

形式1

z

データが外部10進数であることを指定します。※5

形式1

x

データが左符号付き外部10進数であることを指定します。※5

形式1

s

データが右分離符号付き外部10進数であることを指定します。※5

形式1

t

データが左分離符号付き外部10進数であることを指定します。※5

形式1

f

データが内部浮動小数点であることを指定します。※9,※10

形式1

g

データが日付(英数字)であることを指定します。※5

形式1

q

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

形式1

d

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

形式1

w

データが文字(ワイド文字※4,※6)であることを指定します(テキストファイルだけ指定できます)。

形式1

u

データが文字(マルチバイト文字※6,※7,※8)であることを指定します(テキストファイルだけ指定できます)。

形式1

v

データが文字(マルチバイト文字※6,※7,※8)であることを指定します(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オペランド」を参照してください。

なお,属性コード「w」は固定長順編成ファイルと可変長順編成ファイルの入力ファイルに対して指定できません。指定した場合はKBLS2052-Eメッセージが表示されて,エラーになります。

注※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

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

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

注※8

入力データのエンコードに「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,異体字セレクタ)が異なる場合は,異なる文字として扱います。

注※9

属性コード「n」,「m」,「f」および「a」は,数値として比較するため,バイトオーダーが関係します。バイトオーダーについては,「2.7 エンディアンオプション機能」および「5.5.4 入力ファイルのエンディアンオプション(BIG|INPBIG|INPLTLオプション)」を参照してください。

・符号付き固定小数点数「n」:2バイト(signed short int),4バイト(signed int),8バイト(signed long long int)

・符号なし2進数「m」,「a」:2バイト(unsigned short int),4バイト(unsigned int),8バイト(unsigned long long int)

・内部浮動小数点数「f」:4バイト(float),8バイト(double)

注※10

属性コード「n,m,f」と「a,b」は,どちらも「2進数」データですが,キーの長さの指定方法が異なります。

・属性コード「n」,「m」および「f」は,キーの長さを「バイト長」で指定します。

・属性コード「a」と「b」は,キーの長さ分の「マスクビット」を指定します。

pos
  • 非分割データの開始バイト位置を指定します。指定できる桁数は,レコード長の上限値をバイト単位に変換した値の桁数以内です。

  • -locatajstパラメタの指定有無によって,レコード先頭の解釈が異なります。

  • テキストファイルに指定できる開始バイト位置(pos)の範囲は,UNIXの64ビット版(環境変数「EXSORT64MAXRECLEN」の指定がない,または無効の場合),UNIXの32ビット版,およびWindows版の場合,入力データのエンコード種別や改行文字の長さによって異なります。UNIXの64ビット版で環境変数「EXSORT64MAXRECLEN」の指定がある場合,入力データのエンコード種別よって異なりますが,改行文字の長さによって異なることはありません。

  • 開始バイト位置(pos)に指定できる値の範囲を次の表に示します。

    表5‒70 posに指定できる値の範囲(Windows版,UNIXの32ビット版,UNIXの64ビット版で環境変数「EXSORT64MAXRECLEN」の指定がない,または指定が無効の場合)

    ファイル編成

    -locatajstパラメタ

    指定あり

    指定なし

    固定長順編成ファイル

    1〜65,535

    0〜65,534

    可変長順編成ファイル

    5〜65,539※1

    0〜65,534

    テキスト

    ファイル※2

    改行文字

    「LF」

    ASCII

    SJIS

    EUC-JP

    EUC-HJ

    UTF-8

    1〜65,535

    0〜65,534

    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」)以外を指定すると,KBLS2054-Eメッセージが表示されてエラーになります。

    注※4

    4の倍数(-locatajstパラメタを同時に指定している場合は「4の倍数+1」)以外を指定すると,KBLS2054-Eメッセージが表示されてエラーになります。

    表5‒71 posに指定できる値の範囲(UNIXの64ビット版で環境変数「EXSORT64MAXRECLEN」の指定がある場合)

    ファイル編成

    -locatajstパラメタ

    指定あり

    指定なし

    固定長順編成ファイル

    1〜レコード長の上限値※1

    0〜レコード長の上限値※1−1

    可変長順編成ファイル

    5〜レコード長の上限値※1+4※3

    0〜レコード長の上限値※1−1

    テキスト

    ファイル※2

    ASCII

    SJIS

    EUC-JP

    EUC-HJ

    UTF-8

    1〜レコード長の上限値※1

    0〜レコード長の上限値※1−1

    UCS-2LE

    UCS-2BE

    UTF-16LE

    UTF-16BE

    1〜レコード長の上限値※1−1(2の倍数+1)※4

    0〜レコード長の上限値※1−2(2の倍数)※4

    UCS-4LE

    UCS-4BE

    UTF-32LE

    UTF-32BE

    1〜レコード長の上限値※1−3(4の倍数+1)※5

    0〜レコード長の上限値※1−4(4の倍数)※5

    注※1

    レコード長の上限値は,環境変数「EXSORT64MAXRECLEN」に指定した「レコード長の上限値」です。

    環境変数「EXSORT64MAXRECLEN」ついては「14.1 SORT EEの環境変数の設定」を参照してください。

    注※2

    入力データのエンコード種別については「5.8.13 codetypeオペランド」を参照してください。

    注※3

    レコードの前の4バイト領域(RDW:レコードヘッダ)の先頭が1となります。

    注※4

    2の倍数(-locatajstパラメタを同時に指定している場合は「2の倍数+1」)以外を指定すると,KBLS1205-Eメッセージが表示されてエラーになります。

    注※5

    4の倍数(-locatajstパラメタを同時に指定している場合は「4の倍数+1」)以外を指定すると,KBLS1205-Eメッセージが表示されてエラーになります。

len

非分割データの長さを次の表に示す範囲で指定します。

data-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(文字数)※6

m,n

2,4または8(バイト)

p

1〜10(バイト)

z,x

1〜18(桁)※4

s,t

2〜19(桁)※4

f

4または8(バイト)

g

2〜8(桁)※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の倍数以外を指定すると,KBLS2056-Eメッセージが表示されてエラーになります。

注※3

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

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

注※4

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

注※5

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

注※6

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

maskbit
  • 属性コード「a」または「b」を指定した場合,マスクビットを16進数で指定します。

  • 16進数のA〜Fは,小文字・大文字のどちらでも指定できます。

  • キーデータに対して,指定したマスクビットでAND演算を行った結果でソートします。なお,このAND演算によってキーデータが更新されることはありません。

  • すべての桁を「00」とするマスクビット指定はできません。指定した場合は,KBLS1201-Eエラーとなります。

  • 指定できるマスクビットの桁は次のとおりです。

    key-attribute

    に指定する値

    指定できるmaskbitの桁

    備考

    a

    4,8または16(桁)※1

    キーの長さは2,4または8バイト

    b

    2〜8,192(桁)※2

    キーの長さは1〜4,096バイト

    注※1

    属性コード「a(符号なし2進数)」は,2バイト(unsigned short int),4バイト(unsigned int),8バイト(unsigned long long int)のキーとして扱います。2,4または8バイトに対応するマスクビット値を,それぞれ4,8または16桁の16進数で指定してください。なお,16進数はビッグエンディアン形式で記述してください。

    注※2

    属性コード「b(符号なし2進数)」は,1〜4,096バイトの範囲を指定できます。マスクビット値を,2〜8,192桁の16進数で指定してください。なお,16進数はビッグエンディアン形式で記述してください。

非分割データの範囲

非分割データは,次の範囲で指定してください。

・入力ファイルが固定長順編成ファイルのとき,レコード長の範囲

・入力ファイルが可変長順編成ファイルのとき,最小レコード長の範囲※1

・入力ファイルがテキストファイルのとき,最小レコード長の範囲※1,※2

注※1

可変長順編成ファイルで,-cmdoptパラメタのPOSNOCHKオプションを指定している場合は,最大レコード長の範囲となります。

なお,POSNOCHKオプションでは,最大レコード長を超えた範囲を非分割データとして指定してもエラーになりませんが,最大レコード長を超えた部分の非分割データの値は必ずNULL値(0x00)が仮定されるので注意してください。

-cmdoptパラメタのPOSNOCHKオプションについては,「5.5.11 キー位置のチェックオプション(POSNOCHKオプション)」を参照してください。

注※2

テキストファイルに指定した属性コード「u」または「v」の場合は,キーの指定範囲が実レコード長を超えていてもエラーにはなりません。実レコード長を超えた部分には空白を仮定してキーを比較します。

注意事項
  • 指定できる個数は1〜64個です。

  • 次の例のように,属性によってはデータが異なっても同じ値として扱います。

    データ:「+0」と「-0」

    属性t:同じ値として扱います。

    属性c:同じ値として扱いません。

  • 非分割データを複数指定した場合,先に指定した非分割データほど優先順位が高く,あとに指定した非分割データほど優先順位が低くなります。

  • 非分割データの範囲は,ほかの非分割データと重なってもかまいません。

  • レコード編集によって,入力レコードと異なった位置に非分割データを再編成するような場合は注意が必要となります。非分割データの範囲は,最後に実行したレコード編集後のレコードを基に指定してください。非分割データの位置(範囲)は,「付録F レコード編集処理で基になるレコード(SORT EEの機能)」に示す規則に従って指定してください。