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
によって取り出して表示している。