2011.11.24
 

SQLでジョブ日付を取得する

Question

System i SQLで、システム日付と対照的なジョブ日付に相当するものはありますか。本日の日付で選択するジョブがいくつかあるのですが、その日の終わりの処理に失敗して、翌朝それらのジョブを実行しなければならない場合、自分の画面セッション Job Dateを設定して、RUNSQLSTMを実行することができません。

Answer

SQLではジョブ日付に相当するものはありませんが、ジョブ日付を返す RPG 関数を作成し、それをユーザー定義関数 (UDF) として SQL に登録することができます。以下は UDF/CL の例で、現在のジョブの日付を取得する方法を示しています。

まず、次の CL プログラム getjobdate をコンパイルします。

/* Return Job Date in format: CYYMMDD */
    PGM    PARM(&CYYMMDD)
    DCL    VAR(&CYYMMDD) TYPE(*CHAR) LEN(7)
    RTVJOBA  CYMDDATE(&CYYMMDD)
Endpgm

次に、SQL スクリプトを RUNSQLSTM CL コマンドで実行します。

CREATE FUNCTION MYLIBl/getjobdate()
  RETURNS char(7)
  LANGUAGE CL

次に、CL コマンドで UDF を作成します。

RUNSQLSTM  SRCFILE(MYLIB/QSQLSRC)  SRCMBR(GETJOBDATE)
COMMIT(*NONE)  PROCESS(*RUN)

最後に、SQLジョブの開始時にそのUDFを呼び出します。

select getjobdate() from sysibm/sysdummy1

ページトップ

ボタン