Please note that JavaScript and style sheet are used in this website,
Due to unadaptability of the style sheet with the browser used in your computer, pages may not look as original.
Even in such a case, however, the contents can be used safely.

SORTKIT Windows版 バージョン間非互換情報

バージョン間の非互換情報についてご説明します。

Windows版 SORTKIT/Enterprise

SORTKIT/Enterprise Ver1.0とVer2.0以降

C-APIの変更

C-APIでパラメータテーブルのメンバの一部が変更になります。
既に旧バージョンのSORTKITおよびSORTKIT/Enterpriseで作成されたオブジェクトはそのまま動作可能ですが、旧バージョンのSORTKIT/Enterprise Ver1.0で作成したCプログラムソースをコンパイルする場合は、ソース修正が必要です。

可変長入力レコードの再編成機能

SORTKIT/Enterprise Ver2.0より、可変長レコード固定長フィールド形式の入力ファイルに行順ファイル以外のファイル形式を指定できるようになりました。これに伴い、可変長レコード固定長フィールド形式の入力レコードに対し、入力レコードの再編成後のレコードに行順ファイルのレコード区切り文字を付加する処理を中止しました。
このため、上記ケースで固定長レコード形式の出力ファイルを指定すると、SORTKIT/Enterprise Ver1.0では付加されたレコード区切り文字をNULL文字に変換して出力していましたが、SORTKIT/Enterprise Ver2.0以降ではレコード区切り文字を除いたレコードが出力レコードとなりますので注意が必要です。

例 入力データ(in)を以下の指定で再編成(ソート)します。
<ソートコマンド>
nsort in,stm -o out,seq +B0 -B4 -A CH,4,OREC,B0,8 -z12

<入力データ(in)>

+-------+-+
|AAAA1234bbbb|¥n|
+-------+-+
+------+-+
|BBBB1234aa|¥n|
+------+-+

ソート結果は以下のようになります。
<SORTKIT/Enterprise Ver1.0のソート結果>
+-------+-+
|ORECAAAA1234|¥0|
+-------+-+
+-------+-+
|ORECBBBB1234|¥0|
+-------+-+
<SORTKIT/Enterprise Ver2.0以降のソート結果>
+-------+
|ORECAAAA1234|
+-------+
+-------+
|ORECBBBB1234|
+-------+

SORTKIT/Enterprise Ver1.0以前と同様にレコード区切り文字をNULL文字に変換して出力レコードとしたい場合は、出力ファイルに対する出力レコード長を設定してください。


Windows版 SORTKIT

SORTKIT Ver4.0以前とVer5.0以降

可変長レコード/可変長フィールドのキーの扱いが以下のように変更になっています。
このため、ソート結果の順番が、以前と違ってくる可能性がありますので注意が必要です。

複数フィールドにまたがるキー指定の扱い

Ver4.0までは、指定したキーが複数のフィールドにまたがる場合、その間に含まれている独立したフィールドをそれぞれのキーとして扱っていました。Ver5.0以降では、指定したキーが複数のフィールドにまたがる場合、最初のフィールドの開始バイトから、最後のフィールドの終了バイト位置までを1つのキーとして扱うように変更になっています。
キー指定を省略した場合は、レコード全体が1つのキーとして扱われます。
キーとフィールドの対応関係の変更に伴い、キー比較時オプション及び文字の比較順序変更機能は、(間のフィールド分離文字も含めて)キー全体に作用するように変更になりました。

例1 入力データ(in)を以下の指定でソートします。
<ソートコマンド>
nsort in,stm -t; +1 -4

<入力データ(in)>

1;name;1234;zzzz
2;name;12345;zzzz

ソート結果は以下のようになります。
<Ver4.0以前のソート結果>
1;name;1234;zzzz
2;name;12345;zzzz
<Ver5.0以降のソート結果>
2;name;12345;zzzz
1;name;1234;zzzz

赤字は「比較キー」を表します

例2 入力データ(in)を以下の指定でソートします。
<ソートコマンド>
nsort in,stm -t¥

<入力データ(in)>
a:¥abc¥def¥ghi(1)。
a:¥abcd¥def¥ghi(2)。
a:¥abcD¥def¥jkl(3)。

ソート結果は以下のようになります。
<Ver4.0以前のソート結果>
a:¥abc¥def¥ghi(1)。
a:¥abcD¥def¥jkl(3)。
a:¥abcd¥def¥ghi(2)。
<Ver5.0以降のソート結果>
a:¥abcD¥def¥jkl(3)。
a:¥abc¥def¥ghi(1)。
a:¥abcd¥def¥ghi(2)。

赤字は「比較キー」を表します


バイト位置指定がフィールドの終了位置を越えている場合の扱い

Ver4.0までは、キー開始/終了バイト位置が指定フィールドの終了位置を越えていた場合、フィールドの最後がバイト位置として扱われていました。Ver5.0以降では、キー開始/終了バイト位置が指定フィールドの終了位置を越えていた場合でも、その位置を有効な位置として扱います。

例 入力データ(in)を以下の指定でソートします。
<ソートコマンド>
nsort in,stm +1 -1.8 -F

<入力データ(in)>

1 name 1234 zzzz
2 name 345 zzzz

ソート結果は以下のようになります。
<Ver4.0以前のソート結果>
1 name 1234 zzzz
2 name 345 zzzz
<Ver5.0以降のソート結果>
2 name 345 zzzz
1 name 1234 zzzz

赤字は「比較キー」を表します


フィールド分離文字指定(ブランクスキップなし)のキー終了バイト位置の扱い

Ver4.0では、フィールド分離文字指定(ブランクスキップなし)時、キー終了バイト位置は、フィールド分離文字の次の文字をバイト位置0として数えていました。Ver5.0以降では、フィールド分離文字指定(ブランクスキップなし)時、キー終了バイト位置は、フィールド分離文字をバイト位置0として数えます(先頭フィールドは、最初の文字をバイト位置0と数えます)。

例 入力データ(in)を以下の指定でソートします。
<ソートコマンド>
nsort in,stm -t; +2 -2.5 -F

<入力データ(in)>

1;name;111111;zzzz
2;name;111101;zzzz

ソート結果は以下のようになります。
<Ver4.0以前のソート結果>
2;name;111101;zzzz
1;name;111111;zzzz
<Ver5.0以降のソート結果>
1;name;111111;zzzz
2;name;111101;zzzz

赤字は「比較キー」を表します


SORTKIT Ver5.2以前とVer5.5以降

IFAS索引順編成ファイル名の指定で、インデックスファイル名を指定しない場合のIFAS索引順編成ファイル名の生成方法が以下のように変更になっています。
このため、IFAS索引順編成ファイル名が以前と違ってくる可能性がありますので注意が必要です。

指定したデータファイル名 filename filename.dat
SORTKIT Ver5.2 以前 データファイル名 filename.dat filename.dat.dat
インデックスファイル名 filename.idx filename.dat.idx
SORTKIT Ver5.2 以降 データファイル名 filename filename.dat
インデックスファイル名 filename.idx filename.idx