midrange.com code scratchpad
Name:
Trigger handler
Scriptlanguage:
Plain Text
Tabwidth:
4
Date:
02/27/2018 01:52:45 pm
IP:
Logged
Description:
Trigger handling programs
Code:
  1. FMTGM      IF   E           K DISK    USROPN                                           
  2. D************************( Sof Coded Field )**************************                 
  3. D NullTypPtr      S               *                                                    
  4. D TypeBin4        S              9B 0 BASED (NullTypPtr )                              
  5. D TypeChr         S              1A   BASED (NullTypPtr )                              
  6. D TypeSysNam      S             10A   BASED (NullTypPtr )                              
  7. D TypePtr         S               *   BASED (NullTypPtr )                              
  8. D @pgm            S             21A                                        Program Name
  9. D************************( Local Variables )**************************                 
  10. DC_MsgHdr         C                   CONST('Trigger program ')                        
  11. DC_MsgGood        C                   CONST(' Completed Normally')                     
  12. DC_MsgBad         C                   CONST(' Ended in Error')                         
  13. DC_MsgFile        C                   'Trigger Master File Not Found'                  
  14. D************************( Data Structures )**************************                 
  15. DPARM2            DS                                                                   
  16. D TgLength                1      4B 0                                  
  17. D/COPY QRPGSRC,TPARM1                                                  
  18. D*************************( Buffer Variables)**************************
  19. D TgBufLen        S                   Like( TypeBin4 )                 
  20. D TgBfrPtr        S                   Like( TypePtr )                  
  21. D TgAftPtr        S                   Like( TypePtr )                  
  22. D TgBufSiz        C                   Const( %Size( TgBufChr ) )       
  23. *****************************************************                  
  24.  *   OUTPUT PARAMETERS FOR QMHSNDPM                                    
  25. *****************************************************                  
  26. D ERROR           DS                                                   
  27. D  PROVID                 1      4B 0                                  
  28. D  AVAIL                  5      8B 0                                  
  29. D  RTNMSG                 9     15                                     
  30. D MSGD            DS                                                   
  31. D  MSGLEN                 1      4B 0                                  
  32. D  PGMSTK                 5      8B 0                                  
  33. C**********************************************************************
  34.  *---                                                                  
  35.  **    Compare the Triggered file and execute Call if needed          
  36.  *---                                                                  
  37. C     MTGM_Key      SETLL     RMTGM                                    
  38. C     MTGM_Key      READE     RMTGM                                  60
  39. C*                                                                     
  40. C                   DOW       *IN60 = *OFF                             
  41. C                   IF            (TGTIME = TgTrgTime )                
  42. C                             AND (TGEVNT = TgTrgEvt  )                
  43. C                             AND (TGDLCD = *BLANK    )                
  44. C                   Eval      @pgm = %trim(TGPLIB) + '/' +             
  45. C                              %trim(tgpnm)                            
  46. C                   CALL      @pgm                                 90  
  47. C                   PARM                    TgBufDS                    
  48. C                   PARM                    Parm2                      
  49. C*                                                                     
  50. C                   EVAL      MSGDTA = C_MsgHdr + TGPNM                
  51. C                   IF        *IN90 = *ON                              
  52. C                   EVAL      MSGDTA = %Trim(MSGDTA) + C_MsgBad        
  53. C                   ELSE                                               
  54. C                   EVAL      MSGDTA = %Trim(MSGDTA) + C_MsgGood       
  55. C                   ENDIF                                              
  56.  C                   EXSR      #LogMsg                                  
  57. C*                                                                     
  58. C                   ENDIF                                              
  59. C*                                                                     
  60. C     MTGM_Key      READE     RMTGM                                  60
  61. C                   ENDDO                                              
  62.  *                                                                     
  63.  *    Turn on LR to Exit                                               
  64. C                   CLOSE     MTGM                                 90  
  65. C                   EVAL      *INLR=*ON                                
  66.  *    -----------------------------------------------------------------
  67. C     #LogMsg       BEGSR                                              
  68.  *                                                                     
  69. C                   MOVEL(P)  'CPF9898'     MSGID                      
  70. C                   MOVEL(P)  'QSYS'        LIB              10        
  71. C                   MOVEL(P)  'QCPFMSG'     ID               10        
  72. C     ID            CAT(P)    LIB           MSGF                       
  73. C                   EVAL      MSGLEN = %Size(MSGDTA)                   
  74. C                   MOVEL(P)  '*INFO'       MSGTYP                     
  75. C                   MOVEL(P)  '*'           MSGQUE                     
  76. C* Updated in Source -- MoveL(P)  'TEST MSG'    MSGDTA
  77. C                   Z-ADD     1             PGMSTK    
  78. C                   MOVE      ' '           MSGKEY    
  79. C                   Z-ADD     0             PROVID    
  80. C                   Z-ADD     0             AVAIL     
  81. C                   CALL      'QMHSNDPM'    PLIST1    
  82.  *                                                    
  83. C                   ENDSR                             
  84.  *    ------------------------------------------------
  85. C     *INZSR        BEGSR                             
  86.  *    Entry Parameter                                 
  87. C     *ENTRY        PLIST                             
  88. C                   PARM                    TgBufDS   
  89. C                   PARM                    PARM2     
  90.  *                                                    
  91.  *    Trigger master file key list                    
  92. C     MTGM_Key      KLIST                             
  93. C                   KFLD                    TgLib     
  94. C                   KFLD                    TgFile    
  95.  *                                                    
  96. C                   OPEN      MTGM                                 90
  97. C                   IF        *IN90 = *ON                            
  98. C                   EVAL      MSGDTA = C_MsgFile                     
  99. C                   EXSR      #LogMsg                                
  100. C                   EVAL      *INLR = *ON                            
  101. C                   RETURN                                           
  102. C                   ENDIF                                            
  103. **************************************************                   
  104.  *     PARAMETERS NEEDED TO SIGNAL AN EXCEPTION INSIDE               
  105.  *     TRIGGERS                                                      
  106. **************************************************                   
  107. C     PLIST1        PLIST                                            
  108. C                   PARM                    MSGID             7      
  109. C                   PARM                    MSGF             20      
  110. C                   PARM                    MSGDTA           60      
  111. C                   PARM                    MSGLEN                   
  112. C                   PARM                    MSGTYP           10      
  113. C                   PARM                    MSGQUE           10      
  114. C                   PARM                    PGMSTK                   
  115. C                   PARM                    MSGKEY            4      
  116. C                   PARM                    ERROR
  117. C*                                               
  118. C                   ENDSR                 
  119.  
  120.  
  121.  
  122. The TPARM1 copy
  123. F* Trigger Buffer DataStructure                                       
  124. F*                                                                    
  125. D*********************************************************************
  126.  *                                                                    
  127. DTgBufDS          DS                                                  
  128. D TgFile                              LIKE(TypeSysNam)                
  129. D TgLib                               LIKE(TypeSysNam)                
  130. D TgMbr                               LIKE(TypeSysNam)                
  131. D TgTrgEvt                            LIKE(TypeChr)                   
  132. D TgTrgTime                           LIKE(TypeChr)                   
  133. D TgCmtLvl                            LIKE(TypeChr)                   
  134. D TgReserve1                     3A                                   
  135. D TgCCSId                             LIKE(TypeBin4)                  
  136. D TgReserve2                     8A                                   
  137. D TgBOffset                           LIKE(TypeBin4)                  
  138. D TgBLen                              LIKE(TypeBin4)                  
  139. D TgBNullOff                          LIKE(TypeBin4)                  
  140. D TgBNullLen                          LIKE(TypeBin4)                  
  141. D TgAOffset                           LIKE(TypeBin4)                         
  142. D TgALen                              LIKE(TypeBin4)                  
  143. D TgANullOff                          LIKE(TypeBin4)                  
  144. D TgANullLen                          LIKE(TypeBin4)                  
  145. D TgBufChr                1  32767A                                   
  146. D TgBufAry                       1A   Overlay( TgBufChr )             
  147. D                                     DIM ( %Size( TgBufChr ) )       
  148. D*********************************************************************
  149.  
  150.  
  151. The top of a handler program.
  152. D*******************( Soft Coded Trigger Fields )********************
  153. D NullTypPtr      S               *                                  
  154. D TypeBin4        S              9B 0 BASED (NullTypPtr )            
  155. D TypeChr         S              1A   BASED (NullTypPtr )            
  156. D TypeSysNam      S             10A   BASED (NullTypPtr )            
  157. D TypePtr         S               *   BASED (NullTypPtr )            
  158. D************************( Data Structures )*************************
  159. D/COPY QRPGSRC,TPARM1                                                
  160.  *MCTL           E DS                                                
  161. DPARM2            DS                                                    
  162. D TgLength                1      4B 0                                   
  163. D*************************(    Variables    )************************** 
  164. D TgBufLen        S                   Like( TypeBin4 )                  
  165. D TgBfrPtr        S                   Like( TypePtr )                   
  166. D TgAftPtr        S                   Like( TypePtr )                   
  167. D TgBufSiz        C                   Const( %Size( TgBufChr ) )        
  168. D********************************************************************** 
  169. D B_MPATDS      E DS                  ExtName( MPAT )                   
  170. D                                     Prefix ( B_ )                     
  171. D                                     Based ( TgBfrPtr )                
  172. D A_MPATDS      E DS                  ExtName( MPAT )                   
  173. D                                     Prefix ( A_ )                     
  174. D                                     Based ( TgAftPtr )                
  175. D********************************************************************** 
  176.  *---                                                                   
  177.  **    Exit: If they don't have Clinitec NxtGen Activated.              
  178.  *---                                                                   
  179. C                   IF        CTNXTG <> 'Y'                             
  180. C                   EVAL      *INLR=*ON                                 
  181. C                   RETURN                                             
  182. C                   ENDIF                                              
  183.  *---                                                                  
  184.  **    Retrieve Record Buffers                                         
  185.  *---                                                                  
  186. C                   EVAL      TgBfrPtr = %Addr(TgBufAry(TgBOffset + 1))
  187. C                   EVAL      TgAftPtr = %Addr(TgBufAry(TgAOffset + 1))
  188.  *---                                                                  
  189.  **    Compare the selected fields and execute Call if needed          
  190.  *---                                                                  
  191. C                   EVAL      *IN10 = *OFF                             
  192. C                   EVAL      *IN10 = *IN10 OR (A_PTPLN  <> B_PTPLN)   
  193. C                   EVAL      *IN10 = *IN10 OR (A_PTPFN  <> B_PTPFN)   
© 2004-2019 by midrange.com generated in 0.009s valid xhtml & css