Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

最適化のため、作業リストを用います。最初にSTATESファイルの内容を作業リストに読み込んでしまい、FETCHコマンドをLOC_ENTRYコマンドに置き換えることにより、毎回データベースにアクセスする代わりに、作業リストから状態コードの説明記述を取得するよう変更しました。

     GROUP_BY   NAME(#TRANS)

...

 FIELDS(#TRANNUM #TRANDATE #TRANTIME 
           #TRANTYPE #TRANDESC #TRANUSER #TRANSTATE #STATDESC)
 
DEF_LIST   NAME(#STATES)

...

 FIELDS(#STATCODE #STATDESC) 
           TYPE(*WORKING)

...

 ENTRYS(10)
 
SELECT     FIELDS(#STATES)

...

 FROM_FILE(STATES)
ADD_ENTRY  TO_LIST(#STATES)
ENDSELECT
 
SELECT     FIELDS(#TRANS)

...

 FROM_FILE(TRANS)
LOC_ENTRY  IN_LIST(#STATES)

...

 WHERE('

...

#STATCODE =

...

 #TRANSTATE')
FETCH      FIELDS(#TRANS)

...

 FROM_FILE(TRNTYP)

...

 
           WITH_KEY(#TRANTYPE)
UPRINT     FIELDS(#TRANS)
ENDSELECT

例えばファイルTRANSに1万のレコード、ファイルSTATESには6つのレコードがある場合、データベースには、(10000 + 6 + 10000) = 20006回アクセスすればよいので、9994回分の入出力処理を削減できたことになります。したがって実行時間は約3分の2になりました。