cheat sheet
TSO/ISPF Navigation
Complete ISPF menu options, primary commands, line commands, edit profile, utilities, DSLIST, SDSF, TSO commands, RACF, and keyboard shortcuts.
TSO/ISPF Navigation
What it is
TSO (Time Sharing Option) is z/OS's interactive command-line interface, and ISPF (Interactive System Productivity Facility) is the panel-driven application that runs within TSO — both maintained by IBM as core components of z/OS. Together they provide the primary development and operations environment for mainframe work: browsing and editing datasets, submitting and monitoring batch jobs via SDSF, managing PDS members, and running TSO commands and REXX EXECs. Reach for TSO/ISPF for any interactive mainframe task — it is the terminal environment that mainframe developers and operators use daily.
Current release — z/OS 3.2. Generally available 30 September 2025 on IBM z17, z/OS 3.2 adds Telum II AI inference (up to 450 billion inferences/day), an optional Spyre PCIe AI accelerator (Q4 2025), quantum-safe cryptography in RACF, RACF-userid containment for IBM Threat Detection, NoSQL access via EzNoSQL Services, and improved z/OSMF for software install and config. ISPF gains PDSE V2 member-generation editing/browsing, a case-insensitive sort option for the z/OS UNIX Directory List Utility, and z/OSMF Desktop Editor enhancements that render dataset and USS path links (APAR PH34912). The modern IDE complement is Zowe Explorer for VS Code — datasets, USS files, jobs, TSO commands, JCL submit — available via z/OSMF (preferred) or FTP without requiring Zowe to be installed on the host.
ISPF Primary Menu
| Option | Panel | Notes |
|---|---|---|
0 | Settings | ISPF profile, terminal, PF keys |
1 | View | Read-only browse with limited commands |
2 | Edit | Full edit — JCL, source, data |
3 | Utilities | Dataset, member, and system utilities |
3.1 | Library | Copy/move/compress PDS members |
3.2 | Dataset | Allocate, rename, delete, catalog datasets |
3.3 | Move/Copy | Move or copy entire datasets |
3.4 | DSLIST | List datasets matching a pattern |
3.5 | Reset Stats | Reset member modification statistics |
3.6 | Hardcopy | Print utility |
3.7 | Download | Transfer dataset to PC (IND$FILE) |
3.8 | Outlist | Manage print output |
3.9 | Memberlist | List and select PDS members |
3.10 | Search-For | Search for a string across PDS members |
3.11 | Format | ISPF format utility |
3.12 | SuperC | Extended search and compare |
3.13 | SuperCE | SuperC with modify/update capability |
3.14 | Convert | Convert sequential ↔ PDS |
3.17 | HDRBM | Label/rename DASD volumes |
4 | Foreground | Run COBOL, ASM, PL/I compilers interactively |
5 | Batch | Submit compile/link-edit to batch |
6 | TSO/E | Enter TSO commands directly |
7 | Dialog Test | Test ISPF dialogs and panels |
8 | LM Utilities | SCLM / Library Manager |
10 | SCLM | Software Configuration and Library Manager |
11 | Workplace | Alternate ISPF Workplace shell |
S | SDSF | Spool Display and Search Facility |
B | BookManager | IBM online documentation |
X | Exit | Exit 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 / Command | Action |
|---|---|
F2 | Split screen horizontally at cursor row |
F9 | Swap between active split panes |
F3 | End / return one level |
SWAP | Toggle between logical screens |
SWAP LIST | List all open logical screens |
SWAP n | Jump to logical screen number n |
SWAP NEXT | Switch to next logical screen |
SCRNAME name | Name the current logical screen |
RESIZE | Resize split at new cursor position |
SPLIT | Same as F2 — split at cursor |
END | Close current panel (with save in Edit) |
RETURN | Return to previous menu level |
Settings (option 0)
Key settings in the ISPF Settings panel:
| Setting | Purpose |
|---|---|
| Command delimiter | Character that stacks commands (; A ; B) |
| PF key definitions | Reassign all 24 PF keys |
| Display/terminal mode | 24×80, 27×132, 43-line, etc. |
| Confirm on delete/replace | Prompt before destructive operations |
| Mixed mode | Allow lowercase EBCDIC in edit |
| Scroll amount | PAGE, HALF, DATA, CSR, or n lines |
| Always/never expand | Member list behavior |
| Log/list defaults | Where 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:
| Command | Action |
|---|---|
I / In | Insert 1 or n blank lines after |
D / Dn | Delete 1 or n lines |
R / Rn | Repeat line 1 or n times |
C / Cn | Copy line (pair with A or B destination) |
M / Mn | Move line (pair with A or B destination) |
A / An | Paste after this line (n copies) |
B | Paste before this line |
O / On | Overlay — paste over n lines (merge) |
X | Exclude (hide) this line |
S / Sn | Show n lines from an excluded block |
F | Show first line of excluded block |
L | Show last line of excluded block |
UC | Uppercase this line |
LC | Lowercase this line |
TF | Text flow — reformat paragraph at right margin |
TS | Text split — break line at cursor position |
TJ | Text join — join with next line |
( / (n | Shift left 1 or n columns |
) / )n | Shift right 1 or n columns |
< / <n | Shift left (synonym for () |
> / >n | Shift right (synonym for )) |
.name | Set label on line (referenced by FIND/LOCATE) |
P | Print line to ISPF list |
W | Write (copy) line to a dataset |
MD | Make dataline — strip line number area |
MN | Make note — mark as non-data note line |
Block commands (enter the same command on the first and last line of range):
| Block | Action |
|---|---|
CC … CC | Copy block |
MM … MM | Move block |
DD … DD | Delete block |
RR … RRn | Repeat block n times |
XX … XX | Exclude block |
SS … SS | Show block |
UC … UC | Uppercase block |
LC … LC | Lowercase block |
(( … ((n | Shift block left n columns |
)) … ))n | Shift block right n columns |
TF … TF | Text flow across block |
OO … OO | Overlay block |
Destination commands (used after C/M/CC/MM):
| Command | Meaning |
|---|---|
A / An | After this line (paste n copies) |
B | Before this line |
O / OO | Overlay at this line |
Edit profile — key settings
Access with PROFILE command in Edit:
| Setting | Values | Effect |
|---|---|---|
NUMBER | ON / OFF | Show line numbers in prefix area |
AUTONUM | ON / OFF | Auto-number inserted lines |
CAPS | ON / OFF | Force uppercase on all typed input |
NULLS | ON / OFF | Trailing nulls (allows overtype past data) |
TABS | ON / OFF | Enable tab stop processing |
AUTOSAVE | ON / OFF | Save automatically on END |
RECOVERY | ON / OFF | Maintain recovery dataset for crash recovery |
STATS | ON / OFF | Track/display member statistics (version, changed date) |
PACK | ON / OFF | Dataset compression |
IMACRO | macroname | Macro that runs automatically when you open a member |
HILITE | language | Syntax 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:
| Command | Action |
|---|---|
E | Edit |
V | View (read-only) |
B | Browse |
D | Delete (with confirmation) |
R | Rename |
S | Select / show info |
I | ISPF information (statistics) |
C | Catalog |
U | Uncatalog |
M | Move to another dataset |
CO | Copy to another dataset |
P | |
X | Execute (REXX/CLIST) |
SUBMIT | Submit as JCL |
PRINTD | Print dataset contents |
TSO cmd | Run TSO command referencing this dataset |
ZB | SDSF browse of dataset |
Line commands against PDS members (inside a member list):
| Command | Action |
|---|---|
E | Edit member |
V | View member |
B | Browse member |
D | Delete member |
R | Rename member |
S | Select / info |
X / G | Execute (REXX/CLIST) |
P | Print member |
SUBMIT | Submit member as JCL |
SORT | Sort 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):
| Type | Compares |
|---|---|
FILE | Entire dataset as lines |
LINE | Line-by-line |
WORD | Word-by-word (ignores spaces) |
BYTE | Byte-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 *)
SDSF — Spool Display and Search Facility
Primary panels:
| Panel | Shows |
|---|---|
ST | Your jobs — active, held, and pending |
H | Hold queue — held output |
O | Output queue — output ready to print |
LOG | System log — operator messages |
DA | Display active — all jobs currently executing |
I | Initiator display — batch initiators and classes |
PR | Printer queue — active and pending printer output |
PUN | Punch queue |
RDR | Reader queue |
SO | Sysout held |
SR | System requests — outstanding WTO messages |
MAS | MAS / sysplex member display (JES2) |
RES | Reserved resources |
ENC | Enclave 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:
| Command | Action |
|---|---|
S | Browse spool output (select dataset or job) |
? | Expand — show job's individual sysout datasets |
P | Purge job and all output |
H | Hold output |
A | Release (action) held output |
C | Cancel active job |
E | Edit / copy spool output to a dataset |
O | Change output class |
XD | Delete individual sysout dataset |
XF | Print sysout dataset to a printer |
NP | Print next sysout |
SJ | Display job — show all steps and return codes |
L | Enter the job log directly |
I | Display job information |
J | Show JESMSG / JES messages for job |
SE | Stop job execution (FORCE) |
STO | Stop 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
| Key | Default action |
|---|---|
| F1 | Help |
| F2 | Split screen |
| F3 | End / return |
| F4 | Return to Edit |
| F5 | RFIND |
| F6 | RCHANGE |
| F7 | Scroll up |
| F8 | Scroll down |
| F9 | Swap screens |
| F10 | Scroll left |
| F11 | Scroll right |
| F12 | Cancel |
| F13–F24 | Shift+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)
Zowe CLI mapping — TSO/ISPF tasks from VS Code or a terminal
The Zowe CLI (and the Zowe Explorer VS Code extension built on it) covers the most common TSO/ISPF actions without needing a 3270 session. Connect via z/OSMF (preferred) or FTP. The CLI does not replace ISPF — it complements it, and the same RACF authority gates both paths.
# Profile setup — once per connection
zowe config init (* interactive *)
# DSLIST analogue — list datasets matching a pattern
zowe zos-files list data-set "ALICE.*"
zowe zos-files list members "ALICE.JCL.LIB"
# Edit / View — download to local, edit, upload back
zowe zos-files download data-set "ALICE.JCL.LIB(MYJOB)" -f ./MYJOB.jcl
zowe zos-files upload file-to-data-set ./MYJOB.jcl "ALICE.JCL.LIB(MYJOB)"
# Submit a job (TSO SUBMIT)
zowe jobs submit data-set "ALICE.JCL.LIB(MYJOB)" --wait-for-output
# Issue a TSO command (option 6 analogue)
zowe zos-tso issue command "LISTC ENT('ALICE.*') ALL"
# SDSF panel analogues
zowe jobs list jobs --owner ALICE --prefix "ALICEJ*"
zowe jobs view all-spool-content --jobid JOB12345
zowe jobs cancel job --jobid JOB12345
zowe jobs delete job --jobid JOB12345
# USS shell command (option 6 + OMVS analogue)
zowe zos-uss issue ssh "ls -la /u/alice"
Output:
job submitted: JOB12345
status: OUTPUT retcode: CC 0000
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