/* REXX */
/* CLS2REXXed by FSOX001 on 17 Apr 2017 at 14:37:53  */
Signal On NoValue
Call On Error
Signal On Failure
Signal On Syntax
Parse source opsys . exec_name .
Address ISREDIT
 
"MACRO"               /* CAAM0002 EDIT MACRO */
/*********************************************************************/
/* 04/25/2006 CL Fenton added information changes on the use of      */
/*            back or primary security database.                     */
/* 06/06/2006 C Stern Updated ERROR ROUTINE.                         */
/* 06/08/2006 C Stern Corrected field length for TITLE.              */
/*            Resolved 920 error code.  Resolved 912 error code.     */
/* 08/08/2006 CL Fenton Added control options SYSPROMPT and SYSASIS. */
/* 01/26/2007 CL Fenton Chgd for hlq data set name.                  */
/* 03/31/2008 CL Fenton Added OUTWRITE var for no output written.    */
/* 07/16/2009 CL Fenton Changes CACT0001 to CACT0000, CAAM0001 to    */
/*            CACM000T.  Changes for reflect new table information.  */
/* 05/09/2011 CL Fenton Added reset on RETURN_CODE before LMMADD.    */
/* 01/05/2012 CL Fenton Chgd &DSN to &NRSTR(&DSN) to prevent         */
/*            multiple errors.                                       */
/* 08/26/2016 CL Fenton Correct issue with TBLMBR.                   */
/* 04/19/2017 CL Fenton Converted script from CLIST to REXX.         */
/* 12/03/2025 CL Fenton Change to remove LMCOMP.                     */
/* 02/25/2026 CL Fenton Change on process return_code 14 on LMMADD.  */
/*                                                                   */
/*                                                                   */
/*                                                                   */
/*********************************************************************/
pgmname = "CAAM0002 02/25/26"
sysprompt = "OFF"                       /* CONTROL NOPROMPT          */
sysasis = "ON"                          /* CONTROL ASIS - caps off   */
return_code = 0                         /* SET RETURN CODE TO 0      */
maxcc = 0
Address ISPEXEC "CONTROL NONDISPL ENTER"
Address ISPEXEC "CONTROL ERRORS RETURN"
 
/*******************************************/
/* VARIABLES ARE PASSED TO THIS MACRO      */
/*******************************************/
Address ISPEXEC "VGET (CONSLIST COMLIST SYMLIST TERMMSGS TBLMBR",
  "TEMP4 OUTPUT PARMACF CAAM0003 CAAM0013) ASIS"
am2vge = return_code
 
If CONSLIST = "ON" | COMLIST = "ON" | SYMLIST = "ON" ,
  then Trace ?r
 
return_code = 0
 
/*******************************************/
/* TURN ON MESSAGES                        */
/*******************************************/
syssymlist = symlist                    /* CONTROL SYMLIST/NOSYMLIST */
sysconlist = conslist                   /* CONTROL CONLIST/NOCONLIST */
syslist = comlist                       /* CONTROL LIST/NOLIST       */
sysmsg = termmsgs                       /* CONTROL MSG/NOMSG         */
sysprint = " "
return_code = 0
Address ISPEXEC "LMOPEN DATAID("temp4") OPTION(OUTPUT)"
return_code = 0                         /* SET RETURN CODE TO 0      */
 
/*******************************************/
/* PROCESS TABLE VARIBLES                  */
/*******************************************/
tblmbr = strip(tblmbr,"L","#")
 
 
TABLE_LOOP:
do until tblmbr = ""
  parse var tblmbr tabledata "#" tblmbr
  parse var tabledata 1 iter 3 . 4 member . 22 title "@" .
  outwrite = "NO"
  Address ISPEXEC "VPUT (ITER OUTWRITE) ASIS"
  return_code = 0                       /* SET RETURN CODE TO 0      */
  cmd = date("u")"   "title
  Address ISPEXEC "LMPUT DATAID("output") MODE(INVAR)",
    "DATALOC(CMD) DATALEN("length(cmd)")"
  am2lmp = return_code
  dsn = ""
  "CURSOR = 1 0"
/*   MAIN INFORMATION*/
 
 
MAIN_LOOP:
  do until return_code <> 0
    return_code = 0
    "FIND '"iter"' 1 2"
    If return_code <> 0 then,
      leave
    "(DATA) = LINE .ZCSR"
    parse var data . 4 dsn .
    If right(dsn,1) = "." then,
      kdsn = dsn"-"
    Else,
      kdsn = dsn
    kend = pos(".",dsn) - 1
    If kend > 0 then,
      key = left(dsn,kend)
    Else,
      key = dsn
    keynum = 0
KEY_LOOP:
    do keynum = 0 to 99 by 1 until key = ""
      Address ISPEXEC "SELECT PGM(ACFRPTXR) PARM('"parmacf "NOLID",
        "DSN("kdsn") RKEY("key") NORRSUM')"
      return_code = 0                 /* SET RETURN CODE TO 0 */
      If sysprint = " " then do
        Address ISPEXEC "LMINIT DATAID(SYSPRINT) DDNAME(SYSPRINT)"
        am2int = return_code
        end
      keynum = right(keynum,2,"0")
      Address ISPEXEC "VPUT (KEYNUM) ASIS"
      Address ISPEXEC "EDIT DATAID("sysprint") MACRO("caam0003")"
      am2edt = return_code
      return_code = 0
      Address ISPEXEC "VGET (KEY) ASIS"
      end
    end
  END_MAIN_LOOP:
  Address ISPEXEC "VGET (OUTWRITE) ASIS"
  If dsn = "" | outwrite = "NO" then do
    return_code = 0                     /* SET RETURN CODE TO 0  */
    cmd = " "
    Address ISPEXEC "LMPUT DATAID("output") MODE(INVAR)",
      "DATALOC(CMD) DATALEN("length(cmd)")"
    am2lmp = return_code
    return_code = 0                     /* SET RETURN CODE TO 0  */
    cmd = "The datasets in this category are not listed for one",
      "of the following reasons:"
    Address ISPEXEC "LMPUT DATAID("output") MODE(INVAR)",
      "DATALOC(CMD) DATALEN("length(cmd)")"
    am2lmp = return_code
    return_code = 0                     /* SET RETURN CODE TO 0  */
    cmd = "1) Datasets have been listed previously in other",
      "reports.  Therefore to avoid duplication, they have been",
      "omitted from this report."
    Address ISPEXEC "LMPUT DATAID("output") MODE(INVAR)",
      "DATALOC(CMD) DATALEN("length(cmd)")"
    am2lmp = return_code
    return_code = 0                     /* SET RETURN CODE TO 0  */
    cmd = "2) Datasets were not collected for this category."
    Address ISPEXEC "LMPUT DATAID("output") MODE(INVAR)",
      "DATALOC(CMD) DATALEN("length(cmd)")"
    am2lmp = return_code
    return_code = 0                     /* SET RETURN CODE TO 0  */
    cmd = "3) A security violation or error occurred with the",
      "ACP command used in the collecting of information for",
      "datasets."
    Address ISPEXEC "LMPUT DATAID("output") MODE(INVAR)",
      "DATALOC(CMD) DATALEN("length(cmd)")"
    am2lmp = return_code
    end
  return_code = 0
  Address ISPEXEC "LMMADD DATAID("temp4") MEMBER("member")"
  If return_code = 4 then,
    Address ISPEXEC "LMMREP DATAID("temp4") MEMBER("member")"
  If return_code = 14 then do
    say pgmname member "not created return_code =" return_code"."
    return_code = 0
    end
  Address ISPEXEC "LMCLOSE DATAID("temp4")"
  Address ISPEXEC "EDIT DATAID("temp4") MACRO("caam0013")",
    "MEMBER("member")"
/*Address ISPEXEC "LMCOMP DATAID("temp4")"*/
  Address ISPEXEC "LMOPEN DATAID("temp4") OPTION(OUTPUT)"
  return_code = 0
  Address ISPEXEC "LMMADD DATAID("output") MEMBER("member")"
  If return_code = 4 then do
    am2lmma = return_code
    return_code = 0
    Address ISPEXEC "LMMREP DATAID("output") MEMBER("member")"
    end
  Else,
    am2lmma = 0
  end
 
 
END_IT:
return_code = 0   /* SET RETURN CODE TO 0 */
Address ISPEXEC "LMFREE DATAID("sysprint")"
am2fre = return_code
Address ISPEXEC "VPUT (AM2VGE AM2INT AM2EDT AM2FRE AM2LMP",
  "AM2LMMA) ASIS"
 
"END"
 
Exit
 
 
/*******************************************/
/*  SYSCALL SUBROUTINES                    */
/*******************************************/
 
 
NoValue:
Failure:
Syntax:
say pgmname 'REXX error' rc 'in line' sigl':' strip(ERRORTEXT(rc))
say SOURCELINE(sigl)
SIGNAL END_IT
 
 
Error:
return_code = RC
if RC > 4 & RC <> 8 & RC <> 14 then do
  say pgmname "LASTCC =" RC strip(zerrlm)
  say pgmname 'REXX error' rc 'in line' sigl':' strip(ERRORTEXT(rc))
  say SOURCELINE(sigl)
  end
if return_code > maxcc then
  maxcc = return_code
return
 
 
