C400

93. 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 または の使用も可。

一時変更処理

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

MBRD0100 形式

オフセット タイプ フィールド
10進数 16進数
0 0 BINARY(4) 返されるバイト数
4 4 BINARY(4) 使用可能なバイト数
8 8 CHAR(10) データ・ベース・ファイル名
18 12 CHAR(10) ライブラリー名
28 1C CHAR(10) メンバー名
38 26 CHAR(10) ファイル属性
48 30 CHAR(10) ソース・タイプ
58 3A CHAR(13) 作成日時
71 47 CHAR(13) 最後のソースを変更した日時
84 54 CHAR(50) メンバー・テキスト記述
134 86 CHAR(1) ソース・ファイル

MBRD0200 形式

オフセット タイプ フィールド
10進数 16進数
0 0 OBJD0200 形式からのすべての情報
135 87 CHAR(13) ソース・ファイルの更新日時
136 88 CHAR(13) オブジェクト保管日時
140 89 CHAR(13) オブジェクト復元日時
144 8A CHAR(10) 作成者のユーザー・プロフィール
148 8C CHAR(8) オブジェクトが作成されたシステム
152 90 CHAR(7) リセット日付
156 9C BINARY(4) 保管サイズ
160 A0 BINARY(4) 保管順序番号
173 AD CHAR(10) 記憶域
186 BA CHAR(10) 保管コマンド
199 C7 CHAR(71) 保管ボリュームID
206 CE CHAR(10) 保管装置
212 D4 CHAR(10) 保管ファイル名
216 D8 CHAR(10) 保管ファイル・ライブラリー名
223 DF CHAR(17) 保管ラベル
230 E6 CHAR(9) システム・レベル
232 E8 CHAR(16) コンパイラー
236 EC CHAR(8) オブジェクト・レベル
240 F0 CHAR(1) ユーザーの変更
244 F4 CHAR(16) ライセンス・プログラム
248 F8 CHAR(10) プログラム一時修正(PTF)
252 FC CHAR(10) プログラム診断依頼書(APAR)

MBRD0300 形式

オフセット タイプ フィールド
10進数 16進数
0 0 OBJD0200 形式からのすべての情報
266 10A CHAR(1) 結合メンバー
267 10B CHAR(1) アクセス・パスの保守
268 10C CHAR(10) SQL ファイル・タイプ
278 116 CHAR(1) 予約済み
279 117 CHAR(1) 読み取り操作の許可
280 118 CHAR(1) 書き出し操作の許可
281 119 CHAR(1) 更新操作の許可
282 11A CHAR(1) 削除操作の許可
283 11B CHAR(1) 予約済み
284 11C BIBARY(4) 書出しの置換えを行なうレコード
288 120 BIBARY(4) 削除レコードの許容最大パーセント
292 124 BIBARY(4) レコードの初期数
296 128 BIBARY(4) レコードの増分数
300 12C BIBARY(4) 増分の最大数
304 130 BIBARY(4) 増分の現行数
308 134 BIBARY(4) レコード容量
312 138 CHAR(10) レコード様式選択プログラム
322 142 CHAR(10) ライブラリー
332 14C BIBARY(4) 制約索引の数
334 14E BIBARY(4) 制約索引情報までのオフセット
338 153 CHAR(46) 予約済み
384 180 CHAR(112)配列 レコード様式および基本ファィル・リスト
* * CHAR(320)配列 制約索引情報

これはソース・ファイル PGMRLIB/QRPGLESRC のメンバー AAI006 のソース・タイプを

表示するプログラムである。

0001.00 #include <stdio.h>                                                               
0002.00 #include <stdlib.h>                                                              
0003.00 #include <string.h>                                                              
0004.00 #include <QUSRMBRD.h>                                                            
0005.00                                                                                  
0006.00 #define TRUE         0                                                           
0007.00 #define FALSE       -1                                                           
0008.00 typedef struct {                                                                 
0009.00    int  BYTESPRO;                                                                
0010.00    int  BYTESAVL;                                                                
0011.00    char MSGID[7];                                                                
0012.00    char RESRVD;                                                                  
0013.00    char EXCPDATA[100];                                                           
0014.00 } ERRSTRUCTURE;     /* Define the error return structure            */           
0015.00 ERRSTRUCTURE  errcode;/* Error Code Structure for RCVMSG      */                 
0016.00                                                                                  
0017.00 void main(void){                                                                 
0018.00    char msg[128], filfillib[21], mbr[11];                                        
0019.00    Qdb_Mbrd0100_t  mbrd0100;                                                     
0020.00   char m_srctype[11];                                                            
0021.00                                                                                  
0022.00    printf("** TESTMBRD : メンバー記述の検索 **\n");                              
0023.00    getchar();                                                                    
0024.00    errcode.BYTESPRO = errcode.BYTESAVL = 0;                                      
0025.00    memset(filfillib, 0, sizeof(filfillib));                                      
0026.00    memcpy(filfillib, "QRPGLESRC PGMRLIB   ", 20);                                
0027.00    memset(mbr, 0, sizeof(mbr));                                                  
0028.00    memcpy(mbr, "AAI006    ", 10);                                                
0029.00    QUSRMBRD(&mbrd0100, sizeof(Qdb_Mbrd0100_t), "MBRD0100", filfillib,            
0030.00       mbr, "0", &errcode);                                                       
0031.00    memcpy(m_srctype, mbrd0100.Src_Type, 10);                                     
0032.00    m_srctype[10] = 0x00;                                                         
0033.00    printf("srctype of mbr:PGMRLIB/QRPGLESRC(%s)= [%s]\n", mbr, m_srctype);       
0034.00    getchar();                                                                    
0035.00 }
【解説】

QUSRMBRD を使用しているのは

0029.00    QUSRMBRD(&mbrd0100, sizeof(Qdb_Mbrd0100_t), "MBRD0100", filfillib,            
0030.00       mbr, "0", &errcode);

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

0031.00    memcpy(m_srctype, mbrd0100.Src_Type, 10);                                     
0032.00    m_srctype[10] = 0x00;

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