Check active Job

Wondering how to check to see if a Job is active? This utility program checks to see if a Job is active and returns 'y/n' flag.

Wondering how to check to see if a Job is active? This utility program checks to see if a Job is active and returns 'y/n' flag.  

 
 *---------------------------------------------------------------------
     * Program: CHKACTJOB
     *---------------------------------------------------------------------
     * Programmer:    Richard Cranston
     * Description:   Calling program passes the JobName and ActiveJobFlag
     *                If JobName is active, ActiveJobFlag = 'Y'
     *---------------------------------------------------------------------

     *---------------------------------------------------------------------
     * Stand alone Fields & Data Structures
     *---------------------------------------------------------------------
     D JobNameEntry    S             10
     D JobRunning      S              1
     D StringPos       S             10I 0 Inz
     D StrLength       S             10I 0 Inz
     D SizOfSpace      S             10I 0 Inz(1024)

     D UserSpace       DS                  Inz
     D  SpaceName                    10    Inz('JOBSPACE')
     D  SpaceLib                     10    Inz('QTEMP')

     D QualJobNam      DS                  Inz
     D  JobName                      10
     D  UserName                     10
     D  JobNumber                     6

     D Error           DS                  Inz
     D  BytesProv                    10I 0
     D  BytesAvail                   10I 0
     D  MessageID                     7
     D  NotUsed                       1
     D  MsgData                     100

     * Create User Space Parms
     D ExtAtr          S             10    Inz('TEMPSPACE')
     D InitialVal      S              1    Inz
     D Authority       S             10    Inz('*ALL')
     D TextSpace       S             50    Inz
     D ReplaceSpc      S             10    Inz('*YES')

     * List Jobs API Parms
     D ListFmtNam      S              8    Inz('JOBL0100')
     D JobStatus       S             10    Inz('*ALL')

     * List Job Information API Parms
     D RecVar          DS                  Inz
     D  BytesRet                     10I 0
     D  BytesAval                    10I 0
     D  JobNam                       10
     D  UserNam                      10
     D  JobNum                        6
     D  IntJobID                     16
     D  JobSts                       10
     D  Jobtype                       1
     D  Jobsubtyp                     1
     D  Reserved                      2
     D  EndSev                       10I 0
     D  LogSev                       10I 0
     D  LogLvl                        1
     D  LogTxt                       10

     * User Space Generic Header Definition
     D GenericStc      DS                  Inz
     D  UserArea                     64
     D  SizGeneric                   10I 0
     D  RlsLevel                      4
     D  FormatName                    8
     D  APIused                      10
     D  DateTime                     13
     D  InfoStatus                    1
     D  SizUsrSpac                   10I 0
     D  InpOffset                    10I 0
     D  InpSize                      10I 0
     D  HdrOffset                    10I 0
     D  HdrSize                      10I 0
     D  LstOffset                    10I 0
     D  LstSize                      10I 0
     D  NumLstEnt                    10I 0
     D  SizeLstEnt                   10I 0
     D  temp1                        10I 0
     D  temp2                         2
     D  temp3                         3
     D  temp4                         1
     D  temp5                        42
     D  temp6                       256
     D  temp7                       128

     * List Data Section of Jobs API User Space
     D ListData        DS                  Inz
     D  Job                          10
     D  User                         10
     D  Number                        6
     D  InternalID                   16
     D  Status                       10

     *---------------------------------------------------------------------
     * Entry Parameters
     *---------------------------------------------------------------------
     C     *Entry        PList
     C                   Parm                    JobNameEntry
     C                   Parm      JobRunning    JobRunning

     *---------------------------------------------------------------------
     * Main Routine
     *---------------------------------------------------------------------
     C                   Eval      JobName = JobNameEntry
     C                   Eval      UserName = '*ALL'
     C                   Eval      JobNumber = '*ALL'

     * Create User Space API
     C                   Call      'QUSCRTUS'
     C                   Parm                    UserSpace
     C                   Parm                    ExtAtr
     C                   Parm                    SizOfSpace
     C                   Parm                    InitialVal
     C                   Parm                    Authority
     C                   Parm                    TextSpace

     * List Jobs API
     C                   Call      'QUSLJOB'
     C                   Parm                    UserSpace
     C                   Parm                    ListFmtNam
     C                   Parm                    QualJobNam
     C                   Parm                    JobStatus

     * Retrieve Generic Header Section of the User Space
     C                   Eval      StrLength = %len(GenericStc)
     C                   Call      'QUSRTVUS'
     C                   Parm                    UserSpace
     C                   Parm      1             StringPos
     C                   Parm                    StrLength
     C                   Parm                    GenericStc

     * Retrieve ListData Section
     C                   Eval      StrLength = SizeLstEnt                       Size each List Entry
     C                   Eval      StringPos = LstOffset + 1 +                  Last Record
     C                                   (StrLength * (NumLstEnt - 1))

     C                   Call      'QUSRTVUS'
     C                   Parm                    UserSpace
     C                   Parm                    StringPos
     C                   Parm                    StrLength
     C                   Parm                    ListData                       Last job information

     * Set ActiveJobFlag
     C                   If        Status = '*ACTIVE'
     C                   Eval      JobRunning = 'Y'
     C                   Else
     C                   Eval      JobRunning = 'N'
     C                   EndIF

     * Delete UserSpace
     C                   Call      'QUSDLTUS'
     C                   Parm                    UserSpace
     C                   Parm                    Error

     C                   Eval      *inlr = *On 


Example of Calling Program:
DCL        VAR(&SYSJOB) TYPE(*CHAR) LEN(10) +           
             VALUE('SAVACT')                            
DCL        VAR(&ACTFLG) TYPE(*CHAR) LEN(1) VALUE('N') 

CALL       PGM(CHKACTJOB) PARM(&SYSJOB &ACTFLG) 
    
IF         COND(&ACTFLG *EQ 'N') THEN(CALL PGM(SOMEPGM)) 
This was first published in April 2006

Dig deeper on iSeries system performance and monitoring

1 comment

Oldest 

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to:

-ADS BY GOOGLE

SearchEnterpriseLinux

SearchDataCenter

Close