2011年12月23日 星期五

CA-ACF2

  • SECTRACE:

    • SECTRACE SET,ID=jobname,JOBNAME=jobname,END

      ,DEST=CONSOLE
    • SECTRACE ENABLE,ID=jobname
    • SECTRACE DISABLE,ID=jobname

  • SAF rules: Do a "SET RE(SAF)" while in ACF

    • Decomp....................DECOMP name
    • List all..................LIST LIKE(-)

  • SAF rules for the FACILITY class, do a "SET RE(FAC)"

    • Decomp....................DECOMP name
    • List all..................LIST LIKE(-)
  • 2011年12月3日 星期六

    VVDSFIX

    VVDSFIX - An unsupported VSAM utility used to correct problems with catalogs and VVDS.

    The detail document refer to IBM website and get it.

    2011年12月2日 星期五

    IBM Support

    2011年11月18日 星期五

    How do I add and delete LNKLST datasets?

    To replace a dataset in the LNKLST, you can do the following:
  • P LLA
  • SETPROG LNKLST,DEFINE,NAME=newlnklst,COPYFROM=CURRENT
  • SETPROG LNKLST,DELETE,NAME=newlnklst,DSNAME=old.dataset.name
  • SETPROG ADD,NAME=newlnklst,DSNAME=new.dataset.name,AFTER=dsname
  • SETPROG LNKLST,ACTIVATE,NAME=newlnklst
  • SETPROG LNKLST,UPDATE,JOBS=*



  • SETPROG LNKLST,DELETE,NAME=oldlnklst,DSNAME=old.dataset.name
  • SETPROG ADD,NAME=newlnklst,DSNAME=new.dataset.name,AFTER=dsname
  • SETPROG LNKLST,ACTIVATE,NAME=oldlnklst
  • SETPROG LNKLST,UPDATE,JOBS=*


  • S LLA,SUB=MSTR



  • You will need to allocate the new dataset before you can do this.

    The last 4 SETPROG's is only needed if you want to run on the 'old' linklist name, it is purely cosmetic.

    2011年11月2日 星期三

    SDSF - Capturing output via batch

    The sample JCL shown below works. It solves several problems I used to face; getting the right job when more than one of the same jobname exists; selecting a ddname; how much to print.

    //* DOC: THIS JOB RUNS SDSF AS A BATCH JOB. 00045000
    //* 00046000
    //STEP001 EXEC PGM=SDSF 00047000
    //ISFOUT DD SYSOUT=* 00048000
    //DDNAME DD DISP=SHR,DSN=XSYS.KTOMIAK.VB255(TSMPBACK) 00049009
    //ISFIN DD * 00050000
    PRE TSMPBACK 00060009
    OWNER * 00070000
    H 00080007
    SORT CRDATE D 00081005
    S TSMPBACK JOB33361 00082010
    F TSMPBACK 00090009
    ++? 00120007
    F SYSPRINT 00121007
    ++S 00122007
    PRINT FILE DDNAME 00130000
    PRINT 1 999999999 00140000
    PRINT CLOSE 00150000
    END 00160000
    /* 00170000
    // 00180000

    99.99% of the DFHCSD records unscrambled

    *
    * AUTHOR: "KENNETH E TOMIAK"
    * http://www.ktomiak.biz/ORG/STUFF/cics/index.html
    *
    * COLUMN 1-4 = DECIMAL RECORD TYPE
    * COLUMN 6-9 = HEXADECIMAL RECORD TYPE FOUND IN POSTION 13
    * COLUMN 11 = FIELD-KEY
    * 1 = TYPE OF RECORD
    * 2 = FLAG FIELD
    * 3 = MEANING OF FLAG VALUE
    * 4 = DATA FIELD
    * COLUMN 13-14 = FIELD TYPE
    * COLUMN 16 = ATTRIBUTE OF FIELD
    * S = SPECIAL RECORD
    * R = RECORD DESCRIPTION
    * T = TEXT DATA
    * X = HEXADECIMAL DATA OR DECIMAL NUMBER
    * N = NUMBER FIELD
    * # = FLAG VALUES (Decimal numbers)
    * B = TWO NUMBER FIELDS
    * C = THREE NUMBER FIELDS
    *
    1 0000 1 00 S ERROR
    *
    1 0001 1 00 S PRIMERECORD
    *
    5 0005 1 00 S IBMINITIAL
    *
    6 0006 1 00 S NONIBMINITIAL
    *
    13 000D 1 00 S GROUPINALIST
    *
    500 01F4 1 00 R CONNECTION
    500 01F4 4 01 T NAME
    500 01F4 4 02 T GROUP
    500 01F4 4 0C T DESCRIPTION
    500 01F4 2 10 X ACCESSMETHOD
    500 01F4 3 10 1 VTAM
    500 01F4 3 10 3 INDIRECT
    500 01F4 3 10 2 IRC
    500 01F4 3 10 4 XM
    500 01F4 2 14 X ATTACHSEC
    500 01F4 3 14 1 LOCAL
    500 01F4 3 14 2 IDENTIFY
    500 01F4 3 14 3 VERIFY
    500 01F4 3 14 4 PERSISTENT
    500 01F4 3 14 5 MIXIDPE
    500 01F4 2 0E X AUTOCONNECT
    500 01F4 3 0E 1 NO
    500 01F4 3 0E 2 YES
    500 01F4 3 0E 3 ALL
    500 01F4 2 15 X BINDSECURITY
    500 01F4 3 15 1 NO
    500 01F4 3 15 2 YES
    500 01F4 2 16 X CONNTYPE
    500 01F4 3 16 0
    500 01F4 3 16 1 SPECIFIC
    500 01F4 3 16 2 GENERIC
    500 01F4 2 12 X DATASTREAM
    500 01F4 3 12 1 USER
    500 01F4 3 12 2 3270
    500 01F4 3 12 3 SCS
    500 01F4 3 12 4 STRFIELD
    500 01F4 3 12 5 LMS
    500 01F4 4 06 T INDSYS
    500 01F4 2 0D X INSERVICE
    500 01F4 3 0D 1 YES
    500 01F4 3 0D 2 NO
    500 01F4 4 0E N MAXQTIME
    500 01F4 4 05 T NETNAME
    500 01F4 2 0F X PROTOCOL
    500 01F4 3 0F 1 APPC
    500 01F4 3 0F 2 LU61
    500 01F4 3 0F 3 EXCI
    500 01F4 3 0F 0 BLANK
    500 01F4 2 17 X PSRECOVERY
    500 01F4 3 17 0
    500 01F4 3 17 1 SYSDEFAULT
    500 01F4 3 17 2 NONE
    500 01F4 4 0D N QUEUELIMIT
    500 01F4 2 13 X RECORDFORMAT
    500 01F4 3 13 1 U
    500 01F4 3 13 2 VB
    500 01F4 4 0B T REMOTENAME
    500 01F4 4 1B T REMOTESYSNET
    500 01F4 4 0A T REMOTESYSTEM
    500 01F4 4 07 T SECURITYNAME
    500 01F4 2 11 X SINGLESESS
    500 01F4 3 11 1 NO
    500 01F4 3 11 2 YES
    500 01F4 2 1A X USEDFLTUSER
    500 01F4 3 1A 1 NO
    500 01F4 3 1A 2 YES
    500 01F4 2 1B X XLNACTION
    500 01F4 3 1B 1 KEEP
    500 01F4 3 1B 2 FORCE
    *
    550 0226 1 00 R CORBASERVER
    550 0226 4 01 T NAME
    550 0226 4 02 T GROUP
    550 0226 4 06 T DESCRIPTION
    550 0226 2 0E X AUTOPUBLISH
    550 0226 3 0E 2 NO
    550 0226 3 0E 1 YES
    550 0226 4 0D T CERTIFICATE
    550 0226 4 XX T CLIENTCERT-OBSOLETE
    550 0226 4 15 T DJARDIR
    550 0226 4 08 T HOST
    550 0226 4 05 T JNDIPREFIX
    550 0226 4 09 N PORT
    550 0226 4 0A C SESSBEANTIME
    550 0226 4 07 T SHELF
    550 0226 4 XX T SSL-OBSOLETE
    550 0226 2 07 X SSLPORT
    550 0226 3 07 2 TWO
    550 0226 4 14 T SSLUNAUTH
    550 0226 4 0F T UNAUTH
    *
    600 0258 1 00 R DJAR
    600 0258 4 01 T NAME
    600 0258 4 02 T GROUP
    600 0258 4 06 T DESCRIPTION
    600 0258 4 05 T CORBASERVER
    600 0258 4 07 T HFSFILE
    *
    650 028A 1 00 R LSRPOOL
    650 028A 4 01 T NAME
    650 028A 4 02 T GROUP
    650 028A 4 15 T DESCRIPTION
    650 028A 4 09 N DATA512
    650 028A 4 0A N DATA1K
    650 028A 4 0B N DATA2K
    650 028A 4 0C N DATA4K
    650 028A 4 0D N DATA8K
    650 028A 4 0E N DATA12K
    650 028A 4 0F N DATA16K
    650 028A 4 10 N DATA20K
    650 028A 4 11 N DATA24K
    650 028A 4 12 N DATA28K
    650 028A 4 13 N DATA32K
    650 028A 4 21 N HSDATA4K
    650 028A 4 22 N HSDATA8K
    650 028A 4 23 N HSDATA12K
    650 028A 4 24 N HSDATA16K
    650 028A 4 25 N HSDATA20K
    650 028A 4 26 N HSDATA24K
    650 028A 4 27 N HSDATA28K
    650 028A 4 28 N HSDATA32K
    650 028A 4 29 N HSINDEX4K
    650 028A 4 2A N HSINDEX8K
    650 028A 4 2B N HSINDEX12K
    650 028A 4 2C N HSINDEX16K
    650 028A 4 2D N HSINDEX20K
    650 028A 4 2E N HSINDEX24K
    650 028A 4 2F N HSINDEX28K
    650 028A 4 30 N HSINDEX32K
    650 028A 4 16 N INDEX512
    650 028A 4 17 N INDEX1K
    650 028A 4 18 N INDEX2K
    650 028A 4 19 N INDEX4K
    650 028A 4 1A N INDEX8K
    650 028A 4 1B N INDEX12K
    650 028A 4 1C N INDEX16K
    650 028A 4 1D N INDEX20K
    650 028A 4 1E N INDEX24K
    650 028A 4 1F N INDEX28K
    650 028A 4 20 N INDEX32K
    650 028A 4 14 N LSRPOOLID
    650 028A 4 06 N MAXKEYLENGTH
    650 028A 4 07 N SHARELIMIT
    650 028A 4 08 N STRINGS
    *
    800 0320 1 00 R FILE
    800 0320 4 01 T NAME
    800 0320 4 02 T GROUP
    800 0320 4 12 T DESCRIPTION
    800 0320 2 11 X ADD
    800 0320 3 11 1 NO
    800 0320 3 11 2 YES
    800 0320 2 1E X BACKUPTYPE
    800 0320 3 1E 1 STATIC
    800 0320 3 1E 2 DYNAMIC
    800 0320 2 12 X BROWSE
    800 0320 3 12 1 NO
    800 0320 3 12 2 YES
    800 0320 4 15 T CFDTPOOL
    800 0320 4 0F N DATABUFFERS
    800 0320 2 13 X DELETE
    800 0320 3 13 1 NO
    800 0320 3 13 2 YES
    800 0320 2 10 X DISPOSITION
    800 0320 3 10 1 SHARE
    800 0320 3 10 2 OLD
    800 0320 4 06 T DSNAME
    800 0320 2 1B X DSNSHARING
    800 0320 3 1B 1 ALLREQS
    800 0320 3 1B 2 MODIFYREQS
    800 0320 4 11 T FWDRECOVLOG
    800 0320 4 10 N INDEXBUFFERS
    800 0320 2 1A X JNLADD
    800 0320 3 1A 1 NONE
    800 0320 3 1A 2 BEFORE
    800 0320 3 1A 3 AFTER
    800 0320 3 1A 4 ALL
    800 0320 2 18 X JNLREAD
    800 0320 3 18 1 NONE
    800 0320 3 18 2 UPDATEONLY
    800 0320 3 18 3 READONLY
    800 0320 3 18 4 ALL
    800 0320 2 16 X JNLSYNCREAD
    800 0320 3 16 1 NO
    800 0320 3 16 2 YES
    800 0320 2 17 X JNLSYNCWRITE
    800 0320 3 17 1 YES
    800 0320 3 17 2 NO
    800 0320 2 19 X JNLUPDATE
    800 0320 3 19 1 NO
    800 0320 3 19 2 YES
    800 0320 4 09 N JOURNAL
    800 0320 4 08 N KEYLENGTH
    800 0320 2 21 X LOAD
    800 0320 3 21 1 NO
    800 0320 3 21 2 YES
    800 0320 4 0D N LSRPOOLID
    800 0320 4 14 N MAXNUMRECS
    800 0320 4 13 T NSRGROUP
    800 0320 2 0F X OPENTIME
    800 0320 3 0F 1 STARTUP
    800 0320 3 0F 2 FIRSTREF
    800 0320 4 0C T PASSWORD
    800 0320 2 14 X READ
    800 0320 3 14 1 YES
    800 0320 3 14 2 NO
    800 0320 2 20 X READINTEG
    800 0320 3 20 1 UNCOMMITTED
    800 0320 3 20 2 CONSISTENT
    800 0320 3 20 3 REPEATABLE
    800 0320 2 1C X RECORDFORMAT
    800 0320 3 1C 1 V
    800 0320 3 1C 2 F
    800 0320 4 07 N RECORDSIZE
    800 0320 2 0E X RECOVERY
    800 0320 3 0E 1 NONE
    800 0320 3 0E 2 BACKOUTONLY
    800 0320 3 0E 3 ALL
    800 0320 4 0B T REMOTENAME
    800 0320 4 0A T REMOTESYSTEM
    800 0320 2 1F X RLSACCESS
    800 0320 3 1F 1 YES
    800 0320 3 1F 2 NO
    800 0320 2 0D X STATUS
    800 0320 3 0D 1 ENABLED
    800 0320 3 0D 2 DISABLED
    800 0320 3 0D 3 UNENABLED
    800 0320 4 0E N STRINGS
    800 0320 2 1D X TABLE
    800 0320 3 1D 1 NO
    800 0320 3 1D 2 CICS
    800 0320 3 1D 3 USER
    800 0320 3 1D 4 CF
    800 0320 4 16 T TABLENAME
    800 0320 2 15 X UPDATE
    800 0320 3 15 1 NO
    800 0320 3 15 2 YES
    800 0320 2 22 X UPDATEMODEL
    800 0320 3 22 1 CONTENTION
    800 0320 3 22 2 LOCKING
    *
    900 0384 1 00 R JOURNALMODEL
    900 0384 4 01 T NAME
    900 0384 4 02 T GROUP
    900 0384 4 06 T DESCRIPTION
    900 0384 4 07 T JOURNALNAME
    900 0384 4 08 T STREAMNAME
    900 0384 2 0E X TYPE
    900 0384 3 0E 3 DUMMY
    900 0384 3 0E 1 MVS
    900 0384 3 0E 2 SMF
    *
    1000 03E8 1 00 R MAPSET
    1000 03E8 4 01 T NAME
    1000 03E8 4 02 T GROUP
    1000 03E8 4 06 T DESCRIPTION
    1000 03E8 2 10 X RESIDENT
    1000 03E8 3 10 1 NO
    1000 03E8 3 10 2 YES
    1000 03E8 2 0D X STATUS
    1000 03E8 3 0D 1 ENABLED
    1000 03E8 3 0D 2 DISABLED
    1000 03E8 2 11 X USAGE
    1000 03E8 3 11 1 NORMAL
    1000 03E8 3 11 2 TRANSIENT
    1000 03E8 2 12 X USELPACOPY
    1000 03E8 3 12 1 NO
    1000 03E8 3 12 2 YES
    *
    2000 07D0 1 00 R PARTITIONSET
    2000 07D0 4 01 T NAME
    2000 07D0 4 02 T GROUP
    2000 07D0 4 06 T DESCRIPTION
    2000 07D0 2 10 X RESIDENT
    2000 07D0 3 10 1 NO
    2000 07D0 3 10 2 YES
    2000 07D0 2 0D X STATUS
    2000 07D0 3 0D 1 ENABLED
    2000 07D0 3 0D 2 DISABLED
    2000 07D0 2 11 X USAGE
    2000 07D0 3 11 1 NORMAL
    2000 07D0 3 11 2 TRANSIENT
    2000 07D0 2 12 X USELPACOPY
    2000 07D0 3 12 1 NO
    2000 07D0 3 12 2 YES
    *
    2500 09C4 1 00 R PARTNER
    2500 09C4 4 01 T NAME
    2500 09C4 4 02 T GROUP
    2500 09C4 4 06 T DESCRIPTION
    2500 09C4 4 05 T NETNAME
    2500 09C4 4 07 T NETWORK
    2500 09C4 4 08 T PROFILE
    2500 09C4 4 09 T TPNAME
    2500 09C4 4 0A T XTPNAME
    *
    3000 0BB8 1 00 R PROFILE
    3000 0BB8 4 01 T NAME
    3000 0BB8 4 02 T GROUP
    3000 0BB8 4 09 T DESCRIPTION
    3000 0BB8 2 18 X CHAINCONTROL
    3000 0BB8 3 18 1 NO
    3000 0BB8 3 18 2 YES
    3000 0BB8 2 13 X DVSUPRT
    3000 0BB8 3 13 1 ALL
    3000 0BB8 3 13 2 NONVTAM
    3000 0BB8 3 13 3 VTAM
    3000 0BB8 4 0A T FACILITYLIKE
    3000 0BB8 2 14 X INBFMH
    3000 0BB8 3 14 1 NO
    3000 0BB8 3 14 2 ALL
    3000 0BB8 3 14 3 DIP
    3000 0BB8 3 14 4 EODS
    3000 0BB8 4 06 T JOURNAL
    3000 0BB8 2 16 X LOGREC
    3000 0BB8 3 16 1 NO
    3000 0BB8 3 16 2 YES
    3000 0BB8 4 05 T MODENAME
    3000 0BB8 2 10 X MSGINTEG
    3000 0BB8 3 10 1 NO
    3000 0BB8 3 10 2 YES
    3000 0BB8 2 0F X MSGJRNL
    3000 0BB8 3 0F 1 NO
    3000 0BB8 3 0F 2 INPUT
    3000 0BB8 3 0F 3 OUTPUT
    3000 0BB8 3 0F 4 INOUT
    3000 0BB8 4 07 N NEPCLASS
    3000 0BB8 2 11 X ONEWTE
    3000 0BB8 3 11 1 NO
    3000 0BB8 3 11 2 YES
    3000 0BB8 2 17 X PRINTERCOMP
    3000 0BB8 3 17 1 NO
    3000 0BB8 3 17 2 YES
    3000 0BB8 2 12 X PROTECT
    3000 0BB8 3 12 1 NO
    3000 0BB8 3 12 2 YES
    3000 0BB8 2 15 X RAQ
    3000 0BB8 3 15 1 NO
    3000 0BB8 3 15 2 YES
    3000 0BB8 4 08 N RTIMOUT
    3000 0BB8 2 0E X SCRNSIZE
    3000 0BB8 3 0E 1 DEFAULT
    3000 0BB8 3 0E 2 ALTERNATE
    3000 0BB8 2 19 X UCTRAN
    3000 0BB8 3 19 1 NO
    3000 0BB8 3 19 2 YES
    3000 0BB8 4 0D X MYSTERY-0BB8-0D
    *
    4000 0FA0 1 00 R PROGRAM
    4000 0FA0 4 01 T NAME
    4000 0FA0 4 02 T GROUP
    4000 0FA0 4 06 T DESCRIPTION
    4000 0FA0 2 13 X CEDF
    4000 0FA0 3 13 1 YES
    4000 0FA0 3 13 2 NO
    4000 0FA0 2 19 X CONCURRENCY
    4000 0FA0 3 19 1 QUASIRENT
    4000 0FA0 3 19 2 THREADSAFE
    4000 0FA0 2 14 X DATALOCATION
    4000 0FA0 3 14 1 ANY
    4000 0FA0 3 14 2 BELOW
    4000 0FA0 2 18 X DYNAMIC
    4000 0FA0 3 18 1 NO
    4000 0FA0 3 18 2 YES
    4000 0FA0 2 15 X EXECKEY
    4000 0FA0 3 15 1 USER
    4000 0FA0 3 15 2 CICS
    4000 0FA0 2 17 X EXECUTIONSET
    4000 0FA0 3 17 1 FULLAPI
    4000 0FA0 3 17 2 DPLSUBSET
    4000 0FA0 2 1B X HOTPOOL
    4000 0FA0 3 1B 1 NO
    4000 0FA0 3 1B 2 YES
    4000 0FA0 2 1A X JVM
    4000 0FA0 3 1A 1 NO
    4000 0FA0 3 1A 2 YES
    4000 0FA0 4 0A T JVMCLASS
    4000 0FA0 4 21 T JVMPROFILE
    4000 0FA0 2 0E X LANGUAGE
    4000 0FA0 3 0E 0
    4000 0FA0 3 0E 1 ASSEMBLER
    4000 0FA0 3 0E 2 COBOL
    4000 0FA0 3 0E 3 PLI
    4000 0FA0 3 0E 5 C
    4000 0FA0 3 0E ? RPG
    4000 0FA0 3 0E 7 LE370
    4000 0FA0 2 0F X RELOAD
    4000 0FA0 3 0F 1 NO
    4000 0FA0 3 0F 2 YES
    4000 0FA0 4 08 T REMOTENAME
    4000 0FA0 4 07 T REMOTESYSTEM
    4000 0FA0 2 10 X RESIDENT
    4000 0FA0 3 10 1 NO
    4000 0FA0 3 10 2 YES
    4000 0FA0 2 0D X STATUS
    4000 0FA0 3 0D 1 ENABLED
    4000 0FA0 3 0D 2 DISABLED
    4000 0FA0 4 09 T TRANSID
    4000 0FA0 2 11 X USAGE
    4000 0FA0 3 11 1 NORMAL
    4000 0FA0 3 11 2 TRANSIENT
    4000 0FA0 2 12 X USELPACOPY
    4000 0FA0 3 12 1 NO
    4000 0FA0 3 12 2 YES
    4000 0FA0 4 05 X MYSTERY-0FA0-05-OBSOLETE
    *
    4333 10ED 1 00 R SESSIONS
    4333 10ED 4 01 T NAME
    4333 10ED 4 02 T GROUP
    4333 10ED 4 1C T DESCRIPTION
    4333 10ED 2 0E X AUTOCONNECT
    4333 10ED 3 0E 1 NO
    4333 10ED 3 0E 2 YES
    4333 10ED 3 0E 3 ALL
    4333 10ED 2 0D X BUILDCHAIN-OBSOLETE
    4333 10ED 3 0D 0
    4333 10ED 3 0D 1 YES
    4333 10ED 3 0D 2 NO
    4333 10ED 4 05 T CONNECTION
    4333 10ED 2 12 X DISCREQ
    4333 10ED 3 12 1 NO
    4333 10ED 3 12 2 YES
    4333 10ED 2 0F X INSERVICE-OBSOLETE
    4333 10ED 3 0F 1 YES
    4333 10ED 3 0F 2 NO
    4333 10ED 4 19 B IOAREALEN
    4333 10ED 4 09 B MAXIMUM
    4333 10ED 4 08 T MODENAME
    4333 10ED 4 1B N NEPCLASS
    4333 10ED 4 07 T NETNAMEQ
    4333 10ED 2 10 X PROTOCOL
    4333 10ED 3 10 1 APPC
    4333 10ED 3 10 2 LU61
    4333 10ED 3 10 3 EXCI
    4333 10ED 4 0C X RECEIVECOUNT
    4333 10ED 4 0B T RECEIVEPFX
    4333 10ED 4 15 X RECEIVESIZE
    4333 10ED 2 14 X RECOVNOTIFY-OBSOLETE
    4333 10ED 3 14 1 NONE
    4333 10ED 3 14 2 MESSAGE
    4333 10ED 3 14 3 TRANSACTION
    4333 10ED 2 13 X RECOVOPTION
    4333 10ED 3 13 1 SYSDEFAULT
    4333 10ED 3 13 2 CLEARCONV
    4333 10ED 3 13 3 RELEASESESS
    4333 10ED 3 13 4 UNCONDREL
    4333 10ED 3 13 5 NONE
    4333 10ED 2 11 X RELREQ
    4333 10ED 3 11 1 NO
    4333 10ED 3 11 2 YES
    4333 10ED 4 0E N SENDCOUNT
    4333 10ED 4 0D T SENDPFX
    4333 10ED 4 14 N SENDSIZE
    4333 10ED 4 06 T SESSNAME
    4333 10ED 4 17 N SESSPRIORITY
    4333 10ED 4 18 N USERAREALEN
    4333 10ED 4 13 T USERID
    4333 10ED 4 11 N MYSTERY-10ED-11-ALWAYS(0)
    4333 10ED 4 12 B MYSTERY-10ED-12-ALWAYS(0,0)
    *
    4555 11CB 1 00 R TYPETERM
    4555 11CB 4 01 T NAME
    4555 11CB 4 02 T GROUP
    4555 11CB 4 1C T DESCRIPTION
    4555 11CB 4 15 B ALTPAGE
    4555 11CB 4 0C B ALTSCREEN
    4555 11CB 4 17 N ALTSUFFIX
    4555 11CB 2 10 X APLKYBD
    4555 11CB 3 10 1 NO
    4555 11CB 3 10 2 YES
    4555 11CB 2 11 X APLTEXT
    4555 11CB 3 11 1 NO
    4555 11CB 3 11 2 YES
    4555 11CB 2 0X X ASCII-OBSOLETE
    4555 11CB 3 0X 1 NO
    4555 11CB 3 0X 2 7
    4555 11CB 3 0X 3 8
    4555 11CB 2 32 X ATI
    4555 11CB 3 32 1 NO
    4555 11CB 3 32 2 YES
    4555 11CB 2 12 X AUDIBLEALARM
    4555 11CB 3 12 1 NO
    4555 11CB 3 12 2 YES
    4555 11CB 2 0E X AUTOCONNECT
    4555 11CB 3 0E 1 NO
    4555 11CB 3 0E 2 YES
    4555 11CB 3 0E 3 ALL-OBSOLETE
    4555 11CB 2 2D X AUTOPAGE
    4555 11CB 3 2D 1 NO
    4555 11CB 3 2D 2 YES
    4555 11CB 2 28 X BACKTRANS
    4555 11CB 3 28 1 NO
    4555 11CB 3 28 2 YES
    4555 11CB 2 39 X BRACKET
    4555 11CB 3 39 1 NO
    4555 11CB 3 39 2 YES
    4555 11CB 2 2A X BUILDCHAIN-OBSOLETE
    4555 11CB 3 2A 1 YES
    4555 11CB 3 2A 2 NO
    4555 11CB 4 0E B CGCSGID
    4555 11CB 2 13 X COLOR
    4555 11CB 3 13 1 NO
    4555 11CB 3 13 2 YES
    4555 11CB 2 14 X COPY
    4555 11CB 3 14 1 NO
    4555 11CB 3 14 2 YES
    4555 11CB 2 33 X CREATESESS
    4555 11CB 3 33 1 NO
    4555 11CB 3 33 2 YES
    4555 11CB 4 0A B DEFSCREEN
    4555 11CB 4 05 T DEVICE
    4555 11CB 2 35 X DISCREQ
    4555 11CB 3 35 1 YES
    4555 11CB 3 35 2 NO
    4555 11CB 2 15 X DUALCASEKYBD
    4555 11CB 3 15 1 NO
    4555 11CB 3 15 2 YES
    4555 11CB 2 30 X ERRCOLOR
    4555 11CB 3 30 1 NO
    4555 11CB 3 30 2 BLUE
    4555 11CB 3 30 3 RED
    4555 11CB 3 30 4 PINK
    4555 11CB 3 30 5 GREEN
    4555 11CB 3 30 6 TURQUOISE
    4555 11CB 3 30 7 YELLOW
    4555 11CB 3 30 ? NEUTRAL
    4555 11CB 2 31 X ERRHILIGHT
    4555 11CB 3 31 1 NO
    4555 11CB 3 31 2 BLINK
    4555 11CB 3 31 3 REVERSE
    4555 11CB 3 31 4 UNDERLINE
    4555 11CB 2 2F X ERRINTENSIFY
    4555 11CB 3 2F 1 NO
    4555 11CB 3 2F 2 YES
    4555 11CB 2 2E X ERRLASTLINE
    4555 11CB 3 2E 1 NO
    4555 11CB 3 2E 2 YES
    4555 11CB 2 16 X EXTENDEDDS
    4555 11CB 3 16 1 NO
    4555 11CB 3 16 2 YES
    4555 11CB 2 2B X FMHPARM
    4555 11CB 3 2B 1 NO
    4555 11CB 3 2B 2 YES
    4555 11CB 2 20 X FORMFEED
    4555 11CB 3 20 1 NO
    4555 11CB 3 20 2 YES
    4555 11CB 2 17 X HILIGHT
    4555 11CB 3 17 1 NO
    4555 11CB 3 17 2 YES
    4555 11CB 2 21 X HORIZFORM
    4555 11CB 3 21 1 NO
    4555 11CB 3 21 2 YES
    4555 11CB 4 19 B IOAREALEN
    4555 11CB 2 18 X KATAKANA
    4555 11CB 3 18 1 NO
    4555 11CB 3 18 2 YES
    4555 11CB 4 0X T LDCLIST
    4555 11CB 2 19 X LIGHTPEN
    4555 11CB 3 19 1 NO
    4555 11CB 3 19 2 YES
    4555 11CB 4 12 T LOGMODE
    4555 11CB 2 29 X LOGMODECOM-OBSOLETE
    4555 11CB 3 29 1 NO
    4555 11CB 3 29 2 YES
    4555 11CB 2 38 X LOGONMSG
    4555 11CB 3 38 1 NO
    4555 11CB 3 38 2 YES
    4555 11CB 2 1A X MSRCONTROL
    4555 11CB 3 1A 1 NO
    4555 11CB 3 1A 2 YES
    4555 11CB 4 1B N NEPCLASS
    4555 11CB 2 1B X OBFORMAT
    4555 11CB 3 1B 1 NO
    4555 11CB 3 1B 2 YES
    4555 11CB 2 2C X OBOPERID
    4555 11CB 3 2C 1 NO
    4555 11CB 3 2C 2 YES
    4555 11CB 2 26 X OUTLINE
    4555 11CB 3 26 1 NO
    4555 11CB 3 26 2 YES
    4555 11CB 4 13 B PAGESIZE
    4555 11CB 2 1C X PARTITIONS
    4555 11CB 3 1C 1 NO
    4555 11CB 3 1C 2 YES
    4555 11CB 2 1D X PRINTADAPTER
    4555 11CB 3 1D 1 NO
    4555 11CB 3 1D 2 YES
    4555 11CB 2 1E X PROGSYMBOLS
    4555 11CB 3 1E 1 NO
    4555 11CB 3 1E 2 YES
    4555 11CB 2 25 X QUERY
    4555 11CB 3 25 1 NO
    4555 11CB 3 25 2 COLD
    4555 11CB 3 25 3 ALL
    4555 11CB 4 11 N RECEIVESIZE
    4555 11CB 2 3D X RECOVNOTIFY
    4555 11CB 3 3D 1 NONE
    4555 11CB 3 3D 2 MESSAGE
    4555 11CB 3 3D 3 TRANSACTION
    4555 11CB 2 3C X RECOVOPTION
    4555 11CB 3 3C 1 SYSDEFAULT
    4555 11CB 3 3C 2 CLEARCONV
    4555 11CB 3 3C 3 RELEASESESS
    4555 11CB 3 3C 4 UNCONDREL
    4555 11CB 3 3C 5 NONE
    4555 11CB 2 34 X RELREQ
    4555 11CB 3 34 1 NO
    4555 11CB 3 34 2 YES
    4555 11CB 2 37 X ROUTEDMSGS
    4555 11CB 3 37 1 ALL
    4555 11CB 3 37 2 NONE
    4555 11CB 3 37 3 SPECIFIC
    4555 11CB 2 40 X RSTSIGNOFF
    4555 11CB 3 40 1 NOFORCE
    4555 11CB 3 40 2 FORCE
    4555 11CB 4 10 N SENDSIZE
    4555 11CB 4 0X T SESSIONTYPE
    4555 11CB 4 08 T MYSTERY-11CB-08-OBSOLETE-ALWAYS(3284)
    4555 11CB 2 0F X SHIPPABLE
    4555 11CB 3 0F 1 NO
    4555 11CB 3 0F 2 YES
    4555 11CB 2 36 X SIGNOFF
    4555 11CB 3 36 1 YES
    4555 11CB 3 36 2 NO
    4555 11CB 3 36 3 LOGOFF
    4555 11CB 2 27 X SOSI
    4555 11CB 3 27 1 NO
    4555 11CB 3 27 2 YES
    4555 11CB 4 06 T TERMMODEL
    4555 11CB 2 23 X TEXTKYBD
    4555 11CB 3 23 1 NO
    4555 11CB 3 23 2 YES
    4555 11CB 2 24 X TEXTPRINT
    4555 11CB 3 24 1 NO
    4555 11CB 3 24 2 YES
    4555 11CB 2 3B X TTI
    4555 11CB 3 3B 2 NO
    4555 11CB 3 3B 1 YES
    4555 11CB 2 3A X UCTRAN
    4555 11CB 3 3A 1 NO
    4555 11CB 3 3A 2 YES
    4555 11CB 3 3A 3 TRANID
    4555 11CB 4 18 N USERAREALEN
    4555 11CB 2 1F X VALIDATION
    4555 11CB 3 1F 1 NO
    4555 11CB 3 1F 2 YES
    4555 11CB 2 22 X VERTICALFORM
    4555 11CB 3 22 1 NO
    4555 11CB 3 22 2 YES
    4555 11CB 2 3E X MYSTERY-11CB-3E-ALWAYS(01)
    4555 11CB 3 3E 1 ONE
    4555 11CB 2 3F X MYSTERY-11CB-3F-ALWAYS(01)
    4555 11CB 3 3F 1 ONE
    *
    4666 123A 1 00 R TERMINAL
    4666 123A 4 01 T NAME
    4666 123A 4 02 T GROUP
    4666 123A 4 1C T DESCRIPTION
    4666 123A 2 0F X ALTPRINTCOPY
    4666 123A 3 0F 1 NO
    4666 123A 3 0F 2 YES
    4666 123A 4 0E T ALTPRINTER
    4666 123A 2 12 X ATTACHSEC
    4666 123A 3 12 1 LOCAL
    4666 123A 3 12 2 IDENTIFY
    4666 123A 3 12 3 VERIFY
    4666 123A 3 12 4 PERSISTENT
    4666 123A 3 12 5 MIXIDPE
    4666 123A 2 10 X AUTINSTMODEL
    4666 123A 3 10 1 NO
    4666 123A 3 10 2 YES
    4666 123A 3 10 3 ONLY
    4666 123A 4 06 T AUTINSTNAME
    4666 123A 4 0X T BINDPASSWORD-OBSOLETE
    4666 123A 2 13 X BINDSECURITY
    4666 123A 3 13 1 NO
    4666 123A 3 13 2 YES
    4666 123A 4 09 N CONSOLE
    4666 123A 4 1E T CONSNAME
    4666 123A 2 0D X INSERVICE
    4666 123A 3 0D 1 YES
    4666 123A 3 0D 2 NO
    4666 123A 4 0C T MODENAME
    4666 123A 4 1D T NATLANG
    4666 123A 4 08 T NETNAME
    4666 123A 4 14 T POOL
    4666 123A 4 0D T PRINTER
    4666 123A 2 0E X PRINTERCOPY
    4666 123A 3 0E 1 NO
    4666 123A 3 0E 2 YES
    4666 123A 4 0B T REMOTENAME
    4666 123A 4 21 T REMOTESYSNET
    4666 123A 4 0A T REMOTESYSTEM
    4666 123A 2 0X X RSTSIGNOFF-OBSOLETE
    4666 123A 3 0X 1 NOFORCE
    4666 123A 3 0X 2 FORCE
    4666 123A 4 1A T SECURITYNAME
    4666 123A 2 15 X SOLICITED
    4666 123A 3 15 1 NO
    4666 123A 3 15 2 YES
    4666 123A 4 15 N TASKLIMIT
    4666 123A 4 17 N TERMPRIORITY
    4666 123A 4 16 T TRANSACTION
    4666 123A 4 07 T TYPETERM
    4666 123A 2 14 X USEDFLTUSER
    4666 123A 3 14 1 NO
    4666 123A 3 14 2 YES
    4666 123A 4 13 T USERID
    4666 123A 4 11 N MYSTERY-123A-11-ALWAYS(0)
    4666 123A 4 12 B MYSTERY-123A-12-ALWAYS(0,0)
    *
    4888 1318 1 00 R TRANCLASS
    4888 1318 4 01 T NAME
    4888 1318 4 02 T GROUP
    4888 1318 4 06 T DESCRIPTION
    4888 1318 4 05 N MAXACTIVE
    4888 1318 4 07 N PURGETHRESH
    *
    5000 1388 1 00 R TRANSACTION
    5000 1388 4 01 T NAME
    5000 1388 4 02 T GROUP
    5000 1388 4 15 T DESCRIPTION
    5000 1388 2 20 X ACTION
    5000 1388 3 20 1 BACKOUT
    5000 1388 3 20 2 COMMIT
    5000 1388 4 14 T ALIAS
    5000 1388 4 1D T BREXIT
    5000 1388 2 18 X CMDSEC
    5000 1388 3 18 1 NO
    5000 1388 3 18 2 ????????
    5000 1388 3 18 3 YES
    5000 1388 2 1E X CONFDATA
    5000 1388 3 1E 1 NO
    5000 1388 3 1E 2 YES
    5000 1388 4 10 N DTIMOUT
    5000 1388 2 13 X DUMP
    5000 1388 3 13 1 YES
    5000 1388 3 13 2 NO
    5000 1388 2 17 X DYNAMIC
    5000 1388 3 17 1 NO
    5000 1388 3 17 2 YES
    5000 1388 2 1D X ISOLATE
    5000 1388 3 1D 1 YES
    5000 1388 3 1D 2 NO
    5000 1388 2 0E X LOCALQ
    5000 1388 3 0E 0 NO
    5000 1388 3 0E 1 YES
    5000 1388 4 1E N OTSTIMEOUT
    5000 1388 4 09 T PARTITIONSET
    5000 1388 4 0C N PRIORITY
    5000 1388 4 08 T PROFILE
    5000 1388 4 06 T PROGRAM
    5000 1388 4 0B T REMOTENAME
    5000 1388 4 0A T REMOTESYSTEM
    5000 1388 2 15 X RESSEC
    5000 1388 3 15 1 NO
    5000 1388 3 15 2 ????????
    5000 1388 3 15 3 YES
    5000 1388 2 10 X RESTART
    5000 1388 3 10 1 NO
    5000 1388 3 10 2 YES
    5000 1388 2 21 X ROUTABLE
    5000 1388 3 21 1 NO
    5000 1388 3 21 2 YES
    5000 1388 4 19 N RUNAWAY
    5000 1388 2 1C X SHUTDOWN
    5000 1388 3 1C 1 DISABLED
    5000 1388 3 1C 2 ENABLED
    5000 1388 2 11 X SPURGE
    5000 1388 3 11 1 NO
    5000 1388 3 11 2 YES
    5000 1388 2 0D X STATUS
    5000 1388 3 0D 1 ENABLED
    5000 1388 3 0D 2 DISABLED
    5000 1388 2 1B X STORAGECLEAR
    5000 1388 3 1B 1 NO
    5000 1388 3 1B 2 YES
    5000 1388 2 1A X TASKDATAKEY
    5000 1388 3 1A 1 USER
    5000 1388 3 1A 2 CICS
    5000 1388 2 19 X TASKDATALOC
    5000 1388 3 19 1 BELOW
    5000 1388 3 19 2 ANY
    5000 1388 4 0X T TASKREQ
    5000 1388 4 16 T TPNAME
    5000 1388 2 12 X TPURGE
    5000 1388 3 12 1 NO
    5000 1388 3 12 2 YES
    5000 1388 2 16 X TRACE
    5000 1388 3 16 1 YES
    5000 1388 3 16 2 NO
    5000 1388 4 18 T TRANCLASS
    5000 1388 4 12 T TRPROF
    5000 1388 4 07 N TWASIZE
    5000 1388 2 1F X WAIT
    5000 1388 3 1F 1 NO
    5000 1388 3 1F 2 YES
    5000 1388 4 1A C WAITTIME
    5000 1388 4 17 T XTPNAME
    5000 1388 4 0F T XTRANID
    5000 1388 2 0F X MYSTERY-1388-0F-ALWAYS(01)
    5000 1388 3 0F 1 ONE
    5000 1388 2 14 X MYSTERY-1388-14-ALWAYS(01)
    5000 1388 3 14 1 ONE
    *
    5500 157C 1 00 R ENQMODEL
    5500 157C 4 01 T NAME
    5500 157C 4 02 T GROUP
    5500 157C 4 06 T DESCRIPTION
    5500 157C 4 08 T ENQNAME
    5500 157C 4 07 T ENQSCOPE
    5500 157C 2 0F X STATUS
    5500 157C 3 0F 1 ENABLED
    5500 157C 3 0F 2 DISABLED
    *
    6000 1770 1 00 R TDQUEUE
    6000 1770 4 01 T NAME
    6000 1770 4 02 T GROUP
    6000 1770 4 06 T DESCRIPTION
    6000 1770 2 16 X ATIFACILITY
    6000 1770 3 16 0
    6000 1770 3 16 1 TERMINAL
    6000 1770 3 16 2 FILE
    6000 1770 3 16 3 SYSTEM
    6000 1770 2 13 X BLOCKFORMAT
    6000 1770 3 13 0
    6000 1770 3 13 1 BLOCKED
    6000 1770 3 13 2 UNBLOCKED
    6000 1770 4 07 N BLOCKSIZE
    6000 1770 4 08 N DATABUFFERS
    6000 1770 4 09 T DDNAME
    6000 1770 2 0F X DISPOSITION
    6000 1770 3 0F 0
    6000 1770 3 0F 1 SHR
    6000 1770 3 0F 2 OLD
    6000 1770 3 0F 3 MOD
    6000 1770 4 0A T DSNAME
    6000 1770 2 10 X ERROROPTION
    6000 1770 3 10 0
    6000 1770 3 10 1 SKIP
    6000 1770 3 10 2 IGNORE
    6000 1770 4 0C T FACILITYID
    6000 1770 4 10 T INDIRECTNAME
    6000 1770 2 11 X OPENTIME
    6000 1770 3 11 0
    6000 1770 3 11 1 INITIAL
    6000 1770 3 11 2 DEFERRED
    6000 1770 2 19 X PRINTCONTROL-OBSOLETE
    6000 1770 3 19 0
    6000 1770 3 19 1 ASA
    6000 1770 3 19 2 MACHINE
    6000 1770 2 12 X RECORDFORMAT
    6000 1770 3 12 0
    6000 1770 3 12 1 FIXED
    6000 1770 3 12 2 VARIABLE
    6000 1770 4 0B N RECORDSIZE
    6000 1770 2 17 X RECOVSTATUS
    6000 1770 3 17 0
    6000 1770 3 17 1 NO
    6000 1770 3 17 2 PHYSICAL
    6000 1770 3 17 3 LOGICAL
    6000 1770 4 11 T REMOTENAME
    6000 1770 4 14 N REMOTELENGTH
    6000 1770 4 12 T REMOTESYSTEM
    6000 1770 2 14 X REWIND
    6000 1770 3 14 0
    6000 1770 3 14 1 LEAVE
    6000 1770 3 14 2 REREAD
    6000 1770 4 13 T SYSOUTCLASS
    6000 1770 4 0D T TRANSID
    6000 1770 4 0E N TRIGGERLEVEL
    6000 1770 2 0E X TYPE
    6000 1770 3 0E 1 EXTRA
    6000 1770 3 0E 2 INTRA
    6000 1770 3 0E 3 INDIRECT
    6000 1770 2 15 X TYPEFILE
    6000 1770 3 15 0
    6000 1770 3 15 1 INPUT
    6000 1770 3 15 2 OUTPUT
    6000 1770 3 15 3 RDBACK
    6000 1770 4 0F T USERID
    6000 1770 2 1A X WAIT
    6000 1770 3 1A 0
    6000 1770 3 1A 1 YES
    6000 1770 3 1A 2 NO
    6000 1770 2 18 X WAITACTION
    6000 1770 3 18 0
    6000 1770 3 18 1 QUEUE
    6000 1770 3 18 2 REJECT
    *
    7000 1B58 1 00 R DB2CONN
    7000 1B58 4 01 T NAME
    7000 1B58 4 02 T GROUP
    7000 1B58 4 06 T DESCRIPTION
    7000 1B58 2 0E X CONNECTERROR
    7000 1B58 3 0E 2 SQLCODE
    7000 1B58 3 0E 1 ABEND
    7000 1B58 4 19 T DB2GROUPID
    7000 1B58 4 07 T DB2ID
    7000 1B58 4 08 T MSGQUEUE1
    7000 1B58 4 09 T MSGQUEUE2
    7000 1B58 4 0A T MSGQUEUE3
    7000 1B58 2 0F X NONTERMREL
    7000 1B58 3 0F 1 YES
    7000 1B58 3 0F 2 NO
    7000 1B58 4 0B B PURGECYCLE
    7000 1B58 2 1A X RESYNCMEMBER
    7000 1B58 3 1A 1 YES
    7000 1B58 3 1A 2 NO
    7000 1B58 4 15 T SIGNID
    7000 1B58 2 10 X STANDBYMODE
    7000 1B58 3 10 3 RECONNECT
    7000 1B58 3 10 2 CONNECT
    7000 1B58 3 10 1 NOCONNECT
    7000 1B58 4 0D T STATSQUEUE
    7000 1B58 4 0E N TCBLIMIT
    7000 1B58 2 11 X THREADERROR
    7000 1B58 3 11 2 N906D
    7000 1B58 3 11 3 N906
    7000 1B58 3 11 1 ABEND
    7000 1B58 2 12 X ACCOUNTREC
    7000 1B58 3 12 3 NONE
    7000 1B58 3 12 4 TASK
    7000 1B58 3 12 2 TXID
    7000 1B58 3 12 1 UOW
    7000 1B58 4 10 T AUTHID
    7000 1B58 2 13 X AUTHTYPE
    7000 1B58 3 13 0
    7000 1B58 3 13 1 USERID
    7000 1B58 3 13 6 OPID
    7000 1B58 3 13 2 GROUP
    7000 1B58 3 13 3 SIGN
    7000 1B58 3 13 4 TERM
    7000 1B58 3 13 5 TX
    7000 1B58 2 14 X DROLLBACK
    7000 1B58 3 14 1 YES
    7000 1B58 3 14 2 NO
    7000 1B58 4 11 T PLAN
    7000 1B58 4 12 T PLANEXITNAME
    7000 1B58 2 16 X PRIORITY
    7000 1B58 3 16 1 HIGH
    7000 1B58 3 16 2 EQUAL
    7000 1B58 3 16 3 LOW
    7000 1B58 4 0F N THREADLIMIT
    7000 1B58 2 17 X THREADWAIT
    7000 1B58 3 17 1 YES
    7000 1B58 3 17 2 NO
    7000 1B58 4 14 T COMAUTHID
    7000 1B58 2 18 X COMAUTHTYPE
    7000 1B58 3 18 0
    7000 1B58 3 18 1 USERID
    7000 1B58 3 18 6 OPID
    7000 1B58 3 18 2 GROUP
    7000 1B58 3 18 3 SIGN
    7000 1B58 3 18 4 TERM
    7000 1B58 3 18 5 TX
    7000 1B58 4 13 N COMTHREADLIMIT
    *
    7500 1D4C 1 00 R DB2ENTRY
    7500 1D4C 4 01 T NAME
    7500 1D4C 4 02 T GROUP
    7500 1D4C 4 06 T DESCRIPTION
    7500 1D4C 4 08 T TRANSID
    7500 1D4C 2 12 X ACCOUNTREC
    7500 1D4C 3 12 3 NONE
    7500 1D4C 3 12 4 TASK
    7500 1D4C 3 12 2 TXID
    7500 1D4C 3 12 1 UOW
    7500 1D4C 4 10 T AUTHID
    7500 1D4C 2 13 X AUTHTYPE
    7500 1D4C 3 13 1 USERID
    7500 1D4C 3 13 6 OPID
    7500 1D4C 3 13 2 GROUP
    7500 1D4C 3 13 3 SIGN
    7500 1D4C 3 13 4 TERM
    7500 1D4C 3 13 5 TX
    7500 1D4C 2 14 X DROLLBACK
    7500 1D4C 3 14 1 YES
    7500 1D4C 3 14 2 NO
    7500 1D4C 4 11 T PLAN
    7500 1D4C 4 12 T PLANEXITNAME
    7500 1D4C 2 16 X PRIORITY
    7500 1D4C 3 16 1 HIGH
    7500 1D4C 3 16 2 EQUAL
    7500 1D4C 3 16 3 LOW
    7500 1D4C 4 0D N PROTECTNUM
    7500 1D4C 4 0F N THREADLIMIT
    7500 1D4C 2 17 X THREADWAIT
    7500 1D4C 3 17 3 POOL
    7500 1D4C 3 17 1 YES
    7500 1D4C 3 17 2 NO
    *
    7900 1EDC 1 00 R DB2TRAN
    7900 1EDC 4 01 T NAME
    7900 1EDC 4 02 T GROUP
    7900 1EDC 4 06 T DESCRIPTION
    7900 1EDC 4 09 T ENTRY
    7900 1EDC 4 08 T TRANSID
    *
    8000 1F40 1 00 R TSMODEL
    8000 1F40 4 01 T NAME
    8000 1F40 4 02 T GROUP
    8000 1F40 4 06 T DESCRIPTION
    8000 1F40 2 0F X LOCATION
    8000 1F40 3 0F 1 AUXILIARY
    8000 1F40 3 0F 2 MAIN
    8000 1F40 4 08 T POOLNAME
    8000 1F40 4 07 T PREFIX
    8000 1F40 2 10 X RECOVERY
    8000 1F40 3 10 1 NO
    8000 1F40 3 10 2 YES
    8000 1F40 4 0A T REMOTEPREFIX
    8000 1F40 4 09 T REMOTESYSTEM
    8000 1F40 2 11 X SECURITY
    8000 1F40 3 11 1 NO
    8000 1F40 3 11 2 YES
    8000 1F40 4 0B T XPREFIX
    8000 1F40 4 0C T XREMOTEPFX
    *
    8500 2134 1 00 R PROCESSTYPE
    8500 2134 4 01 T NAME
    8500 2134 4 02 T GROUP
    8500 2134 4 06 T DESCRIPTION
    8500 2134 2 0F X AUDITLEVEL
    8500 2134 3 0F 1 OFF
    8500 2134 3 0F 2 PROCESS
    8500 2134 3 0F 3 ACTIVITY
    8500 2134 3 0F 4 FULL
    8500 2134 4 05 T AUDITLOG
    8500 2134 4 07 T FILE
    8500 2134 2 0E X STATUS
    8500 2134 3 0E 1 ENABLED
    8500 2134 3 0E 2 DISABLED
    *
    9000 2328 1 00 R REQUESTMODEL
    9000 2328 4 01 T NAME
    9000 2328 4 02 T GROUP
    9000 2328 4 06 T DESCRIPTION
    9000 2328 4 0C T BEANNAME
    9000 2328 4 0B T CORBASERVER
    9000 2328 2 0E X INTFACETYPE
    9000 2328 3 0E 0
    9000 2328 3 0E 1 BOTH
    9000 2328 3 0E 2 HOME
    9000 2328 3 0E 3 REMOTE
    9000 2328 4 0E T INTERFACE
    9000 2328 4 0D T MODULE
    9000 2328 4 0X T OMGINTERFACE-OBSOLETE
    9000 2328 4 0X T OMGMODULE-OBSOLETE
    9000 2328 4 0X T OMGOPERATION-OBSOLETE
    9000 2328 4 0F T OPERATION
    9000 2328 4 0A T TRANSID
    9000 2328 2 0D X TYPE
    9000 2328 3 0D 1 GENERIC
    9000 2328 3 0D 2 CORBA
    9000 2328 3 0D 3 EJB
    *
    9100 238C 1 00 R DOCTEMPLATE
    9100 238C 4 01 T NAME
    9100 238C 4 02 T GROUP
    9100 238C 4 06 T DESCRIPTION
    9100 238C 2 0F X APPENDCRLF
    9100 238C 3 0F 1 YES
    9100 238C 3 0F 2 NO
    9100 238C 4 0D T DDNAME
    9100 238C 4 0C T EXITPGM
    9100 238C 4 08 T FILE
    9100 238C 4 0E T MEMBERNAME
    9100 238C 4 0B T PROGRAM
    9100 238C 4 0A T TDQUEUE
    9100 238C 4 07 T TEMPLATENAME
    9100 238C 4 09 T TSQUEUE
    9100 238C 2 10 X TYPE
    9100 238C 3 10 1 BINARY
    9100 238C 3 10 2 EBCDIC
    *
    9200 23F0 1 00 R TCPIPSERVICE
    9200 23F0 4 01 T NAME
    9200 23F0 4 02 T GROUP
    9200 23F0 4 06 T DESCRIPTION
    9200 23F0 2 1B X ATTACHSEC
    9200 23F0 3 1B 0 NULL
    9200 23F0 3 1B 1 LOCAL
    9200 23F0 3 1B 2 VERIFY
    9200 23F0 2 19 X AUTHENTICATE
    9200 23F0 3 19 0 NO
    9200 23F0 3 19 1 BASIC
    9200 23F0 3 19 2 CERTIFICATE
    9200 23F0 3 19 3 AUTOREGISTER
    9200 23F0 3 19 4 AUTOMATIC
    9200 23F0 4 13 N BACKLOG
    9200 23F0 4 11 T CERTIFICATE
    9200 23F0 4 19 T DNSGROUP
    9200 23F0 2 1A X GRPCRITICAL
    9200 23F0 3 1A 1 NO
    9200 23F0 3 1A 2 YES
    9200 23F0 4 17 T IPADDRESS
    9200 23F0 4 0F N PORTNUMBER
    9200 23F0 2 16 X PROTOCOL
    9200 23F0 3 16 1 IIOP
    9200 23F0 3 16 2 HTTP
    9200 23F0 3 16 3 ECI
    9200 23F0 4 18 N SOCKETCLOSE
    9200 23F0 2 14 X SSL
    9200 23F0 3 14 1 NO
    9200 23F0 3 14 2 YES
    9200 23F0 3 14 3 CLIENTAUTH
    9200 23F0 2 15 X STATUS-I-THOUGHT
    9200 23F0 3 15 1 OPEN
    9200 23F0 3 15 2 CLOSED
    9200 23F0 3 15 3 UNKNOWN
    9200 23F0 4 12 T TRANSACTION
    9200 23F0 4 16 T TSQPREFIX
    9200 23F0 4 0E T URM
    *

    2011年10月21日 星期五

    How to delete VSAM datasets left on the dasd but not in the catalog

    How to delete VSAM datasets left on the dasd but not in the catalog
    //STEPNAME EXEC PGM=IDCAMS
    //SYSPRINT DD SYSOUT=*
    //VOLUME DD DISP=OLD,UNIT=SYSALLDA,VOL=SER=volser
    //SYSIN DD *
    DELETE orphaned.dataset.name -
    VVR - FILE(VOLUME)
    /*
    Replace "volser" with the actual volume serial. Replace "orphaned.dataset.name" with the real dataset name. For a KSDS, this would probably really require TWO DELETE commands. One for the .DATA and one for the .INDEX. The other way is to print the VVDS and find the original catalog name. You would then create a new ICF catalog with that name. You could then do a DEFINE RECATALOG followed by a DELETE. I find using the DELETE VVR to be faster.

    2011年10月7日 星期五

    Nice song

    夏川りみ さようなら ありがとう ~天の風~

    2011年9月11日 星期日

    TSO CONSOLE COMMAND authority

    CONSOLE COMMAND authority is granted using the CONSOLE profile in the TSOAUTH class.

    RDEF TSOAUTH CONSOLE UACC(NONE)
    SETR RACLIST(TSOAUTH)
    PE CONSOLE CLASS(TSOAUTH) ID(...) ACCESS(READ)
    SETR RACLIST(TSOAUTH) REFRESH

    For ACF2 as:
    LID need CONSOLE bit field - Permits you to access the TSO/E CONSOLE facility

    2011年9月3日 星期六

    IBM utility IDCAMS can encrypt and decrypt data sets

    The IBM utility IDCAMS can encrypt and decrypt data sets. The key to be used can be provided as parameter or through a separate DD statement.

    1 - Key provided as parameter
    Encryption
    //ENCRYPT EXEC PGM=IDCAMS
    //SYSIN DD *
    REPRO IFILE(IN01) -
    OFILE(OT01) -
    ENCIPHER( PRIVATEKEY -
    DATAKEYVALUE('ABCDEFGJ') -
    )
    //IN01 DD *
    RECORD 1
    RECORD 2
    RECORD 3
    /*
    //OT01 DD SYSOUT=*,
    // DCB=(LRECL=80,RECFM=FB,BLKSIZE=27920)
    //SYSPRINT DD SYSOUT=*

    Decryption
    //DECRYPT EXEC PGM=IDCAMS,
    // COND=(0,LT)
    //SYSIN DD *
    REPRO IFILE(IN01) -
    OFILE(OT01) -
    DECIPHER( DATAKEYVALUE('ABCDEFGJ') )
    /*
    //IN01 DD DSN=enciphered dataset,
    // DISP=SHR
    //OT01 DD SYSOUT=*
    //SYSPRINT DD SYSOUT=*

    2 - Key provided through DD statement
    Encryption
    //ENCRYPT EXEC PGM=IDCAMS
    //SYSIN DD *
    REPRO IFILE(IN01) -
    OFILE(OT01) -
    ENCIPHER( PRIVATEKEY -
    DATAKEYFILE(KEY) -

    )
    //KEY DD *
    C1C2C3C4C5C6D1
    /*
    //IN01 DD *
    RECORD 1
    RECORD 2
    RECORD 3
    /*
    //OT01 DD SYSOUT=*,
    // DCB=(LRECL=80,RECFM=FB,BLKSIZE=27920)
    //SYSPRINT DD SYSOUT=*

    Decryption
    //DECRYPT EXEC PGM=IDCAMS,
    // COND=(0,LT)
    //SYSIN DD *
    REPRO IFILE(IN01) -
    OFILE(OT01) -
    DECIPHER( DATAKEYFILE(KEY) )
    /*
    //KEY DD *
    C1C2C3C4C5C6D1
    /*
    //IN01 DD DSN=enciphered dataset,
    // DISP=SHR
    //OT01 DD SYSOUT=*
    //SYSPRINT DD SYSOUT=*

    2011年9月2日 星期五

    Define USERID and grant OPERATIONS and SPECIAL Priviledges

    //S1 EXEC PGM=IDCAMS
    //SYSPRINT DD SYSOUT=*
    //SYSIN DD *
    DEFINE ALIAS (NAME(PHIL01) RELATE(USERCAT.TSO))
    //NEWID EXEC PGM=IKJEFT01,DYNAMNBR=75,TIME=100,REGION=6M
    //SYSPRINT DD SYSOUT=*
    //SYSTSPRT DD SYSOUT=*
    //SYSTERM DD DUMMY
    //SYSUADS DD DSN=SYS1.UADS,DISP=SHR
    //SYSLBC DD DSN=SYS1.BRODCAST,DISP=SHR
    //SYSTSIN DD *
    DD 'PHIL01.*'
    DU PHIL01
    AU PHIL01 NAME('PHIL') PASSWORD(PASSW0RD) -
    OWNER(SYS1) DFLTGRP(SYS1) UACC(READ) OPERATIONS SPECIAL -
    TSO(ACCTNUM(ACCT#) PROC(ISPFPROC) JOBCLASS(S) MSGCLASS(X) -
    HOLDCLASS(X) SYSOUTCLASS(X) SIZE(4048) MAXSIZE(0)) -
    OMVS(HOME(/u/phil01) PROGRAM(/bin/sh) UID(0))
    PERMIT ACCT# CLASS(ACCTNUM) ID(PHIL01)
    PERMIT ISPFPROC CLASS(TSOPROC) ID(PHIL01)
    PERMIT DBSPROC CLASS(TSOPROC) ID(PHIL01)
    PERMIT JCL CLASS(TSOAUTH) ID(PHIL01)
    PERMIT OPER CLASS(TSOAUTH) ID(PHIL01)
    PERMIT ACCT CLASS(TSOAUTH) ID(PHIL01)
    PERMIT MOUNT CLASS(TSOAUTH) ID(PHIL01)
    AD 'PHIL01.*' OWNER(PHIL01) UACC(READ) GENERIC
    SETROPTS REFRESH RACLIST(TSOPROC)
    MKDIR '/u/phil01'
    LOGOFF

    Define alias in usercatalog

    //S1 EXEC PGM=IDCAMS
    //SYSPRINT DD SYSOUT=*
    //SYSIN DD *
    DEFINE ALIAS (NAME(PHIL) RELATE(USERCAT.CAT01))

    Using IKJEFT01 to Copy HFS directory to SYSOUT

    //PRINT EXEC PGM=IKJEFT01
    //SYSTSPRT DD SYSOUT=*
    //SYSUT1 DD PATH='/tmp/file.out',PATHOPTS=ORDONLY
    //SYSUT2 DD SYSOUT=*,DCB=(LRECL=121,RECFM=FBA,BLKSIZE=1210)
    //SYSTSIN DD DATA
    OCOPY INDD(SYSUT1) OUTDD(SYSUT2)
    //*

    RACF RESUME and REVOKE a user for a set period of time

    To resume a revoked userid and revoke it again 1 day later. The user's ID
    will be resumed at 00:00 on the 14th and revoked at 00:00 on the 15th.

    ALU ZOSAEP RESUME(01/14/11) REVOKE(01/15/11)

    2011年9月1日 星期四

    PackUnpack a Dataset using TRSMAIN

    (1) Pack
    //STEP01 EXEC PGM=TRSMAIN,PARM=PACK
    //SYSPRINT DD SYSOUT=*
    //INFILE DD DISP=SHR,DSN=FILE.TO.TERSE
    //OUTFILE DD DSN=FILE.TERSED,
    // DISP=(NEW,CATLG),
    // SPACE=(CYL,(5,5)),RECFM=FB,LRECL=1024
    //*

    (2) Unpack
    //STEP01 EXEC PGM=TRSMAIN,PARM=UNPACK
    //SYSPRINT DD SYSOUT=*
    //INFILE DD DISP=SHR,DSN=FILE.PACKED
    //OUTFILE DD DSN=FILE.UNPACKED,
    // DISP=(NEW,CATLG),
    // SPACE=(CYL,(200,50))

    2011年8月27日 星期六

    The history of CICS

    You can find a brief survey of all CICS releases and some interesting side information over here.

    Dynamic Scripting and CICS/TS 4.2

    Are you using the new Dynamic Scripting Feature Pack? If so, you must be running CICS/TS 4.1 … There was only a limited SupportPac for CICS/TS V3, and IBM just announced that the Dynamic Scripting Featue Pack is not supported on CICS/TS 4.2.

    CICS/TS 4.2 supports only 64-bit JVM’s, and the feature pack has environment variables set for using 31-bit JVM’s. We will be watching for an update from IBM soon, as supporting dynamic scripting was listed on the CICS/TS 4.2 Announcment Letter‘s Statement of Direction.

    CICS-L Listserv

    A great source of CICS information and help is the CICS-L Listserv. As of this post, there are over 1800 members, but only a handful of regular contributors. Still, it is a good resource for when you get stuck, and its archive is a great source of info. Since you are reading my blog, I highly recommend that you check out the CICS-L archives and consider subscribing.

    Handy Listserv Commands

    Below is a list of listserv commands you may find handy should you subscribe. All of these commands are issued by sending an email from the email address that is or that you wish to be subscribed to the CICS-L listserv.

    Subscribe: Send a message to LISTSERV@LISTSERV.UGA.EDU, with the following in the text (not the subject): SUBSCRIBE CICS-L

    Temporarily Leave: If, for example, you are going on vacation, send a message to LISTSERV@LISTSERV.UGA.EDU, with the following in the text (not the subject): SET CICS-L NOMAIL

    Rejoin: When you are back from your vacation, send a message to LISTSERV@LISTSERV.UGA.EDU, with the following in the text (not the subject): SET CICS-L MAIL

    Leave Permanently: Send a message to LISTSERV@LISTSERV.UGA.EDU, with the following in the text (not the subject): SIGNOFF CICS-L

    For More Information: Send a message to LISTSERV@LISTSERV.UGA.EDU, with the following in the text (not the subject): HELP or INFO … HELP will have a short help message sent to you, where INFO will have a list of documents that you can order with more extensive help sent to you.


    A few notes on listserv etiquette:

    • Do your homework before asking for help. Be sure you RTFM (read the fine manuals); you don’t want to ask a question and take up others’ time on something that you can look up yourself.
    • Be sure to include a descriptive subject line. E-mails received with no subject line may likely be perceived as spam by an email filter and be deleted before reaching the recipient’s inbox, and those with a concise subject are more likely to be read and/or answered.
    • Don’t just automatically hit “reply”; that will send your response to the entire list. If your response is only of interest to the person who wrote the message you are replying to, then cut their email address and send your message just to them.
    • Never use CICS-L to market a product. Posting independent reviews or help tips on CICS-related products is usually OK, but marketing is not acceptable.
    • Temporarily leave CICS-L when going on vacation. Please be aware that if you use an auto-responder while on vacation without setting your subscription options to NOMAIL, your “out of office” messages will be broadcast to everyone on the list. Most of them do not care and do not wish to receive such messages from other listserv members.

    2011年8月11日 星期四

    Plan Your ESQA Carefully For z/OS Release 11

    In z/OS Release 11 there is a requirement for an additional 1608 bytes of ESQA per address space. To put that in context, I'll do some obvious maths: That's about 1.6MB per 1000 address spaces. It just might be of interest to certain customers I know with thousands of CICS regions in a system, or very large TSO or Batch systems. It's probably not enough to trouble most people. But it reminds me of the importance of having a quick virtual storage check when migrating from one major product release to another.

    There are several ways of checking for this particular one:

    • You can use Healthchecker VSM_SQA_THRESHOLD check.
    • You can process the SMF 78-2 Virtual Storage record.

    The latter would be my favourite as using the SMF 78-2 data to look at usage by time of day can show some useful patterns. You might want to review, for example, whether (E)SQA threatens to overlow into (E)CSA. It's not a big tragedy if that happens but your installation might have views on such things.

    (In case you're unfamiliar with such things the "E" in "(E)SQA" and "(E)CSA" refers to 31-bit areas whereas the names without the "E" refer to 24-bit areas, there being analogues above and below the line for both SQA and CSA.)

    One other thing - in case you think ESQA and ECSA are unimportant having very large such areas can impact on the 31-bit Private Area virtual storage picture.

    Deleting a File That Is “In Use”

    Let’s step away from CICS for a minute and look at an issue that comes up from time to time … You want to delete a file, perhaps an old, uncataloged version of a dataset that is always open – say, SYS1.PROCLIB. If you go to the DSLIST screen in TSO (option 3.4) and enter the dataset name and volume, and try to delete it, you will be informed that the delete failed because the dataset was in use. There is a SYS1.PROCLIB in use, but it’s not the one you are trying to delete. You know what you are doing, but z/OS doesn’t trust you, it seems. (Actually, it’s just that z/OS enqueing is by dataset, not dataset and volume.) The way around this is to “zap” the VTOC to change the name of the dataset to something else that is not in use; then you can delete it.

    To zap the VTOC of the volume containing the dataset to be deleted, first we need to find out exactly where the text specifying that name is. To do so, run the AMASPZAP utility, specifying the ABSTDUMP ALL paramter. Here is some sample JCL to dump the VTOC on volume VOL999:

    //STP1    EXEC PGM=AMASPZAP,REGION=4096K
    
    //SYSLIB DD DISP=OLD,DSN=FORMAT4.DSCB,
    // UNIT=3390,VOL=SER=VOL999,
    // DCB=(KEYLEN=44)
    //SYSPRINT DD SYSOUT=*
    //SYSIN DD *
    ABSDUMPT ALL

    In the output from this utility, find the dataset name that you wish to change. The hardware address (CCHHR) will be shown for it. Enter that, along with the text to be changed, in another AMASPZAP job. Let’s assume that the output showed the VTOC entry to be at CCHHR 0517000507, and all we want to do is change the first letter, S (hex E2), to a Z (hex E9). Here is some sample JCL to accomplish this:

    //STP1    EXEC PGM=AMASPZAP,REGION=4096K
    
    //SYSLIB DD DISP=OLD,DSN=FORMAT4.DSCB,
    // UNIT=3390,VOL=SER=VOL999,
    // DCB=(KEYLEN=44)
    //SYSPRINT DD SYSOUT=*
    //SYSIN DD *
    CCHHR 0517000507 VER 00 E2 REP 00 E9 /*

    Anytime that AMASPZAP is used to change data, be very careful. I usually run such a job with just the VER (verify) statements to ensure that I am hitting the data I expect before adding the REP (replace) statement.

    Finally, the VTOC index needs to be changed to the old “OS” format before the dataset can be deleted. To do this, use the ICKDSF utility:

    //CNVTOS EXEC PGM=ICKDSF
    
    //DD1 DD UNIT=3390,DISP=OLD,
    // VOL=SER=VOL999
    //SYSIN DD *
    BUILDIX DDNAME(DD1) OS NOPURGE

    Find the new dataset name for the file, ZYS1.PROCLIB in this example, and delete it using the DSLIST panel or any other way in which you feel comfortable. Then, convert the index back to “IX” format:

    //CNVTIX EXEC PGM=ICKDSF
    
    //DD1 DD UNIT=3390,DISP=OLD,
    // VOL=SER=VOL999
    //SYSIN DD *
    BUILDIX DDNAME(DD1) IX

    That’s it! Put this little process away into your systems programmer bag of tricks, as it is all but certain you will need it one day.

    2011年8月5日 星期五

    How to SAVE/PRINT SYSLOG to dataset?

    1. Specify SYSLOG write outclass

    CMD==/W L


    2. Start write PROC

    You should have a PROC like below, to write SYSLOG to dataset, usually in your site PROCLIB.

    CMD==/S CPFSLOGW.stepname,,,L

    //IEFPROC EXEC PGM=IASXWR00,PARM='PL'
    //IEFRDER DD DSN=MIB.SYSLOG(+1),
    // DISP=(NEW,CATLG),UNIT=SYSDA,SPACE=(CYL,(90,80),RLSE),
    // DCB=(MIB.SYSLOG.DSCB,BUFNO=5,BUFL=4088)

    3. Wait until this message pop up

    IEF176I WTR L WAITING FOR WORK, CLASS=L, DEST=LOCAL

    4. Stop PROC

    CMD==/P CPFSLOGW.stepname

    2011年5月24日 星期二

    Mainframe System Education -- Wildfire Workshops

    IBM is hosting no-charge workshops about new technologies, such as Java and Web-Sphere. You simply need to contact your IBM rep to have them enroll you. The follow-ing workshops are currently provided, but the list may change:
     CCLX1 - Cloud Computing on zEnterprise and System z
     LXOR6 - Customizing Linux and the Mainframe for Oracle DB Applications
     WBSR7 - WebSphere Application Server for z/OS Version 7
     WMB07 - WebSphere Message Broker for z/OS Version 7 Workshop
     WSW07 - Security Workshop: WebSphere Application Server for z/OS
     ZPRT1 - WebSphere Portal Server on Linux for zSeries Version 6.1
     ZJAV1 - z/OS JAVA Exploiters and JAVA Batch Workshop
     VC001 - Virtualization and Consolidation to Linux of System z
     WMQ07 - WebSphere MQ V7 and WMQ FTE for z/OS Workshop
     ZWPS6 - WebSphere Process Server V6.2 for z/OS Implementation Work-shop

    Here is a direct link to their schedule and descriptions:
    http://www-03.ibm.com/support/techdocs/atsmastr.nsf/WebIndex/PRS1778

    Advanced Technical Skills - YouTube Video Flyer with Hyperlinks

    IBM WebSphere Application Server for z/OS:

    http://www-03.ibm.com/support/techdocs/atsmastr.nsf/WebIndex/PRS4467

    2011年5月9日 星期一

    MySQL notes

    Change a column name:
    alter table tablename change oldname newname varchar (10) ;

    Add a column to an existing table:
    (1)
    ALTER TABLE contacts ADD email VARCHAR(60); to the end of the table
    (2) ALTER TABLE contacts ADD email VARCHAR(60) AFTER name; the new column after a specific column
    (3) ALTER TABLE contacts ADD email VARCHAR(60) FIRST; the new column to be first
    (4) INSERT INTO table1 (col1, col2, col3) SELECT col1, col2, col3 FROM table2 WHERE col4='some value'; Copying rows from one table to another
    (5) INSERT INTO settings_b SELECT * FROM settings_a WHERE account = 'bishop'; Copying rows from one table to another

    2011年5月1日 星期日

    Red Alert for All TCPIP users on z/OS 1.11, 1.12 using the QDIO Accelerator function

    All TCPIP users on z/OS 1.11, 1.12 using the QDIO Accelerator function

    Abstract:
    A logic error in the QDIO Accelerator function in the base TCPIP code of z/OS 1.11, 1.12 can cause potential data loss.

    Description:
    TCPIP users with QDIO Accelerator enabled on z/OS 1.11 or z/OS 1.12 can experience a problem that may result in the potential loss of data when the accelerating path suffers a storage shortage condition. The accelerating path does not present any form of notification that a storage shortage condition has occurred.

    Please see APAR PM37396 for additional details.

    Recommended Actions:
    Disable the QDIO Accelerator function until the ++APAR or corrective PTF can be applied. Please see APAR PM37396 for detailed instructions on disabling QDIO Accelerator.

    If you want to have en overview of all past Red Alerts, then take a look over here. You can also subscribe on that same page so you'll be notified of any future Red Alert.

    2011年4月21日 星期四

    Backuping and restoring a single table using mysqldump

    Backuping a single table from a database
    mysqldump -u -p database_one table_name > /var/www/backups/table_name.sql

    Restoring the table into another database
    mysql -u -p database_two < /var/www/backups/table_name.sql

    2011年4月17日 星期日

    Add a counter column in a query

    Sometimes I’ve needed to add a counter column in a query and I don’t want to add the column with php, so I’ve found this query to put the counter directly in the record set returned out from the query.
    1. set @N = 0;
    2. SELECT @N := @N +1 AS number, name, surname FROM people;

    To use it in PHP scripts you have to use 2 query statements:
    1. mysql_query("set @N = 0;");
    2. $rs = mysql_query("SELECT @N := @N +1 AS number, name, surname FROM people");
    3. while ($r=mysql_fetch_array($rs)) {
    4. echo $r['number']." - ".$r['name']." ".$r['surname'];
    5. }

    2011年4月12日 星期二

    Omegamon/MVS Review

    Following was contributed by (Rey LeClerc) at rey@mass-usa.net

    Omegamon/MVS Review

    Objective: To ensure that adequate security procedures have been established
    over OMEGAMON/MVS.

    General Description: Omegamon/MVS is a system management aid that allows users
    to analyze, control and dynamically modify the MVS/JES system.


    Audit Program

    1. Identify the Omegamon/MVS environment and controls regarding the
    availability and access to powerful Omegamon/MVS commands.

    a. Determine whether powerful Omegamon/MVS commands can be used at this site.
    These commands are provided only when Omegamon/MVS product has been installed
    as APF authorized.

    APF authorization for Omegamon/MVS product can be determined by either:

    - Verifying that the Omegamon/MVS product library is defined as APF
    authorized library.

    - Executing the '.APF' immediate command from an Omegamon/MVS sessions.

    If Omegammon/MVS has been installed without APF authorization, additional
    audit steps are not necessary use the powerful commands in Omegamon/MVS require
    that the product be installed as APF authorized.

    b. Obtain the listing for the Omegamon/MVS security update program -
    'OMSECUP', using the control statements of 'LIST=YES', 'UPDATE=NO'.

    c. To determine the type of security used, note the setting for the 'MODULE =
    ' control statement.

    Where there is no entry for this control statement Omegamon/MVS's internal
    security facility is being used. Alternatively, the Omegamon/MVS external
    security interface is specified here.

    d. Obtain and review the source code for the exit routine defined in the
    'MODULE = 'control statement. Ascertain what impact the active exit routine
    has on security for Omegamon/MVS environment at this location.

    The Omegamon/MVS product is provided with two modules that can be used
    without modification -'OMRACF', for RACF environments, and 'OMACF2', for ACF2
    environments. Because installations can customize these modules, the auditor
    must also review the source code even with 'OMRACF' or 'OMACF2' specified.

    2. Determine whether access to powerful Omegamon/MVS commands are adequately
    controlled and are they provided only on an as needed basis.

    a. Using the listing for the Omegamon/MVS security update program - 'OMSECUP'
    obtained in the previous step, review the command control statement
    specifications set for sensitive Omegamon/MVS commands. These commands include:

    DSA - sets and displays authorization to list or zap non-sharable data-only
    spaces;

    APFU - updates the APF library list;

    CONS - displays the MVS operator console;

    KILL - terminates an address space;

    LPAM - adds, deletes or lists LPA members;

    MCHN - scans common area tables;

    MLIST - displays storage;

    MSCN - scans storage;

    MZAP - modifies storage;

    OCMD - executes MVS or JES2 primary console commands;

    PEEK - collects information about a single address space;

    SCHN - scans data-only spaces;

    SSCN - scans data-only space storage;

    SZAP - modifies the content of data-only space storage;

    XMLS - displays MVS storage;

    XMSC - scans internal table;

    XMZP - modifies storage;

    ALIB - (minor command of the SYS command) - displays the defined APF library
    names.

    MNSW (minor command) - marks job as non-swappable;

    External security can be set to use the Omegamon/MVS security levels to
    specify access authorization (alternatively, external security authorization
    can be established for each individual command, i.e. commands are defined as
    resource profiles/rule sets).

    If either this method, or internal security is being used, identify 'LEVEL'
    settings for each of the sensitive command s - this can be set to either 0, 1,
    2, 3 or DISABLE ( this command is inactive) (the default is 0).

    Minor commands are protected at the major command level unless the MINOR
    control statement is specified; when the MINOR ( and EXTERNAL = YES) control
    statements is specified; when the MINOR (and EXTERNAL = YES) control statement
    is used, the minor command is protected of major commands.

    Note whether external security is activated for each command - 'EXTERNAL = '
    YES or NO must be specified. NO is the default. If external security is
    inactive for a command, Omegamon/MVS internal security facility is used for
    that command.

    Also, consider where the 'AUDIT = ' control statement is used. The default
    is NONE. This feature can be activated to audit the execution of any
    Omegamon/MVS command. When used, either: a message can be sent to the master
    console ( the parameter, WTO); and SMF record can be written (the SMF
    parameter); or both (the BOTH parameter).

    c. For the sensitive OMEGAMON/MVS command authorities (identified in the above
    procedure), evaluate whether access has been provided only to those individuals
    that require it in performing their daily job functions.

    Based on how much security facility is being used (internal or external
    security), review the access control definitions to the powerful Omegamon/MVS
    commands and determine whether access is adequately restricted.

    Perform those procedures below which apply to this environment; if external
    security is used, the performance of this audit step should be coordinated with
    the auditor responsible for reviewing RACF, to avoid duplication and assigned
    to one individual only.

    Review the Omegamon/MVS resource class rules (type OMS) that control these
    commands for which external security is being activated.

    Note: In ACF2 or RACF resource rules can be set up for either individual
    commands, or for Omegamon/MVS command levels (resource rule sets of INITIAL,
    INITIAL0, INITIAL1, INITIAL2, and INITIAL3).

    For Omergamon/MVS internal security, review the command levels and find out
    which individuals have knowledge of each of the Omegamon/MVS passwords.

    Examine the password values and evaluate whether they are set to either
    easily guessed values or to the vendor provided default (i.e. CANDEL1, CANDLE2,
    and CANDLE3). Also verify that the Omegagamon/MVS passwords are changed on a
    periodic basis.

    3. Verify that the Omegamon/MVS product library has adequate data set
    protection.

    a. Obtain the name of the Omegamon/MVS executable libraries. Also, using the
    listing for the Omegamon/MVS security update program - 'OMSECUP', obtained in
    the first audit step, obtain the name of the data set specified on the
    'AUTHLIB=' control statement

    b. Determine the individuals that are directly responsible for maintaining
    the product (i.e. system programmers).

    c. Examine the data set access rules/profiles to ensure that update access to
    the Omegamon/MVS executable library and the AUTHLIB data set are restricted
    only to those individuals directly responsible for maintaining the product.

    MVS Operating System Review

    Following was contributed by (Rey LeClerc) at rey@mass-usa.net

    MVS Operating System Review

    Objectives: To ensure the adequate installation and maintenance of the MVS
    environment.


    Audit Program

    1. Obtain the listings and/or READ access authority for the system parameter
    library:
    SYS1.PARMLIB.

    (Note: Syntax conventions throughout, this audit program uses the strings of
    'xx' or 'x' to refer to member name suffix variables. The actual suffix values
    are defined within SYS1.PARMLIB' members of SYS1.PARMLIB used by the MVS IPL to
    establish the system parameters.

    The actual member suffix is either specified by the computer operator during
    the IPL process (using the SYSP=xx parameter) or defaults to '00' (i.e.
    IEASYS00).

    If multiple members exist, compare them, identify their differences, and
    evaluate their potential impact on system controls.

    2. Identify the system operator consoles and their command capability groups.
    These are defined in the CONSOLxx members of SYS1.PARMLIB (CON=xx parameter of
    IEASYSxx).

    Determine whether these definitions are being overridden by operator
    commands. Operator commands are either entered from the console or executed
    automatically at IPL by the CMMNDxx member(s) from the CMD=xx parameter of
    IEASYSxx.

    Verify the active system console definitions by executing the command DISPLAY
    ACTIVE (or D A) from either a real or emulated (e.g. SDSF or OMEGAMON) operator
    console. Investigate any discrepancies in the active console device names and
    their command groups.

    Locate all active consoles that have been defined with any of the console
    command groups, other than INFO. Evaluate whether there is adequate physical
    security over the console(s) and whether the console command group(s) are
    appropriate for each console's location and assigned function.

    3. Identify the active System Management Facility (SMF) parameter definitions.
    These are provided in the SMFPRMxx member(s) of SYS1.PARMLIB from SMF=xx in the
    IEASYSxx member).

    Key audit concerns include:

    Whether the SMF recording option has been activated. Identify the names of
    the SYS1.MANx files defined by the DSNAME() parameter. Verify the update or
    alter access has not been provided to anyone (review the dataset access control
    lists).

    Identify the active SMF exits. Review the nature and purpose of these exits
    and their impact on the audit and control environment (special attention should
    be given to exits IEFU83 and IEFU84, which can be used to suppress SMF
    recording).

    Which SMF record types are being collected. The important SMF record types
    and their functions are:

    0, 90 System IPL
    7 SMF lost data
    5,35 Job record
    4,34 Program record
    80,81 RACF and CA-Top Secret
    information
    60-69 VSAM information
    30 Combined record (replacing types
    (4,5,34,35)
    14,15,17,18 Dataset information

    Where operators can override SMF recording (the PROMPT parameter).

    The appropriateness of the console logging options defined.

    Whether the JOB WAIT TIME parameter is set to an appropriate length of time.
    This number represents the amount of time (in minutes) that a job will be
    allowed to remain idle before cancellation.

    In addition to the system efficiency concerns, this parameter is where the TSO
    automatic time-out limit for inactive terminals is defined.

    4. Identify the libraries that have been designated as APF authorized. MVS
    requires certain specific system libraries to be APF authorized (either
    consistently or at IPL time) - e.g. SYS1.CMDLIB, SYS1.NUCLEUS, SYS1.LINKLIB,
    SYS1.LPALIB, SYS1.IMAGELIB, SYS1.SVCLIB, and SYS1.VTAMLIB. Also, the
    installation designated other libraries as APF authorized by referencing these
    libraries in:

    - The IEAAPFxx member(s) as defined in the APF=xx parameter of IEASYSxx;

    - The LNKLSTxx member(s) as defined in the LNK=xx parameter of IEASYSxx.

    For MVS/XA systems, the linklist is APF authorized only when the LNKAUTH
    parameter of IEASYSxx is set to LNKLST (this is the default value; the
    alternate setting is APFTAB).

    - The LPALSTxx member(s) as defined in the LPA=xx parameter of IEASYSxx.
    Programs defined in the LPA libraries get APF authorization when moved into LPA
    during the system IPL.

    Review the libraries designated here as APF with the MVS system programmer
    and determine:

    - The nature and purpose of each APF library.

    - Whether there are any duplicate libraries (by function, similar names,
    etc.)

    - The necessity of these libraries (only production system libraries should
    be defined here.)

    - Whether any application program libraries (both test and production) or
    data file
    libraries have been defined here.

    - The individual and suitable backup personnel responsible for maintaining
    each
    of these libraries.

    - The appropriateness of these data set access profiles over the APF defined
    libraries. Access to these libraries should be strictly controlled.

    In addition to the APF authorized libraries, access controls over the page and
    (if defined) swap datasets should be verified (defined as PAGE= and SWAP= in
    IEASYSxx).

    5. Identify the subsystems defined to MVS. These can be found in the IEFSSNxx
    member(s) as defined in the SSN=xx parameter of IEASYSxx. Ascertain whether
    these are active, their nature and purpose and their affect on overall MVS
    controls.

    6. Ensure that the Program Properties Table (PPT) is protected by RACF. The
    PPT is included in the SYS1.NUCLEUS dataset and can be modified by the PPT
    entries in the SCHEDxx member(s) of SYS1.PARMLIB as defined in the SCH=xx
    parameter of IEASYSxx.

    In RACF environments, the DSMON Program Properties Table report provides a
    comprehensive listing of the PPT.

    Identify those entries that are defined to bypass password protection.
    Determine the nature and purpose of these programs, access controls over them,
    and evaluate their appropriateness.

    7. Review the installation defined SVC's (Supervisory Calls) that are supplied
    in the IEASVCxx member(s) as defined in the SVC=xx parameter of IEASYSxx.

    Identify those SVC's that have been defined with the APF=NO.

    Ascertain whether these SVCs perform any sensitive functions.

    If so, obtain the source code for the SVC(s) and make sure that the TESTAUTH
    macro is used to control the use of the SVC(s).

    A number of vendors provide SVCs for their product as load modules only. If
    no source code is available, it is necessary to rely on the integrity of
    established and reputable vendors.

    8. Review access to sensitive MVS utilities and service aids.

    These special programs and the standard libraries that they reside in include:
    ICKDSF in SYS1.LINKLIB
    IAHDASDR in SYS1.LINKLIB
    AMASPZAP (SUPERZAP) in SYS1.LINKLIB
    IEHINITT in SYS1.LINKLIB

    Determine whether these programs reside in their standard libraries. List the
    index of the default libraries (e.g. SYS1.LINKLIB) to verify that the programs
    reside there;

    If these programs reside in the standard system libraries (with universal
    execute access), ascertain whether the data security software is controlling
    execute access to these programs in another manner.

    Examples of such controls include the RACF PROGRAM general resource class.

    Evaluate the adequacy of the controls in place over the execution of special
    programs. Review the established access rules/profiles over these programs.
    Verify that execute access is granted only to the appropriate system
    programming and computer operations personnel.



    * * * * *

    Reference Manual

    MVS/Extended Architecture System Programming Library: Initialization and
    Tuning, GC28-1149-5


    MVS audit program

    Contributed by Pamela Jerskey, Boston College


    1. Run IDCAMS to produce Master Catalog Listing (do not print) - use as reference for
    looking up libraries for audit tests (MVSMSTR.JCL).

    2. Run PDSLIST of SYS1.PARMLIB to produce listing (do not print) - edit as needed for
    workpapers for audit tests (MVSPARM.JCL).

    3. Run PDSLIST of SYS2.PARMLIB to produce listing (do not print) - edit as needed for
    workpapers for audit tests (MVSPARM2.JCL).

    4. Run PDSLIST of SYS1.PROCLIB to produce listing (do not print) - edit as needed for
    workpapers for audit tests (MVSPROCL.JCL).

    5. Obtain RACF DSMON Report and Data Sets Report from Security Administrator.

    I. MASTER CATALOG:

    Review all data sets in the Master Catalog and determine if protected under RACF.

    II. SYS1.NUCLEUS REVIEW:

    A. Run IEHLIST of SYS1.NUCLEUS to review for multiple members
    (MVSNUC.JCL). Check for IEANUCxx where xx = 00, 01, etc.

    B. Determine that SYS1.NUCLEUS is protected under RACF by reviewing RACF
    DSMON Report from Security Administrator.

    III. SYS1.PARMLIB REVIEW:

    A. Edit SYS1.PARMLIB listing for member IEASYS00. Review parameters. Use
    of the ,L option within specified IEASYSxx members is encouraged. The
    IEASYS00 parameters of audit significance and their associated PARMLIB
    members include:

    1. APF=(00) IEAAPFxx
    2. MLPA=(00,L) IEALPAxx
    3. CMD=(00) COMMNDxx
    4. LNK=(00,L) LNKLSTxx
    5. LPA=(00,L) LPALSTxx
    6. MSTRJCL=(00) MSTJCLxx
    7. LNKAUTH=LNKLST LNKLSTxx
    8. SCH=(00,L) SCHEDxx
    9. SMF=(00) SMFPRMxx
    10. SVC=(00,L) IEASVCxx
    11. PAGE=

    Review protection for all datasets listed including PAGE datasets.

    B. Authorized Program Facility (APF) is the primary mechanism for security and
    control within the MVS Operating System. APF is a facility that identifies
    programs authorized to use restricted functions in the MVS Operating System.
    Access to APF libraries should be controlled to prevent unauthorized routines
    from being inserted in these libraries and run in an authorized state. Nonexistent
    data sets or volumes which could allow a user to improperly allocate an authorized
    library.

    Edit SYS1.PARMLIB listing for member PROG00. Run IEHLIST for each data
    set in member IEAPF00 (MVSIEAAP.JCL). Determine:

    1) that all members exist on the volume specified by reviewing the output.
    2) that all members are catalogued by reviewing the Master Catalogue listing.
    3) that no duplicate data sets exist by reviewing IEAPF00.
    4) that all members are RACF protected by reviewing RACF DSMON report
    (Selected Data Sets Report).
    5) Review protection for SYS1.IMAGELIB.

    C. Edit SYS1.PARMLIB listing for member LNKLST00. Run IEHLIST for each
    data set in member LNKLST00 (MVSLKLST.JCL) (volume can be identified by
    searching the Master Catalog). Determine:

    1) that all members exist on the volume specified by reviewing the output.
    2) that no duplicate data sets exist by reviewing LNKLST00.
    3) that all members are RACF protected by reviewing RACF DSMON Report
    (Selected Data Sets Report).

    D. Edit SYS1.PARMLIB listing for member LPALST00. Review as in #C.
    (MVSLPALS.JCL).

    E. Edit SYS1.PARMLIB listing for member IKJTSO00. Review with systems
    programmer the following:
    AUTHCMD NAMES (determine what function each command performs)
    AUTHPGM NAMES (determine what function each program performs)

    IV. SVC REVIEW:

    A. Edit SYS1.PARMLIB listing for member IEASVC00.

    B. Run IEHLIST report for SYS1.LPALIB and all members in LPALST00.
    (MVSLPALB.JCL).

    C. Run AMBLIST of SYS1.NUCLEUS (MVSIEANU.JCL) to identify any user
    added SVCs (IGCxxx where xxx = 200-255).

    D. Using reports from B & C, search listing for members that begin with IGC. Edit
    listing for workpapers. Compare IGC listing to IEASVC00 to determine user
    added SVCs and if they are active (Note: IGCxxx where xxx = 200-255 are user
    added SVCs).

    E. Run IEHLIST for SYS1.SVCLIB (MVSSVCLB.JCL). Identify member names
    that begin with NSL. Discuss with system programmer.

    F. Determine that SYS1.SVCLIB is protected under RACF by reviewing RACF
    DSMON Report (Selected Data Sets Report).

    G. From IEASVC00, APF(NO), the default, allows any user to invoke the SVC.
    Ensure that any SVC available to all users (APF(NO)) respects system integrity
    requirements. Discuss with systems programmer.

    V. EXIT REVIEW:

    JES EXITS:

    A. Edit SYS1.PROCLIB for member names JESM and JES. Locate HASPPARM
    DSN. Edit SYS2.PARMLIB for JESMPARM and JES2PARM. Locate each
    exit (EXITnn). Edit listing for workpapers. Discuss the function of each exit with
    system programmer.

    SMF EXITS:

    A. Edit SYS1.PARMLIB listing for member SMFPRM00. Ensure that the member
    that specifies the SMF is ACTIVE. Review the NOPROMPT option.
    NOPROMPT offers the operator no choice in the parameters selected.
    NOPROMPT is the most secure. List exits. Identify exits in SYS1.LPALIB from
    IEHLIST report (see Audit Program IIIB.) (IEFU......). Run AMBLIST for all
    exits in SMFPRM00 (MVSDUMP.JCL). Determine:

    1) if exit is used.
    2) if used, what function it is performing.
    3) if used, last linkage date.
    4) length.

    VI. PROGRAM PROPERTIES TABLE REVIEW:

    Edit SYS1.PARMLIB listing for member SCHED00. Obtain DSMON Program
    Properties Table Report from Security Administrator. Review programs that
    bypass password protection and have a system key=yes from DSMON Report
    (from SCHED00, have NOPASS and Key 0-7). Determine what these programs
    are doing. Discuss with system programmer.

    VII. VTAM REVIEW:

    A. Edit SYS1.PROCLIB listing for member NET. Identify VTAMLST DSN and
    VTAMLIB DSN. Run PDSLIST of SYS2.ACFVTAM.VTAMLST (dsn of
    VTAMLST) to product listing (do not print) - edit as needed for workpapers for
    audit tests (MVSVTML.JCL). Review Start-Up VTAM. Review ATCSTR00
    to identify which member contains start-up vtam members. Review ATCCON00
    (Start-up VTAM). Search and edit entire listing for:

    1) AUTH=(ACQ, Can acquire other "LU"
    or PASS Can pass LU to another application
    or SPO, PPO) Application can issue net commands

    2) AUTHEXIT=YES Application exits get control in supervisor
    state whether or not authorized.

    Identify which members are in Start-up VTAM and which members are not.
    Review any of these conditions with system programmer. Discuss how
    these members are defined to RACF.

    VIII. JES REVIEW:

    A. Determine to what level SYS1.HASPACE is protected under RACF.
    SYS1.HASPACE is the data set for all spooled input and output. Review with
    systems programmer why "alter" level is needed by systems programmers (only
    JES needs access).

    B. Edit SYS2.PARMLIB for JES2PARM. Locate SPOOL (spooldef) and
    CHECKPOINT (ckptdef) volumes. Determine what level of protection exists
    under RACF. Review the following parameters:
    COMMAND=(execute, ignore or verify). Ignore or verify is best. The console
    command allows operators to change JES2 parameters.
    OFFLOAD= This should not be turned on. It is a non-standard way of
    interrupting data flow in JES2.
    RMT1
    RMT2, etc. This is remote JES. Check for passwords. How often are they
    changed?



    MVSMSTR.JCL

    //AUDIT JOB,CLASS,MSGCLASS,
    // USER=xxxxxx,PASSWORD=xxxxxxx
    /*ROUTE PRINT
    //*
    //* THIS PROGRAM IS USED FOR AUDITING MVS TO ACCESS
    //* THE MASTER CATALOG
    //*
    //SS1 EXEC PGM=IDCAMS
    //SYSPRINT DD SYSOUT=*
    //SYSIN DD *
    LISTC ALL


    MVSPARM.JCL

    //AUDIT JOB,CLASS,MSGCLASS,
    // USER=xxxxx,PASSWORD=xxxxxx
    /* ROUTE PRINT
    //S1 EXEC PGM=PDSLIST,PARM='EJECT,INDEX'
    //* PARM= SPACE (SKIP A LINE) - EJECT (A PAGE) - ALPHA (LIST BY NAME)
    //* INDEX (INDEX IT) - UPDTE (IEBUPDTE CONTROL)
    //SYSPRINT DD SYSOUT=*,OUTLIM=0
    //OUTPDS DD SYSOUT=(B,,CHAR),DCB=BLKSIZE=80
    //SYSUT9 DD DSN=SYS1.PARMLIB,DISP=SHR
    //SYSIN DD *
    //


    MVSPARM2.JCL

    //AUDIT JOB,CLASS,MSGCLASS,
    // USER=xxxxxx,PASSWORD=xxxxxxx
    /* ROUTE PRINT
    //S1 EXEC PGM=PDSLIST,PARM='EJECT,INDEX'
    //* PARM= SPACE (SKIP A LINE) - EJECT (A PAGE) - ALPHA (LIST BY NAME)
    //* INDEX (INDEX IT) - UPDTE (IEBUPDTE CONTROL)
    //SYSPRINT DD SYSOUT=*,OUTLIM=0
    //OUTPDS DD SYSOUT=(B,,CHAR),DCB=BLKSIZE=80
    //SYSUT9 DD DSN=SYS2.PARMLIB,DISP=SHR
    //SYSIN DD *
    //


    MVSPROCL.JCL

    //AUDIT JOB,CLASS,MSGCLASS,
    // USER=xxxxxxxx,PASSWORD=xxxxxxxx
    /*ROUTE PRINT
    //S1 EXEC PGM=PDSLIST,PARM='EJECT,INDEX'
    //* PARM= SPACE (SKIP A LINE) - EJECT (A PAGE) - ALPHA (LIST BY NAME)
    //* INDEX (INDEX IT) - UPDTE (IEBUPDTE CONTROL)
    //SYSPRINT DD SYSOUT=*,OUTLIM=0
    //OUTPDS DD SYSOUT=(B,,CHAR),DCB=BLKSIZE=80
    //SYSUT9 DD DSN=SYS1.PROCLIB,DISP=SHR
    //SYSIN DD *
    //


    MVSNUC.JCL

    //AUDIT JOB,CLASS,MSGCLASS,
    // USER=xxxxxxx,PASSWORD=xxxxxxx
    /*ROUTE PRINT
    //*
    //* This program is used to review sys1.nucleus members for mvs audit
    //*
    //SS1 EXEC PGM=IEHLIST
    //SYSPRINT DD SYSOUT=*
    //DD1 DD DSNAME=SYS1.NUCLEUS,DISP=SHR
    //SYSIN DD *
    LISTPDS DSNAME=SYS1.NUCLEUS,FORMAT


    MVSIEAAP.JCL

    //AUDIT JOB,CLASS,MSGCLASS,
    // USER=xxxxxxx,PASSWORD=xxxxxxx
    /*ROUTE PRINT
    //*
    //* THIS PROGRAM IS USED TO LIST MEMBERS IN IEAAPF TO DETERMINE
    //* IF ALL MEMBERS EXIST; ALL MEMBERS ARE CATALOGUED, ETC.
    //*
    //SS1 EXEC PGM=IEHLIST
    //SYSPRINT DD SYSOUT=*
    //DD1 DD UNIT=SYSALLDA,VOL=SER=(volume name),DISP=SHR
    //DD2 DD UNIT=SYSALLDA,VOL=SER=(volume name),DISP=SHR
    //DD3 DD UNIT=SYSALLDA,VOL=SER=(volume name),DISP=SHR
    //SYSIN DD *
    LISTPDS DSNAME=(ieaapf file name),VOL=SYSALLDA=(volume name),FORMAT
    LISTPDS DSNAME=(ieaapf file name),VOL=SYSALLDA=(volume name),FORMAT
    (list all ieaapf file names in each volume)


    MVSLKLST.JCL

    //AUDIT JOB,CLASS,MSGCLASS,
    // USER=xxxxxxx,PASSWORD=xxxxxxx
    /*ROUTE PRINT
    //*
    //* THIS PROGRAM IS USED TO LIST MEMBERS IN LNKLST00 TO DETERMINE
    //* IF ALL MEMBERS EXIST; ALL MEMBERS ARE CATALOGUED, ETC.
    //*
    //SS1 EXEC PGM=IEHLIST
    //SYSPRINT DD SYSOUT=*
    //DD1 DD UNIT=SYSALLDA,VOL=SER=(volume name),DISP=SHR
    //DD2 DD UNIT=SYSALLDA,VOL=SER=(volume name),DISP=SHR
    //DD3 DD UNIT=SYSALLDA,VOL=SER=(volume name),DISP=SHR
    //SYSIN DD *
    LISTPDS DSNAME=(lnklst file name),VOL=SYSALLDA=(volume name),FORMAT
    LISTPDS DSNAME=(lnklst file name),VOL=SYSALLDA=(volume name),FORMAT
    (list all lnklst file names in each volume)


    MVSLPALS.JCL

    //AUDIT JOB,CLASS,MSGCLASS,
    // USER=xxxxxxx,PASSWORD=xxxxxxx
    /*ROUTE PRINT
    //*
    //* THIS PROGRAM IS USED TO LIST MEMBERS IN LPALST00 TO DETERMINE
    //* IF ALL MEMBERS EXIST; ALL MEMBERS ARE CATALOGUED, ETC.
    //*
    //SS1 EXEC PGM=IEHLIST
    //SYSPRINT DD SYSOUT=*
    //DD1 DD UNIT=SYSALLDA,VOL=SER=(volume name),DISP=SHR
    //DD2 DD UNIT=SYSALLDA,VOL=SER=(volume name),DISP=SHR
    //DD3 DD UNIT=SYSALLDA,VOL=SER=(volume name),DISP=SHR
    //SYSIN DD *
    LISTPDS DSNAME=(lpalst file name),VOL=SYSALLDA=(volume name),FORMAT
    LISTPDS DSNAME=(lpalst file name),VOL=SYSALLDA=(volume name),FORMAT
    (list all lpalst file names in each volume)


    MVSIEANU.JCL

    //AUDIT JOB,CLASS,
    // USER=xxxxx,PASSWORD=xxxxx
    /*ROUTE PRINT
    //SS1 EXEC PGM=AMBLIST
    //SYSPRINT DD SYSOUT=*
    //SYSLIB DD DSN=SYS1.NUCLEUS,DISP=SHR
    //NUCLEUS DD DSN=SYS1.NUCLEUS,DISP=SHR
    //SYSIN DD *
    LISTIDR DDN=NUCLEUS,OUTPUT=IDENT,MODLIB,MEMBER=IEANUC01
    LISTLOAD DDN=SYSLIB,MEMBER=IEANUC01,OUTPUT=XREF


    MVSSVCLB.JCL

    //AUDIT JOB,CLASS,
    // USER=xxxxxx,PASSWORD=xxxxxxxx
    /*ROUTE PRINT
    //SS1 EXEC PGM=IEHLIST
    //SYSPRINT DD SYSOUT=*
    //DD1 DD DISP=SHR,UNIT=SYSALLDA,VOL=SER=(volume name)
    //SYSIN DD *
    LISTPDS VOL=SYSALLDA=(volume name),DSNAME=SYS1.SVCLIB


    MVSDUMP.JCL

    //AUDIT JOB,CLASS,
    // USER=xxxxxx,PASSWORD=xxxxxxxx
    /*ROUTE PRINT
    //SS1 EXEC PGM=AMBLIST
    //SYSPRINT DD SYSOUT=*
    //LPALIB DD DSN=SYS1.LPALIB,DISP=SHR
    //SYSIN DD *
    LISTIDR DDN=LPALIB,OUTPUT=IDENT,MEMBER=IEFU83
    LISTIDR DDN=LPALIB,OUTPUT=IDENT,MEMBER=IEFU84
    LISTIDR DDN=LPALIB,OUTPUT=IDENT,MEMBER=IEFACTRT
    LISTIDR DDN=LPALIB,OUTPUT=IDENT,MEMBER=IEFUJV
    LISTIDR DDN=LPALIB,OUTPUT=IDENT,MEMBER=IEFUSI
    LISTIDR DDN=LPALIB,OUTPUT=IDENT,MEMBER=IEFUJI
    LISTIDR DDN=LPALIB,OUTPUT=IDENT,MEMBER=IEFUTL
    LISTIDR DDN=LPALIB,OUTPUT=IDENT,MEMBER=IEFU29
    LISTIDR DDN=LPALIB,OUTPUT=IDENT,MEMBER=IEFUJP
    LISTIDR DDN=LPALIB,OUTPUT=IDENT,MEMBER=IEFUSO
    LISTIDR DDN=LPALIB,OUTPUT=IDENT,MEMBER=IEFUAV
    LISTIDR DDN=LPALIB,OUTPUT=IDENT,MEMBER=IEFU85
    LISTLOAD DDN=LPALIB,MEMBER=IEFU83,OUTPUT=XREF
    LISTLOAD DDN=LPALIB,MEMBER=IEFU84,OUTPUT=XREF
    LISTLOAD DDN=LPALIB,MEMBER=IEFACTRT,OUTPUT=XREF
    LISTLOAD DDN=LPALIB,MEMBER=IEFUJV,OUTPUT=XREF
    LISTLOAD DDN=LPALIB,MEMBER=IEFUSI,OUTPUT=XREF
    LISTLOAD DDN=LPALIB,MEMBER=IEFUJI,OUTPUT=XREF
    LISTLOAD DDN=LPALIB,MEMBER=IEFUTL,OUTPUT=XREF
    LISTLOAD DDN=LPALIB,MEMBER=IEFU29,OUTPUT=XREF
    LISTLOAD DDN=LPALIB,MEMBER=IEFUJP,OUTPUT=XREF
    LISTLOAD DDN=LPALIB,MEMBER=IEFUSO,OUTPUT=XREF
    LISTLOAD DDN=LPALIB,MEMBER=IEFUAV,OUTPUT=XREF
    LISTLOAD DDN=LPALIB,MEMBER=IEFU85,OUTPUT=XREF


    MVSVTML.JCL

    //AUDIT JOB,CLASS,MSGCLASS,
    // USER=xxxxxx,PASSWORD=xxxxxxxx
    /*ROUTE PRINT
    //S1 EXEC PGM=PDSLIST,PARM='EJECT,INDEX'
    //* PARM= SPACE (SKIP A LINE) - EJECT (A PAGE) - ALPHA (LIST BY NAME)
    //* INDEX (INDEX IT) - UPDTE (IEBUPDTE CONTROL)
    //SYSPRINT DD SYSOUT=*,OUTLIM=0
    //OUTPDS DD SYSOUT=(B,,CHAR),DCB=BLKSIZE=80
    //SYSUT9 DD DSN=SYS2.ACFVTAM.VTAMLST,DISP=SHR
    //SYSIN DD *
    //


    ACF2 auditor checklists part 2

    Following was contributed by (Rey LeClerc) at rey@mass-usa.net

    Part 2 of 2

    other fields which can be used to provide authentication of User-IDs not using
    passwords.

    They are:
    PROGRAM - a certain program is issuing the job and inserting a User-ID.
    SUBAUTH - the program submitting the job must be an APF authorized
    program. This assumes APF authorization is adequately controlled, because if
    it is not, ACF2 cannot be relied upon.
    SOURCE - the physical location the job is submitted from may be an
    appropriate control.

    The most desirable control is to use a PROGRAM and SUBAUTH. The program may be
    masked, provided the mask is specific enough not to include programs which
    should not be used. PROGRAM without SUBAUTH is practically useless, because
    any program can be renamed or copied to a personal library to be used for job
    submission. SUBAUTH without PROGRAM is equally ineffective, since there are
    many APF authorized programs which could be used for job submission (i.e.
    IEBCOPY, WAAPSPLT).

    SOURCE could be a good control, provided the SOURCE is a physically secured
    location. SOURCE is only as good as the physical controls to that source. An
    example of a situation where SOURCE may be practical would be an RJE station,
    where jobs submitted from a single line or terminal is physically separate from
    the rest of the system. Some examples of poor controls would be INTRDR or
    STCINRDR, the system internal readers. These are the sources used for by all
    batch jobs or started tasks for submitting other jobs. These can be used by
    any job or STC and should never be considered a controlled SOURCE. Another
    commonly misused source is READER1. This is a card reader, normally in the
    computer room. Anyone with physical access to this reader can initiate jobs on
    it.

    Review a listing of User-IDs with RESTRICT to ensure that controls are adequate
    to ensure on valid usage of the User-IDs. Note that User-IDs used for STC
    although they do not have a password, do not need the RESTRICT attribute, and
    if it exists, it is ignored. Pay special attention to the programs specified.
    The program should insert the User-ID in the JCL based on some pre-defined
    criteria. It should not allow the user to insert his own /*LOGONID card.

    The listing can be generated by using an ACFRPTSL against the backup files as
    follows:
    IF(NOT STC AND RESTRICT AND NOT CANCEL AND NOT SUSPEND)
    SF(SUBAUTH,PROGRAM,SOURCE)


    3. Using the "LIST IF" command or the SL report, determine who has the
    SECURITY or the ACCOUNT privilege. These powers should be restricted to 2 or 3
    persons, or else limited by the person's DSNSCOPE, UIDSCOPE, or SCPLIST if the
    unit has decentralized administration. Systems programmers should never have
    either attribute. Verify users with SECURITY and/or ACCOUNT privileges are
    responsible for daily administration of Data Security.

    SECURITY privilege allows the User-ID to change certain fields of the User-ID
    record, make changes to the dataset rules and change the information storage
    database. SECURITY privilege does not allow adding or deleting User-IDs.

    ACCOUNT privilege allows the User-ID to change certain fields of the User-ID
    record and allows for adding and deleting User-IDs on the User-ID database.
    ACCOUNT privilege does not allow for writing rules or changing info storage.

    Generally, Data Security users are given both privileges to perform their job
    function. These privileges can be given to users outside of Data Security
    provided they are adequately controlled to limit the changes made to only their
    scope of responsibility. A SCPLIST reference can be attached to any user with
    SECURITY or ACCOUNT privilege. The SCOPE includes a limitation of LOGONIDs,
    UIDs, DATASET rules, and/or INFO STORAGE records. Any combination of these can
    be used to limit what a user can do with these privileges.

    Make sure that all User-IDs with these privilege belong to users with a data
    security responsibility. Also ensure that any users outside of Data Security
    have been appropriately scoped to limit their privilege.


    4. Using the "LIST IF" command or the SL report, determine which User-IDs
    have the NON-CNCL attribute. No more than 3 or 4 such users should be found,
    and these should be used for emergency purposes (e.g. started task ids) only.
    In addition, their usage should be reviewed. Determine how NON-CNCL and
    READALL is being used. These should not be used except on an emergency basis
    only. Emphasis should be placed on evidence of review of activity of these
    privileges rather than on numbers.

    ACF2 has a couple of privileges which can override the recommendation to
    prevent an access due to a violation. The privileges have in the past been
    abused and distributed without consideration to what the significance of the
    privileges granted are.

    The NON-CNCL privilege is the most powerful of these privileges. It tells ACF2
    that regardless of the violation, no access is to be prevented. A log is
    generated for each situation which would have caused a violation, but no
    prevention will ever be invoked.

    Although this is normally only considered in the dataset environment, any
    resource validation such as CICS or IMS transaction, will also be allowed and
    logged.

    Similarly, the READALL privilege grants the user the authority to open any file
    for READ or EXEC regardless of the rules. This privilege also logs any use of
    datasets which would not have been allowed by rules. READALL, unlike NON-CNCL
    privilege only applies to dataset rules. The use of READALL by any user with
    NON-CNCL privilege, should never be criticized. The advantage of giving a user
    with the NON-CNCL privilege, the READALL privilege to, is that the resulting
    logs can be split based on what was done. If the access was a READ, the report
    would describe the reason as, READALL, while all others would be NON-CNCL.
    This would provide for more emphasis being placed on the more significant logs
    (changes).

    One more privilege which should be considered is the SECURITY privilege.
    Security is described by ACF2 as being able to change any rule or User-ID and
    as such could give itself access to any dataset or resource without external
    intervention or approval. For this reason, early releases of ACF2 gave the
    SECURITY privilege a power equal to NON-CNCL. Some time later, requests were
    made to control SECURITY so that it had to follow the rules like any other id.
    The rational behind this was based on the idea that SECURITY officers can make
    mistakes like anyone else. By having to follow the rules, any inappropriate
    access made by the SECURITY officer, had to be intentional and an overt action
    had to be made, but any accidental access would be prevented as normal. To do
    this a new privilege was added, the RULE-VLD privilege, which forced SECURITY
    to be like any other id where dataset access was involved. Unfortunately,
    SECURITY is still NON-CNCL implicitly for any other resource.

    It is important to review the justification for and the use of NON-CNCL,
    SECURITY without RULE-VLD and READALL. These privileges must be approved by
    the data center manager, the users' manager and the system owner. The reason
    should be specific. The privilege should seldomly be on the primary User-ID
    and reports generated by their use should be reviewed daily to ensure
    compliance with the defined need for the privilege. There should be evidence
    that the reports are run on a timely basis and that they are reviewed by the
    user's manager for appropriateness. A periodic cursory review should also be
    performed by Data Security to ensure that the intended purpose of the privilege
    is not being abused.


    5. Using the "LIST IF" command or the SL report, examine all User-ID
    records to determine that no user has a "SYS1" prefix, as this would allow them
    complete access to all system files, including ACF2 files. Similarly determine
    that no user has asterisks specified. Review User-IDs with a PREFIX different
    from the User-ID. Verify that no user has a PREFIX of "********", "ACF*" or
    "SYS*".

    The PREFIX field is one of the most powerful privileges available to ACF2.
    This field describes to ACF2 the high-level index which you own. ACF2 will not
    validate any access to datasets which begin with a high-level equal to the
    high-level defined in your PREFIX. No logging will be generated. No
    violations will occur, regardless of the rules.

    This field is of concern, because it can contain a mask. If the mask is all
    "*" then the User-ID is NON-CNCL with NO logging. If the mask is for some
    sensitive datasets, such as ACF* or SYS*, the integrity of the system is in
    question. If the mask is for anything other than the User-ID, it should be
    closely examined, to identify what can be accessed without rules.

    Some valid reasons for the mask to be different from the User-ID include:
    o the user has 2 User-IDs and the PREFIX points the second to the
    datasets generated by the first;
    o the PREFIX may be blank, indicating that nothing is OWNED by this
    User-ID. Rules are required for all access;
    o groups of users may share a single high-level, but don't want the
    overhead of rule writing and logging.

    The listing can be generated by using an ACFRPTSL against the backup files as
    follows:
    IF(PREFIX NE LID AND PREFIX NE " ") SF(PREFIX)


    6. Using the "LIST IF" command or the SL report, determine which User-IDs
    have the RESTRICT attribute. Verify that these User-IDs have SUBAUTH
    specified, as well as, the PGM and LIB parameters, to ensure that their usage
    is via an APF-authorized program from a controlled library.


    7. Using the "LIST IF" command or the SL report, examine which users have
    the REFRESH attribute. These users are allowed to dynamically activate GSO
    options. Determine how the REFRESH attribute is controlled. User-IDs with
    this privilege may have their password exposed when using the privilege.

    The REFRESH privilege is used to cause changes to the GSO records to be invoked
    dynamically, without requiring an IPL. The privilege does not grant any
    authority to change any parameters, simply to invoke parameters already
    defined. When a modify command is issued, the system requests a User-ID and
    password be entered on the console issuing the modify command.

    ACF2 then verifies the User-ID has the REFRESH attribute before allowing the
    modify to be performed.

    The main concern that we should have with the REFRESH privilege is that it can
    invoke any GSO record which has been previously defined. So if there is a
    record with a MODE of quiet, any user with the REFRESH capability could invoke
    that GSO record dynamically.

    The secondary concern with REFRESH is that the User-ID and password are entered
    in a displayable field and can be seen by anyone in the vicinity. The password
    for User-IDs with REFRESH privilege are more subject to being observed than any
    other password, because when entered, it cannot be entered in a non-display
    field. Any User-ID whose password cannot be relied upon should never have any
    powerful privileges attached to them.

    For these reasons, the most practical way of controlling the REFRESH privilege
    is to assign it to a single User-ID and given to the Operations manager to
    control. It's his system and REFRESH controls when ACF2 operating parameters
    are changed. The id should have NO other privileges, such as NON-CNCL,
    SECURITY, TAPE-BLP, or READALL. The id should not have any other system
    authority, such as TSO, IMS, CICS, or JOB. The UID should not match any file
    access (i.e.. the UID fields should all be blank).

    A listing can be generated by using an ACFRPTSL against the backup files as
    follows:
    IF(REFRESH AND NOSUSPEND AND NOCANCEL) SF(REFRESH,UID)


    8. Using the "LIST IF" command or the SL report, examine all User-ID
    records to determine which users have the MAINT attribute. These users are
    allowed to execute any program defined in MAINT GSO.


    9. Using the "LIST IF" command, examine all User-ID records to determine
    which users have the TAPE-BLP attribute. These users are allowed to a tape
    data set without rule verification. Determine if TAPE-BLP is used to gain
    access to tape files. Only the Tape librarian has an ongoing need for this
    privilege.

    The ability to use LABEL=(,BLP) is controlled by ACF2 to ensure that only users
    with this privilege can use the privilege. The TAPE-BLP privilege is assigned
    to individuals. Earlier in this handbook, the BLPPGM was described. In this
    area, the individual's authority to use BLP to access any tape, using any
    program is reviewed.

    >From a listing of all User-IDs with the TAPE-BLP privilege, determine the
    appropriateness of the privilege, by referring to the authorization maintained
    by data security. Each occurrence of the privilege is to be approved by the
    Operations Manager of the data center, with a reason for its need.

    In most facilities, the Tape Librarian has a justifiable need for the
    privilege. Often the Software groups, especially, the Tech Support groups feel
    they need the privilege because they are constantly receiving files from
    vendors and have no way of knowing the filenames on these tapes. The files
    received from the vendor should be quite limited and may be handled with a
    short term request for TAPE-BLP privilege.

    In most cases, TAPE-LBL, which is a limited TAPE-BLP privilege will suffice.
    TAPE-LBL allows the user to use BLP, but if the label is a Standard label, will
    validate the user's authority to use the file anyway.

    The listing can be generated by using an ACFRPTSL against the backup files as
    follows:
    IF(TAPE-BLP AND NOSUSPEND AND NOCANCEL) SF(TAPE-BLP,NON-CNCL,UID)


    10. Determine the appropriateness of users with the OPERATOR privilege. This
    privilege on its own has little implications, but many products like SDSF, and
    JES2 use the OPERATOR authority to give higher authority within their product.

    Originally, OPERATOR privilege was a TSO attribute which allowed users to issue
    Status commands and Cancel commands. Very little significance could be
    attached to users with this privilege. Determine the appropriateness of the
    user's with OPERATOR privilege. Verify that each occurrence of the privilege
    has been properly authorized. Verify that all users with OPERATOR are system
    software people, or have data center operations responsibility. Note that
    there is no limitation as to what can be canceled by the users. Messages
    showing the cancellation of jobs do not include the User-ID of who did the
    cancel.

    If a review of SDSF and/or JES2 is not being conducted during this audit, it is
    important to evaluate the additional privilege provided by these products.
    Both products usually give any user with OPERATOR full console authority, with
    the ability to issue most console commands, including starting started tasks
    and issuing modify commands. These are some of the main reasons for limiting
    physical access to the computer room in the past. By requiring people in the
    software groups be escorted in the Computer Room, the Operations manager has
    control of commands issued on the console which could effect the operation of
    his system.

    In the near future NetView will have similar capabilities. Some of these may
    not even need the user to have OPERATOR!

    The listing can be generated by using an ACFRPTSL against the backup files as
    follows:
    IF(OPERATOR AND NOSUSPEND AND NOCANCEL) SF(OPERATOR)


    11. Generally, IMS and CICS User-IDs have no need to run in batch. Review the
    User-IDs defined as IMS or CICS User-IDs with the JOB attribute. These
    User-IDs can be used in batch jobs if rules are written to give access to data.

    The JOB attribute is the privilege comparable to the TSO, IMS or CICS
    attributes which determine if the User-ID is allowed to run TSO, IMS or CICS.
    JOB determines whether you are authorized to use the batch environment. JOB is
    validated only if JOBCHK has been initialized in the OPT parameter in the GSO.
    JOB is particularly important in an environment where there are a large number
    of users requiring access in an on-line environment only. These users can be
    prevented from using their User-ID in batch jobs if they do not have the JOB
    attribute.

    If the JOB attribute is not being used, we do not necessarily have a problem.
    Determine if the organization depends on users not being able to use batch, as
    a control. An environment which claims to have ACF controls to prevent access
    in batch, but do not use JOB with JOBCHK, is not fully controlled.


    12. Review User-IDs with the JOBFROM attribute. Verify that these User-IDs
    are also defined as MUSASS. Determine how User-IDs are inserted in the jobs
    submitted by these regions.

    User-IDs are used to identify users of the system to ACF2. ACF2 verifies the
    identity of each user by requesting a password known only to the valid user.
    Sometimes, when production jobs are being submitted, a password is
    impractical. In these cases, the identity is verified, by determining the
    program used and the authorization of the program (SUBAUTH). On rare occasion,
    SOURCE may also be used to verify that the User-ID is appropriate.

    In a multi-user environment (MUSSAS), there is another unique requirement to
    have a User-ID approved for use by ACF2. In a MUSASS like CICS, ACF2 only
    knows the identity of the region. If a job is submitted by a user of the
    region, ACF2 has to be told by the region which User-ID is to be used. It is
    impractical to require each user to include a password when submitting a job.
    A feature has been designed to allow a MUSSAS to pass a User-ID to jobs using
    the JOBFROM statement.
    FORMAT: /*JOBFROM T2HJWJV

    Since anyone could insert this in their JCL, an additional privilege was added
    to allow a MUSSAS to use this (JOBFROM). JOBFROM tells ACF2 that this User-ID
    has already been validated within the region or job. This review, is intended
    to verify the appropriateness of the JOBFROM attribute. Only User-IDs with the
    MUSSAS attribute should have the JOBFROM attribute. Review how the JOBFROM
    User-ID is determined. If the user is allowed to insert his own /*JOBFROM,
    there is a significant exposure.

    Imagine, a TEXT user being allowed to insert a JOBFROM User-ID of any User-ID
    he wishes. ACF2 would assume the User-ID is okay since the CICS region has the
    JOBFROM attribute. NOTE, TEXT has an appropriate job submission routine which
    inserts the user's own User-ID only, in the JOBFROM record. TEXT should only
    be a concern if the region is not controlled by ACF2.

    If JOBFROM is on an id which is not a MUSSAS, review the source of the job
    doing the job submission to determine how the /*JOBFROM record is generated,
    and how the User-ID is validated.


    13. Review User-IDs with the NO-SAF attribute. Verify these User-IDs are also
    defined as MUSASS and STC or RESTRICT.

    User-IDs with the NO-SAF attribute can access data via program products using
    SAF (e.g. DFDSS, DFHSM, BDT) without validating dataset rules. Products using
    explicit ACF2 interfaces like CICS or IMS will call ACF2 for dataset rule
    validations, unless NON-CNCL or MAINT was also granted. Compensating controls
    for MUSASS User-IDs such as STC or RESTRICT (with SUBAUTH and PGM, or SOURCE)
    should be used.


    Rules for System Software

    Purpose: To review the ACF2 access rules for system software.

    1. Use the DECOMP command to decompile the SYS1 rule set. Review the ACF2
    access rules to determine that the ACF2 distribution libraries can only be
    accessed by the system programmer(s) assigned to ACF2 support.

    The integrity of ACF2 among other things depends on the adequacy of rules over
    the ACF2 distribution files. These datasets need to be protected against
    unauthorized modification and only people with a business need to know should
    be able to read them. The MACRO libraries contain file definitions
    (SYS1.ACFMAC). These file definitions give enough information to give users
    with access to APF libraries the ability to bypass ACF security. Note that
    many of the datasets have 2 versions of the information. SYS1.ACFMAC and
    SYS1.ACFAMAC are identical versions of each other. Access to both should be
    strictly limited and should be similar.


    2. Determine that libraries containing ACF2 load modules are adequately
    protected. Write and Allocate access to the production version should be
    logged and restricted to emergency situations only.

    This aspect of the ACF2 program need not be reviewed if MVS is also being
    reviewed. The ACF2 load libraries are in 'SYS1.LPALIB' and 'SYS1.LINKLIB'. If
    this review is a stand-alone review of ACF2, it is important to determine the
    adequacy of controls over the programs running ACF2. Review the rules to
    determine who can modify the system datasets and 'SYS1.ACFMOD' and
    'SYS1.ACFAMOD'. Only the system program responsible for the MVS system and the
    ACF2 software should be able to change these libraries.

    Only the ACF2 systems person should have write authority to the MOD libraries
    (these would also be reviewed in question 1 of this section).

    ACF2 security is only as good as the software used to run it. If the software
    can be indiscriminately modified, ACF2 cannot be relied upon.


    3. Determine if any user other than Data Security can change the rules for
    SYS1 or ACF2 by the use of %CHANGE and %RCHANGE.

    The rules for SYS1 or ACF2 are reviewed in this section to ensure that current
    controls are adequate to ensure the integrity of the ACF2 system. When ACF2 is
    controlled Centrally, only SECURITY privilege can change rules, unless the
    %CHANGE record is present in the rule. If current controls are adequate and
    the %CHANGE is present, there is no assurance that they will stay adequate. If
    it is not present, only SECURITY users can change the rules, and adequacy of
    change controls over rules are covered later in this review.

    In reviewing the rules for %CHANGE, its existence does not imply there is a
    problem. The User-ID mask should be reviewed to determine the appropriateness
    of users with the ability to make rule changes for system and ACF2 files.
    Normally, only Data Security can change rules. No other group has a job
    responsibility to do so.


    4. Determine that the System Management Facility (SMF) files (SYS1.MAN*) used
    for ACF2 logging are adequately protected. WRITE and ALLOCATE permission should
    be limited to emergency situations only. Allocate permission should be logged
    and restricted to the system programmers responsible for SYSGENs. Ensure that
    the same level of protection is present for the dump datasets, both tape and
    disk.

    ACF2 uses the System Management Facility (SMF) files to store information used
    for an audit trail. All ACF2 logging is stored on the SMF files. The
    information needed to restore the current database is stored on the SMF files.
    The change history is stored on SMF. All reports produced by ACF2 come from
    information stored on SMF.

    As a result the information here must be carefully controlled to ensure that no
    one can change this information. Keep in mind that if there are system
    problems relative to SMF data, someone has to be able to fix it. The backup
    files or the files used to store SMF after it is dumped should be as closely
    controlled as the live files. Ask the system programmers to identify the
    datasets names for all versions of the SMF data. Review the rules for all of
    these.

    If SMF is covered in MVS review, it may not be necessary to cover it here.
    Ensure that the files reviewed in MVS, include all collected SMF.


    5. Ensure that ACF2 rules grant access on a need to know basis.

    ACF2 rules are generally written based on the data owner's requests. Data
    Security should always write access rules as requested. However, if a customer
    requests access which is obviously not limited to only user's with a defined
    need to know, Data Security has an obligation to inform the customer of the
    consequences of the general access granted.

    Data Security also writes rules for new TSO users. A default set of rules is
    written unless otherwise specified. Review these default rules to determine if
    access to user's libraries is limited on a "need to know" basis.



    6. Determine the names of the production systems libraries, APF libraries,
    IMS and other production program product libraries, and production JCL
    libraries. Ensure that controls over these resources are adequate.


    This is normally covered in the MVS review, but should be covered here if MVS
    is not being reviewed.

    The adequacy of ACF2 depends on the integrity of MVS to be intact. MVS
    integrity has been assured by IBM provided mechanisms under the users control
    are adequately controlled. APF authorization is one of the main bypass
    mechanism under the users control. Other powerful libraries (normally APF
    authorized) include IMS and production load libraries. Determine that the ACF
    rules limiting access to these authorized libraries are reasonable.

    The libraries used to contain JCL for production jobs should also be closely
    reviewed to ensure the appropriateness of production jobs being used.


    7. Check the GSO OPTS record, NOSORT fields. If NOSORT is in effect,
    verify that all rule sets containing a $NOSORT control card accurately reflect
    access permissions. If NOSORT=NO is in effect, there should not be any $NOSORT
    entries.




    ACF2 ADMINISTRATION

    Purpose: To review the adequacy of ACF2 administration.

    1. Review the controls over changes to the ACF2 databases. Ensure that all
    changes are properly authorized. Verify that a management review of changes to
    ACF2 is conducted to ensure only authorized changes are performed.

    The ACF2 database can be updated only be user's with the SECURITY privilege.
    Data Security requires all changes to be supported by an authorization from the
    owner.

    The intent of this audit step is to perform a review of changes made to the
    ACF2 databases to ensure that all changes are authorized. To do this, perform
    the following:
    o Determine what change controls are in place to ensure only authorized
    changes are included. Specifically, if changes are made to the rules (dataset
    or resource), using a stored copy of source rather than a decompile just
    previous to the change, determine what controls are in place to ensure:
    o there is only one copy of the source;
    o no other changes were made to the source by some other user
    (trojan horse);
    o no changes were made to the database using
    ACFNRULE command or decomp and store;
    o only authorized users can write to the source
    file.
    In essence, if a PDS containing original source is being used, there
    should be a change control procedure similar to that used for production
    program change controls for all changes to the ACF2 rules.

    o If all changes have been properly authorized, there should be a way of
    referencing the authorization when the change occurs. Take a sample of changes
    (explained below) and request the Data Security administrator to provide you
    with the authorizations.
    o Determine if there is a management review of ACF2 change reports
    conducted. There should be a daily review by management or an independent
    party to ensure changes to the databases are authorized. It doesn't make sense
    to review all changes daily, but a reasonable sample of changes made should be
    done, at least weekly. This would be even more significant if during the
    sample done above, any situation was identified which did not have supporting
    authorization.

    The reports that should be reviewed by an independent person includes:
    ACFRPTLL - User-ID Modification Log - identifies the fields that were
    changed, if DETAIL was requested.
    ACFRPTRL - Rule-id Modification Log - identifies the rules that were
    changed and by who. Currently, no detail is available in this report (Planned
    for a future release). However, ACFRPTIX can be run to show full detail
    resulting from a given modification.
    ACFRPTEL - Info Storage Update Log - identifies the resource rules,
    ENTRY's, GSOs, SCOPEs, and SHIFTs changed. If DETAIL is requested the fields
    changed will be displayed were possible.
    To sample the changes, run each of these reports using the collected SMF for a
    sample period. One week, just prior to the review period should be sufficient.

    Additionally, the Data Security group should be reviewing the following reports:

    ACFRPTJL - Restricted User-ID Job Log - identifies usage of User-IDs
    without passwords. Should be examined to determine appropriateness of usage;
    ACFRPTPW - Invalid Password Authority - identifies invalid attempts
    to sign-on. Should be used to identify any attempts to hack the system.


    2. Determine that Data Security is reviewing and actively following up
    potential problems with ACF2 logging and violation reports for:
    o abuse of privileges;
    o attempted hacking; and
    o conversion to ABORT mode.

    Data Security has a responsibility to review the reports caused by logging or
    violations. Primarily, logging should be reviewed to determine if there is an
    abuse of privileges granted, such as EID, NON-CNCL, READALL, or SECURITY.
    Additionally, if the logs are as a result of a conversion, these logs should be
    reviewed to ensure the timely completion of such plans.

    The violations should also be reviewed by the Data Security group for several
    reasons. Violations are the result of failed attempts to access information.
    Data Security should be using this as an indication of problems in ACF2
    administration, to determine their effectiveness. They should also use these
    to determine if there was a breech of security. Trends in attempted access
    should be observed. A series of violations on sensitive datasets indicate a
    possible fishing expedition. It should be noted however, that the violations
    are accesses which did not happen, while the logging are for things that did
    happen.
    User Exits

    Purpose: To review ACF2 user exits.

    1. Using the SHOW ACTIVE command, determine which exits are in use on each
    system. Review the source code for each. Cross reference compile date and
    load module size with SYS1.LPALIB contents. Note any discrepancies.

    There are now 19 exits available for a site to alter the way in which ACF2
    works. Each of these exits can be used to bypass the security mechanisms in
    the system if inappropriately written. The auditor should review the source
    for each module and verify that the source matches the load module.

    EXIT usage can be determined by reviewing the GSO records for all systems. The
    commands to do so are:
    ACF
    SET CONTROL(GSO) MSYS(-)
    LIST EXITS
    END

    2. Review the source for any exits in use to verify they perform as
    intended. Verify the exit usage is well documented as to the purpose and
    effect on the system.

    If any exits are in use and the source listing has been verified to be the
    original source, review the source to ensure that it is functioning as
    intended. Any exit in use should be explicitly documented as to the purpose of
    the exit and what the exit does. If it isn't, the site cannot be assured of the
    integrity of their security system. Remember, any exit can be used to
    circumvent the controls in ACF2.


    Other Products Under ACF2

    Purpose: To review other products that relate to ACF2.

    1. If Innovation Data Processing's Fast Dump Restore (FDR) is used, determine
    if the ACF interface is being used to verify authority to access information.

    FDR and FDRDSF are products which are used to dump and restore information at a
    volume level and/or a dataset level. When a disk is dumped at a volume level,
    FDR bypasses normal open. This gives the user the ability using FDR to dump
    onto a tape he has access to any file on any volume. The Dataset Facility
    allows any user to restore any file previously dumped, to any file he has write
    access to. ACF2 validation only occurs on the file being written to. This
    facility therefore gives the user the ability to get READ access to any file
    regardless of ACF2 rules preventing it.

    The ACF2 vendors recognized this weakness some time ago, and have developed an
    interface which provides additional levels of control. Before allowing the
    user to dump a volume, the interface determines the users authority, by calling
    ACF2 to validate access to VOLUME.@volser (or @volser.VOLUME, depending on
    options selected). When restoring a dataset, the interface verifies the user's
    authority to read the original dataset name given in the control parameters,
    before allowing the file to be
    restored.

    To determine if the ACF2 interface has been implemented, BROWSE the load
    modules for the FDR.... programs, looking for references to ACF. If they don't
    exist, the interface has not been installed. It may also be prudent to look
    for rules for VOLUME or @volser. If these are not present, the interface
    should be questioned (determine how access is allowed).

    However, similar rules are used in other interfaces, so the existence of them
    does not imply the interface is installed.

    Some installations have protected the FDR programs using an exit to validate
    usage of programs. Others have put the FDR programs in a fully protected
    library to limit their use to only appropriate DAMART users. This may be an
    acceptable alternative to using the exit provided the controls prevent copying
    to another name and library.


    2. If Cambridge Systems Group's ASM2 is used determine if the ACF$AUTH code is
    present. Verify that only authorized ASM2 commands are present.

    Cambridge Systems Group (now Computer Associates) have developed a Space
    Management System which provides archive and retrieval mechanisms to make
    maximum use of storage space. ASM2 performs tasks on behalf of the user,
    bypassing user authentication. ASM2 was distributed by the same group as ACF2
    and has been distributed with an ACF2 interface which performs additional ACF2
    calls to ensure the user is authorized to perform the tasks requested.

    The ASM2/ACF2 interface is distributed as a Selectable Unit and must be
    installed to make it work. If ASM2 is being used, interview the MVS group, the
    Utilities group and the DAMART group to determine if the ACF2 interface was
    installed during the last distribution implementation.


    3. If Sterling's Disk Management System (DMS/OS) is used, determine if the
    vendor supplied ACF2 interface has been applied.

    Sterling's Disk Management System is designed to provide programs to archive
    and restore datasets on the system, making more efficient use of the disk space
    available. To do this, DMS/OS runs as a sub-system or Started Task and needs
    access to all data on the system. When a dataset is aged sufficiently, DMS/OS
    programs remove the dataset from the disk and store it on a tape file. If the
    dataset is required, DMS/OS programs retrieve the data from the tape and
    restore it on disk. Some additional features allow for a dataset to be renamed
    during the retrieval process. Since DMS/OS does all of these functions on the
    user's behalf, the user's authority to access these dataset names is never
    validated by ACF2. This allows a user to access a file which has been archived
    and restore it to his high-level, even if he does not have access to the
    original file.

    Sterling has recognized this weakness in their product and has created an
    additional Selectable Unit. The site must specifically install the SU to take
    advantage of this feature. The SU performs some additional ACF2 calls to
    ensure the user's authority to access both the original and final datasets
    before any action is taken by DMS/OS to archive or restore files.


    4. If IBM's Hierarchical Storage Manager (DFHSM), Data Set Services (DFDSS),
    or Bulk Data Transfer (BDT) are installed and not protected by PGM resource
    rules, verify SAFPROT entries are present.

    These three IBM program products require a SAFPROT record for dataset rule
    validation to occur (regardless if SAF VALIDATION = ON and no generically
    masked SAFSAFE record exists).

    The SAF PROTLIST entries can be determined by reviewing the GSO records for
    all systems. The commands to do so are:
    ACF
    SET CONTROL(GSO) MSYS(-)
    LIST LIKE(SAF-)
    END

    Entries should resemble the following:
    SAFPROT.DFDSS CLASS(-) CNTLPT(ADR-) SUBSYS(ADR-)
    SAFPROT.DFHSM CLASS(-) CNTLPT(ACR-) SUBSYS(ACR-)
    SAFPROT.BDT1 CLASS(-) CNTLPT(BDT-) SUBSYS(SVC019)
    SAFPROT.BDT2 CLASS(-) CNTLPT(BDT-) SUBSYS(SVC099)
    SAFPROT.BDT3 CLASS(-) CNTLPT(BDT-) SUBSYS(SVC109)
    SAFPROT.BDT4 CLASS(-) CNTLPT(BDT-) SUBSYS(BDT-)