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 .
Page Count: 462
Download | |
Open PDF In Browser | View 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 Dat oJ' 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 : 462EXIF Metadata provided by EXIF.tools