List Job
H DFTACTGRP(*NO)
* List jobs API
D QUSLJOB PR ExtPgm('QUSLJOB')
D UsrSpc 20A const
D Format 8A const
D QualJob 26A const
D Status 10A const
D ErrorCode 32767A options(*varsize)
D JobType 1A const options(*nopass)
D NumFldsToRtn 10I 0 const options(*nopass)
D FldsToRtn 10I 0 const options(*nopass)
* Create User Space API
D QUSCRTUS PR ExtPgm('QUSCRTUS')
D UserSpc 20A const
D ExtAttr 10A const
D InitSize 10I 0 const
D InitVal 1A const
D PublicAuth 10A const
D Text 50A const
D Replace 10A const
D ErrorCode 32766A options(*varsize)
* retrieve pointer to user space API
D QUSPTRUS PR ExtPgm('QUSPTRUS')
D UserSpc 20A CONST
D Pointer *
* API error code structure
* (we inz to 0 to cause the APIs to return errors using normal
* OS/400 error handling)
D dsEC DS
D dsECBytesP 10I 0 INZ(0)
D dsECBytesA 10I 0 INZ(0)
D*****************************************************
D* List API header data structure
D*****************************************************
D p_UsrSpc S *
D dsLH DS BASED(p_UsrSpc)
D* Filler
D dsLHFill1 103A
D* Status (I=Incomplete,C=Complete
D* F=Partially Complete)
D dsLHStatus 1A
D* Filler
D dsLHFill2 12A
D* Header Offset
D dsLHHdrOff 10I 0
D* Header Size
D dsLHHdrSiz 10I 0
D* List Offset
D dsLHLstOff 10I 0
D* List Size
D dsLHLstSiz 10I 0
D* Count of Entries in List
D dsLHEntCnt 10I 0
D* Size of a single entry
D dsLHEntSiz 10I 0
D p_Job S *
D dsJob DS based(p_Job)
D dsJobName 10A
D dsJobUser 10A
D dsJobNbr 6A
D dsJobIntID 16A
D dsJobSts 10A
D dsJobType 1A
D dsJobSubType 1A
D dsJobReserv 2A
D dsJobInfSts 1A
D dsJobReserv2 3A
D dsJobNbrFlds 10I 0
D dsJobKeyAry 1A
D p_KeyAry S *
D dsKeyAry DS based(p_KeyAry)
D dsKA_Len 10I 0
D dsKA_Field 10I 0
D dsKA_Type 1A
D dsKA_Reserv 3A
D dsKA_DtaLen 10I 0
D dsKA_Data 20A
D JOBLIST C 'JOBLIST QTEMP'
D SBSDNAME C 1906
D peSbsName S 10A
D msg s 50A
D Ent s 10I 0
* Check parms
C *entry plist
c parm peSbsName
c if %parms < 1
c eval msg = 'You need to pass a subsystem name'
c dsply msg
c eval *inlr = *on
c return
c endif
* Create a user space
c callp QUSCRTUS(JOBLIST: 'USRSPC':
c %size(dsJob) * 1000: *Blank:
c '*ALL': 'List of jobs on system':
c '*YES': dsEC)
* List jobs to the user space
c callp QUSLJOB(JOBLIST: 'JOBL0200':
c '*ALL *ALL *ALL': '*ACTIVE':
c dsEC: '*': 1: SBSDNAME)
* Read entries in user space
c callp QUSPTRUS(JOBLIST: p_UsrSpc)
c for Ent = 0 to (dsLHEntCnt - 1)
c eval p_Job = p_UsrSpc + dsLHLstOff +
c (dsLhEntSiz * Ent)
c eval p_KeyAry = %addr(dsJobKeyAry)
c if dsKA_Field <> SBSDNAME
c or dsKA_Type <> 'C'
c or dsKA_DtaLen <> 20
c eval msg = 'Unknown key in key array'
c dsply msg
c leave
c endif
** only print jobs in requested subsystem.
** and ignore subsystem monitor jobs.
c if %subst(dsKA_Data: 1: 10) = peSbsName
c and dsJobType <> 'M'
c eval msg = %trim(dsJobNbr) + '/' +
c %trim(dsJobUser) + '/' +
c %trim(dsJobName)
c msg dsply
c endif
c endfor
c eval msg = 'Hit ENTER when done'
c dsply msg
c eval *inlr = *on
Thanks to Scott Klement
阅读(1240) | 评论(0) | 转发(0) |