TSO/ISPF Navigation#
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)
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