midrange.com code scratchpad
Name:
inactr.rpgle
Scriptlanguage:
Plain Text
Tabwidth:
4
Date:
08/08/2008 05:28:13 pm
IP:
Logged
Description:
Inactivity Monitor RPG Code
Code:
  1.       *****************************************************************
  2.       *
  3.       *   INACTR
  4.       *
  5.       *   Written By:     Michael Ryan, Ryan Technology Resources
  6.       *           On:     12-19-2001
  7.       *
  8.       *      Changes:
  9.       *           On:
  10.       *
  11.       *   Process inactive terminals.
  12.       *   This procedure will accept a job name, user and number as
  13.       *   input and retrieve job information.
  14.       *
  15.       *   A decision is made based on the job name (terminal), user and
  16.       *   program being executed.
  17.       *
  18.       *****************************************************************
  19.      H NoMain
  20.      H Option(*NoDebugIO:*SrcStmt)
  21.  
  22.      FINACTL1   IF   E           K Disk    UsrOpn
  23.      FUTL018L2  UF   E           K Disk    UsrOpn
  24.      FINACTLOGP O    E             Disk    UsrOpn
  25.  
  26.       *   QCMDEXC prototype
  27.      D Qcmdexc         PR                  ExtPgm('QCMDEXC')
  28.      D Cmd                          512A   Options(*VarSize)
  29.      D                                     Const
  30.      D Cmdlen                        15P 5 Const
  31.  
  32.      DInact            PR             1
  33.    DCD                               10
  34.    DCD                               10
  35.    DCD                                6
  36.  
  37.       *   QUSRJOBI prototype
  38.      D ListJob         PR                  ExtPgm('QUSRJOBI')
  39.      D                              512A   Options(*VarSize)
  40.      D                                     Const
  41.      D                                9B 0 Const
  42.      D                               10    Const
  43.      D                               26    Const
  44.      D                               10    Const
  45.      D                               17    Options(*VarSize)
  46.      D                                     Const
  47.  
  48.      PInact            B                   Export
  49.  
  50.      DInact            PI             1
  51.    DCD JobName                       10
  52.    DCD JobUser                       10
  53.    DCD Number                         6
  54.  
  55.       *   Data structure for returned information.
  56.      D ListRcvdInfo    DS
  57.      D  LRIBytesRet                   9B 0
  58.      D  LRIBytesAvail                 9B 0
  59.      D  LRIJobName                   10
  60.      D  LRIUserName                  10
  61.      D  LRIJobNumber                  6
  62.      D  LRIJobIntID                  16
  63.      D  LRIJobStatus                 10
  64.      D  LRIJobType                    1
  65.      D  LRIJobSubType                 1
  66.      D  LRIJobSBSD                   10
  67.      D  LRIRunPrior                   9B 0
  68.      D  LRIPoolID                     9B 0
  69.      D  LRIProcTime                   9B 0
  70.      D  LRIAuxIO                      9B 0
  71.      D  LRIIntTran                    9B 0
  72.      D  LRIRespTime                   9B 0
  73.      D  LRIFuncType                   1
  74.      D  LRIFuncName                  10
  75.      D  LRIActStatus                  4
  76.      D  LRIReserved                   1
  77.      D  LRIDBLocks                    9B 0
  78.      D  LRINonDBLocks                 9B 0
  79.      D  LRIIntLocks                   9B 0
  80.      D  LRIDBTime                     9B 0
  81.      D  LRINonDBTime                  9B 0
  82.      D  LRIIntTime                    9B 0
  83.      D  LRICurrPoolID                 9B 0
  84.      D  LRIThreadCnt                  9B 0
  85.  
  86.       *   List Job Information - Used in QUSLJOBI
  87.      D ListJobSize     S              9B 0 Inz(%Size(ListRcvdInfo))
  88.      D ListJobFormat   S             10    Inz('JOBI0200')
  89.      D ListJobName     S             26    Inz(*Blanks)
  90.      D ListJobIntID    S             16    Inz(*Blanks)
  91.  
  92.       *   Standard error data structure
  93.      D QUSBN           DS
  94.      D  QUSBNB                        9B 0
  95.      D  QUSBNC                        9B 0
  96.      D  QUSBND                        7
  97.      D  QUSBNF                        1
  98.      D  QUSBNG                        1
  99.  
  100.      D ReturnValue                    1
  101.      D GenericUser                   10
  102.      D JobNumber                      6  0
  103.      D UtlErr                          N
  104.      D Cmd                          512A
  105.      D Cmdlen                        15P 5
  106.  
  107.      C     UTL018L2F     Klist
  108.    DCC                   Kfld                    JobNumber
  109.    DCC                   Kfld                    JobUser
  110.    DCC                   Kfld                    JobName
  111.  
  112.      C                   Move      Number        JobNumber
  113.      C                   Eval      ReturnValue = *Blanks
  114.      C                   Open      INACTL1
  115.  
  116.      C     JobUser       Chain     INACTL1
  117.      C                   If        %Found(INACTL1)
  118.      C                   Eval      ReturnValue = INACTION
  119.      C                   EndIf
  120.  
  121.      C                   If        ReturnValue = *Blanks
  122.      C                   Eval      GenericUser = %SubSt(JobUser:1:3)
  123.      C     GenericUser   Chain     INACTL1
  124.      C                   If        %Found(INACTL1)
  125.      C                   Eval      ReturnValue = INACTION
  126.      C                   Else
  127.      C                   Eval      ReturnValue = 'N'
  128.      C                   EndIf
  129.      C                   EndIf
  130.      C                   Close     INACTL1
  131.  
  132.       *   Only for Endjob processing.
  133.      C                   If        ReturnValue = 'E'
  134.      C                   ExSr      ClrUTL018
  135.      C                   ExSr      LogInact
  136.      C                   EndIf
  137.  
  138.      C                   Return    ReturnValue
  139.  
  140.      C     ClrUTL018     BegSr
  141.  
  142.      C                   Eval      UtlErr = *Off
  143.      C                   Monitor
  144.      C                   Open      UTL018L2
  145.      C                   On-Error
  146.      C                   Eval      UtlErr = *On
  147.      C                   EndMon
  148.      C                   If        Not(UtlErr)
  149.      C     UTL018L2F     SetLL     UTL018L2
  150.      C                   If        %Equal(UTL018L2)
  151.      C     UTL018L2F     ReadE     UTL018L2
  152.      C                   DoW       Not(%Eof(UTL018L2))
  153.      C                   Delete    UTL018R
  154.      C     UTL018L2F     ReadE     UTL018L2
  155.      C                   EndDo
  156.      C                   EndIf
  157.      C                   Else
  158.      C                   CallP     QCmdExc('DLYJOB DLY(600)':15)
  159.      C                   EndIf
  160.      C                   If        %Open(UTL018L2)
  161.      C                   Close     UTL018L2
  162.      C                   EndIf
  163.  
  164.      C                   EndSr
  165.  
  166.      C     LogInact      BegSr
  167.  
  168.      C                   Open      INACTLOGP
  169.      C                   Eval      INLUSR = JobUser
  170.      C                   Eval      INLJOB = JobName
  171.      C                   Eval      INLNUM = Number
  172.      C                   Time                    INLTIM
  173.      C                   Eval      INLACT = ReturnValue
  174.      C                   Write     INACTLOGR
  175.      C                   Close     INACTLOGP
  176.  
  177.      C                   EndSr
  178.  
  179.       *   NOTE: This subroutine is not currently being used...
  180.      C     ProgName      BegSr
  181.      C                   Eval      ListJobName = Jobname +
  182.      C                                           JobUser +
  183.      C                                           Number
  184.  
  185.      C                   CallP     ListJob(ListRcvdInfo  :
  186.      C                                     ListJobSize   :
  187.      C                                     ListJobFormat :
  188.      C                                     ListJobName   :
  189.      C                                     ListJobIntID  :
  190.      C                                     QUSBN)
  191.  
  192.      C                   EndSr
  193.  
  194.      PInact            E 
© 2004-2019 by midrange.com generated in 0.008s valid xhtml & css