Previous Topic: 10.5 A Case Study Using RACF and DMS/OS DataNext Topic: 10.5.2 Modify VCAGENIN


10.5.1 Extract RACF and DMS/OS Data


The first step in this process involves extending the data
collection function of VCC to extract data from the RACF
database which can provide the departmental account code
associated with a given data set (either non-VSAM or VSAM).

The mechanism for this is the VCCUEXIT, which is called by
the VCCVTOC module for each format 1 DSCB found in the VTOC.

In the example that follows, we have also included the
extraction of some data added to the format 1 DSCB by the
Sterling Software product DMS/OS.  The offsets into the
format 1 DSCB are the default locations in Release 8.0 of
DMS/OS according to our mutual clients.  You must verify that
your configuration of DMS/OS matches this; make the
appropriate changes or delete the references pertaining to
DMS/OS fields.

RACF examples are based on Release 1.8.1 of RACF.  For a
full discussion of VCCUEXIT, please refer to the VCC User
Guide.

The aim of this exit is to extract the installation data
(INSTDATA) that has been established for a RACF group
profile.  RACF and equivalent products set aside INSTDATA
for use by the organization implementing the security
environment.  Naturally, our example here can only aim at
giving you a view of one implementation and you will have
to adapt this code to your own rules.
VCCUEXIT TITLE '*---------- SAMPLE VCCUEXIT USER EXIT ----------*'      MICS04
         MACRO                                                          00020000
&LABEL   RACF1                                                          00030000
&LABEL   RACROUTE REQUEST=AUTH,                                        X00040000
               RELEASE=1.8.1,                                          X00050000
               ENTITY=(DUMMY,PRIVATE),                                 X00060000
               CLASS='DATASET',                                        X00070000
               VOLSER=DUMMY,                                           X00080000
               WORKA=DUMMY,                                            X00090000
               RACFIND=NO,                                             X00100000
               ATTR=READ,                                              X00110000
               MF=L                                                     00120000
         MEND                                                           00130000
*                                                                       00140000
         MACRO                                                          00150000
&LABEL   RACF2                                                          00160000
&LABEL   RACROUTE REQUEST=EXTRACT,                                     X00170000
               TYPE=EXTRACT,                                           X00180000
               RELEASE=1.8.1,                                          X00190000
               CLASS='DATASET',                                        X00200000
               FIELDS=FLDLIST,                                         X00210000
               DERIVE=YES,                                             X00220000
               GENERIC=YES,                                            X00230000
               ENTITY=DUMMY,                                           X00240000
               MF=L                                                     00250000
         MEND                                                           00260000
VCCUEXIT VCCINIT FIXLIST=(VCC4300,                                     X00270000
               ),                                                      X00280000
               VERSION=200,                                            X00290000
               GENOPT=GEN                                               00300000
         LR    R11,R7             MOVE DSCB ADDR.                       00310000
         USING IECSDSL1,R11       FORMAT 1 BASE REG.                    00320000
         LR    R10,R1             MOVE VTCWA ADDR.                      00330000
         USING VTCWA,R10          VTOC WORK AREA BASE                   00340000
         SPLEVEL SET=1            SET SPLEVEL TO 370 LEVEL              00350000
*********************************************************               00360000
* IF YOU WANT TO ESTABLISH A NEW SAVE AREA, A SAVE AREA *               00370000
* HAS BEEN PROVIDED FOR YOU IN THE VTCWA.  USE THE      *               00380000
* FOLLOWING CODE AS AN EXAMPLE OF HOW TO DO THIS.  DO   *               00390000
* NOT GETMAIN A NEW SAVE AREA.                          *               00400000
*                                                       *               00410000
* FOR A REENTRANT WORKAREA, YOU CAN USE THE AREA        *               00420000
* DEFINED UNDER THE 'SUSRDSCT'. YOU WILL HAVE ADDRESS-  *               00430000
* ABILITY UNDER THE SAME BASE REGISTER USED TO BUILD    *               00440000
* DATA IN THE USER SEGMENT. THE ACTUAL GETMAINED AREA   *               00450000
* IS MAPPED AT THE END OF THE VCCVTOC WORKAREA IN A     *               00460000
* RECORD CONSTRUCTION AREA OF 4096 BYTES. YOU WILL BE   *               00470000
* ABLE TO USE 4096 BYTES MINUS THE SIZE OF THE RECORD   *               00480000
* PASSED TO THIS EXIT FOR MODIFICATION.                 *               00490000
*********************************************************               00500000
         LA    R3,VTCWUSVE        USER EXIT SAVE AREA                   00510000
         ST    R13,4(,R3)         CHAIN SAVE                            00520000
         ST    R3,8(,R13)           AREAS.                              00530000
         LR    R13,R3             NEW SAVE AREA.                        00540000
         LA    R9,VTCWRECD        POINT TO SMF RECORD                   00550000
         USING SBASDSCT,R9        BASE SEGMENT BASE REG.                00560000
         LH    R4,SBASRDW       - CURRENT RECORD LENGTH                 00570000
         N     R4,=X'FFFFFFFC'  - ENSURE FULLWORD ORIGIN                00580000
         LA    R5,SUSRLEN       - LENGTH OF THE USER SEG.               00590000
         STCM  R5,3,SBASUSRL    - USER SEGMENT LENGTH                   00600000
         AR    R5,R4            - NEW RECORD LENGTH                     00610000
         STH   R5,SBASRDW       - RESET SMF RECORD LENGTH               00620000
         S     R4,=F'4'         - OFFSET OF USER SEGMENT                00630000
*                                 (SEGMENT OFFSETS DO NOT               00640000
*                                 INCLUDE THE FOUR BYTES                00650000
*                                 OF THE RDW FOR SAS).                  00660000
         STCM  R4,3,SBASUSRS    - USER SEGMENT OFFSET                   00670000
         LA    R4,4(R9,R4)      - FIND ADDRESS OF USER                  00680000
*                                 SEGMENT                               00690000
         USING SUSRDSCT,R4      - USER SEG. BASE REG.                   00700000
         MVC   SBASUSR#,=AL2(1) - ONLY ONE USER SEGMENT                 00710000
*                                                                       00720000
* BUILD USER SEGMENT FIELDS                                             00730000
*                                                                       00740000
*                                                                       00750000
*------------------------------------------------------------------*    00760000
* EXTRACT FIELDS ADDED TO FORMAT-1 DSCB BY DMS/OS                  *    00770000
*------------------------------------------------------------------*    00780000
         MVC   SUSRCJOB(5),IECSDSL1+70  GET CREATING JOBNAME (1ST 5)    00790000
         MVC   SUSRCJOB+5(3),IECSDSL1+45    (LAST 3 BYTES OF JOBNAME)   00800000
         MVC   SUSRUJOB,IECSDSL1+62    GET LAST UPDATING JOB (ALL 8)    00810000
         MVC   SUSRUDAT,IECSDSL1+48    DATE LAST UPDATED                00820000
*------------------------------------------------------------------*    00830000
* CALL RACF TO GET THE GENERIC PROFILE BASED ON COMPLETE DSNAME    *    00840000
*------------------------------------------------------------------*    00850000
         MVC   RACHECKW(RACHECKL),RACHECKX      LIST FORM TO WORKAREA   00860000
         RACROUTE REQUEST=AUTH,                                        X00870000
               RELEASE=1.8.1,                                          X00880000
               ENTITY=(DS1DSNAM,PRIVATE),                              X00890000
               WORKA=RACFWORK,                                         X00900000
               RACFIND=NO,                                             X00910000
               MF=(E,RACHECKW)                                          00920000
         LTR   R15,R15             TEST RETURN CODE                     00930000
         BZ    MORERACF            0 - CONTINUE WITH MORE EXTRACTION    00940000
         CH    R15,=H'8'           Q. GENERIC PROFILE FOUND ?           00950000
         BNE   SETDEF              ..NO. GO SET DEFAULTS AND EXIT       00960000
MORERACF DS    0H                  YES..CONTINUE                        00970000
*------------------------------------------------------------------*    00980000
* CALL RACF TO GET INSTALLATION DATA BASED ON THE GENERIC PROFILE  *    00990000
*------------------------------------------------------------------*    01000000
         LA    R8,4(,R1)           -> GENERIC PROFILE                   01010000
         MVC   RACXTRTW(RACXTRTL),RACXTRTX      LIST FORM TO WORKAREA   01020000
         RACROUTE REQUEST=EXTRACT,                                     X01030000
               TYPE=EXTRACT,                                           X01040000
               RELEASE=1.8.1,                                          X01050000
               FIELDS=FLDLIST,                                         X01060000
               DERIVE=YES,                                             X01070000
               GENERIC=YES,                                            X01080000
               WORKA=RACFWORK,                                         X01090000
               ENTITY=(R8),                                            X01100000
               MF=(E,RACXTRTW)                                          01110000
         LTR   R15,R15             TEST RETURN CODE                     01120000
         BNZ   SETDEF              GO SET DEFAULTS AND EXIT             01130000
         LH    R5,4(,R1)           GET OFFSET LENGTH                    01140000
         AR    R5,R1               -> INSTALLATION DATA                 01150000
         CLI   0(R5),0             Q. TEST FOR NO INSTALLATION DATA     01160000
         BE    EXIT                ..NO INSTALLATION DATA         A     01170000
         MVC   ACCTNO,4(5)         EXTRACT ACCOUNT CODE FROM RACF       01180000
         CLI   ACCTNO,0            Q. SIMPLE TEST FOR VALIDITY          01190000
         BNE   OK1                 ..VALID...CONTINUE                   01200000
         MVC   ACCTNO,=CL8'*RACFERR'    FOR LATER TESTING BY CA MICS    01210000
         B     EXIT                PROCEED TO EXIT                      01220000
OK1      DS    0H                                                       01230000
         CLC   ACCTNO,=8CL1'00'    Q. IS THERE AN ACCOUNT NUMBER        01240000
         BNE   EXIT                ..YES....EXIT                        01250000
SETDEF   DS    0H                  (ALSO) BRANCH ENTER IF NO PROFILE    01260000
EXIT     DS    0H                  (ALSO) BRANCH ENTER IF NO PROFILE    01270000
         MVC   ACCTNO,=8CL1'*'     SET DEFAULT FOR TESTING BY CA MICS   01280000
         L     R13,4(,R13)         -> SAVEAREA PROVIDED AT ENTRY        01290000
         LM    R14,R12,12(R13)     RESTORE REGS AT ENTRY                01300000
         BR    R14                 RETURN TO VCCVTOC                    01310000
         LTORG                                                          01320000
*-----------------------------------------------------------------*     01330000
* CONSTANT AREA USED BY THIS CSECT                                *     01340000
*-----------------------------------------------------------------*     01350000
FLDLIST  DC    A(1)                                                     01360000
         DC    CL8'INSTDATA'                                            01370000
RACHECKX RACF1                                                          01380000
RACHECKL EQU   *-RACHECKX          LIST LENGTH FOR MOVE TO WORKAREA     01390000
DUMMY    DS    0H                  EXECUTE FORM OF MACRO OVERRIDES      01400000
RACXTRTX RACF2                                                          01410000
RACXTRTL EQU   *-RACXTRTX          LIST LENGTH FOR MOVE TO WORKAREA     01420000
         SPACE 3                                                        01430000
SUSRDSCT DSECT                     USER SEGMENT                         01440000
SUSRCJOB DS    CL8                 CREATING JOBNAME                     01450000
SUSRUJOB DS    CL8                 LAST UPDATING JOBNAME                01460000
SUSRUDAT DS    XL3                 DATE OF LAST UPDATE YY.DD.DD         01470000
SUSRACCT DS    CL8                 ACCOUNT NUMBER FROM RACF INSTDATA    01480000
ACCTNO   EQU   SUSRACCT            ALIAS NAME FOR ACCOUNT NUMBER        01490000
SUSRLEN  EQU   *-SUSRDSCT          LENGTH OF USER SEGMENT               01500000
         SPACE 1                                                        01510000
RACHECKW RACF1                     SHELL FOR RACHECK MOVED HERE         01520000
RACXTRTW RACF2                     SHELL FOR RACXTRT MOVED HERE         01530000
         SPACE 2                                                        01540000
         DS    0D                                                       01550000
RACFWORK DS    CL512               WORKA ADDRESS FOR RACROUTE           01560000
         TITLE 'DSECTS NEEDED BY VCCUEXIT'                              01570000
DSCB1    DSECT                                                          01580000
         IECSDSL1 1                FORMAT 1 DSCB                        01590000
         PUSH  PRINT                                                    01600000
         PRINT NOGEN                                                    01610000
         IEZDEB LIST=NO            DEB NEEDED BY VCCVTCWA MACRO         01620000
         POP   PRINT                                                    01630000
         VCCVTCWA                  SAVEAREA/WORKAREA OF VCCVTOC TASK    01640000
         VCCCNTWA                  GLOBAL WORKAREA OF VCCNTRL           01650000
         VCCRCORD                  LAYOUT OF VCC RECORDS                01660000
         ICHSAFP                                                        01670000
         END   VCCUEXIT                                                 01680000


 Figure 10-1.  Sample VCCUEXIT for RACF and DMS/OS