9.109 GET_SPLF_LIST_ENTRY

この組み込み関数は、START_RTV_SPLF_LIST、END_RTV_SPLF_LISTと合わせて使用します。はじめに、START_RTV_SPLF_LISTを使用して、スプール・ファイル検索用の選択条件を提供する必要があります。指定できる選択条件は、ユーザー名、出力待ち行列名とライブラリ、フォーム・タイプ、ユーザー・データ、およびステータスです。START_RTV_SPLF_LISTを使って選択条件が確立されると、このGET_SPLF_LIST_ENTRY組み込み関数を使用してスプール・ファイルの詳細を取り込むことができます。スプール・ファイルのリストを取り込んだ後には、END_RTV_SPLF_LISTを使用する必要があります。これにより、リストをクローズして割り当てられていた記憶域を解放します。 

引数

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

N

必須

開始レコード番号

START_RTV_SPLF_LISTの後に初めてこの組み込み関数を使用する場合は、1を指定する必要があります。2回目以降の呼び出しの場合は、前の呼び出しで戻された最後のレコード番号に1を加えた値を指定します。この値はゼロより大きな正数にする必要があります。

5

15

0

0

戻り値

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

N

必須

戻された最後のレコード番号

このリストで最後のレコードの番号が戻されます。この値を使って、次にこの関数を使用するときの開始レコード番号を設定できます。次の呼び出しに使用する開始レコード番号は、この値に1を加えた値です。

5

15

0

0

2

L

必須

取得するスプール・ファイルの詳細を含める作業リスト。呼び出し元のRDMLファンクションは、項目の長さの合計が正確に160バイトの作業リストを提供しなければなりません。

戻されるそれぞれのリスト項目は、次のような形式にする必要があります。 

開始 - 終了 説明
1 - 10   A(10)   スプール・ファイル名
11 - 20   A(10)   ジョブ名
21 - 30   A(10)   ユーザー
31 - 36   A(6)   ジョブ番号
37 - 40   A(4)   スプール・ファイル番号
41 - 44   P(7,0)   総ページ数
45 - 48   P(7,0)   現在のページ
49 - 52   P(7,0)   印刷待ち部数
53 - 62   A(10)   出力待ち行列名
63 - 72   A(10)   出力待ち行列ライブラリ
73 - 82   A(10)   ユーザー・データ
83 - 92   A(10)   ステータス
93 - 102   A(10)   フォーム・タイプ
103 - 104   A(2)   優先順位
105 - 136   A(32)   予約済み
137 - 146   A(10)   装置タイプ
147 - 160   A(14) 予約済み

160

160



3

A

任意

戻りコード

OK = リスト (満載または一部) が戻された。この選択でこれ以上のスプール・ファイルは存在しない 

OV = リスト (満載) が戻された。ただしリストに収まらなかったスプール・ファイルがさらに存在する 

NR = リストは空で戻された 

ER = スプール・ファイルの取得中にエラーが発生した。開始レコードは無効の場合がある

2

2



PAYLIBライブラリのPAYOUTQ出力待ち行列のスプール・ファイルをすべて取得して、各スプール・ファイルに何らかの処理を実行します。 

     *********   Define arguments and lists
DEFINE     FIELD(#RETURN) TYPE(*CHAR) LENGTH(2)                   
**********                                                        
DEFINE     FIELD(#SPLF) TYPE(*CHAR) LENGTH(10)                    
DEFINE     FIELD(#JOB) TYPE(*CHAR) LENGTH(10)                     
DEFINE     FIELD(#USER) TYPE(*CHAR) LENGTH(10)                    
DEFINE     FIELD(#JOBNO) TYPE(*CHAR) LENGTH(6)                    
DEFINE     FIELD(#SPLFNO) TYPE(*CHAR) LENGTH(4)                   
DEFINE     FIELD(#TOTPAGE) TYPE(*DEC) LENGTH(7) DECIMALS(0)       
DEFINE     FIELD(#CURPAGE) TYPE(*DEC) LENGTH(7) DECIMALS(0)       
DEFINE     FIELD(#COPIES) TYPE(*DEC) LENGTH(7) DECIMALS(0)        
DEFINE     FIELD(#OUTQ) TYPE(*CHAR) LENGTH(10)                    
DEFINE     FIELD(#OUTQL) TYPE(*CHAR) LENGTH(10)                   
DEFINE     FIELD(#USERDATA) TYPE(*CHAR) LENGTH(10)                
DEFINE     FIELD(#STATUS) TYPE(*CHAR) LENGTH(10)                  
DEFINE     FIELD(#FORM) TYPE(*CHAR) LENGTH(10)                    
DEFINE     FIELD(#PRTY) TYPE(*CHAR) LENGTH(2)                     
DEFINE     FIELD(#RESV1) TYPE(*CHAR) LENGTH(32)                   
DEFINE     FIELD(#DEVICE) TYPE(*CHAR) LENGTH(10)                  
DEFINE     FIELD(#RESV2) TYPE(*CHAR) LENGTH(14)                   
**********                                                        
DEFINE     FIELD(#START) TYPE(*DEC) LENGTH(7) DECIMALS(0) DEFAULT(0)
DEFINE     FIELD(#LASTREC) TYPE(*DEC) LENGTH(7) DECIMALS(0) DEFAULT(0)
**********                                                        
DEF_LIST   NAME(#LIST) FIELDS((#SPLF) (#JOB) (#USER) (#JOBNO) (#SPLFNO) (#TOTPAGE) (#CURPAGE) (#COPIES) (#OUTQ) (#OUTQL) (#USERDATA) (#STATUS) (#FORM) (#PRTY) (#RESV1) (#DEVICE) (#RESV2)) COUNTER(#LISTCOUNT) TYPE(*WORKING)
**********                                                        
********** Retrieve spool files on output Q PAYLIB/PAYOUTQ        
**********                                                        
USE        BUILTIN(START_RTV_SPLF_LIST) WITH_ARGS('''*ALL''' PAYOUTQ PAYLIB) TO_GET(#RETURN)
IF         COND('#RETURN = OK')                                   
**********                                                        
CLR_LIST   NAMED(#LIST)                                           
BEGIN_LOOP                                                        
USE        BUILTIN(GET_SPLF_LIST_ENTRY) WITH_ARGS(#START) TO_GET(#LASTREC #LIST #RETURN)
IF         COND('(#return = ER) *OR (#return = NR)')              
LEAVE                                                             
ENDIF                                                             
SELECTLIST NAMED(#LIST)                                           
*********                                                         
********** At this point some processing on the spool file can    
********** be done.                                               
********** eg IBM i commands such as CPYSPLF DLTSPLF             
********** or release (RLSSPLF) all files which are currently     
********** held (have a status of *HELD)                          
**********                                                        
ENDSELECT                                                         
IF         COND('(#return = OV)')                                 
CHANGE     FIELD(#START) TO('#LASTREC + 1')                       
ELSE                                                              
LEAVE                                                             
ENDIF                                                             
END_LOOP                                                          
**********                                                        
USE        BUILTIN(END_RTV_SPLF_LIST)                             
ENDIF
  • No labels