Working with SETROPTS LIST data¶
The mfpandas.SETROPTS is made to work with your SETROPTS data.
Because parsing the output of SETROPTS LIST is troublesome to say the least a REXX
is provided to create the SETROPTS export this class can work with.
This REXX is retrieved from the SETROPTS class like below:
>>> s = SETROPTS()
>>> print(s.extractREXX)
/* REXX */
/* Our output stem */
out. = ''
out.0 = 0
/* Our output dataset */
d = date('S')
d = substr(d,3,6)
outdsn = userid()".SETROPTS.D"d
myrc=IRRXUTIL("EXTRACT","_SETROPTS","_SETROPTS","RES")
if (word(myrc,1)<>0) then do
say "MYRC="myrc
say "An IRRXUTIL or R_admin error occurred "
exit 1
end
do s = 1 to RES.BASE.0
setr = RES.BASE.s
if RES.BASE.setr.0 = 1 then do
no = out.0 + 1
out.no = setr":"RES.BASE.setr.1
out.0 = no
end
else do
if RES.BASE.setr.0 = 0 then iterate
do t = 1 to RES.BASE.setr.0
stem = RES.BASE.setr.t
no = out.0 + 1
out.no = setr":"stem
out.0 = no
end
end
end
say "Writing " out.0 "SETROPTS key/value pairs to" outdsn
/* Time to write that stuff */
"ALLOC DA('"outdsn"') SPACE(1,10) CYL " || ,
"LRECL(80) RECFM(F B) BLKSIZE(8000) FI(OUTDD) NEW"
"EXECIO * DISKW OUTDD (STEM out. FINIS"
say "Done"
SETROPTS Examples¶
RACF Class Check¶
Suppose we need to create a list of all classes that are not RACLISTed not GLOBAL but are ACTIVE and GENERIC:
>>> from mfpandas import SETROPTS
>>> s = SETROPTS(setropts='/home/henri/WIZARD.SETROPTS.D250101')
>>> a = s.classInfo.loc[(s.classInfo.RACLIST=="NO") &
(s.classInfo.GENERIC=='YES') &
(s.classInfo.CLASSACT=='YES') &
(s.classInfo.GLOBAL=='NO')
]['name'].values
>>> print(','.join(a))
PKISERV,CACHECLS,RACFEVNT,FSACCESS,IIMS,PRINTSRV,MDSNJR,LIMS,MDSNSC,LDAPBIND,VMDEV,RACFVARS,MDSNSP,RIMS,LDAP,JAVA,CRYPTOZ,MDSNSQ,MDSNUF,ILMADMIN,MDSNUT,VMLAN,MDSNGV,SYSAUTO,RAUDITX