Return to Mainframe Utilities Page
Module
/**********************************************************************
/* UTILITY: GENSYNS *
/* AUTHOR: DAVID LEIGH *
/* FUNCTION: CREATE/DELETE DB2 SYNONYMS FOR A LIST OF USERS AND *
/* MAINTAIN THAT LIST. *
/**********************************************************************
PROC 0 USER() +
DBAS('D@UDAL D@ULLJ D@UJEF') +
ACTION(CREATE) +
VALID_ACTIONS('CREATE DROP') +
DRIVER(PLATINUM) +
VALID_DRIVERS('PLATINUM DSNTIAD') +
EDIT +
HELP
/*** CHECK THE DEBUG SWITCH ***/ 02
ISPEXEC VGET DBGSWTCH PROFILE 02
IF &DBGSWTCH = ON THEN + 02
CONTROL MSG LIST CONLIST SYMLIST NOFLUSH PROMPT ASIS 00000702
ELSE + 02
CONTROL NOMSG NOLIST NOFLUSH PROMPT ASIS 00000902
IF &HELP = HELP THEN GOTO HELPSEC
02
ISPEXEC CONTROL ERRORS RETURN
/**********************************************************************
/* WIMPY SECURITY BY IGNORANCE *
/**********************************************************************
IF &SYSINDEX(&STR(&SYSUID),&STR(&DBAS)) = 0 THEN +
IF &STR(&USER) = THEN SET USER = &SYSUID
ELSE +
IF &STR(&USER) ¬= &SYSUID THEN +
DO
SET ZEDLMSG = &STR(YOU MAY ONLY GENERATE SYNONYMS +
FOR YOURSELF)
ISPEXEC SETMSG MSG(UTLZ001)
SET EXITCC = 20
GOTO FINISH
END
ELSE
ELSE +
IF &STR(&USER) = THEN +
SET USER = ALL
/**********************************************************************
/* EDIT ACTION *
/**********************************************************************
IF &SYSINDEX(&STR(&ACTION),&STR(&VALID_ACTIONS)) = 0 THEN +
DO
SET ZEDLMSG = &STR(INVALID ACTIONS. VALID ACTIONS ARE: +
&VALID_ACTIONS)
ISPEXEC SETMSG MSG(UTLZ001W)
SET EXITCC = 12
GOTO FINISH
END
/**********************************************************************
/* EDIT DRIVER *
/**********************************************************************
IF &SYSINDEX(&STR(&DRIVER),&STR(&VALID_DRIVERS)) = 0 THEN +
DO
SET ZEDLMSG = &STR(INVALID DRIVER. VALID DRIVERS ARE: +
&VALID_DRIVERS)
ISPEXEC SETMSG MSG(UTLZ001W)
SET EXITCC = 12
GOTO FINISH
END
/**********************************************************************
/* ESTABLISH SOME PROCESSING VARIABLES *
/**********************************************************************
/* INITIALIZE SEVERAL VARIABLES WHICH WILL BE USED LATER IN THE *
/* PROCESSING. *
/**********************************************************************
OPEN_CONTINUE: +
CALL 'SYS2.USC1.LINKLIB(USERINFO)' '&SYSUID '
SET JCLDSN = &STR(&SYSUID..TEMP.GENSYNS)
SET JOBNAME = &STR(&SYSUID.GSY)
SET JOBNAME = &SUBSTR(1:8,&STR(&JOBNAME))
SET EXITCC = 0
SET LP = &STR((
SET RP = &STR()
/**********************************************************************
/* CREATE THE JCL *
/**********************************************************************
SET ZEDLMSG = &STR(*** CREATING JCL TO GENERATE SYNONYMS ***)
ISPEXEC CONTROL DISPLAY LOCK
ISPEXEC DISPLAY MSG(UTLZ001)
SET PARM = &STR(PARMS('&ACTION &USER &DRIVER'))
DELETE '&JCLDSN'
FREE DDNAME(ISPFILE)
ALLOCATE DDNAME(ISPFILE) DSN('&JCLDSN') +
NEW CATALOG +
UNIT(SYSDA) VOLUME(WRK$$$) +
SPACE(2,2) TRACKS RELEASE +
RECFM(F B) LRECL(80) BLKSIZE(23440) DSORG(PS)
ISPEXEC FTOPEN
ISPEXEC FTINCL GENSYNS
ISPEXEC FTCLOSE
FREE DD(ISPFILE)
IF &EDIT = EDIT OR &EDITJCL = EDITJCL THEN +
DO
SET ZEDLMSG = &STR(NOTE: YOU MUST SUBMIT +
THIS JCL YOURSELF. IT +
WILL NOT RUN AUTOMATICALLY.)
ISPEXEC SETMSG MSG(UTLZ001)
ISPEXEC EDIT DATASET('&JCLDSN')
SET EXITCC = 0
GOTO FINISH
END
SUBMIT '&JCLDSN'
SET ZEDLMSG = &STR(*** GENSYNS JOB SUBMITTED ***)
ISPEXEC SETMSG MSG(UTLZ000)
/**********************************************************************
/* CLOSE UP SHOP *
/**********************************************************************
FINISH: +
EXIT CODE(&EXITCC)
/**********************************************************************
/* DISPLAY ANY "HELP" WHICH IS AVAILABLE FOR THIS UTILITY *
/**********************************************************************
HELPSEC: +
ISPEXEC SELECT PGM(ISPTUTOR) PARM(HELPSHEL)
SET ZEDLMSG = &STR(*** HELP DISPLAYED FOR GENSYNS UTILITY +
*** NO PROCESSING PERFORMED ***)
ISPEXEC SETMSG MSG(UTLZ000)
EXIT
Documentation
GENSYNS is a utility which will create DB2 synonyms for UNISTAR programmers on
the UNISTAR development tables (USSTRD00 creator) where one does not exist and
that table does not exist in the programmer's personal database.
SYNTAX:
COMMAND ===> gensyns {edit}
Optional parameter "edit" indicates that you wish to edit the JCL which is
created for you by the GENSYNS utility. If this parameter is specified, you
must submit the JCL yourself. If this parameter is not specified, GENSYNS will
create and submit the JCL necessary to perform the synonym creation.
GENSYNS is a two-phase process. First, GENSYNS queries the DB2 catalog and
finds table and view names listed in the PLATINUM security table for which there
is not a synonym created for you. If such a situation exists, it also checks to
see if that table has been "cloned" into your own personal database (and
consequently, a synonym is not required). If the table has not been cloned and
the synonym does not exist, it writes the necessary DDL to create the synonym to
an output file.
The second phase invokes the PLATINUM batch processor to actually execute the
DDL on your behalf and create the synonym(s).
You only need to invoke GENSYNS when, after you've finished using a table(s) in
your personal database, you delete that table(s) and want to resume using the
UNISTAR development table(s) instead.
In the instance where a new person joins the UNISTAR team or a new table/view is
created for which people need synonyms, the DBA team will execute GENSYNS in a
global fashion to build all necessary synonyms at once.

0 Comments