skip to content

TSO/ISPF Navigation

Complete ISPF menu options, primary commands, line commands, edit profile, utilities, DSLIST, SDSF, TSO commands, RACF, and keyboard shortcuts.

16 min read 17 snippets 2d ago

TSO/ISPF Navigation#

ISPF Primary Menu#

OptionPanelNotes
0SettingsISPF profile, terminal, PF keys
1ViewRead-only browse with limited commands
2EditFull edit β€” JCL, source, data
3UtilitiesDataset, member, and system utilities
3.1LibraryCopy/move/compress PDS members
3.2DatasetAllocate, rename, delete, catalog datasets
3.3Move/CopyMove or copy entire datasets
3.4DSLISTList datasets matching a pattern
3.5Reset StatsReset member modification statistics
3.6HardcopyPrint utility
3.7DownloadTransfer dataset to PC (IND$FILE)
3.8OutlistManage print output
3.9MemberlistList and select PDS members
3.10Search-ForSearch for a string across PDS members
3.11FormatISPF format utility
3.12SuperCExtended search and compare
3.13SuperCESuperC with modify/update capability
3.14ConvertConvert sequential ↔ PDS
3.17HDRBMLabel/rename DASD volumes
4ForegroundRun COBOL, ASM, PL/I compilers interactively
5BatchSubmit compile/link-edit to batch
6TSO/EEnter TSO commands directly
7Dialog TestTest ISPF dialogs and panels
8LM UtilitiesSCLM / Library Manager
10SCLMSoftware Configuration and Library Manager
11WorkplaceAlternate ISPF Workplace shell
SSDSFSpool Display and Search Facility
BBookManagerIBM online documentation
XExitExit ISPF

Direct navigation: type the full option path at any prompt β€” e.g., 3.4 or =3.4. From a nested panel, =2 jumps directly to Edit, =3.4 to DSLIST, =6 to TSO. =X exits ISPF from anywhere.

Split screen and logical screens#

Key / CommandAction
F2Split screen horizontally at cursor row
F9Swap between active split panes
F3End / return one level
SWAPToggle between logical screens
SWAP LISTList all open logical screens
SWAP nJump to logical screen number n
SWAP NEXTSwitch to next logical screen
SCRNAME nameName the current logical screen
RESIZEResize split at new cursor position
SPLITSame as F2 β€” split at cursor
ENDClose current panel (with save in Edit)
RETURNReturn to previous menu level

Settings (option 0)#

Key settings in the ISPF Settings panel:

SettingPurpose
Command delimiterCharacter that stacks commands (; A ; B)
PF key definitionsReassign all 24 PF keys
Display/terminal mode24Γ—80, 27Γ—132, 43-line, etc.
Confirm on delete/replacePrompt before destructive operations
Mixed modeAllow lowercase EBCDIC in edit
Scroll amountPAGE, HALF, DATA, CSR, or n lines
Always/never expandMember list behavior
Log/list defaultsWhere ISPF LOG and LIST go

Edit and View β€” primary commands#

FIND string [options]
  options: WORD PREFIX SUFFIX FIRST LAST ALL NEXT PREV CHARS HEX PICTURE
  FIND P'picture-string'       (* ISPF picture pattern: = means any char *)
  FIND X'hex'                  (* find exact hex value *)
  FIND .label                  (* find a labeled line *)
  FIND 'string' WORD           (* whole word only *)
  RFIND                        (* repeat last FIND β€” also PF5 *)

CHANGE old new [range-options]
  CHANGE 'old' 'new' ALL
  CHANGE P'pic1' P'pic2' ALL   (* picture-to-picture replacement *)
  CHANGE X'0D' X'25' ALL       (* replace hex values *)
  RCHANGE                      (* repeat last CHANGE β€” also PF6 *)

EXCLUDE string [ALL]           (* hide lines containing string *)
EXCLUDE ALL                    (* hide all lines *)
EXCLUDE P'pattern' ALL         (* picture-based exclude *)
RESET                          (* un-exclude all hidden lines *)
RESET FIND                     (* clear FIND highlights, keep excludes *)
RESET CHANGE                   (* clear CHANGE highlights only *)
RESET ALL                      (* clear all highlighting and resets *)

FLIP                           (* show only excluded lines; hide visible *)

SORT [field] [ASC|DESC]        (* sort displayed lines *)
SORT 1 10 ASC                  (* sort by columns 1–10 ascending *)
SORT 5 15 C D                  (* sort columns 5–15 descending, Character *)
SORT FIELD(1,8,CH,A,10,5,ZD,D) (* multi-key DFSORT-style *)

BOUNDS left right              (* restrict FIND/CHANGE/SORT to column range *)
COLS                           (* show column ruler *)
NULLS ON|OFF                   (* trailing spaces vs trailing nulls *)
TABS ON|OFF                    (* enable/disable tab stop processing *)
TABS n1 n2 n3 ...              (* define specific tab stop columns *)

HEX ON|OFF                     (* toggle hex display *)
HEX ON VERT                    (* hex below each data line, vertical *)
HEX ON DATA                    (* hex on same lines as data *)

CAPS ON|OFF                    (* force all input to uppercase *)
NUMBER ON|OFF [STD|COBOL|RELATIVE|DISPLAY]
AUTONUM ON|OFF                 (* auto-assign numbers when inserting lines *)
RENUM                          (* renumber all lines sequentially *)
RENUM 10 10                    (* renumber starting at 10, increment 10 *)
UNNUM                          (* remove sequence numbers from all lines *)

PROFILE                        (* display current edit profile settings *)
PROFILE RESET                  (* reset profile to installation defaults *)
RECOVERY ON|OFF                (* enable/disable edit recovery dataset *)
STATS ON|OFF                   (* maintain ISPF member modification stats *)
AUTOLIST ON|OFF                (* auto-expand member list on LOCATE *)
AUTOSAVE ON|OFF NOPROMPT       (* auto-save on END without prompt *)
PACK ON|OFF                    (* data compression for edit *)

HILITE ON|OFF                  (* syntax coloring *)
HILITE JCL                     (* JCL syntax highlighting *)
HILITE COBOL                   (* COBOL syntax highlighting *)
HILITE PLI                     (* PL/I highlighting *)
HILITE ASM                     (* Assembler highlighting *)
HILITE REXX                    (* REXX highlighting *)
HILITE SQL                     (* SQL highlighting *)
HILITE HTML                    (* HTML highlighting *)

IMACRO macroname               (* set initial macro to run on edit entry *)
MACRO macroname [args]         (* run an edit macro interactively *)

MODEL COBOL | PLI | ASM        (* insert a language skeleton template *)

LOCATE label                   (* jump to a line labeled .label *)
LOCATE FIRST | LAST
LOCATE +n | -n                 (* move n lines forward/back *)

LABEL .name                    (* same as prefix-area .name command *)

SETUNDO STORAGE                (* enable undo buffer in storage *)
SETUNDO FORCE                  (* force undo even without RECOVERY *)
UNDO                           (* undo last edit action *)

REPLACE dsn [(member)]         (* replace a dataset with current session *)
CREATE dsn [(member)]          (* save current selection to a new dataset *)

SAVE                           (* save without leaving edit *)
CANCEL                         (* abandon all changes and exit *)
END                            (* save changes and exit *)
SUBMIT                         (* submit current JCL to batch *)
BUILTIN cmd                    (* invoke ISPF built-in even if macro shadows it *)

Edit line commands (prefix area)#

Single-line commands:

CommandAction
I / InInsert 1 or n blank lines after
D / DnDelete 1 or n lines
R / RnRepeat line 1 or n times
C / CnCopy line (pair with A or B destination)
M / MnMove line (pair with A or B destination)
A / AnPaste after this line (n copies)
BPaste before this line
O / OnOverlay β€” paste over n lines (merge)
XExclude (hide) this line
S / SnShow n lines from an excluded block
FShow first line of excluded block
LShow last line of excluded block
UCUppercase this line
LCLowercase this line
TFText flow β€” reformat paragraph at right margin
TSText split β€” break line at cursor position
TJText join β€” join with next line
( / (nShift left 1 or n columns
) / )nShift right 1 or n columns
< / <nShift left (synonym for ()
> / >nShift right (synonym for ))
.nameSet label on line (referenced by FIND/LOCATE)
PPrint line to ISPF list
WWrite (copy) line to a dataset
MDMake dataline β€” strip line number area
MNMake note β€” mark as non-data note line

Block commands (enter the same command on the first and last line of range):

BlockAction
CC … CCCopy block
MM … MMMove block
DD … DDDelete block
RR … RRnRepeat block n times
XX … XXExclude block
SS … SSShow block
UC … UCUppercase block
LC … LCLowercase block
(( … ((nShift block left n columns
)) … ))nShift block right n columns
TF … TFText flow across block
OO … OOOverlay block

Destination commands (used after C/M/CC/MM):

CommandMeaning
A / AnAfter this line (paste n copies)
BBefore this line
O / OOOverlay at this line

Edit profile β€” key settings#

Access with PROFILE command in Edit:

SettingValuesEffect
NUMBERON / OFFShow line numbers in prefix area
AUTONUMON / OFFAuto-number inserted lines
CAPSON / OFFForce uppercase on all typed input
NULLSON / OFFTrailing nulls (allows overtype past data)
TABSON / OFFEnable tab stop processing
AUTOSAVEON / OFFSave automatically on END
RECOVERYON / OFFMaintain recovery dataset for crash recovery
STATSON / OFFTrack/display member statistics (version, changed date)
PACKON / OFFDataset compression
IMACROmacronameMacro that runs automatically when you open a member
HILITElanguageSyntax highlighting language

Change a profile setting inside Edit:

PROFILE CAPS ON
PROFILE NUMBER OFF
PROFILE RECOVERY ON
PROFILE STATS ON
PROFILE HILITE JCL

DSLIST (3.4)#

At the filter prompt enter a pattern (no quotes needed at this prompt):

MY.PROJECT.*        (* HLQ wildcard *)
MY.*.JCL            (* mid-level wildcard *)
'SYS1.PROCLIB'     (* explicit quoted name *)
SYS1.P*             (* prefix match *)

Primary commands in DSLIST:

SORT NAME | VOLUME | TRACKS | EXTENTS | USED | CREATED | CHANGED | DSORG
LOCATE pattern       (* jump to dataset matching pattern *)
REFRESH              (* re-read catalog *)
RESET                (* reset all active line commands *)
SAVE dsname          (* save the displayed list to a dataset *)
PRINT                (* print the list to ISPF list *)
LABEL pattern        (* filter list to datasets matching pattern *)

Line commands against datasets:

CommandAction
EEdit
VView (read-only)
BBrowse
DDelete (with confirmation)
RRename
SSelect / show info
IISPF information (statistics)
CCatalog
UUncatalog
MMove to another dataset
COCopy to another dataset
PPrint
XExecute (REXX/CLIST)
SUBMITSubmit as JCL
PRINTDPrint dataset contents
TSO cmdRun TSO command referencing this dataset
ZBSDSF browse of dataset

Line commands against PDS members (inside a member list):

CommandAction
EEdit member
VView member
BBrowse member
DDelete member
RRename member
SSelect / info
X / GExecute (REXX/CLIST)
PPrint member
SUBMITSubmit member as JCL
SORTSort member list by column

SuperC / Search-For (3.10 / 3.12)#

Search-For (3.10) β€” search a string across all members of a PDS:

Input dataset: MY.SOURCE.LIB
String: CALL MYROUTINE
Member list: *           (* search all members *)
Output dsname: MY.SEARCHOUT

SuperC (3.12) β€” compare two datasets or PDS members:

Old dataset: PROD.JCL.LIB(DEPLOY)
New dataset: TEST.JCL.LIB(DEPLOY)

SuperC comparison types (set via keyword on panel):

TypeCompares
FILEEntire dataset as lines
LINELine-by-line
WORDWord-by-word (ignores spaces)
BYTEByte-by-byte

Output listing marks insertions (INS), deletions (DEL), and changes (CHG).

Useful TSO commands (option 6)#

Dataset listing:

LISTCAT ENT('MY.*.DATA') ALL            (* catalog info for pattern *)
LISTCAT LVL('MY.PROJECT') ALL           (* all datasets under qualifier *)
LISTCAT ENT('MY.DS') VOL               (* volume and VTOC details *)
LISTCAT ENT('MY.DS') HISTORY           (* creation/expiration dates *)
LISTCAT ENT('MY.GDG.BASE') GDG         (* GDG base and generations *)

Dataset allocation:

(* Fixed-block sequential *)
ALLOC DA('MY.FB80') NEW CATALOG SPACE(1,1) CYL +
  RECFM(F B) LRECL(80) BLKSIZE(27920)

(* Variable-block sequential *)
ALLOC DA('MY.VB255') NEW CATALOG SPACE(1,1) CYL +
  RECFM(V B) LRECL(255) BLKSIZE(32760)

(* PDS *)
ALLOC DA('MY.PDS') NEW CATALOG DIR(50) SPACE(5,5) CYL +
  RECFM(F B) LRECL(80) BLKSIZE(27920)

(* PDSE / library *)
ALLOC DA('MY.PDSE') NEW CATALOG DSNTYPE(LIBRARY) DIR(0) +
  SPACE(5,5) CYL RECFM(F B) LRECL(80)

(* Load library *)
ALLOC DA('MY.LOAD') NEW CATALOG DIR(20) SPACE(5,5) CYL +
  RECFM(U) BLKSIZE(32760)

Dataset management:

DELETE 'MY.OLD.DATASET'
DELETE 'MY.OLD.DATASET' SCRATCH        (* uncatalog AND scratch β€” frees DASD *)
DELETE 'MY.DATASET' PURGE             (* delete even if expiration date not reached *)
DELETE 'MY.PDS' MEMBER(OLDMEM)        (* delete single PDS member *)

RENAME 'MY.OLD.NAME' 'MY.NEW.NAME'

FREE DA('MY.ALLOCATED.DS')            (* free allocation without deleting *)
FREE FILE(ddname)                      (* free by DD name *)

COMPRESS 'MY.PDS'                      (* in-place compress PDS *)

Job management:

SUBMIT 'MY.JCL.LIB(MYJOB)'
SUBMIT 'MY.JCL.LIB(MYJOB)' WAIT      (* submit and wait for completion *)
STATUS                                  (* list your active and held jobs *)
STATUS jobname                          (* status of a specific job *)
STATUS jobname JOBID(JOB00123)          (* status by jobid *)
CANCEL jobname PURGE                    (* cancel and delete output *)
OUTPUT jobname CLASS(A)                 (* list held output for job *)

Execution:

EX 'MY.REXX.LIB(MYSCRIPT)' 'ARG1 ARG2'
EX 'MY.CLIST.LIB(MYCLIST)' PROMPT
EXEC 'MY.PGM.LOAD(PGMNAME)'
CALL 'MY.LOAD.LIB(PGMNAME)' 'PARMS'

RACF (if authorized):

LU userid                              (* list user attributes *)
LU userid NORACF                       (* without RACF profile detail *)
LD groupname                           (* list group *)
LISTDSD DATASET('MY.DATASET') ALL      (* list dataset security profile *)
LISTDSD DATASET('MY.**') ALL GENERIC   (* list generic profile *)
PERMIT 'MY.DATASET' ID(userid) ACC(UPDATE)
PERMIT 'MY.DATASET' ID(userid) DELETE  (* revoke access *)
ADDSD 'MY.NEW.DS.*' UACC(NONE)
ADDSD 'MY.PATTERN.**' UACC(READ) GENERIC
RLIST FACILITY BPX.SUPERUSER ALL       (* list general resource profile *)
RLIST OPERCMDS MVS.** ALL
ALTDSD 'MY.DS' UACC(NONE)             (* change universal access *)
SEARCH DATASET('MY.**')               (* find profiles matching pattern *)
DSMON                                  (* RACF dataset monitor utility *)

System information:

PROFILE                                (* display your TSO profile *)
PROFILE MSGID                          (* show message IDs with errors *)
PROFILE NOMSGID
PROFILE PREFIX(MY)                     (* set default dataset prefix *)
PROFILE INTERCOM                       (* enable inter-user messages *)
TIME                                   (* current time and date *)
LISTBC                                 (* display system broadcast messages *)
SEND 'message text' USER(userid)       (* send message to user terminal *)
OPERATOR 'command'                     (* send operator command β€” restricted *)
WHOIS userid                           (* lookup user info β€” if available *)

Primary panels:

PanelShows
STYour jobs β€” active, held, and pending
HHold queue β€” held output
OOutput queue β€” output ready to print
LOGSystem log β€” operator messages
DADisplay active β€” all jobs currently executing
IInitiator display β€” batch initiators and classes
PRPrinter queue β€” active and pending printer output
PUNPunch queue
RDRReader queue
SOSysout held
SRSystem requests β€” outstanding WTO messages
MASMAS / sysplex member display (JES2)
RESReserved resources
ENCEnclave display

Primary commands in SDSF:

PREFIX userid           (* filter by owner β€” PREFIX * for all jobs *)
PREFIX *                (* show all jobs regardless of owner *)
FILTER jobname          (* filter job names matching pattern *)
DEST dest               (* filter by output destination *)
SORT JOBNAME | JOBID | STATUS | CLASS | PRTY | QUEUE | DISP | OWNER
OWNER userid            (* filter by submitting userid *)
ACTION A                (* release held output *)
ACTION C                (* cancel active job *)
ACTION P                (* purge job and all output *)
ACTION H                (* hold output *)
FIND string             (* search visible spool listings *)
ARRANGE                 (* rearrange column order *)
SET DISPLAY ON|OFF      (* toggle display of specific fields *)
SYSNAME system          (* filter by JES2 MAS member *)
OUTL limit              (* limit lines of spool output displayed *)

Line commands in SDSF:

CommandAction
SBrowse spool output (select dataset or job)
?Expand β€” show job’s individual sysout datasets
PPurge job and all output
HHold output
ARelease (action) held output
CCancel active job
EEdit / copy spool output to a dataset
OChange output class
XDDelete individual sysout dataset
XFPrint sysout dataset to a printer
NPPrint next sysout
SJDisplay job β€” show all steps and return codes
LEnter the job log directly
IDisplay job information
JShow JESMSG / JES messages for job
SEStop job execution (FORCE)
STOStop job

Inside spool browse (after S):

FIND string             (* search spool text β€” wraps to start *)
FIND string ALL         (* count all occurrences *)
RFIND                   (* repeat find β€” also PF5 *)
FIND PREV               (* search backward *)
UP / DOWN               (* scroll *)
LEFT / RIGHT            (* scroll horizontally *)
TOP / BOTTOM            (* jump to start/end of spool output *)
HEX ON|OFF              (* toggle hex view *)
PRINT                   (* print current sysout *)

PF key reference#

KeyDefault action
F1Help
F2Split screen
F3End / return
F4Return to Edit
F5RFIND
F6RCHANGE
F7Scroll up
F8Scroll down
F9Swap screens
F10Scroll left
F11Scroll right
F12Cancel
F13–F24Shift+F1–Shift+F12 (alternate set)

PF key assignments vary by site and can be reassigned at ISPF option 0.

Dataset allocation quick reference#

Common ALLOC patterns from TSO option 6:

(* 80-byte fixed-block β€” typical JCL/source *)
ALLOC DA('MY.FB80') NEW CATALOG SPACE(1,1) CYL RECFM(F B) LRECL(80) BLKSIZE(27920)

(* 133-byte print/report lines *)
ALLOC DA('MY.REPORT') NEW CATALOG SPACE(1,1) CYL RECFM(F B A) LRECL(133) BLKSIZE(27930)

(* Variable-block β€” typical data *)
ALLOC DA('MY.VB255') NEW CATALOG SPACE(1,1) CYL RECFM(V B) LRECL(255) BLKSIZE(32760)

(* PDSE library *)
ALLOC DA('MY.SRC.LIB') NEW CATALOG DSNTYPE(LIBRARY) DIR(0) +
  SPACE(5,5) CYL RECFM(F B) LRECL(80) BLKSIZE(27920)

(* Load library *)
ALLOC DA('MY.LOAD.LIB') NEW CATALOG DIR(20) SPACE(10,5) CYL RECFM(U) BLKSIZE(32760)

(* Temporary dataset β€” deleted on FREE or session end *)
ALLOC DA('&&TEMP') NEW DELETE SPACE(1,1) CYL RECFM(F B) LRECL(80) BLKSIZE(27920)

ISPF navigation shortcuts cheat sheet#

=0        Settings
=1        View
=2        Edit
=3        Utilities
=3.4      DSLIST
=3.10     Search-For
=3.12     SuperC
=6        TSO command shell
=S        SDSF
=X        Exit ISPF

;         Stack commands (e.g., SAVE ; END)

Scroll:   HALF, PAGE, DATA, CSR, nnn