ソースファイルの編集履歴を簡易的に記録したい
Question
ソースファイルの編集履歴を記録しておきたいと考えています。
編集内容までは不要で、どの日時にどのユーザーがどのソースファイルを編集したかが記録できれば良いと考えています。
そういった方法はございますか。
Answer
データベース・ジャーナルを設定するという方法もございますが、その場合、ジャーナルを仕掛けたソースファイルしかログを残すことが出来きません。
また、メンバーを編集するとそのログが全レコード分書き出されるため、情報量が多くなってしまいます。
そこで、ここでは別の方法をご案内いたします。
出口点「QIBM_QSU_ALW_EDIT」を使用する方法です。
以下に、IBMの情報がございます。
・How to restrict editing by ADTS utilities SEU, RLU, MRGSRC, EDTSRC and SDA using registered Exit Point QIBM_QSU_ALW_EDIT
https://www.ibm.com/support/pages/how-restrict-editing-adts-utilities-seu-rlu-mrgsrc-edtsrc-and-sda-using-registered-exit-point-qibmqsualwedit
上記では、ソースファイル・メンバーの編集を制限するサンプルソースがありますが、これを応用して、編集履歴をログファイルに書き出すようにします。
この方法ですと、最初に出口プログラムをセットしてしまえば、データベース・ジャーナルのように事前の設定は不要で、どのソースファイルの編集ログもキャッチすることができます。
以下、サンプルソースです。
/* PARAMETERS */
/* 1. SRCLIB CHAR(10) */
/* 2. SRCFIL CHAR(10) */
/* 3. SRCMBR CHAR(10) */
/* 4. CONTROL CHAR(1) OUTPUT */
PGM PARM(&SRCLIB &SRCFIL &SRCMBR &CONTROL) /* TO +
CONTROL SEU EDITING VIA EXIT POINT */
DCL VAR(&SRCLIB) TYPE(*CHAR) LEN(10) /* INPUT +
FROM SEU */
DCL VAR(&SRCFIL) TYPE(*CHAR) LEN(10) /* INPUT +
FROM SEU */
DCL VAR(&SRCMBR) TYPE(*CHAR) LEN(10) /* INPUT +
FROM SEU */
DCL VAR(&CONTROL) TYPE(*CHAR) LEN(1) /* OUTPUT +
FROM USER TO SEU '2'=DISALLOW EDIT ANY +
OTHERS = ALLOW EDIT */
DCL VAR(&USR) TYPE(*CHAR) LEN(10)
DCL VAR(&TXT) TYPE(*CHAR) LEN(50)
DCL VAR(&DATTIW) TYPE(*CHAR) LEN(20)
DCL VAR(&DATTIM) TYPE(*CHAR) LEN(14)
ADDLIBLE LIB(REGLIB)
MONMSG MSGID(CPF0000)
RTVUSRPRF USRPRF(*CURRENT) RTNUSRPRF(&USR)
RTVJOBA DATETIME(&DATTIW)
CHGVAR VAR(&DATTIM) VALUE(&DATTIW)
RTVMBRD FILE(&SRCLIB/&SRCFIL) MBR(&SRCMBR) TEXT(&TXT)
MONMSG MSGID(CPF9815) EXEC(CHGVAR VAR(&TXT) +
VALUE(' ※新規メンバー作成 '))
MONMSG MSGID(CPF0000) EXEC(DO)
RCVMSG MSGQ(*PGMQ) MSGID(&TXT)
CHGVAR VAR(&TXT) VALUE(' ※エラー ' || &TXT)
ENDDO
CALL PGM(QSURPG) PARM(&DATTIM &USR &SRCLIB +
&SRCFIL &SRCMBR &TXT)
ENDPGM
実際に記録されたログは以下のようになります。
上記のサンプルソースでは、CLプログラムからRPGプログラムに情報を渡してログファイルに書込みしていますが、SQLを組み込めば、CLプログラム1本で完結できるので、コーディングはよりシンプルに出来るかと思います。
なお、出口プログラムの設定などについては、上記にてご案内しているIBMのサイトをご確認ください。
by かんぴょう木綿さん