LIST
LISTコマンドは、指定した出力待ち行列からスプール・ファイルのリストを取得する場合に使用されます。
必須
LIST ---- LIBRARY ------ライブラリ名----- ---------------------->
> -- QUEUE --------出力待ち行列--------------------------->
任意
>-- USER --------- *ALL ----------------------------------->
ユーザーID
>-- USERDATA ----- *ALL ----------------------------------->
ユーザー・データ
>-- FORMTYPE ----- *ALL -----------------------------------|
フォーム・タイプ
キーワード
LIBRARY |
IBM i の有効なライブラリ名を指定する必要があります。 |
QUEUE |
IBM i の有効な出力待ち行列を指定する必要があります。 |
SERVICE_LIST |
RDMLクライアントの場合のみ必須です。 スプール・ファイル情報を取り出すには、LISTコマンドに6つのフィールドの作業リストが必要 です。 フィールドはどのような名前とサイズにもなり、重要なフィールドの順序になります。 SERVICE_LISTフィールドの順序、サイズ、タイプは、リターン・キーワードに含まれるDEF_LISTに定義されたフィールドと一致しなくては なりません。 NAME スプール・ファイルの名前 NUMBER 指定したファイルのスプールされたファイル番号 JOBNAME スプールされたファイルを作成したジョブの名前 JOBUSER スプールされたファイルを作成したユーザーの名前 JOBNUMBER システム内のジョブ の番号 STATUS スプール・ファイルのステータス 詳細については、該当するJSMクライアントの予約キーワードを参照してください。 |
USER |
このUSERに一致するJOBUSERのスプール・ファイルのみが返されます。 IBM i の有効なユーザーIDまたは*ALLにします。 |
USERDATA |
指定したUSERDATAに一致するスプール・ファイルのみが返されます。 省略値は*ALLです。 |
FORMTYPE |
指定したFORMTYPEに一致するスプール・ファイルのみが返されます。 IBM i の有効なスプール・ファイルFORMTYPE (*STDなど)または*ALLにします。 |
コメント/警告
返されるスプール・ファイルの量を制限するには、USER、USERDATA、FORMTYPEの各フィルターを使用します。
例
RDML
RDMLを使用する場合、作業リストの各列が返されるように適切なフィールドを提供するには、SERVICE_LISTキーワードが必要です。
DEF_LIST NAME(#SPOOLLST) FIELDS(#FLENAM #FLENUM #JOBNAME #JOBUSER #JOBNUMBER #SPLFILSTS) COUNTER(#LISTCOUNT) TYPE(*WORKING) ENTRYS(0009999)
USE BUILTIN(TCONCAT) WITH_ARGS('LIST LIBRARY(' #JSMLIB ') QUEUE(' #JSMOUTQ ') USER(') TO_GET(#JSMCMD)
USE BUILTIN(TCONCAT) WITH_ARGS('LIST LIBRARY(' #JSMLIB ') QUEUE(' #JSMOUTQ ') USER(') TO_GET(#JSMCMD)
IF COND('#JSMUSER *NE *BLANK')
USE BUILTIN(TCONCAT) WITH_ARGS(#JSMCMD #JSMUSER) TO_GET(#JSMCMD)
ELSE
USE BUILTIN(TCONCAT) WITH_ARGS(#JSMCMD '*ALL') TO_GET(#JSMCMD)
ENDIF
USE BUILTIN(TCONCAT) WITH_ARGS(#JSMCMD ') USERDATA(*ALL) FORMTYPE(*STD) SERVICE_LIST(' 'FLENAM, FLENUM, JOBNAME, JOBUSER, JOBNUMBER, ' 'SPLFILSTS)') TO_GET(#JSMCMD)
USE BUILTIN(JSM_COMMAND) WITH_ARGS(#JSMCMD) TO_GET(#JSMSTS #JSMMSG #SPOOLLST)
EXECUTE SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)
RDMLX
RDMLXを使用する場合、返された引数に指定される作業リストの構造はLANSAコンパイラによって自動的に決まるため、JSMサービス(RDMLな ど)に作業リストを明示的に記述する必要はありません。
Def_list name(#spoollst) fields(#file name #filenumber #jobname #jobuser jobnumber #status) type(*working) entrys(500)
#jsmcommand := 'LIST LIBRARY(QUSRSYS) QUEUE(' + #JSMOUTQ + ') USER(' + #JSMUSERID + ') USERDATA(*ALL) FORMTYPE(*STD)'
use builtin(jsmx_command) with_args(#jsmxhdle1 #jsmcommand) TO_GET(#jsmxsts #jsmxmsg #spoollst)
ILE RPG
* NB: This MUST match the structure xml provided to the JSM Server!
d spoollist ds occurs(spoolocur)
d spoolfnam 10a
d spoolfnum 6a
d spooljnam 10a
d spooljusr 10a
d spooljnum 6a
d spoolfsts 10a
d spoolocur c const(50)
d spoolsize c const(%size(spoollist))
d spoolcount s 9p 0 inz(0)
c eval jsmcmd = 'LIST'
c + ' LIBRARY(QGPL) QUEUE(QPRINT)'
c + ' USERDATA(PDFSPLF)'
c + ' SERVICE_STRUCTURE('
c + 'PDFSPLF.SpoolFileList)'
c + ' OCCURS(' + %char(spoolocur) + ')'
c + ' SIZE(' + %char(spoolsize) + ')'
c eval %occur(spoollist) = 1
c eval bytelength = spoolocur * spoolsize
c callp p_jsmcmdx(jsmcmd:spoollist:bytelength:
c jsmsts:jsmmsg)
c if jsmsts = 'OK'
c callp p_jsmbytelngth(bytelength)
c if (bytelength > 0)
c and (bytelength <= spoolocur * spoolsize)
c callp p_jsmbyterecv(spoollist)
c eval spoolcount = bytelength / spoolsize
c endif
c endif