API を初めて使用する場合に最初に突き当たるのがユーザースペースのアクセス方法である。
旧来の多くのAPIは、その情報をユーザースペースに出力する。
ユーザーはAPI を使用した後、ユーザースペースにAPI によって書かれた情報を読取らなければならない。
ユーザースペースは C/400であればポインターによって一度の操作で読取れるのだが、
RPGでは項目の数だけLOOPの必要がある。
幸いユーザースペースの構造は どの場合でも同じなので、次の1つのパターンでどのような
ユーザースペースでも読取ることができる。
0001.00 IUSRSPC DS 0002.00 I 1 10 USNAME 0003.00 I 11 20 USLIB 0004.00 IRCVVAR DS 0005.00 I B 1 40OFFSET 0006.00 I B 9 120NOENTR 0007.00 I B 13 160LSTSIZ 0008.00 I* LIST-DATA SECTION 0009.00 IRCVAR1 DS 0010.00 I* 1 10 FLDNAM 0011.00 I* 193 212 FLDCH3 0012.00 ISPCBIN DS 0013.00 I B 1 40LENDTA 0014.00 I B 5 80STRPOS 0015.00 +C* FIELD の LIST API : QUSLFLD によって作成された 0016.00 C* USER 空間 : INPUT.QTEMP を検索する。 0017.00 C MOVEL'INPUT 'USNAME 0018.00 C MOVEL'QTEMP 'USLIB 0019.00 C* 1. LIST-DATA SECTION の OFFSET 値を検索 0020.00 C Z-ADD125 STRPOS 0021.00 C Z-ADD16 LENDTA 0022.00 C*----------------------------------------------------+ 0023.00 C CALL 'QUSRTVUS' | 0024.00 C PARM USRSPC | 0025.00 C PARM STRPOS | 0026.00 C PARM LENDTA | 0027.00 C PARM RCVVAR | 0028.00 C*----------------------------------------------------+ 0029.00 C* DS:RCVVAR によって OFFSET,LSTSIZ を受取った 0030.00 C Z-ADDOFFSET STRPOS 0031.00 C ADD 1 STRPOS 0032.00 C Z-ADDLSTSIZ LENDTA 0033.00 C* LIST SIZE の分だけ LOOP して検索 0034.00 C 1 DO NOENTR N 40 N=1-NOENTR 0035.00 C*----------------------------------------------------+ 0036.00 C CALL 'QUSRTVUS' | 0037.00 C PARM USRSPC | 0038.00 C PARM STRPOS | 0039.00 C PARM LENDTA | 0040.00 C PARM RCVAR1 | 0041.00 C*----------------------------------------------------+ 0042.00 C* < 処 理 の 始 め > 0043.00 C* 読取ったデータは RCVAR1 に入っている。 0044.00 C* ここで必要な配列などに MOVE する。 0045.00 C* < 処 理 の 終 り > 0046.00 C* - - - - - - - - - - - - - - - - - - - 0047.00 C ADD LENDTA STRPOS 0048.00 C END N=1-NOENTR