Return to the RPG Tips
Determining whether a Job is running Interactive or Batch
The module below, INTERACT, determines whether your program is running in interactive or batch mode: H NoMain D pInteractive 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 ) 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 pInteractive E Here are the steps for installing and using Interact: a) Upload INTERACT to a source physical file with a record length of 112 bytes. Give the uploaded member a name of INTERACT and a PDM type of RPGLE. b) Use option 15 in PDM to compile INTERACT. c) 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' Dsply DummyVar 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
[report a broken link by clicking here]