サイト内の現在位置を表示しています。

SORTKIT - FAQ(機能)

2.機能について

Q2-1:【全製品】

コマンドラインで指定したオプションが効きません。

A2-1:
【全製品】
パラメータファイルとその他のオプションをコマンドラインで同時に指定しているようです。パラメータファイル以外のオプションを全てコマンドラインで指定するか、パラメータファイルとディレクティブファイルにオプションを記述し、コマンドラインではパラメータファイルだけを指定するようにしてください。
Q2-2:【全製品】

テキストファイルや行順ファイルのレコード長はどのように指定すれば良いですか?

A2-2:
【全製品】
改行コードを除いたデータの長さ+1を指定してください。
Q2-3:【全製品】

出力レコード長を指定したのに、その長さで出力されていません。出力ファイルをテキストファイルとして出力レコード長を入力レコード長以上に指定したのに、出力されたレコード長が指定した長さになりません。

A2-3:
【全製品】
出力レコードには改行コードが付加されるだけで、それ以外のコードは付加されません。そのため、指定した長さより短くなることがあります。
Q2-4:【SORTKIT】【Enterprise】

IFAS索引順編成ファイルがオープンできません。

A2-4:
【SORTKIT】【Enterprise】
SORTKITでIFAS索引順編成ファイルを扱う場合は、(a)データファイル名とインデックスファイル名を指定する
(b)データファイル名のみを指定する
の二通りの方法があります。(a)では指定されたファイル名をそのまま使用しますが、(b)ではファイル名を次のように変換して使用します。また、SORTKITのバージョンによっても変換後のファイル名が多少異なります。ファイル名を確認してください。

指定された
データファイル名
変換後のファイル名
SORTKIT Ver5.2以前 SORTKIT Ver5.5以降 SORTKIT/Enterprise
filename filename.dat filename filename
filename.idx filename.idx filename.idx
filename.abc filename.abc.dat filename.abc filename.abc
filename.abc.idx filename.idx filename.idx
Q2-5:【SORTKIT】【Enterprise】

SORTKITで出力したIFAS索引順編成ファイルをCOBOLアプリケーションでアクセスする際の注意点はありますか?

A2-5:
【SORTKIT】【Enterprise】
インデックスがないとCOBOLアプリケーションで正しくアクセスできません。SORTKITのパラメータファイルならびにGUIで文字型のセカンダリキーを指定してください。また、ファイルを出力済みの場合は、IFASKIT/IFASPROのユーティリティでインデックスを追加してください。
Q2-6:【SORTKIT】【Enterprise】

ブランク(空白)が混在しているファイル名/パス名は指定できますか?

A2-6:
【SORTKIT】【Enterprise】
コマンドラインとパラメータファイルでは、“”(ダブルクォート)でファイル名/パス名を囲ってください。
Q2-7:【SORTKIT】【Enterprise】

SORTKITのエラーメッセージをファイルにリダイレクトできますか?

A2-7:
【SORTKIT】【Enterprise】
SORTKITでは、エラーメッセージは標準エラー出力に出力しています。Windows NT/Windows2000の場合、
nsort ~ 2> errorfile

とすることによりエラーメッセージをファイルにリダイレクトできます。ただし、Windows95/98ではリダイレクトできません。
また、SORTKIT Ver5.5以降およびSORTKIT/Enterpriseではエラーメッセージをファイルに出力する機能をサポートしています。機能についての詳細は「SORTKIT説明書」を参照してください。
Q2-8:【全製品】

同値キーレコード集計機能を使ってソートする時、オーバフローを無視して実行を続けられますか?

A2-8:
【全製品】
オプションで次のいずれかを選択できます。
  1. エラーメッセージを表示してソートを中断します。
  2. エラーメッセージを表示して処理を続けます。このとき、集計結果は1つのレコードに格納されますが、結果は保証されません。
  3. エラーメッセージを表示してオーバフローが発生した時点までの集計結果を出力後、別のレコードに集計結果の続きを出力して処理を続けます。
Q2-9:【全製品】

作業ファイルはどこに作成されますか?

A2-9:
【SORTKIT】【Enterprise】
次の順序で作成する位置が決まります。

SORTKIT Ver7.1、SORTKIT/Enterprise Ver3.1以上の場合
オプションを指定しない場合は次の順序で作成する位置が決まります。

  1. 環境変数TMP、TEMPで指定したディレクトリ
  2. カレントディレクトリ
オプションでファイル名を指定した場合

  • 指定したファイル(既存ファイルは上書き、存在しない場合は自動作成します)

ディレクトリ名を指定した場合は次の順序で作成する位置が決まります。

  1. 環境変数TMP、TEMPで指定したディレクトリ
  2. 指定したディレクトリ
  3. カレントディレクトリ
上記順序は、環境変数TMP、TEMPが指定されていない場合、ディレクトリが存在しない場合や、ファイルを作成できない場合に下位へと移ります。
環境変数TMP、TEMPが両方指定されている場合は、TMPの指定を使用します。

SORTKIT Ver7.0、SORTKIT/Enterprise Ver3.0以下の場合
オプションを指定しない場合は次の順序で作成する位置が決まります。

  1. 環境変数TMPで指定したディレクトリ
  2. カレントディレクトリ
オプションでファイル名を指定した場合

  • 指定したファイル(既存ファイルは上書き、存在しない場合は自動作成します)

ディレクトリ名を指定した場合は次の順序で作成する位置が決まります。

  1. 環境変数TMPで指定したディレクトリ
  2. 指定したディレクトリ
  3. ルートディレクトリ
上記順序は、環境変数TMPが指定されていない場合やディレクトリが存在しない場合に下位へと移ります。

A2-9:
【UNIX版】【Linux版】
次の順序で作成する位置が決まります。
オプションを指定しない場合は次の順序で作成する位置が決まります。

  1. 環境変数TMPDIRで指定したディレクトリ
  2. カレントディレクトリ
オプションでファイル名を指定した場合

  • 指定したファイル(既存ファイルは上書き、存在しない場合は自動作成します)

ディレクトリ名を指定した場合は次の順序で作成する位置が決まります。

  1. 環境変数TMPDIRで指定したディレクトリ
  2. 指定したディレクトリ
上記順序は、環境変数TMPDIRが指定されていない場合やディレクトリが存在しない場合に下位へと移ります。
Q2-10:【SORTKIT】【Enterprise】

SORTKITで出力した順編成ファイルをCOBOL85 Proで作成したアプリケーションでアクセスする際の注意点はありますか?

A2-10:
【SORTKIT】【Enterprise】
COBOL85 Proでのコンパイラ動作既定値(マシン単位)に注意してください。アプリケーションをメイクする時は、コンパイラ動作既定値(マシン単位)をCOBOL85(Windows95/WindowsNT版)互換に設定する必要があります。コンパイラ動作既定値がデフォルトのままになっていると、COBOLの順編成ファイルはIFAS順編成ファイルとして扱われます。SORTKITの順編成ファイルとして扱われるようにするためには、COBOLアプリケーションをメイクする時に、コンパイラ動作既定値(マシン単位)を COBOL85(Windows95/WindowsNT版)互換に設定する必要があります。
Q2-11:【SORTKIT】【Enterprise】

一時ファイルを使用する際の注意点はありますか?

A2-11:
【SORTKIT】【Enterprise】
一時ファイルを使用するにはいくつかの条件があります。次の各項目をチェックしてください。
  • アプリケーション実行環境がインストールされ、動作していますか?
  • APECMDをつけて、またはWS-EML上で実行していますか?
  • 一時ファイル名を絶対パスで指定していますか?
Q2-12:【SORTKIT】【Enterprise】

ファイルマッパーでファイル情報を設定しているのに、内部ファイル名が有効になりません。

A2-12:
【SORTKIT】【Enterprise】
次の各項目を確認してください。
  • Open COBOL Factory 21 / COBOL85 Pro または Open COBOL Factory 21 / COBOL85 または Open COBOL Factory 21 / COBOL85 Pro ランタイムがインストールされていますか?
  • SORTIKTのSGファイル(sortkit.ini)に次のパラメータは設定されていますか?
    FILEMAP  ON
  • SORTIKTのSGファイル(sortkit.ini)はサーチパスが設定されているディレクトリに存在しますか?
Q2-13:【SORTKIT】【Enterprise】

実行情報出力ファイルにエラーメッセージが出力されません。

A2-13:
【SORTKIT】【Enterprise】
パラメータを解析する段階でエラーが発見された場合、実行情報出力ファイルにはエラーメッセージは出力されません。環境変数SORTKITERRにエラーメッセージを出力するファイルを設定してください。
Q2-14:【SORTKIT】【Enterprise】

アプリケーション実行環境:WS-EMLを使用してサーバ上でSORTKITを実行したときにエラーが発生したのですが、その詳細がわかりません。

A2-14:
【SORTKIT】【Enterprise】
SORTKIT Ver5.5以降およびSORTKIT/Enterpriseでは、エラーメッセージは実行情報出力ファイル、または環境変数SORTKITERRで指定されたファイルに出力できますので、これを利用してください。機能ついての詳細は、SORTKIT説明書を参照してください。
Q2-15:【全製品】

ASCIIコード文字列を昇順にソートする時、EBCDICコード文字列のように英字(A~Z)を数字(0~9)よりも前になるようにソートできますか?

A2-15:
【全製品】
文字列の比較順序変更機能を使用することで英字、数字の順にソートできます。SORTKIT Ver5.0以降、SORTKIT/EnterpriseおよびUNIX版SORTKIT R4.1以降では標準で変換表を持っていますので、文字の比較順序変更機能の指定で"ATOE"(ASCII→EBCDICのコード変換を行う)または"JTEK"(1バイトJIS→EBCDICカタカナのコード変換を行う)と指定してください。ただし、文字の比較順序変更機能で標準のコード変換表を指定した場合は、日付ソート機能が使用できないので注意してください。
Q2-16:【全製品】

C言語インターフェースで、キーフィールドテーブルのnumcharに設定する値は?

A2-16:
【全製品】
キータイプがSJIS(1/2バイト混在シフトJISコード文字)、もしくはEUC(1/2/3バイト混在EUCコード文字)(注)の時に、numcharで指定された文字数をもとに比較します。 例えば、EUCでフィールドサイズ4バイト、numcharが3の場合、
  • abあx
  • abcd

という2レコードは、
  1. [abあ]の[a]と[abcd]の[a]の比較、
  2. [abあ]の[b] と [abcd]の[b]の比較、
  3. [abあ]の[あ] と [abcd]の[c]の比較、
で結果を出し、[abcd]の[d]は比較対象になりません。
つまり、このほかに[abce]というレコードが存在する場合、 [abcd]と[abce]は最初の3文字で比較結果を出すため、同値とみなされます。

逆に、numcharを4と指定すると、[abcd]、[abce]は4文字目まで比較され、[abcd]->[abce]の順序付けが行われますが、 [abあx]のようにフィールド内に2バイト文字が存在すると、フィールドサイズ(上記例では4バイト)を超えた[x]まで比較対象になります。

上記のような結果では問題がある場合、単純な1バイト文字比較(CHタイプ)を行なうことをお勧めします。ただし、この場合、SJIS/EUCで指定した結果と順序が異なるケースがあります。

SJISとCH
SJIS: ASCII -> 半角カタカナ -> 2バイト漢字
CH: ASCII -> 2バイト漢字(8140-9FFC) -> 半角カタカナ -> 2バイト漢字(E040-)

EUCとCH
EUC: ASCII -> 半角カタカナ -> 2バイト漢字 -> 補助漢字
CH: ASCII -> 半角カタカナ -> 補助漢字 -> 2バイト漢字

いずれのタイプでも問題があるようでしたら、利用者キー比較コーディングを利用してください。オプションテーブルのuser_keycompで指定できます。

(注)EUCはUNIX版・Linux版のみサポート
Q2-17:【全製品】

C言語インターフェースで、nsort_endを呼び出す前にエラーとなった場合、nsort_endを呼び出す必要がありますか?

A2-17:
【全製品】
ステータス(intftbl.errinfo->status)に0以外の値が返却された場合は、SORTKIT内部で後処理(つまりnsort_endと同じような処理)を行なっていますので、異常終了時はnsort_endを呼び出す必要はありません。逆に呼び出すと、エラーになります(ステータスに値が入ったままでも、クリアされていてもエラー)。なお、nsort_rgetは関数のリターン値がありますが、異常終了時は0で返り、ステータスにエラー番号が入ります。
また、正常に動いているけれど途中でソートを止めたいとき(例えば、先頭5レコードだけソート結果を得られれば、後のレコードは必要ないようなとき)は、nsort_endを呼び出せば、その時点で正常終了します。
Q2-18:【全製品】

C言語インターフェースで、p_intftbl.errinfo.statusに実行結果が設定されるようにするには、p_intftbl.errinfo.msgoutに"1"を設定すればよいのですか?

A2-18:
【全製品】
何もしなくても、実行結果はp_intftbl.errinfo.statusに返却されます。SORTKITで関知できないエラーを除き、通常のSORTKITのエラーであれば、ステータスが更新されます。
p_intftbl.errinfo.msgoutは、SORTKITからのメッセージを出力する/出力しないの制御を行います。
Q2-19:【UNIX版】

NX7000シリーズ用SORTKITで、C-ISAM(V7)のNCHARタイプは使用できますか?

A2-19:
【UNIX版】
SORTKIT R7.2以前では、対応していません。SORTKIT R7.3以降では、ソート/マージキーとしては対応していませんが、C-ISAM(V7)ファイルのインデックスとしては対応しています。C-ISAM(V7)の入力ファイルのインデックスにNCHARタイプがあってもSORTKITはそのインデックスに従ってレコードを入力します。C-ISAM(V7)の出力ファイルのインデックスをNCHARタイプとしたい場合は、ディレクティブファイルでPRMKEYまたはSNDKEYパラメータにより指定します。
Q2-20:【UNIX版】

NX7000シリーズ用SORTKITで、C-ISAM(V7)の可変長レコードのファイルを使用できますか?

A2-20:
【UNIX版】
エラーとなり、処理を中断します。
Q2-21:【UNIX版】【Linux版】

ファイル形式が固定長のUNIX標準ファイルの場合、ファイル形式の設定値は、"STM"でしょうか?固定長ということで"SEQ"でしょうか?

A2-21:
【UNIX版】【Linux版】
どちらでもよいですが、どちらかといえばSEQにすることをお勧めします。
STM レコードの最後に改行コードが付いています。
可変長レコードです(固定長でも構いません)。
可変長フィールド時は、ASCII/EUC/EUC(ワイド文字)/シフトJISの文字コードで成り立っていなければなりません(一般的なストリングデータ)。
固定長フィールド時は、キーフィールド内はバイナリデータで構いませんが、キーフィールド以外は、レコードの区切りまたはEOFでない限り、 レコード内にNULLなど制御文字コードが含まれてはなりません。
SEQ データをレコード長(固定サイズ)で区切ったレコードです。
バイナリデータです(レコードの最後に改行が付いていても付いていなくても構いません、単純にサイズでレコードを区切ります)。
一般的にSTMよりも、処理速度は速くなります。
Q2-22:【UNIX版】【Linux版】

浮動小数点2進数のキーは最大何バイトを使用できますか?

A2-22:
【UNIX版】【Linux版】
64bit版では、4/8/16バイトが使用可能です。32bit版では、4/8バイトが使用可能です。なお、Linux版とUNIX版では扱える形式(エンディアンやフォーマット)が異なります。扱える形式はOSの仕様に従います。
Q2-23:【SORTKIT】【Enterprise】

サーバコンポーネント(COM)実行時に次のメッセージを表示してエラー終了します。「997:関連製品エラー:(SORTKIT) [122]」

A2-23:
【SORTKIT】【Enterprise】
このエラーは作業ファイルの割り当て動作で、書き込み・読み込み可能なディレクトリがないときに発生します(作業ファイルの割り当て動作の詳細は「SORTKIT 説明書」を参照して下さい)。作業ファイルの割り当てを行うディレクトリを有効にするため、以下を設定して下さい。
  1. Webブラウザからサーバにログインしているユーザアカウントを確認して下さい。例えば、WebサーバソフトInternet Information Serverの認証設定で匿名アクセスを有効にしている場合は、ユーザアカウントはIUSR_コンピュータ名です。
  2. 割り当て先のディレクトリを確認してください。もし、割り当て先がカレントディレクトリの場合は、環境変数TMP,TEMP、または、SGファイルに割り当て先のディレクトリの設定をして下さい。
  3. 割り当て先のディレクトリのセキュリティの設定に(a)で確認したユーザアカウント又はそのグループに対する書き込み・読み込み権を追加して下さい。
Q2-24:【SORTKIT】【Enterprise】

SGファイル(sortkit.ini)の設定が有効になりません。

A2-24:
【SORTKIT】【Enterprise】
SGファイル(sortkit.ini)をサーチパスが設定されているディレクトリに置いてください。以下の順序でsortkit.iniをサーチします。
  1. アプリケーションをロードしたディレクトリ(SORTKITのインストールディレクトリ)
  2. 実行ディレクトリ
  3. 32bit Windowsのシステム ディレクトリ(SYSTEM32)
  4. 16bit Windowsのシステム ディレクトリ(SYSTEM)
  5. Windowsディレクトリ
  6. パス環境変数にリストされているディレクトリ
Q2-25:【全製品】

SORTKITが使用するワークメモリサイズは、どのように計算されますか?

A2-25:
【全製品】
SORTKITでは、入力データサイズや指定されたオプションからすべての入力データをメモリ上だけでソートを行うのに必要なメモリサイズを計算します。
メモリ上だけでソートを行うのに必要なメモリサイズは、指定したキーやオプションなどにより異なりますが、入力データサイズの1.1~1.5倍程度になります。

3.GUIについて

Q3-1:【全製品】

設定する項目がたくさんありますが、何を設定すれば良いのかわかりません。

A3-1:
【全製品】
ソート、マージに必須な項目は次の通りです。
  • 入力ファイル
    入力データ定義ページに切り替えて、入力ファイルを追加して下さい。
  • 出力ファイル
    出力データ定義ページに切り替えて、出力ファイルを追加して下さい。
  • (最大)レコード長
    入力データ定義ページに切り替えて、(最大)レコード長を設定して下さい。
    なお、テキストファイルでは(最大)レコード長は必須ではありません。
Q3-2:【SORTKIT】【Enterprise】

エクスプローラーで表示されているファイルを入力/出力ファイルとして追加したいのですが、簡単にできますか?

A3-2:
【SORTKIT】【Enterprise】
エクスプローラーで表示されているファイルをドラッグ&ドロップで入力ファイルのリストボックスにドロップするだけでファイルを追加できます。出力ファイルについても同様の操作で設定が可能です。また、リストボックスの外にドロップするとパラメータファイルの読み込みができます。
Q3-3:【全製品】

設定したパラメータを保存しておいて、後で使えますか?

A3-3:
【全製品】
「ファイル」メニューの「名前を付けて保存」を選択してパラメータをファイルに保存してください。保存したパラメータを使う時は「ファイル」メニューの「開く」を選択してパラメータファイルを読み込むと、設定したパラメータを復元できます。
Q3-4:【SORTKIT】【Enterprise】

設定しているダイアログの使い方がよくわかりません。

A3-4:
【SORTKIT】【Enterprise】
「F1」キーを押してください。そこで設定しているダイアログのオンラインヘルプが表示されます。
Q3-5:【SORTKIT】【Enterprise】

一時ファイルを使用できません。

A3-5:
【SORTKIT】【Enterprise】
一時ファイルはGUIで直接使用するものではありません。GUIで作成・保存したパラメータファイルを、アプリケーション実行環境下でnsort/nmergeコマンドを実行する際に指定して使用してください。

4.ActiveXコントロールについて

Q4-1:【SORTKIT】【Enterprise】

MS VisualBasicで、ActiveXコントロールを利用するアプリケーションを作成しているのですが、利用者入力機能を使用して文字列型(String)データのソートを行うと、 ソート結果がシフトJISのコード順になりません。

A4-1:
【SORTKIT】【Enterprise】
MS VisualBasicの文字列型(String)データは通常UNICODE文字列です。利用者入力機能でSORTKITに渡されるデータは、UNICODEのコード値になります。
シフトJISのコード順でソートしたい場合は、StrConv関数でシステム規定のコードページに変換するなど、シフトJISに変換後、SORTKITに渡すようにしてください。