6.8.API基礎講座8 ユーザー・スペースを使用しないAPIに関して |
これはさほど難しくありません。 一つのAPIをCALLするだけで、データが取り出せます。一つのオブジェクトの属性など、数に限りのあるパラメータなので、楽です。 QUSLSPLにより、存在するスプールの一覧を、ユーザー・スペースに展開して、その内容を一個一個見る際に、そのスプールの情報を取り出そう、というものです。 4.63.11 スプール・ファイル属性の検索 (QUSRSPLA) API パラメーター
スプール・ファイル属性の検索 (QUSRSPLA) API は、スプール・ファイルに関する特定の情報をレシーバー変数に返します。このレシーバー変数のサイズによって、返される情報の量が決まります。情報が返されるスプール・ファイルは、内部ジョブ識別コードおよび内部スプール・ファイル識別コードによって、あるいは特定のジョブ名、スプール・ファイル名、およびスプール・ファイル番号によって指定することができます。 このAPIのポイントは、以下のパラメータです。
つまり、QUSLSPLで取り出される、データをそのまま利用できるのです。セットになっていると考えていいと思います。この「内部XXX」を使うときは、スプールファイルを特定する他のパラメータはブランクにしなくてはなりません。
最後の内部識別コードが使えるのなら、使ったほうが楽です。また、形式名は2つ。SPLA0100とSPLA0200ですが、ここではSPLA0100を使います。 H Y/ 1 I DS I B 1 40RCVLEN I B 5 80SPLF# ISA0100 DS I 9 24 LJOBID I 25 40 LSPLID I 41 50 JOBNAM I 51 60 USRNAM I 61 66 JOBNUM I 67 76 FILNAM I B 77 800FILNUM I 81 90 FRMTYP I 91 100 USRDTA I 183 192 OUTQNM I 193 202 OUTQLB I 204 209 DATFOP C*----------------------------------------------------* C @ATR BEGSR : C*----------------------------------------------------* C Z-ADD209 RCVLEN : C Z-ADD0 SPLF# : C* : C CALL 'QUSRSPLA' 95 : C PARM SA0100 : C PARM RCVLEN : C PARM 'SPLA0100'FMTATR 8 : C PARM '*INT' JOBINF 26 : C PARM JOBID LJOBID : C PARM SPLFID LSPLID : C PARM '*INT' SPLFNM 10 : C PARM SPLF# : C* : C ENDSR : ここで、JOBIDとSPLFIDはQUSLSPLで取り出したものを意味しています。 さて、ここまで見てきたプログラムを一つにすると、どうなるのでしょうか。
これを繰り返すことになります。この、属性を取り出す部分では、なにか、属性の内容を判定して、CHGSPLFやDLTSPLFをすればいいと思います。 最後に、すべてをまとめたリストを掲げます。 H Y/ 1 I****************************************************** I* D E F I N E D A T A - S T R U C T U R E * I****************************************************** IUSRSPC DS I 1 10 USNAME I 11 20 USLIB IGENHED DS I B 1 40DTLOFS I B 5 80LSTSIZ I B 9 120NOENTH I B 13 160DTLSIZ I DS I B 1 40USSIZE I B 5 80LENDTA I B 9 120STRPOS I DS I B 1 40RCVLEN I B 5 80SPLF# ISF0100 DS I 1 10 USRNML I 11 30 OUTQL I 11 20 OUTQNL I 21 30 OUTQLL I 31 40 FRMTYL I 41 50 USRDTL I 51 66 JOBID I 67 82 SPLFID ISA0100 DS I 9 24 LJOBID I 25 40 LSPLID I 41 50 JOBNAM I 51 60 USRNAM I 61 66 JOBNUM I 67 76 FILNAM I B 77 800FILNUM I 81 90 FRMTYP I 91 100 USRDTA I 183 192 OUTQNM I 193 202 OUTQLB I 204 209 DATFOP C****************************************************** C* M A I N - R O U T I N E : C****************************************************** C* : C*ユーザー・スペースの作成 : C* : C Z-ADD1024 USSIZE : C MOVEL'SPLINF' USNAME : C MOVEL'QTEMP' USLIB : C* : C CALL 'QUSCRTUS' 95 : C PARM USRSPC : C PARM 'SPL' EXTATR 10 : C PARM USSIZE : C PARM X'00' USINIT 1 : C PARM '*ALL' USAUTH 10 : C PARM USTEXT 50 : C* : C*ユーザー・スペースにデータを展開 : C* : C CALL 'QUSLSPL' 95 : C PARM USRSPC : C PARM 'SPLF0100'FMTRCD 8 : C PARM '*CURRENT'USER 10 : C PARM '*ALL' OUTQ 20 : C PARM '*ALL' FRMTYP 10 : C PARM '*ALL' USRDTA 10 : C* : C *IN95 CABEQ*ON \END : C* : C*総称見出しからデータを取り出す : C* : C CALL 'QUSRTVUS' 95 : C PARM USRSPC : C PARM 125 STRPOS : C PARM 16 LENDTA : C PARM GENHED : C* : C *IN95 CABEQ*ON \END : C NOENTH CABEQ0 \END : C* : C*リストセクション読み込みの初期値 : C* : C Z-ADD1 W1CNT 50 :カウンター C* : C Z-ADDDTLOFS STRPOS : C ADD 1 STRPOS :リスト開始桁 C Z-ADDDTLSIZ LENDTA :リストデータ長 C* : C* リストセクションの各項目取り出し : C* : B001 C W1CNT DOWLENOENTH :項目分になるまで 001 C* : 001 C CALL 'QUSRTVUS' 95 :リスト部分RTV 001 C PARM USRSPC : 001 C PARM STRPOS : 001 C PARM LENDTA : 001 C PARM SF0100 : 001 C* : 001 C EXSR @ATR : 001 C* : 001 C ADD 1 W1CNT : 001 C ADD DTLSIZ STRPOS : 001 C* : E001 C ENDDO : C* : C \END TAG : C* : C MOVE *ON *INLR : C RETRN : C****************************************************** C* S U B - R O U T I N E C****************************************************** C*----------------------------------------------------* C @ATR BEGSR : C*----------------------------------------------------* C Z-ADD209 RCVLEN : C MOVE *BLANK JOBINF 26 : C MOVE *BLANK SPLFNM 10 : C Z-ADD0 SPLF# : C* : C CALL 'QUSRSPLA' 95 : C PARM SA0100 : C PARM RCVLEN : C PARM 'SPLA0100'FMTATR 8 : C PARM '*INT' JOBINF : C PARM JOBID LJOBID :: C PARM SPLFID LSPLID : C PARM '*INT' SPLFNM : C PARM SPLF# : C* C*ここで、スプールの各属性が取り込まれる。 C* : C ENDSR : |
You are at K's tips-n-kicks of AS/400
|
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||