Google
オフコン練習帳内を検索
インターネット全体を検索

NECオフコン関連
オフコン一般
情報

ソートユーティリティ

ソートユーティリティを使って、分類・集計を行います。ソート元のファイルは索引順編成ファイルです。

例として使用するファイル

ソートユーティリティを使用例です。
まずこの例で使用するファイルの情報を書きます。

ソートする元のデータが入っているファイル

ファイル名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バイト、のように「担当者コード」の途中から「担当者名」の途中までを指定することができます。