February 21


How do we Check for Batch or Interactive in CLLE

By NickLitten

February 21, 2020


Use the Retrieve Job Attribute (RTVJOBA) command to snaffle the job’s run type from the attributes. Seems pretty obvious right?

One little niggle was that the RTVJOBA passes back a char(1) value for the jobtype where ‘0’ means batch and ‘1’ means interactive. But, I want to be able to neatly compare a logical value to see if its interactive or not.

For example:

  • Stinky Code : if cond(&INTERACTIVE = ‘1’) then(do stuff)
  • Sniffy Code : if cond(&INTERACTIVE) then(do stuff)

Luckily its quite easy to code in IBM i Control Language:

 DCL VAR(&JOBTYPE) TYPE(CHAR) LEN(1) VALUE('0') /* Sadly the RTVJOBA command wants a CHARACTER value as a parameter (even though we want to use a logical *ON or *OFF) */

 DCL VAR(&INTER) TYPE(LGL) STG(DEFINED) DEFVAR(&JOBTYPE) /* So lets define our logical variable but define it as the char(1) value so it inherits its value */
 RTVJOBA TYPE(&JOBTYPE) /* grab the job runtype and let the *DEFINED overlay the character value &JOBTYPE into our logical value &INTER */
 IF COND(&INTER) THEN(DO)                                
    SNDPGMMSG  MSG('this is interactive')                           
 ELSE CMD(DO)                                              
    SNDPGMMSG  MSG('this is batch')                                 

Pretty sniffy I might say.

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

Join the IBM i Community for FREE Presentations, Lessons, Hints and Tips