The module below, INTERACT, determines whether your program is running in interactive or batch mode:
NoMain p Interactive PR N D DummyPrm 1 Options( *Omit ) P pInteractive B Export D pInteractive 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 ) Call 'QUSRJOBI' Parm RetdInfDs Parm LenRetdInf Parm FmtName Parm QlJobName Parm IntJobId If RiJobType = RiTypeInteractive Return *On Else Return *Off EndIf P pInteractive E
Use option 15 in PDM to compile INTERACT.
Issue the command: CrtSrvPgm SrvPgm( INTERACT ) Export( *All ) ActGrp( WhateverYouWant )
To use this service program from an RPG IV program, follow these steps:
a) Include the following prototype in your source with the D-specs: D pInteractive 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.
b) Here are a couple of sample calls to INTERACT in the C-specs: C If pInteractive( *Omit ) C ‘Interactive’ DsplyDummyVar C EndIf C If Not pInteractive( *Omit ) C ‘Batch’ Dsply C Endif
c) Use PDM option 15 to compile your program. d) 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 do we Check for Batch or Interactive in CLLE
Developerworks Connections Sunset – How to Extend RDi
Why use IBM i RDi?
How to Install IBM Access Client Solutions (ACS)
5733XJ1 IBM i Access Client Solutions – QuickStartGuide
Install LANSA AXES – Automatic Web Interface for IBM i (AS/400) 5250 Applications
How to get a list of all files in an IFS folder
Edit MENU with IBM i RDI
Encrypt IBM i File (Table) Data with no RPGLE changes using SQL