QUSLRCD
はレコード名を検索するための API である。
QUSLRCD
が使用される目的は主に QUSLFLD
: フィールドのリスト API の実行の
ためであることが多い。
つまり QUSLFLD
を使ってフィールドの一覧を検索しようとするときには
レコード名の指定も必要となるので QUSLRCD
を使ってレコード名を検索してから
QUSLFLD
によってフィールドの一覧を出力するのである。
必須パラメータ・グループ:
1. | 修飾ユーザー・スペース名 | 出力 | Char(20) |
2. | 形式名 | 入力 | Char(8) |
3. | 修飾ファイル名 | 入力 | Char(20) |
4. | 一時変更処理 | 入力 | Char(1) |
任意選択パラメータ:
5. | エラー・コード | 入出力 | Char(*) |
修飾データ・ベース名
ファイル名 ( 10桁 ) + ライブラリー名 ( 10桁 ) で表現する。
ライブラリー名には *CURLIB
, *LIBL
の指定も可。
修飾ユーザー・スペース名
ユーザー・スペース名 + ライブラリー名 を指定する
形式名
RCDL0100 形式 | ・・・・・・ | レコード様式名のみ |
RCDL0200 形式 | ・・・・・・ | レコード様式名および追加の情報 |
RCDL0300 形式 | ・・・・・・ | レコード様式名および装置ファイル情報 |
修飾ファイル名
ファイル名 + ライブラリー名
一時変更処理
0 : 一時変更を行なわない を指定すること。
■ RCDL0100
形式
オフセット | タイプ | フィールド | |
---|---|---|---|
10進数 | 16進数 | ||
0 | 0 | CHAR(10) | レコード様式名 |
■ RCDL0200
形式
オフセット | タイプ | フィールド | |
---|---|---|---|
10進数 | 16進数 | ||
0 | 0 | CHAR(10) | レコード様式名 |
10 | A | CHAR(13) | レコード様式 ID |
23 | 17 | CHAR(1) | 予約済み |
24 | 18 | BINARY(4) | レコード長 |
28 | 1C | BINARY(4) | フィールド数 |
32 | 20 | CHAR(50) | レコード・テキスト記述 |
82 | 52 | CHAR(2) | 予約済み |
84 | 54 | BINARY(4) | レコード・テキスト記述 CCSID |
■ RCDL0300
形式
オフセット | タイプ | フィールド | |
---|---|---|---|
10進数 | 16進数 | ||
0 | 0 | CHAR(10) | レコード様式名 |
10 | A | CHAR(2) | 最低位の応答標識 |
12 | C | BINARY(4) | バッファー・サイズ |
16 | 10 | CHAR(20) | レコード様式タイプ |
36 | 24 | CHAR(1) | 開始行番号 |
37 | 25 | CHAR(1) | 存在する分離標識域 |
これはデータ・ベース QTRFIL/SHOHIN
のレコード名を検索するプログラムである。
0001.00 H DATEDIT(*YMD/) 0002.00 F********** レコード様式のリスト ************************************ 0003.00 F* QUSLRCD のサンプル 0004.00 F********************************************************************** 0005.00 /COPY QSYSINC/QRPGLESRC,QUS 0006.00 /COPY QSYSINC/QRPGLESRC,QUSLRCD 0007.00 D FILFILLIB S 20A INZ('SHOHIN QTRFIL ') 0008.00 0009.00 D APIERR DS 0010.00 D GETBYT 1 4B 0 INZ(160) 0011.00 D AVLBYT 5 8B 0 INZ(0) 0012.00 D MSGID 9 15 0013.00 D MSGDTA 17 160 0014.00 0015.00 D USRSPC DS 0016.00 D USNAME 10A INZ('USLSPC ') 0017.00 D USLIB 10A INZ('QTEMP ') 0018.00 0019.00 D MSGFFLIB DS 0020.00 D MSGF 10A INZ('QCPFMSG ') 0021.00 D MSGFLIB 10A INZ('QSYS ') 0022.00 0023.00 D HEDSTR DS 256 0024.00 D OFFSET 1 4B 0 0025.00 D NOENTR 9 12B 0 0026.00 D LSTSIZ 13 16B 0 0027.00 0028.00 D RCD0100 DS QUALIFIED 0029.00 D RCD 10A 0030.00 0031.00 D SPCBIN DS 0032.00 D INZSIZ 10I 0 INZ(1000) 0033.00 D MSGDTALEN 10I 0 INZ(100) 0034.00 D PGMSTKCNT 10I 0 INZ(1) 0035.00 D STRPOS 10I 0 0036.00 D LENDTA 10I 0 0037.00 D N 4S 0 0038.00 D DATE 6A 0039.00 D TIME 6A 0040.00 0041.00 C*(1) QUSCRTUS: ユーザー・スペースの作成 0042.00 C*----------------------------------------------------+ 0043.00 C CALL 'QUSCRTUS' 0044.00 C PARM USRSPC 0045.00 C PARM 'PF ' EXATTR 10 0046.00 C PARM INZSIZ 0047.00 C PARM ' ' INZCHR 1 0048.00 C PARM '*ALL ' AUT 10 0049.00 C PARM TEXT 50 0050.00 C PARM '*YES ' REPLACE 10 0051.00 C PARM APIERR 0052.00 C*----------------------------------------------------+ 0053.00 C AVLBYT CABNE *ZEROS SNDERR 0054.00 0055.00 C*(2) QUSLRCD: レコード様式のリスト 0056.00 C*----------------------------------------------------+ 0057.00 C CALL QUSLRCD 0058.00 C PARM USRSPC 0059.00 C PARM 'RCDL0100' FOTMAT 8 0060.00 C PARM FILFILLIB 0061.00 C PARM '0' CHG 1 0062.00 C PARM APIERR 0063.00 C*----------------------------------------------------+ 0064.00 C AVLBYT CABNE *ZEROS SNDERR 0065.00 0066.00 C*(3) QUSRTVUS : ヘッダー構造の読み取り 0067.00 C*----------------------------------------------------+ 0068.00 C CALL 'QUSRTVUS' 0069.00 C PARM USRSPC 0070.00 C PARM 125 STRPOS 0071.00 C PARM 16 LENDTA 0072.00 C PARM HEDSTR 0073.00 C PARM APIERR 0074.00 C*----------------------------------------------------+ 0075.00 C AVLBYT CABNE *ZEROS SNDERR 0076.00 0077.00 C*(4) QUSRTVUS : リスト・セクションの読み取り 0078.00 C* HEADER によって OFFSET,LSTSIZ を受取った 0079.00 C Z-ADD OFFSET STRPOS 0080.00 C ADD 1 STRPOS 0081.00 C Z-ADD LSTSIZ LENDTA 0082.00 C* リスト・サイズの分だけ LOOP して検索 0083.00 C 1 DO NOENTR N N=1-NOENTR 0084.00 C*----------------------------------------------------+ 0085.00 C CALL 'QUSRTVUS' 99 0086.00 C PARM USRSPC 0087.00 C PARM STRPOS 0088.00 C PARM LENDTA 0089.00 C PARM RCD0100 0090.00 C*----------------------------------------------------+ 0091.00 C* ------( 処理の開始 - ここから )------ 0092.00 C 'RECORD=' CAT(P) RCD0100.RCD:0 DSP40 40 0093.00 C DSP40 DSPLY 0094.00 C* ------( 処理の終了 - ここまで )------ 0095.00 C ADD LENDTA STRPOS 0096.00 C END N=1-NOENTR 0097.00 0098.00 C MOVE *ON *INLR 0099.00 C '** END **' DSPLY ANS 1 0100.00 C RETURN 0101.00 C SNDERR TAG 0102.00 C GETBYT SUB 15 MSGDTALEN 0103.00 C*----------------------------------------------------+ 0104.00 C CALL(E) 'QMHSNDPM' 0105.00 C PARM MSGID 0106.00 C PARM MSGFFLIB 0107.00 C PARM MSGDTA 0108.00 C PARM MSGDTALEN 0109.00 C PARM '*ESCAPE ' MSGTYPE 10 0110.00 C PARM '* ' PGMQUE 10 0111.00 C PARM PGMSTKCNT 0112.00 C PARM ' ' MSGKEY 4 0113.00 C PARM APIERR 0114.00 C*----------------------------------------------------+ 0115.00 C MOVE *ON *INLR 0116.00 C RETURN
QUSLRCD
を使用しているのは
0055.00 C*(2) QUSLRCD: レコード様式のリスト 0056.00 C*----------------------------------------------------+ 0057.00 C CALL QUSLRCD 0058.00 C PARM USRSPC 0059.00 C PARM 'RCDL0100' FOTMAT 8 0060.00 C PARM FILFILLIB 0061.00 C PARM '0' CHG 1 0062.00 C PARM APIERR 0063.00 C*----------------------------------------------------+
でありレシーバー変数 rcdl0100
からソース・タイプを
0092.00 C 'RECORD=' CAT(P) RCD0100.RCD:0 DSP40 40 0093.00 C DSP40 DSPLY
によって取り出して表示している。