星期二, 10月 31, 2023

2001-02-06 如何於RPG中判斷 Batch 或 Interactive Job -- INTERACTR



如 何於RPG中判斷 Batch 或 Interactive Job -- INTERACTR

FILE:QRPGLESRC
MEMBER Type:RPGLE

     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
         
     

安裝及使用說明

a) 將 INTERACT 上傳至 112 bytes 長度的 source physical file. 
並將上傳的 member 命名為  INTERACT 且其 PDM type 為 RPGLE.

b) 在 PDM 中使用選項 15 編譯 INTERACT 成為一模組物件.

c) 在 Command Line 下 command 產生服務程式(Service Program):

CrtSrvPgm SrvPgm( INTERACT ) Export( *All ) ActGrp( WhateverYouWant )

要於 RPG IV 程式中使用這個服務程式,請參照下列步驟:

a) 在你的原始檔 D-specs 中要包含下列程序的 prototype(原型):

     D pInteractive    PR              N                   
     D  DummyPrm                      1    Options( *Omit )

如果你希望這個程序被使用於多個程式中,你可以考慮使用 /Copy member 來宣告原型.

b) 下列示範你自己的程式如何於 C-specs 中呼叫程序 INTERACT :

     C                   If        pInteractive( *Omit )    
     C     'Interactive' Dsply                   DummyVar   
     C                   EndIf                              

     C                   If        Not pInteractive( *Omit )
     C     'Batch'       Dsply                              
     C                   Endif                              

c) 在 PDM 中使用選項 15 編譯 自己的程式 成為一模組物件.

d) 在 Command Line 下 command 產生你自己的程式
(底下範例是假設你的程式是單一的程式,也就是單一模組 MYPGM):

CrtPgm MyPgm Module( MYPGM ) BndSrvPgm( INTERACT ) ActGrp( Whatever )

沒有留言: