CL

73. API : QUSRMBRD : メンバー記述の検索

QUSRMBRD はファイルのメンバーの記述情報を検索する API である。

ファイルメンバーの記述情報の検索 ( QUSRMBRD ) API

パラメータ

必須パラメータ・グループ:

1.レシーバー変数出力Char(*)
2.レシーバー変数長入力Binary(4)
3.形式名入力Char(8)
4.修飾データ・ベースファイル名入力Char(20)の配列(*)
5.データ・ベース・メンバー名入力Char(10)
6.一時変更処理入力Char(1)

任意選択パラメータ:

7.エラー・コード入出力Char(*)

任意選択パラメータ:

8.メンバー検索処理入力Char(*)

QUSRMBRD は形式名によって戻されるレシーバー変数 ( 戻り変数 ) の内容とその長さが変わります。

形式名

MBRD0100 形式・・・・・・メンバー名および基本的なソース情報
MBRD0200 形式・・・・・・メンバー名および拡張情報
MBRD0300 形式・・・・・・メンバー名および完全な情報

修飾データ・ベース名

ファイル名 ( 10桁 ) + ライブラリー名 ( 10桁 ) で表現する。
ライブラリー名 には *CURLIB, *LIBL の指定も可。

データ・ベース・メンバー名

ファイルのメンバー名を指定する。
*FIRST または *LAST の使用も可。

一時変更処理

0 : 一時変更を行なわない を指定すること。

MBRD0100 形式

オフセットタイプフィールド
10進数16進数
00BINARY(4)返されるバイト数
44BINARY(4)使用可能なバイト数
88CHAR(10)データ・ベース・ファイル名
1812CHAR(10)ライブラリー名
281CCHAR(10)メンバー名
3826CHAR(10)ファイル属性
4830CHAR(10)ソース・タイプ
583ACHAR(13)作成日時
7147CHAR(13)最後のソースを変更した日時
8454CHAR(50)メンバー・テキスト記述
13486CHAR(1)ソース・ファイル

MBRD0200 形式

オフセットタイプフィールド
10進数16進数
00OBJD0200 形式からのすべての情報
13587CHAR(13)ソース・ファイルの更新日時
13688CHAR(13)オブジェクト保管日時
14089CHAR(13)オブジェクト復元日時
1448ACHAR(10)作成者のユーザー・プロフィール
1488CCHAR(8)オブジェクトが作成されたシステム
15290CHAR(7)リセット日付
1569CBINARY(4)保管サイズ
160A0BINARY(4)保管順序番号
173ADCHAR(10)記憶域
186BACHAR(10)保管コマンド
199C7CHAR(71)保管ボリュームID
206CECHAR(10)保管装置
212D4CHAR(10)保管ファイル名
216D8CHAR(10)保管ファイル・ライブラリー名
223DFCHAR(17)保管ラベル
230E6CHAR(9)システム・レベル
232E8CHAR(16)コンパイラー
236ECCHAR(8)オブジェクト・レベル
240F0CHAR(1)ユーザーの変更
244F4CHAR(16)ライセンス・プログラム
248F8CHAR(10)プログラム一時修正(PTF)
252FCCHAR(10)プログラム診断依頼書(APAR)

MBRD0300 形式

オフセットタイプフィールド
10進数16進数
00OBJD0200 形式からのすべての情報
26610ACHAR(1)結合メンバー
26710BCHAR(1)アクセス・パスの保守
26810CCHAR(10)SQL ファイル・タイプ
278116CHAR(1)予約済み
279117CHAR(1)読み取り操作の許可
280118CHAR(1)書き出し操作の許可
281119CHAR(1)更新操作の許可
28211ACHAR(1)削除操作の許可
28311BCHAR(1)予約済み
28411CBIBARY(4)書出しの置換えを行なうレコード
288120BIBARY(4)削除レコードの許容最大パーセント
292124BIBARY(4)レコードの初期数
296128BIBARY(4)レコードの増分数
30012CBIBARY(4)増分の最大数
304130BIBARY(4)増分の現行数
308134BIBARY(4)レコード容量
312138CHAR(10)レコード様式選択プログラム
322142CHAR(10)ライブラリー
33214CBIBARY(4)制約索引の数
33414EBIBARY(4)制約索引情報までのオフセット
338153CHAR(46)予約済み
384180CHAR(112)配列レコード様式および基本ファィル・リスト
**CHAR(320)配列制約索引情報
【 サンプル・ソース:TESTMBRD 】

これはソース・ファイル PGMRLIB/QRPGLESRC のメンバー AAI006 のソース・タイプを
表示するプログラムである。

0001.00              PGM                                                                 
0002.00 /*---------------------------------------------------------*/                    
0003.00 /*   TESTMBRDCL :   メンバー記述の検索                     */                    
0004.00 /*---------------------------------------------------------*/                    
0005.00              DCL        VAR(&MSG) TYPE(*CHAR) LEN(132)                           
0006.00              DCL        VAR(&MSGID) TYPE(*CHAR) LEN(7)                           
0007.00              DCL        VAR(&MSGF) TYPE(*CHAR) LEN(10)                           
0008.00              DCL        VAR(&MSGFLIB) TYPE(*CHAR) LEN(10)                        
0009.00              DCL        VAR(&MSGDTA) TYPE(*CHAR) LEN(132)                        
0010.00              DCL        VAR(&TYPE) TYPE(*CHAR) LEN(1)                            
0011.00              DCL        VAR(&RCVVAR) TYPE(*CHAR) LEN(1024)                       
0012.00              DCL        VAR(&RCVLEN) TYPE(*CHAR) LEN(4) +                        
0013.00                           VALUE(X'00000400')                                     
0014.00              DCL        VAR(&APIERR) TYPE(*CHAR) LEN(116) +                      
0015.00                           VALUE(X'000074') /* 2 進数  */                         
0016.00              DCL        VAR(&NULL4) TYPE(*CHAR) LEN(4) +                         
0017.00                           VALUE(X'00000000')                                     
0018.00              MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))                  
0019.00                                                                                  
0020.00              RTVJOBA    TYPE(&TYPE)                                              
0021.00              CALL       PGM(QUSRMBRD) PARM(&RCVVAR &RCVLEN +                     
0022.00                           'MBRD0100' 'QRPGLESRC PGMRLIB   ' +                    
0023.00                           'AAI006    ' '0' &APIERR)                              
0024.00              IF         COND(%SST(&APIERR 5 4) *NE &NULL4) THEN(DO)              
0025.00              GOTO       APIERR                                                   
0026.00              ENDDO                                                               
0027.00              SNDPGMMSG  MSG('SRCTYPE = ' *CAT %SST(&RCVVAR 49 +                  
0028.00                           10)) TOMSGQ(*TOPGMQ) MSGTYPE(*DIAG)                    
0029.00              RETURN                                                              
0030.00                                                                                  
0031.00  APIERR:                                                                         
0032.00              CHGVAR     VAR(&MSGID) VALUE(%SST(&APIERR 9 7))                     
0033.00              CHGVAR     VAR(&MSGF) VALUE('QCPFMSG   ')                           
0034.00              CHGVAR     VAR(&MSGDTA) VALUE(%SST(&APIERR 17 100))                 
0035.00              RTVMSG     MSGID(&MSGID) MSGF(QCPFMSG) MSGDTA(&MSGDTA) +            
0036.00                           MSG(&MSG)                                              
0037.00              GOTO       SNDMSG                                                   
0038.00  ERROR:      RCVMSG     MSGTYPE(*LAST) RMV(*NO) MSG(&MSG)                        
0039.00  SNDMSG:                                                                         
0040.00              IF         COND(&TYPE *EQ '0') THEN(DO)                             
0041.00              SNDPGMMSG  MSG(&MSG) TOMSGQ(*SYSOPR) MSGTYPE(*COMP)                 
0042.00              ENDDO                                                               
0043.00              ELSE       CMD(DO)                                                  
0044.00              SNDPGMMSG  MSG(&MSG) TOMSGQ(*TOPGMQ) MSGTYPE(*DIAG)                 
0045.00              ENDDO                                                               
0046.00              ENDPGM                                                              
【解説】

QUSRMBRD を使用しているのは

0021.00              CALL       PGM(QUSRMBRD) PARM(&RCVVAR &RCVLEN +                     
0022.00                           'MBRD0100' 'QRPGLESRC PGMRLIB   ' +                    
0023.00                           'AAI006    ' '0' &APIERR)                              

であり、レシーバー変数 mbrd0100 からソース・タイプを

0027.00              SNDPGMMSG  MSG('SRCTYPE = ' *CAT %SST(&RCVVAR 49 +                  
0028.00                           10)) TOMSGQ(*TOPGMQ) MSGTYPE(*DIAG)                    

によって取り出して表示している。

QUSRMBRD の実行でエラーが発生すれば

0031.00  APIERR:                                                                         
0032.00              CHGVAR     VAR(&MSGID) VALUE(%SST(&APIERR 9 7))                     
0033.00              CHGVAR     VAR(&MSGF) VALUE('QCPFMSG   ')                           
0034.00              CHGVAR     VAR(&MSGDTA) VALUE(%SST(&APIERR 17 100))                 
0035.00              RTVMSG     MSGID(&MSGID) MSGF(QCPFMSG) MSGDTA(&MSGDTA) +            
0036.00                           MSG(&MSG)                                              
0037.00              GOTO       SNDMSG                                                   

によってエラー・メッセージが出力されるように対処している。
この例はサンプルとはいえ十分なエラー・モニターも行なわれているのである。