操作員が何か処理をしたあとで一定時間の経過後に実行させたいときがある。
例えば Webアプリケーションで印刷スフールを PDF 化してから、ユーザーに
IFS に保管したPDF をリダイレクトして表示するものとする。
しかしそのままで放置しておいたのであれば、IFS に使用済みのPDF が
ゴミのように山積してしまう。
やはり一定の時間の経過後には、そのPDF は自動消去するようにしておきたい。
このようなときには SBMJOB コマンドの スケジュール日(SCDDATE) と、
スケジュール時刻(SCDTIME) を指定することによって実現することができる。
次は 10分後に稼動するように SBMJOB する例である。
DCL VAR(&DATETIME) TYPE(*CHAR) LEN(20)
DCL VAR(&DATE) TYPE(*CHAR) LEN(6)
DCL VAR(&TIME) TYPE(*CHAR) LEN(6)
DCL VAR(&HH) TYPE(*DEC) LEN(2 0)
DCL VAR(&HHC) TYPE(*CHAR) LEN(2)
DCL VAR(&MM) TYPE(*DEC) LEN(2 0)
DCL VAR(&MMC) TYPE(*CHAR) LEN(2)
DCL VAR(&SS) TYPE(*DEC) LEN(2 0)
DCL VAR(&SSC) TYPE(*CHAR) LEN(2)
:
:
RTVJOBA DATETIME(&DATETIME)
CHGVAR VAR(&DATE) VALUE(%SST(&DATETIME 3 6))
CHGVAR VAR(&TIME) VALUE(%SST(&DATETIME 9 6))
:
/*-------------------------------------------------------------*/
/*( 8 ) 10分後にPDFを削除するようにSBMJOB */
/*-------------------------------------------------------------*/
CHGVAR VAR(&HH) VALUE(%SST(&TIME 1 2))
CHGVAR VAR(&MM) VALUE(%SST(&TIME 3 2))
CHGVAR VAR(&SS) VALUE(%SST(&TIME 5 2))
CHGVAR VAR(&MM) VALUE(&MM + 10)
IF COND(&MM >= 60) THEN(DO)
CHGVAR VAR(&HH) VALUE(&HH + 1)
CHGVAR VAR(&MM) VALUE(1)
ENDDO
CHGVAR VAR(&HHC) VALUE(&HH)
CHGVAR VAR(&MMC) VALUE(&MM)
CHGVAR VAR(&SSC) VALUE(&SS)
CHGVAR VAR(&TIME) VALUE(&HHC *CAT &MMC *CAT &SSC)
CHGVAR VAR(&DIR) +
VALUE('/AS400-NET.USR/PROJECT/PRINTER/' +
*CAT &PDF_FILE)
SBMJOB CMD(RMVLNK OBJLNK(&DIR)) JOB(RMVLNK) +
SCDDATE(&DATE) SCDTIME(&TIME) MSGQ(*NONE)