CL

177. ライブラリー数の変動があった日付を調べるには

最後にライブラリー数の変動があった日付を
調べるにはどのようにすれば良いか?
ライブラリー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 の使用日を取得して比較して変更日として取得している。
この方法も気づいてしまえば簡単であるが気づくまでの
調査や試行錯誤が大変であったので記事にした。
_