ソート実行例4
- ●逆順でソート&特定のレコードを抽出&出力フィールドの構成変更(レコード長の異なるファイルへ出力)
-
以下の条件でDATA50という名前のレコード長50バイトのファイルにソート結果を出力します。
「品番」をキーにして逆順でソート
「品番」と「何かのコード1」を比較して、「品番」の方が大きいか等しいレコードだけを選択
「何かのコード1」「品名」「品番」の順番でレコード出力する。レコードの最後に”XY”という固定文字を追加する。
ソート前(ファイル名:DATA80) 0005カラーテレビ 00500000A0005 0850ラジオ 00001800A0100 0003ステレオ 00045000A0015 0010簡易掃除機 00000300B0250 1000洗濯機 00180000B0008 0500トースター 00005000C0040 0006テレビ 00010000A0009
↓ ソート後(ファイル名:DATA50) 0008洗濯機 1000XY 0100ラジオ 0850XY 0040トースター 0500XY 0005カラーテレビ 0005XY
- ●操作方法
-
実行例1でも説明した部分は簡略して、重要部分のみ説明していますので、必要に応じて実行例1も参照してください。
RUNコマンド入力行で、「#SORT;」と入力して「ENTERキー」を押します。
ユーティリティ#SORTが起動されました。
SRTパラメータは、バッチ化する時に利用します。今回はバッチ化しないので、何も入力せずに「ENTER」キーを押します。
最初は入出力ファイルや使用する作業ファイルなどを入力します。
今回の例では、入力ファイル側のパラメータのIDEはMSD002、ICIは何も入力しない、IFIはDATA80、出力ファイル側のパラメータのODEはMSD002、OCIは何も入力しない、OFIはDATA50、作業ファイルのパラメータのIFOはPROTECT、WKDはTEMPORARYとしました。
WSZパラメータは、WKD=TEMPORARYとした時にだけ表示されるパラメータです。
今回の例のようなデータの場合は省略可能なので、何も入力せずに「ENTER」キーを押します。
今までの例では、ヒストリリスト(結果リスト)を出力していなかったので、今回の例では画面にヒストリを出力してみましょう。画面にヒストリを出力するには、LSTパラメータにYESを入力し、PRDパラメータにSTNと入力します。(PRNxxxとすれば、プリンタにも出力できます。)
SAVパラメータは、今回の例ではNOを選択しました。
NXTパラメータは、何も入力せずに「ENTER」キーを押します。
今回の例では、フロッピーディスクは使用しないのでNOVパラメータは省略、同一キーは無いのでDKYパラメータはNOとします。
ここがこの例で重要なところです。
KEYパラメータでは、ソートに使用するキーを入力します。
ソートするキーは1つで、1バイト目から4バイト分の数字項目で逆順なので、(1,4,N,D)と入力します。
ここも重要なところです。
OUTパラメータには、レコードに出力したい順番に(何バイト目から,何バイト分)と入力していきます。
今回の例では「(54,4),5,40,(1,4),(@XY@)」と入力しています。レコードの先頭に54バイト目から4バイト分のフィールドの情報、次に5バイト目から40バイト分(品名)、次に1バイト目から4バイト分(品番)、最後に2バイトのXYという文字列(固定文字を入れる場合は@で囲む)という順番で、レコード出力します。
SUMパラメータ、TOTパラメータ、ALTパラメータは、今回は特に変更しません。何も入力せずに「ENTER」キーを押します。
次も重要なところです。
「品番」と「何かのコード1」を比較して、「品番」の方が大きいか等しいレコードだけを選択抽出するので、SELパラメータは、入力が必要です。「品番」は1バイト目から4バイト分、「何かのコード1」は54バイト目から4バイト分、大きいか等しいはGEなので、(1,4,N,GE,54,4)と入力します。
ここまで入力は終了です。自動的にソートが開始されます。
そしてソートが終了すると「ソート処理が終了しました」と一瞬表示されます。
先ほど、ヒストリリストを画面に出力するよう指定したので、最後にヒストリリストが出力されます。
見終わったら、「RESET」キーを押します。そうすると#SORTは終了します。