SDSF
Introduction
SDSF - System Display and Search Facility is a utility on the z/OS systems that can allow you to go through the various types of logs on the z/OS system, including logs from different systems within a Sysplex.
It's a window into the z/OS system (or sysplex) that provides the data centre personnel the information they need to perform all of their day-to-day duties.
There are many things that can be monitored from within SDSF
- Activity related to job input / output, Started Tasks, TSO users
- Devices and system resources
- JES devices
While at first SDSF was only available for systems operating with JES2, z/OS 1.10 has introduced the ability for JES3 systems to also make use of SDSF.
The notes here will provide information for JES2 systems only
Some of the things you can do with SDSF include
- Print job output
- Display details of an active TSO user
- Search for information in the system log
- Cancel a job that is executing
Contents
The SDSF menu has many entries and it shouldn't be hard to see how some of them correlate to the JES2 process
- DA
- Displays jobs that are currently being processed
- I
- Displays the input queue - the jobs that have been submitted to the system, including held jobs that you can release
- O
- Displays the output queue - things from the jobs that have finished processing
- H
- Displays the held output queue
- JG
- Displays information about jobs that are related to each other within a group
Some other entries in the menu allow you to manage more things:
- PR
- Allows you to view and manage printers in the system
- LINE
- Allows you to view and manage the status of JES lines
- NS
- Allows you to view and manage the LOGON and NETSERV devices
The menu also includes various system and resource management entries
- RM
- Resource monitor shows the JES2 resource usage such as TGs (Track Groups), JOEs (Job Output Elements) and JQEs (Job Queue Elements)
- LNK
- Provides information on Link Data Sets
- PARM
- Provides details on the PARMLIB data set concatenation
- PROC
- Displays the procedure libraries used by JES2 and the procedure library sequence concatenation
Accessing and using SDSF
Apart from the interactive version, you can also access SDSF in the following ways
- Batch jobs invoking the SDSF or ISFAFD programs
- Through the REXX programming language
- Through the Java programming language
As mentioned, batch jobs can be used to invoke SDSF, for example to avoid losing time by retyping the same SDSF commands for commonly performed tasks.
JCL can be defined to use either the SDSF or ISFAFD utilities, with the main difference between the two being that ISFAFD accepts overtyping the commands and the us of the PF keys.
The ability to use REXX programs to interact with SDSF was introduced in z/OS 1.9 while the ability to use Java was introduced in z/OS 1.12
The interactive version of SDSF can be accessed directly from TSO using the SDSF
command, however it is recommended to use ISPF and select the appropriate item there.
SDSF menu
How the SDSF menu will look for you after you start it will depend on the authority that was assigned to the user ID you are using and not all options might be available for you.
As the SDSF menu is hierarchical, not all options will be available from the first, topmost menu, and some options might be available from multiple entries in that top menu.
When in the menu, you can use TAB to move your cursor to the option you want to enter and press ENTER.
Alternatively, you can type the name of the option into the command line, and enter that way.
Most of the data in SDSF will be presented in the form of a table with each row being one entry, consisting of many columns.
Pressing ENTER will refresh the data on the screen.
Columns
The columns that are displayed by default when you first enter SDSF are called the primary field list.
You can use the ?
command in order to see the alternate fields that were configured for this SDSF panel. After entering the command, some columns will remain in place, while the new, alternative columns will be displayed on the right and highlighted. Entering the command again will revert to the primary columns
in a Sysplex environment, activity from multiple systems will be shown together, with the SYSNAME column showing which system the entry belongs to.
Colours within the columns
- White
- by default this indicates that the item is currently active
- Fields within this item that are RED can be overtyped
- Blue
- This indicates that the item is not performing any activity
- Fields within this item that are GREEN can be overtyped
Pop-Up boxes
If SDSF is ran under ISPF, many commands can be entered that will display a pop-up box that will contain more information and sometimes allow for things to be changed or defined in an interactive way.
For example ARRANGE ?
will display a the popup.
Most of the commands that will display a popup are with the ?
sign.
if incorrect values are entered in the popup box, it should display an error message and give you a chance to remedy the incorrect values.
Action bar and SET SCREEN
Apart from the command line, the action bar at the top of the screen can also be used to interact with the SDSF.
To interact with it, you can place the cursor over the items on it and press ENTER. Depending on the setup, you might be able to use the mouse to achieve this as well.
Doing so should open a popup for the selected action bar item. Within that popup you can place the cursor on one of the options, or type the number next to it and press ENTER in order to select it.
Note: If the number next to an option is replaced with an *
this usually indicates that this option cannot be selected right now. If an option ends with ...
then selecting it will display another popup prompting you for more information.
Most of what can be achieved with the action bar can be achieved with typed-in commands, and you might want to disable the action bar in order to give more space for the actual entries to be displayed.
To open a popup that will allow you to disable the action bar, you can enter the SET SCREEN
command.
This pop up also allows you to customise the default point-and-shoot settings
To edit the colours, highlight and the intensity of the entries being displayed, the same SET SCREEN
command can be issued.
The lower part of the popup will contain separate settings for the Colour of the text, the type of highlight to be used and the intensity. Separate settings can be applied to
- Title line
- Command input line
- Column headings
- Message lines
- Information lines
- Different types of input and output fields.
If you need to restore a value to the default, simply erase the current value.
The F5 key can be used to refresh the window content and ENTER can be used to confirm any changes
For example the top line with the paging, I/O and CPU stats is the Title Lane
PF Key shortcuts
Many actions can be done with the PF keys
If running under ISPF, in order to display what can you do with them you can use the PFSHOW
command.
In order to hide the help you can use the PFSHOW OFF
command and to modify the function key values you can use the KEYS
command.
The PF3 key or the END
command can be used to go 'up' a level, while the PF4 key or RETURN
will immediately put you back at ISPF or TSO.
PF11 will scroll the columns, letting you see more information
HELP
Help specific to the panel you're at can be displayed by pressing the PF1 key.
If accessed through ISPF, you can also issue TUTOR
in order to get an interactive tutorial on using SDSF.
The SET CURSOR
command
The SET CURSOR
command can be used in order to determine what happens to the cursors position after you press ENTER.
- SET CURSOR OFF will place the cursor back on the command line each time you overtype and confirm with the ENTER key.
- SET CURSOR TOP will place the cursor back on the command line, BUT it will also scroll the line that the command was entered on to the top
- SET CURSOR ? will display a popup that lets you select an option in an interactive way
- SET CURSOR ON will place the cursor on the same line that it was before you pressed the ENTER key to confirm overtyping. (back to the NP field for example)
The SET CONFIRM
command
The SET CONFIRM
command can be used in order to prevent commands that can purge jobs and output being issued accidentally.
After issuing SET CONFIRM ON
, a confirmation popup will appear every time you issue a command such as CANCEL or PURGE.
Purging a job can be achieved by typing in P
in the NP field on the line of a job.
SET CONFIRM OFF
will disable the confirmation popup from appearing each time a dangerous command is entered while SET CONFIRM ?
will allow you to check the status of the confirmation popup setting.
The SET BROWSE
command
After tabbing over to an entry on the list and pressing ENTER, the default browsing action will happen.
This could be S
(SDSF browse) ,SB
(ISPF browse) or SE
(ISPF edit)
The SET BROWSE ?
command will display a popup menu that will allow you to define the default option for this situation
SET BROWSE NONE
can be used to make it so no action is taken by deafult
The SET FFPS
command
This command allows you to set the Point-and-shoot behaviour of the SDSF session (note that set screen is still used for the defaults)
For example SET FFPS ON
will enable the point-and-shoot feature
The SET PAS
command
This command is an alias for the SET FFPS
command above, they act the same
The SET ACTION
command
When displaying most of the SDSF screens you can type in a short command into the NP field (or as mentioned in previous section, just press enter)
In order to see what short commands can be entered in the NP field, you can use the SET ACTION ON
command in the command line
There are a few variations of this command:
SET ACTION SHORT
will display just the commands without their descriptionsSET ACTION LONG
will also display the descriptionsSET ACTION ?
will, as expected display a popup to interactively decide what you want to seeSET ACTION
with no extra things after it will default to displaying the action charactersSET ACTION OFF
will hide the extra information when you don't need it anymore
Invoking REXX on a SDSF row
By using the % character in the NP row, you can also invoke a REXX program on it.
You can specify the program to be ran (and any parameters to be supplied to it) directly in the NP field, or you can provide just the % character alone. This will display a popup that will let you populate the rest of the information.
Auto-refresh of the data
As you might know, pressing the ENTER key, will refresh the data visible on the screen.
The use of &
character in the command line followed by a number of seconds will automatically refresh the values shown.
For example &10
will refresh the shown panel every 10 seconds.
The updates can happen between every 2 and 999 seconds.
This can be stopped by pressing the RESET
key and PA1, (or if at a SNA terminal, the Attn key)
Entering JES / MVS commands from SDSF
Sometimes you might want to run a quick JES or MVS command while in SDSF.
This can be achieved, by prefixing the command with the /
character typing it into the SDSF command line.
For example:
/D R,L
After executing the command, there should a confirmation of it in the top-right corner of the screen.
If you need to enter a command that is longer than the COMMAND line in SDSF, then you can put the +
sign at the end of the command. This will display a panel that will allow you to extend the entered command.
Checking if you're authorized
If you enter a command, you might not receive the response you expect, or have an error message in the top-right corner.
If this happens, it might be because you're not authorized to use that command.
In order to display the commands you're authorized to use you can use the ```
QUERY AUTH
Another command that can be useful in checking your authorization, is the
WHO
command. This command will display the current version of several products associated with the data that is associated with what SDSF displays, as well as the group name linked to the security privileges that you have.
Printing data from SDSF
There are many commands that you can use to print things from within SDSF
There are 3 main steps in printing
- Define where to print to
- print request can be sent to SYSOUT, a data set of your choosing or to a pre-allocated ddname
- Print the data
- There are many commands that can achieve this
- Stop the print process
- This will free up whatever was opened for the printing process
PRINT
or PRINT OPEN
can be entered on any SDSF panel and will use the default SYSOUT data set. If successful you'll have a message in the top right.
Some other examples include
PRINT OPEN T 3 STD2
- print open can have extra parameters that describe the data set to be printed to. T indicates the class of the sysout, 3 specifies the number of copies required and STD2 defines the special forms required. If they are not entered, the defaults for your system will be used.
PRT SYSOUT
- print can be shortened to PRT, or even PT, the SYSOUT added at the end will open a panel that will allow you to configure the attributes, instead of you having to type them in alongside the command, or using the defaults for the system.
PRINT ODSN datasetName
- If you already have a dataset that you'd want to print to, you can specify it like so. The existing data in the dataset will be overwritten Extra parameters can be added, but it might be easier to just use the next command
PRINT DATASET
- This will display a panel that will let you specify the data set, new or existing and some additional attributes for it.
PRINT FILE
- This command display a panel that will let you specify what ddname the screen should be printed to.
So for example to open a sysout data set by default and define an output class (in this case S) you can use
PRINT OPEN S
or
PRT SYSOUT
Apart from entering the commands, you can also enter a short command into the NP field to print output of a job
X
will open the default sysout dataset and print the job output into itXD
will open the same panel asPRINT DATASET
XF
will open the same panel asPRINT FILE
AddingC
to the end of those commands will also automatically close the print for you.
There are a few ways of printing the screen image
if under TSO, you can enter the PRINT SCREEN
command, which will send a copy of the current screen into the sysout or dataset that was defined as the print location
Under ISPF, there are a few options you can use:
PRINTL
will send a snapshot of the logical screen to the ISPF list filePRINTLHI
will do the same, however, it will also bolden any high intensity text on the screenPRINT-HI
will send the physical screen to the ISPF list file and make hight intensity text bold
When viewing the output, you can choose to print only parts of it, for example
PRINT 11 25
will print the contents of the currently viewed output, starting at line 11 and finishing at line 25.
The first number can be replaced with an *
which would indicate the current top of the screen. In this case, the second number will not be an absolute line number, but the number of lines to print.
Additional commands can be used when viewing the log to pint only parts of it, for example the timeframe from which the log should be printed
PT 21:00:00 04/15/2024 22:00:00 04/15/2024
this command will print the log entries from the specified time frame (1 hour) The date part can be omitted and will default to the current day.
To be able to finish printing you need to close the print operation. This will usually be done on logout, but if you want to do it sooner, you can do so manually with
PRINT CLOSE
Filtering
SET DISPLAY command
If you have entered a new panel, and you see only a few entries, there is a good chance there is a filter applied.
You can type SET DISPLAY ON
to display the current viewing filters. They will be shown just below the command line.
There will be a few values there
- PREFIX
- This will let you specify the names of the jobs, started tasks or TSO users to be displayed. You can use * as a wildcard (for example XD* will display all of them starting with XD)
- DEST
- This filter is used to display the input, processing or output destination of the displayed item
- OWNER
- This allows you to filter by the owner of the item
- SYSNAME
- This will filter by the jobs/etc executing on a specific system
Similarly SET DISPLAY OFF
will hide this information (without disabling the filters)
PREFIX command
PREFIX
or PRE
command will allow you to specify the jobs displayed to use the prefix filter
PREFIX TEST
will only show jobs/etc that have the exact name of TESTPREFIX TEST*
will show jobs/etc that have the exact name of TEST OR have a name starting with TESTPREFIX
on it's own will reset this filterPREFIX ?
will display a pop-up window that lets you configure it interactively
DEST command
You can set the DEST filter in a similar way
DEST R422
will set the filter to only display output to be printed on remote printer 422 (R422), you cna also specify a node number, node name or LOCAL value here and it will accept up to 4 destinationsDEST + R422
this will add another parameter to the filter already active, without overwriting it.DEST - R422
will remove a parameter from the current filter without disabling it completelyDEST
on its own will completely reset the filterDEST ?
will again allow you to interactively configure the filter
OWNER command
The same scheme as the PREFIX applies here
OWNER JJDEV1
will only display jobs of said devOWNER PROD*
will display jobs of all users whose names start with PRODOWNER
will clear the filterOWNER ?
will configure it interactively
SYSNAME command
This one is useful in Sysplex situations, where SDSF might be able to pull logs from multiple systems at once and the same scheme applies
SYSNAME TEST
will display logs from the TEST systemSYSNAME TEST*
will display logs from systems whose names start with TESTSYSNAME
will clear the filterSYSNAME ?
will configure interactively
SELECT command Temporary filter override
In some cases, you might have multiple filters set but want to quickly check the unfiltered log, without completely disabling the filters you currently have
The SELECT
or S
command can be used to perform that.
SELECT ANT*
will temporarily filter by looking for entries with names starting with ANTSELECT
will disable this temporary filter
FILTER command
While the filters shown before are nice and good, you can use the FILTER
command to create more complex and advanced filters
FILTER <Column name> <filter type> <value>
is the general structure of the filter command
for example
FILTER MAX-RC EQ ABEND*
will apply a filter where the value in MAX-RC column is EQual to the pattern ABEND* (begins with ABEND)
When running SDSF under ISPF, the FILTER ?
command will display a pop-up window that will let you show the current filters and add new ones.
This will allow you to define many filters and a AND/OR relation between the filters
If not under ISPF, you will not be able to add new filters with this command.
FILTER OFF
can be used to temporarily disable the filtering, FILTER ON
will re-enable it.
All filtering options can also be accessed from the action bar on the top of the screen
Searching for data
Displaying Alternate fields
On SDSF panels with tabular data, there will be columns displayed, additional attributes can be accessed by typing in ?
in the command line, or by simply scrolling right with the RIGHT
command (or the PF) keys.
Note that the primary and alternative fields can be configured by the admin
Column numbers
In order to look for text in a specific column number range you can use a "ruler" that displays the number of the column above it
You can enable it with COLS
and disable with RESET
FIND command
the FIND
or F
command can be used to search (from top to bottom) through the data
For example when you are viewing the SYSLOG and need to search that this specific job has run you can issue
FIND A#CLNRES
This will find the first instance of the text and place the cursor on the first letter of the text (and show a message in the top right corner of the screen)
To look for the next instance you can issue the IFIND
command, or press the F5 key.
If you want to find the last reference to something, you can scroll to the bottom of the log.
You can do that quickly by using the M
command and pressing F8 (the scroll down key).
Afterwards you can issue the FIND
command with the PREV
parameter to look for the previous instance of the thing you're looking for. For example:
FIND A#CLNRES PREV
And again, the F5 key or IFIND
command can be used to repeat that
There are more things you can specify in the FIND
command to make more complex searches, for example
- To search for a string, which includes spaces you enclose it like so:
FIND 'some text'
- To search for an entire word (so partial matches won't be displayed) you can use. In this example only the full matches to the work JOB will be ok
FIND JOB WORD
- To search only in a specific column range you can use this. In this example it will look only between columns 45 and 55
FIND TEST 45 55
- To include the number of found instances in the top right corner message supply ALL
FIND TEST ALL
- To find the last instance of data supply LAST
FIND TEST LAST
- To search for hex values, format it like this
FIND x'0beef'
Unsuccessful FIND requests
Sometimes you might not FIND what you asked for, there are two scenarios like that
- Message in the top right corner will tell you that there were no results found
- Message in the top right corner will say "X records searched" which indicates that the no instance of what you searched for was found, however not all data was searched because a default limit was hit. Hitting the F5 key will search the next X amount of data
Changing the FIND limit
If you want to change the limit that was mentioned in the second situation above, you can use the
FINDLIM
command, either by using it together with a number to determine the limit or interactively as FINDLIM ?
LOCATE command
Sometimes you might not be able to FIND what you want. The LOCATE
command may be useful. It is also able to scroll to the correct column or line
LOCATE 225
will locate the specific line (line number 225) in the dataLOCATE 22:20:51
will jump to the timestamp provided (can also include date)LOCATE MAX-RC
will jump to the column labeled MAX-RC
Arranging data
ARRANGE Command
The ARRANGE
or ARR
command can be used to modify in which order columns are displayed on the display, as well as to change the width of columns
You can use ARRANGE ?
to configure this interactively
Within this menu, you can select which column you want to move by typing / next to it and A (after) or B (before) next to the column you want to move it next to.
You can also move blocks of columns, by using // instead at the start and end of the block.
Next to that, you can also change the width of the columns by typing in numbers.
The menu allows you to perform some additional actions, which are explained within.
The pop up window can also be accessed from the top menu bar in VIEW - Arrange
option.
You can also make changes to the arrangement from the command line
- To set column 123 after column 456 use
ARRANGE 123 a 456
- To set the TOT-PAGE column to be the first one in order
ARRANGE TOT-PAGE FIRST
- To change the width of the CRDATE column
ARRANGE CRDATE 12
- To set things back to default
ARRANGE DEFAULT
Sorting data
Sorting by column value
The easiest way to sort data is to select a column by placing the cursor over it and pressing enter. Doing it again will change the order in which the things are sorted.
SORT command
Another way to sort things is with the SORT
command.
You can use SORT ?
to interactively configure it.
SORT allows you to set up to 10 sorts in order (for example first sort by the job name and then sort the jobs with the same name by the CPU% they use)
The pop-up menu can also be accessed from the top menu bar in VIEW - SORT
option.
You can also use the SORT
command directly, for example
- To sort by the first fixed column simply issue
SORT
- To sort by the DEST column in the descending order issue
SORT DEST D
- To set multiple sorts, put them in order like
SORT OWNER A TOT-REC D
- To disable sorts you have set use (this will disable sorting but keep the sorts you have set)
SORT OFF
Log types on the system
SYSLOG
OPERLOG
ULOG
Another type of log that is available to most users is the User Log ULOG.
Operating the SDSF server
SDSF is automatically invoked during system initialization and as part of this process a SDSF server is started. This server is used for:
- Processing ISFPARMS statements which are used for defining the global SDSF options and panel formats
- Gathering and displaying sysplex-wide data for JES2 devices
It is recommended that the ISFPARMS statements (usually stored in the ISFPRM00 member of the PARMLIB ) are used in preference to assembler macros.
The benefit of storing them in this format is that they are easier to define and are more dynamic as they can be invoked without link-editing or reassembling.
The SDSF servers that reside in a Sysplex communicate via the XCF facility. The ISFPARMS contains the CONENCT statement necessary to define the server connection.
From z/OS 1.10 SDSF can also be configure to be used with JES3.
Most of the SDSF panels available under JES2 are also accessible from JSE3.
There are a few JES3 specific panels that are also availabel in SDSF:
- JESPLEX
- allows you to control members in a JES3 JESPLEX
- Job 0 panel
- Displays details about the JES3 Job 0
Entering SDSF commands
Invoking any MVS commands within SDSF requires the / prefix, the same commands discussed below can be entered in the System console without the prefix
Handling problems
Authorization in SDSF
A common problem reported by SDSF users is that they are not able to display the information they require.
The first step in tackling those issues is to determine the authorization level the user is on.
This can be done with the use of the WHO
command.
The information returned after running this command will include the authorization group that you (their user issuing the command) is assigned to.
When looking at ISFPARMS and the group that the user belongs to you will find many areas that relate to authorization.
If a user cannot access a specific SDSF option, your should check the AUTH field and see if the option has been specified
If the problem is associated with the user not being able to enter any MVS or JES commands, then you should check the CMDAUTH field parameter for the group they are assigned to and see if it is set to ALL
SDSF Abends
If SDSF Abends (abnormally ends) then clearly there was something that went really wrong.
The following data should be gathered
- A dump (it will most likely have been created already )
- The messages or abend codes associated with the event
- Any relevant activity that was happening at the time the problem occurred
- Any SDSF trace data that was captured
If a user has issues with their session and they have high enough authority, they can issue
ABEND
themselves. This will result in their SDSF session ending with a user code of 222 and a dump being taken. Note that this will not bring down the entire SDSF product, justend the session for that particular user.
A trace can also be run on SDSF, it can be done with the MODIFY
command as shown in the section above.