ソートユーティリティ
ソートユーティリティを使って、分類・集計を行います。ソート元のファイルは索引順編成ファイルです。
- 例として使用するファイル
-
ソートユーティリティを使用例です。
まずこの例で使用するファイルの情報を書きます。
●ソートする元のデータが入っているファイル
ファイル名 E-FILE0 装置名 MSD001 ファイル編成 索引順編成 ファイルサイズ 100 レコード長 256 ブロック化係数 1 キー位置/キー長 1/5 ●ソート結果を入れるファイル
ファイル名 E-SORT0 装置名 MSD001 ファイル編成 順編成 ファイルサイズ 100 レコード長 16 ●ソート元のフィールド構成
担当者コード 英数字5桁(キー項目) 担当者名 日本語10桁 部門コード 英数字2桁 当月売上目標 数字7桁 当月売上実績 数字7桁 FILLER 英数字215桁 - 実行例
-
#SORTを利用して各担当者の所属する部門コードごとに当月売上目標と当月売上実績を集計します。
*** ENTER PARAMETERS *** SORT IDENTIFICATION; SRT= INPUT DEVICE; IDE=MSD INPUT FILE NAME; IFI=E-FILE0 OUTPUT DEVICE; ODE=MSD OUTPUT FILE NAME; OFI=E-SORT0 INPUT FILE OPEN MODE; IFO=PROTECT WORK DEVICE; WKD=TEMPORARY WORK FILE SIZE; SIZ= LIST; LST=NO SAVE PARAMETERS; SAV= PARAMETER DEVICE; PDE= PARAMETER FILE NAME; PFI= NEXT PROGRAM; NXT= NUMBER OF INPUT VOLUMNS; NOV= DUPLICATED KEY PROCESS; DKY= KEY FIELD; KEY=(26,2,C) OUTPUT FIELD; OUT=(26,2),(28,7),(35,7) SUMMARIZE FIELD; SUM=(28,7),(35,7) TOTAL FIELD; TOT= SELECT FIELD; SEL= ALTERNATE SEQUENCE; ALT=
「KEY FIELD」の(26,2,C)は、桁位置26バイト、桁数2バイト、項目タイプはC(つまり文字)をキー項目とするということを表しています。これはどの項目かというと、「部門コード」のことです。桁位置は、レコードの先頭の「担当者コード」が英数字5桁なので5バイト、次の「担当者名」が日本語10文字なので、20バイト、ここまでで25バイトなので、次の「部門コード」は26バイト目から始まることになります。なので「部門コード」の桁位置は26バイトです。
このようにソートユーティリティで項目を指定するときは、桁位置を計算しないといけないのです。これが結構面倒です。
次の「OUTPUT FIELD」は出力する項目を指定します。(26,2),(28,7),(35,7)は、桁位置26バイト、桁数2バイトの「部門コード」、桁位置28バイト、桁数7バイトの「当月売上目標」、桁位置35バイト、桁数7バイトの「当月売上実績」の3項目をファイルに出力するということを示します。
「SUMMARIZE FIELD」は、集計したい項目を指定します。(28,7),(35,7)は、「当月売上目標」「当月売上実績」の2つの項目を集計するように指定しています。
これでキーに指定した「部門コード」ごとに「当月売上目標」と「当月売上実績」の2つを集計することができます。
●ソート元データ
00001小宮 千明 0108000000550000・・・ 00002金子 明 0208000000750000・・・ 00003高橋 太郎 0105000000550000・・・ 00004佐藤 まさし 0208000000600000・・・ 00005五十嵐 治 0310000000880000・・・ 00006桜井 さくら 0308000000750000・・・ 00007加藤 一彦 0110000001200000・・・ 00008高橋 秀樹 0208000000900000・・・ 00009河合 篤 0106000000550000・・・ 00010斉藤 正六 0310000001150000・・・ ↑ ↑ ↑ ↑ ↑ 担当者 担当者名 部門 当月売上 当月売上 コード コード 目標 実績
●ソート結果データ
01290000 285000 02240000 225000 03280000 278000 ↑ ↑ ↑ 部門 | 当月売上 コード| 実績 当月売上 目標
「TOTAL FIELD」で累計したい項目を指定したり、「SELECT FIELD」で特定のレコードのみを選択して分類したいといった選択条件の指定もできます。
集計対象項目(SUMMARIZE FIELD)は集計結果が符号付き数字で出力されます。(今回の例で言うと、E-SORT0の当月売上目標と当月売上実績)
OUTPUT FIELDに指定できるファイルの種類は、順編成と相対編成だけです。
OUTPUT FIELDパラメータに指定された項目の合計桁数と出力ファイルのレコードが一致しないと「パラメータの組み合わせが間違っています」のメッセージが表示され、実行時エラーとなります。
項目の指定を項目名ではなく、桁位置と桁数で指定するということは、桁位置の計算が必要であったりと面倒ですが、逆に利点もあります。例えば、「担当者コード」は桁位置1バイト目、桁数5バイトです。これを桁位置2バイト、桁数2バイトと指定すれば、担当者コードの一部だけを取り出すこともできます。また桁位置1バイト目、桁数25バイトとすれば、「担当者コード」と「担当者名」を1セットで扱うこともできます。今回は意味はありませんが、桁位置3バイト目、桁数12バイト、のように「担当者コード」の途中から「担当者名」の途中までを指定することができます。