These utilities are probably the most time saving tools I have. They are indispensible at our shop. They provide a way to find various source members such as production job JCL, job documentation, embedded procs, extract and operate on dataset names found on the screen, and find rexx/clist source from your TSO concatentation.
The first command is the "FJ" or FindJob command. This command finds jobs in the production scheduler job JCL libraries. You can point to any jobname on any screen to pass the jobname you want to find. So from any screen, you can enter "FJ" on the command line, put your cursor on a job name elsewhere, and hit enter. Additionally, if you have a jobcard displayed on your screen (say from IOF/SDSF), you can put your cursor anywhere on that jobcard and hit enter (in other words, you don't have to put the cursor on the actual job name on the jobcard). You can also pass the jobname you want to find as a parameter to the command ("FJ xxxxxx" to go directly to job xxxxxx). The default action for this command is to view the job. If you'd rather edit the job so you can make changes to it, you may add the "E" parm to the command, like so: "FJ xxxxx E", or "FJ E" and put your cursor on a jobname or jobcard.
The second command is the "FC" or FinddoC command. This works exactly the same way as the "FJ" command, except that it goes after job documentation if you store the doc in standard PDS libraries. If not, you will have to alter the program to work with your source.
The third is the "FP" or FindProc command. If you aren't in an edit session, the command will only find procs in the system proclibs. If you are in an edit session, and you want the command to search for private proclibs in the job, enter the command as ">FP". In this case, the job will also seach any JCLLIB or PROCLIB datasets in the job for the proc. The ">" char tells the system that you are running this command from an edit session, and to look for the private JCLLIBs elsewhere in the edit member.
You may also pass the proclib you want to find as a parameter to the command ("FP xxxxxx" to find proc xxxxx, or ">FP xxxxxx" if you are in an edit session). As with the FJ command above, if you'd rather edit the proc, simply add the E parm to the command ("FP E" or "FP xxxxxx E"; or ">FP E" or ">FP xxxxxx E" from an edit session).
This command
will also work if you are browsing a job's msg dataset in IOF/SDSF. If you see a message like:
IEFC001I PROCEDURE xxxx WAS EXPANDED USING SYSTEM LIBRARY SYS2.PROCLIB
you may put your cursor anywhere on this line to go directly to the proc in the library specified. The only thing you have to make sure of is that the library and proc name are both fully visible on the screen before you enter the command.
The forth is the "FD" or FindDataset command. It will find any dataset that you point to on any screen. If you are editing some JCL, and you want the command to perform symbolic substitution before finding the dataset, you must enter the command as ">FD". You may also pass the dataset name directly to the command ("FD 'xxx.yyy.zzz'").
This command takes an action parameter like the previous commands. It is one of the following single chars:
The default for the FD command is to view the dataset. If you want to override this, enter one of the other chars. So to do a listcat on a dataset, put "FD L" on the command line (or ">FD L" if you are in edit and want symbolic substitution), and put your cursor on a dataset name elsewhere on your screen. As another example, if you have a personal JCL library called userid.JCL, you can enter "FD JCL E" to quickly edit the lib.
In order to perform the symbolic substitution, I have used a ZOOM edit macro that I got from the CBTTape, file 671. It has been altered slightly from the original to interface with the FDSN exec.
The fifth is the "FR" or FindRexx command. It will find rexx programs or clists concatenated to your TSO session to DDs SYSEXEC or SYSPROC respectively. This will allow you to quickly find rexx programs and edit them without having to figure out where they are being loaded from. Again, as with the other commands, you can point to the exec to search for if it's elsewhere on the screen and you are exceptionally lazy like me.
I also have an "FS" command for Find SAS Source. It is only partially build, but if you are
familiar with SAS, it will look for:
%INCLUDE SOURCLIB(xxx)
and find the source from the concatenated SAS source libs. This works fine in our shop, but we aren't a big SAS user and our source libs are predictable. If you have a complex SAS installation with many different source libs, this may not be practical.
So let's say you're in IOF viewing some jobs:
------------------------------ IOF Job List Menu -------------( 1 )------------
COMMAND ===> fj SCROLL ===> CURSOR
--------------------------------- Output Jobs ---------------------------------
-------JOBNAME--JOBID--ACT-STAT-OWNER----DEST/DEVICE--------RECS-HELD-DAY--TIME
_ 1 SAMPJOB J07922 MA133 NODE001 90 081 11:38
If you were to place "FC" on the command line, put your cursor on SAMPJOB, and hit enter, you would be placed in the job doc for this job (not set up in this case). If you placed "FJ" on the command line, you'd be placed into edit for the job:
VIEW MA133.TSO.SAMPLIB(SAMPJOB) - 01.00 Columns 00001 00072
Command ===> >fp e Scroll ===> CSR
****** ***************************** Top of Data ******************************
000001 //SAMPJOB JOB (1005303),'MCTS SAMPLES',
000002 // CLASS=P,MSGCLASS=X,REGION=8M,NOTIFY=&SYSUID
000003 //********************************************************************
000004 //* THIS JOB CAN BE USED TO TEST OUT THE FJ AND NJ COMMANDS *
000005 //********************************************************************
000006 //HLQ SET HLQ=MA133.TSO
000007 //JCLLIB JCLLIB ORDER=(MA133.TSO.SAMPLIB)
000008 //STEP1 EXEC SAMPPROC
000009 //
****** **************************** Bottom of Data ****************************
Now let's say you wanted to edit the SAMPPROC proc. Notice how it's in the JCLLIB dataset. You place a ">" ahead of the FP command to run it as an edit macro, so it will look for the procs in the JCLLIB. Place your cursor on SAMPPROC and hit enter. The result will be the next panel:
EDIT MA133.TSO.SAMPLIB(SAMPJOB) - 01.00 Columns 00001 00072
Command ===> >fd Scroll ===> CSR
****** ***************************** Top of Data ******************************
000001 //SAMPPROC PROC HLQ=MA133.TSO
000002 //STEP1 EXEC PGM=IEFBR14
000003 //DD1 DD DSN=&HLQ..SAMPLIB,DISP=SHR
000004 //REPORT1 DD SYSOUT=(C,WTR1)
000005 //REPORT2 DD SYSOUT=(D,WTR2),DEST=R1
000006 //STEP2 EXEC PGM=IEFBR14
000007 //DD2 DD DSN=BAD.DATA.SET,DISP=SHR
****** **************************** Bottom of Data ****************************
Now we want to zoom in on the DD1 dataset. We need symbolic substitution, so we prefix the FD command with a ">" to run it as an edit macro. This will give us the next display:
VIEW MA133.TSO.SAMPLIB Row 00001 of 00012
Command ===> fd l Scroll ===> CSR
Name Prompt Size Created Changed ID
. $INSTALL 33 2004/02/17 2004/03/14 17:13:58 MA133
. $INSTAL2 41 2004/03/14 2004/03/14 17:18:32 MA133
. $IVP 58 2004/03/14 2004/03/14 17:22:16 MA133
. #INMACRO 13 2004/02/17 2004/03/14 16:55:00 MA133
. #INREXX 17 2004/02/17 2004/03/14 16:54:40 MA133
. FTPPDS 46 2004/03/14 2004/03/14 15:57:44 MA133
. ISPBATCH 39 2004/02/17 2004/03/14 15:06:00 MA133
. SAMPJOB 9 2004/02/24 2004/02/24 12:33:14 MA133
. SAMPPROC 7 2004/02/24 2004/02/24 13:47:20 MA133
. TSOBASIC 11 2004/03/14 2004/03/14 16:50:07 MA133
. TSOBATCH 8 2004/02/17 2004/03/14 15:04:11 MA133
. ZPDSLIST 11 2004/02/19 2004/03/14 17:22:45 MA133
**End**
Next you decide to do a listcat on the SAMPLIB dataset. In this case you won't be running it as an edit macro, so you can simply place "FD L" on the command line and put your cursor on the line above to point to MA133.TSO.SAMPLIB.
If your shop is structured so that you can use these commands, you will find them incredibly liberating. Your production will increase greatly. Please et me know what you think!
Return to the utilities page.