Any program can easily find out the mode it is running in by calling an IBM supplied *API – which will return the status of the job we are running. Basically, we just have to teach our program to shout “Hey Dude – am I running in batch or what?” and then the dark lord IBMi will answer “My son, you are running interactive! Dont be resource greedy… and don’t call me Dude“
So, lets go through an example of a simple Service program to do this. The module below, INTERACT, determines whether your program is running in interactive or batch mode:
H NoMain D #Interactive PR N D DummyPrm 1 Options( *Omit ) P #Interactive B Export D #Interactive PI N D DummyPrm 1 Options( *Omit ) * Local variables D RetdInfDs DS D 4 D 10I 0 Inz( %Size( RetdInfDs ) ) D RiJobType 61 61 D RiTypeInteractive... D C 'I' D LenRetdInf S 10I 0 Inz( %Size( RetdInfDs ) ) D FmtName S 8 Inz( 'JOBI0100' ) D QlJobName S 26 Inz( '*' ) D IntJobId S 16 Inz( *Blank ) * MAINLINE C Call 'QUSRJOBI' C Parm RetdInfDs C Parm LenRetdInf C Parm FmtName C Parm QlJobName C Parm IntJobId C If RiJobType = RiTypeInteractive C Return *On C Else C Return *Off C EndIf P #Interactive E
Here are the steps for installing and using #Interact:
To use this service program from an RPG IV program, follow these steps:
D #Interactive PR N D DummyPrm 1 Options( *Omit )
If you expect to use this procedure in more than one program, you might consider using a /Copy member for this prototype.
C If #Interactive( *Omit ) C 'Interactive' Dsply DummyVar C EndIf
C If Not #Interactive( *Omit ) C 'Batch' Dsply C Endif
Use PDM option 15 to compile your program.
Issue the following command to create your program (Note that the following assumes your program is a standalone program, i.e., a single module, named MYPGM):
CrtPgm MyPgm Module( MYPGM ) BndSrvPgm( INTERACT ) ActGrp( Whatever )
Adapted from a utility by Mike Cravitz
IBM i Software Developer, Digital Dad, AS400 Anarchist, RPG Modernizer, Alpha Nerd and Passionate Eater of Cheese and Biscuits. Nick Litten Dot Com is a mixture of blog posts that can be sometimes serious, frequently playful and probably down-right pointless all in the space of a day. Enjoy your stay, feel free to comment and in the words of the most interesting man in the world: Stay thirsty my friend.
How to Upload a SAVF with IBM I ACS a.k.a. Upgrade HTTPAPI (LIBHTTP) to V7.2
Batch Job change RUNPTY to make it faster
Developerworks Connections Sunset – How to Extend RDi
Why use IBM i RDi?
How to Install IBM Access Client Solutions (ACS)
IBM i Data Obfuscation – Making Data Foggy Murky and Squinty
How to rename Fresche (BCD) Presto Library – XL_PRESTO
What is AS400 modernization?
IBM i ACS 5250 EMULATOR FONT – and other ridiculous mumbo jumbo