Opttech Sort for Windows

Opttech Sort for Windows


AG-TECH製品ライン


ご利用いただくお客様層に合わせた AG-TECH サポートサービスをご用意しております。



製品別FAQ参考資料
サポートサービスサポートフォーム

お問い合わせはこちら



*Opttech Sort は Opttech.com の商標です。
*Microsoft、Windows、Windows NT、Visual Basic は、Microsoft Corp. の登録商標です。
*その他、会社名、アプリケーション名、システム名などは一般に各メーカの登録商標または商標です。
Opttech Sort for Windows

特徴と仕様

パフォーマンス


ベンチマークテスト

レコード件数 ファイルサイズ 処理時間(ソート) 処理時間(セレクト)
10,000 800KB 0.05 秒 0.02 秒
50,000 4MB 0.39 秒 0.05 秒
100,000 8MB 0.81 秒 0.10 秒
500,000 40MB 4.72 秒 0.42 秒
1,000,000 80MB 10.06 秒 0.82 秒


入力/出力


ソート/マージ


レコードセレクト


再フォーマット/集計機能


スタンドアローンでの利用


サブルーチンでの利用


サンプルプログラム

※製品には VB.NET のサンプルが含まれています。


■Visual Basic ファイルソートのサンプル

  1. 下のサンプルは Visual Basic プログラムです。他の言語からの呼び出し手順も基本は同じです。
  2. Opttech Sort へパラメータをセットアップします(Infilev$ =、Outfilev$ =、Ctlstmtv$ =を参照)。
  3. CALL ステートメントによって Opttech Sort を呼び出します(Call Sortvb …を参照)。
  4. レコード出力数とステータスコードが返されます。

Private Declare Sub Sortvb Lib "OTSW32.DLL" Alias "s_1mains" _ 
 
    (ByVal Infile$,ByVal Outfile$,ByVal Ctlstmt$,Numrec&,Retcode&)
 
Private Sub cmdStartButton_Click()
 
    Infilev$ = txtInfile.Text
 
    Outfilev$ = txtOutfile.Text
 
    Ctlstmtv$ = txtCtlstmt.Text
 
    Call Sortvb(Infilev$, Outfilev$, Ctlstmtv$, Numrecv&, Retcodev&)
 
    txtNumrec.Text = Str$(Numrecv&) txtRetcode.Text = Str$(Retcodev&)
 
End Sub

■C レコードソートのサンプル

  1. ここで示すサンプルはC言語プログラムです。他の言語も呼び出し手順は同じです。
  2. 比較するルーチンやその他の複雑なコーディングを記述する必要はありません。
  3. Opttech Sortに渡すデータをメモリに保持することができる場合、ディスクアクセスは必要ありません。
  4. Opttech Sortに渡すデータがメモリに保持するには大きすぎる場合、ディスクワークスペースが使われても、処理完了後に自動的に消去されます。
  5. 「レコードソート」プロセスの途中でもスムーズに処理を停止することができるように、「アボート」機能が提供されます。
  6. 「レコードソート」機能はOpttech Sortを利用方法に柔軟性を与えるために提供されます。

/* C program calling Opttech Sort with records */
 
    char io_area[100], *result;
 
    unsigned int func, io_len, ret_code;
 
    FILE *f1, *fopen();
 
/* set up for initialization call func=1 */
 
    func = 1;
 
    strcpy(io_area,"sort(1,10,c,a)");
 
    io_len = strlen(io_area);
 
    RSMSCS(func, io_area, &io_len, &ret_code);
 
    if (ret_code != 0) sorterr(ret_code);
 
    if ((f1 = fopen("samp.dat","r")) == NULL) {
 
    printf("can not open file \n"); exit(1); }
 
/* pass records to sort func=2 */
 
    func = 2; result = fgets(io_area, 100, f1);
 
    while(result != NULL) {
 
        io_len = strlen(io_area);
 
        RSMSCS(func, io_area, &io_len, &ret_code);
 
        if (ret_code != 0) sorterr(ret_code);
 
        result = fgets(io_area, 100, f1);
 
    }
 
/* get sorted records back from sort func=3 */
 
    func = 3;
 
    while(ret_code != 1) {
 
        RSMSCS(func, io_area, &io_len, &ret_code);
 
        if (ret_code == 1) break;
 
        if (ret_code > 1) sorterr(ret_code);
 
        io_area[io_len-1] = '\0';
 
        printf("%s\n",io_area);
 
    }