February 21

0 comments

How do we Check for Batch or Interactive in CLLE

By NickLitten

February 21, 2020

IBM i

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:

PGM 
                                                            
 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')                           
 ENDDO                                                           
 ELSE CMD(DO)                                              
    SNDPGMMSG  MSG('this is batch')                                 
 ENDDO
                                                           
 RETURN                                                          
 ENDPGM                                                          

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

>