GY28 6660 9_MVT_Job_Management_Release_21_PLM_Mar72 9 MVT Job Management Release 21 PLM Mar72

GY28-6660-9_MVT_Job_Management_Release_21_PLM_Mar72 GY28-6660-9_MVT_Job_Management_Release_21_PLM_Mar72

User Manual: GY28-6660-9_MVT_Job_Management_Release_21_PLM_Mar72

Open the PDF directly: View PDF PDF.
Page Count: 462

DownloadGY28-6660-9_MVT_Job_Management_Release_21_PLM_Mar72 GY28-6660-9 MVT Job Management Release 21 PLM Mar72
Open PDF In BrowserView PDF
File No. 5360-36
Order No. GY28-6660-9

Program Logic

IBM System/360 Operating System:
MVT Job Management,
Program Logic Manual,
Program Number 3605-1::1-535
OS Release 21

This publication describes the internal logic of
the job management routines for the MVT control
program of the IBM System/360 operating System.
Included are discussions of input stream
processing, work queue management, job
initiation and termination, I/O device
allocation, system output processing, and the
scheduling and execution of operator commands.
This manual is intended for persons involved
in program maintenance, or system programmers
who are altering the program design. . Program
logic information is not necessary for the use
and operation of the program.

Ten th Edi tion (March, 1972 )
This is a major reyision of, and obsoletes; GY28-6660-8. The
publication has been modified to reflect the changes
described in the "Summary of Amendments." Changes or
additions to the text and illustrations are indicated by a
vertical line to the left of the change.
This edition applies to release 21 of IBM System/360
Operating System, and to all subsequent releases until .
otherwise indicated in new editions or Technical Newsletters.
Changes are continually made to the information herein;
before using this publication in connection with the
operation of IBM systems, consult the latest IBM System/360
and System/370 SRL Newsletter, GN20-0360, for the editions
that are applicable and current.
Requests for copies of IBM publications should be made to
your IBM representative or to the IBM branch office serving
your locality.
A form for readers' comments is provided at the back of
this publication.
If the form has been removed, comments may
be addressed to IBM Corporation, Programming Systems
Publications, Department D58, PO Box 390, Poughkeepsie, N. Y.
12602. Comments become the property of IBM.

@Copyright International Business Machines Corporation 1967,1968,1969,1970,1971,1972

Preface

This book describes the internal logic of
the IBM systern/360 Operating system job
management routines for the MVT control
program. It includes discussions of input
stream processing, work queue management,
job initiation and termination, I/O device
allocation, system output processing, and
the scheduling and execution of operator
commands.
The book is intended for persons
involved in program maintenance, or for
system programmers responsible for altering
the program design.
The introduction to this book describes
job management in terms of the system tasks
performed. Parts 1-6 describe the
functions performed and the flow of control
among the routines.
The appendixes contain
format descriptions of the major work areas

and tables used by job management, brief
descriptions of job management modules,
module cross references, flowcharts, and an
abbreviation dictionary.
Users of this book should have a thorough
knowledge of IBM Systern/360 programming.
The following publications provide basic
background information:
IBM Systern/360 Operating System:
Job Control Language Reference Manual,
GC28-6704
supervisor services, GC28-6646
A more complete list of books providing
reference and background information is
contained in the Bibliography, which
precedes the Index to this publication.

Preface

3

4

08/360 MVT Job Management (Release 211

Contents

SUMMARY OF AMENDMENTS FOR GY28-6660-9
-- OS RELEASE 21 • • • • • • .• .• .• • • • 13
SUMMARY OF AMENDMENTS FOR GY28-6660-8
-- OS RELEASE 20.1 • • • • • • • '. • • • 14
SUMMARY OF AMENDMENTS FOR GY28-6660-6
-- OS RELEASE 20 • • • • •
• • 19
INTRODUCTION • •
processing Input Streams •
Initiating Job Steps • • •
Writing System output •• • • • • •
Initializing and Establishing System
Tasks • _ • _ • • • • • •
Queue Management •.•
Operator Commands • • • •

• • 23
23
• • 23
24
• • 25
25
• • 26

PART 1: INITIALIZATION AND RESTART • •
The Master Scheduling Task • • •
• •
Initializing the Queue Data Set
o
•
Formatting the Queue Data Set
o
•
System Restart • • • • • • • •
o
•
Table Construction. • ;, • •
• •
Purge Queue Construction • •
o
•
Incomplete Input Queue Entries •
Incomplete Output Queue Entries • •
Incomplete ASB and RJE Queue
Entries • • • • '. • • • • •
Dequeued Input Queue Entries
• •
Dequeued Hold Queue Entries
Dequeued ASB and RJE Queue Entries •
Dequeued Output Queue Entries
•
Incomplete Input Queue Entires • • •
Enqueued and Dequeued Input Queue
Entries • • • • • • • • • •
• •
Dequeued Input Queue Entries
••
Dequeued RJE Queue Entries •
• •
SCD Processing • .• • • •
• •
Returning Logical Tracks • •
Purge Queue Processing • • •
Dequeued Output Queue Entries • • •
Dequeued Input Queue Entries • •
Dequeued RJE Queue Entries •
Dequeued ASB Queue Entries •
• •
Dequeued Hold Queue Entries
Scratching Data Sets • • • •
•

PART 2: PROCESSING INPUT STREAMS • •
The Reading Task • • • • • • • • • •
Using The Interpreter As a Reader
Using The ASB Routine As a Reader
ASB Control Flow • • • •
•
ASB I/O Exceptions • •
•
ASB Job Control Language
Compression • • • • •
•
ASB Queue Processing • •
•
Input Stream Processor Routine • •
ASB Queue Reader Routine • •
ASB Termination Routine • • • • •
Interpreter Controller Routine • •
ASB SYSIN Data Set Processing • •
0

•

0

27
27
32
32
34
35
36
36
36
36
38
38
38
38
38
38
38
38
38
39
39
39
39
41
42
42
42

43
43
43
44
• 45
49
0

0

• 49
• 49
• 49
50
• 50
• 50
• 50

Checking DD * and DD DATA
Statements • • • • • •
Processing DD * and DD DATA
Statements • •
Restarting Jobs
The Restart Reader •
Restarting the Step • • • .•
0

o

o

•

51

51
52
52
• • 54

••

•

o

•

•

•

0

PART 3: INITIATING TASKS
••••
Initiating System Tasks • • • •
• .•
Initiating Job step Tasks • • • • • • •
Grouping Initiators
• • • •
Initiator Functions
• • • •
Initializing the Initiator •
• •
selecting Jobs • • • •
•
Looking For Work.
Waiting For Work
Dequeuing The Job
• • • •
System Output Processing •
•
Data Set Integrity •
• • • •
Executing the stop and Modify Commands •
The STOP Command •
• • • •
The MODIFY Command • • • • • • • • • •
Region Management • • • '. • • • • • • •
Determining Region Characteristics • •
Releasing and Obtaining Regions
The I/O Device Allocation Interface
Attaching the subtask
•
Terminating Subtasks • • • • • • • • • •
OUT LIM Termination • • • • • • •
The ATTACH and Abnormal Termination
Routines • • • • • • • • • • • •
The Termination Routine Interface • •
Unexecuted Steps •
•
Job suspension • • • .• •
•
Job Termination • • • • •
•

57
57
57
57
58
60
61
61
61
62
62
63
64
64
64
65
65
65
71
72
74
74

PART 4: PROCESSING SYSTEM OUTPUT
Initializing and Processing Commands • •
Processing a Queue Entry • .•
• • • •
Processing Data Sets • •
Initialization • • • • • • • • • • •
The Data Set Processing subtask • •
Processing System Message Blocks •
Service Routines • • • •
The Put Routine
The Spanned Data Sets Routine
•
The Command Chaining Access Method
Routine
.•• • • • • • • • • •
The Transition Routine • • • • • • •
3211 Processor Routine (IEFSDTTE)
•

77
79
82
83
83
84
85
86
86
87

0

'0

•

•

.0

••

0

•

•

•

•

•

•

•

•

•

0

•

•

0

•

•

0

•

•

•

•

•

•

•

•

74
75
76
76
76

87
88
88

PART 5:
COMMAND PROCESSING • • • • • • 91
Command Scheduling • • • • • • • • • • • 91
Initializing the Command Scheduling
Routine • • • • • • • •
• • 91
Storage and Notification
• • • • 96
Error Message Processing
•
98
STAE Exit Routines
98
STAE Retry Routines
• • 99
Command Execution
• • • • 100
Task-Creating Commands
• • • .100
0

0

•

•

•

•

Contents

5

The START Command
• .101
,• • 107
The MOUNT Command
The DISPLAY A Command .. • • '. • • ,.108
The DISPLAY M Command
'• • 108
The DISPLAY C,K Command
• ,.109
The DISPLAY PFK Command
• ".110
The DISPLAY U Command • • •
• • 110
The DISPLAY CONSOLES Command
• • 110
The MONITOR A Command
• .111
The DUMP Command • '. •
• .112
The Queue Manipulation Commands • .113
The Get Region Routine (IEEPALTR)
.114
The Syntax Check Routine (Module
IEESD562) • • • • • • • • _ • • • .114
The ECB/IOB Construction Routine
(Module IEESD582)
• • • • '. .114
The Queue Search Control Routine
(Module IEESD563)
'. • • ...114
The Queue Search Return Routine "
(Module IEESD583)
• • • • • .115
The Queue Search Routine (Module
IEESD564) • • • • ". '• • • • "• • • ".115
The DISPLAY Q/DISPLAY N Message
Setup Routine (Module IEESD584)
• • 116
The Queue Alter service Routine
(Module IEESD565) ' . . . . . • • ..116
The Queue Scratch setup Routine
(Module IEESD575)
• • • '• • • • 117
The Queue Alter Delete Routine
(Module IEESD576)
• • • • '• • • • • 117
The Queue Restart Enqueue Routine
(Module IEESD577)
• • • • "• • • • • 117
The Queue Message Class setup
Routine (Module IEESD578)
• .117
The Queue 5MB Routine (Module
IEESD579) '• • '• • • • • • • • • • • 117
The Message Routine (Module
IEESD580) • • • • • __ • • • • • .117
The Queue Scratch Routine (Module
IEESD581) • • ,. '. • • '. • • • • • .117
The System Reconfiguration Commands 117
The QUIESCE Command
• • 118
The VARY Commands "
• .119
The VARY Channel Command
.119
The VARY CPU Command • •
• '. '. .121
The VARY Storage Command • •
• .124
Existing-Task Commands. •
.127
The CANCEL Command. • •
.127
The MONITOR DSNAME Command •
• .127
The MONITOR JOBNAMES Command
.128
The DISPLAY R Command • • ;.
.128
The MONITOR SPACE Command
• • 129
The DISPLAY SQA Command
• ,.129
The MONITOR STATUS Command •
.129
The DISPLAY T Command
• • 130
The MSGRT Command
.130
The CONTROL COIllIlland '. • • • • .131
The HALT Command • • •
.132
The MODE Command (Models 85, 145,
155, and 165 Only) • •
• • 132
The MODIFY Command • • • • .136
The SET AUTO Command
.136
The SET DATE and SET CLOCK Commands 136
The SET PROC and SET QCommands • .137
The STOPMN DSNAME Command
• .137
The STOPMN JOBNAMES Command
• .137
The STOPMN SPACE Command. •
• .137
The STOPMN STATUS Command
• .138
6

OS/360 MVT Job Management (Release 21)

'--.-

The STOPMN SESS Command
The STOP Command • • • •
The STOPMN A Command •
The SWITCH Command • •
•
The UNLOAD Command •
• •
The VARY Commands
VARY ONLINE/OFFLINE (systems
Without MCS) • • • • • • • •
VARY ONLINE/OFFLINE (Systems
MCS) • • • '.
• • • ".
VARY PATH
VARY CONSOLE
VARY HARDCPY.
VARY MSTCONS • •

• • .138
• .138
• .138
• • • • 139
• • ". .139
.139
• • 139
With
• • • .141
• .141
• • • • 142
• .142
• • • .143

PART 6: COMMON ELEMENTS OF JOB
MANAGEMENT • • • ..
.145
The Work Queues • • • • •
• .145
Queue Management • • • '.
• .148
Using Queue Management •
• .152
Using the ENQ and DEQ Macro
• • 152
Instructions • • • • ". • ". •
Input/Output Operations
• • • .154
Specifying Track Stacking • ". • • .155
.155
Initializing a Stack '.
Record Access • • • •
• .156
Purging a Stack
• .158
Assigning Queue Space
• • • • 158
Assign/Start
• .158
Assign • • • • • . • •
• .158
Enqueuing an Entry • •
• • • • • 161
Dequeuing an Entry • •
.162
Deleting an ECB From the No-Work
Chain . . . . . . . . '.
• ".163
Deleting an Entry
• .164
Transient Queue Management
Routines (SVC 90)
•••••
• .164
Dequeue by Jobname Routine
(IEFLOCDQ) '. • • • • • • • • • .164
The Interpreter Routine
• • 166
The Interpreter Interface
.166
The Interpreter Entrance List (NEL) 167
The Option List • • • • • • • • • • 168
The Exit List • • • • •
• • • • 170
Initializing the Interpreter.
• .173
Input and Control Operations
• • .173
Reading Control Statements.
• .173
End-of-Data and Null Statement
Processing • • • • • • • • • • ". • .174
Processing Control Statements • • .175
Processing In-Stream Procedures •• 176
Processing JOB, EXEC, PROC, and DD
Statements • • • • • •
• .177
Queue Entry processing • • • • • • .179
Post-Processing Entry
• • • • 179
Processing System Input Data
• • 181
I/O Error Processing • • • •
• .181
Scanning the J'CL Statement • •
• .182
Processing symbolic Parameters • • • 183
Processing JCL Statements
•• 186
Auxiliary Routines • • '. • • •
• .187
The Get Parameter Routine ".. • • .187
The Test and Store Routine • • • • • 188
The Dictionary Entry Routine
•• 190
The Dictionary Search Routine • • • 190
The Interpreter Message Routine • • 190
The Queue Manager Interface Routine 190
The Record Compression Routine '• • • 190

The Record Decompression Routine • .191
Interpreter Exits
• .192
Interpreter Termination
• .193
I/O Device Allocation
• .195
Allocation Housekeeping
• • 197
Protecting UCB Information •
• .197
Obtaining an 5MB • '. • • ••
• .198
Displaying the Job Name
• .198
Job and step Flush • '. • • •
• .198
EXEC statement conditional
Execution Processing • • • '.
• .198
Gathering Information '. • • •
• .199
Completing Tables '. ' . . .
• .199
JFCB Housekeeping Control Routine .199
Allocate Processing Routine
.200
Dedication Determination Routine • .200
Direct System Output Determination
Routine

• ,. '. • • '. .

. '. •

• •

.

. 201

Fetch DCB Processing Routine • • • .201
GDG single Processing Routine • • .201
GDG All Processing Routine • • • • • 201
Patterning DSCB Processing Routine .201
Error Message Processing Routine • .201
Calculating Table sizes •• • • • .201
Constructing Tables •• • • '. • • .204
Constructing the Allocate Work
Table (AWT) • • • • • • • • • • • .204
Volume Affinity Resolution •• • • .205
Calculating Device Requirements • .205
Channel Load Assignments • •
• .206
Unit Assignment • • • •
• .208
Demand Allocation
• .208
Allocation of Resident and
Reserved Volumes • • •
• .208
Device Range Reduction
• .208
Allocation of specifically
Requested Units • • • • • •
• .209
Automatic Volume Recognition
• .209
Processing Requests for Mounted
Volumes

• • '. • . • '. '. • • . • • .210

Processing Requests for Unmounted
Volumes • • • •• • •
• .210
Decision Allocation • • • • • .211
Unit Elimination.
• .212
Passed Data Sets •
• .212
Data Set Selection.
• .212
Unit Selection. •
• .212
TIOT Construction
•• 213
Storage Requirement Calculation •• 213
TIOT Entry Construction
• .213
Public Volume Processing
•• 213
Space Assignment • • • •
• .214
Mounting Volumes • • •
• .214
Obtaining Space
• ,.216
Compressing the TIOT.
• .216
Verifying Volumes That Do Not
Require Space Allocation •
• .216
Common Subroutines • • ~ • • •
• .217
Allocation Recovery • • • •
• .217
Lack of Available Devices
• .217
Lack of Available Space
• .218
Device Strikeout • '. •
• .219
Separation Strikeout •
• .220
Unsolicited Device End Posting • • .220
Allocation Exit • • • •
• .221
Task Termination • •• • ••
• .221
Termination Housekeeping •
• .222
Step Termination •• • •
• .222

SMF Processing • ,. • • • • •
,.223
Restart Preparation • • • •
•• 223
Disposition and Unallocation • • • • 224
Data Set Disposition. • ••
• .225
Unallocating Devices • • '. • • • • .226
JOB Statement Condition Codes
.226
step Termination Exit
•• 227
Job Termination • • • • • • • • • • • 227
Disposition and Unallocation •
.227
Job Termination Exit. •
• • • • 228
System Management Facili ti es '. •
• .229
An Overview of SMF. ••
• .229
The SMF SVC Routine (SVC 83).
• .230
Initializing Functions •
• • • .230
Transf erring Rec ords •
• • • • 230
switching Data sets
•• 232
The SMF Writer. ••
.232
The SMF Dump Routine ••
• • • .233
The SMF Records
• • • • 233
The Write-To-Programmer Facility • • • • 236
The Write-To-Programmer
Initialization Routine • • • •
•• 236
The Write-To-Programmer Message
Processing Routine • • '. • • •
• .236
The Write-To-Programmer Error
Processing Routine • • • • • • • • • • 238
APPENDIX A: TABLES AND WORK AREAS • • • 239
Account Control Table (ACT)
•• 241
Allocation/IEFVPOST Communication
Blocks • • • • • • • • • • • _. • • • .243
Command scheduling Control Block
(CSCB) • • • • • • • •
• • • • 245
Data set Block (DSB) • • •
.247
Data Set Enqueue Table (DSENQ)
•• 248
Data Set Name Table (DSNT) • • • • • • 249
Device Mask Table (DMT)
.250
Device Name Table (DNT)
.251
Direct System Output Control Block
(DSOCB) •• '. • • • • •
• • • .252
Initiator Entrance List
.253
Initiator Exit List
.255
Initiator Option List '. • • •
• .256
In-Stream Procedure Work Area • • • • 258
Interpreter Work Area (IWA) • • • • • 262
Job Control Table (JCT)
•• 265
Job File Control Block (JFCB) and
Extension (JFCBX) • • • • • •
.267
Job Management Record (JMR)
• • • 269
Job Scheduling Entrance List •
• .270
.271
Job Scheduling Exit List •
Job Scheduling Option List • •
• .272
Job scheduling Work Area • • •
• .273
.275
Linkage Control Table (LCT)
Master Scheduler Resident Data Area .277
Passed Data Set Queue
• • • 281
Procedure Override Table • • •
• .283
step Control Table (SCT) • • •• • • .285
step Control Table Extension Block
(SCTX) • • • • • • • • • • • •
• .287
Step Input/Output Table (SlOT) • • • • 289
System Management Control Area (SMCA) .291
System Message Block (SMB) • • • • • • 295
System Output Class Directory (SCD) .296
Task Input/Output Table (TIOT) • • • • 297
Timing Control Table (TCT) • • • • • • 299
Timing Control Task Input/Output
Table (TCTIOT) • • • • • • • • • • • • 300
Contents

7

Volume Table • • • • • • • • • • • • • 301
Write-to-Programmer Control Block
(WTPCB)
...............302

APPENDIX C4
APPENDIX C5

D:

····

..···

APPENDIX B:

MODULE DESCRIPTIONS • • • • 305

APPENDIX

APPENDIX C:

MODULE CROSS-REFERENCE

APPENDIX E: DICTIONARY OF
ABBREVIATIONS

• • 361

APPENDIX C1

.363

APPENDIX C2

• • • 369

APPENDIX C3

• • 377

I APPENDIX

8

OS/360 MVT Job Management (Release 21)
'.

"',-.'"'.'

-:-

.' '~"·"I'.'

.385

·

.393

JOB MANAGEMENT CHARTS

.401

. ... · · · · . . . . ·

F:

BIBLIOGRAPHY
INDEX

·

MODULE CROSS-REFERENCE
• • • .. .

.437

• • 441
• .450

• .451

Illustrations

Figures

Figure 1. The Master Scheduling Task
Figure 2. The Queue Data Set After
Initialization
••••••••
Figure 3. Master Queue Control
Record
•.•.•.•.••• '. • • • •
Figure 4. MVT System Restart
'. •
Figure 5. System Restart Work Area
•
Figure 6. System Restart Tables • • •
Figure 7. ASB Routine • • • • • • • •
Figure 8. Automatic SYSIN Batching
Work Area (ASBWA) (Part 1 of 2)
• •
Figure 9. special Access Method Work
Area (SAMWA)
• • • . • '. •• • • '. • .• •
Figure 10. Interface Between the
Restart Reader and the Interpreter
•.•
Figure 11. Group Control Block (GCB)
•
Figure 12. Initiator Load Modules and
Control Flow
• • • '. • • • • • • • • .•
Figure 13. Communication Parameter
••
Area (CPA)
• • • • .•• ,. '. •
Figure 14. Initiator ECB List
• •
Figure 15. GETP~T Work Table (GWT)
•
Figure 16. Region Allocation Decision
Table
• • _ _ • • _ _ _ • • _ • _ _
Figure 17. Result of Issuing the
GETPART Macro Instruction. • • • • • •
Figure 18. ATTACH Macro Instruction
Parameter List
• _ • • • • _ • _ • • •
Figure 19. Initiator Parameter List
•
Figure 20. System Output Writer
Overall Flow
• '. • • • • •
• •
Figure 21. System Output Writer Table

I. • . • '. '. . •

28
33
33
34
36
37
44
45
48
53
58
59
61
62
67
68
69
72
73
78

80
' . . . . '. •
Figure 22. System Output Writer
Control Character Processing
• • 87
Figure 23. Transition Routine Decision
Table • • • • • • • • • • • _ •
• 89
Figure 24. Control Flow in the
Command Scheduling Routine (Part 1 of
• 92
2) •
Figure 25.. Verb Table Entry
• • • • • 95
Figure 26. Extended Save Area of SVRB
as Used for Passing Information
Between Modules of the SVC 34 Routine • 95
Figure 27. Command Storage and
Notification Techniques (Part 1 of 2 ) . 97
Figure 28.. Extended Save Area of SVRB
as Used for Message Processing in the
SVC 34 Routine
• '. • • • • • • • • • • 98
Figure 29. Classification of Commands 100
Figure 30. Task Creating Commands
• .102
Figure 31.. Major Attributes of System
Tasks. Jobstep Tasks in START Command.
and Job step Tasks in Input Stream
• • 103
Figure 32. The System Task Control
Routine • • • . • ,. • • •• .• '. • • • • .104
Figure 33. Start Descriptor Table
(SDT)
• • • '• • • • • • • • • • • • 105
Figure 34. Linkage Table • • • • • • .107
Figure 35. Task Identification in the
.109
Display Active Routine
• '.. • •
Area

I.

. • . '. '. '. '. '. . . '.

Figure 36. DUMP Command Operand and
Resulting Storage Dumped
' . . . . . • .112
Figure 37. The Queue Alter Routine • ,.113
Figure 38,. VARY Channel Decis ion
Table
• • • • • • • • • • '. .120
Figure 39. VARY CPU Decision Table • .122
Figure 40. Vary Queue Element (VQE)
.125
Figure 41. Free Block Queue Element
(FBQE)
• • • • • • _ • • • 125
Figure 42. The VARY STOR OFFLINE
Command •• • • • • • • • • • • • • • .126
Figure 43.. Machine Status Block (MSB) 135
Fig~e 44.
Command Input Buffer (CIB) .136
Figure 45. Control Flow in the
Command Scheduling Routine • • •
.140
Figure 46. Typical Input Queue Entry .146
Figure 47. Output Queue Entries
• • • 147
Figure 48. Assigning Space Within
Logical Tracks
• • • • • • • • .148
Figure 49. Assignment of Two Sets of
Logical Tracks
•••••••
.149
Figure 50. The Entry Enqueued in the
Input Queue • • • • '. • • • •
• • 150
Figure 51. The Entry Enqueued in an
Output Queue
• • • • • '. • •
• .151
Figure 52. Queue Manager Parameter
Area
• • • • • • • • '• • • . • • • • • • 153
Figure 53. Sequence of I/O Operations
Performed by Queue Management Routines 154
Figure 54. Usage of Track Stacking
Routines by Queue Management
• .155
Figure 55. Track Stack Area
• .156
Figure 56. Record Accessing Routine
Interface • . • • • • • • . • • '. • • • • .157
Figure 57. Logical Track Assignment
.160
Figure 58. Queue Control Record
Format
• • • • • • • • • • • • • • • • 161
Figure 59. Typical Queue • _ • • • • • 162
Figure 60. 8-Byte Element of the
No-Work Chain • • • • • '. • • • • • • .163
Figure 61. Interpreter Data Flow • • • 167
Figure 62. Interpreter Entrance List
(NEL)
• • • • • • • • • • • • • • • 168
Figure 63. Interpreter Option List • • 170
Figure 64. Interpreter Exit List • • • 171
Figure 65. Typical Interpreter Output
.172
(Queue Data Set)
• • • '. • • •
Figure 66. End-of-Data and Null
Statement Processing
•••••
• .174
Figure 67. In-Stream Procedure
Parameter List
• • • • ,. • • • • • • .176
Figure 68. Processing JOB, EXEC.
PROC, PEND. DD, and Command Statements 178
Figure 69. Post-Processing Entry
.180
Figure 70. Internal List Entry Format 182
Figure 71. Scan Dictionary Entry
Format
'. '. • • • • • • • • •
• .182
Figure 72. Symbolic Parameter Table
Buffer
•• _ ••••• _ • •
• .183
Figure 73. Keyword Branch Table Entry 187
Figure 74. Parameter Descriptor Table
.188
(PDT)
• .• • • • • • .• '. • •
Illustrations

9

Figure 75. Table Codes Used in the
Test and Store Subroutine
• .190
Figure 76. Record Compression
Technique • • • • • • • • • • •
• .191
Figure 77. Compression/Decompression
Parameter Area
• • • • • • • • • • • .191
Figure 78. Interpreter Exit Linkage
.192
Figure 79. IEFUJV Parameter List and
JMR Job Log • • • • '.
• • • • • .193
Figure 80. Refer-Back Dictionary
.194
Figure 81. I/O Device Allocation
Routine '. • •• • • '. • • • • • • • . .196
Figure 82. Allocation Control Block
.202
Figure 83. Formulas for Determining
Allocation Table sizes
• • • • '. • • .203
Figure 84. Relative Positions of
Tables Used for I/O Device Allocation .203
Figure 85. Allocate Volume Table
Entry
• • • • • • '. '.. • • • • • .203
Figure 86. The Allocate Work Table •• 204
Figure 87. Allocate Work Table Entry
Sources • • • • • • • • • • • • • • • .204
Figure 88. Calculation of Data Set
Device Requirements • • • • • • • • • • 205
Figure 89. Scheduler Lookup Table
•• 207
Figure 90. Channel Load Table
•• 208
Figure 91. Data Set Selection Example 212
Figure 92. Data Set Uniqueness
Attributes
••••
•. • •
.212
Figure 93. Formulas for Finding TIOT
Storage Requirements
•••••
• .213
Figure 94. Task Input/Output Table
Entry Sources • • • • '. • •• • • • • .213
Figure 95. SMF Records (Part 1 of 2)
.234
Figure 96. WTP Processing Decision
Table
• '. • • • • •• • • • '. • • .236
Figure 97. WTP Message processing
Routine Decision Table
........237
Figure 98. Account Control Table
(ACT)
•••••••••••••
• .241
Figure 99. Allocation/IEFVPOST
Communication Blocks
• • • '. •
• .242
Figure 100. Command Scheduling
Control Block (CSCB)
'.....
• .244
Figure 101. Data Set Block (DSB) ...246
Figure 102. Data Set Enqueue Table
(DSENQ)
•• • • • • •
• .248
Figure 103. Data Set Name Table
(DSNT)
• • • • • •
• .249
Figure 104. Device Mask Table (DMT)
.250

10

OS/360 MVT Job Management (Release 21)

Figure 105. Device Name Table (DNT)
.251
Figure 106. Direct System Output
Control Block (DSOCB)
• • • • • • • • • 252
Figure 107. Initiator Entrance List
(IEL)
• • • • • • • • • • • • • • 253
Figure 108. Initiator Exit List
.254
Figure 109. Initiator Option List
..256
Figure 110. In-stream Procedure Work
.Area

•

• '.

•

•

• '.

•

..

•

'.

..

..

.. 258

Figure 111. Interpreter Work Area
(IWA) -- (Part 1 of 3)
• '. • • • • .259
Figure 112. Job Control Table (JCT)
.264
Figure 113. Job File Control Block
(JFCB)
• • • •• • • • • • • .266
Figure 114. Job File Control Block
Extension (JFCBX) • • • • • • • •
.267
Figure 115. Job Management Record
(JMR)
• • • • '• • • • • • • • 268
Figure 116. Job Scheduling Entrance
List ( J S E L ) . • • • • • • •
.270
Figure 117. Job Scheduling Exit List
(JSXL)
'. ,.. • '. • • • • • • .271
Figure 118. Job Scheduling Option
List (JSOL)
• .272
Figure 119. Job Scheduling Work Area
(JSWA)
• • • 273
Figure 120. Linkage Control Table
(LeT)
• .274
Figure 121. Master scheduler Resident
Data Area • • • • '. •• • • • •• • '. .276
Figure 122. Passed Data set Queue
Tables and PDQ Overflow Block
.280
Figure 123. Procedure Override Table .282
Figure 124. Step Control Table (SCT) .284
Figure 125. step Control Table
Extension (SCTX)
••••••
• .287
Figure 126,. Step Input/Output Table
(SlOT)
•• • • '. • • • •
• .288
Figure 127. System Management Control
.290
Area (SMCA) • • • • '. •• '. ,.
Figure 128. System Message Block
.294
(SMB)
• • • • '. • .•
Figure 129. System Output Class
Directory (SCD) • • • • • • • •
.296
Figure 130. Task Input/Output Table
(TIOT)
• • • • • • • • .• • • • • .297
Figure 131- Timing Control Table
(TCT)
• • • 298
Figure 132. TCT I/O Table (TCTIOT)
.300
Figure 133. Volume Table (VOLT)
.301
Figure 134. Write-to-Programmer
Control Block (WTPCB)
• • • • • • • • • 302

Charts

Chart 01,. Job Management Data Flow •• 401
Chart 02. Interpreter Control Flow • • 402
Chart 03. Interpreter Initialization
Routine • • • • • • '. • • • • • • • • .403
Chart 04. Interpreter Control Routine .404
Chart 05. Interpreter Scan Routine •• 405
Chart 06. JCL statement Processors • .406
Chart 07. Interpreter Termination
Routine • • '. '. . • . • . • . . • . . .407
Chart 08. Execute statement Condition
Code Processing Routine
• • • • • • 408
Chart 09. JFCB Housekeeping Routines .409
Chart 10. JFCB Housekeeping Control
Routine -- Part 1 • • • • • • • • • • .410
Chart 11. JFCB Housekeeping Control
Routine -- Part 2 • • • . ' . • • • • • .411
Chart 12. ALLOC Processing Routine • .412
Chart 13. Dedication Determination
Routine • • • • • • • • . • . • . • • .413
Chart 14. Fetch DCB Processing Routine 414
Chart 15. GDG Single processing
Routine '. • • • • • • • • • • • • • • .415
Chart 16. GDG All Processing Routine .416
Chart 17. Patterning DSCB Processing
Routine • • • • • • • • • • • • • • • .417
Chart 18. Mount Control Volume Routine 418
Chart 19. Demand Allocation Routine •• 419

Chart 20. Decision Allocation Routine .420
Chart 21. TIOT Construction Routine • • 421
Chart 22. External Action Routine • • • 422
Chart 23. Space Request and TIOT
Compression Routines • • • •
.423
Chart 24. Extended External Action
Routine • '. • • • • • • • •
• .424
Chart 25. Automatic Volume
Recognition (AVR) Routine
.425
Chart 26. Job Statement Condition
Code Processing Routine
• • • 426
Chart 27. Termination Routine
• • • 427
Chart 28. Step Termination -Disposition Routine • • • • • •
.428
Chart 29. step Termination -Unallocation Routine • • •
• • • • .429
Chart 30. Job Termination Routine • • • 430
Chart 31. Job Termination -Disposition and Unallocation Routine • • 431
Chart 32. Queue Management
Initialization Routine • • • • • • • • • 432
Chart 33. Queue Management Assign
Start and Assign Routine • • • • • • • • 433
Chart 34. Queue Management Enqueue
Routine • • • • • • • • • '. • • • '. • .434
Chart 35. Queue Management Dequeue
Routine • • • • '. • • • • '. • • • • • .435
Chart 36. Queue Management Delete
Routine
.436

Illustrations

11

12

OS/360 MVT Job Management (Release 21)

Summary of Amendments
for GY28-6660-9
OS Release 21

NEW PROGRAMMING FEATURES

Status Display Support

TIME Macro Instruction
Provision has been made for the use of
this macro instruction during subtask
attaching and allocation housekeeping
routines.

The following task-creating commands
have been added to the,COMMAND
PROCESSING section: DISPLAY PFK;
DISPLAY C,K; DISPLAY M (removed from
the list of existing-task commands);
MONITOR A.
The following existing-task commands
have been added to the COMMAND
PROCESSING section: MSGRTi STOPMN;
CONTROL.

Alternate Step Delete
The Alternate step Delete routine has
been deleted.

The operands in the following list have
been moved from the STOP command to the
STOPMN command: DSNAME, SPACE,
JOBNAMES, STATUS, SESS. Note: For
release 21, the system will continue to
recognize these operands as valid for
use with the STOP command as well as
for the STOPMN command.

TCTIO'!'
The graphic layout of this table has
been modified.

Master Scheduler Initialization Routine
sections, of this routine have been
rewritten.
Reply Processor for Non-MCS
An SVC 34 routine for non-MCS
environments has been added.

Job cancellation
Changes have been made to reflect job
cancellation processing when in the
flush/fail mode. See Allocation
Housekeeping section.

M65MP Shared DASD
Changes have been made to some VARY
commands for shared direct access
storage device support.

Dictionary
New abbreviations have been added to
the Appendix E dictionary.

Console DUMP Command
A new SVCLIB module has been added to
provide for dumping of main storage to
a pre-allocated data set, SYS1.DUMP.

Module Cross-Reference
Appendix C has been updated to reflect
new and changed module cross-reference
information resulting from other
changes in the publication.

VARY with OLTEP
The VARY CONSOLES and VARY ONLINE
routine has been modified for use of an
online test executive program.
DISPLAY SQA Command
A new SVC 34 command has been added to
display the system queue area.
Automatic Volume Recognition
Changes have been made to reflect new
devices and volumes and processing
- modifications in this area of the book.
MISCELLANEOUS CHANGES
SET Command
A new module has been added to the
processing routine for thiS command.
Queue Manager Parameter Area
The QMPA has been slightly modified.

Dynamic Data Set Allocation
The description of this feature has
been removed from the publication. The
subject matter may now be found in the
publication IBM System/360 Operating
system: Terminal Monitor Program and
Service Routines Program Logic Manual,
GY28-6770.
NEW PUBLICATION FEATURE
Module Descriptive Name-Assembly Name
Cross Reference
Appendix F now contains a cross-reference
between the module descriptive names and
the assembly listing names that are given
in Appendix B. Thus, if the descriptive
name is known, the corresponding assembly
module name may be found. The appendix
also contains references to illustrations
that contain the module names.
Summary of Amendments

13

Summary of Amendments
for GY2S-6660-S
OS Release 20.1
>

r---------------------T-------------------------------T-------------------------------~-,

I
I
IArea of Publication Affected
I
I
I
I
I (areas correspond to entries
IName of Item
I Description
lin Table of Contents)
I
~---------------------+-------------------------------+---------------------------------~
ITSO System Management SMF routines have been changed IPart 2
IFacilities (SMF)
to provide SMF recording for
IAttaching the Subtask
I
jobs operating under TSO.
I
IPart 6
I
I
Task Termination
I
step termination
I
SMF Processing

I
I
I
I

System Management Facilities
The SMF SVC Routine (SVC 83)
Transferring Records
The SMF Records
Appendix A
Job Management Record (J~m)
Figure 90

I-

I
I
I
I
I
I
I

System Management Control
Area (SMCA)

I
I

Timing Control Table (TCT)
Figure 102

I

~---------------------+-------------------------------+---------------------------------~

TSO Master Scheduler
Support/Shortened
CSCB

The Command scheduling Control IPart 2
Block size is reduced.
Terminating Subtasks

Part 5
Command Scheduling
Task-Creating Commands
The START Commands
The DISPLAY A Command
Appendix -A
Command scheduling Control Block
Figure 75
Appendix C

I

I
Appendix E
~---------------------+-------------------------------+---------------------------------~
ITSO Master Scheduler ISVC 34 has been changed to
IPart 5
I
ISupport STAE in the Iprovide the STAE facility for ICommand Scheduling
I
IMaster SCheduler
lerror recovery in the master
I Initializing the Command
I
I
Icommand scheduling routines.
I Scheduling Routine
I
I
I
I
I Figure 21
I
I
I
I
I
I
I
ICommand Execution
I
I
I
I Task-Creating Commands
I
I
I
I The START Command
L
Figure 25
JI
I _____________________ I _______________________________ I _________________________________
~

~

(Part 1 of 5)

14

OS/360 MVT Job Management (Release 21)

r---------------------T-------------------------------T---------------------------------,
I
I
IArea of Publication Affected
I
I
I Name of Item

I
I Description

I (areas correspond to entries
I in Table of Contents)

I
I

~---------------------+-------------------------------+---------------------------------~

ITSO Master Scheduler
ISupport STAE in the
I Master Scheduler
I (Continued)
I
I

I
I
I
I
I
I

IExisting-Task Commands
I
I The STOP DSNAME Command through I
I The STOP STATUS Command
I
I
I
I
I
I Appendicies B, C, and E
I

~---------------------+-------------------------------+---------------------------------~

ITSO Master Scheduler ISVC 34 routines have been
I Introduction
I Support/operator
Ichanged to support TSO operatorloperator Commands
I subcommands.
I
Subcommands
I
IPart 5
I
ICommand Scheduling
I
I Initializing the Command
I
I Scheduling Routine

I

I
I

I

I storage and Notification
I Table 4

I

I Error Message Processing

I

ICommand Execution
I Task-Creating Commands
I The DISPLAY A Command
I The Syntax Check Routine

I

IExisting-Task Commands
I The Monitor DSNAME Command
I through the HALT Command

I

I The STOP DSNAME Command through
I the STOP STATUS Command

I

IAppendix A
ICommand Scheduling Control Block
I Figure 75

I

IMaster Scheduler Resident Data
I Area
I Figure 92

I

IAppendix B
IIEEVDSP1, IEEVRC, IEEVRCTL,
IIEE1403D

I

I

I

IAppendix E

~---------------------+-------------------------------+---------------------------------~

ITSO Scheduler
LOGON/LOGOFF

IThe System Task Control and the Part 3
IInitiator routines have been
Initiator Functions
Ichanged to support TSO job
Figure 12
I processing
Initializing the Initiator
I

I
I
I
I
I

I

I
I

I
I

Selecting Jobs
Looking for Work, through
Data Set Integrity

I

I
I
I
I
I
Attaching the Subtask, through
I
I
Terminating Subtasks
I
I _______________________________ _________________________________
Job Termination
I
J

--------------------_~

~

(Part 2 of 5)

Summary of Amendments

15

r---------------------T-------------------------------r---------------------------------,
I
I
IArea of Publication Affected
I
I
IName of Item

I
I Description

I (areas correspond to entries
lin Table of Contents)

I
I

r---------------------+-------------------------------+-------------------------------~-~

ITSO Scheduler
I LOGON/LOGOFF
I (Continued)
I
I

I
I
I
I
I

I

I

I
I
I
I
I

I
I
I
I
I

I Part 5
I
ICommand Execution
I
I Task-Creating Commands
I
I
I The START Commands
I
I Figure 25
.---------------------------------~
IAppendix A I
IJob Management Record (JMR)
I
Ithrough Linkage Control Table
I
I
I
IAppendix B
I

~---------------------+-------------------------------+---------------------------------~

ITSO Scheduler
Commands

IThe work queues have been
I changed to include the TSO
Ibackground reader queue. The
I Queue Alter routines can now
Iprocess the background reader
I queue.

Introduction
Operator Commands

Part 1
Initializing the Queue Data Set

I

Part 5
Command Execution
Task-Creating Commands
The Queue Manipulation Commands
The Queue Search Control
Routine (Module IEESD563)

I

The System Reconfiguration
Commands
Part 6
IThe Work Queues

I

IAppendix B

I

IAppendix E

.---------------------+-------------------------------+---------------------------------~

IReader Device Type
IThe reader device type and
IAppendix A
I
I
I class field of the JMR has been IJob Management Record
I
I
Ichanges to indicate a dummy
I
I
I
IIEFRDER DD statement
I
I
.---------------------+-------------------------------+---------------------------------~
ISWITCH Command
SVC 34 has been changed to
Part 5
Processing
include processing of the
Command Scheduling
SWITCH command by module
Storage and Notification
IGC1403D
Table 4
Command Execution
Existing-Task Commands
The DISPLAY T Command
The SWITCH Command
IAppendix B
IIEE1403D

I

I
I
I
I

-I
IAppendix C
I
~---------------------+-------------------------------+---------------------------~-----~
IDynamic Allocation
IDynamic Allocation routines forlAppendix F
I
TOO have been added.
I _________________________________ JI
I_____________________ I _______________________________
L
~

~

(Part 3 of 5)

16

OS/360 MVT Job Management (Release 21)

r---------------------T-------------------------------T---------------------------------,
I
I
IArea of Publication Affected
I
I
I Name of Item

I
I Description

13211 Printer
I
I
I

las an output device
I
I

I (areas correspond to entries
I in Table of Contents)

I
I

Initializing and Processing
Commands

I
I
I

t---------------------+-------------------------------+---------------------------------1
Isupport of the 3211 UCS printer Part 1
I

I

Processing a Queue Entry
Processing Data sets
The Data Set Processing
Subtask
Processing System Message
Blocks

I
I
I
I

I
I

I
I
I
I
I
I
I
I
I

service Routines
The Transition Routine
Figure 19
Figure 88
Appendix B
IEFSDTTE

I

t---------------------+-------------------------------+---------------------------------1
OLTEP
IAllocation eligibility for
Part 6
units being tested by OLTEP

I/O Device Allocation
Unit Assignment
Demand Allocation
Automatic Volume Recognition
CommOn Subroutines
Allocation Recovery
Lack of Availab1e Devices
Appendix E

t------------~--------+-----'--~--'--~------'---'--~------.,..~+-----~----------------------------1

IMODE Command
I
I
I
I
I
I
I
I

I Use of MODE command for
I Model 145
I
I

r

I
I
I
I

I Part 5
I Figure 21
I
I Command Execution
I Existing-Task Commands
I The MODE Command
I
IAppendix B
\' IGF1.9101

I
I

I
I
I
I
I
I
I

t:---------------------+-------------'-------------"""-----'---+--...,------------------'----'--------1
IRotational PdsitionallUse of a RPS dev:Lce for work
Ipart 1
I
I sensing
I
I
I

I

I

I queues
I
I
I
I
I

IInitializing the Queue Data Set
I
IAppendix B
I lEFSD055
I
tAppeJidix ,E

I
I

I

I
I
I

t:-----..:.~-----.;..~.;..------+~-----'--'"--'------~-.;..--------------+--------------~---'---'-"'"--'----------~1

j1Miscellaneous changeslModifications to system task
land improvements to lcontroi routines
lexisting publication I

IPart 5
{Figure 25

I
I
I'

I
I Appendix B

I

I

I
.I
I

I

I

.

I
I
I

I

ITable 6. 1.
I

t

L_---.;..-........-'-'--"'----'.:o..--.;..-~.l.-- .........-----_-------'""_"'"' _______ ~ ..."'-,...-.l.....

I

I
I
I

IEEVRC
I EFVS CAN

I

-_---------.,..--'--------------------J

(Part 40f 5)

Summary of Amendments

17

r---------------------T-------------------------------T---------------------------------,

I
I
IArea of Publication Affected
I
J
I
I (areas correspond to entries
I
I Description
lin Table of Contents)
I
IName of Item
~---------------------+-------------------------------+---------------------------------1
I
I. Modifications to the START
I Part 5
I
ICommand Execution
I
I
I Command
I
I
J Task-Creating Commands
I
I
I
I The START Command
I
~---------------------+-------------------------------+---------------------------------~
I
IModifications to Queue routines I Part 5
I
I
I
I
ICommand Execution
I
I
I
I Task-Creating Commands
I
I
I The Queue Search Routine
I

I

I

I

~

~

I

I
I
IFigure 28
I
I
I
I
I
IAppendix B
I
I
I
I
I
I
I IEESD582
I
I
I
I IEESD583
~---------------------+-------------------------------+---------------------------------~
I
IModifications to queue entry
Ipart 6
I
I
I processing
IThe Interpreter Routine
I
I
I
I Input and Control Operations
I
I _____________________ I _______________________________ I _________________________________
Queue Entry Process ing
L
JI
(Part 5 of 5)

18

OS/360 MVT Job Management (Release 21)

Summary of Amendments
for GY28-6660-6
OS Release 20

r--------------------T-------------------------------r----------------------------------,
I Name of Item
I Description
I Area of Publication Affected
I
I
I

I
I

I (areas correspond to entries
I in Table of Contents)

I
I

~--------------------+-------------------------------+----------------------------------1

IShortened CSCB
I
I
I
I

A reduction in the size of the IPart 3
command scheduling control
ITerminating Subtasks--Cancel,
block.
ITimer, and OUTLIM Termination
I
IPart 5
IFigure 25

I
I
I
I
I
I

I

I

I

I

I

I

I

I

I

I

I

I

ICommand Execution--Task-Creating
I Commands: The START Command
IAppendix A
IFigure 75

I
I
I
I

IAppendix B
IIEEVICTL

I
I

IIEEVSMSG

I

jAppendix C

I

IAppendix E

I

~--------------------+-------------------------------+----------------------------------1

ISTAE in the
I~Bster Scheduler
I
I
I

IA change to SVC 34 to provide IPart 5
Ithe STAE facility for error
ICommand Scheduling--Initializing
Irecovery in the master schedul-Ithe Command Scheduling Routine
ing and command scheduling
I
routines.
IFigure 21

I

I

I
I

ICommand Scheduling--Storage
land Notification

I

ICommand Scheduling--Error
IMessage Processing

I

ICommand Execution--Task-Creating
I Commands

I

ICommand Execution--ExistingITask Commands: The MODIFY
ICommand, The STOP Command

I

IAppendix B
IIEEPDISC

I

IIEEVDSP1

I

IIEEVWAIT

I

IIEE0003D

I____________________
L

I

I _______________________________ IIEE5103D
__________________________________ JI

~

~

(Continued)

Summary of Amendments

19

r--------------------T-------------------------------r----------------------------------,
IName of Item
I Description
IArea of Publication Affected
I
I
I

I
I

I (areas corres pond to entries

I in Table of Contents)

I
I

~--------------------+-------------------------------+----------------------------------~

ISTAE in the
IMaster Scheduler
I (Continued)
I
I
I
I

I
I
I
I
I
I
I

IIEE5203D

I
I
I
I
I
I
I

I
I IEE5303D
I
IAppendix C
I
IAppendix E

~--------------------+-------------------------------+----------------------------------~

ASCII

I A change to routines that
I Part 4
Iverify tape labels so that they Initializing and Processing
Ican process American National
Commands--Service Routines: The
I Standard labels.
Put Routine, Transition Routine

I
I
I
I
I
I
I
I
I
I
I
I
I
I

.

Part 6
I/O Device Allocation--Unit
Assignment: Automatic Volume
Recognition, Processing Requests
for Unmounted Volumes
Figure 70
Table 15
Appendix A
Figure 88

I
Appendix E
~--------~-----------+-------------------------------+----------------------------------~
IModel 155 Recovery
The addition of a routine
Part 5
I
IManagement Support
(module IGF29601) to SVC 34
Figure 21
I
that enables the operator to
I
display status information
Command Execution--Existing-Task
I
about the Model 155 via the
Commands: The MODE Command
I
MODE command.
Figure 32
I

I
I
I
I
I
I

Appendix B
IGF29601
Appendix C

I
Apoendix E
~--------------------+-------------------------------+----------------------------------~
IModel 165 Recovery IThe addition of a routine
IPart 5
I
IManagement Support I (module IGF55301>to SVC 34
IFigure 21
I
I
Ithat enables the operator to
I
I
I
I display status information
I Command Execution--Existing-Task I
I
I about the Model 165 via the
I Commands: The MODE Command
I
I
IMODE command.
I
I
I
I
IFigure 32
I

I

I
I
I
I
I
IL_____

I

~

I
I
I
I
I
I
.
______________ .l.
_____..... __
"_ ____ _'_ ____..........__

I

~

I

IAppendix B
I
IIGF55301
I
I
I
IAppendix C
I
I I
I Appendix
.E . .... _ ...'-____ = ____ '_ __ "_ __.___ JI
______ .... _.l.
__ "" ___ -'-___
.~

( Continued')

20

OS/360 MVT JOb Management (Release 21)

r--------------------T-------------------------------r----------------------------------,
IName of Item
I Description
IArea of Publication Affected
I
J (areas correspond to entries

I
I
~--------------------+-------------------------------+----------------------------------~
Time-of-Day Clock
Routines (modules IGC6503D and IPart 1
The Master scheduling Task
IGC6603D) that set the TOD
clock for system/370 models
during SET command processing. Part 5
Figure 21
I

I

I

I

Iin Table of Contents)

Command Execution--Existing-Task
Commands: The SET DATE and SET
CLOCK Commands
Appendix B
IEE6503D
IEE6603D
Appendix C
Appendix E
~--------------------+-------------------------------+----------------------------------~

IDelayed Volume
Verification

IA change to I/O device allocaItion that delays the verificaItion of volumes containing old
Idata sets until the end of
lallocation processing.
I
I

Part 3
Figure 12

Part 6
I/O Device Allocation--Allocation
Housekeeping: Protecting UCB
Information

I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I

I
I
I
I

Figure 66
I/O Device Allocation--Gathering
Information: Completing Tables
I/O Device Allocation--Unit
Assignment: Processing Requests
for Unmounted Volumes
I/O Device Allocation--Space
Assignment: Mounting Volumes,
Compressing the TIOT
I/O Device Allocation--common
Subroutines: Unsolicited Device
End Posting Routine, Lack of
Available Devices, Lack of Available Space, separation strike-Out
I/O Device Allocation--Allocation
Exit
Appendix A
Figure 74

I

Appendix B
I
IEFSD41Q
I
I
I
____________________ I _______________________________ IIEFVPOST
________________________________
~

~

~_J

(Continued)

Summary of Amendments

21

r--------------------T-----------------------------~_r----------------------------------,

JDelayed Volume
Verification
(Continued)

JIEFWDOOO
I
JIEFWEXTA

1

IEFXT002
IEFXT003

AEEendix C
AEEendix D
Chart 22
Chart 23
Chart 24
AEEendix E
~--------------------+-------------------------------+----------------------------------1

IHigh-speed Job
JQueue Format
I
I
J
I

IChanges to modules IEFORMAT andlPart 1
JIEFSD055 so that module
JInitializing the Queue Data Set-IIEFSD055 issues the XDAP macro IFormatting the Queue Data Set
linstruction to write the master I
IQCR into the control record
I
Jarea.
I

J
I
I
J
I
J

~--------------------+-------------------------------+~--------------------------------1

IImprovements to
IChanges to the SlOT at decimal IAEEendix A
IExisting Publicationloffsets 47, 48, 55, and 84 to IFigure 97
Ireflect release 20 mapping.
I

I
I
I

~-------------------------------+----------------------------------1

IChanges to the SCTX to reflect IAEEendix A
Irelease .20 mapping.
IFigure 96

I
I

~------------------------------~+---------------------------------1

IClarification of the passing oflPart 3
Icontrol from the Attach routinelAttaching the Subtask
I (module IEFSD263) to the TCTlOTI
IConstruction routine (module
I
IIEFSMFAT).
I

I
I
I
I
I

~------------------------------_+---------------------------------1

IExplanation of passing of
Icontrol frOm modules lEFVHEB
land IEFVHH to module IEFUJV.

Ipart 6
IFigure 55
I

I
I
I

~-------------------------------+---------------------------------1

IClarification of mounting
Idirect access volumes.
I

IPart 6

11/0 Device Allocation--space

I Assignment:

Mounting Volumes

I
I
I

~------------------------------+----------------------------------1

IClarification of SMF exits fromlPart 6
Ithe reading task.
IFigure 13

I
I

~------------~-------+------------------------------+---------------------------------1

ICalculation of Data IAdditional calculation of
IPart 6
I
Iset Device Require- Idevice requirements if both
11/0 Device Allocation--Gathering
I
Iments
lunit affinity and volume
I Information: Calculating device I
laffinity apply to the data set,IRequirerrents
I
I
I
land if the device type speci- I
I
I ____________________ Ified
is tape only.
ITable
16
L
_______________________________
_________________________________
JI
~

22

OS/360 MVT Job Management (Release 21)

~

Introduction

To the user of a computing system, the basic unit of work is the job. The user must
arrange for the programs that execute that job to be loaded and executed, he must insure
that the required I/O devices are available (and that the appropriate data sets and
scratch volumes are mounted), and he must oversee the operation and cancel or change the
order in which jobs are run as external conditions dictate. These functions are
frequently performed by an operator, following the instructions of programmers and
installation management.
With the IBM System/360 Operating System however, these functions are performed by Job
Management routines. since the number and types of I/O devices, the names of data sets,
program names, and other descriptive information must be communicated to the operating
system, Job Management routines read and interpret job control language (JCL) statements.
Since it is often desirable to include data in the input stream of JCL statements, and
convenient for the system to write standard output data sets, system Input and Output
routines have been included. Operator commands, and the routines to execute those
commands, have been included to give the operator control over the processing performed
by Job Management routines.

I

At the MVT level, these functions are performed concurrently by Job Management
routines executing the reading, initiating, writing, master scheduling, and command
execution tasks.
.
Processing Input Streams

Jobs are presented to the operating system
in input streams consisting of JCL
statements, system input data records, and
operator command statements. Each time the
operator issues a START command specifying
a reader, a reading task is established to
process an input stream. The interpreter,
the program that performs the reading task,
includes the following functions:

• It enqueues the job's input queue entry
at the priority specified for the job.
Each reading .task in the system may be
performed concurrently with other reading
tasks, as well as with other system tasks
and job steps. Performance of a reading
task is terminated when the operator issues
a STOP command, or when the associated
input stream is exhausted.
Initiating Job Steps

• It reads records from an input stream
and the procedure library.
• It scans JCL statements and converts
them to internal text.
• It builds tables from the internal
text, and creates input queue entries
from the tables.
• It places messages from the operating
system to the programmer in a system
output queue entry (which, however, is
not completed or enqueued until the
last step of the job has terminated).
• It assigns space in output queue
entries for pointers to system output
data sets.
• It writes system input data records to
an intermediate, direct access device,
and places pointers to a job's system
input data sets in its input queue
entry.

Each time the operator issues a START
command specifying an initiator, an
initiating task is established to schedule
the execution of job steps. The initiator
is the program that executes an initiating
task; it selects the highest priority job
from the first of the input queues
associated with it that contains entries.
If there are no entries available in any of
its queues,· the initiator enters the wait
state until an entry is enqueued or a STOP
or MODIFY command is issued.
When a queue entry becomes available,
the initiator dequeues it and insures the
integrity of data sets for which a
nontemporary name has been specified. It
selects the steps of the job (in the order
in which the EXEC statements appeared), and
for each step, performs the following
functions:
• It obtains a region of main storage for
the step.
Introduction

23

• It uses the I/O Device Allocation
routine to check EXEC statement
condition codes, to allocate I/O
devices, to obtain space on direct
access devices., to issue mounting
messages, to construct the job step
TIOT, and to add messages to the job's
message class output queue entry.

classes. Messages are placed in the
message class; data sets may be in the
message class, or they may be placed in
other classes. There might, for example,
be one class for output to a printer.
Another class might be for punched output,
and a third might be for output to be
written on tape for later printing.

• It passes information to the
supervisor, and passes control to the
first program of the job step via the
ATTACH macro instruction, then enters
the wait state while the step is being
executed.

There are two ways of having system
output written on the a~propriate output
device:

• When the job step has been executed,
the initiator uses the Termination
routine to check JOB statement
condition codes, to execute the User's
Accounting routine., to direct the
disposition of the data sets referred
to during execution of the job step, to
free the I/O devices allocated to the
job step, and to add messages (and
pOinters to system output data sets) to
the job's output queue entries,. If the
step is the last step of the job, the
Termination routine also enqueues the
job's output queue entries.
Each initiating task may be performed
concurrently with other initiating task's
and job steps, as well as with other system
tasks. However, only one job at a time,
and (within a job) only one step at a time
is executed as a result of the performance
of one initiati.ng task. Thus, the number
of job steps that can be executed
concurrently is equal to the number of
initiating tasks established in the system.
The performance of an initiating task is
interrupted during the execution of its
subta.sk (the job step), and when there are
no entries in the input queue. Performance
of the task is terminated when the operator
issues a STOP command.

Writing System Output

• The operator may use START commands to
initiate direct system output (DSO)
processing for one or more classes. He
may change the set of classes via
MODIFY commands, via STOP commands, or
by issuing additional START commands.
• The operator may use START commands to
establish writing tasks. He may change
the set of classes via MODIFY commands,
via STOP commands, or by issuing
additional START commands.
If DSO processing has been started, a
job having system output in a DSO class
writes data directly on the appropriate
device. system output in other classes is
written on a direct access device for later
processing by a system output writer.
If the DSO processing is specified for
the message class, the initiator writes
messages concerning the job on the
appropriate device. Otherwise, it adds the
messages to the job's message class output
queue entry for later processing by a
system output writer.
When a job terminates, the output queue
entries that contain messages or pointers
to data sets are enqueued. Such messages
and data sets must be ~rocessed by system
output writers .•
When the operator issues a START or
MODIFY command, to establish or change a
writing task, the command specifies the
queues from ~hich the writer selects
entries, and the writer processes as
follows:

system output consists of messages from the
operating syste·ltI to the progrartuner, and of
data se'ts designated by the progranttner as
system output data sets. The messages, and
in many cases pOinters to the data sets,
are placed in output queue entries by
routines performing the reading and
initiating tasks.

• The queues are listed in the order
specified in the command; the writer
dequeues the highest priority entry
from the first queue in its list that
contains entries. If there are no
entries available in any of its queues,
the writer enters the wait state until
an entry is enqueued.

System output is divided into classes
(as Specified bY the programmer and the
installation). 'there is an output queue
corresponding to each of the 36 available

• A queue entry may contain messages,
pointers to data sets, or both; the
writer reads each record in the entry
into main storage and determines

24

OS/360 MVT Job Management (Release 21)

whether the record contains messages or
a pointer to a data set.
• If the record contains messages, the
messages are written to the output
device, and another record is obtained
from the queue entry. If the record
points to a data set, the writer opens
the data set, attaches a subtask to
write the data set records to the
output device, then closes and deletes
the data set before obtaining another
queue entry record.
• When the last record in a queue entry
has been processed, the writer deletes
the entry before dequeueing another
entry.
Each writing task may be performed
concurrently with the performance of other
writing tasks, as well as with job step
tasks and with other system tasks. The
performance of the writing task is
interrupted during the performance of its
subtask, and when there are no output queue
entries of the classes in the writer's
list.. Performance of a writing task is
terminated only when the operator issues a
STOP command; performance of the subtask
may be terminated with a CANCEL command.
Initializing and Establishing System Tasks

The master scheduling task is established
when the system is loaded.
Routines
performing this task initialize the
nucleus, console communications, and the
system log (see the publications IBM
System/360 Operating system: IPL/NIP,
Program Logic Manual, GY28-6661, and IBM
system/360 Operating system: MVT
Supervisor, Program Logic Manual,
GY28-6659). Other routines performing the
master scheduling task establish the queue
initialization task, and schedule the
execution of the initial SET command and
the commands specified by its AUTO
parameter. When the system has been
initialized, the Master Scheduler routines
remain in the wait state except when an
operator command or a system log operation
requires the establishment of a system
task. The Master Scheduler Attach routine
then issues the ATTACH macro instruction to
establish the START command task (which is
executed by the System Task Control
routine) in response to START commands, and
to establish the appropriate command
execution tasks in response to other task
creating commands.
When the required task
has been established, the master scheduler
returns to the wait state; when the tasks
it establishes are terminated, the routines
performing those tasks return control to
the supervisor.

Queue Management

The queue data set, which contains the work
queues, is initialized or reinitialized by
routines performing the queue
initialization task.
The space for the
queue data set is allocated when the system
is generated; the data set is not, however,
placed in the proper format until, in
response to the F parameter of the initial
SET command, the Queue Formatting routine
writes initialized queue control records
(QCRs) and sets up and chains logical
tracks .•
Once the queue data set has been
formatted, the procedure need not be
repeated; when the system is reloaded the F
parameter may be omitted from the initial
SET command. When the F parameter is
omitted, System Restart routines,
performing the queue initialization task,
inspect the queue data set to insure that
there are no incomplete input queue
entries, and to re-enqueue any dequeued
input or output queue entries so that they
can be processed when an initiator and
system output writer are started.
Management of the work queues is done by
a set of routines that are used as
subroutines by routines performing system
tasks. There are 76 queues, of which 56
are used by the operating system. These
are:
• The 1~ input queues, which contain
entries describing jobs to be run by
the system.
• The Remote Job Entry (RJE) queue, which
contains entries describing jobs for
input to the job management routines.
• The hold queue, which contains input
queue entries in the hold state as a
result of a HOLD command.
• The 36 output queues, which contain
entries describing the system output of
jobs that have been run by the system.
• The free-track queue, which contains
the tracks in the queue data set that
are not assigned to a queue entry.
• The automatic SYSIN batchi~g (ASB)
queue, which contains compressed JCL
statements for use as input to the
interpreter.
• The background reader (BRDR) queue,
which contains pointers to data sets
for TSO jobs submitted via the SUBMIT
command.
(A description of the
background reader is in the TSO Control
Program PLM. A description of the
Introduction

1\

25

SUBMIT command is in the TSO Command
Processor PLMs.)
The user of queue management provides a
parameter area that specifies the operation
to be performed; when records are to be
transferred, he also provides a main
storage area for the records.. The user
then links to a Queue Management routine,
which performs one of the following
functions:
• It initializes for the establishment of
a queue entry.
• It assigns records and (as required)
logical tracks to the entry.
• It writes records into the assigned
locations', or reads them into main
storage .•
• It enqueues queue entries in the
specified queue, at the specified
priority.
• It dequeues the highest priority entry
from the specified queue.
• It deletes entries: returns the tracks
assigned to them to the free-track
queue.
An option permits logical tracks to be
"stacked" in main storage, thus reducing
the number of accesses to the queue data
set.
The Track Stacking routines, which
are subroutines of the Queue Management
routines, establish and maintain the track
stack in main storage and accomplish the
transfer of logical tracks and records.
Operator Commands

Operator commands may be entered into the
system via an operator's console input
device, via a TSO terminal, or via a system
input reader.
The execution of operator
commands is scheduled by an SVC routine
(SVC 34); the commands are executed either
by a routine performing a task established
(by the master scheduler) as a command
execution task, or by routines performing
existing system tasks.

26

The command scheduling routines (SVC 34)
examine the command verb and determine
whether the command is to be executed
immediately by a routine that is part of an
existing task or whether execution of the
command requires the creation of a new
system task. If the command is to be
executed immediately, control passes to the
appropriate processing routine via an XCTL
macro instruction.
If the command requires
the creation of a system task for
execution, a command scheduling control
block (CSCB) is built, the command is
stored in the CSCB, and the master
scheduling task is posted. The master
scheduling task passes control to the
appropriate command processing routine via
an ATTACH macro instruction.
If the command to be executed is a START
or MOUNI' command, the master scheduler
passes control to the System Task Control
routine via the ATTACH macro instruc~ion.
The System Task Control routine obtains a
region, checks the operand of the command,
and builds an "internal input stream" from
the parameters in the command operand. The
interpreter, used as a closed subroutine,
reads the input stream (which calls a
cataloged procedure), and creates the
appropriate job description tables. The
System Task Control routine then passes
control to the Initiator subroutine to
complete the command processing.
The Initiator subroutine uses the I/O
Device Allocation routine to allocat~
devices and then attaches the program that
executes the starting task. After
execution and termination of the starting
task, the initiator returns control to the
System Task Control routine. This routine
frees the region and returns control to the
master scheduler.
The queue accessing commands (CANCEL,
DISPLAY, HOLD, RELEASE, and RESET) are
executed by routines performing the queue
alter task. These routines access the
input, hold, ASB, RJE, BRDR, and output
q~eues and make changes or display
information as specified in the command.
The remaining commands are discussed in
the "Command Processing" section of this
publication, and in the sections describing
the executing routines.

OS/360 MVT Job Management (Release 21)

/1

Part 1:

Initialization and Restart

When the operating system is loaded, it must be initialized to conform to the locations
and extents of the system data sets, and to the requirements of the installation. This
process, which includes formatting the work queue data set, is called system
initialization.
If the work queue data set is already in the proper format, special
processing must be performed to purge the work queues of incomplete and inappropriate
entries; in this case, the processing is called system restart.
System initialization
and restart are performed by routines executing the master scheduling task, or by
routines executing subtasks of the master scheduling task.
The Master Scheduling Task

The master scheduling task (Figure 1) is
one of the system tasks established when
the system is loaded. The portions of this
task that are discussed in this publication
are to perform the following functions:
• Initializing the master scheduler
resident data area.
• Establishing the queue initializing
task.
• Establishing the direct access volume
initializing task.
• Causing the initializing commands to be
executed.
• Initializing the system management
facilities (SMF) if they are included
in the system.
• Establishing command processing tasks
(see the "Command Processing" section
of this publication).
The remaining portions of the master
scheduling task are discussed in other
publications. The portion performed by the
nucleus initialization program (NIP) is
discussed in the IPL/NIP Program Logic
Manual; the portions performed by the
Console Initialization routine and by the
Log Initialization routine are discussed in
the MVT supervisor program logic manual;
and the portions performed by the TSO
Initialization routine are discussed in the
Time Sharing Option Control Program Program
Logic Manual.
The initializing functions of the master
scheduling task are performed in the Master
Scheduler IPL routine (module IEEVIPL),
which the macro SGIEEOOV assembles during
system generation. The Nucleus
Initialization program enters the Master
Scheduler IPL routine via a LINK macro
instruction, and passes to i t a pointer to
the UCB for the parameter library
(SYS1.PARMLIB) unit.

Before performing the initialization of
the master scheduler resident data area,
the Master Scheduler IPL routine links to
the Console Initialization routine
(IEECVCTI). On the return, it posts the
event control block (ECB) that the
communications task is waiting for. Next,
the IPL routine issues a 'READY' message
for the operator and moves the master
scheduler's TIOT from the IPL routine into
a section of main storage obtained from
subpool 255. Then the routine uses a WTO
macro instruction to display commands that
are available for execution as a result of
the AUTO parameter in a SET command, and
waits for the SET command to be issued.
The SET command causes the Command
Scheduling routine to issue a POST macro
instruction that specifies an ECB in the
master scheduler resident data area. When
the posting occurs, the Master Scheduler
IPL routine looks for the procedure library
and for the work queue data sets.
If the
SET command has specified the units that
contain those data sets, the routine checks
the specified units; if no units are
specified in the SET command, the routine
checks the catalog, the units specified
when the system was generated, and finally
the system residence volume.
When the routine has determined which
units should contain the data sets, it
checks to see that the units are in the
ready state, that the correct volumes are
mounted, and that the data sets are
actually on the specified volumes.
If so,
it stores pointers to the UCBs in the
master scheduler resident data area, and in
the master scheduler's TIOT.
Then the IPL
routine catalogs the procedure library data
set into the volume on which it was found.
If either data set cannot be found, or
if the correct volumes are not mounted, or
if the specified units are not ready, the
routine issues a message to the operator
and waits for the SET command to be
re-issued. Initialization does not
continue until the error has been corrected
and the data sets are found.
Part 1:

Initialization and Restart

27

ATTACH and RETURN

LINK and RETURN
LI N K and RETURN

Na

NON-SMF

Note 1:

All transfers of control between load modules
are done via XCTL unless otherwise marked.

Note 2:

Console Initialization (see the MVT Supervisor PLM).

Note 3:

Queue Initialization (see "Initializing the Queue
Data Set" in this publication).

Note 4:

TSO Initialization (see the TSO Control Program PLM).

I Figure

28

XCTL

The Master scheduling Task

OS/360 MVT Job Management (Release 21)

RETURN

ATTACH

In System/370 machines, the Master
Scheduler IPL routine uses the WTOR macro
instruction to ask the operator for SET
command parameters for setting the
time-of-day (TOD) clock. After the
operator has replied, the routine generates
an internal SET command and issues SVC 34
to pass control to the Command scheduling
routine. During command processing, the
TOD Clock routines (modules IGC6503D and
IGC6603D) of the Command Scheduling routine
use the CLOCK and DATE parameters from the
SET command to set the TOD clock (see the
"Command Processing" section of this
publication).
After cataloging the procedure library,
the IPL routine uses the ATTACH macro
instruction to pass control to the queue
initializing task (in module IEFQINTZ) and
then waits for completion of the
initialization procedures. After
initialization is completed, the IPL
routine receives control and uses the
DETACH macro instruction to detach the TCB
of the queue initialization task. Then the
routine issues the ATTACH macro instruction
to establish the direct access volume
initialization task (module IEEPPRES) and
waits for the completion of the task.
When the ATTACH macro instruction is
issued, control is passed to the Get Region
routine (module IEEPPRES), which obtains a
register save area and a region of main
storage, then passes control (via a LINK
macro instruction) to the Interface
routine.
After obtaining a pointer to the UCB for
the parameter library unit, the Interface
routine (module IEEVPRES) upens a DCB for
the parameter library, obtains main storage
for a read DECB, and branches to the Volume
Attribute Setting routine.
The Volume Attribute setting routine
(module IEFPRES) scans the PRESRES data set
entries until it finds one that corresponds
to a mounted volume, then sets the volume
attributes in the UCB.
If there are volumes listed in the
PRESRES data set that are not mounted, the
routine uses the WTOR macro instruction to
request the operator to mount the correct
volumes. The operator replies with a list
of unit addresses or "GO"; if the reply
contains unit addresses, the routine reads
the volume labels, checKs the volume
serials, and places them (and the volume
attributes) in the UCBs.
When all of the volumes listed in the
PRESRES data set are mounted, or when the
operator has replied "GO", the routine uses
the WTO macro instruction to inform the
operator of the volume serials and

attributes of all permanently resident and
reserved volumes, then returns control to
the master scheduler.

I

The Master Scheduler IPL routine then
detaches the TCB for the direct access
volume initializing task and uses the WTO
macro instruction to display the commands
selected for execution via the AUTO
parameter of the SET command.
It schedules
the execution of the commands by issuing an
SVC 34 for each command.

If the system includes TSO, the IPL
routine uses a LINK macro instruction to
give control to module IEEVSIPL·for
initializing the SYS1.BROADCAST data set.
When the IPL routine again receives
control, it uses the XCTL macro instruction
to pass control either to the system log
initialization routine (IEEVLIN1), if the
system includes the system log, or to the
SMF initialization routine (IEESMFIT), if
the system includes the system management
facility. If the system contains neither
the SMF nor the system log facility, the
routine uses the XCTL macro instruction to
give control to the Master Scheduler Wait
routine (IEEVWAIT).
Routines IEEVLINl and IEELOGOl
initialize the system log. Routine
IEEVLINl locates the log data sets and
establishes the Log Control Area (LCA) and
log buffers. Routine IEELOGOl writes the
log job file control blocks onto the job
queue, creates the log DCBs, issues an
ATTACH macro instruction for the lag Writer
routine (IEELWAIT) and posts the lag ECB.
If module IEEVLINl does nat locate the
log data sets, the operator receives a
message that the system does nat support
the log aptian. As a result, module
IEE0303F (which is one of the SVC 36, or
WTL, routines) re-issues WTL macro
instructions as WTO macro instructions.
The control program (module IEE1603D) then
treats LOG and WRITELOG commands (from the
operator) as NOPs and sends a message to
the console informing the operator that it
does not support the system log. The log
initialization routine IEELOGOl then uses
an XCTL macro instruction to pass control
either to the SMF initialization routine if
the system includes SMF or to the Master
Scheduler Wait routine IEEVWAIT.
The posting of the lag ECB (by routine
IEELOG01) causes the lag writer routine
IEELWAIT to became dispatchable
(executable) to continue the system log
initialization. When routine IEELWAIT is
given control, it determines that
initialization processes are being
performed and uses the WTL macro
instruction to open the log data sets.
When the log data sets are successfully
Part 1:

Initialization and Restart

29

opened, routine IEELWAIT waits on the log
ECB.
(Section 7 of the MVT supervisor PLM
contains further information about the
system log.)
Initializing the system management
facilities includes obtaining and storing
the SMF parameters, allocating devices to
and opening the SMF data sets, establishing
the SMF task, initializing a 10-minute
timer" and issuing the initial SMF records.
These functions are performed by th~'SMF
Initialization routine, the SMF Open
Initializer, and the SMF SVC routine (SVC
83) •
The SMF Initialization routine consists
of three modules: IEESMFIT, IEESMFI3, and
IEESMFI2. The routine is entered at
IEESMFIT, which adds the compiled-in DD
names SMFMANX and SMFMANY to the master
scheduler TIOT, then obtains main storage
from subpool 255 for the system management
control area (SMCA). The SMCA is described
in Appendix A.
Module IEESMFIT of the Initialization
routine stores a pointer to the SMCA in the
communications vector table (CVT) then
determines whether the SYS1.PARMLIB data
set contains the SMF parameter member,
SMFDEFLT. If not, module IEESMFIT passes
control to module IEESMFI3 at entry point
IEESMFMS. If the SMF parameter member is
present, module IEESMFIT opens the data
set, and reads member SMFDEFLT into main
storage. If an .1/0 error occurs during the
read, the routine passes control to
IEESMFI3 at entry point IEESMFIO;
otherwise, it passes control to IEESMFI3 at
entry point IEESMFI3.
Module IEESMFI3 inspects the SMF
parameter member to determine whether all
required parameters have been supplied
correctly. If any required parameters are
missing or incorrectly specified, or if the
routine was entered because the member was
missing or there was an I/O error" IEESMFI3
uses the WTOR macro instruction to have the
operator enter the parameters.
When the parameters have been entered
correctly, the routine stores them in the
SMCA and uses the WTO macro instruction to
display them to the operator. If operator
intervention is permitted (OPI=YES), the
routine uses the WTOR macro instruction to
allow the operator to make changes. When
it has stored any changes, IEESMFI3 passes
control to IEESMFIT at entry point
IEESMFI4.
When it is entered from IEESMFI3, module
IEESMFIT determines whether an SMF data set
was specified. If not, the routine uses
the XCTL macro instruction to pass control
to the Master Scheduler Wait routine
30

OS/360

~VT

Job Management (Release 21)

(module IEEVWAIT); if so, the routine
obtains main storage from subpool 255 for
the SMF buffer, and uses the XCTL macro
instruction to pass control to the SMF Open
Initializer routine.
The SMF Open Initializer prepares to
have the SMF data sets allocated and
opened, and establishes the SMF task. The
JFCBs for the data sets (SYS1.MANX and
SYS1.MANY) are compiled into module
IEESMFOI; the routine uses the Queue
Management Assign/start and Read/Write
routines to obtain space in the work queue
data set and to write the JFCBs1.
It
stores the JFCB addresses in the master
scheduler TIOT, and uses the ATTACH macro
instruction to pass control to the SMF
Writer routine (module IEESMFWR). The SMF
Writer routine issues a WAIT macro
instruction (specifying the writer ECB in
the SMCA) to place the SMF task in the wait
state.
The SMF Open Initializer then sets the
first time switch in the SMCA, posts the
writer ECB causing the SMF Writer routine
to issue SVC 83 with a negative pointer to
the SMCA for allocation and opening of SMF
data sets, and issues a WAIT macro
instruction for the buffer ECB.
The SMF SVC routine (SVC 83) consists of
three load modules: the Record Transfer
routine (module IEESMF8C), the SMF Open
routine (module IEESMFOP) and the SMF
Allocation routine (module IEESMFAL). The
Record Transfer routine, which is always
entered first, inspects register 1 to
determine whether a record transfer is
required. When the SVC is to perform data
set switching or initialization functions,
the register is negative, and the Record
Transfer routine uses the XCTL macro
instruction to pass control to the SMF Open
routine.
The SMF Open routine (module IEESMFOP)
determines whether to perform
initialization or data set switching by
testing the first-time switch (bit 3 of the
SMCA miscellaneous indicators field). If
the switch is on, initialization is
required; the routine loads register 5 with
a pointer to the first data set area in the
SMCA and inspects the corresponding entry
in the master scheduler TIOT.
If the TIOT
UCB pointer field is zero, the SMF Open
1The JFCB records appear as an incomplete
input queue entry.
In the event of a
system restart, the System Restart
routines return the space occupied by the
JFCB records to the free-track queue, and
the SMF Open Initializer routine replaces
them when it is executed again.

routine uses the XCTL macro instruction to
pass control to the SMF Allocation routine.
The SMF Allocation routine (module
IEESMFAL) uses register 5 to determine
which of the two SMCA data set areas
contains information on the data set to be
allocated. The user may specify either a
volume serial or a unit address for each
SMF data set, and the SMF Allocation
routine uses the specified information as a
search argument in a search of the UCB
list. When it finds a match, the routine
stores a pointer to the UCB in register 1.
If the device is a tape device, or if it
is a direct access device capable of
handling the maximum size SMF record, the
SMF Allocation routine marks the UCB
"allocated" and "permanently resident. II If
the device is a direct access device, the
routine also turns on bit 2 in the
appropriate device status field in the
SMCA.
When it has completed the allocation of
a device to one SMF data set, the SMF
Allocation routine sets the SMCA Open DS
routine switch to X'SO', then uses the XCTL
macro instruction to pass control to the
SMF Open routine.
When the SMF Open routine (module
IEESMFOP) is entered, it tests the Open DS
routine switch. Since i t was entered from
the SMF Allocation routine, the switch is
set to X'SO' and register 1 contains a
pointer to the UCB corresponding to the
allocated device.
The Open routine sets the Open DS
routine switch to zero, T~en stores the
contents of register 1 in the TIOT entry
corresponding to the data set associated
with the allocated device.
The routine
uses the HDJFCB macro instruction to bring
the JFCB for the data set into main
storage, then updates the JFCB volume
serial and label type fields with
information from the UCB and SMCA.
Next,
the routine uses the OBTAIN macro
instruction to determine whether the data
set is empty. If so, the routine uses the
OPEN macro instruction to open the data set'
for BSAM.
When the data set has been opened, the
SMF Open routine tests the first-time
switch.
If the bit is on (in this case i t
will be, because this is the first
post-allocation entry) the routine sets i t
off, then determines whether the data set
is on a tape volume or a direct access
volume.

If the data set is on a tape volume, no
further allocation is required, because
only one tape SMF data set is permitted.
If, however, the data set is on a direct
access volume, two data sets are required,
and another device must be allocated. The
Open routine sets register 5 to point to
the other data set area in the SMCA and
uses the XCTL macro instruction to pass
control to the SMF Allocation routine.

When allocation is complete, the SMF
Open routine is again entered with the Open
DS routine switch set to X'80'. The
routine stores the UCB pointer and opens
the data set, then tests the first-time
switch. In this case, the switch is off;
no further processing is required, and the
SMFOpen routine issues the EXIT macro
instruction to return control to the SMF
Writer routine, via the supervisor.
On the return from the SVC 83 routine,
the SMF Writer routine posts the buffer ECB
that mOdule IEESMFOI issued the WAIT on.
The Writer routine then issues a WAIT on
the writer ECB in the SMCA. The SMF Open
Initializer routine determines whether
allocation and opening of the SMF data sets
was successful.
If either failed, the
routine passes control via an XCTL to the
Master Scheduler Wait routine (module
IEEVWAIT). If allocation and opening were
successful, the routine issues an XCTL to
pass control to module IEESME'I2.
Module IEESMFI2 branches to the Timer
Enqueue routine (see the MVT Supervisor
PLM) and passes it a compiled-in timer
queue element that requests 10-minute time
intervals.
If an SMF data set is present, module
IEESMFI2 constructs the SMF IPL record
(type 0), and the SMF online devices record
(type 8), and if volume information is
requested, the SMF online direct access
devices record (type 19). It uses SVC 83
to have the records transferred to the SMF
buffer, then uses the XCTL macro
instruction to pass control to the Master
Scheduler Wait routine.
The Master scheduler Wait routine
(module IEEVWAIT) enters the wait state,
and the system is ready to process the
commands that start the job management
process.

Part 1:

Initialization and Restart

31

Initializing the Queue Data

~et

The 76 work queues occupy space on a
permanently resident volume. The space for
the queue data set, which contains these
queues, is allocated when the system is
generated, in response to a DD statement
submitted by the installation. The DD
statement specifies the amount of space
(contiguous tracks) to be allocated.
When the queue data set is initialized,
it is divided into two major areas.
One,
the control record area, is fixed in
length; it occupies the first 2736 bytes of
the queue data set, and contains a 36-byte
queue control record (QCR) for each of the
76 queues. The first QCR is the master
QCR; it contains information about the
queue data set as a whole, and is used in
the control and maintenance of the
free-track queue.
The other QCRs are each
used in the maintenance of a single queue;
there is one hold queue control record, one
ASB queue control record, one RJE queue
control record, 15 input queue control
records, 36 output queue control records,
one background reader queue, and a queue
control record for each of the 20 unused
queues.
The other major area in the queue data
set is the logical track area. A logical
track is an area of contiguous space (not
necessarily corresponding to a physical
track) that contains a 20-byte logical
track header (LTH) record, and a number,
specified by the installation, of 176-byte
records. The length of a logical track is
20+176N bytes, where N is the
installation-specified ~umber (between 10
and 255) of records per logical track.
The queue initializing process is begun
when the Master Scheduler IPL routine
attaches the initializing task, passing
control to module IEFQINTZ. This module,
which resides in the link-pack area,
obtains a region, then passes control to
module IEFSD055. This module obtains main
storage for a work area, and for a DEB and
DCB for the queue data set, then opens the
data set for BSAM.
The routine also
examines the UCB for the jobqueue to
determine if the queue is on a rotational
position sensing (RPS) device. 1 If it is,
1Rotational Position Se;nsing is an IBM 3330
Disk Pack characteristic that permits the
location of records by an explicit angular
position. Further details may be found in
the Component Summary publication listed
in the Preface.
32

OS/360 MVT Job Management (Helease 21)

the routine sets an indicator in the queue
manager .resident storage and stores the
device type code. All other routines use
this information prior to reading from or
writing to the jobqueue.
FORMATTING THE QUEUE DATA SET
If the operator used the parameter "F" in
the SET command, the queue must be
formatted, and module IEFSD055 uses the
WTOR macro instruction to give the operator
the opportunity to override the queue
parameters specified at system generation.
These parameters (the number of 176-byte
records per logical track, the number of
176-byte records to be reserved for an
initiator, and the number of 176-byte
records to be reserved for terminating a
job) are discussed in the section
"Assigning Queue space." The parameters
are stored in the work area, and control is
passed to module IEFORMAT.
Module IEFORMAT uses BSAM to write
records into the queue data set to put it
in the proper format (the format of the
queue data set after initialization is
shown in Figure 2). The routine writes,
into the control record area, a complete
set of queue control records, all of which
are set to zero.
It then writes the
logical track header records and
intervening 176-byte data records into the
logical track area. The 176-byte data
records are set to zero; each LTH contains
a pOinter to the next LTH.
The pOinter (designated NN) in the LTH
is a 2-byte binary number that represents
an offset from the beginning of the logical
track area. The NN of the first LTH is
one; the NNs of subsequent LTHs are.found
by adding the number of records per logical
track, plus one, to the current NN.
Finally, module IEFORMAT buixds the
master queue control record with pointers
(in NN format) to the first and last
logical track headers. After control is
returned to module IEFSD055, XDAP is used
to write the master QCR (see Figure 3) into
the control record area.
Module IEFSD055 moves the DEB, DCB and
master QCR into the queue management
resident data area. The three queue
parameters T, K, and T' (which are
described in the section "Assigning Queue
Space") are set up; a bit is set to
indicate that a reserve of tracks exists,
and the routine closes the DCB before
returning control to module IEFQINTZ.
Module IEFQINTZ frees the region, and
returns control to the Master Scheduler IPL
routine.

Master QCR
(See Figure 3)

-

Hold QCR

36

ASB QCR

36
1

1

1296

36
1

36 Output QCRs
(Classes A - Z ond 0 - 9)

J

36

RJE QCR

Control
Record
Area

540

15 Input QCRs
(C losses A - 0)

r

1

36
BRDR QCR
1

720

Reserved

'-

(20 Unused QCRs)

I- r-o-

LTH

20

First
Logical
Track

)

I

)

'--

176

First 176 - byte record

Additional 176 - byte records

/20
LTH

,...

;/20
LTH

Last
Lodcal
Track

I Figure

176 - byte records

/

r-r

Logical
Track
Area

176

\

176 - byte records

2.

The Queue Data Set After Initialization

1

Add ress (MBBCCHHR) a f lh e mas t er QCR

~

1
Reserved

2
Pointer to the First Logical Track in the Free-Track Queue

1
Reserved

2
Number of Logical Tracks in the Queue Dolo Set

2
Number of Logical Tracks in the Free-Track Queue

2
Number of Logical Tracks Reserved for Job Termination

2
Number of Logical Tracks Reserved for Initiators

2
Pointer to the Last Logical Track in the Free-Track Queue

2
Address (TT) of the First Physical Track Containing no QCRs

2
Number of QCRs per Physical Track

2
Number of Records per Physical Track

2
Number of 176-byte Records per Logical Track

2
Number of Logical Tracks to Reserve per Initiator

2
Number of QCRs on the Mixed Track

Figure

3.

2
Pointer to .the First Record on the First Track Containing no QCRs

Master Queue Control Record

Part 1:

Initialization and Restart

33

SYSTEM RESTART
When the system is first initialized, the
queue data set must be formatted; when the
system is restarted, the. formatting need
not be repeated, but the existing queue
data set must be reinitialized.
If the restart is necessary because of a
power failure or system error, there may be
entries in the queues for which processing
had not been completed. The system Restart
routines (shown in Figure 4) must therefore
inspect the queue data set, determine the
status of any queue entries that exist, and
perform the processing required to allow
normal processing to be resumed.
The following kinds of entries may be
found in the queue data set. They are
processed as described below:

queue data set, and the logical tracks
assigned to them returned to the freetrack queue.
• Incomplete output queue entries may
exist, reflecting the system output
requirements of any jobs that have not
been completely processed. If the
input queue entry for a job is not
complete (has not been enqueued) the
logical tracks assigned to its output
queue entries need only be returned to
the free-track queue. Otherwise, the
existing system output (and any system
output generated when the job is
processed) will be processed normally.
Such entries are therefore identified,
but not processed, by System Restart
routines.
• Incomplete Automatic SYSIN Batchinq
(ASB) queue entries will exist if
processing was halted during execution
of an ABB task. Logical tracks
assigned to such entries will be
returned to the free-track queue.

• Incomplete input queue entries will
exist if processing was halted while
input strean5 were being processed.
Such entries must be purged from the
Note: Modules IEFSD300, IEFSD301,
I EFSD302, IEFSD303, and
IEFSD305 use the MVT System
Restart TTR and NN Conversion
Routine (module IEFSD310), which

Entry from IEEVIPL

~Attach
IEFQINTZ

r

is a small conversion routine that

is not shown in this figure.

\.

Get/Free Region

IEFORMAT

Return

Q IF
Q - F

Queue Format

IEFSD055
Queue
Initialization

IEFSD300
Table
Construction

~
IEFVSDRA

IEFSD301

Restart
Activation

Purge Queue
Constructi on

~

i

IEFSD305

IEFSD302

Re-Enqueue
or Delete

Job Names
Table

IEFSD304

IEFSD303

Scratch
Data Sets

Delete

1

IEFSD514

IEFVSDRD

TlOT
Read/Write

Determination

Restart

1

Link

l
Attach
IEFSD308

Termination

t
IEFRPREP
Restart
Preparation

Figure
34

4.

MVT System Restart

OS/360 MVT Job Management (Release 21)

Scratch
Data Sets

I

• Incomplete remote job entry (RJE) queue
entries will exist if processing was
halted during transmission to the
central system. Logical tracks
assigned to such entries will be
returned to the free-track queue.
• Enqueued input, output, hold, ASB, and
RJE queue entries may exist; they
remain in the queues, and are processed
normally when the appropriate system
tasks are established.
• Dequeued input queue entries represent
jobs that have been selected for
initiation, but that have not been
processed by the Job Termination
routine.
If such a job can be
restarted, the System Restart routines
initiate the restart; if the job cannot
be restarted, the System Restart
routines enqueue the job's output queue
entries and delete its input queue
entry.
• Dequeued output queue entries represent
partially finished system output
"jobs".
Such queue entries are
modified so that all system messages
and data sets that have not been
processed will be written by the first
eligible output writer started.
• Degueued hold queue entries may exist
if the Queue Alter routine was
processing an entry in the hold queue,
as during execution of CANCEL, RESET
and RELEASE commands. The System
Restart routines re-enqueue such
entries in the hold queue.
• Dequeued ASB queue entries represent
jobs that have been processed by the
ASB Input Stream Processor routine.
Such entries are re-enqueued in the ASB
queue, and any input or output queue
entries for the job are deleted.
• Dequeued RJE queue entries represent
jobs that are being processed by the
RJE reader, or that have been processed
by the RJE reader.
Such entries are
re-enqueued on the RJ"E queue. Any
input or output queue entries
associated with them are treated
normally.
'I"able Construction
The operator indicates that the system is
being restarted (that the queue data set is
in the proper format) by omitting the "F"
parameter from the SET command.
When
module IEFSD055 has opened the queue data
set (see "Initializing the Que~e Data
set"), it passes control to the Table
Construction routine, which begins the
restart process.

The Table Construction routine (module
IEFSD300) obtains main storage for the
system restart work area (Figure 5), reads
the master QCR into main storage, and
obtains main storage for the logical track
header table (table A), the
top-of-queue-pointer table (table B), and
the queue entry pointer table (table C).
Table A" (see Figure 6) is constructed
with an entry for each logical track in the
queue data set. As tracks are released to
the free-track queue, and as queue entries
are processed, the System Restart routines
set the corresponding table A entries to
zero.
Table B is simply a list of pointers,
and is therefore not shown. The table
enables the System Restart routines to find
the first entry in each queue without
having to re-read the QCR.
Table C (also shoN"n in Figure 6) is
constructed as queue entries are processed.
It is used to find the SCD in entries that
have corresponding system output queue
entries, and enables the System Restart
routines to read the SCDs in order by
direct access storage address.
The Table Constructicn routine builds
table B by reading the QCRs into main
storage and extracting the top-of-queue
pointer from each QCR.
It constructs table
A by reading each LTH into main storage (in
their physical sequence) and extracting the
required information from it, then converts
each 2-byte pointer (in NNformat) to a
relative address within table A, using the
formula

= relative

address in table A of the L'I-H
where X is the number of records per
logical track.

When tables A and B have been
constructed, the routine identifies, and
sets to zero, all table A entries
corresponding to tracks in the free-track
queue. The master QCR furnishes a pointer
to the first track; when the corresponding
table A entry is found, its pointer to the
next logical track assigned is extracted,
and the entry is set to zero.
If the
pointer is zero, the entry corresponds to
the last track in the free-track queue.
Table A entries corresponding to tracks
assigned to enqueued input queue entries,
hold queue entries, output queue entries,
ASB queue entries and RJE queue entries are
set to zero in a similar manner. Table B
furnishes the starting point. When the
input, hold, ASB, and RJE queues are
processed, an additional step is performed;
Part 1:

Initialization and Restart

35

the first-Iogical-track-assigned pointer
for each entry is converted to a relative
address in table C, and stored at that
location.
4

3

I
RJE
Ind

Addr of Param List for IEFSD055

When this processing has been completed,
table A contains entries corresponding to
the following kinds of queue entries:

Status Indicators

4

4
Address of Table B or Address of
Interp. Jobnames Table

Purge Queue Address

4
Address of Tabl e C or Address of
Init. Jobnames Table

•
•
•
•
•
•
•
•
•

Incomplete input queue entries.
Incomplete ASB queue entries.
Incomplete RJE queue entries .•
Incomplete output queue entries.
Dequeued input queue entries,.
Dequeued hold queue entries.
Dequeued ASB queue entries.
Dequeued RJE queue entries.
Dequeued output queue entries.

4
Address of Table A

8
MBBCCHHR Returned After Conversion

In addition, the construction of table C
has been started; it contains an entry
corresponding to the first logical track
assigned to each enqueued input, hold, ASB,
and RJE queue entry.

36

Purge Queue Construction

Purge Queue

l..

352

Buffer Area: 2 Buffers of 176 Bytes Each

The storage occupied by table B is then
released, and control is passed to the
Purge Queue Construction routine (module
IEFSD301), which obtains main storage for
the jobnames table (see Figure 6), then
scans table A to identify the remaining
queue entries by inspecting the queue and
status fields of each table A entry.

72

Incomplete Input Queue Entries
Reg i ster Save A rea

4
Reserved

4

The relative address in table A of the
first logical track assigned to the queue
entry is divided by two, which converts it
from a relative address in table A to a
relative address in table C. The resulting
address is stored in table C, and the table
A entries corresponding to the tracks
assigned to the queue entry are marked
"tested."

Reserved

72

h

Incomplete Output Queue Entries
No corresponding entry is made in table C,
but the table A entries are marked
"tested."

ECB/IOB

Incomplete ASB and RJE Queue Entries
72

1

Figure
36

ECB/IOB

5.

system Restart Work Area

J

OS/360 MVT Job Management (Release 21)

The relative address in table A of the
first logical track assigned to the queue
entry is divided by two, which converts it
from a relative address in table A to a
relative address in table C. The resulting
address is stored in table C, and the table
A entries corresponding to the tracks
assigned to the queue entry are marked
"tested."

2

Pointer to First
Logical Track Assigned

Pointer To Next
Logical Track Assigned

2

Pointer to Next
Entry in This Queue

Queue

Job
Status

LTH Table {Table A) Entry: One Entry per LTH
Queue Field: 1
2
3-38
39
40-54
55-75

= Hold Queue
= ASB Queu';= Output Queues
= RJ E Queue
= Input Queues
= Reserved

2

NN of First
Logical Track

Job Status Field: 1 = Canceled
2 = Priority
4 = Enqueued
16 = RJ E with enqueued
input Queue entry

Ones if
Init

Ones if
Interp

3

TTR of SCD

2

NN of First
Logical Track

First Logical Track
Assi gned Entry

Zero

ASB Entry (X '02')
RJE Entry (X '04')

X'02' or
X'04'

Zero

Queue. Entry
Pointer Table
(Table C )

SCD Entry

4

Table Length

4
Number of Names

r

Jobnames
Table

L-

~

'L-

r(

Names (8-bytes each)

_ _ _ _ _ _ _ _ _ _J
8
Job Name
2

1
Op
Code

NN of First
Logi ca I Track

I

2

Link to Next
Track in this entry
Status=4

Figure

1

I

1
Priority

No. of
Tracks in
Entry

No. of
Records
Used

1

Link to Next
Queue Entry

1
Table D

1
Type=39
2

System Restart Tables

Part 1:

Initialization and Restart

37

Dequeued Input Queue Entries

Incomplete Input Queue Entires

These entries are enqueued in the purge
queue, with priority 14. The purge QCR is
maintained in main storage, and the enqueue
function is performed in module IEFSD301.
When the entry has been enqueued, the
relative address in table A of the first
logic~l track assigned to the entry is
divided by two to convert it to a relative
address in table C, and the result is
stored in table C. All table A entries
corresponding to logical tracks assigned to
the queue entry are set to zero.

The pointer from table C is converted to
MBBCCHHR format and the LTH is read into
main storage. The job name is extracted
from the LTH and placed in the first
available slot in the interpreter jobnames
table.

Dequeued Hold Queue Entries
The procedure used is the same as that used
for dequeued input queue entries.

Enqueued and Dequeued Input Queue Entries
The pointer from table C is increased h¥ 1
(to obtain the NN of the JCT) and is
converted to MBBCCHHR format. The JCT is
read into.main storage. The address (in
TTR format) of the SCD is extracted and
placed in table C., replacing the pointer to
the first logical track assigned to the
queue entry.

Dequeued ASB and RJE Queue Entries
Dequeued Input Queue Entries
The relative address of the entry's first
logical track header record is placed in
Table C; a hexadecimal 02 (ASB) or 04 (RJE)
is placed in the status field of the Table
C entry, and the entry is enqueued in the
purge queue at priority 14.

If the table C entry represents an entry
that has been dequeued from the input
queue, an additional step is performed:
the job name is extracted from the JCT and
placed in the first available location in
the initiator jobnames table.

Dequeued Output Queue Entries
Dequeued RJE Queue Entries
The procedure used is the same as that used
for dequeued input queue entries, except
that no table C entry is made.
When processing of table A has been
completed, the pointers in table Care
converted to NN format, with the following
formula:
[

Pointers frOm]
Tab!e C -1 (X+1) +1=NN

where X is the number of records per
logical track.
All table A entries have been set to
zero, except those entries that correspond
to the logical tracks assigned to
incomplete input, output, ASB, and RJE
queue entries.. Table C now contains a
pointer (in NN. format) to each incomplete,
enqueued, and dequeued input queue entry,
to each incomplete and dequeued ASB and RJE
queue entry, and to each enqueued and
dequeued hold queue entry. The purge queue
now contains all dequeued input, output,
hold, ASB, and RJE queue entries, enqueued
with priority 14.
Control is now passed to module
IEFSD302, which builds the jobnames table,
and updat~s SCDs as required. The routine
scans table C, and processes the non-zero
entries as follows.
38

OS/360 MVT Job Management (Release 21)

The entry's logical track header is placed
in table D. When jobnames table
construction is complete, the jobname of
the RJE entry is compared to the
interpreter names in the jobnames table; if
a match is found, the name is removed from
the jobnames table, and a switch is set to
indicate that the input queue entry
associated with the RJE queue entry has not
been enqueued.
SCD Processing
Module IEFSD302 sorts the SCD pointers in
table C (which are in TTR form) into
ascending order, then uses them to read
each SCD into main storage. An SCD is
created by an interpreter and included in
each input queue entry; it points to the
output queue entries required for the job,
and contains information from the QMPA used
to build the queue entries. When an
interpreter enqueues an input queue entry,
all records required for the output queue
entries have been assigned to them (except
for the message class queue entry, which
will require space for initiator messages);
the SCD correctly reflects the status of
the output queue entries while the entry is
in the input queue. Therefore, if the SCD
read into main storage was obtained from an
enqueued input queue entry, the SCD needs
no further processing. It is, however,

used as a source of information; its
pointers to the first logical track
assigned to the output queue entries for
the job are used to find the corresponding
table A entries, which are then set to
zero.

with those jobs. The main storage occupied
by table C is then released, and control is
passed to module IEFSD303.

Returning Logical Tracks
If, however, the entry from which the
SCD was obtained has been dequeued, the SCD
may not reflect the status of the output
queue entry for the message class. When an
input queue entry is dequeued by an
initiator, information is extracted from
the message class slot of the SCD and used
to build a QMPA, and to assign additional
records to the message class entry as they
are needed. The SCD, however, is not
updated to reflect the additional
assignments, and therefore i t contains
obSOlete information about the status of
the message class entry.
In addition, since the number of records
assigned (within a logical track) is not
written into the LTH until the next logical
track is assigned, the LTH of the last
logical track assigned may also contain
obsolete information. The number of
records actually assigned in a logical
track can be determined only from the QMPA
used to build the entry, and when the
system is being restarted, that QMPA is not
available.
When the SCD is obtained from a de queued
input queue entry, it must be updated to
accurately reflect the status of the output
queue entry for the message class. The
table A entries corresponding to the tracks
assigned to the output queue entries are
scanned; if they are zero, it means that
the output queue entries have been
enqueued, and the SCD slots corresponding
to any enqueued output queue entries are
set to zero.
If the table A entries corresponding to
the logical tracks assigned to the message
class output queue entry are not zero, the
LTHs and the message class slot in the SCD
must be updated. The LTH (in table A) of
the last logical track known to be assigned
is scanned. If the pointer to the next
logical track is not zero, each succeeding
LTH is scanned, until the LTH of the last
logical track actually assigned has been
found.
The SCD is updated to reflect the
actual status. The table A entries
corresponding to the output queue entries
are set to zero, and the SCD is written
back into the queue.
When all SCDs have been read in and
processed, all table A entries have been
set to zero, except for those entries
corresponding to the tracks assigned to
incomplete input queue entries, and to the
incomplete output queue entries associated

Module IEFSD303 is then used to add those
logical tracks assigned to incomplete queue
entries to the free-track queue. Table A
is scanned, and an LTH is constructed for
each non-zero entry. The LTHs are chained
together and written into the queue data
set; the master QCR (passed by module
IEFSD055) is updated to reflect the
additional tracks and written to the queue
data set, the main storage occupied by
table A is released, and control is
returned to module IEFSD055.

I

Module IEFSD055 moves the DEB, DCB, and
master QCR into the master scheduler
resident data area, then closes the DCB.
In the restart situation, it then passes
control to module IEFSD305.

Purge Queue Processing
Module IEFSD305 uses the WTO macro
instruction to inform the operator of the
names of any jobs represented by incomplete
input queue entries.
It then scans the
purge QCR, updates the corresponding queue
entries as necessary, and re-enqueues the
entries in the appropriate queue. There
are four kinds of entries in the purge
queue; they are processed as described
below.
Dequeued Output Queue Entries
The routine reads each 176-byte record into
main storage. If the record is a system
message block (SMB), it is ignored, and the
next record is read in.
If the record is a
data set block (DSB), an OBTAIN macro
instruction is used to determine whether
the data set exists.
If it exists, the
next record is read from the queue entry;
if not, the DSB is set to zero (except for
the link field) and written back into the
queue data set before the next record is
read. Finally, the entry is reenqueued (by
the Queue Management Enqueue routine) in
the appropriate output queue, with a
priority of 14.
Dequeued Input Queue Entries
If the entry is a dequeued input queue
entry, the System Restart routines
determine the point at which processing
stopped, and process the entry accordingly:
Part 1:

Initialization and Restart

39

• If processing stopped after a step of
the job was selected, but before it
started execution, the System Restart
routines enqueue the job's system
output queue entries and delete the
job's input queue entry.
• If processing stopped while a step of
the job was being executed, the System
Restart routines determine whether the
job is to be restarted: If so, the
restart is initiated; if not, the
routines enqueue the job's system
output queue entries and delete its
input queue entry.
• If processing stopped while a step
(other than the last step) of the job
was being terminated, the system
Restart routines complete the
termination and re-enqueue the job's
input queue entry.
• If processing stopped while the last
step of the job was being terminated,
the system Restart routines complete
the termination and delete the job's
input queue entry.
The Restart Determination routine
(module IEFVSDRD) determines the point at
which the processing of the step stopped,
and either returns control to module
IFFSD305 or sets up an interface with the
Termination routine and then passes control
to it.
If processing stopped after the step was
selected but before it started executing,
the Restart Determination routine adjusts
the 5MB pointer in the SCT so that it
points to the last Interpreter 5MB for the
step and returns control to module IEFSD305
with a return code X'10'.
If processing stopped while the step was
being executed or terminated, the Restart
Determination routine sets up an interface
with the by Termination routine by:
• Testing bit 2 of the SCT step type
indicators field; if the bit is set to
one it indicates that there is system
output data in the message class, and
the Restart Determination routine
updates the 5MB pointer in the SCT to
pOint to the first Termination 5MB.
If, however, the message class contains
only operating system messages, the
routine updates the pointer so that it
points to the last Allocation 5MB.
• Using the Table Breakup routine (module
IEFSD514) to read the job step TIOT
from the queue data set (where it was
stored by the initiator). If an I/O
error prevents the routine from reading
40

08/360 MVT Job Management (Release 21)

the TIOT, control returns to module
IEF8D305 with a return code of X' OC' •
• constructing and initializing an LCT
and setting the system restart bit in
the JCT restart switches field (if the
TIOT was read properly).
• constructing a TCB for the job step.
If processing stopped while the step
was being terminated, the JCT points to
the SCT for the next step; if
processing stopped while the step was
being executed, the JCT points to the
SCT for the current step, and the
Restart Determination routine sets the
TCB ABEND flags on and sets the TCB
completion code field to X'FF3'.
When it has set up the interface, the
Restart Determination routine uses the LINK
macro instruction to pass control to the
Termination routine. The Termination
routine performs its normal processing
(except that it does not unallocate I/O
devices), then returns control to the
Restart Determination routine.
On the return, the Restart Determination
routine (module IEFVSDRD) tests the return
code passed to it by the Termination
routine. If the return code is X'OS', it
means that processing stopped while the
step was being executed. The Termination
routine used the Restart Preparation
routine and determined that a restart is
possible, was requested, and has been
authorized by the operator.
In this case,
the Restart Determination routine passes
control (and the return code), to module
IEFSD305.
If the return code passed by the
Termination routine is X'OO'.
it means one
of two things:
• Processing stopped while the step was
being executed, but the step is not to
be restarted.
• Processing stopped while the step
(which .is not the last step of the job)
was being terminated; entry to the
Termination routine from the restart
Determination routine was "normal"; the
Restart Preparation routine was not
executed, and step termination was
completed.
When it finds a return code of X'OO',
the Restart Determination routine tests the
job failed bit in the JCT to determine
whether the job was being processed in
flush mode. If not, the bit is off, and
the Restart Determination routine passes a
return code of X'OS' to module IEFSD305.

If the job was being processed in flush
mode when processing stopped, the job
failed bit is on, and the Restart
Determination routine passes the X'OO'
return code to module IEFSD3 OS.

The step has been normally te£miBated, and
module IEFSD30S deletes the job name from
the jobnames table and enqueues the job's
entry in the appropriate input queue at
priority 14.

If the return code passed by the
Termination routine is X'04', it means that
processing stopped while the last step of
the job was being terminated. Entry to the
Termination routine from the Restart
Determination routine was a nnormal n entry;
the Restart Preparation routine was not
executed, and job termination has been
completed.. The Restart Determination
routine passes t~ X'04' return code to
module IEFSD30S.

A return code of X'OC' indicates that an
I/O error prevented the TIOT Read/Write
routine from reading the job step TIOT. In
this case, the step could not be processed
by the Termination routine and cannot be
restarted. Module IEFSD30S reads the last
Allocation 5MB. reads and verifies the
validity of each record in the 5MB chain,
and updates the last valid 5MB to point to
the first Interpreter 5MB for the next
step. Then the routine reads the SCD, uses
it to enqueue the job's system output queue
entxies, and deletes the input queue entry.

When control is returned to module
IEFSD30S., the routine inspects the return
code passed to it by the Restart
Determination routine. It uses the WTO
macro instruction to inform the operator of
the job name, the step name, the procedure
step name, and the job status, then
processes the entry.
A return code of X'OO' indicates the
presence of one of two conditions: Either
the step was being executed when processing
stopped (and is not to be restarted), or
the step was being terminated in flush
mode, and is not the last step of the job.
In either case, module IEFSD30S reads the
job's SCD into main storage and enqueues
the output queue entries in the appropriate
queues. Then, the routine deletes the
input queue entry.
A return code of X'04' indicates that
processing stopped while the last step of
the job was being terminated. In this
case, the Termination routine has completed
step and job termination processing., and
module IEFSD30S need only delete the job's
input queue entry .•
A return code of X'OS' indicates that
the job is to be restarted. If the step
was being executed when processing stopped"
the SCT pointer in the JCT points to the
S~ for the current step.
The Restart
Preparation routine has determined that a
restart is poss'ible, has been requested,
and has been authorized. Module IEFSD30S
deletes the job name from the jobnames
table, adds it to the restart activation
jobnames table, and enqueues the job's
entry in the hold queue.
If the step was being terminated when
processing stopped, the SCT pointer in the
JCT points to the SCT for the next step.

A return code of X'10' indicates that
processing stopped before the step started
execution. since the job step TIOT was not
saved (if it has been constructed) the job
cannot be restarted. Module IEFSD30S
updates the last Allocation 5MB to point to
the first Interpreter 5MB for the next
step, then reads each DSB and uses the JFCB
pOinter to read a record from the queue
data set.
If the record is not a valid JFCB,
module IEFSD30S sets the DSB to zero (to
indicate that it is the last in the chain)
and writes the DSB back into the queue data
set. Next it reads the SCD and enqueues
the job's output queue entries, then
deletes the job's input queue entry.
A return code of X'14' indicates that
the system conversion routine, IECPCNVT,
located in the nucleus, has stopped the
termination processing for the job being
executed. This action occurs in the
following situation: During job
termination processing, the termination
routine in module IEFSD42Q may request the
nucleus conversion routine to change a
relative track (TTR) value to an absolute
(MBBCCHHR) value. If module IEFSD42Q
passes an invalid TTR value (e.g., one that
is all zeros, ali blanks, or not on the
SYS1.SY5JOBQE data set) to the conversion
routine, an abnormal termination occurs.
Control returns to module IEFVSDRD, which
gives the return code (X'14') to module
IEFSD30S. Module IEFSD30S stops the job
and prints a message.
Dequeued

~JE

Queue Entries

The entry is de queued from the purge queue
and re-enqueued on the RJE queue with a
priority of 14. If the corresponding input
queue entry has not been enqueued, the LTH
for th~ RJE queue entry is modified
appropriately.
Part 1:

Initialization and Restart

41

Dequeued ASB Queue Entries
The entry is dequeued from the purge queue
and re-enqueued on the ASB queue with a
priority of 14.

of those corresponding to direct access
devices (except data cell drives) in the
ready state. When it has completed the
list, module IEFSD304 uses the ATTACH macro
instruction to pass control to the Scratch
Data Set Utility routine.

Dequeued Hold Queue Entries
The entry is dequeued from the purge queue
and re-enqueued in the hold queue.
When the processing of the purge queue
is completed, module IEFSD305 tests the
restart activation jobnames table. If
there is at least one entry, the routine
branches to the Restart Activation routine
(module IEFVSDRA).
This routine constructs
a command to start the Restart Reader. The
command, which starts the procedure
IEFREINT, may contain up to 13 jobnames
specifying jobs to be restarted. If more
than 13 jobs are to be restarted, the
routine constructs an additional START
command. When it has constructed the START
commands, the Restart Activation routine
issues the MGCR macro instruction to
schedule the execution of the commands,
then branches back to module IEFSD305.
Module IEFSD305 determines the jobs that
are to be restarted and saves the
corresponding jobnames from the initiator
jobname table (see Figure 6). The module
then zeros these job name entries in the
initiator jobname table and compresses the
consolidated jobnames table (CJT), which
consists of the interpreter jobnames table
and the initiator jobnames table, to remove
the zeroed entries. The remaining names in
the CJT correspond to jobs that are not to
be restarted and whose data sets,
therefore, are to be scratched.
Module IEFSD305 then branches to the
Scratch Data Set utility (module IEFSD304)
to scratch all data sets with generated
names (except for system output data sets)
created for these jobs.
Scratching Data Sets
When module IEFSD304 is entered, it
searches the system UCBs and makes a list

42

OS/360 MVT Job Management (Release 21)

The scratch data set utility routine
(module IEFSD30S) reads each DSCB in the
VTOC of the volume mounted on the indicated
unit. When it finds a system output data
set name, it adds a one to the user count
field in the UCB for that volume. When it
finds a system input data set name, it
compares the fourth field in the name to
each of the job names in the consolidated
jobnames table. If it finds a match, it
scratches the data set; if not, it reads
the next DSCB. When it has processed all
DSCBs in the VTOC, the Scratch Data Set
Utility routine returns control to module
IEFSD304, which continues its search of the
UCBs.
Since the scratch data set utility
processes only one device before returning
control to its caller, an ATTACH macro
instruction corresponding to each UCB in
the list must be issued.
If there are six
or less UCBs in the list, the required
number of ATTACH macroinstructions are
issued, followed by a WAIT macro
instruction. If however, there are more
than six UCBs in the list, six ATTACH macro
instructions (and a WAIT macro instruction)
are issued initially; the remaining tasks
are attached as ECBs are posted.
The devices are processed in an order
that optimizes channel activity. The six
initial tasks are to process one device on
each channel having a direct access device
in the ready state, in ascending order by
channel. If additional devices must be
processed, they are processed in order of
channel activity.•
When all devices on the list have been
processed, control is returned to module
IEFSD055, which passes control to module
IEFQINTZ. Module IEFQINTZ releases the
region, and returns control to the Master
Scheduler IPL routine.

Part 2:

Processing Input Streams

An input stream is a series of records that primarily contains job control language (JCL)
statements; i t may also contain references to procedures cataloged in the procedure
library, data sets to be processed by job steps, and operator cowmands. The information
in an input stream, and the information to which the input stream refers, controls the
job processing performed by the operating system.
In order to use the information in an input stream, the operating system must read
(obtain) input stream records and then interpret them (convert them to tabular format).
The reading and interpreting functions maybe performed as parts of the same system task,
or they may be performed by routines executing separate tasks. This section describes
several methods of performing the reading function; the interpreting function, which is
associated with reading, is always performed by the Interpreter subroutine, and is
discussed in the "Common Elements" section of this publication.

The Reading Task
The first task that must be accomplished by
the operating system in order to process
jobs is the reading task. A reading task
is established each time an appropriate
START command is issued. The task
performed bya reader is to read input
stream records until it encounters an
end-of-data condition or a STOP command.
When the routine performing the reading
task encounters a JCL statement, it stores
the statement in an internal queue. When
it encounters data to be used as input to a
program performing a job step, the reader
places the data on a direct access volume
and generates a DD statement to replace the
DD * statement in the input stream. There
are several ways to accomplish the reading
task:
• The Interpreter subroutine may be used
as a direct reader. In this case, both
the reading and interpreting functions
are performed as parts of the same
system task: the interpreter reads
records from the specified input
stream, converts them to tabular form,
and stores them in an input queue.
• The Automatic SYSIN Batching (ASB)
routine may be used to read the input
stream. In this case, the reading and
interpreting functions are performed as
separate tasks: the ASB routine reads
the input stream, stores the JCL
statements for several jobs in a
batching queue, and establishes a
temporary task to perform the
interpreting function.
• The Remote Job Entry (RJE) routines may
be used to read the input stream. In
this case, the RJE routines read input
stream records from remote locations,
store them in an intermediate queue,
and the Interpreter subroutine uses the
intermediate queue as its input source.

(The RJE routines are described in
detail in the RJE Program Logic
Manual. )
USING THE INTERPREl'ER AS A READER
When a START RDR command is issued, it
~
causes the System Task Control routine to
initiate the operation of the Interpreter
Reader Control routine (module IEFIRC) in
the problem program mode.
In order to
provide flexibility in the assignment of an
I/O device to the input stream, this
routine is initiated and terminated in a
manner similar to the way a job is
processed. The initiating function is
performed by the System Task Control
routine on the basis of information
furnished by the operator in the START
command, and information contained in the
procedure library (in the. RDR procedure).
The System Task Control routine (which
is described in detail in the "Command
Processing" section of this publication)
receives control via an ATTACH macro
instruction issued in the Master Scheduler
Attach routine. The System Task Control
routine builds an internal data set of JCL
statements created from the information in
the START command, then uses the
Interpreter subroutine to combine these JCL
statements with the statements in the RDR
procedure, and to convert the information
to tabular format.
It uses the Initiator
subroutine, which invokes the I/O Device
Allocation routine (see the "Common
Elements" section of this publication) to
assign an I/O device to the input stream,
obtains a region, and passes control to the
Interpreter Reader Control routine via an
ATTACH macro instruction.
The Interpreter Reader Control routine
acquires storage for and builds the
Part 2:

Processing Input Streams

43

interpreter entrance list. (NEL), then uses
the LINK macro instruction to pass control
to the Interpreter subroutine. The
interpreter processes the input stream
until a STOP command is received or the
input stream is exhausted, then returns
control tbthe Interpreter Reader Control
routine. The Interpreter Reader Control
routine returns control to the Initiator
subroutine, which uses the Termination
routine (also described in the "Common
Elements" section of this publication) to
terminate the task.

The Initiator subroutine then returns
control to the system Task Control routine,
which frees the region and returns control
to the Master scheduler.
USING THE ASB ROUTINE AS A READER
The issuing of a START RDRA command causes
the System Task Control routine to initiate
operation of the ASB program (Figure 7) in
the same way it initiates operation of the
Interpreter Reader Control program.

ATTACH

POST

To System Task
Control Routine

LINK

ATTACH

RETURN

RETURN

Note: Modules IEFVMB, IEFVMD, IEFVMF,
and IEFVMG interface with the
following Queue Management
routines, which are not shown in.this
figure:
• IEFVMB interfaces with IEFQAGST
and IEFQMNQQ
• IEFVMD interfaces with IEFQDELQ
• IEFVMF interfaces with IEFQMDQQ
and IEFQDELQ
• IEFVMG interfaces with IEFQMDQQ,
IEFQMRAW, and IEFQDELQ

Figure
44

7.

ASB Routine

OS/360 MVT Job Management (Release 21)

BRANCH
RETURN

BRANCH
RETURN

ASB Control Flow
Control is initially passed to the ASB
Initialization routine (module IEFVMA),
which acquires main storage for the ASB
work area (ASBWA), validates and saves the
values from the PARM field buffer passed by
the Initiator subroutine, uses the EXTRACT
macro instruction to access the
communications parameter area (CPA), and
initializes data set processing.
(The
ASBWA is shown in Figure 8.)
The ASB Initialization routine also uses
an ATTACH macro instruction to initialize
the Interpreter Region Regulator routine
(module IEFVME), which is resident in the
link pack area. The ASB Initialization
routine passes a five-word parameter list

Offset
Hex
Dec
0
0

to the Interpreter Region Regulator
routine. The parameter list contains a
pointer to the PARM field buffer, a pointer
to the ID of the console that issued the
START command, a fullword containing the
subpool ID and the region size of the
region required for the interpreter, and
two ECBs used for communication between the
Interpreter Region Regulator routine and
the Input Stream Processor routine. The
Interpreter Region Regulator routine
immediately issues a WAIT macro instruction
using the first of the communication ECBs.
After attaching the Interpreter Region
Regulator routine, the ASB Initialization
routine passes control to the Input Stream
Processor routine via an XCTL macro
instruction.

4

4
Address of Console ID from START CIB

Address of PARM Field from Started Procedure
8
10

4

Subpool and Size of Interpreter Region
16

4

4
Address of Interpreter Region Regulator TCB

Interpreter Complete ECB
18

4

4

24

Address of Current Input Statement

Address of Communications Parameter Area (CPA)
20

32

4

4
Address of Next Procedure Statement in Buffer

Address of Procedure Library Input Buffer
28

40
Command Authority

30

4

Start Interpreter EC B

2

3

TTR of IEFDATA JFCB

Sw C

Sw B

Sw A

55

48
Sw E

Sw D

WTO Message Bu ff er

68

104

70

112

78

120

I

Command
Disp

1 Termi nation
1
Message Number

I

Console
ID

19

1

Genera I Work Area
or
DDname Save Area

1
Reserved

1
80

4

4

128

Reserved

Number of Spooled Data Records
88

136

90

144

98

152

AO

160

A8

168

BO

176

B8

IEFDATA DCB In-Storage JFCB Exit

8

Name on Last Procedure's EXECUTE Statement

8

Stepname on Last DD Override

8

Name on Last DD Statement
Maximum BLKSIZE
Number of Queue
Tracks Used

8.

2
2

Max BUFNO

1
11

Reserved

Current Number
01 jobs in Batch

4

8

Batching Device Type

184

IFigure

4

IEFDATA DCB End-ol-Volume Exit

Number of Jobs Per Batch

21

Number of Queue
Tracks Avai lable

2
4

2
Reserved

Automatic SYSIN Batching Work Area (ASBWA)

(Part 1 of 2)

Part 2:

Processing Input Streams

45

Offset
Hex
Dec
CO

192

C8

200

DO

208

FO

240

8

General Work Area

36

Address of IEFDATA TIOT

-

-

QMPA
4

4

Queue TTR Po inter

Record Buffer Address
F8

248

100

256
Address of Next Space in Queue Record

108
110

264

Block Length from
Comp/Decomp Parm Li st

21

4

4

Third TTR Pointer

Reserved

272

Address of Queue Record

4

Block Address from Compress/Decompress Parm Li st

2

4
Serial Number for Unique DSNAME
4

4

Address of Verb in Current JCL Statement

Serial Number At Start of Current Job
118

280
Address of Operand in Current JCL Statement

120

288

128

4

TTR of Last DD* or DD DATA Queue Record

4

TTR of Procedure Library Member
296

4

DD Statement
Name Length

138

304

Address of Compression/Decompression Parameter List

312
Address Where Compressed Record is to be Written

140

320

148

lA8

200

Char to be
Removed

1I Compression
11
Switch

Reserved

21

4
4

Reserved
(7094 Emulator Only)

Pointer to Binary SYSIN Workarea
130'

4

Input Stmt
Name Length

2
4

4

Address of Record to be Compressed

4

Length of Rec to be Compressed

21

Length of Output Block

2

2

96
,

1

IEFRDER DCB

328
424 r-----------------------------------------~
IEFPDSI DCB

512}·

-

.
IEFDATA DCB

~

Address of JFCB
260

608

268

616

I Figure

Address of. Next Entry in In-stream Procedure Directory

Character Delimiter Value to Replace

8.

/*

OS/360 MVT Job Management (Release 21)

Address of In-stream Procedure Directory

4

4

Automatic SYSIN Batching Work Area (ASBWA)

The Input Stream Processor routine
(module IEFVMB) reads the input stream. It
places the JCL statements in the ASB queue
in a special compressed format and writes
any system input data sets onto a direct
access volume. After the data is written,
a DD statement describing the direct access
data set is generated and written in place
of the original SYSIN DD statement in the
ASB queue.. If a PROC statement is read,
the routine saves the name field in the
in-stream procedure directory (located in
the in-stream procedure work area) for the
job. All JCL following the PROC statement
is then written directly to the ASB queue
46

4

4

(Part 2 of 2)

until either a PEND statement ending the
in-stream procedure is read or the next JOB
statement is read.
If an EXEC statement
that contains a procedure name is read, the
routine searches the in-stream procedure
directory for the specified procedure name.
If the routine finds the procedure in the
in-stream procedure directory, the EXEC
statement is written to the ASB queue
without further processing. However, if
the procedure was not an in-stream
procedure, the Input stream Processor
routine issues a BLDL macro instruction to
locate the procedure in the procedure
library. It then generates a special

statement identifying the procedure
(including the relative track address of
the procedure's first record in the
procedure library) and writes it in the ASB
queue immediately preceding the EXEC
statement.
Whenever the Input stream Processor
routine encounters an unrecognizable
statement, it passes control to the Command
Processor routine (module IEFVMC) via an
XCTL macro instruction. This routine
determines whether the statement is a
command verb.. If it is a command verb,
theroutine processes it according to the
disposition specified in the RDRA
procedure. If it is not a command verb, a
switch is set in the ASBWA informing the
Input Stream Processor routine of the
error. In either case, control is returned
to the Input Stream Processor routine. If
the error switch is on in the ASBWA. the
Input Stream Processor routine writes the
statement in the ~SB queue for subsequent
error diagnosis by the Interpreter.
The Input Stream Processor routine and
the ASB Initialization routine use the ASB
Termination routine (module IEFVMD) to
handle both normal and error termination
conditions. This routine resets the system
resources used by the ASB routine to their
original status, and generates an error
message if termination was cau~ed by an
error.
The input stream processing continues
until one of the following conditions
arises:
• The number of jobs specified in the
RDRA procedure has been read and placed
in the ASB queue.
• The input stream has been exhausted.
• The number of tracks allocated for the
ASB queue (specified in the RDRA
procedure) has been exhasted or a STOP
command has been encountered.
• At least one complete job has been
placed in the ASB queue and the ASB
routine CIAnnot a llocate more direct
access space for copying SYSIN data
sets.
When one of these conditions occurs, the
Input Stream Processor routine initiates
interpretation by issuing a POST macro
instruction for the communications ECB for
which the Interpreter Region Regulator
routine is waiting. The Input Stream
Processor routine then continues to process
one additional job before issuing a WAIT
macro instruction using the other
.
communications ECB which it shares with
Interpreter Region Regulator routine.

Although the records for the additional job
are placed in the ASB queue, they are not
actually enqueued (by placing a pointer in
the QCR) until after interpretation has
been completed.
The Interpreter Region Regulator routine
issues a request for a main storage region
in which to execute the Interpreter
program. When such a region becomes
available, the routine passes control to
the Interpreter Controller routine (module
IEFVMF) via a LINK macro instruction.
The Interpreter Controller routine
constructs the Interpreter entrance list
(NEL). special access methods to be used
by the Interpreter for both reading JCL
statements and finding cataloged procedures
are indicated by entries in the NEL exit
list.. NEL entries are also set up to
establish communication between the
Interpreter Subroutine and the special
access method routines, which are control
sections in the Interpreter Controller
routine. After constructing the NEL, the
Interpreter Controller routine enters the
Interpreter program via an ATTACH macro
instruction and waits for Interpreter
completion.
The NEL exit list entry indicates to the
Interpreter subroutine that the ASBQueue
Reader routine (module IEFVMG) should be
entered whenever a GET is issued to obtain
input stream records. The ASB Queue Reader
routine reads and expands a compressed JCL
statement from the ASB queue. After the
expanded statement is built in the special
Access Method Work ~ea (SAMWA), it is
passed to the Interpreter Subroutine for
processing. (The SAMWA is shown in Figure
9~

)

When the ASB Queue Reader routine
encounters the special statement generated
by the Input Stream Processor routine to
indicate a cataloged procedure l the
statement is used to fill the procedure
name and first record TTR fields in the
SAMWA, which is shared by the ASB Queue
Reader routine and the ASB Find routine
(module IEFVMH). The ASB Queue Reader
routine then processes the next statement
in the ASB queue, which is the execute
statement for the cataloged procedure in
question. Using the NEL exit list entry,
the Interpreter subroutine branches to the
ASB Find routine instead of issuing a FIND
macro instruction to locate the procedure.
The ASB Find routine uses the information
in the SAMWA to return the information
normally returned to the Interpreter
subroutine after execution of a FIND macro
instruction·. . The special FIND macro
instruction processing removes the
relatively slow FIND operation from the
Interpreter subroutine and places. it in the
Part 2:

Processing Input Streams

47

Offset
Dec
Hex
0
24

.

01
36

4
Address of Queue Record Buffer

2C
DC
12C

.

361

QMPA

44
220

41

Current Queue Record TTR
176 ~

.1-

I

Current Queue Record
80

JC L Statement Buffer

300

4
Reserved

134

Dequeue ECB

308

8

4

Continued
13C

Address of Queue Mgmt Control Routine

316

4

4

Address of Queue Mgmt Delete Routine'
144
14C

1

324

I/o

Address of Queue Management Unchai'n Routine

2
Error Retry Count

2

4

Reserved

Address of Queue Management Dequeue Routine

332

4

72

Track Stacking Parameter List
194

404

~

Queue Management Save Area
~r

In-Stream Procedure Name
19C

412

8

4
TTR of First Record in In-Stream Procedure

Continued·
1M

420

4

4

Address of Compression/Decompression Parameter list
lAC

428

Address of Decompressed Record Buffer
4

Address of Block Containing Compressed Records
lB4

436

Figure

Character
Removed

9..

1 1 Compression
Switches

11

Reserved for Record
Decompression Routine

Length of Block Containing
Compressed Records

2

2

Special Access Method Work Area (SAMW1I.)

Input Stream Processor routine. which
requires much less main storage.
Upon return from the Interpreter
program. the Interpreter Controller routine
checks the return code for an I/O error. a
'queue full' condition. or an Interpreter
ABEND.
Normally. the Queue Management routines
wait for space to become available in the
queue when.a 'queue fullY condition is
encountered; however. when the ASB routine
is being used .. a switch is set in the queue
management parameter area (QMPA) which
causes the Queue Management routines to
pass a return code when such a condition
arises. When the Interpreter program
recognizes this code, it purges any input
or output queue entries created for the job
and terminates processing.
If either a 'queue full' or I/O error
condition was indicated to the Interpreter
Controller routine. the routine
reconstructs the job control language
statements f9r the job being interpreted'
when the condition arOse and places them
48

Length of Decompressed Record 21

OS/360 MVT Job Management (Release 2.1)

back in the ASB queue. If Interpreter
ABEND code was indicated, an error message
is generated by the Interpreter Controller
routine and' the remaining entries in the
ASB queue are purged. The Interpreter
program is restarted after the first
occurrence of an I/O error. In all other
cases., contr'ol is returned to the
I.nterpreter Region Regulator routine.
The Interpreter Region Regulator routine
normally posts the completion of its task
(using the shared communication ECB),: and
thus returns control to the Input Stream
Processor routine with the return code from
the Interpreter program. However. if a
'queue full' ,condition was indicated, it
issues an ENQ macro instruction to obtain
exclusive control .of the no-queue-space
ECB. Next the routineclear$:the ECB to
remove the POST that occurred when the
interpreter purged the input and output
queue entries for the job. It then fS$ues
a WAITmacrd instruction. using the
no-queue--s'pace Etrn to aliow job
termi,nat:iLons to- fr:ee additional queue
space.. When the ECB is pO$ted; the routine
issues aDEQ to retea-sec;:oilt;ro·l .of t(he

no-queue-space ECB, acquires a new region
of main storage, and restarts the
Interperpreter Controller routine. After
completion. the routine again issues a WAIT
macro instruction using the communication
ECB.
Upon return from the Interpreter Region
Regulator routine, the Input Stream
Processor routine normally restarts the
reading of the input stream. However, if
there is no more input to be read, or if
the return code from the POST macro
instruction indicated the occurrence of an
error requiring termination, the routine
passes control to the ASB Termination
routine" which terminates the task.
ASB I/O Exceptions
The SYSIN batching function involves the
use of four data sets. They are:
• The input stream, which is read by the
Input Stream Processor routine.
• The compressed JCL stream (ASB queue),
which is written by the Input Stream
Processor routine and read by the ASB
Queue Reader routine.

(module IEZDCODE) to decompress the
compressed statements. A description of
the Record Decompression routine can also
be found in the section noted above.
ASB Queue processing
The ASB routine makes extensive use of
Queue Management routines to store
compressed JCL statements in the ASB queue
and later retrieve them for use as input to
the Interpreter program. Each job is
enqueued as a separate string of
forward-chained 176-byte queue records,
each record containing as many compressed
JCL stataments as passible. The end .of a
job being retrieved from the ASB queue is
recognized by a forward pointer of all
blanks.
The Queue Management routines that are
used to accomplish the storage and
retrieval functions are described in detail
in the "Cammon Elements .of Job Management"
sectian of this publication. The ways in
which Queue Management routines are used by
ASB rautines are described in this section.

• The system input data sets, which are
written on direct access volumes by the
Input Stream Processor routine .•

There are four ASB routines that use
Queue Management routines: the Input
Stream Processor routine, the ASB Queue
Reader rautine, the ASB Termination
routine, and the Interpreter Controller
rautine.

• The procedure library, which is read by
the Input Stream Processor routine.

Input Stream Pracessor Rautine

Exceptional I/O conditions -- read or
write errors and space availability
problems -- are handled in most cases by
deleting all in progress queue entries and
scratching all data sets created for the
job. The Interpreter subroutine is
initiated for any jobs completed in the ASB
queue and processing is terminated after
freeing the ASB work area.
ASB Job Control Language Compression
To make efficient use of available queue
space, the ASB routine compresses JCL
statements before placing them in the ASB
queue. To perform this compression" ti)e
Input stream ProceSsor passes control td
the Record Compression routine (module
IEZNCODE) • The Record Compression routine
compresse's .statements bY replacing
contiguous occur,rences of a specified
character with a count field. A detailed
description' of the rQutine can be found in
Pa,rt 6 of this publication under the
section: entitled "The Interpreter Routine:
Auxiliary Routines~'"
When the ASB Queue routine receives
control to' accesS jobs in the ASB queue, it
UseS the ReCord Decompression routine

At the start .of each jab, the Input Stream
Processor routine uses the Queue Management
Assign/Start routine ta initialize the QMPA
for ASB queue pracessing and to assign
space far three queue records. The first
two queue recards are used as the beginning
of the campressed JCL chain. The third
space is used ta contain a JFCB far the
system input data sets, if any are included
in the job. The queue address of the third
space is maved ta the TIOT so the JFCB will
be written there when the data set is
opened.
The initial assignment .of two queue
records is necessary to establish the
forward chain. A pointer to the second
record is placed in the first faur bytes of
the first recard bef ore the first record is
written.
As: 176-byte qUeue records are filled
with compressed .::TeL, statements, the Input
Stteam Processor routine uses the Queue
Management Read/Write rautine to place them
dn a' dJrect access volume and assign space
for the next queue recard. In order to
maintain the forward chain, the Input
Stream Processor rautine stays .one record
ahead .of the current record being written.
)?art 2:

Processing Input Streams

49

When the Input stream Processor routine
recognizes the first statement of the next
job, the forward pointer in the current
queue record to be written is set to all
blanks to indicate the end of the chain.
The routine then uses the Queue Management
Read/Write routine to place the last record
on a direct access volume and uses the
Queue Management Enqueue routine to enqueue
the job at priority seven.
(All jobs are
enqueued at priority seven so that the
first job placed in the queue will be the
first job retrieved for Interpreter
processing .• )

When the first I/O error condition or
when a queue full condition arises, the
Interpreter Controller routine reenqueues
the current job being interpreted.. Since
the forward chaining of the job's queue
records has not been changed, this returns
the job to its condition before
interpretation was initiated.
When an error arises during
interpretation which cannot be handled by
restarting the Interpreter program, the
Interpreter Controller routine use the
Queue Management Delete routine to remove
the job from the ASB queue.

ASB Queue Reader Routine
The ASB Queue Reader routine uses the Queue
Management Dequeue routine to access jobs
in the ASB queue.. since all jobs have the
same priority, the first job enqueued will
be the first job dequeued. Subsequent
records in the job's chain are read by the
Queue Management Read/Write routine using
the forward pointer in the previous record.
When a forward pointer of all blanks is
encountered, the ASB Queue Reader routine
uses the Queue Management Delete routine to
delete the job's entry from the ASB queue.
The logical tracks used by the job's entry
are returned to the free track queue, and
the ASB Queue Reader routine uses the Queue
Management Dequeue routine to access the
next job in the ASB queue.
When the ASB Queue Reader routine enters
the Queue Management Dequeue routine and
the ASB Queue is empty, a 'no-work'
condition exists. This condition results
in the insertion of an ECB in the no-work
ECB chain.
(This ECB is posted when work
becomes available.) Instead of waiting for
work to become available, the ASB Queue
Reader routine uses the Queue Management
Unchain routine to remove the ECB from the
no-work ECB chain and then causes
termination of the Interpreter program.
ASB Termination Routine
If the ASB Termination routine is entered
because of an error condition, and if a job
has been partially entered in the ASB
queue, the routine uses the Queue
Management Delete routine to delete the
partially completed job from the ASB queue,
thus returning the queue space assigned to
the job to the free track queue.

If an error condition occurs that will
result in termination of the ASB routine,
the Interpreter Controller routine uses the
Queue Management Dequeue routine and the
Queue Management Delete routine to remove
all remaining jobs from the ASB queue.
ASB SYSIN Data set Processing
Most of the initialization for the writing
of SYSIN data on direct access volumes is
accomplished in the ASB Initialization
routine. The routine does the following:
• Locates the SYSIN data set (IEFDATA)
entry in the RDRA procedure TIOT.
• stores the queue address of the JFCB
for SYSIN data sets in the ASBWA.
• Reads the JFCB for SYSIN data sets into
the ASBWA.
• sets bits in the UCBs pointed to in the
IEFDATA device entries in the TIOT
indicating that SYSIN data set devices,
which are not already specified as
permanently resident or reserved, are
reserved and public.
• Constructs, in the SYSIN data set JFCB
in the ASBWA, the base of a unique data
set name to be generated for SYSIN data
sets.
• Stores the blocksize and buffer number
values in the SYSIN data set JFCB in
another area of the ASBWA.
The constructed base of the unique data
set name is:
SYSddddd.Ttttttt.IVOOO.

Interpreter Controller Routine

The 'ddddd' represents a five-byte current
date field, and the 'tttttt' represents a
six-byte current time field.

The Interpreter Controller routine uses
Queue Management routines when error
conditions arise that necessitate changes
in the ASB queue.

The Input Stream Processor routine
performs one initialization function. It
sets up entries in the SYSIN data set DCB

50

OS/360 MVT Job Management (Release 21)

that allow the Input stream Processor
routine to process end-of-volume conditions
and that indicate processing will take
place with a JFCB which is already in main
storage (not in a queue).
Checking DD

*

and DD DATA Statements

When the Input Stream Processor routine
encounters a DD * or DD DATA statement, i t
searches for, and checks the syntax of the
value of, the DLM parameter.
If the
parameter's value is valid, the routine
stores it in the last field shown for the
ASBWA (Figure 8). Then the routine
searches for the BLKSIZE and BUFNO
subparameters of the DCB parameter, and if
present, stores them in the SYSIN data set
JFCB in the ASBWA.
If either the block size or buffer
number subparameters are not specified in
the DD statement in the input stream, the
Input Stream Processor routine checks to
see if the job step that includes the SYSIN
data set specifies the execution of a
cataloged procedure. If a cataloged
procedure is indicated, the Input Stream
Processor routine locates the procedure and
searches it for a DD statement with a
DDNAME parameter that matches the name of
the DD * or DD DATA statement in the input
stream. If such a statement is found, the
routine uses the block size and buffer
number subparameters from the cataloged
statement to take the place of whichever
subparameter is missing (or both, if both
are missing) on the input stream statement.
If a subparameter cannot be found in either
location -- the input stream statement or
the procedure statement -- the value
specified in the original JFCB entry is
restored.
The Input Stream Processor routine then
checks the validity of the BLKSIZE and
BUFNO subparamenters. Block size must be a
multiple of 80 and equal to or less than
the block size value specified originally
in the SYSIN data set JFCB. The buffer
number must be equal to or less than its
originally specified value.
Processing DD

*

and DD DATA Statements

When the Input Stream Processor routine
encounters ~ DD * or DD DATA statement, i t
saves the address of the queue location
where the next record is to be written and
the address where the next record will be
placed in the current buffer. The DD
statement and any continuation statements
are then compressed and placed in the queue
record and any subsequently needed queue
records.

If an error is detected after processing
the DD * or DD DATA statement, the SYSIN
data set in the input stream is flushed, a
/* statement is placed in the queue record
following the DD * or DD DATA entry, and
processing of the job's input stream
records continues. The Interpreter
subroutine diagnoses the error and prints
the appropriate programmer message.
If no errors are detected in the DD * or
DD DATA statement, the Input Stream
Processor routine obtains the queue address
that was saved when the DD* or DD DATA
statement was encountered and sets the
address of the next record in the block to
point to the location where the DD
statement was written. This procedure
removes the DD * or DD DATA statewent from
the queue and allows a generated DD
statement describing the direct access
volume data set to be put in its place.
The Input Stream Processor routine then
constructs the remaining portion of the
unique data set name for the SYSIN data
set, as follows:
jjjjjjjj.Snnnnnnn
The 'jjjjjjjj' represents the current job
name. This field may be from one to eight
bytes long. The 'nnnnnnn a represents a
seven-byte generated serial number, which,
beginning at one, is increased by one for
each SYSIN data set written on a direct
access volume. The format of the complete
unique data set name is:
SYSddddd.Ttttttt.IVOOO.jjjjjjjj.Snnnnnnn
Using the UCBs pointed to in the IEFDATA
device entries in the TIOT, the Input
Stream Processor routine attempts to
allocate space for the SYSIN data set. If
the attempt is unsuccessful, the routine
issues a message to the operator and waits
for one minute to allow space to become
available through job terminations. After
completing the wait, the Input Stream
Processor routine checks the stop RDRA ECB
and terminates operation if so requested by
the operator.
If termination is not
requested, the allocation procedure is
repeated until the necessary space is
acquired, after which the data set is
opened and the input stream data records
are written on the direct access volume.
The Input stream Processor routine then
completes the generated DD statement, using
the device entries in the TIOT to obtain
the number of volumes written to and their
volume serial numbers. The routine then
compresses the DD statement in the current
queue record and continues the processing
of the next input stream record.
Part 2:

Processing Input Streams

51

Restarting Jobs

which attaches the system program specified
via the command.

The execution of a job step may be
terminated as a result of a CANCEL command,
because the step's timer interval expired,
because of a program error, or as a result
of a system ABEND.
If the job is eligible
for restart, and if the operator authorizes
the restart, the step will be restarted
automatically by the operating system.
Otherwise, the programmer may request a
deferred restart by coding the RESTART
parameter on the JOB statement, adding a
SYSCHK DD statement, and resubmitting the
job.

If the command is a START Restart Reader
(S IEFREINT" " jobname, ••• jobname), the
program that gains control is the Restart
Reader routine.

Much of the processing required before a
job can be restarted automatically is
performed in the Termination routine, in
the initiator, and in the System Restart
routines. This processing results in the
job's input queue entry having been
re-enqueued in the hold queue, and in the
MGCR macro instruction1 having been issued
to schedule the execution of the START
Restart Reader command.
If the restart is a deferred restart,
the job is resubmitted through the input
stream.
In the case of a deferred step
restart, the interpreter simply pOints the
JCT to the SCT of the step to be restarted
(instead of pointing it to the first step);
the job is then initiated normally,
starting with the restart step.
In the
case of a deferred checkpoint restart,
however, the interpreter generates an EXEC
statement and uses it in conjunction with
the SYSCHK DD statement submitted by the
programmer to create an extra step. The
extra step is the DSDR Processing step; it
is executed first (by the DSDR Processing
routine), and its SCT points to the step to
be restarted from a checkpoint.
This section discusses the processing
performed in the Restart Reader routine,
and also discusses the processing performed
in the Data Set Descriptor Record (DSDR)
Processing routine, which is executed as
the first step of the restarting job when a
checkpOint restart is to be performed.

THE RESTART READER
When the Command Scheduling routine (SVC34)
encounters a START command, it posts the
Master Scheduler. The Master Scheduler
passes control (via the ATTACH macro
instruction) to the System Task Control
routine. The System Task Control routine
passes control to the Initiator subroutine,
1The MGCR macro instruction issues SVC34.
52

OS/360 MVT Job Management (Release 21)

A START Restart Reader command is
constructed and issued when a step is to be
restarted automatically: as a result of an
abnormal termination during the execution
of the step, or as a result of system
restart processing. When the Restart
Reader (module IEFVRRC) is entered, the
job's input queue entry has been partially
processed by an initiator while starting
the job, and has been re-enqueued in the
hold queue. The function of the Restart
Reader is to restore the queue entry to its
state before the job was initiated, and if
a checkpoint restart is planned, to add the
control blocks and tables that will cause
the DSDR processing routine to be executed
as the first step.
The Restart Reader constructs a QMPA,
extracts a job name from the restart
activation jobnames tables, and uses the
Queue Management Dequeue routine to dequeue
the job from the hold queue and read the
JCT into main storage. The Dequeue routine
returns control to the Restart Reader,
which uses the XCTL macro instruction to
pass control to a linkage routine. The
linkage routine (module IEFRCLN1) passes
control to the Interpreter Initialization
routine via a LINK macro instruction.
The interface between the Restart Reader
and the Interpreter is shown in Figure 10.
The Interpreter is used to re-read the
original JCL, and to create a queue entry
that duplicates the original queue entry.
The Interpreter does not, however, actually
enqueue the entry.
The original JCL is available, in
condensed form, in the 5MBs created for the
job when its input stream was first
processed. The Interpreter uses a special
access methoQ, the 5MB Reader, to read the
job's 5MBs and reconstruct the JCL.
The Restart SVC Issuing routine (module
IEFRSTRT) is loaded into main storage via
the interpreter access method exit. When
the Interpreter Get routine issues the GET
macro instruction, the Restart SVC Issuing
routine is entered at entry point IEFSMR
and issues the restart SVC (SVC 52) to
execute the 5MB Reader.
When it is entered for the first time,
the 8MB Reader constructs a QMPA, reads in
the job's SCTs, and stores the address of
the end of the 5MB chain.

Option List
Interpreter
Entrance List
IEFVRCC

Option list
Pointer

Restart
Reader

ECB Pointer
Rest"rt Reader C SC B

XCTL

JCL Pointer

IEFRCLNI

IEFRCLN2
Checkpoint
Restart
Linkage Routine

Linkage
Routine
LINK
and
RETURN

LINK and RETURN

QMPA Pointer

Stop ECB

JCT Pointer
Exit list
Pointer

Interpreter
QMPA Used to
Dequeue Job
GET
IEFRSTRT
Restort SVC
Issuing Routine
Exit list

SVC 52
and
RETURN
IEFVSMBR

~----i

Access Method
Exit

5MB
Reader

Figure 10.

Interface Between the Restart Reader and the Interpreter

Each time the 5MB Reader is entered
(including the first time) i t reads and
inspects an 5MB.
If the 5MB contains a
message, a DSB entry, or a procedure
library statement, the routine ignores it
and reads the next 5MB in the chain. If
the 5MB contains a JCL statement, the
routine expands it (except that it blanks
out the asterisk in column 3 of a converted
comments statement>, and replaces DD* and
DD DATA statements with DD DUMMY
statements. The routine places the
expanded JCL statement in a buffer and
returns control to the Restart 5VC Issuing
routine; the Restart 5VC Issuing routine
returns control to the Interpreter. When
the routine reaches. the end of the 5MB
chain, it uses the DCB end-of-data exit.
The original JCL is reprocessed by the
interpreter. It constructs the approriate
tables, and when processing is complete,
the interpreter returns control to the
Restart Reader, and passes i t the addresses
of the newly created JCT and of the QMPA
used in writing the tables into the work
queue data set.

The restart reader uses the SCT pointer
in the old JCT to read the SCT for the step
to be restarted into main storage, then
extracts and stores the step name. Next,
it reads the newly created SCTs in order,
until it finds the one that corresponds to
the step to be restarted.
When it ~inds the newly created SCT that
corresponds to the step to be restarted,
the Restart Reader updates the original SCT
with the information from the new SCT
(except for the queue addresses and
dependency codes) and writes the old SCT
back into the queue data set.
Using the queue addresses in the old and
new SCTs, the Restart Reader updates the
other tables for the step to be restarted,
writes them back into the queue data set,
and then deletes the newly created input
and system output queue entries.
The job's queue is now exactly as it was
when the step was originally selected for
initiation.
Part 2:

Processing Input streams

53

If the job is to be restarted from a
checkpoint. however, an additional job step
(the DSDR Processor) will be executed to
prepare for the checkpoint restart. and
additional tables must therefore be added
to the job's input queue entry,. The
Restart Reader creates the appropriate JCL
statements in main storage. It passes
control to a linkage routine (module
IEFRCLN2), which passes control to the
Interpreter (using the same interface used
by the System Task Control routine).
When the Interpreter returns control to
the Restart Reader, it passes the addresses
of the JCT and the QMPA it used. The
Restart Reader extracts the address of the
SCT from the JCT, and updates the
restarting job's JCT to point to the SCT of
the DSDR Processor step. It adjusts the
SCT of the DSDR Processor step to pOint to
the SCT of the step to be restarted. then
deletes the system output queue entries
created by the interpreter for the DSDR
step.
When the queue entry has been enqueued,
the Restart Reader determines whether there
are any unprocessed jobs specified in the
restart activation jobnames table. If so,
it processes each remaining job. If there
are no unprocessed jobs l the Restart Reader
returns control to the initiator; which
uses the Termination routine to terminate
the Restart Reader, then returns control to
the System Task Control routine.
RESTARTING THE STEP

routine is initiated in place of the
restart step; it updates the queue entry
from the information in the checkpoint
record. then changes the name of the
program specified to execute the restart
step to IEFRSTRT. IEFRSTRT, a program that
issues SVC 52 1 • is thus executed when the
restart step is initiated.
When the DSDR Processing routine
(IEFDSDRP) is entered. it finds the
initiator's QMPA, reads the JCT to
determine the type of restart to be
performed, and obtains the JFCB for the
checkpoint data set. If a
programmer-deferred restart is to be
performed, the DSDR Processing step JFCB is
the proper JFCB; if an automatic restart is
to be performed, the proper JFCB is the one
created for the restart step.
The DSDR Processing routine constructs a
DCB for the checkpoint data set, opens it,
then reads the SCT for the restart step.
It changes the program name in the SCT for
the restart step to IEFRSTRT, and
determines the number of SlOTs in the
restart step.
The routine uses the number of SlOTs to
calculate the size of the SlOT Processing
table (SlOP), which is uses to reduce the
number of accesses to the queue data set
during DSDR processing. The SlOP has a
15-byte entry for each SlOT; each entry
(constructed when the SlOT is read)
contains the addresses of the SlOT and its
associated JFCB, the ddname, and a byte
used to indicate whether a matching DSDR
has been found.

If the restart is a step restart, no
further special processing is required.
When the Restart Reader has completed its
processing, the job's input queue entry is
in the same form it was in when· the step to
be restarted was ready to be selected for
processing by an initiator for the first
time. When the initiator dequeues the job,
it will select the restart step as the
first step (because the JCT points to the
SCT for the restart step) and normal
processing will continue.

When the routine has performed the
processing described above, it reads the
first SlOT and constructs an SlOP entry,
then reads the checkpoint data set header
record and uses the information it contains
to calculate the beginning addresses and
lengths of the area in each storage
hierarchy allocated to the restart step.
This information is stored in the SCT and
used in obtaining a region of main storage
when the restart step is initiated.

If the restart is a checkpoint restart,
additional processing must be performed.
The job's queue entry is in the same form
as it was when the step was ready to be
initiated (except that the DSDR Processing
step has been inserted and will be selected
first) but processing will resume at a
checkpoint instead of at the beginning of
the step. Thus, the queue entry must be
made to appear as it did when the
checkpoint was taken.

Next, the routine begins the actual DSDR
processing. It reads a DSDR, and attempts
to match it with an entry in the SlOP table
by comparing ddnames. If no match is
found, the routine reads the next SlOT,
constructs an SlOP entry, and checks for a
match. This process is repeated each time
the routine reads a new DSDR.. When it
finds a match, the routine checks for a
blank ddname. The SlOTs (and corresponding

The information that enables the queue
entry to be updated is saved when the
checkpoint is taken. The DSDR Processing

1For a discussion of SVC 52 (Restart) and
SVC 63 (Checkpoint), see the MVT
supervisor PLM.

54

OS/360 MVT Job Management (Release 21)

DSDRs) for all but the first part of a
concatenated data set have blank names;
when a blank ddname is encountered, the
routine checks the preceding SlOP entry,
and only if it has been matched is there a
match on the current DSDR.
If the DSDR corresponds to a JFCB
(rather than to a GDG bias count table),
the routine reads the corresponding JFCB
and overlays all non-volume information
with the information in the DSDR, except in
the following cases:
• If the DSDR correspon~s to a DD DUMMY
statement, it is ignored; processing
continue with the next DSDR.
• If the GDG All bit is on, or if the
data set is a system input or system
output data set and a deferred restart
is being performed, the dsname in the
JFCB is retained as well as the volume
information. The remaining DSDRs

associated with a GDG are not
processed.
• If the GDG Single bit is on in the
DSDR, it is turned off in the SlOT .•
The DSDR is otherwise processed
normally.
If the DSDR corresponds to a GDG bias
count table, and if the restart is a
programmer-deferred restart, the
corresponding GDG bias count table is
overlaid by the DSDR. If the restart is an
automatic restart, the records are not
processed.
Finally, the DSDR Processing routine
reads the first core image record (CIR),
and, if the checkpoint data set is on a
direct access device, issues the NOTE macro
instruction and closes the data set. The
routine then writes out the updated JCT,
SCT, and SCTX, then returns control to the
supervisor.

Part 2:

Processing Input Streams

55

56

08/360 MVT Job Management (Release 21)

Part 3:

Initiating Ta$ks

The Initiator subroutine is used to initiate both system tasks and job step tasks. In
order to initiate a task, the initiator retrieves job control information about the task
and reserves system resources for the use of the task. After the reservations for a task
are completed, the initiator passes control to the task. When a task has terminated, the
Termination routine of the initiator releases the task's system resources and returns
control to the System Task Control routine.
Initiating System Tasks

When the System Task Control routine is
processing a starting system task, it uses
the initiator as a subroutine to continue
the processing. The Initiator Control
routine (module IEEVICTL) provides an
interface between the System Task Control
routine and the Initiator subroutine by
passing the JCT and CSCB for. the starting
task to the initiator. The Initiator
subroutine performs region and I/O device
allocation, attaches the program that
executes the starting task, performs
termination functions after execution, and
returns control to the System Task Control
routine.

Initiating Job Step Tasks

If a START command specifies an initiator,
the Initiator subroutine is being invoked
to initiate a job step task. In response
to the START command specifying the
initiator, the Initiator Control routine
(module IEEVICTL) serves as the interface
between the System Task Control routine and
the Initiator subroutine by obtaining
storage for and building the initiator
entrance list (IEL), the initiator options
list, and the initiator exit list (see
Appendix A: Tables and Work Areas for a
detailed description of these lists). Then
the Initiator Control routine passes
control to the initiator. The initiator
selects one job at a time for processing
from the input queues.. Each step of a job
is processed in turn, and when the last
step of a job has ended, the initiator
selects another job. This process
continues as long as there are jobs in any
of the input queues associated with the
initiator or until performance of the

initiator is stopped by operator command.
The Iaitiator subroutine terminates the
task and finally returns control to the
System Task Control routine.

GROUPING INITIATORS
Each initiator is capable of selecting jobs
from up to eight of the 15 input queues.
The START command, or the PARM field of the
EXEC statement in the specified initiator
procedure, specifies which of the input
queues are to be associated with an
initiating task.
If several START commands
are issued, and each specifies the same
initiator procedure, a corresponding number
of initiators may be started that will
process jobs from the same set of input
queues.
When this occurs, the initiators are
identified as a group by the procedure name
used in the START commands. Members may be
added to the group by issuing additional
START commands; the size of the group may
be reduced by issuing STOP commands, and
the set of queues associated with the group
may be changed by issuing MODIFY commands.
A group may also be defined by using the
identifier parameter in the START command.
If this is done, the group consists of
those initiators with the same procedure
name that share an identifier; it is
affected by START, STOP, and MODIFY
commands containing that identifier.
Communication among the initiators in a
group is maintained with the aid of a group
control block (GCB). The GCB, which is
shown in Figure 11, is constructed by the
first member of the group to be
established. It is added to a cha:ln of
GCBs, where it remains until the last
member of the group stops.

Part 3:

Initiating Tasks

57

2
21

En try Length

Reserved

4

required by each task, frees the
current region l and obtains a new one
of the proper size.

Pointer to Next GCB in Chain

8

Procname

8

• I/O Device Allocation: The initiator
uses the I/O Device Allocation routine
(as a subroutine) to check EXEC
statement condition codes and to
allocate I/O devices to tasks. The I/O
Device Allocation routine is described
in Part 6 of this publication.

Identifier

Member Count 1

I

Stop Count

1

1

Modify Count 1

1

Reserved

Pointer to Command Input Buffer

Figure 11.

1

4

Group Control Block (GCB)

Initiator Functions

The initiator and its subroutines perform
the following functions:
• Job Selection: When the System Task
Control routine uses the initiator as a
subroutine to initiate a system task,
the initiator continues processing of
the starting system task. However, if
the initiator receives control to
initiate a job step task, it scans the
ECB list to find the first of its
queues that contains an entry. If
necessary, it waits until an entry
becomes available, then dequeues a job
and prepares to process the job.
• Region Management: The initiator
determines the size of the region

58

OS/360 MVT Job Management (Release 21)

• Attaching Tasks: The initiator gathers
information needed by the supervisor to
run the task, and transmits this
information via the ATTACH macro
instruction.. Control is passed to the
first program of the task; at
termination, the supervisor returns
control to the Initiator A,ttach
routine .•
• Terminating Tasks: The initiator uses
the Termination routine (as a
subroutine> to release the I/O devices
that were allocated to the task, to
rlirect the disposition of data sets
used or created by the task, and to
check JOB statement condition codes •
If the initiator is terminating a job
step task and the terminating step is
the last step of a job, the initiator
uses the Queue Management routines to
enqueue the job's system output queue
entries, and to delete the job's entry
from the input queue. The Termination
routine is described in Part 6 of this
publication..
Figure 12 shows the flow of control
among the modules of the initiator and
indicates the sequence in which the
functions are performed.
In Figure 12, the
modules are grouped into load modules.

GENERAL NOTE:

IEFSD060

Interface
Control

MODIFY
Command

Modules IEFSD161, IEFSD162, and IEFSD514 interface
with Oueue Management routines as follows:
•

IEFSD161 interfaces with IEFOMDOO and
IEFOMRAW

•

IEFSD162 interfaces with IEFOMRAW

o

IEFSD514 interfaces with IEFOAGST and
IEFOMRAW

Initialization

From IEEVICTL

Wait for Work

Job Deletion

Link Pack Area

IEFIIC is attached from IEFSD263, which receives
control from the System Task Control routine,
Note 2: Identifiers outside shaded blocks are load module
names.
Note 3: Control Flow among the modules of the I/O
Device Allocation routine is shown in Chart 12,

Figure 12.

Initiator Load Modules and Control Flow
Part 3:

Initiating Tasks

59

Initializing the Initiator

The Initiator Initialization routine
, an initiator options
list, and an initiator exit list. The
routine determines the processing to be
performed from the information in the
lists. The routine performs a syntax check
on the class names, force priorities, and
limit priority in the START command. If no
specification was made in the command, the
routine performs the syntax check on the
PARM field of the Initiator Procedure EXEC

60

OS/360 MVT Job Management (Release 21)

statement. If it finds a syntax error, the
routine returns control to the System Task
Control routine, and the Initiating Task is
terminated. If no error is found, the
routine proceeds with the initialization:
• It obtains main storage from subpool
253 for the linkage control table
(LCT>, for a two-level register save
area, and for queue manager parameter
areas (QMPAs) for the message class and
input queues.
• It places a pointer to the Track
Stacking Parameter List into each QMPA.
• It copies the number-of-buffers
specification from the Master Scheduler
Resident Data Area into the Track
stacking Parameter Area.
• It initializes the LCT with the QMPA
pointers, UCB List pointer, the
initiator options from the initiator
options list, the address of the
initiator exit list, the addresses of
the JCT and the CSCB if the initiator
is being used as a subroutine to
process a system task, and the return
address to the System Task Control
routine.
The following processing takes place
only when the Initiator subroutine is
initiating jobs from the input queues:
• It inputs the force priorities, limit
priority, and the priority at which the
initiator was attached to initiate a
job step task, in the LCT.
• It obtains main storage from subpool
253 for the Initiator ECB List (see
Figure 14).
• It constructs the ECB List, setting the
post bit on in each ECB.
• It scans the chain of Group Control
Blocks. If no GCB in the chain
contains the initiator procedure name,
the routine constructs and initializes
a GCB and adds it to the chain. If a
GCB exists for the group, the routine
increments the member count by one.
Finally, the Initiator Initialization
routine places a pointer to the ECB List in
the LCT, places a pointer to the LCT in
General Register 1, and passes control to
the Job Selection routine.

Selecting Jobs

The process of job selection takes place
only if the initiator receives control to
initiate a job step task that is not
specified in a START command.
The process of job selection includes
the following functions:
o

the Job selection routine builds a QMPA for
the corresponding queue, using the area
obtained in the Initialization routine.
When the QMPA has been constructed., the Job
Selection routine uses a BALR instruction
to pass control to the Queue Management
Dequeue routine. The Dequeue routine
issues an ENQ macro instruction and reads
the QCR into main storage to determine
whether there are any jobs in the queue.

Looking for work by scanning the
initiator's ECB list for an indication
that a queue entry is available.

o

Waiting for work, if there are no queue
entries available.

o

Dequeuing a job from the first queue on
the initiator's list that contains an
entry.

o

Determining whether direct system
output (DSO) processing has been
initiated for any classes in which the
job has data sets, assigning direct
system output control blocks (DSOCBs)
as required, and constructing a QMPA
for the system output messages that
pertain to the job.

ECB Address
CIB Address

Figure 13.

Communication Parameter Area
(CPA)

Note: The ECB address is a pointer to the
communications ECB that is posted by SVC 34
when a STOP or MODIFY command is issued.
The CIB address is a pointer to the command
input buffer that contains the command code
and parameters from the STOP and MODIFY
commands.

Most of these functions are performed in
the Job Selection routine (module
IEFSD161). The wait for work takes place
in the Initiator Wait routine (module
IEFSD10S), which resides in the link pack
area.

If there are no jobs in the queue, the
Dequeue routine issues the DEQ macro
instruction and adds the appropriate ECB in
the initiator ECB list to the no-work
chain. The Dequeue routine then returns
control to the Job Selection routine, which
continues its scan of the ECBs in the list,
looking for a posted ECB.

LOOKING FOR WORK

WAITING FOR WORK

Whenever it is entered, the Job Selection
routine determines whether an internal stop
has been issued, indicating that a started
task or TSO terminal task has been
completely processed. If so, the routine
frees storage and returns control to the
System Task Control routine.
If no
internal stop has been issued, the routine
determines whether a STOP or MODIFY command
has been issued by testing the stop bit in
the ECB pointed to by the communication
parameter area (CPA) -- see Figure 13, by
testing the verb code in the command input
buffer (CIB), and by checking for the
presence of data in the command input
buffer.
If no MODIFY or STOP command has
been issued, the routine determines whether
it must dequeue a job from the input queue.
If a JCT has been passed to the initiator,
there is no need for the routine to dequeue
a job for processing from the input queue.
Otherwise, the Job Selection routine must
dequeue a job from the queue. It scans the
initiator's ECB list (see Figure 14),
looking for an ECB that has been posted.
When it finds an ECB with the post bit on,

If there are no jobs in any of the input
queues in the initiator's set, the Job
Selection routine uses the WTO macro
instruction to inform the operator that the
initiator is waiting for work, then uses
the XCTL macro instruction to pass control
to the Initiator Wait routine.
The Initiator Wait routine (module
IEFSD10S) is always loaded into the link
pack area. When it is entered, the routine
releases the initiator's region and issues
a WAIT macro instruction specifying the
initiator's ECB list. The first ECB
specified in the list is posted by the
Command Scheduling routine (SVC 34) as a
result of a STOP or MODIFY command that
applies to the initiator. The other ECBs
specified in the list are in no-work chain
elements; they are posted by the Queue
Management Enqueue routine when a job is
enqueued in the corresponding queue. When
any of the ECBs is posted, the Initiator
Wait routine obtains a new region of main
storage for the initiator, and passes
control to the Job Selection routine.

Part 3:

Initiating Tasks

61

4
Work Area

Length of table area

Command ECB pointer

Class ECB pointer
ECB List

~~

Class ECB pointer

,-" r
4

1

Class ECB

1

Figure 14.

Class ECB

3

Q/M Link field

J

Initiator ECB List

DEQUEUING THE JOB
If there are jobs in the input queue, the
Dequeue routine dequeues the highest
priority job. When it has updated the
input QCR, the routine writes the QCR back
into the queue data set, then creates a
CSCB for the job. It issues SVC 34 to have
the Command Scheduling routine place the
CSCB in the chain, then issues the DEQ
macro instruction to permit access to the
QCRs by routines performing other tasks.~
Before returning control to the Job
Selection routine, the Dequeue routine
reads the JCT from the job's queue entry
into main storage.. When it regains
control, the Job selection routine sets the
delete bit in the CSCB on to indicate that
this CSCB should be deleted from the CSCB
chain and its main storage released when
the job is completed. It then stores the
address of the CSCB for the job in the LCT.
Then, as is the case for all tasks, it
obtains main storage in sub pool 255 for the
write-to-programmer control block (WTPCB>
and storage in subpool 253 for the job step
control block (JSCB). It places the
addresses of the CSCB and the WTPCB in the
JSCB, and the address of the JSCB in the

I

LCT.

the DEQ macro instruction has been
issued, the job has been dequeued. At
that point. a CANCEL command applying to
the job becomes an existing-task command
instead of a task-creating command (see
the Command Processing section of this
publication) •

~When

62

;j

Q/M Link field

-

a-Byte
Elements

CIass Narne

OS/360 MVT Job Management (Release 21)

If more jobs are to be dequeued
following completion of this job, the
routine places the force priority and the
limit priority in the LCT. Next the
routine tests the job-canceled bit in the
QMPA; if the bit is on, the routine sets
the job-fail bit in the JCT on, sets the
job termination bit in the LCT on, and
reinitializes the address of the data set
enqueue table in the JCT to zero so that
data set integrity processing will not take
place for this task.
The routine updates the track stacking
information in the QMPA from the
information in either the LCT or the
initiator options list. It places the
protect key from the TCB in the JCT and
then extracts (from the JCT) the TTR of the
SCT for the first step to be run. The
Queue Management Read/Write routine reads
the SCT into main storage.

SYSTEM OUTPUT PROCESSING
The Job Selection routine uses the
information in the SCD to build a queue
manager parameter area (in the second of
the two areas obtained by the
Initialization routine) for the system
output message class. This parameter area
is used when the I/O Device Allocation
routine and the Termination routine add
system message blocks to the job's message
class queue en~ry, and when the Termination
routine enqueues the job's output queue
entries.

The programs processing a job can write
system output directly on an output device
only if a direct system output block
(DSOCB) for the job class has been assigned
to the job. If DSO processing has been
initiated, the Job Selection routine issues
an ENQ macro instruction, .in the share
mode, specifying the chain of DSOCBs. It
then uses the system output class directory
(SCD) to determine whether there are any
DSOCBs that can be assigned to the job. A
DSOCB can be assigned if the following
conditions are met:
• The DSOCB is available (not assigned to
another job, and no commands pending).
• The DSOCB specified a system output
class (including the message class)
used in the job.
• No other DSOCB for that class has been
assigned to the job.
If the conditions are met, the Job
Selection routine makes the assignment by
storing the initiator's protection key in
the DSOCB's protection key field.
The
routine continues assigning DSOCBs to the
job for other unassigned output classes
until no more can be assigned, then sets
the DSO indicator bit on in the JCT.

DATA SET INTEGRITY
If the address of the data set enqueue
(DSENQ) table is not zero, or if the bit in
the CSCB indicating "bypass data set
integrity processing" is not on, the Job
Selection routine reads the DSENQ table
into main storage.
(If the CSCB bit is on,

or if the job was previously failed, the
Job Selection routine places zeros in the
DSENQ table address.) The DSENQ table,
which may occupy several i76-byte records,
contains the name of each non-temporary
data set required by the job, and indicates
whether the data set may be shared, or
whether exclusive use of it is required.
The routine obtains main storage (in
subpool 255), then builds an ENQ macro
instruction parameter list, specifying each
name in the DSENQ table as well as its
attribute (exclusive or share). Since
duplicate names may exist in different
records of the DSENQ table, these
duplicates are eliminated; if the attribute
of a duplicate name differs from the
attribute of the original, the more
restrictive attribute is assigned.
When the parameter list is completed, it
is written back into the queue data set (in
the space occupied by the DSENQ table), and
a pointer to the list in subpool 255 is
placed in the LCT. The ENQ SVC (SVC 56) is
issued in the Replace Region routine (only
on the first step of a job); the DEQ 1S
issued in the Job Delete routine, when the
job has been terminated.
Since the ENQ SVC is issued before a
region is obtained for the first step of
the job, no region will be obtained while
any data set required for the job is under
the exclusive control of another job. The
ENQ SVC is issued with the USE option, so
that a list of names of the available data
sets is immediately returned to the
initiator. Appropriate operator messages
are then issued. Control finally passes to
the Region Size Determination routine
(module IEFS DiD 1) •

Part 3:

Initiating Tasks

63

Executing the Stop and Modify Commands

THE STOP COMMAND

When a STOP or MODIFY command specifies a
group of initiators" the communications ECB
of each member of the group is posted. In
the case of a MODIFY command, the list of
input queues to be associated with each
initiator is stored in its command input
buffer (CIB) and the member count field of
the GCB is stored in the modify count
field.
In the case of a STOP command, the
stop count field is incremented by one.
The MODIFY CIB is pointed to by the CPA and
the CSCB. The STOP CIB is pointed to by
the GCB if one exists; otherwise, it is
pointed to by the CPA and the CSCB.

If the initiator is to stop, the routine
tests the command input buffer to determine
whether a MODIFY command has also been
issued. If so, it is not executed, but the
Job selection routine reduces the modify
count in the GCB by one.
It also :reduces
the member count by one, and then tests it.
If the member count is zero, there are no
other members in the group and the Jot
Selection routine deletes the GCB from the
chain and frees the main storage it
occupies. In any case, the routine issues
the DEQ macro instruction for the GCB
chain, frees the main storage occupied by
the LCT and the ECB list, and returns
control to the System Task Control routine.

If the initiator is waiting for work and
one of the ECBs in an initiator's ECB list
is posted, the Initiator Wait routine
obtains a new region for the initiator and
passes control to the Job Selection
routine. If the intiator is processing a
job, processing continue s until the Job
Selection routine (module IEFSD161)
receives control to dequeue another job.
In either case, upon entry the Job
Selection routine tests the communication
ECB; if that ECB has been posted, a command
has been issued, and the routine uses the
ENQ macro instruction to prevent multiple
accesses to the GCB. The routine then
tests the stop count field in the GCB. If
the field is not zero, the initiator is to
stop; if the field is zero, the Initiator
subroutine determines if a CIB is present
in the chain pointed to by the
communications parameter area.
If a CIB is
present, the initiator checks it for a STOP
command. If a STOP command is to be
processed, the initiator processes it. If
the command is not STOP, the initiator
checks the command input buffer for a
MODIFY command.
If the stop count is zero,
and no MODIFY command has been issued, the
initiator continues processing.

64

OS/360 MVT Job Management (Release 21)

THE MODIFY COMMAND
If the stop count is zero, the initiator is
to continue processing. The Job selection
routine issues the DEQ macro instruction to
permit routines performing other tasks to
access the GCB, and then inspects the
command input buffer. Unless the buffer is
zero, a MODIFY command is to be executed,
and the Job Selection routine uses the XCTL
macro instruction to pass control to the
Initiator Initialization routine.
The Initialization routine (Module
IEFSD160) performs a syntax check of the
class names, force priorities, and limit
priority specified in the MODIFY command
(now stored in the CIB pointed to by the
CPA or CSCB). If the routine encounters a
syntax error, it issues an error message to
the operator and passes control to the Job
Selection routine without executing the
command. If no errors are found, the
Initialization routine constructs a new ECB
list, then passes control to the Job
Selection routine.

control table (SCT). Thes e values
specify the size (in each hierarchy) of
the region required for the execution
of the job step.

Region Management

Modules of the initiator operate in various
regions of main storage. When the
Initiator Initialization routine is first
entered, it operates in a region obtained
by or for the System Task Control routine.
Subsequently, initiator modules operating
in the link pack area release and obtain
main storage regions as required.

• Hierarchy 0 and hierarchy 1 region
addresses, which are stored in the SCT
when a job step is to be restarted from
a checkpoint. These are the beginning
addresses in each hierarchy of the
region originally obtained for the job
step.

DEI'ERMINING REGION CHARACTERISTICS
Whenever the initiator reque.sts a region of
main storage, it determines the
characteristics (size, address, and
hierarchy) required for the region.
In
making this determination, the initiator
uses the following factors:

RELEASING AND OBTAINING REGIONS
The initiator releases the current region
of main storage. and obtains a new region,
under the following circumstances:
• When the initiator must wait for work •

• Minimum initiator region size, which is
specified by the user when the system
is generated (see the Storage Estimates
SRL, GC28-6551) and stored in the
BAMINPAR field of the master scheduler
resident data area. The minimum
initiator region must be large enough
to contain the largest I/O Device
Allocation load module (and associated
tables and work areas). The user may
change the minimum initiator region
size at IPL time when specifying system
parameters.
o

Minimum job step region size, which is
calculated by the Nucleus
Initialization Program (see the IPL/NIP
PLM) if load module IEFSD061 is in the
link pack area. Load module IEFSD061
contains the Termination, Job
Selection, and Region Size
Determination routines. The minimum
job step region must be large enough to
contain the tables and work areas
associated with termination and job
selection functions.
The value is
stored in the BAMIPAR2 field of the
master scheduler resident data area and
is equal to the minimum initiator
region size less the size of load
module IEFSD061.

A minimum size region is required for
the initiator to attach a subtask and for
termination upon return from the subtask.
If load module IEFSD061 is loaded in the
link pack area, the region is equal in size
to the minimum job step region size.
Otherwise, it is equal in size to the
minimum initiator region size. The minimum
size region may be located in either
hierarchy zero or hierarchy one.
• Hierarchy 0 and hierarchy 1 region
sizes, which may be specified in the
EXEC statement, are stored in the step

• Each time the initiator selects a step.
• Before the initiator attaches a job
step, if load module IEFSD061 is in the
link pack area and the requested region
size is smaller than the minimum
initiator size region.
o

Before the initiator attaches a system
task, if the requested region size is
smaller than the minimum initiator size
region.

• Upon return from processing a system
task, if the requested region size for
the system task is smaller than the
minimum job step region size (necessary
for termination).
When the Initiator subroutine is
entered, the current region being used is
large enough to accommodate the first load
of the initiator. This region is used by
the initiator until it begins processing a
starting system task, selects a job and
step, or determines that it must wait for
work to become available.
If the initiator must wait for work,
control is passed to the Initiator Wait
routine (module IEFSD105) in the link pack
area. The Wait routine releases the
current region being used by the initiator
and then issues a WAIT macro instruction.
When the post occurs, the Initiator Wait
routine regains control, builds a parameter
list for GETMAIN, and issues a conditional
GETPART macro instruction for a minimum
size region in hierarchy zero.
If
sufficient main storage is unavailable in
hierarchy zero, the routine issues a
conditional GETPART macro instruction for a
minimum size region in hierarchy one. If
main storage is again unavailable, the
Part 3:

Initiating Tasks

65

routine issues an unconditional request for
a minimum size region in hierarchy zero.
When the region is obtained, the routine
passes control to the Job Selection routine
(module IEFSD161) to select a job and a
step.

On the return from the user's exit
routine, the User Exit Initialization
routine inspects the return code. If the
return code specifies that the job is to be
canceled, the routine sets the job-failed
bit in the JCT.

Each time the initiator selects a step,
it frees the current region and obtains a
new one in which to perform the I/O device
allocation function.

If the step being initiated is the first
step of the job, and if the SMCA options
field indicates that SMF data set
information is required, the routine tests
the SMCA option field to determine whether
SMF exits are specified.

The FREEPART and GETPART IJIacro
instructions are actually issued in the
Free/Get Region (module IEFSD102), which is
in the link pack area. But the processing
required before the macro instructions are
issued is performed in the Region Size
Determination routine (module IEFSD101),
which is a part of load module IEFSD061.

If SMF exits are not specified, the
routine uses the Queue Management Read
routine to bring the job ACT into main
storage (if SMF exits are specified, the
table is already in main storage.) The
routine constructs a type 20 SMF record and
issues SVC 83 to have the record placed in
the SMF data set.

When the Region Size Determination
routine is entered, it branches to the User
Exit Initialization routine (module
IEFSMFIE). If SMF is supported, this
routine initializes and updates the timing
control table (TCT), updates the job log
portion of the job management record (JMR)
and passes control to the user's Job
Initiation Exit routine (module IEFUJI) or
Step Initiation Exit routine (module
IEFUSI). If SMF is not supported, the User
Exit Initialization routine returns control
to the Region size Determination routine.

The User Exit Initialization routine
returns control to the Region Size
Determination routine (m09ule IEFSD101).
This routine determines whether track
stacking1 is being used.

When it is entered, the User Exit
Initialization routine determines whether a
TCT already exists for this job. If not .•
it obtains main storage from subpool 253
for the TCT and for the first 40 bytes of
the JMR. The routine initializes the TCT,
then uses the Queue Management Read/Write
routine to bring the JMR into main storage.
It copies the first 40 bytes of the J~R
into the area reserved for it, then issues
the TIME BIN macro instruction and stores
the job initiation start time and date in
the JMR. If user exits were specified, the
routine brings the job account control
table (ACT) into main storage, then passes
control to the user's Job Initiation Exit
routine (module IEFUJI).
If the TCT already exists, the JMR is
already in main storage. The User Exit
Initialization routine issues the TIME BIN
macro instruction, and stores the step
start time and date in the JMR. If user
exits are specified, the routine brings the
step ACT into main storage, then passes
control to the user's Step Initiation Exit
routine (module IEFUSI).
66

OS/360 MVT Job Management (Release 21)

If so, and if the job step is not the
first step of a TSO job, the routine uses
the Stack Purge routine to write out any
updated work queue records. Otherwise, and
on return from the Stack Purge routine, the
Region Size Determination routine scans the
program properties table (module IEFSDPPT)
to determine whether the program to be
executed is a privileged program, i.e. it
is allowed to receive the region size
specified for the step and/or is
noncancellable (except during allocation).
Note: The program properties table
(IEFSDPPT) is a table for job step tasks
like the linkage table (IEEVLNKT -- see
Figure 34) for system tasks. IEFSDPPT
contains the names of the job step tasks
that are allowed privileged execution. The
table consists of two parts: the first
part contains the 8-character names, padded
with blanks if necessary, of the job step
tasks that will receive the region size
requested~ the second part of the table
contains the names of the job step tasks
that are noncancellable.
If the Region Size Determination routine
finds that the job step task to be executed
is allowed to receive the region size
requested, it turns off the minimum
1See the "Input/Output Operations" portion
of the section nThe Work Queues" in this
publication.

• It stores the region size for the
subtask, if the Initiator Attach
routine (module IEFSD263) is to replace
the region.

initiator region size bit in the LeT. If
the job step task is non-cancellable, the
routine turns off the cancellable bit in
the CSCB and turns on the non-cancellable
bit in the LCT.
[Note: this task is
cancellable only during allocation.]

.. It stores the region size required for
termination processing of the subtask
if a new region is to be obtained.

The Region size Determination routine
then obtains 44 bytes of main storage (from
subpool 253) for the GETPART work table
(GWT).

The GWT (shown in Figure 15) is a work
area for the Region Size Determination
routine and for the Free/Get region
routine. It is also used as the parameter
list for the GETPART macro instruction.
The Region Size Determination routine
initializes the GWT as follows:

Offset
Hex
Dec
0
0

4

• It multiplies the SCT-specified region
size values by 1024. and stores the
results in the low-order three bytes of
the region size fields.

4

4
Region Address Pointer

8
C

1
Request Code
12

Hierarchy

1

Hierarchy
1 Code

1

14

18

lC

16
20
24

24

End-of-List 1
Code or Zero
End-of- List
Code

28

1

32

• It sets the request to X'SO',
indicating an unconditional request,
and it sets the operation code to
X'F7', indicating a "get" region (as
opposed to a "replace" region) request.
• It stores the SCT-specified hierarchy 0
region address (if any) in the original
address specification field.
• It stores the constant X'F7' in the
high-order byte of the BAMINPAR value
field, and it stores the allocation
region size value (from the BAMINPAR
field of the master scheduler resident
data area) in the low-order three bytes
of the field.

Hierarchy 1 Region Size Request (or Zero)

36

3
3
3

Region Size for Termination (or Zero)
1

X 'F7'

3

Region Size for Subtask (or Zero)
1

Figure 15.
• It stores the region address
specifications (if any) in the
low-order three bytes of the region
address fields, and it stores the
appropriate hierarchy code in the
high-order byte of each field.

Hierarchy 0 Region Size Request

1

40

3
3

Reserved

28

Reserved

Region Address Request (or Zero)

Reserved

It stores the end-of-list code in the
high-order byte of the appropriate
region size field, and i t stores a zero
in the high-order byte of the hierarchy
o region size field (if necessary).

2
1\

Region Address Request (or Zero)

Reserved
20

Q

Operation
Code

o Code
10

• It sets the region size and region
address pointers.

4
Region Size Pointer

Original Region Address
Specification (or Zero)

1
BAMINPAR Value

3
3

GETPART Work Table (GWT)

Before performing allocation for a
sUbtask, the initiator must obtain a
minimum initiator size region in either
hierarchy 0 or hierarchy 1. The Replace
Region Interface routine (module IEFSD101)
determines which hierarchy will contain the
minimum size region.
If a hierarchy is specified in the START
command" it is passed to the initiator as
an option. The region sizes requested for
each hierarchy in the EXEC statement are
added. and the total region is obtained in
the hierarchy specified in the START
command.
If no hierarchy is specified in the
START command, the routine determines the
hierarchy from the EXEC statement. The
routine makes the checks shown in Figure 16
and decides the appropriate region size and
hierarchy in which it should be allocated
(shown in the last two lines of the Region
Allocation Decision Table).

Part 3:

Initiating Tasks

67

RO
RI

= 0 (or not specified)
=0 (or not specified)

X X

X

X

X X

X

X

X

X

X

X

X

X

X X

X

RO < MJR

X

X

X

X

X X

X X

X

X

X

X

X X

X

X

MJR < RO < MIR

X

X
X

X

X

X

X

X

X

System task being initiated

X

IEFSD061 in link pack area
Region size allocated in HO
Region size allocated in HI
Where:

0

0

0

X

X

X

X

MIR MIR MJR MIR

0

X

X

0

X

*

0

0

MIR MJR

X X

X

X

X

X

RI > 0

X

X

X

RI >MIR

X X

X

X

MJR< RI < MIR

Job step task being initiated

X

X

RO >MIR
RI < MJR

X

X

RI

X X
X

X

X

X

X

X

X

X

X

*

X

*

0

0

0

0

0

0

MIR

RI

RI

RI RI

RI

X
X

X
X X

X

X

MIR MJR MIR MJR

0

0

RI RI

*
0

RO = Region size requested in hierarchy 0

HO = Hi erarchy 0
HI = Hierarchy I

*

X

*

RO RO
RI

X

X
X

X

X

X

X X

X X

RI = Region size requested in hierarchy I
MJR = Minimum job step region size

X
X

MIR

0

*

*

RO RO

MIR

RO

RO

RI

RI

0

RI

X
0

X
MJR MIR

0

RI

X

X

X

*

*

RO RO RO RO
0

RI

0

RI

= IEFSD061 mayor may not be in the link pack area

MIR = Minimum initiator region size

Figure 16.

Region Allocation Decision Table

If the step is being restarted from a
checkpoint" region addresses are also
specified in the SCT,. If load module
IEFSD061 is in the li,nk pack area, and the
requested region size is less than the
minimum size region, the address specified
in the SCT must be recalculated to ensure
that a minimum initiator size region can be
obtained.
The address is calculated using the
following formula:
A~

= A - (BAMINPAR - S)

IEFSD061 is in the link pack area), the
size necessary ~or termination is placed in
the GWT by the 'Region Size Determination
routine. This value will be used by the
Initiator Attach routine (module IEFSD263)
in later processing.
Next the Region Size Determination
routine stores the address of the GWT in
the LCTPARM3 field of the LCT and passes
control to the Free/Get region routine
(module IEFSD102), which is in the link
pack area. Size routine passes the region
size to the Replace Region routine.

where
= recalculated hierarchy 0 or
hierarchy 1 address
A = the hierarchy region address
specified in the SCT
BAMINPAR = the minimum initiator region
size
s = the SCT specified region size

A~

If load module IEFSD061 is in the link
pack area and the region size requested is
less than the minimum initiator region size
the Region Size Determination routine
determines the region size required for the
subtask by choosing the greater of the
requested size or the minimum job step
region size. The routine places this value
in the GWT for later use by the Allocation
Interface routine.
System tasks are executed in the region
size requested in the EXEC statement. If
the requested size is smaller than the
minimum initiator region size (or the
minimum job step region size if load module
68

OS/360 MVT. Job Management (Release 21)

The Free/Get Region routine (module
IEFSD102) resides in the link pack area.
When it is entered, it frees subpool 0 and
the old region, then inspects the LCTPARM1
field in the LCT to determine whether an
ENQ macro instruction need be issued. If
the field is zero, the job uses only
temporary data sets, or else the current
step is not the first step of the job, and
no ENQ need be issued. If the field is not
zero, the routine issues a conditional ENQ
(RET=USE) specifying data set names. If
the routine is unable to obtain all of the
data sets specified in the ENQ, it issues a
DEQ (RET=HAVE) to free those that are
controlled and writes messages to the
operator indicating the names of data sets
that are not available to 'the job. The
routine then issues a WTOR macro
instruction giving the operator the options
of retrying the ENQ with RET=USE,
cancelling (failing) the job, or waiting
for the data sets to become available
(RET=NONE). The routine then follows the
instructions of the operator's reply.

Region Obtained

Example I: The starting address of the region is recalculated so that even if
the requested region extends to the link pack area, a region of
the size specified in BAMINPAR can be obtained.

Region Obtained

.1

s
~-------

BAMINPAR - - - - - - _
..-

A
Example'2: If requesting a region at the recalculated address Al results in an
error return, a region of BAMI NPAR bytes at address A is obtained.

I~

s

A

BAMINPAR

------I.~I

Al
Example 3: If the link pack area has expanded since the checkpaint was taken,
S bytes may not be available at address A; if supervisor queue
space has expanded, address A may be in the supervisor queue
space. In either case, the step cannot be restarted.
.

Figure 17.

Result of Issuing the GETPART Macro Instruction

When the ENQ is completed (either,
successfully or unsuccessfully), the
Free/Get Region routine frees the main
storage occupied by the parameter list
pointed to by LCTPARM1 and issues the
GETPART macro instruction (execute form),
using the GWT as the parameter list.
Example 1 of Figure 17 shows the effect,
under normal circumstances, of issuing the
macro instruction.
If an error return occurs, it means
either that the requested region is larger
than the total amount of main storage
available for region allocation, or that a
region address was specified and the
recalculated address is in supervisor queue
space.
If all main storage available for
allocation is not sufficient to fill the
request" the Free/Get Region routine stores

an error code (8) in the LCT field
LCTPARM3, and issues a GETPART macro
instruction in the register form to obtain
a minimum job step size region.
If the recalculated region extends into
supervisor queue space, the routine stores
the sCT-specified hierarchy 0 region
address in the hierarchy 0 region address
field of the GWT, then reissues the macro
instruction using the execute form. The
effect of reissuing the GETPART macro
instruction is shown in Example 2 of Figure
17.
If an error return now occurs, it means
that the main storage environment has
changed since the checkpoint was taken.
Either the link pack area, or supervisor
queue space (or both) has expanded.
Example 3 in Figure 17 shows each
situation:
Part 3:

Initiating Tasks

69

• If the link pack area has expanded,
there is not enough main storage
between the specified address (A) and
the link pack area to satisfy the
request,.
• If supervisor queue space has expanded,
the specified address (A) is in
supervisor queue space, and the request
cannot be satisfied.
In either case, the step cannot be
restarted; the Free/Get Region routine
stores an error code (8) in the LCTPARM3
field of the LCT and issues a GET PART macro
instruction (register form) to obtain a
minimum initiator size region.
When it has obtained a region of main
storage, the routine passes control to the
Allocation Interface routine (module
IEFSD162) which is loaded into the new
region.
The Allocation Interface routine
inspects the LCTPARM3 field of the LCT; if
the field indicates that the region could
not be obtained, the routine sets the job
failed bit on in the JCT, then passes
control to the I/O Device Allocation
routine.
Before the initiator attaches a job step
(if load module IEFSD061 is in the link
pack area) or a system task, i t determines
whether the region is to be replaced. The
Allocation Interface routine (module
IEFSD162) checks the GWT to determine
whether the region size requested for the
subtask is smaller than the minimum
initiator region size.
If not, the routine
releases the main storage used by the GWT,
since no replacement is nec~ssary" and
passes control to the TIOT Storage routine.

70

OS/360 MVT Job Management (Release 21)

However,. if the requested region size is
smaller than the minimum initiator region
size,. the routine checks the LCT to
determine which hierarchy contains the
minimum size region and places the region
size needed for the subtask in the
appropriate region size field in the GWT.
It then changes the operation code in the
GWT to X'F6' to indicate a "replace" region
instead of a "get" region and finally
passes control to the TIOT Storage routine.
The actual replacement of the region is
performed in the Initiator Attach routine
(module IEFSD263). This routine" operating
in the link pack area, issues the GETPART
macro instruction in the execute form,
using the GWT as a parameter list. After
the region has been obtained, the routine
checks the termination region size field in
the GWT to determine if a new region size
is required for termination.
(If the
current task is a job step task, the field
will contain zero and no region will be
obtained. However, if the task is a system
task and the size requested for it is
smaller than the minimum initiator region
size, a new region will be obtained for
termination. ) If a new region is not
required, the routine releases the GWT and
attaches the subtask.
If a new region is
required" the routine checks the LCT for
the hierarchy containing the minimum size
region and places the termination region
size in the appropriate region field in the
GWT.
It then changes the operation code to
X'F7' indicating a "get" region.
Upon return from processing a system
task, if a new region is required for
termination, the Initiator Attach routine
obtains the region and releases the storage
occupied by the GWT.

The I/O Device Allocation Interface

When a region has been obtained for the job
step or system task, the Allocation
Interface routine (module IEFSD162) is
entered. It obtains main storage from
subpool 255 for the task parameter list
(specified in the EXEC statement PARM
field) •
If the high-order byte of the track
stacking parameter list is not zero, it
means that track stacking is specified.
The routine obtains a 72-byte register save
area and passes control to the Stack
Initialization routine (see the I/O
Operations portion of the section on The
Work Queues in this publication). When the
track stack has been initialized, the
Allocation Interface routine builds the
allocation parameter list and determines
whether the task is a job step that is
being restarted from a checkpoint by
checking if the program name in the SCT is
IEFRSTRT. If so, the Allocation Interface
routine passes control via a LINK macro
instruction to the DSO Environment Check
routine (module IEFDSOCR).
The DSO Environment Check routine uses
the Queue Management Read routine to bring
the SlOTs for the restarting step into main
storage. It compiles a list of system
output classes and unit types for which DSO
processing is required and compares the
list to the available DSOCBs. If the
appropriate DSOCBs are available, the DSO
Environment Check routine returns control
to the Allocation Interface routine with a
return code of zero.
If additional DSOCBs are required, the
DSO Environment Check routine uses the WTO

macro instruction to inform the operator,
frees the job's resources, uses the Job
suspension routine (module IEFSD168) to
enqueue the job on the hold queue, and
returns control to the Allocation Interface
routine with a return code of eight. The
Allocation Interface routine then passes
control to the Job. Selection routine
(module IEFSD161) to select another job.
If the return code is zero, or if the
task is not a step restarting from a
checkpoint, initiation of the task
continues. The Allocation Interface
routine issues a LINK macro instruction to
pass control to the I/O Device Allocation
routine.
The I/O Device Allocation routine (see
part 6 of this publication) is used as a
subroutine. It checks EXEC statement
condition codes, then analyzes the requests
for I/O devices and data sets, and
allocates devices to the job step or system
task. It issues operator messages to have
any required volumes mounted, and creates
the TIOT. Finally, it returns control to
the Allocation Interface routine, with a
return code that indicates whether the
allocation process was successful.
On the return, the Allocation Interface
routine inspects the return code. If the
return code is not zero, it means that the
task could not be run, either because of
EXEC statement condition codes, or because
the device or data set requirements of the
task could not be satisfied, and control is
passed to the Task Delete routine. If the
return code is zero, the task can be run,
and preparations are made to attach it.

Part 3:

Initiating Tasks

71

Attaching the Subtask

The supervisor routines need certain
information in order to control the
execution of a task. This information is
passed to the supervisor via the ATTACH and
STIMER macro instructions. In addition,
information must be saved for the use of
the Termination routine" and the task's
TIOT must be moved to protected storage.
If a job step is to be attached, the
Allocation Interface routine determines if
DSO processing is to be performed (DSO
processing is bypassed if a system task is
to be attached). First the routine
determines if the DSOCB indicator bit in
the JCT is on and the DSO work bit in the
SCT is on. If so, the Allocation Interface
routine issues a LINK macro instruction to
pass control to the DSO Writer routine
(module IEFDSOWR). This routine writes job
separators and system messages for SYSOUT
classes that are specified for direct
system output processing in this step. It
scans the DSOCB chain for active DSOCBs
assigned to the job. If an active DSOCB
has its job separator bit off, the routine
writes the appropriate job separator in the
DSO data set and turns the job separator
bit on. If the message class bit is on,
the routine writes the accumulated 5MBs and
stores the TTR of the next 5MB in the JCT.

the task is to be failed; the routine posts
the CANCEL ECB with the appropriate
completion code in the CSCB.
If a job step task is being attached,
the routine determines whether the current
step is the first step of the job to be
run. 1 If so, and if joblib or fetch data
sets have been specified, the Allocation
Interface routine obtains main storage from
subpool 253 for any necessary DCBs. The
steplib and fetch data set DCBs are created
and opened as required for the task.
If a job step is being attached, the
Allocation Interface routine (module
IEFSD162) determines whether allowing the
step to use the full amount of time
specified for it would cause the job time
limit to be exceeded: the routine
calculates the amount of job time remaining
by subtracting the job time used from the
job time limit, then compares this figure
to the step time limit. It places the
smaller of the two figures in the timer
work area.
For both a job step and a system task,
the Allocation Interface routine obtains
storage from subpool 253 and builds the
ATTACH macro instruction parameter list
(see Figure 18) and the initiator parameter
list (see Figure 19) '. The routine then
passes control to the Pre-Attach routine
(module lEFSD103).

If the routine encounters job queue
errors while writing the job separators
and/or system messages, it returns control
with a return code of 12, and the
Allocation Interface routine causes
abnormal termination of the job. If the
DSO Writer routine encounters I/O errors,
it returns control with a return code of
four, and the Allocation Interface routine
fails the job. Otherwise, if no errors are
encountered, the DSO Writer routine returns
control to the Allocation Interface with a
return code of zero.
Next, in the case of both a job step and
a system task, the Allocation Interface
routine (module IEFSD162) passes control to
the Table Breakup routine (module
IEFSD514). This routine converts the TIOT
into a series of 176-byte records, and uses
the Queue Management Read/Write and Assign
routines to obtain space for the records
and add them to the task's input queue
entry. When the entire TIOT has been
written out, the routine returns control to
the Allocation Interface routine" which
uses the Queue Management Read/Write
routine to write the JCT and SCT into the
work queue data set. Then the routine
takes a pre-invocation exit if one is
specified in the initiator exit list. If a
nonzero return code results from the exit,
72

OS/360 MVT Job Management (Release 21)

4
Pointer to Program Name

4

Pointer to Fetch or Joblib DCB

4
Pointer to ATTACH ECB

4

Jobstep- Owned Subpoo I

4
Shared Subpool

4
Reserved
Dispatching Priority (DPMOD)

21

Limit Priority
(LPMOD)

11·

I

Reserved

1
8

Blanks

Figure 18.

ATTACH Macro Instruction
Parameter List

1If the job is being restarted, the first
step of the job is not necessarily the
first step to be run. In such cases, the
job lib and fetch DCBs are constructed and
opened before the first step of the job is
started.

Upon entry the Pre-Attach routine checks
.the CSCB to determine whether a system task
or a job step task is being started. If a
system task is being started, the routine
writes the LCT for the task on the job
queue. Next it obtains storage in subpool
253 for a 16-byte parameter area to be used
by the Attach routine (module IEFSD263), an
8-byte area for saving track stacking
information from the LCT, and a 72-byte
area for saving the QMPAs from the LCT.
The routine uses the Table Breakup routine
to convert the LCT to 176-byte records,
which are added to the task's input queue
entry. The write-to-programmer control
block (WTPCB) is updated to point to the
system output QMPA in the JSCB.
The Pre-Attach routine determines the
dispatching priority at which the system
task will be attached. If a DPRTY value is
specified for the system task, the routine
converts that value to a dispatching
priority. If the dispatching priority is
less than or equal to the limit value
(255), the routine places it in the ATTACH
macro instruction list. If the dispatching
priority exceeds the limit value, the
routine places the limit value in the
ATTACH macro instruction list.
If no DPRTY exists, but a PRTY does, the
routine converts the PRTY value to a
dispatching priority. If the dispatching
priority is less than or equal to the limit
value., the routine places it in the ATTACH
macro instruction list. If the dispatching
priority exceeds the limit value, the
routine places the limit value in the
ATTACH macro instruction parameter list.
If no priority is specified, the routine
uses a default of 251.
Pointer to Job Step Parameter List
Pointer to Fetchlib DCB
Pointer to ATTACH Parameter List
Pointer to LCT
Pointer to Initiator TCB
Pointer to TIOT List

Figure 19.

Initiator Parameter List

If a job step task is being started, the
Pre-Attach routine determines the priority
at which the job step will be attached.
If a force priority is associated with
the class from which the job is selected,
and it is equal to or less than the limit
value, it is put into the AT~CH macro
instruction parameter list. If the force

priority is greater than the limit value,
the limit value is put into the ATTACH
macro instruction parameter list.
If no force priority exists, and if a
DPRTY value is specified for the job step,
the Pre-Attach routine converts it to a
dispatching priority in the same manner
that it does for a system task (see above
explanation). If no DPRTY value exists,
the routine converts the PRTY value to a
dispatching priority.
For all tasks, the routine initializes
the ATTACH macro instruction parameter
list, then passes control to the Attach
routine (module IEFSD263).
The Attach routine (module IEFSD263)
resides in the link-pack area,. If SMF is
in the system, the Attach routine first
passes control to the TCTIOT Construction
routine (module IEFSMFAT). This routine
determines the lowest addresses allocated
at the high end of the hierarchy 0 and 1
regions and the highest addresses allocated
at the low end of the hierarchy 0 and 1
regions, then calculates the amount of
unused storage. It stores these figures
and the wait time limit in the TCT. If a
background job is being processed, the
routine places into the TCT the addresses
of both the User Time Limit Exit routine
(module IEFUTL) and the SYSOUT Limit
routine (module IEFUSO). If a foreground
job is being processed, the routine
bypasses the placing of these addresses in
the TCT. Finally, the routine obtains main
storage from subpool 253 and constructs the
timing control task input/output table
(TCTIOT) •
When it has constructed the TCTIOT,
module IEFSMFAT issues a TIME macro
instruction (SVC 11) to obtain a time stamp
that indicates the time at which loading of
the problem program began. After storing
the time stamp in the TCT, the routine
passes control back to the Attach routine
(module IEFSD263). If the task is a TSO
task, the Attach routine exits to TSO
module IKJEFLM. Otherwise, the Attach
routine moves the job step parameter list
from subpool 253 to subpool zero, and frees
the main storage obtained from subpool
zero. The ATTACH macro instruction is then
used to attach the task. If a job step is
attached, the STIMER macro instruction is
used to set the step time interval. The
Attach routine then relinquishes control to
the CPU by Waiting for a POST 'macro
instruction specifying either the cancel,
attach, or dynamic allocation ECB.(The
dynamic allocation ECB is posted by dynamic
allocation routines to permit data ,set
integrity processing.)

I

Part 3:

Initiating Tasks

73

Terminating Subtasks

THE ATTACH AND ABNORMAL TERMINATION
ROUTINES

An executing task is terminated under one
of the following circumstances

In the case of an OUTLIM termination, the
Attach routine (module IEFSD263) receives
control from module IEATLEXT (see the above
explanation of OUTLIM TERMINATION). In the
case of a CANCEL or timer termination, the
POST macro instruction issued as a result
of the CANCEL command or timer expiration
causes an SVC interruption to occur.
Therefore, even though the task may be
executing, it is interrupted. since the
initiator (which was in the wait state
until the post occurred) has a slightly
higher priority than the task, the Attach
routine, operating under the initiator TCB,
is given control first.

• A task requests normal or abnormal
termination" or is abnormally
terminated by the supervisor because of
an error condition~ the attach ECB is
posted, and the Attach routine is given
control.
• A CANCEL command is issued~ the Command
scheduling routine posts the canc,el
ECB, and the Attach routine is given
control.
• A job step fails to return control
before its time interval has expired;
an Asynchronous Exit routine, activated
by the timer, posts the cancel ECB" and
the Attach routine is given control.
• A job step exceeds ~he system output
record limit specified in the DD
statement OUTLIM parameter.

OUTLIM TERMINATION
If a job step exceeds the system output
record limit specified in a DD statement
OUTLIM parameter, an SMF asynchronous exit
routine (module IEATLEXT; see the MVT
supervisor PLM) is given control. IEATLEXT
constructs a parameter list containing the
address of the JMR job name and time stamp
fields and the address of the DCB. Using a
branch and link instruction,'IEATLEXT
passes control to the SMF User 9utput Limit
routine (moduleIEFUSO). which is located
in load module,IEFSD263 in the link pack
area.
The user may supply a routine named
IEFUSO that de,termines whether the job step
is to be terminated. If the step is not to
be terminated, the user-supplied routine
must place the number ,of additional records
to be permitted the step in register 1, and
return control to IEATLEXT with a return
code of 4 in register 15.
If the step is to be terminated, the
user-supplied routine returns control to
lEATLEXT with a return code of 0' in
register 15. If the user does not replace
the IBM-supplied version of IEFUSO, it will
return control with a: code of O. On the
return, lEATLEXT passes control to the
Attach routine.
74

OS/360 MVT Job Management (Release 21>

When the Attach routine receives
control, it determines whether the timer
was set before the task was attached. If
so, the task is a job step, and the routine
issues the TTIMER macro instruction (with
the cancel option) and places the time
remaining to the job step in the timer work
area. Next, the routine inspects the
cancel ECB~ if it has been posted, the
Attach routine prepares to pass control to
the Abnormal Termination routine.
Otherwise, the routine bypasses abnormal
termination processing.
The Attach routine passes control to the
Abnormal Termination routine when a task
must be prevented from further use of
system resources because of a CANCEL
command, or because its time interval has
expired, or because it has exceeded the
number of records specified in a DD
statement OUTLIM parameter. If the
dispatching priority of the task to be
cancelled is less than that of the
initiator, the Attach routine issues a CHAP
macro instruction to make the task's
priority equal to that of the initiator.
The Attach routine then builds a parameter
list to pass to the Abnormal Termination
routine via register 15. The first word of
the parameter list is the address of the
job step TCB. The second word is the
completion code that was posted with the
cancel ECB. The routine also sets the
appropriate abnormal termination indicator
in the CSCB and a bit in the task TCB to
indicate that no STAE routines are to be
executed. Then the routine issues SVC 34
to call the Command Scheduling routine,
which branches to the Abnormal Termination
routine.
When control returns to the Attach
routine, it relinquishes control by issuing
a WAIT macro instruction that specifies the
attach ECB. After the initiator enters the
wait state, the job step is abnormally
terminated. The Attach routine gets
control as a result of a POST macro

"

"

instruction issued when the abnormal
termination is complete.

CHAP macro instruction to return the
initiator's priority to its original level.

If the terminating task is a TSO task,
the Attach routine passes control to TSO
module IKJEFLM.
If the terminating task is
a job step task, the Attach routine saves
the step's TCB flags, the TCT address, the
task completion code in the LCT, and the
dispatching priority. If a system task is
terminating, the routine saves the TCB
flags, the TCT address, the task completion
code, and the dispatching priority in the
parameter area obtained by module IEFSD103.
The routine releases sub pool zero and
issues a DETACH macro instruction to remove
the TCB from the queue and to release the
storage it occupied.

When a task terminates, the initiator
parameter list, and the fetch, steplib, and
job lib DCBs are in main storage areas
previously obtained for them. Needed
information is extracted from the initiator
parameter list, the WTPCB for the task
being terminated is placed in the JSCB
pointed to by the active TCB, the fetch,
steplib, and job lib DCBs are closed, the
main storage areas are released, and the
WTPCB pointer for the initiator is replaced
in the JSCB pointed to by the initiator's
active TCB.

If a system task is terminating, the
routine determines if the task has been
using less than a minimum initiator size
region (or a minimum job step size region
if load module IEFSD061 is in the link pack
area).
If so, the routine obtains a new
region for termination and passes control
to the Post-Attach routine (module
IEFSD10 4).
Upon entry, module IEFSD104 checks the
parameter list that was built by the Attach
routine to determine whether a system task
or a job step task is terminating.
If a
system task is terminating, the routine
obtains storage in subpool 253 and uses the
Table Breakup routine to read the LCT from
the job queue and place i t in the area
obtained in subpool 253. Next the routine
moves the QMPAs and track stacking
information saved in subpool 253 by the
Pre-Attach routine (module IEFSD103) into
the LCT. The routine then updates the
WTPCB with the address of the system output
QMPA.
Next it releases the storage
obtained in subpool 253 by module IEFSD103
for the parameter area, track stacking
information, and QMPAs.
The Post-Attach routine takes a
post-invocation exit if one is specified in
the initiator exit list, passing the LCT.
Then control passes to the Task Delete
routine (module IEFSD164).
THE TERMINATION ROUTINE INTERFACE
The Task Delete routine (module IEFSD164)
is entered from module IEFSD104 whenever a
task terminates.
Its primary function is
to create an interface with the Termination
routine (see part 6 of this publication),
which is used as a subroutine to direct the
disposition of any data sets used by the
task, to execute the User's Accounting
routine, to check JOB statement condition
codes, and to release the I/O devices
allocated to the task.
It also uses the

The Termination routine needs the
information in the JCT, the SCT, the WTPCB,
and the job and step account control tables
(ACTs). The Task Delete routine determines
whether track stacking is specified. If
so, it uses the Stack Initialization
routine to build a stack, then uses the
Queue Management Read routine to bring the
JCT, SCT, and ACTs into main storage. It
places the step time in the step ACT, then
adds the step time to the job ACT, before
writing the ACTs back into the queue data
set. The routine creates a dummy TCB for
termination and initializes it with
information passed from the Attach routine.
It then issues a branch and link
instruction to pass control to the
Termination routine.
When the Termination routine returns
control, the Task Delete routine releases
the dummy TCB.
If a job step is terminating and if the
step is the last step of the job (and the
job is not to be restarted), the Task
Delete routine reinitializes the
write-to-programmer control block (WTPCB)
to zeroes and passes control to the Job
Delete routine.
If the step is not the last step of the
job (and the job is not to be restarted)
the Task Delete routine reinitializes the
WTPCB for use by the next step of the job,
uses the Queue Management Read/Write
routine to bring the SCT for the next step
into main storage, and passes control to
the Region Size routine.
If the job is to be restarted, the Task
Delete routine reinitializes the WTPCB to
zeros, sets the origin class ID field of
the QMPA to indicate that the job is to be
reenqueued in the hold queue (it will later
be moved to an input queue), and passes
control to the Job suspension routine.
Part 3:

Initiating Tasks

7S

Unexecuted steps
When a step cannot be run, the Allocation
Interface routine also passes control to
the Task Delete routine (module IEFSD164).
Certain termination functions must be
performed even though the step was never
attached; system input data sets, for
example, must be deleted. The Task Delete
routine must therefore provide an interface
for the Termination routine identical to
the interface provided when a step has been
executed.
Since no ATTACH macro instruction
parameter list was created, the storage
cannot be released.
Since the SCT and JCT
are already in main storage" they need not
be read in again, and since no ATTACH macro
instruction was issued, there is no job
step TCB. Thus the Task Delete routine
need only create a dummy TCB, and
initialize it. The routine then uses the
branch and link instruction to pass control
to the Termination routine.
When the Task Delete routine regains
control, it uses the FREEMAIN macro
instruction to release the main storage
occupied by the dummy TCB.
If the step is
the last step of the job, the routine
passes control to the Job Delete routine.
If, however, the step is not the last
step, the Task Delete routine updates the
WTPCB for use by the next step, uses the
Queue Management Read routine to bring the
SCT for the next step into main storage,
then passes control to the Region Size
routine.
Job Suspension
When a job is to be restarted or when the
necessary DSO resources are not available,
the Job suspension routine (module
IEFSD168) is used to suspend processing of
the job and to initiate the process of
restarting. When it is entered, the
routine uses the Queue Management
Read/Write routine to update the SYSOUT
class directory (SCD) in the QMPA. If any
DSOCBs were allocated for the job, the
routine uses the DSO Free Block routine
(module IEFDSOFB) to free the DSOCBs. Then
the Job suspension routine issues a DEQ
macro instruction specifying the names of
data sets for which the Replace Region
routine (module IEFSD102) issued an ENQ
macro instruction. Next the routine
reenqueues the JCT on the job queue, or on
the hold queue for DSO, at a priority of 14
for restart. Finally, the routine frees

76

OS/360 MVT Job Management (Release 21)

the main storage occupied by the SCT and
the JCT. If the job is to be restarted,
the routine passes control to the Restart
Activation routine (module IEFVSDRA).
The Restart Activation routine (module
IEFVSDRA) constructs a START command
containing the name of the job to start the
Restart Reader. It issues the MGCR macro
instruction to schedule execution of the
command, then returns control to its
caller, the Job suspension routine. 1
On the return, the Job Suspension
routine frees the WTPCB and the JSCB for
the job being suspended and passes control
to the Job Selection routine. The
Initiator subroutine than continues
processing.

JOB TERMINATION
When the last step of the job terminates,
the Task Delete routine passes control to
the Job Delete routine (module IEFSD166).
This routine uses the Queue Management Read
routine to read the DSENQ table into main
storage. It builds a DEQ macro instruction
parameter list, and issues the DEQ macro
instruction with the RET=HAVE option,
making the data sets referred to by this
job available to other jobs.
It uses the
Queue Management Delete routine to remove
the job from the input queue, and then
releases the main storage occupied by the
JCT and the SCT. It uses SVC 34 to delete
all CIBs on the CIB chain pointed to by the
CSCB for the executed task.
If the delete
bit is on in the CSCB, the routine then
issues SVC 34 to have the Command
scheduling routine delete the job's CSCB
from the CSCB chain, and release the main
storage it occupies. The main storage
occupied by the JSCB and the WTPCB for the
task is released by the Job Delete routine.
Then, if only one job is to be processed
(indicated by the options in the LCT), the
routine sets the internal stop switch in
the LCT on. For non-TSO tasks, module
IEFSD166 issues a CHAP macro instruction
with a priority change value of zero. This
causes the current (or active) initiator to
be placed below all other initiators of the
same priority on the TCE queue. Thus all
initiators of the same priority have an
equal chance to be dispatched.
Finally,
the routine passes control to the Job
Selection routine.
1The Restart Activation routine is also
used in the System Restart routine (see
the section "Common Elements" in this
publication) •

Part 4:

Processing System Output

system output consists of data sets and messages from the operating system to the
programmer. The messages, and pointers to the data sets, are placed in system output
queues by the interpreter and initiator; they are retrieved by routines performing
writing tasks, and written on devices designated by operator command for system output.
There are 36 classes of system output permitted in the operating system, and there is
an output queue that corresponds to each class. The programmer defines a data set as
being a system output data set by using the SYSOUT keyword in the DD statement; he
specifies the class to which it belongs in the parameter associated with the SYSOUT
keyword. For each system output data set, the interpreter assigns s~ace in the
appropriate output queue entry for a data set block (DSB), which points to the data set's
JFCB.
The programmer may specify the class that is to contain operating system messages
pertaining to his job by using the MSGCLASS keyword in the JOB statement. System message
blocks (SMBs) containing interpreter, allocation, and termination messages are built, and
placed in entries for the designated queue. If the programmer makes no message class
specification, the system uses the class designated as the message class when the system
is generated .•
Each output queue entry describes the system output, of the corres~onding class, for
one job. If the entry corresponds to the message class, it contains 5MBs, and may also
contain DSBs, if there are system output data sets in that class; if the entry does not
correspond to the message class, it contains only DSBs.
There are two ways in which system output is written on the appropriate output device:
• The operator may use START commands to initiate direct system output (DSO) processing
for one or more classes.
• The operator may use START commands to establish writing tasks fdr system output
writers.
If DSO processing is started, a job having system output in a 080 class writes data
directly on the appropriate device at job and step initiation and termination. It writes
system output in other classes on a direct access device for processing by system output
writers after the job has completed execution.,
The task of a system output writer (established as a result of a START command
specifying a writer) is to dequeue output queue entries by class, and to write the
messages and data sets on its output device. In its execution of a writing task, the
system output writer (see Figure 20) performs the following functions:
• It initializes itself according to the parameters in the cataloged writer procedure
.and the START command, and reinitializes itself in response to MODIFY commands.
• It u'ses Queue Management routines to dequeue system output queue entries. If there
are no entries in the queue that corresponds to the first class specified in the
cataloged procedure or command, it tries the next. If there are no entries in any of
its classes, the writer enters the wait state until a job terminates, and the
Termination routine enqueues an entry in an output queue corresponding to one of its
classes.
• It uses the GET/PUT Level Data Management routines to read records from sy~tem output
data sets, and to write those records, as well as system output messages, on its
output device. If a User routine has been specified to perform this function, the
writer passes control to the User's routine.

Part 4:

Processing System Output

77

-.J

'"

The Data set Processing subtask includes
the functions of obtaining records from the
input data set, of moving records from
input buffers to output buffers, of
reformatting and translating control
characters as necessary, and of placing
records in the output data set. The term
"records", as used in this section, refers
to the logical records handled by the
GET/PUT (LOCATE) macro instructions. In
the case of a data set consisting of VS
(variable-length spanned) records. a more
precise term would be "segments."
The first routine entered to perform the
Data Set processing subtask is the Standard
Writer routine (module IEFSD087). When it
is entered via the ATTACH macro
instruction, if the output device is a UCS
printer. prior to opening the input data
set the standard Writer routine issues the
LINK macro instruction for the 3211
Processor Module (IEFSDTTE). This
processor routine analyzes the input JFCB
for user UCS/FCB environmental change
requests and dynamically loads the UCS/FCB
buffers for each input data set. On return
from the 3211 Processor routine, the
Standard Writer routine uses the OPEN (type
J) macro instruction to open the input data
set. If the input data set was never
opened by the job step (thus contains no
records), a DCB exit routine sets a switch.
On the return from the Open routine, the
Standard Writer tests the switch: if the
data set was not properly opened, the
Standard Writer routine returns control to
the Attachor routine. thus terminating the
task.
If the data set was properly opened, the
Standard Writer routine examines the input
DCB to determine whether the input data set
contains VS records.
If so, and if the
Spanned Data Sets routine (module IEFSDXXX)
has not already been loaded into main
storage, the Standard Writer routine
obtains main storage for control
information and issues the LOAD macro
instruction. When the routine has been
loaded (or if it was already in main
storage) the Standard Writer routine passes
control to the Spanned Data sets routine
for initialization.

On the return from the Spanned Data Sets
the standard Writer routine tests
for any initialization errors. If an error
occurred, the routine uses the wro macro
instruction to inform the operator, then
closes the input data set, executes the
Transition routine, and returns control to
the Attachor routine. If no error
occurred, or if the Spanned Data Sets
routine is not to be used, the Standard
Writer routine passes control to the
Transition routine .•
routine~

On the return from the Transition
routine (module IEFSD088), the Standard
Writer routine begins its main-line
processing. The routine obtains a record
(or a segment, if VS records are being
processed) from the input data set via a
GET macro instruction (locate mode). The
routine stores the control character,
segment information, and record length,
then resets the pointer to the record so
that it points to the first data character
instead of to the control character.
Finally" the Standard Writer passes control
to the Put routine, and on the return,
issues another GET macro instruction.
The Standard Writer routine continues
the process of obtaining a record, storing
control information, and passing control to
the Put routine., until either an
end-of-data or a permanent I/O error
condition is encountered in the input data
set. In either case, the Standard Writer
routine passes control to the Transition
routine; then closes the input data set,
frees the main storage obtained in the
Spanned Data Sets routine, and returns
control to the Attachor routine.
PROCESSING SYSTEM MESSAGE BLOCKS
The 5MB Processor extracts the messages
from 5MBs and writes the messages to the
writer's output data set.. The 5MB
Processor gets control whenever the Linkor
routine (module IEFSD078) determines that
the record read in the Main Logic Control
routine is an 5MB, and whenever the Data
Set Delete routine (module IEFSD171) of the
DSB Processor reads an 5MB. It returns
control to the Linkor when there are no
more queue entry records to process, and it
passes control to the DSB Handler routine
(module IEFSD085) of the DSB Processor when
the next record to be processed is a DSB.
The first module of the 5MB Processor to
be executed is the 5MB Handler routine
(module IEFSD086) '" When it is first
entered, the 5MB Handler examines the
output UCB device type. If it is a 3211
UCS printer, the 5MB handler determines if
the currently loaded UCS/FCB image-ids are

default images and if data checks are
blocked. If not the 5MB handler issues the
LINK macro instruction to the 3211
Processor Module (IEFSDTTE) to load the
writer default image-ids saved in the
PARLIST parameter list by the
Initialization routine (IEFSD080) and
blocks data checks during 5MB processing.
On return from the 3211 Processor routine,
the 5MB Handler inspects the output data
set DCB to determine whether the output
data set is to contain variable-length
spanned (VS) records. If so, the 5MB
Handler routine passes control to the
Spanned Data Sets routine (module IEFSDXXX)
for initialization.
On the return from the Spanned Data sets
routine, or if it determines that VS
records are not to be processed, the 5MB
Handler passes control to the Transition
routine (module IEFSD088) to ensure that
overprinting will not take place. On the
return, the 5MB Handler extracts the
messages from the 5MB.
If a message is compressed, the 5MB
Handler expands it before storing a pointer
to its location. When the pointer has been
stored, the 5MB Handler passes control to
the Put routine (module IEFSD089). This
routine uses the PUT macro instruction to
place the message in the output data set.
On the return from the Put routine, the
5MB Handler extracts the next message from
the 5MB and passes control back to the Put
routine. When there are no more messages
to be extracted, the 5MB Handler passes
control to the Transition routine.
On the return from the Transition
routine, the 5MB Handler uses the Queue
Management Read/Write routine to bring the
next record from the queue entry into main
storage. If the record is an 5MB, the 5MB
Handler executes the Transition routine and
continues passing the messages to the Put
routine. If the record is a DSB, or if
there are no more records in the queue
entry, the 5MB Handler determines whether
the writer is using the command chaining
access method. If so it pas~es control to
the Command Chaining Access Method routine
to write out any filled (but unwritten)
buffers. On the return, it returns control
to the Linkor routine (module IEFSD078).
If the return from the Put routine
indicates that a permanent I/O error has
been encountered, the 5MB Handler routine
returns control to the Linkor routine
(module IEFSD078).
Part 4:

Processing System Output

85

SERVICE ROUTINES
Because of the similarities in the
processing performed by the Separator
program, by the Data Set Processor and by
the 5MB Processor, they use certain
routines in common:
• The Put routine (module IEFSD089),
which is entered from the Standard
Writer, Transition, and 5MB Handler
routines. The Put routine performs
control character translation, moves
records and messages from input buffers
to output buffers (or uses the Spanned
Data Sets routine to move segments),
and issues the PUT macro instruction,.
If SMF is included" the Put routine
increments the temporary output record
counter in the SMF record for each
record written to the output device.
• The spanned Data Sets routine (module
IEFSDXXX) which is entered from the Put
routine.. The Spanned Data Sets routine
moves variable-length spanned (VS)
record segments from input buffers to
output buffers.
• The Command Chaining Access Method
routine (module IEFSDXYZ), which is
entered via the PUT macro instruction.
The Command Chaining Access Method
routine simulates the processing
performed by the QSAM Put Locate and
Truncate routines, except that it uses
command chaining.
o

The Transition routine (module
IEFSD088) which is entered from the
Standard Writer routine and the 5MB
Handler. The Transition routine
prevents overprinting from occurring in
the transition between queue entry
records.

• The 3211 Processor routine (module
IEFSDTTE) which is entered via the LINK
macro from the Standard Writer routine,
the 5MB Handler, or the Job separator
routine.. The 3211 Processor routine
initializes the UCS/FCB buffers for
3211 UCS printer output prior to the
output of each data set, group of 5MBs
or job separator.
The Put Routine
The Put routine (module IEFSD089) is
entered from the Standard Writer routine,
the 5MB Handler routine,the Job separator
routine, or the Transition routine when a
record (or segment) is available in an
input buffer or work area. When it is
86

OS/360 MVT Job Management (Release 21)

entered, the routine determines whether
control character processing is necessary,
and if so, performs the necessary
processing.
The control characters associated with a
logical.record (or with the first segment
of a VS record) are carriage tape channel
numbers, line spacing indicators, or punch
stacker numbers. An input data set mayor
may not use control characters. If it
does, they are expressed as American
National Standard control characters, or as
machine control characters. Similarly, the
output data set may use either American
National Standard or machine control
characters, or none. Since American
National Standard control characters are
acted upon before a record is printed or
punched, and machine control characters are
acted upon afterward, the Put routine may
have to translate a control character and
associate it with a record other than the
one it originally accompanied. The kind of
processing required depends on the
combination of control character types used
in the input and output data sets, and is
shown in Figure 22.

When it has performed any necessary
control character processing, the Put
routine determines whether it must process
VS records.

If VS records are to be processed, the
Put routine uses the Spanned Data Sets
routine (module IEFSDXXX) to move the
segments from the input buffers to the
output buffers. The Put routine passes
control to the Spanned Data Sets routine
with an indication (in the high-order byte
or Register 15) that a segment is
available. The spanned Data sets routine
passes a return code, which is examined by
the Put routine when it regains control.,
that indicates whether another segment is
requ'ired or· whether a PUT macro instruction
should be issued.

If the records to be processed are not .
VS records, the Put routine does the moving
from input buffer to output buffer. If the
input record is too large for the output
buffer, the Put routine truncates the
record at the low-order end. If a
fixed-length record is smaller than the
buffer, the Put routine left justifies the
record and pads with blanks.
If a permanent I/O error occurs, the Put
routine returns control to its caller.

r-------------T---------T-T-T-T-T-T-T-T-T-'

I Input
I
I

IAmerican IXIXIXI I I I I I I
INational I I I I I I I I I I
I Standard I I I I I I I I I I

I

~---------+-+-+-+-+-+-+-+-+-~

I

~---------+-+-+-+-+-+-+-+-+-~

I Data Set
I Control
I Characters

IMachine

I I I I XI XI XI

I I I

INone
I

I I I I I I IXIXIXI
I I I I I I I I I I

~-------------+---------+-+-+-+-+-+-+-+-+-~

I Output
I
I

IAmerican IXI I IXI I IXI I I
INational I I I I I I I I I I
I Standard I I I I I I I I I I

I

~---------+-+-+-+-+-+-+-+-+-~

I

~---------+-+-+-+-+-+-+-+-+-~

IData Set

IMachine

I Control
I Characters

INone
I

I IXI I IXI

I IXI

I

I I IXI I IXI I IXI
I I I I I I I I I I

~-------------~--------+-+-+-+-+-+-+-+-+-~

I

DO ACTION#

1112141311141516111

~-----------------------~-~-~-~-~-L-L-L-~-~

Actions:
I
1. No control character processing.
I
2. Use the control character from the I
current record for the previous
I
record.
I
3. Use the control character from the I
previous record for the current
I
record.
I
4. Do not use control characters for
I
output records.
I
5. Generate an American National
I
Standard control character for each I
output record.
I
6. Do Action 5. then do Action 2.
_________________________________________
JI

Figure 22.

System Output Writer Control
Character Processing

The Spanned Data Sets Routine
The Spanned Data Sets routine (module
IEFSDXXX) is used by the Put routine when
either the input data set or the output
data set (or both) consists of
variable-length spanned (VS) records. The
routine is entered each time an input
buffer (or work area) becomes available,
and each time a PUT macro instruction makes
an-Output buffer available. It moves
records (or segments) from the input
buffers (or work area) to the output
buffers. If the input data set has
American National Standard control
characters and the output data set has
machine control characters, the routine
uses a work area t~ hold a complete record
until the control character from the next
record is available.
If the work area is not required, the
Spanned Data Sets routine moves the
contents of the input buffer directly to
the output buffer. When the output buffer
is full" the routine returns control to the
Put routine to have a PUT macro instruction

issued. When the input buffer is empty.
the Spanned Data Sets routine returns
control to the Put routine. which returns
control to its caller to obtain another
buffer.
If the work area is used, the Spanned
Data Sets routine fills it from the input
buffer. The work area is as large as the
largest record to be handled by the
routine. and if more than one input buffer
is required to fill the work area, the
routine returns control to the Put routine
with a GET request. The Put routine
returns control to its caller, which
obtains another input buffer (or generates
another record), and passes control to the
Put routine. The Put routine then passes
control to the spanned Data Sets routine,
which moves the contents of the input
buffer (or the generated record) to the
work area.
When the first segment of the next
record is available. the Spanned Data Sets
routine fills the output buffer from the
work area, then returns control to the Put
routine to have a PUT macro instruction
issued. If more output buffers are
required to empty the work area, the
routine continues to request PUTs until the
work area is empty.
The Command Chaining Access Method Routine
The Command Chaining Access Method routine
(module IEFSDXYZ) simulates the processing
performed by the QSAM Put Locate and
Truncate routines. The difference is that
the Command Chaining Access Method routine
uses command chaining to write one string
of up to nine buffers with a single lOB and
a single EXCP macro instruction.
If ten or
more buffers are specified. the routine
writes them as two strings, but uses one
lOB.
The Command Chaining Access Method
routine is entered under the following
circumstances:
• Via a PU'I' macro instruction issued in
the Put routine (module IEFSD089).
• Via a branch instruction from the
Attachor routine (module IEFSD070)
after each data set has been processed.
• Via a branch instruction from the 5MB
Handler routine when it determines that
the next record to be processed is a
DSB, or that there are no 'more records
in the queue entry.
• From the Linkor routine (module
IEFSD078) after the Separator program
has been executed.
Part 4:

Processing System Output

87

When it is entered via a PUT macro
instruction, the Command Chaining Access,
Method routine determines whether all of
the'buffers in a chain have been filled,
and if so it writes them to the output data
set. In any case, it returns control to
its caller with a pointer to the next
available buffer.
When it is entered via a branch
instruction, the routine breaks the CCW
chain at the CCW corresponding to the last
buffer filled. It then uses the EXCP macro
instruction to write the filled buffers to
the output data set, and returns control to
its caller.
The Transition Routine
The Transition routine (module IEFSD088) is
used by the DSB Processor, the 5MB
Processor, and the separator program to
perform the following functions:
• It prevents overprinting from occurring
when a data set using American National
Standard control characters is followed
by a data set u~ing machine control
characters.
• It causes extra records to be printed
or punched at the beginning of a data
set so that the initial control
character will be effective.
• It causes extra records to be printed
or punched at the end of a data set so
that the final control character will
be effective.
• It causes extra records to be printed
or punched at the end of a data set or
a group of messages so that the last
significant record will be written
before a PAUSE option takes effect.
The Transition routine is entered from
the Standard Writer routine before a data
set is processed and again when an
end-of-data condition is encountered. It
is entered from the 5MB handler routine
before and after each 5MB is processed, and
it is entered from the Separator program
before and after the separator records have
been written.
When it is entered, the Transition
routine determines the type of processing
required by making the decisions shown in
Figure 23, then performs the required
processing. Each time it is required to
write a record to the output data set, the
Transition routine uses the Put routine
(module IEFSD089). When it has completed
its processing, the routine returns control
to its caller.
88

OS/360 MVT Job Management (Release 21)

3211 Processor Routine (IEFSDTTE)
This module is entered only if the output
device is a 3211 Printer and some change to
the UCS/FCB environment has been
predetermined. A complete analysis is
performed to identify those parameters
requiring change as determined from caller
requests for parameters which differ from
the presently established environment. The
input JFCB entry is first checked for a
change request. This is followed by a test
for valid association with prerequisite
parameters or the need to secure default
parameters. The input request is then
compared with the present parameters as
defined in the output UCB. If the input
request differs from the present output,
the input request is transferred either
from the input JFCB or from PARLIST (in the
case of default parameters) to the SETPRT
list in core. The SETPRT macro is then
executed to permit data management to
reload the UCS/FCB buffer(s), block data
checks, load character set images in the
folded mode or request operator
verification of images or alignment of
forms. The return codes in register 15
reflecting the status of the UCS/FCB load
are used as offsets into a branch control
table to select an input error message for
sysout to the printer or an output message
for a WTO to the operators' console. The
System Output Writer PUT routine in
IEFSD089 is used to output the error
message to the printer. If an input error
occurred, a switch is set in the WKSOR
communication region to forward a request
for input data set skip and proceed to the
next input data set. An output error
return code in register 15 results in
writer termination.
This routine cannot be used with a
user-written writer routine for the
following reasons.
• It utilizes the standard 2-register
interface with IEFSD089 to pass the
start and length of a line of print and
printer control characters (the sysout
printer error message) to the Standard
Writer PUT routine for output.
• It requires the use of the WKSOR work
area to locate the PARLIST
communication area in which default
image-ids are saved and to pass input
error indicators to IEFSD087 to effect
skipping of data sets in error and
advancement to the next data set. This
WKSOR area is got ton and initialized by
the Standard Writer Routine IEFSD087.
A user-written writer routine has the
SETPRT macro facility available whereby the
required UCS/FCB environment can be user
established at will.

IEFSDTTE is entered from:
• IEFSD086 for loading of default images
and to block data checks for 5MB's.
• IEFSD087 to process UCS/FCB
environmental changes for each input
data set.

r---------------------T-T-T-T-T-T-T-T-T-T-'
IOutput for Printing
IYIYIYIYIYIYIYIYI 1 1
~---------------------+-+-+-+-+-+-+-+-+-+-1

IOutput for Punching

1 1 1 1 1 1 1 1 IYIYI

~-----------T---------+-+-+-+-+-+-t-+-+-+-~

1Input
1Control
1Character

IAmerican IYIYIYIYI 1 1 1 1 1 1
INational 1 1 1 1 1 1 1 1 1 1 1
IStandard 1 1 1 1 1 1 1 1 1 1 1

1

~---------+-+-+-+-+~+-+-+-+-+-~

1

1Machine

1 1 1 1 I YI YI YI YI

1 1

~-----------+---------+-+-+-+-+-+-+-+-+-+-~

• IEFSD094 for loading default images.
Control is returned to the calling
routine or passed to IEFSD089 to output
error messages.

I Output
I Control
I Character

IAmerican IYI 1 1 IYIYI 1 IYI 1
INational 1 I I I I I I I I I I
IStandard 1 I I I I I I 1 1 I I

I

~---------+-+-+-+-+-+-t-+-+-+-~

I

~-----~---+-+-+-+-+-+-+-+-+-+-~

1

I None

I

I Machine

I IYIYI

I I IYI

I IYI

1 I I I Y I I I I YI I I

~-----------i---------+-+-+-+-+-+-+-+-+-+-1

Istart Transition

I IY I I I YI

1 I I I I

~---------------------+-+-+-+-+-+-+-t-+-+-~

lEnd Transition

IYI

IYIYI

IYIYIYIYIYI

~---------------------+-+-+-+-+-+-+-+-+-+-1
I Do Action #
111213141516161417181
~

_____________________

i_i_i_i_i_~_L_L_L_L_~

IActions:
I 1. Print a line of blanks with American
1
National Standard Suppress c.c.
2. Print a line of blanks with American
Na tional Standard Space 1 c .• c.
3. Put a Machine Space 1 c.c.
in the
previous record and do Action 6.
4. Print a line of blanks with no c.c.
5. Put an American National Standard
Space 1 c.c. in the current record.
6.
Print a line of blanks with Machine
Suppress c.c.
7. Punch 3 blank records~ each
containing an American National
Standard Stacker 1 c.c.
8. Punch 3 blank records, each
containing a Machine Stacker 1 c.c. JI
L- ________________________________________
Figure 23.

Transition Routine Decision
Table

Part 4:

Processing System Output

89

90

OS/360 MVT Job Management (Release 21)

Part 5:

Command Processing

Command processing consists of command scheduling and command execution.. Command
scheduling is the synchronization of command execution with other events in the system;
it is accomplished when the Command Scheduling routine (SVC 34) stores the command, and
notifies a job management routine that the command is available for execution. Command
execution is accomplished by various Job Management routines as part of their performance
of existing system tasks, or by Job Management routines performing tasks established in
response to the command.
Operator commands may be read from any of the units designated as console input
devices, they may be read from a TSO terminal, or they may be placed in an input stream
and read by an interpreter as a part of a reading task. In addition, commands may be
assembled into the system when i t is generated; these commands are executed after initial
program loading, as part of system initialization.
The reading of commands from console devices is described in the MVT supervisor
Program Logic Manual. The reading of commands from a TSO terminal is described in the
TSO Command Processor Program Logic Manuals. The reading of commands by the interpreter
is described in the section on The Interpreter Routine in this publication.
The "Command Scheduling" portion of this section discusses the initialization of the
Command Processing routine (SVC 34) and the techniques it uses f or storing commands,
notifying the responding routine that a command is to be processed, and issuing error
messages. The "Command Execution" portion discusses the commands themselves: the way
they are processed in the SVC 34 routine, and the way they are processed by special
command execution tasks.
Command Scheduling

Commands must usually be executed at
distinct points in the cycle of events in
the system. Since the operator cannot
synchronize the execution of his commands
with the system, the execution of commands
must be scheduled by the system. Command
scheduling is the synchronization of
command execution with task processing.
Commands must first be stored--compactly,
conveniently, and chronologically. An
appropriate system routine must then be
notified that a command is awaiting
execution.
The Command Scheduling routine (SVC 34)
condenses and stores command verbs and
operands, and notifies the appropriate
responding system routine. Many commands
are stored in command scheduling control
blocks (CSCBs) that are chained together;
the Command scheduling routine manipulates
the CSCB chain as required.
The Command Scheduling routine, shown in
Figures 24 and 45, is entered whenever an
SVC 34 is issued by routines performing the
console and TSO terminal communications,
reading, initiating, and writing tasks.
The routine is used whenever there is an
operator command ready for scheduling,
whenever an executing job step is to be
canceled, and whenever a CSCB must be
deleted from the chain and the CIB or~ in

the case of TSO, a LOGON communications
element (LCE) " is to be added or deleted
from the chain. This section discusses
only the command scheduling functions; the
other functions are discussed in the
section on the initiating task.
INITIALIZING THE COMMAND SCHEDULING ROUTINE
The first module of the Command Scheduling
routine (SVC 34) to be executed is the STAE
Environment Creation routine (module
,IGC0003D) .1, (For a detailed discussion of
the STAE facility, see the MVT supervisor
PLM.) This routine is entered twice each
time svc 34 is issued. When it is entered
following the issuing of SVC 34, the
routine creates the STAE environment. When
a failure occurs during execution of the
command er master scheduling tasks, the
routine is entered again. This time it
passes control to the STAE Exit routine to
prepare for retry.
When the routine receives control, it
first checks register 1. If register 1
points to the characters "STAE", the
routine has been entered because of a
1Throughout the discussion of the Command
Scheduling routine (SVC 34), load module
names will be used in order to indicate
transient SVC routines that are used by
the master scheduler.
Part 5:

Command Processing

91

STOP
STOPMN
MODIFY

CANCEL

DUMP
HOLD

MOUNT
QUIESCE
RELEASE
RESET
START

DISPLAY

MSGRT

CONTROL

MONITOR

Note: The Message
Module blocks represent
either IGC0503D or
IGG2103D.

Figure 24.

92

Control Flow in the Command scheduling Routine (Part 1 of 2)
(Part I -- See Figure 45 for Part II)

OS/360 MVT Job Management (Release 21)

SET

TOD Clock

MODE STATUS

MODE

HALT
SWITCH

UNLOAD

VARY

Note: The Message Module blocks represent
either IGC0503D or IGG2103D.

Figure 24.

Control Flow in the Command Scheduling Routine (Part 2 of 2)
(Part I -- See Figure 45 for Part II)

Part 5:

Command Processing

93

failure during execution of the command or
master scheduling tasks. Therefore, ,the
routine uses an XCTL macro instruction to
pass control to the first load of the STAE
Exit routine (module IGC5103D),.
If register 1 does not point to "STAE",
the routine checks register O. If register
o does not point to "STAE", this is the
first entry to the routine for this issuing
of SVC 34. The routine saves registers 0,
1, 5, and 15 in the extended save area
(XSA) of the supervisor request block
(SVRB) that was created when SVC 34 was
issued,. Then the routine places "STAE" in
the XSA and places the address of nSTAE n in
register o. Finally, the routine issues
SVC 34.
If register 0 points to "STAE n , this is
the second entry to the routine for this
issuing of SVC 34,. The routine establishes
the STAE e.nvironment by placing the STAE
Exit Linkage routine in the XSA.. If SVC 34
was issued in response to a conunand" the
routine stores the command verb with the
STAE Exit Linkage routine in the XSA.
Then, the routine restores registers 0, 1,
and 5 to their original condition upon
entry to the routine and places the
contents of register 15 in the sixth word
of the second XSA. Finally, the routine
passes control via an XCTL macro
instruction to the Chain Manipulation
routine (module IGC0303D).
When the Chain Manipulation routine is
entered,.. it tests register 1:
• If register 1 is posi ti ve" SVC 34 has
been entered to schedule the execution
of a command.
In this case, the Chain
Manipulator routine uses the XCTL macro
instruction to pass control to the
Command Translator routine (module
IGC5403D) •
• If register 1 is not positive, the
routine tests both register 1 and
register 0 and performs the indicated
processing as follows:

r----------T----------T---------------,
IRegister 11Register OIProcessing
I
~----------+---------~+---------------1
I Negative I Zero
I CSCB processing I
I Negative I Negative ISet CIB count I
I
I
I in CSCB
I
I Negative I Positive ICIB processing I
I Positive IFree CIB chain I
I Zero
I Negative I Set CIB count I
I Zero
IL _______ __ I _________ I ______________
to zero
__JI
~

~

When the Command
entered to schedule
command, register 1
list (on a halfword
94

~

Translator routine is
the execution of a
pOints to a parameter
boundary) consisting of

OS/360 MVT Job Management (Release 21)

a length field and a buffer containing the
command, and register 0 indicates the
source of the command.
• If register 0 is positive and the high
order bit of the lower half word is on,
register 0 contains the ID of the TSO
terminal through which the command was
issued (TJID).
Register 0

r----------T---T----------,

IL-_________ I ___
1 I __________
TJID
JI
~

~

31

15

0

The Command Translator routine places
the terminal ID in the TJID field of
the extended save area (XSA) of the
supervisor request block (SVRB) -- see
Figure 26.
• If register 0 is positive and the high
order bit of the lower half word is not
on, register 0 contains the UCMI
corresponding to the console through
which the command was issued, or a
X'OO' showing that the command was
issued by a system routine.
Register 0

r-------T---T-------------,
I 0 IUCMI or X'OO'I

I _______
L
31

~

__ _____________ J
~

15

0

In systems with the multiple console
support (MCS) option, the Command
Translator routine determines whether
the command is to be added to the hard
copy log. If so, it issues a WTO macro
instruction with the MCSFLAG=HRDCPY
parameter, and stores the contents of
register 0 in the UCMI field of the
XSA.
In systems without MCS, the routine
stores zeros in the UCMI field of the
XSA •
• If register 0 is negative, the SVC was
issued in the Interpreter routine. In
this case, the register contains the
command authorization field from the
PARM field of the reader procedure EXEC
statement.
In systems with MCS, the Command
Translator routine determines whether
the command is to be added to the hard
copy log. If so, it issues a WTO macro
instruction with the MCSFLAG=HRDCPY
parameter and stores a X'SO' in the
UCMI field of the XSA. Then it stores
the contents of the register in the
module interface work area.
In systems without MCS, the routine
stores a X'SO' in the UCMI field of the
XSA.

When it has updated the XSA, the routine
translates any lowercase EBCDIC Characters
in the command (except those enclosed in
parentheses) into uppercase EBCDIC
characters and uses the XCTL macro
instruction to pass control to the Router
routine.

Ptr to DCB for XCTL

8
Name of Next Module

Verb
Code

Ptr to SVC 34 Porm Li st

Code

3

I

3

I
Error

The Router routine (module IGC0403D)
scans the command buffer for the command
verb, and uses the verb to find the
appropriate entry in the verb table (see
Figure 25). If there is no verb table
entry corresponding to the command verb,
the command is invalid; the Router routine
uses the XCTL macro instruction to pass
control to a message routine that informs
the operator and returns control to the
supervisor.

4

4
Ptr to Name of Next Module

Ptr to I st Operand
Char in Parm List

8
Command Verb

8
Module Interface Work Area

2

I
UCMI

l
Reserved \

15

TJID

Reserved

I

Command Verb

Verb Abbreviation

~

Verb Index Code - - - - - - - '

Figure 26.

Extended Save Area of SVRB as
Used for passing Information
Between Modules of the SVC 34
Routine

Module Branch Offset _ _ _ _ _...1
MCS Command Group _ _ _ _ _ _ _ _.....J

Figure 25.

Verb Table Entry

If the command is valid, the Router
routine determines whether the source has
the authority to issue the command.
If the
UCMI field of the XSA contains x'OO' (the
source is a system routine or the system
does not contain the MCS option) any valid
command is authorized. If the UCMI field
contairis X'SO', the command source is the
input stream, and the command authorization
is in the module interface work area of the
XSA. The routine compares the
authorization to the MCS command group
field in the verb table entry. Otherwise,
the routine uses the UCMI to find the
appropriate unit control module entry, and
compares the command authorization to the
MCS command group field in the verb table
entry.

If the source is not authorized to issue
the command, the Router routine uses the
XCTL macro instruction to pass control to a
message module that informs the issuing
operator and returns control to the
supervisor.
If the source is authorized to issue the
command, the Router routine stores a X'OO'
in the UCMI field of the XSA (unless the
command is a VARY command) and uses the
XCTL macro instruction to pass control to
the module specified in the verb table
entry.
If the command is a VARY command, the
authorization necessary depends on the
second operand; the router routine
therefore assumes that no authorization is
necessary, and the authorization is checked
in a subsequent module.

Part 5:

Command Processing

95

STORAGE AND NOTIFICATION
The Command scheduling routine uses several
techniques for storing commands and .
notifying a responding routine. Figure 27
lists the commands alphabetically (within
storage technique), and also shows the
method of notification and the name of the
responding routine. The storage techniques
are discussed below:
• Creating a New CSCB: When the
execution of a command as part of an
existing system task is not feasible
(see task-creating commands), a new
command execution task must be
established. The CSCB Creation routine
(module IGC0803D) determines whether
the command is one that will be
executed by the master scheduler
(DISPLAY A, DISPLAY U, DISPLAY
CONSOLES, DISPLAY e,K, DISPLAY M,
DISPLAY PFK, MONITOR A, QUIESCE. VARY
CH, VARY CPU, and VARY STOR). If the
command is not one of these commands,
the routine builds a CSCB to contain
the command, encodes the command, and
stores it in the CSCB.
If the command is one of those executed
in the master sheduler region. the CSCB
Creation routine determines whether it
can be executed. Because of storage
limitations, only one such command can
be executed at a time, except that in a
system that includes multiprocessing as
many as two VARY STOR OFFLINE commands
can be executed concurrently with one
other command.

96

command (via a POST macro instruction),
it scans the chain and attaches the
task of executing the command.

• updating an Existing CSCB: When a
CANCEL command is to be executed as a
part Of a specific, currently existing
system task (a job that has been
selected, a TSO job, or the subtask of
a system output writer), the CANCEL
Processor routine (module IGC3703D)
marks the CSCBthat corresponds to the
task and issues a POST macro
instruction to the ECB in the CSCB.
The executing routine tests the bits in
the CSCB, and executes the command.
• Chaining the CIB: When a command
(other than the CANCEL command) is to
be executed as a part of a specific,
currently existing system task, the
stop and Modify Scheduling routine
(module IGC0703D) builds a command
input buffer (CIB) in subpool 245 from
the command image and adds the CIB to
the CIB chain. Routines that execute
the task inspect the CIB chain and then
execute the command(s).
• Using a System Table: When the command
is to be executed by a specific routine
(performing any existing system task),
the operands are encoded and stored in
system tables. The responding routine
tests bits in the tables during its
normal operating cycle, and executes
commands as indicated.

If the command cannot be executed, the
CSCB Creation routine passes control to
a message routine that informs the
operator and returns control to the
supervisor. If the command can be .
executed, the. CSCB Creation routine
builds a CSCB to contain the command,
encodes the command, and stores it in
the CSCB.

• Using General Registers: When the
Execution routine can operate as a part
of the Command scheduling routine, and
when the information in the operands of
the command can be placed in general
registers, this is the technique used.
Notification consists of passing
control to the Execution routine.

When a CSCB has been constructed, it is
marked "pending" and added to the chain
of CSCBs, where it becomes a
communications region between the
Command Scheduling routine and the
master scheduler. It is the master
scheduler's task to attach system
tasks; when it is notified of the

• Building a Parameter List: When the
Execution routine can operate as a part
of the same task as the Command
Scheduling routine, but the operand
information cannot be placed in general
registers, a parameter list is
constructed. Notification is
accomplished by passing control to the
responding routine.

OS/360 MVT Job Management (Release 21)

r-------------T-------------------------T------------------T----------------------------,
I
I
I
I
I
I

Storage

I

Command

I

Notification

I

Initial Responder

I

.-------------1-------------------------+------------------+----------------------------i
I
CANCEL (job in queue)
I
I
DISPLAY A
I
DISPLAY C,K
I
DISPLAY CONSOLES
I
DISPLAY jobname
I
I
I
DISPLAY M
I
DISPLAY N
I
I Create
I
new
DISPLAY PFK
I
I
CSCB
DISPLAY Q
DISPLAY U
DISPLAY USER3
DUMP
HOLD
MONITOR A
MOUNT
QUIESCE
RELEASE
RESET
SEND3
START
VARY CH
VARY CPU
VARY STOR
I
.-------------1-------------------------~
I
I CANCEL (job selected/ I
I Update
I
TSO session)
I
I
CSCB
.-------------------------~
I
I CANCEL wtrdevice
I
.-------------1-------------------------~
I Chain CIB I MODIFY
I
I
I STOP
I

I

I II
I

I

POST

I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I

Master Scheduler

I

.----------------------------i
I
Initiator
I

I

I

.----------------------------i
I
Writer
I
.----------------------------i
I
I
I

Named task

I

.-------------1-------------------------+------------------+----------------------------i
I MONITOR DSNAME
I
I
Initiator
I
I MONITOR JOB NAMES
I MONITOR SESS3
I MONITOR SPACE

Update
system
tables

I
I
I
I

I MONITOR STATUS
.-------------------------~
I MODE
I
I SET PROC
I
I SET Q
I
.-------------------------~
I STOPMN~ DSNAME
I
I
I STOPMN~ JOB NAMES
I STOPMN~ SESS3
I
I STOPMN~ SPACE
I
I STOPMN~ STATUS
I
I UNLOAD
I
I VARY unit
I

I

I

I

I
I

I
I

I

I

I

.----------------------------i
I
I
Inspect
tables

I

I

.----------------------------~

I
I
I
I
I

I
I
I
I
I
I

Initiator

I

I
I

.-------------------------+------------------+----------------------------i
I SWITCH
I
SVC 83
I
SMF SVC Routine
I
.-------------------------+------------------+----------------------------i
I SWAp2
I
I
I

I VARY PATH2
I
POST
I
Master Scheduler
I
.-------------~-----------------------~------------------~----------------------------i
11See the MVT Supervisor Program Logic Manual.
I
\2See the Input/Output Supervisor Program Logic Manual.
I
13 See the TSO Command Processor Program Logic Manuals.
I
I"See
the "Summary of Amendments" for Release 21.
L______________________________________________________________________________________
lI

I Figure

27.

Command Storage and Notification Techniques (Part 1 of 2)

Part 5:

Command Processing

97

r-------------T-------------------------T------------------T----------------------------,
I
I
I
I
I
Storage
I
Command
I
Notification
I
Initial Responder
I
~-------------t-------------------------+------------------+-----------~------------~---~
i
I DISPLAY R
I
I
I

I

I
I
I
I
I Load
I general
I, registers
I

~-------------------------+------------------i

I
I
~-------------------------+------------------i
I
I DISPLAY T
I
TIME
I
I
~-------------------------+-----~------------i
I
I SET CLOCK
I
STlMER
I Timer Maintenance routine1. I
~-------------------------+------------------i
I
I SET DATE
I
XCTL
I
I

I

I

DISPLAY SQA

I

~-------------t-------------------------+------------------+----------------------------~
I Build
I HALT1.
I
SVC 76
I Statistics update routine 2 I
I parm
~-------------------------+--------------~---+----------------------------~
I list
I LOG
I
WTL
I
Log routine1.
I
~-------------~------------------------~------------------~--------------------------~

l1.see the MVT supervisor Program Logic Manual.
I
12see the Input/Output Supervisor Program Logic Manual.
I
13see the TSO Command Processor Program Logic Manuals.
I
IL_______________________________________________________________________________________
.. see the "summary of Amendments" for Release 21..
JI

I

Figure 27.

Command Storage and Notification Techniques (Part 2 of 2)

ERROR MESSAGE PROCESSING

the address of the STAE Exit Linkage
routine from the STAE control block and
passes control to the routine. The Exit
Linkage routine issues SVC 34 with register
1 pointing to the characters "STAE" in main
storage.

Validity checking is performed in all
modules of the Command Scheduling routine.
If an error condition is encountered in any
module, a code representing the error is
placed in the extended save area of the
SVRB (shown in Figure 28) and control is
passed to the appropriate Error Message
routine (module IGC0503D or module
IGG2103D). The routine uses a WTO macro
instruction, or a TPUT macro instruction if
the command was issued from a TSO terminal,
to inform the operator of the error
condition, then returns control to the
supervisor.

I

When the first routine (module IGC0003D)
of SVC 34 receives control, it checks
register 1. When it finds that the
register points to "STAE", it uses an XCTL
macro instruction to pass control to the
first load of the STAE Exit routine
(modules IGC5103D, IGC5203D, IGC5303D).

4
Record Header

8

Message ID

8
Command Verb

20
I..

1

Figure 28.

Pre-formatted Message

-

Extended Save Area of SVRB as
Used for Message Processing in
the svc 34 Routine

STAE EXIT ROUTINES
If,a STAE environment is in effect and a
failure occurs during the command or master
scheduling tasks, ABTERM processing obtains
98

OS/360 MVT Job Management (Release 21)

J

If the SYS1.DUMP data set is available,
module IGC5103D provides a dump of the
entire main storage by means of the SVC
dump facility. Then it sets a code for the
third load module of the STAE Exit routine
(module IGC5303D) " which will issue a
message indicating that the dump was
provided.
Next, module IGC5103D scans the
following control blocks for errors: the
command scheduling control block (CSCB),
the command input buffer (CIB), the group
control block (GCB) " and the LOGON
communication element (LCE).
If a chain
pointer is found to be in error (i.e., it
points out of the system queue area or to
other than a doubleword boundary), the
routine truncates the chain by setting the
pointer to zero. The next pointer is then
checked. When all the control blocks have
been checked, module IGC5103D determines
whether an ENQ macro instruction had been
issued specifying the GCB chain.
If so, it
releases the chain using a DEQ macro
instruction. Then module IGC5103D passes
control to module IGC5203D.

Module IGC5203D scans the reply queue
element (RQE) chain and truncates it if any
block in the chain is not in the SQA or is
not on a doubleword boundary. Next, if the
Display Active routine (module IEEVDSP1)
was processing at the time of the failure,
module IGC5203D frees the main storage used
by the routine and turns off the display
active bit in the M/S resident data area.
After all of this processing is completed,
module IGC5203D passes control via an XCTL
macro instruction to the third load of the
STAE Exit routine (module IGC5303D).
For each error that modules IGC5103D and
IGC5203D find, module IGC5303D issues a
message to the console indicating the
failing component, the error that was
found, and the action, if any., that was
taken. The routine also issues a message
indicating the command that was being
processed at the time of the failure. if
the command can be determined.
If the
command was from a TSO terminal, the
routine issues the messages to the terminal
as well as to the console.

If the error occurred during the master
scheduling task, module IGC5303D returns
control to the Master Scheduler STAE Retry
routine through the ABEND processing. If
the error occurred during the command
scheduling task (SVC 34), the routine
places the Command Scheduler STAE Retry
routine in the XSA and passes control to it
via ABEND.
STAE RETRY ROUTINES
The Command Scheduler STAE Retry Routine:
This routine is part of module IGC5303D.
Placed in the XSA by module IGC5303D, the
routine frees the main storage occupied by
the ABEND/STAE work area and returns
control to SVC 34.
The Master Scheduler STAE Retry Routine:
This routine is part of the master
scheduling task. After receiving control
from ABEND processing, the routine frees
the ABEND/STAE work area and branches to
the entry point of the Master Scheduler
Wait and Attach routine (module IEEVWAIT).

Part 5:

Command Processing

99

Command Execution

The execution of a command is the
performance of the function specified in
the command. These functions are performed
by Job Management routines, either as new
tasks established by the master scheduler,
or as parts of existing system tasks.
Commands are classified, accordingly, into
two categories: task-creating commands,
and existing-task commands. Figure 29
lists in alphabetical order the commands
whose execution is discussed in this
publication.

I

r-------------------T---------------------,
I TASK-CREATING
I EXISTING-TASK
I
I COMMANDS

I COMMANDS

I

f-------------------+---------------------~

CANCEL
( job in queue)
DISPLAY A
DISPLAY C,K
DISPLAY CONSOLES
DISPLAY jobname
DISPLAY M
DISPLAY N
DISPLAY PFK
DISPLAY Q
DISPLAY U
DISPLAY USER
DUMP
HOLD
MONITOR A
MOUNT
QUIESCE
RELEASE
RESET
SEND
START
VARY CH
IVARY CPU
IVARY STOR

CANCEL ( job selected)
CANCEL (TSO user>
CANCEL .wtrdevice
CONTROL
DISPLAY R
DISPLAY SQA
DISPLAY T
HALT
MODE
MODIFY
MONITOR DSNAME
MONITOR JOBNAMES
MONITOR SESS
MONITOR SPACE
MONITOR STATUS
MSGRT
SET
I STOP
STOPMN1 A
STOPMN1 DSNAME
STOPMN1 JOB NAMES
STOPMN1 SESS
STOPMN1 SPACE
STOPMN1 STATUS

I

S~P

I
I
I
I
I
I
I

SWITCH
UNLOAD
VARY ONLINE/OFFLINE
VAR Y CONSOLES
VAR Y HARDCPY
VARY MSTCONS
VARY~m

I
I
I
I
I
I
I
I
I
I
I
I

I
I

I
I
I
I
I
I
I
I
I

I
I

I
I
I
I
I
I
I

f-----------~-------~---------------------~

11see the "Summary of Amendments" for
I
IL_________________________________________
Release 21.
IJ

Figure 29.

Classification of Commands

The LOG, REPLY, CONTROL, and WRITE LOG
commands are discussed in the MVT
supervisor Program Logic Manuay;-the HALT,
SWAP, and VARY PATH commands are discussed
in the I/O Supervisor Program Logic Manual;
the commands associated with remote job
entry processing are discussed in the
Remote Job Entry Program Logic Manual; the
commands associated with graphic job
100

OS/360 MVT Job Management (Release 21)

processing are discussed in the Graphic Job
Processor Support PLM. The commands
associated with TSO are discussed in the
TSO Command Processor PLMs.

TASK-CREATING COMMANDS
When the execution of a command includes
the performance of a continuing system
function (initiating or writing, for
example), or when it involves the use of a
serially reusable resource (such as the
queue control records), the command is
executed as a separate system task. Thus,
the routine that issues the SVC 34 is not
subject to an indefinite wait, and the
function performed by the Command Execution
routine is performed asynchronous ly with
other tasks.
A Command Scheduling Control Block
(CSCB) must be created for all
task-creating commands. The CSCB Creation
routine (module IGC0803D) is entered from
IGC3703D when a CANCEL command is processed
and the job to be cancelled is in the input
or output queue; from IGC2203D when a VARY
command has been processed with the CPU,
channel, or storage operand; from the
routing location module 1 (IGC7503D) for
DISPLAY commands with the active, (C,K),
consoles, jobname, M, N, PFK, Q, or U
operand; and from IGC0403D for the other
task-creating commands.
(The CSCB Creation
routine is also entered from module
IGC5803D for the TSO commands, DISPLAY USER
and SEND. For a detailed discussion of the
processing of these commands, see the TSO
Command Processor PLMs.)
The CSCB Creation routine examines the
command to determine whether it is one of
the following task-creating commands that
are executed in the master scheduler
region: DISPLAY A, DISPLAY C,K, DISPLAY M,
DISPLAY PFK, DISPLAY U, QUIESCE, VARY CH,
VARY CPU, and VARY STOR. If so, only one
such command can be executed at a time, and
the routine tests the common bit in the
status fl~gs field of the master scheduler
resident data area.
If the bit is on, it
means that a command is being executed in
the master scheduler region, and the CSCB
creation routine passes control to a
message routine that informs the operator
and returns control to the supervisor.
If the bit is off, the command can be
executed; the CSCB Creation routine sets
the bit on and constructs a CSCB for the
command, then enqueues it in the chain and
uses the POST macro instruction to notify
the master scheduler.

If the command is not one that is
executed in the master scheduler region,
the CSCB Creation routine creates a CSCB
and examines the verb code in the extended
save area to determine whether the verb is
START or MOUNT. If it is neither START nor
MOUNT, the routine posts the master
scheduler and returns control to the
supervisor,. If it is either START or
MOUNT, the routine passes control to the
START/MOUNT Hierarchy Parameter Processing
routine (module IGC3803D). This routine
processes the hierarchy parameter, posts
the master scheduler, and passes control to
the supervisor.
The master scheduler is the initial
responder to all task-creating commands.
It performs no analysis of the operand of
the command however; it merely determines
which task must be performed by analyzing
the verb code in the CSCB, then attaches
the task.
In response to the POST macro
instruction issued in module IGC0803D (the
CSCB Creation routine of the Command
Scheduling routine), the Master Scheduler
Wait and Attach routine (module IEEVWAIT)
disables all interruptions and scans the
chain of CSCBs looking for a CSCB in
pending status. When it finds one, the
master scheduler sets the CSCB assignment
pending switch off, enables interruptions,
and examines the verb code in the CSCB.
If the verb is START" the Master
Scheduler Attach routine must assign a
reader number, which is used by the
interpreter as a part of the base for
assigning unique data set names. The
number is maintained in the master
scheduler resident .data area; when a task
is started, the field is incremented by
one, then stored in the CSCB.
If the command is not a START or MOUNT
command" the command processing routine
issues SVC 34 to have the Command
Scheduling routine delete the CSCB from the
chain (but not free the main storage it
occupies) after issuing the ATTACH macro
instruction.
The tasks of performing the DISPLAY A,
DISPLAY U, DISPLAY CONSOLES, DISPLAY C,K,
DISPLAY M, DISPLAY PFK, MONITOR A, DUMP,
QUIESCE, VARY CH, VARY CPU, VARY STOR, and
queue manipulation commands are attached
with a protection key of zero, and in the
supervisor mode; the tasks of performing
the START and MOUNT commands are attached
with a protection key of zero, but in the
problem program mode.

Figure 30 lists the task-creating
commands and indicates which execution
routine the Attach routine calls to have
the command processed.
In order to prevent the loss of any
subsequent posts from the Command
Scheduling routine, the Master Scheduler
Attach routine repeats the scan, and
attaches command execution tasks until
there are no pending CSCBs in the chain.
When this happens, control is returned to
the Master Scheduler Wait routine, and the
master scheduler goes into the wait state,
until another POST macro instruction
occurs.

The START Command
The operator issues a START command to
initiate system tasks or user's job step
tasks. System tasks are those privileged
tasks, such as reading input streams and
writing sy~tem output, that function with a
protection key of zero and are listed by
name in the linkage table IEEVLNKT (see
Figure 34). Job step tasks function with a
nonzero protection key and are not listed
in the linkage table.
The description of a user's job has
three sources: the procedure library, the
input streams, and the operator. The
procedure library contains job control
language statements that describe
frequently executed series of job steps.
Job control language statements in an input
stream may completely describe a job, or
they may invoke a procedure, and modify it
by overriding its statements or overriding
fields within statements. The operator may
furnish additional information in the
operand of a START command; this
information is used to invoke and modify a
procedure.
The job description information for a
system task, however, comes from three
sources: the procedure library, JCL
stateinents,and the operator. The
procedure library contains standard
descriptions of a reader, an initiator, and
a writer (the user may add descriptions of
other tasks to be established via START
commands). JCL statements, (corresponding
to input stream JCL) are stored internally;
these statements invoke and modify the
procedure. The operator furnishes
additional information in the operand of
the START. command; this information is
edited into the internally stored JCL'
statements before they are used to invoke
and modify the procedure.
Part 5:

COIrillland Processing

101

r-----------------------------------------T-------------------.
--------------------------,I
I
I
First Module Executed
I
I

' Command

~--~----------------T-----------~---------~---i

I

LOad Module
I
Assembly Module
I
~-----------------------------------------t-------------------t----~--------------------i
I
system Task Commands
I
I
I
START
I
IEEPRWI2
I
IEEPRWI2
I
I
I
MOUNT
I
IEEPRWI2
I
IEEPRWI2
I
~--------~-~------------------------------t-------------------t-------------------------i
I
The DISPLAY A Command
I
IEEVDSP1
I
IEEVDSP1
I
I
The DISPLAY CONSOLES Command
I
IEEPDISC
I
IEEPDISC
I
The ,DUMP Command
I
IEE60110
I
IEE60110
I
I
I
The MONITOR A Command
I
IEEVDSP1
I
IEEVDSP1
I'
~-------------~---------------------------t-------------------t----------------~-------~i
Queue Manipulation Commands
IEEPALTR
IEEPALTR
CANCEL (job in queue)
DISPLAY CIK
DISPLAY jobname
DISPLAY M
DISPLAY N
DISPLAY PFK
DISPLAY Q
DISPLAY U
HOLD
RELEASE

I

.'~:

RESET

~--------~--------------------------------t---~------~~~------t-------------------------i
I
QUIESCE
I
IEEMPSO~
I
IEEMPS03
I
VAR Y CH
I
IEEMPVCH
I
IEEMPVCH
I
I
VARY CPU
I
IEEMPVCP
I
IEEMPVCP
I
I
I
VARY STOR
I
IEEMPVSE
I
IEEMPVSE
I
~----------------------------------------_+-------------------t-------------------------i
I
TSO Operator Commands 1
I
I
I
DISPLAY USER
I
IEEVGPSD
I
IEEVGPSD
I
I
I
SEND
I
IEEVGPSD
I
IEEVGPSD
I
~-----------------------------------------~-----------~-------~------------------------i

IL______________________
1See TSO Command ________________________________________________________________
Processor PLMs.
JI
~

I Figure

30.

Task Creating Commands

Figure 31 summarizes the major
attributes of and differences between
system tasks, job step tasks initiated via
a START command, and job step tasks
initiated via the input stream.
The START command task is performed by
the System Task Control routine (Figure
32); when the master scheduler determines
that the command is START, it issues the
ATTACH macro instruction to pass control to
the Get Region routine (module IEEPRWI2),
which is the first module of the System
Task Control routine. The Get Region
routine resides in the link pack area. It
obtains a region from the specified
hierarchy (the size is specified when the

102

OS/360 MVT Job Management (Release 21)

system is generated). IEEPRWI2 then
establishes a STAE environment that
contains exit and retry routines, to
process abnormal-end-of-task conditions.
Then the module passes control to the .START
Syntax Check routine (module IEEVSTAR),
which is loaded into the new region.
If the system task control routine has
an abnormal end of task condition, the STAE
exit routine issues a message describing
the condition to the operator. The STAE
retry routine then attempts to de-allocate
the existing device and releases the
region. It issues an SVC 3 instruction to
terminate the task.

r---------------T----------T------T-----T-----------T-----------T-----------T-----------,
I
I
I
I
I
,I
I May be
I
I
I
I
I

I May I May use
I
I stopped.
I
I
I
I Job
IProtectionlstep I use I checkpoint/I Data set I modified, I
I
1 key
1timing 1 SMF Irestart
I integrity 1 cancelled I START CIB 1

I
I

1
1
I

1

1

I
I

1

I
I

1

l---------------t----------t------t-----t-----------t-----------t-----------t-----------i
ISystem task
1 zero
1 no 1 no 1
no
1
yes
1
yes
I
yes
1
1
1

I
I

I
I

1

I
I

I
I

1
I
I
I
I
I

lexcept out-I (note:

1
1
1

I

1put writers 1cancella- I
1
I ti on may be I
I

I done only

1
1

1during

I

I

1

1

I allocation) I

I

l---------------t----------t------t-----t-----------t-----------t-----------t-----------i
IJob step task I nonzero I yes I no I
no
I
yes
I
yes
I
yes
I
I in a START
I
I
I
I
I
I
I
I
I command
I
I
I
I
I
I
I
I
l---------------+--~-------t------t-----t-----------t-----------t-----------t-----------f
IJob step task I nonzero I yes I yes I
yes
I
yes
I
yes
I
no
I
in input streaml _________ I ______ 1_____'I ___________ I___________ I __________ I ___________ JI
IL_______________
~

Figure 31.

~

~

~

~

~

~

Major Attributes of System Tasks, Jobstep Tasks in START Command, and Job
Step Tasks in Input Stream

The Syntax Check routine gets main
storage for and builds the start descriptor
table (SDT) -- see Figure 33. JOB. EXEC.
and DD statements are generated by the
Syntax Check routine and placed in the SDT.
Seven entries are provided in the SDT: the
first entry contains the JOB statement. and
the second entry contains the EXEC
statement that calls the procedure
specified in the START command; additional
entries are provided for a DD statement and
continuations of the EXEC and DD
statements. The Syntax Check routine
compares keyword parameters in the START
command with a list of keyword parameters
(but not DD sub parameters) that are
allowable in a DD statement or a JOB
statement. If a keyword corresponds to a
member of the list of DD parameters, the
routine stores it in the DD statement in
the SDT. This DD statement overrides the
IEFRDER DD statement in the procedure
specified in the START command,. If a
keyword does not appear in the list, it is
assumed to be a symbolic parameter keyword
and is placed in the EXEC statement in the
SOT.
Finally. the Syntax Check routine passes
control to the JCL Edit routine (module
IEEVJCL). which builds the job control
language set (JCLS). Using the information
in the SDT, the JCL Edit routine puts the

JCL in the form appropriate for the
interpreter. Each statement is built in an
88-character buffer (obtained with a
GETMAIN macro instruction). A pointer to
the first buffer is placed in the CSCB
associated with the START command. Each
buffer contains a pointer to the next
buffer, 4 bytes of reserved space, and a
ncard imagen of the statement in the last
80 bytes.
After building the JCLSs, the JCL Edit
routine builds the following:
• The Job Scheduling Entrance List (JSEL)
• The Job Scheduling Option List (JSOL)
• The Option Buffer (OPT)
• The Job scheduling Exit List (JSXL).
The routine then releases the main storage
,occupied by the SOT and sets a flag in the
JSXL to indicate a request for a post
processing exit to entry point IEERGN in
module IEEPRTNZ. The JCL Edit routine then
issues an XCTL macro instruction to give
control to the Job Scheduling subroutine at
entry point IEEVRCTL of module IEEVRCTL.

Part 5:

Command Processing

103

IEEVSTAR

XCTL .

IEE0503D
XCTL
Interpreter

IEEVRJCl (IEEPSN)
IEFRDWRT

XCTL

IEEVSMSG

IEEVICTL

(JEEVIC)
Initiator
Subroutine
(Note 2)

Notes:

General.
1.

There are two "Syntax Check "routines: .'The START command uses load module IEEVSTAR, containing assembly modules IEEVSTAR and IEEVJCl·•
• The MOUNT command uses load module IEEVMNTl, containing assembly modules IEEVMNTl and
IEEVJCl.

2.

The Initiator subroutine attaches module IEEVMNT2 if a MOUNT command is being processed.

Figure 32.

104

The names in the upper left corners of the shaded blocks are load module names; the names in the
unshaded blocksare assembly module (MODUB) names.

The System Task Control Routine

OS/360 MVT Job Management (Release 21>

functions that the JSS and the Initiator
subroutine will perform:
•
•
•
•

The Job scheduling Entrance List
The Job scheduling Options List
The Job Scheduling Exit List
The Option List (also known as the
Option Buffer, or OPT) that the caller
of the subroutine passes when giving
control to the JSS.

A routine may call the JSS for any of the
following reasons:
1.

To complete the processing of a START
command

2.

To complete the processing of a MOUNT
command

3,.

To complete the processing of a LOGON
command that is entered from a TSO
terminal.

The routine then uses the Q-manager
routines IEFCNVRT and IEFRDWRT to write
onto the job Q the LTH for the task to be
executed. This permits normal termination
processing of data sets to be performed at
Wc'I.rm-start time.

Figure 33,.

start Descriptor Table (SDT)

Notes: The start descriptor table
consists of up to seven entries, each of
which contains a JCL statement (or a
portion of a JCL statement) constructed
by the Syntax Check routine of the System
Task Control routine. In addition, each
entry contains an identification flags
field" whose bits, when set to one, have
the following meanings:
Bit
--01
2
3
4
5-7

Meaning
JOB statement
EXEC statement
DD statement
DD statement continuation
EXEC statement continuation
Reserved

The mapping macro-instruction for the
start descriptor table is IEESDT.
The Job scheduling subroutine ~nterprets
the JCL for a single job, calls the
initiator subroutine to initiate that job,
and performs the necessary cleanup
functions after regaining control from the
Initiator subroutine. The information in
the following lists determines the

The Reader/Interpreter (R/I) Control
routine, IEEVRCTL, builds the interpreter
entrance list (NEL), the interpreter option
list. the interpreter exit list, and the
job scheduling work area (~SWA). The third
word of the NEL contains the address of the
JCIS. Routine IEEVRCTL issues a LOAD macro
instruction specifying the JCL reader
routine IEEVRJCL. the interpreter post scan
exit routine IE~SN. and. when track
stacking is specified, the load module
IEFQMSKl. so that the reader may use these
modules.
Control routine IEEVRCTL then creates
entries in the NEL exit list for routines
IEEVRJCL and IE~SN. for IEFQMSK1 if track
stacking is specified, for the SMF exit
(routine IEFUJV) if specified, and for the
interpreter exit routine IEEVRC. Next.
routine IEEVRCTL processes the OPT options
that the Job Scheduling subroutine has
passed. If any options are present, the
module gives control to (exits to) module
IEFVSCAN. which processes the options and
sets appropriate bits in the NEL and the
JSWA.
Module IEFVSCAN verifies that the
contents of the OPT conform to the syntax
indicated by routine IEEVRCTL.
IEFVSCAN
scans the buffer from left to right (low
address to high address). As each valid
EBCDIC-encoded/operand in the buffer is
encountered, the scan routine issues a CALL
macro instruction for an exit routine
defined for that operand. The exit
Part 5:

Command Processing

105

routines (which are in module IEEVRCTL)
transform the keyword options into bit
settings in the NEL and the JSWA. Module
IEFVSCAN then returns control to module
IEEVRCTL and provides an indicative return
code .•
If module IEFVSCAN passes a return code
other than zero, the caller (of IEEVRCTL)
receives the code in the JSXL. Module
IEEVRCTL then releases storage that had
been obtained for the JSWA, JSOL, OPT,
JSEL, NEL, and the exit list. Then, if so
indicated in the JSXL, module IEEVRCTL
takes a post processing exit. If no exit
is available" IEEVRCTL returns control to
the caller via the contents of register 14.
The R/I control routine then frees the main
storage used for the JSOL and the OPT, and
passes control to the reader by means of an
XCTL macro instruction.
The interpreter, used as a closed
subroutine, is the same routine that
performs the reading task. The non-zero
value of the third word of the interpreter
entrance list indicates that the input
stream is an internal data set. Because
the input stream is internal, the
interpreter does a pseudo OPEN to bring a
special access method into main storage,
and stores a pointer to it in the input
DCB. The special access meth~d reads the
records of the JCLS; it is entered from the
expansion of the standard GET macro
instruction:
The internally stored job control
language statements" and the statements
from the procedure library, are analyzed
and combined normally. The standard job
description tables are built, and an input
queue entry is constructed, but because bit
7 of the option switches field of the
option list is off, the entry is not
enqueued, and the "job" cannot be selected
by an, initiator. If errors are ,detected
during interpreter processing, the
appropriate messages are placed in system
message blocks, which are enqueued in the
message class queue.
After it has scanned each JCL statement
and stored it in the internal text buffer,
the interpreter exits to the Interpreter
Post Scan Exit routine (module IEEPSN),
which is specified in the interpreter exit
list. When the interpreter passes control
to the Post Scan Exit routine, it passes a
pointer to a pa,rameterlist, the first word
of which is the address of the interpreter
internal, text buffer.. The routine searches
the 'buffe~ for an entry representing an
EXEC statement that specifies a program
name~' Then the routine compares the
'
program name specified in the, EXEC
statement with the list in the linkage
table (see Figure 34) that contains all
106

OS/360 MVT job Management (Release 21)

valid program names for procedures
initiated by a START command.
If a valid program name is found in a
multi-step job, the Interpreter Post Scan
Exit routine sets an error return code in
the communication area for the system Task
Control routine.
If the program name is found in the
linkage table, the routine checks another
table that contains a list of all programs
in the linkage table for which data set
integrity is not provided. If the program
name is found in the second table, an
indicator is set in the communication area
for the System Task Control routine.
After scanning the internal text buffer
for each JCL statement, the routine returns
control to the interpreter.
The interpreter places the main storage
address of the job control table (JCT) in
the NEL, and using the Interpreter Exit
list established by routine IEEVRCTL,
passes control via an XCTL macro
instruction to the Interpreter Exit routine
(module IEEVRC) with a code that indicates
whether processing was successful.
The Interpreter Exit routine issues a
DELETE macro instruction specifying, as
operands., the following:
• The JCL reader routine
• The interpreter post scan exit routine
• The track stacking load module used b¥
the interpreter.
In doing this, the routine uses the
queue management routines IEFCNVRT and,
IEFDWRT to indicate that for a warm start,
the job should be processed as if it had
been dequeued from an input queue.
Then the,routine analyzes the return
codes from both the reader and the scan
routines and performs the appropriate
processing. If the codes indicate either
JCL or I/O errors, the exit .routine sets
the appropriate error code in field CHSPA
of the CSCB.
(Appendix A explains the
error codes that are set in the CSCB.) For
all errors, routine ,IEEVRC sets the
'job-failed' bit in the JCT to request
task/termination and passes the return
codes (via the JSXL) to the caller.
The Interpreter Exit routine then frees
main storage for the following:
• The JCLS
• Thereader/int~rpreter register save
area .
• The NEL
• The OPT
• The exit list.

r

the initiator. If errors are indicated,
the routine issues a CALL macro instruction
to pass control to the Message Writing
routine (module IEEVSMSG), which writes the
error message to the console.

Then the routine issues an XCTL macro
instruction to pass control to the
Initiator Control routine (module
IEEVICTL.)

Fi rst System Task
Second System Task

8
8

nth System Task
First System Task with No
Data Set Integrity

End of Section: I

Zeroes

8

Second System Task with No
Data Set Integri ty

Cant.
Cant.

I

8

I
Nth System Task wi th No
Data Set Integrity

Var.
Cont.

8 End of Table:

Figure 34.

Zeroes

11

Linkage Table

Note: The linkage table contains all of
the names that may be used in the PGM=
name parameter of a procedure EXEC
statement if the procedure is a system
task.
The Initiator Control routine provides
an interface between the system Task
Control routine and the Intitator
subroutine. This interface is similar to
the one provided by the Interpreter Control
routine between the System Task Control
routine and the Interpreter subroutine.
First the routine builds three parameter
lists for the initiator: the initiator
entrance list (IEL), the initiator option
list, and the initiator exit list.
The option list~ pOinted to by the third
word of the IEL, contains switches that
indicate the processing that the initiator
is to perform when invoked by the System
Task Control routine. The Initiator
Control routine sets the switches according
to whether a system task or a problem
program is being executed and/or according
to information contained in the JSWA. The
control routine then issues an XCTL macro
instruction to pass control to the
Initiator subroutine (at entry point
IEFSD060). After performing the
appropriate processing, the initiator
returns control to entry point IEEVIC of
the Initiator Control routine, as indicated
in the initiator exit list.
A second function of the Initiator
Control routine (other than to serve as an
interface to the Initiator subroutine) is
to handle errors found by the interpreter,
the ~nterpreter Post Scan Exit routine, or

Upon return from the initiator after
termination of the task, the Initiator
Control routine releases the main storage
occupied by several control blocks built
for the started task. Module IEEVICTL
moves non-zero return codes from the IXL to
the JSXL and indicates that the Initiator
subroutine encountered the error. The
module then processes the JSXL and takes an
exit to entry point IEERGN of module
IEEPRTNZ. The Free Region routine (module
IEEPRTN2), which receives control from the
Initiator Control routine via an XCTL macro
instruction, is the last load module of the
System Task Control routine. This routine,
which resides in the link pack area, frees
the CSCB, JSCB, and WTPCB if they exist,
and then releases the region.
It exits by
branching to the master scheduler.
The MOUNT Command
The MOUNT command is used to reserve a unit
for a particular volume. A unit will be
allocated, a mount message issued, and the
unit control block (UCB) will be marked;
the system will not unload the volume until
an UNLOAD command (see existing-task
commands) is issued. The performance of
the MOUNT command task, and the performance
of the START command tasks by the System
Task Control routine differ only in the
module that checks syntax.
As is the case with the START commands,
the information in the descriptor table is
used to complete an internal data set that
corresponds to JCL statements in the input
stream. This data set is read, combined
with statements from the MOUNT command
procedure in the procedure library, and
converted to tabular format by the
interpreter. The tables are later used by
the I/O Device Allocation routine, which is
invoked by the Initiator subroutine.
As in the case of the START commands,
the Job Scheduling subroutine is invoked.
The JSS uses the reader/interpreter to
interpret the JCLs and then passes control
to the Initiator subroutine. The
initiator, in turn, invokes the I/O Device
Allocation routine and, upon return,
attaches the Mount Command Bit Setting
routine (module IEEVMNT2). This routine
marks the UCB corresponding to the
allocated unit "reserved" and either
"public, n "private," or "storage." It
returns control to the Initiator
subroutine.
Part 5:

Command Processing

107

The DISPLAY A Command
When the DISPLAY Commands Router routine
(moduleIGC3503D) determines that a DISPLAY
A Command is to be executed, it tests the
region busy bit in the master scheduler
resident data area. The DISPLAY A command
is one of the commands that are executed in
the master scheduler region; fUrthermore,
only one DISPLAY A command can be executed
for each call of the Display Active
routine. Therefore~ if the region busy bit
is on .• the command cannot be executed and
the DISPLAY Commands Router routine passes
control to a message mOdule. The message
module issues a message to the requesting
operator and returns control to the
supervisor .•
If the region busy bit is not on, the
DISPLAY Commands Router routine turns it
on.. Then the routine passes control to the
Routing Location Module 1 (IGC7503D). This
routine scans the command for routing
(L=xxx) operands.
If explicit routing
operands have been specified" the routing
routine places them in the extended save
area (XSA). If no operands, or only
partial operands, are specified, the
routine checks the Routing Control Table
for .default routing operands. If it finds
no defaults, the routine identifies the
issuing console as the receiving console
and defaults the area identifier to a null
value (i.e. " the first available area will
be used). After the routine identifies the
console address and the display area, it
places them in the XSA. Then the routine
passes control to the CSCB Creation routine
(module IGC0803D) via an XCTL macro
instruction. This routine creates and
enqueues a CSCB for the command, posts the
master scheduler. and returns control to
the supervisor.
When a pending CSCB indicates that a
DISPLAY A command is to be executed, the
Master Scheduler Attach routine passes
control to the Display Active routine via
the ATTACH macro instruction.
The Display Active routine (module
IEEVDSP1) disables the system for
interruptions, then scans the supervisor
TCB queue. When it finds a TCB containing
a TIOT address, the routine determines the
type of task, and performs the processing
shown in Figure 35. If the task is the
Master Scheduling task, a START-command
task or system task with no subtasks, the
Display Active routine passes control to
the Display Region size routine.
Other
command processing tasks (including the
DISPLAY A task) are considered to be
subtasks of the Master scheduling task and
are added to its subtask count. Subtasks
of job steps andsubtasks of system tasks
(e.g., the System Output Writer's Writing
108

OS/360 MVT Job Management (Release 21)

subtask) are added to the appropriate
subtask count .•
The Display Region size routine (module
IEEVDRGN) is entered with a pointer to a
TCB. The routine determines the boundaries
of the hierarchy 0 and hierarchy 1 portions
of the region assigned to the task and the
amount of supervisor queue space used for
the task, and returns the information to
the Display Active routine.
When it reaches the end of the TCB
queue, the Display Active routine extracts
the job and step names from the TIOTs,
enables the system for interruptions, and
issues an SVC 110. Execution of SVC 110
causes control to be passed to the Master
Scheduler Router routine (IGCOOllO), which
passes control to the Active Task Message
routine (IGC50110). The Active Task
Message routine adds a control line and
label lines to the display begun by
IEEVDSP1. It uses the WTO macro
instruction to pass the operator the
following displays:
• Job and step names
• Subtask counts
• Region boundary addresses
• Supervisor queue

spac~

usage figures.

The Active Task Message routine then
returns control to IEEVDSP1. This routine
turns off the common bit and the display
active flag, uses SVC 34 to unchain the
CSCB (and free the storage it occupies),
and returns control to the supervisor.
If the DISPLAY A command was issued in a
TSO environment, the Display Active routine
scans the region control block (RCB) table.
If the command was issued from a terminal,
the routine uses the TPUT macro instruction
to pass information about the TSO region to
the TSO operator. A detailed description
of the TSO processing of the DISPLAY A
command is in the TSO Command Processor
PLMs.
The DISPLAY M Command
When the Display Router routine (IGC3503D)
determines that a DISPLAY M command is to
be executed, it passes control to the
Routing Location Routine (IGC7503D), which
scans the command for routing (L=xxx)
operands. If explicit routing operands
have been specified, module IGC7503D places
them in the extended save area (XSA). If
no operands, or only partial operands., are
specified, the routine checks the routing
control table for default routing operands. /

(

r--------------------T--------T-------------------------T----------------------T--------,
I
I TCBLTC I
I
I
I
I
TCBOTC Field
I Field I
TIOT
I
Task
Isee Notel
~--------------------+--------+-------------------------+----------------------+--------1
I Zero
I
I
IMaster Scheduling Taskl
3a
I
~--------------------+--------+-------------------------+----------------------+--------1
IMaster scheduler TCBIZero
INot Master Scheduler TIOTISTART-Command Task
I
3a
I
~--------------------+~-------+-------------------------+----------------------+--------1
IMaster Scheduler TCBINonzero INot Master Scheduler TIOTISTART-Command Task
I
3b
I
~--------------------+--------+-------------------------+----------------------+--------1
IMaster Scheduler TCBI
IMaster Scheduler TIOT
IOther Command Task
I
3c
I
~--------------------+--------+-------------------------+----------------------+--------1
I START-Command TCB
I Zero
I
Isystem Task With No
I
3a
I
I
I
I
I
I
ISubtasks
~-----------------~--+--------+-------------------------+----------------------+--------1
ISTART-Command TCB
INonzero I
Isystem Task With No
I
3b
I
ISubtasks
I
I
I
I
I
~--------------------+--------+-------------------------+----------------------+--------1
lother TCB
I
IUnique
IJob Step With No
I
3a
I
I
I
I
ISubtasks
I
I
~--------------------+--------+-------------------------+----------------------+--------1
IOther TCB
I
INot Unique
IJob step, Subtask of I
3d
I
IJob Step, or Subtask I
I
I
I
I
lof System Task
I
I
I
I
I
~--------------------i--------i-------------------------i----------------------L--------1

INotes:
I
11. The TCBOTC field points to the TCB of the task that established the current task.
I
12. The TCBLTC field points to the TCB of the first task established by the current
I
I
task.
I
13. Depending upon the type of task, the processing performed is as follows:
I
a. Enter the Display Region Size routine.
I
I
I
b. Continue scan of supervisor TCB queue.
I
I
c. Increment Master Scheduler Subtask count by 1, then continue scan of TCB queue. I
d. Increment origin task subtask count by 1" then continue scan of TCB queue.
I
I
14,. If RJE" TCAM, or TSO is in the system, the search of the TCB by DISPLAY active is I
I __ ...,c..,altered.
L
___________________________________________________________________________________ JI
Figrire 35.

Task Identification in the Display Active Routine

If no default operands are found" the
routine identifies the issuing console as
the console to receive the display and
defaults the display area identifier to a
null value (i.e., the first available
display area will be used). After the
routine identifies the console address and
the display area, it places them in the
XSA. The Routing Location routine then
checks the validity of the routing operands
and, if no errors are found, passes control
to the CSCB creation routine (IGC0803D).
This routines enqueues a CSCB, posts the
master scheduler, and returns control to
the supervisor.
When a pending CSCB indicates that a
DISPLAY M command is to be executed, the
Resident WAIT/ATTACH routine (IEEVWAIT)
passes control to the GET Region routine
(IEEPALTR). This routine determines that a
status display is to be created, and issues
an SVC 110. The Master Scheduler Router,
which ,is the first routine of SVCll0,
determines that a DISPLAY M command is to
be executed, and passes control to the
Display Matrix Routines CIGC30110,
IGC31110, and IGC32110). These routines

build the display and pass it to the
operator by using a WTO macro instruction.
The DISPLAY C,K Command
When the Verb Checker routine (IGC0403D)
determines that a DISPLAY command has been
entered, it passes control to the DISPLAY
Command Router routine (IGC3503D). The
router routine scans the command and,
finding it to be a DISPLAY C, K command,
passes control to the Routing Location
routine (IGC7503D). The Routing Location
routine determines the proper routing
(L=xxx) operands and stores them in the
XSA. It then passes control to the CSCB
creation routine (IGC0803D>, which enqueues
a CSCB, posts the master scheduler, and
returns control to the supervisor.
When a pending CSCB indicates .that a
DISPLAY C,K command is to be executed, the
Resident WAIT/ATTACH routine (IEEVWAIT)
passes control to the Get Region routine
(IEEPALTR), which issues an SVC 110. The
Master Scheduler Router, which is the first
routine of SVC 110, determines the type of
command entered and passes control to the
Part 5:

Command Processing

109

DISPLAY C,K Processor routines (IGCI0110,
IGC11110 and IGC12110) '. These routines
build the display of CONTROL command
operands and issue WTO macro instructions
to pass the information to the operator.
The DISPLAY PFK Command
Wh~n

the Display Router routine (IGC3503D)
determines that a request for a display of
the commands associated with a console's
programmed function keyboard (PFK) key
numbers has been entered, i t passes control
to the CSCB creation routine (IGC0803D).
The CSCB Creation routine enqueues a CSCB
for the command" posts the master
scheduler, and returns control to the
supervisor.
When a pending CSCB indicates that a
DISPLAY PFK command is to be processed, the
master scheduler WAIT/ATTACH routine
(IEEVWAIT) passes control to the Get Region
routine (IEEPALTR). This routine
determines that a status display is to be
created and issues an SVC 110 to continue
processing of the request,. The Master
Scheduler Router routine (IGCOOI10), which
is the first routine of SVC 110, determines
that a DISPLAY PFK command is to be
processed and passes control to the DISPLAY
PFK routine (IGC40110). This routine
builds the display and writes i t to the
operator's console by means of the WTO
macro instruction.
When the display is
complete, control is returned to the
supervisor.

Upon entry, module IGC20110 issues a
GETMAIN macro instruction to obtain a
workarea. The routine then checks the
command operands for correct syntax" and,
if there are syntax errors, passes control
to module IGC22110 to issue the appropriate
error message and return control to the
Master Scheduler Router.
If there are no
errors, module IGC20110 sets switches in
the work area to indicate the units for
which status has been requested, and passes
control to module IGC21110. Module
IGC21110 determines if the device name
table is already in storage.
If not, it
issues a GETMAIN macro instruction to
obtain an area into which the table can be
loaded and passes control to module
IGC23110. Module IGC23110 locates UCBs
which satisfy the command specifications
and builds a list of addresses in the
workarea. It then passes control back to
module IGC21110.
IGC21110 checks the workarea to
determine which UCBs must be searched. It
then assembles the display and places the
information in the text line of the work
area. The module then passes control to
module IGC23110; which issues a WTO macro
instruction to write each line of the
display. When the display is complete, the
module passes control to module IGC22110,
which issues a FREEMAIN macro instruction
to free the work area (and the device name
table, if it was obtained by a GETMAIN
macro instruction) and returns control to
the Master Scheduler Router (IGCOOII0).

The DISPLAY U Command

An operator issues the DISPLAY U command to
request a tabular display of status
information about specified units. When
the Verb Checker routine (IGC0403D)
determines that a DISPLAY U command has
been entered, it passes control to the
Display Router routine (IGC3503D). This
routine passes control to the Routing
Location routine (IGC7503D) which stores in
the XSA the proper routing (L=xxx) operands
for the command. Module IGC7503D passes
control to the CSCB creation routine
(IGC0803D) which enqueues a CSCB, posts the
master scheduler, and returns control to
the supervisor.
When a pending CSCB indicates that a
DISPLAY U command is to be executed, the
Resident WAIT/ATTACH routine (IEEVWAIT)
passes control to the Get Region routine
(IEEPALTR) which scans the command and
issues an SVC 110 to pass control to the
Master Scheduler Router routine (IGCOOII0).
This routine determines that a DISPLAY U
command is to be processed and passes
control to the Unit Status routines
(IGC20110, IGC21110, IGC22110 and
IGC23110) •
110

OS/360 MVT Job Management (Release 21)

The DISPLAY CONSOLES Command
When the DISPLAY Commands Router routine
(module IGC3503D) determines that the
command to be executed is a DISPLAY
CONSOLES command" it passes control to the
Routine Location Module 1 (IGC7503D). This
routine scans the command for routing
(L=xxx) operands.
If explicit routing
operands have been specified, the routing
routine places them in the extended save
area (XSA). If no operands, or only
partial operands, are specified, the
routine checks the Routing Control Table
for default routing operands.
If it finds
no defaults, the routine identifies the
issuing cons,ole as the receiving console
and defaults the area identifier to a null
value (i.e., the first available area will
be used). After the routine identifies the
console address and the display area, it
places them in the XSA. Then it passes
control via an XCTL macro instruction to
the CSCB Creation routine, which creates
and enqueues a CSCB, posts the master
scheduler, and returns control to the
supervisor.

When a pending CSCB indicates that the
command to be executed is a DISPLAY
CONSOLES command, the Master Scheduler
Attach routine uses the ATTACH macro
instruction to pass control to the DISPLAY
CONSOLES Get Region routine.
The DISPLAY CONSOLES Get routine (module
IEEPDISC) resides in the link pack area.
The routine obtains a region in which to
execute the command, then uses the LINK
macro instruction to pass control to the
DISPLAY CONSOLES Processor routine (module
IEEXEDNA) •
The DISPLAY CONSOLES Processor routine
(module IEEXEDNA) uses information from the
unit control module (UCM) to construct
messages that describe the console
configuration.
When it is entered, the routine masks
interruptions" then issues a header
message.. If hard copy is specified in the
system, the routine prepares a descriptive
message: if the device is a console, the
information comes only from the UCM entry,
but if the device is the system log device.,
information from the MCS prefix to the UCM
base is also used.
The routine next constructs a message
for each unit that was specified as a
console when the system was generated.
When a message has been constructed, the
DISPLAY CONSOLES Processor routine uses the
WTO macro instruction to issue the message
to the operator who entered the command.
If the command was entered via an input
stream, the message goes to the master
console.
When all messages have been issued, the
routine enables the system for
interruptions and returns control to the
DISPLAY CONSOLES Get Region routine (module
IEEPDISC), which releases the region and
returns control to the supervisor.
The MONITOR A Command
The MONITOR A command is one of the
commands that is executed in the master
scheduler region. When the MONITOR
Commands Router routine (Module IGC7103D)
determines that a MONITOR A command is to
be executed, it tests the region busy bit
in the master scheduler resident data area.
If the region is busy (i.e., if the busy
bit is on), the MONITOR Commands Router
passes control to a message module. The
message module issues a message to the
requesting operator (indicating the region
is busy) and returns control to the
supervisor.

If the region busy bit is not on., the
MONITOR Commands Router routine turns it
on. Then the routine passes control to the
Routing Location Routine (IGC7503D). This
routine scans the command for the routing
(L=xxx) operands.
If explicit routing
operands have been specified, the routine
places them in the extended save area
(XSA). If no operands, or only partial
operands, are specified, the routine checks
the Routing Control Table for default
routing operands.
If no defaults are
found, the routine identifies the issuing
console as the receiving console and
defaults the display area identifier to a
null value (the first available area will
be used). When the console address and
display area identifiers have been
determined, the routine places them in the
XSA.
The Routing Location routine then tests
the validity of the routing operands, the
routing authority of the issuing console,
and the display-receiving capabilities of
the designated console.
If no
incompatibilities are found, the routine
tests to see if the requested console area
is available. If the area is not
available, the routine rejects the command
and passes control to an appropriate error
message module. If the area is available,
the routine sets a MSGTYP=ACTIVE bit in the
screen area control block (SACB) for the
receiving console and the UCMMSG bit in the
unit control module entry (UCME) of the
receiving console. The routine then uses
an XCTL macro instruction to pass control
to the CSCB creation routine (module
IGC0803D) • This routine creates and
enqueues a CSCB for the command, posts the
master scheduler, and returns control to
the supervisor.
When a pending CSCB indicates that a
MONITOR A Command is to be initiated, the
Master Scheduler WAIT/ATTACH routine
determines if the system interval timer is
operating. If it is not operating, the
routine rejects the command and issues a
message to the console.
If it is
operating, the routine establishes a
time-interval that specifies an exit
address in the Master Scheduler WAIT/ATTACH
routine.
The routine at the exit address gets
control initially and whenever the
time-interval elapses. The routine checks
a bit in the master scheduler region to see
if a MONITOR A display is in progress. If
the display is not in progress, the MONITOR
A command processing was stopped during the
time interval~ the exit routine returns
control to the supervisor.
If MONITOR A
command processing is in progress, the exit
routine issues an STIMER macro instruction
tore-establish the time interval and sets
Part 5:

Command Processing

111

the CSCB pointer to zero. The routine then
tests the region busy bit in the master
scheduler region. If the bit is on, the
region is in use, and the display cannot be
updated; the routine passes an appropriate
message to the operator and returns control
to the supervisor. If the region is not
busy, the Master Scheduler WAIT/ATTACH
routine turns the busy bit on and uses the
ATTACH macro instruction to pass control to
the Display Active routine UEEVDSPl).
The display active routine (IEEVDSP1)
assembles the display by extracting
information from the TCBs and by passing
control to the display region size routine
(IEEVDRGN) to determine the dimensions of
the region assigned to each task. After
the display active routine builds the
display" it issues an SVC 110 to pass
control to the Master Scheduler Router
routine (IGCOOll0). This routine verifies
that an active task (DISPLAY A or MONITOR
A) command has been entered and passes
control to the Active Task routine
(IGC50110). The active task routine
completes the building of the display and
uses the WTO macro to pass the display to
the operator. The routine then passes
control back to the Display Active routine,
which frees any workareas and returns
control to the supervisor.•
The DUMP Command
When an operator issues the DUMP command
from a console, the router module
(IEE0403D) identifies the command verb and
issues an XCTL macro instruction to give
control to the CSCB Create module
(IEE0803D).. Module IEE0803D inspects the
operand field of the DUMP command.. If COMM
is either not specified or incorrectly
specified, the module issues an XCTL macro
instruction to give control to the message
module (IEE7903D), which issues an invalid
operand message. If COMM is specified. the
create module establishes a command
scheduling control block (CSCB) for the
r----------~-"""----T--------

I

I

I

Operand(s)

I
I

DUMP command and adds the CSCB to the CSCB
chain for task-creating commands. This
CSCB contains the verb code for DUMP and
the operand field specified in the DUMP
command. Then module IEE0803D issues a
POST macro instruction to the master
scheduling task.
In an MVT environment. the Wait and
Attach routine (IEEVWAIT) checks the CSCB's
assignment-pending bit and then issues an
ATTACH macro instruction for the Queue
Alter routine (IEEPALTR). The Alter
routine identifies the command verb as DUMP
and issues an SVC 110. (In an MFT
environment, the Wait/Router routine
(IEECIR51) checks the assignment-pending
bit and issues the (SVC 110.)
The first load module (IEEOOll0) of the
SVC 110 routine verifies that the command
is DUMP and issues an XCTL macro
instruction to give control to the Dump
Command module (IEE60110). Module IEE60110
then issues a WTOR macro instruction
requesting the operator to specify operands
for the DUMP command. After the reply,
module IEE60110 builds a parameter list
based on the specified operand and issues
an SVC DUMP (pVC 51). The SVC DUMP routine
dumps the specified contents of main
storage to a preallocated data set named
SYS1.DUMP.
Figure 36 indicates the areas of main
storage that are dumped according to the
operand(s) specified in the DUMP command.
After the dump has been completed. the SVC
DUMP routine returns control to the Dump
Command module. The Dump Command module
stores the return code (in register 15) in
the extended save area (XSA) and issues an
XCTL macro instruction for the Message
module (IEE7903D). Module IEE7903D checks
the return code and issues to the operator
a message based on the retutin code.

.... --,------------------------------~~--------.--- . . . --------...;--....--,
Main Storage Areas Dumped
I

"t-----------T--.. . -------------T----------...;;:..."-.. . -------------.. . --------'---1
I
I

Nucleus

I
I
I
I
I

Yes*
Yes*
No
Yes
Yes

I
I

System Queue
Area (SQA)

I
I
I
I
I

Yes*
Yes*
No
Yes
Yes

I
I

Other

I
I
I
I
I

All
All
Storage between speCified addresses
Storage between specified addresses
None

~-----------------+-----------+---------------..;;.+------------...;---------

I
I
I
I
I

U(Default)
ALL
STOR...
STOR ••• ,SDATA
SDATA

I
I

. . --..:...---.. . -'----... --"'...:.""-~

I
I
I
I
I

~-----------------.l-----_-----.l--------------...; ....l--"--'--'.:.....;.--...:...;.----....-....:----''''--'-.... - . . -"-'---'---.. .-----'--f

I *The nucleus and the SQA areas are dumped before any other areas.

L_-----------------------------.. .---------------..:.."". . -'-----.. __'_________'__ . . . ____...'- ___ -"__ --' _______. . I
J

Figure 36.
112

DUMP Command Operand and Resulting Storage Dumped

OS/360 MVT Job Management (Release 21>

The Queue Manipulation Commands
The execution of the CANCEL, DISPLAY N,
DISPLAY Q" DISPLAY jobname, HOLD, RELEASE;
and RESET commands requires access to or

manipulation of the input" hold, and system
output queues. The task of executing these
commands is performed by the Queue Alter
routine, which is described in ~igure 37.

IEEPALTR
XCTL

Return

Link

Link
Pack
Area

XCTL

Link
Return

XCTL

XCTL

I EESD575
XCTL
XCTL

XCTL
XCTL

XCTL

I

Note: Names in the· upper left corners above shaded blocks
are load module names. Names in unshaded blocks
are assembly' mod'ole (MODUB) names.

I~igure 37.

The .Queue Alter Routine
Part 5:

Command Processing

113

I

The Queue Alter routine, which is
protected by a STAE environment (described
in the next paragraph), is a collection of
several modules that check command syntax,
search and manipulate the queues, and issue
messages to the operator. It is entered
via an ATTACH macro instruction issued. in
the Master Scheduler Wait .and Attach
routine (module IEEVWAIT) after it has
deleted the command CSCB from the chain.

The Get Region Routine (IEEPALTR)
The first module of the Queue Alter routine
to be entered is the Get Region routine
(module IEEPALTR) ,. This routine, Which
resides in the link pack area, first
determines whether the command entered is a
DUMP command or a request for a status
display (D C,K; D Uj D Mi OR D PFK). If
so, the routine issues an SVC 110 to pass
control to the Master Scheduler Router
routine (IGCOOll0) for further processing
of these commands (this processing is
described under the various command titles
in the COMMAND EXECUTION section). If the
command enter.ed is not a DUMP command or a
request for a status display, the routine
obtains a region of main storage for the
task,. The module then creates a STAE
environment to provide for abnormal-end-oftask conditions. This environment contains
exit and retry routines (within module
IEEPALTR). Then IEEPALTR uses the LINK
macro instruction to pass control to the
Queue Alter Syntax Check routine
(IEESD562) •
When an abnormal end condition occurs"
the STAE routine issues a message to the
operator to inform him of the type of
abnormal ending. Then the routine frees
the region (including the subpools
allocated within it) in main storage and
returns control to the caller.
The Syntax Check Routine (Module IEESD562)
The Syntax Check routine issues the ENQ
macro instruction to prevent access to the
system work queues (SYS1.SYSJOBQE) by
routines performing other tasks" then scans
the operand of the command (which is stored
in the CSCB) for valid syntax.
If the command syntax is in error, the
Syntax Check routine passes control to the
Service routine (module IEESD56S), which
uses the master scheduler Message Assembly
routine (module IEEOS03D) to issue a
diagnostic message, and terminates the
task. If the command syntax is valid,
module IEFSD562 passes control to the
ECB/IOB Construction routine (module
IEESD582) •
114

OS/360 MVT Job Management (Release 21)

The ECB/IOB Construction Routine (Module
IEESDS82)
If the operand of the command contains a
job name, module IEESD582 searches the
chain of CSCBs for the corresponding CSCB.
If a match is found and the command is a
CANCEL command with no IN or OUT parameter
specified, the routine issues a POST macro
instruction specifying the ECB in the CSCB,
then passes control to the Service routine.
The service routine (module IEESDS6S) uses
the Message Assembly routine (module
IEEOS03D or module IEF2103D) to issue a
message that informs the console or TSO
terminal user that the job has been
canceled. The Service routine then returns
control to the caller. If the command is a
CANCEL command with the IN or OUT parameter
specified, or if the command is not a
CANCEL command, the job has been selected
for initiation and therefore the command
cannot be processed; module IEESD582 passes
control to the Service routine" which
informs the operator and terminates the
task.
If there is no CSCB for the job in the
chain, a search of the system work queues
is required to find the jobname. Module
IEESD582 issues a GETMAIN macro instruction
to obtain storage~ and constructs an event
control block (ECB) and an input/output
block (lOB). Then, and if the operand of
the command does not contain a jobname.,
module IEESD582 passes control to the Queue
search Control routine (module IEESD563).
The Queue Search Control Routine (Module
IEESDS63)
The Queue search Control routine analyzes
the codes set by the Syntax Check routine
to determine what queue searching and
manipulating functions need to be
performed. The routine determines which
queue is to be searched and reads the queue
control record (QCR) for that queue •
• Upon initial entry, the Queue Search
Control routine reads QCRs until it
finds either
a.
b.

the first non-empty queue" if the
issued command is a DISPLAY Q or a
DISPLAY N command, or
a held queue, if the command is a
DISPLAY Q command. '

It then passes control to the DISPLAY
Q/DISPLAY N Message setup Routine
(module IEESDS84).
• If all the queues selected for
searching are empty, module IEESDS63
passes control to the Queue Alter
service routine. This routine uses the
master scheduler message assembly

routine to issue a message to the
operator,.
• If a DISPLAYQ command was specified
and an empty held queue has been found,
the Queue Search Control routine passes
control to the Queue Search Return
routine (module IEESD583). Module
IEESD583 adds the empty held queue to
the queue display message that it
issues.

• If the jobname match occurs and the
command is a CANCEL command, the
routine passes control to the Queue
Scratch Setup routine (module
IEESD575 ) .•
• If the jobname match occurs and the
command is a DISPLAY jobnames command,
the routine issues a WTO or TPUT macro
instruction to display job status
information, then passes control to the
service routine.
o

• If the command is a HOLD Q command, the
Queue Search Return routine reads the
QCR for the specified queue, sets the
hold queue bits in the QCR, then
rewrites the QCR into SYS1.SYSJOBQE.
If no queue is specified" the routine
places all input queues in hold status.
Finally" the routine passes control to
the Service routine to issue a queue
held message.
• If the command is a RELEASE Q command,
the routine reads the QCR for the
specified queue, turns off the hold
queue bits in the QCR, rewrites the QCR
into SYS1.SYSJOBQE, and posts the
appropriate 'no-work' ECB in the ECB
list. If no queue is specified, the
routine releases all input queues and
passes control to the Service routine
to issue a queue released message.
o

If a CANCEL command wi th the operand
ALL or OUT has been specified, and if
at least one jobname match was found
during the search of all the output
queues, module IEESD563 passes control
to the Queue Scratch Setup routine
(module IEESD575).

o

For all other queue manipulation
commands, the Queue Search Control
routine establishes parameters for
searching and passes control to the
Queue Search routine (module IEESD564).

The Queue Search Return Routine (Module
IEESD583)
After the Queue Search routine (module
IEESD564) completes a queue search, it
gives control to the Queue Search Return
routine, which performs the following
processing depending on the queue command
and the results of the queue search:
• If the jobname match does not occur,
the routine passes control to the Queue
Alter Service routine, which uses the
master scheduler Message Assembly
routine to issue a message to the
operator.. Upon return, the service
~outine returns control to the caller.

If the command is a DISPLAY Q command,
the routine issues a WTO or TPUT macro
instruction to display the number of
entries in the queues that were
searched., then passes control to the
Service routine.

For the following command, no queue
search is performed by module IEESD56'4:
• If the command is a DISPLAY Q command
and an empty held queue is found,
module IEESD583 receives control either
directly from the Queue Search Control
routine or on its first entry from the
DISPLAY Q/DISPLAY N Message Setup
routine. Module IEESD583 displays the
hold status of the queue as part of the
queue display message to the operator.
The Queue Search Routine (Module IEESD564)
The actual searching and manipulation of
the queues is performed in the Queue Search
routine (module IEESD564). Depending on
the command and its operands, the following
functions are performed:
• If the command is a CANCEL command, the
routine searches the queues according
to the parameters specified in the
command. If no parameters are
indicated, the input, background
reader, and hold queues are searched
for the job's queue entry.
If IN is
specified, the input and background
reader queues are searched: the search
ends if the entry is found.
If a
specific input queue is specified, only
that queue is searched.
If OUT is
specified, all output queues are
searched unless a specific queue was
indicated.
If ALL is specified, the
input. background reader, and hold
queues are searched first.
If the
job's entry is found, the output queues
are not searched: otherwise, the output
queues are searched, too. Whenever a
job's queue entry is found, the entry
is dequeued.
• If the command is a DISPLAY jobnaroe
command, the routine searches the
input, hold, background reader, ASB,
and output queues. When it finds the
job's entry, the routine returns job
Part 5:

Command Processing

115

status information to the Queue Search
Return routine, which then returns the
job's status to the operator.
• If the command is a DISPLAY N command.
the routine searches the queues
specified in the command (if no
specification is made, all queues are
searched),. The Queue Search routine
issues a WTO or TPUT macro instruction
indicating the name of each job, and
the queue in which it is found·.
• If the command is a DISPLAY Q command,
the routine searches the queues
specified in the command (if no
specification is made" all queues are
searched) '. It returns the number of
entries in each queue searched to the
Queue Search Return routine,.
• If the command is a HOLD jobname
command,. the routine searches the input
queues (and if necessary the hold
queue) for the job's entry. If the
entry is found in an input queue" the
routine dequeues it,. and stores the
name of the input queue in the entry;
the Service routine uses the Queue
Management Enqueue routine to place the
entry in the hold queue. If the entry
is found in the hold queue" or if the
job is not found" the Service routine
informs the operator,.
• If the command is a RELEASE jobname
command" the routine dequeues the entry
from the hold queue. The Service
routine uses the Queue Management
Enqueue routine to reenqueue the entry
in its original input queue,.
• If the command is a RESET command, the
Service routine performs the specified
changes in class and priority. This is
accomplished by dequeueing the job's
entry and using the Queue Management
Enqueue routine to reenqueue the entry
in the specified queue, at the
specified priority. All queues are
searched, starting with the input
queues and the hold queue. A change in
class for an entry found in the input
queue causes the entry to be placed in
the queue of the new class. A class
change for a hold queue entry is placed
in the function code ID field of the
entry's logical track header record.
If the job's entry is not found in the
input queues, the background reader
queue" or in the hold queue" and a
priority change is called for., the
priorities of all output entries for
the job are reset. If the job is being
processed when the command is issued,
the routine stores the new priority in
the input queue QMPA in the job's CSCB.
When the job terminates, the
116

OS/360 MVT Job Management (Release 21)

Termination routine uses that priority
to enqueue the output queue entries.
If the output queue qualifier is
specified,,' only the specified output
queue is searched and only one entry is
changed in class and priority. The
entry that is changed is the first
entry of the highest priority for the
specified job. If the job is being
processed when the command is issued or
if no entry f or the job is found" the
operator is informed and no action is
taken.
The DISPLAY Q/DISPLAY N Messaqe Setup
Routine (Module IEESD584)
The DISPLAY Q/DISPLAY N Message Setup
routine receives control only once from the
Queue Search Control, either:
• when the first non-empty queue is found
during processing for either a DISPLAY
Q or a DISPLAY N command" or
• when a held queue is found during
processing f'or a DISPLAY Q command.
The routine issues the WTO or the TPUT
macro instruction to display the DISPLAY
Q/DISPLAY N control and label lines. If
entry to the routine was due to a held
queue being found, module IEESD584 passes
control to the Queue Search Return routine
(module IEESD583). This routine adds this
queue to the display message it issues to
the operator. Otherwise, module IEESD584
passes control to the Queue Search routine
(module IEESD564) to begin the queue
search.
The Queue Alter Service Routine (Module
IEESD565)
The Queue Alter Service routine issues a
DEQ macro instruction to allow routines
performing other tasks access to the QCRs.
Based on information passed by the calling
routine, the Service routine performs the
following functions:
• If a queue entry is to be reenqueued,
it passes control via a LINK ~acro
instruction to the Queue Management
Enqueue routine (module IEFQMNQQ).
• If a message is to be written to the
operator, it passes control via a LINK
macro instruction to the master
scheduler Message Assembly routine
(module IEFOS03D).
• If additional system output queues must
be searched, the routine uses an XCTL
macro instruction to pass control to
the Queue Search Control rout ine
(module IEESDS63).

• It issues a FREEMAIN macro instruction
to free the ECB/IOB that was used to
read SYS1.SYSJOBQE.
After the requested processing is
completed, the service routine returns
control to the Get Region routine (module
IEEPALTR), which releases the region of
main storage obtained for the task and
returns control to the supervisor.•
The Queue Scratch setup Routine (Module
IEESD575)
The Queue Scratch setup routine builds the
parameter list for the SCRATCH macro
instruction (SVC 29) according-to whether
the cancelled job is in the input or output
queues.. If the job is in the input queue.,
the Queue Scratch Setup routine determines
whether there are SYSIN data sets to be
scratched. If so, the routine passes
control to the Queue scr.atch routine
(module IEESD581). After the Queue Scratch
routine has scratched all data sets" or if
there. were no data sets to be scratched,
the Queue Scratch setup routine passes
control to the Queue Alter Delete routine.
The Queue Alter Delete Routine (Module
IEESD576)
The Queue Alter Delete routine passes
control to the Queue Management Delete
routine (module IEFQDELE) to delete the
queue entries associated with the cancelled
job. Upon return from the Queue Management
Delete routine" this routine passes control
to the Queue Message Class setup routine
(module IEESD578).

(module IEESD563).. I f the CANCEL command
is issued for a class other than the
message class or for a job that has no
message class, the routine passes control
to the Message routine (module IEESD580).
Otherwise, it passes control to the Queue
5MB routine (module IEESD579).
The Queue 5MB Routine (Module IEESD579)
The Queue 5MB routine places the
appropriate cancel message into the first
5MB and passes control to the Queue
Management Enqueue routine (module
IEFQMNQQ) to enqueue the message class.
The Queue 5MB routine also issues the
cancel message to the operator and returns
control to the Get Region routine (module
IEEPALTR) •
The Message Routine (Module IEESD580)
The Message routine issues the cancel
message to the operator if there is no
message class associated with the job. The
routine then returns control to the Get
Region routine (module IEEPALTR).
The Queue Scratch Routine (Module IEESD581)
The Queue Scratch routine issues the
SCRATCH macro instruction (aVC 29). Upon
return from the SVC routine" the Queue
Scratch routine issues a "~ata set not
deleted" message if the return code is
nonzero. The routine returns control to
the Queue scratch setup routine (module
IEESD575) •
The system Reconfiquration Commands

The Queue Restart Enqueue Routine (Module
IEESD577)

The Queue Message Class setup Routine
(Module IEESD578)

System reconfiguration is the process of
changing, physically or logically. the type
or quantity of elements available to the
system.. Physical reconfiguration connects
or disconnects elements from the system.
Logical reconfiguration, which is
accomplished by programming, changes system
tables to notify the control program of the
number and types of elements available to
it. Logical reconfiguration may be
performed without performing physical
reconfiguration, but should always be done
when physical reconfiguration takes place.

The Queue Message Class setup routine
places zeros in the DSBs for the message
class and sets up the QMPA for enqueuing
the message class.. If the job is a
restarting job, the routine passes control
to the Queue Restart Enqueue routine. If
the job is in the output queue" with more
queues to be searched, the routine passes
control to the Queue search Control routine

Physical reconfiguration can be
performed when the system is operating if
the QUIESCE command is issued before the
reconfiguration takes place. The QUIESCE
command, which is valid only in systems
that include the multiprocessing option,
suspends system activity until the operator
signals that the system may continue.

The Queue Restart Enqueue routine passes
control to the Queue Management Enqueue
routine (module IEFQMNQQ) to enqueue SYSOUT
data sets for cancelled restarting jobs.
Upon return from modUle IEFQMNQQ, the Queue
Restart Enqueue 'routine passes control to
the Queue 5MB routine (module IEFSD579).

Part 5:

Command Processing

117

Logical reconfiguration'may be performed
when the system is loaded (see the I PL/NI P
Program Logic Manual). It may also be
performed as a result of issuing the VARY
command" which changes the status of paths,
devices, channels. CPUs., or areas of main
storage to online or offline. The VARY
Channel. VARY CPu., and VARY storage
commands (which are valid only in systems
that include MVT with Model 65
Multiprocessing> are discussed in this
section. immediately following the
discussion of the QUIESCE command.

progress. the Quiesce routine assumes that
the QUIESCE command cannot be executed
(because a channel program is in a loop,.
for example). In this case. the routine
sets all TCBs dispatch able and sets the
IEATCBP field to zero in each prefixed
storage area (P8A). This causes both CPUs
to start dispatching at the top of the
ready queue.. Finally" the routine uses the
wro macro instruction to inform the
operator that the command could not be
executed, and returns control to the
supervisor.

The QUIESCE Command

If, however" the Quiesce routine finds
that all I/O operations have been
completed., it. prepares the 'CPUs for
stopping:

Before a physical reconfiguration can take
place. system activity must be suspended.
In order to suspend system acti vi ty.. the
operator issues the QUIESCE command. which
is identified in the Command Scheduling
routine. The Command Scheduling routirie
posts the Master Scheduler,. and the Master
Scheduler Attach routine uses the ATTACH
macro instruction to pass control to the
Quiesce routine.
When it is entered. the Quiesce routine
(module IEEMPS03) disables the system for
all interruptions.. If there are two CPUs
in the system.. this locks out tJ;le other CPU
(prevents it from executing instructions in
the supervisor routines).. The Quiesce
routine then marks all TCBs (except its
own) non-dispatchable and uses the Task
Removal routine to issue a shoulder tap to
the other CPU. This forces the other CPU
to halt execution of its currently active
task. and the Quiesce task becomes the only
task in the system that can be executed.
Thus. no further I/O operations will be
initiated. although there inay be I/O
operations in progress. These I/O
operations must be allowed to complete
before the system can be stopped and the
reconfiguration performed.
The Quiesce routine scans the system
UCBs. looking for any that indicate an
incomplete I/O operation. If it finds that
there are I/O operations in progress. the
Quiesce routine enables the system for
interruptions,. sets the timer for a
ten-second interval" and waits for the
interval to expire.
When the timer interval has expired. the
Quiesce routine disables the, system for
interruptions and scans the UCBs.. If there
are still I/O operations in progress, the
routine again enables the system for
interruptions and requests a ten-second
timer interval.
If, after 24 ten-second intervals have
been used. an I/O operation is still in

118

OS/360 MVT Job Management (Release 21)

• It saves the contents of the active
timer,. then sets the active timer' to a
large va lue.
• It uses a shoulder tap to cause the
other CPU to execute module IEEMPSOO.
This routine loads a PSW disabled for
all interruptions,. sets up the
External., Machine Check,. and I/O New
PSWs to trap interruptions (because
bringing power up or down may cause
false interruption signals to be
generated), and executes the Diagnose
Stop instruction.
• It performs the same operations
performed in module IEEMPSOO,. but in
its own CPU.
The Diagnose stop instruction causes a
CPU to enter the stopped state, and the
Manual light to be lit. When the Manual
lights are lit on both cPUs,. the operator
may perform the physical reconfiguration
procedures.
When the physical reconfiguration
procedures have been completed.. the
operator depresses the Start key on each
CPU. Each CPU then clears any pending
machine checks, sets the CPUWAIT bit in its
prefixed storage area (PSA), and tests the
other CPU's CPUWAIT bit until it has been
set.
When both CPUs have cleared all pending
machine checks, they clear any pending
external or I/O interruptions. Then, while
, the other CPU loads a PSW to put it in the
wait state and enable it for interruptions,
the CPU that is executing the QUIESCE
command restores the active timer, sets the
PSA field IEATCBP to zero for both CPUs.
turns off the common bit in the status
flags field of the master scheduler
resident data area, and returns control to
the supervisor.

The VARY Commands
The VARY command verb causes the Router
routine of the Command scheduling routine
to pass control to the VARY Keyword Router
routine (module IGC3203D). This routine
identifies the first keyword in the command
and passes control to the appropriate
keyword processing routine. If the command
is one of the three task-creating VARY
commands (VARY CH, VARY CPU, and VARY
STOR), and if MCS is in the system" the
VARY Keyword Router routine passes control
to the MCS VARY Syntax Check routine
(module IGC3303D).. If MCS is not included,
the VARY Keyword Router routine passes
control to the VARY/UNLOAD Syntax Scan
routine (module IGC1103D).. In ei ther case.,
a unit scan is performed" and control is
passed to the VARY Operand Check routine
(module IGC2203D>. The VARY Operand Check
routine performs a syntax check of the
command operand. If errors are found" the
routine passes control to a message module
which informs the operator and returns
control to the supervisor. If no errors
are found, it passes control to the CSCB
creation routine (module IGC0803D). The
CSCB Creation routine creates and enqueues
a CSCB for the command, posts the master
scheduler, and returns control to the
supervisor.
The Master Scheduler Attach routine uses
the ATTACH macro instruction to pass
control to the appropriate module:
Command
VARY CH
VARY CPU
VARYSTOR

Module
IEEMPVCH
IEEMPVCP'
IEEMPVSE

The VARY Channel Command
The operator issues a VARY channel command
to change the status of a channel to online
or offline.
When it is entered, the VARY Channel
routine (module IEEMPVCH) makes several
decisions, and on the basis of these
decisions, it executes the command,.. rejects
it" or informs the operator that the
channel is already in the requested status:
• It checks the command operands in the
CSCB to ensure that valid operands were
used.
• It checks the CSCB to determine whether
the option is ONLINE or OFFLINE.
• It checks the channel availability
table in the PSA to determine whether
the channel is actually in the system,
whether it is online or offline., and
whether it is operational.

• For OFFLINE requests, the routine
checks to ensure. that the reserved path
to a shared direct access storage
device will not be made unavailable.
• For OFFLINE requests" if the channel
represents the last path to a device
(multiprocessing supports two paths to
each device from each CPU>, the routine
checks the command operands in the CSCB
for "UNCOND". The "UNCOND" operand is
effective only if the path is not to an
allocated device, to a permanently
resident data set, or to a tape device.
• It checks to ensure that executing the
command will not remove the last path
to an operator's console.
These checks, and the actions performed as
a result, are shown in Figure 38, the VARY
Channel Decision Table.
Online: The VARY Channel routine
determines if the channel to be placed
online is already online; if it is, the WTO
"Channel Online" message is issued. If the
channel is offline, the VARY Channel
routine marks all TCBs, except its own"
nondispatchable. It then uses the Task
Removal routine to force the other CPU to
halt execution of its currently active
task.
The online routine must be executed on
the CPU specified in the command. To get
onto the proper CPU" the routine places the
active timer on the desired CPU and issues
an STIMER wait. When the timer
interruption occurs, the VARY Channel task
is dispatched on the CPU that has the
active timer. For the duration of the
STIMER wait, external interruptions are
enabled .•
When the interval expires, the routine
marks the channel online in the channel
availability table, and uses the
Multiprocessing Test Channel routine in the
I/O supervisor to determine whether the
channel to be brought online is
operational, and whether there are any
catastrophic channel errors. The routine
also uses the MAP function of the IOSGEN
macro to determine which paths to the
devices attached to this channel are
available.
If for any reason the channel cannot be
used, the routine marks the channel offline
and uses the WTO macro instruction to
inform the operator that the channel is
offline. Next the routine determines
whether MCS is in the system. If it is not
a new alternate console may be designated
by the system. The routine then marks all
Part 5:

Command Processing

119

r---------------------T-----T-----T-----T-----T-----T-----T-----T-----T-----T-----T-----'
10perands Not Valid
1 XII
I
,
,
1
1
1
I
,
,
~---------------------t-----t-----+_----t-----t-----t-----f-----t-----f--~--t-----t-----~

'Operands Valid

,

J

X

,

X

,

X

,

X

,

X

,

X

,

X

,

X

,

X

,

X

,

~---------------------t-----t-----t-----t-----t-----t-----f-----t-----f-----t-----t-----t

'ONLINE Option

,

'X

1

X

I

X,

,

,

I

,

,

,

,

~---------------------t-----t-----t-----t-----t-----t-----f---t-----f-----t-----t-----~
'OFFLINE Option
I
I
,
,
I X , X ,
X 1 X , X , X I X 1
~---------------------t-----t-----t-----f-----t-----t-----t---~-t--~--+_----t-----t-----~

'Channel Online

1

'X,

,

1

'X

1

X

1

X

1

X

1

X

,

X

,

~---------------------t-----t-----t-----f-----t-----t-----t---t-----f-----t-----t-----~

IChannel Offline

,

1

'X,

X

,

X

1

I

I

I

I

I

I

~---------------------t-----t-----t-----f-----f-----t-----f-----t-----f-----t-----t-----~

,Channel Operational,

I

I

X,

,

,

,

I

I

,

,

,

~-----~---------------t-----t-----t-----t-----t-----t-----t---t-----f-----t-----t-----i

IChannel Not
I Operational

I
I
I
,
" I '

,
X,

,
I

,
I

,
I

I
I

,
,

,
,

I
I

~---------------------t-----t-----t-----t-----f-----t-----f-----t-----f-----t-----t-----~

'NO UNCOND Operand

,

I

I

I

I

I

I

X

I

X,

I

I

,

~-----------~---------t-----t-----t-----t-----t-----t-----f-----f-----f-----t-----t-----~

IUNCOND Operand

,

,

,

,

I

,

I

I

'X,

X,

,

~-----------~---------t-----t-----t----~t-----t-----+_----f-----t-----f-----t-----t-----~

'Channel Represents NO'
,
,
,
,
'Last Paths to Any
,
,
,
I
,
I Devices
I " ' "

,
,

,
I
X,

I
I
,

,
I
,

I
I
,

,
I
,

,
,
,

~---------------------t-----+-----t-----f-----t-----t-----f-----t-----f-----t-----t-----~

'Channel Represents,
I
,Last Path to an
,
,
IAllocated Device, a i '
IPermanently Resident ,
I
,Data Set, or a Tape'
I
I Device
1
I

,
,
1
,
I
1

,
,
,
I
I
1

,
,
,
,
I
,

,
,
,
,
,
1

,
,
,
,
,
1

,
,
1
,
I
,
I
I
I
I
XI'

I
1

,
,

I

,

,
,
X,

I
I
1

I
,
I
,
,
,

~---------------------t-----f-----t-----t-----t---~-t-----t-----f-----f-----t-----t-----~

IChannel Represents,
,
1
ILast path That is Notl
I
1
,to an Allocated
1
I
1
1Device" a Permanently 1
I
1
IResident Data Set.
1
I
1
la Permanently Mounted 1
1
1
,Device" or a Tape
,
I
,
IDevice
"I

1

1

I

I

,
,

,
,

I

,

1

,
I

,

,
,

'Channel Represents
I
I
,
,Last Path to
" I
10perator's console'
I
I

,

,

,
1
1
1
1
,

1
·1
1
1
1

I

I
,

1
I

,

,

1
1
1
1
1
1
1
I

X

1

1

I

I

1
1
1
1

I

,

I

I

1
1
1
1

1
1
1
1

1

1
1

I

I

I

1
I
XII
I
I

~---------------------+-----t-----t-----t-----f-----+-----f-----t--~--f-----t-----t-----~

,

,

I

1

I

I
,
,
,
I
I
,
I
I
I
I
,
,
,
I
I
X I
~---------------------t-----+-----t-----t-----t-----t----~f-----+-----f-----t-----t-----~
IDo Action Number
I
1 I 2 , 3 I 1 I 5 I 4 I 1 I 1
I 1
I
4 I 1 I
t---------------------~-----~-----~-----~-----~---~-~-----~-----~-----~----~-----~-----i
I

, Actions:
,
1. Reject Conu.t1and
,
2. WTO "Channel Online" message
I
3. Execute VARY Channel ONLINE
,
4. Execute VARY Channel OFFLINE
I
,5.
WTO "Channel Offline" message
L_______________________________________________________________________________________
JI

I
I
I
I

Figure 38.

VARY Channel Decision Table

tasks dispatchable" issues a dummy shoulder
tap to restart the channel being varied
online, unlocks the supervisor" and returns
control to the supervisor.
Offline: The VARY Channel routine
determines if the channel to be placed
offline is already offline~ if it is, the
WTO "Channel Offline" message is issued.
If the channel is online, the routine uses
120

OS/360 MVT Job Management (Release 21)

the MAP function of the IOSGEN macro to
determine whether the channel to be varied
represents the last path to one of its
devices. If so" the CSCB is checked for
the "UNCOND" operand. If "UNCOND" was not
specified, control is returned to the
supervisor. If "UNCONO" was specified" the
routine determines if the device is
allocated or permanently mounted or
contains a permanently resident data set.

If any of these conditions exist, the
command is rejected and control is returned
to the supervisor. If none of these
conditions exist" the device is checked to
ensure that it is not the only remaining
operator's console. If it is the only
console" the command is rejected and
control is returned to the supervisor. If
it is not the only console, the channel is
eligible to be marked offline.
Next the VARY Channel routine marks the
channel offline in the channel availability
table, uses the WTO macro instruction to
inform the operator that the command has
been executed, turns off the common bit in
the status field of the master scheduler
resident data area, and returns control to
the supervisor.
If MCS is in the system, and placing a
channel offline will result in removing the
last path to any console, the VARY Channel
routine issues a message to the master
console operator advising him that his
command is rejected and providing him with
the unit addresses of all active asymmetric
consoles on the channel,.
If MCS is not in the system, and a
channel is to be placed offline, the VARY
Channel routine examines the UCM entries
corresponding to the units on the channel
to determine whether the channel represents
the last path to any console. If so, and
if the console affected is the primary
console, a swap is performed so that the
alternate console becomes the primary
console" and a new alternate is found from
the list of consoles in the UCM. If the
alternate console is the console affected,
a new alternate is found,.

• It checks the CPU STAT byte in the PSA
to determine whether the system is in
mUltiprocessing or partitioned mode,
whether one or two CPUs are online, and
(if one CPU is online) which CPU is
online.
• For OFFLINE requests, the VARY CPU
routine checks to ensure that the CPU
being varied offline is not an element
of the reserved path to a shared direct
access storage device.
• For OFFLINE requests, if the CPU
represents the last path to a device
(multiprocessing supports two paths to
each device from each CPU) '. the routine
checks the command operands in the CSCB
for "UNCOND". The "UNCOND n operand is
effective only if the path is not to an
allocated device" to a permanently
resident data set, or to a tape device.
These checks,. and the actions performed as
a result are shown in Figure 39, the VARY
CPU Decision Table.
Online: The VARY CPU routine determines if
the CPU to be varied online is already
online; if it is, the WTO nCPU,Online n
message is issued. If the CPU to be varied
online is offline, the VARY CPU routine
loads location zero of eachPSA with a PSW.
The PSW that is stored in the PSA assigned
to the object CPU points to the
initialization routine to be executed by
that CPU. The PSW that is stored in the
other PSA points to an error routine that
will be executed by the object CPU if the
operator has the two prefix switches set
symmetrically,.

The VARY CPU Command
The operator issues a VARY CPU command to
change the status of a CPU to online or
offline.
When it is entered, the VARY CPU routine
(module IEEMPVCP) first enqueues the UCBs
and then makes several decisions,. On the
basis of these decisions, it executes the
command" rejects it" or infonns the
operator that the specified CPU is already
in the requested state:
• It checks the command operands in the
CSCB to ensure that valid operands were
used,.
• It checks the command operands in the
CSCB to determine whether the option is
ONLINE or OFFLINE.

When it has stored the PSWs, the VARY
CPU routine executes an External Start
instruction and begins testing the VRYCPU
byte located in the VARY CPU routine. This
byte is set to X'02' by the CPU to be
varied at the beginning of its
initialization routine. The VARY CPU
routine tests for X'02'; if the test is not
successful after X'2000X' tries, the
routine assumes that the External start
instruction was not successful. In that
case, the routine uses the WTO macro
instruction to inform the operator that the
command could not be executed and returns
control to the supervisor. If" however,
the test is successful, the routine
switches the CPU IDs in the' lock byte"
informs the CPU to be varied that
initialization is complete, and enters an
enabled wait state.

Part 5:

Command Processing

121

r-----------------------------------T---T---T---.--~---T---y---T---T---T---T--~T---T---'

I X II

IOperands Not Valid

I

I

I

I

I

I

I

I

I

I

I

.-----------------------------------+---+---+---+---+---+_--+_--+---+---+---+---+---+---i
IOperands Valid
I
I X I X I X I X I X I X I X I X I X I X I X I X I
.-----~-----------------------------+---+---+---+---+_--+---+_--+---+---+---+---+---+---i

IONLINE Option

I

I X I X I X I X I

IOFFLINE Option

I

I

I

I

I

I

I

I

I

I

.-~---------------------------------+---+---+---+--~+_--+_--+---+---+---+---+---+---+---i

I

I

I

I X I X I X I X I X I X I X I X I

.-----------------------------------+---+---+---+---+---+---f_--+---+---+---+---+---+---i
IMultiprocessing Mode
I
I
I X I X I X I
I X I X I X I X I X I X I X I
.-----------------------------------+---+---+---+---+---+---f_--+---+---+---+---+---+---i
IPartitioned Mode
II X I
I
I
I XI
I
I
I
I
I
I
I
.-----------------------------------+---+---+---+---+---+_--+_--+---+---+---+---+---+---i
11 CPU Online
I
I
I X I
I X I
I X I X I
I
I
I
I
I
.--------------~--------------------+---+---+~--+---+---+---+---+---+---+---+---+---+---i

12 CPUs Online

I

I

I

I X I

I

I

I

I X I X I X I X I X I

.-----------------------------------+---+---+---+---+---+---f_--+---+---+---+---+---+---l
I CPU (to be Varied) is online
I
I
I X I X II
I X I
I X I X I X I X I X I
J--------------------------..,---------+---+---+---+---+--~+---f_--+---+---+---+---+-- ..+---i
ICPU (to be Varied) is offline
I
I
I
I
I X I
I
I X I
I
I
I
I
I
.-----------------------------------+---+---+---+---+---+---+---+---+---+---+---+---+---l
INO UNCOND operand
I
I
I
I
I
I
I
II
I X I X I
I
I
.-----------------------------------+---+---+---+---+---+---f_--+---+---+---+---+---+---i
IUNCOND operand
I
I
I
I
I
I
I
I
I
I
I
I X I X I
.--------------------------------~--t---+~--+---+---+_--+---+_--+---+---+---+---+---+---i

I

I
I

I

I

I
I

I

I

I

I
I

I
I

I
I
I X I

IChannel on CPU Represents Last Path I
I to an Allocated Device" a
I
I Permanently Resident Data set,. or a I
ITape Device
I

I
I
I
I

I

I
I

I

I
I
I
I

I
I
I
I

I
I
I
I

I
I
I
I

I
I
I
I
I X I
I
I

Ithat is Not to an Allocated Device I
la Permanently Resident Data Set,
I
lor a tape device
I

.I

I

I

I
I

ICPU Represents No
I Devices

Last Path to Any I

I

I

I

I

I

I

I

I

I
I
I
I
I X I
I
I

I

I
I

I

I

I

.----------------------------------~+---+---+---+---+---+---f_--+---+---+---+---t---+---l

I
I
I

I
I

I
I
I

I

.-----------------------------------+---+---+---+---+---+---f_--+---+---+---+---+---+---i
IChannel on CPU Represents Last Path I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I

I

I

I

I

I
I

I
I

I

I

I

I

I

I

I

I

I

I

I

I
I

I

I
I
I X I
I
I

I

I

I X I
I
I

.-----------------------------------+---+---+---+---+---+---f_--+---+---+---+---+---+---l
IDo Action Number
I 1 I 1 I 4 I 4 I 5 I 1
1
2 I 3
1
1 I 1 I 3

• ___________________________________ ___ ___ ___ ___
~

~

~

~

I

i-_ -~--i---~---~--~---~---~---~---i

I Action:
I
I 1,. Re ject Command
I
2,.
WTO "CPU Offline" Message
I
3. Execute VARY CPU OFFLINE
I
I 4,. WTO "CPU Online" Message
I
I _______________________________________________________________________________________
5. Execute VARY CPU ONLINE
L
JI

I

Figure 39.

122

VARY CPU Decision Table

OS/360 MVT Job Management (Release 21)

When it is entered, the initialization
routine for the CP.U to be varied clears its
own registers and determines whether the
timer is enabled,. If, the timer is not
enabled" the initialization routine sets a
flag so that the Vary CPU routine will
issue a warning message that the timer is
not enabled,.
Next" the initialization routine saves
its external new and I/O new PSWs. In
order to trap any extraneous interruption
signals that may have been generated, the
routine loads a PSW that is enabled for
interruptions" then loads a disabled PSW.
It initializes the external and machine
check new PSWs for multiprocessing,
initializes its PSA" and then takes the
following steps to. verify tha.t the
channels, control units, devices, and paths
assigned to the CPU to be varied are indeed
available to it:
• It sets bit three in each channel
availability table entry to zero. This
bit is used only by the VARY CPU
routine to indicate that the channel
status is a result of a VARY CPU
command. When the CPU is again placed
online, the channel should therefore be
available to it,. And" since this bit
is independent of VARY Channel, any
channels varied offline by VARY Channel
remain offline.
• The routine uses the I/O supervisor Test
Channel routine to ensure that all
channels not marked offline in the
channel availability table are
operational. If a channel is not
operational" the initialization routine
sets bit one in the channel
availability table entry to mark the
channel offline; when the VARY CPU
routine informs the operator that the
command has been executed, it also
notifies the operator of any channels
on the CPU that are marked offline.
• The routine uses the MAP function of the
IOSGEN macro to get the path indicators
for each UCB.
• The routine uses the I/O supervisor Test
I/O routine to test the online paths
from this CPU to all devices except
offline direct access devices.. If the
return code indicates that the unit is
available" the UCB is marked online and
tape units are marked ready. A unit
check from any device except tape and
direct access is treated as a good path
and the device is marked online. If
the return code indicates that the
paths are unavai lab Ie" the routine uses
the IOSGEN macro instruction to mark
the paths offline if there is another

path available to the device and the
UCB is marked online; otherwise, the
path remains marked online.
The routine initializes the CONSOLID
field in the object CPU's PSA with the
address of its operator console if it is
operational. Then, it determines if MCS is
in the system.
If not a new alternate console may be
designated by the system.
When channel and unit availability have
been verified, the initialization routine
initializes the CPUSTAT byte in both PSAs
to X, 00". sets the second word of both
IEATCBP fields to zero, and initializes its
External and Machine Check New PSWs for
multiprocessing.. A dummy shoulder tap is
initiated to restart the channels on the
CPU just brought online. For systems
generated with the system management
facilities, a record containing the CPU ID,
the time, date, and the online routine is
built and written. All tasks are set
dispatchable.
The routine uses the WTO macro
instruction to inform the operator that the
command has been executed and to notify him
of any channels that are offline. The
routine de queues on the UCBs, turns off the
common bit in the status flags field of the
master scheduler resident data area, and
returns control to the supervisor.
Offline: The VARY CPU routine determines
if the CPU to be placed offline is already
offline; if it is" the WTO "CPU Offline"
message is issued. If the CPU is online"
the VARY CPU routine determines whether the
active timer and (in systems without MCS)
console device are on the CPU to be varied
offline or on the CPU that will remain
online. The routine inspects the PREFTMRA
field in the PSA for each CPU; the field in
the PSA for the CPU containing the active
timer is set at zero" and if that CPU is to
be placed off line, the routine switches the
active timer to the other CPU by exchanging
the contents of the two PREFTMRA and timer
fields. If (in systems without MCS) the
channel containing the active console
device is on the CPU to be varied (i.e."
the object CPU)" the routine posts the
console ECB, causing the Console
Communications routine to switch to the
alternate console device.
In system with MCS, the VARY CPU routine
examines the UCM entries to determine
whether there are any active asymmetric
consoles on the CPU. If s a, the routine
issues a message to the master console
operator advising him that his command is
Part 5:

Command Processing

123

rejected, and providing him with the unit
addresses of all active asymmetric consoles
on that CPU.

Using the MAP function of the IOSGEN
macro of the I/O supervisor, the routine
checks the paths of each device attached to
a channel that is online on the object CPU
to determine if the last available logical
path to the device is on the object CPU.
The command is rejected if the last path is
on the object CPU unless the "ONCOND"
parameter has been specified and the last
path is to a device that is not allocated,
does not contain any permanently resident
data sets, and is not a tape device,. Any
device that will have its last path removed
is marked offline by the pending bit in the
UCB and the last path bit in the negative
UCB. The operator's console on the object
CPU is always taken offline,. regardless of
the conditional parameter.
When the active timer and (in systems
without MCS) console device have been
switched to the CPU that is to remain
online, the routine sets all TCBs except
its own non-dispatchable, and uses the Task
Removal routine to force the other CPU to
halt execution of its currently active
task.
The VARY CPU routine then searches the
UCBs of the object CPU to determine whether
all I/O operations on that CPU have been
completed.
If there are I/O operations in progress,
the routine sets the timer for a
five-second interval and waits for the
interval to expire. When the interval has
expired, the routine again tests the UCBs
for incomplete I/O operations; the routine
continues requesting five-second timer
intervals and testing UCBs until all I/O
operations are completed" or until three
minutes have elapsed. The command is
rejected after three minutes if all of the
I/O has not been completed.

Once the timer has been set" the VARY
CPU task becomes non-dispatchable. No I/O
operations are in progress (and since all
tasks have been set non-dispatchable" none
will be initiated). The timer is in the
other CPU" the operator is forbidden to
depress the interrupt key,. and no shoulder
taps should occur. ~he CPU to be varied is
therefore in a wait state, enabled for
interruptions; when the timer interruption
occurs, it will occur in the other CPU.
Thus the other CPU will continue the
execution of the VARY CPU task.
When the timer interruption occurs" the
supervisor dispatches the VARY CPU task.
The VARY CPU routine issues a shoulder tap
to the CPU to be varied, which unlocks the
supervisor and executes a Diagnose Stop
instruction. :1.
When the CPU to be varied unlocks the
supervisor" the VARY CPU routine, being
executed by the other CPU, locks the
supervisor. The VARY CPU routine sets the
IEATCBP field in the PSA of the CPU to be
varied to point to the dummy high priority
task and adjusts the CPU STAT fields in both
PSAs to reflect the new configuration. The
routine sets all TCBs dispatchable" writes
an SMF record if the SMF function is in the
system, issues a WTO macro instruction to
inform the operator that the command has
been executed, and returns control to the
supervisor.
When channel and unit availability has
been verified, the Initialization routine
sets all TCBs dispatchable and initializes
the CPUSTAT byte in both PSAs.
It sets the
second word of both IEATCBP fields to zero,
initializes its external and machine check
new PSWs for multiprocessing, and uses the
WTO macro instruction to inform the
operator that the command has been executed
(and to notify him of any channels that are
offline). When the WTO macro instruction
has been issued, the VARY CPU routine turns
off the common bit in the status flags
field of the master scheduler resident data
area, and returns control to the
supervisor.
The VARY Storage Command

When all of the I/O operations have been
completed. the Vary CPU routine marks the
channels offline on the object CPU offline.
If MCS is not in the system, the alternate
console routine determines if a new
alternate must be found and searches the
UCMs to find another alternate if the
current one is scheduled to go offline.
The VARY CPU routine then tests the CPUID
byte in the PSA to determine whether it is
being executed on the CPU to be varied. If
so,. the routine unlocks the supervisor,
sets the timer, and waits.
124

OS/360 MVT Job Management (Release 21)

The operator issues the VARY storage
command to change the status of an area of
storage (except those areas allocated to
the supervisor) to online or offline. When
:1.The Diagnose stop instruction, located in
the PSA and named VARYSTOP, is followed by
an unconditional branch to the Diagnose
stop instruction. Thus, if the start key
is inadvertantly pressed, the system will
again stop.

the Command Scheduling routine recognizes
the command" it constructs a CSCB and adds
the CSCB to the chain. It posts the M.aster
Scheduler, and the Master Scheduler Attach
routine uses the ATTACH macro instruction
to pass control to the VARY Storage
routine.

Free areas of main storage are
represented by free block queue elements
(FBQEs), .which have the format shown in
Figure 41. The routine searches the free
block queue for FBQEs whose areas overlap
the area specified in the command" and
modifies the queue so that such areas are
no longer represented by FBQEs.

When it is entered, the VARY Storage
routine (module IEEMPVSE) inspects the
parameter type switch in the CSCB to
determine whether the storage address
parameters are expressed as an address
range or as a storage box number.

In order to determine whether the area
represented by the FBQE (the free block)
overlaps the area specified in the command
(the VARY area), the routine compares the
beginning and ending addresses of the free
block to the beginning and ending addresses
of the VARY area, and performs the
processing described in Figure 42.

If an address range is specified" the
routine converts the numbers to binary form
and orders them so that the smaller number
becomes the first address and the larger
number becomes the second address. The
routine then rounds the first address down
to the nearest lower multiple of 2048 (2R)
bytes" and rounds the second address up to
the next higher multiple of 2048 bytes. It
then converts the rounded off addresses to
EBCDIC form and stores them in the CSCB.
Thus the command is made to apply to all 2R
blocks of storage encompassed by the
specified address range and the operator
message written when the command has been
executed reflects the actual addresses
used ..

3

1
Reserved

Pointer to Next VQE

1

Reserved

1

3

Length of Spec! fi ed Area

4

VARY ECB

Figure 40.

Vary Queue Element (VQE)
1

Forward Poi nter

Reserved

1

If a storage box number is specified,
the VARY Storage routine computes the
second address as 262,144 (256R) times the
specified box number. It computes the
first address by subtracting 262,,144 from
the second address.

3

Lower Boundary of Speci fi ed Area

Reserved

Backward Pointer

Reserved

Reserved

1
Number of Bytes in Set of 2K Blocks

Note: The FBQE occupies the first three words of the area it represents.

Figure 41.

Free Block Queue Element (FBQE)

Offline: When it has determined the
addresses of the area to be set offline,
the VARY Storage routine ensures that the
area does not overlap any main storage
areas assigned to the super,visor. It
inspects the main storage supervisor
partition queue element (MSSPQE), which
specifies the lower limit of the main
storage available for allocation and the
extent of the area,. If the first address
specified in the command is smaller than
the address in the MSSPQE, or if the second
address in the command is larger than the
address in the MSSPQE plus the length of
the area, the area specified in the command
includes main storage allocated to the
supervisor,. In this case" the routine
rejects the command,.

When the VARY Storage routine has
dequeued an FBQE (or modified one so that
an area of storage is no longer
represented), it marks the storage area
offline in the fail soft storage area map
(FSSEMAP) • Each PSA contains a copy of the
FSSEMAP, which is an area of 2048 bits (64
words). Each 2R block of main storage is
represented in the FSSEMAP by two bits:
bits 0 and 1 correspond to block O~ bits 2
and 3 correspond to block 1, etc. The two
bits are set on if the corresponding block
of main storage is offline, and they are
set off if the block is online. When it
has marked an area of storage offline, the
VARY Storage routine continues its search
of the free block queue.

If the routine accepts the command, it
constructs a vary queue element (VQE),
which is shown in Figure 40.. Then it
searches for areas of main storage '(within
the area specified in the command) that are
"free", e.g." not allocated •.

When it has terminated the search, the
VARY Storage routine examines the FSSEMAP
to determine whether the command has been
completely executed, or whether there are
blocks of storage in the area specified in
the command that are allocated as regions
and therefore are not represented by an
Part 5:

Comm~nd

Processing

125

SITUATION

ACTION

V

F

Free Block

F

=::oj

b=

W

VARY Area

==1

G

V

t=

W

VARY Area

=1

f:==

Free Block

=-:j

F

I-

If this situation exists, there is an area ot
the lower end of the free block that wi II
remain online. The routi ne bui Ids and
enqueues an FBQE that represents the area
from V to G, and modifies the original
FBQE to represent the area from F to V.

W
VARY Area - - - - - - +
Free Block

F

---

......
G

V

.... --

-+--F

W

VARY Area
Free Block

If this situation exists, the areas do not
overlap, and since no succeeding free
blocks wi II overlap the VARY area, the
search ends.

G

V

I-

If this situation exists, the areas do not
overlap, but there may be free blocks
that do overlap the VARY area; the search
continues.

-I

·1
G

If this situation exists, there is an area at
the upper end of the free block that will
remain online. The routine builds and
enqueues an FBQE that represents the area
from W to G, and deletes the original FBQE
(or the one built as a result of situation 4).

Note: The letters V and W represent the beginning and ending addresses of the main starage area specified in the VARY command; the letters F and G
represent the beginning and ending addresses of the area represented by the FBQE.

Figure 42.

The VARY STOR OFFLINE Command

FBQE. If there are areas of storage that
must still be set offline to satisfy the
command, the VARY Storage routine issues a
WAIT'macro instruction specifying the ECB
in the VQE. This ECB may be posted by. a
routine used in the execution of the
FREEPART macro instruction (if the region
of storage freed overlaps the VARY area),
or it may be posted by the VARY storage
routine when it is executing an overriding
VARY ONLIN.E command.
When the ECB has been posted" the VARY
Storage routine examines the length field
in the VQE. If the length field is zero,
the ECB was posted by the VARY Storage
routine executing an overriding VARY
command. In this case~ the VARY Storage
routine uses the WTO macro instruction to
inform the operator that a VARY command was
overridden by a subsequent VARY command,
dequeues the VQE~ and returns control to
the supervisor.•
If the VQE length field is not zero, the
ECB was posted during execution of the
FREEPART routine.. In this case" the VARY
Storage routine scans the FSSEMAP to
determine whether there are any storage
blocks specified in the command that were
not set offline during execution of the
FREEPART routine. If so, the command has
still not been execut~d., and the routine
again issues the WAIT macroinstruction.
126

OS/360 MVT Job Management (Release 21)

If" however" the entire area specified in
the command has been set offline, the
command has been executed; the routine uses
the WTO macro instruction to inform the
operator, dequeues the VQE" reduces the
VARY Storage count by one" and returns
control to the supervisor.
Online: When it has calculated the
addresses bounding the area to be set
online, the routine determines whether the
command overrides a previous VARY command
that has not yet been completely executed.
The routine searches the vary queue,
looking for a VQE that represents the same
address range specified in the current
command.
If the routine finds a VQE whose area
partially overlaps the area specified in
the current command" the VARY storage
·routine re jects the current command. If"
however" it finds a perfect match, the
routine sets the length field in the VQE to
zero and posts the ECB in the VQE. This
notifies the. routine executing the
overridden command that the command has
been overridden.
When it has issued the POST macro
instruction, or if no matching ( or
overlapping} VQE was found, the routine
compares the address range specified in the

VARY command with the address range in the
MSSPQE.. If the area specified in the
command overlaps .an area allocated to the
supervisor, the routine adjusts the address
range to remove the overlap.

RETURN macro instruction" or when a CANCEL
command, using the writer device name as a
jobname" causes the Command Scheduling
routine to post an ECB in the CSCB that
represents the data set processing subtask.

When it has made any necessary
adjustments, the routine verifies that the
storage specified in the command is
physically present in the sytem. If the
specified storage is not in the system, the
routine uses the WTO macro instruction to
inform the operator, then returns control
to the supervisor.•

The CANCEL Processor routine (module
IGC3703D) of the Command Scheduling SVC 34
routine searches the chain of CSCBs for the
one that represents a step of the job to be
canceled. If no such CSCB is found, the
job has not been selected., and a new task
must be established to manipulate the input
queue (see nTask-Creating Commands n ).

If the specified storage is in the
system, the VARY storage routine marks each
block online in the FSSEMAP, and constructs
or extends an FBQE to represent the block.

If the CSCB is found, it is marked
"canceled n and a POST macro instruction is
issued to the cancel ECB in the CSCB. If
TSO is active, the POST macro instruction
is issued with the TJID. The TJID is the
non-zero TSO terminal job identification
number. If TSO is not in the system, the
TJID is zero.

When each 2K block in the specified area
has been brought online., the routine uses
the WTO macro instruction to inform the
operator that the command has been
executed, turns off the common bit in the
status flags field of the master scheduler
resident data area, and returns control to
the supervisor.

The POST macro instruction causes an SVC
interruption. The executing job step will
thus lose control of the CPU; since the
initiator has a higher priority than the
job step, the initiator will regain control
first.

EXISTING-TASK COMMANDS
There are certain commands that must be
executed by routines performing tasks
currently established in the system. The
DISPLAY JOBNAMES command, for example, can
only be executed by existing initiators.
These commands are called existing-task
commands.
The CANCEL Command
When an initiator starts to process a job,
it creates and enqueues a CSCB to represent
the job step.. During the process of
initiation the CSCB is checked for a cancel
indication; if the command is received
before the job step's TCB is attached, the
job is immediately terminated.
If no CANCEL command is received, the
ATTACH macro instruction is issued and the
initiator goes into the wait state; it
becomes ready again when a program
executing the step issues the RETURN macro
instruction" or when a CANCEL command
causes the Command Scheduling routine to
post an ECB in the CSCB for the job step.
Similarly, the DSB Handler routines of
the system output writer create a CSCB to
represent the data set processing subtask
(which may be executed by the Standard
Writer routine or by a user-supplied
program). When the subtask has been
attached, the writer task enters the wait
state; it becomes ready again when the
program executing the subtask issues a

When it gets control, the initiator
checks the ECBs in the CSCB.
If the cancel
ECB has been posted, it marks the CSCB to
indicate that an abnormal termination
(ABTERM) is required, and issues SVC 34,
with register 1 negative, and pointing to
the CSCB. The Chain Manipulator routine
(moduleIGC0003D> of the Command Scheduling
routine branches to the ABTERM routine,
which modifies the job step's PSW to
request abnormal termination, then returns
control to the initiator. The initiator
goes into the wait state until control is
again passed to it by the terminating job
step.
When the initiator goes back into the
wait state, the job step regains control.
Since, however, its PSW has been altered to
request abnormal termination, the ABTERM
immediately occurs.
The CANCEL command can be issued from a
TSO terminal or from an operator's console
to terminate a TSO terminal session or a
background job. The processing of a CANCEL
command that is issued from the TSO
terminal is described in the TSO Command
Processor PLMs.
The MONITOR DSNAME Command
This command is stored when the
DISPLAY/MONITOR Commands Router routine
(module IGC3503D) of the Command Scheduling
routine turns on bit 4 in byte MSSSB in the
common area of the master scheduler
Part 5:

Command Processing

127

resident data area,.
(If the MONITOR DSNAME
command is issued from a TSO terminal,
module IGC3503D turns on bit 1 of byte
BAMONITR in the common area of the master
scheduler resident data area. TSO
processing of the MONITOR DSNAME command is
described in the TSO Command Processor
PLMs.)
Four routines execute the MONITOR DSNAME
command: two allocation routines, AVR and
External Action" execute the command to
include the data set name in mount
messages; the Step Termination and Job
Termination routines execute the MONITOR
DSNAME command to include the data set name
in demount messages. The names of
temporary data sets are not displayed. If
the MONITOR DSNAME command is in effect,
the four routines execute it in the
following ways:
• AVR -- The AVR routine locates the
first non-temporary data set and
requests the Queue Management routine
to read the appropriate JFCB into main
storage,. The data set name (less
extraneous blanks) is extracted from
the JFCB and placed into the mount
message,.
• External Action -- Prior to issuing a
mount message for a TIOT entry, the
External Action routine scans the TIOT
for a nontemporary data set that is
allocated to the requested volume or
device.
Such a nontemporary data set
is eligible for display if neither
deferred mounting nor unit affinity is
specified. If an eligible data set is
found, the External Action routine
requests the queue manager to read the
appropriate JFCB into main storage.
The External Action routine extracts
the data set name from the JFCB and
inserts it into the mount message. If
no eligible data set can be found, the
data set name is omitted from the mount
message,.
• Step Termination -- The Step
Termination routine (module IEFZGST1)
requests queue mangement to read the
JFCB associated with the TIOT device
entry for which a demount message is to
be issued. The TIOT is scanned for the
first nontemporary data set allocated
to the device.
If such a data set is
found" the volume serial number(s) in
the JFCB are compared with the serial
number of the volume to be demounted;
if a volume serial number is equal to
the serial number of the volume to be
demounted, termination message module
IEFZHMSG extracts the data set name
from the JFCB, inserts it into the
demount message, and issues a WTO or a
TPUT (if the command was issued from a
128

OS/360 MVT Job Management 

TSO terminal) macro instruction. If no
eligible data set can be found,. the
data set name is omitted from the
demount message.
• Job Termination -- The displaying of
the data set name in job termination
demount messages is restricted to tape.
the Job Termination routine executes
the MONITOR DSNAME command during the
processing of unreceived passed data
sets on tape volumes. Prior to
constructing a KEEP disposition message
for a nontemporary data set, the Job
Termination routine extracts the UCB
pointer from the PDQ block entry and
the volume serial number from the JFCB.
If the volume is mounted, termination
message module IEFZHMSG extracts the
data set name from the JFCB, inserts it
into the demount message, and issues a
WTO or a TPUT (if the command was
issued from a TSO terminal) macro
instruction.
If no eligible data set
can be found, the data set name is
omitted from the demount message.
The MONITOR JOBNAMES Command
The DISPLAY/MONITOR Commands Router routine
(module IGC3503D) of the Command Scheduling
routine stores this command by setting bits
in the master scheduler resident data area:
• The job notification bit (BAJN)
indicates that the job's name is to be
displayed on the requesting console
output device when the first step of
the job is initiated and when the last
step of the job is terminated.
• The time notification bit (set only if
the optional keyword T is used in the
command) indicates that the time is to
be included in the message.
• If the MONITOR JOBNAMES command is
issued from a TSO terminal, module
IGC3503D sets bit 0 in byte BAMONITR in
the common area of the master scheduler
resident data area. TSO processing of
the MONITOR JOBNAMES command is
described in the TSO Command Processor
PLMs.
The MONITOR JOBNAMES command is executed
in the Allocation Entry routine and in the
Job Termination Exit routine.
The DISPLAY R Command
The DISPLAY R command identifies and
displays requests for operator action that
have not been satisfied: messages
requiring a reply, and volume mounting
instructions that have not been executed.

The task of executing the DISPLAY R command
is performed by the DISPLAY Requests
routine (module IEE2903D), which gets
control when the DISPLAY/MONlTOR Commands
Router routine (module IEE3503D) determines
that the DISPLAY command has the R operand.
The DISPLAY Requests routine operates in
the SVC Transient Area.

When the output buffer is full, the
routine uses a WTO macro instruction or, if
the DISPLAY R command was issued from a TSO
terminal, a TPUT macro instruction to pass
the message IDs and unit addresses to the
operator. When the scan is complete and
the last message has been written., the
routine frees the main storage obtained for
the buffer and returns control to the
superv is or .•

The DISPLAY R command may be issued from
a console or from a TSO terminal.. If the
command is issued from a console device,
the console identifier is passed to the
Display Requests routine in the UCMI field
of the XSA of the SVRB. If the command is
issued from a TSO terminal, the terminal
identifier is in the TJID field of the XSA
of the SVRB.
(See the TSO Command
Processor PLMs for a detailed discussion of
TSO processing of the DISPLAY R command.)

The MONITOR SPACE Command

The DISPLAY Requests routine first looks
for operator messages awaiting a reply. It
scans the reply queue, extracts the
two-byte message ID from each reply queue
element (RPQE), and stores the IDs in a
72-byte output buffer. 1
Next, the DISPLAY Request routine
searches for outstanding mount messages .•
It scans the list of UCBs, and in each UCB
it tests the high-order bit in the SRTEDMCT
field.
If the bit is on, i t means that a
mount message has been issued, and if the
unit is a direct access device., that the
correct volume has not yet been mounted.
In this case, the routine stores the unit
address in the output buffer.
If the unit is a tape device, the
identity of the volume is not verified
until a data set is opened. The Display
Requests routine assumes that if the unit
is in the ready state, the mounting
instructions have been executed..
If the
unit is not in the ready state, the
operator has not yet mounted a volume, and
the routine stores the unit address in the
output buffer.
If the high-order bit of the UCB field
SRTEDMCT is not on, the Display Requests
routine tests the UCBAT1 field.
If the
field is not zero, an AVR mount message has
been issued., but the operator has not yet
mounted the requested volume.
In this
case., the routine sets a switch, and at the
end of the display indicates to the
operator that an AVR mount message is
pending.
1see the MVT supervisor Program Logic
Manual for information on the reply queue
and RPQE.

This command is stored when module IGC3503D
of the Command scheduling routine turns on
bit 5 in byte MSSSB of the common area of
the master scheduler resident data area.
(If the MONITOR SPACE command is issued
from a TSO terminal, module IGC3503D turns
on bit 2 in byte BAMONITR instead of bit 5
in byte MSSSB. TSO processing of the
MONITOR SPACE command is described in the
TSO Command Processor PLMs.)
The MONITOR SPACE command is executed by
the I/O Device Allocation routine and by
the Job Termination and Step Termination
routines. When a direct access volume is
to be dismounted, the External Action
routine (module IEFWDOOO) of the I/O Device
Allocation routine, or the Termination
Message routine (module IEFZHMSG) tests bit
5 of byte MSSSB.
If the bit is on, the
routine issues SVC 78, (see the DADSM PLM),
to obtain information on the amount of
space available on the volume, then
includes the information with the demount
message.
The DISPLAY SQA Command
An operator uses the DISPLAY SQA (system
queue area) command when he wants to know
how much free storage remains in the system
queue area. When the Display Router
routine (in module IGC3503D) recognizes the
DISPLAY SQA command, it issues an XCTL
macro instruction to give control to module
IGC8503D. This module causes disabling of
the system while it obtains the low and
high boundaries of the system queue area
and the amount of free storage available.
(This latter value is determined by
chaining through the free queue elements
(FQEs). See the Main Storage supervision
section of the MVT Supervisor Program Logic
Manual.) The module then causes enabling
of the system to occur and issues a WTO
macro instruction to display the
information just obtained.
The MONITOR STATUS Command
This command is stored when the
DISPLAY/MONITOR Commands Router routine of
the Command Scheduling routine turns on the
MSDISPST bit in the master scheduler
resident data area.
(If the MONITOR STATUS
Part 5:

Command Processing

129

command is issued from a TSO terminal,
module IGC3503D turns on bit 3 in byte
BAMONITR instead of the MSDISPST bit.. TSO
processing of the MONITOR STATUS comm-and is
described in the TSO Command Processor
PLMs .• ) Each initiator tests the bit when
it terminates a job step; if the bit is on,
the Step Termination routine uses a WTO or
TPUT macro instruction to display the
disposition of the data sets used in the
step.
The DISPLAY T Command
This command is executed entirely within
the Command scheduling routine.. The
DISPLAY/MONITOR Commands Router routine
(module IGC3503D) issues the TIME macro
instruction to obtain the time and date.
It then re-formats the information and uses
a WTO or TPUT macro instruction to display
the time of day and the date to the
requesting operator.•
The DISPLAY T command may also be issued
from a TSO terminal. TSO processing of the
DISPLAY T command is described in the TSO
Command Processing PLMs.
--The MSGRT Command
The MSGRT (MR) command establishes default
routine instructions (L=xxx operands) for
the DISPLAY., MONITOR, STOPMN and CONTROL
commands. When the Router routine
(IGC0403D) determines that a MSGRT command
is to be executed., it passes control to the
MSGRT Command Handler 1 routine (IGC6303D).

Message Routing Control Table (MRCT)
already exists for that console. If no
table exists, the routine issues a GETMAIN
macro instruction for the required storage
and enters the command operands and routing
defaults in the MRCT.
Storage for the MRCT is requested in
48-byte sections. Each table section
consists of five 8-byte ndata n entries and
one 8-byte address entry. Each address
entry may pOint to an additional 48-byte
table section (there may be several
additional sections; the address entry of
the last table section contains zeros). A
data entry in the MRCT consists of a 1-byte
control byte, a 2-byte command code, a
2-byte operand code, a 1-byte console
identifier" a 1-byte display area
identifier, and one unused byte. For
example, an MRCT entry establishing default
routine operands for a DISPLAY Q command
(routing all DISPLAY Q commands to console
n09 n and display area nAn) would appear as
follows:

o

1

3

5

6

7

8

r----T-----T-----T------T-----T------,

Il ____
01 LI _____
D I _____
Q I ______
09 I _____
A LI ______
00 JI
~

~

~

8 bytes
Each command-and-operand combination for
which routine defaults are established
comprises one entry in the MRCT.

The MSGRT Command Handler 1 routine
first determines which command and operand
has been entered. If the REF operand has
been entered, the routine passes control to
the MSGRT Command Handler 2 routine
(IGC6403D). Otherwise, the MSGRT Command
Handler 1 routine scans the command for
syntax errors.. If errors exist., the
routine sets an appropriate message code in
the XSA and passes control to the MSGRT
Command Handler 2 routine (IGC6403D). This
routine determines that a message is to be
written and passes control to the MSGRT and
CONTROL (MR and K) Message Module 1 routine
(IGC5603D), which writes the proper message
to the operator's console.

If the MSGRT Command Handler 1 routine
determines that an MRCT already exists for
a console, it checks the table to determine
if it already contains an entry for the
command-and-operand combination that was
entered. If a duplicate entry is found,
the routine changes the console
identification number byte and the display
area identifier byte as appropriate to
reflect the new default routing
instructions. If no duplicate entry is
found., the routine must make a new table
entry. The routine searches for free space
in an existing table and, if space is
found, it places the new entry in the
existing table. If no space is found, the
routine issues a GETMAIN macro instruction
for another 48-byte table, and places the
entry in this new table section.

If the MSGRT Command Handler 1 routine
does not find syntax errors, it checks the
routing location (L=xxx) operands of the
command for valid console identification
number and display area identifier. If the
routine finds invalid operands., it sets an
error code in the XSA and passes control to
the message module to write a message to
the operator's console. If the L=xxx
operands are valid, the MSGRT Command
Handler 1 routine checks the requesting
console's UCM entry to determine if a

MSGRT REF: When the MSGRT Command Handler
1 routine determines that the operator has
entered a MSGRT REF command, it passes
control to the MSGRT Command Handler 2
routine. This routine locates the MRCT and
formats the entries for display. The
routine then determines if the entering
console is a display (CRT) console. If so,
the routine places the table in the entry
area of the Display Control Module (DCM) so
that it may be written to the screen, and
it sets a code in the XSA to cause a

130

OS/360 MVT Job Management (Release 21)

display of the "CHANGE OPTIONS" message.
If the issuing console was not a CRT. the
routine uses the WTO macro instruction to
write the display of message routing
defaults.
The CONTROL Command
When the Command Verb Checker routine
(IGC0403D) determines that a CONTROL
command is to be executed, i t passes
control to the Routing Location module
(IGC7503D). This routine scans the command
for routing (L=xxx) operands. If complete
routing instructions have been specified,
it places them in the extended save area
(XSA).
If no routing operands, or only
partial routing operands, have been
specified, the routine checks the routing
control table for default routing operands.
If it finds default values, it places them
in the XSA.
If no defaults are found, the
routine identifies the issuing console as
the receiving console and defaults the area
identifier to a null value (the first
available area will be used). After the
routine identifies the console address and
display area. it places appropriate
indicators in the XSA.
The Command Verb Checker routine then
passes control to the CONTROL Command
Handler 1 routine (IEE6703D). This routine
checks the syntax of the command and, if
major operands A, M, V or C have been
entered, passes control to the appropriate
routine as described in the following
sections:
CONTROL A: The CONTROL Command Handler 4
routine (IEE7803D) receives control from
the CONTROL Command Handler 1 routine for
all CONTROL A commands. This routine
checks the syntax of the command. If the
syntax is invalid, module IEE7803D passes
control to the MSGRT and CONTROL Message
Module (IEE5603D).
If the CONTROL A
command syntax is valid and the command is
other than CONTROL A,REF or CONTROL A,NONE,
module IEE7803D passes control to the
CONTROL Command Handler 2 routine (module
IEE6803D). This routine first scans for
syntax errors and invalid area definitions.
If any are found, it sets an error code
in the XSA and passes control to the MR and
K Message Module (IGC5603D), which writes
an error message to the operator's console.
If the routine finds no errors, it
determines whether an existing area is
being changed or a new area is being
defined. If an operator is changing an
existing area, the routine changes the
existing screen area control block (SACB)
in the resident portion of the display
control module (DCM). If an operator is
defining a new area, the routine issues a

GETMAIN macro instruction so that
additional SACBs may be built.
CONTROL A,REF and CONTROL A,NONE: The
CONTROL Command Handler 4 Routine
(IEE7803D) receives control from the
CONTROL Command Handler 1 Routine for all
CONTROL A Commands. This module checks the
syntax of the command.
If the syntax is
invalid, the module passes control to the
MSGRT and CONTROL Message Module (IEE5603D)
for an error message.
If the command is a
valid CONTROL A,REF or CONTROL A,NONE
command, module IEE7803D passes control to
the COMMAND Command Handler 5 routine
(IEE6903D) to determine which command has
been entered.
If a CONTROL A, REF command has been
entered, or if a CONTROL A command has been
entered without any other operands (this
condition defaults to a CONTROL A, REF
command condition), the CONTROL Command
Handler 5 routine obtains the sizes of all
existing display areas from the screen area
control block. If the console that issued
the command is a display console, module
IGC6903D builds a message in the entry area
of the DCM and sets a code in the XSA to
indicate that the "CHANGE OPTIONS" message
also should be written to the operator's
console. If the console is not a display
console, module IGC6903D uses the WTO ~acro
instruction to write the display.
If a Control A,NONE command (indicating
that all display area definitions are
cancelled) has been entered, the CONTROL
Command Handler 5 routine first determines
whether any displays are currently being
displayed in the areas that are being
cancelled. If so, the routine rejects the
command and passes control to the MR and K
Message Module (IGC5603D), which writes an
appropriate error message to the operator's
console.
If no displays are in the
cancelled areas, the routine reinitializes
the screen area control blocks contained
within the resident portion of the DCM
(these are the blocks defined during system
generation). The routine also issues a
FREEMAIN macro instruction to release the
screen area control blocks that were added
(by means of a GETMAIN macro instruction)
after system generation.
CONTROL M and CONTROL V: The CONTROL
Command Handler 3 routine (IGC7703D)
receives control from the CONTROL Command
Handler 1 routine whenever a CONTROL M
Command or a CONTROL V command is entered.
If the CONTROL V command has been
entered, the routine sets flags in the UCM
to indicate the new console status, and
posts the ECB of the UCM to change the
console status.
Part 5:

Command Processing

131

If the CONTROL M command has been
entered, the routine first determines
whether the issuing console was the master
console (the CONTROL M command can only be
entered validly through the master
console). If the issuing console was not
the master console, the routine passes
control to the MR and K Message Module
(IGC5603D) for an error message..
If· the
issuing console was the master console, the
routine scans the command operands. If
operands K M, REF, or K M with no other
operands (which defaults to a K M, REF
condition) have been entered, the routine
either displays the current value for the
system timer in the entry area (if the
issuing console is a display (CRT) console)
or uses a WTO macro instruction to write
the current value to the console.
If the command CONTROL M, UTME=nnn has
been entered, the CONTROL Command Handler 3
routine determines if the value of the nnn
field is valid (it must be a value between
30 and 999).
If the specification is
valid, the routine changes the time field
in the UCM to reflect the new value.
CONTROL C: A CONTROL C command is entered
to cancel a status display. The CONTROL
Command Handler 4 routine receives control
from the CONTROL Command Handler 1 routine
whenever a CONTROL C command is entered.
The routine first checks the command
syntax and the display identification
number for validity. If either is invalid,
the routine sets a message code in the XSA
and passes control to the MR and K Command
Message Module (IGC5603D) for an
appropriate error message.
If the command
is valid, the routine searches the console
output queue for a WQE with an
identification number that corresponds to
the identification number specified in the
CONTROL C command.
If a corresponding
number is found, the routine removes the
message from the queue. If one is not
found, the routine sets an error code in
the XSA and passes control to the MR and K
Message Module to write an error message.
Other CONTROL Command Operands: The
CONTROL Command Handler 1 routine handles
all other CONTROL command operands. The
routine schedules commands for execution
according to the operands entered, by
building a parameter list either in the DCM
(for commands routed only to the . issuing
console) or in an area of main storage for
which the routine issues a GETMAIN macro
instruction (for commands routed to
consoles other than the issuing console).
The parameter list consists of the command
plus the appropriate display area and
console identifiers. Device Independent
Display Operator Console Support (DIDOCS)
routines (described in IBM system/360
132

OS/360 MVT Job Management (Release 21)

Operating system: MVT supervisor Program
Logic Manual, GY28-6659) perform the actual
execution of the commands.
The HALT Command
The HALT command is executed by the
statistical Update routine (see the I/O
Supervisor Program Logic Manual) as a
result of an SVC 76 issued by the HALT and
SWITCH SMF Commands Processor (module
IGC1403D) of the Command Scheduling
routine.
The MODE Command (Models 85, 145, 155, and
165 Only)
The operator issues the MODE command with
Models 85, 145, 155, and 165 to display the
status of certain machine functions or to
control the mode for recording recoverable
machine errors. With the Model 85, the
MODE command is also used to reactivate
deleted sectors in the high-speed buffer
storage area and to reactivate the
high-speed mUltiply circuitry. With the
Model 165, the MODE Command is also used to
reactivate the high~speed buffer storage
area.
When the operator issues the MODE
command, the Command Router routine (module
IEE0403D) passes control to the MODE
Command Router routine (module IGF2603D).
The MODE Command Router routine determines
the machine model and uses the XCTL macro
instruction to pass control to the
appropriate Machine status Control routine.
These routines execute the MODE command.
For Model 85 there are two Machine
Status Control routines (modules IGF08501
and IGF08502) while for Models 145, 155 and
165 there is only one apiece (modules
IGF29701, IGF29601 and IGF55301
respectively). The following paragraphs
describe the operation of these five
routines:
• Machine S~atus Control routine for
Model 85, Part 1 ,(module IGF08501)
This routine receives control from the
MODE Command Router routine.
If the
STATUS parameter is specified in the
MODE command, the routine obtains
machine status information from the
machine status block (MSB) for the
Model 85 (see Figure 43) and uses a WTO
macro instruction to display the status
message on the active system console
device. The following data is included
in the status message:
1) HIR mode, threshold, present error
count.

2) ECC mode, threshold, present error
count.
3) Sector deletions.
4) Status of multiply feature.
5) Status of high-speed buffer.
After processing the STATUS parameter,
the routine exits via SVC 3 to the
supervisor.
If the STATUS parameter is not
specified in the MODE command, IGF08501
passes control to IGF08502 which
processes all other command parameters.
• Machine Status Control routine for
Model 85, Part 2 (module IGF08502)
This routine processes five command
parameters:
INIT, HIR, ECC, SECT, and
HSM.
INIT
The routine sets the following
machine features to their initial
status: it enables the high-speed
buffer by setting bit 33 in the RESMCW
field of the Model 85 MSB to zero; it
reactivates previously deleted and
repaired sectors of the high-speed
buffer by resetting corresponding bits
in the RESECT field to zero; it
reactivates high-speed multiply
circuitry by reinitializing bit 8 in
the RESMCW field to zero; it sets the
machine recovery facilities, HIR and
ECC, to recording mode by setting bits
36-39 of the RESMCW to zero; and it
resets the threshold count to the value
that was specified at system generation
time.
HIR -- The routine sets the Hardware
Instruction Retry facility to either
recording mode or count mode. If the
operator requests recording mode, the
routine sets bits 36 and 37 in the
RESMCW field to zero. In recording
mode, every machine check error causes
an interruption, and the Machine Check
Handler routine formats and writes an
error message to the operator using a
WTO macro instruction. The operator
specifies a threshold number for
recording mode which is the number of
interruptions to be take.n before MCH
switches to count mode. This number is
stored in the RETHIR field of the Model
85 MSB. A count of each recoverable
error is kept in the RELHIR field.
When a comparison indicates that the
threshold has been reached, RMS
processes the machine check, and then
the switch from recording to count mode
is made.

If the operator requests the count
mode, the routine sets bits 36 and 37
in the RESMCW field to zero and one
respectively. The routine stores the
threshold number for count mode in the
RETHIR. A counter in low storage is
incremented each time a recoverable
machine error occurs, and MCH is not
entered until the threshold count is
exceeded.
ECC -- The routine sets the Error
Correction Code to either recording
mode or count mode.
If recording mode
is requested, the routine sets bits 38
and 39 in the RESMCW field to zero and
places the threshold count in the
RETECC field of the Model 85 MSB. The
procedure described above for HIR is
followed.
If count mode is requested,
bits 38 and 39 are set to zero and one
respectively. The threshold number for
count mode is placed in the RETECC and
the procedure described above for HIR
is followed.
SECT -- The Machine Status Control
routine, Part 2, reactivates previously
deleted and repaired sectors of the
high-speed buffer by setting
corresponding bits in the RESECT field
of the Model 85 MSB to zero.
HSM -- The routine causes bit 8 in the
RESMCW field to be reinitialized to
zero allowing the high-speed multiply
circuitry to be used.
When processing of the command parameter is
completed, the routine passes control to
the supervisor via SVC 3.
• Machine status Control routine for
Model 155 ,(module IGF29601) -- This
routine receives control from the MODE
Command Router routine when the
operator issues the MODE command with
the Model 155. The routine determines
which of the three command parameters
(STATUS, HIR, or ECC) is specified and
takes the appropriate action:
STATUS
The routine obtains machine
status information from the machine
status block (MSB) for the Model 155
(see Figure 43), which is pointed to by
the CVTRMS field of the CVT. Then the
routine uses a WTO macro instruction to
display the status message on the
system console device. The following
data is included in the status message:
1) HIR mode, current error count, error
threshold, elapsed time or 'INVL',
time threshold.
2) ECC mode, current error count, error
threshold, elapsed time or'INVL',
time threshold.
3) Buffer pages deleted.
Part 5:

Command Processing

133

HIR -- The routine sets the hardware
Instruction Retry facility to either
recording or quiet mode depending on
the parameter specified by the
operator.
In recording mode, every
machine check causes an interruption,
and the Machine Check Handler routine
issues an error recovery report.
The
recording mode may be requested with or
without specifying threshold values,
i.e., the number of errors and the time
allowed before the Machine Check
Handler routine switches to quiet mode.
If threshold values are not furnished
by the operator, IBM default values are
used. In either case, the routine
stores the error threshold and the time
threshold in the appropriate MSB fields
(see Figure 43). Then the routine
places zeros in the error and time
counters which are also in the MSB.
In quiet mode. soft machine check
interruptions are disabled, and the
Machine Check Handler routine does not
prepare recovery reports. If the
operator requests the quiet mode, the
Machine status Control routine for
Model 155 sets bit 4 of control
register 14 on. Because of hardware
design, if HIR is placed in the quiet
mode, ECC is also placed in the quiet
mode.
ECC -- The routine sets the Error
Correction Code to either recording or
quiet mode. As for HIR, the operator
may request the recording mode with or
without specifying threshold values.
The procedure described above for HIR
is followed; however, the routine uses
different fields of the MSB (see Figure
43). If the operator requests the
quiet mode, the routine issues a
diagnose instruction to place ECC in
the quiet mode and sets bit 0 in the
COMTE field of the MSB on.
Machine status Control routine for the
Model 145 (module IGF29701) - - This
routine receives control from the MODE
Command Router routine when an operator
issues a MODE command for the Model 145,
and it places the Model 145's main or
control storage in either record, quiet, or
threshold (for control storage only) mode
as specified by he command parameter. The
Machine status Control routine determines
which combination of the following
parameters has been specified and takes
appropriate action:

RECORD, QUIET, and THRES -- These
parameters specify machine mode.
Except for the combination MAIN and THRES,
the RECORD, QUIET, and THRES parameters can
be used in any combination with the MAIN
and CNTR parameters.
In each case
(combination), the Machine Status·Control
routine uses a DIAGNOSE instruction to
place the Model 145 in the specified mode.
The routine returns control to the
supervisor by using an SVC 3 instruction.
When processing of the command parameter is
completed., the routine passes control to
the supervisor via SVC 3.
• Machine status Control routine for
Model 165 (module IGF55301) -- This
routine receives control from the MODE
Command Router routine when the
operator issues the MODE command with
the Model 165. The routine determines
which of the four command parameters
(STATUS, RECORD. QUIET, or ENABLE) is
specified and takes the appropriate
action:
STATUS
The routine obtains machine
status information from the machine
status block (MSB) for the Model 165
(see Figure 43), which is pointed to by
the CVTRMS field of the CVT. The
routine then uses a WTO macro
instruction to display the status
message on the system console device.
The status message informs the operator
whether the Model 165 is operating in
recording mode or quiet mode, what the
soft error count and soft error
threshold are, and whether the buffer
is enabled or disabled.
RECORD -- When this parameter is
specified, the routine turns off bit 4
of control register 14 to allow soft
machine-check interruptions, sets the
record flag in the MSB on, and sets the
soft error counter in the MSB to zero.
QUIET -- When this parameter is
specified, the routine sets bit 4 in
control register 14 on to suppress soft
machine-check interruptio·ns, then turns
off the record flag in the MSB.
ENABLE -- When this parameter is
specified, the routine uses the
DIAGNOSE instruction to enable the
high-speed buffer storage area and
resets the buffer error counter in the
MSB to zero.

MAIN -- This parameter specifies main
storage .•
CNTR -- This parameter specifies
control storage.
134

OS/360 MVT Job Management (Release 21)

When processing of the command parameter is
completed control is returned to the
supervisor via SVC 3.

Offset
Hex
Dec

o

0

8

8

ECC Recoverable Error Count
(RELECC)

10

16

ECC Error Threshold
(RETECC)

4

18

24

Sector Bits
(RESECT)

4

20

32

-

Maintenance Control Word
(RESMCW)
4

8
HIR Recoverable Error Count
(RELHIR)

4

HIR Error Threshold
(RETHIR)

4

28

-

Reserved
(RESPR1)

38

Used for Emulator Processing

T

Machine Status Control Block (MSB) for Model 85

o

0

HIR Time Threshold
(COMTC)

4

HIR Elapsed Time Counter
(COMTBC)

4

8

8

HI R Error Thresho Id
(COMEC)

4

HIR Error Counter
(COMSECC)

4

10

16

ECC Time Threshold
(COMTE)

4

ECC Time Counter
(COMTBE)

4

18

24

ECC Error Thresho Id
(COME E)

4

ECC Error Counter
(COMSECE)

4

20

32

Buffer Pages Deleted
(COMBUFPG)

4

28

40

Address of Master Console
(MSBMSCON)

4

30

48

4

Reserved

4

Address of Hardcopy Backup Conso Ie
(MSBHDCPY)

4B

.

T~

______________________T
L.

MODE Command Work Area

Machine Status Block (MSB) for Model 155

o

0

8

8

Soft Error Counter
(MSBCOUNT)

4
Control Register 14 Work Area

10

16

Soft Error Threshold
(MSBTHRLD)

4

18

24

Primary Extended LOGOUT Pointer
(MSBPR1 )

4

20

32

28

40

30

48

8

Maintenance Control Word
(MSBMCW)

Status Field
(MSBMODE) 11

Buffer Error Count
(MSBBUFER)

21

Buffer Error Thresho Id
(MSBBUFTH)

Secondary Extended LOGOUT Pointer
(MSBSEC)

4

2
4
7

Reserved
Master Console UCB Pointer
(MSBMSCON)

4

Hard Copy UCB Pointer
(MSBHDCPY)

4
48

Reserved

T

Machine Status Control Block (MSB) for Model 165
Figure 43.

Machine status Block (MSB)

Part 5:

Command Processing

135

The MODIFY Command
Address of ne,xt CIB in Queue

The MODIFY command allows the operator to
change the list of classes that are
processed by direct system output (DSO)
processing, a system output writer, or an
initiator, and the conditions under which a
writer must pause for forms changes. It
also allows the console operator to change
initiator job classes and to pass command
images from remote terminals by RJE. The
MODIFY command allows the console operator
and TSO user to alter his started TSO job.
(See the TSO Command Processor PLMs for a
description of TSO processing of the MODIFY
command.) The STOP and MODIFY Scheduling
routine (module IGC0703D) searches the
chain of GCBs, pointed to by the M/S
resident data area, for a GCB that
corresponds to the specified task. The
routine builds a command input buffer (CIB)
-- see Figure 44 -- from the command image.
If a GCB corresponding to the specified
task is found, the routine adds the CIB to
the chain pOinted to by the CIB pointer in
the GCB. Then the routine searches the
chain of CSCBs to find the CSCBs that
correspond to the specified task. If the
counter (CHCIBCTR) in the CSCB indicates
that the maximum number of CIBs allowed by
the processing task has not been reached,
the routine adds the CIB to the chain
pointed to by the CIB pointer in the CSCB
(CHCIBP). Then" the routine issues the
POST macro instruction for the STOP/MODIFY
ECB (CHECBP) in the CSCB. This process is
repeated for each CSCB with the same task
name.
If the CIB cannot be added to the
chain because the maximum number has been
attained, the STOP and MODIFY Scheduling
routine scans the CSCBs for one with the
same task name.
If no such CSCB can be
found, or if the CHCIBCTRs in the CSCBs
with the same task name have been reached,
the routine frees the main storage occupied
by the CIB" and the MODIFY command is
rejected.

The SET AUTO Command
The AUTO parameter may be used in the SET
command only during system initialization.
It causes flags to be set in the Master
Scheduler IPL routine. These flags are
inspected to determine which of the
"automatic" commands, which are assembled
into the system when i t is generated, are
to be executed as part of system
initialization.

136

OS/360 MVT Job Management (Release 21)

Command
Verb Code

Length of C IB
(in Doublewds)

11

1
Reserved

4
Cont.
10 of Console
11
Issuing Command

T

10 of TSO Terminal
Issuing Command

1

2
2

Length of Data Field

Reserved
Data

Figure 44.

4

-T

Command Input Buffer (CIB)

Note: The STOP and MODIFY Scheduling
routine builds the command input buffer.
The Command Verb Code field contains the
hexadecimal identifier for the command that
is issued:
Code
Command
x' 04'
START
X'44'
MODIFY
X' 40'
STOP
X'OC'
MOUNT
The mapping macro instruction for the
command input buffer is IEZCIB.

The SET DATE and SET CLOCK Commands
These commands are stored and the responder
notified, when part I of the SET Command
routine (module IGC0603D of the Command
Scheduling routine) reformats the operands
and passes the value to Part II of the Set
Command routine (module IGC8603D). Module
IGC8603D places the information in general
registers, and passes control to the Timer
Maintenance routine.
The Timer Maintenance
routine is described in the MVT Supervisor
Program Logic Manual.
The CLOCK and DATE parameters in the SET
command are also used by system/370 models
to set the time-of-day (TOD) clock. When
an internal SET command is issued by the
Master Scheduler IPL routine during IPL, or
when the operator issues a SET command from
the console, Part I of the SET Command
routine (module IGC0603D) checks the
command syntax and passes control to part I
of the SET TOD clock routine (module
IGC6503D). This routine calculates both
the time at midnight and the difference
between the current time and the time being
set. It passes these values to part II of
the SET TOD clock routine (module IGC6603D)
which does the following:
• Sets the TOD clock.

• Updates the date in the CVT
(communication vector table).
• Updates TSO and system TQEs (timer
queue elements) using values passed
from module IGC6503D.
Module IGC6603D then passes control to the
timer maintenance routine.
(The Timer
Maintenance routine is described in the MVT
supervisor Program Logic Manual.)
If TSO is included in the system. the
SET TOD Clock routine passes control via
SVC 95 to the TSO module IKJEATIO so that
TSO TQEs can be updated.
The SET PROC and SET Q Commands
The operator may enter SET commands with
the operands PROC and Q only when
initializing the system after IPL. These
operands cause the SVC 34 SET Commands
routine to store the locations of the
procedure library and the queue data set.
respectively. in the master scheduler
resident data area.
If the keyword "F"
accompanies the Q parameter. the routine
sets a switch that causes the Queue
Management Initialization routine to format
the queue data set.

The STOPMN JOBNAMES Command
When the Periodic Stop Command Processor
routine (module IGC4503D) receives control
to store a STOP JOBNAMES command. the
routine determines whether the command was
issued from a console device or from a TSO
terminal. If the command was issued from a
TSO terminal. module IGC4503D passes
control to the MCS/TSO Periodic stop
Command Processor routine (module
.
IGC5503D).
(See the TSO Command Processor
PLMs for a description of TSO processing of
the STOP JOBNAMES command.)
Module IGC4503D then determines if MCS
was included in the system.
If not. the
module stores the command by turning off
the BAJN bit in the master scheduler
resident data area.
If MCS is included in
the system. the module passes control to
module IGC5503D. which turns off both the
UCMMSGA bit in the UCME for the console
receiving the display and the appropriate
bit in the master scheduler resident data
area.
Initiators test the master scheduler
resident data area bit when they select a
job for processing. and when they terminate
the last step of a job. If the bit is on.•
the name of the job is displayed on the
requesting operator's console.
For
additional discussion of the processing
performed. see the topic "The MONITOR
JOB NAMES Command."

The STOPMN DSNAME Command
When the Router routine (module IGC0403D)
determines that a STOP command has been
issued. it passes control to the Periodic
Stop Command Processor routine (module
IGC4503D). which determines whether the
command was issued from a console device or
from a TSO terminal.
If the command was
issued from a terminal. module IGC4503D
passes control to the MCS/TSO Periodic stop
Command Processor routine (module
IGC5503D).
(See the TSO Command Processor
PLMs for a description of TSO processing of
the STOP DSNAME command.)
If the command was issued from a console
device. module IGC4503D stores the command
by turning off bit 4 in byte MSSSB in the
common area of the master scheduler
resident data area. This bit is tested by
AVR and External Action routines prior to
issuing mount messages; i t is tested by the
Step Termination routine and the Job
Termination routine prior to issuing
demount messages.
If the bit is on.
eligible nontemporary_data sets are
displayed in the messages..
For additional
discussion of the processing performed. see
the topic "The MONITOR DSNAME Command."

The STOPMN SPACE Command
When the Periodic stop Command Processor
routine (module IGC4503D) receives control
to store a STOP SPACE command. the routine
determines whether the command was issued
from a console device or from a TSO
terminal. If the command was issued from a
TSO terminal, module IGC4503D passes
control to the MCS/TSO Periodic stop
Command Processor routine (module
IGC5503D).
(See the TSO Command Processor
PLMs for a description of TSO processing of
the DISPLAY SPACE command.)
If the command was issued from a console
device, module IGC4503D stores the command
by turning off bit 5 of byte.MSSSB in the
common area of the master scheduler
resident data area. This bit is tested by
the I/O Device Allocation routine and the
Termination routine when a direct access
volume is to be dismounted; if the bit is
on, information on the amount of space
available on the volume is displayed with
the dismount message. For additional
discussion of the processing performed. see
the topic "The MONITOR SPACE Command."
Part 5:

Command Processing

137

The STOPMN STATUS Command
When the Periodic Stop Command Processor
routine (module IGC4503D) receives control
to store a STOP STATUS command, the routine
determines whether the command was issued
from a console device or from a TSO
terminal. If the command was issued from a
TSO terminal, module IGC4503D passes
control to the MCS/TSO Periodic Stop
Command Processor routine (module
IGC5503D).
(see the TSO Command Processor
PLMs for a description of TSO processing of
the STOP STATUS command.
Module IGC4503D then determines if MCS
was included in the system.
If not, the
module stores the command by turning off
the MSDISPT bit in the master scheduler
resident data area.
If MCS is included in
the system, the module passes control to
module IGC5503D, which turns off both the
UCMMSGB bit in the UCME for the console
receiving the display and the appropriate
bit in the master scheduler resident data
area.
Each initiator tests the master
scheduler resident data area bit when it
terminates a job step; if the bit is on,
the Step Termination routine uses the WTO
macro instruction to display the
disposition of the data sets used in the
step. For additional discussion of the
processing performed, see the topic "The
MONITOR STATUS Command."

displayed on the operator's console (for
more information about this function, refer
to the description of MONITOR SESS in the
TSO Command Language SRLs).
The STOP Command
The STOP and MODIFY Scheduling routine
(module IGC0703D) searches the chain of
GCBs, pointed to by the M/S resident data
area, for a GCB that corresponds to the
specified task. The routine builds a
command input buffer (CIB) -- see Figure 44
-- from the comrrand image.
If a GCB
corresponding to the specified task is
found, the routine adds the CIB to the
chain pointed to by the CIB pointer in the
GCB. Then the routine searches the chain
of CSCBs for the CSCB corresponding to the
specified task.
It overlays the UCM entry
indicator (UCMI) of the console that issued
the START command with the UCMI of the
console that issued the STOP command, and
issues a POST macro instruction specifying
the STOP/MODIFY ECB in the CSCB.
It also sets the CHCIBCTR field of the
CSCB to zero, indicating that no more
MODIFY commands can be accepted.
During its operating cycte, each system
task tests the STOP ECB.
If it has been
posted, the routine returns control to the
System Task Control routine.

The STOPMN SESS Command
The STOPMN A Command
When the Periodic Stop Command Processor
receives control to store a STOPMN SESS
command, the routine determines whether the
command was issued from a console device or
from a TSO terminal.
If the command was
issued from a TSO terminal, module IGC4503D
passes control to the MCS/TSO Periodic
STOP/STOPMN Command Processor (module
IGC5503D).
(See the TSO Command Processor
PLMs for a description of TSO processing of
the STOPMN SESS command.)
If the command was not issued from a TSO
terminal, module IGC4503D then checks to
see if MCS is included in the system. If
it is not, module IGC4503D stores the
command by turning off the BAMSESSC bit in
the master scheduler resident data area.
If MCS is included in the system, module
IGC4503D passes control to module IGC5503D,
which turns off the UCMMSGF bit in the
receiving console's UCME and the BAMSESSC
bit in the master scheduler resident data
area .•
The master scheduler bit is tested by
TSO routines whenever a terminal user logs
on or off. If the bit is on, the
user-identifier of the terminal user. is
138

OS/360 MVT Job Management (Release 21)

When the STOPMN/STOP Command Handler
Routine (IGC4503D) determines that a STOPMN
A command is to be executed, it passes
control by means ofaXCLT macro
instruction to the Routing Location routine
(IGC7503D) •
The Routing Location routine scans the
command for the routing (L=xxx) operands.
If explicit routing operands have been
specified, the routine places them in the
extended save area (XSA).
If no operands,
or only partial operands, are specified,
the routine checks the Message Routing
Control Table (MRCT) for default routing
operands. If the routine finds no
defaults, it identifies the issuing console
as the console requiring termination of a
MONITOR A display and defaults the area·
identifier to a null value. After the
routine determines the console address and
display area identifiers, it places them in
the XSA. It then passes control to the
Routing Location routine, load 2,
(IGC7603D). This routine determines that a
valid STOPMN command has been entered.
Routing Location routine, load 2, then sets
indicators in the screen area control block

(SACB) of the issuing console's DCM and in
the unit control module entry (UCME). The
routine then issues an XCTL macro to pass
control to the STOPMN Command Handler, load
2" (IGC5503D).
Module IGC5503D terminates the action
initiated by the MONITOR A command by
turning off the UCMMSGC bit in the unit
control module entry for the console on
which the display is to be terminated. The
routine then determines if other MONITOR A
displays are in progress (by checking for a
UCMMSGC indicator in other UCME's). If no
indicator is found, module IGC5503D turns
off the busy bit in the master scheduler
resident data area and passes control to
the CONTROL Command Handler 1 routine
(IGC6103D). Module IGC6103D builds a
parameter list and sets flags in the DCM of
the console from which the display is to be
removed. The parameter list and flags
indicate to the supervisor routines that
the display is to be erased from the screen
(the routines that perform this fUnction
are the DIDOCS routines, documented in the
MVT supervisor PLM, GY28-6659). Module
IGC6103D then returns control to the
supervisor.
The SWITCH Command
The operator uses the SWITCH command to
transfer SMF recording. If direct access
devices are being used, SMF recording is
transferred from the primary to the
alternate SMF data set. If SMF recording
is on magnetic tape, the SWITCH command
causes the current tape volume to be
dismounted, and .the system then requests
and waits for another tape volume to be
mounted so as to continue recording. When
the Command Router routine recognizes the
SWITCH command, it passes control to the
HALT and SWITCH Commands Processor routine
(module IGC1403D). This routine issues SVC
83 to pass control to the SMF SVC routine.
The SMF SVC routine purges the S~~ buffers,
writes the data records into the SMF data
set, then transfers SMF recording using the
device status and device address fields in
the SMCA. A detailed description of the
above processing is in the section "The SMF
SVC Routine (SVC 83)" in part 6 of this
publication. After the SMF SVC routine
completes the processing of the SWITCH
command, it returns control to the HALT and
SWITCH Commands Processer routine, which
issues an XCTL macro instruction to give
control to the message module (IGC0503D).
A "no message" indication is also given to
the message module. Since module IGC0503D
is not to issue a message, i t directly
returns control to the communications task
by means of a branch instruction using the
contents of register 14.

The UNLOAD Command
When the Router routine (module IGC0403D)
of the Command Scheduling routine
determines that an UNLOAD command has been
issued, control is passed to the
VARY/UNLOAD Syntax Scan routine (module
IGC1103D). Module IGC1103D passes control
to the VARY/UNLOAD Processor (module
IGC3103D).
The UNLOAD command is stored when module
IGC3103D sets on the SRTEUNLD bit in the
UCB of the device to be unloaded.
If the
unit is not allocated, the routine turns on
the BAVU bit (UCB search bit) in the master
scheduler resident data area, then returns
control to the supervisor. The I/O Device
Allocation routine and the Termination
routine (performing any system task) test
the bits at appropriate points in their
processing cycles.
If the bits are on, the
routine physically unloads the unit.
The VARY Commands
If the command to be executed is a VARY
command, the Router routine of the Command
Scheduling routine passes control to the
VARY Keyword Router routine (module
IGC3203D). This routine identifies the
first keyword and passes control to the
appropriate keyword processing routine (see
Figure 45). The keyword processing
routines examine the command for syntax
errors, and if an error is found, they pass
control to a message module that informs
the operator and returns control to the
supervisor •. If the routines find no syntax
errors, they process the command.

VARY ONLINE/OFFLINE (systems Without MCS)
If a system includes the M65MP option, the
Vary Keyword Router routine" in module
IGC3203D, passes control to module
IGC3603D, the Vary Preprocessor routine.
This latter module prevents devices that
have no paths marked as available to the
I/O supervisor from becoming 'online.'
Depending on the absence or the presence of
the M65MP option, either module IGC3203D or
module IGC3603D then passes control to the
VARY/UNLOAD Syntax Scan routine (module
IGC1103D). This module scans the VARY
ONLINE and VARY OFFLINE commands for syntax
errors and passes control to the
VARY/uNLOAD processor routine (module
IGC3103D). The processor routine searches
the list of UCBs for those corresponding to
the units specified in the command, and
sets the bits that request the specified
status change.
Part 5:

Command Processing

139

CH
CPU
STOR

PATH

ONLINE
OFFLINE

Multiple
Units or

Mandatory
Hardcopy

(with additional
keywords)

No SMF

SMF

MSTCONS

HARDCPY

VARY
HARDCPY,
OFF

Error

Error

Note: The Message Module blocks represent either IGC0503D or I GG2103D.

Figure 45.

140

Control Flow in the Command Scheduling Routine
(Part II -- See Figure 24 for Part I)

OS/360 MVT Job Management (Release 21)

If any of the units has a syntax error,
control passes to a message routine that
informs the operator and returns control to
the supervisor.
If there is no syntax
error, the VARY/UNLOAD Processor routine
determines if the Online Test Executive
Program (OLTEP) is currently running an
online test program against a unit
specified in the command. If so, the test
program must be completed before the unit
can be brought online. The processor
routine issues an informational message to
the operator and returns control to the
supervisor.
If OLTEP is not running a test
program, the VARY/UNLOAD processor routine
returns control directly to the supervisor.
The I/O Device Allocation routine and
the Termination routine scan the UCBs as a
part of their normal processing. When they
encounter a UCB for which a status change
from ONLINE ALLOCATED to OFFLINE has been
requested, they set the bits that indicate
the new status.

whether a DISPLAY JOBNAMES command is in
force for the unit..
If so, and if no
DISPLAY JOBNAMES is in force for any other
unit, the VARY ONLINE/OFFLINE Processor for
Console Devices routine turns off the BAJN
bit ~n the master scheduler resident data
area.
The processor routine then determines if
OLTEP is currently running an online test
program against the unit that is to be
processed. If so, the test program must be
completed before the unit can be brought
online. The processor routine issues an
informational message to the operator and
returns control to the supervisor.
If OLTEP is not running a test program,
the VARY ONLINE/OFFLINE Processor for
Console Devices routine sets the bits in
the UCM entry and UCB corresponding to the
unit so that they indicate the new status.
It determines whether the VARY secondary
Syntax Scan routine has encountered any
non-console units. and whether the entire
unit field has been scanned:

VARY ONLINE/OFFLINE (systems With MCS)
If a system includes the M65MP option, the
Vary Keyword Router routine, in module
IGC3203D, passes control to module
IGC3603D, the Vary Pre-processor routine.
This latter module prevents devices that
have no paths marked as available to the
I/O supervisor from becoming 'online'.
When the MCS VARY Syntax Check routine
(module IGC3303D) is entered from either
module IGC3603D (for M65MP) or module
IGC3203D (without M65MP), it scans the unit
field for syntax errors. If the routine
finds an error, it passes control to a
message routine that informs the operator
and returns control to the supervisor.
If no errors are found, the routine
determines whether SMF is in the system.
If so, it passes control to the SMF VARY
Record Handler routine (module IGC2303D).
Then, or if SMF is not included, control is
passed to the VARY secondary Syntax Scan
routine (module IGC4203D).
This routine
determines whether the command source was
authorized to issue the command.
It also
determines whether the units are valid
system units.
If errors are found, the
routine issues error messages .•
The routine also determines whether the
specified unit is either the hard copy log
device or the master console. If so, it
issues a message to the operator informing
him that the unit cannot be processed.
If the unit can be processed, the VARY
Secondary Syntax Scan routine passes
control to the VARY ONLINE/OFFLINE
Processor for Console Devices routine
(module IGC4603D).
This routine determines

• If there are additional unit
specifications to be scanned, the
routine processes them.
• If the entire unit field has been
scanned and non-console units have been
encountered, the routine passes control
to the VARY/UNLOAD Processor routine
(module IGC3103D).
• If the entire unit field has been
scanned and no non-console units have
been encountered, the routine returns
control to the supervisor.
If the VARY Secondary Syntax Scan
routine scans the entire unit field without
encountering a console unit it passes
control to the VARY/UNLOAD Processor
routine (module IGC3103D). This routine
performs the processing described under
"VARY ONLINE/OFFLINE (Systems Without MCS)"
and returns control to the supervisor or
(if it encounters an error) passes control
to a message module.
VARY PATH
With Alternate Path Retry (APR), the
operator may issue the VARY PATH command to
cause a path to be logically brought online
for use by the system or logically removed
from the system.
The VARY PATH Processor routine (module
IGC2403D) is entered from the VARY Keyword
Router routine. The routine causes the
path to be brought online or taken offline
by setting the path status bits in the UCB
using the IOSGEN macro instruction.
Part 5:

Command Processing

141

The last path to a device will not be
varied offline because this may be
accomplished by varying the device itself.
(A reserved path to a shared direct access
storage device is considered to be the last
path.) Also, teleprocessing paths cannot
be varied.
.

I

Upon completion., the VARY PATH Processor
routine passes control to one of two
message modules (module IGCOS03D or module
IGG2103D) •
The VARY PATH command is also discussed

The VARY CONSOLE Processor routine
maintains the console configuration. The
routine then determines if the OLTEP is
currently running an online test program
against the specified unit. If so, the
unit cannot be added to the active console
configuration until the test program
completes its processing. Module IGC4903D
issues a header message and passes control
to the Console Information Message routine
(module IGC4803D). which issues a status
message. The VARY CONSOLE Processor
routine then returns control to the
supervisor.

in the I/O supervisor PLM.

VARY CONSOLE
If a system includes the M6SMP option, the
VARY Keyword Router routine, in module
IGC3203D, passes control to module
IGC3603D, the Vary Preprocessor routine.
This latter module prevents devices that
have no paths marked as available to the
I/O Supervisor from becoming an active
console. When the MCS VARY Syntax Check
routine (module IGC3303D) is entered from
either module IGC3603D (for M6SMP) or
module IGC3203D (without M6SMP) to process
a VARY CONSOLE command, it determines
whether there are additional keywords in
the command. If so, it passes control to
the VARY CONSOLE Keyword Scan routine
(module IGC4403D)~ if not, it passes
control directly to the VARY Secondary
Syntax Scan routine (module IGC4203D). If
SMF is included in the system, the MCS VARY
Syntax Check routine first passes control
to the SMF VARY Record Handler routine
(module IGC2303D), which will then pass
control to either the VARY CONSOLE Keyword
Scan routine or the VARY Secondary Syntax
Scan routine.
The VARY CONSOLE Keyword Scan routine
determines whether the additional keywords
are specified correctly. If not, it passes
control to a message routine that informs
the requesting operator and returns control
to the supervisor. If the additional
keywords are correctly specified, or if
there were no additional keywords, control
passes to the VARY secondary Syntax Scan
routine (module IGC4203D).
The VARY Secondary Syntax Scan routine
determines whether the issuing console is
authorized to issue the command. If not,
the routine informs the requesting operator
and returns control to the supervisor.
If the command is authorized, the VARY
Secondary Syntax Scan routine checks the
first unit specification for syntax errors.
If it finds an error, it issues a message
to the operator. If no errors are found,
it passes control to the VARY CONSOLE
Processor routine (module IGC4903D).
142

OS/360 MVT Job Management (Release 21)

If OLTEP is not running a test program,
the VARY CONSOLE Processor routine uses
information provided through the VARY
command to change the attributes of active
consoles (the console'.s routing code
assignment, command authority, and
alternate console), and brings consoles
being used for other purposes (online or
offline) into active console status. In
addition, it insures that a console log is
active and receiving the minimum required
routing codes whenever the log is
mandatory.
The VARY CONSOLE Processor routine then
issues a header message and passes control
to the Console Information Message load 1
routine (module IGC4803D) to construct a
message that states the unit's new
attributes. Module IGC4803D passes control
to the Console Information routine load 2
(module IGC7303D). This·routine completes
the message, uses the WTO macro instruction
to issue it to the operator, and returns
control either to IGC4803D (if multiple
units were specified or if the hardcopy iog
is required) or to the supervisor if
processing is complete.
VARY HARDCPY
If the VARY Keyword Router routine
encounters a VARY HARDCPY command, it
passes control to the VARY HARDCPY
Processor routine (module IGC4703D).
Module IGC4703D first determines whether
the command was issued with proper
authorization, i.e., by an operator via the
master console or by the system. If the
command was not issued with proper
authorization, the module passes control to
the VARY HARDCPY, OFF Processor routine
(module IGCS703D). This module determines
the type of error involved and passes
control to a message module that informs
the operator of the error and returns
control to the system.
If the VARY HARDCPY command was entered
through the master console or by the
system, module IGC4703D determines which
operands have been entered. If VARY

HARDCPY. OFF has been entered. the module
passes control to the VARY HARDCPY. OFF
Processor (IGC5.703D).
The processor determines whether the
hardcopy log is required; if it is
required. the VARY HARDCPY command is
invalid. and IGC5703D passes control to a
message module for an error message. If
the hardcopy log exists but is not required
(the hardcopy log is required if there is
more than one console in a system or if the
only console in the system is a display
console), module IGC5703D varies the
hardcopy log out of the system and passes
control to the Message Assembly routine
(IGC2103D). which notifies the operator of
the change in status of the hardcopy log.
If a command other than VARY HARDCPY,
OFF has been entered, module IGC4703D
checks to see if any of the operands CMDS,
INCMDS, STCMDS, NOCMDS. or ROUT= has been
specified and then sets a flag to indicate
which operand has been entered.
Module
IGC4703D passes control to the VARY HARDCPY
UNIT Processor (module IGC7203D), which
insures that the specified unit is eligible
as a hardcopy log device. If an error is
found, the routine passes control to
IGC5703D. which passes control to the
message module that informs the operator of
the error. If a graphics device is in use
as a console (a display console), or if
there is more than one console in the
system, module IGC7203D adds routing codes
1 through 4, 7, 8, and 10 to those already

specified in the UCM. The module then sets
the commands flag to CMDS if the hard copy
log was not previously specified by either
CMOS, STCMDS. or INCMDS (NOCMDS is not
valid when the hardcopy log is mandatory).
After module IGC7203D sets the
attributes of the hardcopy log, it passes
control to the Hardcopy Message routine
(module IGC4103D). This routine issues to
the operator a message that shows the
attributes of the hardcopy log and then
returns control to the supervisor.
VARY MSTCONS
When the VARY Keyword Router routine
encounteres a VARY MSTCONS command, it
passes control to the VARY MSTCONS
Processor routine (module IGC4303D). This
routine performs a command authorization
check and a syntax check. The VARY MSTCONS
command may be issued only by the system or
by the master console. except that if the
master console has failed and its chain of
alternates is exhausted. the command may be
issued via a secondary console.
If the command is authorized and the
VARY MSTCONS routine finds no syntax
errors, it issues SVC 72 to have the
console switch performed. and then returns
control to the supervisor. Otherwise, the
routine passes control to a message routine
that informs the operator and returns
control to the supervisor.

Part 5:

Command Processing

143

144

OS/360'MVT Job Management (Release 21>

Part 6:

Common Elements of Job Management

In the performance of job management tasks, Job Management routines frequently refer to
or execute system elements that are also used by other Job Management routines. The
major common elements of job management are described below:
• The work gueues are the temporary storage areas that permit work to be stored in
input sequence, and to be processed in priority sequence. They act as buffers
between the interpreters, initiators, and system output writers, allowing each to
process at maximum speed.
• The Interpreter routine is used to execute reading, automatic SYSIN batching (ASB),
command execution, and remote job entry (RJE) tasks. It reads input stream and
procedure library statements, converts them to tabular format, and places the tables
in the work queue data set.
• The I/O Device Allocation routine is used primarily by the initiator in satisfying
the I/O requests of job steps; it is also used by the command processing routines to
allocate I/O devices to system tasks.
• The Termination routine is used whenever a job step or system task terminates. It
directs the disposition of the data sets used in the execution of the task, and
releases the I/O devices for allocation to other tasks.
• system Management Facilities is an optional feature of the control program that
provides the means for gathering and recording the type of information that can be
used to evaluate system usage. The routines discussed in this section are those that
execute the SMF task and the SMF SVC routine, which writes records in the SMF data
set.
• The Write-to-programmer (WTP) Facility is a feature that enables the operating system
to provide the user with information about his job in the event of an abnormal
occurence during execution; the job information is conveyed via messages to the
system message class output data set.
The Work Queues

Reading job descr:lptions, initiating job
steps, and writing system output data are
the input, processing, and output functions
of job management.
The work queues allow
job descriptions that are read in "random"
sequence to be processed according to
user~specified priority, and act as buffers
to compensate for the differences in speed
among the reading, initiating, and writing

(BRDR) queue, and 20 reserved queues). As
a job description (in JCL form) is
processed by the interpreter, it is
converted into a series of tables which
become the job's input and output queue
entries. The input queue entry is enqueued
when the interpreter processing of the job
is complete. It is enqueued in the queue
and at the priority specified in the JOB
statement. The format of a typical input
queue entry is shown in Figure 46.

functions~

At the MVT level of the operatingsystem, there are 76 work queues (the hold
queue, the ASB queue, the 36 output queues,
the RJE queue, the 15 input queues, the
free-track queue,- the background reader

Within an input class, jobs are normally
selected for processing in priority order
(entries of the same priority are dequeued
in FIFO order>.
However, the operator may
prevent a job from being selected by
issuing a HOLD command; the job description
is dequeued from the input queue and

Part 6:

Common Elements of Job Management

145

enqueued in the hold queue.. A RELEASE
command dequeues a job description from the
hold queue and re-enqueues i t in the input
queue, where it is again available for
selection (in priority order) by an
initiator.
System output classes are used to
segregate different kinds of system output.
For example, messages may be in one class
(the message class), data sets to be
punched in another, and data sets to be
printed in a third. At the MVT level of
the operating system, 36 system output
classes are provided; there is an output
queue that corresponds to each class. The
output queues permit system output work to

be stacked, then retrieved in the order
governed by the job's priority; they act as
buffers between the system output writers
and the other tasks in the system.

An entry in an output queue represents
the system output (of the corresponding
class) to be written for a job.
If the
class is the message class, the entry will
contain messages from the operating system
to the programmer (in system message
blocks, or 8MBs), and may also contain data
set blocks (D8Bs) and job file control
blocks (JFCBs), which point to data sets
specified as system output data sets of
that class.·

(in output queue entry)

To first 5MB
To last OSB

---------------

SCT
(step 1)

(

SlOT
(002)

~

~
~
OSENQ
Table

146

(

II
II
II
II
II
II
II
II
II

Typical Input Queue Entry

08/360 MVT Job Management (Release 21)

~

SlOT
(004)

SlOT
(005)

(

(
JFCB
(003)

To JFCB (in output queue entry)

(

Figure 46.

SCT
(step 3)

SlOT
(003)

JFCB
(002)

Oirectory
Block

SCT
(step 2)

(

~

SlOT
(001)

~

JFCB
(005)

To JFCB (in output queue entry)

JOBNAME
STEPl
001
002
STEP2
003
STEP3
004
005

JOB
EXEC
00 SYSOUT=A
00
EXEC
00
EXEC
00 SYSOUT=B
00

Figure 47 shows two output queue
entries, one of which belongs to the
message class. System output class A has
been designated the message class for the
job; the queue entry contains 5MBs, and
since there are data sets that have been
specified to be in class A, the entry also
contains DSBs and JFCBs that point to the
data sets.
(The SlOTs for these data sets
are in the job's input queue entry.)
If
there were no such data sets, the entry
would consist entirely of 5MBs. The other
entry shown in the figure is not in the

\

message class queue, and therefore contains
no 5MBs.
The list of the logical tracks not
assigned to one of the other queues is
called the free-track queue. As space for
records is assigned to the other queues,
additional logical tracks are assigned from
the free-track queue.
As entries are
deleted from the other queues, logical
tracks become free; they are assigned to
the free-track queue.

"\

From JCT

From JCT

\

~~------------,

.-----------~

5MB
Interp. and
Alloe. Msgs.
for Step 1
(

DSB
Step 1

JFCB
Step 1

DSB
Step 2

JFCB
Step 2

,--------;~r=---------,
DSB
Step 1

JFCB
Step 1

(

,--------.
5MB
Write-to-programmer
and Termi nation
Messages for Step 1

(

.-------------5MB
Interp. Alloe.
and Term Msgs.
for Step 2

(

.-------------5MB
Interp and
Alloe Msgs
for Step 3

(~~;:::..-----.
DSB
Step 3

II
II
II
II
II
II
II
II

JFCB
Step 3

(r--------.

I

Job Control Language

5MB
Write-to-programmer
and Termination
Messages for Step 3

JOB
EXEC
DD
DD
EXEC
DD
EXEC
DD

MSGCLASS=A
STEPOl
SYSOUT=A
SYSOUT=B
STEP02
SYSOUT=B
STEP03
SYSOUT=A

FROM JCT

Figure 47.

Output Queue Entries

Part 6:

Common Elerr€nts of Job Management

147

QUEUE MANAGEMENT
There are two sets of queue management
routines. One set is referred to simply as
the Queue Management routines and is loaded
with job management modules. These
routines assign space in the queue data
set, read and write records, enqueue and
dequeue work queue entries, and delete them
(release the space assigned to them).
The other set of queue management
routines is called the Transient Queue
Management routines (SVC 90). This set of
routines, which is obtained by issuing SVC
90, resides in SYS1.SVCLIB and operates in
the transient area. These routines assign
logical tracks, read and write job queue
records, and assign records to a queue
entry, but they do not include the track
stacking facility.
When the interpreter encounters a new
job in the input stream, it uses queue
management to obtain space in the queue
data set for the records which make up the
job's queue entries.
The Queue Management
Assign/start routine performs initializing
functions, and the Queue Management Assign
routine assigns a logical track; that is,
an area of contiguous space in the queue
data set containing a header record and
space for a predetermined number of
176-byte data records.
From that logical
track, it assigns an initial number of
records.
As the interpreter processes the job, it
converts the job control language
statements in the input stream into
176-byte records, and uses the Queue
Management Read/Write routine to write them
into the record areas assigned from the
logical track. When the initial quantity
of record areas assigned has been filled,
the interpreter uses the Queue Management
Assign routine to assign additional record
areas from the logical track.

When the first logical track assigned
has been filled, the Queue Management
Assign routine assigns another logical
track to satisfy the interpreter's request
for additional record areas, and begins
assigning space from the new logical track.
Figure 48 shows two logical tracks, which
are assigned to an entry. The first
logical track is fully assigned; its header
record points to the second, from which
space for four records has been assigned l
and into which records have been written.

The pointers among the logical track
header (LTH) records are created and
maintained by Queue Management routines.
The interpreter, the initiator, and the
system output writer create and maintain
pointers among the 176-byte records so that
a record may be retrieved without knowing
its position relative to an LTH.
The
arrangement of pointers shown in Figures 48
through 55 is imaginary; Figures 46 and 47
show the manner in which records are
actually chained.

In addition to generating records that
describe the job, the interpreter (and
later the initiator) must generate records
containing messages to the programmer and
assign space for records that describe the
job's system output data sets.
Each time
it is necessary to create a record for a
new system output class, the interpreter
uses the queue management assign/start and
assign routines to start a new set of
logical tracks by obtaining a new logical
track and assigning records from that
track.

MeanWhile, as job description records
are generated, they are written into space
assigned from the original set of logical
tracks.

First track assigned

ReD 3

ReD 4

Second track assigned

ReD 8

Assigned

Figure 48.

148

Assigning Space Within Logical Tracks

08/360 MVT Job Management (Release 21)

ReD 5

In Figure 49, an additional logical
track has been assigned to the original
set, and two records have been written into
it. As a result of executing the
assign/start and assign routines, two
additional logical tracks have been
assigned to the entry.

the job. several records (containing
messages to the programmer) have been
written; space has been reserved for
another record, which will be created when
the job terminates, and will describe a
system output data set.

Notice that there are no LTH pointers
between the first set of logical tracks and
the second. However, in actual practice
there are pointers (created by the
interpreter) between the 176-byte records
assigned to the first set of tracks and the
176-byte records assigned to the second
set. The second set contains records that
represent one class of system output for

When the interpreter has completed the
processing of a job (all of the records
generated by the interpreter have been
written into the entry) it uses the Queue
Management Enqueue routine to place the
entry in an input queue. When an entry is
enqueued, it is added to the chain of
entries pointed to by the queue control
record (QCR) for that queue.

First track assigned

Second track assigned

Fourth track assigned

Third track assigned

ReD 8

ReD 11

ReD 12

Assigned

ReD 2

Assigned

ReD 9

ReD 10

ReD 3

ReD 4

Fifth track assigned

Figure 49.

Assignment of Two Sets of Logical Tracks

Part 6:

Common Elements of Job Management

149

Figure 50 shows the entry after it has
been enqueued. The QCR for the input queue
is in a known location in the queue data
set~ it has been updated to point to the
last logical track (in the original set)
assigned to the entry. The last logical
track assigned to the previous entry of the
same priority also points to that track; if
there were no other entries of that
priority, the last entry of the next higher
priority would point to the current entry .•
Having used queue management to obtain
space, write records, and finally to
enqueue the job's input queue entry, the
interpreter repeats the process for the
next job. If more than one reading task is
established in the system, the other
interpreters are concurrently performing
similar processing.

Concurrently with the creation and
enqueueing of input queue entries by
interpreters, initiators performing
initiating tasks dequeue and process input
queue entries, then create output queue
entries. When an initiator is ready to
process a job, it uses the Queue Management
Dequeue routine to remove the highest
priority entry from an input queue. When
an entry is dequeued, it is removed from
the chain of enqueued entries.
If, in
Figure 50, the "previous" entry were the
highest priority entry in the work queue,
the top-of-queue pointer in the QCR would
point to the last logical track assigned to
it. When that entry is dequeued, the
top-of-queue pointer is updated to point to
the next entry in the chain (the "current"
entry in the figure), which becomes the new
highest priority entry.

Last logical track assigned to the previous entry of this priority

RCD n-l

RCD n

To the last logical track
assigned to the highest
,priority entry

Queue Control Record
(I nput Queue)
Top of
Queue

Figure 50.
150

The Entry Enqueued in the Input Queue

OS/360 MVT Job Management (Release 21)

Current Entry

As the initiator processes the entry, it
uses the Queue Management Read/Write
routine to read records £rom the entry into
main storage, and to write the updated
records back into their assigned locations.
When additional messages to the programmer
are generated, routines performing the
initiating task use the Queue Management
Assign routine to obtain additional record
areas (and, if necessary, additional
logical tracks). The Queue Management
Read/Write routine is used to place the
records in the entry.
When the job terminates, the initiator
creates records describing the job's system
output data sets, and writes them into the
previously assigned, but unused, locations
in the entry. Finally, the initiator
enqueues the set of tracks containing
messages and system output data set
descriptions in the appropriate output
queue, then deletes the input queue entry.
Figure 51 shows the output queue entry
after it has been completed and enqueued.

Record 7 is a description of a system
output data set; it was written (at the
request of the initiator) into the area
reserved for it by the interpreter. Record
8 contains additional messages to the
programmer; the space for it was assigned,
and it was written, after the job
terminated.
The input queue entry is also shown in
Figure 49. Although it is physically
present, it will no longer be referred to,
except by the Queue Management Delete
routine. The Delete routine will make the
logical tracks the entry occupies available
for assignment to other entries.
When the output queue entry becomes the
highest priority entry in the queue, it
will be dequeued by a system output writer.
After the messages and data set
descriptions have been processed, it will
be deleted, and its logical tracks will be
available for assignment to other entries.

To the last logical track
assigned to the highest
priori ty entry

Input Queue Entry

Output Queue Entry

Figure 51.

The Entry Enqueued in an Output Queue

Part 6:

Common Elements of Job Management

151

Using Queue Management

Bit 2=1 if the caller is an initiator .•

The routine calling a Queue Management
routine must provide a 36-byte queue
manager parameter area (Figure 52). In
this area, the caller specifies the
function to be performed, and includes
information about the request, such as
queue to which the entry belongs and the
number of records to assign, or the
addresses of records to read or write. The
first 20 bytes of the QMPA correspond to
the logical track header (LTH) record.
When the Queue Management routines create
or update an LTH, they do so in the QMPA,
and write the LTH to the queue data set
from the QMPA.

Bit 3=0 if the job's priority has not
been changed.

Most of the fields in the QMPA are
self-explanatory. The bits in the Job
status Code field and the Priority field,
however, require further description, and
are discussed below:
• In the Job status Code field, bits 0-1
are reserved.
Bits 2-7 have the
following meanings when set to one:
Meaning
2

If a queue full condition is
detected during an attempt to
assign space, the routine returns
to the caller with a return code
of 4.
If this bit is off, the
routine issues a WAIT macro
instruction.

3

The input queue entry
corresponding to this RJE
collector job has been created.

4

The job failed (set only for
system output queue entries).

5

The job has been enqueued.

6

The priority has been changed (in
the input queue).

7

The job has been canceled (in the
input queue).

• In the Priority field, bit 0 is
reserved, bit 1 indicates a system
task, and bits 4-7 represent the
priority assigned to the job. Bits 2
and 3 have the following meanings:
Bit 2=0 if the caller of the Queue
Management routine is an
interpreter.

152

OS/360 MVT Job Management (Release 21)

Bit 3=1 if the job's priority has been
changed.
• In the field labeled Address of User's
ECB/IOB, the high-order (indicator)
byte contains two bits with the
following meanings:
Bit 1

(X'40') = 1

Bit 2 (X'20')

1

indicates that
transient queue
management routines
are to initialize
the ECB/IOB field.
indicates that
transient queue
management routines
are not to issue a
WAIT macro
instruction after an
EXCP macro
instruction has been
issued.

When records are assigned, the Queue
Management routines update the parameter
area with information on the current status
of the queue entry.
Unless a queue entry is to be enqueued
(and no record is to be written) or
deleted" the caller must also provide an
additional area, called the external
parameter area.
If a read or write
operation is to be performed, a buffer for
the records themselves must also be
provided.

using the ENQ and DEQ Macro Instructions
The Queue Management routines use the ENQ
and DEQ macro instructions to prevent
concurrent access to a queue control record
by routines performing different tasks.
There are two queue elements used; one
applies to the master QCR, and the other
applies to all other QCRs.
Each routine
that refers to or modifies QCRs issues the
ENQ macro instruction (specifying the
appropriate queue element) before
attempting the access, and issues the DEQ
macro instruction when its QCR processing
is complete.

Offset
Hex Dec

Queue Manager Parameter Area

() ()

r,-----------------------------------------------------------------~
Job Name or No-Work-Chain Element

.-L

8

8

1

2

Function Code

C

1

2

NN of Next Logical Track

10

16

1

Job Status Code

14

Logica I
Track
Header

2

Priority

NN of Next Queue Entry

20

1

2
Origin Class
ID

Queue Entry Identification

18

1
)ob Type Code

No of Logicol Tracks Assigned

1

1
No. Records Assigned
in This Track

NN of First Logical Track Assigned to This Entry

12

-

81.

1
Reserved

24
4
Address of Track Stacking Parameter List

lC

28

,

(1),
(Indicator)

20

32
Number of
Records to
Assign

24

I
I
I

4
Address of User's ECB/IOB

,

Number of
Records to
Read/Write

3
Address of Externa I Parameter Area

36

I Figure

52.

Queue Manager Parameter Area

Part 6:

Common Elerrents of Job Management

153

Input/Output Operations
In order to perform the function of
maintaining the work queues., the Queue
Management routines must transfer QCRs,
LTHs and 176-byte data records between main
storage and the queue data set. Figure 53
shows the sequence of I/O operations
performed by the Queue Management routines.
QCRs and LTHs are always transferred via
XDAP; 176-byte data records are transferred
via either XDAP or the Track Stacking
routines. During the initial formatting
operation (see the section "Initializing
the Queue Data set"), BSAM is used. since
BSAM is discussed in the publications IBM
System/360 Operating System: Data
Management Services, GC26-3746, and IBM
System/360 Operating System: Data
Management Macro Instructions, GC26-3794,
this section will discuss only the Track
Stacking routines.

performing separate tasks. For example the
initiator, which processes both input and
output queue entries, uses one stack and
two QMPAs.Each initiator, however, has
its own stack.

r----------r------------------------------,

1Queue
1
1Management 1
1
1Routine
IAssign
1
1
1
1
1
1
1
1

154

OS/360 MVT Job Management (Release 21)

11.
1
12.
13.
1
1
1
1
14.

I
I

1
1

Read the first LTH in the
free-track queue.
Write the newly assigned
LTH or (if there is a
previously assigned LTH)
write the last LTH to be
assigned.
Write the new LTH.
Write the Master QCR.

1
1
1
1
1
1
1
1
1

15.
1
1
1
1
16 •

Write the first record of 1
the job (if requested).
1
Read the appropriate QCR. 1
Read the last LTH assignedl
to the next higher
1
priority entry (or to the 1
last entry enqueued at thel
sane priority).
I
Write the last LTH
1
assigned to the entry
I
being enqueued.
1
Write the last LTH
1
assigned to the next
I
higher priority entry (or 1
to the last entry enqueued I
at the same priority).
1
Write the QCR.
1

~----------+------------------------------~

1Dequeue
11. Read the appropriate QCR.
12. Read the LTH of the
1
1
1
highest priority job in
l i t h e queue..
1
13. Write the updated QCR.
14. Read the first 176-byte
1
I
record in the dequeued
1
I
I
entry (if requested).

1
1
1
1
1
1
1
1

~----------+------------------------------~

1Delete
1
1
1
1

Write the last LTH
1
assigned to the entry.
1
12. Write the last LTH
1
I
assigned to the free-track I
I
queue.
1
IL__________i 13______________________________
• Write the master QCR.
JI

Figure 53.
It

11.
1
12.
1
1
1
1
13.
14.

~----------+------------------------------~

Enqueue

A stack may be shared by routines
performing a single system task. even
though they may be using several QMPAs.
may not, however, be shared by routines

1
1
1

~----------+------------------------------~

When 176-byte data records are to be
transferred" the caller of the Queue
Management routine supplies the record area
and TTRs. If track stacking is not
specified, the Queue Management routine
uses XDAP, and the records are transferred
directly between the record area and the
queue data set. An access to the queue
data set is thus required each time a
record is transferred.
If track stacking is specified, the
number of accesses to the queue data set is
reduced, because 176-byte records are not
transferred directly to or from the queue
data set. If a record is to be read (or
written to a preassigned location), the
entire logical track (except for the LTH)
is read into one of a set of chained
buffers in main storage called a track
stack. When the logical track is in main
storage, the record is moved to or from the
record area.. The logical track is kept in
the stack as long as possible; it is
written out (if any of the records it
contains have been updated) only when the
buffer it occupies is needed for another
track. If the records in a logical track
have not been updated, the track is not
written out; another track is read in over
it if the space is required.

I/O Operations Performed

11.

I

Sequence of I/O Operations
Performed by Queue Management
Routines

Track stacking is performed by three
routines, which receive control via a BALR
instruction issued in a Queue Management
routine when track stacking is specified.
The Track stacking routines are:

Specifying Track stacking

• The Stack Initialization routine
(module IEFSDll0), which obtains main
storage for a stack and initializes it.
• The Record Accessing routine (module
IEFSDll1>. which uses EXCP to transfer
logical tracks between the queue data
set and the stack, and transfers
records between the stack and
individual record areas.
• The stack purge program (module
IEFSD112) uses EXCP to write, from the
stack to the queue data set, all
logical tracks that have been updated.
In addition, it frees the main storage
occupied by the stack.

When track stacking is to be performed. it
is specified by the routine calling a Queue
Management routine. The calling routine
supplies a track stacking parameter list
and places a pointer to it in the QMPA.
The parameter list is a 4-byte area; its
high-order byte specifies the number of
logical track buffers in the stack (n), and
its three low-order bytes are reserved for
the address of the stack. which is
furnished by the Stack Initialization
routine when it has created the stack. If
there is a pointer in the QMPA, and the
high-order byte of the parameter list is
non-zero, the queue management routines use
the Track stacking routines.
If the
calling routine is an initiator, the track
stacking parameter list is extended four
bytes to include a i-byte field used by the
Assign routine to count the number of
tracks allocated to the initiator and a
3-byte pointer to the name of the job being
initiated.
Initializing a Stack

Figure 54 shows the usage of these
routines by the Queue Management routines.

r------------T----------------------------,
I Queue
I Management
I Routine

I
I
I
I
ITrack Stacking Routine Usagel

r------------+----------------------------~

IAssign/StartlThe Stack Initialization
I
Iroutine builds a stack.

I
I

r------------+----------------------------1
IAssign
IWhenever the Assign routine I
I
I
I
I
I
I

Imust obtain a new logical
I
Itrack from the free-track
I
I queue, the Record Accessing I
Jroutine is used to reserve al
Ibuffer and place it at the I
Itop of the stack.
I

r------------+----------------------------~

I Enqueue
I
I
I

IThe Record Accessing routine I
Imay write a i76-byte record. I
IThe Stack Purge routine
I
Ideletes the stack.
I

I
I
I

Iroutine builds a stack. Thel
IRecord Accessing routine
I
Ireads the JCT.
I

The Stack Initializing routine (module
IEFSDi10) is entered from the queue
management Assign/Start or Dequeue routine
when the caller has sfecified track
stacking.
If a track stack was passed to the Stack
Initializing routine by the caller. the
routine bypasses all of the processing
described below except the freeing of the
user's register save area, and control is
returned to the caller.
The Stack Initializing routine
calculates the amount of main storage
required for the stack (see Figure 55)
using the following formula:
Storage required=88+37N+x+n(8+176N)
Where:

t------------+----------------------------1
I Dequeue
IThe Stack Initialization
I
t------------+----------------------------~

I Delete
I

IThe Stack Purge routine
Ideletes the stack.

I
I

t------------+----------------------------~

I Read/Write IThe Record Accessing routinel
I
Ireads and writes 176-byte
I
I ____________ Idata
records.
L
____________________________
JI
~

Figure 54.

Usage of Track stacking
Routines by Queue Management

N= the number of 176-byte records
per logical track,
n= the number of logical track
buffers requested, and
x= an internally calculated value
from 0 to 3, used to make the
quantity 37N+x a multiple of 4.

When the length of the area has been
calculated, the Stack Initialization
routine issues the GETMAIN macro
instruction to obtain the storage from
subpool zero; if the TCB indicates that a
TSO task is being processed, the routine
obtains storage for the stack in subpool 1.
It stores the length of the stack in a
field 72 bytes from the beginning address
of the area, and stores the address of the
stack in the track stacking parameter list.

Part 6:

Common Elements of Job Management

155

It initializes the channel program and the
pointers to the logical first buffer and
the first physical buffer.
It stores the
contents of the 72-byte register save area
(which is obtained and passed to it by the
Assign/start or Dequeue routine) in the
first 72 bytes of the stack area, then
frees the main storage occupied by the
register save area, and returns control to
the assign/start or dequeue routine.

1

•
common Reglster

ave Area

track stacking, the routine will be entered
whenever the Assign routine obtains new
logical tracks from the free-track queue.
The interface between the Record Accessing
routine and the Queue Management routines
is shown in Figure 56.
When the Record Accessing routine is
entered, the QMPA points to a field
containing the TTR address of a record .•
The routine uses the TTR to determine the
NN of the record, its relative record
number within the logical track, and the NN
of the first 176-byte data record in the
logical track.

4
Length of Stack Area

4
Pointer to logical First Buffer

Stae
Head

4
Pointer to Physi cal First Buffer

4
Reserved for Boundary Alignment

(32 + 5) N Bytes

>

Channel Program

'"
4

Pointer to logical Next Buffer

2

NN of First Record

I

in Buffer

Switches

First a f n
Logic 01 Track

176N

~

176-Byte Records

Figure 55.

If the relative record number is zero,
the record is an LTH, and the Record
Accessing routine has been entered from the
Assign routine to reserve and initialize a
buffer. The routine searches the stack for
an unused buffer:
• If it finds an unused buffer, the
routine stores the NN of the first
176-byte data record of the track, then
updates the buffer chain fields so that
the buffer becomes the top buffer in
the stack.

Buffer

~

Track Stack Area

Record Access
The functions of the Record Accessing
routine (module IEFSDlll) are to move
176-byte data records between the track
stack and the queue data set, and when
called by the Queue Management Assign
routine. to reserve buffers for newly
assigned logical tracks. In performing
either function, it may be necessary for
the routine to transfer logical tracks
between the queue data set and the stack.
If the caller has specified track
stacking, the Enqueue, Dequeue., and
Read/Write routines call the the Record
Accessing routine whenever a 176-byte
record must be transferred. Also, if the
caller of the Assign routine has specified

• If there is no unused buffer, the
routine reserves the buffer at the
(logical) bottom of the stack. If the
buffer's write indicator is on, the
routine writes the contents to the
queue data set before initializing. If
the buffer's write indicator is off,
the routine stores the NN of the first
176-byte data record of the track, then
updates the buffer chain fields so that
the buffer becomes the top buffer in
the stack.
If the relative record number is
nonzero, the Record Accessing routine has
been entered to transfer a 176-byte data
record to or from the stack. The routine
searches the stack for a buffer whose
identifying NN is the same as the NN of the
first 176-byte data record in the logical
track that contains the record to be
transferred:
• If a buffer with the same NN is found,
the chain is updated so that the buffer
is at the logical top of the stack, and
the record is transferred to or from
the buffer according to the code in the
QMPA.
(

\

156

OS/360 MVT Job Management (Release 21)

in the QMPA. If there are no unused
buffers. the routine takes the buffer
at the logical bottom of the stack. If
that buffer's write indicator is on.
the routine writes the contents to the
queue data set before reading the
required track and processing as
described above.

• If no buffer with the same NN is found.
the logical track must be read into the
stack before the record can be
transferred. The routine looks for an
unused buffer; if it finds one. it
reads the logical track into the
buffer .• updates the chain to make that
buffer the logical top of the stack,
and transfers the record as specified

\

Register 1

)

~egister

13

I \

~'------'---_.,----------J------>'

Stack Address

n

+8
Rd or Write
QMPA
Track Stack Area

+24

4
Pointer to Track Stacking Parm List

4
ECB/IOB Address

3

Pointer to Record Address
and TTR

4
Main Storage Address of Record

3
TTR

Figure 56.

o

Record Accessing Routine Interface
Part 6:

Common Elements of Job Management

157

Whenever data is transferred to a
buffer, the Record Accessing routine turns
the buffer's write indicator on.
Purging a stack
When the routines performing a system task
complete the processing of a queue entry,
when a new region is to be obtained, and
when a job step TCB is to be attached, the
track stack is no longer required. The
Stack Purge routine (module IEFSD112) is
therefore entered from the Queue Management
Enqueue or Delete routine, and from the
initiator region size and Step Attach
routines, when the caller has specified
track stacking.
If the Stack Purge routine is entered
from any routine except the Queue
Management Delete routine, i t must write
out any updated logical tracks still in the
stack. It examines the write bits
associated with the buffers in the order in
which they are chained; all buffers whose
write bits are on are written out in order
except the first buffer, which is written
out last. Thus, although the Track
Stacking routines may not place records in
the queue data set in the order in which
they were updated, the presence of the last
record updated (usually the SCT) indicates
that all previously updated records are
also in the queue data set.
When the updated logical tracks have
been written out, or if it is entered from
the Queue Management Delete routine, it
obtains a 72-byte area in main storage and
places the address of the area in register
13.
It then moves the first 72 bytes of
the stack into the area, frees the main
storage occupied by the stack, and returns
control to the Queue Management Delete
routine.
Assigning Queue Space
Whenever a queue entry is started, or
records are to be added to an existing
entry, space in the queue data set must be
assigned to the entry. A queue entry is
started whenever an interpreter encounters
a new job in the input stream, and whenever
a DD statement is found that specifies a
system output class not previously
encountered in the current job. Records
are added to the queue entry as job control
language (JCL) statements are processed by
an interpreter: records are also added to
queue entries by the I/O Device Allocation
routine and the Termination routine.

queue entry. The routine builds an event
control block (ECB) and an input/output
block (lOB) for use when records are read
from or written to the queue, and (unless
track stacking is specified) returns
control to the caller.
If track stacking is specified, there is
a pointer in the QMPA to a track stacking
parameter list. The parameter list
specifies the number of buffers required
for the stack, and contains space for a
pointer to the stack area .•
If the number of buffers field is not
zero, the Assign/start routine passes
control to the stack Initialization routine
(module IEFSD110), which obtains main
storage for the stack from subpool 0 or
subpool 1 if a TSO task is being processed,
initializes it, places the address of the
area in the parameter list, and returns
control to the Assign/start routine. The
Assign/start routine then returns control
to its caller.
Assign
When the Assign/Start routine has been
executed, other queue management functions
may take place.
It is necessary to have
space assigned to the queue entry before
records can be written, and it is the
function of the Queue Management Assign
routine (module IEFQASGQ) to assign space
as required.
The primary users of the Assign routine
are interpreters.
However, since additions
may be made to the queue entry by the I/O
Device Allocation routine and by the
Termination routine., it is possible that
lack of available queue space could prevent
a job from being initiated or terminated.
To prevent this situation from
occurring, two thresholds are established
according to parameters submitted when the
system is generated, or when the queue is
initialized.
The two parameters are the number (T) of
176-byte records to be reserved for each
initiator and the number (K) of 176-byte
records to be reserved for terminating a
job. These parameters are converted to
numbers of logical tracks with the formula:
(T~1)+2 = number of logical tracks

where N= the number of 176-byte records per
logical track.

Assign/Start
It is the function of the Queue Management
Assign/start routine (module IEFQAGST) to
prepare for the establishment of a new
158

OS/360 MVT Job Management (Release 21)

T is then added to K; the sum is T',
which is the number of logical tracks that
must be reserved for initiator use in
terminating a job.

As each initiator is started, the sum of
T and T' is compared to the number of
available tracks (the number of tracks in
the free-track queue plus the number of
tracks actually in use by initiators). If
the sum of T and T' is greater than the
number of available tracks, the reserve
indicator is tested.
If a reserve exists,
it is used for this initiator. If no
tracks have been reserved, the START INIT
command is rejected and the operator is
notified. When enough space is available
for the request to be honored, an attempt
is made to add to T' an extra T tracks so
that an additional initiator can be
started. If this is possible, the reserve
indicator is set on.
When any task except an initiating task
or an interpreter executing a START command
requests the assignment of records to a
queue entry, the number of records is
converted to logical tracks and subtracted
from the number of tracks in the free-track
queue.
If the result is less than T' minus
the number of tracks actually in use by
initiators, the Assign routine tests bit 2
of the job status code field in the QMPA.
If the bit is on, the routine sets a return
code of 4 and returns control to its
caller; if the bit is off, the interpreter
is placed in the wait state until
additional tracks become available.
When an initiator executing a START
command requests the assignment of queue
space, the Assign routine compares the
number of tracks requested to the number of
tracks in the free-track queue.
If enough
space is available, the number of logical
tracks requested is subtracted from the
number available, and the assignment is
made.
The count of the number of tracks
allocated to the initiator is updated.
(This count is the first byte in the second
word in the track stacking parameter list.)
If there is not enough space available, the
Assign routine informs the operator.
When the assignment of logical tracks is
requested by an initiator the request is
inspected to make sure that honoring it
would not increase the number of logical
tracks used by the initiator in running
this job to more than T. If so, the job is
terminated and the operator informed.
When an assignment of logical tracks is
requested, and no logical tracks are
available, the operator is informed. This
situation can result in the system becoming
interlocked and unable to continue; in such
cases the queue data set must be
reformatted, with a larger extent. If so,
the operator is informed.
In addition, when an initiator is to be
started, T' is recalculated. The number of

logical tracks to be reserved for each
initiator (T) is added to the old value of
T', and if the result is less than the
number of tracks in the free-track queue,
the initiator cannot be started; the START
INIT command is rejected, and the operator
is notified.
When an initiator is stopped, and the
reserve indicator is on, T' is recalculated
by subtracting from it, the number of
tracks to be reserved for each initiator
(T). If the reserve indicator is off, it
is turned on, and the subtraction does not
take place.
The Assign routine is entered before
records are written; it determines whether
there are enough records available in the
currently assigned track to accommodate the
request for space.
If so, it places the
addresses of the next available records in
the external parameter area, increments the
records-assigned field in the parameter
area, and returns control to the caller.
If there are not enough records left, an
additional logical track must be assigned.
The Assign routine issues an ENQ macro
instruction to prevent access to the master
QCR by routines performing other tasks,
then uses the top-of-queue pointer in the
master QCR to determine the address of the
first logical track in the free-track
queue. It reads the LTH into main storage,
creates an updated LTH for the last logical
track assigned to the entry, and updates
pointers as shown in Figure 57 and
described below:
• The LTH of the logical track obtained
from the free-track queue contains a
pointer to the next track in that
queue; the pointer is placed in the
master QCR.
• The newly assigned logical track is
chained to the last logical track
assigned to the entry, by placing the
NN of the LTH of the newly assigned
track in the next-track field of the
LTH of the last assigned track.
• The next track field of the LTH of the
newly-assigned logical track is zeroed
out, indicating that it is the last
track assigned.
If track stacking has been specified,
the Assign routine uses the Record
Accessing routine to reserve a buffer for
the newly-assigned track. On the return,
or if track stacking was not specified, the
Assign routine determines whether there are
any 176-byte records to be assigned from
the last logical track assigned.
If so,
the routine places their addresses (TTR) in
the external parameter area.

Part 6:

Common Elements of Job Management

159

QMPA

o

Pointer to
Next Logical Track

Master
QCR

Status Before Assign Routine Executed

QMPA

Master
QCR

Pointer to

o
Status When a Fourth Logical Track Has Been Assigned

o

= Logical Track Header Record. Numbers indicate order in which
assigned

I

or order in the free - track queue

= Pointers, in the form NN

Figure 57.

160

Logical Track Assignment

OS/360 MVT Job Management (Release 21)

Next Logical
Track

The updated LTH for the last-assigned
logical track now points to the newly
assigned logical track, and the routine
writes the LTH to the queue dat~ set. The
routine then updates the external parameter
area by adding the addresses of the records
to be assigned from the newly-assigned
logical track.
It sets the LTH next
logical track pointer to zero, then writes
the LTH and master QCR, issues theDEQ
macro instruction, and returns control to
its caller.
Enqueuing an Entry
A queue entry is built record by record.
As JCL statements are processed by an
interpreter, they are converted into
176-byte tables; space is assigned, and the
tables are written into the queue data set.
When interpreter processing for a job is
complete, the input queue entry is ready to
be enqueued; when the last step has
terminated, the output queue entries are
ready to be enqueued. Each entry exists as
a set of 176-byte records, on one or more
logical tracks (which are chained together)
in the queue data set. Until it is
enqueued, however., an entry is not a member
of any queue; the location of the entry is
available only in the queue manager
parameter area that refers to it, and its
priority, relative to that of any other
entry, is unknown.
The function of the Queue Management
Enqueue routine (module IEFQMNQQ) is to
make an entry a part of the appropriate
queue" by updating pointers in the queue
control record (shown in Figure 58), and in
the logical track headers of the entry and
of the next higher priority entry.

Pointer (NN) to Last LTH
of Top Priority Entry

2

14

2

2

13
2

2
10

2

\~~l

9

~ \.~\"\

\.os

\0 \"\0~\t'9

\e~'
'(.t'\('/
0,<,/
\,o,t'
,\
\' \o~,
~ \.o\e
0 ~
o \~\Co\e

2

8

o

5

2
4

2
3

2
2

2

Hold Q

IHi09h~st
J
ProOrity

Figure 58.

When it is entered, the Enqueue routine
issues an ENQ macro instruction to prevent
routines performing other tasks from
referring to the QCR.
The routine then reads the QCR into main
storage, determines from the queue manager
parameter area (QMPA) the priority under
which the entry is to be enqueued, places
the contents of the origin-class-ID field
in the function and extracts, from the
QMPA, the pointer to the last logical track
assigned to the entry.
The QCR bottom-pointer fields are then
scanned, starting at the new entry's
priority, for a pointer to an entry of
equal or higher priority.
If a non-zero
bottom-pointer field (corresponding to an
equal or higher priority) is found, such an
entry exists, and the following steps are
taken:
• The pointer is the address (NN) of the
last logical track assigned to the
entry. This address is converted to
MBBCCHHR format, and the LTH of that
track is read into main storage.

2

6

2

1

The Enqueue routine may be used to write
a record in the entry before the entry is
enqueued; when the interpreter is ready to
enqueue an input queue entry, the job
control table (JCT) has not been written
into the entry (although space has been
assigned for it). The interpreter supplies
the address of the record in the entry
reserved for the JCT, and also its location
in main storage. The Enqueue routine
places the JCT in the entry, then enqueues
the entry.

12

11

7

2

A typical queue is shown in Figure 59;
the QCR points to the last logical track
assigned to the highest priority entry in
the queue, and to the last logical track
assigned to the last entry enqueued under
each priority. The LTHof the last logical
track assigned to each entry points to the
last logical track assigned to a lower
priority entry (enqueued later with the
same priority, or enqueued with a lower
priority) •

2
0
3

ECB Address of First Task Awaiting Work

Queue Control Record Format

• The LTH ~ontains a pointer to the next
queue entry (or zero).
This pointer is
placed in the LTH for the last logical
track assigned to the new entry, and
the LTH is written into the queue data
set.
• A pointer to the last logical track
assigned to the new entr~ is placed in
the LTH read in from the old (equal or
higher priority) entry; this LTH is
then written back into the queue data
set.

Part 6:

Common Elements of Job Management

161

.First Priority 10
Entry Enqueued

last Priority 10
Entry Enqueued

Queue
Control
Record

Top

14

13
11

12
10

9

8

7

6

5

4

3

2

First Priority 6
Entry Enqueued

last Priority 6
Entry Enqueued

0

Only Priority 0
Entry Enqueued

0=
LAST lTH

logical track header record. The 176-byte records on each logical track are not shown.

= The lagical track header of the last logical track assigned to that entry.

FIRST lTH = The logical track header of the first logical track assigned to that entry
--_~~ Pointers, in the form NN

Figure 59.

Typical Queue

• A pointer to the last logical track
assigned to the new queue entry is
placed in the QCR bottom pointer field
corresponding to the new entry's
priority.
If there are no entries in the queue that
have a priority equal to or higher than
that of the new entry, the following steps
are taken:
• The pointer to the next lower
entry is placed in the LTH of
logical track assigned to the
entry, and the updated LTH is
into the queue data set.

priority
the last
new
written

• A pointer to the last logical track
assigned.to the new entry is placed in
the QCR under the appropriate priority,
and in the top-of-queue-pointer field.
• The priority under which the new entry
is to be enqueued is placed in the top
priority field.

162

OS/360 MVT Job Management (Release 21)

If any tasks are waiting for an entry to
be enqueued, the ECB pointer field in the
QCR points to the first of a chain of ECBs:
the 3 low-order bytes of each ECB point to
the next ECB in the chain, and the last ECB
is set to zero. Each ECB represents one of
the waiting tasks: the Enqueue routine
posts each ECB" writes the QCR back into
the control record area of the queue data
set, issues a DEQ macro instruction, and
returns control to the caller.

Degueuinq an Entry
When an initiator is ready to process a job
description,. and when a system output
writer is ready to process a job's system
output, they use .the Queue Management
Dequeue routine (module IEFQMDQQ) to find
the highest priority entry in the
appropriate queue, remove it from the
queue, and read the first record into main
storage.

When a queue entry is dequeued. pointers
in the QCR for that queue. and pointers in
certain LTHs are updated so as to delete
the entry from the queue. In addition. the
first data record is read into the main
storage area specified by the caller of the
Dequeue routine, and if the entry is in the
input queue., a command scheduling control
block (CSCB) is created for the job.
The entry remains in the queue data set
(the tracks are not made available for
reassignment); records may be read from it,
updated, and written back into it. Also,
additional queue space may be assigned to
it, and records added. The address of the
degueued entry, however. is available only
in the queue manager parameter area, and in
those data records that contain their own
addresses, or pointers to other records.
When the Dequeue routine is entered, it
issues an ENQ macro instruction, to prevent
routines performing other tasks from
referring to the QCR, reads the QCR into
main storage, and extracts the top-of-queue
pointer.
If the top-of-queue-pointer (which is in
NN form) is zero, there are no entries in
the queue, and the ECB address field of the
QCR is inspected to determine whether there
are any other tasks waiting for an entry to
be enqueued.
If the ECB address field in
the QCR is zero, there are none; the
address in the first four bytes of the
QMPA, which pOints to an 8-byte element
(see Figure 60), is placed in the ECB
address field of the QCR. Control is then
returned to the caller, with a return code
indicating that there are no entries in the
queue.
If there are other tasks waiting for an
entry to be enqueued. the ECB address field
in the QCR contains a pointer to the first
element in a nno-work n chain of 8-byte
elements, each element being associated
with a separate task. 'I'he high-order four
bytes of each element contain an ECB; the
fifth byte contains the name of the queue
to which the element applies, and the three
low-order bytes contain a pointer to the
next element in the chain.
If there are
other tasks waiting for an entry to be
dequeued, ~he element is added to the
chain, then control is returned to the
caller.

If the top-of-queue-pointer is not zero
it is converted to the MBBCCHHR form, and
used to read the LTH of the last logical
track assigned to the queue entry into main
storage.
This LTH contains a pointer to the next
queue entry: an entry of the same priority
that was enqueued after it" or, if there
are no other entries of the same priority,
an entry in the next lower priority. If
the pointer is zero, there are no more
entries in the queue.
If the pointer is not zero, the Dequeue
routine determines whether the next entry
has the same priority or a lower priority.
If the QCR top-of-queue pointer and the
bottom pointer (for this entry's priority)
are equal, the next entry has a lower
priority. The LTH pointer in the dequeued
entry is extracted and placed in the QCR
top-of-queue-pointer field, the bottom
pointer fields are scanned, and when a
pointer is found, its priority is placed in
the QCR highest priority field.
If, however, the next entry has the same
priority, the LTH pointer from the dequeued
entry is placed in the top-of-queue-pointer
field, but the highest priority field is
not changed.
When it has been updated, the QCR is
written back into the control record area
of the queue data set.
If the entry was dequeued from the input
queue, it describes a job; the Dequeue
routine constructs a CSCB for the job, and
issues SVC 34 to place the CSCB in the CSCB
chain, where it remains until the last step
of the job has terminated. When SVC 34 has
been issued, a DEQ macro instruction is
issued.
The LTH of the current entry contains a
pointer to the first logical track in the
entry; the pointer is converted to the
MBBCCHHR form, used to read the first
176-byte record in the entry into main
storage, and control is returned to the
caller.
Deleting an ECB From the No-Work Chain

ECB

Link Field

8-Byte Element of the No-Work Chain

Figure 60.

8-Byte Element of the No-Work
Chain

When a task must wait for an entry to be
enqueued, the WAIT macro instruction
specifies an ECB in an 8-byte element
(shown in Figure 60). The element is
chained, by the Queue Management Dequeue
routine, to similar elements created in the
performance of other tasks.
Part 6:

Common Elements of Job Management

163

If the waiting task is an initiating or
writing task, the use of a queue maybe
terminated as a result of a STOP or MODIFY
command. When the command is received, the
routines performing the task place the name
of the queue in the name field of the
element, and pass control (with a pointer
to the element) to the Queue Management
Unchain routine.
The Queue Management Unchain routine
(module IEFQMUNQ) obtains main storage for
the QCR, and for an ECB/IOB..
It constructs
the ECB/IOB, then issues an ENQ macro
instruction to prevent routines performing
other tasks from referring to the QCRs.
The routine determines whether the ECB
in the element has been posted.
If it has,
a DEQ macro instruction is issued, the main
storage is released, and control is
returned to the caller.
If the ECB has not been posted, the QCR
of the queue specified in the name field of
the element is read into main storage. If
the element being deleted is the only
element in the chain, the Unchain routine
sets the ECB address field in the QCR to
zero.
If not, it deletes the element from
the chain.
The routine then writes the QCR back
into the queue data set, issues the DEQ
macro instruction" and releases the main
storage it obtained for the QCR and
ECB/IOB, then returns control to the
calling routine.
Deleting an Entry
A queue entry remains an entity, and the
logical tracks on which it resides remain
assigned to the entry, until all processing
of the entry is complete. At that time,
the initiator or system output writer uses
the Queue Management Delete routine (module
IEFQDELQ) to return the entry's logical
tracks to the free-track queue.
When the Delete routine is entered, it
issues an ENQ macro instruction to prevent
access by other routines to the master QCR.
The routine then extracts the pointer to
the last track in the free-track queue from
the master QCR.
The LTH of the last track in the
free-track queue is constructed in main
storage, and is updated with a pointer to
the first track formerly assigned to the
queue entry. The LTH of the last track
formerly assigned to the queue entry is
updated to set its next-track-address field
to zero (indicating that i t is the last
track in the free-track queue). The master
QCR is updated to point to the new last
track and the count of available tracks is
164

OS/360 MVT Job Management (Release 21)

incremented. The LTH of the old last
track, the LTH of the new last track in the
free track queue, and the updated QCR are
written into the queue data set.
Finally, the DEQ macro instruction is
issued to make the master QCR accessible to
routines performing other tasks, and
control is returned to the caller.
Transient Queue Management Routines (SVC
90)
The set of Transient Queue Management
routines consists of the Transient Queue
Management Initialization and Read/Write
routine (module IEFXQMOO), the Transient
Queue Management Track Assignment ,~outine
(module IEFXQM01), and the Transient Queue
Management Record Assignment routine
(module IEFXQM02). 'These routines perform
the same functions as the Queue Management
Read/Write routine (module IEFQMRAW), the
Queue Management Assign/Start rotuine
(module IEFQAGST), and the Queue Management
Assign routine (module IEFQASGQ).
The Transient Queue Management routines
reside in SYS1.SVCLIB and operate in the
transient SVC area. The routines are
entered whenever an SVC 90 is issued.
When the Transient Queue Management
Initialization and Read/Write routine
receives control, it first initializes an
ECB/IOB and prepares the QMPA.
If the
Transient Queue Manager is requested to
provide a track or record, the routine
passes control via an XCTL macro
instruction to the Transient Queue
Management Track Assignment routine or the
Transient Queue Management Record
Assignement routine.
If the Transient
Queue Manager is requested to read or write
a record onto the job queue, the Transient
Queue Management Initialization and
Read/Write routine performs the read or
write function. The routine returns
control to the caller upon completion, as
does the Transient Queue Management Track
Assignment routine and the Transient Queue
Management Record Assignment routine.
Degueue by Jobname Routine (IEFLOCDQ)
The Dequeue by Jobname routine is a queue
management function that the RJE, TSO, and
Checkpoint Restart modules use for
searching a jobqueue for jobs. The routine
uses, as subroutines, the modules IEFRDWRT
(for reading and writing the queue records)
and IEFCNVRT (for converting relative track
addresses to absolute addresses).
As queues are searched, module IEFLOCDQ
puts into a parameter area, which a user
has passed to it, information related to
the dequeueing or cancelling of jobs. The

particular entry point at which module
IEFLOCDQ gains control determines whether
the module will locate, locate and cancel,
or locate and dequeue a job.

5.

The caller that requests the dequeue
routine must provide a parameter list with
pointers to the following items:
1.

A jobname list.

2.

The number of jobs on the list.

3.

The queue control record (QCR) number
for the jobqueue (i.e.
indicating
whether the queue is an ASB reader
queue, an RJE queue, an input queue,
an output queue, etc.).

An information area in which module
IEFLOCDQ will place the following
items (for each job located on the
queue) to be returned to the caller:
• The position of the job on the
jobqueue.
• The priority of the job.
• The status of the job.
• The relative address of the job on
the jobqueue.

6.
4.

The number of actual jobs found on the
queue.

Part 6:

For jobs to be dequeued, the address
of a list of queue entries and the
address of an ECB/IOB.

Common Elements of Job Management

165

The Interpreter Routine
The information furnished to the operating
system in an input stream is in the form of
SO-character JCL statements. This
information must be converted to a series
of standard tables, so that it can
conveniently be processed by other job
management routines. The conversion is
performed by the interpreter routine, used
as a subroutine by the other job management
routines.
The interpreter (Chart 02) is called by
passing control to module IEFVH1, the
Interpreter Initialization routine (Chart
03).
The interpreter is capable of taking
information from an input stream and the
procedure library" processing it, and
storing it for convenient retrieval by
programs executing other tasks.
It returns
control to its caller when the end of the
input stream has been reached, or when an
appropriate STOP command has been issued.

written, unchanged, to a direct access
device for later retrieval by its
associated Job step.
The procedure library is a partitioned
data set, which may be blocked or unblocked
according to the user's specification.
Each member (called a cataloged procedure)
is a set of JCL statements describing
frequently executed series of job steps.
Like a cataloged procedure, an in-stream
procedure is a set of JCL statements
describing frequently executed series of
job steps. However, an in-stream procedure
is included in the input stream of a job
rather tha~ in the procedure library. As
many as fifteen in-stream procedures may be
included in one job, and an in-stream
procedure may be executed any number of
times during the job, to a maximum of 255
job steps.

THE INTERPRETER INTERFACE
An input stream is a sequential data set
composed of job control language (JCL)
statements, operator command statements,
and system input data. Command statements
cause the interpreter to issue SVC 34 (see
the Command Processing section in this
publication) so that the Command Scheduling
routine is executed. System input data is

166

08/360 MVT Job Management (Release 21)

Figure 61 shows the data flow and the
control and data interfaces of the
interpreter. The caller must provide an
interpreter entrance list (NEL), and an
option list, and he may provide an exit
list. These lists are shown in Figures 62,
63, and 64, respectively, and their fields
are described below.

SCAN
DICTIONARY

JOB STATEMENT
PARAMETERS

INPUT
STREAM
CONTROL
ROUTINE

JOB, EXEC, DD
STATEMENTS

SCAN
ROUTINE

CODED
PARAMETERS

INTERNA
LIST

EXEC STATEMENT
PARAMETERS

JOB STMT
PROCESSOR

INPUT
QUEUE
ENTRY

EXEC STMT
PROCESSOR

PROCEDURE
LIBRARY
DD STATEMENT
PARAMETERS

TERMINATION
ROUTINE

Figure 61.

COMMAND
SCHEDULING
ROUTINE
(SVC 34)

Interpreter Data Flow

The Interpreter Entrance List (NEL)

be added to the input queue entry
associated with the QMPA.
If this
field is zero. a separate input
queue entry is created for each job.

The interpreter entrance list is a six- or
seven-word parameter list that contains
pointers to the tables used in
communicating information between the
caller and the interpreter:
Wdrd
1

Contents
The first word
pointer to the
pointer, which
the caller. is
interpreter.

of the NEL contains a
option list. This
must be supplied by
maintained by the

2

The second word must contain the
address of the STOP ECB.

3

The third word may contain the
address of the input stream if it is
to be processed by a special access
method.
If no special access method
is to be used. this field is
ignored.

4

DD STMT
PROCESSOR

OUTPUT
QUEUE
ENTRIES

Upon the return to the caller. this
field points to the QMPA for the
last job processed. unless the
enqueue option was selected. In
this case, the field is zero.
5

The fifth word is unused upon entry
to the interpreter. On the return
to the caller. however. it contains
a pointer to the JCT constructed for
the last job processed by the
interpreter, unless the enqueue
option was selected.
In that case,
it will be zero.

6

The sixth word may contain a pointer
to the exit list (see Figure 64).
If this pointer is supplied. it is
maintained by the interpreter; if it
is zero, the default exit options
apply. If the user omits the
optional seventh word from the NEL.
he must set the high order bit of
the sixth word to indicate that it
is the last word in the list.

The fourth word may contain the
address of a queue manager parameter
area (QMPA).
If so. the set of
tables created for the first job to
be processed by the interpreter will
Part 6:

Common Elements of Job Management

167

The seventh word is optional and may
contain the address of the console
identifier, which indicates the
console on which operator messages
will be displayed. The ID specifies
the console that issued the last
operator command affecting the
interpreter. If the user specifies
zeros in the seventh word, the
address defaults to the master
console.
If the user omits the
seventh word from the NEL, operator
messages will be displayed on the
master console. If the user
includes the seventh word, he must
set the high order bit of the word
to indicate that it is the last word
in the list.

7

1

If this bit is on, the
interpreter processes the
TERM=TS DD keyword.

2

If this bit is on, the SMF
options to be used are found
in byte NELSMFOP of the NEL.

3

If this bit is on, the
interpreter sets bit 2 in the
JCT to indicate that all
messages for this job are to
be suppressed.

4

If this bit is on, the
interpreter initiates track
stack processing.

5

If this bit is on and the job
queue is full, the interpreter
deletes all queue entries for
the current job, sets a return
code of 12, and terminates
normally.

6

If this bit is set to 1, the
interpreter is not to convert
option list fields from EBCDIC
to binary.

7

4

If this bit is on, the
interpreter is to enqueue
jobs~ if the bit is off, the
interpreter is to return to
the caller a pointer to the
JCT constructed for the most
recent job, and a pointer to
the QMPA associated with the
queue entry, but it is not to
enqueue jobs.

Interpreter Entrance List (NEL)

• System Code: This field specifies the
level (MFT or MVT) of the operating
system:

4
Option List Pointer
4
ECB Pointer
4
JCL Pointer
4
QMPA Pointer
4
JCT Pointer

4
Exit List Pointer

Comole ID Pointer

Figure 62.

The Option List
The option list, shown in Figure 63,
specifies the processing options of the
interpreter and the values to be used when
default options are taken in job control
language statements. It contains the
following fields.
• List Length: This field contains a
binary number that represents the
number of bytes in the option list.
• Option Switches: This field specifies
the following interpreter options.
Bit

-0-

168

Explanation
If this bit is on (set to 1),
the interpreter performs
System Management Facilities
(SMF) functions.

OS/360 MVT Job Management (Release 21)

Value
X'Ol'
x' 02'

system
MVT

MFT

• SMF Override: This field contains a
user-override for standard SMF option9'
• Queue Tracks: This field indicates the
number of track stacking buffers used
by the interpreter.
• Interpreter Number: This field
contains a binary number used by the
interpreter in the generation of unique
data set names. The number should not
duplicate any other interpreter number
issued since the last IPL procedure was
executed.
• Parameter options: This field contains
an EBCDIC character from 0 through F
that is the hexadecimal equivalent of
the binary value of a four-bit field:

Value
X' 01'
X'02'
X, 04'
X' OS'

Explanation
step can cause rollout.
Step can be rolled out.
Fail all jobs that do not
specify an account number.
Fail all jobs that do not
specify programmer's name.

Value
X'40'
X'20'

• Default/priority: This field contains
the priority value that the interpreter
is to assign when priority is not
specified in the JOB statement.
• Default Time Limit: This field
contains the time limit the interpreter
is to assign when time limit is not
specified for a job step.

• Default SYSOUT Device Name: This field
contains the three-character name of
the unit to be used for system output
data sets' if no UNIT parameter was
specified in a system output DD
statement.
• MCS Command Authority: This field
contains a four-byte hexadecimal number
that indicates the command groups that
may be submitted on input command
statements. The command groups are
organized as follows:
Group
Number

• Default SYSOUT Primary Quantity: This
field contains a value representing the
number of tracks to be assigned to
system output data sets when no other
specification is made.
• Default SYSOUT Secondary Quantity:
This field contains a value
representing the secondary quantity of
tracks to be assigned to system output
data sets when no other specification
is made.
• Interpreter Dispatching Priority: This
field contains a value representing the
dispatching priority assigned to the
task being performed by the
interpreter.

• Command Authorization: This field
specifies the disposition of commands
encountered in an input stream:
X'SO'
X, 40'

X, 20'

X'10'

Commands

o

BRDCST, MSG, DISPLAY, SHOW,
LOG, REPLY.

1

CANCEL, RESET, CENOUT, SErI,
DEFINE, START, HALT, STOP,
HOLD, USERID, MODIFY, RELEASE,
WRITELOG, QUIESCE (Model 65),
MODE (Model S5).

2

MOUNT, SWAP, VARY (Nonconsole
devices), UNLOAD.

3

VARY (Console devices).

4-15

Reserved.

Group 0 commands are always executed;
therefore, they are given no explicit
authorization in this field.
The
four-byte hexadecimal number in the
field indicates the other groups that
are authorized for execution. The
hexadecimal value is derived as
follows:

• Default Region Size: This field
contains the size of the region that
will be requested for a step when no
region size specification is made in
the EXEC statement.

Value

Processing
Treat BLP as NL.
Treat BLP as bypass label.
Operator specifies processing
action.

X'SO'

Disposition
Execute the command.
Display the command (via a WTO
macro instruction), and execute
it.
Display the command (via a WTOR
macro instruction), but do not
execute it unless advised to do
so by the operator.
Ignore the command.

• Label Processing: This field specifies
the processing to be performed as a
result of the Bypass label processing
(BLP) parameter:

1.

The bits in two bytes are numbered
one through sixteen.

2.

The bits corresponding to the
groups authorized for execution
are set to 1; all remaining bits
are set to o.

3.

The binary value of each of the
two bytes is converted to
hexadecimal, and the two
hexadecimal values are placed in
the four-byte field.

• Default JCL Message Level: This field
specifies the default for the JCL
message level for the MSGLEVEL of the
job:

Part 6:

Cammon Elements of Job Management

169

Value

output
JOB statement only.
Input JCL statements. cataloged
procedure statements, and
symbolic parameter substitution
messages.
Input JCL statements only.

-01

2

this field are used as the default
message class,.
• Starting Job Name: This field contains
either zeros or a job name. If the
field contains zeros, the interpreter
will start processing jobs with the
first job in the input stream; if it
contains a name, the interpreter will
ignore all jobs in the input stream
until the named job is encountered.

• Default Allocation Message Level: This
field specifies the default for the
allocation level for the MSGLEVEL of
the job:

The Exit List
Output

o

No output:
allocation/termination messages
are suppressed unless the job
step terminates abnormally.

1

Allocation/termination
messages.

The exit list (Figure 64) permits linkage
to Optional Exit routines. The list
consists of an 8-byte header entry
containing the length of the list, and a
series of 8-byte data entries, each of
which describes an exit. Data entries
contain the following fields:

Note: The allocation message
level for system tasks is
always zero.
.

List Length

I

1
Queue Tracks

SMF
Override

Option
Switches

1

2
Interpreter Number

Default Priority

Default Time Limit (cont'd)

3

Setting

Default
Time Limit

X'CO'

3
3

Default. Region Size (cont'd)

3

Command
Disposition

1

Default
Region Size
1

Label

4
MCS Command Authority

5

Reserved

Starting Job Name

1
T

Reserved

(Figure 63.

Interpreter Option List

• Default Message Class: This field
specifies the default message class.
If the contents of this byte are zeros,
the default message class is message
class A. If nonzero, the contents of
170

ID

Bit

Exit

~

Default SYSOUT DeVIce Name

Default
1 I'LJefoult
1 I~D ~ It
1I
JCL Message Allocation
e au
I
Leve I
Messaae Leve I Message C ass

• Exit Identifier: Bits 0-7 of this
field specify an exit ID which
corresponds to the exit specified by
this list entry:
'

Processing

8

--

Default
Address
Name
V-type address constant

X, 40'
X, 80'

Default SYSOUT Secondary Quantity
Interpreter Dispatching Priority

~

X'OO'

Default SYSOUT Primary Quantity

3
Cont'd

1

System
Code

1

2

1

Parameter
Options

2

• Exit Definition: This field specifies
the type of li nkage to be us.ed between
the interpreter and the Exit routine
(Figure 78, which appears in the
Interpreter Exits section, contains a
description of linkage types associated
with exit identifiers). Bits 0 and 1
contain the specification; bits 2-7 are
reserved.

OS/360 MVT Job Management (Release 21)

J

X' 80'
X'40'

0
1

X'20'
X'10'

2
3

X'08'
X'07'

4
5-7

Accounting routine
Input Access Method
routine
Return to caller
Find Access Method
routine
Queue Manager routine
System Management
Facilities Exit routine

• Linkage information: The type and
format of the linkage information
depends on the specification in the
exit definition field:
specification
Default
Address
Name
V-type address
constant

Linkage Information
Zeros
3-bytes address, right
justified and padded
with zeros
6-byte EBCDIC name
Zeros

Reserved

Length
Exit
Def

I

Exit
Id

Figure 64.

Linkage

text format. Since input stream JCL
statements may invoke and modify cataloged
procedures, the Scan routine accumulates a.
complete logical statement (which may
include several records from the input
stream and the procedure library) before
further processing is performed. When it
has converted the complete logical
statement into internal text, it passes the
text to the appropriate JCL statement
Processor routine.

Header
First Data
Entry

Interpreter Exit List

When the lists have been constructed,
the caller passes control to the
Interpreter Initialization routine (module
IEFVH1), which stores the initializing
parameters and passes control to the
Interpreter Initialization Open routine
(module IEFVH2). The routine opens the
input stream and procedure library data
sets, then passes control to the Control
routine (see Chart 04).
The Control routine reads the input
stream and procedure library records. It
determines the record type, processes
command statements and data records, and
passes JCL statements to the JCL Scan
routine.
The Scan routine (module IEFVFA)
converts JCL statements into an internal

The Processor routines (see Chart 06)
build the tables for the job's input queue
entry, and write them into the queue data
set. In addition, they create system
message blocks as required, write them into
the message class queue entry, and obtain
space for the data set blocks (DSBs)
required for the job.
The interpreter output for a job is
shown in Figure 65.
If the output is not
to be enqueued in the input queue, the JCT
shown in the figure is written out, but no
queue entry is made; control is returned to
the caller with the NEL containing pointers
to the QMPA and the JCT.
In either case,
the records destined for the output queue
entries are enqueued when the job is
terminated.

Part 6:

Common Elements of Job Management

171

,------.

,..

JMR

,..

SCD

STEP
ACT

JOB
ACT

'--

'---

r--

-

VOLT

i
'--

SCT
(STEP 1)

JCT

-

VOLT

DSNAME
(DD2)

STEP
ACT

i

j
SCT
(STEP 2)

,-

~

~

DSENQ
(DD3)

-

SlOT
(DD1)

I-

J

VOLT

STEP
ACT

r-

'--

r-

-

J
SCT
(STEP 3)

SlOT
(DD4)

SlOT
(DD5)

!

J

JFCB
(DD2)

/

!

SlOT
(DD3)

SlOT
(DD2)

,..

/I
II
I/
II
I!
I!
I/
I!

JFCB
(DD5)

JFCB
(DD3)

~
JFCBX
(DD5)

SPACE
RESERVEC
FOR
DSB
(DD4)

~

4- 5MB
(STEP 1)

SPACE
RESERVED
L--. FOR
DSB
(DD1)

5MB
(STEP 2)

4-

-

-

5MB
(STEP 3)

I-

~
Last
5MB
(STEP 3)

I-

JFCB
(DD1)

Figure 65.

172

Typical Interpreter Output (Queue Data Set)

OS/360 MVT Job Management (Release 21>

JFCB
(DD4)

/

JOBNAME
STEPI
DDI
DD2
STEP2
DD3
STEP3
DD4
f'D5

JOB
EXEC
DD SYSOUT=A
DD VOLUME=REF=name
EXEC
DD DSNAME=NAME
EXEC
DD SYSOUT=B
DD VOLUME=(", 17)

INITIALIZING THE INTERPRETER
The interpreter is entered from the System
Task Control routine. either during the
initiation of a reading, writing or MOUNT
command task. or to perform the reading
task.
When the interpreter is entered during
the initiation of one of the system tasks,
the input stream it is to process is an
internal data set created in the System
Task Control routine; the interpreter
entrance list contains a pointer to the
input stream, and instructions for the
interpreter that cause it to load a special
access method and prevent it from enqueuing
the job.
When the interpreter is entered to
perform the reading task, the input stream
is on external storage; the interpreter
TIOT, constructed by the I/O Device
Allocation routine, points to the input
stream data set, and the interpreter
entrance list instructs the interpreter to
enqueue jobs.
In either case, the interpreter is
entered (via a LINK macro instruction) at
the Initialization routine, which consists
of two modules: the initialization module
(IEFVH1) and the open module (IEFVH2l. At
entry, control passes to the initialization
module, which obtains main storage for the
interpreter work area (IWA), and f'or the
local work area (LWA). The IWA contains
information that is shared by two or more
of the Interpreter routines. The local
work area is mapped individually by each
major routine (although in some cases two
or more routines use the same mapping macro
instruction to produce a DSECT of the LWA).
The LWA contains only information that need
not be preserved outside that routine.
Throughout the performance of the reading
task by the interpreter, register 12
contains a pOinter to the IWA; the IWA
contains a pointer to the local work area.
When the main storage for the IWA and
local work area has been obtained, the
Initialization routine obtains main storage
for the data set enqueue (DSENQ) table, the
input stream DCB, and the procedure library
DCB, and if SMF is included in the system,
the job management record (JMR). The
routine th~n stores pointers to these areas
in the IWA. A separate storage request is
made for the DSENQ table and for the DCBs.
The routine then issues a TTIMER macro
instruction and combines the time with the
reader number in the CSCB to create the
base for any unique data set names to be
generated for this input stream. Next, it
examines the PARM field passed to it by its

caller.. It extracts the option fields., and
sets the corresponding switches and values
in the IWA.
The date and time used in creating
temporary data set names is obtained during
this initialization process and reside in
the IWA throughout the life of the reader.
All temporary data set names created by a
reader during the interpretation process
use the same date and time, both of which
never change throughout the life of the
reader or the life of the job step in the
system.
If SMF is included in the system, module
IEFVH1 uses the LOAD macro instruction to
bring module IEFUJV into main storage.
(IEFUJV is the name that must be assigned
to the user's JCL Validation routine; if
such a routine has been supplied, it is
brought into main storage.• ) If the user
has not supplied a routine named IEFUJV,an
IBM-supplied routine, which executes a
return to its caller, is loaded.
When module IEFUJV has been loaded, the
Interpreter Initialization routine stores,
in the JMR, the entry point address of
module IEFUJV and the class and type of
device allocated to the reading task.
The initialization module finally passes
control to the open module, which opens the
input stream and procedure library data
sets. If the input stream is an internal
data set, the third word of the interpreter
entrance list contains a pointer to the
data set and the entrance list specifies
that a special access method is to be
loaded. If no special access method is to
be loaded, the data set is opened for QSAM.
In either case, the procedure library is
opened for BPAM.

INPUT AND CONTROL OPERATIONS
When initialization is complete, control is
passed to the Interpreter Control routine
(Chart 04), which reads records from the
input stream and procedure library,
determines the record type and processing
required, and either performs the
processing, or passes control to the
appropriate Processing routine.
Reading Control Statements
The Interpreter Control routine is entered
at the Interpreter Get routine (module
IEFVHA). This routine uses the GET and
READ macro instructi ons to obtain records
from the input stream and procedure
library, respectively. Only one input

Part 6:

Common Elements of Job Management

173

source is read upon each entry to the
routine; switches set in the Verb
Identification routine (module IEFVHCB)
determine which data set is read.
When the record is in main storage, the
Get routine determines whether it is a
control record (// in positions 1 and 2) or
a data record,. A data record is found only
when a data set was included in the input
stream, but not preceded by a DD* statement
(data records are normally read by the
Spool routine). Such a record causes
control to be passed to the Sysin DD*
Generator routine (module IEFVHB) " which
builds the missing statement, places
"SYSIN" in the name field, and passes
control to the Continuation Check routine.

End-of-Data and Null Statement Processing
The physical end of an input stream is
signalled by an end-of-data indication from
the computing system. A null statement is
the last statement in an input stream (or a
job description), and is also the last
statement in a procedure. Figure 66 shows
the processing performed when an
end-of-data condition or a null statement
is encountered.

An end-of-data condition causes control
to be passed to the interpreter EODAD Exit
routine (module IEFVHAA), which determines
whether there is a job to be enqueued. If
not, it passes control to the Interpreter
Termination routine (module IEFVHN); if so,
it constructs a null statement, and passes
control to the Continuation Check routine.
The Continuation Check routine (module
IEFVHC) passes control to the Verb
Identification routine (module IEFVHCB),
which determines that the statement is a
null statement, and passes control to the
Null statement routine.
The NUl.l statement routine (module
IEFVHL) is given control by the Verb
Identification routine whenever it
encounters a null statement. The Null
Statement routine examines the conditions
under which it was entered. and passes
control as described here. The circled
numbers refer to Figure 66.
If the null statement represents the
end of an input stream job, and more
records must be processed from a
procedure but have not yet been read,
control is passed to the Interpreter
Get routine so that reading can be
continued.

IEFVHE
End of Procedure or Input Stream:
Continue to Read Other Source
READ
Null
Statement

GET
Null
Statement
or
End of Data

r

INPUT
STREAM

IIII
~~

IEFVHCB

IEFVHC
GET
RTNE
\

Null Statement
CONTIN
I------'-'-"-'-'--"-'-"'-"'''''''-'-'------.!STMT
RTNE
,IEFVHAA

~"---

END OF DATA

ROUTER

Null Statement

VERB
IDENT
RTNE

!

IEFVHL

Null Statement

,---/'
Job to Enqueue:
Generate Null Statement

f"4\
V

iEnd of Input Stream:
Process Procedure
Records

NULL
STMT
RTNE

/

\

EOF
RTNE

W
'----.--'0\3:
o~

"__________
End of Procedure:
Process Input Stream

No more records to

process:

,----x.:::En""qc:;ueue previous job
IEFVHEC
JOB
VALIDITY
CHECK

No Job to Enqueue
IEFVHN

IEFVHH

IN.TERPRETER
JOB AND
TERMINA- 1 + - - - - - - - - - - - - - - - - - - - - - - - - - - - lSTEP
TION RTNE

Figure 66.
174

End-of-Data and Null Statement Processing

OS/360 MVT Job Management (Release 21)

ENQUEUE

@

G)

®

If the null statement represents the
end of a procedure, but there are
additional input stream records to
process, control is passed to the Verb
Identification routine to process the
current record from the input stream.
If there are no more records to be
processed in either the input stream
or the procedure, control is passed to
the Job Validity Check routine, so
that the last job can be enqueued.
If there are no more input stream
records to process, but there are
additional records in the procedure,
control is passed to the Router
routine.

• If the statement is a JOB, EXEC, or DO
statement, control is passed to the
Router routine (module IEFVHE).
• If the statement is a PEND statement,
control is passed to the Interpreter
Message routine (module IEFVGM), which
issues an error message.
• If the statement is a null statement.
control is passed to the Null statement
routine (module IEFVHL).
• If the statement appears to have a
valid format, yet does not have one of
the valid JCL statement operators (JOB,
EXEC, PROC, PEND, and DO), and is not a
null statement, control is passed to
the Command routine.

When the last job has been enqueued,
control is passed to the Interpreter
Termination routine.
Processing Control statements
As shown in Figure 68, when a record
containing the characters "//" in the first
two positions is read, control is passed to
the Continuation Check routine (module
IEFVHC). If the current record begins in
positions 4 through 16, it is expected to
be a continuation of the preceding
statement. The Continuation routine
inspects the current record to determine
whether it is a continuation. If so,
control is passed to the Pre-scan
Preparation routine: if not, or if no
continuation was expected, control is
passed to the Verb Identification routine.
The Verb Identification routine (module
IEFVHCB) identifies the type of control
statement that has been encountered, and
processes them as follows:

The Command routine (module IEFVHM)
verifies that the verb is one of those
allowed in the input stream.
It also
determines the disposition and
continues as follows:
If disposition is: The Command routine:

o

Causes the command
to be executed.

1

Displays the command
(via a WTO to the
master console
operator, and causes
the command to be
executed.

2

Displays the command
(via a WTO) to the
master console
operator, requests
his authorization to
execute the command
(via a WTOR), and if
the reply is
positive, causes the
command to be
executed.

3

Ignores the command,
returning control to
the Interpreter Get
routine (module
IEFVHA) •

• If the statement is an EXEC PROC
statement, switches are set that cause
the Interpreter Get routine to read a
statement from the procedure library or
from the in-stream procedure, then
control is passed to the Router
routine.
• If the statement is a PROC statement,
and if it is the first statement in an
in-stream procedure, control is passed
to the In-stream Procedure Router
routine (module IEFVINA) to process the
procedure. Then, or if the PROC
statement is the first statement in a
cataloged procedure, control is passed
to the Router routine.
If the PROC
statement is not the first statement in
a procedure. the routine sets the
job-failed bit in the JCT, and the
statement is not processed further:
control is passed to the Interpreter
Get routine (module IEFVHA).
Part 6:

To execute the command, the Command
routine places the command authority of
the reader into register 0, makes the
register negative to indicate that the
command came from the job stream, and
issues an SVC 34 to execute the Command
Scheduling routine. The Command
routine then passes control to the
Interpreter Get routine (module
IEFVHA. )
Common Elements of Job Management

175

Processing In-stream Procedures
When the Verb Identification routine
encounters a PROC statement that is the
first statement in an in-stream procedure,
it obtains storage for a QMPA and for the
in-stream procedure work area, then passes
control to the In-stream Procedure Router
routine (module IEFVINA) to begin
processing the in-stream procedure. When
it is first entered, the In-stream
Procedure Router routine places EODAD and
SYNAD exits in the QSAM DCB. Then the
routine passes control to the In-stream
Procedure Syntax Check routine (module
IEFVINE) •
The Syntax Check routine checks the
validity of the label and operation fields
in the PROC statement and passes a return
code to the In-stream Procedure Router
routine. Depending on the code, the Router
routine continues processing as follows:
• If the return code is 0, 12, or 16, the
PROC statement contains syntax errors:
a zero indicates that the procedure
name has been omitted from the PROC
statement; a 12 indicates an invalid
label; and a 16 indicates an error in
the placement of comments. The routine
sets the job-failed bit in the JCT and
uses the Interpreter Message module
(module IEFVGM) to issue the
appropriate error message. Then it
passes control to the Interpreter Get
routine (module IEFVHA) to read the
next statement. When the PEND
statement ending the in-stream
procedure is encountered, control
passes to the Interpreter Message
routine (module IEFVGM) which issues an
error message indicating that the PEND
statement is out of sequence.
• If the return code is 8, there are no
syntax errors in the PROC statement.
The routine initializes the QMPA and
uses the Queue Management Assign/start
routine (module IEFQAGST) to prepare
the QMPA for processing. Then the
routine checks the IWA to determine if
the procedure being processed is the
first in-stream procedure.
If it is,
control passes to the In-stream
Procedure Directory Build routine
(module IEFVINC). If it is not, the
routine builds a parameter list for the
procedure (see Figure 67) and passes
control to the In-stream Procedure
Directory Search routine (module
IEFVINB) •
The Directory Search routine scans the
entries in the in-stream procedure
directory (located in the in-stream
procedure work area) searching for the
procedure name specified in the PROC
176

OS/360 MVT Job Management 

field of the JCT and issues the TIME BIN
macro instruction to obtain the reader
start time and date.
The routine
initializes the JMR, then passes control to
the user's JCL Validation routine (if one
has been supplied) or to the IBM-supplied
dummy routine.
On the return from the JCL Validation
Exit routine (module IEFUJV), the Pre-scan
Preparation routine inspects the return
code and if it indicates that the job is to
be canceled, sets the job-failed bit on in
the JCT. The routine then stores the queue
addresses assigned to the JCT and SCT, then
uses the Message Writing routine (module
IEFVGM) to copy the JOB statement into an
5MB, where it will be made available to the
programmer via a system output writer.
If the statement is a PROC statement,
the Pre-scan Preparation routine converts
it to an EXEC PROC statement.
If the statement is not a JOB statement,
the Pre-scan Preparation routine examines
the JCL message level in the JCT.
If the
JCL message level of the job is one
(MSGLEVEL = (i,x», the Message Writing
routine places the other JCL statements and
the cataloged procedure statements for the
job into 5MBs. Fu.thermore, if any of the
JCL statements contain symbolic parameters,

the substituted JCL statement is entered in
an 5MB following the original input JCL
statement. If the JCL message level of the
job is two, only input JCL statements are
entered into 5MBs. Next, the routine
passes control to the user's JCL Validation
routine (if one has been supplied), and on
the return it inspects the return code. If
the return code specifies that the job is
to be canceled, the routine sets the
job-failed bit in the JCT.
When it has completed statement
processing, the Pre-scan Preparation
routine finally passes control to the JCL
Scan routine (module IEFVFA), which
converts statements to internal text, and
passes them to the appropriate processor,
so that the tables can be constructed.
Queue Entry Processing
When the presence of a JOB or null
statement in the input stream indicates
that the input queue entry describing the
previous job is to be enqueued, the Job
Validity Check routine (module IEFVHEC) is
entered. The routine determines whether
the job to be enqueued has any steps; if
so, control is passed to the Job and step
Enqueue routine.
If not, the Validity
Check routine constructs a dummy SCT and
sets the job-failed bit on before passing
control to the Job and Step Enqueue
routine.
The Job and Step Enqueue routine (module
IEFVHH) is entered from the router when the
presence of an EXEC statement indicates
that the tables representing the previous
step are to be placed in a queue, and from
the Job Validity Check routine when the
presence of a JOB or null statement
indicates that the step was the last step
of a job. If the statement is not in a
procedure, the Job and step Enqueue routine
scans the symbolic parameter table (SYMBUF)
to determine whether all symbolic
parameters that have been assigned a value
have also been defined. If not, the
routine sets the job-failed bit in the JCT.
The Job and Step Enqueue routine
inspects switches in the IWA to determine
which tables are to be placed in the queue,
then passes control to the Queue Management
Interface routine (module IEFVHQ) to have
each table written to the queue by queue
management.

in the queue, the Job and Step Enqueue
routine determines whether the interpreter
is to enqueue jobs.
If not, the routine
instructs the Queue Management Interface
routine to have the JMR and JCT written by
the queue management Read/Write routine,
and on the return it passes control to the
interpreter Termination routine.
If the interpreter is to enqueue jobs,
the Job and step Enqueue routine passes
control to the user's JCL Validation
routine (module IEFUJV), then issues a TIME
BIN macro instruction to obtain reader stop
time. The routine stores the time and date
in the JMR, then instructs the Queue
Management Interface routine to have the
JMR written in the queue data set. On the
return, it instructs the Queue Management
Interface routine to have the JCT written
by the Queue Management Enqueue routine.
This causes the JCT to be placed in the
entry, thus completing it, and it causes
the entry to be enqueued, thus making it
available for selection by an initiator.
If the job-failed bit in the JCT is on, the
routine enqueues the entry in the hold
queue at a high priority and issues a
CANCEL command for the job.
After the Job and Step Enqueue r.outine
places the JCT in the queue, it determines
whether in-stream procedures were included
in the job. If they were, the routine
releases all storage used by the
procedures, deletes job queue records used
for the in-stream procedures, and
reinitializes pointers to the storage areas
in the IWA. The Job and Step Enqueue
routine passes control to the Job and Step
Enqueue Routing routine (module IEFVKG).
This routine determines from the CSCB
whether a STOP RDR command has been issued.
If so, or if there are no more records in
the input stream, control is passed to the
Interpreter Terminati on routine.
Otherwise, control is passed to the Job and
Step Enqueue Housekeeping routine.
The Job and Step Enqueue Housekeeping
routine (module IEFVHHB) reinitializes the
JCT area of the IWA.
If there is a
procedure to be processed, it then passes
control to the Pre-scan Preparation routine
which processes the statement currently in
the buffer. If there is no procedure to be
processed, control is passed to the Get
routine (module IEFVHA).
Post-Processing Entry

If the step whose tables are to be
placed in the queue is the last step in a
job, a switch in the IWA indicates that the
JMR and JCT are to be written.
When the
tables describing the step have been placed

The Control routine is reentered at the
Post-scan routine (module IEFVHF) from the
JCL Scan routine if: a continuation
statement is expected, if the statement

Part 6:

Common Elements of Job Management

179

scanned was an overriding statement, or if
a JCL error was detected on a DD statement.
It is entered from a statement Processor
routine when the processing of a statement
is complete or a JCL error was detected on
a JOB or EXEC statement. The Post-scan
routine determines the conditions under
which it was entered, then passes control
(as shown in Figure 69) to the appropriate
Control routine module:
• If a continuation statement is
expected, control is passed to the
Interpreter Get routine to read the
statement.
• If a continuation statement was
expected but not received, control is
passed to the Verb Indentification
routine to process the statement
actually received (module IEFVHCB).
• If an overriding statement has been
processed by the JCL Scan routine, the

overridden statement must be scanned
before the Statement Processor routine
is entered. The overridden statement
is in the buffer, and control is passed
to the Pre-scan preparation routine
(module IEFVHEB).
• If a JCL error was encountered, the
job-failed bit has been set on. The
remaining statements in the job (except
for procedure library statements) will
be processed by the interpreter, so
that any other errors may be found, but
the job will not be run.
Control is
passed to the Interpreter Get routine,
and processing continues.
• If the statement has been successfully
processed, control is passed to the
Interpreter Get routine.
• If the statement processed was a DD* or
DD DATA statement, control is passed to
the Interpreter Spool routine.

FROM
JOB, EXEC or DD
STATEMENT PROCESSOR
ROUTINE

TO
INTERPRETER

GET

Previous Statement
Processi ng Comp Iete
or JCL error on JOB
or EXEC Statement

ROUTINE

POST-SCAN
RTNE

TO
PRE-SCAN
PREPARA TI ON
ROUTINE

Continuation expected,

JCL Error Detected, or
Previous statement processing complete

Overriding statement scanned:
process overriding statement

Continuation expected,
Continuation not received

Statement Scanned, or

JCL Error on DD statement

FROM
JCL SCAN
ROUIINE

Figure 69.

180

TO
VERB
IDENTIFICATION
ROUTINE

TO
INTERPRETER
SPOOL
ROUTINE

Post-processing Imtry

08/360 MVT Job Management (Release 21)

Continuation Expected, Not Received

Previous Statement Was DD • or DD DATA

Processing System Input Data
The Interpreter Spool routine (module
IEFVHG) is entered from the post-scan
routine when a DD* or DD DATA statement has
been processed. Using a JFCB created in
module IEFVDA, the DD Statement Processor
routine, (which also uses DADSM to allocate
space for the SYSIN data set) the routine
builds and opens an output DCB. It then
uses the GET macro instruction to read
records from the input stream, and
determines whether the first two characters
of each record are '//'. If the first two
characters are '//', and module IEFVGH was
entered after a DD DATA statement was
processed, it uses the PUT macro.
instruction to write the record to the
output data set.
If the first two
characters are '//' and the module was
entered after a DD* statement was
processed, it passes control to the
Interpreter Get routine (module IEFVHA).
As the Interpreter Spool routine reads
each record whose first two characters are
not '//' from the input stream, it
determines whether the DLM parameter has
been specified.
If it has, the routine
checks the first two characters for the DLM
value. If the DLM value has not been
specified, and if the characters are not
'/*', the routine uses the PUT macro

instruction to write the record to the
output data set. If the routine finds the
DLM value, or if it finds that the DLM
value has not been specified but the
characters '/*' are present, it passes
control to the Interpreter Get routine.
If an end of data condition is
encountered, control is passed to the EODAD
Exit routine.
If SMF is included, the
Interpreter Spool routine places the record
count of the SYSIN data set in the step
counting field of the SCT at the end of
SYSIN data.

I/O Error Processing
When an I/O error is encountered during
interpreter processing, the job-failed bit
in the JCT, and the I/O error and job-flush
bits in the IWA are set on, and control is
passed to the Message Writing routine
(module IEFVHR). This routine uses the WTO
macro instruction to inform the operator,
then places an error message in the current
5MB. Control is returned to the
Interpreter Get routine, which flushes
(reads, but does not process) the remaining
input stream records for the current job,
then begins normal processing with the next
JOB statement.

Part 6:

Common Elements of Job Management

181

SCANNING THE JCL STATEMENT
The Job Control Language Scanning routine
(module IEFVFA) converts a JCL record into
a coded internal list (see Figure 70).
When it has accumulated a complete JCL
statement (including continuations and
overrides), it then passes the list to a
Statement Processing routine. An example
showing the scanning and encoding of a DD
statement follows this section.
Each statement is scanned from left to
right,. The Scan routine is able to
identify the existence of a name field,
keywords and symbolic parameters, and one
level of subparameters following a keyword.
As the statement is examined, the name
field, keywords, and symbolic parameters
are identified and the keywords are looked
up in the scan dictionary (see Figure 71).
For each valid keyword the scan dictionary
entry contains the corresponding one-byte
binary "key"" and lists the keys of any
mutually exclusive keywords (the DDNAME and
SPACE parameters, for example, are mutually
exclusive). The entry also lists the keys
of any minor keywords associated with the
keyword that the entry represents; SEP, for
example, is a minor keyword of the UNIT
parameter and is listed as a minor keyword
in the UNIT entry of the scan dictionary.
The list of mutually exclusive keys is used
for error checking and the minor keys are
overridden when the corresponding major key
is overridden.

Note: The format of a list entry is
variable, depending on the presence and
number of positional parameters and
subparameters.
When the correct scan dictionary entry
has been found, the Scan routine determines
whether the keyword has been encountered
previously, or whether a mutually exclusive
keyword has been encountered, by testing
the appropriate bits in the duplicate
table.
The duplicate table is a 32-byte table
that contains a bit for each key. The
position of the bit in the table
corresponds to the key.

Length
of
Entry

Keyword

Key

Mutually
Exclusive
Key

Overridden Key

Scan Dictionary Entry Format

Figure 71.

Scan Dictionary Entry Format

Notes to Figure 71
Length of Entry is a one byte binary
number that specifies the length, in
bytes, of the scan dictionary entry
(including the length of entry field).
Keyword contains the keyword specified in
this entry.
Key is a one byte binary code that
represents the keyword specified in this
entry.

Key

Number

Figure 70.

Length

Positional
Parameter

Count

Length

Sub-Parameter

Internal List Entry Format

Notes to Figure 70
Key is the one byte binary code that
represents a keyword.
Number is a one byte binary number that
specifies the number of positional
parameters in the entry.
Its high-order
bit is always off.
Length is a one byte number that
specifies the length of the parameter and
subparameters that follow it.
Its
high-order bit is always off.
Count is a one byte binary number that
specifies the number of subparameters in
the entry. Its high-order bit is always
on.
Positional Parameter contains the
positional parameter.
182

OS/360 MVT Job Management (Release 21)

Mutually Exclusive Key contains the key
that represents a keyword that may not be
used in a statement that contains a
keyword specified in this entry. The
high-order bit in this field is always
off for DD statement keywords.
Overridden Key contains the key that
represents a minor keyword of the keyword
specified in this entry. The high order
bit in this field is always on.
Note: The format of a scan dictionary
entry is variable, depending on presence
and number of mutually exclusive and
overridden keys.
When it makes an entry in the internal
list, the Scan routine turns on the bit
that corresponds to the key it is
processing. It also turns on the bits that
correspond to any mutually exclusive keys,
as defined in the scan dictionary entry.
Thus, if a bit in the table is on, it means
that the key, or a mutually exclusive key,
has been encountered previously.
If this condition occurs during a procedure

/

merge, the field being processed has been
overridden and the Scan routine proceeds to
the next field.
In all other cases, the
Scan routine turns on the job-failed bit in
the JCT, and passes control to the
Post-scan routine (module IEFVHF).

4
Address In Queue of this Buffer

4
Address In Queue of next Buffer

Entry
Length

Processing Symbolic Parameters
A programmer defines symbolic parameters,
either in statements that override
procedure statements or in the statements
of the procedure. He must also assign
values to symbolic parameters by coding
them in an EXEC statement that calls a
procedure or in a PROC statement.

11

Parameter

1

Var.

Length

5 y mbol i c Parameter

Var.

Value
Lengrh
Value
L..

T

The Scan routine may therefore encounter
symbolic parameters in EXEC statements that
call procedures, in input stream statements
that override procedure statements, or in
statements from a procedure.
(Symbolic
parameters may also be found in PROC
statements. Such statements, however, are
modified in the Pre-scan Preparation
routine (module IEFVHEB) of the Interpreter
Control routine, and appear to the Scan
routine as EXEC statements that call a
procedure. The EXEC Statement Processor
routine, however, tests a bit set by the
Verb Identification routine, determines
whether the statement is a PROC statement,
and if so, ignores it.)
If the statement is an execute procedure
statement, the Scan routine uses the
Symbolic Parameter Processing routine to
make an entry in a table of symbolic
parameters and their assigned values;
otherwise, the Scan routine uses the
Symbolic Parameter Processing routine to
extract a value from the table, and to
substitute the value for the symbolic
parameter.
When a symbolic parameter appears in an
execute procedure statement, i t has the
format of an EXEC statement keyword. The
Scan routine searched the scan dictionary,
and if no matching EXEC statement keyword
is found, i t assumes that the keyword and
its associated positional parameter are a
symbolic parameter and its value
assignment, respectively. A BALR
instruction is executed to pass control to
the Symbolic Parameter Processing routine,
to create an entry in the symbolic
parameter table.
When it is entered, the Symbolic
Parameter Processing routine (module
IEFVFB) verifies that the EXEC statement
calls a procedure, then determines whether
a symbolic parameter table, or SYMBUF (see
Figure 72) has been initialized since the
current procedure was called.

Figure 72.

Symbolic Parameter Table Buffer

Note: The high-order bit of the
parameter length field is seton when the
value assignment is made, and set off
when the parameter is defined in a
statement.
If no SYMBUF has been initialized, the
routine initializes one (in its local work
area), and creates an entry containing the
symbolic parameter and its assigned value.
If a SYMBUF has been initialized, the
Symbolic Parameter Processing routine
searches for an entry corresponding to the
current symbolic parameter. If no such
entry exists, the routine creates one; if
the entry does exist, the routine ignores
the current value assignment.
When the value assignment processing is
complete, the symbolic Parameter Processing
routine returns control to the Scan
routine, which continues the scan of the
statement.
When a symbolic parameter appears in an
input stream statement that overrides a
procedure statement, or in a statement in a
procedure, the parameter is immediately
preceded by a single ampersand (&). The
scan routine branches to the Symbolic
Parameter Processing routine, which
substitutes the corresponding value from
the SYMBUF for the parameter.
The symbolic Parameter Processing
routine (module IEFVFB) uses the character
string following the ampersand as a search
argument to search the SYMBUF.
If it finds
a matching entry, the routine extracts the
value assigned to the parameter, and stores
it in an intermediate text buffer. If no
matching entry is found, the routine stores
the ampersand and the character string in
the intermediate text buffer.

Part 6:

Common Elements of Job Management

183

In either case, the routine moves any
concatenated text, as well as the next
major delimiter (comma or blank) following
the symbolic parameter, into the
intermediate text buffer. It then sets
pointers to cause the Scan routine to
process in the buffer.

input JCL statement.
to the Scan routine.

Control then returns

The Scan routine, (module IEFVFA) scans
the text in the intermediate text buffer as
if it were in the original statement, and
makes the appropriate entries in the
internal list. When it has completed
processing in the intermediate text buffer,
the Scan routine continues the scan of the
original statement.

The routine then examines the JCL
message level in the JCT. If the JCL
message level of the job is one (MSGLEVEL
(1., x) ), the JCL statement as it appears
after substitution of symbolic parameters
is entered in an 5MB following the original

When the scan is complete, control is
passed to the appropriate JCL statement
Processor routine.

Example:
The JCL Scan routine encounters the following
source statement.
//SYSUT1 DD DSNAME=LINKEDIT.WORK,UNIT=190,
//
SPACE=(TRK,(30,10»,VOLUME=SER=111111
1.

C

The name field (SYSUT1) is identified as
such because of its position. It is
considered a parameter of the DD keyword,
and is encoded as follows:

r---T------T------T-----------------,

I Keyl Number I Length I

Parameter

I

~---+------+------+-----------------~

16E
01 i I______
06 kIE2
E8 E2 E4 E3 F11J
l ___ i I ______
_________________

2.

The DSNAME= field is found in the scan
dictionary entry shown below:

r------T--------------------T---T-------------,
I
I
I Length I

Keyword

I
I Mutually Ex- I
IKeylclusive keys I

~------+--------------------+---+------T------1

I

OB

IC4 E2 DS C1 D4 CS 7EI4A I 49

I 4B

l ______ k- ___________________ k ___ k ______ i _____

3.

I

~

It is encoded and placed in the list as
shown below:
r---T------T------T---~----------------------------------,

lI

• Allocation exit processing writes out
the 5MB containing allocation messages,
and uses the .DEQ macro instruction to
release the interlock on access to the
UCBs before returning control to the
caller. If an unrecoverable error was
encountered during allocation, control
is passed to the JFCB Housekeeping
routine (see Gathering Information) and
flush mode processing is initiated.
The functions described above are
performed by a set of modules called the
I/O Device Allocation routine.
Since

similar processing is required at several
points in the process of allocation, the
modules use several routines in common.
The common routines (which are discussed in
detail at the end of this section) are:
• The Allocation Recovery routine, which
attempts to make additional devices
available when a lack of available
units or direct access space has made
allocation impossible.
If SMF is
included. the addition of available
devices must result in the writing of a
Type 10 allocation recovery record to
the SMF data set.
• The Device Strikeout routine, which
completes the allocation of a selected
unit in the allocation work tables.
and, where appropriate, makes it
unavailable to other data sets.
• The separation strikeout routine, which
removes channel and unit separation
request violators from consideration as
eligible units.
• The Unsolicited Device End Posting
routine, which posts the ECB when the
appropriate device becomes ready.

ALLOCATION HOUSEKEEPING
Before I/O device allocation can begin,
certain housekeeping functions must be
performed. These functions are performed
by the Allocation Entry routine (module
IEFSD21Q) and the EXEC statement Condition
Code Processor routine (modul~ IEFVKIMP).
If the task uses the SMF option. module
IEFSD21Q issues a TIME macro instruction to
obtain a time stamp that indicates when
device allocation started. The module then
stores the time stamp in the TCT.

Because the ENQ macro instruction is
located at the beginning of the I/O Device
Allocation routine. the effect is to
prevent allocation from being performed for
more than one job step at a time (by
routines performing other tasks).
At this point, if DDR was found in the
system. the Allocation Entry routine stores
its TCB; if TSO was found in the system.
the Allocation Entry routine also stores
the TJID for that TCB into IORMSCOM. The
routine then issues a WAIT macro
instruction for the ECB that is posted
except during DDR processing. When DDR has
completed processing the ECB is posted
again. This prevents the concurrent
execution of Allocation and DDR.
(See the
Input/Output supervisor PLM for a
discussion of DDR processing.)
When the JFCB Housekeeping routines
receive control. module IEFVMLS1 issues an
ENQ macro instruction that refers to a name
representing access to the UCBs by the
Termination routine and the SYSOUT writer.
This prevents termination of any job step
while JFCB housekeeping is taking place.
The routine also issues an ENQ macro
instruction to prevent Allocation routines
for another task from using the UCBs during
this allocation processing. Similarly,
when the Demand Allocation routine (module
IEFWAOOO) receives control, it also issues
an ENQ macro instruction to prevent access
of the UCBs by the Termination routine and
the SYSOUT writer during its processing.
When the JFCB Housekeeping routines pass
control to the Allocation Control routine
(module IEFXCSSS), it issues a DEQ macro
instruction to allow access of the UCBs by
the Termination routine and the SYSOUT
writer while the Allocation Control routine
is building tables.

The Allocation Entry routine (module
IEFSD21Q) first determines if Dynamic
Device Reconfiguration (DDR) is in the
system.

If allocation for this task is
impossible because of a lack of devices,
volumes, or space, the Wait for
Unallocation routine issues two DEQ macro
instructions to allow the Termination
routines. the SYSOUT writer, and the
Allocation routines for another task to
access the UCBs. When a task terminates
and its I/O devices are released. control
returns to the Wait for Unallocation
routine, which issues two ENQs for the
UCBs, and the I/O Device Allocation routine
attempts to allocate with the additional
devices.

Then, to protect UCB information, the
routine issues an ENQ macro instruction
(using the exclusive option) that refers to
a name that represents access to the UCBs
by the I/O Device Allocation routine.

When allocation is complete, the
Allocation Exit routine issues three DEQ
macro instructions, allowing other
allocation and Termination routines to
refer to the UCBs.

Protecting UCB Information
The I/O Device Allocation routine and the
Termination routine, both of which modify
UCBs. may operate concurrently while
performing separate system tasks.
Therefore. multiple references to UCBs are
possible. and must be prevented.

Part 6:

Cammon Elements of Job Management

197

Obtaining an 5MB
The Allocation Entry routine obtains main
storage for a system message block (SMB),
and uses the Queue Management Read routine
to bring the last 5MB created by the
interpreter (for the current step) into
main storage. During the process of
allocation, allocation messages for the
programmer are placed in this 5MB. After
allocation is complete, the Allocation Exit
routine places the 5MB in the appropriate
output queue.
Displaying the Job Name
If the current step is the first step of
the job, the Allocation entry routine tests
the job and time notification bits in the
master scheduler resident data area. These
bits are set on as a result of either the
MONITOR JOBNAMES or MONITOR SESS (for
foreground sessions only) command, and set
off as a result of the STOP JOBNAMES
command1 ; if the job notification bit is
on, and the job termination status bit in
the LCT is off, the routine uses the WTO or
TPUT macro instruction to issue a job
started message to the requesting operator
or TSO user.
If the time notification bit
is also on, the routine includes the time
in the message.
The job and time notification bits are
also tested in the Job Termination Exit
routine of the Termination routine, which
issues a message to notify the requesting
operator that the job has ended.

When a job, canceled as previously
indicated, is in the flush/fail mode, the
extent to which the system performs
allocation processing for subsequent job
steps depends on both the occurrence of and
the condition of SYSIN data sets, in the
following manner:
• If there are no existing SYSIN data
sets for the subsequent job steps, the
system terminates the job immediately.
• If a mounted SYSIN data set exists for
one or more job steps, the system
performs allocation processing as
necessary to delete the SYSIN data
sets.
• If there is one or more unmounted SYSIN
data sets for the job (as a result of
unsatisfied mount requests), the system
performs allocation processing to
permit a user one more chance to
satisfy the mount request(s). If the
mount requests still are not satisfied,
the system terminates the job without
deleting the unmounted SYSIN data sets.
EXEC Statement Conditional Execution
Processing
If the programmer uses the COND keyword in
an EXEC statement, and if COND=ONLY or if
the step is not the first step of the job,
the EXEC Statement Conditional Execution
routine (module IEFVKIMP) determines
whether the step should be bypassed or run.
Otherwise, the routine passes control to
the JFCB Housekeeping routine.

Job and Step Flush
If a job is canceled because of JOB
statement condition codes, operator
command, or unrecoverable errors
encountered by the interpreter or
initiator, the remaining steps in the job
are not executed.
The Allocation Entry routine tests the
job-failed and job-flush bits to determine
whether the job has been canceled.
If so,
EXEC statement condition code processing is
unnecessary (it is already known that the
step will not be run) and control is passed
to the JFCB Housekeeping Control routine.
The job-failed bit is set off; the
job-flush bit is set on to specify flush
mode processing.
If the job is not canceled, control is
passed to the EXEC statement condition code
processor.
1These bits are also set off if the
execution of a VARY command places all
consoles receiving the display in an
inactive or offline status.
198

OS/360 MVT Job Management (Release 21)

The EXEC Statement Conditional Execution
routine tests the ABEND indicator in the
JCT to determine whether any steps have
been abnormally terminated, and it tests
the high-order bit of the eighth step
condition code field in the SCT to
determine whether COND=EVEN or COND=ONLY is
specified. The step will immediately be
bypassed if:
• One or more previous steps have been
abnormally terminated, and the COND
field specifies neither EVEN nor ONLY.
• No steps have been abnormally
terminated, and the COND field
specifies ONLY.
If neither of these conditions exists,
but the COND field specifies condition
codes and operators, the routine uses the
Queue Management Read/Write routine to
bring the SCT of the step specified in the
first COND field into main storage. The
return code issued by that step (in field
SCTEXEC) is then compared to a condition
code specified for the current step, and
the result is matched to the specified
condition code operator.

The process is repeated for each COND
parameter (if no step name was specified,
the process is repeated for each preceding
step) until either the result of the
comparison matches the condition code
operator, or until all codes and their
operators have been tested.. If the result
of the comparison matches the condition
code operator., the condition has been met,
and the step is bypassed.

Table completion and construction is
performed in the following (JFCB
Housekeeping) routines:
• JFCB Housekeeping Control routine
(module IEFVMLS1)
• Dedication Determination routine
(module IEFSD180)
• Allocate Processing routine (module
IEFVMLS1)

When a step is bypassed, the EXEC
Statement Conditional Execution routine
loads an error code and passes control to
the Allocation Exit routine. The
Allocation Exit routine sets the step-flush
bit on, passes control to the JFCB
Housekeeping routine, and the step is
processed in the flush mode.
If the step is to be executed, the EXEC
Statement Conditional Execution routine
passes control to the JFCB Housekeeping
routine.

• Direct System Output Determination
routine (module IEFDSOAL)
Q

Fetch DCB Processing routine (module
IEFVM2LS)

• GDG Single Processing routine (module
IEFVM3LS)
• GDG All Processing routine (module
IEFVM4LS)
• Patterning DSCB Processing routine
(module IEFVM5LS)

GATHERING INFORMATION

• Error Message Processing routine
(module IEFVM6LS)

When the housekeeping functions have been
performed, the information necessary to the
allocation process is gathered and stored
in tabular format for easy reference by the
allocation routines. Volume information is
added to existing tables by the JFCB
Housekeeping routines. The Allocation
Control routine then calculates the sizes
of the new tables that are required, and
obtains storage for them. The tables are
constructed in the first part of the Demand
Allocation routine, while volume affinity
requests are being resolved, and device
requirements calculated.
Completing Tables
The JFCB Housekeeping routines complete
volume information within the following
tables, in preparation for their use in
allocating I/O devices:
•
•
•
•

Job file control block (JFCB)
Step input/output table (SlOT)
Step control table (SCT)
Volume table (VOLT)

In order to enter information in these
tables, reference may be made to the system
catalog, via the LOCATE and OBTAIN macro
instructions. Passed data sets are also
processed; a passed data set queue (PDQ) is
constructed, and entries are made for the
first reference to each data set.
Subsequent references cause the existing
entries to be updated.

JFCB Housekeeping Control Routine
Module IEFVMLSl is the entry and exit
module for the JFCB Housekeeping routines.
Upon entry, module IEFVMLSl issues an ENQ
macro instruction to prevent access to the
UCBs by the Termination routine. Module
IEFVMLS1 also issues an ENQ macro
instruction to prevent Allocation routines
from using the UCBs to allocate another
task. Then the Control routine (which is
part of IEFVMLS1) uses the Queue Management
Read routine to bring each SlOT into main
storage, examines the SlOT, and depending
on the types of processing required, it
passes control, in turn, to the appropriate
Processing routines. When an SlOT has been
processed, and written back into the input
queue, the next SlOT is read; when .the last
SlOT for the step has been processed,
control is passed to the Allocation Control
routine.
Flush Mode Processinq: If the job-flush
bit or step-flush bit is on, the step is to
be processed in flush mode.
Since the step
is not to be run, all data sets except
system input data sets and OLD system
output data sets are processed as dummies,
no volume information will be needed, and
the only processing required for system
input data sets is to set the dummy bit on
in all other SlOTs. For an OLD system
output data set, during system restart
processing, the volume table will be
updated with volume information. from the

Part 6:

Common Elements of Job Management

199

JFCB. TheSCT will be updated to reflect
the increase in size of the volume table.
When the last SlOT has been written back
into the input queue, control is passed to
the Allocation Control routine as in normal
processing.
Allocate Processing Routine
The JFCB Housekeeping Control routine
branches to the Allocate Processing routine
(which is also part of module IEFVMLS1)
under the following circumstances:
• The DD statement refers, by data set
name, to a passed data set or a
cataloged data set,.
• The DD statement uses ddname or
stepname.ddname to refer 1;:0 a data set
described in a previously processed DD
statement.
In addition, when a unit name is
specified in a DD statement, the Allocate
Processing routine converts it to unit type
through use of the device name table (DNT).
When a unit address is specified in a DD
statement, the routine searches the UCBs
for the one that corresponds to the EBCDIC
unit address in the SlOT of the requested
unit. When the correct UCB is found, the
device type and the UCB address are entered
into the unit type field of the SlOT.
When the data set reference is a data
set name, the PDQ is examined. If it
contains an entry for the data set referred
to, the SlOT and JFCB are read into main
storage; they furnish the volume and device
information for the subject data set.
If, however, there is no PDQ entry for
the data set referred to, a LOCATE macro
instruction is used to find the data set in
the catalog. The volume control block or
data set entry is then used to complete the
volume and device information.
If the LOCATE macro instruction return
code indicates that the required data set
is cataloged on an unmounted control
VOlume', IEFMCVOL is entered to cause
allocation of a device for the required
volume and request that the operator mount
it. If the control volume can be mounted,
which depends upon device and volume
availability, control is returned to the
JFCB Housekeeping routine.
(If the control
volume cannot be mounted, an abnormal
system termination occurs.) The LOCATE
macro instruction is issued again, the
control volume is unallocated, and further
requests for the step are allocated.
200

OS/360 MVT Job Management (Release 21)

When a data set resides on more than
five volumes, a JFCB extension block is
created; the additional volume and device
information is stored in it, and it,is
added to the input queue entry.
When the reference is to a previously
processed DD statement (by ddname or
stepname.ddname), a check is made to
determine whether the DD statement appeared
in the step being processed. If so, the
SlOT and JFCB associated with the data set
referred to are read into main storage and
the volume and device information
extracted. If the DD statement appeared in
a previous step of the job being processed,
the SlOT and JFCB constructed for that step
are read in, and the volume and device
information extracted.
Dedication Determination Routine
The JFCB Housekeeping Control routine
branches to the Dedication Determination
routine if the DD statement being processed
requests a dedicated data set. A request
is made if the SCTANAME field of the SlOT
is not all blank, therefore indicating
DS NAME= &NAME.
The Dedication Determination routine
checks the following parameters of the DD
statement to ensure that they pertain to a
dedicated data set:
• The DSORG Parameter must indicate other
than an ISAM data set .•
• The DSNAME parameter must match a
DDname in the Initiator's TIOT.
• The "units" subparameter of the SPACE
parameter must specify average block
length. The "quantity" and "increment"
subparameters of the SPACE parameter
must reflect a total size not larger
than the data set whose DDname was
matched in the Iniatator's TIOT. The
"directory" subparameter of the SPACE
parameter must not be larger than that
of the data set whose DDname was
matched in the Iniator's TIOT.
If a'ny one of these conditions is not
satisfied, control is returned to the JFCB
Housekeeping Control routine.
If all the conditions are satisfied, the
Dedication Determination routine does the
following:
• Ensures that there will be no
checkpoints and no restarts by forcing
NC and NR in the SCT.
• Ensures that the dedicated data set
will not be deleted by forcing
DISP=OLD, KEEP in the SlOT.

• Copies volume and device information
and the DSNAME from the SlOT and JFCB
of the dedicated data set into the SlOT
and JFCB created from the DD statement
requesting the dedicated data set.
• Updates the volume table and the PDQ.
Control is then returned to the JFCB
Housekeeping Control routine.
Direct System Output Determination Routine
The JFCB Housekeeping Control routine
branches to the Direct System Output (DSO)
Determination routine (module IEFDSOAL)
when it encounters an SlOT that describes a
system output data set*
When it is entered, the DSO
Determination routine issues an ENQ macro
instruction (in the shared mode) specifying
the chain of direct system output control
blocks (DSOCBs). The routine scans the
chain for DSOCBs assigned to the job; if
there is no DSOCB for the output class
specified in the SlOT, the routine issues a
DEQ macro instruction and returns control
to the JFCB Housekeeping control routine.
If there is a DSOCB for the class
specified in the SlOT, the DSO
Determination routine sets all bits off in
the SlOT data set characteristics field
except the SYSOUT and NEW bits, which it
sets OD* It stores the three-character
unit address of the DSO unit in the SlOT
unit address field, and uses queue
management to read the JFCBs created for
the data set and for the DSOCB into main
storage.

previous step and is to be
current step .•

executed-~s

the

GDG Single Processing Routine
Module IEFVM3LS obtains the data set name
of a generation data group (GDG) member and
completes volume and device information
entries for the member. If this is the
first reference (in the current job) to the
GDG, the routine constructs a GDG bias
count table; if previous references have
been made, the table is updated to reflect
the current reference.
GDG All Processing Routine
Module IEFVM4LS builds an SlOT, JFCB, and
volume table entry for each GDG member,
when the entire generation data group is
specified by the programmer.
Patterning DSCB Processing Routine
Module IEFVM5LS completes control
information in a JFCB when a new data set
is to be patterned after a previously
cataloged data set. The volume control
block or data set pointer entry, which
contains the volume serial of the volume
that contains the data set, is read into
main storage. Fields in the JFCB are
checked for zeros·, and corresponding fields
from the DSCB replace them.
Error Message Processing Routine
Module IEFVMLS6 is entered and issues error
messages whenever an error condition is
detected by one of the JFCB Housekeeping
routines. It frees the work area used by
the JFCB Housekeeping routines, then passes
control to the Allocate Exit routine, which
sets the job-flush bit in the JCT, and
passes control back to the JFCB
Housekeeping Control routine.

When the JFCBs are in main storage, the
DSO Determination routine updates the JFCB
for the data set with information from the
JFCB created for the DSOCB. It uses queue
management to write the data set JFCB back
into the queue entry.

Calculating Table Sizes
The DSO Determination routine then sets
the active bit on in the DSOCB and inspects
the job separator and message class bits in
the DSOCB. If the job separator bit is
off, or if the message class bit is on, the
routine sets the DSO work bit on in the SCT
to indicate that job separator or message
processing is required.
Finally, the DSO Determination routine
issues a DEQ macro instruction specifying
the DSOCB chain and returns control to the
JFCB Housekeeping Control routine.
Fetch DCB Processing Routine
Module IEFVM2LS completes volume and device
information when the data set referred to
contains a program that was created in a

The Allocate Control routine (module
IEFXCSSS) determines the sizes of certain
tables that are constructed by the I/O
Device Allocation routine, obtains the
necessary main storage, and places the
address of the block of storage reserved
for each table into the allocation control
block (see Figure 82). In addition, it
obtains a main storage area for the lOS UCB
lookup table, moves the table into the
area, and modifies it if the configuration
includes data cell drives. The routine
adjusts the LCT to point to the expanded
version of the table, and checks for and
executes any VARY OFFLINE or UNLOAD
commands. The routine is entered from the
JFCB Housekeeping routine; exit is to the
Demand Allocation routine.

Part 6:

Cammon Elements of Job Management

201

Upon entry"the storage requirements for
the tables needed by the I/O Device
Allocation routine (except for the TIOT)
are calculated. Figure 83 illustrates the
calculations" and Figure 84 shows the
relative positions of the tables in main
storage. The required amount of main
storage is calculated, and the address of
the area assigned to each table is
calculated. The first available byte in
the main storage area is the address of the
first table; the other addresses are
determined by adding .the size of the
preceding table to its address. As each
address is determined it is stored in the
allocation control block.

When storage areas have been assigned to
all tables except the allocate volume table
(Figure 85) and the TIOT, the Queue
Management Read routine is used to bring
all the SIOTs for the step into the area
assigned to them. The number of volumes to
be used by the step is determined from
information in the SIOTs, and used to
calculate the size of the allocate volume
table. The routine then makes a second
request for main storage to accommodate the
allocate volume table, and the address of
the area is placed in the allocation
control block.

4

Address of Channel Load Table

4
Address of First Empty Slot in Allocate Volume Table (AVT)
4
Address of Potential User on Device TabJe (PUDT)

4
Address of Allocate Work Table (AWT)

4
Address of Allocate Volume Table (AVT)

4
Address of Volume Table (VOLT)
4
Address of Separation Strikeout Pattern

Number of Allocated Entries

1

2

2
Number of Unallocated Entries2

2

2
Length of A VT

Number of Bytes per AWT Entry

2

2
Number of DD Statements in Step3

Length (In Words) of Primary Bit Pattern

2
Reserved

Notes:
lSet to zero initially and incremented·each time a data set is completely allocated.
21nitially set to number of data sets to be allocated (the number of DD statements in the step),
and decremented each time a data set is completely all ocated.
3The number of data sets to be

alloc~ted.

4rhe number of addresses in the ·1/0 supervisor UCB lookup table.

Figure 82.
202

Allocation Control Block

08/360 MVT Job Management (Release 21)

Number of Devices in Configuration 4

2

r-----------------------T-----------------,
DD number table
Buffer

Channel load table
(CLT)
Allocate work table
(AWT)
Potential user on device table (PUDT)
separation strikeout
pattern
Each SlOT
IVolume table (VOLT)

1 141

1

1

1

1
144
1
14C

1
1
1
1

1

I~

1

(24 + 81321) A
D

4"

4
D

32

construction routine

1
1

DD Number Table

1

Buffer

1
1
1
1
1
1
1
1

Second storage request by

Allocate Volume Table

allocate control routine

Allocate Control Block
Channel Load Table (CLT)

First storage request by
allocate control routine

Allocate Work Table (AWT)

68

1

Potential User on Device Table (PUDT)

6S

1
1

Separation Strikeout Pattern

Determined by thel
TIOT Construction 1
routine
1

BB
I~

1

IDevice mask table (DMT) 4 + (8 +1321) F

1
1
1

1

t-----------------------~-----------------~

1Legend
1
111= Next higher integer if a fraction
t
1 A= Number of DD statements
1
1
1 B= Number of volumes or devices
(whichever is greater).
1
1
1 C= Number of channels specified at
1
system generation time.
1
1
1
1 D= Number of entries in the I/O
1
supervisor UCB lookup table.
1
1
1 F= Number of entries in device mask
1
table.
1
1_________________________________________
S= Number of volume serial numbers.
L
J1
Figure 83.

Storage requested by TIOT

TIOT

1

IAllocate volume table

1

1

1176

Allocate

1
1TroT
1
1
1

141~1

SlOTs
Volume Table (VOLT)
Relative Positions of Tables Used for
I/O Device Allocation

Figure 84.

DD number

Relative Positions of Tables
Used for I/O Device Allocation

11

Status E

1

UCB address

2

2
Volume serial pointer

Figure 85.

2

Volume affinity link

Allocate Volume Table Entry

Formulas for Determining
Allocation Table sizes

Part 6:

Common Elewents of Job Management

203

r---------------------T-------------------,
Entry
I
Source
I

The storage required for the TIOT is
calculated in the TIOT construction
routine.

I

~---------------------+---------------~---~

constructing Tables
The Demand Allocation routine (module
IEFWAOOO) is entered from the Allocation
Control routine when table sizes have been
calculated and main storage reserved. Upon
entry, the routine issues an ENQ macro
instruction to prevent access to the UCBs
by the Termination routine and SYSOUT
writer. The first part of the routine
builds the allocate work table (AWT), and,
in the process., links data sets with
similar device requirements (SPLIT and
SUBALLOC requests). The routine then
constructs the allocate volume table, and
using the information previously gathered,
it resolves volume affinity requests,
linking entries in the allocate volume
table. Finally, it calculates the device
requirements of each data set, then
constructs the channel load table (CLT).

INumber of devices
I available
I
ISPLIT/SUBALLOC
I link

IDevice mask table
I
I
ISIOT
I

I
I
I
I
I

I

I

I

INumber of devices
I requested

I SlOT
I

I

INumber of volumes

SlOT

I

Istatus A

I

I
I

I

I

SlOT

Status B

SlOT

Status C

SlOT

Status D

SlOT

Number of devices
allocated

Inserted as devices
are allocated.

Number of devices
shared

Calculated

Number of devices
Irequired

Calculated

Constructing the Allocate Work Table (AWT)
When the Demand Allocation routine is first
entered, it constructs the allocate work
table (Figure 86). The AWT contains
information that describes a data set, as
well as other information used for
allocating units to it. One entry is
constructed for each data set; most of the
information is obtained as shown in Figure
87.

Number of Devices Ava.i1able
1
Status A

2 SPLIT/
1 Number of
1
SUBALLOC Link
Devices Requested
1

1

Status B

Status C

Status D

I
DD Number

1
Reserved
4

Device Type
Var.
Pri mary Bit Pattern
Var.
Secondary Bit Pattern

Figure 86.

The Allocate Work Table

The device type, as obtained from the
SlOT, is used as the search argument in a
search of the device mask table (DMT).
When a matching device type is found, the
bit pattern field of the device mask table
is placed in the primary and secondary bit
pattern fields of the AWT.
204

OS/360 MVT Job Management (Release 21)

SlOT

Istatus 1

SlOT

I

IAddress of first entry in volume table

Calculated

Device mask table
Possible number of
devices in secondary I
bit pattern
I

I

DD number

I SlOT

I

Device type

1 Number of
1 Number of
I
I Number of
Devices Required
Devices Allocated Dev ices Shared
1
I
2
Address of Fi rst Entry
Unit Affinity Link
Status 1
in Volume Table
Possible Number of Devices
in Secondary Bit Pattern

IUnit affinity link

I

I

Number of
Volumes

2

I

ISIOT

Primary bit pattern

I

IDevice mask table

I

Isecondary
bit patternlDevice
mask table J
L
_____________________
i ___________________
Figure 87.

Allocate Work Table Entry
Sources

Data sets that have similar I/O device
requirements are then linked together.
Similar requirements are implied when the
programmer specifies the following in a DD
statement:
• SPLIT= indicating that two or more data
sets in the same job step are to share
a cylinder of a direct access device.
• SUBALLOC=stepname.ddname (or ddname)
indicating that space for the data set
will be suballocated from the space
allocated to the data set described in
the DD statement named ddname.

Pointers are placed into the
SPLIT/SUBALLOC link field and the
unit-affinity-link field of the AWT to link
all such groups together.

shared, but more devices were
requested than will be shared,' the
number of devices requested will
be allocated.

The allocate volume table is then
constructed. One entry is made for each
volume required by the data set.

d.

Volume Affinity Resolution
Volume affinity means that a certain volume
is required for more than one data set. It
may be requested explicitly by the use of
the REF parameter of the VOLUME field of
the DD statement., or implici tly by
specifying the same volume serials in one
or more DD statements. In either case, the
entries in the allocate volume table are
linked with pointers placed in the volume
link field by the D~mand Allocation
routine.
Calculating Device Requirements
Information from the allocate work table is
used to determine the number of devices
required for the data set as follows (see
Figure 88 for a parallel summary):

r-----------------------------------------,1

IData sets marked parallel mount:
ID1 = V2

Data sets not marked parallel mount:
a.. If both unit affinity and volume
affinity apply to the data set,
and if the device type specified
in the DD statement for the data
set is tape only, then D1 = D2 •

c.

If some of the volumes on which
the data set resides will not be

1In calculating device requirements,
volumes that are reserved or permanently
mounted are considered to be shared
volumes.

I

If V1 < V2 • and V1 < D2 , then
D1 = D2

I

I
I
I
I

D1 =V1 + 1

~-----------------------------------------~

When:

D1 = The number of devices
I
actually to be allocated to I
the data set. This number isl
placed in the number-of1
devices-required field of thel
allocate work table (AWT).
I

I
I
I
I
I
I

D2 = The number of devices
requested for the data set.

= The number of volumes that
are reserved, permanently
resident, or are to be sharedl
with at least one other data I
set.
I

If all the volumes on which the
data set resides are to be
shared,1 a device will be
allocated for each volume.
I

I

I
I

d.

If both unit affinity and volume
affinity apply to the data set,
and if only tape devices can be
used with this data set, then the
number of devices requested for
the data set will be allocated.

b.

1
1
1
1

I

b.

• For data sets not marked parallel
mount:
a.

1

~-----------------------------------------~

c.

• For a data set marked parallel mount
(the P subparameter of the UNIT field
was specified in the DD statement), the
number of devices required is the
number of volumes on which the data set
resides.

If some of the volumes on which
the data set resides will not be
shared, but the number of volumes
to be shared is at least as great
as the number of devices
requested, one more device will be
allocated than the number of
shared volumes.

I
I
I

V2 = The number of volumes on
which the data set resides.

~-----------------------------------------~

IThe number of ,devices to be allocated is I
Iplaced in the number-of-devices-required I
Ifield
of the allocate work table.
L
_________________________________________
JI

Figure 88.

Pait 6:

Calculation of Data Set Device
Requirements

Common Elements of Job Management

205

Channel Load Assignments
For the purposes of allocation, a channel
is defined as a discrete path from a device
to the CPU (or main storage). The load on
a channel is the number of data sets
accessible through that channel. The
channel load table (CLT) furnishes a place
to record the channel loads. This table is
built in the scheduler work area by the
Allocation Control routine (module
IEFXC88S), and the allocation routines use
its information about channels and their
loads to manage channel and device
resources efficiently.
Device allocation does not depend on
physical channel addresses. Instead, the
CLT defines channels by means of pointers
to a list of device UCB addresses. Each
pointer defines a single channel, but may
point to a block of several entries. Each
entry, in turn, corresponds to a single
device" so that a single channel may
provide access to a number of devices.
This "shredding-out" of the data paths that
a channel provides is illustrated in Figure
89, which also shows how more than one
channel pointer from the CLT can ultimately
designate a single device. The flexibility
in device allocation that this scheme
provides is the flexibility, for example,
that the Model 2870 multiplexor channel
(with its subchannels) requires.
The scheduler lookup table makes this
flexibility possible by interposing one
level of addressing between the CLT and the
device UCBs. The Allocation Control
routine builds the table, with the CLT, in
the scheduler work area, constructing it in
three sections of halfword entries. The
first section is a copy of the device list
portion of the I/O supervisor lookup table.
The entries in this section contain the
addresses of specific device UCBs.
Addresses in the first halfword of each
fullword entry in the CLT pOint to blocks
of entries in the scheduler lookup table to
define the discrete channels for the
allocation routines.
For example, in Figures 89 and 90, P1
points to the first scheduler lookup table
entry for channel one. Channel one entries
include all the succeeding entries to the
point where the second pointer, P 2 ·•
designates the beginning of the block of
entries representing devices accessed
through channel two.
In Figure 89, the
pointers from the CLT illustrate that
channel one provides a data path to the
2311, the 2314, and the 2400 devices, while
channel two provides a data path to the
2321 device. Note, however. that channel
two also provides a data path to the 2311
device, because the first table entry for

206

08/360 MVT Job Management (Release 21)

that channel also points to the UCB for
that device.
The allocation routines can keep track
of all the data paths provided to a device
by using an allocation channel mask. This
mask is a bit configuration that subroutine
IEFXDPTH builds for use by the following
allocation routines:
• The device strikeout routine -IEFX300A;
• The separation strikeout routine -IEFXHOOO;
• The decision allocation routine -IEFXSOOO;
• The TIOT construction routine -IEFWCIMP.
When an allocation routine calls subroutine
IEFXDPTH, it passes to it a standard
parameter list that includes a pointer to a
UCB and a space for the channel bit pattern
used as the mask. The subroutine searches
the scheduler lookup table for UCB pointers
identical to the one passed, notes the
channel number associated with any such
pointer entry, and turns on the bit
corresponding to that channel in the mask
space provided by the parameter list. The
subroutine then returns control to the
calling allocation routine, which now has
channel information at lts disposal.
The second halfword of each CLT entry is
the number of data sets that constitutes
the load on the channel to which the first
halfword points. Hence, in Figure 90, L1
and L2 are the respective loads on channels
one and two. In the same figure, P n points
to the last channel for which there is a
set of one or more scheduler lookup table
entries, and Ln is the load on that
channel. P points to the first field of
hexadecimal Fs in the scheduler lookup
table. This field separates the first
section, which contains the UCB addresses,
from the second section. Allocation
routines use this boundary and its CLT
pointer to facilitate rapid searching of
the table.
The s~cond section in the table contains
sets of ten pointers each for the sub-UCBs
associated with every main UCB controlling
a 2321 data cell drive. Such a set exists
for every 2321 device that the operating
system is using. A second entry of
hexadecimal Fs follows the last sub-UCB
entry in the section to delimit the entries
from the different type that follows. The
P address in the CLT points out this
quick-reference delimiter.

ClT

First Section
Copy of I/o
Supervisor
Lookup Table

•
•
"
"
FFFF
Reserved

Pl "

Second Secti on

i

•
•
•
•
P",o

•
•
•

2
2
2

2~

•
Pn "
Pn,2

•
•

Pn,'o

Third Section

1
Figure 89.

FFFF

2

Q,

2

•
"•

•
Qn

2

FFFF

2

Scheduler Lookup Table

Part 6:

Common Elements of Job Management

207

The third section contains pointers to
the first section. These pointers relate
each set of ten sub-UCBs to its 2321 device
main UCB. For example, in Figure 89, Qn is
a pointer associated with the set of
sub-UCB pOinters Pn , 1 , and it refers the
set back to its proper main UCB via the
pointer in the first section.
Hex

The first portion of the Demand Allocation
routine (module IEFWAOOO), is discussed in
the section, "Gathering Information l1 : it
constructs several tables that are used
during allocation. The second portion of
the routine, however, begins the process of
unit assignment, by performing the
following functions:

Dec

o

o

8

8

10

16

18

24

PI
P2
P3
p.

2
2
2
2

L1
L2
L3
L.

2
2
2

variable

Pn

2

Ln

2

1

Figure 90.

• It reduces the range of eligible
devices.

2
2

Allocation of Resident and Reserved Volumes

7FFF

p.

Py

• It honors explicit requests for
resident direct access volumes, and
reserved units.

• It honors explicit and implied requests
for specific units. When these
functions have been performed, it
passes control to the Decision
Allocation routine (if there are
outstanding requests), or to the TIOT
Construction routine (if all requests
have been honored).

2

-

2

2
7FFF

Channel Load Table

UNIT ASSIGNMENT
selecting a device for assignment to a data
set is essentially a process of
elimination. When as many units as
possible have been eliminated because of
ineligibility or unsuitability, one of the
remaining (equally suitable) units is
assigned to the data set. Hopefully, the
process of elimination will eliminate all
but one unit; where a choice remains,
however, the list of UCBs is scanned: when
a UCB is encountered that corresponds to an
eligible unit, the unit is assigned to the
'data set.
The first requests to be honored are
those that permit no choice of units. The
Demand Allocation routine processes these
requests: if all requests are satisfied by
demand allocation, control is passed to the
TIOT Construction routine,. Otherwise, the
process of elimination is continued in the
Decision Allocation routine. At the
completion of decision allocation
processing, units have been assigned to all
requests except those involving public
volume space. Processing of requests for
public volumes is continued in the TIOT
Construction and Space Request routines.
208

Demand Allocation

OS/360 MVTJob Management (Release 21)

When the allocate work table and the
allocate volume table have been built,
requests, by volume serial, for resident
and reserved direct access volumes or
allocated units (including requests for the
volume containing a system input data set)
are processed.
The Demand Allocation routine obtains
the last entry in the device mask table
(this entry has all bits corresponding to
direct access devices set on), and examines
the list of UCBs, looking for a match to
the volume serial requested. When a match
is found, the UCB is inspected to insure
that the volume is resident, allocated, or
reserved, and the data set's AWT entry is
inspected to insure that the the device is
eligible for allocation to that data set.
Finally, the Device Strikeout routine is
used (as a subroutine> to perform the
allocation. If an error is detected,
control is passed to the Allocation
Recovery routine: otherwise, device' range
reduction is performed.
Device Range Reduction
The primary bit pattern of a data set's AWT
entry points to every unit of the device
types that could be used by the data set.
Some of these units, however, may be
ineligible for allocation to the data set
because their status or volumes mounted may
be inconsistent with the request. Device
range reduction IS the process of
eliminating from consideration those units
that are ineligible for allocation in
response to the requests made in the step ..

The following are ineligible for
allocation in response to some requests or
all requests:
• Units whose status is off-line, or is
being changed to off-line. are never
eligible for allocation unless they are
marked as being communication devices.

Automatic Volume Recognition

• The primary console input and output
devices are never eligible for
allocation.
• Units containing volumes that are both
reserved and private are not eligible
for allocation unless the correct
volume serial was specified.
• Units containing system residence
volumes are ineligible for allocation
in response to private volume requests
unless the correct volume serial is
specified.
• units that are being tested by the
Online Test Executive Program (OLTEP)
are never eligible for allocation. The
Demand Allocation routine determines
whether a unit is being tested by OLTEP
by checking bit 5 in byte 1 of the UCB.
• Allocated units are ineligible, except
for the following:
a.
h.
c.

d.

If., however, there are requests for
which no units have been allocated, the
routine passes control to the Automatic
Volume Recognition (AVR) routine (if it has
been included in the system).
If AVR has
not been included in the system, the Demand
Allocation routine passes control to the
Decision Allocation routine.

A demountable, direct access
device containing a public volume,
unless the data set is public.
Resident direct access devices.
A demountable, shareable, direct
access device that contains a
volume matching the volume
requested in a shareable request .•
Communication devices.

The routine processes each allocate work
table entry in turn. I When a unit is found
to be ineligible for allocation to the data
set, the corresponding bit in the primary
bit pattern of the data set's AWT entry is
set to zero, and the number of available
devices is reduced by one.
If the number
of available devices becomes less than the
number of devices required, control is
passed to the Allocation Recovery routine.
Otherwise, the next data set request is
processed.

If Automatic Volume Recognition (AVR) is
specified when the system is generated, the
operator can mount volumes required for
subsequent job steps as soon as units
become available. The AVR routine (modules
IEFXV001, IEFXV002, and IEFXV003)
recognizes the volumes that have been
mounted for the step being initiated, thus
saving the time that the system would
otherwise spend waiting for the operator to
find and mount them. Module IEFXV001, the
first of the three AVR modules to receive
control, uses four subroutines contained in
module IEFXV002 as follows:
• READSER - for reading a volume label
into main storage, for
extracting the volume serial
number and for placing it
into the UCB for the
corresponding device.
• SERBUILD - for building a list of
volume serial numbers from
requests for unmounted
volumes that AVR is to
handle.
• PATTEST - for verifying that a
specified device is
acceptable to all requests in
the unit and volume affinity
chains.
• PUTLIST - for issuing mount messages
for all unmounted volumes
that AVR routines are to
process.

Allocation of Specifically Requested Units

The third AVR module, IEFXV003, processes
unmounted tape requests.
In doing this, it
determines the most satisfactory allocation
solution to tape requests (based on device
configuration) for 9-track tape volumes on
either type 3400 or type 2400 tape drives.
Module IEFXV001 does the rest of the
processing for AVR requests.

The Demand Allocation routine next honors
requests for specific units. and requests
that can be satisfied only by specific
units because of device range reduction and
previous allocation.
If, when all such
requests have been honored, there are no
unsatisfied requests for devices, the
Demand Allocation routine passes control to
the TIOT Construction routine.

The AVR routine allocates units to
requests for 2311, 2305, 2314, and 3330
direct access volumes, premounted 7-track
tape volumes having the tape density
specified when the system is generated, and
9-track tape volumes. The allocation
request must specify volumes by volume
serial or by a data set name that implies a
volume serial.

Part 6:

Common Elements of Job Management

209

The AVR routine first allocates the
units containing volumes required for the
current job step. When this has been done,
the routine attempts to satisfy any
remaining requests for 2311, 2305, 3330,
and 2314 direct access volumes and for
9-track tape volumes. It allocates units
with no volumes mounted, then (if more
units are needed) it unloads units
containing volumes not required for the
current step. Unless enough units can be
made available, and unless all required
volumes can be mounted, the system
terminates the job.

National Standard) the AVR routine
passes control either to the
IBM-supplied subroutine IEFXVNSL to
indicate an error condition or to a
user-supplied IEFXVNSL that processes
the nonstandard label. If IEFXVNSL is
supplied by the user, the volume serial
number pointed to by the user routine
on the return to AVR is recorded by the
AVR routine in the UCB, but no bit is
set~

• If the tape has no label, the AVR
routine issues a request to the
operator to unload the tape.

Processing Requests for Mounted Volumes
The AVR routine first satisfies requests
for volumes that are already mounted. It
searches for these volumes by examining all
UCBs corresponding to 2311, 2305, 3330, and
2314 direct access units, 7-track tape
volumes having the tape density specified
when the system was generated, and 9-track
tape units.
If such a unit is online and
in the ready state, but the serial number
field in the UCB is zero, it means that the
volume was mounted since the start of the
previous job step and the label has not yet
been read.
In this case, the READSER subroutine in
the second module (IEFXV002) reads the
volume label into main storage and extracts
the volume serial number from the volume
label as follows:
• If the label is an IBM standard tape
label, the AVR routine records the
volume serial number in the UCB and
sets a bit in the UCB to indicate an
IBM standard label.
• If the label is an American National
Standard label, the volume serial
number must be translated from American
National Standard Code for Information
Interchange (ASCII) to EBCDIC. The AVR
routine checks a bit in the CVT to
determine whether the ASCII Translation
routine (SVC 103) was included in the
system at system generation time. If
so, the AVR routine sets a bit in the
appropriate UCB to indicate an American
National Standard label and passes
control via SVC 103 to the ASCII
Translation routine, which converts the
volume serial number to EBCDIC. Then
the AVR routine records the EBCDIC
number in the appropriate UCB and sets
a bit to indicate an American National
Standard label.
If the ASCII
Translation routine was not included,
the AVR routine sets a return code to
indicate an error condition exists.
• If the label is a nonstandard label,
(i.e., not IBM standard or American
210

OS/360 MVT Job Management (Release 21)

As each volume serial is recorded, the
AVR routine determines which volumes are
needed for the current job step.
It
searches the VOLT for a match to each
volume serial: when a match is found, the
volume has been specifically requested for
the current job step, and the AVR routine
passes control to the Device strikeout
routine, which performs the actual
allocation to satisfy all requests for the
volume and unit. The AVR routine uses the
External Action routine to notify the
operator and unload the volume if any of
the following occur:
e

The unit has been allocated to a
different volume.

• The Demand Allocation routine has
allocated the volume to a different
unit.
• The volume is a tape volume requested
for a 3400 series tape drive but
already mounted on a 2400 series tape
drive.
Processing Requests for Unmounted Volumes
Before the AVR routine requests the
operator to mount additional volumes, it
determines whether there are enough units
available to contain them:
1.

It counts the units that are online,
but not allocated by type (2311, 2314,
2400, 2400-3, 3330, etc.)
and by
state (ready or not-ready).

2.

It compares the number of units of
each type that are required for the
step, with the corresponding count of
units in a not-ready state. Units in
a not-ready state do not have volumes
mounted.
For tape requests, the AVR routine
attempts to satisfy requests for a
specified unit type by using the
counts of other compatible unit types
as well as using the count>of
corresponding units that are in the

3.

not-ready state. As an example, a
request for a 2400 tape drive with a
density of 800 BPI could be satisfied
by using either a type 2400-4 (dual
density) tape drive or a 3400-4 (dual
density) tape drive.

AVR routine was waiting, either IEFXV003
(for tape devices or module IEFXVOOl (for
direct access devices) determines the
availability of other eligible devices in
the not-ready state on which the operator
may mount volumes to satisfy the requests.

If there are not enough units in a
not-ready state available, the routine
determines whether there are enough
unallocated units in a ready state to
satisfy the outstanding requests.
Such units have volumes mounted; the
volumes may be retained volumes, or
they may contain data sets, and if so,
the routine will not use them unless
it is necessary to do so.

If eligible devices in the not-ready
state are unavailable, the module checks
the availability of eligible on-line
devices that can be unloaded.
If such
devices are available, the AVR routine
unloads them. If unloadable devices are
not available, the module gives control to
the allocation recovery routines.

If the AVR routine has not found enough
online, unallocated units to satisfy all
requests, it passes control to the
Allocation Error Recovery routine to issue
a list of offline units that can be made
available. The operator may reply with
three-character unit names to place the
units in online status or he may cancel the
job.
If the AVR routine has found enough
units, it furnishes the operator with
mounting messages that list the volumes to
be mounted and unit types required.
If the
DISPLAY DSNAME command is in effect, the
mount messages include the names of the
first nontemporary data sets on the volumes
to be mounted.
(see "The DISPLAY DSNAME
Command.") The External Action routine
unloads any units in the ready state that
must be used.
When the mounting instructions have been
issued, the AVR routine obtains main
storage from the system queue area (SQA)
for a mount verification communication area
(MVCA), constructs a dummy MVCA extension
(MVCAX), places the MVCA in the IEFVPOST
ECB list, then waits for a device-end
interruption to signal that a volume has
been mounted. When the interruption
occurs, the Unsolicited Device End Posting
routine (module IEFVPOST) posts the
appropriate ECB. Then the AVR routine uses
the READSER subroutine to copy the volume
serial number from the label of the volume
that has been mounted as described in the
section Processing Requests for Mounted
Volumes.
After the volume serial number is in the
DCB, the AVR routine checks whether the
volume is being waited on by AVR for the
job step and, if it is, allocates it by
giving control to the Device Strikeout
routine.
')

If the volume that was just made ready
(i.e., that was just mounted) is needed by
the job step but is not one for which the

If the volume that was just made ready
is not needed by the job step. an
insufficient number of acceptable not-ready
devices may remain for satisfying the
current requests. When this happens, the
AVR routine unloads the newly-mounted,
unneeded volume and issues a diagnostic
message.
When all units have been allocated, the
AVR routine removes the Mount Verification
Communication Area from the ECB list and
frees the main storage occupied by the
MVCA. The routine then passes control to
the Decision Allocation routine (if there
are still data sets to which no unit has
been allocated) or to the TIOT Construction
routine (if all volume requests have been
honored).
Decision Allocation
The Decision Allocation routine (module
IEFXSOOO) allocates units to all
unallocated data sets requiring private
volumes or specifying volume serials, to
data sets passed by a previous step or
requiring retained volumes (if the volumes
are mounted), and to any other data sets
whose eligible units are reduced (by the
decision allocation process) to the point
where a choice no longer exists.
There are three steps in the decision
allocation process:
Unit Elimination: channel and unit
separation requests are processed to
reduce the number of units eligible for
allocation to a data set.
• Data Set Selection: the data set whose
requirements are most restrictive is
chosen.
o Unit selection:
the most suitable of
the eligible units is chosen and
allocated to the data set.
g

When unit elimination has been performed
for all data sets, the data set selection
and unit selection steps are repeated for
each data set until all allocation requests
have been honored.
If an error is

Part 6:

Common Elements of Job Management

211

Data set A can use either unit, but data
set B can use only unit 1. Therefore, if
data set A were selected first, it might
have unit 1 allocated to it, and no unit
would be available for data set B.

encountered, or if there are allocation
requests that cannot be satisfied by the
available units, the Allocation Recovery
routine is executed. When unit assignment
is complete, control is passed to the TIOT
construction routine.
Unit Elimination
If an allocation request includes channel
or unit separation from another data set to
which a unit has been allocated, the units
whose allocation would violate that request
are declared ineligible (eliminated). The
corresponding bits in the primary bit
pattern of the data set's AWT entry are
turned off.
The Decision Allocation routine scans
the AWT for unit and channel separation
requests, then uses the separation
strikeout routine to eliminate the
ineligible units. When all such requests
have been processed, the number of data
sets assigned to each channel is added to
the channel load table (CLT), which is
later used to balance the channel workload.

If two or more data sets have the same
number of eligible units, the relative
restrictiveness of the requirements is
determined based upon the presence or
absence of certain attributes. Each data
set's AWT entry is scanned, and a weighting
factor added for each uniqueness attribute
found to be present. The data set totals
are compared, and the data set with the
highest total is considered the most
restrictive. Figure 92 lists the
uniqueness attributes, and the weighting
factor used with each.

r----------------------------------T------,

IAttribute

I Factor I

I-----------------------------------+------~

IReceived data set (passed by
Iprevious step)

8

I
I

I-----------------------------------+------~

IChannel separation requests
Passed Data sets

I
I

I

4

I

I-----------------------------------+------~

IUnit affinity request

In the receiving step, units are allocated
to passed data sets on the basis of a UCB
scan; when a UCB is found that shows a
volume of the data set to be mounted on the
associated unit, the unit is allocated.
Devices with volumes containing passed data
sets, and volumes retained for another job,
are not generally allocated to data sets
that have not been passed.

I

2

I

I-----------------------------------+------~

IChannel
affinity request
L
__________________________________

Figure 92.

I ______
1
JI

~

Data Set Uniqueness Attributes

If two or more data sets have equal
totals, they are selected in the order in
which their DD statements appeared in the
input stream.

Data Set Selection

Unit Selection

When the number of eligible devices has
been reduced as much as possible, (by
device range reduction, previous
allocation, and unit elimination), the
Decision Allocation routine performs the
two-step process of selecting a data set
and allocating a unit.

When a data set has been selected, a unit
is selected and allocated to it. Units are
considered in the following order:
1.

Data sets are selected in order of
restrictiveness of request (the most
restrictive request can be satisfied by the
fewest devices). The most restrictive
request is selected first in order to avoid
allocating all of its eligible devices to
other data sets. Figure 91 shows a
situation in which two data sets require
one unit each:
r----~------T-~-----------,

I

Unit 1

I

Unit 2

I

r---------------+-----------+-~-----------1

I Da ta Set A
I
X
Data Set B
I ______
X
IL _______________
~

Figure 91.
212

~

____

I
X
I
I ____________ I

~

~

Data Set Selection Example

OSI'360 MVT Job Management (Release 21>

2.

3.

If there are eligible devices on more
than one channel, the channel with the
greatest number of free units of the
type requested is chosen.
If more than one channel has the same
number of free units of the requested
type, the channel with the lightest
load is chosen; the device on that
channel with the fewest potential
users is chosen.
If there are several units with the
same number of potential users, the
first such device in the I/O
supervisor UCB lookup table is chosen.

When a unit has been chosen for
allocation to a data set, the Device
Strikeout routine is used to complete the
allocation. When uh:L ts have been allocated
to all requests except non-specific public
volume requests, control is passed to the
TIOT Construction routine.

C

TIOT CONSTRUCTION
The task input/output table (TIOT) is built
by the TIOT Construction routine (module
IEFWCIMP), which is entered from the Demand
Allocation or Decision Allocation routine.
The TIOT Construction routine calculates
the amount of storage required to build the
TIOT, and constructs the entries.
Storage Reguirement Calculation
Before the TIOT is built, the TIOT
Construction routine calculates the amount
of storage that will be required (see the
first formula in Figure 93). When there
are non-specific public volume requests,
the routine builds a list of units eligible
for allocation to each public volume
request, and places the list in the data
set's TIOT entry. The TIOT must therefore
be large enough to accommodate the extra
information. When, in the Space Request
routine, the required units are finally
allocated" these entries are compressed to
the size indicated by the second formula in
Figure 93.

r-----------------------------------------,
Ispace required to build TIOT
I 28+16N1 +4N 2 +4(N 3 N )+8N +N

=

I
I

~-----------------------------------------~

Ispace required for compressed TIOT
I 28+16N1 +4N 2

=

I
I

~-----------------------------------------~

I Where:

I

I

I

IN1

I

IN2
I

I

IN3
I

I

IN
I

I

IN
I

Number of DD statements in the step. I

I

Number of devices allocated to the
step.

r-------------------------T---------------,

I

Entry

I
I
I

I

Istepname of step in whichlSCT
Iprocedure was requested I
I
I
ILength of entry
I Calculated

I

I

I
I
I
I

I

I
I Calculated
I

I
I
I

I
I SlOT
I

I

Istatus A

I

IAddress of JFCB

I
I

I

I
I Calculated
I

I
I
I
I
I

I

I

I

Istatus C

I

I

~

I SlOT

I

I
I

I

I

I JCT
I
ISCT

I

INote: The TIOT is built by the TIOT
I
IConstruction routine, then compressed by I
Ithe
Space Request routine.
I
l ________________________________________

Source

I Job name
I
IStepname

I

Number of entries in I/O Supervisor I
UCB list table.
I

I

~-------------------------+---------------~

Iddname

I

I

As the entries are built, any logical
links between data sets are recorded. A
data set requesting volume affinity to
another data set causes the other data set
to be identified as a primary volume
affinity data set. The requesting data set
is identified as a secondary volume
affinity data set; it is linked (via TIOT
entry number) with the primary. Similar
identification and chaining is performed
when suballocation, unit affinity, and
split cylinder requests are encountered.
This technique permits control to be
maintained so that only one mount message
is issued (by the External Action routine)
even though many data sets may reside on
the same (currently unmounted) volume.

I
I

Number of non-specific requests for I
space on public volumes.
I
Number of devices available for
public volumes.

specified, or if the current step is to be
executed by a program created in a previous
step, entries are also created for the
joblib, steplib, and fetch data sets. The
entries are processed in input stream
sequence using the information sources
shown in Figure 9' 4 •

I Calculated

Istatus B

IAddress of UCB
I
I

II/O Supervisor I
I UCB lookup
I
Itable
I

ISlot for UCB
II/O supervisor I
I
I
I UCB Lookup
Table
lI _________________________ I _______________
JI
~

Figure 93.

Formulas for Finding TIOT
Storage Requirements

Figure 94.

Task Input/Output Table Entry
Sources

TIOT Entry Construction
Public Volume Processing
When the storage requirement has been
calculated, and the required amount of
storage has been obtained, a TIOT entry is
constructed for each data set associated
with the step. If a job library has been
specified, if a step library has been

When the TIOT Construction routine is
entered, units have been allocated to all
data sets except those that require space
on public volumes, and for which there is a
choice of eligible units. When it creates
Part 6:

Common Elements of Job Management

213

the TIOT entry for such a data set, the
TIOT Construction routine builds (in the
entry) a list of eligible units.
The first unit in the list is the unit
that appears to be the most suitable unit
with which to satisfy the request.. It is
chosen as follows:
1.

2.

Of the channels that contain eligible
units, the one that has. the lightest
data set load is chosen.
The unit selected as the most suitable
is the direct access device (on that
channel) " with the smallest number of
users, that is not reserved, does not
contain a private volume, and whose
volume does not contain any passed
data sets.

It is assumed that space will be
available on the most suitable unit and
that it can therefore be allocated to the
data set. The Separation Strikeout routine
is entered to process requests for channel
and unit separation from this data set,
then the other eligible units are placed in
the list in descending order of
suitability:
1.

Other direct access devices on the
system with the characteristics of the
first unit.

2.

Direct access devices containing
volumes that are not private or
reserved but contain passed data sets.

3.

Direct access devices with demountable
volumes that are currently allocated
to other jobs as private or
nonshareable volumes are added to the
list. They are marked as such to
prevent allocation until the unit
becomes unallocated.

4.

5.

Direct access devices with demountable
volumes, that are currently allocated
to other jobs, are added to the list.
They are marked as such to prevent
allocation until the unit becomes
unallocated.
Direct access devices (on other
channels), that have volumes
containing passed data sets, are added
to the list.

When the list (and the TIOT entry) has
been completed for a data set, the process
is repeated for succeeding public volume
requests. When processing is complete,
control is passed to the External Action
routine for volume mounting,.
214

OS/360 MVT Job Management (Release 21)

SPACE ASSIGNMENT
When the required units have been allocated
to all data sets requesting private or
specific volumes, and a list of available
units has been made for those data sets
requesting public direct access space, the
function of obtaining and assigning direct
access space must be performed. The
function is performed by the following
routines.
• The External Action routine (module
IEFWDOOO), issues mounting instructions
for volumes and verifies that the
correct data cell volumes and direct
access volumes requiring space
allocation for new data sets are
mounted.
• The Space Request routine (module
IEFXTOOD), which requests space from
the Direct Access Device Storage
Management (DADSM) routines, and
completes the allocation of units to
data sets requiring public volume
space.
• The VARY Allocation Interface and TIOT
Compression routine (module IEFXT002),
which changes the status of a device
from online status (allocated or
unallocated) to console status,
compresses the TIOT, places scratch
volume information in the JFCB, and, if
MSGLEVEL=(X,l), places allocation
messages in 5MBs. If the routine is
entered from the Space Request routine
after it has detected an unrecoverable
error, the TIOT Compression routine
compresses the TIOT, then passes
control to the Allocation Nonrecovery
Error routine.
• The Extended External Action routine
(module IEFWEXTA), which verifies that
the correct direct access volumes
containing old data sets have been
mounted.
G

The DADSM Error Recovery routine
(module IEFXT003), which determines
what action should be taken when a
request for space on a direct access
volume is not honored.

Mounting Volumes
The External Action routine (module
IEFWDOOO) is entered from the TIOT
construction module to issue mounting
instructions to the operator, to verify
that volumes requiring space allocation for
new data sets and all requested data cells
have been mounted, and to unload any
devices known to contain the wrong volumes.
When processing is complete, control is
passed to the Space Request routine.

When the routine is first entered, it
makes a check of the volumes recorded in
the UCBs to determine whether any volumes
required by the current step are mounted on
the wrong units.
If so, and if SMF volmne
accounting has been specified for the
system, the External Action routine issues
an SVC 78 (LSPACE) for each direct access
volume that is incorrectly mounted. The
SVC 78 routines, which are described in the
Direct Access Device Space Management PLM,
create a type 19 SMF record and cause it to
be placed in the SMF data set.
On the return from the SVC 78 routine,
the External Action routine requests the
operator to demount and retain the volume.
In the case of tape volumes, no SVC 78 is
issued; the External Action routine
requests the operator to demount the
volume, and unloads it.
After the check of unallocated devices
has been made, the routine scans the TIOT
for unload requests. These requests occur
when a volume required by the job step
cannot be mounted until the currently
mounted volume is removed from the unit.
The routine issues SVC 78 for such volumes
if they are direct access volumes, or
unloads them if they are tape volumes, then
requests the operator to demount them.
When the unload requests have been
satisfied, the External Action routine
scans the TIOT for mount requests, issues
mounting instructions to the operator, and
marks the appropriate TIOT entries so that
verification can be done when the unit
becomes ready.
If the MONITOR DSNAME
command is in effect, the mount messages to
the console or TSO terminal operator
include the names of the first eligible
nontemporary data sets associated with the
TIOT entries for which mount messages are
to be issued.
(See "The MONITOR DSNAME
Command.")
While issuing mounting instructions for
a volume, the External Action routine
checks the TIOT to determine whether the
volume contains an old data set.
If so,
verification of the volume is delayed until
the Extended External Action routine
(module IEFWEXTA) is executed at the end of
allocation.
(Data cell volumes are an
exception; all requested data cell volumes
are verified by the External Action routine
along with the volumes requiring space
allocation for new data sets.) The
External Action routine indicates that
verification of a volume is delayed by
placing the address of the mount
verification communication area (MVCA) for
the volume in the allocation/termination
communication area (ATCA). Then the
routine places the correct volume serial
number in the appropriate UCB and sets the

mount pending bit on in the data management
field of the UCB.
If MCS is in the system,
the routine places the DOM ID of the
volume's mount message in the DOM ID field
of the mount verification communication
area extension (MVCAX) for the volume.
After issuing the mounting instructions,
the routine issues a WAIT macro instruction
While the direct access devices for volumes
that require space allocation and for data
cell volumes become ready.
In order to
allow the Termination routine, the SYSOUT
writer, and'allocation for another task
access to the UCBs during the wait period,
the routine issues two DEQ macro
instructions for the UCBs. However, when
the volumes are finally mounted, the
routine issues two ENQ macro instructions
to prevent further access to the UCBs by
the Termination routine, by the SYSOUT
writer, and by allocation routines for
another task. When the devices are ready,
the routine checks the volumes that have
been mounted. If labeled direct access
volumes are specified, the volume labels
are read in and verified; if a direct
access volume is requested but no specific
volume is specified, the volume is
considered verified when the device becomes
ready. Tape volumes are checked in the
Open routine.
If the routine must wait for a device
end, it obtains ~ain storage for the mount
verification communication area (MVCA) and
the MVCAX associated with the requested
volume. Then it places the MVCA in the
IEFVPOST ECB chain. When the device-end
interruption occurs, IEFVPOST obtains the
device-end ECB from the MVCAX, the system
post routine posts it. and the External
Action routine verifies the volume. Then
the routine removes the MVCA and the MVCAX
from the ECB chain, but keeps them intact
for the Extended External Action routine
(module IEFWEXTA).
If an incorrect volume is mounted, the
operator is again issued a mounting message
containing the correct volume
identification. When all direct access
devices that have become ready have been
checked, the External Action routine issues
a WAIT macro instruction (if there are
additional direct access volumes to
verify); the ECB is posted by the resident
IEFVPOST routine when a device whose volume
is to be verified becomes ready.
When all required mount and remove
messages have been issued, and all required
direct access volumes have been correctly
mounted, the External Action routine passes
control to the Space Request routine for
public volume allocation.

Part 6:

Common Elements of Job Management

215

Obtaining Space
The Space Request routine (module IEFXTOOD)
is entered from the External Action
routine. At this point in. the I/O device
allocation processing, units have been
allocated to all data sets except those
requiring space on public volumes. In such
cases., an ordered list has been created of
eligible units; on the assumption that the
first choice units can be allocated to
those data sets. all volumes known to be
initially required have been mounted.
The Space Request routine attempts to
obtain direct access space for new data
sets from DADSM. When such space is not
available, it attempts to find space on
another volume (it uses the list of
eligible volumes provided for data sets
requiring space on public volumes); if it
cannot obtain space on currently available
devices, it passes control to the
Allocation Recovery routine. When all
requests have been satisfied, it compresses
the TIOT entries for data sets requiring
public volume space, and passes control to
the Extended External Action routine.
When it is entered, the Space Request
routine scans the TIOT for new data sets
requesting space on direct access volumes,
and processes each in turn. Volume
affinity, suballocation, and split cylinder
secondaries are processed immediately after
their primaries .•
The appropriate SIOT and JFCBs are read
into main storage (if SUBALLOC or SPLIT is
specified, two or more JFCBs are required).
and SVC 32 is issued to obtain the space.
If the return is a normal return, the JFCB
of the requesting data set is updated with
the identification of the volume on which
space was allocated, and the TIOT is
scanned for the next request.
When an error return occurs, the Space
Request passes control to the DADSM Error
Recovery routine (module IEFXT003). which
attempts to recover by allocating space on
another volume or another unit. If,
however, the request was for absolute
tracks or suballocation, or if volume
serials were specified and all specified
volumes have been tried, no recovery is
possible. In these cases control is passed
to the Allocation Recovery routine, and the
step is canceled; in the other cases,
recovery is attempted as described in the
section "Allocation Recovery."
Compressing the TIOT
When all requests have been processed, the
Space Request routine passes control to the
TIOT Compression routine (module IEFXT002),
which compresses the TIOT to its final size
216

05/360 MVT Job Management (Release 21)

and performs terminal functions. Each TIOT
entry that requests space on public volumes
is reordered so that the UCB addresses of
the units actually allocated are first in
the list of UCB pointers. The valid
portions of the TIOT are then shifted over
the unused UCB information; the amount of
storage required for the completed TIOT is
calculated (see the second formula in
Figure 93), and the excess storage is
released.
When the TIOT is complete, the TIOT
Compression routine tests the JCT for the
allocation message level of the job. If
the allocation message level is one
(MSGLEVEL = (x,1», the allocation messages
for the job are written into 5MBs. If the
allocation message level is zero, no
messages are written.
Volume information is then added to the
JFCBs for data sets that requested scratch
volumes. Messages specifying the units
allocated are placed in an 5MB (obtained by
the Allocate Entry routine), and the 5MB is
placed in the output queue .•
In addition, this routine provides an
interface with the VARY command when a
device is to be changed from an online
status to a console status. A UCB search
is performed to see if the change status
bit and the primary console bit in the UCB
are on. Whenever both bits are on, the
device is to be made an operator console.
If the device is allocated to a job step,
control is passed to the Allocation Exit
routine. The next time the Vary Allocation
Interface and TIOT Compression routine is
entered, it performs the same processing.
If the device is no longer allocated to the
job step, it turns off the change status
bit, thus indicating that the device is a
console, and passes control to the Ex.tended
External Action routine.
verifying Volumes That Do Not Require Space
Allocation
The Extended External Action routine
(module IEFWEXTA) is entered from the TIOT
Compression routine to verify volumes that
do not require space allocation, i.e.
volumes that contain old data sets.
(Volumes that require space allocation for
new data sets and all data cell volumes are
verified in the External Action routine.)
When the routine is first entered, it
determines whether there is a volume that
requires verification: it checks whether
the External Action routine has placed the
address of an MVCA in the
allocation/termination communication area
(ATCA). If no address exists, then no
volume needs verification, so the routine

passes control to the Allocation Exit
routine. However, if there is an address
in the ATCA" then there is a volume that
requires verification, so the routine
issues two DEQ macro instructions to allow
access to the UCBs by the Termination
routine and SYSOUT writer and by the
Allocation routine so that allocation can
be started for another task. Then the
routine scans the TIOT for a UCB with the
pending bit on in the data management
field.
The routine determines from the UCB
whether the device has become ready. If
so, the routine verifies the volume.
If an
incorrect volume is mounted, the routine
issues a demount and a mount message to the
operator to correct the error.
If MCS is
in the system, the routine issues a DOM
macro instruction to delete the mount
message for the volume.
If the routine must wait for a device
end in order to have a volume mounted, it
places the MVCA in the IEFVPOST ECB list,
issues a DEQ macro instruction to allow the
Allocation routine to continue allocation
for another task, and waits for the
Unsolicited Device End Posting routine
(module IEFVPOST) to post the ECB after the
device end interruption. When the ECB is
posted, the Extended External Action
routine issues an ENQ macro instruction and
determines whether the job has been
canceled. If so, it passes control to the
Allocation Nonrecovery routine.
If the job
was not canceled, the routine determines
whether there are more volumes to be
verified. If there are, the routine issues
a DEQ macro instruction to release the UCBs
and waits for the additional device end
interruptions.
After all volumes have been verified,
the routine passes control to the
Allocation Exit routine.

be executed, then execute the selected
procedure. The recovery procedure may
include waiting for another task to
terminate (so that the I/O devices used
in its execution become available), or
it may involve ignoring separation
requests, or using a unit made
available by operator action.
• The Device strikeout routine, which is
executed when a unit has been selected
for allocation to a data set.
It
modifies the primary and secondary bit
patterns in the AWT entries to complete
the allocation of that data set (and of
data sets linked to it by unit
affinity, volume affinity, suballocate
requests, or split cylinder requests),
and makes the unit unavailable to other
data sets.
• The separation Strikeout routine, which
makes units unavailable to a data set
if those units would violate its
channel and unit separation requests.
• The Unsolicited Device End Posting
routine, which posts the ECB when a
device with a volume to be mounted and
verified becomes ready.
Allocation Recovery
The Allocation Recovery routines are
entered when a lack of available devices
(or volumes), or a lack of available direct
access space, makes it impossible to
complete allocation for a job step. The
routines are:
• Allocation Recovery routine (module
IEFXJIMP)
• Nonrecovery Error routine (module
IEFXKIMP)
• Allocation-Wait-for-Unallocation
routine (module IEFSD195)

COMMON SUBROUTINES
The processing involved in recovering from
allocation errors, in allocating selected
units to a data set, in eliminating
ineligible units from further
consideration, and in posting unsolicited
device interruptions needs to be performed
at several points in the I/O Device
Allocation routine. This processing is
performed by the following routines:
• The Allocation Recovery routines, which
are executed whenever a lack of
available devices or a lack of
available direct access space is
discovered. The routines allow the
operator to specify which of several
alternative recovery procedures is to

• Allocation message module (module
IEFSD096)
• Allocation-Wait-for-Space-Decision
routine (module IEFSD097)
Lack of Available Devices
When a lack of available devices (or
volumes) is discovered after the TIOT has
been constructed, control is passed to the
Nonrecovery Error routine (module
IEFXKIMP). The routine loads an error code
into the LCT and passes control to the
Allocation Exit routine which loads an
error code into register 15, thus causing
the step to be canceled.

Part 6:

Common Elements of Job Management

217

If, however. a lack of available devices
is discovered before the TIOT has been
.
constructed. that is. in the Demand
Allocation routine or Decision Allocation
routine, an allocation recovery is
attempted. The Allocation Recovery routine
(module IEFXJIMP) is entered and issues a
message to the operator informing him of
the situation. The message provides the
operator with a list of units that are
eligible but not available for allocation
because of their status. Such units
include those whose status is off-line
(exception off-line unit being tested by
OLTEP), and units that are allocated to a
reading or writing task.

The routine also issues a DEQ macro
instruction to allow access to the UCBs by
the Extended External Action routine., which
may be verifying volumes for another task.
The routine then issues a WAIT macro
instruction. specifying the ECBs in the
alloca-te/IEFVPOST communication block and
in the command scheduling control block
(CSCB).

In addition to the list of units. the
message indicates the recovery procedures
that may be performed. The operator
receiving the message uses the REPLY
command to specify the procedure to be
performed. The operands available to the
operator. and the results of their use, are
described below.

If the ECB in the CSCB was posted, the
POST was issued by the Command Scheduling
routine in response to a CANCEL command,
indicating that the operator has canceled
the job. An error return code is loaded
into the LCT before control is passed to
the Allocate Control routine. so that the
allocation process will be performed in the
flush mode.

CANCEL: If no recovery is desired. the
operator may use the single operand
"CANCEL". The Allocation Recovery routine
loads an error code into the LCT and passes
control to the Allocate Exit routine. which
initiates flush mode processing.
Unit Name: The operator may reply with a
three-character unit name.
If the named
unit is off-line, its status is changed to
on-line. and control is passed to the
Allocate Control routine. The allocation
process is then repeated. using the
additional device.
NOSEP: If channel or unit separation was
requested for a data set. the operator may
use "NOSEP" in his reply. The Allocation
Recovery routine then sets a bit in the LCT
to indicate that separation requests are to
be ignored, and passes control to the
Allocate Control routine so that the
allocation process can be repeated.
WAIT: The operator may include the operand
"WAIT" in his reply. thus causing the
routine to wait for a job step or system
task to terminate (and release the I/O
devices that were allocated to it). While
the routine is waiting, the operator may
issue a STOP RDR or STOP WTR command to
terminate a specific system task, and make
its unit available to the current job step.
He may issue a CANCEL command at any time.
to cancel the job.
When the WAIT operand is used control is
passed to the Allocation-Wait-for-Unallocation routine (module IEFSD19S). This
routine issues a DEQ macro instruction that
allows termination routines (performing
other system tasks) access to the UCBs.
218

OS/360 MVT Job Management (Release 21)

After either ECB has been posted, the
Allocation-Wait-for-Unallocation routine
regains control, issues two ENQ macro
instructions (to prevent access to the
UCBS), and determines which ECB has been
posted.

If the ECB in the allocate/IEFVPOST
communication block was posted, the POST
was issued by the Terminate routine after a
job step or system task had terminated,
releasing the I/O devices that had been
allocated to it. Control is passed to the
Allocate Control routine, and the
allocation process is repeated, using the
additional devices obtained from the
terminated job step or system task.
Lack of Available Space
When the Space Request routine encounters
an error return from the DADSM Allocation
routine (SVC 32), it determines whether the
request included absolute tracks.
suballocation, or split cylinders.
If so,
control is passed to the Nonrecovery Error
routine (module IEFXKIMP), which causes the
job to be canceled.
In the other cases,
however, a recovery procedure is initiated.
The first step in the recovery procedure
is to try to mount a new volume on the
allocated unit. The Space Request routine
passes control to the External Action
routine, which requests the operator to
remove the currently mounted volume and to
mount a scratch volume. When the scratch
volume has been mounted, the request for
space (SVC 32) is repeated.
Remounting is not possible, however, if
the unit has one or more of the following
attributes:
• The volume is not physically
demountable.

routine. This routine determines whether
the request includes unit or channel
separation.

• The unit is system residence.
• The unit is reserved.
• The currently mounted volume contains
data sets allocated to another job.
• The unit will not accommodate the
requested record size.
If remounting is not possible, and the
request is for a private volume, control is
passed to the Nonrecovery Error routine and
the step is canceled. If the data set
requires space on a public volume, however,
the Space Request routine attempts to
obtain space on one of the other units in
the list of eligible units in the TIOT
entry. The list of eligible units may
contain a unit with a pending mount request
for a volume that does not require space
allocation, i.e., a volume that contains an
old data set. Therefore, the verification
of this volume is delayed until the
Extended'External Action routine is
executed at the end of allocation
processing, and the mount remains pending
until the verification is completed. If
the Space Request routine encounters a unit
with a mount pending, it passes control to
the External Action routine requesting an
immediate mount of the volume.
When it has unsuccessfully requested
space on all units in the list that are not
separation violators, the Space Request
routine passes control to the
Allocation-Wait-for-space-Decision routine.
The Allocation-Wait-for-space-Decision
routine (module IEFSD097) determines
whether it is feasible to wait for
termination'to occur before further
recovery attempts are made. It is feasible
to wait only if:
• The request is for public space on any
one of a number of units, or on a
specific, non-private unit.
• There is at least one user (in addition
to the current job step) on anyone of
the units from which space was
requested.
If both conditions are true, a
termination may release space occupied by a
currently active data set.. If either
condition is not'met, control is passed to
the ,Space Request routine, which requests
space on the remaining units. in the list in
the TIOT entry.
If both conditions are true, the
Allocation-Wait-for-Space-Decision routine
passes control to the Wait-for-Unallocation

If channel or unit separation was
requested, the Wait-for-Unallocation
routine issues a message to the requesting
operator. The message specifies the
possible options: canceling the job,
ignoring separation requests, or waiting
for a termination to occur. The operator
indicates his choice by issuing a REPLY
command, with one of the operands described
below.
CANCEL: The operator uses this operand if
he wishes to cancel the job. A return code
is loaded, and control is passed to the
Allocate Exit routine.
NOSEP: If the operator uses this operand,
control is passed to the Space Request
routine, which attempts to obtain space on
units that violate separation requests. If
the attempt is unsuccessful, control is
passed back to the Wait-for-Space-Decision
routine, which determines whether a wait
for space is feasible. If not, control is
passed to the Nonrecovery Error routine,
and the job is terminated.
WAIT: If the operator uses this operand,
the processing is similar to that used in
waiting for additional devices to become
available (see nLack of Available
Devices n ). The Allocation-Wait-for-Unallocation routine issues two DEQ macro
instructions to allow access of the UCBs by
the Termination routine, by the SYSOUT
writer, and by the Extended External Action
routine, which is waiting to verify that
the correct volumes containing old data
sets have been mounted. Next the
Allocation-Wait-for-Unallocation routine
issues a WAIT macro instruction. When it
regains control it determines the source of
the POST, and if the job was canceled it
loads an error code into register 15 and
passes control back to the
Wait-for-Space-Decision routine, which
passes control to the Nonrecovery routine.
If a job step has terminated or a system
output writer has deleted a system
output-data set, control is passed to the
Space Request routine, which repeats its
requests for space.
'
Device Strikeout
The Device Strikeout routine (module
IEFX300A) is entered from the Demand
Allocation and Decision Allocation routines
when a unit has been selected for
allocation to a data set. The routine

Part 6:

Common Elements of Job Management

219

completes the allocation to that data set
(and to all related data sets) 1" makes the
unit unavailable to other data sets, and
returns to its caller.
When it is first entered, the Device
strikeout routine completes the allocation
of the selected unit by storing the UCB
address in the allocate volume table entry
pOinted to by the allocate work table (AWT)
entry.

The effect of executing the separation
Strikeout routine is as follows:
• If a data set requests separation from
a data set, the devices that would
violate that request are removed from
consideration.
• A data set that requests affinity with
another data set mayor may not be
allocated the same device (or channel).
It will not however, be allocated any
device that violates a separation
request of the other data set.

If volume affinity is specified, the
allocate volume table entries in the group
are already chained together. If this is
the case, the Device strikeout routine
stores the UCB address in each allocate
volume table entry in the chain.

The following is repeated for all data
sets that request separation from the
original data set:

If unit affinity., split cylinder or
suballocation is specified., the AWT entries
of the data sets in the group are chained
together. If this is the case, the Device
strikeout routine stores the UCB address in
the first allocate volume table entry for
each data set in the chain.

If any data sets have requested channel
affinity to a data set that has in turn,
requested channel separation from the
original data set, the routine sets to zero
any bits in their primary bit patterns that
correspond to devices on the channel
allocated to the original data set.

When the Device strikeout routine stores
the UCB address in an allocate volume table
entry, it turns off the bits that
correspond to that device in the primary
and secondary bit pattern fields of the AWT
entry. In addition, when it has completed
the allocation of a device it determines
whether the requested volume is a specific,
private., or public volume. If the request
was for a specific volume, the
non-shareable bit has been set in the AWT.
When the routine processes a non-shareable
request it sets the appropriate bits off in
the bit pattern of all other non-shareable
requests. If the volume is private, the
routine sets the appropriate bits off in
the bit pattern fields of all unallocated
data sets' AWT entries. If the volume is
public, the bits are turned off for all
data sets requesting private volumes.

If any data sets have requested channel
affinity to the original data set, the
routine sets to zero all bits in their
primary bit patterns except those bits that
represent devices on the same channel as
the unit allocated to the original data
set.

separation strikeout

Unsolicited Device End Posting

The separation strikeout routine (module
IEFXHOOO) is entered from the Decision
Allocation routine after a device has been
allocated to a data set, and from the TIOT
Construction routine when the most suitable
device has been selected. The routine
implements other data sets' channel and
unit separation requests: it sets bits to
zero in the primary bit patterns of their
AWT entries if the allocation of the
corresponding devices would violate
separation or affinity requests.

The Unsolicited Device End Posting routine
(module IEFVPOST) is a nucleus-resident
routine that is entered from the I/O
supervisor if an unsolicited device end
occurs on a device for which there is a
volume to be mounted and verified. The I/O
supervisor uses the allocation attention
table index in the device's UCB to pass
control to the Unsolicited Device End
Posting routine.

1Related data sets are those with unit or
volume affinity, split cylinder, or
suballocation relationships.
220

OS/360 MVT Job Management (Release 21)

If any data sets have requested unit
separation from the original data set, the
routine sets to zero the bits in their bit
patterns that correspond to the device
allocated to the original data set.
If any data sets have requested unit
affinity to a data set that has, in turn,
requested unit separation from the original
data set, the routine sets to zero the bits
in their primary bit patterns that
correspond to the device allocated to the
original data set.

After receiving control, the Unsolicited
Device End Posting routine searches the
allocation/termination communication area
(ATCA) for the address of a mount
verification communication area (MVCA),
which indicates the existence of an ECB

chain. Then the routine obtains the
address of the MVCA extension (MVCAX) and
passes the device-end ECB in the MVCAX to
the system post routine for posting. The
routine repeats this processing until the
last MVCA is processed., and therefore, the
end of the ECB chain is reached.

checkpoint/restart. Therefore., if the
Allocation Exit rotuine is entered during
checkpoint/restart processing, it rechains
the WTP 5MBs previously existing for the
step and reinitializes the WTPCB to reflect
this status.
In any case, the routine issues two DEQ
macro instructions to allow access to the
UCBs by Allocation and Termination routines
performing other tasks, determines whether
allocation took place in the flush mode,
and loads the appropriate return code
before returning control to the calling
routine.

If there are no ECBs to be posted, or
when the last ECB is posted, the routine
returns control to the I/O supervisor.
ALLOCATION EXIT
The Allocation Exit routine (module
IEFSD41Q) is entered from the Extended
External Action routine after all volumes
have been verified and allocation for a
task is complete, or from other allocation
modules when an error condition has been
detected.

Task Termination

If the routine is entered because of an
error condition., it sets the step-flush bit
(if the error was a condition code error)
or job-flush bit on, to initiate flush mode
processing. If a TIOT has not yet been
constructed, it then passes control to the
JFCB Housekeeping control routine. If a
TIOT has been constructed, i t frees the
main storage obtained for the UCB lookup
table, then returns control to the calling
routine.
When the routine is entered at the
completion of the allocation process, it
uses the Queue Management Write routine to
place the 5MB containing allocation
messages in the proper output queue if
MSGLEVEL= (X, 1).. If a system output data
set exists in the message class, the
routine causes the 5MB to point to the
first DSB in the entry.
If no message class system output data
set exists, the routine places the address
of the last allocation 5MB in the
write-to-programmer control block (WTPCB)
'for WTP processing. However, if a system
output data set exists, the routine places
the address of the 5MB assigned for
termination in the WTPCB and sets bit 2 of
the WTPFLGSA field to one. Then the
routine places the address of the message
class QMPA in the WTPCB.

o

Termination housekeeping. which
includes interlocking access to UCBs
and obtaining an 5MB for termination
messages to the programmer.

o

step termination, which includes
disposing of data sets, unallocating
I/O devices, processing condition
codes, causing the User's Accounting
routine to be executed, determining
whether the step is to be restarted,
and, if there are additional steps in
the job, releasing the UCB interlock
and returning control to the caller.

o

Job termination, which is performed
only when the last step of a job (or a
system task) is terminated, includes
causing the User's Accounting routine
to be executed, performing disposition
and unallocation processing that could
not be done at step termination,
writing remaining system messages
specified for DSO processing,
completing the job's output queue
entry, releasing the UCB interlock, and
returning control to the caller.

The termination routine is entered under
one of the following conditions:

When the routine is entered during the
first step of a job, it assigns two 5MBs
from the SYS1.SYSJOBQE data set and
reserves them for WTP processing. The
routine places the address of the first
reserved WTP 5MB in the WTPCB and enters it
in the job queue with a pointer to the
second reserved WTP 5MB.
Write-to-programmer messages that are
issued after a checkpoint will be
duplicated during automatic

The Termination routine is a collection of
modules used as a subroutine by the
initiator and by the System Restart
routines. If performs the following major
functions:

• It is entered via a Branch and Link
instruction from the Step Delete
routine of the Initiator when a job
step has returned control to the
initiator.
• It is entered via a Branch and Link
instruction from the Alternate step
Delete routine of the initiator when
the initiator has determined that a job
step cannot be run.

Part 6:

Common Elements of Job Management

221

e

It is entered via a LINK macro
instruction from the Restart
Determination routine of the System
Restart routine if a job step was
started but not completed when the
system failure occurred.

When it has completed its processing,
the Termination routine returns control to
its caller.
TERMINATION HOUSEKEEPING
The Termination Entry routine (module
IEFSD42Q) is given control whenever the
Termination routine is entered.
It
provides an 5MB for termination messages to
the programmer.

The Termination Entry routine also saves
the address of the first WTP 5MB in the
SCTCRWTP field of the seT and places a
count of the WTP 5MBs for the step in the
SCTCRCNT field. The information in these
fields is used when the job step undergoes
an automatic checkpoint restart.
If the problem program ended abnormally,
(ABEND), the Termination Entry routine
passes control to the Indicative Dump
routine (module IEFIDUMP). The Indicative
Dump routine writes a message to the
programmer indicating the user and system
completion codes, and passes control to the
Step Termination Control routine.

STEP TERMINATION
When it is entered, the Termination
Entry routine obtains main storage for an
5MB.
From the step control table (SCT)R it
obtains the address of the last output
queue record assigned for an 5MB for the
current job, and places that address in the
main storage area.
If the current step has
no data sets designated as system output
data sets of the message class. the address
represents a partially filled 5MB. This
5MB, which was placed in the output queue
during the execution of the Allocation Exit
routine, is read into the main storage
area, where it will be filled with
termination messages to the programmer
before being written into the queue.
However, if write-to-programmer processing
was invoked during execution of the job
step, the partially-filled 5MB will point
to the first WTP 5MB for the step_
Therefore, the Termination Entry routine
will follow the chain of WTP 5MBs to find
the last one for the step, read it into the
main storage area, and place in it the
address of the 5MB that will be filled with
termination messages.
If, however, the current step does have
data sets in the message class, the address
obtained from the SCT represents a record
in the queue reserved for an 5MB, but
unused unless write-to-programmer
processing was invoked during the job step.
The partially filled 5MB that was written
back into the queue during execution of the
Allocation Exit routine points to the first
data set block (DSB) corresponding to a
data set in the message class; the last DSB
(and the SCT) point to the record reserved
for a termination 5MB or the first WTP 5MB.
Thus, when the message class queue entry is
processed by a system output writer, the
interpreter and allocation messages will
precede the step's data sets; the data sets
will be followed by the write-to-programmer
messages, if any, and then the termination
messages.
222

OS/360 MVT Job Management (Release 21)

When the step Termination Control routine
(module IEFYNIMP) is entered it determines
whether the step was normally terminated.
If so, it sets the restart fields in the
JCT to zero, and stores the queue address
of the SCT for the next step in the JCT.
If the step terminated abnormally,
however, the routine passes control to the
Restart Preparation routine, which
determines whether the step is to be
restarted, and if so. prepares for the
restart. On the return from the Restart
Preparation routine. the step Termination
Control routine determines if an automatic
checkpoint/restart is in effect.
If not,
the routine places zeroes in the SCTCRWTP
and SCTCRCNT fields of the SCT.
Next. or if the step was normally
terminated, the Step Termination Control
routine passes control to the Data Set
Driver routine for disposition and
unallocation processing, and on the return,
it tests for error conditions and sets the
appropriate bits as follows:
e

It tests the Cancel ECB in the
Initiator CSCB to determine whether the
operator has canceled the job. If so,
the ECB has been posted; the step
Termination Control routine sets the
job-failed bit in the JCT and uses the
WTO macro instruction to inform the
operator.

e

If the operator has not canceled the
job, the routine tests the error code
field in the LCT to determine whether
the step was abnormally terminated
during initiator processing (because,
for example. main storage was not
available for the initiator. or because
of an uncorrectable I/O error). If the
step was abnormally terminated. the
step Termination Control routine sets
the job-failed bit in the JCT and

places a message in the termination
5MB.
• If neither of these conditions exists,
the routine tests the ABTERM bit in the
job step TCB to determine whether the
step abnormally terminated during
execution. If so, the routine sets
theABEND bit in the job status
indicators field of the JCT and uses
the WTO macro instruction to inform the
operator.
When it has tested for these conditions
and set the appropriate bits, the step
Termination Control routine frees the main
storage occupied by the job step TIOT and
determines whether the current step is the
last step in the job.. If so, it passes
control to the User Accounting Linkage
routine (which passes control to the user's
accounting routine), and on the return it
passes control to the Job Termination
Control routine.
If there are more steps
in the job, the Step Termination Control
routine passes control to the Job statement
Condition Code Processor routin'e, which
passes control to the User Accounting
Linkage routine, then to the step
Termination Exit routine. 1 Even if the job
has been canceled on the step abnormally
terminated, the remaining steps must be
processed (in flush mode). The flush mode
processing will insure that unused system
input data sets will be deleted, and all
system output will be processed.
SMF Processing
If SMF is included in the system, the User
Accounting Linkage routine (module
IEFACTLK) performs S~~ data collection
functions as well as furnishing linkage to
the user's accounting routine.
If the step
is the last step of the job, the routine is
entered from the Step Termination Control
routine (module IEFYNIMP), and again from
the Job Termination Control routine (module
IEFZAJB3). For all other steps, it is
entered from the Job statement Condition
Code Processor routine (module IEFVJIMP).
The processing performed is similar
whenever the routine is entered. When it
is entered at step termination, the routine
reads the step ACT into main storage; when
it is entered at job termination, the
routine obtains the job ACT.
In either
case, it determines the maximum amount of
main storage used (in hierarchy 0 and 1),
then branches to the SMF Termination Record
Construction routine.
1If the job-failed bit has been set, the
Step Termination Control routine passes
control directly to the Step Termination
Exit routine.

The SMF Termination Record Construction
routine (module IEFSMFWI) builds the SMF
job termination record (type 5) or the SMF
step termination record (type 4).
If the
terminating job is a TSO job (terminated
via LOGOFF), the routine overlays portions
of the type 4 or 5 record with TSO
information to convert the record to a TSO
step termination record (type 34) or a TSO
LOGOFF record (type 35).
(The System
Management Facilities publication describes
the SMF records.)
If a non-TSO job is
being terminated, the routine also
constructs the sign on and sign off
messages, and places them in an 5MB, before
returning control to the User Accounting
Linkage routine.
On the return, the Linkage routine
constructs a parameter list consisting of
4-byte addresses (on fullword boundaries).
The addresses point to the following
fields:
1.

The job log (the first 36 bytes of the
JMR).

2.

step Name (8 bytes).

3.

Programmer's name (20 bytes).

4.

Job execution time (3 bytes) and
number of job accounting fields (1
byte) •

5.

Job accounting fields.

6.

Step execution time (3 bytes) and
number of step accounting fields (1
byte).

7.

step accounting fields.

8.

Flags (1 byte) and step number (1
byte). If bit 7 of the flag byte is
on, the job is to be canceled.

9.

Termination status (2 bytes).

10.

SMF Step or Job Termination record.

When it has constructed the parameter
list, the Linkage routine passes control to
the user's accounting routine, which must
be named IEFACTRT. On the return, it
issues SVC 83 to have the termination
record transferred to the SMF buffer, and
returns control to its caller.
Restart Preparation
If a job step has been abnormally
terminated, the step Termination Control
routine passes control to the Restart
Preparation routine (module IEFRPREP).
This routine determines whether a restart
has been requested and whether it is

Part 6:

Common Elements of Job Management

223

possible, then requests operator
authorization for the restart. If the
operator authorizes the restart, the
routine sets indicators for data set
disposition processing and for
re-enqueueing the job's input queue entry .•
A restart has been requested, and is
possible, only if the following conditions
are met:
• MSGLEVEL=1 or (1,1) or (1.,0) was
specified.
• The RD keyword was specified, and the
parameter is either R or RNC, or the RD
keyword was not specified, but
checkpoints have been taken.
• The ABEND code is one of those
specified (when the system was
generated) to indicate that a restart
is possible or desirable.
If the conditions are met, the Restart
Preparation routine uses the WTOR macro
instruction to request authorization for
the restart.
If the operator reply is
"YES", the restart is authorized. If the
reply is "HOLD" the restart is authorized,
but deferred; the routine sets the JCT
queue indicator so that the job will be
re-enqueued in the hold queue instead of in
an input queue.
If the reply is "NO", the
restart is not authorized.
If the conditions are not met, or if the
restart is not authorized, the routine sets
the no restart indicators in the JCT and
LCT and returns control to the Step
Termination Control routine.
If the operator authorizes the restart,
the routine determines whether a checkpoint
restart or a step restart is to occur. It
examines the JCT number of checkpoints and
restart indicator fields: if no
checkpoints were taken and RD=R or RD=RNC
was specified, a step restart is to occur;
otherwise, checkpoint restart is to occur.
If a step restart is to occur, the
Restart Preparation routine sets bit 5 on
in the first byte of the restart switches
field in the JCT.
(This indicates to the
Termination routine that all NEW data sets
are to be deleted, and all OLD data sets
are to be kept.) The Restart Preparation
routine scans the PDQ, decrements all
entries for the current step by one, and
sets their pass satisfied bits to one. If
it encounters an I/O error, the routine
issues a message to the operator canceling
the restart, and returns control to its
caller.
224

OS/360 MVT Job Management (Release 21>

If a checkpoint restart is to be
performed, the routine sets bit 4 on in the
first byte of the JCT restart switches
field. This indicates (to the Termination
routine) that all data sets are to be kept.
In either case, the Restart Preparation
routine next sets the LCT error field to
X'08', and returns control to the Step
Termination Control routine.
Disposition and Unallocation
The step Termination Data set Driver
routine (module IEFYPJB3) is entered from
the step Termination Control routine. If
the job step has been abnormally terminated
and the allocation message level of the job
is zero (MSGLEVEL = (x,O», the step
Termination Data Set Driver routine
reconstructs the allocation messages for
the job before it begins to process the
SlOTs for the step. It begins SlOT
processing by using queue management to
read an SlOT for the step into main
storage. Control then passes from the Step
Termination Data set Driver routine to the
Disposition and Unallocation location
routine. The Disposition and Unallocation
routine processes the data set specified by
the SlOT and returns control to the Step
Termination Data Set Driver routine, which
brings in the next SlOT. This loop
continues until all SlOTs for the step have
been processed. Then, the Step Termination
Data Set Driver routine returns control to
the Step Termination Control routine.
The Disposition and Unallocation routine
is divided into two sections: disposition
processing (module IEFZGST1), which
performs data set dispositions as specified
in the DD statement DISP field, and device
unallocation processing (module IEFZGST2),
which makes the units allocated to the data
set available for allocation to other job
steps. To interlock UCBs against multiple
references during the termination process,
these modules issue an ENQ macro
instruction when they are entered. Then,
to allow use of the Termination routine in
the execution of other tasks, the modules
issue a DEQ macro instruction.
When a data set has been processed,
module IEFZHMSG issues an ENQ macro
instruction to protect UCB information and
places a message containing the data set
name, its disposition, and its volume
serials in the termination 5MB.
If a
DISPLAY SPACE command has been issued, bit
5 of byte MSSSB in the master scheduler
resident data area is on; if SMF volume
information has been requested, bit 4 in
the SMCA SMF options field is on.
In
either case, the routine issues SVC 78
(LSPACE) to have an SMF type 19 record

constructed and, if SMF volume information
was requested" placed in the SMF data set.
If a DISPLAY STATUS command has been
issued, the MSDISPST bit in the master
scheduler resident data area is on. The
routine tests the bit, and if it is on, the
routine uses the WTO macro instruction to
issue the disposition message to the
requesting operator.
Data Set Disposition
When the Step Termination Data Set Driver
routine passes control to the Disposition
and Unallocation routine, i t provides
pointers to the TIOT and to the SlOT. If
no restart is to occur, the routine
performs the disposition specified in the
disposition field or (if the job terminated
abnormally) the conditional disposition
field in the SlOT.
If a restart is to occur, the Restart
Preparation routine has set the appropriate
bits in the JCT restart switches field.
Each time it is to perform a data set
disposition, the Disposition and
Unallocation routine tests the JCT restart
switches field.
If a step restart is to
occur, it deletes all new data set and
keeps all old data sets. If a checkpoint
restart is to occur, the routine keeps all
data sets.
If no restart is to occur, if there is
no disposition specified, and if the data
set is not a system output data set, the
Disposition and Unallocation routine must
assume a disposition based on the status
(old or new) of the data set. The routine
determines the status by inspecting the
status field of the PDQ entry (for a passed
data set), or by inspecting the status
field of the SlOT.
If the routine finds
that the data set is "old n (it was created
in a previous job), it assumes a KEEP
disposition.
If it finds that the data set
is "new", it assumes a DELETE disposition.
DELETE: If the disposition is DELETE, the
Disposition and Unallocation routine first
determines whether the data set is
cataloged. If the data set is cataloged,
and the JFCB Housekeeping routine obtained
volume information from the catalog, the
Disposition and Unallocation routine issues
the UNCATALG macro instruction. 1
1If the programmer specifies volume
information in a DD statement, the JFCB
Housekeeping routine will use that
information rather than the information in
the catalog. The data set will be
deleted, but not uncataloged.

In all cases where the disposition is
DELETE, if the devices allocated to the
data set are direct access devices, the
routine attempts to issue a SCRATCH macro
instruction. The SCRATCH can be issued
only if all volumes containing the data set
can be mounted (either one at a time, or
simultaneously). Thus, if any volume
containing the data set is not mounted,
there must be at least one demountable
volume (containing the data set) mounted.
If so, the data set is deleted; if not, an
error message is issued.
If the data set does not reside on
direct access volumes, the volumes
containing the data set are demounted, but
no SCRATCH macro instruction is issued.
KEEP: If the disposition is KEEP, the
Disposition and Unallocation routine issues
a message to the operator and passes
control to the device availability
processing section of the routine.
PASS: If the disposition is PASS, no
message is issued to the operator. Control
is passed directly to the device
unallocation processing section of the
routine.
CATLG: If the disposition is CATLG, and
the data set is not already cataloged, the
Disposition and Unallocation routine issues
the CATALOG macro instruction.
If,
however, the data set is already cataloged,
the volume list may have been changed by
the Data Management Open, Close, or
End-of-Volume routines.
If this is the
case, the RECATALG macro instruction is
issued; if the volume list was not altered,
control passes to the device unallocation
processing section.
UNCATALG: If the disposition is UNCATALG,
the Disposition and Unallocation routine
issues the UNCATALG macro instruction, and
passes control to the device unallocation
section of the routine.
system Output Data sets: If there is no
disposition specified, but the SYSOUT
keyword is used in the DD statement, the
interpreter uses queue management to assign
a record in the appropriate system output
queue to a DSB corresponding to the data
set. The interpreterp;taces the queue
address of the DSB (and of the next DSB in
that system output class) in the SlOT of
the data set. Control is then passed to
theDSB Processing routine (module
IEFYTVMS) •
The DSB Processing routine determines
whether the system output data set contains
data. If the DSO indicator bit in the JCT
is on, the routine first performs DSO
processing. The routine checks the device

Part 6:

Common Elements

of~.

Job Management

225

type specified for system output. If it is
not a direct access device, the routine
marks the respective DSB as a dummy 5MB to
indicate that there is data. Then it
issues an ENQ macro instruction (in the
shared mode) specifying the DSOCBchain.
The routine then turns off the active
status bit in each DSOCB used for the step.
Next, the routine checks a bit in the
TIOT.
If this indicator is on, the data
set does contain data. If the indicator is
off., a further check is made of a bit in
the JCT to determine whether a checkpoint
restart might have occurred.
If it is
possible that a checkpoint restart has
taken place, the DSB Processing routine
reads the DSCB into main storage. The
routine then checks a DSCB field to verify
whether the data set cont~ins data.
If the data set does contain data, the
routine fills in the DSB for the data set
and uses the Queue Management Write routine
to place it in the preassigned record. It
also sets a bit in the JCT to indicate that
a valid data set exists in the system
output class in question. If the data set
is a dummy (as might be the case if the
step has been canceled), a zero DSB is
writ.ten. A new DSB is created, if, during
a system restart procedure, the data set
exists and the original DSB has been lost.
If a job step terminates abnormally and
a conditional disposition has been
specified, the conditional disposition is
processed instead of the normal
disposition.
If a SYSOUT data set contains
no data, its disposition is assumed to be
DELETE. In any case, the disposition
processing is the same.

• Volumes mounted on reserved units.
• Permanently resident volumes.
• Volumes whose status is "retain."
• Volumes mounted on system input or
system output units.
• Volumes containing data sets having
PASS dispositions.
• Volumes whose user count is greater
than zero.
Demount messages are issued for any
volumes that can be demounted.
If the
MONITOR DSNAME command is in effect, the
demount messages include the names of the
first eligible non-temforary data sets
associated with the TIOT device entries for
which demount messages are to be issued.
(see "The MONITOR DSNAME Command.") The
addresses of the appropriate UCBs are
obtained from the TIOT, and the status of
the units used is changed to "allocatable."
If the allocation message level of the
job is one (MSGLEVEL = (x,l», termination
messages for the job are written into 5MBs.
If a job step terminates abnormally,
termination messages for the job are issued
unconditionally.
When device unallocation processing of a
data set is completed, the Disposition and
Unallocation routine returns control to the
step Termination Data Set Driver routine.
When the last data set has been processed,
the Step Termination Data Set Driver
routine returns control to the Step
Termination Control routine.
JOB Statement Condition Codes

Unallocating Devices
After the disposition of a data set is
determined and processed, the device
unallocation portion of the Disposition and
Unallocation routine is executed. First, a
check is made to determine whether the
operator has issued a VARY or UNLOAD
command. If so, the status of the device
is changed, and a message indicating that
the command has been processed is issued to
the operator.
When the commands have been executed (if
there were any), tests are made to
determine whether any of the volumes
containing the data set can be demounted.
The following kinds of volumes are not
demountable:
• Public volumes.
• System residence volumes.
226

OS/360 MVT Job Management (Release 21)

When all SIOTs have been processed, and the
SCT has been returned to the input queue,
the step Termination Control routine
determines whether there are additional
steps to the job. If so, it passes control
to the JOB Statement Condition Code routine
(module IEFVJIMP).
If there were no
condition codes specified, the JOB
Statement Condition Code routine passes
control to the Step Termination Exit
routine. If, however, condition codes were
speci£ied in the JOB statement, the routine
tests the eighth step condition entry to
determine whether the step was abnormally
terminated. If so, the entry has been set
to zeros (except that the ABEND bit in the
first byte has been set on) and the routine
passes control to the Step Termination Exit
routine. If the step was not abnormally
terminated, up to eight condition codes in
the JCT are compared, in turn, with the
step completion code in the SCT (any
additional condition codes are ignored) •

If any of the condition operators are
satisfied by the completion code, the job
termination status bit in the LeT and the
job-failed bit in the JCT are set on, and
the message subroutine (module IEFYSVMS) is
used to place a message in the termination
5MB. When condition code processing is
complete, control is passed to the step
Termination exit routine.
Step Termination Exit
The Step Termination Exit routine (module
IEFSD22Q) is the last module of the step
Termination routine to be executed when the
current step is not the last step of the
job. The routine uses the Queue Management
Write routine to place the termination 5MB
(which points to the first interpreter 5MB
for the next step) in the output queue, and
places the address of the next SCT in the
linkage control table (LCT).
It issues the
POST macro instruction to the ECB in the
allocate/IEFVPOST communications block.
Finally it loads register 15 with a return
code that indicates that there are
additional steps in the job, and returns
control to the calling routine.
If the current step is the last step in
the job, the Step Termination Exit routine
is not executed. The step Termination
Control routine passes control to the
User's Accounting routine (if it is
includeG in the system), then to the Job
Termination Control routine.
JOB TERMINATION
The job .termination portion of the
Termination routine is executed only when
there are no more steps in the job. Its
function is to cause the User's Accounting
routine to be executed, to complete the
job's output queue entries, and to process
the following kinds of data sets and
volumes, which cannot be processed during
step termination:

Disposition and Unallocation
When it is entered from the Job Termination
Control routine to process unreceived data
sets, the Disposition and Unallocation
routine finds a pointer to a PDQ block that
describes the data set that was passed, but
not received.
If the job was abnormally terminated,
the job flush bit in the JCT is on, and any
conditional disposition specified for the
data set will be honored. The Disposition
and Unallocation routine uses the Queue
Management Read/Write routine to bring the
SlOT for the data set into main storage,
and the conditional disposition is
processed.
If no conditional disposition is
specified, or if the job was terminated
normally, the disposition performed is
either DELETE or KEEP.
If the data set was
created and passed by the same step (of the
current job), the disposition is DELETE;
otherwise, a KEEP disposition is performed.
Tape demount messages are issued during
data set disposition processing, not during
device unallocation.
Prior to constructing
a KEEP disposition message for a
non-temporary data set on a tape volume,
the Job Termination Disposition and
Unallocation routine extracts the UCB
pointer from the PDQ block entry and the
volume serial number from the JFCB. If the
volume is mounted, termination message
module IEFZHMSG extracts the data set name
from the JFCB, inserts it into the demount
message, and issues a WTO or TPUT (TSO)
macro instruction.
(See "The MONITOR
DSNAME Command. ")
In any case, the disposition and
unallocation processing is the same
performed when entry is from the step
Termination Data Set Driver routine.

• Unreceived data sets, which are data
sets that were passed, but which were
not referred to by subsequent steps.
• Volumes that were retained, but to
which reference was never made.
The Job Termination Control routine
(module IEFZAJB3) first examines the JCT to
determine whether a passed data set queue
(PDQ) exists; if so, it uses the Queue
Management Read routine to bring each block
into main storage.', The Job Termination
Control routine ex.amines each block, and
when it finds an u1nreceived data set, it
passes control to ~he Disposition and
Unallocation routine.

When all unreceived data sets have been
processed, the volumes that were retained
but never referred to must be processed.
The Job Termination Control routine again
passes control to the Disposition and
Unallocation routine, but furnishes no PDQ
pointer. This time all UCBs are scanned.
The Disposition and Unallocation routine
issues demount messages for any demountable
volumes on devices whose UCBs contain the
task identification found in this
initiator's task control block. The
routine then returns control to the Job
Termination Control routine, which passes
control to the User Accounting Linkage
routine. This routine performs functions
described under "SMF Processing" in the
Step Termination portion of this section,
then passes control to the Job Termination
Exit routine.

Part 6:

Common Elen:ents of Job Management

227

Job Termination Exit
The Job Termination Exit routine (module
IEFSD31Q) performs functions similar to
those performed by the Step Termination
Exit routine.
It places the last
termination 5MB in the output queue and
posts the ECB in the allocate/IEFVPOST
communications block. In addition, it
completes the job's output queue entries
and issues a job ended or job failed
message to the operator as required.
If the DSOCB indicator bit in the JCT is
on, the routine issues an ENQ macro
instruction (in the shared mode) specifying
the DSOCB chain, releases all DSOCBs for
the job (to make them available for other
jobs)1 and issues a DEQ macro instruction
for the DSOCB chain. If the STOP/MODIFY
bit in any DSOCB is on, the routine posts
the ECB in the DSOCB to invoke the DSO stop
and Modify Processing routine (module
IEFDSOSM).
If there is a message class
DSOCB for the job, the routine passes
control via a LINK macro instruction to the
DSO Writer routine (module IEFDSOWR) to
process the DSOCB.
Upon return, the
routine releases the message class DSOCB
and deletes the message class 5MB from the
queue.
The routine uses the Queue Management
Read/Write routine to bring the system
output class directory (SCD) and the job's
first system message block (SMB) into main
storage. By matching the output class
entries in the SCD (one for each class used
by the job) and the SYSOUT class bits in
the JCT (set by the SYSOUT Disposition
routine), the Job Termination Exit routine
determines whether there are output classes
other than the MSGCLASS that contain data.

228

OS/360 MVT Job Management (Release 21)

If there are system output classes with
data, a message showing these classes is
constructed and placed in the previously
read 5MB. Otherwise, the contents of the
5MB are changed so the JOB statement will
be the first message. The Queue Management
Read/Write routine is then used to write
the 5MB back to the output queue.
After modifying the QMPA according to
the information in each SCD entry, the Job
Termination Exit routine uses the Queue
Management Enqueue routine to enqueue those
output classes that contain data and the
Queue Management Delete routine to delete
those output class entries that contain no
data.
There are three bits that must be tested
to determine whether a message is to be
issued to the operator, and if so, whether
a job ended or job failed message is to be
issued. 1 If the job notification bit (BAJN)
in the master scheduler resident data area
is on, and the job-failed and job flush
bits in the JCT are off, a job ended
message is issued; if the job-failed or job
flush bit is on, and the job termination
status bit in the LCT is off, a job failed
message is issued; otherwise, no message is
issued. If the time notification bit is
also on, the routine includes the time in
the message.
Finally, the routine places a return
code in register 15 to indicate that there
are no more steps in the job, and returns
control to the calling routine.
1In the case of a TSO job, a different set
of bits must be checked. TSO processing
is described in the TSO Command Processor
PLMs or in the MONITOR commands section of
this PLM.

System Management Facilities

The system management facilities (SMF)
consist of routines that collect data,
exits for user-supplied data collection
routines, and routines that record the
collected data in a data set. The system
management facilities may include either
one tape data set (SYS1.MANX) or two direct
access data sets (SYS1.MANX and SYS1.MANY).
In the latter case, the two data sets are
filled alternately: while one is in use,
the other may be dumped via the SMF Dump
routine (IFASMFDP). This section contains
a general description of the system
management facilities, and detailed
descriptions of the routines that record
the data in an SMF data set (the SVC 83,
SMF Writer routines, and the SMF Dump
routine).
AN OVERVIEW OF SMF
The system management facilities are
initialized by routines performing the
master scheduling task. The SMF
Initialization routine (modules IEESMFIT,
IEESMFI3, and IEESMFI2) adds the SMF DD
names to the master scheduler TIOT,
initializes the system management control
area (SMCA) with the SMF parameters,
initializes the lO-minute timer, and
constructs the SMF IPL and Online Devices
records. The SMF Open Initializer routine
(module IEESMFOI) initializes the DCBs and
JFCBs for the SMF data sets, then uses the
ATTACH macro instruction to establish the
SMF task.
SMF data collection routines, and exits
for user supplied data collection routines,
are in the Interpreter, in the Initiator,
and in the Termination routine.
IBM-supplied data collection routines are
in the System Output Writer and the VARY
command processor, and other data
collection facilities are provided in the
supervisor (see the MVT Supervisor PLM).
In the Interpreter, module IEFVHl of the
Interpreter Initialization routine starts
construction of the job management record
(JMR). The Pre-scan Preparation routine
(module IEFVHEB) passes control to the
user's JCL Validation routine before each
JCL statement is processed, and the Job and
step Enqueue routine (module IEFVHH) passes
control to the same user-supplied routine
before enqueueing the job. The JMR, now
containing data collected by IBM and
user-supplied routines, is written in the
work queue data set, where i t becomes a
part of the job's input queue entry.
When the first step of a job is
initiated" the Initiator Region Size

Determination routine (module IEFSD10l)
branches to the User Exit Initialization
routine (module IEFSMFIE), which constructs
the timing control table (TCT) and brings
the JMR into main storage. The routine
updates the job log portion of the JMR,
brings the job accounting control table
(ACT) into main storage, and passes control
to the user's Job Initiation exit routine.
For all other steps of the job, the User
Exit Initialization routine updates the job
log, brings in the step ACT, and passes
control to the user's step Initiation exit
routine.
Before each step is attached, the Attach
routine (module IEFSD263) passes control to
the TCTIOT Construction routine (module
IEFSMFAT), which updates the TCT and
constructs the timing control task
input/output table (TCTIOT).
As each step of the job is terminated,
the User Accounting Linkage routine (module
IEFACTLK) is entered. At step termination
it brings in the step ACT, uses the SMF
Termination Record Construction routine to
build the SMF step termination record, then
passes control to the user's accounting
routine. On the return, the routine uses
SVC 83 to have the termination record
transferred to the SMF buffer.
At job termination, the User Accounting
Linkage routine brings the job ACT into
main storage. The SMF Termination record
construction routine builds the SMF job
termination record. The user's accounting
routine is executed, and SVC 83 transfers
the record to the SMF buffer.
When a VARY ONLINE command is issued,
either the VARY/UNLOAD Syntax Scan routine,
module IGCl103D (if MCS is not in the
system), or the MCS VARY Syntax Check
routine, module IGC3303D (if MCS is in the
system), passes control to the SMF VARY
Record Handler routine (module IEE2303D),
which constructs an SMF vary online record
and issues SVC 83 to have it transferred to
the SMF buffer.
The SMF SVC routine (SVC 83) is used to
transfer SMF records to the SMF buffer, to
have the contents of the SMF buffer written
on the SMF data set, and to initialize and
switch data sets.
It consists of three
load modules: the Record Transfer routine
(module IGC0008C), which moves records to
the SMF buffer and uses the POST macro
instruction to inform the SMF Writer when
the buffer is full; the SMF Open routine
(module IEESMFOP), which performs data set
switching and causes devices to be
allocated to the SMF data sets; and the SMF
Allocation routine (module IEESMFAL), which
performs the allocation.

Part 6:

Common Elements of Job Management

229

The SMF Writer 

3

3
Average Data Record Length

Indicator
Byte 3

Relative Address of First
Track to be Allocated
Volume
Count

Number of
Tracks per
Cylinder

2

90

3
Queue Address of Next J FCBX

Reserved

15 Additional Volume Serials

82

Reserved

T

T

Job File Control Block Extension (JFCBX)

Figure 114.

Job File Control Block Extension (JFCBX)

JOB FILE CONTROL BLOCK (JFCB) AND EXTENSION (JFCBX)
Description: A job file control block (JFCB) is constructed in subpool
zero (from information in a DD statement) by the Interpreter DD Statement
Processor routine. The JFCB is written into the job's input queue entry,
and retrieved when a DCB with the corresponding name is opened. The
information in the JFCB, which describes the characteristics of a data
set, may be modified by the Open routine.
A JFCB contains enough space to record five volume serials.
If more
than five volume serials are specified, enough job file control block
extensions (JFCBXs) to contain the additional volume serials are
constructed; each JFCBX can contain up to fifteen additional volume
serials.
Additional information on the contents of the JFCB and JFCBX may be
found in the publication, IBM system/360 Operating System: System
Control Blocks, GC28-6628.
Mapping Macro Instruction:

IEFJFCBN

Appendix A:

Tables and Work Areas

267

Offset
~

o

Dec

0

8
Job Name

8

8

C

12

10

16

14

20

Job Entry Time

4

Job Entry Date

4

CPU ID

4
Job Log

8
User Id

1C

28

20

32

24

36

28

40

Current Step Number

11

11

SMF Options

Reserved

2

User Communication Area

4

Address of User Exit Routine

4
8

Reader Stop Time and Date
30

48

34

52

4

JobSYSI N Count (Logical Records)
..

Reader Device Type and Class

21

SMF Options

11

6

Reserved

40

64

44

68

48

72

4C

76

50

80

I

1I

JCL Verb Code

2

Pointer to Job Log

4

Pointer to Current JCL Statement

4

Pointer to JMR JCL Verb Code Field

4

Pointer to Operand Offset

4
96

-

Reserved

1
Figure 115.

268

Reserved

J
Job Management Record (JMR)

OS/360 MVT Job Management (Release 21)

JOB MANAGEMENT RECORD (JMR)
Description: The Job Management record (JMR) is created as the JCL for a
job is interpreted. and continues to be updated during the life of the
job. The JMR is written into the job's input queue entry immediately
before the JCT is written, and is brought back into main storage when the
job is initiated. The JMR contains job information accumulated by
IBM-supplied data collection routines; it serves as an information source
for SMF records and also contains parameters passed to user exit
routines.
The names of some of the fields in the JMR are sufficient to describe
their contents. Some fields, however, require further explanation, and
these are described below:
• Job Entry Time: This field contains a binary representation of the
time (in hundredths of seconds) when the job statement was made
available to the Interpreter for scanning.
• Job Entry Date: This field contains a packed decimal representation
(OOYYDDDF) of the date on which the job was interpreted.
• User Communication Areas: This 4-byte field is available for use by
all user exit routines. The contents of this area are not recorded
on the SMF data set, nor disturbed by any IBM-supplied routines.
• Reader stop Time and Date: This field contains a binary
representation of the time and a packed decimal representation of the
date on which the job was enqueued. If an in-storage access method
with a dummy IEFRDER DD statement is specified for the reading task,
the reader device type and class field will contain zeros.
• Reader Device Type and Class: This field contains the device type
and class of the unit allocated to the reading task, as represented
in the UCB device type and device class fields.
• SMF Options: The SMF options field appears at offsets X'lD' and
x'36'. This field indicates the options that were selected when the
system was loaded or if a TSO job is being processed, the options in
this field will apply to TSO processing. The bits, when set to one,
indicate that the corresponding options were selected:
Bit

o

1
2
3
4
5
6
7

Option
Job Accounting
Step Accounting
User Exits
Data set Accounting
Volume Accounting
ESV Accounting
Temporary Data Set Scratch Records
(TSO) Foreground Job

• JCL Verb Code: The value stored in this field indicates the type of
JCL statement currently being processed:
Value

-01

2
4
8

16

statement Type
Null Statement
JOB Statement
EXEC Statement
DD Statement
PROC statement
Job is ready to be enqueued

Mapping Macro Instruction:

IEFJMR
Appendix A:

Tables and Work Areas

269

Offset
Hex
Dec

0

0

4

Address of EBCDIC Options String
(JSELOPT)

4
8

4
8

C

12

110

16

I Figure

4

Address of JSOL
USELJSOL)
Address of CSCB for Jobs to be Scheduled
(JSELCSCB)

116.

4

Address of JCLS
(JSELJCL)

4

Add ress of JSX L
(JSELJSXL)

4

Job Scheduling Entrance List (JSEL)

JOB SCHEDULING ENTRANCE LIST
Description: The JSEL is a five-word parameter list that is built by the
JCL Edit routine (module IEEVJCL). The JSEL is passed to the Interpreter
Control routine (module IEEVRCTL) when the routine is entered to schedule
a job step task in a START command or a TSO task from a terminal. The
JSEL contains the addresses of tables used to communicate information
about the tasks between the caller and the routines that schedule the
tasks.
Mapping Macro Instruction:

270

IEFVJSEL

OS/360 MVT Job Management (Release 21)

MVT JM PLM
Offset
Hex
Dec

o

0

8

8

1

2

Length of Exit List
(JSXLLGTH)
1
Exit
Definition
(JSXLLlNK)

Return Code
(JSXLRCOD)

Exit ID
(JSXLlD)

4

1
Address of Local Work Area
(JSXLCOMM)

Reserved

6

1
Linkage

Figure 117.

Ex_'_t_'D____

First
Data
Entry

-'

lL-D_e_~x_n:_:i_on l~I__ l~I_________________________
__

Header

6~JI ~~~

L_in_k_ag_e_____________________________

Job Scheduling Exit List (JSXL)

JOB SCHEDULING EXIT LIST
Description: The job scheduling exit list is built by the JCL Edit
routine (module IEFVJCL) to provide linkage between optional exit
routines and the routines that schedule job step tasks from a START
command and TSO tasks from a terminal. The list consists of an 8-byte
header entry and a series of 8-byte data entries, each of which describes
an exit. The list contains the following fields:
• Return Code:
Code
0
1
2

3

The return code indicates the following:

Meaning
Return from
Return from
Return from
Return from

routines that schedule jobs
module IEFVSCAN
reader/interpreter
initiator

• Exit Definition: This field specifies the type of linkage to be
used. Bits 0 and 1 contain the following specifications; bits 2-7
are reserved:
setting
10
11
01
00

• Exit ID:
Bit
--01

2
3
4-7

Meaning
LINK to name
XCTL to name
Branch to address
Default; no exit specified
This field specifies when the exit is to be taken:
Meaning
post-processing exit routine
Initiator pre-invocation exit routine
Initiator post-invocation exit routine
Reader/interpreter special input access method
Reserved

• Linkage Information: The type and format of the linkage information
depends on the specification in the exit definition field:
Specification
Name
Address
V-type address
constant

Linkage Information
6-byte EBCDIC name
3-byte address. right justified
Zeros

Mapping Macro Instruction:

IEFVJSXL
Appendix A:

Tables and Work Areas

271

MVT JM PLM
Offset
Hex
Dec
0

0
2

Length of JSOL
(JSOLLGTH)
4

4

10

18

1

Protection Key
(JSOLPKEY)

Reserved

8

16

1

3

1

SMF Options
(JSOLSMFO)
8

Options Byte
(JSOLFLAG)

1

JOBNAME for TlOT Prologue
(JSOLTJOB)

I

8

r--------------------------------------------------------------------------------~8 ~:~!gue
STEPNAME for TI OT Prologue
(JSOLTSTE )

24

PROCSTEPNAME for TlOT Prologue
(JSOLTPRO)

T
Figure 118.

T

Job Scheduling Option List (JSOL)

JOB SCHEDULING OPTION LIST
Description: The job scheduling option list contains the processing
options for the routines that schedule job step tasks in a START command
and TSO tasks from a terminal. The list is created by the JCL Edit
routine (module IEEVJCL). Some of the fields of the JSOL are
self-explanatory. The following fields. however, require further
description:
• Options Byte: The bits of this field, if set to one, have the
following meaning:
Bit
--01
2
3-7

Meaning
Use protection key specified
SMF is active
SMF option byte is in the JSOL
Reserved

• Protection Key: This field contains the protection key to be used
for programs not listed in the linkage table if the protection key
option is selected for the task.
• SMF Foreground Options:
the following meanings:
Bit
--01
2
3
4
5
6
7

The bits of this field, if set to one, have

Meaning
Job accounting
step accounting
Exits supported
Data set accounting
Volume accounting
ESV accounting
Temporary data set scratch record
Foreground job

• TIOT Prologue Fields: These fields contain the names to be included
in the TIOT prologue that is substituted for the model TIOT.
Mapping Macro Instruction:
272

IEFVJSOL

OS/360 MVT Job Management (Release 21)

MVT JM PLM
Offset
Hex
Dec
0

0

2

Length of JSWA
(JSWALGTH)
8

8

10

16

4

1

1

Options Byte
(JSWAOPT)

Address of JSEL
(JSWAJSEL)

SMF Options
(JSWASMF)

(JSWAMOD)
4

18

1

Protection Key
(JSWAPKEY)

Address of Trock Stack
(JSWATSTK)

Address of TI aT
(JSWATIOT)

4

24
(JSWAXCTL)

Figure 119.

Job Schedulin.g Work

A~ea

(JSWA)

JOB SCHEDULING WORK AREA
Description: The job scheduling work area contains information about the
job step tasks entered into the system via a START command and TSO tasks
entered from a TSO terminal. The job scheduling work area is built by
the Interpreter Control routine (module IEEVRCTL) in subpool 253; it is
used by the interpreter and initiator routines to schedule jobs.
The names of some of the fields are sufficient to describe their
contents. HCYooiI'ever" the fields below require further description.
• Options Byte: The bits of this field, if set to one, have the
following meanings:
Bit

-01
2
3
4
5
6
7

Meaning
Process TERM=TS (TSO)
Use track stacking
support dedicated work files
Reserved
Use protection key provided
Bypass allocation recovery
Do not wait for queue space
Initiator uses RET=USE option for ENQ
of data sets; if ENQ fails, job fails

Flagname
JSWATERM
JSWATRST
JSWAFI
JSWAPKO
JSWANORC
JSWANOQW
JSWAENQU

• SMF Options: The bits of this field, if set to one, have the
following meanings:
Bit
--01

2
3-7

Meaning
SMF is active
SMF exits are active
Timing information is in the protected step
control block (TSO)
Reserved

• Protection Key: This field contains the protection key to be used if
the tasks invoked for this job are not in the linkage table and if
the protection key option has been specified by the invoker of module
IEEVRCTL.
Mapping Macro Instruction:

IEFVJSWA

Appendix A: .Tables and Work Areas

273

Offset
Hex
Dec
0
0
8

Limit
Pri-Param

1\

3

Add ress of Job Step CSC B

8

4
Job Step TCB Address

10

Address of

Device
Features

I/o

Linkor's Reg Save Area Addr
4

4

16

SCT Address

24

4

4
Queue Address of Current SCT

20

4
3

11

JCT Address
18

Superv. UCB lookup Table

Allocate/IEFVPOST Comm. Block Address

32

16

4

Error Code

Communications Area

4

Alloc/Terminate Register Save Area Address
38

56
Reserved

40

64

48

72

Address of Current 5MB

4

Counter for Assigning Unique Vol.
Serials to Passed Data Set Volumes

4
Return Address to System Task Ctl Rtne

50

4

1
1\ JF'cB House- 1\ Current
1\
Action Code
keeping Indie's Step Number

4

Address of Message Class QMPA

3

Initiator
1\
Internal Sw's

PARMField Address

80

16
Timer Work Area

60

4

4

96
JOBUB DCB Address

68
F8
llC

104
248
284

Alloc/Terminate Param List Address
144_

L..

Reg ISter Save Area

I

Queue Management Parameter Area (QMPA)

I

140

320

148

328

150

336

-

Message CI ass QMPA

~

Number of
Buffers

1

4

3
Stack Add ress
ECBLlST Address

Queue Breaking Information
4

Initiator Identifier

8
Continued

158

344

Initiator Force
8

Continued
160

352

InitiatorOp- 1
tions Byte 1

Initiator Exit List Addr

168

360

Initiator Op- 1
tions Byte 3

Address of JSCB for Task

170

368

274

1

InitiatorOp-l
tions Byte 2

Force

Priority

1\

Initiator
Priority

1
11

Reserved

Address of Communications
Parameter Area (CPA)

3
4

3
Reserved

12
Reserved

I Figure

3

Initiator
Limit

120.

Linkage Control Table (LCT)

05/360' MVT Job Management (Release 21>

~

Track
Stacking
Information

LINKAGE CONTROL TABLE (LCT)
Description: The linkage control table (LCT) is built in a main storage
area obtained from subpool 253 by the Initiator Initialization routine.
It is a communications area used by the routines of the initiator.
Most of the fields in the LCT are self-explanatory; it should be
noted, however, that the job termination status bit is the low-order bit
of the one-byte device features field.
The following fields require further explanation.
Initiator Internal Switches:
Bit

-01

2
3
4
5
6
7

Meaning
Initiator operates in hierarchy one.
Reserved.
Attach IEFSDOXX.
Job flush; use minimum initiator region .•
Taskname not in START command.
Initiator internal stop.
Job step abnormally terminated (ABEND).
Reserved.

Initiator Options Byte 1:
Bit

o

1
2
3
4

5
6

7

o

1

2
3
4
5
6
7

Bit
0-7

Flagname
LCTPKEYF
LCTDWFF
LCTSTMDF
LCTMINPF
LCTCANF
LCTONEJF
LCTCMDF

Flagname
LCTTIMEF
LCTCRF
LCTDSOF
LCTINTHO
LCTINTH1
LCTTSTKF
LCTNORCF
LCTENQUF

When set on, the bits mean:
Flagname

Meaning
Reserved.

Mapping Macro Instruction:

LCTSDOXX
LCTMINRG
LCTSTART
LCTSTOP
LCTABEND

When set on, the bits mean:

Meaning
Initiator does not time this job.
Initiator does not use
checkpoint/restart.
Initiator suppresses DSO processing.
Initiator operates in hierarchy zero.
Initiator operates in hierarchy one.
Initiator uses track stacking.
Initiator bypasses allocation recovery.
Initiator does not wait for data sets.

Initiator Options Byte 3:

Flagname
LCTIHIER

When set on, the bits mean:

Meaning
Initiator uses the protect key specified
in the protect key field.
Initiator does not use dedicated work
files.
Initiator does not process STOP or MODIFY
commands.
Initiator gets specified size region.
Initiator suppresses CANCEL command
except during allocation processing.
Initiator processes only one job.
Initiator does not process initiator
commands.
Reserved.

Initiator Options Byte 2:
Bit

When set on, the bits mean:

IEFALLCT

Appendix A:

Tables and Work Areas

275

Offset
Hex
0

Dec
0

4

Pointer to First CSCB (or Zero)
4

4

4
Pointer to GCB Queue

8

8

4

Master Scheduler ECB
C

12

4
Master Scheduler IPL Routines ECB

10

16

4

Pointer to Work Queue UCB
14

20

4

Poi nter to Procedure Library UCB
18

24
Queue Formatti ng Switch

lC

3

Painter to SET AUTO Command Paramo List

lJ

28

4
Pointer to System Log Control Table

20

32
Status Flags 1

24

lJ

1

Number of Tracks in Stack

36

2

Initiator Protection Key Mask
28

40

2

Minimum Job Step Region Size
2C

2

Interpreter Counter
Minimum Initiator Region Size
Log Status Flags

1

I

Status Flags 2

44

1
4

Log ECB
30

2

4t

4
Pointer to First DSO Control Block

34

-

52
TSO Monitor Command Flags

38

88

56

148

98

152

9C

156

Reserved

1--'1

1

System Exclusive Flags

Pend i ng Flags

1

I

ECB Flags

1

1
Status Flags 3

94

2
Maximum No. of Broadcast Messages
80

140
144

1

Reserve d

136

90

J

L..

Resident Switches
8C

1

1
8

Fetch Flags
Command Verb

8
Variable Communication Field
2
Message Generation Control

AO

160
P Pointer - Points to Character Before List

A4

4
4

164

Maste
Commo n

Master ECB

Area
A8

168

AC

172

BO

176

B4

180

B8

184

Address of ECB i~ Selected Job Queue Entry of ·Job Using Console

4
ECB for Allocation Internal Use
Pointer to Primary UCB
Pointer to Alternate UCB
V - type Address of Pseudo - Disable Switch

BC

4

188

4
4
4
4

Reserved
CO

192

4
Reserved
1-

Figure 121.
276

Master Scheduler Resident Data Area

08/360 MVT Job Management (Release 21)

MASTER SCHEDULER RESIDENT DATA AREA
Description: The master scheduler resident data area. which is in the
nucleus area of main storage. contains information used by the queue
initialization. command scheduling. initiator. and I/O Device Allocation
routines.
Its location is stored in the CVTMSER and the CVTMSLT fields
of the communication vector table.
Most of the fields in the master scheduler resident data area are self
explanatory; those fields that require further explanation are described
below:
• Queue Formattinq Switch:
If the high-order bit of this field is on.
it indicates that the queue data set must be formatted.
• Status Flags 1:
Bit

o

1

2
3

4
5

6-7

When set on. status flags indicate:

Definition
system Initialization in progress
MONITOR JOBNAMES
DISPLAY ACTIVE waiting
VARY/UNLOAD summary
Queue hold-release
DISPLAY ACTIVE processing
Reserved

• Log Status Flags:
Bit

-0-1
2

3

When set on. log status flags indicate:

Meaning
Log data set SYSOUT scheduling
Log not supported
Communications task to stop
issuing WTLs
Reentry of log writer
routine from Damage
Assessment routines (DAR)

• status Flags 2:
Bit
-0-1-7

When set on. the status flags indicate:

Meaning
Master scheduler initialization is complete
Unused

• TSO MONITOR Command Flags:
Bit

o
1
2

3
4
5

6-7

o

1
2
3-4
5
6
7

When set on. flags indicate:
Flag Name
BAMJN
BAMDSN
BAMSPACE
BAMSTAT
BAMSESST
BAMSESSC

Meaning
MONITOR JOBNAMES issued from TSO terminal
MONITOR DSNAME issued from TSO terminal
MONITOR SPACE issued from TSO terminal
MONITOR STATUS issued from TSO terminal
MONITOR SESS issued from TSO terminal
MONITOR SESS issued from console
Reserved

• Resident switches:
Bit

Flag Name
BAIN
BAJN
BADAW
BAVU
BAHR
BADSP

When set on. flags indicate:

Defini tion
IPL switch
SYSOUT IPL
SYSOUT job start
Reserved
34 security
Queue initialized
Procedure catalog initialized

• system Exclusive Flags:

Flag Name
MSNIPL

MSCURE34
MSQNIP
MSPNIP

When set on, flags indicate:
Appendix A:

Tables and Work Areas

277

Bit
-01

2
3
4
5
6

Definition
Console Flag
Cancel flag for ABENDT
Rollout Flag
Spinoff flag (CANCEL)
MONI'IDR Dataset name
MONITOR SPACE

Flag Name
MSCONFLG
MSCANFLG
MSROLFLG
MSSO
MSSSDSN
MSSSPACE

7

• pending flags:
Bit

-01
2
3
4

5
6
7

Definition
IPL Date
Region busy
Command move completed
Interpreter command return
System input control purge request
System output control purge request
Blank start pending (REQ=l,START BLANK=O)
Console command suppressed by WTO/wTOR Exit
Routine

• ECB Flags:
Bit
-01
2
3
4
5
6
7

When set on, flags indicate:

When set on"

WTL

Console Attention key hit
System Input
System Output
Master command routine
SUmmary bit, VARY UCB scan required

Definition
Master Initialization (IPL) completed

1

5
6

WTO or WTOR pending
Console usage, Primary or alternate
Log purge request
Reader has reached end of file, or
start reader
New reader pending
New writer pending

7

Job notification (l=yes)

2

3
4
x

• Fetch Flags:
Bit

-01

2
3
4
5
6
7

Flag Name
MSEXT
MSWTO
MSWTL
MSATTN
MSYSIN
MSYSOUT
MSMCR
MSSUM

When set on, switches indicated:

Bit

-0-

Flag Name
MSSSSIPL or
MSINLSW
MSWRPEN
MSNUPSW
MSWRLOG
MSRIDF
MSSRDR
MSNRP
MSYOUT or
MSNWP
MSJNF

When set on, flags indicate:

Definition
Named Fetch
Defer current command execution sequence
TCB Tree trace Fetch (Locate)
Auxilary FETCH given
Reply bit to Request attention
Pseudo-SYSOUT flag
MONI'IDR Status
Hold-release

Mapping Macro Instruction:

278

flags indicate:

Definition
External interrupt
WTO or WTOR

• Status Flags 3:

Flag Name
MSDATE
MSPNB
MSCMC
MSICR
MSSYS
MSSYT
MSBSP
MSCes

IEEBASEA

OS/360 MVT Job Management (Release 21)

Flag Name
MSNMF
MSCSD
MSTTT
MSFAX
MSREPLYB
MSPSDT
MSDISPST
MSQHR

Appendix A:

Tables and Work Areas

279

1

441

Dsname I

I
I

I
Current
Step
Number

44i

Dsname 2

I
Current
DD
Number

I

I
Number of
UCB Pointers
in PDQ Block
and Overflow

3

I

Termination

Work
Area

Queue address of current J FCB

Reserved

41
Dsname 3

r-

I

3
Current
Step
Number

35
Queue address of current SlOT

Number
Reserved

of entries

in block
40
,

Up to Ten UCB Pomters (4-bytes each)

I""

3
3

I
Queue Address of First Qverflow Block

Queue Address of
PDQ Block for These
Three Names

Reserved

Reserved
112
I

3
Queue Address of
Next PDQ Block

Up to Two Additional PDQ Block Entries.

Reserved

T

PDQ Directory Block

Reserved

PDQ Block

1
-

Up to 43 Additional UCB Pointers (4-bytes each)

3
Queue Address of Next Overflow Block

Reserved

PDQ Overflow Block

Figure 122.

280

Passed Data Set Queue Tables and PDQ Overflow Block

08/360 MVT Job Management (Release 21)

l..

1
T

PASSED DATA SET QUEUE
Description: The passed data set queue (PDQ), contains information
regarding previously processed data sets which have been passed from
executed steps of the job that may be referred to by subsequent steps of
the same job. Each PDQ is located in subpool zero of the input queue; it
contains a set of tables, consisting of three types of blocks: the PDQ
directory block, the PDQ block, and the PDQ overflow block (if required).
The PDQ directory block and the PDQ block are created by the JFCB
Housekeeping routine. The directory blocks are chained together with
pOinters, and each PDQ directory block also points to its respective PDQ
block.
If more than ten additional UCB pointers are needed for anyone
PDQ entry" one or more PDQ overflow blocks are added in a chain to each
such PDQ block entry by Allocation routines.
Initiator routines use the PDQ to obtain pointers to UCBs when
allocating devices to passed data sets.. Step Termination routines use
the PDQ to obtain UCB allocation pointers and data set disposition
information.
When control passes to the initiator, the JFCB Housekeeping routine
inspects the disposition field of the SlOT for the disposition "PASSn to
determine whether a new entry may be required in the PDQ.
If a PASS disposition is found and the dsname is not in the PDQ
directory because i t was not placed into the directory by a prior PASS,
an entry is made in the PDQ for this dsname. If the last PDQ directory
block and PDQ block already contain the maximum number of three entries,
auxiliary storage space is assigned for a new PDQ directory block and a
new PDQ block, thereby providing space for three more dsname entries.
When a passed data set is to be referred to by a subsequent step in
the same job, the dsname is specified in the DD statement. The JFCB
housekeeping routine checks for the dsname in the PDQ directory to see if
the data set was received (passed from a previous step).
If the dsname is found in the PDQ directory, the existing PDQ entry
for this dsname is updated to identify the reference as the latest
reference to this dsname and the data set is marked as being received in
the PDQ entry.
If no entry is found, the data set must have been
cataloged, so the JFCB routine searches the catalog for this dsname,
assuming that this is an initial reference for this job to a cataloged
data set.
Bits of the terminate work area byte of the PDQ block have the
following status significance:
Bit
-02

Significance
Initial status
Current status
Pass satisfied

3
4

SYSIN specified
SYSOUT specified

1

Mapping Macro Instruction:

Status
1
old
1
old
1 = passed
o = received
1 = SYSIN
1 = SYSOUT

IEFPDQBK

Appendix A:

Tables and Work Areas

281

Offset
Hex Dec

o

3

0

1

Queue Address of This Table

4

Table ID = OA

3

4

8

Queue Address of Next Prac. Override Table

Name of Step to be Overriden

1
Override Flags

10

3

16
Maximum Step Run Time

14

20

24

2

31

Queue Address of Step ACT Cont'd

18

Queue Address of Step ACT

Condition Code

1

8

Condition Operator
Step Name or Queue Address of Resolved SCT

20

32

84
Stepname Length or Zero

11

L..

Up to 7 More COND Entries

.

I

2

Zeros
78

120
Zero

A4

164

AC

172

Parm Field Size

f

Parm Fi e Id Data
Length of OR Step
Name of Step That Called Procedure
2

Region Parameter Save Area

Figure 123.

282

40

2

Procedure Override Table

05/360 MVT Job Management (Release 21)

Reserved

j

PROCEDURE OVERRIDE TABLE

Description: The procedure override table is constructed in the
localwork area by the EXEC Statement Processor routine of the
interpreter. When the routine is processing an EXEC PROC statement, it
constructs a procedure override table for each step to be overridden
(specified with a parameter of the form: keyword.STEP=). When a table
has been constructed, it is written into the queue data set; when the
EXEC PGM statement for the overridden step is processed, the appropriate
table is read back into the local work area. Fields from the table are
then moved into the SCT or used to resolve condition code referback
statements.

Mapping Macro Instruction:

IEFVORWA

Appendix A:

Tables and Work Areas

283

Offset
Dec
Hex
0

1

3

0

Table ID {02}

Queue Address of SCT
8

8

10

Length of Allocate Work
Area, or Number of SlOTs

16

32

3

1
Name of Step that Co II ed Procedure

Reserved

48

8
Step Name

48

64

Number of
SlOTs in
this Step

72

1

Number of
Setup
Messages

Relative Pointer to
Step Entry in ACT

Number of
JFCBs to
Allocate

1

3

88

60

96

70

104

80

2

2
Step Dispatching Priority

3

4
Queue Address of PGM =* .stepname.ddname SlOT

Internal Step 1
Status
Indicators Two

3
Program Name

Queue Address of the Step TlOT

112

120

Reserved

Reserved

First Step
Condition
Operator

Length {i n Bytes} of
DSNAME Table for this Step

1

2

2

8
Program Name {continued}

78

4

2
Hierarchy 1 Regi on Si ze

Step SYSIN Count for SMF
68

Hierarchy 1 Region Address

X'OI'

1
Count of
WTP 5MBs
for Step

2
Hierarchy 0 Region Size

3

1

3

Address of First Write-to-programmer 5MB
58

4
Queue Address of SCTX

Hierarchy 0 Region Address

80

Length of VO LT

1
Step Type
Indicators

1
X'OO'

50

1

2

2

8

56
Step Name {continued}

40

1
Reserved

Queue Address of VOLT

Name of Step that Called Procedure {continued}
38

1
Reserved

3

1

Queue Address of DSNAME Table for this Step
30

Reserved

Queue Address of Last 5MB for this Step

Reserved
3

40

1

3
Queue Address of Next SCT

Reserved
3

1
Reserved

1

3

24

Queue Address of First ACT Entry for this Step
28

3
Queue Address of First SlOT Entry

Reserved

Queue Address of First 5MB for Next Step
20

Maximum Step Running Time

1

3
Queue Address of Allocate Work Area

18

3

1

2

2
PARM Count or Step Status
Code at Termination

Internal Step
Status
Indi co tors One

First Step Condition Code
4;

3

36

Queue Address of First Condition SCT

:

128
Second through Seventh Step Condition Entries

AO

160

A8

3

168
Queue Address of the First D SB in
the Message Class

Figure 124.
284

2

6
Eighth Step Condition Entry or
Execute Step after ABEND Information
Number of
1
Message Class
D SBs for this
Step

Step Control Table (SCT)

05/360 MVT. Job Management (Release 21)

Reserved

3
Step Status

Queue Address of the Last Legitimate 5MB

STEP CONTROL TABLE (SCT)
Description: The step control table 

Offset

H~X

D~C ~--------------------------------------------------------~3r-1----------------~

4
4

68

104

-1) .

I

Queue Address of SCTX

PARM Field Values

Table ID

= X 'DC'
100

i

~----------------------------------------------------------~n~l

T
Figure 125.

T

Reserved

Step Control Table Extension (SCTX)

STEP CONTROL TABLE EXTENSION BLOCK (SCTX)
Description: The step control table extension block (SCTX) contains the
information specified in the EXEC statement PARM field. The SCTX is
constructed by the EXEC Statement Processor routine of the interpreter in
the local word area and written to the job's queue entry only when PARM
field values are specified.
Mapping Macro Instruction:

None.

Appendix A:

Tables and Work Areas

287

Offset
Hex Dec

o

0

4

1

3
Table ID = 3

Queue Address of SlOT

4

8
DD Nome

C

12

8
Internal DD Numbers of Channel Separation and Affinity Requests

14

20

8
Internal DD Numbers of Unit Separation and Affinity Requests

lC

28

4

4
Queue Address of JFC8

Queue Address of Next SlOT

24

36

4

4
Queue Address of SlOT System/Output Dependency Block

Queue Address of SlOT for VOLREF or SUBALLOC

2C

44

3:
TSO and
TCAM
Indicators

Reserved'

34

1

52

3C

1

1
Number of Units
for this Data Set

Internal
DD Number

Volume Count

1

1

2

Re lalive Pointer to
Volume Table Entry

4

1
Disposition
Switches

Indicator Bytes

8

60
Unit Type

44

1
Number of
Volumes in VOLT

Reserved

*

68

8
System Output Program Name

4C

76

4
System

54

a utput Form

84

Number

5C

100

1

Reserved

4

26

3

11

Queue Address of Lost SlOT to Pass Data Set

I-.

Reserved

7C

2

DD Statement
Duplicate Number

Queue Address of Next DSB

Reserved

92
Conditional
Disposition

64

1

1

3
TTR of DS8 if
Sysout Specified

System Output
Closs

124

Nome From DS Nome = ,
Dedicated Work Files

8

44

Nome From DS Nome = , Dedicated Work Files Cont'd

84

132
DCB Reference Nome

1

T
Reserved

,I

*If a unit address is specified on a DD statement, the first 6 bytes of
this field contain the device type and the last 2 bytes contain the ueB
address of the requested unit.
/'

Figure 126.
288

Step Input/Output Table (SlOT)

OS/360 MVT Job Management (Release 21)

STEP INPUT/OUTPUT TABLE (SlOT)
Description: The Step Input/Output Table (SlOT), makes DD statement information
available to the initiator for use as a source of information for the TIOT and
for providing DD information to Allocation and Disposition routines.
When a DD
statement is read, the interpreter creates a new SlOT and places the DD
information into it. The individual bits of the disposition byte and of
indicator bytes 57 through 60 and 93 in the SlOT are set to one to indicate the
following conditions:
BYTE 47:
Bit 0
Bit 1
Bit 1
Bit 3-6
Bit 7

TSO and TCAM Indicators
TSO DD DYNAM parameter
TSO terminal bit
TSO; 1 = last message class
SYSOUT SlOT
Not used
TCAM; 1 = QNAME on DD
statement

BYTE 55: Scheduler Data Set Disposition
Switches
Bit
Bit
Bit
Bit
Bit
Bit
Bit
Bit

0
1
2
3
4
5
6
7

Reserved
Retain volume
Private volume
Pass data set
Keep data set
Delete data set
Catalog data set
Uncatalog data set

Bit 5
Bit 6
Bit 7

BYTE 58: Indicator Byte Number 3
Bit 0
Bit 1
Bit 2
Bit
Bit
Bit
Bit
Bit

3
4
5
6
7

Bit 0
Bit 1

0
1
2
3
4

5
6

7

Dummy data set
SYSIN data set
Split (primary)
Split (secondary)
Suballocate
Parallel mount
Unit affinity
Unit separation

Volume reference to a DSNAME
SYSIN expected (procedures
only)
No associated volume serial
in volume table
Volume reference in step
SYSOUT was specified
NEW data set
MOD data set
OLD or SHR data set

BYTE 59: Indicator Byte Number 4

BYTE 56: Indicator Byte Number 1
Bit
Bit
Bit
Bit
Bit
Bit
Bit
Bit

Nonstandard label
Defer mounting
Received data set

Bit 2
Bit 3
Bit
Bit
Bit
Bit

4
5
6
7

Set b~_~rpreter to indicate
GDG single
Set by initiator to indicate
GDG all
No PDQ Processing
American'National Standard
tape label
step processed
Intra-step volume affinity
Data set is in PDQ
1
old or modified data set
o = new data set

BYTE 92: Conditional Disposition
BYTE 57: Indicator Byte Number 2
Bit
Bit
Bit
Bit
Bit

0
1
2
3
4

Channel affinity
Channel separation
Volume affinity
JOBLIB DD statement
Unlabeled (no labels)

Mapping Macro Instruction:

Bits 0-2
Bit 3
Bit 4
Bit 5
Bit 6
Bit 7

Reserved
DD is not private
Keep data set
Delete data set
Catalog data set
Uncatalog data set

IEFASIOT

Appendix A:

Tables and Work Areas

289

Offset
Dec
Hex
0
0
8

8

Options
Se Iected at I PL

II

Miscellaneous
Indicators

II

2

Offset of SMF
Entries in M/S TI OT

Job Wait Time Limit
10

4

1/2 SMF Buffer Size

2

Poi nter to Start of SMF Buffer

CPU Model

21

32
Device Address (cont'd)

28

31

Labe I Status 1

I

61

'X' or 'V'

1

Label Status 11

Device Status 1

58

56

4

Buffer ECB

4

4

Number of Record Segments Allowed in Data Set

4

72

8

80

'X' or IV'
Not Found

11

I

Open DS
1 SMF Fore11
Routine Switch ground Options*

1

Optimum Buffer Write Point

Reserved

88

4

DCB Pointer (Always Zero)

96
104
Switch A

70

Reserved

11

112
Time Stamp: Both Data Sets Fu II (cont.)

78

120

3

21

8

Count of Lost Records

Current Task TJID
* Not se lee ted at I PL.

Figure 127.

290

System Management Control Area (SMCA)

08/360 MVT Job Management (Release 21)

4

Time Stamp: Both Data Sets Ful I

2
Reserved

4

8

XCTL Name

68

Device

Address

64

Pointer to XCTL Name
60

I

4

10-Minute System Wait Time Fields
50

4

Pointer to Alternate DCB

'X' or 'V'

Number of Record Segments
Required by Logical Record
48

Device
Address

1
31

Wri te Request ECB
40

I

Pointer to Prime DCB
61

48
Device Address (cont'd)

38

Device Status 1

40
Volume Serial

30

4

24
Volume Serial

20

4

16
System ID

18

4

Pointer to M/S TIOT

4

SYSTEM MANAGEMENT CONTROL AREA (SMCA)
Description: The system management control area (SMCA) is constructed in
main storage obtained from subpool 255 by the SMF Initialization routine


Appendix A:

Tables and Work Areas

293

Offset
Hex Dec

o

System Message Black (SMB)

0

1

3
Table ID = 05

Queue Address of this 5MB

4

4

8

8

1

3
Queue Address of next 5MB

Reserved

4
Reserved

C

12
Logout Bits

11

Ptr. to next avo i I. Byte

'"'

11

-

Messages and
Condensed Messages
Zero

Message
Message Length
Message Text

Compressed Message
Code (X 'FE ')

Total Length

Length of First Field
First Field

Number of Blanks

11

Length of Second Field

I

Additional Fields

I

Length of Last Field
Last Field

T

Figure 128.

294

I

Second Field

8ystem Message Block (8MB)

08/360 MVT Job Management (Release 21)

Number of Blanks

IT

SYSTEM MESSAGE BLOCK (SMB)
Description: The system message block (SMB) is used to store messages
from the operating system to the programmer until they can be retrieved
by a system output writer. The Interpreter Control routine creates one
or more 5MBs for each job step; the I/O Device Allocation and Termination
routines add messages (and if necessary construct additional 5MBs). When
an 5MB has been filled, it is written to the queue data set. When the
job is terminated, the job's message class queue entry, which contains
the 5MBs, is enqueued.
Most of the fields in the 5MB are self explanatory; those fields that
require further explanation are described below:
• Zero: The last byte of each 5MB is set to zero unless the last
message completely fills the 5MB.
• Message Length: The first byte of each message (except for
compressed messages) contains the length of the message.
• Code: If the message is a condensed message (the blanks between the
fields have been removed), the first byte of the message contains the
hexadecimal characters FE.
• Total Length: This field contains the length of the message,
including the code and length fields.
• Number of Blanks: This field indicates the number of blanks that
have been removed from between the field preceding it and the field
following it. This field is not found following the last message
field.
Mapping Macro Instruction:

IEFAJCTB

Appendix A;

Tables and Work Areas

295

2

1
NN of 1st Logical Track Assigned to This Entry

Class Name

1
Na. of Recards Assigned in Last Track

2

1
Queue Entry Identification

No. of Logical Trks. Assigned

1
Reserved

3
TTR of Next DSB

1
Zero

4
Pointer to Next SCD Entry in Main Storage

System Output Class Directory (SCD) Entry: Main Storage Format
1

2

1
No. of Records Assigned in Last Track

2

Var

NN of 1st Logical Track Assigned to This Entry

Class Nome
1
No. of Logical Trks. Assigned

Queue Entry Identification
r'"

..
23 Additional

Entries

4
Zeros

4
TTR of Next 176-Byte SCD (if any)

System Output Class Directory (SCD): 176-Byte Record Format

Figure 129.

System Output Class Directory (S9D)

SYSTEM OUTPUT CLASS DIRECTORY (SCD)
Description: A system output class directory (SCD) is created for each
job by the interpreter. As each DD statement specifying a new system
output class is encountered, the interpreter creates an entry (using
fields from the queue manager parameter area). When the interpreter has
completed its processing of the job. it packs the entries into one (or at
most" two) 176-byte records, and places the records in the job's input
queue entry.
One 176-byte record can contain up to 24 SCD entries; since as many as
36 entries may be required for a job, the additional entries are placed
in an additional 176-byte record.
As the steps of the job terminate. the SCD entries are used by the
Termination routine to build queue manager parameter areas for writing
DSBs to the output queue entries and for eDqueuing the entries.

296

OS/360 MVT Job Management (Release 21)

L

Job Name

I
IT

Step Name

Name of Step Call ing Procedure, or Zeros

1

1
Status Bi ts

Entry Length

J
2
Allocation Data

8

l-

DD Name

~--------------------------------------------------~3~--------------~
Add ress .In Q ueue

0

fJFCB or SlOT

Status Bits

1
Status Bits

l

3

DD
Entry

~
Device

Pointer to UCB or Link Value

Entry

t
Zeros - End of TIOT

Figure 130.

Task Input/Output Table (TIOT)

TASK INPUT/OUTPUT TABLE (TIOT)
Description: The Task Input/output table (TIOT) provides Data Management
routines with pointers to the JFCBs and devices allocated to the data
sets in a job step or system task. It is constructed in the I/O Device
Allocation routine in main storage obtained from subpool zero. When the
step is attached, the initiator obtains main storage from subpool 255,
and moves the TIOT into that area, where it remains during execution of
the step. When the step terminates, the TIOT is moved into main storage
obtained from subpool zero during termination processing, then deleted.
For further information on the task input/output table, see the
publication IBM system/360 Operating System: System Control Blocks,
GC28-6628.

Appendix A:

Tables and Work Areas

297

Offset
Hex
0

Dec
0
Queue Address of TCT

4

31

TCT Switches

4
4

Initiator TCB Address
8

8

4

TCT Core Table Start Address
C

1

12

4
TCT I/O Table Start Address

10

16
3
Subpool

14

11

Size of TCT

20
4

User Time Limit Routine Address
18

24

lC

28

4

Pointer to User Parameter List

4

Job Management Record Address
20

32
4

User Output Li mit Routi ne Address
24

36
4

Step Task Time Field Overflow
28

40

4

Step Accumulative Task Time
2C

44

4
Job/Step Maximum Wait Time

30

48

34

52

4

Number of Input Terminal Lines

4
Number of Output Terminal Lines

38

56
High Address Allocated from Bottom of Hierarchy

3C

a Region

60

4

Allocation Start Time
40

64

4

Problem Program Start Time
44

68
Low Address Allocated from Top of Hierarchy

48

72

4C
50

76

Current Amount of Borrowed
Hierarchy 0 Storage (2K Blocks)

a Region

2

Hierarchy a Region Request
(in 2K Blocks)

2

Maximum Amount of Borrowed
Hierarchy a Storage (2K Blocks)

Number of 2K Blocks Allocated

4

2
2

80
High Address Allocated from Bottom of Hierarchy 1 Region

54

4

84

4
4

Low Address Allocated from Top of Hierarchy 1 Region
58

88
2

Hierarchy 1 Region Request
(in 2K Blocks)

2

2

Maximum Amount of Borrowed
Hierarchy 1 Storage (2K Blocks)

2

Number of 2K Blocks Allocated
5C

I

92
Current Amount of Borrowed
Hierarchy 1 Storage (2K Blocks)

Figure 131.

298

Timing Control Table (TCT)

OS/360 MVT Job Management (Release 21)

TIMING CONTROL TABLE (TCT)

The timing control table (TCT) is constructed in main storage obtained
from subpool 253 by the User Exit Initialization routine (module
IEFSMFIE) of the initiator. The table is passed to the supervisor when
the job step is established; it is an information source for the SMF
Termination record, and the main storage it occupies is released when the
step is terminated.
For further information on the TCT, see the System Control Blocks
publication.

Appendix A:

Tables and Work Areas

299

IT

Subpool

Header

Size of Table of TCTIOT DD Entries
(Shaded Portions Only)

t

3

Size of TCTIOT

11
2

Reserved

2

DD Entry Displacement in TlOT

DD Entry Displacement in TCTlOT

2
2

} First Entry

-

lookup
rable

r--_____D_D_E_n_try_D_iS_p_la_c_em_e_n_t_in_T_I_0_T_ _ _ _ _2..L_ _ _ _ _D_D_En_try_D_i_Sp_la_c_e_m_en_t_i_n_T_C_T_10_T_ _ _ _ _2...j
Zeros - End of Table - Zeros

} nth Entry

4

First Entry
(1 Volume)

Second Entry
(2 Volumes)

TIOT
DD Entries
Output limit
No. of Extents Released

No. of Tracks Released

4

nth Entry
(1 Volume)

Output limit
No. of Extents Released

Figure 132.

No. of Tracks Released

3

TCT I/O Table (TCTIOT)

TIMING CONTROL TASK INPUT/OUTPUT TABLE (TCTIOT)
The timing control task input/output table (TCTIOT) is constructed in
main storage obtained from subpool 253 by the TCTIOT construction routine
(module IEFSMFAT) before the job step task is. established. The table is
passed to the supervisor. and is used as an information source for the
SMF Termination record. The main storage occupied by the TCTIOT is
released when the step is terminated.
For further information on the TCTIOT. see the System Control Blocks
publication.

300

OS/360 MVT Job Management (Release 21)

Offset
Hex
Dec
0

0
Auxi liory Storage Address of This Block

4

Table ID = 06

4

4
Auxi liory Storage Address of Next Block

8

6

8
First Volume Serial

C

12

10

16

14

20

6

I
Second Volume Serial

1
Figure 133.

28th Volume Serial

Volume Table (VOLT)

VOLUME TABLE
Description: The volume table (VOLT) consists of a series of chained
blocks and contains the list of volume serial numbers to be used in a
given step. Use of the list reduces the number of times auxiliary
storage must be referenced during allocation. The table is built by the
DD routine for each step, and is modified by the JFCB Housekeeping
routine. The maximum extent of each block of the table is 176 bytes, and
the maximum number of volumes listed per block is 28.

Appendix A:

Tables and Work Areas

301

Offset
Hex
Dec

a

a

4

4

8

8

C

12

TTR of 5MB used for WTP
(WTPSMB)

11

31

TTR of Fi rst WTP 5MB
(WTPCRSMB)

Figure 134.

11

31

Number of WTP 5MBs Used in
Step (WTPCRCNT)

TTR of Reserved WTP 5MBs
(WTPRSMBS)

Write-to-Prograrnmer Control Block (WTPCB)

WRITE-TO-PROGRAMMER CONTROL BLOCK (WTPCB)
Description: The write-to-prograrnmer control block (WTPCB) contains
information that is necessary to place WTP messages into the appropriate
message class 5MB. When a job is ready to be processed. the Job
Selection routine (module IEFSD161) creates the WTPCB from subpool 253.
initializes it. and chains the WTPCB from the job step control block
(JSCB). Following allocation for each job step. the Allocation Exit
routine (module IEFSD41Q) initializes the WTPCB with the WTP 5MB address.
the SYSOUT indicators. and the address of the QMPA for the message class
data set. The Step Delete routine (module IEFSD164) reinitializes the
WTPCB at step termination for use by the next step; at job termination.
the routine reinitializes the WTPCB to zeroes for use by the next job.
The fields in the WTPCB are described below:
• WTPSMB: This field contains the TTR of the SYS1.SYSJOBQE record used
by the WTP 5MB.
• WTPFLGSA: The bit setting in this field indicates the type of WTP
processing being performed. The bits. when set to one. have the
following meaning:

302

Bit

o

Meaning
Error or problem with job queue I/O.

1

Limit message has been processed.

2

Step already contains SYSOUT; therefore, WTPSMB field
contains the TTR of the 5MB assigned for termination.

3

Error caused by system task; therefore. return from
WTP Error Processing routine 
• Tables/Work Areas:
• Control sections:

• Entry:

CVT, TCB, TIOT
IEEVSIPL

IEEVRC
• Attributes:

• Exit: Branch to IEEVICTL.
IEFCNVRT or IEFRDWRT

Reusable

BALR to
IEEVSMSG:

• Tables/Work Areas: CVT, CSCB, M/S
resident data area, QMPA, NEL, JCT,
TIOT, JSWA, JSEL, JSOL, JSXL
• Control sections: IEEVRC, IEEVICTL,
IEFCNVRT, IEFRDWRT, IEEVSMSG

Message Writer Routine

The purpose of this routine is to write
messages to the operator as required by the
master scheduling task and the System Task
Control routine.
• Entry:
IEEVSMSG,
from
I EEVMNT 2 , IEEVICTL, IEFVH1 or IEFIRC

IEEVRCTL: system Task Control
Routine - Interpreter Control Routine
The purpose of this routine is to provide
an i~terface between the System Task
Control routine and the Interpreter
subroutine.
• Entry:
• Exit:

IEEVRCTL
XCTL to IEFVH1

• Tables/Work Areas: CVT, CSCB, M/S
resident data area, QMPA, NEL, JCT,
TIOT, JSWA, JSEL, JSOL, JSXL

• Exit:

• Control sections:

The purpose of this routine is to check the
syntax of a START command., and to build a
start descriptor table containing the
parameters of the command.

IEEVRFRX:

To IEEVJCL or IEE0503D

Refreshable

See the MVT Supervisor PLM

IEEVRJCL: System Task Control - Internal
JCL Reader Routine
The purpose of this routine is to read the
internal JCL built by the System Task
Control routine for the START and MOUNT
commands.
• Entry:

IEEVSTAR from IEEPRWI2

IEEVRCTL
• Exit:

• Attribute:

IEEVSMSG

IEEVSTAR: system Task Control
Routine - START Command syntax Check
Routine

• Entry:
• Control Sections:

Return to caller

IEEVRJCL

• Exit: Branch on register 14 to the
interpreter
• Tables/Work Areas:
• Control Sections:

DCB
IEEVRJCL

• Tables/Work Areas: SOT, M/S Resident
Data Area, CVT, M/S TIOT, UCB XSA,
CSCB, CIB, JSCB
• Attributes:

Reentrant

• Control sections:
IEEVWAIT:
Routine

IEEVSTAR

Master Scheduler Wait and Attach

The purpose of this routine is to wait for
a task-creating command or a system log
operation, to scan the CSCB chain for
elements with the assignment pending bit
on, and to attach the appropriate command
execution tasks .•
• Entry:

IEEVWAIT

Appendix B:

Module Descriptions

311

• Tables/Work Areas:
area" UCM" CSCB
• Control Sections:
IEEXEDNA:

M/S resident data
lEEVWAIT

DISPLAY CONSOLES Processor

IEE0303D:
Routine

This module performs CSCB and CIB chain
manipulation.. When SVC 34 is entered for
command processing, this routine exits to
the Command Translator routine (module
IEE5403D).

The purpose of this routine is to process
the DISPLAY command with the CONSOLES
operand" cause a display of the system
console configuration on the requesting
console.
• Entry:
• Exit:

• Entry:

• Table/Work Areas: CVT, M/S resident
data area, CSCB, XSA, CIB, LCE (TSO).
TSCVT (TSO>

IEEPDISC

• Control sections:

Reentrant

• Control Sections:

IEEXEDNA

IEE0003D: SVC 34 - STAE Environment
Creation Routine

IEE0403D:

• Entry:

SVC 34 - Router Routine

IEE0403D

• Exit: Depending on command verb, via
XCTL to another SVC 34 module
• Tables/WorkAreas: M/S resident data
area, XSA, CSCB, UCM, UCME

IEE0003D
• Control Sections:

• Exits: XCTL to IEE0303D (after STAE
environment is created), IEE5103D (when
SVC 34 or Master Scheduler ABEND
occurs)
• Tables/Work Areas:
control block

XSA, CIB, STAE

IEE0503D:

• Entry:

• Control Section:

• Exit:

SVC34 - Message Assembly Routine

IEE0003D

IEE0503D
Branch on register 14

• Tables/Work Areas:

XSA

SVC 110 - M/S Router

This routine passes control to the display
processors., for DISPLAY and MONITOR
commands that involve status displays, and
the DUMP command processor, for main
storage image dump.
• Entry: IEE00110 (this routine is the
first load of SVC 110; SVC 110 is
issued by IEEPALTR and IEEVDSPl)

• Attributes: Reentrant, read-only,
self-relocating
• Control Section:

I

IEE0603D:
Part I

• Attributes:

• Exit:

• Tables/Work Areas:
Data Area., XSA

CSCB, M/S Resident

OS/360 MVT Job Management (Release 21)

SVC 34 - SET Command Routine

The purpose of this module is to process
SET command parameters CLOCK and DATE.
• Entry:

Reentrant, transient

IEE0503D

I the

• Exit: IEE10110, IEE20110, IEE30110,
IEE40110, IEE50110, IEE60110

312

IEE0403D

The purpose of this module is to assemble
and edit messages for the Command
Scheduling routine, and to write the
messages to the console or TSO terminal
operator.

• Attributes: Reenterable., read-only,
transient, self-relocatable

IEE00110:

IEE0303D

The purpose of this routine is to identify
the command verb, and to pass control to
the appropriate routine.

The purpose of this routine is to create a
STAE environment for the command scheduler.
When a failure occurs during the command
scheduling task, this routine passes
control to the STAE Exi t routine .•
• Entry:

IEE0303D

• Exit: To IEE5403D for command
processing or return to caller

IEEXEDNA, from IEEPDISC

• Attributes:

SVC 34 - Chain Manipulator

IEE0603D
To IEE8603D or IEE0503D

• Tables/Work Areas:
resident data area

XSA, CVT, M/S

IEEIA03D:
Routine

• Attributes: Reentrant, read-only,
self-relocating, transient
• Control sections:

IEE0603D

The purpose of this routine is to process
valid operator replies to WTOR macro
I instructions in an MCS environment.

I

IEE0703D: SVC 34 STOP and MODIFY
scheduling Routine
This module schedules the execution of the
MODIFY and nonperiodic STOP commands by
finding and updating the appropriate CSCB,
and issuing a POST macro instruction to the
master scheduling t a s k . , _
• Entry:

• Entry:
• Exit:

• Tables/Work Areas:
XSA

IEElA03D
CVT, RQE, UCM, WQE,

SVC 34 - Reply Message Routine

To IEEOS03D or return to caller

• Control Sections:

IEE0703D

This routine assembles, edits, and
broadcasts the accepted reply to a WTOR
macro instruction f or the MCS Reply
Processor routine (module IEElA03D) of the
Command Scheduling routine, and writes
error messages to the operator whose
command is in error in either an MCS or a
non-MCS environment.

SVC34 - CSCB Creation Routine

The purpose of this routine is to schedule
the execution of task-creating commands by
adding a CSCB to the CSCB chain and issuing
a POST macro instruction to the master
scheduling task.
• Entry:

To IEEIB03D

IEE0703D

• Tables/Work Areas: M/S Resident Data
Area, XSA, CVT, CSCB, CIB

IEE0803D:

IEEIA03D

• Control sections:

IEEIB03D:
• Exit:

SVC 34 - MCS Reply Processor

• Exit: Branch on register 14, XCTL to
IEE3803D, IEEO 50 3D., IEE2103D, IEE3803D,
IEE7903D
• Tables/Work Areas: XSA, M/S resident
data area., CVT and CSCB
Reentrant, partially

• Control Sections:

• Exit:

Return to the caller of SVC 34

• Control Sections:
• Tables/Work Areas:
XSA

IEE0803D

• Attributes:
disabled

• Entry: IEEIB03D, from IEElA03D for
MCS, or from IEE1203D if not MCS

IEEIOII0:
(Load 1)

IEEIB03D
CVT, RQE, UCM, WQE,

SVC 110 - DISPLAY C,K Routine

This routine begins processing of the
DISPLAY C,K command by building the title
and label lines of the display and writing
them to the operator's console by means of
the WTO macro instruction.

IEE0803D
• Entry: IEEI0II0 from IEEOOII0 (SVC 110
issued by IEEPALTR)

IEE0903D:

SET Command Handler
• Exit:

The purpose of this module is to process
the date and time operands of the SET
command.
• Entry:
• Exit:

SVC 3
CVT, TSCVT (TSO)

• Attributes: Reentrant, supervisor
state" disabled for system interrupts,
transient
• Control Sections:

• Attributes:
transient

Reentrant, privileged,

• Tables/Work Areas:

IEAQOTOO

• Tables/Work Areas:

IEEIIII0

IEAQOTOO

(CSCB, XSA)

IEEII03D: SVC 34 - VARY and UNLOAD syntax
Scan Routine
The purpose of this routine is to examine
the command and its operand for syntax
errors.
• Entry:

IEEII03D

Appendix B:

Module Descriptions

313

e

Exit: IEEMPCKR, IEE2303D., IEE3103D,
IEEOS03D

• Tables/Work Areas: XSA" CVT, master
scheduler resident data area, UCM
• Attributes: Reentrant,
self-relocating" read-only
• Control sections:

IEE1103D

IEE1403D: SVC 34 - HALT and SWITCH
Commands Processor Routine
This routine schedules the execution of the
HALT and SWITCH commands. For the HALT
command, this routine issues SVC 76 to pass
control to the statistics Update routine
(see the I/O supervisor PLM). For the
SWITCH command, this routine issues SVC 83
to pass control to the SMF SVC routine (see
part 6 of this publication).
• Entry:

IEE11110:
(Load 2)

IEE1403D

SVC 110 - DISPLAY C,K Routine
• Exit:

This routine continues processing of the
DISPLAY C,K command by building the middle
portion of the display and writing the
lines to the operator's console by means of
the WTO macro instruction.

SVC 3

• Tables/Work Areas: XSA, M/S resident
data area, CVT, CSCB
• Attributes:

Reenterable

• Control Sections:
• Entry:

IEE11110 from IEE10110

• Exits:

IEE12110

• Attributes:
transient

Reentrant, privileged,

• Tables/Work Areas:
IEE1203D:
Routine

IEE1603D:

See the MVT supervisor PLM

IEE20110:
(Load 1)

SVC 110 - DISPLAY U Routine

CSCB, XSA

SVC 34 -- Reply Processor

This routine processes valid operator
replies to WTOR macro instructions in a
non-MCS environment.
• Entry:

IEE1203D

• Exit: To IEE1B03D to issue error
messages or to return to the caller of
SVC 34

This routine begins processing of the
DISPLAY U command by checking the command
syntax and locating the UCB for the first
device to be included in the status
display.
• Entry: IEE20110 from IEE00110 (SVC 110
issued by IEEPALTR)
• Exit:

• Control sections:
• Tables/Work Areas:
XSA

CVT, RQE, UCM, WQE,

• Attributes:
transient

Reentrant, privileged,

• Tables/Work Areas: CSCB, Workarea
obtained by GETMAIN, UCB
IEE2103D:
Routine

SVC 34 - Message Assembly

SVC 110 - DISPLAY C,K Routine

This routine completes building of the
DISPLAY C,K status display.
• Entry:

IEE12110

• Exits:

Return to caller (IEE00110)

The purpose of this routine is to assemble
and edit messages for the Command
Scheduling routine, and to write the
messages to the console or TSO terminal
operator.
• Entry:
• Exit:

• Attributes:
transient

IEE2103D
Branch on register 14

Reentrant, privileged,

• Tables/Work Areas:
314

IEE21110, IEE22110, IEE23110

IEE1203D

• Attributes: Reenterable, supervisor
state, Disabled
IEE12110:
(Load 3)

IEE1403D

• Tables/Work Areas:
CSCB, XSA

OS/360 MVT Job Management (Release 21)

• Control Sections:

XSA
IEE2103D

IEE21110:
(Load 2)

SVC 110 - DISPLAY U Routine

This routine continues processing of the
DISPLAY U command by building display lines
using information obtained from the UCB.
• Entry:
• Exit:

IEE21110 and IEE22110

• Attributes:
transient

IEE23110, and IEE22110
Reentrant, privileged,

• Tables/Work Areas: Work Area obtained
by GETMAIN, UCB, Device Name Table
SVC 110 - DISPLAY U Routine

• Tables/Work Areas:
Area from GETMAIN
IEE2903D:
Routine

SVC 34 - Display Requests

• Exit:

IEE2903D, from IEE3503D
Return to caller

• Tables/Work Areas:
XSA
• Attributes:

• Entry: IEE22110 from IEE20110,
IEE23110, or IEE21110
Exit: IEE23110 or IEE22110, or return
to IEE00110 via XCTL

• Attributes:
type 4 SVC

a

Exit:

IEE30110:
(Load 1)

IEE2903D

SVC 110 - DISPLAY M Routine

CSCB, UCB, Work
It

Entry: IEE30110 from IEE00110 (SVC 110
issued by IEEPALTR)

• Exits:

IEE2303D

o

IEE31110, IEE32110

Attributes:

Reentrant, transient

• Tables/Work Areas:
(CSCB, XSAi Work
Area from GETMAINi IEAQFX, MP65, low
main storage

IEE3103D, IEE4203D, or IEE4403D
CVT, SMCA., XSA

Attributes: Reentrant, read-only,
self-relocating

• Control Sections:
IEE23110:
(Load 4)

Control sections:

SVC 34 - SMF VARY Record Handler

• Tables/Work Areas:
a

Reentrant, Refreshable

This routine processes DISPLAY M commands
that request CPU and channel status.

The purpose of this routine is to build and
issue an SMF record for each device placed
in online status.
• Entry:

a

Message work area,

Reentrant, privileged,

• Tables/Work Areas:
Area from GETMAIN
IEE2303D:
Routine

UCB, CSCB, Work

The purpose of this routine is to display
(to the requesting console or TSO terminal
operator) the ID of all outstanding WTORs,
the unit name of each device for
outstanding MOUNT messages, and an
indication as to whether any AVR mount
messages are pendi ng.
• Entry:

This routine issues error and information
pertaining to the DISPLAY U commands. It
also builds line entries for data cell
entries in the display and performs final
cleanup (freeing the workarea) before
returning to IEE00110.

a

Reentrant, privileged,

IEE21110

• Attributes:
transient

IEE22110:
(Load 3)

• Exits:

IEE2303D

SVC 110 - DISPLAY U Routine

This routine continues processing of the
DISPLAY U command by locating UCBs that
satisfy the command and by writing lines of
the display .
The Region Size Determination routine
(module IEFSD101> scans the list during its
processing.

Queue Management RJE Read/Write

IEFSDTTE:
Routine

RD,WRT
IEFSDTTE

Return to caller

• Tables/Work Areas:
• Attributes:

CVT

Reentrant

• Control sections:
328

System Output Writer Printer

The purpose of this routine is to analyze
and identify parameters requiring change as
a result of change to the DCS/FCB
environment when the output device is a
3211 printer.
• Entry:

• Exit:

IEFRSTRT

IEFRCLN2

The purpose of this routine is to read or
write a QCR or a queue entry.
• Entry:

Reentrant

IEFRCLN1

IEFRCLN2 Restart Reader Linkage Routine

IEFRDWRT:
Routine

IEFRPREP

Restart Reader Linkage Routine

• Exit: To IEFVH1, IEFVRRC (Entry point
IEFVRRCA)

• Entry:

LCT, JCT, SCT, PDQ"

IEFJOB

The purpose of this routine is to provide
linkage between the Restart Reader and the
Interpreter Initialization routine.
• Entry:

IEFRPREP

• Attributes: Reentrant; Character
dependence type C

IEFRSTRT:
IEFRCLN1:

Restart Preparation Routine

Reentrant

• Control sections:

• Attributes:

IEFRPREP:

IEFRDWRT

OS/360 MVT Job Management (Release 21)

• Exit: Error.-IEFSD089 Normal-to calling
routine
• Tables/Work Areas:
• Control Sections:

WKSOR, PARLIST
IEFSDTTE

IEFSDXXX System Output Writer - spanned
Data sets Handler

IEFSD055: MVT Queue Management - Queue
Initialization Routine

This routine handles variable-length data
sets by dynamically moving the input
segments into the output segments.

The purpose of this routine is to construct
a resident DEB/DCB, to pass control to the
queue formatting routine or the first phase
of system restart, to initialize the queue
manager resident data area, and (if
required) to pass control to the second
phase of the system restart routine. If
the jobqueue of the UCB indicates that the
queue is on a RPS device, routine IEFSD055
provides information that is used by other
routines prior to reading from or writing
to the jobqueue.

• Entry:
• Exit:

IEFSDXXX
Return to caller

• Tables/Work Areas:
spanning, DCB
• Attributes:

Control area for

Reentrant

• Control Section:

IEFSDXXX

IEFSDXYZ: system output Writer - Command
Chaining Access Method

• Entry:

IEFSD055, from IEFQINTZ

• Exit: To IEFORMAT, IEFSD300, or
IEFSD305
• Attributes:

This routine simulates .the processing
performed by the QSAM Put Locate and
Truncate routines by using command chaining
to write one string of up to nine buffers
with a single IOB and a single EXCP macro
instruction.
• Entry:
• Exit:

IEFSDXYZ
Return to caller

• Tables/Work Areas:
• Attributes:

Reentrant

• Control Section:
IEFSDOXX:
Module

ECB, IOB, I/O table

IEFSDXYZ

• Exit:

• Control Sections:

IEFSD055

IEFSD070: system output Writer - Data set
Writer Attach Routine
The purpose of this routine is to attach
the data set writer task, thus passing
control to the standard data set writer or
to the user-supplied data set writer
routine.
• Entry:

IEFSD070

• Exit: To IEFSD087 or user-supplied
routine via ATTACH, or to IEFSD171 via
XCTL

MVT Initiator - Dummy Job step
• Attributes:

The purpose of this routine is to
abnormally terminate the job with condition
code 213, when the joblib or fetch data set
could not be opened.
• Entry:

Reusable

IEFSDOXX
Return via ABEND

• Attributes:

Problem Program Mode

• Control Sections:

IEFSDOXX

Reentrant

• Control Sections:
IEFSD078:
Routine

IEFSD070

System output Writer - Linkor

The purpose of this routine is to determine
whether the record obtained from the output
queue entry is a DSB or 5MB, and to pass
control, accordingly, to the DSB or 5MB
processor.
• Entry:

IEFSD078

IEFSD017: MVT Termination - system Output
Interface Routine

• Exit: To IEFSD085, IEFSD086, or
IEFSD079

The purpose of this routine is to provide
an interface between the termination entry
routine and system output processing.

• Attributes:

• Entry:
• Exit:

Reentrant

• Control Sections:

IEFSD078

IEFSD079: System output Writer - Link to
Queue Manager Delete Routine

IEFSD017
To IEFSD42Q

• Control Sections:

IEFSD017

The purpose of this routine is to delete
the current output queue entry
Appendix B:

Module Descriptions

329

• Entry:
• Exit:

IEFSD083: system Output Writer - Command
Processing Routine

IEFSD079
To IEFQDELQ and IEFSD082

• Tables/Work Areas:
• Attributes:

QMPA

The purpose of this routine is to process
MODIFY and STOP commands that apply to the
writer,.

Reentrant
• Entry:

• Control Sections:

• Exit:
IEFSD080: System Output
Writer - Initialization Routine
The purpose of
initialize the
obtaining main
and the output
• Entry:
• Exit:

IEFSD083

IEFSD079

this routine is to
system output writer by
storage for a parameter list
DCB.
.

• Tables/Work Areas:
ECB
• Attributes:

CSCB"

DCB, QMPA,

Reentrant

• Control sections:
IEFSD084:
Routine

IEFSD080

To IEFSD081 or IEEVTCTL.

IEFSD083, IEFSD83M

System Output Writer - Wait

To IEFSD081

• Tables/Work Areas:
JFCB
• Attributes:

DCB, CSCB, TIOT,

The purpose of this routine is to wait for
an entry to be enqueued in an output queue
corresponding to a class available to the
writer.

Reentrant
• Entry:

• Control sections:

• Exit:
IEFSD081: System output Writer - Class
Name setup Routine
The purpose of this routine is to obtain
main storage for, and initialize" a list of
ECB pointers, ECBs, and queue management
communication elements, depending on the
system output classes specified for the
writer. The routine also opens the output
DCB.
• Entry:

IEFSD081

• Exit:

To IEFSD082

• Tables/Work Areas:
• Attributes:

CSCB, ECB

IEFSD081

To IEFSD082

• Attributes:

Reentrant

• Control sections:

IEFSD084

IEFSD085: System output Writer - DSB
Handler Routine
The purpose of this routine is to
initialize for data set processing, and to
inform the operator of the pause option in
effect.
• Entry:

Reentrant

• Control sections:

IEFSD084

IEFSD080

• Exit:

IEFSD085. IEF085SD, or IEF850SD
To IEFSD070

• Attributes:

Reentrant

• Control sections:

IEFSD085, IEFSD85M

IEFSD082: System Output Writer - Main
Logic Routine

IEFSD086:
Handler

The purpose of this routine is to obtain
main storage for QMPAs and internal work
areas, to dequeue output queue entries, to
check for operator commands, and to pass
control to the appropriate routine.

The purpose of this routine is to
initialize for message processing, and to
extract each message from the current 5MB.

• Entry:
• Exit:

IEFSD086. IEF086SD

• Exit: To IEFSD088. IEFSD089, IEFQMNQQ,
IEFQMRAW, IEFSD085, IEFSD078

IEFSD082
IEFSD083, IEFSD084, IEFSD078

• Tables/Work Areas:
• Attributes:

CSCB, ECB

Reentrant

• Control Sections:
330

• Entry:

system output Writer - 5MB

IEFSD082

OS/360 MVT Job Management (Release 21)

• Tables/Work Areas:
TIOT. CSCB. TCB
• Attributes:

5MB, UCB, QMPA,

Reentrant

• Control sections:

IEFSD086. IEFSD86M

IEFSD087: system Output Writer - standard
Writer Routine

IEFSD095: system Output Writer - Print
Line Routine

The purpose of this routine is to get
records from a data set.

The purpose of this routine is to construct
the block letters used to separate jobs
processed by a system output writer when
the output data set is to be printed.

• Entry:
• Exit:

IEFSD087
To IEFSD088, IEFSD089, IEFSD078

• Tables/Work Areas:
• Attributes:

DCB

Reentrant

• Control Sections:

IEFSD087, IEFSD87M

• Entry:

IEFSD095

• Exit:

To IEFSD094

• Attributes:

• Control'Sections:
IEFSD096:

IEFSD088: system Output
Writer - Transition Routine
The purpose of this routine is to handle
the transition between messages and data
sets, and between data sets.
• Entry:
• Exit:

• Tables/Work Areas:
o

Attributes:

IEFSD089:
Routine

IEFSD088

System output Writer - PUT

The purpose of this routine is to format
records as required and issue the PUT macro
instructions to write them on the output
unit.
o

Entry:

• Exit:

IEFSD089

• Attributes:

Nonexecutable
IEFSD096

IEFSD097: MVT I/O Device Allocation - Wait
for Space Decision Routine
The purpose of this routine is to make the
decision whether to wait for direct access
space, and to provide an interface with the
I/O Device Allocation Space Request routine
so that re-try and additional recovery
passes may be made.
• Entry:

IEFSD097

o

Exit:

Branch on register 14

G

Tables/Work Areas:

DCB

o

LCT, TIOT, UCB

Read-only, reenterable

Control sections:

IEFSD097

Reentrant

• Control Sections:

IEFSD089, IEFSD89M

IEFSD094: system Output Writer - Job
separator Routine
The purpose of this routine is to print or
punch a job name and system output class
designation on the writer's output device.
• Entry:

IEFSD096

• Attributes:

To IEFSD088

• Tables/Work Areas:

• Entry:

DCB

Reentrant

• Control Sections:

The purpose of this module is to contain
message headers and texts for messages to
the operator.

• Control sections:

To IEFSD089

IEFSD095

Message Module

• Attributes:

IEFSD088

Reentrant

IEFSD101: MVT Initiator - Replace Region
Interface Routine
The purpose of this routine is to determine
the correct region size for a starting
task.
• Entry:
• Exit:

IEFSD101
To IEFSD102, IEFUJI. IEFUSI

• Tables/Work Areas: CVT, LCT, SCT, M/S
resident data area, JMR, JCT

IEFSD094

• Exit: To IEFSD088, IEFSD089, IEFSD095,
IEFSD078

• Attributes:

• Control Sections:

• Control Sections:

IEFSD094

Appendix B:

Reentrant
IEFSD101

Module Descriptions

331

IEFSD102:
Routine

MVT Initiator - Replace Reqion

• Entry:
• Exit:

The purpose of this routine is to free the
current region, enqueue the data sets used
in the current task , and obtain a new
region for the current task.

IEFSD105
To IEFSD161

• Tables/Work Areas:
BASEA
• Attributes:

• Entry:

Reentrant

IEFSD102
• Control Sections:

• Exit:

• Attributes:

Reentrant

• Control Sections:

IEFSD102

MVT Initiator - Pre-Attach

IEFSD110:
Stacking)

MVT Queue Management (Track
- Stack Initialization Routine

The purpose of this routine is to obtain
and initialize an area for use in keeping a
stack of tracks from the work queue data
set in main storage.
• Entry:
• Exit:

The purpose of this routine is to place the
ICT for system tasks in the job queue, and
to initialize the ATTACH macro instruction
parameter list.

IEFSD110
Return to caller

• Tables/Work Areas: Track stack area,
QMPA, Q/M Resident data area, CVT
• Attributes:

• Entry:

Reentrant

IEFSD063
• Control Sections:

• Exit:

• Attributes:

LCT, CSCB, JSCB,

Reentrant

• Control sections:

IEFSD063

IEFSD104: MVT Initiator Interface Routine

Post-Attach

IEFSD111: MVT Queue Management (Track
Stacking) - Record Accessing Program
The purpose of this routine is to transfer
work queue data set records between the
track stack and the user's record area, and
to transfer logical tracks between the work
queue data set and the track stack as
required.
• Entry:

The purpose of this routine is to take a
post-invocation exit if one is specified in
the initiator exit list, to read the LCT
from the job queue for system tasks.

• Exit:

IEFSD111
Return to caller

• Tables/Work Areas: Track stack area,
Q/M Resident data area, CVT

IEFSD104
• Attributes:

• Exit:

Reentrant

To IEFSD164, IEFSD514
• Control sections:

• Tables/Work Areas:
WTPCB
• Attributes:

IEFSD104

MVT Initiator - Initiator Wait

The purpose of this routine is to free the
current initiator region when there is no
work for the initiator, to wait for a job
to be enqueued or a STOP INIT command to be
issued, and to obtain a new region for the
initiator. This routine must be loaded
into the link pack area.
332

IEFSD111

TIOT, LCT, JSCB,

Reentrant

• Control Sections:
IEFSD105:
Routine

IEFSD110

To IEFSD263, IEFSD514

• Tables/Work Areas:
WTPCB, SCT

• Entry:

IEFSD10S

To IEFSD162

• Tables/Work Areas: LCT, data set
enqueue parameter list

IEFSD103:
Routine

CVT, CSCB, LCT,

OS/360 MVT Job Management (Release 21)

IEFSDl12: MVT Queue Management (Track
Stacking) - Stack Purge Program
The purpose of this routine is to transfer
any updated logical tracks remaining in the
stack to the work queue data set, and to
release the main storage occupied by the
track stack.
• Entry:
• Exit:

IEFSDl12
Return to caller

• Tables/Work Areas: Track stack area,
Q/M resident data area, CVT

• Attributes:

Reentrant

• Control Sections:
IEFSD160:
Routine

IEFSDl12

MVT Initiator Initialization

The purpose of this routine is to
initialize the nlife-of-task n functions of
the initiator.
• Entry:

IEFSD060

• Exit: To IEFSD161 or the routine
specified in the initiator exit list

continues; if i t is not normal, control
passes to the Job Selection routine to
select another job. The routine also
builds a DSO message and passes control via
a LINK macro instruction to the DSO Writer
routine to write system messages and/or job
separators. The routine also writes the
TIOT in the job queue.
• Entry:

IEFSD062

• Exit: To IEFSD103, IEFSD164, IEFSD514,
IEFSD21Q, IEFQMRAW, IEFDSOWR, IEFDSOCR,
IEFSD161, pre-invocation if specified.

• Tables/Work Areas: CVT, LeT, Q/M
resident data area, QMPA, ECB list,
GCB, initiator exit list

• Tables/Work Areas: LCT, JCT, SCT,
TIOT, ATTACH macro instruction
parameter list, user parameter list,
JSCB, WTPCB, QMPA, 5MB, DSOCB, BASEA

• Control Sections:

• Attributes:

IEFSD161:
Routine

IEFSD060, IEFSD60M

MVT Initiator Job Selection

The purpose of this routine is to obtain
the highest priority job from the input
queue if the Initiator subroutine has
received control to initiate a job step
task; to read the JCT and first SCT into
main storage; to set up the message class
QMPA; and to build a data set enqueue
parameter list. In addition, this routine
determines whether a STOP or MODIFY command
has been issued and takes appropriate
action. If DSO is in the system, the
routine selects eligible DSOCBs for the
job.
• Entry:

• Control Sections:

IEFSD164:
Routine

• Exit: To IEFSD263, IEFSD10l, IEFSD105,
IEFSD160, IEFQMDQQ, IEFQMRAW, IEFDSOSL,
or the routine specified in the
initiator exit list.

MVT Initiator - Task Delete

• Entry:

IEFSD064
To IEFSD10l, IEFSD166, IEFSD168

• Tables/Work Areas: QMPA, LCT,
supervisor parameter list, JCT, SCT,
ACT, JSCB, WTPCB
• Attributes:

• Tables/Work Areas: JCT, SCT, LeT,
QMPA, CSCB, SCD, lOB, DSENQ TABLE, CVT,
ECB list, GCB, initiator exit list,
JSCB, WTPCB, DSOCB, BASEA
• Attributes:

IEFSD062

The purpose of this routine is to prepare
the parameters required by the Termination
routine after a job step or system task has
been executed or when the return code from
I the I/O Device Allocation routine indicates
that a step cannot be executed.

• Exit:

IEFSD061

Read-only, reenterable

Read-only, reenterable

• Control Sections:
IEFSD166:
Routine

IEFSD064

MVT Initiator - Job Delete

Reentrant

• Control Sections:
IEFDSOAL

IEFSD061, QMTMSD,

IEFSD162: MVT Initiator - I/O Device
Allocation Interface Routine

The purpose of this routine is to delete a
completed job from the input queue, and to
release the main storage occupied by job
related taLles.
• Entry:
• Exit:

The purpose of this routine is to complete
the entrance interface for the I/O Device
Allocation routine, to pass control to that
routine, and to determine whether the task
can be attached.
If a step is being
restarted from a checkpoint, control passes
to the DSO Environment routine.
If the
return code is normal, initiation

IEFSD066
To IEFSD161

• Tables/Work Areas: LCT. QMPA, Q/M
resident data area, CSCB. CVT, JCT.
JSCB. WTPCB
• Attributes:

Reentrant

• Control Sections:
Appendix B:

IEFSD066

Module Descriptions

333

IEFSD168:
Routine

Initiator - Job suspension

• Entry:
• Exit:

The purpose of this routine is to reenqueue
a terminated job so that the job can be
reactivated.
• Entry:
• Exit:

IEFVAWAT
Return to caller

• Tables/Work Areas:
LCT, ECB, CSCB
• Attributes:

IEFSD068
To IEFSD161, IEFVSDRA, IEFDSOFB

JCT, SCT, SIOT,

Read-only, reenterable

• Control Sections:

IEFSD095

• Tables/Work Areas: QMPA, LeT, JCT,
SCD, SCT, JSCB, WTPCB

IEFSD21Q: MVT I/O Device Allocation - MVT
Allocation Entry Routine

• Attributes:

The purpose of this routine is to provide
an interface for entry to the I/O Device
Allocation routine operating in the MVT
environment.

Reentrable

• Control Sections:

IEFSD068

IEFSD171: System Output Writer - Data set
Delete Routine
The purpose of this routine is to obtain
records from an output queue entry, and to
delete system output data sets.
• Entry:

• Entry:

IEFW21SD

• Exit: To IEFVKIMP, IEFVMLS1 or
IEFWDOOO
• Tables/Work Areas: JCT, LCT, SCT, 8MB,
QMPA, CVT, TJB (TSO), TSCVT (TSO)

IEFSD071
• Attributes:

• Exit: To IEFQMNQQ, IEFSD085, IEFSD086,
IEFSD078, or IEFQMRAW
• Tables/Work Areas: DCB, 5MB, UCB, CVT,
QMPA, TIOT, CSCB, TCB
• Attributes:

• Control Sections:

IEFSD071, IEFSD71M

IEFSD180: MVT I/O Device Allocation Dedication Determination Routine
The purpose of this rou~ine is to determine
whether the data set described by a DD
statement being processed is a dedicated
data set" and if it is, to copy previously
stored information about the dedicated data
set into the SIOT and JFCB created from the
DD statement.

IEFSD22Q: Termination Routine - Step
Terminate Exit Routine
The purpose of this routine is to provide
an interface between the Termination
routine and the Task Delete or Alternate
step Delete routine when a step has been
terminated.
• Entry:

IEFW22SD

• Exit: Return to caller of Termination
routine
• Tables/Work Areas:
QMPA, ECB
• Attributes:

Read-only, reenterable
IEFW22SD

To IEFVMLS1
IEFSD263:

• Tables/Work Areas: LCT, SCT, SIOT,
JFCB, PDQ, TIOT, AWA, CVT
• Control Section:

IEFSD180

IEFSD195: MVT I/O Device Allocation Wait for Unallocation Routine

OS/360 MVT Job Management (Release 21)

MVT Initiator - Attach Routine

The purpose of this routine is to pass
control to the task via the ATTACH macro
instruction. If a job step is canceled or
the time limit is reached, an ABEND dump is
provided.
• Entry:

The purpose of this routine is to provide
the I/O device allocation the ability to
wait for unallocation to occur during the
execution of another task, when allocation
cannot be completed because of current
allocations.
334

JCT, SCT, 8MB, LCT,

IEFSD18
• Control Sections:

• Exit:

IEFW21SD, IEFR102

Reentrant

• Control sections:

• Entry:

Read-only, reenterable

• Exit:

IEFSD263
IEFSD104

• Tables/Work Areas: ATTACH macro
instruction parameter list, user
parameter list, TCT, TCTIOT, LCT

• Attributes:

Reentrant

• Control Sections:

• Attributes:

Reentrant

IEFSD263
• Control Sections:

IEFSD302

IEFSD300: MVT system
Restart - Initialization Routine
The purpose of this routine is to read all
QCRs and logical track header records into
main storage. to build tables A. B, and C.
and to remove from Table A all the LTH
entries corresponding to logical tracks in
the free-track queue or in one of the other
queues.
• Entry:
• Exit:

IEFSD300

IEFSD303:
Routine

The purpose of this routine is to create a
queue entry of the remaining logical tracks
and to delete that entry, thus assigning
those tracks to the free-track queue.
• Entry:

To IEFSD301

MVT system Restart - Delete

• Exit:

IEFSD303
IEFSD055

• Tables/Work Areas: system restart work
area. Table A, Table B. Table C

• Tables/Work Areas: System restart work
area, QMPA, Table A

• Attributes:

• Attributes:

Reentrant

• Control Sections:

IEFSD300

IEFSD301: MVT system Restart - Purge Queue
Construction Routine
The purpose of this routine is to search
Table A for the last LTH corresponding to
each queue entry, determine the type of
entry. and construct the purge queue.
• Entry:
• Exit:

• Control Sections:

The purpose of this routine is to set up to
scratch temporary data sets generated for
incomplete or dequeued input queue entries.

• Exit:

To IEFSD302

IEFSD304
To IEFSD305, IEFSD308

• Tables/Work Areas: System restart work
area, Table A, Table C. purge queue

• Tables/Work Areas:
look -up tab le

• Attributes:

o

Reentrant

• Control sections:

IEFSD301

IEFSD302: MVT system Restart - Jobnames
Table Routine
The purpose of this routine is to remove
from Table A, all logical tracks assigned
to de queued input, RJE, ASB. or hold queue
entries as well as the logical tracks
assigned to the output queue entries
corresponding to dequeued and enqueued
input queue entries. In addition. it
builds a table of job names for incomplete
input and RJE queue entries, for dequeued
input queue entries, and dequeued ASB queue
entries.
• Entry:
• Exit:

IEFSD302
To IEFSD303

• Tables/Work Areas: System restart work
area, Table A, Table C, and the
interpreter/initiator jobnames table

IEFSD303

IEFSD304: MVT System Restart - Scratch
Data Sets Routine

• Entry:

IEFSD301

Reentrant

Attributes:

Reentrant

• Control Sections:
IEFSD305:
Routine

CVT, UCB address

IEFSD304

MVT System Restart - Reengueue

The purpose of this routine is to dequeue
the entries in the purge queue and
reenqueue them in the appropriate input,
hold, RJE, or output queue and to inform
the operator of the names of jobs in the
process of interpretation and initiation.
• Entry:
• Exit:

IEFSD305
To IEFSD304, IEFVSDRA, IEFVSDRD

,. Tables/Work Areas: system restart work
area, purge queue, JCT, SCT, JFCB, DSB,
SCD, SlOT.
• Attributes:

Reentrant

• Control sections:
Appendix B:

IEFSD305

Module Descriptions

335

IEFSD308: MVT system Restart - Scratch
Data sets Routine

IEFSD311:
Module

The purpose of this routine is to scratch
the temporary data sets generated for
incomplete and dequeued input queue
entries.

The purpose of this module is to contain
the messages required by the Queue
Initialization routine (module IEFSDOSS).

• Entry:
• Exit:

• Entry: IEFSD311, SDSSMSG1, SDSSMSG2,
SDSSMSG3

IEFSD308
To IEFSD304

• Tables/Work Areas:
CVT, VTOC, DEB
• Attributes:

• Attributes:
DSCB, DCB, UCB,

Reentrant

• Control Sections:

MVT Queue Management - Message

Nonexecutable

• Control sections:
IEFSD312:
Module

IEFSD311

MVT system Restart - Message

IEFSD308
The purpose of this module is to contain
the messages required by the system restart
routines.

IEFSD31Q: Termination Routine - Job
Termination Exit Routine
The purpose of this routine is to provide
an interface between the Termination
routine and the Step Delete or Alternate
Step Delete routine when the last step of a
job has been terminated. If the message
class is specified for DSO, control passes
to the DSO Writer routine. This routine
also releases DSOCBs assigned to the job,
and it posts the DSOCB if a STOP or MODIFY
is pending for it.
• Entry:

IEFW31SD

• Exit: To IEFDSOWR or return to caller
of Termination routine
• Tables/Work Areas: JCT, SCT, 5MB,
QMPA, ECB, CVT, M/S resident data area,
DSOCB, TJB (TSO), TSCVT (TSO)
• Attributes:

Read-only, reenterable

• Control sections:

IEFW31SD

• Entry: IEFSD312, SD304MG1, SD304MG2,
SD30SMG1
• Attributes:

Non-executable

• Control sections:

IEFSD41Q: MVT I/O Device
Allocation - Allocation Exit Routine
The purpose of this routine is to provide
an interface for exit from the I/O Device
Allocation routine operating in an MVT
environment.
• Entry:

IEFW41SD

• Exit: To IEFVMLS1, or return to
caller.
• Tables/Work Areas: JCT, LCT, SCT, 5MB,
QMPA, ATCA, MVCA, MVCAX
• Attributes:

Read-only, reenterable

• Control sections:
IEFSD310: MVT system Restart TTR and NN to
MBBCCHHR Conversion Routine
The purpose of this routine is to convert a
relative record address (NN) or a relative
track and record address (TTR) to an actual
disk address (MBBCCHHR).
• Entry:
• Exit:

IEFW41SD

IEFSD42Q: Termination
Routine - Termination Entry Routine
The purpose of this routine is to provide
an interface for entry to the Termination
routine operating in an MVT environment.
• Entry:

IEFW42SD

• Exit:

To IEFYNIMP

IEFSD310
Return to linkor

• Tables/Work Areas:
• Attributes:

CVT

Reentrant

• Control Sections:
336

IEFSD312

IEFSD310

OS/360 MVT Job Management (Release 21)

• Tables/Work Areas:
TIOT
• Attributes:

JCT, SCT, 5MB, LCT,

Read-only, reenterable

• Control Sections:

IEFW42SD

IEFSD447:

RJE Write LTH Routine

The purpose of this routine is to set an
indicator in the QMPA, and to write out the
LTH.
• Entry:
• Exit:

• Attributes:

• Control section:

IEFSMFAT:
Routine

IEFSD447

• Attributes:

CVT,QMRES,QMPA

Reentrant

• Control sections:

Initiator - TCTIOT Construction

The purpose of this routine is to construct
the TCTIOT, append it to the TCT,
initialize the TCT storage map, and store
the user routine address in the TCT.

IEFSD447
• Entry:

IEFSMFAT

System Restart - Table Breakup
• Exit:

This routine reads and writes tables which
may be required by the job scheduler. The
routine breaks the tables into 176-byte
records, writes the records on disk, and
retrieves the records from disk to
reconstruct the tables in main storage.
• Entry:

IEFXJX5A

Return to caller

• Tables/Work Areas:

IEFSD514:
Routine

Read-only, reenterable

Return to caller

• Tables/Work Areas:
TCT, TCTIOT, TIOT
• Attributes:

PQE, SMCA, TCE,

Reentrant

• Control sections:

IEFSMFAT

IEFSD514

• Exit: IEFQAGST, IEFQMRAW, or return to
caller

IEFSMFIE: Initiator - User Exit
Initialization Routine

• Tables/Work Areas:
List

The purpose of this routine is to
initialize the parameter lists for the Job
Initiation and step Initiation user exits
and to construct SMF type 20 records.

• Attributes:

QMPA, TBR Parameter

Read-only, reenterable

• Control sections:

IEFSD514

• Entry:
• Exit:

IEFSD551: I/O Device Allocation - Linkage
to IEFXJIMP
This routine provides an interface linkage
to IEFXJIMP via an XCTL macro instruction.
• Entry:
• Exit:

IEFSMFIE
Return to caller

• Tables/Work Areas: JCT, JMR, LCT, SCT,
TCT, CVT, SMCAr ACT
• Attributes:

Reentrant

• Control Sections:

IEFVl5XL

IEFSMFIE

XCTL to IEFXJIMP

• Tables/Work Areas:
• Attributes:

.same as caller

Read~only,

• Control. Sectiqn:

IEFSMFLK: Termination Routine - User Exit
Initialization Routine

reenterable

IEFVl5XL

The purpose of this routine is to
initialize the parameter lists for the Job
Termination and Step Termination user
exits.

IEFSD552: I/O Device Allocation - Linkage
to IEFXJIMP
• Entry:
This routine provides an interface linkage
to IEFXJIMP via an XCTL macro instruction.
• Entry:
• Exit:

Return to caller

• Tables/Work Areas:
SMeA, TCB, TCT

IEFXJX5A
XCTL toIEFXJIMP

• Tables/work Are"as:

• Exit:

IEFACTLK

same as caller

• Attributes:

Reentrant

• Control Sections :
Appendix B:

JCT, JMR, LCT, SCT,

lEFACTLK

Module Descriptions

337

IEFSMFWI: Termination Routine - SMF Writer
Interface Routine

IEFUSO:
Routine

The purpose of this routine is to construct
the SMF job termination and step
termination records" and sign on/off
messages for SYSOUT.

The purpose of this routine is to simulate
the presence of a user-supplied Output
Limit routine.

• Entry:
• Exit:

• Entry:

IEFSMWI
Return to caller

• Tables/Work Areas:
• Attributes:

JCT, JMR, LCT, SCT

Reentrant

• Control Sections:

• Exit:

The purpose of this routine is to simulate
the presence of a user-supplied job
initiation exit routine.

Return to caller
Reentrant

• Control Sections:

The purpose of this routine is to simulate
the presence of a user-supplied JCL
validation routirie.
IEFUJV
Return to caller

• Attributes:

Dummy User Time Limit Exit Routine

• Entry:

IEFUTL
Return to caller

• Attributes:

Reentrant

• Control Sections:

Interpreter-DD statement Processor

The purpose of this routine is to construct
and add entries to a JFCB and SlOT from the
complete logical DD statement in the
internal text buffer.
• Entry:

IEFVDA

• Exit:

To IEFVHF

• Tables/Work Areas:
JFCB, JCB, SCT
• Attributes:

Read-only, reenterable

IEFUJV
• Control Sections:

IEFUSI: Initiator - Dummy User Step
Initiation Exit Routine
The purpose of this routine is to simulate
the presence of a user-supplied step
initiation exit routine.

• Exit:

Return to caller

o

338

Reentrant

Control Sections:

IEFUSI

OS/360 MVT Job Management (Release 21)

IEFVDA

IEFVDBSD: Interpreter Data Set Name Table
Construction Routine
The purpose of this routine is to create a
data set name table.
• Entry:

IEFUSI

• Attributes:

IWA, LWA. SlOT,

Reentrant

• Control Sections:

• Entry:

IEFUTL

IEFUJI

IEFUJV: Interpreter - Dummy User JCL
Validation Exit Routine

• Exit:

IEFUSO

The purpose of this routine is to simulate
the presence of a user-supplied time limit
exit routine.

IEFVDA:

• Entry:

Reentrant

• Control sections:

• Exit:

IEFUJI

• Attributes:

Ret.urn to caller

IEFSMFWI

IEFUJI: Initiator - DUmmy User Job
Initiation Exit Routine

• Exit:

IEFUSO

• Attributes:

IEFUTL:

• Entry:

Initiator - Dummy Output Limit

• Exit:

IEFVDBSD
To IEFVDA

• Attributes:

Reentrant

• Control Sections:

IEFVDBSD

IEFVEA: Interpreter - EXEC statement
Processor

IEFVGI:
Routine

The purpose of this routine is to construct
or update an SCT, and, if necessary, a
joblib JFCB and SlOT from the complete
logical EXEC statement in the internal text
buffer.

The purpose of this routine is to construct
entries for the refer-back dictionary.

Interpreter - Dictionary Entry

• Entry:
• Exit:

• Entry:

• Tables/Work Areas: Refer-back
dictionary, auxiliary work area, IWA,
QMPA

• Tables/Work Areas: IWA, EXEC work
area, interpreter key table, JCT, SCT,
SlOT, QMPA, procedure override table.
• Attributes:

IEFVEA

Interpreter - Scan Routine

The purpose of this routine is to scan the
card image of a JOB, EXEC, or DD statement,
perform error checking of JCL syntax, build
internal text, and, when a complete logical
statement (including continuations and
overrides> has been scanned, to pass
control to the appropriate statement
processor.
• Entry:

• Control sections:

IEFVGI

Read-only, reenterable

• Control sections:
IEFVFA:

Return to caller

IEFVEA, from IEFVFA
To IEFVHF

• Exit:

IEFVGI

IEFVGK:
Routine

Interpreter - Get Parameter

The purpose of this routine is to search
the internal text buffer for the next
parameter, perform basic error checking,
and pass control to the appropriate Keyword
routine.
o

Entry:

• Exit:

IEFVGK
Return to caller

• Tables/Work Areas: Local work area,
IWA, internal text buffer, KBT, PDT.

IEFVFA
• Control sections:

IEFVGK

• Exit: To IEFVGM, IEFVHQ, IEFVHF,
IEFVJA, IEFVDA, IEFVEA, IEFVFA
o

Tables/Work Areas: IWA, Scan routine
work area, interpreter key table, QMPA,
internal text buffer, scan dictionary,
JMR, PDT

o

Attributes:

Read-only, reenterable

o

Control Sections:

IEFVFA

IEFVFB: Interpreter - Symbolic Parameter
Processing Routine

IEFVGM:
Routine

The purpose of this routine is to construct
5MBs containing interpreter error messages
and JCLstatement images, to assign space
for these 5MBs in the message class output
queue entry, and to write the 5MBs into the
entry.
• Entry:
• Exit:

The purpose of this routine is to process
symbolic parameters by creating symbolic
parameter table buffer entries to assign
values to symbolic parameters, and to
extract those values and place them in the
intermediate text buffer when a symbolic
parameter is used.

Interpreter - Message processing

IEFVGM
Return to caller

• Tables/Work Areas:
IWA, JCT, JMR

• Attributes: Reentrant, character
dependence type C
• Control Sections:

• Entry:
• Exit:
o

IEFVGM

IEFVFB
Return to IEFVFA

Tables/Work Areas: lWA, LWA, SYMBUF,
Intermediate Text Buffer, QMPA

• Attributes:
o

QMPA, 5MB, SCD,

Read-only, reenterable

Control Sections:

IEFVFB

IEFVGM1:

Interpreter - Message Module

The purpose of this module is to contain
interpreter messages 01-07.
o

Attributes:

o

Control Section:
Appendix B:

Nonexecutable
IEFV~ll

Module Descriptions

339

IEFVGM2:

Interpreter - Message Module

The purpose of this module is to contain
interpreter messages 08-0F.
• Attributes:

Nonexecutable

• Control sections:

IEFVGM2

IEFVGM9:

The purpose of this module is to contain
interpreter messages 58-SF.
• Attributes:

Nonexecutable

• Control Secti ons :
IEFVGM10:

IEFVGM3:

Interpreter - Message Module

Interpreter - Message Module

Interpreter - Message Module

The purpose of this module is to contain
interpreter messages 10-17.

The purpose of this module is to contain
interpreter messages 60-67.
• Attributes:

• Attributes:

Nonexecutable

Nonexecutable
• Control Sections:

• Control sections:

Interpreter - Message Module

Interpreter - Message Module

The purpose of this module is to contain
interpreter messages 18-1F.

The purpose of this module is to contain
interpreter messages 6B-6F.
• Attributes:

• Attributes:

Nonexecutable

Nonexecutable
• Control Sections:

• Control sections:

Interpreter - Message Module

Interpreter - Message Module

The purpose of this module is to contain
interpreter messages 20-27.

The purpose of this module is to contain
interpreter messages 70-77.
• Attributes:

• Attributes:

Nonexecutable

Nonexecutable
• Control Sections:

• Control sections:
IEFVGM6:

Interpreter - Message Module

• Attributes:

Nonexecutable

• Control sections:

IEFVGM6

Interpreter - Message Module

The purpose of this module is to contain
interpreter messages 30-37.
• Attributes:

Nonexecutable

• COntrol sections:
IEFVGM8:

Interpreter

IBFVGM7
~

Message Module

The purpose of this module is to contain
interpreter messages 50-57.
• Attributes:

Nonexecutable

• Control sections:
340

IEFVGM12

IEFVGM5

The purpose of this module is to contain
. interpreter messages 28-2F.

IEFVGM7:

IEFVGMll

IEFVGM4
IEFVGM12:

IEFVGM5:

I EFVGM1 0

IEFVGM3
IEFVGMll:

IEFVGM4:

IEFVGM9

IEFVGMB

OS/360 MVT Job Management (Release 21)

IEFVGM13:

Interpreter - Message Module

The purpose of this module is to contain
interpreter messages 78-7F •
• Attributes:

Nonexecutable

• Control Sections:
IEFVGM14:

IEFVGM13

Interpreter - Message Module

The purpose of this module is to contain
interpreter messages 8B~8F.
•

Attribu~es:

Nonexecutable

• Control sections:
IEFVGI>1l5:

IEE'VGM14

Interpreter - Message Module

The purpose of this module is
interpreter messages 90-97,.
• Attributes:

~o

Nonexecutable

• Cont:tol Secti.ons:

IEFVGM15

contain

IEFVGM16:

Interpreter - Message Module

The purpose of this module is to contain
interpreter messages AO-A7.
• Attributes:

Nonexecutable

• Control Sections:

IEFVGM16

IEFVGS:
Routine

Interpreter - Dictionary Search

The purpose of this routine is to search
the refer-back dictionary for the address
of a previously-defined SCT., SlOT, or JFCB.
• Entry:
• Exit:

IEFVGM17:

Interpreter - Message Module

The purpose of this module is to contain
interpreter messages 56-50.
• Attributes:

Nonexecutable

• Control Sections:
IEFVGM18:

Return to caller

• Tables/Work Areas: Auxiliary work
area, IWA. QMPA, refer-back dictionary
• Control sections:
IEFVGT:
Routine

IEFVGS

Interpreter - Test and Store

IEFVGM17

Interpreter - Message Module

The purpose of this module is to contain
interpreter messages 80-87.

The purpose of this routine is to perform
operations on a parameter as indicated in
the appropriate parameter descriptor table
entry.
• Entry:

• Attributes:

IEFVGS

IEFVGT

Nonexecutable
• Exit:

• Control sections:

Return to Keyword routine

IEFVGM18
• Tables/Work Areas: Internal text
buffer. PDT, local work area, IWA

IEFVGM19:

Interpreter Message Module
• Control Sections:

The purpose of this module is to contain
interpreter messages 3E-45.
• Attributes:

IEFVGM19

Interpreter Message Module

The purpose of this module is to contain
interpreter messages 38-3F.
• Attributes:

IEFVHA: Interpreter (Control
Routine) - Get Routine

Nonexecutable

• Control sections:
IEFVGM70:

Nonexecutable

• Control Sections:

IEFVGM70

The purpose of this routine is to read
statements from the input stream and the
procedure library.
• Entry:

IEFVHA

• Exit: IEFVHC, IEFVHB, IEFVHAA, IEFVHR,
IEFVGM
• Tables/Work Areas:
• Attributes:

IEFVHA

Interpreter - Message Module

The purpose of this module is to contain
interpreter messages 40-47.
• Attributes:

Nonexecutable

• Control sections:

IEFVGM71

IEFVHAA: Interpreter (Control Routine) End-ot-File Routine
The purpose of this routine is to determine
the conditions under which an end-of-file
condition has occurred. and to set switches
and pass control accordingly.
• Entry:

IEFVGM78:

IWA, JCT, DCB.

Read-only, reenterable

• Control sections:
IEFVGM71:

IEFVGT

IEFVHAA

Interpreter - Message Module
• Exit:

The purpose of this module is to contain
interpreter messages 08-00.
• Attributes:

Nonexecutable

• Control Sections:

IEFVGM78

IEFVHC or IEFVHN

• Tables/Work Areas:
• Attributes:

Read-only, reenterable

• Control secti ons :
Appendix B:

IWA, JCT

IEFVHAA

Module Descriptions

341

IEFVHB: Interpreter (Control
Routine) - DD* statement Generator Routine

• Attributes:

Read-only, reenterable

• Control sections:
The purpose of this routine is to generate
a nSYSIN DD*" statement for data in the
input stream,. when no such statement was
included.
• Entry:
• Exit:

IEFVHEB: Interpreter (Control Routine) Pre-Scan Preparation Routine

IEFVHB
To IEFVHC, IEFVHA, IEFVGM

• Tables/Work Areas:
• Attributes:

IWA, JCT

Read-only, reenterable

• Control Sections:

The purpose of this routine is to determine
whether a message is required or additional
work queue space is required before a
statement is scanned.
If so, it causes the
message to be written or the work queue
space to be assigned.

IEFVHB
• Entry:

IEFVHC: Interpreter (Control Routine) Continuation statement Routine
The purpose of this routine is to determine
whether the current statement should be a
continuation" and, if so, to determine
whether it is a valid continuation
statement.
• Entry:
• Exit:

IEFVHEB

• Exit: To IEFVHQ, IEFVGM, IEFVHG,
IEFVFA, IEFUJV
• Tables/Work Areas:
QMPA, JMR
• Attributes:

IWA, JCT, DCB

Interpreter (Control Routine) IEFVHEC:
Job Validity Check Routine

Read-only, reenterable

• Control sections:

IEFVHC

IEFVHCB: Interpreter (Control Routine) Verb Identification Routine

The purpose of this routine is to determine
whether an SCT has been built for the
current job; if not, the routine constructs
an SCT.
• Entry:

The purpose of this routine is to identify
the verb on a control statement.
• Entry:

• Exit:

IEFVHEC
To IEFVGM, IEFVHH

• Tables/Work Areas:

IEFVHCB

• Exit: To IEFVHE, IEFVHM, IEFVHA,
IEFVGM, IEFVHL, IEFVINA

• Attributes:

• Attributes:

IEFVHEC

IWA, JCT

Read-only, reenterable

• Control Sections:

IEFVHCB

Interpreter (Control Routine) -

The purpose of this routine is to determine
the conditions under which it was entered,
and to pass control to the appropriate
routine.
• Entry:

IWA, JCT, SCT

Read-only, reenterable

• Control sections:
• Tables/Work Areas:

IEFVHF: Interpreter (Control Routine) Post-Scan Routine
The purpose of this routine is to determine
the conditions under which it was entered,
and to pass control accordingly.
• Entry:

IEFVHF

• Exit: To IEFVHG, IEFVHEB, IEFVHCB,
IEFVHA
• Tables/Work Areas:

IEFVHE
To IEFVHEB, IEFVHH, IEFVHEC

• Tables/Work Areas:
342

IEFVHEB

To IEFVHEB, IEFVHCB, IEFVGM

• Attributes:

• Exit:

IWA, JCT, SCT,

Read-only, reenterable

• Control sections:

IEFVHC

• Tables/Work Areas:

IEFVHE:
Router

IEFVHE

IWA

OS/360 MVT Job Management (Release 21)

• Attributes:

IWA, CWA

Read-only, reenterable

• Control Sections:

IEFVHF

IEFVHG: Interpreter (Control Routine) Spool Routine

• Exit: To IEFVHCB, IEFHEC, IEFVHE,
IEFVHA

The purpose of this routine is to place an
SlOT and a JCT into the input queue entry,
and to write system input data sets to a
direct access device.

• Tables/Work Areas:
• Attributes:

Read-only, reenterable

• Control Sections:
• Entry:

IEFVHL

IEFVHG

• Exit: To IEFVHB, IEFVHR, IEFVGM,
IEFVHQ, IEFVHAA, IEFVHA, IEFVHC
• Tables/Work Areas:
VOLT, CWA, SCT
• Attributes:

IEFVHM: Interpreter (Control Routine) Command Statement Routine

IWA, JCT, SlOT,

Read-only, reenterable

• Control sections:

The purpose of this routine is to test for
valid command verbs, and, if the verb is
valid, to issue SVC 34 to schedule
execution of the command.

IEFVHG
• Entry:

IEFVHH: Interpreter (Control Routine) Job and step Engueue Routine

• Exit:

I.EFVHM
To IEFVHA, IEFVGM

• Tables/Work Areas:
The purpose of this routine is to place the
SCT, DSNT, VOLT, and JCT in the job's queue
entry, and to determin~ whether the
interpreter is to enqueu~ jobs.
• Entry:

IWA. JCT

• Attributes:

IWA, JCT

Read-only, reenterable

• Control sections:

IEFVHM

IEFVHH

• Exit: To IEFKG, IEFVHN, IEFVHQ, or
IEFVHHB

IEFVHN:
Routine

• Tables/Work Areas:
QMPA, SCT

The purpose of this routine is to close the
input stream and procedure library data
sets, free main storage used by the
interpreter, and build the interpreter exit
list.

• Attributes:

IWA, JCT, NEL,

Read-only, reenterable

• Control sections:

MVT Interpreter - Termination

IEFVHH
• Entry:

IEFVHHB: Interpreter (Control Routine) Job and step Engueue Housekeeping Routine
The purpose of this routine is to
initialize for merging a cataloged
procedure.
• Entry:
• Exit:

IEFVHHB

• Exit:

Return to linkor

• Tables/Work Areas:
• Attributes:

IWA, JCT, QMPA, JMR

Read-only

• Control sections:

IEFVHN

To IEFVHA, IEFVHEB

• Tables/Work Areas:
• Attributes:

lWA

IEFVHQ: Interpreter - Queue Management
Interface Routine

Read-only, reenterable

• Control Sections:

IEFVHHB

IEFVHL: Interpreter (Control Routine) Null Statement Routine

The purpose of this routine is to be a
common interface between the Queue
Management routines and the interpreter.
• Entry:
• Exit:

The purpose of this routine is to determine
the conditions under which the null
statement was encountered, and to pass
control to the proper routine.
• Entry:

IEFVHN

IEFVHL

IEFVHQ
Return to caller

• Tables/Work Areas:
• Attributes:

IWA, JCT, QMPA

Read-only, reenterable

• Control Sections:

IEFVHQ

Appendix B:Module Descriptions

343

IEFVHR: Interpreter (Control Routine) Operator Message Routine
The purpose of this routine is to write a
message to the operator when an I/O error
has occurred.

• Tables/Work Areas: IWA, JCT, QMPA,
in-stream procedure work area,
in-stream procedure parameter list, IWA
• Attributes:

Reenterable

• Control Sections:
• Entry:

• Exit:

Return to caller

• Tables/Work Areas:
• Attributes:

IEFVINB: In-stream Procedure Directory
Search Routine

IWA, JCT, CWA, UCB

Read-only, reenterable

• Control sections:
IEFVH1:
Routine

The purpose of this routine is to search
the in-stream procedure directory for the
name of procedure that is to be processed.

IEFVHR

Interpreter - Initialization

• Entry:
• Exit:

The purpose of this routine is to
initialize the interpreter; it obtains main
storage for and initializes the IWA, local
work areas; and the DSENQ table, it also
processes the reader PARM field.
• Entry:
• Exit:

Nonreusable

• Control Sections:

• Tables/Work Areas: In-stream procedure
work area, in-stream procedure
parameter list, IWA, QMPA
• Attributes:

Reenterable
IEFVINB

IEFVINC: In-stream Procedure Directory
Build Routine
The purpose of this routine is to build a
directory entry for each in-stream
procedure.

IEFVH1
• Entry:

IEFVINC

Interpreter - Initialization Open
• Exit:

The purpose of this routine is to open the
input stream data set and the procedure
library data set, and to obtain main
storage for a buffer for procedure library
records.
.. Entry:
• Exit:

IEFVH2

• Control Sections:
• Attributes:
IEFVtNA:
Routine

• Tables/Work Areas: IWA, QMPA,
in-stream procedure work area,
in-stream procedure parameter list
• Attributes:

Reenterable
IEFVINC

IEFVIND: In-stream Procedure Decompression
Interface Routine
IWA, UCB, TIOT
IEFVH2

Nonreusable

In-Stream Procedure Routing

The purpose of this routine is to build a
parameter list for the in-stream procedure,
read a record from the job queue, and
invoke the Record Decompression routine
(module IEZDCODE) to decompress a record.
• Entry:
• Exit:

The purpose of this routine is to process
an in-stream procedure by invoking other
in-stream procedure modules as subroutines
to perform the processing.
• Entry:

Return to caller

• Control Sections:

To IEFVHA

• Tables/Work Areas:

344

Return to caller

To IEFVH2

• Attributes:

• Exit:

IEFVINB

• Control Sections:

IEFVH1

• Tables/Work Areas: UCB, IWA, DCB,
local work area, JMR

IEFVH2:
Routine

IEFVINA

IEFVHR

IEFVINA
To IEFVHA, IEFVHCB

OS/360 MVT Job Management (Release 21>

IEFVIND
Return to caller

• Tables/Work Areas: IWA, QMPA,
in-stream procedure parameter list,
in-stream procedure work area, DCB
• Attributes:

Reenterable

• Control Sections:

IEFVIND

IEFVINE:
Routine

In-stream Procedure Syntax Check

The purpose of this routine is to check the
PROC and PEND statements for syntax errors.
• Entry:

IEFVKG: Interpreter (Control Routine) Job and step Enqueue Routing Routine
The purpose of this routine is to determine
whether there are additional jobs to
process.

IEFVINE
• Entry:

• Exit:

IEFVKG

Return to caller
• Exit:

• Attributes:

To IEFVHHB, IEFVHN

Reenterable
• Tables/Work Areas:

• Control Sections:

IWA

IEFVINE
• Attributes:

Read-only, Reentrant

• Control Sections:

IEFVKG

IEFVJA: Interpreter - Job statement
Processor
The purpose of this routine is to
initialize a JCT and job ACT from the
complete logical job statement in the
internal text buffer.
• Entry:

IEFVJA

• Exit:

To IEFVHF

IEFVKIMP: I/O Device Allocation - EXEC
Statement Conditional Execution Routine
The purpose of this routine is to
determine, from the specifications in the
EXEC statemen~ COND field, whether the step
should be bypassed or run.
• Entry:

IEFVK

• Tables/Work Areas: IWA, job work area,
interpreter key table, JCT, ACT, QMPA,
PDT

• Exit:

• Attributes:

• Control Sections:

Read-only, reenterable

• Control sections:

IEFVS, IEFLB

• Tables/Work Areas:

JCT, LCT, SCT
IEFVK

IEFVJA
IEFVKMSG: I/O Device Allocation - EXEC
Statement Condition Code Processor Messages

IEFVJIMP: Termination - JOB Statement
, Condition Code Processor
The purpose of this routine is to test the
condition codes specified in the JOB
statement to determine whether the
remaining steps in the job are to be run.

The purpose of this module is to contain
the messages issued to the programmer by
the EXEC statement condition code
processor.
• Entry:

IEFVKMJl

• Attributes:
• Entry:

Non-executable

IEFVJ
• Control sections:

• Exit:

• Tables/Work Areas:
• Control sections:

LCT, JCT, SCT
IEFVJ

IEFVJMSG: Termination - JOB Statement
Condition Code Processor Messages

IEFVMA: Automatic SYSIN Batching Initialization
The purpose of this routine is to acquire
storage for and clear the ASBWA, process
the START communications parameter area
(CPA) and initialize data set processing.
• Entry:

The purpose of this module is to contain
the messages issued to the programmer by
the JOB statement condition code processor.
• Entry:

IEFVKMSG

To IEFVKIMP or IEFZAJB3

Non-executable

• Control Sections:

IEFVMB. IEFVMD, IEFVME

• Tables/Work Areas: ASBWA, JFCB, DCB,
UCB, TIOT, CVT. CPA

I EFVJMSG

• Attributes:

• Exit:

IEFVMA

IEFVJMSG

• Attributes:

Read-only

• Control section:
Appendix B:

IEFVMA

Module Descriptions

345

IEFVMB: Automatic SYSIN Batching - Input
stream Processor

• Entry:
• Exit:

The purpose of this routine is to read an
input stream" place SYSIN data sets on
direct access volumes, and write JCL
statements in the ASB queue.
• Entry:

IEFVME
Return to caller

• Attributes:

Read-only

• Control section:

IEFVMB

• Exit: To IEFVMC, IEFVMD, IEFQAGST,
IEFQMNQQ
• Tables/Work Areas:
UCB" TIOT" QMPA
• Attributes:

IEFVMF: Automatic SYSIN Batching Interpreter Controller

ASBWA, JFCB., DCB,

Read-only

• Control Section:

IEFVMB

IEFVMC: Automatic SYSIN Batching - Command
Processor

The purpose of this routine is to construct
the Interpreter entrance list (NEL) and to
contain special access methods for reading
JCL statements from the ASB queue and for
finding cata,loged procedures.
• Entry:
• Exit:

The purpose of this routine is to determine
whether unrecognizable input stream
statements are command verbs, and if so, to
process them according to the command
disposition in the RDRA procedure.

IEFVMF
To IEFQMDQQ, IEFQDELQ, IEFVME

• Tables/Work Areas:
• Attributes:

• Exit:

IEFVMF

IEFVMC
IEFVMB

• Tables/Work Areas:
• Attributes:

ASBWA

Read-only

• Control section:

IEFVMC

IEFVMG: Automatic SYSIN Batching - ASB
Queue Reader
The purpose of this routine is to read and
expand compressed JCL statements in the ASB
queue.
• Entry:

IEFVMD: Automatic SYSIN Batchinq Termination
The purpose of this routine is to handle
both normal and error termination
conditions.

IEFVMG

• Exit: To IEFQMDQQ, IEFQMRAW, IEFQDELQ,
return to caller
• Tables/Work Areas:
• Attributes:

• Entry:

NEL, SAMWA

Read-only

• Control section:
• Entry:

IEFVME

SAMWA, DCB

Read-only

IEFVMD
• Control section:

IEFVMG

• Exit: To IEFQDELQ, return to System
Task Control routine
• Tables/Work Areas:
UCB, TIOT, QMPA
• Attributes:

ASBWA, JFCB, DCB,

Read-only

• Control Section:

IEFVMD

IEFVMH:

Automatic SYSIN Batching - Find

The purpose of this routine is to return to
the caller the same information returned
after execution of a,FIND macro instruction
from parameters in the SAMWA.
• Entry:

IEFVME: Automatic SYSIN Batching Interpreter Region Regulator
The purpose of this routine is to acquire a
main storage region for execution of the
Interpreter program, initiate
interpretation, and free the main storage
region when interpretation is completed.
346

OS/360 MVT Job Management (Release 21)

• Exit:

IEFVMH
Return to caller

• Tables/Work Areas:
• Attributes:

SAMWA, DCB

Read-only

• Control Section:

IEFVMH

IEFVMFAK: I/O Device Allocation - Linkage
to IEFVMLSl

• Attributes:
o

The purpose of this routine is to pass
control to control section IEFVMCVL of the
JFCB Housekeeping routine.
• Entry:
• Exit:

Control sections:

IEFVMMS1:

MVT Linkage to JFCB Housekeeping

To IEFVMCVL via XCTL
• Entry:

IEFVM1

• Exit:

To IEFVM1

IEFVMCVL
• Attributes:

IEFVMLS1: I/O Device Allocation -JFCB
Housekeeping Control Routine and Allocate
Processing Routines
The purpose of the Control routine is to
obtain the required SIOTs, determine the
processing required for each, and to pass
control to the appropriate routine. The
Allocate Processing routine performs the
processing required in certain refer-back
situations, when the data set is cataloged
or passed, and when unit name is specified.
IEFVM, IEFVMCVL, IEFVMQMI,
VM7030D, VM7055, VM7055AA,
VM7070, VM7090, VM7130, VM7370,
VM7742, VM7750, VM7850, VM7900,

Read-only, reenterable

• Control Sections:

• Tables/Work Areas:
SlOT. JFCB, QMPA

The purpose of this routine is to update
the SlOT, SCT JFCB and VOLT with
information required for the allocation of
devices for the fetch DCB.
• Entry:
• Exit:

VM7100
To IEFVMLSl

• Tables/Work Areas: LCT, SCT, SIOT,
JFCB, VOLT

IEFVM3LS: I/O Device Allocation - JFCB
Housekeeping GDG Single Processing Routine
The purpose of this routine is to obtain
the fully qualified name of a member of a
GDG, and to complete the required
information in the JFCB, VOLT, and SlOT for
that member.

IEFVMLS6: I/O Device Allocation - JFCB
Housekeeping Error Message Processing
Routine

• Entry:

The purpose of this routine is to prepare
error messages for the JFCB Housekeeping
routines.

• Tables/Work Areas:
Count table, JFCB

• Exit:

VM7150
To IEFVMLSl

• Control Sections:

LCT, SIOT, GOG Bias
IEFVM3

IEFVMSGR
Return to caller

• Tables/Work Areas:
• Control Sections:

JCT, LCT
IEFVM6

IEFVMLS7: I/O Device Allocation - JFCB
Housekeeping Error Messages
The purpose of this routine is to contain
the messages issued by the JFCB
Housekeeping routines.
• Entry:

IEFVM2

LCT, JCT, PDQ,

• Control sections: IEFVM1, IEFVMQMI,
IEFVMPDQ, IEFVMVTE

• Exit:

I EFVM 1

IEFVM2LS: I/O Device Allocation - JFCB
Housekeeping Fetch DCB Processing Routine

• Control Sections:
• Exit: To IEFVM2LS, IEFVM3LS, IEFVM4LS,
IEFVM5LS, IEFVM6LS, IEFXCSSS, IEFDSOAL

• Entry:

IEFVM7

The purpose of this routine is to provide a
linkage to the JFCB Housekeeping routines
for the graceful step flush function.

IEFVMCVL

• Control sections:

• Entry:
VM7000,
VM7060,
VM7700,
VM7950

Non-executable

IEFVM7

IEFVM4LS: I/O Device Allocation - JFCB
Housekeeping GDG All Processing Routine
The purpose of this routine is to build an
SIOT, JFCB. and VOLT, and PDQ entries for
each member of the GDG.
• Entry:
• Exit:

VM7200
To IEFVMLSl

• Tables/Work Areas:
PDQ, SlOT, JFCB
• Control Sections:
Appendix B:

LCT, SCT, VOLT,
IEFVM4

Module Descriptions

347

IEFVM5LS: I/O Device Allocation - JFCB
Housekeeping Patterning DSCB Routine
The purpose of this routine is to establish
DCB control information within a JFCB.
• Entry:
• Exit:

• Tables/Work Areas: NEL, JCT, SCT,
SlOT, JFCB, JFCBX, VOLT, 5MB, DSENQ,
SCD, DSB, QMPA
• Control Sections:

VM7300
IEFVRR1:

To IEFVMLS1

• Tables/Work Areas:
DSCB, JFCB
• Control sections:

LCT, SCT, SlOT,
IEFVMS

IEFVM76: I/O Device Allocation - JFCB
Housekeeping Unique Volume ID Routine
The purpose of this routine is to create
unique volume serials for unlabeled tape
data sets, when the disposition is "PASS."

• Exit:

• Exit:

Return to caller

• Control Sections:

SlOT, JFCB, JFCBX
IEFVM76

IEFVPOST: MVT I/O Device Allocation Unsolicited Device Interrupt Handler

I EFDPOST
To lEAOPT01 or return to caller

• Tables/Work Areas:
• Attributes:

• Tables/Work Areas:
• Control Sections:

IEFVRR2:

IEFVRR1

Table Merqe Routine

The purpose of this routine is to merge the
reinterpreted queue entry tables of a
restart step with the original queue entry
tables for that step.
• Entry:

IEFVRR2, IEFV2AE
Return to caller

• Attributes:

Reentrant

• Tables/Work Areas: QMPA, JCT, ACT,
5MB, SCT, SlOT, JFCB, DSENQ, VOLT,
JFCBX, NEL
• Control Sections:

IEFVRR3:
Routine

IEFVRR2

Reinterpretation Delete/Enqueue

Reinterpretation Control Routine

IEFVRRC, IEFVRRCA. IEFVRRCB

The purpose of this routine is to delete
the reinterpreted input and output queue
entries of a restart step, to construct the
internal JCL necessary for processing a
checkpoint restart, and to reenqueue the
job's queue entry.
• Entry:
• Exit:

IEFVRR3, IEFV3AE
Return to caller

• Attributes:

Reentrant

• Exit: IEFRCLNl, IEFRCLN2. and return
to caller

• Tables/Work Areas:
SlOT, JFCB

• Attributes:

• Control Sections:

348

QMPA, JCT

IEFDPOST

The purpose of this routine is to pass
control among the routines that modify the
queue entry of a restart step so that they
appear as they were prior to the initiation
of the step.
• Entry:

Read-only, Reentrant

ATCA, MVCA, MVCAX

Disabled, resident

• Control sections:

IEFVRRC:

Return to Caller

• Attributes:

• Exit:
The purpose of this routine is to handle
the posting of unsolicited device
interruptions for I/O device allocation
operating in an MVT environment.

• Exit:

IEFVRRI

VM7600

• Tables/Work Areas:

• Entry:

Degueue Interface Routine

The purpose of this routine is to interface
with queue management to cause a specific
job to be de queued and the JCT for that job
to be read into main storage.
• Entry:

• Entry:

IEFVRRC

Read-only, Reentrant

OS/360 MVT Job Management (Release 21)

QMPA, JCT, SCT,
IEFVRR3

IEFVSCAN:

Scan Routine

.. Attributes:

This routine scans the options buffer that
is passed as input to the Job Scheduling
Subroutine. It checks the buffer contents
for correct syntax and gives control to
(exits to) a specified subroutine for each
valid buffer entry.
.. Entry:
.. Exit:

Reentrant

.. Tables/Work Areas:
TIOT, UCB, JFCB
.. Control sections:

IWA, DD work area,
IEFSD012

IEFVSD13: MVT Interpreter - SCD
Construction Routine

IEFVSCAN, EIFVSCNl
Return to caller

.. Tables/Work Areas:
.. Attributes:
Recursive

None

Reentrant, Refreshable,

The purpose of this routine is to construct
an SCD entry for each system output class
defined for a job, and to assign space for
all DSBs that will be required •
.. Entry:
.. Exit:

.. Control Sections:

IEFSD090
Return to caller

IEFVSCAN
• Tables/Work Areas: IWA, QMPA, DD work
area, SCD, SCT, SlOT, JCT, JFCB

IEFVSDRA:

Restart Activation Routine

The purpose of this routine is to issue a
START Restart Reader command for one or
more jobnames.
.. Entry:
• Exit:

IEFVSDRA
Return to Caller

.. Attributes:

Reentrant

• Tables/Work Areas:
.. Control Sections:
IEFVSDRD:

CSCB, CVT, TCB
IEFVSDRA

Restart Determination Routine

The purpose of this routine is to initiate
the process of automatic restart.
.. Entry:
It

Exit:

IEFVSMBR:

To IEFSD305, IEFSD514, IEFSD42Q

.. Attributes: Reentrant; Character
dependence type C

5MB Reader Routine

The purpose of this routine is to read the
5MBs associated with a restarting job and
to convert JCL statements to their original
format •
.. Entry:
• Exit:

IGC0005B
To IGCOI05B, return to caller

• Attributes:

Reentrant

.. Tables/Work Areas:
5MB, RRCWKAR, SCT
• Control Sections:

QMPA, DCB, JCT,
IGCOOOSB

JCT, SCT, QMPA,

The purpose of this routine is to establish
data set device requirements, and to
allocate in response to specific unit
requests •
• Entry:
.. Exit:

.. Control Sections:

IEFSD090

IEFWAOOO: I/O Device Allocation - Demand
Allocation Routine

IEFVSDRD

.. Tables/Work Areas:
CVT, TIOT, LCT

• Control sections:

IEFWAOOO, IEFUCBL
To IEFWDOOO, IEFX3000, IEFXSOOO

IEFVSDRD
.. Tables/Work Areas: UCB Address List,
DMT, UCB, LCT, SCT, SlOT, VOLT, AWT

IEFVSD12: MVT Interpreter - SYSIN
Processor Routine
The purpose of this routine is to set up a
JFCB and allocate space on a direct access
device for a system input data set.
.. Entry:
.. Exit:

IEFSD012
To IEFVHQ or return to caller

.. Control Sections:
IEFUCBL

IEFWA7, IEFWA002,

IEE'WCFAK: I/O Device Allocation - Linkage
Module
The purpose of this routine is to pass
control to the TIOT Construction routine •
• Entry:

IEFWCOOO

Appendix B:

Module Descriptions

349

o

Exit:

To IEFWCIMP

• Control sections:

• Attributes:

• Control Sections:

IEFWCOOO

IEFWCIMP: I/O Device Allocation - TIOT
Construction Routine
The purpose of this routine is to calculate
the main storage required for the TIOT. to
build the TIOT" and to process requests for
direct access space,.
• Entry:
• Exit:

Nonexecutable

IEFWEXTA: I/O Device Allocation - Extended
External Action Routine
The purpose of this routine is to verify
that the correct direct access volumes are
mounted in response to requests for volumes
that contain old direct access data sets.
• Entry:

IEFWCOOO

• Exit:

To IEFXJIMP. IEFWDOOO

IEFWD001

IEFWEXTA
To IEFW41SD. IEFXKIMP

• Tables/Work Areas: JCT, SCT. LCT.
SlOT. VOLT, AWT. TIOT

• Tables/Work Areas: ATCA, MVCAX, CSCB,
LCT, MVCA. SCT, UCB

• Control sections:

• Control Sections:

IEFWCOOO. IEFWC002

IEFWDFAK: I/O Device Allocation:
Module

Linkage

The purpose of this module is to pass
control to the External Action routine.
• Entry:

IEFWSMSG:
Warmstart

Termination - Message Module for

The purpose of this module is to contain
messages to be used by Module IEFWSYP3
during Warmstart.

IEFWDOOO
• Entry:

• Exit:

IEFWSMSG

To IEFWDOOO
• Attributes:

• Control sections:

Non-executable

IEFWDOOO
• Control Sections:

IEFWDOOO: I/O Device Allocation - External
Action Routine
The purpose of this routine is to verify
that the correct direct access volumes are
mounted in response to requests for volumes
that require space allocation for new data
sets.
It also sets up an MVCA for the
mounting of volumes containing old data
sets.
• Entry:
• Exit:

IEFWDOOO
To IEFXTOOD, IEFSD41Q, IEFXKIMP

• Control sections:
IEFWD002

IEFWDOOO, IEFWDMSG.

IEFWD001: I/O Device Allocation - External
Action Messages
The purpose of this module is to contain a
directory and the messages used in the
External Action routine.

350

IEFWD001

OS/360 MVT Job Management (Release 21)

IEFWSMSG

IEFWSTRT: I/O Device Allocation - Message
Module
The purpose of this module is to contain
the messages issued to the operator when a
job is started, and the messages issued to
the operator when a job is terminated due
to ABEND, condition codes, or JCL errors
found any steps have been run.
• Entry:

• Tables/Work Areas: SCT, LCT, TIOT,
UCB. ATCA, MVCA. MVCAX. CSCB, JFCB, TJB
(TSO), TSCVT (TSO)

• Entry:

IEFWEXTA

IEFWSTRT

• Attributes:

Non-executable

• Control sections:

IEFWSTRT

IEFWSWIN: I/O Device Allocation - Linkage
Module
The purpose' of this module is to pass
control to the Decision Allocation routine,
or to the Automatic Volume Recognition
routine.
• Entry:
• Exit:

IEFWSWIT
To IEFX5000 or IEFXV001

• Control sections:

IEFWSWIT

IEFWSYP3:
Warms tart

Termination - SlOT Reader for

The purpose of this module is
match TIOT entries with SlOTs
case of dynamically allocated
build TIOT entries for use by
termination routines.

either to
or, in the
data sets, to
the

• Exit: IGC0403E, IGC0003E, and return
to caller
• Tables/Work Areas: WTPCB, JSCB, UCM,
CVT. IEFQMRES, IEFQMNGR, WPL
• Attributes:

Reenterable

• Control Section:
• Entry:
• Exit:

Return to caller

• Tables/Work Areas: QMPA, JCT, LCT,
SlOT, UCB, TIOT, SIOTTTR, TIOTEXT
• Control sections:

IEFWSYP3

IEFWTERM: Termination - Message Module
The purpose of this module is to contain
the messages issued to the operator when a
job is terminated normally, or when i t is
terminated because of a JCL error found in
the interpreter or initiator.
• Entry:

IGC0303E

IEFWSYP3

The purpose of this routine is to handle
WTP processing when I/O errors occur in the
job queue that is processing WTP messages,
or when no record is available for a WTP
message.
• Entry:

IGC0403E from IGC0303E

• Exit: To IGC0003E, IGC0303E, or return
to caller
• Tables/Work Areas: WTPCB, JSCB, UCM,
CVT. IEFQMRES, IEFQMNGR, WPL

IEFWTERM

• Attributes:

IEFWTP02: Write-to-proqrammer - Error
Processing Routine

Non-executable
• Attributes:

• Control Sections:

Reenterable

IEFWTERM
• Control Sections:

IGC0403E

IEFWTPOO: Write-to-proqrammerInitialization Routine
The purpose of this routine is to
initialize registers and also to obtain and
initialize a work area before passing
control to the WTP Message Processing
routine (module IEFWTP01).
• Entry:

IEFXAMSG: I/O Device Allocation - Message
Module
The purpose of this module is.to contain
the messages issued by the Allocation
Control routine.

IGC0203E from IGC0003E
• Entry:

• Exit: To IGC0003E, IGC0303E, or return
to caller
• Tables/Work Areas: WTPCB, JSCB, UCM,
CVT. IEFQMRES, IEFQMNGR, WPL
• Attributes:

IEFXAMSG

• Attributes:

Non-executable

• Control sections:

IEFXAMSG

Reenterable

• Control Sections:

IGC0203E

IEFWTP01: Write-to-proqrammer - Message
Processing Routine
The purpose of this routine is to process
write-to-programmer (WTP) messages. This
routine uses the Transient Queue Management
routine (SVC 90) to read, write, and assign
SYS1.SYSJOBQE records for
write-to-programmer messages.
• Entry: IGC0303E from IGC0203E and
IGC0403E

IEFXCSSS: I/O Device Allocation Allocation Control Routine
The purpose of this routine is to calculate
table space requirements and obtain the
main storage for the tables used or built
during allocation~
• Entry:
• Exit:

IEFXA
To IEFXJFAK, IEFWAOOO, IEFWCFAK

• Tables/Work Areas: JCT, SCT. LCT,
SlOT, VOLT, AWT, UtB
• Control sections:
Appendix B:

IEFXA. IEFXABOO

Module Descriptions

351

IEFXHOOO: I/O Device Allocation separation Strikeout Routine

IEFXKIMP: I/O Device Allocation - .Non
Recovery Error Routine

The purpose of this routine is to strike
from AWT entries, the bits corresponding to
devices that would violate separation or
affinity requests.

The purpose of this routine is to cancel
the step when a lack of available devices
has been discovered after the TIOT is
constructed.

• Entry:
• Exit:

IEFXHOOO

• Entry:

Return to caller

• Tables/Work Areas:
• Control sections:

LCT, AWT, AVT, UCB
IEFXHOOO

IEFXJFAK: I/O Device Allocation - Linkage
Module
The purpose of this module is to pass
control to the Allocation Recovery routine.
• Entry:
• Exit:

IEFXJOOO

To IEFW41SD

• Tables/Work Areas:
• Control Sections:

I EFXKO 0 0

The purpose of this routine is to contain
the messages used by the Nonrecovery Error
routine.
IEFXKMSG

• Attributes:
IEFXJOOO

LCT, SCT, UCB, TIOT

IEFXKMSG: I/O Device Allocation - Non
Recovery Error Routine Messages

• Entry:

To IEFXJIMP

• Control Sections:

• Exit:

IEFXKOOO

Non-executable

• Control Sections:

IEFXKMSG

IEFXJIMP: I/O Device Allocation Allocation Recovery Routine

IEFXQMOO: Transient Queue Management
Initialization and Read/Write Routine

The purpose of this routine is to inform
the operator of the allocation recovery
options available, and to pass control to
the proper routine to comply with his
request.

The purpose of this routine is to
initialize tables and read or write job
queue records.
• Entry:
• Exit:

• Entry:

IEFXJOOO, IEFV15XL, IEFXJX5A

• Exit:

To IEFXCSSS, IEFSD095, IEFW41SD

• Attributes:

Reusable

• Tables/Work Areas:
UCB, SCT, SlOT
• Control sections:

LCT, AWT, JCT, CVT,
IEFXJOOO

IEFXJMSG: I/O Device Allocation Allocation Recovery Messages

• Entry:

MSRCV, MSSYS, MSOFF

• Attributes:

Non-executable

• Control Sections:
352

IEFXJMSG

OS/360 MVT Job Management (Release 21)

To IGC01090 or return to caller

• Tables/Work Areas: Q/M resident data
area, QMPA, CVT, ECB/IOB
• Attributes:

Reenterable

• Control Sections:

IGC00090

IEFXQM01: Transient Queue Management Track
Assignment Routine
The purpose of this routine is to assign
logical tracks as required.
• Entry:

The purpose of this module is to contain
the messages used by the Allocation
Recovery routine.

IGC00090

• Exit:

IGC01090
To IGC02090 or return to caller

• Tables/Work Areas: QM resident data
area, QMPA, CVT, ECB/IOB
• Attributes:

Reenterable

• Control Sections:

IGC01090

IEFXQM02: Transient Queue Management
Record Assignment Routine

IEFXT002: I/O Device Allocation - TIOT
Compression Routine

The purpose of this routine is to assign
records to a queue entry.

The purpose of this routine is to reduce
the TIOT to its final size, and to provide
an interface with the VARY command

• Entry:
• Exit:

IGC02090
Return to caller

• Tables/Work Areas: QM resident data
area, QMPA, CVT" ECB/IOB
• Attributes:

Reenterable

• Control section:
IEFXTDMY:
Routine

IGC02090

• Entry: IEFXT002, XTTRDJ, XTTEB3,
XTTEA1, XTTEAO
• Exit:

• Tables/Work Areas: LCT"
JCT, SlOT, JFCB, PDQ
• Control sections:

• Entry:

IEFXTDMY

• Exit:

to IEFXKIMP

The purpose of this routine is to determine
the action to be taken when a request for
direct access space is not honored.

• Exit:
• Attributes:

IEFXT003, XUUH06, XUUBOO
To IEFXTOOD, IEFXT002

Reentrant, reusable

• Tables/Work Areas:
• Control sections:

LCT
IEFXTDMY

• Tables/Work Areas:
JCT, SlOT, JFCB
• Control Sections:

LCT, TIOT, UCB,
IEFXT003

I/O Device Allocation - Message
IEFXVMSG: I/O Device Allocation - AVR
Routine Messages

The purpose of this module is to contain
the text of I/O Device allocation messages.

The purpose of .this routine is to contain
the messages used by the AVR routine.

• Entry: MESGDDEV, MESGHEAD,. MESGDSDV,
RESMSG, RESUNIT, WTORREP, JOBCAN,
PRIAMSG

• ',' Entry:.; IEFXVMSG

• Attributes:

• Attributes:

Non-executable

• Control Sections:

IEFXTMSG

IEFXTOOD: I/O Device Allocation - Space
Reguest Routine
The purpose of this routine is to obtain
space on direct access devices for
requesting data sets.

Non-executable

• Control" secti ons :

IEFXVMSG

IEFXVNSL: I/O Device Allocation - AVR
Nonstandard Label Processing Routine
The purpose of this routine is to take the
place of the user's AVR Nonstandard Label
Processing routine when none is supplied.

IEFXTOOO, XTTBCO, WDEXIT
• Entry:

• Exit:

IEFXT002

IEFXT003: I/O Device Allocation - DADSM
Error Recovery Routine

• Entry:

• Entry:

TIOT, UCB,

Queue Management Error Return

The purpose of this routine is to set up
the correct error return code when the
Queue Management Assign routine has been
unable to assign a record for Initator
routine use.

IEFXTMSG:
Module

To IEFWEXTA, IEFXKIMP, IEFXT003

IEFXVNSL

To-IEFWDOOO, IEFXT002, IEFXT003
• Exit:

Return to caller

• Tables/Work Areas: LCT, TIOT, UCB,
JCT, SlOT, JFCB., PDQ

• Attributes:

• Control Sections:

. ' Control.'. sections:

IEFXTOOO

Appendix B:

Reentrant
IEFXVNSL

Module Descriptions

353

IEFXV001: I/O Device Allocation - AVR
Allocation Routine

• Entry:
• Exit:

The purpose of this routine is to perform
allocation for specifically requested
volumes.

IEFX3000, X33B42
Return to caller

• Tables/Work Areas:
• Control sections:

• Entry:

• Tables/Work Areas: ACB, AVT, AWT,
JFCB, LCT, TIOT., UCB., VOLT
• Attributes:

Reusable

• Control Sections:

IEFXV001

IEFXV002: I/O Device Allocation - AVR
Second Module

IEFX5000: I/O Device Allocation - Decision
Allocation Routine
The purpose of this routine is to select
devices for data sets with multiple unit
possibilities.
• Entry:
X55D3G
• Exit:

IEFX5000, XIIB32, X55C86,
To IEFWCFAK, IEFXJFAK

• Tables/Work Areas:
This module contains four subroutines that
perform label processing and verification,
affinity chain verification, serial list
building" and issuing of AVR mount
requests.
• Entry: IEFXV002, PATTEST, SERBUILD,
PUTLIST
To IEFXVNSL, Return to caller

• Tables/Work Areas:
DEB, IOB, LCT, LUT"
• Attributes:
c

ACB, AVT, AWT, CVT,
UCB, VOLT

Reusable

Control sections:

• Control sections:

This routine determines the allocation
solution for unmounted tape requests
specifying either type 3400 tape drive or
type 2400 tape drive units with 9-track
tape.

This routine passes control among the
modules of the step Termination routine
and, when required, passes control to the
Job Termination routine.
• Entry:

IEFYN

• Exit: To lEFW22SD, IEFYPJB3, IEFVJlMP,
IEFZAJB3

• Control sections:

JCT, SCT, LCT
lEFYN

lEFYNMSG: Termination - Step Termination
The purpose of this module is to contain
the messages required for the Step
Termination Control routine.

IEFXV003
8

Entry:

lEFYNMSG, STRMSG01

IEFXV002, to caller
• Attributes:

• Tables/Work Areas:

Non-executable

ACB, AWT, UCB, LCT
• Control sections:

• Attributes:

lEFYNMSG

Reusable

• Control Section:

IEFXV003

IEFX300A: I/O Device Allocation - Device
Strikeout Routine
The purpose of this routine is to modify
the primary and secondary bit patterns in
AWT entries to complete the allocation to a
data set.
354

IEFX5000

lEFYNIMP: Termination - step Termination
Control Routine

• Tables/Work Areas:

• Exit:

LCT, AWT, AVT, UCB

IEFXV002

IEFXV003: I/O Device Allocation -AVR
Unmounted Tape Allocation Routine

• Entry:

IEFX3000

IEFXV001

• Exit: To IEFWCIMP, IEFWDOOO, IEFXJIMP,
IEFXV002" IEFXV003, IEFX300A, IEFX5000

• Exit:

AWT, AVT., UCB, LCT

OS/360 MVT Job Management (Release 21)

lEFYPJB3: Termination - step Termination
Data Set Driver Routine
The purpose of this routine is to obtain
SlOTs and to pass control to the
Disposition and Unallocation routine.
• Entry:
• Exit:

IEFYP
To lEFZGST1, IEFYNlMP

• Tables/Work Areas:
QMPA, SlOT, TCB
• Control Sections:

LCT., TlOT, UCB,
lEFYP

lEFYPMSG: Termination - Step Termination
Messages
The purpose of this routine is to contain
the messages required by the Step
Termination routine.
• Entry:

lEFYPMSG, YPPMSG1, YPPMSG2

• Attributes:

Non-executable

• Control Sections:
lEFYSVMS:

lEFYPMSG

Message Blocking Routine

The purpose of this routine is to block
system messages into 5MBs, and to place
5MBs into the message class queue entry.
UCS

Universal Character

OLTEP

online test executive program

• Exit:

To lEFZGJB1, lEFSD31Q

• Tables/Work Areas:
QMPA
• Control Sections:

• Exit:

The purpose of this routine is to direct
the disposition and unallocation of those
data sets that remain to be processed at
job termination: passed data sets that
were not received, and retained data sets
that were not referred to.
• Entry:
• Exit:

lEFZGJ, ZPOQM
Return to caller

• Tables/Work Areas:
LCT, QMPA, UCB

LCT, SCT, 5MB

The purpose of this module is to contain
the messages required for the Disposition
andUnallocation routine (IEFZGJB1).

Reentrant
• Entry:

• Control Sections:

lEFZGMSG

lEFYS
• Attributes:

DSB Processing Routine

The purpose of this routine is to place
data set blocks in the space reserved for
them in the output queue entries. The
Ioutine also marks the DSB inactive if the
corresponding SYSOUT entry qualifies for
DSO facilities.

Non-executable

• Control Sections:
IEFZGST1:
Routine

lEFZGMSG

Termination - Disposition

The purpose of this routine is to direct
the disposition of data sets as specified
in the DlSP field of the DD statement .•

lEFYT
• Entry:

• Exit:

lEFZGJ

Return to caller

• Attributes:

• Entry:

JCT, PDQ, JFCB,

IEFZGMSG: Termination - Disposition and
Unallocation Messages

lEFYS

• Tables/Work Areas:

lEFYTVMS:

lEFZA

lEFZGJB1: Termination - Disposition and
Unallocation Routine

• Control Sections:
• Entry:

LCT., JCT, PDQ, UCB,

lEFZG, ZGOJ5, ZGOJ8

Return to caller
• Exit:

• Tables/Work Areas: JCT, SCT, TlOT,
SlOT, QMPA, DSB, JMR, DSOCB
• Attributes:

To IEFZGST2 or return to caller

• Tables/Work Areas: LCT, PDQ, SlOT,
TIOT, UCB~ JFCB, QMPA

Reentrant
• Control Sections:

• Control Sections:

lEFZG

lEFYT

lEFZAJB3: Termination - Job Termination
Control Routine

lEFZGST2:
Routine

The purpose of this routine is to provide
entry to the Job Termination routine"
obtain PDQ blocks, and pass control to the
Disposition and Unallocation routine.

The purpose of this routine is to make the
units used by this jobstep available for
allocation to other data sets.

• Entry:

lEFZA

Terminati on - Unallocation

• Entry: lEFZG2, ZGOK09, ZOOA1, ZOOE10,
ZPOC10, ZPOQMGRl
Appendix B:

Module Descriptions

355

• Exit:

Return to caller

• Attributes:

Reentrant

• Tables/Work Areas: LCT, PDQ, SIOT,
TIOT, UCB, JFCB., QMPA
IEF079SD:
• Control Sections:

Linkage Module

IEFZG2
The purpose of this routine is to transfer
control to IEFSD079.

IEFZHMSG: Termination - Disposition and
Unallocation Message Routine
The purpose of this routine is to prepare
messages to the programmer and to the
operator for the Disposition and Allocation
routines .•
• Entry:
XPS631
• Exit:

IEFZH, ZGOE60, ZKOD1, ZKOE1,
Return to caller

• Tables/Work Areas:
(TSO)., TSCVT (TSO)

LCT, QMPA, 5MB, TJB

• Entry:
• Exit:

IEFSD079
To IEFSD079

• Attributes:

Reentrant

IEF082SD: System output Writer - Linkage
Module
The purpose of this routine is to pass
control to the System Output Writer Main
Processing routine.
• Entry:

IEFSD082

• Control sections:TEFZH
• Exit:
IEF060SD:

MVT Initiator - Linkage Module

The purpose of this routine is to transfer
control to module IEFSD16.0.
• Entry:

IEFSD060

• Exit:

To IEFSD160

• Attributes:

• Control sections:

The purpose of this routine is to pass
control to the System Output Writer Command
Processing routine.

Reentrant
IEFSD083

Linkage Module
• Exit:

The purpose of this routine is to transfer
control to module IEFSD161.
• Entry:

IEFSD082

IEF083SD: system Output Writer - Linkage
Module

• Entry:
IEF061SD:

To IEFSD082

IEFSD083

• Control Sections:

IEFSD083

IEFSD061
IEF300SD: MVT Linkage Module

• Exit:

To IEFSD161

• Attributes:
IEF065SD:

Reentrant

Linkage Module

The purpose of this routine is to transfer
control to module IEFSD165.

The purpose of this routine is to provide a
linkage to the System Restart
Initialization routine.
• Entry:
• Exit:

IEFSD300
To IEFSD300, IEFSD055

• Attributes:
• Entry:

IEFSD065

• Exit:

To IEFSD165

Reentrant

• Control sections:

IEFSD300

IEF304SD: MVT Linkage Module
IEF078SD:

Linkage Module

The purpose of this routine is to transfer
control to module IEFSD078.
• Entry:
• Exit:
356

IEFSD078
To IEFSD078

OS/360 MVT Job Management (Release 21)

The purpose of this routine is to provide a
linkage to the System Restart Scratch Data
Sets routine .•
• Entry:
• Exit:

IEFSD304
To IEFSD304, IEFSD055

• Attributes:

Reentrant

• Control Sections:
IEF41FAK:

IEFSD304

Linkage Module

The purpose of this routine is to provide a
linkage to the Allocation Exit routine
during graceful step flush.
• Entry:
• Exit:

IEFW41SD, IEFW1FAK. IEFW2FAK
To IEFW41SD

• Attributes:

Read-only, reenterable

• Control Sections:

IEFW41SD

IEZDCODE: Interpreter - Record
Decompression Routine
The purpose of this routine is to scan a
compressed record and decompress it into
the original uncompressed record,.
• Entry:
• Exit:

IEZDCODE
Branch on register 14

• Tables/Work Areas:
parameter area

Decompression

• Attributes: Refreshable. reenterable.
character-code independent
• Control sections:
IEZNCODE:
Routine

IEZDCODE

Interpreter - Record Compression

The purpose of this routine is to scan a
record and compress it by replacing each
series of occurrences of a selected
character with a count field.
• Entry:
• Exit:

IEZNCODE
Branch on register 14

• Tables/Work Areas:
parameter area

Compression

• Attributes: Refreshable. reenterable,
character-code independent
• Control Sections:
IFASMFDP:

IEZNCODE

SMF Dump Routine

This routine copies a full SMF data set
that is on a direct access volume into a
dump data set on tape.
• Entry:
• Exit:

IFASMFDP
Return to caller

• Attributes:

Reentrant

IGC6603D:

See IEE6603D

IGC4203D:

See IEE4203D

IGC4303D:

See IEE4303D

IGC4403D:

See IEE4403D

IGC4503D:

see IEE4503D

IGC4603D:

See IEE4603D

IGC4703D:

See IEE4703D

IGC4803D:

See IEE4803D

IGC4903D:

See IEE4903D

IGC5103D:

See IEE5103D

IGC5203D:

See IEE5203D

• Attributes: Reentrant, read-only,
self-relocating

IGC5303D:

See IEE5303D

• Control sections:

IGC5403D:

See IEE5403D

IGC5503D:

See IEE5503D

IGC5703D:

See IEE5703D

IGF08501: SVC 34 - Machine Status Control
Routine for Model 85, Part 1
This routine is used only witht he Model
85. The purpose of this routine is to
process the STATUS parameter in the MODE
command.
• Entry:
• Exit:

IGF08501
IGF08502 or return to caller

• Tables/Work Areas:

The purpose of this module is to check the
syntax of the DISPLAY M command and to
display the status of CPU(s) and
channel(s), if requested. If status of
devices and storage" or either, is
requested, control is transferred to the
second load of the routine .•

This routine is used only with the Model
85. The purpose of this routine is to
process all parameters of the MODE command
except the STATUS parameter.
• Entry:
• Exit:

IGFO.8502
Return to caller of SVC 34

• Tables/Work Areas:

CVT, XSA, MSB

• Attributes: Reentrant, read-only,
self-relocating

IGC6103D

• Exit: XCTL to IGC6203D or return to
caller
• Attributes:

IGF08501

IGF08502: SVC 34 - Machine status Control
Routine for Model 85, Part 2

IGC6103D: SVC 34 - DisElay Configuration
Matrix Routine (Load 1)

• Entry:

CVT, XSA, MSB

Reentrant

• Control sections:

IGF08502

IGF24MPD: SVC 34 - VARY PATH Processor for
MultiErocessing Routine (Part 1)

• Control sections:IGC6103D
IGC6203D: SVC 34 - DisElay Configuration
Matrix Routine (Load 2)
The purpose of this module is to display
the status of devices and storage, or
either .•

The purpose of this routine is to process
an operator's request to vary a path to a
device and to cause that path to be
logically brought online for use by, or
logically removed from, the system. This
routine along with module IGF34MPD performs
the same function as module IGF2403D in a
nonrnultiprocessing system.
• Entry:

• Entry:
• Exit:

Return to caller

• Attributes:

Reentrant

• Control sections:
IGC6503D:
358

IGF24MPD

IGC6203D

IGC6203D

See IEE6503D

OS/360 MVT Job Management (Release 21)

• Exit: To IGF34MPD, IEE0503D, or
IEE2103D
• Attributes:

Reentrant

• Tables/Work Areas: Test channel table,
SVRB extended save area
• Control Sections:

IGF24MPD

IGF2403D:
Routine

SVC 34 - VARY PATH Processor

• Entry:
• Exit:

The purpose of this routine is to process
an operator"s request to vary a path to a
device and to cause that path to be
logically brought online for use by, or
logically removed from, the system. The
VARY PATH command can only be used if
Alternate Path Retry (APR) is in the
system.
• Entry:
• Exit:

Return to issuer of SVC 34

• Tables/Work Areas:
• Attributes:
transient

To IEE0503D or IEE2103D
Reentrant

• Tables/Work Areas: Test channel table,
SVRB extended save area.
• Control Sections:

IGF2403D

SVC 34 - MODE Command Router

Reenterable, read-only,

• Control Section:

IGF29701

IGF34MPD: SVC 34 - VARY PATH Processor for
Multiprocessing Routine (Part 2)
The purpose of this routine is to continue
the processing of the VARY PATH command
that was begun by module IGF24MPD in a
multiprocessing system.
• Entry:
• Exit:

IGF34MPD
To IEE0503D or IEE2103D

• Attributes:
The purpose of this
the model (85, 155,
command and to pass
appropriate Machine
which processes the
• Entry:

CVT, MSB, XSA

IGF2403D from IEE3203D

• Attributes:

IGF2603D:
Routine

IGF29701

routine is to determine
or 165) for the MODE
control to the
status Control routine,
command.

• Tables/Work Areas: Test channel table,
SVRB extended save area
• Control Sections:

IGF34MPD

IGF55301: SVC 34 - Machine status Control
Routine for Model 165

IGF2603D

• Exit: XCTL to IGF08501 (for Model 85),
IGF29601 (for Model 155), or IGF55301
(for Model 165)
• Tables/Work Areas:

Reentrant

This routine is used only with the Model
165. The purpose of this routine is to
process the MODE command.

XSA, MSB
• Entry:

IGF55301

• Attributes: Reenterable, read-only,
self-relocating

• Exit:

• Control Sections:

• Tables/Work Areas:

IGF2603D

Return to caller of SVC 34
XSA, MSB, CVT

IGF29601: SVC 34 - Machine status Control
Routine for Model 155

• Attributes: Serially reusable,
read-only, self-relocating

This routine is used only with the Model
155. The purpose of this routine is to
process the MODE command.

• Control section:
IGG2103D:

• Entry:

See IEE2103D

IGF29601
IKJNULL:

• Exit:

IGF55301

Error Conditions Router Routine

Return to caller of SVC 34

• Tables/Work Areas:

XSA, MSB, CVT

This module sets the error code in XSA and
a preformatted error message is issued from
IEE0503D.

• Attributes: serially reusable,
read-only, self-relocating

• Entry:

• Control Sections:

• Exit:

IGF29601

IGF29701: SVC 34 -- Machine status Control
Routine - Model 145
The purpose of this routine is to process
the MODE command for the Model 145.

IKJNULL
IEE0503D

• Tables/Work Area:

XSA

• Control sections:

IKJNULL

• Attributes:
Appendix B:

Reusable
Module Desc:riptions

359

360

05/360 MVT Job Management (Release 21)

Appendix C:

Module Cross-Reference

This appendix consists of five alphabetized lists containing information about MVT job
management load modules and assembly modules:
• Appendix C1 is an alphabetized list of load module names. Listed next to each load
module name are its aliases (if there are any), the assembly modules contained in the
load module, the entry points for the assembly modules, and the control section names
used in the assembly modules.
• Appendix C2 is an alphabetized list of alias names for MVT job management load
modules. Listed next to each alias name is the load module for which it is the
alias, the assembly modules contained in the load module, the entry points for the
assembly modules, and the control sections used in the assembly modules.
• Appendix C3 is an alphabetized list of assembly module names. Listed next to each
assembly module name are the entry points for the module, the control sections used
in the module, the load modules in which it is contained, and the aliases for the
load modules.
• Appendix C4 is an alphabetized list of entry point names for MVT job management
assembly modules. Listed next to each entry point name are the assembly modules for
which it is the entry point, the control sections used in the assembly modules, the
load modules in which the assembly modules are contained, and the aliases for the
load modules.
• Appendix CS is an alphabetized list of control section names used in MVT job
management assembly modules. Listed next to each control section name are the
assembly modules in which it is used, the entry points for the assembly modules, the
load modules in which the assembly modules are contained, and the aliases for the
load modules.
For further information about the
appropriate portions of the text.

assemb~~

modules, refer to Appendix B and to the

Appendix C:

Module Cross-Reference

361

362

05/360 MVT Job Management (Release 21)

Appendix Cl

r--------T--------,--------T--------T--------,
1 Load
1 Alias
IAssemblYI Entry 1 CSECT 1
1 Module 1
IModule 1 Point I Name
1
1
1 (MODLIB) I Name
1
1
1 Name
1
I
1
1
1
1Name

r--------T--------T--------T--------T--------,
1 Load
1 Alias
IAssemblYI Entry 1 CSECT 1
1 Module 1
1Module 1 Point 1 Name
1
1
1 (MODLIB) 1 Name
1
1
1 Name
1
1
1Name
1
1
1
r--------+--------+--------+--------+--------~

IEECVCTII
IIEEVRFRXIIEEVRFRXIIEEVRFRXI
1
1IEECVINTIIEECVCTII IEECVCTI 1
IEELWAITI
1IEELWAITIIEELWAITI IEELWAITI
IIEEPALTRIIEEPALTRIIEEPSTPll
IEEPALTRI
IEEPDISC
IIEEPDISCIIEEPDISCIIEEPDISCI
IEEPPRES
1IEEPPRESI IEEPPRES 1IEEPPRES 1
IEEPRTN
1IEEPRTN2 1IEEPRTN21 IEEPRTN2 1
IEEPRWI2
1IEEPRWI21 IEEPRWI21 IEEPRWI2 I
IEESD563
1IEESD5631IEESD563 1IEESD5631
IEESD564
IIEESD5641IEESD5641IEESD564I
IEESD565
IIEESD5651IEESD5651IEESD5651
IEESD575 IEESD581 IEESD5811IEESD5811IEESD5811
IEESD5751 IEESD5751 IEESD575 1
IEESD576 IEESD580 IEESD5761IEESD57 6 1IEESD576 1
IEFQDELQIIEFQDELEIIEFQDELEI
IEESD580lIEESD580lIEESD5801
IEESD577
IEESD5771 IEESD5771 IEESD5771
IEFQMNQQIIEFQMNQ 2 1IEFQMNQ21
IEESD578
IEESD5781IEESD5781IEESD5781
IEESD579
IEESD5791IEESD5791IEEMSWTOI
1
IIEESD57 9 1
IEFQMNQQIIEFQMQ2 IIEFQMNQ2
IEESD5821IEESD82A IEESD58 2 1IEESD58 2 1IEESD582
1
IIEESD82AI
IEESD5831
IEESD5831IEESD5831IEESD583
IEESD5841
IEESD5841 IEESD5841 IEESD584
IEESMFITIIEESMFI4IEESMFITIIEESMFITIIEESMFIT
1
I
IIEESMFI 4 1
IEESMFI21
IEESMFI21IEESMFI21IEESMFI2
IEESMFI31IEESMFMS IEESMFI31IEESMFIOIIEESMFI3
IIEESMFIO
IIEESMFI31
1
IIEESMFMSI
IEESMFO I 1
IEESMFOI I IEESMFOI IIEESMFOI
IEESMFWRI
IEESMFWRIIEESMFWRIIEESMFWR
IEEVDNXI1IEESD562 IEESD5621IEESD5621 IEESD562 I
IEEVDSPll
IEEVDSPIIIEEVDSPIIIEEVDSPll
1
IEEVDRGNIIEEVDRGNIIEEVDRGNI
IEEVICLRIIEFICR
IEEVICLRIIEEVICLRIIEEVICLRI
1
IIEFICR I
I
IEEVICTLIIEEVIC
IEEVICTLIIEEVICTLIIEEVICTLI
I
IEEVSMSGIIEEVSMSGIIEEVSMSGI
IEEVIPL I
IEEVIPL IIEEVIPL IIEEVIPL I
IEEVLOSPI
IEEVLOSPIIEEVLOSPIIEEVLDSP
IEEVLIN I
IEEVRFRXIIEEVRFRXIIEEVRFRX
I
IEEVLINIIIEEVLINIIIEEVLINl
IEEVLNKTI
IEEVLNKTI
I
IEEVLOUTI
IEEVLOUTIIEEVLOUTIIEEVLOUT
I EEVMNT 1 1
IEEVMNTIIIEEVMNTIIIEEVMNTl
I
I
IEEVJCL IIEEVJCL I IEEVJCL
IIEEVMNT21
IEEVSMSGIIEEVSMSGIIEEVSMSG
IEEVMNT21IEEVMNT21IEEVMNT2
I
I
IIEEVOMSGI
IEEVOMSGIIEEVOMSGIIEEVOMSG
IIEEVPRESI
IEFPRES IIEFPRES IIEFPRES
1
1
IEFKlMSG 1IEFKlMSG I IEFKIMSG
1L ________ 1________ i -_______
IEEVPRESIi ________
IEEVPRES I ________
IEEVPRES JI
~

~

(Continued)

I

r--------+--------+--------+--------+--------~

I IEEVRCTL 1
1IEEVRCTL 1IEE.VRCTL 1 IEEVRCTL 1
IEEVRJCL1 IEEPSN IIEEVRJCLIIEEVRJCLIIEEVRJCLI
1
IIEEPSN IIEEPSN IIEEPSN 1
I
IIEEVLNKTI
IIEEVLNKTI
IEEVSIPLI
IEEVSIPLIIEEVSIPLIIEEVSIPLI
IEEVSTARI
IEEVSTARIIEEVSTARIIEEVSTARI
1
1
1 IEEVJCL 1
1
IEEVJCL IIEEVJCL IIEEVJCL 1
IEEVWAITIIEEVWDAR IEEVWAITIIEEVWAITIIEEVWAITI
IEEXEDNA I
IEEXEDNA I IEEXEDNA 1 IEEXEDNAI
IEE050301
IEE0503DIIEE05030lIEE050301
IGC5503D 1
IEE5503DI IEE5503DI 1EE550301
IGC5803DI
IKJ5803DIIKJ5803DIIKJ5803DI
1
IKJNULL IIKJNULL IIKJNULL I
IIEFBR14 1
IEFBR14 IIEFBR14 IIEFBR14 1
IIEFDSDRPI
IEFQASGQIIEFQASGNIIEFQASNMI
I
1
1
I IEFQASGN I
I
1
IEFDSDRPIIEFOSORPIIEFOSDRPI
1
1
IEFQMRAW I IEFQMRAWI IEFQMRAWI
I
1
1
1
IIEFQMWTOI
1
1
1IEFQBVMSI IEFQMSSSI IEFQMSSSI
IIEFQMRAWIIEFQMRAWIIEFQMRAWI
IIEFDSO 1
1
I
1
I IEFQMWTO 1
I
IIEFDSOCPIIEFDSOCPIIEFDSOCPI
IEFDSOALI
IIEFDSOALIIEFDSOALIIEFDSOALI
IEFDSOCRI
IIEFQMRAWIIEFQMRAWIIEFQMRAWI
1
1
I
1 IEFQMWTO I
I
IIEFQMNQQIIEFQMNQ21IEFQMNQ21
1
IIEFDSOCRIIEFOSOCRIIEFDSOCRI
IIEFS01681IEFSD0681IEFSD0681
1
1
IIEFSDl121IEFSDl121IEFSDl121
1
IIEFSDIIIIIEFSDIIIIIEFSDllll
IIEFDSOFBI
IIEFDSOFBIIEFDSOFBIIEFDSOFBI
1IEFDSOLP I
IIEFDSOLPIIEFDSOLPIIEFDSOLPI
IIEFDSOSMI
IIEFDSOSMIIEFOSOSMIIEFDSOSMI
IIEFDSOWRI
IIEFDSOWRIIEFDSOWRIIEFDSOWRI
IIEFIIC 1
IIEFIIC IIEFIIC IIEFIIC 1
IIEFIRC 1
IIEFIRC IIEFIRC IIEFIRC 1
I
1
IIEEVSMSGIIEEVSMSGIIEEVSMSGI
IIEFLOCDQILOCDQ
IIEFLOCOQILOCDQ
IIEFLOCOQI
IWC
1
WC
I
I
I
1
1LOCCAN I
LOCCAN I
I
I
1
IIEFCNVRT CNVRT
IIEFCNVRTI
IIEFRDWRT WRT
IIEFRDWRTI
I
1
RD
I
1
I
I
I
IEFMCVOLIIEFCVOL3 IEF41FAK IEFW2FAKIIEFW41SDI
IIEFCVOL2
IEFWIFAK 1
1
IIEFCVOLl
IEFW41SDI
1
I
IEFYSVMS IEFYS
IIEFYS
I
I
IEFVMMSl IEFVMl IIEFVMl I
1
IEFVMLS7 IEFVM7 IIEFVM7 I
I
IEFVMLS6IEFVMSGRIIEFVM6 1
IEFVMFAK IEFVMCVL 1 IEFVMCVL 1
I
I
IEFSOIIIIEFSDIII1IEFSDllli
1
IEFQMRAW IEFQMRAWIIEFQMRAWI
1
1 IEFQMWTO 1
IEFQMLKli ________
IEFQMSSSIIEFQMSSSI
________ i1________ i ________
________ J
~

(Continued)

Appendix Cl

363

r--------T--------T--------T--------T--------,
1 Alias 1Assembly 1 Entry 1 CSECT 1

1 Load
1 Module
1 Name
1

1
1
1

1Module 1 Point
1 (MODLIB) 1 Name
IName
1

1 Name
1
1

r--------T--------T--------T--------T--------,
1 Alias 1Assembly 1 Entry 1 CSECT 1

1 Load
1 Module
1 Name
I

1
1
1

I

~

~

~

~

(Continued)

364

OS/360 MVT Job Management (Release 21)

1Module 1 Point
1 (MODLIB) 1 Name
1Name
1

1 ,Name
1
1

1
1
1

~--------f--------+--------+--------+--------f

~--------+--------f--------+--------+-------~~

1
IIEFQASGQIIEFQASGNIIEFQASNMI
1
1
1
IIEFQASGNI
1
IIEFMCVOLIIEFCVOL31IEFCVOL3 1
1
1
1IEFCVOL21 IEFCVOL2 1
1
1
IIEFCVOL11IEFCVOL11
IEFPRINTIIEFPRT IIEFPRTXXISPRINTERlsPRINTERI
IEFQDELEI
IIEFQDELQIIEFQDELEIIEFQDELEI
1IEFQINTZI IEFQINTZI IEFQINTZ 1
IEFQINTZ 1
IEFQMDQQIIEFQMDQ2IEFQMDQQIIEFQMDQ21IEFQMDQ21
IEFQMNQ21
IEFQMNQQIIEFQMNQ21 IEFQMNQ2 1
IEFQMRAWI
IEFQMRAWIIEFQMRAWIIEFQMRAWI
1
1
1IEFQMWTO 1
IEFQMSSSIIEFIRCB IEFQAGSTIIEFQAGSTIIEFQAGSTI
1
IEFIRCB ,I IEFIRCB 1IEFIRCB 1
1
IEFQMRAWIIEFQMRAWIIEFQMRAWI
1
1
1IEFQMWTO 1
1
IEFQMNQQ'I IEFQMNQ21 IEFQMNQ21
1
IEFQBVMSIIEFQMSSSIIEFQMSSSI
1
IEFQASGQIIEFQASGNIIEFQASNMI
1
1
IIEFQASGNI
IEFQMUNCI
IEFQMUNQIIEFQMUNCIIEFQMUNCI
IEFRCLN11'I IEFRCLN11 IEFRCLN11 IEFRCLN11
IEFRCLN21
1IEFRCLN21IEFRCLN21 IEFRCLN2 1
IEFRSTRTIIEFSMR IIEFRSTRTIIEFSMR IIEFRSTRTI
1
1
1IEFRSTRT 1
1
IEFSDTTEI
IIEFSDTTEIIEFSDTTEIIEFSDTTEI
IEFSDXXXI
IIEFSDXXXIIEFSDXXXIIEFSDXXXI
IEFSDXYZI
IIEFSDXYZIIEFSDXYZIIEFSDXYZI
IEFSDOXXI
1IEFSDOXXI IEFSDOXXI IEFSDOXX 1
IEFSDO 601
1IEFO 61SD 1IEFSD0611 IEFSD0611
I
1IEFSD160lIEFSD0601 IEFSD60MI
I
I
1
IIEFSD0601
IEFSD061 IEFW42SD IEFQASGQIIEFQASGNIIEFQASNMI
I
IIEFQASGNI
IEFSD104 IEFIDUMPIIEFIDUMPIIEFIDUMPI
IEFSD064 IEFIDMPMIIEFIDMPMIIEFIDMPMI
IEFDSTRTIIEFDSTRTIIEFDSTRTI
IEFDSTBLIIEFDSTBLIIEFDSTBLI
IEFDSLSTIIEFDSLSTIIEFDSLSTI
IEFACTRTIIEFACTRTIIEFACTRTI
IEFZGST11ZGOJS
IIEFZG
1
IZGOJ5
1
1
IIEFZG
I
1
IEFYRCDSIIEFYRCDSI IEFSD572 1
1
1IEFYRCDS 1
IEFYPMSGIYPPMSG2 IIEFYPMSGI
IYPPMSG1 1
1
1IEFYPMSG 1
1
IEFYPJB31IEFYP
IIEFYP
I
IEFYNMSG 1STRMSG011 IEFYNMSG 1
IIEFYNMSGI
1
IEFYNIMPIIEFYN
IIEFYN
1
IEFWTERMIIEFWTERMIIEFWTERMI
IEFVSDRAIIEFVSDRAIIEFVSDRAI
IEFVJMSGIIEFVJMSGIIEFVJMSGI
IEFVJIMP I IEFVJ
1IEFVJ
1
IEFUSI IIEFUSI IIEFUSI 1
IEFUJI IIEFUJI IIEFUJI I
IEFSMFWIIIEFSMFWII IEFSMFWI 1
IEFSMFLKIIEFACTLKIIEFACTLKI
1
IEFSMFIE 1IEFSMFIE 1IEFSMFIE 1
1________ ________ IEFSD514
IEFSD5141 ________
IEFSD5141J
L
_______ 1________

1
1
1

I

I

IEFSD42Q IEFW42SDIIEFW42SDI
IEFSD31Q IEFW31SDIIEFW31SDI
IEFSD22Q IEFW22SDIIEFW22SDI
IEFSD16S IEFSD06SIIEFSD06S1
IEFSD166IEFSD0661IEFSD0661
IEFSD164IEFSD06 4 1IEFSD0 64 1
IEFSD161IEFSD0611IEFDSOALI
IQMTMSD 1
IIEFSD0611
IEFSDl12 IEFSDl12IIEFSD~121
IEFSD111IEFSD1111IEFSDllli
IEFSD110 IEFSD110lIEFSDl101
IEFSD104IEFSD1041IEFSD1041
IEFSD10l IEFSD1011IEFSD1011 '
IEFRPREP IEFRPREPIIEFRPREPI
IEFQMUNQ IEFQMUNCIIEFQMUNCI
IEFQMRAW IEFQMRAWIIEFQMRAWI
1
IIEFQMWTOI
IEFQMNQQIIEFQMNQ21IEFQMNQ21
IEFQMLK11IEFQMSSSIIEFQMSSSI
IEFQMDQQIIEFQMDQ21IEFQMDQ21
IEFQDELQIIEFQDELEIIEFQDELEI
IIEFSDPPTI
IIEFSDPPTI
IIEF060SDIIEFSD060lIEFSD060
1IEFZGJBLI ZPOQM
IIEFZGJ
IIEFZGST2jZPOQMGR11IEFZG2
I
IZPOC10 1
IIEFZG2 1
1
1
1ZGOK09 1
1
IZOOE10 1
1
IZOOA1
1
IIEFZHMSGIXPS631 IIEFZH
1
IZKOE1
1
IZKOD1
1
I
1
IZGOE60 I
1
IIEFZH
1
IEFSD062IEFV42211IEFQASGQIIEFQASGNIIEFQASNMI
I
I
1 IEFQASGN 1
IIEFSD1111IEFSD1111IEFSD1111
IIEFSD110lIEFSD110lIEFSD1101
IIEFSD1031IEFSD0631IEFSD0631
1IEFQMRAWIIEFQMRAWI IEFQMRAWI
1
1
IIEFQMWTOI
IIEF065SDIIEFSD065 1IEFSD0651
IIEF061SDIIEFSD0611IEFSD0611
IEFSD514 1IEFSD514 1 IEFSD514 1
IEFSD1621IEFSD0621IEFSD0621
IEFSDl121IEFSDl121IEFSD1121
IEFSD070
IEFSD070lIEFSD070lIEFSD0701
IEFSD07S
IEF079SDIIEFSD0791IEFSD0791
1
IEFSD07SIIEFSD07SIIEFSD07S1
IIEFSDOSOIIEFSD079 IEFSDOS21IEFSDOS21IEFSDOS21
I
IIEEVWTRl IEFSDOS11 IEFSDOS11 IEFSDOsil
1
1
IEFSDOSOIIEFSDOSOIIEFSDOSOI
1
1
IEFSD0791IEFSD0791IEFSD0791
I
1
IEFQMUNQIIEFQMUNCIIEFQMUNCI
1
1
IEFQMDQQ 1IEFQMDQ 21 IEFQMDQ 21
1
I
IEFQDELQ 1IEFQDELE 1 IEFQDELE 1
1
1
IEF07SSDIIEFSD07SIIEFSD07S1
1
1
IEFSDOS41IEFSDOS41IEFSDOS41
1
1
IEFSDOS31IEFSDOS31IEFSDS3MI
1L________ I ________ _______ 1________ IIEFSDOS31
________ J
~

~

~

~

(Continued)

r--------T--------T--------T--------T--------,
1 Load
1 Alias
IAssemblYI Entry 1 CSECT
1
1 Module 1
1Module
1 Point
1 Name
1
1 Name
1
1 (MODLIB) 1 Name
1
1
1
1
1
1
1
1Name
t--------+--------f--------+--------+--------~
IIEFSD085 IEF850SDIIEFSD1711IEFSD0711IEFSD71MI
1
IEF085SDI
1
1 IEFSD071 1
1
IEFSD0711IEFSD0851IEF850SDIIEFSD85MI
1
1
1IEF085SD 1 IEFSD085 1
IIEFSD0 85 1
1
1
1
1
1IEFQMRAWI IEFQMRAWI IEFQMRAWI
1
1
1
1 IEFQMWTO 1
IIEFSD086 IEF086SD IEFSD0861 IEFSD0861 IEFSD086 1
IIEF086SDIIEFSD86MI
1
1
IEFQMRAWI IEFQMRAWI IEFQMRAWI
1
1
1 IEFQMWTO 1
IEFSD0891 IEFSD0891 IEFSD89MI
1
1
1
IIEFSD0891
1
IEFSD0881 IEFSD0881 IEFSD0881
IIEFSD087
IEFSD0891IEFSD089JIEFSD89MI
1
1
IIEFSD0891
1
IEFSD0881 IEFSD0881 IEFSD0881
1
IEFSD0871IEFSD0871IEFSD87MI
1
1
IIEFSD0871
IIEFSD094
IEFSD0891IEFSD0891IEFSD89M
1
1
IIEFSD089
1
IEFSD0881 IEFSD088j IEFSD088
1
IIEFSD0951IEFSD09SIIEFSD095
1
IEFSD094(IEFSD094IIEFSD094
IIEFSD102
IEFSD1021IEFSD1021IEFSD102
1 IEFSD10 5
IEFSD10S1 IEFSD1051 IEFSD105
1 IEFSD26 3
IEFUTL
IIEFUTL
IIEFUTL
1
IEFUSO
IIEFUSO
1 IEFUSO
1
IEFSMFAT 1 IEFSMFAT 1 IEFSMFAT
1
IEFSD2631 IEFSD2631 IEFSD263
IIEFSD300
IEFSD3121 SD305MG11IEFSD312
(
1SD304MG21
1
1
1SD3 04MGl 1
1
1
IIEFSD312(
1
IEFSD310 1IEFSD310 1 IEFSD310 1
1
IEFSD3031 IEFSD3031 IEFSD3031
1
1
IEFSD3021 IEFSD3021 IEFSD3021
1
IEFSD3011IEFSD3011IEFSD3011
1
(IEFSD300 1IEFSD3001 IEFSD300 1
IIEFSD304j
IEFQDELQIIEFQDELEIIEFQDELEI
1
1
IEFQASGQ 1 IEFQASGN 1 IEFQASNM 1
(
( I IEFQASGNI
1
1
1
IEFSD3051 IEFSD3051 IEFSD3051
(
(
IEFSD3041 IEFSD3041IEFSD304j
(
IEFQMRAWI IEFQMRAWI IEFQMRAW 1
(
1
1 IEFQMWTO 1
IEFQMNQQIIEFQMNQ~IIEFQMNQ21
1
(
IEFVSDRDIIEFVSDRDIIEFVSDRDI
1
IEFVSDRAIIEFVSDRA(IEFVSDRAI
(
IEFSD514 1IEFSD5141 IEFSD514 I
IEFSD312 1SD305MG1(IEFSD312 1
1
(
1SD304MG 2 1
1
1
1
1SD304MGli
1
IIEFSD3121
(
1
IEFSD310lIEFSD310lIEFSD3101
IEFSD3081
IEFSD308IIEFSD308(IEFSD3081
IIEFSQINTI
IEFSD05SIIEFSD0551IEFSD0551
1
1
( IEFQMSGV 1
1 IEFQMSG VI
1
1
1IEFORMAT 1IEFORMAT 1 IEFORMAT 1
1
1
1IEFSD311 1SD55MSG31 IEFSD3111
1
1
1
1 SD55MSG21
1
1
1
1
1
1SD55MSGli
IIEFSD311(
1
1
1
1
1
1
1 IEF304SDI IEFSD3041 IEFSD304 1
l __ _____ ________ i -_______ ________ ________ J
~

~

~

~

11
IEFSD08 4 1IEFSD08 4 1IEFSD0841
I
I
I
I
IEF078SDIIEFSD0781IEFSD0781
lIEFCVOL1IIEFMCVOL IEFMCVOL1IEFCVOLllIEFCVOLli
I
I
1IEFCVOL21 IEFCVOL21
I
1
I IEFCVOL31 IEFCVOL3 I
1
I
IEFQASGQ 1IEFQASGNI IEFQASGN I
1
1
1
IIEFQASNMI
IEF41FAKIIEFW2FAKIIEFW41SDI
1
I
1
1
IIEFW1FAKI
1
1
1
1IEFW41SD 1
1
IIEFYS
1
1
1
IEFYSVMS 1IEFYS
1
1
IEFVMMSll IEFVMl 1IEFVM1
IEFVMLS71IEFVM7 IIEFVM7 1
1
1
IEFVMLS61 IEFVMSGRI IEFVM6 1
IEFVMFAK 1IEFVMCVLI IEFVMCVL 1
1
IEFSDll11 IEFSDll11 IEFSDll11
1
1
IEFQMRAWI I EFQMRAW 1IEFQMRAWI
1
I
I IEFQMWTO 1
IEFQMLKll IEFQMSSS 1IEFQMSSS 1
1
IIEFCVOL2 IEFMCVOL IEFMCVOLIIEFCVOL1IIEFCVOLli
1
1IEFCVOL21 IEFCVOL2 1
1
1IEFCVOL31IEFCVOL31
I
IEFQASGQ 1IEFQASGN I IEFQASG N I
1
1
1
IIEFQASNMI
I
1IEF41FAK I IEFW2FAKI IEFW41SD 1
1
1
IIEFWlFAKI
1
1
I
I IEFW41SD I
I
IEFYS
IIEFYS
1L ________ ________ 1IEFYSVMSI
_______ ________
_______ -J1

IIEFVMLS71IEFVM7 IIEFVM7 1
IIEFVMLS61IEFVMSGRIIEFVM6 1
IIEFVMFAKIIEFVMCVLIIEFVMCVLI
IIEFSDllllIEFSDllllIEFSDllll
IIEFQMRAWIIEFQMRAWIIEFQMRAWI
1
1
In~Mwrol
IIEFQMLK1IIEFQMSSSIIEFQMSSSI
IEFCVOL3 IEFMCVOLIIEFMCVOLIIEFCVOL1IIEFCVOLli
1
IIEFCVOL21IEFCVOL21
I
I IEFCVOL31 IEFCVOL31
lIEFQASGQIIEFQASGN1IEFQASGNI
1
1
I IEFQASNM 1
IIEF41FAKIIEFW2FAK1IEFW41SDI
I
1
1IEFW1FAK I
1
1IEFW41SD 1
1
IIEFYS
1
1IEFYSVMSI IEFYS
1IEFVMMSll IEFVMl 1 IEFVMl 1
1IEFVMLS71 IEFVM7 IIEFVM7 I
I IEFVMLS61 IEFVMSGRI IEFVM6 I
IIEFVMFAKIIEFVMCVL1IEFVMCVLl
IIEFSD111lIEFSDlll1IEFSDllli
IIEFQMRAWIIEFQMRAWIIEFQMRAWI
1
1
I
1 IEFQMWTO 1
IIEFICR lIEEVICLRIIEEVICLR1IEFICR IIEEVICLRI
1
I
1
IIEEVICLRI
1
IIEFIRCB IIEFQMSSSIIEFQAGSTIIEFQAGSTIIEFQAGSTI
IIEFIRCB IIEFIRCB IIEFIRCB 1
1
1
IIEFQMRAWIIEFQMRAWIIEFQMRAWI
1
1
I
I
I
1
IIEFQMWTOI
1
1
IEFQMNQQ 1IEFQMNQ 21 IEFQMNQ 21
1
1
IEFQBVMSIIEFQMSSSIIEFQMSSSI
1
1
IEFQASGQIIEFQASGNIIEFQASNMI
1
1
I
I IEFQASGN 1
IIEFPRT
IEFPRINT IEFPRTXX SPRINTER I SPRINTER I
IEFQMDQ2 IEFQMDQQ IEFQMDQQ IEFQMDQ21IEFQMDQ21
IEFSD064 IEFSD061 IEFACTRT IEFACTRTIIEFACTRTI
IEFDSLST IEFDSLSTIIEFDSLSTI
IEFDSTBL IEFDSTBLIIEFDSTBLI
IEFDSTRT IEFDSTRT1IEFDSTRTI
IEFIDMPM IEFIDMPMIIEFIDMPMI
IEFIDUMP IEFIDUMPIIEFIDUMPI
IEFQASGQ IEFQASGNIIEFQASGNI
I
I IEFQASNMI
IEFQDELQ IEFQDELEIIEFQDELEI
IEFQMDQQ IEFQMDQ21IEFQMDQ21
IEFQMLK1IIEFQMSSSIIEFQMSSSI
IEFQMNQQIIEFQMNQ21IEFQMNQ21
IEFQMRAWIIEFQMRAWIIEFQMRAWI
I
I IEFQMWro I
IEFQMUNQIIEFQMUNCIIEFQMUNCI
IEFRPREPIIEFRPREP1IEFRPREPI
IEFSD10l1IEFSD101IIEFSD1011
IEFSD1041 IEFSD1041 IEFSD1041
IEFSDllOIIEFSDllOIIEFSDllOI
IEFSDllllIEFSDllllIEFSDllll
IIEFSDl121IEFSDl121 I EFSDl121
I
1
IIEFSD161
lIEFSD061jIEFSD0611
L________ ________
_______ ________ ________ J



r--------T--------T--------~-------T--------,

I Entry
I Point
I Name
I

I Assembly I CSECT
I Module I Name
I (MODLIB) I
I Name
I

I Load
I Module
I Name
I

I Alias
I Name
I
I

I
I
I
I

~--------+--------+--------+--------+--------I

I
I
I

r--------T--------T--------T----~---T--------,

I Entry
I Point
I Name
I

I Assembly I Csect
I Module I Name
I (MODLIB) I
I Name
I

I Load
I Module
I Name
I

I Alias
I Name
I
I

I
I
I
I

~--------+--------+--------+--------+--------~

IIEFXV0031IEFXV003 IEFXV003 IEFXvAVRIIEFXVOOl
IIEFX3000lIEFX300A IEFX3000 IEFXVAVRIIEFXVOOl
IEFWAOOOI IEFWCOOO
I
I
IIEFX5000lIEFX5000 IEFX5000 IEFWAOOOIIEFWCOOO
I
I
IEFXVAVRI IEFXVOOl
IEFSD061lIEFW42SD
IIEFYN
IIEFYNIMP IEFYN
I
I
I IEFSD064
I
I
IIEFSD104
IIEFYNMSGIIEFYNMSG IEFYNMSG IEFSD061lIEFW42SD
I
I
I IEFSD064
I
I
IIEFSD104
IIEFYP
IIEFYPJB3 IEFYP
IEFSD061lIEFW42SD
I
IIEFSD064
I
IIEFSD104
IEFYPMSGIIEFYPMSG IEFYPMSG IEFSD061lIEFW42SD
I
IIEFSD064
I
IIEFSD104
IEFYRCDSIIEFYRCDSIIEFSD572 IEFSD061lIEFW42SD
I
I
I IEFSD064
I
I
I IEFSD104
IEFYS
I IEFYSVMSI IEFYS
IEFW21SDIIEFVMCVLI
I
I
I IEFXA
I
I
I
I IEFVMl I
I
I
IEFVM6LSI IEFXKOOO I
I
I
I IEFXJOOO I
I
I
I IEFXJX5A I
I
I
I IEFV15XLI
I
I
IEFMCVOLI IEFCVOL31
I
I
IIEFCVOL21
I
I
IIEFCVOLll
I
I
IEFWDOOOIIEFW41SDI
IEFZGIIEFZGST1IIEFZG
IEFSD061lIEFW42SDI
I
I
I IEFSD064 I
I
I
I IEFSD1041
IEFZG2 IIEFZGST21IEFZG2
IEFSD061lIEFW42SDI
I
I
I IEFSD064 I
I
I
I IEFSD1041
IEFZH
IIEFZHMSGIIEFZH
IEFSD061lIEFW42SDI
I
I
I IEFSD064I
I
I
I IEFSD1041
IEF085SDIIEFSD0851IEFSD85MIIEFSD08SIIEF8S0SDI
I
I IEFSD08S1
I IEFSD071I
I
I
I
IIEF08SSDI
IEF086SDIIEFSD08 6 1IEFSD86MIIEFSD08 6 1IEF086SDI
I
IIEFSD0861
I
I
IEF8S0SDIIEFSD08SIIEFSD8SMIIEFSD08SIIEF8S0SDI
I
IIEFSD08S1
I IEFSD071 I
IIEF08SSD
I
I
I
IEZDCODEIIEZDCODEIIEZDCODEIIEFVMF I
I
I
I IEFVINA I
IEZNCODEIIEZNCODEIIEZNCODEIIEFVMB I
I
I
IIEFVINA I
IGC0005BIIEFVSMBRIIGCOOOSBIIGCOOOSBI
IGC0203EIIEESMFALIIGC0203EIIGC0208CI
IIEFWTPOOIIGC0203EIIGC0203EI
IGC0303EIIEFWTP01IIGC0303EIIGC0303EI
IGC0403EIIEFWTP021IGC0403EIIGC0403EI
IIGC6103DIIGC6103DIIGC6103DIIGC6103DI
IIGC6203DIIGC6203DIIGC6203DIIGC6203DI
IIGF08S01lIGF08S01lIGF08501lIGF08S011
IIGF08S021IGF08S021IGF08S021IGF085021
IIGF2603DIIGF2603DIIGF2603DIIGF2603DI
IIGF29601lIGF29601lIGF29601lIGF296011
IIGF29701lIGF29701lIGF297011IGF297011
I
_______ ________ ________ L- _______ ________ J

IGFSS3011
I
IGCS803DI
I
IGCS803D
I
IEFWDOOO IEFW41SD
IEFVRRl
IEFLOCDQ LOCCAN
LOC
LOCDQ
LOCCAN
IEFLOCDQ IEFLOCDQ IEFLOCDQ LOCCAN
LOC
LOCDQ
IEFVRRl
IEFLOCDQ IEFLOCDQ IEFVRRl
LOCDQ
IEFLOCDQ LOCDQ
LOCCAN
LOC
MESGDDEVIIEFXTMSG IEFXTMSG IEFWDOOO IEFW41SD
MESGDSDVIIEFXTMSG IEFXTMSG IEFWDOOO IEFW41SD
MESGHEAD IEFXTMSG IEFXTMSG IEFWDOOO IEFW41SD
IMSOFF
IEFXJMSG IEFXJMSG IEFVM6LS IEFXKOOO
IEFXJOOO
I
IEFXJX5AI
I
IEFV15XLI
I
IEFXJMSG IEFXMJSG IEFVM6LS IEFXKOOOI
MSRCV
IEFXJOOO I
IEFXJXSAI
IEFV1SXLI
IEFXJMSG IEFXJMSG IEFVM6LS IEFXKOOOI
MSSYS
IEFXJOOO I
IEFXJXSAI
IEFV1SXLI
PRIAMSG IEFXTMSG IEFXTMSG IEFWDOOO IEFW41SDI
RD
IEFRDWRT IEFRDWRT IEFVRRl
I
IEFLOCDQ IOCCAN I
LOCDQ
I
LOC
I
RESMSG
IEFXTMSG IEFXTMSG IEFWDOOO IEFW41SDI
RESUNIT IEFXTMSG IEFXTMSG IEFWDOOO IEFW41SDI
I
SD304MGl IEFSD312 IEFSD312 IEFSD3041
IEFSD300 I
I
SD304MG2 IEFSD312 IEFSD312 IEFSD3001
I
IEFSD3041
I
SD30SMGl IEFSD312 IEFSD312 IEFSD3041
I
IIEFSD3001
I
SDSSMSGl IEFSD311 IEFSD311 I IEFSQINTI
I
SD5SMSG2 IEFSD311 IEFSD311lIEFSQINTI
I
SDS5MSG3 IEFSD311 IEFSD311 I IEFSQINTI
I
SPRINTER IEFPRTXX SPRINTERIIEFPRINTIIEFPRT I
STRMSGOl IEFYNMSGIIEFYNMSGIIEFSD0611IEFW42SDI
I
I
I IEFSD064I
I
I
IIEFSD1041
UCBCONT IEFSCAN IIEFSCAN IIEFW21SDIIEFVMCVLI
I
I
I
I IEFVMl I
I I
I
I IEFXA
I
I
I
I IEFWAOOO I IEFWCOOO I
IUCBSCAN IEFSCAN IIEFSCAN IIEFW21SDIIEFVMCVLI
I
I
I
I IEFVMl I
I
I
I
I DnA
I
I
I
I IEFWAOOO I IEFWCOOO I
IVM7000
IEFVMLS11IEFVMl IIEFW21SDIIEFVMCVLI
I
I IEFVMQMI I
I IEFXA
I
I
I IEFVMPDQI I IEFVMl I
I
I
I IEFVMVTEII
IVM70S5
IEFVMLS1IIEFVMl
L________ ________
________ IIEFW21SDIIEFVMCVLI
________ _______

(Continued)

(Continued)

I
I

L~

~

~

~

IGF55301lIGF5S301
IKJNULL IIKJNULL
IKJS803D IKJ5803D
JOBCAN
IEFXTMSG
LOC
IEFLOCDQ

~

IGFSS301
IKJNULL
IKJS803D
IEFXTMSG
IEFLOCDQ

~

~

~

Appendix C4

~

391

r--------T--------T--------T--------T--------,
I Entry I Assembly I CSECT I Load
I Alias I
I Point
I Name
I

IModule I Name
I (MODLIB)I
I
I Name

I Module I Name
I Name
I
I
I

r--------T--------T--------T--------T--------,
I Entry I Assembly I CSECT' I Load
I Alias I

I
I
I

I Point
I Name
I

I

~

~

~

~

(Continued)
392

OS/360 MVT Job Management (Release 21)

I Module I Name
I Name
I
I
I

I
I
I

t--------+--------f--------+--------+--------i
I
I
I IEFVMPDQ I
I IEFVMl I

~--------+--------+--------+_-------+-------_i

I
I
I IEFVMQMI I
I IEFXA
I
I
I
I IEFVMPDQ I
I IEFVM1 I
I
I
IIEFVMVTEI
I
I
IVM7055AAIIEFVMLS11IEFVM1 IIEFW21SDIIEFVMCVLI
I IEFXA
I
I
I
I IEFVMQMI I
I IEFVM1 I
I
I
I IEFVMPDQ I
I
I
I
I
I IEFVMVTE
IVM7060
IIEFVMLS11IEFVM1
IEFW21SDIIEFVMCVLI
I
I
I IEFVMQMI
I IEFXA
I
I
I
I IEFVMPDQ
I IEFVM1 I
I
I
I
I
I IEFVloWTE
IVM7070
IIEFVMLS11IEFVM1
IEFW21SDIIEFVMCVLI
I IEFXA
I
I
I
I IEFVMQMI
I IEFVM1 I
I
I
I IEFVMPDQ
I
I
I
I
I IEFVMVTE
IVM7090 IIEFVMLS1IIEFVM1
IEFW21SDIIEFVMCVLI
I IEFXA
I
I
I
I IEFVMQMI
IIEFVMPDQ
IIEFVM1 I
I
I
I
I
IIEFVMVTEI
I
I
IVM7100 I IEFVM2LSI IEFVM2 IIEFW21SDIIEFVMCVLI
IDFXA
I
I
I
I
I
I
I
I IEFVM1 I
IEFVMLS1IIEFVM1 IIEFW21SDII~FVMCVLI
IVM7130
I
I IEFVMQMI I
I IEFXA
I
I IEFVM1 I
I
I IEFVMPDQ I
I
I IEFVMVTE I
I
I
IVM7150
IEFVM3LS IEFVM3 IIEFW21SDIIEFVMCVLI
IDFXA
I
I
I
I
I
IIEFVM1 I
IEFVM4LS IEFVM4 IIEFW21SDIIEFVMCVLI
IVM7200
I
I
.
IIEFXA
I
I
I
IEFVM1 I
IEFVM5LS IEFVM5 IIEFW21SD IEFVMCVLI
IVM7300
I
I
IEFXA
I
I
I
IEFVMl I
IVM7370
IEFVMLSl IEFVMl IIEFW21SD IEFVMCVL.I
I
IEFVMQMI I
IEFXA
I
I
IEFVMPDQ I
IEFVMl I
IEFVMVTE I
I
I
IVM7600
IEFVM76 IEFVM76 IEFW21SD IEFVMCVLI
I
IEFXA
I
I
IEFVMl I
IEFVMLSl IEFVMl
IEFW21SD IEFVMCVLI
IVM7700
I
IEFVMQMI
IEFXA
I
IEFVMPDQ
IEFVMl I
I
I
IEFVMVTE
I
IVM7742
IEFVMLS11IEFVMl
IEFW21SD IEFVMCVLI
I
IIEFVMQMI
IEFXA
I
IEFVMl I
I
I IEFVMPDQ
I
I
I IEFVMVTE
VM7750
IEFVMLS1IIEFVMl
IEFW21SD IEFVMCVLI
IIEFVMQMI
IEFXA
I
IEFVMPDQ
IIEFVMl I
IEFVMVTEI
I
I
VM7850
IEFVMLS1IEFVM1 IIEFW21SDIIEFVMCVLI
IEFVMQMII
IIEFXA
I
IEFVMPDQI
IIEFVMl I
IEFVMVTEI
I
I
VM7900
IEFVMLSl IEFVMl IIEFW21SDIIEFVMCVLI
IEFVMQMII
IIEFXA
I
IEFVMPDQI
IIEFVMl I
IEFVMVTEI
I
I
IVM7950
IEFVMSLl IEFVMl IIEFW21SDIIEFVMCVLI
I _______ I _______
IEFXA
I
I ________ ________ IEFVMQMI
L
_______ L-

I Module I Name
I (MODLIB) I
I
I Name

I

I
IIEFVMVTEI
I
I
I IEFXTOODIIEFXTOOOIIEFWDOOOI IEFW41SDI
IIEFRDWRTIIEFRDWRT IEFVRR1 I
I
IEFLOCDQ I LOCCAN I
I
I
I
I
I LOCDQ
I
ILOC
I
I
I
WTORREP IIEFXTMSGIIEFXTMSG IEFWDOOOIIEFW41SDI
XIIB32 IIEFX5000lIEFX5000 IEFWAOOOIIEFWCOOOI
I
IEFXVAVRIIEFXV0011
Xps631
IEFZHMSG IEFZH
IEFSD0611IEFW42SDI
I IEFSD064 I
IIEFSD1041
IEFXTOOD IEFXTOOO IEFWDOOOIIEFW41SDI
IEFXT002 IEFXT002 IEFWDOOOIIEFW41SDI
IEFXT002 IEFXT002 IEFWDOOOIIEFW41SDI
IEFXT002 IEFXT002 IEFWDOOOIIEFW41SDI
IEFXT002 IEFXT002 IEFWDOOOIIEFW41SDI
IEFXT003 IEFXT003 IEFWDOOOIIEFW41SDI
IEFXT003 IEFXT003 IEFWDOOOIIEFW41SDI
IEFX300A IEFX3000 IEFWAOOOIIEFWCOOOI
IEFXVAVRIIEFXV0011
IEFX5000 IEFX5000 IEFWAOOOIIEFWCOOOI
IEFXVAVRIIEFXV0011
IEFX5000 IEFX5000 IEFXVAVRIIEFXV0011
IEFWAOOOIIEFWCOOOI
IIEFYPMSG IEFYPMSG IEFSD061lIEFW42SDI
I IEFSD064 I
IIEFSD1041
IEFYRCDSIIEFYRCDS IEFSD061lIEFW42SDI
IEFYPMSG IEFYPMSG
I
I
I IEFSD104 I
I IEFSD064 I
ZGOK09
IEFZGST2IEFZG2
IEFSD061lIEFW42SD
IIEFSD064
IIEFSD104
ZGOE60
IEFZHMSG IEFZH
IEFSD061lIEFW42SD
IIEFSD064
IIEFSD104
ZGOJ5
IEFZGSTl IEFZG
IEFSD061lIEFW42SD
IIEFSD064
IIEFSD104
ZG078
IEFZGST1' IEFZG
IEFSD061lIEFW42SD
IIEFSD064
IIEFSD104
ZKODl
IEFZHMSG IEFZH
IEFSD061lIEFW42SD
IIEFSD064
IIEFSD104
ZKOEl
IEFZHMSG IEFZH
IEFSD061lIEFW42SDI
I IEFSD064 I
I IEFSD1.04 I
ZOOAl
IEFZGST2 IEFZG2
IEFSD061lIEFW42SDI
IIEFSD064I
IIEFSD1041
ZOOE10
IEFZGST2 IEFZG2
IEFSD061lIEFW42SDI
IIEFSD064I
IIEFSD1041
IZPOC10
IEFZGST21IEFZG2
IEFSD061lIEFW42SDI
I
I
I IEFSD064 I
I.
I IEFSD104 I
I
IZPOQMGR1IIEFZGST21IEFZG2
IEFSD061lIEFW42SDI
I
I
I
I IEFSD064 I
I
I
I
I IEFSD104 I
IZPOQM
IEFSD0611 _______ I
L
________ IIEFZGJBLIIEFZGJ
________
_______ ________
WDEXIT
WRT

I
I

I
I
I

I
I

~

~

~

~

~

Appendix C5

r--------T--------T--------T--------T--------,
1 CSECT 1Assembly 1 Entry 1 Load
1 Alias 1
1 Name
1
I

1Module I Point
I (MODLIB) I Name
I
I Name

1 Module I Name
I Name
I
1
I

1
I
I

~--------+--------+--------+--------+--------~

I

CHFILDRWIIEFSDlllIIEFSDlllIIEFW21SDIIEFVMCVLI
1
I
1
IIEFVMl 1
I
I
1
IIEFXA
I
CHLOADTBICHLOADTBI
IIEFW21SDIIEFXA
I
1
I
1
I IEFVMl I
1
I
1
1IEFVMCVL
IEECVCTIIIEECVINTIIEECVCTIIIEECVCTII
IEELWAITIIEELWAITIIEELWAITIIEELWAITI
IEEMSWTOIIEESD5791 IEESD5791IEESD5791
IEEPDISCIIEEPDISCIIEEPDISCIIEEPDISCI
IEEPPRESIIEEPPRESIIEEPPRESIIEEPPRESI
IEEPRTN21IEEPRTN21IEEPRTN21IEEPRTN 1
IEEPRWI21IEEPRWI21IEEPRWI21IEEPRWI21
IEEPSN IIEEPSN IIEEPSN IIEEVRJCLIIEEPSN
IEEPSTP1 IIEEPALTRIIEEPALTRIIEEPALTRI
IEESD5621IEESD5621IEESD5621IEEVDNX11IEESD562
IEESD5631IEESD5631IEESD5631IEESD5631
IEESD564 I IEESD564 I IEESD564 1IEESD564.1
IEESD5 65 1IEESD5651IEESD5651IEESD5651
IEESD575 1IEESD575 I IEESD5751 IEESD5751 IEESD5811
IEESD5761 IEESD576 1IEESD5761IEESD5761 IEESD5801
IEES D577 1IEESD5771IEESD5771IEESD5771
I
IEESD578 I IEESD578 1IEESD5781 IEESD578 1
1
IIEESD579 1 IEESD579 1IEESD5791 IEESD579 I
I
IIEESD580lIEESD580lIEESD580lIEESD5761IEESD5801
IIEESD5811IEESD5811IEESD5811IEESD5751IEESD5811
1
1
IIEESMFI41
I
I
IIEESD5821IEESD5821IEESD5821IEESD5821IEESD82AI
1
1
IIEESD82AI
1
I
I IEESD58 31 IEESD5831 IEESD583.1 IEESD5831
I
I
IIEESD5 84 1IEESD5841IEESD5841IEESD58 4 1
IIEESMFI21IEESMFI21IEESMFI21IEESMFI21
1
IIEESMFI3IIEESMFI3IIEESMFIOIIEE~MFI3IIEESMFMSI

1
1
1IEESMFI31
I IEESMFIO
1
I
IIEESMFMSI
I
IIEESMFOIIIEESMFOIIIEESMFOIIIEESMFOII
IIEESMFOPIIEESMFOPIIEESMFOPIIGC0108CI
IIEESMFWRIIEESMFWRIIEESMFWRIIEESMFWRI
1IEEVDRGNI IEEVDRGNIIEEVDRGNIIEEVDSPll
IIEEVDSP11IEEVDSP11IEEVDSP1IIEEVDSPli
IIEEVICLRIIEEVICLRIIEEVICLRIIEEVICLRIIEFICR
I
1
1IEFICR 1
I
IIEEVICTLIIEEVICTLIIEEVICTLIIEEVICTLIIEEVIC
IIEEVIPL IIEEVIPL IIEEVIPL IIEEVIPL 1
IIEEVJCL IIEEVJCL IIEEVJCL IIEEVMNTll
1
1
1
IIEEVSTARI
1
IIEEVSTARIIEEVSTARIIEEVSTARI
IIEEVLDSPIIEEVLDSPIIEEVLDSPIIEEVLDSPI
IIEEVLIN1IIEEVLIN11IEEVLIN1IIEEVLIN 1
IIEEVRJCLIIEEPSN
I
IIEEVLNKTI
IIEEVLOUTIIEEVLOUTIIEEVLOUTIIEEVLOUTI
IIEEVMNT1IIEEVMNT1IIEEVMNT11IEEVMNTli
IIEEVMNT 2 1IEEVMNT21IEEVMNT21IEEVMNT21
IIEEVOMSGIIEEVOMSGIIEEVOMSGIIEEVOMSGI
IIEEVPRESIIEEVPRESIIEEVPRESIIEEVPRESI
l ________ L ________
_______ L ________ L _______ _
~

r--------T--------T--------T--------T--------,
1 CSECT
1 Name
1
I

1Assembly I Entry
I Module I Point
1 (MODLIB) I Name
I
I Name

1 Load
1 Module
1 Name
1

I Alias
I Name
I
I

I
I
I
1

~--------+--------+--------+--------+-------_1

IEEVRC IIEEVRC IIEEVRC IIEEVRC I
I
IEEVRCTLIIEEVRCTLIIEEVRCTLIIEEVRCTLI
1
IEEVRFRXIIEEVRFRXIIEEVRFRXIIEEVLIN I
1
1
I
IIEECVCTII
1
IEEVRJCLIIEEVRJCLIIEEVRJCLIIEEVRJCLIIEEPSN I
IEEVSIPLIIEEVSIPLIIEEVSIPLIIEEVSIPLI
1
IEEVSMSGIIEEVSMSGIIEEVSMSGIIEEVICTLI
1
1
1
1
1IEEVMNT21
IIEFIRC I
I
I
1
IEEVSTARIIEEVSTARIIEEVSTARIIEEVSTARI
I
IEEVWAITIIEEVWAITIIEEVWAITIIEEVWAITIIEEVWDARI
1
IEEXEDNAIIEEXEDNAIIEEXEDNAIIEEXEDNAI
IEEOOll0lIEEOOll0lIEEOOll0lIGC001101
I
IEE0003DIIEE0003DIIEE0003DJIGC0003DI
1
IIEE0303DIIEE0303DIIEE0303DIIGC0303DI
I
IEE0503DIIEE0503DIIEE0503DIIGC0503DI
I
1
1
IIEE0503DI
1
IEE0603DIIEE0603DIIEE0603DIIGC0603DI
1
IEE0703DIIEE0703DIIEE0703DIIGC0703DI
IEE0803DIIEE0803DIIEE0803D IGC0803DI
IEE0903DIIEE0903DIIEE0903D IGC0903DI
IEE1A03DIIEE1A03DIIEE1A03D IGC1203DI
IEE1B03DIIEE1B03DIIEE1B03D IGC1B03DI
IEE10ll0lIEE10l10lIEE10ll0 IGC10l101
IEEll03DIIEEl103DlIEEl103D IGCll03DI
IEEll110lIEElll10lIEE11l10 IGClll101
IEE1203DIIEE1203DIIEE1203D IGC1203Dl
IEE12110lIEE12110lIEE12110 IGC121101
IEE1403DIIEE1403DIIEE1403D IGC1403Dl
IEE1603DlIEE1603DlIEE1603D IGC1603Dl
IEE20110lIEE20110lIEE20110 IGC201101
IEE2103DIIEE2103DIIEE2103D IGG2103DI
IEE21110lIEE21110lIEE21110 IGC211101
IEE22110lIEE22110lIEE22110 IGC221101
IIEE2303DIIEE2303DlIEE2303D IGC2303DI
IEE23110lIEE23110lIEE23110 IGC231101
IEE2903DIIEE2903DlIEE2903D IGC2903DI
IEE30110lIEE30110lIEE30110 IGC301101
IEE3103DIIEE3103DIIEE3103D IGC3103Dl
IEE31110lIEE31110lIEE31110 IGC311101
IEE3203DlIEE3203DIIEE3203D IGC3203DI
IEE32110lIEE32110lIEE32110 IGC321101
IEE3303DIIEE3303DlIEE3303D IGC3303DI
IEE3503DIIEE3503DIIEE3503D IGC3503DI
IEE3603DIIEE3603DlIEE3603D IGC3 603D l
IEE3703DIIEE3703DlIEE3703D IGC3703DI
IEE3803DIIEE3803DlIEE3803D IGC3803DI
IEE40110lIEE40110lIEE40110 IGC401101
IEE4103DIIEE4103DIIEE4103DlIGC4103DI
IEE4203DIIEE4203DIIEE4203DIIGC4203Dl
IEE4303DIIEE4303DIIEE4303DIIGC4303Dl
IEE4403DIIEE4403DlIEE4403DIIGC4403DI
IEE4503DIIEE4503DIIEE4503DIIGC4503DI
DlIEE4603DIIGC4603DI
IIEE4603DlIEE4603
l ________ L ________
_______ L ________ L ________ J1
~

(Continued)

(Continued)

Appendix C5

393

r--------T--------T--------T--------T--------,
I CSECT
I Name
I
I

I Assembly I Entry
I Module I Point
I (MODLIB) I Name
I Name
I

I Load
I Module
I Name
I

I Alias
I Name
I
I

I
I
I
I

~--------+--------+--------+--------+--------~

~

~

IEE4703DIIEE4703D IEE4703DIIGC4703DI
I
IEE4803DIIEE4803D IEE4803DIIGC4803DI
I
IEE4903DIIEE4903D IEE4903DIIGC4903DI
I
IEE50110lIEE50110 IEE50110lIGC501101
I
IEE5103DIIEE5103D IEE5103DIIGC5103DI
I
IEE5203DIIEE5203D IEE5203DIIGC5203DI
I
IEE5303DIIEE5303D IEE5303DIIGC5303DI
I
IEE5403DIIEE5403D IEE5403DIIGC5403DI
I
IEE5503DIIEE5S03D IEESS03DIIGCSS03DI
I
IEES603DIIEES603D IEE5603DIIGC5603DI
I
IEE5903DIIEE5903D IEES903DIIGCS903DI
IEE60110lIEE60110 IEE60110lIGC601101
IEE6303DIIEE6303DIIEE6303DIIGC6303DI
IEE6403DIIEE6403DIIEE6403DIIGC6403DI
IEE6S03DIIEE6503DIIEE6503DIIGC6S03DI
IEE6603DIIEE6603DIIEE6603DIIGC6603DI
IEE6703DIIEE6703DIIEE6703DIIGC6703DI
IEE6803DIIEE6803DIIEE6803DIIGC6803DI
IEE6903DIIEE6903DIIEE6903DIIGC6903DI
IEE7103DIIEE7103DIIEE7103DIIGC7103DI
IEE7203DIIEE7203DIIEE7203DIIGC7203DI
IEE7303DIIEE7303DIIEE7303DIIGC7303DI
IEE7S03DIIEE7503DIIEE7503DIIGC7S03DI
IEE7603DIIEE7603DIIEE7603DIIGC7603DI
IEE7703DIIEE7703DIIEE7703DIIGC7703DI
IEE7803DIIEE7803DIIEE7803DIIGC7803DI
IIEE7903DIIEE7903DIIEE7903DIIGC7903DI
IIEE8S03DIIEE8S03DIIEE8S03DIIGC8503DI
IIEE8603DIIEE8603DIIEE8603DIIGC8603DI
IIEFACT IIEFACT IIEFACT IIEFVHA IIEFVHCB
IEFACTLKIIEFSMFLKIIEFACTLKIIEFSD0611IEFW42SD
I
I
I·
IIEFSD064
I
I
I
IIEFSD104
IIEFACTFKIIEFACTLKIIEFW21SDIIEFVM1
I
I
I
IIEFXA
I
I
I
I IEFVMCVL
IEFACTRTIIEFACTRTIIEFACTRT IEFSD0611IEFSD0641
I
I
IIEFSD1041
I
I
I IEFW42SD I
I
I
IEFW21SD I IEFVMCVL I
I
I
IIEFVM1 I
I
I
IIEFXA
I
IEFBR14 IIEFBR14 IIEFBR14 IEFBR14 I
I
IEFCNVRTIIEFCNVRT CNVRT
IEFLOCDQILOC
I
I
ILOCCAN I
I
I LOCDQI
I
IEFVRR1 I
I
IEFCVOL1IIEFCVFAK IEFCVOL1 IEFW21SDIIEFVMCVLI
I
IEFCVOL3
I IEFVM1 I
I
IEFCVOL2
I IEFXA
I
I
IEFVM6LS I IEFXJOOO I
I
IIEFXJX5AI
I
IIEFV1SXLI
I
IIEFXKOOOI
I
IEFWDOOOIIEFW41SDI
I
IEFXVAVRIIEFXV0011
IIEFMCVOL IEFCVOL1 IEFMCVOLIIEFCVOL11
I
IEFCVOL2
IIEFCVOL21
I
IEFCVOL3
I IEFCVOL3 I
IEFCVOL21IEFMCVOL IEFCVOL1 IEFMCVOLIIEFCVOL11
I
IEFCVOL2
I IEFCVOL21
I
IEFCVOL3
I IEFCVOL3 I
IIEFCVOL31IEFMCVOL IEFCVOL1
IEFMCVOLIIEFCVOL11
L ________ L ________
_______ ________
L ________J
(Continued)

394

OS/360 MVT Job Management (Release 21)

r--------T--------T--------T--------T--------,
I CSECT
I Name
I
I

I Assembly I Entry
I Module I Point
I (MODLIB) I Name
I
I Name

I Load
I Module
I Name
I

I Alias
I Name
I
I

I
I
I
I

~--------+--------+--------+--------+--------~

IIEFCVOL21
IIEFCVOL21
.
I IEFCVOL3 I
IIEFCVOL31
IEFDEVPT IEFDEVPTI IEFDEVPTI IEFWAOOO I IEFWCOOOI
I
IIEFW21SDIIEFVMCVLI
I
I
IIEFVM1 I
I
I
IIEFXA
I
I
IEFDSSRP IEFDSDRP I IEFDSDRP I IEFDSDRPI
IEFDSLST IEFDSLSTIIEFDSLSTIIEFSD0611 IEFSD104 I
I
I
IIEFSD064I
I
I
I IEFW42SD I
IEFDSOAL IEFSD1611IEFSD0611IEFSD0611IEFW42SDI
I
I
I IEFSD064 I
IIEFSD1041
I
I
IIEFDSOALIIEFDSOALIIEFDSOALI
I
IEFDSOCPIIEFDSOCPIIEFDSOCPIIEFDSO I
I
IEFDSOCRIIEFDSOCRIIEFDSOCRIIEFDSOCRI
I
IEFDSOFBIIEFDSOFB IEFDSOFBIIEFDSOFBI
I
IEFDSOLPIIEFDSOLP IEFDSOLPIIEFDSOLPI
I
IEFDSOSMIIEFDSOSM IEFDSODMIIEFDSOSMI
I
IEFDSOWRIIEFDSOWR IEFDSOWRIIEFDSOWRI
I
IEFDSTBLIIEFDSTBL IEFDSTBLIIEFSD0611
I
I
I
I IEFSD064 I
IIEFSD1041
I
I
I
I
I IEFW42sD I
IEFDSTRTIIEFDSTRT IEFDSTRTIIEFSD0611IEFW42SDI
I
I
I IEFSD064 I
I
I
I IEFSD104 I
IEFIDMPMIIEFIDMPM IEFIDMPM IEFSD0611IEFW42SDI
IIEFSD064I
I
I
I
I
I IEFSD104 I
IEFIDUMPIIEFIDUMPIIEFIDUMP IEFSD0611IEFW42SD
I
I
IIEFSD064
I
I
IIEFSD104
IEFIIC I IEFIIC IIEFIIC
IEFIIC
I
IEFIRC IIEFIRC IIEFIRC
IEFIRC
I
IIEFIRCB IIEFIRCB IIEFIRCB IEFQMSSSIIEFIRCB
IIEFK1MSGIIEFKiMSGIIEFK1MSG IEEVPRESI
IIEFLOCDQIIEFLOCDQILOCDQ
IEFLOCDQILOCDQ
ILOC
ILOC
I
I
I
I
I LOCCAN
I LOCCAN
I
I
IEFVRR1 I
IEFORMATIIEFORMATIIEFORMAT IEFSQINTI
IEFPRES IIEFPRES IEFPRES IEEVPRESI
IEFQAGSTIIEFQAGST IEFQAGST IEFVMF I
I
IEFVMB I
I
IEFQMSSS I IEFIRCB
IEFQASGNIIEFQASGQ IEFQASGN IEFQMSSslIEFIRCB
I
IEFDSDRP I
I
I
IEFMCVOLI IEFCVOL3 I
IEFCVOL11
IEFCVOL21
IEFVMB
I
IEFVMF
I
IEFSD304
I
IEFSD061 IEFW42SDI
IEFSD0641
II.
IEFSD1041
IIEFSD062 IEFV42211
I
IIEFVM6LS IEFXKOOO I
I
I
IEFXJOOOI
IEFXJXSA I
I
I
IEFV15XL I
I
I
IL________ LI ________ I ________ LI ________
I EFW 21SD L ________
IEFVMCVLJI

I

~

(Continued)

r--------T--------T--------T--------T-7------,
I CSECT I Assembly I Entry I Load
I Alias I

r--------T--------T--------T--------T--------,
I CSECT IAssemblYI Entry I Load
I Alias I

I Name
I
I

I Name
I
I

I Module I Point
I (MODLIB) I Name
I
I Name

I Module I Name
I Name
I
I
I

I
I
I

~--------+--------+--------+--------+--------~

IModule I Point
I (MODLIB) I Name
I
I Name

I Module I Name
I Name
I
I
I

I
I
I

~--------+--------+--------+--------+--------~

I
I
IIEFDSO I
I
I
IIEFDSDRPI
IIEFQMRAWI
I
I
I
I
IIEFQMSSSIIEFIRCB
I
I
IIEFMCVOLIIEFCVOL3
I
I
IEFCVOLllJ
L________ L ________ i -_______ LI ________ LI ________

I IEFCVOL21
IEFSD3041
I
IEFSD061 IEFW42SDI
IEFSD0641
IEFSD1041
IEFVMF
I
IEFSD062 IEFV42211
IEFSD086 IEF086SDI
IEFSD085 IEFSD0711
IEF085SDI
IEF850SDI
IEFVM6LS IEFXKOOOI
IEFXJOOOI
IEFXJX5AI
IEFV15XLI
IEFW21SDIIEFVMCVLI
IIEFXA
I
IIEFVMl I
IEFVRRC IIEFVRRCBI
I
I IEFVRRCA I
IIEFWDOOOIIEFW41SDI
I IEFXVAVRI IEFXVOOll
IEFQMSGV IEFQMSGV
IIEFSQINTI
I
IEFQMSSS IEFQMDUM IEFQMSSS IEFVHA IIEFVHCB I
IEFQBVMS IEFQMSSS IEFVMF I
I
IEFQMSSSIIEFIRCB I
IEFDSDRPI
I
IEFQMLKl IEFQMSSS IEFSD061lIEFW42SDI
IIEFSD0641
IIEFSD1041
IEFXVAVRIIEFXVOOll
IEFWDOOOIIEFW41SDI
IEFW21SDIIEFVMCVLI
IIEFXA
I
IIEFVMl I
IEFVM6LSIIEFXKOOOI
IIEFXJOOOI
IIEFXJX5AI
IIEFV15XLI
IEFMCVOLIIEFCVOL31
IIEFCVOLll
IIEFCVOL21
IEFQMUNC IEFQMUNQ IEFQMUNC IEFQMUNCI
I
IEFSD061lIEFW42SDI
IIEFSD0641
I
IIEFSD1041
I
IEFVMF I
I
I
I
IEFSD080lIEFSD0791
I
I
I
I IEEVWTRll
IEFQMWTOIIEFQMRAWIIEFQMRAW IEFDSOCPI
I
I
I
IEFDSO I
I
I
I
IEFDSDRP I
I
IEFQMRAW I
I
I
I
I
I
IEFQMSSSIIEFIRCB I
IEFMCVOL I IEFCVOL31
I
I
I
I
I IEFCVOLll
I
I
IIEFCVOL21
I
I
IEFSD3041
I
IEFSD061lIEFW42SDI
I
I
I
I
IIEFSD 064 1
I
I
IIEFSD1041
I
I
IEFVMF I
I
I
I
IEFSD0621IEFV42211
IEFSD0861IEF086SDI
________ LI________ LI________ L ________
L ________ J

(Continued)

(Continued)

I
I
I
IIEFXA
I
I
I
I
I IEFVMl I
I
I
IIEFVRRC IIEFVRRCAI
I
I
I
I IEFVRRCB I
I
I
I IEFWDOOO I IEFW41SD I
IIEFQASNM IEFQASGQ IEFQASGN IEFQMSsslIEFIRCB I
I EFDSDRP I
J
I
I
IEFMCVOLIIEFCVOL3
I
IIEFCVOL2
I
IIEFCVOLl
IEFVMB I
IEFVMF I
IEFSD3041
IEFSD0611 IEFW42SD
IIEFSD064
IIEFSD104
IEFSD0621IEFV4221
IEFVM6LSIIEFXKOOO
IIEFXJOOO
IIEFXJX5A
IIEFV15XLI
IEFW21SDIIEFVMCVLI
IIEFVMl I
IIEFXA
I
IEFVRRC IIEFVRRCAI
IIEFVRRCBI
IEFWDOO OIIEFW41SDI
IEFQDELE IEFQDELQ IEFQDELE IEFQDELEI
I
IEFVMD I
I
IEFVMF I
I
I
IEFSD3041
I
IEFSD061lIEFW42SD
I
IIEFSD064
I
IIEFSD104
I
IEFSD080lIEFSD079
I
I IE EVWTRl
I
IEFVRR3 IIEFVR3AE
I
IEESD5761IEESD580
I
I
IEFQINTZIIEFQINTZIIEFQINTZ IEFQINTZI
IEFQMDQ21IEFQMDQQIEFQMDQ2 IEFQMDQQIIEFQMDQ2
IEFSD080lIEFSD079
I
IIEEVWTRl
I
IEFSD061lIEFW42SD
I
IIEFSD064
I
I IEFSDl04 I
IEFVMF I
I
IEFQMNQ2 IEFQMNQQ IEFQMNQ2 IEFVMF I
I
IEFVMB I
I
IEFSD061lIEFW42SD
IIEFSD065
IIEFSD104
IEFSD3041
IEFQMSSSIIEFIRCB
I EFQMNQ 2 I
IEFDSOCRI
IEESD577I
IEESD579I
IEFQMRAWIIEFQMRAWIIEFQ~~AWIIEFDSOCRI

I
I
I
I
I
I
I
I
I
I
I
I
I

I
I
I
I
I
I
I

Appendix C5

395

r--------T--------T--------T--------T--------,
I CSECT IAssembly I Entry I Load
I Alias I

r-------~T--------T--------T--------T--------,

I CSECT
I Name
I
I

I Assembly I Entry
I Module I Point
I (MODLIB) I Name
I Name
I

I Load
I Module
I Name
I

I Alias
I Name
I
I

I
I
I
I

I Name
I
I

~--------+--------+--------+--------+-----~--i

I
IIEFSD085 IEFSD071 I
I
I
IEF085SDI
I
I
IEF850SDI
I
IIEFVM6LS IEFXKOOOI
I
I
IEFXJOOOI
IEFXJX5A I
I
I
IEFV15XLI
I
I
I
IIEFW21SD IEFVMCVLI
I
I
IEFXA
I
IEFVM1 I
I
I
I
IIEFVRRC IE FVRRCBI
I
I
IEFVRRCA I
I
IEFWDOOO IEFW41SD
I
IEFXVAVR IEFXVOOl
IIEFRCLNl IEFRCLN11IEFRCLNl IEFRCLNll
IEFRCLN2 IEFRCLN21IEFRCLN2 IEFRCLN21
IEFRDWRTIIEFRDWRTIWRT
IEFLOCDQILOC
RD
ILOCCAN
I
I
I LOCDQ
I
IEFVRRl I
IEFRPREPIIEFRPREP IEFRPREP IEFSD061 IEFW42SD
I
IEFSD064
I
.IEFSD104
IEFRSTRTIIEFRSTRT IEFSMR
IEFRSTRT IEFSMR
I
IEFRSTRTI
IEFSCAN IIEFSCAN IEFSCAN IIEFWAOOO IEFWCOOO
I
UCBSCAN IIEFW21SD IEFVMCVL
I
UCBCONT I
IEFVMl
IEFXA
I
I
IEFSDPPT I IEFSDPPT
IIEFSD061 IEFSD104
I
I .
IEFW42SD
IEFV4221
I
I
IEFSD064
I
I
IEFSDTTEIIEFSDTTE IEFSDTTEIIEFSDTTE
IEFSDXXXIIEFSDXXX IEFSDXXX I IEFSDXXXI
IEFSDXYZIIEFSDXYZ IEFSDXYZ I IEFSDXYZI
IEFSDOXXIIEFSDOXX IEFSDOXXIIEFSDOXXI
IEFSD0121IEFVSD12IEFSD0121IEFVHA IIEFVHCB
IEFSD0551IEFSD055 IEFSD055 IEFSQINTI
IEFSD060lIEFSD160 IEFSD060 IEFSD0601
IIEF060SD IEFSD060 IEFSD0611IEFW42SD
I
IIEFSD064
I
IIEFSD1041
IEFSD061 IEF061SD IEFSD061 IEFSD0621IEFV42211
IEFSD0601
I
IEFSD161 IEFSD061 IEFSD061 IEFW42SDI
IEFSD064I
IEFSD1041
IEFSD062 IEFSD162 IEFSD062 IEFSD062 IEFV4221I
IEFSD063 IEFSD103 IEFSD063 IEFSD062 IEFV4221I
IEFSD064 IEFSD164 IEFSD064 IEFSD061 IEFW42SDI
IEFSD064
IEFSD104
IEF064SD IEFSD064 IEFSD062
IEFSD066 IEFSD166 IEFSD066 IEFSD061 IEFW42SD
I
IEFSD064
I
IEFSD104
IEFSD068 IEFSD168 IEFSD0681IEFSD061lIEFW42SD
I
IIEFSD064
I
IIEFSD104
I IEFDSOCR I
.
IEFSD070 IEFSD070 IEFSD070lIEFSD0701
IEFSD071lIEFSD171lIEFSD071lIEFSD0851IEF850SD
IL________ LI ________ I _______ LI ________ LIIEF085SDI
________ J
~

(Continued)
396

08/360 MVT Job Management (Release 21)

IModule I Point
I (MODLIB) I Name
I Name
I

I Module I Name
I Name
I
I
I

I
I
I

~--------+--------+--------+--------+--------f

I

I
I
I

I
I
I IEFSD071 I
IIEFSD078 IEF078SDIIEFSD078 IEFSD080lIEFSD0791
I
I
I IEEVWTR1 1
I
IEFSD078 I IEFSD078 IEFSD078 I
I
I
IIEFSD079 IEF079SDIIEFSD079 IEFSD078I
I
IEFSD07 9 1IEFSD079IEFSD080lIEFSD0791
I
I
I IEEVWTRll
IIEFSD080 IEFSD080 IEFSD080 IEFSD080lIEFSD0791
I
IIEEVWTRll
IIEFSD081 IEFSD081 IEFSD081 IEFSD080lIEFSD0791
I
IIEEVWTRll
IIEFSD082 IEFSD082 IEFSD082 IEFSD080lIEFSD0791
I
IIEEVWTRll
IIEFSD0831IEFSD083 IEFSD083 IEFSD080lIEFSD0791
I
I
I IEEVWTRll
IIEFSD0841IEFSD084 IEFSD084 IEFSD080lIEFSD0791
I
I
I IEEVWTRll
IIEFSD0851IEFSD085 IEFSD085 IEFSD0851IEF085SDI
I
I
IEF085SDI
IIEFSD0711
IIEF850SDI
I
I
IEF850SDI
IIEFSD0861IEFSD086 IEFSD0861IEFSD0861IEF086SDI
I
I
IEF086SDI
I
I
IIEFSD0871IEFSD087 IEFSD0871IEFSD0871
I
IIEFSD0881IEFSD088 IEFSD0881IEFSD0871
I
I
I
IIEFSD0941
I
IIEFSD0861IEF086SDI
I
I
IEFSD0891IEFSD089 IEFSD0891IEFSD0861IEF086SDI
I
IIEFSD0941
I
I
I
I IEFSD087 I
I
IEFSD090 IEFVSD13\IEFSD090IIEFVHA IIEFVHCB I
I
IEFSD094 IEFSD094 I IEFSD094 I IEFSD0941
I
IEFSD095 IEFSD095 IEFSD0951IEFSD0941
IEFSD195 IEFVAWAT IEFVM6LSIIEFXKOOOI
IIEFXJOOOI
IIEFXJX5AI
IIEFV15XLI
IEFWDOOOIIEFW41SDI
IEFSD096 IEFSD096 IEFSD096 IEFWDOOOIIEFW41SDI
IEFVM6LSIIEFXKOOOI
IIEFXJOOOI
IIEFXJX5AI
IIEFV15XLI
IIEFSD097 IEFSD097 IEFSD097 IEFWDOOO I IEFW41SDI
I
I IEFSD1041
I
IIEFSD0641
IIEFSD10l IEFSD10l IEFSD10l IEFSD061lIEFW42SDI
IIEFSD102 IEFSD102 IEFSD102 IEFSD1021
I
IIEFSD104 IEFSD104 IEFSD104 IEFSD0611IEFW42SDI
I
IIEFSD0641
IIEFSD1041
I
IIEFSD105 IEFSD1051IEFSD105 IEFSD1051
IIEFSDllOIIEFSDllOIIEFSDllO IEFSD0621IEFV42211
I
I
I
IEFSD0611IEFW42SDI
I
I
I
I IEFSD064 I
I
I
I
I IEFSD1041
I
I
I
I IEFVMF I
I
IIEFSDlllIIEFSDl11lIEFSDlllIIEFVMF I
I
I
I
I IEFSD0611 IEFW42SDI
I
I
I
I IEFSD064 I
I
I
I
IIEFSD1041
I
I
I IEFSD0621 IEFV42211
I
I
I IEFWDOOO I IEFWCOOOI
I
I
I IEFVM6LS I IEFXK 0 0 0 I
I ________ LI ________ iI ________i I ________ LIIEFXJOOOI
L
________ J

I

(Continued)

r--------T--------T--------T--------T--------,
Ali'as
Load
CSECT
I Assembly I Entry

r--------T--------T--------T--------T--------,
Load
Alias
CSECT
I Assembly I Entry

I
I
I
I
I Module
I Point
I
I Module I Narne
I Name
I (MODLlB) I Name
I Name
I
I
I
I Name
I
I
I
I
I
t--------+--------+--------+--------+-------~
IlEFXJX5AI
IlEFV15XLI
lEFW21SDIlEFVMCVLI
IlEFXA
I
IlEFVM1
I
lEFXVAVRIlEFXVOO11
lEFDSOCRI
I
lEFMCVOLIlEFCVOL31
lEFCVOL11lEFCVOL21
IlEFCVOL11
lEFSDl12 lEFSDl12 lEFSDl12 lEFDSOCRI
I
lEFVRR3 IlEFVR3AEI
lEFSD0621lEFV42211
lEFSD0611lEFW42SD
IlEFSD064
IlEFSD104
lEFVMF I
lEFSD180 lEFSD180 lEFSD18 lEFW21SDIlEFVMCVL
IlEFXA
IlEFVM1
lEFSD263 lEFSD263 lEFSD263 lEFSD2 63 1
lEFSD300 lEFSD300llEFSD300 lEFSD3001
lEF300SDIlEFSD300 lEFSQINTI
lEFSD3011lEFSD3011lEFSD301 lEFSD3001
lEFSD3021lEFSD3021 lEFSD302 lEFSD3001
lEFSD3031lEFSD3031lEFSD303 lEFSD300 I
lEFSD3041lEFSD3041 lEFSD304 lEFSD3041
IlEF304SDIlEFSD304 lEFSQlNTI
lEFSD3051lEFSD3051 lEFSD305 lEFSD3041.
lEFSD3081lEFSD3081 lEFSD308 lEFSD3081
lEFSD310llEFSD310llEFSD310 lEFSD3041
lEFSD3001
I
I
IlEFSD311 IEFSD3111SD55MSG3 lEFSQlNTI
ISD55MSG2
I
SD55MSG1
I
lEFSD311
I
lEFSD312 IEFSD312 SD304MG 2 1lEFSD3041
SD304MG1 lEFSD3001
IEFSD312
I
SD305MG1
I
IEFSD514 lEFSD514 lEFSD514 lEFSD3041
I
lEFSD0621lEFV42211
lEFVRRC IlEFVRRCBI
IlEFVRRCA
lEFSD572 lEFYRCDS lEFYRCDS lEFSD0611lEFW42SD
IlEFSD064
IlEFSD104
IlEFSD60M lEFSD160 lEFSD060 lEFSD060 I
IlEFSD71MIlEFSD171 lEFSD071 lEFSD08 5 1lEF850SD
I lEF085SD
I
I
IIEFSD071
I
I
IIEFSD83MIIEFSD083 lEFSD083 IEFSD080lIEFSD079
IIEEVWTR1
I
I
IlEFSD85MIIEFSD085 lEF850SD lEFSD085 1lEF850SD
lEF085SD
IlEF085SD
I
I
lEFSD085
IIEFSD071
I
I
IlEFSD86MIlEFSD086 lEF086SD lEFSD0861lEF086SD
lEFSD086
I
I
I
IlEFSD87MIlEFSD087 lEFSD087 lEFSD0871
IlEFSD89MIIEFSD089 lEFSD089 lEFSD0941
lEFSD0871
I
I
lEFSD08 6 1lEF086SD
I
I
IlEFSGOPTllEFSGOPT IEFSGOET lEFWAOOOllEFWCOOOI
lEFSMFATL ________
IlEFSMFATllEFSMFAT
lEFSD2631L _______ -JI
L
________ L ________ i ________

I
I
I
I
I Module
I Point
I Name
I Module I Name
I
I (MODLlB) I Name
I
I Name
I
I
I Name
I
I
I
I
I
t--------+--------+--------+--------+-------~
lEFSMFlEllEFSMFlE lEFSMFlEIlEFSD0611lEFW42SDI
I lEFSD064 I
I
I
IlEFSD1041
I
I
lEFSMFWl lEFSMFWl lEFSMFWlilEFSD0611lEFW42SDI
I lEFSD064 I
I
IlEFSD1041
I
lEFUJl
lEFUJl
lEFUJl
IlEFSD0611lEFW42SDI
I lEFSD064 I
I
I lEFSD104 I
I
lEFUJV
lEFUJV
lEFUJV IlEFUJV I
I
lEFUSl
lEFUSl
lEFUSl
IlEFSD0611lEFW42SD
IlEFSD064
I
IlEFSD104
I
lEFUSO
lEFUSO
lEFUSO
IlEFSD2631
lEFUTL
lEFUTL
lEFUTL
I lEFSD263
lEFVHCB
lEFVDA
lEFVDA
lEFVDA I lEFVHA
lEFVDBSDllEFVDBSD lEFVDBSDllEFVHA
lEFVHCB
lEFVHCB
lEFVEA IlEFVEA
lEFVEA I lEFVHA
lEFVFA
lEFVFA
lEFVHCB
lEFVFA IlEFVHA
lEFVFB
lEFVFB
lEFVHCB
lEFVFB
IlEFVHA
lEFVGI
IEFVGl
lEFVGl
IEFVHCB
IlEFVHA
lEFVHCB
lEFVGK
IEFVGK
lEFVGK
lEFVHA
lEFVGM
lEFVGM
lEFVGM
lEFVHA
lEFVHCB
lEFVlNA
lEFVGM1 IEFVGM1
lEFVGM1
lEFVGM10 lEFVGM10
lEFVGM10
lEFVGM11 IEFVGMll I
IEFVGM11
lEFVGM12 lEFVGM12I
lEFVGM12
lEFVGM13 IEFVGM13 I
lEFVGM13 I
lEFVGM14 lEFVGM14I
lEFVGM14 I
lEFVGM15 I EFVGM 15 I
lEFVGM15I
lEFVGM16
lEFVGM16 I lEFVGM16 I
lEFVGM17
lEFVGM17 I lEFVGM17 I
lEFVGM18
lEFVGM18I IEFVGM18 I
lEFVGM19
lEFVGM19 I lEFVGM19 I
lEFVGM2
lEFVGM2 I lEFVGM2 I
lEFVGM3 IlEFVGM3 I
lEFVGM3
lEFVGM4
I lEFVGM4 IlEFVGM4 I
lEFVGM5 IIEFVGM5 I
lEFVGM5
lEFVGM6 IIEFVGM6 I
lEFVGM6
lEFVGM7 IlEFVGM7 I
lEFVGM7
lEFVGM70lIEFVGM701
lEFVGM70
lEFVGM711lEFVGM71
lEFVGM71
lEFVGM781lEFVGM78
lEFVGM78
lEFVGM8
lEFVGM8
IEFVGM8
IEFVGM9
lEFVGM9
IEFVGM9
lEFVGS
IEFVHCB
lEFVGS
IEFVGS
lEFVHA
lEFVGT
lEFVGT
lEFVGT
lEFVHA IlEFVHCB
lEFVHA
lEFVHA
IEFVHA
IEFVHA
IEFVHCB
IEFVHAA lEFVHAA IEFVHAA IEFVHA
IEFVHCB
lEFVHB
lEFVHB
IEFVHB
IEFVHA
IEFVHCB
IEFVHC
IEFVHC
IEFVHC
IEFVHA
IEFVHCB
lEFVHCB lEFVHCB lEFVHCB lEFVHA
lEFVHCB
lEFVHE
lEFVHE
lEFVHE
lEFVHCB
lEFVHA
lEFVHEB lEFVHEB lEFVHEB lEFVHA
lEFVHCB
lEFVHCB
lEFVHEC lEFVHEC lEFVHEC lEFVHA
lEFVHCB
lEFVHF
lEFVHF
lEFVHF
lEFVHA
lEFVHG
lEFVHG
lEFVHG
lEFVHA
lEFVHCB
lEFVHA
lEFVHCB
lEFVHH
lEFVHH
lEFVHH
lEFVHHB lEFVHHB lEFVHHB IlEFVHA
lEFVHCB
lEFVHL
lEFVHL
lEFVHL
IlEFVHA IlEFVHCB
lEFVHM
lEFVHM
lEFVHM
I lEFVHA IlEFVHCB
lEFVHN
lEFVHN
IlEFVHN I
I lEFVHN
lEFVHQ i IlEFVHA
IlEFVHQ
L
________ LIlEFVHQ
________ i ________
________ i IlEFVHCB
________ J

(Continued)

(Continued)

I
I

Appendix C5

397

r--------T--------T--------T--------T--------,
CSECT I Assembly I Entry I Load
I Alias
I
I Name
I
I

I

I

IModule I Point
I (MODLIB) I Name
I Name
I

I Module I Name
I Name
I
I
I

I
I
I
I

~--------+--------t--------+--------+--------~

IEFVINA I
I
IEEVHR
IEFVHR IIEFVHR
IEFVHA IIEFVHCB
IEFVINA I
I
IEEVHl
IEFVHl IIEFVHl
IEFVHl I
IEEVH2
IEFVH2 IIEFVH2
IEFVHl I
IEEVINA IEFVINA IIEFVINA IEFVINA I
IEEVINB IEFVINB IIEFVINB IEFVINA I
IEFVINB I
I
IEEVINC IEFVINC IIEFVINC IEFVINA I
IEEVIND IEFVIND IIEFVIND IEFVHA IIEFVHCB
IEEVINE IEFVINE IIEFVINE IEFVHA I
IEEVJ
IEFVJIMP I IEFVJ
IEFSD0611IEFW42SD
IIEFSD064
I
IIEFSD104
I
IEEVJA
IEFVJA IIEFVJA
IEFVHA IIEFVHCB
IEEVJMSGIIEFVJMSGIIEFVJMSGIIEFSD0611IEFW42SD
IIEFSD064
I
I
I
IIEFSD104
I
I
I
IEEVK
IIEFVKIMPIIEFVK
IIEFW21SDIIEFVMCVLI
IIEFXA
I
I
I
I
IIEFVMl I
I
I
I
IEEVKG IIEFVKG IIEFVKG
IEFVHA IIEFVHCB I
IEFVKMSG IEFVKMSG IEFVKMJl IEFW21SDIIEFVMCVL
IIEFXA
IIEFVMl
IEEVMA
IEFVMA
IEFVMA
IEFVMA I
IEEVMB
IEFVMB
IEFVMB
IEFVMB I
IEFVMC
IEFVMC
IEFVMC
IEFVMC I
IEFVMCVL IEFVMFAK IEFVMCVL IEFMCVOL IEFCVOL3
IEFCVOL1
IEFCVOL2
IEEVMD
IEFVMD
IEFVMD
IEFVMD
IEFVME
IEFVME
IEFVME
IEFVME
IEEVMF
IEFVMF
IEFVMF
IEFVMF
IEFVMG
IEFVMG
IEFVMG
IEFVMF
IEFVMH
IEFVMH
IEFVMH
IEFVMF
IEFVMLS1 IEFVMCVL IEFW21SD IEFVMCVL
IEEVMl
IEFVM
IEFVM1
VM7750
IEFXA
VM7742
IVM7700
I
IVM7370
I
IVM7130
I
IVM7090
I
IVM7070
I
IVM7060 I
I
IVM7055AA
I
IVM7055
I
IVM7000
I
IIEFVMQMI
I
IVM7950
I
IVM7900
I
IVM7850
I
IEFVM6LSIIEFXKOOO
IIEFVMMS11 I EFVM1
I IEFXJOOO I
I
I
IIEFXJX5AI
I
I
IIEFV15XLI
I
I
IEFWDOOOIIEFWCOOOI
I
I
IEFMCVOLI IEFCVOL3 I
I
I
IIEFCVOL11
I
I
I IEFCVOL2 I
I
I
IIEEVM2 IIEFVM2LSIVM7100
IEFW21SDIIEFVMCVLI
IIEFXA
I
I
I
I
IL________ I ________ I _______ ________ IIEFVMl
_______ I
~

~

~

~

~

(Continued)
398

OS/360 MVT Job Management (Release 21)

r--------r--------T--------T--------T--------,
I CSECT IAssembly I Entry I Load
I Alias
I Name
I
I

IModule I Point
I (MODLIB)I Name
IName
I

I Module I Name
I Name
I
I
I

I
I
I
I

~--------t--------+--------t--------+--------~

IEFVM3

IIEFVM3LSIVM7150 IIEFW21SDIIEFVMCVLI
IIEFXA
I
I
I
I
IIEFVMl I
I
I
I
IEFVM4
IIEFVM4LS IVM7200 IIEFW21SDIIEFVMCVLI
IIEFXA
I
I
I
I
IIEFVMl I
I
I
IEFVM5
IEFVM5ISIVM7300 IIEFW21SDIIEFVMCVLI
IIEFXA
I
I
I
IIEFVMl I
I
I
IEFVM6
IEFVMLK51 IEFVMLK5 I IEFW21SDI IEFVMCVLI
IIEFXA
I
I
I
IIEFVMl I
I
IEFVMLS6 IEEVMSGR IEFVM6LSIIEFXKOOOI
IIEFXJOOOI
IIEFXJX5AI
IIEFV15XLI
IEFMCVOLIIEFCVOL31
IIEFCVOLll
IIEFCVOL21
IEFVM7
IEFVMLS7 IEFVM7
IEFMCVOLIIEFCVOL31
IIEFCVOLll
IIEFCVOL21
IEFVM6LSIIEFXKOOOI
IIEFXJOOOI
IIEFXJX5AI
IIEFV15XLI
I
IEFVM76 IIEFVM76 IVM7600
IEFW21SDIIEFVMCVLI
IIEF'XA
I
I
I
IIEFVM1 I
I
I
IEFVRRC IIEFVRRC IIEFVRRCB IEFVRRC IIEFVRRCBI
IIEFVRRCA
IIEFVRRCAI
I
IIEFVRRC
I
I
I
IEFVRRl IIEFVRR1 IIEFVRR1 IEFVRR1 I
I
IEFVRR2 IIEFVRR2 IIEFV2AE IEFVRR2 IIEFVR2AEI
IIEFVRR2
I
I
I
I
IEFVRR3 IIEFVRR3 IIEFV3AE IEFVRR3 IIEFVR3AEI
IIEFVRR3
I
I
I
IEFVSDRAIIEFVSDRAIIEFVSDRA IEFSD061 IEFW42SDI
IEFSD0641
I
I
IEFSD1041
I
I
IEFSD304
I
I
I
IEFVSDRDIIEFVSDRDIIEFVSDRD IEFSD304
I
IEFV15XLIIEFSD551lIEFSD551 IEFWAOOO IEFWCOOOI
IEFXVAVR IEFXVOOll
I
I
IEFWAD IIEFWAD IIEFWAD
IEFW21SD IEFVMCVLI
IEFVM1 I
I
I
IEFXA
I
I
I
IEFW21SD IEFVMCVLI
IEFWAOOOIIEFWAFAKI
IEFVM1 I
I
I
IEFXA
I
I
I
IEFWA0021 IEFWAOOOIIEFUCBL IEFWAOOO IEFWCOOOI
IEFWA7 IIEFWAOOOI IEFUCBL IEFWAOOO IEFWCOOOI
IEFWCOOOIIEFWCFAKIIEFWCOOO IEFWAOOO IEFWCOOOI
IIEFXVAVRIIEFXV0011
I
I
IIEFWCIMPIIEFWCOOOIIEFX5000lIEFWDOOOI
IIEFWCOOOI
I
I
I
IIEFW41SDI
I
I
I
IEFWDOOOIIEFWDOOOIIEFWDOOOIIE~NDOOOIIEFW41SDI

IIEFXVAVRIIEFXVOOll
I
I
IIEFWDFAKIIEFWDOOOIIEFWAOOOIIEFWCOOOI
IEFWD0011IEFWD001IIEFWD0011IEFXVAVRIIEFXVOOli
IIEFWDOOOIIEFW41SDI
I
I
IIEFWEXTAIIEFWEXTAIIEFWEXTAIIEFWDOOOIIEFW41SDI
L
___ ____ ________ ________ _______ ________ J
~

~

~

~

~

(Continued)

r--------T--------T--------~-------T--------,

r--------T--------T--------T--------T--------,

~--------+--------+--------+--------+--------1

~--------+--------+--------+--------+--------1

I CSECT
I Name
I
I

I

I

I Load
I Module
I Name
I

I Alias
I Name
I
I

I CSECT
I Name
I
I

I
I
I
I

I
I
I
IIEFXA
I
IEFWSTRTIIEFSTRT IIEFSTRT IIEFW21SDIIEFVMCVLI
I
I
I
I
I IEFVMl
IEFWSWITIIEFWSWINIIEFWSWITIIEFWAOOOIIEFWCOOOI
IEFWTERMIIEFWTERM IEFWTERM IEFSD061lIEFW42SDI
I
I IEFSD064 I
I
I IEFSD104 I
IEFW21SDIIEFSD21Q IEFW21SD IEFW21SDIIEFVMCVLI
IlliFXA
I
I
IIEFVMl I
I
IEFW22SDIIEFSD22Q IEFW22SD IEFSD061lIEFW42SDI
I
I IEFSD064 I
IIEFSD1041
I
jIEFW31SDIIEFSD31Q IEFW31SD IEFSD061lIEFW42SDI
I
I IEFSD064 I
I
I IEFSD104 I
IEFW41SD IEFSD41Q IEFW2FAK IEFSD061lIEFW42SDI
I
I
IEFW1FAK
IIEFSD064I
IEFW41SD
IIEFSD1041
IEFVM6LSIIEFXKOOO I
IIEFXJOOOI
IIEFXJX5Al
IIEFV15XLI
IEFWDOOOIIEFWCOOOI
IEF41FAK IEFW2FAK IEFW21SDIIEFVMCVLI
IEFW1FAK
IIEFVMl I
IEFW41SD
~
IIEFXA
IEFMCVOLI IEFCVOL3 I
IIEFCVOL21
IIEFCVOLll
IEFWAOOOIIEFWCOOOI
IEFXA
IEFXCSSS IEFXA
IEFW21SDIIEFVMCVLI
IIEFXA
I
I
I IE FVMl
IEFXAFAK IEFXAFAK IEFVM6LSIIEFXKOOOI
IIEFXJOOOI
IIEFXJX5AI
IIEFV15XLI
IEFXAMSGIIEFXAMSG IEFXAMSG IEFW21SDIIEFVMCVLI
I
IIEFXJOOOI
I
I IEFXJX5A I
IIEFV15XLI
I
IEFXDPTHIIEFXDPTH IEFXDPTH IEFWAOOOIIEFWCOOOI
IEFXHOOOIIEFXHOOO IEFXHOOO IEFWAOOOIIEFWCOOOI
I·
IEFXVAVRIIEFXVOOll
IEFXJMSGIIEFXJMSGIMSOFF
IEFVM6LSIIEFXKOOOI
I IEFXJO 0 I
I
I MSSYS
MSRCV
I IEFXJX5A I
I
IIEFV15XLI
I
IEFXJX5AIIEFSD552 IEFSD552 IEFXVAVRIIEFXVOOll
IEFWAOOOIIEFW'COOOI
I
IEFXJOOOIIEFXJFAK IEFXJOOO IEFWAOOOIIEFWCOOOI
I
IEFXVAVRIIEFXVOOll
I
IEFWD0001IEFW41SDI
IIEFXJIMP IEFXJX5AIIEFVM6LSIIEFXKOOOI
I
IEFV15XLI
lIEFXJOOOI
IIEFXJX5AI
I
IEFXJOOOI
I
I
IIEFV15XLI
IEFXKMSGJIEFXKMSG IEFXKMSGIIEFVM6LSIIEFXKOOOI
I
I
IIEFXJOOOI
IEFXJX5AJI
L________ LI ________ _______ LI ________ LI ________

°

~

I

I Assembly I Entry
I Module I Point
I (MODLIB) I Name
I
I Name

(Continued)

I

I Assembly I Entry
I Module I Point
I (MODLIB) I Name
I
I Name

I Load
I Mo~ule
I Name
I

I Alias
I Name
I
I

I
I
I
I

I
I
I
IIEFV15XLI
IIEFXKOOO IEFXKIMPIIEFXKOOOIIEFVM6LSIIEFXKOOOI
I
I
I
IIEFXJOOOI
I
I
I
I IEFXJX5A I
I
I
I
IIEFV15XLI
IEFXKFAKIIEFXKFAKIIEFWDOOO IEFW41SDI
IEFXTDMY IEFXTDMYIIEFXTDMYIIEFWDOOO IEFW41SDI
IEFXTMSG IEFXTMSGIRESMSG IIEFWDOOO IEFW41SDI
I
I MESGDDEV I
IPRIAMSG I
I
I
I JOB CAN I
IWTORREP I
I
IRESUNIT I
I
IEFXTOOO IEFXTOODIWDEXIT IIEFWDOOO IEFW41SDI
IEFXT0021IEFXT0021IEFXT0021IEFWDOOO IEFW41SDI
I
IXTTEB3
I
I
IErnru I
I
I
IEFXT0031IEFXT0031XUUBOO
IIEFWDOOO IEFW41SDI
IEFXVMSGIIEFXVMSGIIEFXVMSG IEFXVAVR IEFXVOOll
IEFXVNSLIIEFXVNSLIIEFXVNSL IEFXVAVR IEFXVOOll
IEFXV001IIEFXV001IIEFXV001IEFXVAVRIIEFXVOOli
IIEFAVFAKI
IEFWAOOOIIEFWCOOOI
IEFXV0021IEFXV0021IEFXV002IEFXVAVRIIEFXVOOli
IEFXV0031IEFXV0031IEFXV003 IEFXVAVRIIEFXVOOll
IEFX3000lIEFX300AIX33B42
IEFXVAVRIIEFXVOOll
I
. IIEFX3000 IEFWAOOO I IEFWCOOOI
IEFX5000lIEFX5000lX55C86
IEFWAOOOIIEFWCOOOI
I
IX55D3G
IEFXVAVRIIEFXVOOll
IIEFX5FAKI
IEFW21SDIIEFVMCVLI
I
I
IIEFXA
I
IIEFVMl I
I
I
IEFYN
IIEFYNIMPIIEFYN
IEFSD061lIEFW42SDI
I
I
I IEFSD064 I
IIEFSD1041
I
I
IEFYNMSGIIEFYNMSGIIEFYNMSG IEFSD061lIEFW42SDI
I
I STRMSGOl
I
I
IIEFSD0641
I
I
I
I
I
IIEFSD1041
IEFYP
IIEFYPJB31IEFYP
IIEFSD061lIEFW42SDI
I
I
I
IIEFSD0641
I
I
IIEFSD1041
IEFYPMSG IEFYPMSGIYPPMSGl IIEFSD061 IEFW42SDI
I IEFYPMSG I .
I
I
I
IEFSD0641
I
I
IEFSD1041
IEFYRCDS IEFYRCDSIIEFYRCDSIIEFSD061 IEFW42SDI
I
I
IEFSD0641
I
I
I
IEFSD1041
IIEFYS
IEFYSVMS I IEFYS
IIEFW21SD IEFVMCVLI
I
I
I
IEFXA
I
IEFVMl I
I
I
I
IIEFWDOOO IEFW41SDI
I.
I
I
I
IIEFVM6LS IEFXKOOOI
I
I
I
IEFXJOOOI
I
I
I
IEFXJX5AI
I
I
I
IEFV15XLI
I
I
IIEFMCVOL1IEFCVOL31
IIEFCVOLll
I
I
I
I
I
I
I
IIEFCVOL21
IIEFZGST1IIEFZG
IIEFSD061lIEFW42SDI
IIEFZG
I
I
I ZGOJ8
I
I
I
IIEFSD064 1
I________ LI ________ LIZGOJ5
I
L
________ ________ L _______
~

~J

(Continued)

Appendix C5

399

r--------T----~---T--------~-------T--------,

I CSECT
I Name
I
I

I Assembly I Entry
I Module I Point
I (MODLIB) I Name
I Name
I

I Load
I Module
I Name
I

I Alias
I Name
I
I

I
I
I
I

~--------+--------+--------+------~-+--------~

I
I
IIIEFZGJ IIEFZGJBL
IIEFZG2 IIEFZGST2
I
I
II
I
I
I
I
I
I
I
IIEFZH
IIEFZHMSG
I
I
II
I
I
I
I
I
IIEXABOO IIEFXCSSS
I
I
I
I
I
I
IEZDCODEIIEZDCODE
I
IEZNCODEIIEZNCODE
I
IGC0005BIIEFVSMBR
IGC0083 IIEESMF8C
IGC0203EIIEFWTPOO
IGC0208EIIEESMFAL
IGC0303EIIEFWTPOl
IGC0403EIIEFWTP02
IGC6103DIIGC6103D
IGC6203DIIGC6203D
IIGF08501lIGF08501
IIGF085021IGF08502
IIGF2603DIIGF2603D
IIGF29601lIGF29601
IIGF29701lIGF29701
IIGF55301lIGF55301
IIKJNULL IIKJNULL
IIKJ5803DIIKJ5803D
IQMTMSD IIEFSD161
I
I
I
I
ISPRINTERIIEFPRTXX
L ________ L ________

IIEFSD1041
IEFSD0611
I
IEFSD061lIEFW42SDI
I
I
I IEFSD064 I
IIEFSD1041
I
I
I
I
IEFSD061lIEFW42SDI
I
I
I IEFSD064 I
IIEFSD1041
I
I
IEFW21SDIIEFVMCVLI
I IEFSD104 I
IIEFXA
I
IIEFVMl I
IEZDCODE IEFVMF I
I
IEFVINA I
I
IEZNCODE IEFVMB I
I
IEFVINA I
IGC0005B IGC0005BI
IEESMF8C IGC0008CI
IGC0203E IGC0203EI
IGC0208E IGC0208CI
IGC0303E IGC0303EI
IGC0403E IGC0403EI
IGC6103D IGC6103DI
IGC6203D IGC6203DI
IGF08501 IGF085011
IGF08521 IGF085021
IGF2603D IGF2603DI
IGF29601 IGF296011
IGF29701 IGF297011
IGF55301 IGF553011
IKJNULL IGC5803DI
IKJ5803D IGC5803DI
IEFSD061 IEFSD0611IEFW42SD
IIEFSD064
IIEFSD104
SPRINTERIIEFPRINTIIEFPRT
_______ L ________ L _______ _J

ZPOGM
ZGOK09
IEFZG2
ZPOC10
ZOOE10
ZOOAl
ZPOQMGRl
XPS631
ZKOEl
IEFZH
ZGOE60
ZKODl
IEFXA

~

400

OS/360 MVT Job Management (Release 21)

Appendix D:

Job Management Charts

A number in the upper right corner of a box (unless otherwise indicated) refers to
another chart in this appendix.
Chart 01.

Job Management Data Flow

B3

Command Processing

Initial Entry

C2

CI

/

~_,. '/0
Device

SVC34

/ "-".

C5

C4

FIG. 24
Commands

Command

Commands

Master

Scheduling

Scheduler
Task

Routine

r

Command
Execution
.Routines

Job Processi ng

Commands

E3
Input

Job
Oeser.

/

FI
System
Input Device

/ ",.
and

~ob

Oeser.

F4

F3
WRITER

INITIATOR FIG.]2

02

CQAlmands

System Output

r

F2
INTERPRETER

H~"Q~""

I--Reading Task

Writing Task

Initiating Task

Data

I

FIG: 20

F5

.'-l

Output Device

G3

Job Step

System
Input
DatoJ' 04)

I

2

JOB

EXEC

To IEFVJA

(

J
To IEFVEA

H3

DO

(

H4
To I EFVOA

To JCL Statement Processor (Chart 06)
Note:

Exits to Interpreter Control
routine If continuation or
ovenidden procedure cord is
expected, or if error is

detected on 00 card.

Appendix D:

Job Management Charts

405

Chart 06.

JCL Statement Processors

Note: This chart shows control flow in all
five statement processors. Each
statement processor is entered from

the Interpreter Scan routine (Chart 05)
and passes control to the Control

routine (Chart 04).
Each statement processor

C3

(

in eludes

several keyword processors, most of
which use I EFVGT and I EFV GK as
subroutines.

EnfTy

J

03

Header

IEFVGK

1

E3

0@

Get Parameter

1

F2

IEFVGI

Symbol

Keyword
Processor

Test and Store

@-1

F4

F3

IEFVGT

Dictionary
ReFerence

G3

G·
IEFVGM

Cleanup

Message Routine

L

!
Exit

406

OS/360 MVT Job Management (Release 21)

I
H3

Chart 07,.

Interpreter Termination Routine

FREEMAI N for
IWA and Local
Work Area

E3
Close
Input Stream

F3
Close

PROCLIB PDS

Appendix D:

Job Management Charts

407

Chart OS.

Execute Statement Condition Code Processing Routine

Al

Read Fi"t SCT
into Storage

VK650,-_---'L-_....::.;

Compare

Condition Code
with Return
Code

1-----------'

G3
Issue Message

To Allocation

Exit Routine
for Step Flush
Mode

To JFCB Housekeeping
Routines

40S

OS/360 MVTJob Management 

Chart 09.

JFCB Housekeeping Routines

A2

(

Entry

~.

Rl

54

B2
IEFVMLS6

IEFVMLSI

IEFMCVOl
Mount Control
Volume Routine

JFCB

Error Message

Housekeeping

Processing

Routine

Control Routine

Processing
Routine

1

C3

To Appropriate

C4

to Allocation
(

0
Allocation

Control

1::i:Io~:~ :::~p~

Routin~.

E4

E3
lEFMCVOL

IEFVMLSI
Allocation
Pnacessing
Routine

Mount Control
Volume Routine

F3

F4
IEFMCVOl

lEFVM3LS
GOG Single

Mount Contro 1

Processing
Routine

Volume Routine

G3

G4
IEFMCVOL

lEFVM5LS
P.".rn OSCB

Mount Control

Processing
Routine

Volume Routine

H3
IEFVM2LS
Fetch OCB
Processing
Routine

J3
lEFVM4LS
GOG all
Processing
Routine

K3
lEFSOl80
Dedicaf'ion
Determination

Routine

L3
IEFOSOAL
Direct System
Output Determination Routine

Appendix D:

Job Management Charts

409

Chart 10.

JFCB Housekeeping Control Routine -- Part 1

e
A4

A3
Al

IEFVM2
Error

Fetch DCB

Error Message
Processing

Processing

Routine

Routine

From Execute
Statement Condi tion
Code Routine

To Allocation

10
B3

Exit Routine

B3

for Job Flush
Mode,

Rewrite
JFCB

10
C3
Process

SlOT; Moke
PDQ Tobie
Entry

GETMAIN for

No

Work Area

EI
Read in Next

Bias Table

Ves

Block; Update
Bias Count if

SlOT

FI

If Flush Indicator
Set, Process
in Flush Mode

Reenqueue Bias

Set Action
Code in LCT

Table Block

Ves

Dedication
Determination

J3'

DSO
Determination
Routine

J4

Get Number
of Message
Closs

Queue

Sysout SlOTs

SlOT

Management
Read

K3
Set Lost

SVSOUT/SIOT
Bit in SlOT

410

08/360 MVTJob Management, (Release 21>

Ves

Is
It last

K4
Decrement
Count

Chart 11.

JFCB Housekeeping Control Routine -- Part 2

A2
IEFVM3

Is

A3

/.

Is

A4

Vol. Info

GDG Single
Processing
Routine

Error

Error

Read in JFCB If
Not in Storage,

Scan

P~Q

Patterning DSCB
Processing
Routine

D3

Error

for

this OS NAME

No

Error

locate

Yes
Successful
G3

Gl
Obtain Vol Info
for JFCB and
Sect from

ves

IEFVM4
&ror

Set Disp to
New

Appendix u:

Job Management Charts

411

Chart 12 .•

ALLOC Processing Routine

B2

B5

Read
Referenced SlOT 1 - - - -.....<
and JFCB into

Sot IntraShip SubalJoc
Bit in SlOT

Storage

Compare

Read JfCB

Set Ref DO in
Current SlOT

SlOT Addr in

Into Storage
If not There

PDQ Entry wi th

for Allocate

Referenced SlOT

E3

Reod
Ves

No

&ror

Read
Referenced SlOT
and J fCB into
Storage

No

GI
Error

Locate

No

Set
Rei DO in
Current SlOT
for Allocate

Successful

H3

HI
Get Vol Info
for JfCB and
SCT from VCB

Error

Get Vol Info
for JfCB and
SCT from J fC B

All Entries/Exits ore from/to the JFCB Housekeeping Control Routine

412

08/360 MVT Job Management (Release 21)

Chart 13.

Dedication Determination Routine

IEFSDI80

Read in

JFCB

Force NC and

NR in SCT

G4

Found in

Force SlOT
Status to Old

H4
Copy Oed Data
Set SlOT & JFCB
Info into Job

Step SlOT,
JFCB
J4
Force SlOT Disposition to Keep

K4
Rewrite JFCB

K5

to Job Queue

and Update
CNT and PDQ

Appendix D:

Job Management Charts

413

Chart 14.

Fetch DeB Processing Routine

IEFVM2

Ffom .JFCE Housekeeping

..

~.ontrOJ~:outine

In;tlc.!ize SlOT

Fields

C3
Read in JFCB
and Rel:erenced

Error

SlOT Tables

D3

Updote VOLT
with New Vol
Ser, Write Out
VOLT

Error

To JFC B Housekeeping Control
Routine

414

06/360 MVT Job Management (Release 21)

Chart 15.

GDG Single Processing Routine

IEFVM3

B4
Read

Set

No

JFCB into

Error Message

Storage

Code

C2
No

VM7164

C3
Set Up

Assign Record,
Clear Storage

Member No. and
New Bias Count.

for New TDI

Write Out GOG

Issue

Read GOG Bios
Count Table

LOCATE Macro
for

into Storoge

Yes

Error

Data Set

No

Found

Search
P~Q

Error

for OSNAME
Entry

H3

HI
Assign
Error

Record, Clear

New TDI Update.
Write Out Old
TDI

Fill in JFCB
with VallO's,
Build VOLT

Error
Return

Jl
Insert GOG
OSNAME .Into
Table and seT;
Update Count

To JFCB Housekeeping
Control Routine

Appendix D:

Job Management Charts

415

Chart

~6.

GDG All Processing Routine

IEFVM4

---~

Initialize GOG

Index, ·~et Up
OSNAME in JFCB

VM7220
Yes

Issue

a LOCATE

Other

Macro

No

Move Vols
from Index to

VCB Work Area

FI

VM7222

Update DO

F2
Set Vol
IDS from VCB
into JFCB

Number Count in

Work Area

Error

Normal

GI
Set
Chain
Pointer, Write

G2
Make
PDQ Entry for
Error
GOG all Member
OS if Pass
Specified

Error

Out Completed
SlOT

Normal

H2
Assign

Error

Update
JFCB, SlOT
Write Out JFCB

External
Storage Space

for New SlOT
and JFCB

Error

J4
Set
Up Error

Yes

Message
Indication

Successful

VM72f>'40"'-_ _ _--'K=,3
KI

Other

laue

a LOCATE

Yes

No

Set Chain
Pointer, Write

Macro

Out SlOT
Error

416

08/360 MVT Job Management (Release 21)

VM7250
K4
for Each 510T
Read in, Update

Sep, Aff FI .... , I---"-~'"
Chain and
Write Out SlOT
To JFCB Housekeeping
Control Routine

Chart 17.

Patterning DSCB Processing Routine

IEFVM5

Storage if
Not Already

E3

there

C2

Ves

Error

locate

Successful

D2

Set
Obtain

Error

Up Error
Message
Displacement

E3

Merge DSCB
with Overrides

in JFCB

Set Up
for
Errer Return

To JFCB'Housekeeping
Control Routine

Appendix D:

Job Manag ernent Charts

' 417

Chart 18.

Mount Control Volume Routine

A1

(

IEFCVOL2

1

B1

GETMAIN
for

Error

1

C2

Records to
Job Queue

for Dummy
Tables

FREEMAIN

LCT with
Error Codes
and Current

Exit to

JFCB Hskp
Error Module

Control

C4

1

and Step Status
I'ndicators

D4

Core from

1

1

E1

E4

JCT, SCT,

1

1

F1

Create

Update 5MB

Dummy
JFCB

LCT and SCT

IEFCVOLl
Work Area

F4

1

G1

Core from

G4

Core from

I EFCVOLl Work
Area

!

H1

Create

(

Dummy

VOLT

1

J1

Write

Dummy VOLT
on Job
Queue

K1

~CTL to IEFVM 1
for Dummy Allcen

ofCVOl

08/360 MVT Job Management (Release 21)

1

H4
XCTL to
IEFVMCVL in
JFCB Hskp

F5

IEFVM1 Prior
to 'LOCATE'

FREE/,IAIN

Dummy
JFCB on
Job Queue

1
FREEMAIN

Pointers to

Write

E5

Core from

LCT, JeT, SCT,
SlOT, JFCB

Sl£~~:

1
FREEMAIN

Restore All
Pointers in

Dummy LeT,

D5

LCT, JeT, SCT,
SlOT, JFCB

Dummy VOLT

Write

1
Restore All
Pointers in

FREEMAIN

Dummy LeT,
JCT, SCT,
and SlOT

C5

SCT with New
5MB Pointers

Volume

D1

1

Update Uriglno

TlOT

1

B5

5MB Address

FREEMAIN
Core from

Create

1

Update Original

Scheduler

1

C1

Assign 5

418

B4

Look Up
Table

Work Area

1

Entry 3
IEFCVOL3

Entry 2

1

1

A5

A4

IE FMC VOL

Entry 1
IEFCVOLT

1

Exit to

Step
Termination

G5

Chart 19.

Demand Allocation Routine

IEFWA7

A3
Entry

1

From Alia cation
Control Routine
B3

XBF 110

Build
Work Table

XBF300

1

C3

Resolve
Volume

Affinities

xc FIOO

1

D3

Calculate Data
Set Device
Requirements

XCF 200

1

E3

Construet

Channel load
Table

XCF 300

1

F3

Allocate
Re$h.~ent

Direct

Access Devic-:s
Rcql,ested S)
VolUine

XCF 500

Serial

1

G3

Perform
Devi ce Range

Reduction

XDF 890

1

H3

Allocate
Reserved Tape

Devices

XFD 100

1

J3

Allocate
Specifically
Requested
Devices

1

K3
Exits are

to the Decision Allocation Routi ne

(Chart 20),1f Allocation is not

Exit

Complete.
To the TlOT Construction Routine

(Chart 21),lf Allocation is
Complete.

Appendix D:

Job Management Charts

419

Chart 20.

Decision Allocation Routine

sa

XGGC25
IEFX HOOO
Y••

Busy

Perform

F3

Separation

Strikeout

Normal

Calc
Potential Users

C2

Per Device

X55

03

0

Allocation

Complete
Perform
Non-Unique
Allocation

No

H2

Normal
XG
IEFX3000
H2

Com

Restore

Error

Primary Bit

Perform Device

Pattern

Strikeout

F2

XGGG40
Normal

C2

XKKB30

IEFXHOOO
Perform

Separation
Strikeout
Complete

H2}----+j

To Tiot Construction
Routine

420

E4

A

05/360 MVT Job Management (Release 21)

Process Error

C2

Chart 21.

TIOT Construction Routine

From Allocotion Control Routinel
Demand Allocation Routine, or
Decision Allocation Routine

IEFWCOOO

A4
A3

AI

A5

A2
Request Storage

Enough

TIOT Storage to

Entry

M

No

for SIOTTTR

Build 510TTTR

No

More DDs

and Comm

Get Storage for
Comm Area

Work Area

Yes
XLM020

XLMOOI

Bl

B2

+

B4
Initialize
Loop to

Get Storage
for TI OT

Build TIOT

~
More than 1

SIOTTTR Tbl
Record

in TlOT
List

+No
Point to

W/A to

Next SlOT

Com m Area

No

~

C5

Move Comm

TTR Count
in Each
SIOTTTR Red

Records

t

C4

Insert

SIOTTTR

B5

Put Comm

Area Addr

SIOTTTR
Red Full

C3

Calculate
Number of

Yes

Yes

Point to
Next Record

C2

t

Yes

B3

t

Dl

Clear Byte

Qmgr

in Comm
Work Area
for SlOT

Assign

D5

SIOTTTR &
TlOTEX r

t

EI

r0
No

Get SlOT

I---

Address

~
Is Terminal DD

Is TCAM

t

E3
Set TeAM
Bit in Work

Yes

Data Set

Byte

~

F2

Yes

Set DYNAM
in Work Byte

~'t

No
H2
HI
Yes

Is Lost SYSOUT
SlOT

t

G2

Gl
Yes

r<$?
No

All Done

Save TTR for

Move SlOT
TTR to
SIOTTTR
Tobie

~

Yes

SIOTTTR Tbl

Exit

Red for

TIOTEXT
To External Action

~

Rtne

Write

SIOTTTR
Tbl Reds
Note 1

'~

XLMI40

J3

Req for Public

H5

Qmgr

t
XLM031

G5

Save

Build DD Entry
for TIOT

TIOT
Extension

Jl

G4

H3

No

~

F5

Put
TlOTEXT
TTR in JSCB

Set TERM Bit
in Work Byte

No

Is DYNAM DD

E5

Chair!
SIOTTTR
Table Reds

J4

Process
Public Vol
Request

Yes

Vol

K3

!

J5

Construct

TIOTEXT

~

l

K5

K4

Free Excess

Yes

TI OT Increased

Qmgr Write

TIOTEXT

Note]; Outstanding public volume
requests are resolved here.

Appendix D:

Job Management Charts

421

Chart 22.

External Action Routine

IEFWDOOO

XPS090

Note I
82

Issue Demount

MessageS

C2

XPS285

Issue
Mount Messages

D2
Yes
Volume

No

G

E2
./ Is Request

~r

Vol

Yes

Containi~)>-_ _----<..
..j

H2

Old Data Set

No
Note 2

XPS630

F2
Perform

Verifications

XPS7ri50"-_---'_-'N=ot"e4
G3
Wait

Note h

Includes a Scan to Determine
If the Required Volumes are
Mounted on Unallocated Devices.

Note 2: Unload Commands 'from Master
Scheduler are Honored. UC Bs
are Updated If Required.

Note 3: The Step is Complete When all
Setup Messages Have Been Issued
and Verification Has Been Performed.

Counts in the SeT Control this
Mechanism.
Note 4: Either of Two Events is Waited Upon.
Issuance of a Cancel Command or

a Device Being Made Ready.

422

OS/360 MVT Job Management (Release 21)

Chart 23.

Space Request and TIOT Compression Routines

DADSM Error Recovery Routln.

TlOT CompreSJion Routine

(Module IEFXTOO3)

(Module I EFXTOO2)
C2

Module
IEFXT002

C3
f

)

\

Entry

04

TTR;::OO'--_ _ _......:0;.:,3
Unre-

coverabl.

Save Comm
Area Addr

Compr... TlOT

Error

and Allocate
Direct Access

Volumes

E4

E3

XTTMBO
E2
on

Update Scratch
Vol.
InFormation in
JFCBI

Free 3rd Word
of TlOT List

F4

F3
Store

Initialize

Allocation
Messages in
SMa.

Gl

Select Next
Device

TlOELINK
Field

G4

G3
Change Status

Increment

to NeKt TIOT
Entry

of Online
Devices to
Consoles as

Free Comm
Area

Required

Appendix D:

Job Management Charts

423

Chart 24.

Extended External Action Routine

Extended External

Action Routine

(Module IEFWEXTA)
B2
From TIOT Compression Routine

To Allocation Exit Routine

D2

Scan TIOT
For Appropriate

End of

TIOT

To Allocation Exit Routine

Entry

Issue Demount

Wait

and Mount
Messages

To Nonrecovery
Error· Routine

424

08/360 MVT Job Management (Release 21)

Chart 25.

Automatic Volume Recognition (AVR) Routine

B4

B3
Request

Volumes from

Find Next
AVR-Type UCB

D2

Ye,

This
Volume Needed

No

E4
Point to First

Read the Volume
Seriol

UCB

Device Strike
Out

To IEFX5000
(Decision Allocation)

{Allocation Error}
K3

IEFWDOOO
External Action

Appendix D:

Job Management Charts

425

Chart 26.

Job Statement Condition Code Processing Routine

C4

Issue Message

426

OS/360 MVTJob Management (Release 21)

Chart 27.

Termination Routine

A3
Entry

1

B3

IEFS042Q
Termination

Entry Routine

@-1

0l

01

I EFRPREP
Restart

IEFSD31Q

I

Fl

IEFZGJBl
Disposition and
Allocation

I

I--

1

r

04

Step

~

Data Set Driver

Job Statement
Condition Code
Processor

E3

Disposition and

E4
IEFYTVMS
OS B Processing

F3

IEFZGST2
Disposition and

Unallocation

I

G2
IEFOSOWR

G3

IEFZHMSG

OSO
Message Routine

r"

)

IEFVJIMP

Termination

I

F2

Return

Gl

IEFZHMSG

t

03

Unallocation

Exit

Control

Return

. Exit

IEFZGSTI

Job Termination

Job Termination

Step
Termination

1

E2

EI

IEFZAJB3

Step

•

~.~

Routine

CS

Termination
Control

IEFYPJB3

Accounting

Routine

®

•

C4
IEFS022Q

T

02

Optional
User

Preparation

C3

IEFYNIMP

I--

Writer

Message Routine

Routine

1
IEFYSVMS
Message

Blocking
Routine

HI

•

H2

IEFWSYP3

Warm Start

SlOT
Reader

I

H3

IEFYSVMS
Messoge

Blocking
Routine

Note 1. If Warm Start I box 03
goes to box E3 via box
H2, box E3 returns t.o

H2. Box H2 makes the
return to box 03.

Appendix D:

Job Management Charts

427

Chart 28.

Step Termination -- Disposition Routine

Module - IEFZGST 1

From Step Termination
Dota Set Driver

IEFZG

54

52
IEFZGST2

Process

Yes

Uncatalog

Unallocation
Processing

Disposition

C4

Write

Q-Mgr Interface.
for Read JFC5

Disposition
Message

02
IEFTVMS

Process
SYSIN!SYSOUT

Step SYSOUT
To Step Termination
Oata Set Oriver

IEFZGST2
Volume

Verfication

J2
Note I, The Unallocate Switch
is Set Once for Each

Step by the Data Set Driver
Routine When Disposition
Processing for the Step
.is Complete

K2
Process

Catalog
Disposition

428

05/360 MVT Job Management (Release 21)

Chart 29.

step Termination -- Unallocation Routine

IEFZG2*

Al
From Step Termination

Disposition

V.,

No

Update
Bias Count

Tabl.

v••

Get Next

DeB
Pointer

To Step Termination
Disposition at Exit

*

There are Subroutint!is
Present in this Module
Which are Common to

IEFZGSTl and IEFZGST2

J2
Procesl

Pending
Commands

Perform
Unalloc::ation

I----./Fl

Appendix D:

Job Management Charts

429

Chart 30.

Job Termination Routine

M30
I EFZA-;..-_ _~A,,"l'-..
From Reader/lnter:.reter
Control Routine or

Termination Routine

for Reg. Save

Area, PDQ, and
Oilp/Unalloc
Work Area

Set Up

LeT Parameters

Read
P~Q

Oir Block

ZAA31r5~O_~~_~E~1

Read
PDQ Entry Block

ZAA330
Increment

Data Set
Pointer

Job Term inate

Srt Cleanup

J3

ZAAiT60:..;O_ _"--_;;,.Jl'n
I EFACTLK
FREEMAIN

Is

J2

IEFACTRT

Yes
User Accounting
Routine

To Termination Exit
Routine

fOf

Termination

430

08/360 MVT Job Management (Release 21)

Job

Chart 31.

Job Termination -- Disposition and Unallocation Routine

IEFZGJ

Al
Control Routine

(

Entry

)

',----.---"

Bl

Note
Get

Ye,

,

r--

!--.jext

vee Pointer

__________-<-~~>>-'N-'-'O'-----~.(
~

I

,-

B)

T'o-J-o-b-T-e-rm-i-n-at-ion

[Yes

B:.J

Exit

Control Routine

I,

C4

•./"Job ID in
'~CB (VCB in Re

"',tain)

Entry

D3
Did

Bring SlOT

Di

for this

~b Terminate

"')::IY

Data Set
into Main

·1

Storage

E4
Process
Pending
Commands

IlOCI5

i

F2

r-::---':'="I
Process

Catalog

Disposition

Yes ................Cond. Dis-",
·.,po:!dtion Cotl

'i4-----

I

'----,-----;;::::-"

I j~;-!

ZIOC2

F4

,,f.-'''-.!3

.

"-

No

~r

1'::

Yes

H4
H2
No

Yes

Process
Keep
Disposition

IEFZHMSG

Ye,

Write

Disposition
Message

To Job Termination

No

Control Routine

Note 1:

The Unallocation Switch is
Set When A 11 PDQ Entri es
Have Been Examined.

Z H01-"""-----''--_".K....
1
Process
Delete

Disposition

Appendix D:

Job Management Charts

431

Chart 32.

Queue Management Initialization Routine

M34
IEFORMAT

IEFS0055

A3
Enter

1
Resident Core

BufFen - 36
Bytes

Area

1

Cl

C3

Write Zero

Setup an

in-Core JFCB
and DCB

Control QCRs
to Disk
(BSAM)

1

01

OpenJ DCB

03

Set Up Zero
Track Headers
with Pointers
to N ext Header

Not in
Resident
Core

1

El

E3

Setup

Setup a Parm.
list with Addr

Zero Data

of Open DCB

Re

438

OS/360 MVT Job Management (Release 21)

I PFK

I TSO

time sharing option

VQE

vary queue element

UCB

unit control block

VS

variable-length spanned

UCM

unit control module

VTOC

volume table of contents

UCME

unit control module entry

UCMI

unit control module indicator

WTP

write-to-programmer

universal character set

WTPCB

write-to-programrner control
block

XSA

extended save area

I UCS
VOLT

I WQE

work queue element

volume table

Appendix E:

Dictionary of Abbreviations

439

440

08/360 MVT Job Management (Release 21)

Appendix F:

This appendix contains a list of the
descriptive names for job management
modules. Each name is followed by the
module's name as it appears in an assembly
listing of the program to which it applies,
and as it appears in Appendix B of this

Module Cross-Reference

publication. Text illustration
identifications in which the module name
appears are also given. In some figures,
modules are shown by their load module
names ••• these names are shown in
parenthesis.

Module Name
in Listing

Module Descriptive Name

Illustrations
(F=Figure,
C=Chart)

Allocate/IEFVPOST Communications Block
Allocation Control Routine -- I/O Device
Allocation
Allocation Exit Routine -- I/O Device Allocation
Allocation Recovery Messages -- I/O Device
Allocation
Allocation Recovery Routine -- I/O Device
Allocation
ASB Queue Reader -- Automatic SYSIN Batching
Assign/Start Routine -- MVT Queue Management
Assign Routine -- MVT Queue Management
Attach Routine -- MVT Initiator
Automatic SYSIN Batching
Command Processor
Automatic SYSIN Batching
Find
Automatic SYSIN Batching
Initialization
Automatic SYSIN Batching
Input stream Processor
Automatic SYSIN Batching
Termination
AVR Allocation Routine -- I/O Device Allocation
AVR Label Processing Routine -- I/O Device
Allocation
AVR Nonstandard Label Processing Routine -- I/O
Device Allocation
AVR Routine Messages -- I/O Device Allocation
AVR Unmounted Tape Allocation Routine -- I/O
Device Allocation

IEFATECB
IEFXCSSS

Branch Routine -- MVT Queue Management

IEFQMLK1

C8

CANCEL Processor -- SVC 34
Chain Manipulator -- SVC 34
Class Name Set-up Routine -- System Output Writer
Command Chaining Access Method -- System Output
Writer
Command Processing Routine -- System Output Writer
Command Processor -- Automatic SYSIN Batching
Command Router -- SVC 34
Command statement Routine -- Interpreter
Command Translator -- SVC 34
Communications Block -- Allocate/IEFVPOST
CONTROL Command Handler (Load 1)
SVC 34
CONTROL Command Handler (Load 2)
SVC 34
CONTROL Command Handler (Load 3)
SVC 34
CONTROL Command Handler (Load 4)
SVC 34
CONTROL Command Handler (Load 5)
SVC 34
Control Routine -~ MVT Queue Management
Continuation Statement Routine -- Interpreter
Convert Routine -- System Task Control
Create CSCB -- PostMaster Scheduler
CSCB Creation Routine -- SVC 34

IEE3703D
IEE0303D
IEFSD081
IEFSDXYZ

F24
F24
F20
F20

IEFSD083
IEFVMC
IEE5803D
IEFVHM
IEE5403D
IEFATECB
IGC6703D
IEE6803D
IEE7703D
IEE7803D
IEE6903D
IEFQBVMS
IEFVHC
IEFCNVRT
IGC0803D
(IGC0803D) IEE0803D

F20
F7

F81

IEFSD41Q
IEFXJMSG

F81

IEFXJIMP

F81

IEFVMG
IEFQAGST
IEFQASGQ
IEFSD263
IEFVMC
IEFVMH
IEFVMA
IEFVMB
IEFVMD
IEFXV001
IEFXV002

F7
F12
F7
F7
F7
F81
F81,C25

IEFXVNSL
IEFXVMSG
IEFXV003

Appendix F:

F68,C4
F24
F24

F66,F68,C4
F32
F24
F24,F45

Module Cross-Reference

441

DADSM Error Recovery Routine -- I/O Device
Allocation
Data Set Delete Routine -- System Output Writer
Data Set Descriptor Record Processing
Data Set Writer Attach Routine -- system Output
Writer
DD Statement Processor -- Initiator
DD*Statement Generator Routine -- Interpreter
Delete Routine -- MVT Queue Management
Decision Allocation Routine -- I/O Device
Allocation
Dedication Determination Routine -- MVT I/O Device
Allocation
Delete Routine -- MVT System Restart
Demand Allocation Routine -- I/O Device Allocation
Demand strikeout Routine -- I/O Device Allocation
Dequeue Interface Routine
Dequeue Routine -- MVT Queue Management
Device Strikeout Routine -~ I/O Device Allocation
Dictionary Entry Routine -- Interpreter
Dictionary search Routine
Direct System Output Control
Direct System Output Determination
Direct System output Environment Check
Direct System Output Free Block
Direct System Output STOP and MODIFY Processing
Direct System Output Tape-to-Printer or Card-Punch
Routine
Direct System output Wait Routine
Direct System output Writer
Display Active
DISPLAY Active Message Processor -- SVC 110
DISPLAY C.K Routine (Load 1)
SVC 110
DISPLAY C.K Routine (Load 2) -- SVC 110
DISPLAY C.K Routine (Load 3) -- SVC 110
Display Configuration Matrix Routine (Load 1)
SVC 34
Display Configuration Matrix Routine (Load 2)
SVC 34
DISPLAY CONSOLES Get Region Routine
DISPLAY CONSOLES Processor
DISPLAY M Routine (Load 1)
SVC 110
DISPLAY M Routine (Load 2)
SVC 110
DISPLAY M Routine (Load 3)
SVC 110
DISPLAY/MONITOR Commands Router Routine -- SVC 34
DISPLAY PFK Routine -- SVC 110
Display Region Size
Display Requests Routine -- SVC 34
DISPLAY Router
DISPLAY SQA Routine -- SVC 34
DISPLAY U Routine (Load 1)
SVC 110
DISPLAY U Routine (Load 2)
SVC 110
DISPLAY U Routine (Load 3)
SVC 110
DISPLAY U Routine (Load 4)
SVC 110
Disposition and Unallocation Routine -Termination
Disposition and Unallocation Messages -Termination
Disposition and Unallocation Message Routine
Termination
Disposition Routine -- Termination
DSB Handler Routine -- System Output Writer
DSB Processing Routine
Dummy Accounting -- Interpreter
Dummy Accounting -- Termination
Dummy Accounting -- Termination
Dummy Job Step Module -- MVT Initiator
Dummy Module -- MVT Queue. Management
442

OS/360 MVT Job Management (Release 21)

IEFXT003

C23

IEFSD171
IEFDSDRP
IEFSD070

F20

IEFVDA
IEFVHB
IEFQDELQ
IEFX5000

C2.C5
F66.C4

IEFSD180

C9.Cl0.C13

IEFSD303
IEFWAOOO
IEFX300A
IEFVRR1
IEFQMDQQ
IEFX300A
IEFVGI
IEFVGS
IEFDSCOP
IEFDSOAL
IEFDSOCR
IEFDSOFB
IEFDSOSM
IEFPRTXX

F4
F12.F81
C25

IEFDSOLP
IEFDSOWR
IEEVDSP1
IEE50110
IEE10110
IEEllll 0
IEE12110
IGC6103D

F20

F81.C20.C25

F81
C6
F12.C9.C10
F12

F12.C27

F24

IGC6203D
IEEPDISC
IEEXEDNA
IEE30110
IEE31110
IEE32110
(IGC3503D) IEE3503D
IEE40110
IEEVDRGN
(IGC2903D) IEE2903D
IGC3503D
IEE8503D
IEE20110
IEE21110
IEE22110
IEE23110
IEFZGJB1

F24
F24
F24
F24

C27,C30

IEFZGMSG
IEFZHMSG

C27,.C28,C31

IEFZGST1
IEFSD085
IEFYTVMS
IEFACT
IEFACTK
IEFACTRT
IEFSDOXX
IEFQMDUM

C27.C29
F20
C27
C30

Dummy output Limit Routine
Dummy User Job Initiation Exit Routine
Dummy User JCL Validation Exit Routine
Dummy User step Initiation Exit Routine
Dummy User Time Limit Exit Routine
DUMP Command Processor (Master Scheduler)
DUMP Processor

IEFUSO
IEFUJI
IEFUJV
IEFUSI
IEFUTL
IEE60110
IEE1003D

ECB/IOB Construction Routine -- Queue Alter
Routine
End-of-File Routine -- Interpreter
Enqueue List Construction -- Initiator (Data Set
Integrity)
Enqueue Routine -- MVT Queue Management
Environment Check Routine -- Direct System Output
Error Condition Router Routine
Error Processing Routine -- Write-to-Programmer
EXEC Statement Condition Code Processor Messages
-- I/O Device Allocation
EXEC Statement Conditional Execution Routine
I/O Device Allocation
EXEC Statement Processor -- Interpreter
Extended External Action Routine -- I/O Device
Allocation
External Action Messages -- I/O Device Allocation
External Action Routine -- I/O Device Allocation

IEESD582

F37

IEFVHAA
IEFDSLST

F66,C4

IEFQMNQQ
IEFDSOCR
IKJNULL
IEFWTP02
IEFVKMSG

F37

IEFVKIMP

F81

IEFVEA
IEFWEXTA

C2,C5
F81,C24

Find -- Automatic SYSIN Batching
Free Region Routine

IEFVMH
IEEPRTN2

F7
F32

IEFVGK
IEFQINTZ

C6
F4

IEFVHA

F66,F68, C2,
C4

IEE1403D

F24

(IGC4103D) IEE4103D

F45

Get Parameter Routine -- Interpreter
Get Region Routine for Queue Initialization
Queue Management
.
Get Routine -- Interpreter (Control Routine)

IEFWDOO1
IEFWDOOO

MVT

HALT and SWITCH Commands Processor Routine -- SVC
34
Hard Copy Message Issuing Routine -- SVC 34
Indicative Dump Message Module
Indicative Dump Routine
Initialization -- Automatic SYSIN Batching
Initialization Open Routine -- Interpreter
Initialization Routine
Interpreter
Initialization Routine
MVT Initiator
Initialization Routine
MVT System Restart
Initialization Routine
System Output Writer
Initialization Routine
Write-to-Programmer
Initiator Control -- System Task Control
Initiator Wait Routine -- MVT Initiator
Input Stream Processor -- Automatic SYSIN Batching
In-Stream Procedure Decompression Interface
Routine
In-Stream Procedure Directory Build Routine
In-Stream Procedure Directory Search Routine
In-Stream Procedure Routing Routine
In-Stream Procedure Syntax Check Routine
Interface Control -- MVT Initiator
Internal JCL Reader
System Task Control
Interpreter Control -- System Task Control
Internal JCL Reader
Interpreter Controller -- Automatic SYSIN Batching
Interpreter Data Set Name Table Construction
Routine
Interpreter Exit -- System Task Control

Appendix F:

IEFIDMPM
IEFIDUMP
IEFVMA
IEFVH2
IEFVH1
IEFSD160
IEFSD300
IEFSD080
IEFWTPOO
IEEVIcrL
IEFSD105
IEFVMB
IEFVIND
IEFVINC
IEFVINB
IEFVINA
IEFVINE
IEFIIC
IEEVRJCL
IEEVRcrL
IEEVICLR
IEFVMF
IEFVDBSD
IEEVRC

F68
F24
F24

F12,F81
C22,C25

C3
C2,C3
F12,
F4,C32
F20,
F32
F12
F4

F68,C2.C4
F12
F32
F32
F7

F32

Module Cross-Reference

443

Interpreter Post Scan Exit Routine -- System Task
Control
Interpreter Region Regulator -- Automatic SYSIN
Batching
I/O Device Allocation Interface Routine -- MVT
Initiator
IPL Routine -- Master Scheduler

IEEPSN

F32

IEFVME

F7

IEFSD162

F12

JCL Edit Routine -- System Task Control
JFCB Housekeeping Control Routine and Allocate
Processing Routines -- I/O Device Allocation
JFCB Housekeeping Error Message Processing Routine
I/O Device Allocation
JFCB Housekeeping Error Messages
JFCB Housekeeping Fetch DCB Processing Routine -I/O Device Allocation
JFCB Housekeeping GDG All Processing Routine -I/O Device Allocation
JFCB Housekeeping GDG Single Processing Routine
I/O Device Allocation
JFCB Housekeeping Patterning DSCB Routine -- I/O
Device Allocation
JFCB Housekeeping Unique Volume ID Routine -- I/O
Device Allocation
Job and Step Enqueue Housekeeping Routine
Interpreter
Job and step Enqueue Routine--Interpreter
Job and step Enqueue Routing Routine -Interpreter
Job Delete Routine -- MVT Initiator
Job Names Routine -- MVT System Restart
Job selection Routine -- MVT Initiator
Job Separator Routine -- System Output Writer
Job Statement Condition Code Processor
Interpreter
Job Statement Condition Code Processor Messages
Job Statement Processor -- Interpreter
Job suspension -- Initiator
Job Termination Control Routine -- Termination
Job Termination Exit Routine -- Termination
Routine
Job validity Check Routine -- Interpreter

IEEVJCL
IEFVMLS1

F32
F81,C9

IEFVMLS6

F81,C9

IEFVMLS7
IEFVM2LS

C9

IEFVM4LS

C9

IEFVM3LS

C9

IEFVM5LS

C9

IEEVIPL

IEFVM76
IEFVHHB

C4

IEFVHH
IEFVKG

F66,F68,C4
C4

IEFSD166
IEFSD302
IEFSD161
IEFSD094
IEFJIMP

F12
F4
F12
F20

IEFVJMSG
IEFVJA
IEFSD168
IEFZASB3
IEFSD31Q

C2,C5

F12
C27
C27

IEFVHEC

F66,F68,C4

Link Table Module -- System Task Control
Link to Queue Manager Delete Routine
Linkage Module
Linkage Module
Linkage Module
Linkage Module
Linkage Module
I/O Device Allocation
Linkage Module
I/O Device Allocation
Linkage Module
I/O Device Allocation
Linkage Module
I/O Device Allocation
Linkage Module
MVT
Linkage Module
MVT
Linkage Module
MVT Initiator
Linkage Module
System Output Writer
Linkage Module
System output Writer
Linkage Routine -- Interpreter
Linkage to IEFVMLS1
I/O Device Allocation
Linkage to IEFXJIMP -- I/O Device Allocation
Linkage to IEFXJIMP -- I/O Device Allocation
Linkor Routine -- System Output Writer
Locate Log Data Sets

IEEVLNKT
IEFSD709
IEF061SD
IEF065SD
IEF078SD
IEF079SD
IEFWCFAK
IEFWDFAK
IEFWSWIN
IEFXJFAK
IEF300SD
IEF304SD
IEF060SD
IEF082SD
IEF083SD
IEFIRCB
IEFVMFAK
IEFSD551
IEFSD552
IEFSD078
IEEVLIN1

F32
F20

Machine Status Control Routine:
-- SVC 34

IGF08501

F25

444

Model 85; Part 1

OS/360 MVT Job Management (Release 21)

F20
F1

Machine status Control Routine: Model 85 ; Part 2
-- SVC 34
Machine status Control Routine: Model 145
SVC
34
Machine Status Control Routine: Model 155
SVC
34
SVC
Machine Status Control Routine: Model 165
34
Main Logic Routine -- System Output Writer
Master Scheduler Get Region
Master Scheduler IPL Routine
Master Scheduler Public/Private Interface
Master scheduler Resident Data Area
Master Scheduler Wait and Attach Routine
MCS Console Information (Load 2) -- SVC 34
MCS Reply Processor Routine -- SVC 34
MCS/TSO Periodic STOP Command Processor
MCS VARY Syntax Check -- SVC 34
Message Assembly -- SVC 34
Message Assembly Routine -- SVC 34
Message Blocking Routine
Message Module -- Command Scheduling Routine
Message Module for Warmstart -- Termination
Message Module (Headers and Tests for Messages)
Message Module Indicative Dump
Message Module -- I/O Device Allocation
Message Module -- I/O Device Allocation
Message Module (Messages 00-07)
Interpreter
Message Module (Messages 08-0D)
Interpreter
Message Module (Messages 08-0F)
Interpreter
Message Module (Messages 10~17)
Interpreter
Message Module (Messages 18-lF)
Interpreter
Message Module (Messages 20-27)
Interpreter
Message Module (Messages 28-27)
Interpreter
Message Module (Messages 30-3F)
Interpreter
Message Module (Messages 38-3F)
Interpreter
Message Module (Messages 3E-45)
Interpreter
Message Module (Messages 50-57)
Interpreter
Message Module (Messages 56-5D)
Interpreter
Message Module (Messages 58-5F)
Interpreter
Message Module (Messages 60-67)
Interpreter
Message Module (Messages 68-6F)
Interpreter
Message Module (Messages 70-77)
Interpreter
Messages Module (Messages 78-7F) -- Interpreter
Message Module (Messages 80-87)
Interpreter
Message Module (Messages 88-8F)
Interpreter
Message Module (Messages 90-97)
Interpreter
Message Module (Messages AO-A7)
Interpreter
Message Module
MVT Queue Management
Message Module
MVT System Restart
Message Module
SVC 34
Message Module
Termination
Message Module
Volume Attribute
Message Processing Routine -- Interpreter
Message Processing Routine -- Write-to-Programmer
Message Routine -- Queue Alter Routine
Message Writing Routine -- System Task Control
MODE Command Router Routine
MONITOR Router
MOUNT Command Syntax Check
MOUNT Command Control
MOUNT Control Volume Routine -- I/O Device
Allocation
M/S Router -- SVC 110
MSGRT Processor
MSGRT Command Routine (Load 2) -- SVC 34
MSGRT and CONTROL (MR and K) Message Module (Load
1) - - SVC 34

IGF08502

F25

IGF29701

F25

IGF29601

F24

IGF55301

F24

IEFSD082
IEEPPRES
IEEVIPL
IEEVPRES
IEEBASEA
IEEVWAIT
IEE7303D
IEE1A03D
IEE5503D
(IGC3303D) IEE3303D
(IGC0503D) IEE0503D
IEE2103D
IEFYSVMS
IGG2103D
IEFWSMSG
IEFSD096
IEFIDMPM
IEFWSTRT
IEFXAMSG
IEFVGM1
IEFVGM78
IEFVGM2
IEFVGM3
IEFVGH4
IEFVGM5
IEFVGM6
IEFVGM7
IEFVGM70
IEFVGM19
IEFVGM8
IEFVGM17
IEFVGH9
IEFVGM10
IEFVGM11
IEFVGM12
IEFVGM13
IEFVGM18
IEFVGM14
IEFVGM15
IEFVGM16
IEFSD311
IEFSD312
IEE7903D
IEFWTERM
IEFK1MSG
IEFVGM
IEFWTP01
IEESD580
IEEVSMSG
IEF2603D
IGC7103D
IEEVMNT1
IEEVlYlNT2
IEFMCVOL

F20
F1
F1
F1

Appendix F:

IEE00110
IGC6303D
IEE6403D
IEE5603D

F1
F24
F45
F32.F37.F45
C27
F45
F81

F24
F1
F68, C6
F37
F32
F24
F24
C9.C13,C15.
C16,C17,C22
F24

Module Cross-Reference

445

MSGRT and CONTROL Message Module (Load 2) -- SVC
34
MVT Queue Management Branch Routine
MVT Queue Management DUmmy Module
MVT Allocation Entry Routine -- MVT I/O Device
Allocation
MVT Interpreter DUmmy Module
MVT Linkage to JFCB Houskeeping
M65MP Vary Preprocessor

IEE5903D
IEFQMLK1
IEFQMDUM
IEFSD21Q

F8l

IEFKGFAK
IEFVMMS1
(IGC3603D) IEE3603D

F45

Non-recovery Error Routine -- I/O Device
Allocation
Non-recovery Error Routine Messages -- I/O Device
Allocation
NULL statement Routine -- Interpreter

IEFXKIMP

F8l

Open Routine for SVC 83
Operator Message Routine --Interpreter

IEESMFOP
IEFVHR

Periodic STOP Command Handler -- SVC 34
Post-Attach Interface Routine -- MVT Initiator
Post-Scan Routine -- Interpreter
Pre-Attach Routine -- MVT Initiator
Pre-Scan Preparation Routine -- Interpreter
Print Line Routine -- System Output Writer
Printer Routine -- System Output Writer
Program Properties Table Module -- MVT Initiator
Public/Private Interface -- Master Scheduler
Purge Queue Construction Routine -- MVT System
Restart
PUT Routine -- System Output writer

IEE4503D
IEFSDl04
IEFVHF
IEFSDl03
IEFVHEB
IEFSD095
IEFSDTTE
IEFSDPPT
IEEVPRES
IEFSD301
IEFSD089

F20

Queue Alter Delete Routine -- Queue Alter Routine
Queue Alter Get Region Routine
Queue Alter Syntax Check Routine
Queue Formatting Routine -- MVT Queue Management
Queue Initialization Routine -- MVT Queue
Management
Queue Management Convert Routine
Queue Management Dequeue by Jobname Routine
Queue Management Error Return Routine
Queue Management Interface Routine -- Interpreter
Queue Restart Enqueue Routine -- Queue Alter
Routine
Queue Restart Message Class Set-up Routine -Queue Alter Routine
Queue Scratch Routine -- Queue Alter Routine
Queue Scratch Setup Routine -- Queue Alter Routine
Queue Search Operand Proc~ssor
Queue Search Return -- Queue Alter Routine
Queue 5MB Routine -- Queue Alter Routine

IEESD576
IEEPALTR
IEESD562
IEFORMAT
IEFSD055

F37
F37
F37
F4,C32
F4,C32

IEFCVNRT
IEFLOCDQ
IEFXTDMY
IEFVHQ
IEESD577

F37

IEESD578

F37

IEESD58l
IEESD575
IEESD584
IEESD583
IEESD579

F37
F37

Reader Control Routine -- Interpreter
Read/Write Routine -- MVT Queue Management
Read/Write Routine -- System Task Control
Record Accessing Program -- MVT Queue Management
(Track Stacking)
Record Decompression Routine
Interpreter
Record Decompression Routine
Interpreter
Record Transfer -- SVC 83
Reenqueue Routine -- MVT System Restart
Reinterpretation Control Routine
Reinterpretation Delete/Enqueue Routine
·Replace Region Interface Routine -- MVT Initiator
Replace Region Routine -- MVT Initiator
Reply Message Routine -- SVC 34
Reply Processor -- SVC 34

IEFIRC
IEFQMRAW
IEFRDWRT
IEFSDlll

446

OS/360 MVT Job Management (Release 21)

IEFXKMSG
IEFVHL

IEZDCODE
IEZNCODE
IEESMF8C
IEFSD305
IEFVRRC
IEFVRR3
IEFSDIOl
IEFSDl02
IEElB03D
IEE1203D

F66,C4

F24
Fl2
C4,C5

Fl2
F68,C4
F20
Fl2
F4

F37
F37

F32
C33

F4
Fl2
Fl2

IEFQRESD

Resident Main storage Reservation Routine -- MVT
Queue Management
Resident,Wait Routine
Restart Activation Routine
Restart Determination Routine
Restart Preparation Routine
Restart Reader Linkage Routine
Restart Reader Linkage Routine
Restart SVC Issuing Routine
RJE Read/Write Routine -- Queue Management
RJF Write LTH Routine
Router -- Interpreter (Control Routine)
Router Routine -- SVC 34
Routing Location Routine (Load 1)
SVC 34
Routing Location Routine (Load 2)
SVC 34

IEELWAIT
IEFVSDRA
IEFVSDRD
IEFRPREP
IEFRCLNl
IEFRCLN2
IEFRSTRT
IEFRDWRT
IEFSD447
IEFVHE
IEE0403D
IEE7503D
IEE7603D

Scan Routine
Scan Routine -- Interpreter
SCD Construction Routine -- MVT Interpreter
Scratch Data Sets Routine -- MVT System Restart
Scratch Data sets Routine -- MVT System Restart
Search Routine -- Queue Alter Routine
Search Control Routine -- Queue Alter Routine
separation strikeout Routine -- I/O Device
Allocation
service Routine -- Queue Alter Routine
SET Command Handler
SET Command Part I -- SVC 34
SET Command Part II -- SVC 34
SET Time-of-Day (TOD) Clock -- SVC 34
SlOT Reader for Warmstart -- Termination
5MB Handler -- System Output Writer
5MB Reader Routine
SMF Allocation Routine -- SVC 83
SMF Dump Routine
SMF Initialization
SMF Initialization
SMF Open Initializer
SMF Parameter Processor
SMF VARY Record Handler Routine -- SVC 34
SMF Writer
SMF Writer Interface Routine
Termination
Space Request Routine -- I/O Device Allocation
spanned Data Sets Handler -- System Output Writer
Spool Routine -- Interpreter
Stack Initialization -- MVT Queue Management
(Track stacking)
Stack Purge Routine -- MVT Queue Management (Track
Stacking)
STAE Environment Creation Routine
SVC 34
STAE Exit Routine (Load 1)
SVC 34
STAE Exit Routine (Load 2) -- svc 34
STAE Exit Routine (Load 3) -- SVC 34
standard Writer Routine
System Output Writer
START and MOUNT Commands Get Region Routine
START Command Syntax Check -- System Task Control
START/MOUNT hierarchy Parameter Processor -- SVC
34
Step Termination -- Termination
Step Termination Control Routine -- Termination
Step Termination Data Set Driver Routine -Termination
Step Termination Exit Routine -- Termination
step Termination Nessages -- Termination
STOP and MODIFY Processing Routine
Direct
System Output
STOP and MODIFY scheduling Routine
SVC 34

IEFVSCAN
IEFVFA
IEFVSD13
IEFSD304
IEFSD308
IEESD564
IEESD563
IEHXHOOO

Fl
F4,F12
F4
F4,C27
FlO
FlO
FlO
F66,F68,C4
F24
F24
F24

C2
F4,C32
F4
F37
F37
F81,C20

IEESD565
IEE0903D
IEE0603D
IEE8603D
IEE6503D
IEFWSYP3
IEFSD086
IEFVSMBR
IEESMFAL
IFASMFDP
IEESMFIT
IEESMFI2
IEESMFOI
IEESMFI3
(IGC2303D) IEE2303D
IEESMFWR
IEESMFWI
IEFXTOOD
IEFSDXXX
IEFVHG
IEFSDllO

F37
F24
F24
F24
F24
C27
F20
FlO

IEFSDl12

C36

IEEOOO3D
IEE5103D
IEE5203D
IEE5303D
IEESD087
IEEPRWI2
IEEVSTAR
(IGC3803D) IEE3803D

F24
F24
F24
F24
F20
F32
F32
F24

IEFYNMSG
IEFYNIMP
IEFYPJB3

C27
C27

(IGC0903D)
(IGC0603D)
(IGC8603D)
(IGC6503D)

Appendix F:

Fl
Fl
Fl
Fl
F45
Fl
F81,C23
F20
C4
C33,C35

IEFSD22Q
IEFYPMSG
IEFDSOSM

C27

IEE0703D

F24

Module Cross-Reference

447

Symbolic Parameter Processing Routine -Interpreter
System Output Interface Routine -- MVT Termination
SYSIN Processor Routine -- MVT Interpreter

IEFVFB

Table Merge Routine
Table Breakup Routine -- System Restart
Table Build Routine Translate Table -- Data Set
Integrity
Tape-to-Printer or Card-Punch Routine -- Direct
System output
Task Delete Routine -- MVT Initiator
TCTIOT Construction Routine -- Initiator
Termination Entry Routine -- Termination Routine
Termination Routine -- MVT Interpreter
Test and Store Routine -- Interpreter
TIOT Compression Routine -- I/O Device Allocation
TIOT Construction Routine -- I/O Device Allocation
TOD Clock" TQE Update -- SVC 34
Transient Queue Management Initialization and
Read/Write Routine
Transient Queue Management Record Assignment
Routine
Transient Queue Management Track Assignment
Routine
Transition Routine -- System Output Writer
Tree Table Build Routine -- Initiator (Data Set
Integrity)
TTR and NN to MBBCCHHR Conversion Routine -- MVT
System Restart

IEFVRR2
IEFSD514
IEFDSTRT

Unallocation Routine -- Termination
Unchain Routine --MVT Queue Management
Unsolicited Device Interrupt Handler -- MVT I/O
Device Allocation
User Accounting Routine Linkage -- Termination
User Exit Initialization Routine
Initiator
User Exit Initialization Routine -- Termination
Routine
VARY and UNLOAD Processor -- SVC 34
VARY and UNLOAD Syntax Scan -- SVC 34
VARY Channel Routine
VARY/CONSOLE/HARDCPY Keyword Scan -- SVC 34
VARY CONSOLE Information Message -- SVC 34
VARY CONSOLE Processor -- SVC 34
VARY CPU Routine
VARY HARDCOPY UNIT Processor -- SVC 34
VARY HARDCPY, OFF Routine -- SVC 34
VARY HARDCPY Processor -- SVC 34
VARY Keyword Router -- SVC 34
VARY MSTCONS Processor -- SVC 34
VARY ONLINE/OFFLINE for Console Devices -- SVC 34
VARY Operand Check Routine
VARY PATH Processor for Multiprocessing Routine
(Part 1) -- SVC 34
VARY PATH Processor for Multiprocessing Routine
(Part 2) -- SVC 34
VARY PATH Processor Routine
SVC 34
Vary Preprocessor -- M65MP
VARY Secondary Keyword Scan
SVC 34
VARY Storage Ro~tine
Verb Identification Routine
Volume Attribute Setting Routine

448

OS/360 MVT Job Management (Release 21)

C2

IEFSD017
IEFVSD12

F4,F12

IEFPRTXX
IEFSD164
IEFSMFAT
IEFSD42Q
IEFVHN
IEFVGT
IEFXT002
IEFWClMP
(IGC6603D) IEE6603D
IEFXQMOO

F12
F66,C2,C4
C6
C23
F81
F24

IEFXQM02
IEFXQMOl
IEFSD088
IEFDSTBL

F20,

IEFSD310

IEFZGST2
IEFGMUNQ
IEFVPOST

C27,C28,C29

IEFACTLK
IEFSMFIE
IEFSMFLK

(IGC3103D) IEE3103D
(IGCll03D) IEEll03D
IEEMPVCH
(IGC4403D) IEE4403D
(IGC4803D) IEE4803D
(IGC4903D) IEE4903D
IEEMPVCP
IEE7203D
(IGC5703D) IEE5703D
(IGC4703D) IEE4703D
(IGC3203D) IEE3203D
(IGC4303D) IEE4303D
(IGC4603D) IEE4603D
(IGC2203D) IEEMPCKR
(IGC2403D) IGF24MPD

F24,F45
F24,F45
F45
F45
F45
F45
F45
F24,F45
F45
F45
F45
F45

IGF34MPD
IGF2403D
(IGC3603D) IEE3603D
(IGC4203D) IEE4203D
IEEMPVSE
IEEVHCB
IEFPRES

F45
F45
F66,F68,C4
Fl

Wait and Attach Routine (Master Scheduler)
Wait for Unallocation Routine -- MVT Device
Allocation
Wait for Space Decision Routine -- MVT I/O Device
Allocation
wait Routine
Direct System Output
System Output Writer
Wait Routine
Write JFCBs

IEEVWAIT
IEFSD195

F8l

IEFSD097

F8l

IEFDSOLP
IEFSD084
IEELOGOI

F20
Fl

3211 Printer Processor

IEFSDTTE

F20

Appendix F:

Module Cross-Reference

449

Bibliography

The following list of books provide
additional background information for
understanding the material contained in
this publication:

IBM system/360 Operating System:
Graphic Job Processor Support PLM,
GY27-7159

IBM system/360 Operating System:
system Control Blocks, GC28-6628

Direct Access Device Space Management
PLM, GY28-6607.

Operator's Reference, GC28-6691
Input/Output Supervisor PLM, GY28-6616.
Operator's Procedures, GC28-6692
MVT supervisor PLM, GY28-6659.
Introduction, GC28-6534
IPL/NIP PLM, GY28-6661.
Data Nanagement Services, GC26-3746
Remote Job Entry PLM, GY30-2005.
supervisor services and Macro
Instructions, GC28-6646

System Management Facilities, GC28-6712.

Data Management Macro Instructions,
GC26-3794

TSO Command Processor PLMs, GY28-6771
through GY28-6777 [7 volumes]

MVT Guide, GY28-6720

TSO Control Program PLM, GY28-7199.

This publication also makes reference to
the following publications:

450

OS/360 MVT Job Management (Release 21>

Component Summary -- 3830 Storage
Control; 3330 Disk Storage, GA26-1592.

Index

Indexes to program logic manuals are
consolidated in the publication IBM
system/360 Operating system: Program Logic
Manual Master Index1 GY28-6717. For
additional information about any subject
listed below, refer to other publications
listed for the same subject in the Master
Index.

I abbreviations

437
ABTERM 74
STAE processing 98
step termination indication 222-223
access methods
BSAM 32
EXCP 79,155
QSAM 79
XDAP 154
(see also track stacking)
account control table (ACT)
format and description 241,242
initialization of 186
updating of 75
accounting routine
execution by interpreter 192
execution by job termination
221,227-228
execution by step termination 75,221
interpreter exit list format 169-171
interpreter linkage description 192
address of job control language set
(JCLS) 105
affinity, volume
affinity resolution 205
device strikeout processing of 217-218
TIOT pointer linkage 213
allocate volume table (AVT)
construction of 203
format of 203
used by device strikeout 217
allocate work table (AWT)
construction of 204
entry sources 204
storage requirements of 203
used by decision allocation 212
used by demand allocation 208
used by device strikeout 212,220
allocate/IEFVPOST communications block
format and description of 242,243
use of 227
allocation
(see I/O device allocation)
allocation control block
format of 202
use of 201,202
allocation for units tested by OLTEP 209
allocation tables 203
allocatiOn/termination communication area
(ATCA)
215-216,242
American National Standard control
characters 87

American National Standard label 210
ASB c():1trcl flow 45
ASB queue
compression technique 49'
redder !i7,50
use cf 47,49
ASS termination
50
ASCII translation routine 210
assignment of logical tracks (Fig) 160
assignment of work queue space
during initiator processing 151
during interpreter
processing 23,146,148
general 25-26,32,145
I/O operations during 154
method of 32,158
ATTACH macro instruction
parameter list 72 1 73
used by initiator 23,58,72,73
used by master
scheduler 24,29,32,43,101,108,109
used by system output writer 83,84
used by system restart routine 42
automatic restart 54
automatic SYSIN batching (ASB)
initialization of 45
parameter list 45
automatic SYSIN batching (ASB)
queue 24,34,38,41
automatic SYSIN batching (ASB) routine 44
use in reading task 43,44
automatic volume recognition (AVR)
209-210
AVR routine 128
background reader (BRDR) queue
BSAM
(see access methods)

25,32

calling the JSS 105
CANCEL command
initiator processing of 74,127,198
queue search routine processing of 115
system output writer processing of 127
termination routine processing of
222,223
use of 25,218
cancel ECB posting 74
catalog, use of 199,225
cataloged procedure
definition of 166
end of a 174,175
initiator 57,60
invocation of 171,175
overriding a 172,183
reader 46
writer 79
chain manipulation routine 94
channel load table (CLT)
206,212
CHAP macro instruction
used by attach routine 74
used by job delete routine 76

I

Index

451

checkpoint/restart 52,54
42
command chaining access method routine 87
command input buffer (CIB)
chaining 96,136
format of 125
command scheduling control block (CSCB)
command storage in 25,91,244
command-issuing authority 95
creation of 67,96,244
deletion of 107,244
format and description of 244
command scheduling routine
(see SVC 34)
command translator routine 94
commands executed by master scheduler 96
commands with protection key of zero 101
communications parameter area (CPA)
format and description of 61
used by ASB routine 45
completion codes 74,198,221
COND parameter 198
condition codes
EXEC statement 58,198
JOB statement 58,227
conditional dispositions 226
Iconsolidated jobnames table 42
control characters
American National Standard 87,88
machine 87,88
I CONTROL command 131,132
count mode 132,133
CSCB updating 96

I CJT

I

DADSM
error return from 216
use of 195
data control block (DCB)
fetch and joblib 72,75,201
input stream 173,192
procedure library 29,173,193
system output 79,85
work queue data set 32,39
data extent block (OEB)
32,39
data set block (08B)
assignment of space for 77,172,204
format and description of 246
system output writer
use of 77,82
used by system restart routine 39,41
used by termination routine 221,226
data set device requirements 205
data set enqueue table (OSENQ) 63,76
format and description 248
data set integrity 23,63
data set name table (DSNT)
249
data set switching 232
OD statements
data statement checking 51
errors in 181
interpreter processing of 175,186
order of 212
reading 175
use of 195,199,204,,205
dedicated data sets 200
dedication determination routine 200
452

08/360 MVT Job Management (Release 21)

delete routine
description of 26
sequence of I/O operations 154
used by ASB routine 50
used by initiator 151,164
used by system output writer 164
OEQ macro instruction
used by I/O device allocation
routine 197,218-222
used by initiator 62,64,68,76
used by queue alter routine 116
used by queue
management 62,64,152,161-164
used by termination routine 224,229
dequeue routine
description of 26,152,162
track stacking interface 60,61,155-156
used by initiator 58,61,44
used by system output writer 80,151
dequeueing by jobnames '164
device eligibility for allocation 211
,device independent display operator console
'support (DIDOCS) routines
reference to 132
device mask table (OMT)
format and description of 250
use of 204
device name table (ONT)
format and description of 251
device requirements 204
(see also channel load table)
diagnose stop instruction
used by quiesce routine 117
dictionary
of abbreviations 437
direct system output (OSO)
23,136
determination routine 201
initiator processing ot" 61,63,72
I/O device allocation use of 71,199-201
system output processing of 77
termination routine
processing of 221,225-226
use of queue management 71
writer 229
direct system output control block (OSOCB)
creation of 251
format and description of 251
dispatching priority 73
OISPLAY command
CONSOLES 110
A 108
active 108
C,K 109
jobnames 128,195
M 108
N 116
PFK 110
Q 116
R 128,129
SQA 129
T 132
U 101,110
display control module (COM)
131
display (CRT) console
--, used by CONTROL command routine 132
used by MSGRT command routine 130
disposition 225,226

I

(

I

DLM parameter
syntax checking 51
DSCB 42,199
DSDR processing 52,54
DSNAME 50,51,185
050 environment check routine 71
dynamic device reconfiguration (DDR)

'.

197

ECB/IOB
freeing of 117
end-of-data 174,193
ENQ macro instruction
ASB routine use of 48
I/O device allocation routine
use of 197,204
initiator use of 63,68
queue management
use of 61,152,159,163,164
termination routine
use of 151,224,225,229
track stacking routine interface 154
ENQ parameter list 63
enqueueing SYSOUT data sets for cancelled
jobs 117
EXCP macro instruction
(see access methods)
EXEC statement
default options 169
initialization processing 175
processing of 186
symbolic parameter processing 182
(see also condition codes)
flush mode processing 195,198,199
force priority 60,75
free/get region routine 76,107
functions of initiator 58

I

generation data group (GDG) 55,199,201
get region routines
for queue alter routine 114
GETPART macro instruction 70
GETPART work table 67
group control block (GCB)
format and description 58
use of 57,60
GWT storage
release of 70

.HALT command (SVC 76) 132
hardcopy log 142,143
requirements for 143
HIERARCHY parameter 101,102
in START command 67
in EXEC statement 67
HOLD command
execution of 26,115
hold queue 24,26,35,36,38,41,146
entry class change for 116
housekeeping
allocation 195,197
JFCB 195,197
termination routine 222
(see also initialization)

I

IBM standard label 210
image-ids for 3211 printer
FCB 79,82,85
UCS 79,82,85
initialization
initiator 60
interpreter 183
queue 24,32,34
system 27,29,30
system output writer 77
track stack 155
(see also housekeeping)
initiating tasks
(see initiator)
initiator
commands 23,57.61,63
control routine 107
entrance list 57,107,253
exit list 57,107 .. 254
functions of 23,57,59,150
interface 57 .. 60,107
option list 57,60,107
priority 59-62
region 23,58,61,65
System Task Control routine use of 43
use in reading task 44
use in TSO processing 66
use of I/O device allocation
routine 23,58,71,195
use of queue
management 58-62,151,152,158
use of termination routine 23,58
input queue
contents of 25,43,145,175
entry enqueued 150
management of 24-25,34,145
use of 23,24-25,43~57,72,76,150
input stream
access method for 41,166
address of 173
commands for 23,43,46
composition of 23,,43,107,173
data in 23,43.47,51,166,187
DCB for 173
opening of 64,101,171,173,175
procedures in (see in-stream procedure)
pr~cessor

49,50

reading of 23,43,101,173
in-stream procedure
ASB routine processing of
44
definition of 166
directory ,46
inc luded in job 179
parameter list 176
processing of 163
work area 258
internal list entry format 182
interpreter
control routine 173
construction of (with ASB) 47
entrance list 47,167
exit list 170,171,190
exit routine 106
exits 170,171,192
functions of 23,43,166
initialization of 173
interface 166
option list 168
Index

453

interpreter (continued)
parameter processing 174-177,180-18~
post scan exit routine 103-108
region regulator 47-48
scan routine 182
use of queue management 148,158
interpreter work area (IWA)
format and description of 260
initialization of 173
use of 179.,181,192,193
I/O device allocation interface 71
I/O device allocation routine
commands executed by 107,195,197
functions performed by 23,24-26,195
recovery routines 217
use of 23,25,26,43,58,71,195
IPL routine for TSO 27
JCL edit routine 103
JFCB
creation of 200,201
I JMR job name address 74
job cancellation processing 198
job control language compression 49
job control table (JCT)
address of 193
construction of 175-180,186,190
format and description of 264
initiator use of 62,72
I/O device allocation routine use of
201
in a queue entry 161
system restart use of 40
termination
use of 199
writing of 171,178
job-failed bit
initiator use of 62
interpreter use of 1,79, 181
I/O device allocation routine
use of 197
termination routine
use of 221-228
job-flush bit
I/O device allocation
routine use of 197-201,218
system restart routine. use of 40
termination routine
use of 221,226
job file control block (JFCB)
construction of 186
format and description of 266
interpreter processing of 83,181
I/O device allocation routine proces~ing
of 199,215
system output writer processing of 79
system restart routine
processing of 83
job management record (JMR)
format and description of 268
job scheduling entrance list (JSEL)
103,270
job scheduling exit list (JSXL) 103,271
job scheduling option list (JSOL) 103,262
job scheduling subroutine (JSS) 105
job scheduling work area (JSWA)
263
I job status code 152
454

OS/360 MVT Job Management (Release 21)

job step
abnormal termination 74
TCB 74
termination determining 74
job step control block {JSCB}
termination routine use of 75,76
job step tasks
in START command 101
in input stream 102
job suspension 76
job termination
by system conversion routine 41
JSS 105

I

label verification 214
linkage table 103
linkage control table (LCT)
format and description of 275
data set integrity use of 63
I/O device allocation routine
use of 198,218,222
initialization of 60
job selection routine use of 62
region management use of 68
termination routine
use of 222,227,228
loading UCS/FCB buffers for 3211 84
loading writer default image-ids for 3211
printer 85
local work area
(LWA) 173.,183,186,190,193
IOg ECB
posting of 29
logical track
assignment of 158
definition of 32,148
logical track header (LTH)
32,35,152
LTH record relative number 156

I

machine control characters 86,87,89
machine status block (MSB)
for Model·145 134
for Model 155 133,134
for Model 165 134
use of in MODE command process ing 133
ma;i.n storage hierarchy support 65
master scheduler resident dat.a area
command scheduling routine
use of 138
format and description of 276
initiator use of 60
I/O device allocation routine
use of 197
master scheduler use of 35
termination routine use of 227
master queue control record
description of 32,33
function of 32
master scheduling task
(see system tasks)
message level options 169
I message routine control table (MRCT) 130
minimum initiator region size (BAMINPAR)
65
minimum job step region size (BAMIPAR2) 65

-mode
count 132-134
recording 133
MODE command 132
MODIFY command
execution of 60,61,64,77,79,136
use of 23,136
MONITOR command

I

A

111

DSNAME 127
JOBNAMES 128
SPACE 129
STATUS 129
MOUNT command
execution of 107
scheduling of 107
use of 107
mount verification communication area
(MVCA)
215,242
mount verification communication area
extension (MVCAX)
215,242
use of 101
I MRCT entry format 130
MSGLEVEL (see message level)
I MSGRT command 130-131
multiple console support options 94.169
IM65MP option with VARY command 139,141
NEro 167,168
NEL exit list entry 47
no command to process 80
no-queue-space ECB 49
no-work chain 61,79,163
nonstandard label 210
NOSEP 218
OLTEP 141,142
OFFLINE requests with VARY command 119,121
Online Test Executive Program
(see OLTEP)
option buffer (OPT)
103,105
option list (see option buffer)
OUTLIM parameter
use in termination processing 74
output queues
contents of 23,147
management of 24,145
use of 23,24,58,63,77,171,221,223
parameter descriptor table (PDT) 186
parameter list
ATTACH macro instruction 72
initiator 73
parameter validity 51
PARM field 71,79
buffer 45
passed data set queue
(PDQ) 199,201,229,282,283
PAUSE option 83,88
PDT entry control information 189
PEND statement 46,175
permanent I/O error 80
positional parameters 181,182,186-188
POST macro instruction
used by CANCEL command 127
used by command scheduling routine 27

I

pre-attach routine 72,73
priority
for entry enqueueing 161
initiator 61,62,72,73
interpreter 169
job 169
queue entry 23,38,145,151,161
PROC statement 46,175,177,183
procedure, cataloged (see cataloged
procedure)
procedure, in input stream (see in-stream
procedure)
procedure, in-stream (see in-stream
procedure)
procedure library
address of 29
cataloging by master scheduler 27,29
definition of 43,102
input from 43,46,171,174
opening of 161,163
procedure override table 186,191,282,283
program properties table 66
protection key assignment 101
purge queue processing "39
QMPA construction 52
queue control record (QCR)
access to 152
contents of 32
format of 33
I
updating the master 39
queue da ta set
formatting of 137
queue entry construction 161
queue entry pointer table entries
(Table C) 38
queue full condition 48
queue manager parameter area (QMPA)
address of 167
format and description of 152,153
function of 152
initiator use of 60,61
interpreter use of 167,190
queue manipulation commands 113,114
queue routines
descriptions of 117
queue searching for job commands 114,115
queue space assignment 158
QUIESCE command 101,118

reading task 43
.
reconfiguration, logical and physical ~17
record compression/decompression
routines 190
.
ASB routine use of· 49
interpreter routine use of 177,187,190
record compression technique 191
record movement
track stack and queue data set 155,156
recording mode 133,134
recovery management support (RMS) 133,134
for MOdel 85 133
for Model 155 133,134
refer-back dictionary (Fig) 194
refer-back processing 187,190
. Index

455

region
address in the SCT 68
command processing 107,108
direct access volume
'
initialization 29,30
interpreter 47,166
job step/initiator
23,60,61,65,71,168,169

queue initializing 32
RELEASE command
execution of 113
use of 113,146
RELEASE Q command 115
remote job entry (RJE) queue 24,35,36,41
routine use in reading task 43
REPLY command
use of 218,219
reserved path
definition 142
RESET command
execution of 113
restart determination routine 40
restart reader 52
interpreter interface 53

I

RMS

133,134

rotational positional sensing (RPS)
router routine 95
RPS

32

32

scan dictionary 182,183
SCD processing 38
SCD
update of 76
scheduler lookup table (SLOT) 207
scratching data sets 42
separation requests 195,209,215,218
'SET command
execution of 27
master scheduler use of 27
scheduling of 24
TOD clock, setting by 29
use of 27
shoulder tap 118
5MB-handler routine 85
5MB in-stream procedure
use of 177
5MB reader 53,
SMF
allocation routine 30,31
data sets 30,31,231
dump 233
initiator
use of 66
initialization routine 27
open initialization 31
open routine 31
override ' 168
records 233
SWITCH command 139
use of TIME macro instruction 231
writer 232
SMP WTP
use of 222
spanned data sets routine 87
spool routine
interpreter
use of 181

I

456

05/360 MVT Job Management (Release 21)

stack purge routine 66
stack purging 158
stack storage required 155
STAE facility 98
command scheduling, use of 91
master scheduling, use of 91
retry 99
standard tape label (see IBM standard
label)
START command
execution of 43-45,57,60,77,102
job step tasks in 60,61,101,102
scheduling of 101,102
system tasks in 60,101
task 102
use of 23~24,43,44,57,77
start descriptor table (SDT) 103
step control table (SCT)
construction of 186,190
format and description of 284
I/O device allocation routine
use of 199,200
initiator use of 65,67,75,76
system restart routine use of 40,41
termination routine use of 222,223
step control table extension (SCTX)
format and description of 287
step input/output table (SlOT)
format and description of 288
step restarting 54
STOP command
execution of 57,,61,63,80,137-139
use of 23,24,47,218
STOPMN commands 137-139
storage area dumped by DUMP command 112
SUBMIT command 25
I subtask attaching 72
subtask region size 70
suspending system activity 118
SVC dump facility 98
SVC 34
dequeue routine use of 163
functions of 26
interpreter use of 43
system output writer use of 83
use by termination 76
SVC 90 (see transient queue management
routines)
SVC 99 (see dynamic allocation)
swapping TSO task 231
SWITCH command 139
switching data sets 232
symbolic parameters
in START command 101,102
processing of 183
buffer 183
syntax check routine 101,102
system input data (see input stream)
system log initialization 29
system management control area (SMCA)
format and description of 290
system management facilities 229
data sets 31,231
dump routine 233
initialization of 27,29-31,210,211
initialization routine (see system
management facilities, initialization
of)

I

interpreter use of 173
open initializer (see system management
facilities, initialization of)
records 31,66,232
SVC routine (SVC 83)
31,230
SWITCH command 139
use in output queue entry processing 82
use in region management 62
use in step termination 222
writer 31,231
system message block (SMB)
contents of 77,145
format and description of 294
I/O device allocation routine
use of 195,197,198,221
initiator use of 63
interpreter use of 171 1 178,,181,190
system output writer
use of 77,82-86
system restart routines use of 40,41
termination routine
use of 222.,228
write-to-programmer use of 223
system output class directory (SCD)
format and description 296
initiator use of 62
interpreter use of 183
system restart routines
use of 38-41
termination routine use of 227
system output classes
definition of 24,146
initiator processing of 62,63
interpreter processing of 148
system output writer processing of
74-87
.
system output data sets
allocation of space for 160
definition of 23,146
disposition of 222,223
flush mode processing of 200,201
interpreter processing of 23
system output writer
processing of 23,82
system restart routines
processing,of 34,38
termination routine
processing of 24,221-223,229
system output messages
allocation 195-197,,214,221
interpreter 148
termination routine 24,221
system output writer
commands 24,77,79
data set processing by 24,25,77,82
direct system output processing by 77
functions of 24,77
initialization of 77,79
5MB processing by 77,85
use of queue
management by 77,79,152,162-164
user routine of 83
system task control routine 104
system tasks
command execution 24,26,27,,100,101
direct access volume
initialization 27
initiating 24,57

master scheduling 24,27,96
queue alter 98
queue initialization 24,27,32
reading 23,43,145,166
scratch data set utility 42
writing 23,77
terminating task 75

table IDs 239
tables/work areas
account control table 241
allocation/termination communication
area 243
command scheduling control block 245
data set block 247
data set enqueue table 248
data set name table 249
device mask table 250
device name table 251
direct system output control block 252
initiator entrance list 253
initiator exit list 255
initiator option list 256
instream procedure area 258
interpreter work area 259-263
job control table 265
job file control block 267
job file control block extension 267
job management record 269
job scheduling entrance list 270
job scheduling exit list 271
job scheduling option list 272
job scheduling work area 273
linkage control table 275
master scheduler resident data area 277
passed data set queue 281
procedure override table 283
step control table 285
step control table extension 287
step input/output table 289
system management control area 291
system message block 295
system output class directory 296
task input/output table 297
timing control table 299
timing control table input/output table
300
volume table 301
write-to-programmer control block 302
tape label
American National Standard 210
AVR processing of 210
IBM standard 210
nonstandard 210
task input/output table (TIOT)
compression of 216
construction of 195,212,213
DISPLAY A command use of 108
dummy 195,198
format and description of 292,300
storage requirements of 191,203
system output writer 83-85
TCT I/O table
construction of 73
format and description of 300
temporary data sets 173
Index

457

termination
abnormal 221,222,226,227
initiating task 2q,63,221
job and step 2q,7q,221
reading task 23,Q3,Q7.Q9,193
system task 25
via CANCEL command 25
time intervals for I/O operations 117
TIME macro instruction
use of 73,197
time-of-day clock 29
setting 136
time sharing option
timer queue element 136
time stamp 73
I address 7Q
timing control table (TCT)
format and description of 298,299
TPUT macro instruction
used by DISPLAY active routine 108
tracks required for assigning queue macro
space 158
track stacking
description of 15Q
initiator use of 60,72
queue management use of 155.159
specification of 60,155
use in region management 66
use in I/O device allocation 71
transient queue management routines

I

lQ8,16Q

TSO foreground job ID 232
TSO task for swapping 231
TSO terminating task 75
TSO termination via LOGOFF 223
TTIMER macro instruction
use by Attach routine 7Q

UCS printer as output device
UMC indicator 138
unallocation 222,223,226
unit control block (UCB)
protection of 197,198
UNLOAD command 139

Q58

79

05/360 MVT Job Management (Release 21)

vary channel decision table 119,120
VARY commands
descriptions of 119-127, 139-1Q2
use of 216
volume affinity
(see affinity)
volume table (VOLT) 301
volumes
private 195,205,,209,219,223
public 195,205,209,216,226
reserved 195,205,209,226
resident 195,205,209,226
shared 205

Iworkseeareas/tables
'tables/work areas'
work queues 2Q,32,lQ5
WTO macro instruction
used by DISPLAY routines
108,109,110,111,112

used by master scheduler 27,29
write-to-programmer (WTP)
checkpoint/restart use of 221
error processing routine 237
initialization routine 236
initiator use of 62
I/O device allocation use of 221
message processing routine 236
write-to-programmer centrol block (WTPCB)
creation of 302
format and description of 302
initiator use of 73,75
storage for 62
termination processing of 75,76
writing task
(see system output writer)
XCTL macro instruction
system task control routine use of
XDAP (see access methods)
3211 printer

88

60

READER'S COMMENT FORM
IBM System/360 Operating System:
MVT Job Management
Program Logic Manual

Order No. GY28-6660-9

Please use this form to express your opinion of this publication. We are interested in your
comments about its technical accuracy, organization, and completeness. All suggestions
and comments become the property of IBM.
Please do not use this form to request technical information or additional copies of publications.
All such requests should be directed to your IBM representative or to the IBM Branch Office
serving your loca lity.
• Please indicate your occupation:
• How did you use this publication?
D Frequently for reference in my work.
D As an introduction to the subject.
D As a textbook in a course.
D For specific information on one or two subjects.
• Comments {Please include page numbers and give examples.}:

• Thank you for your comments. No postage necessary if mailed in the U.S.A.

GY28-6660-9

YOUR COMMENTS, PLEASE . ..
This manual is part of a library that serves as a referl~nce source for systems analysts,
programmers and operators of IBM systems. Your answers to the questions on the back
of this form, together with your comments, will help us produce better publications for
your use. Each reply will be carefully reviewed by the persons responsible for writing
and publishing this material. All comments and suggestions become the property of IBM.

»

0'

::s

CD

..

C
::s

Note: Please direct any requests for copies of publications, or for assistance in using your
IBM system, to your IBM representative or to the IBM branch office serving your locality.

Fold

Fold

FIRST CLASS
PERMIT NO. 81
POUGHKEEPSIE, N. Y.

BUSINESS

REPLY

MAIL
V1

NO POSTAGE STAMP NECESSARY IF MAILED IN THE UNITED STATES

'<

!!l-

t"

0-

o

o

POSTAGE WILL BE PAID BY ..•

V1

~

-I

IBM Corporation

'-

P.O. Box 390

~
::s

o

0-

o
co
3

Poughkeepsie, N.Y. 12602

"

"

:>,.

V1

Attention: Programming Systems PuFilications
Department 058

W
0-

o
I

W

.2::
Fold

Fold

G>

-<

!)l
I

0.00-

o
I

-0

International Business Machines Corporation
Data Processing Division
1133 Westchester Avenue, White Plains, New York 10804
[U.S.A. only)
IBM World Trade Corporation
821 United Nations Plaza, New York, New York 10017
[International)

GY28-6660-9

~

--I

L-

a

cr

~

:J
C


Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.3
Linearized                      : No
XMP Toolkit                     : Adobe XMP Core 4.2.1-c043 52.372728, 2009/01/18-15:56:37
Create Date                     : 2011:10:04 16:11:43-08:00
Modify Date                     : 2011:10:04 17:20:21-07:00
Metadata Date                   : 2011:10:04 17:20:21-07:00
Producer                        : Adobe Acrobat 9.46 Paper Capture Plug-in
Format                          : application/pdf
Document ID                     : uuid:f00d9aee-c2ef-4c19-ba6c-c830d256cf69
Instance ID                     : uuid:b174a8b5-1cc5-4c33-8bb0-afb46900d94d
Page Layout                     : SinglePage
Page Mode                       : UseNone
Page Count                      : 462
EXIF Metadata provided by EXIF.tools

Navigation menu