/* REXX */
/* CLS2REXXed by UMLA01S on 4 May 2022 at 15:00:45  */
/*trace ?r*/
Signal On NoValue
Call On Error
Signal On Failure
Signal On Syntax
Parse source opsys . exec_name .
 
/*********************************************************************/
/* This CLIST (CATC0003) generates reports for selected resources    */
/* through the use of TSS commands, (i.e. TSS WHOHAS and TSS         */
/* WHOOWNS commands).                                                */
/*********************************************************************/
/* 05/04/2022 CL Fenton Converted script from CLIST to REXX.         */
/* 01/29/2026 CL Fenton Changes made in output messages.             */
/*                                                                   */
/*                                                                   */
/*                                                                   */
/*********************************************************************/
pgmname = "CATC0003 02/02/26"
CONSLIST = "OFF"                  /* DEFAULT IS OFF                  */
COMLIST  = "OFF"                  /* DEFAULT IS OFF                  */
SYMLIST  = "OFF"                  /* DEFAULT IS OFF                  */
TERMMSGS = "OFF"                  /* DEFAULT IS OFF                  */
TRACE    = "OFF"                  /* TRACE ACTIONS AND ERRORS        */
NOUSR    = "OFF"                  /* PRODUCE USER LIST               */
sysflush = "OFF"                  /* CONTROL NOFLUSH                 */
sysprompt = "OFF"                 /* CONTROL NOPROMPT                */
sysasis = "ON"                    /* CONTROL ASIS - caps off         */
Numeric digits 10                 /* default of 9 not enough         */
maxcc = 0
zerrsm           = ""
zerrlm           = ""
zerrmsg          = ""
vput_1_error                 = 0
lminit_catt1001_error        = 0
lminit_output_error          = 0
lminit_temp_error            = 0
view_catt1001_error          = 0
vget_catt1001_error          = 0
edit_output_error            = 0
lmcomp_output_error          = 0
return_code = 0
Address ISPEXEC
"CONTROL NONDISPL ENTER"
"CONTROL ERRORS RETURN"
 
Arg OPTION
do until OPTION = ""
  parse var OPTION key"("val")" OPTION
  val = strip(val,"B","'")
  val = strip(val,"B",'"')
  optcmd = key '= "'val'"'
  interpret optcmd
  end
 
return_code = 0
If trace = "ON" then do            /* TURN messages on          */
  termmsgs = "ON"                  /* CONTROL MSG               */
  comlist = "ON"                   /* CONTROL LIST              */
  conslist = "ON"                  /* CONTROL CONLIST           */
  symlist = "ON"                   /* CONTROL SYMLIST           */
  end
 
If CONSLIST = "ON" | COMLIST = "ON" | SYMLIST = "ON" | TRACE = "ON",
  then Trace ?r
 
syssymlist = symlist          /* CONTROL SYMLIST/NOSYMLIST */
sysconlist = conslist         /* CONTROL CONLIST/NOCONLIST */
syslist = comlist             /* CONTROL LIST/NOLIST       */
sysmsg = termmsgs             /* CONTROL MSG/NOMSG         */
zispfrc = 0
"VPUT (ZISPFRC) SHARED"
 
 
MESSAGE_HOUSEKEEPING:
return_code = 0                         /* SET RETURN CODE TO 0 */
"VPUT (CONSLIST COMLIST SYMLIST NOUSR TERMMSGS) ASIS"
If return_code <> 0 then,
  vput_1_error = return_code
/********************************************************************/
/* MAIN PROCESS LOOP                                                */
/********************************************************************/
return_code = 0                         /* SET RETURN CODE TO 0 */
"LMINIT DATAID(CATT1001) DDNAME(CNTL)"
If return_code <> 0 then do
  lminit_catt1001_error = return_code
  SIGNAL ERR_EXIT
  end
 
"LMINIT DATAID(TEMP) DDNAME(TEMP)"
If return_code <> 0 then do
  lminit_temp_error = return_code
  SIGNAL ERR_EXIT    /* EXIT */
  end
 
/*******************************************/
/* Get table values                        */
/*******************************************/
"VIEW DATAID("catt1001") MACRO(CATM1005) MEMBER(CATT1001)"
If return_code > 4 then do
  view_catt1001_error = return_code
  SIGNAL ERR_EXIT
  end
 
return_code = 0
"VGET (TABLE TM5VGE) ASIS"
If return_code > 0 then do
  vget_catt1001_error = return_code
  SIGNAL ERR_EXIT
  end
 
return_code = 0
"LMINIT DATAID(OUTPUT) DDNAME(OUTPUT) ENQ(EXCLU)"
If return_code > 0 then do
  lminit_output_error = return_code
  SIGNAL ERR_EXIT
  end
table = table /* remove after testing */
 
Do INDEX = 1 to length(table) by 15
  vput_2_error               = 0
  edit_output_error          = 0
  lmcomp_output_error = 0
  vget_error                 = 0
  resource = substr(table,index,15)
  x = outtrap("var.")
  var = left(resource,8)
  var = strip(var,"T")
  auddsns = ""
  varon = ""
  Address TSO "TSS LIST(AUDIT) RESCLASS("var")"
  Do x = 1 to var.0
    data = var.x
    If data = " " then leave
    If substr(data,1,8) <> var then iterate
    auddsn = substr(data,14)
    audx = strip(auddsn,"T")
    laud = length(auddsn)
    audx = strip(audx,"T","*")
    a1 = pos("* ",audx"  ")
    audx = audx
    If audx = "*ALL" then,
      audx = audx"*"
    auddsns = auddsns""left(audx,50)
    end
 
  return_code = 0
  "VPUT (RESOURCE OUTPUT TEMP AUDDSNS) ASIS"
  If return_code > 0 then,
    vput_2_error = return_code
 
  return_code = 0
  member = strip("WHOO"substr(resource,9,4),"T")
  "EDIT DATAID("output") MACRO(CATM0005) MEMBER("member")"
  If return_code > 4 then,
    edit_output_error = return_code
 
  return_code = 0
  "LMCOMP DATAID("output")"
  If return_code > 0 then,
    lmcomp_output_error = return_code
 
  return_code = 0
  "VGET (TM05RC TM05VGE TM06VGE TM07REP TM07VGE) ASIS"
  If return_code > 0 then,
    vget_error = return_code
 
  return_code = 0
  If termmsgs = "ON" & tm05rc = 0 then do
    Say "==============================================================="
    Say pgmname "RESOURCE:" var /* substrc(1,8,resource) */
    Say pgmname "VPUT_2_ERROR                      "vput_2_error
    Say pgmname "EDIT_OUTPUT_ERROR                 "edit_output_error
    Say pgmname "LMCOMP_OUTPUT_ERROR               "lmcomp_output_error
    Say pgmname "VGET_ERROR                        "vget_error
    Say pgmname "CATM0005 RC                       "tm05rc
    Say pgmname "CATM0005 VGET_ERROR               "tm05vge
    Say pgmname "CATM0006 VGET_ERROR               "tm06vge
    If var = "TSOPROC" then do
      Say pgmname "CATM0008 LMMREP_ERROR             "tm07rep
      Say pgmname "CATM0008 VGET_ERROR               "tm07vge
      end
    Else do
      Say pgmname "CATM0007 LMMREP_ERROR             "tm07rep
      Say pgmname "CATM0007 VGET_ERROR               "tm07vge
      end
    end
  end
 
 
ERR_EXIT:
If maxcc >= 16 | return_code > 0 then do
             "VGET (ZISPFRC) SHARED"
  If maxcc > zispfrc then,
    zispfrc = maxcc
  Else,
    zispfrc = return_code
             "VPUT (ZISPFRC) SHARED"
  Say pgmname "ZISPFRC =" zispfrc
  end
             "VGET (ZISPFRC) SHARED"
If termmsgs = "ON" then do
  Say "==============================================================="
  Say pgmname "VPUT_1_ERROR                      "vput_1_error
  Say pgmname "LMINIT_CATT1001_ERROR             "lminit_catt1001_error
  Say pgmname "LMINIT_TEMP_ERROR                 "lminit_temp_error
  Say pgmname "VIEW_CATT1001_ERROR               "view_catt1001_error
  Say pgmname "CATM1005 VGET_ERROR               "tm5vge
  Say pgmname "VGET_CATT1001_ERROR               "vget_catt1001_error
  Say pgmname "LMINIT_OUTPUT_ERROR               "lminit_output_error
  Say pgmname "ZISPFRC =" zispfrc
  Say "==============================================================="
  end
Exit 0
 
 
/*******************************************/
/*  SYSCALL SUBROUTINES                    */
/*******************************************/
NoValue:
Failure:
Syntax:
say pgmname 'REXX error' rc 'in line' sigl':' strip(ERRORTEXT(rc))
say SOURCELINE(sigl)
SIGNAL ERR_EXIT
 
 
Error:
return_code = RC
if RC > 4 & RC <> 8 then do
  say pgmname "LASTCC =" RC strip(zerrlm)
  say pgmname 'REXX error' rc 'in line' sigl':' strip(ERRORTEXT(rc))
  say SOURCELINE(sigl)
  if return_code > maxcc then
    maxcc = return_code
  end
return
 
 
