メニューボタン
サポートチーム便り2026.08.06

IBMiジョブログ出力の自動化について

Question

IBM i (AS/400)で一通りの操作を実施した後、ログをスプールに出力するために通常はサインオフ前に DSPJOBLOG OUTPUT(*PRINT) コマンドを入力して操作を終えています。

サインオフする際に、このジョブログ出力操作を自動化する手段を教えてください。

SIGNOFFコマンドのジョブログパラメータを *LIST に変更すれば実現できそうですが、この方法だとすべてのユーザーに対して適用されてしまう懸念があります。

特定のユーザーに絞って適用できる代替手段はありますでしょうか?

Answer

ご懸念の通り、SIGNOFFコマンド自体のパラメーターを変更する方法はすべてのプロファイルに影響を及ぼし、スプールが大量に生成されてしまうためお勧めしかねます。

代替案として、「出口プログラム」を活用する方法が考えられます。

この仕組みを利用して、サインオフ時に「ジョブ実行属性」を抽出し、特定のユーザー(例:USER01やUSER02など)だった場合にのみジョブログを出力するようプログラム側で指定・振り分けを行います。

【出口プログラムのサンプル】

以下はユーザー:USER01またはUSER02だった場合にジョブログを出力するサンプルです。

PGM PARM(&IN_DATA &OUT_CMD &OUT_LEN) 

/* IBM i (AS/400)から強制的に渡される3つのパラメーター受け皿 */ 
DCL VAR(&IN_DATA) TYPE(*CHAR) LEN(4000) 
DCL VAR(&OUT_CMD) TYPE(*CHAR) LEN(32000) 
DCL VAR(&OUT_LEN) TYPE(*INT) LEN(4) 
DCL VAR(&USER) TYPE(*CHAR) LEN(10) 

/* 1. 現在サインオフしようとしているユーザー名を取得 */ 
RTVJOBA USER(&USER) 

/* 2. 対象の特定ユーザーだった場合、ジョブログを印刷 */ 
IF COND((&USER *EQ 'USER01') *OR (&USER *EQ 'USER02')) +
THEN(DO) 
CHGJOB LOG(4 0 *SECLVL) LOGOUTPUT(*JOBEND) 
DSPJOBLOG OUTPUT(*PRINT) 
ENDDO 

/* 3. 本来の「SIGNOFF」コマンド実行*/ 
CHGVAR VAR(&OUT_CMD) VALUE('SIGNOFF') 
CHGVAR VAR(&OUT_LEN) VALUE(7) /* 「SIGNOFF」の文字数 */
ENDPGM

【出口プログラムの登録・確認方法】

作成した出口プログラム(仮に QGPL/SIGNOFF_EX とします)を登録するには、以下のコマンドを実行します。

ADDEXITPGM EXITPNT(QIBM_QCA_CHG_COMMAND) FORMAT(CHGC0100) PGMNBR(*LOW) PGM(QGPL/SIGNOFF_EX) PGMDTA(*JOB *CALC 'SIGNOFF   QSYS      ')

正常に登録できたかどうかは、以下のコマンドで確認できます。

WRKREGINF QIBM_QCA_CHG_COMMAND

上記コマンドを実行し、一覧の最後の項目に登録したプログラムが追加されているか確認してください。

その他、特定プロファイルユーザーがサインオフコマンドを実行した場合には毎度ジョブログが出力されることになるため、状況に応じてスプールを整理する運用も併せてご検討ください。


参考:ACSで不要なスプールファイルを纏めて削除するには
https://www.e-bellnet.com/category/technology/2108/2108-03.html

参考::古いスプール・ファイルを一括削除したい
https://www.e-bellnet.com/category/technology/2307/2307-03.html

by . 大熊猫橋

あわせて読みたい記事

PAGE TOP