最後にライブラリー数の変動があった日付を
調べるにはどのようにすれば良いか?
ライブラリーQSYSそのものは常に更新されているので
QSYSの変更日を調べても意味がない。
_
Copilotにいろいろと相談してみたがSQLを持ち出して
きたりして確実に動作する決定的な解決案は
得られなかった。
_
そこで考えたのがコマンドCRTLIBとDLTLIBの使用日付で
大きいほうが最後にライブラリー数に変動のあった
日付と言えるのではないだろうか?
そこで作成したのがここに紹介するCLP: TESTLIBである。
[ TESTLIB: ライブラリー数の変動した日を調べる]
ソースはこちらから
0001.00 PGM
0002.00 DCL VAR(&CHGDATE) TYPE(*CHAR) LEN(13)
0003.00 DCL VAR(&CRTDATE) TYPE(*CHAR) LEN(13)
0004.00 DCL VAR(&DLTDATE) TYPE(*CHAR) LEN(13)
0005.00 DCL VAR(&USEDATE) TYPE(*CHAR) LEN(7)
0006.00
0007.00 /*---------------------------*/
0008.00 CALLSUBR SUBR(CHKLIBR)
0009.00 /*---------------------------*/
0010.00 SNDPGMMSG MSG(' 最後の変動があったのは ' *CAT &CHGDATE +
0011.00 *TCAT ' です。 ') MSGTYPE(*DIAG)
0012.00 RETURN
0013.00 /******************************/
0014.00 SUBR SUBR(CHKLIBR)
0015.00 /******************************/
0016.00 RTVOBJD OBJ(CRTLIB) OBJTYPE(*CMD) USEDATE(&USEDATE)
0017.00 CHGVAR VAR(&CRTDATE) VALUE('20' *CAT %SST(&USEDATE +
0018.00 2 6))
0019.00 RTVOBJD OBJ(DLTLIB) OBJTYPE(*CMD) USEDATE(&USEDATE)
0020.00 CHGVAR VAR(&DLTDATE) VALUE('20' *CAT %SST(&USEDATE +
0021.00 2 6))
0022.00 IF COND(&CRTDATE >= &DLTDATE) THEN(DO)
0023.00 CHGVAR VAR(&CHGDATE) VALUE(&CRTDATE)
0024.00 ENDDO
0025.00 ELSE CMD(DO)
0026.00 CHGVAR VAR(&CHGDATE) VALUE(&DLTDATE)
0027.00 ENDDO
0028.00 ENDSUBR
0029.00 ENDPGM
[解説]
0016.00 RTVOBJD OBJ(CRTLIB) OBJTYPE(*CMD) USEDATE(&USEDATE)
でコマンド: CRTLIBの使用日を取得して
0019.00 RTVOBJD OBJ(DLTLIB) OBJTYPE(*CMD) USEDATE(&USEDATE)
でコマンド DLTLIB の使用日を取得して比較して変更日として取得している。
この方法も気づいてしまえば簡単であるが気づくまでの
調査や試行錯誤が大変であったので記事にした。
_
