CL

49. スプール・ファイルを高速でデータ・ベースに変換するには ?

印刷スプール・ファイルをデータ・ベース化するのに良く見られる方法としては

      OVRPRTF QPRINT HOLD(*YES)
      CALL    MYPRINTPGM
      DLTOVR  QPRINT

      CHKOBJ     OBJ(QTEMP/QPRINT) OBJTYPE(*FILE)             
      MONMSG     MSGID(CPF9800) EXEC(DO)                      
      CRTPF      FILE(QTEMP/QPRINT) RCDLEN(132) IGCDTA(*YES) +
                   LVLCHK(*NO) AUT(*ALL)                      
      ENDDO                                                   
      CPYSPLF    FILE(QPRINT) TOFILE(QTEMP/QPRINT) JOB(*) +   
                   SPLNBR(*LAST) MBROPT(*REPLACE)             
      DLTSPLF    FILE(QPRINT) JOB(*) SPLNBR(*LAST)        

のようにして CPYSPLF コマンドを使ってデータ・ベースに変換する方法である。
ところが大量の印刷スプールを扱うときには、長い時間がかかってしまい
何とか速くする方法はないものかと疑問に思うかも知れない。
もとよりソフトウェア製品の場合には CPYSPLF コマンドを利用することは、
パフォーマンスの面においても論外であるが中にはそうした製品もある。

ところで、何も QPRINT という印刷スプール・ファイルに出力してからわざわざ
データ・ベース : QTEMP/QPRINT に変換しなくても、始めから印刷プログラムの
QPRINT 出力をデータ・ベース QTEMP/QPRINT に一時変更してしまって、
直接、データ・ベースに出力することもできるのである。
意外とこの便利な方法は知られていないので、機会があれば是非お試しいただきたい。

      CHKOBJ     OBJ(QTEMP/QPRINT) OBJTYPE(*FILE)             
      MONMSG     MSGID(CPF9800) EXEC(DO)                      
      CRTPF      FILE(QTEMP/QPRINT) RCDLEN(132) IGCDTA(*YES) +
                   LVLCHK(*NO) AUT(*ALL)                      
      ENDDO
      OVRPRTF QPRINT TOFILE(QTEMP/QPRINT)
      CALL    MYPRINTPGM
      DLTOVR  QPRINT