|
Back To LeighWeb Mainframe Utilities Page
View the documentation associated with this module
/* REXX ***************************************************************/
/* Utility: CA7CMD */
/* Author: David Leigh */
/* Function: This utility takes command line input to pass to CA7 */
/* and return results to the user without having to go */
/* into CA7. If it's in an edit session, it does this */
/* with note lines. Otherwise it puts it into an output */
/* file and takes the user into edit on it. */
/* */
/* If it's not in an edit session, the whole command must */
/* be entered. If it's in an edit session, the whole */
/* command can be entered but doesn't need to be. If */
/* nothing is entered or partial commands, certain defaults */
/* are used to construct an appropriate command for CA7. */
/* */
/* To see the valid inputs available for the edit session */
/* method of invocation, type CA7CMD HELP or CA7CMD ? on */
/* the command line to get help information in note lines. */
/**********************************************************************/
address ispexec "control errors return"
address isredit
"macro (passcmd)"
if rc = 0 then do
ismacro = 'yes'
if passcmd = "?" then do
funcrc = cmd_help(ismacro)
exit
end
if pos(',JOB=',passcmd) = 0 then do
"(mbr) = member"
if passcmd = '' then passcmd = 'LJCL'
passcmd = passcmd ¦¦ ',JOB=' ¦¦ mbr
end
end
else do
parse upper arg passcmd
ismacro = 'no'
if passcmd = "?" then do
funcrc = cmd_help(ismacro)
exit
end
end
if passcmd = '' then do
address ispexec
zedlmsg = 'please pass a valid ca7 command such that your ',
'command looks like (for example): ',
'TSO CA7CMD LJOB,JOB=UFBL5305,LIST=ALL'
"setmsg msg(utlz001w)"
exit
end
address tso
dummy = outtrap('null.')
"FREE DD(SYSIN, SYSPRINT, UCC7CMDS TEMPCA7)"
"ALLOC DD(SYSIN) NEW"
"ALLOC DD(SYSPRINT) NEW SPACE(1,1) CYLINDERS RELEASE"
"ALLOC DD(UCC7CMDS) DSN('SYS3.CA7.PROD.COMMDS') SHR REUSE"
upper passcmd /* CA-7 demands upper case commands */
passcmd = strip(passcmd,L,",") /* in case the user put in an extra ,*/
/**********************************************************************/
/* don't let an "frjob" go by without a "schid" or it will be too big!*/
/**********************************************************************/
if pos("FRJOB",passcmd) > 0 &,
pos("SCHID=",passcmd) = 0 then do
address ispexec
zedlmsg = 'When using the FRJOB command, you must supply ',
'a SCHID=nnn parameter or the command will be ',
'too resource intensive.'
"setmsg msg(utlz001w)"
exit
end
zedlmsg = 'Calling CA7 with command:' passcmd
address ispexec "control display lock"
address ispexec "display panel(msgpanel)"
queue '/LOGON'
queue '/PROFS,ID=' ¦¦ sysvar(sysuid) ¦¦ ',R=CA70255'
queue PASSCMD
queue '/LOGOFF'
"execio" queued() "diskw sysin (finis)"
ADDRESS ISPEXEC "SELECT PGM(SASSBSTR) PARM(0,POOL=(1-8))"
"execio * diskr sysprint (stem result. finis)"
"FREE DD(SYSIN, SYSPRINT, UCC7CMDS TEMPCA7)"
drop null.
if ismacro = 'yes' then do
j = result.0 - 5 /* this gets rid of trailer lines*/
address isredit
do i = 14 to j
line = substr(result.i,2) /* this gets rid of carriage control */
"line_before .zfirst = msgline <1,(line)>"
end
end
else
do
tempdsn = sysvar(sysuid) ¦¦ '.tempca7.d' ¦¦ date(j) ¦¦ '.t' ¦¦ time(s)
address tso
"ALLOC DD(TEMPCA7) DSN('"TEMPDSN"')",
"NEW",
"VOLUME(WRK$$$)",
"SPACE(1,1) TRACKS RELEASE",
"RECFM(F B A) LRECL(133)"
"execio * diskw tempca7 (stem result. finis)"
"FREE DD(TEMPCA7)"
address ispexec
"edit dataset('"tempdsn"')"
end
exit
/**********************************************************************/
/* The following procedure gives a few handy CA7 commands that can */
/* be executed via CA7CMD. This list is, by no means, exhaustive */
/* but can be expanded as people think of good example commands. */
/**********************************************************************/
cmd_help: procedure
arg ismacro
if ismacro = "NO" then do
jobstr = ",JOB=xxxxxxxx"
address tso "clear"
end
else do
jobstr = ""
address ispexec "control display lock"
end
say "CA7CMD - Example CA7 commands"
say ""
say "Here are some example CA7 commands that you may find helpful. To have this"
say "list updated, see someone on the Tools team."
say ""
say "LJOB"jobstr",LIST=TRIG"
say " This command shows all the jobs which trigger this job and which this"
say " job triggers"
say "LJOB"jobstr",LIST=RQJOB"
say " This command shows all the requirements that this job has. This is"
say " where you find job dependencies and negative dependencies."
say "LJCL"jobstr
say " This command shows you in which library this job resides as far as"
say " CA7 is concerned. It also shows you the JCL that CA7 has for that"
say " job right now. *** if you don't enter a command, this is the default"
say "LJOB"jobstr",LIST=DEPJ"
say " This command shows a list of all jobs that are dependent on the job"
say " being displayed, including negative dependencies"
say "LJOB"jobstr",LIST=RQUSR"
say " This command lists any user requirements on the job"
say "LJOB"jobstr",LIST=NODD"
say " This command shows everything except STEPDD information"
say "LJOB"jobstr",LIST=SCHD"
say " This command displays schedule information (works on base"
say " calendar jobs only)"
say "LJOB"jobstr",LIST=RQVRM"
say " This command displays Virtual Resource Manager requirements for"
say " a job"
say "LDSN,DSN=USC10.SLSS.MASTER,LIST=USERS"
say " This command lets you find out which jobs use a specific dataset"
say "LRLOG"jobstr",DATE=*"
say " This command shows the last 5 day's runlog for this job"
say "LPRRN"jobstr
say " This command shows detail about the last run for this job"
say "FSTRUC"jobstr",SCHID=nnn"
say " This command shows the subsequent job triggering path starting at"
say " this job"
say "FRJOB"jobstr",SCHID=nnn"
say " This command shows which base calendar job will eventually trigger"
say " this job. Note: it requires a SCHID!"
say "*** Press twice to return ***"
pull stuff
return 0
|
|