/* REXX */
/* CLS2REXXed by UMLA01S on 2 Oct 2020 at 15:56:05  */
/*Trace ?r*/
Signal On NoValue
Call On Error
Signal On Failure
Signal On Syntax
Parse source opsys . exec_name .
 
/*********************************************************************/
/* 06/16/2004 JL Nelson Added EXIT CODE.                             */
/* 06/23/2004 JL Nelson Added code to check security system.         */
/* 11/30/2004 JL Nelson Changed to use CACM042T for table.           */
/* 02/08/2005 JL Nelson Changed constants to variables before        */
/*            rename.                                                */
/* 03/28/2005 JL Nelson Added TYPERUN for Reports without PDIs.      */
/* 06/08/2005 JL Nelson Pass MAXCC in ZISPFRC variable.              */
/* 06/15/2005 JL Nelson Reset return code to end job step.           */
/* 03/21/2006 JL Nelson Use NRSTR avoid abend 900 if ampersand in    */
/*            data.                                                  */
/* 05/09/2006 JL Nelson Added WRITE &LASTCC for debugging.           */
/* 02/10/2008 CL Fenton Removed CACCACP0 to refer to CACC1000.       */
/* 06/02/2009 CL Fenton Changes CACT0001 to CACT0000, CACM042T to    */
/*            CACM000T.  Changes for reflect new table information.  */
/* 10/02/2020 CL Fenton Converted script from CLIST to REXX.         */
/*                                                                   */
/*                                                                   */
/*                                                                   */
/*********************************************************************/
CONSLIST = "OFF"                  /* DEFAULT IS OFF                  */
COMLIST  = "OFF"                  /* DEFAULT IS OFF                  */
SYMLIST  = "OFF"                  /* DEFAULT IS OFF                  */
TERMMSGS = "OFF"                  /* DEFAULT IS OFF                  */
TYPERUN  = "FSO"                  /* Run for SRRAUDIT | FSO          */
CACT0000 = "CACT0000"             /* SELECT MVS REPORT TABLE         */
CATM0401 = "CATM0001"             /* SELECT EDIT macro TEMP3         */
CACC1000 = "CACC1000"             /* SELECT SECURITY CHECK PGM       */
CACM000T = "CACM000T"             /* SELECT EDIT macro CT0000        */
CNTLDDN  = "CNTL"                 /* DDName for CNTL                 */
TEMP3DDN = "TEMPDATA"             /* DDName for TEMP3                */
TRACE    = "OFF"                  /* TRACE ACTIONS AND ERRORS        */
pgmname  = "CATC0001 10/02/20"
sysprompt = "OFF"                 /* CONTROL NOPROMPT                */
sysflush = "OFF"                  /* CONTROL NOFLUSH                 */
sysasis  = "ON"                   /* CONTROL ASIS - caps off         */
Numeric digits 10                 /* default of 9 not enough         */
maxcc = 0
lminit_cntl_rc   = "N/A"
lminit_temp3_rc  = "N/A"
view_cact0000_rc = "N/A"
edit_temp3_rc    = "N/A"
tm01lmcl         = "N/A"
tm01lmfr         = "N/A"
tm01lmin         = "N/A"
tm01lmop         = "N/A"
tm01lmpe         = "N/A"
tm01vget         = "N/A"
tm001rc          = "N/A"
lmfree_temp3_rc  = "N/A"
lmfree_cntl_rc   = "N/A"
 
zerrsm           = ""
zerrlm           = ""
zerrmsg          = ""
 
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         */
Address ISPEXEC
"CONTROL NONDISPL ENTER"
"CONTROL ERRORS RETURN"
zispfrc = 0
"VPUT (ZISPFRC) SHARED"
 
return_code = 0                 /* SET RETURN CODE TO 0 */
"VPUT (CONSLIST COMLIST SYMLIST TERMMSGS CACT0000 TYPERUN)",
  "ASIS"
tc01vput = return_code
If return_code <> 0 then do
  Say pgmname "VPUT RC =" return_code zerrsm
  return_code = return_code + 16
  SIGNAL ERR_EXIT
  end
/* Determine which security system is running */
return_code = 0
"SELECT CMD("cacc1000 "ACP)"
"VGET (ACPNAME ACPVERS) ASIS"
If left(acpname,3) <> "TSS" then do
  Say pgmname "Top Secret Job running on the wrong system."
  Say pgmname acpname acpvers
  return_code = 20
  SIGNAL  ERR_EXIT
  end
 
/*******************************************/
/* INITIALIZE LIBRARY MANAGEMENT           */
/*******************************************/
return_code = 0
"LMINIT DATAID(CNTLID) DDNAME("cntlddn")"
lminit_cntl_rc = return_code
If return_code <> 0 then do
  Say pgmname "LMINIT_CNTL_RC" return_code zerrsm
  return_code = return_code + 16
  SIGNAL  ERR_EXIT
  end
 
return_code = 0
"LMINIT DATAID(TEMP3) DDNAME("temp3ddn")"
lminit_temp3_rc = return_code
If return_code <> 0 then do
  Say pgmname "LMINIT_TEMP3_RC" return_code zerrsm
  return_code = return_code + 16
  SIGNAL  ERR_EXIT
  end
 
/*******************************************/
/* GET TABLE VALUES                        */
/*******************************************/
return_code = 0
"VIEW DATAID("cntlid") MACRO("cacm000t") MEMBER("cact0000")"
view_cact0000_rc = return_code
If return_code > 4 then do
  Say pgmname "VIEW_CACT0000_RC" return_code zerrsm
  return_code = return_code + 16
  SIGNAL  ERR_EXIT
  end
 
/*******************************************/
/* INITIALIZE VARIABLES FOR EDIT MACRO     */
/*******************************************/
return_code = 0
"EDIT DATAID("temp3") MACRO("catm0401")"
edit_temp3_rc = return_code
If return_code > 4 then do
  Say pgmname "EDIT_TEMP3_RC" return_code zerrsm
  return_code = return_code + 16
  SIGNAL  ERR_EXIT
  end
 
return_code = 0
"LMFREE DATAID("temp3")"
lmfree_temp3_rc = return_code
If return_code <> 0 then,
  Say pgmname "LMFREE TEMP3" return_code zerrsm
 
return_code = 0
"LMFREE DATAID("cntlid")"
lmfree_cntl_rc = return_code
If return_code <> 0 then,
  Say pgmname "LMFREE CNTL" return_code zerrsm
 
return_code = 0
 
 
/*******************************************/
/* ERROR EXIT                              */
/*******************************************/
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 (TM01LMCL TM01LMFR TM01LMIN TM01LMOP TM01LMPE TM01VGET",
  "TM001RC) ASIS"
 
If termmsgs = "ON" then do
  Say "==============================================================="
  Say pgmname "LMINIT_CNTL_ERR        " lminit_cntl_rc
  Say pgmname "LMINIT_TEMP3_RC        " lminit_temp3_rc
  Say pgmname "VIEW_CACT0000_RC       " view_cact0000_rc
  Say pgmname "EDIT_TEMP3_RC          " edit_temp3_rc
  If tm001rc <> 0 then do
    Say "==============================================================="
    Say pgmname catm0401 "LMCLOS        " tm01lmcl
    Say pgmname catm0401 "LMFREE        " tm01lmfr
    Say pgmname catm0401 "LMINIT        " tm01lmin
    Say pgmname catm0401 "LMOPEN        " tm01lmop
    Say pgmname catm0401 "LMPUT         " tm01lmpe
    Say pgmname catm0401 "VGET          " tm01vget
    Say pgmname catm0401 "TM001RC       " tm001rc
    Say "==============================================================="
    end
  Say pgmname "LMFREE_TEMP3_RC        " lmfree_temp3_rc
  Say pgmname "LMFREE_CNTL_RC         " lmfree_cntl_rc
  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':' ERRORTEXT(rc)
  say SOURCELINE(sigl)
  end
if return_code > maxcc then,
  maxcc = return_code
return
 
 
/* ERROR ROUTINE */
/*!ERROR "DO"*/
return_code = rc          /* SAVE LAST ERROR CODE */
If rc >= 16
  Then
    Say pgmname "LASTCC =" rc zerrlm
Return
Exit
 
 
