SY20 0885 0_VM370_System_Logic_and_Problem_Determination_Guide_1976 0 VM370 System Logic And Problem Determination Guide 1976
User Manual: SY20-0885-0_VM370_System_Logic_and_Problem_Determination_Guide_1976
Open the PDF directly: View PDF .
Page Count: 665
Download | |
Open PDF In Browser | View PDF |
SY20-0885-0 IBM Virtual Machine Facility/370: System Logic and Problem Determination Guide 1976 Page Missing From Original Document Page Missing From Original Document PREFACE This publication provides the IBM system hardware and software support personnel with the information needed to analy~e problems that may occur on the IBM Virtual Machine Facility/370 (VM/370). "Section 4. Diagnostic Aids" contains .debugging commands for problem solving, ~ait state and ABEND codes, error codes, ret,urn codes, and information about the DASD'Dump Restore Program. CMS/DOS is part of the eMS system and~is not a separate system. The term eMS/DOS'is used in this publication as a concise way of stating that the DOS simulation mode of CMS is currently active; that is, the eMS command "Section 5. Appendixes" contains reference information that may be useful when Qebugging VM/370, such as: the VM/370 pr09~amming restrictions, the CMS ZAP Service Program, and the VM/370 coding conventions and equate symbols. SET DOS ON has been previously issued. The phrase "CMS file system" refers to disk files that are in CMS's 800-byte bloc~ format; CMS's VSAM data sets are not included. A system failure is usually accompanied by a dump of processor storage. The dump can occur by means of an automatically invoked dump program, or a standalone dump program. An example of a standalone dump program is: ·HOW TO. USE THIS MANUAL • Use the problem determination part of section 1 to help you to determine what type of error has occurred. Write down a1~ error messages, ABEND codes and return codes, and obtain a storage dump. • Consult the !~Ll1Q: ~~§!~! ~~§§g~~§ for information about the error message, ABEND code, or return code. The !~L11Q: ~~§!~~ Me22gg~2 also contains extensive cross-reference information that may be ·he1pfu1 to you. • Isolate the component of VM/370 in which the problem occurred. • Use the list of restrictions in "Section 5. Appendixes" to be certain that the operation that was being performed was valid. BPS Storage Print Program, No. 360-UT-056 HOW THIS MANUAL IS ORGANIZED This manual contains five sections: "Section 1. Introduction" contains debugging information about error conditions that may occur within VM/310. This debugging information tells you what to do about ABENDs, loops, wait states, and incorrect output. Section 1 also contains a brief description of three of the VM/370 components. The components that are described are: the VM/370 Control Program (CP), the Conversational Monitor System (CMS), and the Remote Spooling Communications Subsystem (RSCS). "Section 2. Method of Operation and Program Organization" contains the functions and relationships of the program routines in VM/370. section 2 indicates the program operation and organization in a general way to serve as a guide in understanding the programming of VM/370. It is not meant to be a detailed analysis of VM/370 programming and cannot be used as such. "Section 3. Directories" contains a description of all the asse.ble modules in CP, CMS, and RSCS. It also contains extensive cross-references between modules and labels within a VM/370 component. • Use "Section 3. Directories" and use the Data Areas and Control Block ~2~!f to---he1p--you-~0 --isolate--the problem. !~Ll1~: • Use "Section 2. Method of Operation and Program Organization" if necessary, to understand the operation that was being performed. PREREQUISITE PUBLICATIONS !~~ !!~!yg! ~~fh!n~ Igf!!!!~Ll1Q: 1~!~QgYf!!2~, Order No. GC20-1800 Order No. COREQUISITE PUBLICATIONS !~~ Q~L!§ ~Bg Y~L11Q !22gm~!g£ g£Qg£~mmg£~2 §~i~g, !~~ Order No. Q~L!§, 1~gg~~gg, GC33-4021 ~Q~LY§, ~Bg Order No. Y~L11Q GC33-4010 !§§g!£!g£ §~2~gm ~g22~gg2' Order No. GC20-1808 SECTION 1. INTRODUCTION • • • • • • • • • 11 Introduction To Debugging. 11 How To Start Debugging • • • • • • 11 Does a Problem Exist? . • • • 11 Analyzing the Problem. • • .' •• 12 Using VM/370 Facilities to Debug ~ 12 CP Abnormal Termination. •• 12 CP Termination without a Dump. . 1 6 CM S Abnormal Termina tion • • • • • 16 Virtual Machine ABEND (Other Than CMS) 18 Unexpected Results • • • • • • • • • • 23 Unexpected Results in CP • • • • 23 Unexpected Results in a Virtual Machine • • • • • • • • 23 Loops. • • • • • • • • • • 23 CP Disabled Loop • • • • • 24 Virtual Machine Disabled Loop. • • • • 24 Virtual Machine Enabled Loop • 24 WAIT • • • • • • • • • • • • 24 CP Disabled Wait • • • • 25 CP Enabled Wait. • • • • • • 26 Virtual Machine Disabled wait • • • • • 26 virtual Machine Enabled Wait • • • • • 26 RSCS Virtual Machine Disabled Wait • • 27 RSCS Virtual Machine Enabled Wait • • • 28 Summary of VM/370 Debugging Tools • . • • 29 Comparison of CP and CMS Facilities for Debugging • • • • • • • • • • • • • 33 Debugging CP on a virtual Machine • • • • 34 ABEND Dumps. • • • • • • • • • • • • • 34 Us in g the VMFDUMP Command. • • • • • • 34. How to Print A CP Abend Dump From Tape 35 Reading CP ABEND Dumps • • 35 Reason for the ABEND • • • • • 35 Collect Information. • 36 Register Usage • • • • • • • • • 36 Save Area Conventions. • • • • • 36 Virtual and Real Control Block status. 37 VMBLeK • • 37 VCHBLOK. • • • • • 37 VCUBLOK. • • • • 38 VDEVBLOK • • • • • • • 38 RCHBLOK. • • • • • • • • • • 39 RCUBLOK. 39 RDEVBLOK • • • • • • • • 39 Identifying a Pageable Module. • • • • 40 Reading CMS ABEND Dumps. • • • • • 41 Reason for the ABEND • • • • • • • • • 41 Collect Information. • • • • 41 NUCON AREAS. • • • 41 Register Usage • • • • • 43 Nucleus Load Map • • • • 43 Load Map • • • • • 43 CP Introduction. • • • • • 45 CP Initialization. • • • • • 45 Virtual Machine Management • • • • • • 46 Spooling • • • • • • • • • • • • • • • 47 Console Functions. • • • • • • • • 48 Program States • • • • • • • • • • 48 Preferred virtual Machine. • • • • 48 VM/VS Handshaking. • • • • • • • • 50 CP Interruption Handling • • • • • 52 Free Storage Management. • . • • • 53 storage Protection • • • • • • • • 54 Executing the Pageable Control Program 54 System Support Modules • • • • 55 Control Register Usage • • . • 55 Restr~ctions and Conventions for pageable CP Modules 55 Data Area Modules. • • 55 Interruption Handling. • • • 55 . SVC Interruptions • • • 55 Executable Modules • • 56 External Interruptions • • 57 Program Interruptions. • • • • • • 57 Virtual Timer Maintenance • • • 65 I/O Management • • • • • • • • • 66 I/O Supervisor • • • • • • • • • • 66 Real I/O Control Blocks. • • • • • 66 Virtual I/O Requests • • • • • • 67 I/O component States • • • • 69 I/O Interruptions. • • • • • 70 Virtual I/O Interruptions. • 70 Scheduling I/O Requests. • • • 71 Virtual Console Simulation. • 72 Remote 3270 Programming. • • • 73 I/O Programs for Bisync Lines and Remote 3270s • • • • • • • • • • • • • 74 Data Formats - Bisync Lines and Remote 3270. • • • • • • • • • • 75 Allocation Management. • • • 76 Normal paging Requests • • • 76 DASD Storage Management. • • 80 Paging I/O • • • • • • • • • 81 Virtual Storage Paging Error Recovery. 82 Virtual Relocation • • • • • • • • 82 Free storage Management. • • • 84 CP Ini tializa tion. • • • • • • • 85 Initialization and Termination • • 85 Console Functions. • • • • • 88 Dispatching and Scheduling • • 88 CP Spooling. • • • • • • • • • 93 Spool Data and File Format • • 93 spool Buffer Management. • • • • • • • 94 Virtual Spooling Manager (DMKVSP). • • 94 Real spooling Manager (DMKRSP) • • • • 96 Spooling Commands • • • • • • • • • • • 97 spool File Error Recovery • • • • • • • 99 Recovery from System Failure • • • • • 100 Recovery Management Support (RMS) • • • 100 system Initialization for RMS • • • • • 100 Overview of Machine Check Handler • • • 101 system/370 Recovery Features • • • • • 101 Overview of Channel Check Handler • • • 105 Channel Control Subroutine • • • • • • 105 Individual Routines • • • • • • • • • • 106 Error Recording Interface for Virtual Machines. • • • • • • • • • .107 Error Recording and Recovery • • • • • 107 Error Record Writing • • • • • • • • .107 DASD Error Recovery, ERP (DMKDAS) • • • 108 Tape Error Recovery, ERP (DMKTAP). • .109 3270 Remote Support Error Recovery • • 110 The Conversational Monitor system (CMS).111 The CMS Command Language • • 111 The File System. • • • • .111 Program Development. • • • • 112 Interruption Handling in CMS • • .112 Functional Information. • .115 structure of CMS storage • • 116 Free Storage Management. • .116 CMS Handling of PSi Keys. • .123 CMS SVC Handling. • • • • • .124 SVC Types and Linkage Conventions. .124 User and Transient Program Areas . • • 126 Called Routine Start-up Table. • • • 126 Returning to the Calling Routine. .126 CMS Interface for Display Terminals • • 129 os Macro simulation under CMS • • • • • 130 os Data Management Simulation. • • .130 Handling Files that Reside on C~S Disks • • • • • • • • • • • • • • • • 130 Handling Files that Reside on os or DOS Disks. • • • • • • • • • • 130 simulation Notes • • • • • • • • • • • 131 Access Method su pport. • • • • • 134 Reading OS Data Sets and DOS Files Using OS Macros • • • • • • 136 DOS/VS Support under CMS • • • 137 CMS Support for OS and DOS VSAM Functions • • • • • • • • • • • • • • 138 RSCS Introduction. . • • • • • .138 Remote Spooling Communications Subsystem: Overview • • • • • • • • • • 138 The RSCS Virtual Machine and the VM/370 Control Program (CP) • • 139 Locations and Links. • • • • • • • 139 Remote Stations • • • • • • • • •• 139 Betwork Control: RSCS and VM/370 Commands. • • • • • • • • • • • • 140 RSCS Commands. • • • • • • • • • • 140 VM/370 CP and CMS Commands For RSCS • • 140 The RSCS Control Program. • • • • 141 The RSCS Supervisor. • • • • • • 141 Ta sk Management. • • • • • • 141 I/O Management • • • • • • • 142 Interruption Handling. • • • • • 142 Virtual Storage Management • • • • 142 RSCS Task Structure. • • • • • • • 142 Crea te System Tasks: DMT CRE. • • • • • 143 Process Commands: DMTCMX • • .143 Process Messages: DMTMGX • • • • • • • 143 Terminate system Tasks and Handle Program Checks: DMTREX • • • • • • • • 143 Communicate with the VM/370 Spool File System: DMTAXS • • • • • • • • • 144 Manage Telecommunication Line Allocation: DMTLAX • • • • • • • • • • 144 Line Driver Tasks: DMTNPT and DMTSML .144 The SML Line Driver Program • • • • • • 144 SML Processors • • • • • • • • • • • • 145 The SML Line I/O Handler Routine: COMSUP • • • • • • • • • • • • • • • • 145 The SML Function Selector Routine: $START • • • • • • • • • • • • • • • • 145 Block and Deblock SML Teleprocessing Buffers: $TPPUT and $TPGET • • • • • • 145 The NPT Line Driver Program • • • • ~ • • 146 The NPT Line Monitor Routine: LIBEIO .146 The NPT Function Selector Routine: BPTGET • • • • • • • • • • • • • • • • 146 NPT Input File Processing • • • • • • • 146 NPT Output Processing Routines • • • • 147 Major Data Areas • • • • • • • • • • • 147 SVECTORS: Supervisor Control Queues and Supervisor Routine Addresses • • • 147 RSCS Supervisor Queue Elements • • • • 147 MAINMAP: storage Available to RSCS .147 Programs and Tasks • • • • • • • TAREA: The Save Area for an .147 Interrupted Task • • • • • • • • .147 LINKTABL: Link Description Data. .147 TAG: The RSCS File Descriptor. • .147 RSCS Request Elements • • • • • • VM/370 Data Areas Referenced by RSCS .148 RSCS storage Requirements • • • • • • • 148 synchronizing and Dispatching Tasks • • .149 • 149 The WAIT/POST Routines • • • • .149 Synchronization Locks. • • • • Asynchronous Interruptions and Exits .149 using Asynchronously Requested Services: DMTWAT. • • .150 Posting a Synch Lock. • • • • • .150 Dispatching in RSCS. • • • • • • .150 Task-to-Task Communications. • • .150 ALERT Task-to-Task Communication .150 GIVE/TAKE Task-to-Task Communication .151 Input/Output Methods and Techniques • • 152 Active and Pending I/O Queues • • • • • 152 Handling Link Activity: LINKTABLs and TAGs • • • • • • • • • • • • • • • • • 152 How Links Handle Files • • • • • • • • 152 Transmitting VM/370 Files to an RSCS Link. • • • • • • • • • • • • • 153 Processing Files from Remote Stations.153 SECTION 2. METHOD OF OPERATION AND PROGRAM ORGANIZATION • • • • • .155 CMS Program Organization • • .155 Introduction to CMS • • • • • .160 Initialize the CMS Virtual Machine Environment • • • • • • • • • • • • • 160 Initialization: Loading a CMS Virtual Machine from Card Reader • • • • • • • 160 Initializing a Named or Saved System .162 Handle the First Command Line Passed to CMS • • • • • • • • • • • • • • • • 162 Setting and Querying Virtual Machine Environment Options • • • • • • • • • 163 Process and Execute eMS Files • • • • • 163 Maintaining an Interactive Console Environment • • • ••••• .163 Console Management and Command Handling in CMS • • • • • • • • .163 Maintaining an Interactive Command/Response Session • • • • .163 Method of Operation for DMSINT • .164 Method of Operation for DMSITS • .165 Load and Execute Text Files. • .' • .168 Process Commands That Manipulate the File System • • • • • • • • • • .177 Manage the CMS File System • • • .177 How CMS Files are Organized in Storage • • • • • .177 File Status Tables • 177 Chain Links. • • • .178 CMS Record Formats • • .178 Disk Organization in CMS • • • • • • • • 178 Physical Organ~zation of Virtual Disks • • • • • • • • • • • • • • • • 180 The Master File Directory. • • • • • • 180 Keeping Track of R/W Disk storage: QMSK and QQMSK • • • • • • • • • • • • 180 Dynamic storage Management: Active Disks and Files • • • • • • • • • • • 182 CMS Routines Used to Access the File System. • • • • • • • • • • • .182 Input/Output Operations. • • • •• 182 Unit Record I/O Processing. • .183 Handle Interruptions. • • • • • • • 184 DISK I/O IN CMS. • • • • • • .184 Manage CMS Free Storage. • • • .185 Simulate Non-CMS Operating Environments. '192 Access Method support for Non-CMS Operating Environments. • • • • • • • • 193 CMS Support for the virtual storage Access Method. • • • • • • • • • • 193 Creating the DOSCB Chain • • • • • • • 193 Executing an AMSERV Function • • • • • • 193 Executing a VSAM Function for a DOS User. • • • • • • • • • • • • • • .194 CMS/DOS SVC Handling • • • • • • • • • 195 Executing a VSAM Function for an os User. . . . . . . . . . . . . • • • 196 Completion Processing for os and DOS VSAM Programs. • • • • • • • •• 19a OS Simulation by CMS • • • • • • 198 Simulating a DOS Environment Under CMS • • • • • • • • • • • • • .207 Initializing DOS and processing DOS System Control Commands • • • • • • • 207 setting or Resetting system Environment Options. • • • • • .208 Process CMS/DOS OPEN and CLOSE Functions. • • • • • • • • • • .209 Process CMS/DOS Execution-Related Control Commands • • • • • • • • • • • 210 Simulate DOS SVC Functions • • • • • • 211 SVCs Treated as No-Op by CMS/DOS • • • 213 Process CMS/DOS Service Commands • • • 213 Terminate Processing the CMS/DOS Environment • • • • • • • • • • • • • 213 Perform Miscellaneous CMS Functions •• 213 CMS Batch Facility • • • • • • • • • ~213 General Operation of DMSBTB • • • • • • 213 General Operation of DMSBTP • • • • • • 214 Other CMS Modules Modified in CMS Batch • • • • • • • • • • • • • • • • 215 CP Program Organi zation. • • • • • • • .216 Use of the Annotated Flow Diagram • • • 216 VM/370 CP Interruption Processing • • • 216 SVC Interruptions - Problem state • • • 216 SVC Interruptions - Supervisor state .216 External and Clock Interruption Reflection • • • • • • • • • • • • • • 217 MONITOR Interruption Processing • • • • 217 Program Interruption Processing • • • • 217 virtual I/O Operations and Interruption Processes • • • • • • • • • • • • • • • 218 CTCA Operations Between Two virtual Machines. • • • • • • • • • • 218 Scheduling I/O for CP and the Virtual Machine • • • • • • • • • • • • • • • 218 Standard DASD I/O Initiated via Diagnose. • • • • • • • • • • • .219 General I/O Operation Initiated Via 01agnose. • • • • • • • • • • • .219 virtual Machine I/O Instruction simulation and Interruption aeflection. • • • • • • • • • • .219 Virtual Console Simulation. • • .219 LQcal Graphic I/O and Interruption Processing • • • • • • • • • • • • • • 220 Locate and Validate an ISAM Read $equence • • • • • • • • • • • • • • • 220 S~heduling CP and Virtual Machine 1/0 operations and Interruption Handling.221 Terminal Console I/O Control, START/STOP, 3210, 3215, and Others • • 222 Console Scheduling. • • • • • • .222 3704/3705 Interruption Handler. .223 Handling Remote 3270 with Binary Synchronous Lines • • • • • • • .224 Real Storage Allocation and Page 'Management. • • • • • • • • • • .225 Reading/Writing a DASD page To/From Virtual Storage • • • • • • • • • • • 225 Allocation and Deallocation of DASD Space • • • • • • • • • • • • • • • • 226 Shared segment Storage Management • • • 226 Temporary Disk storage Management • • • 226 Paging I/O Scheduler • • • • • • • • .227 Release Virtual Storage Pages • • • • • 227 Free Storage Managemen t. • • • • • • .227 CP Initialization and Termination Procedures. • • • • • • • • • .228 Virtual Machine Initialization and Termination. • • • • • • • • • .229 Console Function (CP Command) Processing. • • • • • • • • • .230 Dispatching and Scheduling. • • .231 Spoooling Virtual Device to Real Device. • • • • • • • • • • • • .232 Spooling to the Real Printer/Punch output Device • • • • • • • • .233 spooling to the Real Input Device • • • 234 Spool File Deletion • • • • • • • • • • 234 Recovery Management Support operation.234 User Directory Routines. • • • • • • .236 Save the 3704/3705 Control program Image Process • • • • • • • • • • • • 236 Spool File Checkpoint and Recovery • • 236 RSCS Program Organization. . • • • .238 SECTION 3. DIRECTORIES • • • • • • CMS Module Entry Point Directory • . CMS Module-to-Label Cross Reference. • CMS Label-to-Module Cross Reference • • CP Module Entry Point Directory • • CP"Module-to-Label Reference • • • CP Label-to-Module Cross Reference •• RSCS Module Directory. • • • • • • RSCS Module Entry Point Directory. RSCS Module-to-Label Cross Reference • RSCS Label-to-Module Cross Reference • .245 .247 .265 .281 .321 .341 .373 .447 .455 .465 .469 SECTION 4. DIAGNOSTIC AIDS • • • • • • CP Internal Trace Table • • • • • • • • CP Commands Used To Debug the Virtual Machine • • • • ADSTOP • • • • • • • • • • • • • • • • • 477 • 477 .479 .480 BEGIN. • • • • • • • • 482 DISPLAY •• • • • • 483 DUMP • • • • • 489 SET. • • • • • 492 STORE. • • • • 499 SYSTEM • • • • • • 502 TRACE. .503 CP Commands for System Programmers and system Analysts. • • • • 508 DCP. • • • • • • • • • • • • • • 509 DMCP • • • • • • • 511 LOCATE. • • • • • 513 MONITOR. • • • • • • • • • • • 514 QUERY. • • • .515 STCP • • • • • • • • • • • • 528 DASD Dump Restore (DDR) Service Program and How To Use It • • • • • • • • • • • 529 Invoking DDR under CMS • • • • • • • .529 Invoking DDR as a Standalone Program .530 DDR Control statements • • • .530 I/O Definition statements. • • • • 531 CP Wait State Codes. • • • • .540 CP ABEND Codes. • • • • • • • .542 CMS Return Codes. • • • • • • .557 CMS DMSFREX Error Codes. • • • • • .558 Error Codes from DMSFREE, DMSFRES, and DMSFRET • • • • • • • •• •• .558 CMS ABEND Codes. • • • • • • • • • .559 ABEND Recovery • • • • • • • • • .559 RSCS Message-To-Label Cross Reference • • 563 CMS Commands for Debugging. • • • • 568 DEBUGGING with CMS • • • • • • 568 CMS Debugging Commands • • • • • • • • • 568 DEBUG • • • • • • • • • • • • • • • • • 568 SVCTRACE • • • • • • • • • • • • • • • 584 DASD Dump Restore Service Program and How To Use It • • • • • • • • • • • • • 586 Invoking DDR under CMS • • • • • • • • 586 Invoking DDR as a Standalone Program .586 SECTION 5. APPENDIXES. • • • • .587 APPENDIX A: VM/370 CODING CONVENTIONS •• 589 CP Coding Conventions • • • • • • • • • • 589 CP Loadlist Requirements • • • • • • • • 590 APPENDIX B: CP AND RSCS EQUATE SYMBOLS VM/370 Device Classes, Types, Models and Features • • • • • • • • • • • • • VM/370 Machine Usage • • • • • • • • • VM/370 Extended Control Registers • • • VM/370 CP Usage. • • • • VM/370 Registers • • • • • • • • • .591 .592 .594 .595 .596 .598 APPENDIX C: CMS EQUATE SYMBOLS • • • • • 599 CMS Usage Equates. • • • .599 CMS Register Equates • • • • • • • • • • 601 APPENDIX D: DASD RECORD FORMATS. • .603 Record 0 Track 0 Cylinder 0 Only. .603 Record 1 (24 Bytes). • • • • .604 Record 2, 4096 Bytes. • • • .604 Record 3 • • • • • • • • • .604 Record 4 • • • • • • .605 Record 5 • • • • • • • • .605 Record 6 • • • • • .605 Record F3. • • • • • • • • .605 Record F4. • • .606 Record 4 • • • • • • .606 2314 Record Layout. .606 Cylinder 0, Track O. • • • • • • • • 606 All Cylinders Except 0, Track O. • .606 3330 Series Record Layout. • • .607 Cy linder 0, Track O. • • • • • • • .607 Any Cylinder Except O. .608 2305 Model 1 and Model 2 • .608 Cylinder 0, Track O. • • • .608 Any Cylinder Except O. • • .608 3340 Series Record Layout. • .609 Cylinder 0, Track O. • • • • .609 Any Cylinder Except O. • • • .609 APPENDIX E: VM/370 RESTRICITONS. • .611 CP Restrictions. • • • • • • .611 Dynamically Modified Channel Programs • • 611 Minidisk Restrictions. • • • • • • .611 Timing Dependencies. • • • • • • .613 CPU Model-Dependent Functions. • • .614 Virtual Machine Charact.eristics. • .614 CMS Restrictions. • • • • • .616 Miscellaneous Restrictions. • • • .618 APPENDIX F: VIRTUAL DEVICES USED IN CMS.619 APPENDIX G: FUNCTION CODES FOR DIAGNOSE INSTRUCTIONS • • • • • • • • • • • • • • 621 APPENDIX H: CMS ZAP SERVICE PROGRAM • • • 623 ZAP Input Control Records. .624 special Considerations for Using the ZAP Service Program. • .629 APPENDIX I: APPLYING PTFS. • .631 Supporting A VM/370 System. .631 VM/370 Update Procedures. .631 Updating a Module. • • • .633 Control Files. • • • • • • .634 Applying PTFs to VM/370. • .635 Updating Modules Using the V"FASM EXEC Procedure • • • • • • • • • • • • • • • 638 Using VMFASM to Apply IBM-Supplied updates • • • • • • • • • • • • • • • • 639 Using VMFASM to Apply Your Own Updates .641 Other Files Produced by VMFASM • • • • • 644 Figure Figure 1. 2. Figure 3. Figure Figure Figure 4. 5. 6. Figure Figure Figure 7. 8. 9. Does a Problem Exist •••••••• 13 Debug Procedures for waits and Loops ••••••••••••••••••• 14 Debug Procedures for Unexpected Results and an ABEND. . . 15 ABEND Messages •••••••••••••• 19 ABEND Problem Type •••••••••• 2l Unexpected Results Problem Figure 39. Figure 40. Figure 41. Figure 42. Type •••••••••••••••••••••••• 23 Figure 10. Figure 11. Figure 12. Figure 13. Figure 14. Figure 15. Figure 16. Figure 17. Figure 18. Figure 19. Figure Figure Figure Figure 20. 21. 22. 23. Figure 24. Figure 25. Figure 26. Figure 27. Figure 28. Figure 29. Figure 30. Figure 31. Figure 32. Figure Figure Figure Figure 33. 34. 35. 36. Figure 37. Figure 38. Loop Problem Type ••••••••••• 25 CP 'Wait Problem Type •••••••• 25 virtual Machine wait Problem Type •••••••••••••••• 27 RSCS wait Problem Type •••••• 28 Summary of VM/370 Debugging Tools ••••••••••••••••••••••• 29 comparison and CP and CMS Facilities for Debugging ••• ~33 CMS Control Blocks •••••••••• 42 Sample CMS Load Map ••••••••• 44 Overview of Interruption Handling •••••••••••••••••••• 53 DIAGNOSE X'5C'/VMMLEVEL Field Analysis •••••••••••••• 64 User Dispatching States ••••• 90 User Status Changes ••••••••• 91 RMS Control Register Assignments .•••••••••••••••• l02 Summary of lOB Indicators ••• 109 CMS File System ••••••••••••• 113 CMS Storage Map ••••••••••••• 117 CMS Command (and Request) Processing •••••••••••••••••• 127 PSW Fields When Called Routine Starts •••••••••••••• 128 Register Contents When Called Routine Starts ••••••• 128 Simulated OS Supervisor Calls .•...........•.•.•...•. 131 DCB Fields That Can Be Specified for Each Access Method •••••••••••••••••••••• 135 RSCS Virtual Machine Configuration ••••••••••••••• 139 RSCS Commands and Functions ••••••••••••••••••• 140 VM/370 DIAGNOSE Instructions Issued by the RSCS Program •••••••••••••••• 141 RSCS Tasks •••••••••••••••••• 143 Data Flow Between RSCS and Remote stations via the SML Li n e Dr i v e r ••••••••••••••••• 1 45 SML Function Processors ••••• 146 RSCS storage Allocation ••••• 148 Input to the DMTWAT Routine. 149 Movement of Data During a Typical GIVE/TAKE Transaction ••••••••••••••••• 152 I/O Queues and Subqueues •••• 153 Chaining of Data Areas Required for File TAG Manipulation •••••••••••••••• 154 Figure 43. Figure 44. Figure 45. Figure 46. Figure 47. Figure 48. Figure 49. Figure 50. Figure 51. Figure 52. Figure 53. Figure 54. Figure 55. Figure 56. Figure 57. Figure 58. Figure 59. Figure 60. Figure 61. Figure 62. Figure 63. An Overview of the Functional Areas of CMS ••••• 155 Details of CMS system Functions and the Routines That Perform Them ••••••••••• 156 CMS Storage Map ••••••••••••• 161 PSW Fields When Called Routine Is Started •••••••••• 167 Register Contents When Called Routine Is Started ••• 168 How CMS File Records Are Chained Together •••••••••••• 177 Format of a File status Block; Format of a File Status Table •••••••••••••••• 178 Format of the First Chain Link and Nth Chain Links •••• 179 Arrangement of Fixed-Length or Variable-Length Records in Files •••••••••••••••••••• 179 Structure of the Master File Directory •••••••••••••• 181 Disk Storage Allocation Using the QMSK Data Block ••• 181 Flow of Control for Unit Record I/O processing ••••••• 183 Relationship in storage Between the CMS Interface Module DMSAMS and the CMSAMS and CMSVSAM DCSSs •••• 194 The Relationships in storage Between the User Program and the CMSDOS DCSS and the CMSVSAM DCSSs ••••••••••••••• 195 Relationship in Storage Between the User Program, the OS Simulation and Interface Routines, and the CMSDOS and CMSVSAM DCSSs ••••••••••••••••••••••• 196 os Functions that CMS Simulates ••••••••••••••••••• 199 CP Commands and Their Module Entry Points ••••••••• 230 Overview of RSCS Program Organization •••••••••••••••• 238 Program Organization for the Multitasking Supervisor.239 Program Organization for the REX System Service Tasks ••••••••••••••••••••••• 240 Program Organization for the AXS System Service Task.241 Program Organization for the SML Line Driver Task •••• 242 Program Organization for the NPT Line Driver Task •••• 243 CP Trace Table Entries •••••• 478 Annotated Sample of Output from the TYPE and PRINT Functions of the DDR Program ••••••••••••••••••••• 539 Figure 67. Figure 64. Figure 65. Figure 66. CP ABEND Codes •••••••••••••• 542 CMS ABEND Codes ••••••••••••• 560 Summary of SVC Trace Output Lines ••••••••••••••••••••••• 586 Figure 68. Figure 69. Devices supported by a CMS Virtual Machine ••••••••••••. 619 Function Codes for DIAGNOSE Instruction •••••••• 621 System Support plan ••••••••• 638 The VM/370 Control Program (CP) manages the resources of a single computer such that multiple computing systems appear to exist. Each "virtual computing system", or virtual machine, is the functional equivalent of an IBM System/370. The person trying to determine the cause of a VM/370 software problem must consider three separate areas: • identify the problem, collect information and determine the cause so that the problem can be fixed. When running VM/370, you must also decide whether the problem is in CP, the virtual machine, or the problem program. A good approach to debugging is: The Control Program (CP) , which controls the resources of the real machine. 1. Recognize that a problem exists. 2. Identify the affected. 3. Analyze the data you have available, collect more data if you need it, then isolate the data that pertains to your problem. 4. Finally, determine the cause of the problem and correct it. The virtual machine operating system running under the control of CP, such as CMS, RSCS, OS, DOS, or VM/370. The problem program, which executes under the control of a virtual machine operating system. problem type ~2~~: DOES A PROBLEM EXIST? §g!~§:-order-No:-GC20=1823: There are four types of problems: Once the area causing the problem is identified, the appropriate person should use all available information and determine the cause of the problem. The IBM Program systems Representative (PSR) or a system programmer handles all problems with CP, Conversational Monitor System (CMS), Remote Spooling communication Subsystem (RSCS), and Interactive Problem Control System (IPCS); information that is helpful in debugging CP, CMS, and RSCS is contained in this publication. The applications programmer handles all problem program errors; techniques for applications program debugging are found in the !~Ll1Q: £~~ Q2~!~§ ~Y!~~. • • • • For information about the Interactive Problem Control System refer to the !~LJIQ: Interactive Problem Control ~Y2i~~ (lgf~) Q2~~!2 If the problem is caused by a virtual machine operating system other than CMS and RSCS, refer to the publications pertaining to that operating system for specific information. However, use the CP debugging facilities, such as the CP commands, to perform the recommended debugging procedures discussed in the publication that pertains to the other operating system. The IBM PSR or a system programmer handles problems with virtual machine operating systems. If it becomes necessary to apply a PTF (Program Temporary Fix) to a component of VM/370, refer to "Appendix J: Applying PFTs" for detailed information on applying PTFs. and the area ABEND (Abnormal End) Unexpected results Loop wait state The abnormal end is the most easily identified problem. An abnormal termination causes an error message. Unexpected results, such as missing or incorrect output, or incorrect format, is another easily identified problem. Unproductive processing time is a problem not easily recognized, especially in a time-sharing environment. When you are using VM/370, you are usually sitting at a terminal and do not have the lights of the CPU control panel to help you recognize this type of problem. HOW TO START DEBUGGING Before you can recognize that correct any problem, you one exists. Next, you must must You may have a looping condition if your program takes longer to execute than you anticipated. Check your output. If the number of output records or print lines is greater than expected, the output may really be the same information repeated many times. Repetitive output usually indicates a program loop. Section 1. Introduction 11 Another way to identify a loop is to periodically examine the current PSW. If the PSW instruction address always has the same value, or if the instruction address has a series of repeating values, the program probably is looping. A wait state may exist if your program is taking longer to execute then expected. To identify a probable wait state, display the current PSW on the terminal. Periodically, issue the CP command QUERY TIME and compare the elapsed processing time. When the elapsed processing time does not increase, the wait state probably exists. Figures 1-10 help you to identify problem types and the areas where they may occur. CP ABNORMAL TERMINATION When CP abnormally terminates, a dump is taken. This dump can be directed to a tape or printer or dynamically allocated to a DASD. The output device for a CP ABEND dump is specified by the CP SET command. See "ABEND Dumps" in this section for a description of the SET and VMFDUMP cOllmands. Use the dump to find what caused CP to terminate. Find why the system abnormally terminated and then see how the condition can be corrected. See "Reading CP ABEND Dumps" in this section for detailed information on reading a CP ABEND dump. REASON FOR THE ABEND: CP terminates and takes an abnormal-- -termInation dump under three conditions: • Program Check in CP ANALYZING THE PROBLEM Once the type of problem is identified, the cause of it must be determined. There are recommended procedures to follow. These procedures are helpful, but do not identify the cause of the problem in every case. Be resourceful. Use whatever data you have available. If the cause of the problem is not found after the recommended debugging procedures are followed, it may be necessary to undertake the tedious job of checking through listings at your desk. See the !~LllQ: ~~~ information on using VM/370 a problem program. Examine the PROPSW and INTPR fields in the Prefix Storage Area (PSA) to determine the failing module. • Examine the SVC old PSW (SVCOPSW) and ABEND code (CPABEND) fields in the prefix storage area to determine the module that issued the SVC 0 and the reason it vas issued. CPABEND contains an abnormal termination code. The first three characters identify the failing module (for example, ABEND code BLD001 indicates DMKBLD is the failing module) • User's Guide for facIlIties-to debug • USING VM/370 FACILITIES TO DEBUG Once the problem and the area where it occurs is identified, you can gather the information needed to determine the cause of the problem. The type of information you want to use varies with the type of problem. The tools used to gather the information vary depending upon the area in which the problem occurs. For example, if looping is the problem, you should examine the PSW. For a CP loop, you must use the operator's console to display the PSW, but for a virtual machine loop you can display the PSW via the CP DISPLAY command. The following shows specific debugging procedures for the various error conditions. The procedures tell you what to do and what debugging tool to use. For details on how to invoke and use the debugging tools refer to "CP Commands For Debugging", "CMS Commands For tebugging", and "Debugging With CMS" in section 4. 12 Module Issuing an SVC 0 Pressing SYSTEM RESTART on CPU Console Examine the old PSW at location X'08' to find the location of the instruction that was executing when SYSTEM RESTART was pressed. The operator presses SYSTEM RESTART when CP is in a disabled wait state or loop. PROCEDURE WHEN CP ABEND OCCURS: The information In--low-storage -- tells- you-'-the status of the system at the time CP terminated. Status information is stored in the CPSTAT field of the PSA. You should be able to tell the module that was executing by looking at the PSA. See "Save Area Conventions" in this section and refer to the appropriate save area (SAVEAREA, BALRSAVE, or FREESAV~ to see how that module started to execute. Exalline the real and virtual control blocks to find the status of I/O operations. The PSA is described in the !!1L37.Q: Q!!! Ar.!i!!2 !!!S ~Q~!IQ! ~!Q£~ 1Qgi£· Examine the CP internal trace table. This table can be extremly helpful in determining the events that preceded the ABEND. The CP internal trace table description in Section 4 tells you how to use the trace table. IBM VM/370: System Logic and Problem Determination Guide Does a problem exist?---_ START DEBUGGING Is there an ABEND condition? - - - - - - _ _ . II If the message DMKDMP9081 SYSTEM FAILURE, CODE XXX XXX appears on the console and the alarm rings, this is a CP ABEND. The system dumps to disk or to the printer if the set dump E command has been issued, and automatically performs I PL. • ~ Is there a wait or Loop? _ _ _ _ _ _ _ _ __ a rs;:;l II II If the messages DMKDMP9081 SYSTEM FAI LURE, CODE XXXXXX DMKCKP9601 SYSTEM WARMSTART DATA SAVED PMKCKP961W SYSTEM SHUTDOWN COMPLETE appear on the console, this is a CP ABEND. The system dumps to tape or printer and stops. _ _ ~ ~ If pressing the REQUEST key on the operator's console leaves the REQUEST PENDING light on, a CP disabled wait state exists. The CPU console light will be on. _ ~ II If the CPU console wait light is on, the system IS in a CP enabled wait state. __ ~ II If the real PSW problem bit is OFF, there IS a CP loop. II If the message DMSABNI48T SYSTEM ABEND XXX, CALLED FROM YYYYYY appears on the terminal, this is a CMS ABEND.---~ II , II If an ABEND message from the virtual machine appears on the terminal, this is an ABEND in the operating system controll ing this virtual machine. _ _ _ ~ • ~ If any of the following messages DMKDSP450W CP ENTERED; DISABLED WAIT PSW DMKDSP451W CP ENTERED; INVALID PSW DMKDSP452W CP ENTERED; EXTERNAL INTERRUPT LOOP DMKDSP453W CP ENTERED; PROGRAM INTERRUPT LOOP appears on the terminal, there IS a disabled wait or an interrupt loop in the virtual machine. - - - - - - - - - ') No problem exists Otherwise, an ABEND condition does not exist, GO TO II an Interrupt, II If processing has ceased in the virtual machine without reaching end-of-job, If pressing the ATTN key once does not cause =) ___________ (0 ...J Unexpected R e s u l t s ? - - - - - - - - - _ II C5J there is a disabled loop in the virtual machine. ) GJ the virtual machine is in an enabled wait state and no I/O interrupt If an operating system which executes properly on a real machine fails to execute properly under VM/370, has occu rred. there are unexpected results in CPo ---------1_- rs;l II II V If a program which executes under the control of an operating system on a real machine fails to execute correctly with the same operating system under VM/370, there are unexpected resOJlts ~ in the virtual machine. - - - ~ If the program's output is maccurate or mlssmg, there are unexpected results in the problem program. If the output is redundant check for a loop. - - - II II If processing time exceeds normal expectations, the virtual machine may have an enabled loop. ) II Otherwise.~ f4;I v__ ____________ .J o r::\ 0 Otherwise, check for a wait or ~_____IOO_P_.~-----------------~ o Figure Does a Problem Exist? Section 1. Introduction 13 Debug Procedures for a Wait CP Disabled Wait - - - - - - - - - - - - - - - - - - - - - - - - - - - . , Use ALTER/DISPLAY console mode (if available), to display real PSW and CSW. Also, display general and extended control registers and storage locations X'OO'-X'l00', II II Press SYSTEM RESTART button to cause a CP ABEND dump to be taken. IPl. CP Enabled Wait - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 Press SYSTEM RESTART button to cause a CP ABEND dump to be taken. Use the dump to check the status of each VMBlOK. Also, check RCHBlOK, RCUBlOK, and RDEVBlOK for each device. Virtual Machine Disabled Wait -------------------------f Use CP commands (CMS users may use the CMS DEBUG command) to display the PSW, CSW, general registers, and control registers. II Use the CP DUMP command (or CMS DUMP subcommand) to take a dump. Virtual Machine Enabled Wait - - - - - - - - - - - - - - - - - - - - - - - - 1 Take a dump. Debug Procedures for a Loop CPloop----------------------------------., Use ALTER/DISPLAY console mode (if available) to display real PSW, general' registers, control registers, and storage locations X'OO'-X'100', II II Press SYSTEM RESTART button to cause a CP ABEND dump to be taken. Examine the CP internal trace table to see where the loop is. Virtual Machine Disabled loop ------------------------1 Use the CP TRACE command to trace the loop. II II II Display the general registers and control registers via the CP DISPLAY command. Take a dump using the CP DUMP command. Examine the source code. Virtual Machine Enabled loop -----------------------1 Trace the loop. Display the PSW, general registers, and extended control registers. II II Figure 14 2. Take a dump. Examine source code. Debug Procedures for waits and Loops IBM VM/370: System Logic and Problem Determination Guide Debug Procedures for Unexpected Results Unexpected Results in CP - - - - - - - - - - - - - - - - - - - - - - - - - , Check that the program is not violating any CP restrictions. II II II Check that the program and operating system running on the virtual machine are exactly the same as those that ran on the real machine. Use the CP TRACE command to trace CCWs, SIOs. and interrupts. Look for an error in CCW translation or interrupt reflection. If disk I{O error, use the CP DDR (DASD Dump Restore) program to print the contents of any disk. Unexpected results in a virtual machine ---------------------1 Check that the program executing on the virtual machine is exactly the same as the one that ran on the real machine. II II Make sure that operating system restrictions are not violated. Use CP TRACE to trace all I{O operations. Debug Procedures for an ABEND CPABEND-------------------------------, Find out why CP abnormally terminated. Examine the PROPSW, INTPR, SVCOPSW, and CPABEND fields in the PSA from the dump. II II Identify the module that caused the ABEND. Examine the SAVEAREA, BALRSAVE, and FREESAVE areas of the dump. If I{O operation, examine the real and virtual 110 control blocks. CMSABEND------------------------------~ Determine reason for ABEND from code in ABEND message DMSABN148T. II Enter debug environment or CP console function mode to use the commands, to display the PSW, and to examine low storage areas: LASTLMOD and LASTTMOD LASTCMND and PREVCMND LASTEXEC and PREVEXEC and DEVICE Look at the last instruction executed. Take dump if need be. Virtual Machine ABEND (other than CMS) ----------------------------------1 Examine dump, if there is one. II II Figure 3. Use CP commands to examine registers and control words. Use CP TRACE to trace the processing up to the point where the error occurred. Debug Procedures for unexpected Results and an ABEND Section 1. Introduction 15 The values in the general registers can help you to locate the IOBLOK, VMBLOK, and the save area. Refer to "Reading CP ABEND Dumps" in this section for detailed information on the contents of the general registers. where xxx is the ABEND code and yyyyyy is the address of the instruction causing the ABEND. The DMSABN module issues this message. Then, CMS waits for a command to be entered from the terminal. In the PSA, if the program check old PSi (PROPSi) or the SVC old PSi (SVCOPSi) points to an address beyond the end of the resident nucleus, the module that caused the ABEND is a pageable module. Refer to "Reading CP ABEND Dumps" in this section to find out how to identify that pageable module. Use the CP load map that was created when the VM/370 system was generated to find the address of the end of the resident nucleus. Because CMS is an interactive system, you may want to use its debugging facilities to examine status. You may be able to determine the cause of the ABEND without taking a dump. CP TERMINATION WITHOUT A DUMP Two types of severe machine checks can cause the VM/370 control program to terminate: • An unrecoverable machine check in the control program • A machine check that cannot be diagnosed The debug program is located in the resident nucleus of CMS and has its own save and work areas. Because the debug program does not alter the status of the system, you can use its options knowing that routines and data cannot be overlaid unless you specifically request it. Likewise, you can use the CP commands to debug when you know that you cannot inadvertently overlay storage because the CP and CMS storage areas are completely separate. I§A~g! FOB THE ABEND: First determine the reason c~i-abi~imaIIi-ierminated. There are four types of CMS abnormal terminations: • The DMSITP routine gets control whenever a hardware program exception occurs. If a routine other than a SPIE exit routine is in control, DMSITP issues the message A machine check error cannot be diagnosed if either the machine check old PSi or the machine check interruption code is invalid. These severe machine checks cause CP to terminate, but no dump is taken since the error is recorded on the error recording cylinders. The system is automatically restarted and a message is issued identifying the machine check error. If an unrecoverable machine check CP, the message program Exception DMSITP141T xxxxxxxx EXCEPTION OCCURRED AT xxxxxx IN ROUTINE xxxxxxxx and invokes DMSABN (the ABEND routine). The ABEND code is OCx, where x is the program exception number (O-F). The possible programming exceptions are: occurs in DMKMCH6101 MACHINE CHECK SUPERVISOR DAMAGE Code --0- appears on the CPU console. CP is terminated and automatically restarted. 1 2 3 If the machine check handler cannot diagnose a certain machine check, the integrity of the system is questionable. The message 4 5 6 7 8 9 A B C DMKMCH6111 MACHINE CHECK SYSTEM INTEGRITY LOST appears on the CPU console, CP is terminated and automatically restarted. D E Hardware errors are probably the cause of these severe machine checks. The system operator should run the CPEREP program'to print the previous error and save the output for the installation hardware maintenance personnel. F DMSABN148T SYSTEM ABEND xxx CALLED FROM '1yyyyy 16 Imprecise Operation Privileged operation Execute Protection Addressing Specification Decimal data Fixed-point overflow Fixed-point divide Decimal overflow Decimal divide Exponent overflow Exponent underflow Significance Floating-point divide ABEND Macro Control is given to the DHSSAB routine whenever a user routine executes the ABEND macro. The ABEND code specified in the ABEND macro appears in the abnormal termination message DHSABN148T. CMS ABNORMAL TERMINATION When CMS abnormally terminates, the following error message appears on the terminal: !1~~ning • Halt Execution (HX) Whenever the virtual machine opertor signals an attention interruption and enters HX, CMS terminates and issues "CMS". IBH VM/370: System Logic and Problem Determination Guide • system ABEND The ABEND following: A CMS system routine can abnormally terminate by issuing the DMSABN macro. The first three hexadecimal digits of the system ABEND code appear in the CMS ABEND message, DMSABN148T. • The SVC handler, DMSITS, is re-initialized, and all stacked save areas are released. • "FINIS * * *" is invoked by means of SVC 202, to close all files, and to update the .aster file directory. --, I • I I I If the EXECTOR module is is released. • All link freed. • All FCB pointers are set to zero. • All user storage is released. • The amount of system free storage which should be allocated is computed. This value is compared to the amount of free storage that is actually allocated. • The console input stack is purged. The format of the DMSABN macro is: r-'- I I I r r" l[labelJIDMSABNlcode I,TYPCALL=la!£ II I I I (reg) I I BALR II IL _ _ _ _ _ I _ __ I L L . J . ) .I label is any label. code is the abnormal termination code (O-FFF) that appears in the DMSABN148T system termination message. (reg) is the register containing abnormal termination code. TYPCALL= specifies how control passes to the TYPCALL=BALR abnormal termination routine, DMSABN. valid Assembler language the TYPCALL=SVC Routines that do not reside in the nucleus should use TYPECALL=SVC to generate CMS SVC 203 linkage. TYPCALL=BALR Nucleus-resident routines TYPCALL=BALR to generate branch to DMSABN. a ~~Q£~QYB~ !H~~ £~a ABEND OCCURS: After a CMS ABEND, CMS provides two--courses of action. In addition, you can enter the CP command mode and use CP's debugging facilities by signalling attention. The two are: courses of action available blocks function performs the in real storage, it allocated by DMSSLI are When the amount of storage actually allocated is less than the amount that should be allocated, the message DMSABN149T xxx x DOUBLEWORDS OF SYSTEM STORAGE HAVE BEEN DESTROYED appears on the terminal. If the amount of storage actually allocated is greater than the amount that should be allocated, the message specify direct If a CMS SVC handler abnormally terminates, it sets an ABEND flag and stores an ABEND code in NUCON (the CMS nucleus constant area). After the SVC handler has finished processing, the ABEND condition is recognized. The DMSABN ABEND routine issues the ABEND message, DMSABN148T, with the ABEND code stored in NUCON. recovery DMSABN150W nnn (HEX xxx) DOUBLEWORDS OF SYSTEM STORAGE WERE NOT RECOVERED appears on the terminal. A DEBUGGING PROCEDURE: When a CMS ABEND occurs, you-probably--want-to use the DEBUG subco.mands or CP commands to examine the PSW and certain areas of low storage. Refer to "CMS Debugging Commands" in Section 4 for detailed description of how to use the CMS DEBUG subcommands. See "CP Commands Used to Debug the Virtual Machine" and "CP Commands Used to Debug cpu in Section 4 for a detailed description of how to use the CP commands. Also refer to Figure 12 for a comparison of the CP and CMS debugging facilities. in CMS • Issue the DEBUG command and enter the debug environment. After using all the DEBUG subcommands that you need, exit from the debug environment. Then, either issue the RETURN command to return to DMSABN so that ABEND recovery occurs, or issue the GO command to resume processing at the point the ABEND occurred. • Issue a CMS command other than DEBUG and the ABEND routine, DMSABN, performs its ABEND recovery and then passes control to the DMSINT routine to process the command just entered. The following procedure may be useful determining the cause of a CMS ABEND: 1. Display the PSW. (Use the CP DISPLAY command or CMS DEBUG PSW subcommand. ) Compare the PSW instruction address to the current CMS load map to determine the module that caused the ABEND. The CMS storage-resident nucleus routines are in fixed storage locations. Also PSW. 2. in check the interruption code in the Examine areas of low storage. information in low storage can tell more about the cause of the ABEND. The you Section 1. Introduction 17 Field iASTLMOD contaIns Contents LASTTMOD Contains the name module loaded transient area. of the last into the LASTCMND Contains the name command issued. of the last PREVCMND Contains the name next-to-the-Iast issued. the name of the last module loaded into storage via the LOAD MOD command. LASTEXEC Contains the name EXEC procedure. PREVEXEC Contains the name of the next-to-Iast EXEC procedure. DEVICE Identifies the caused the interrupt. The low storage areas the type of ABEND. 3. 4. of the command of the last device last examined depend that I/O on Once you have identified the module that caused the ABEND, examine the specific instruction. Refer to your listing. If you have not identified the problem at this time, take a dump by issuing the DEBUG DUMP subcommand. Refer to "Reading CMS ABEND Dumps" in this section for information on reading a CMS dump. If you can reproduce the problem, try the CP or CMS tracing facilities. If a dump was taken, it was sent to the virtual printer. Issue a CLOSE command to the virtual printer to print the dump on the real printer. If you choose to run a standalone dump program to dump the storage in your virtual machine, be sure to specify the NOCLEAR option when you issue the CP IPL command. At any rate, a portion of your virtual storage is overlaid by CP's virtual IPL simulation. If the problem can be reproduc~d, it is helpful to trace the processing uS1ng the CP TRACE command. Also, you can set address stops, and display and alter registers, control words (such as the PS~, and data areas. The CP commands can be very helpful in debugging because you can gather information at various stages in processing. A dump is static and represents the system at only one particular time. Debugging on a virtual machine can often be more flexible than debugging on a real machine. VM/370 may terminate or reset a virtual machine if a nonrecoverable channel check or machine check occurs in that virtual machine. Hardware errors usually cause this type of virtual machine termination. One of the following messages appears on the CPU console: DMKMCH616I MACHINE CHECK; USER userid TERMINATED DMKCCH604I CHANNEL ERROR; DEV xxx; USER userid; ~ACHINE RESET VIRTUAL MACHINE ABEND (OTHER THAN CMS) The abnormal termination of an operating system (such as OS or DOS) running under VM/370 appears the same as a similar termination on a real machine. Refer to publications for the specified operating system for debugging information. However, all of the CP debugging facilities may be used to help you gather the information you need. Because certain operating systems (OS/VS1, OS/VS2, and DOS/V~ manage their own virtual storage, CP commands that examine or alter virtual storage locations should be used only in virtual=real storage space with OS/VS1, OS/VS2, and DOS/VS. 18 IBM VM/370: System Logic and Problem Determination Guide ftessage (Alarm rings) DftKDftP9081 SYSTEft FAILURE CODE xxxxxx CP ABERD, system dumps Restart is automatic. DMKDftP90SW SYSTEft DUKP FAILURE; PROGRAK CHECK DftKDftP906W SYSTEft FAILORE; ftACHINE CHECK, ROR SEREP DMKDftP907W SYSTEK DOKP FAILORE; FATAL 1/0 ERROR If the dump program encounters a a program check, machine check or fatal 1/0 error, a message is issued indicating the error. CP enters the wait state with code 3 in the PSW. DKKCKF900W SYSTEft RECOVERY FAILORE; PROGRAK CHECK DMKCKP901W SYSTEft RECOVERY FAILORE; ftACHINE CHECK, RON SEREP DftKCKP902W SYSTEft RECOVERY FAILORE; FATAL 1/0 ERROR - NOCL CYL - WARK CYL DKKCKP904W SYSTEft RECOVERY FAILORE; INVALID WARM START DATA DKKCKP910W SYSTEft RECOVERY FAILORE; INVALID WARft START CYLINDER DMKCKP911W SYSTEK RECOVERY FAILORE; WARft START AREA FOLt If the checkpoint program encounters a program check, a machine check, a fatal 1/0 error or an error relating to a certain warm start cylinder or warm start data conditions, a message is issued indicating the error and CP enters the wait state with code 7 in the PSW. DMKWRK902W SYSTEK RECOVERY FAILORE; FATAL 1/0 ERROR DMKWRft903W SYSTEft RECOVERY FAILORE; VOLID xxxxx ALLOCATION ERROR CYLINDER xxx DKKWRM904W SYSTEft RECOVERY FAILORE; INVALID WARK START DATA DKKWRK909W SYSTEK RECOVERY FAILORE: VOLID xxxxxx NOT KOUNTED DMKWRW909W SYSTEK DUKP DEVICE; ROT-READY start program If the warm encounters a severe error, a message is issued indicating the error and CP enters the wait state code 9 in the PSW. DKKDftP9081 SYSTEK FAILURE, CODE XXXXIX DMKCKP9601 SYSTEM WARft START DATA SAVED DMKCKP961W SYSTEM SHOTDOWN COKPLETE CP ABERD, system dumps to tape or printer. The system stops; the operator must IPL the system to start again. '---- Figure Type of ABERD 4. ABEND Kessages (Part 1 of 2) to disk. ----------------_._-----------' section 1. Introduction 19 ,----Type of ABEND Message 1 DMKDMP905W SYSTEM DUMP FAILURE; PROGRAM CHECK DMKDMP906W SYSTEM DUMP FAILURE; MACHINE CHECK r RUN SEREP DMKDMP907W SYSTEM DUMP FAILURE; FATAL I/O ERROR ----------------------- -----, 1 If the dump program encounters a program check r a machine check or fatal I/O error r a message is issued indicating the error. CP enters the wait state with code 3 in the PSW. If the duap cannot find a defined dump device and if no printer is defined for the dumpr CP enters a disabled wait state with code 4 in the PSi. ----------------------- CP termination with automatic restart when the two messages in the "Messages" column are issued: DMKMCH6101 MACHINE CHECK; SUPERVISOR DAMAGE The machine check handler encountered an unrecoverable error with the VM/370 control program. DMKMCH6111 MACHINE CHECK; SYSTEM INTEGRITY LOST The machine check handler encountered an error that con not be diagnosed; system integritYr at this pointr is not reliable. -------------------------------------------------CP terainaticn occurs without automatic restart when the two messages in the "Messages" column are issued: DMKCCH603W CHANNEL ERROR r RUN SEREP r RESTART SYSTEM There was a channel check condition from which the channel check handler could not recover. CP enters the wait state with condition code 2 in the PSi. DMKCPI955W INSUFFICIENT STORAGE FOR VM/370 The generated system requires more real storage than is available. CP enters the disabled wait state with code OOD ,in the PSW. ---,----------------------- DMSABN148T SYSTEM ABEND xxx CALLED FROM xxxxxx ----------1 CMS ABEND; the system accepts commands from the terminal. Enter the DEBUG command and then the DUMP subcommand to have CMS dump storage l i o n the printer. 1 1 1 1 1 1-------------------------------------------------------------I 1 Others 1 When OS or DOS abnormally termi- 1 1 Refer to OS and DOS publication 1 nates on a virtual machine r the 1 for the abnormal termination 1 messages issued and the dumps taken 1 1 messages. I are the same as they would be if OS 1 1 1 I or DOS abnormally terminated on a I 11.-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _I_real _ _ _ _machine. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _--I1 Figure 20 4. ABEND Messages (Part 2 of 2) IBM V"/370: System Logic and Problem Determination Guide -----, r----- I Problem I Type ABEND I Where I IABEND Occurs I CP ABEND bistinguishing Characteristics I I The alarm rings and the message DMKDMP9081 SYSTEM FAILURE, CODE xxx xxx appears on the CPU console. In this instance, the system dump device is a disk, so the system dumps to disk and automatically restarts. If an error occurs in the dump, checkpoint, or warmstart program, CP enters the wait state after issuing one or more of the following messages: DMKDMP90SW SYSTEM DUMP FAILURE; PROGRAM CHECK DMKDMP906W SYSTEM DUMP FAILURE; MACHINE CHECK, RUN SEREP DMKDMP907W SYSTEM DUMP FAILURE; FATAL I/O ERROR DMKCKP900W SYSTEM RECOVERY FAILURE; PROGRAM CHECK DMKCKP901W SYSTEM RECOVERY FAILURE; MACHINE CHECK, RUN SEREP DMKCKP902W SYSTEM RECOVERY FAILURE; FATAL I/O ERROR DMKCKP904W SYSTEM RECOVERY FAILURE; INVALID WARM START DATA DMKCKP910W SYSTEM RECOVERY FAILURE; INVALID WARM START CYLINDER DMKCKP911W SYSTEM RECOVERY FAILURE; WARM START AREA PULL DMKWRM902W SYSTEM RECOVERY FAILURE; FATAL I/O ERROR DMKWRM903W SYSTEM RECOVERY FAILURE; VOLID xxxxxx ALLOCATION ERROR CYLINDER xxx DMKWRM904W SYSTEM RECOVERY FAILURE; INVALID WARM START DATA DMKWRM909W SYSTEM RECOVERY FAILURE; VOLID xxxxxx NOT MOUNTED CP ABEND The following messages appear on the CPU console: DMKDMP9081 SYSTEM FAILURE, CODE xxxxxx DMKDMP9601 SYSTEM WARM START DATA SAVED DMKDMP961W SYSTEM SHUTDOWN COMPLETE The system dumps to tape or printer and stops. The operator must IPL the system to restart. If an error occurs in the dump or checkpoint program CP enters the wait state after issuing one or more of the following messages: L -_____ Figure S. DMKDMP90SW SYSTEM DUMP FAILURE; PROGRAM CHECK DMKDMP906W SYSTEM DUMP FAILURE; MACHINE CHECK, RUN SEREP DMKDMP907W SYSTEM DUMP FAILURE; FATAL I/O ERROR DMKCKP900W SYSTEM RECOVERY FAILURE; PROGRAM CHECK DMKCKP901W SYSTEM RECOVERY FAILURE; MACHINE CHECK, RUN SEREP DMKCKP902W SYSTEM RECOVERY FAILURE; PATAL I/O ERROR DMKCKP910W SYSTEM RECOVERY FAILURE; INVALID WARM START CYLINDER DMKCKP911W SISTEM RECOVERY FAILURE; WARM START AREA PULL _ _____________ -J ABEND Problem Type (Part 1 of 2) section 1. Introduction 21 ------------------------------------------, r 1 Problem 1 Where 1 ABEND Occurs 1 Type ABEND (Cont. ) 1 I Distinguishing Characteristics --------------1 An unrecoverable machine check error has occurred. One of the following messages: CP termination with automatic restart DMKMCH6101 MACHINE CHECK SUPERVISOR DAMAGE DMKMCH6111 MACHINE CHECK INTEGRITY LOST 1 1 1 1 1 1 appears on the CPU console. The system is automat- 1 1 1 ically restarted. 1 1 An unrecoverable channel check error has occurred. I The message: 1 I DMKCCH603W CHANNEL ERROR, RUN SEREP, RESTART 1 1 I 1 I I I I 1------------------------------------------------------I 1 1 1 I CP termination without automatic restart I I I I SYSTEM 1 appears on the CPU console, and CP enters the wait 1 1 state. I 1-------------------------------------1 I Virtual maI The CMS message 1 1 chine ABEND 1 I 1 (CMS) I DMSABM148T SYSTEM ABEND xxx CALLED FROM xxxxxx I I I 1 I I appears on the terminal. The system stops and 1 I I waits for a command to be entered on the terminal. 1 I I To have a dump taken, issue the CMS DEBUG I 1 and then the DUMP subcommand. Virtual machine ABEND (other than CMS) command I 1 When OS or DOS abnormally terminates on a virtual machine, the messages issued and the dumps taken are the same as they would be if OS or DOS abnormally terminated on a real machine. VM/370 may terminate or reset a virtual machine if a nonrecoverabele channel check or machine check occurs in that virtual machine. One of the following messages appear to the system operator at the CPU console: DMKMCH6161 MACHINE CHECK; USER userid TERMINATED DMKCCH6041 CHANNEL ERROR; DEV xxx; USER userid; MACHINE RESET Also, the virtual machine user is notified, by one of the following messages, that his machine was terminated or reset: L____________ Figure 5. 22 DMKMCH6191 MACHINE CHECK; OPERATOR TERMINATED DMKCCH6061 CHANNEL ERROR; OP_RATOR TERMINATED _________________________________,_____ ABEND Problem Type (Part 2 of 2) IBM VM/370: System Logic and Problem Determination Guide J UIEXPECTED RESULTS The unexpected results type of errors vary, from operating systems improperly functioning under VM/370 to output printed in the wrong for.at. by the CMS DDR command controlled by CMS. The functions: • DUMP dumps part, or all of the data from a DASD device to magnetic tape. • RESTORE -- transfers data from tapes created by DDR DUMP to a direct access device. The direct access device that the data is being restored to must be the same type of device as the direct access device originally containing that data. • COpy copies data from one device to another device of the same type. Data may be reordered, by cylinder, when copied from disk to disk. To copy on~ tape to another, the original tape must have been created by the DDR DUMP function. • PRINT -- selectively prints the hexadecimal and EBCDIC representation of DASD and tape records on the virtual printer. • TYPE -- selectively displays the hexadecimal and EBCDIC representation of DASD and tape records on the terminal. UNEXPECTED RESULTS IN CP If an operating system executes properly on a real machine but does not execute properly with VM/370, a problem exists. Also, if a program executes properly under the control of a particular operating system on a real machine but does not execute correctly under the same operating system with VM/370, a problem exists. There are programs (such as time-dependent programs) that CP does not support. Be sure that one of these programs is not causing the unexpected results in CPo Refer to "CP Restrictions" in Section 5 for a list of the restrictions. Ensure that the progr'am and operating system running on the virtual machine are ~~~£!!I the same as the one that ran on the real machine. Check for the same: • • • Job stream Copy of the operating system (and program) Libraries If the problem still is not found, look for an I/O problem. Try to reproduce the problem, tracing all CCWs, SIOs, and interruptions via the CP TRACE command. Compare the real and virtual CCWs from the trace. A discrepancy in the CCWs may indicate that one of the CP restrictions was violated, or that an error occurred in CPo UNEXPECTED RESULTS II A VIRTUAL MACHINE When a program executes correctly under the control of a particular operating system on a real machine but has unexpected results executing under the control of the same operating system with VM/370, a problem exists. You usually find that something was changed in the operating system or problem programs. Check that the job stream, the operating system, and the system libraries are the same. If unexpected results occur (such as TEXT records interspersed in printed output), you can examine the contents of the system or user disk files. Non-CMS users may execute any of the utility programs, which are included in the operating system they are using to examine and rearrange files. For more details on using the utility programs refer to the specific utilities publication for the operating system running in the virtual machine. CMS users should use the DASD Dump Restore (DDR) service program to print or move the data stored on direct access devices. The VM/370 DASD Dump Restore (DDR) program can be invoked in a virtual machine DDR program has five CMS users should refer to "Debugging with CMS" in section 4 for instructions on using the DDR command. "CP Commands for Debugging" in section 4 contains information about executing the DDR program in a real or virtual machine and a description of the DDR control statements. ,.-------------------_._-, 1 Unexpected Results Problem Type 1 1----------------------------------1 1 CP 1 If an operating system, executes 1 1 1 I properly on a real machine but not I 1 properly with CP, a problem exists. 1 1 1 Inaccurate data on disk or 1 1 1 files (such as spool files) could 1 1 I be the cause of the error. system 1 1----------------------1 1 Virtual I If a program executes correctly 1 Machine 1 under the control of a particular 1 1 operating system on a real 1 1 machine, but does not execute 1 1 correctly under the same operating 1 1 system with V8/370, a problem 1 1 exists. L 1 1 1 1 1 I 1 ~ Figure 6. Unexpected Results Problem Type LOOPS The real cause of a loop usually is an instruction that sets or branches on the conditj_on code incorrectly. The existence of a loop can usually be recognized by the ceasing of productive processing and a continual return of the PSi instruction address to the same address. If I/O operations are involved, and the loop is a very large one, it may be extremely difficult to define, and may even include nested loops. One of the most difficult types of loops to determine is entry to the loop from a wild branch. The problem in loop analysis is finding section 1. Introduction 23 either the instruction that should open the loop or the instruction that passed control to the set of looping instructions. CP DISABLED LOOP The system operator should perform the following sequence when gathering information to find the cause of a CP disabled loop. 1. DISPLAY commands to Use the ALTER or display the real PSW, general registers, control registers, and storage locations X'OO' X' 100' • 2. Press the SYSTEM RESTART button to cause an ABEND dump to be taken. 3. Save the information collected for the system programmer or IBM Programming support Representative. Note: You can IPL a standalone dump program such to dump the storage of your virtual machine. If you choose to use a standalone dump program, be sure to specify NOCLEAR on the IPL command. Also, be aware that the CP IPL simulation destroys a page of storage in your virtual machine and the standalone dump alters your virtual storage While the CP DUMP co •• and does not. i;-~he BPS storage Print However, if the operating system in the virtual machine manages virtual storage, it is usually better. to use that operating system's dump program. CP does not retrieve pages that exist only on the virtual machine's paging device. VIRTUAL MACHINE ENABLED LOOP After the system operator has collected the information, the system programmer or Field Engineering representative examines it. If the cause of the loop is not apparent: 1• 2. Examine the CP internal trace table to determine the modules that may be involved in the loop. If the cause is not yet determined, assume that a wild branch caused the loop entry, and search the source code for this wild branch. You should perform the following sequence when locating the cause of an enabled loop: 1. Use the CP TRACE command to trace entire loop. Display the PSW and general registers. the the 2. If your virtual machine has the extended control (EC) mode and the EC option, also display the control registers. 3. Use the CP DUMP com,mand to dump your virtual storage. CMS users can use the DEBUG DUMP subcommand. A standalone dump may be used, but be aware that such a dump destroys the contents of some areas of storage. 4. Consult the source code to search for the faulty instructions, examining previously executed modules, if necessary. Begin by scanning for instructions that set the condition code or branch on it. 5. If the way in which the loop was entered is still undetermined, assume that a wild branch has occurred and begin a search for its origin. VIRTUAL MACHINE DISABLED LOOP When a disabled loop is in a virtual machine you cannot communicate with the virtual machine's operating system. This means that signaling attention does not cause an interruption. To find the disabled loop: cause of a virtual machine 1. Enter the CP console function mode. 2. Use the CP TRACE command to trace the entire loop. Display general and extended control registers via the CP DISPLAY command. 3. Take a dump via the CP DUMP command. 4. Examine the source code. WAIT No processing occurs in the virtual machine when it is in a wait state. When the wait state is enabled, an I/O interruption causes processing to resume. Likewise, when the Control Program is in a wait state, its processing ceases. Use the information gathered, along with listings, to try to find the entry into the loop. 24 IBM VM/370: System Logic and Problem Determination Guide r--------------1 Loop ---------------------,1 1r-------------'---------------------, wait Problem Type 1 Problem Type 1--------------------------1 CP 1 The CPU console wait light is 1 I disabled I off. The problem state bit of the 1 1 loop 1 real pSW is off. No I/O 1 I I interruptions are accepted. I 1--Condition does not exist. I CP 1 enabled I loop I The program is taking longer to I Virtual execute than anticipated. 1 machine Signaling attention from the 1 disabled terminal does not cause an I loop interruption in the virtual I machine. You cannot communicate I with the virtual machine's opera1 ting system by signaling attenI tion. 1 I---------·"-~---· 1 Type 1 Distinguishing Disa"bled CP wait Figure 7. -------------1 The CPU wait light is on. DMKMCH612W MACHINE CHECK TIMING FACILITIES DAMAGE, RUN SEREP 1 1 1 1 1 1 1 1 appears on the CPU console, a machine check (probable hardware error) caused the CP disabled wait state. If the message Excessive processing time often indicates a loop. Use the CP QUERY TIME command to check the elapsed processing time. In CMS, the continued typing of the blip characters indicates that time is elapsing. If time has elapsed, periodically display the virtual psw and check the instruction address. If th~ same instruction, or series of instructions continues to appear in the PSW, a loop probably exists. DMKCCH603W CHANNEL ERROR, RUN SEREP, RESTART SYSTEM appears on the CPU console, a channel check (probable hardware error) caused the CP disabled wait state. If the message DMKCPI955W INSUFFICIENT STORAGE FOR VM/370 appears on the CPU console, the control program has entered a disabled wait state with code OOD in the PSW. LOop Problem Type Either the generated system is larger than the real machine size, or a hardware machine malfunction prevents VM/370 from using the necessary amount of storage. If the message CP DISABLED WAIT A disabled wait state usually results from a hardware malfunction. During IPL, normally correctable hardware errors may cause a wait state because the operating system error recovery procedures are not accessible at this point. These conditions are recorded in the current PSW. DMKPAG415E CONTINUOUS PAGING ERRORS FROM DASD xxx appears on the CPU console, the control program (CP) has entered a disabled wait with code OOF in the PSi. CP may be in an enabled wait state with channel 0 disabled when it is attempting to acquire more free storage. Examine extended control register 2 to see whether or not the multiplexer channel is disabled. A severe machine check could also cause a CP disabled wait state. If a severe machine check or channel check caused a CP disabled wait state, one of the following messages appear: 1 Pressing the REQUEST key, or the equivalent action, on the operator's console, leaves the REQUEST PENDING light on. If the message , Virtual machine enabled loop 1 Characteristics Consecutive hardware errors are occurring on one or more VM/370 paging devices. Enabled CP wait ---------------1 The CPU console light is on, 1 but the system accepts I _interruptions _ _ _ _ _ _ _ _ _ _ _from _ _ _ _I/O _ _ _devices., _ _ _ _ _ _J L Figure 8. CP wait Problem Type DMKMCH612W MACHINE CHECK TIMING FACILITIES DAMAGE; RUI SEREP DMKCCH603W CHAINEL ERROR, RUN SEREP, RESTART SYSTEM Section 1. Introduction 25 If the generated system cannot run on the real machine because of insufficient storage, CP enters the disabled wait state with code OOD in the PSW. The insufficient storage condition occurs if: • The generated system is machine size larger than the real Using the dump, examine the VMBLOK for each user and the real device, channel w and control unit blocks. If each user is waiting because of a request for storage and no more storage is available, there is an error in CPo There may be looping in a routine that requests storage. Refer to "Reading CP ABEND Dumps" in this section for specific information on how to analyze a CP dump. or • A hardware malfunction occurs which reduces the available amount of real storage to less than that required by the generated system. The message DMKCPI955W INSUFFICIENT STORAGE FOR VM/370 appears on the CPU console. VIRTUAL MACHINE DISABLED WAIT The VM/370 Control Program does not allow the virtual machine to enter a disabled wait state or certain interrupt loops. Instead, CP notifies the virtual machine operator of the condition with one of the following messages: DMKDSP450W CP ENTERED; DISABLED WAIT PSi If CP cannot continue because consecutive hardware errors are occurring on one or more VM/370 paging devices, the message DHKDSP451i CP ENTERED; INVALID PSW DMKPAG415E CONTINUOUS PAGING ERRORS FROM DASD xxx DHKDSP452W CP ENTERED; EXTERNAL INTERRUPT LOOP appears on the CPU console and CP enters the disabled wait state with code OOF in the PSW. If more than one paging device is available, disable the device on which the hardware errors are occurring and IPL the system again. If the VM/370 system is encountering hardware errors on its only paging device, move the paging volume to another physical device and IPL again. This error condition may occur if the VM/370 paging volume was not properly formatted. !Q!~: DMKDSP453W CP ENTERED; PROGRAM INTERRUPT LOOP and enters the console function mode. Use the CP commands to display the following information on the terminal. • • • • Program Channel General Control status word status word registers registers Then use the CP DUMP command to take a dump. The following procedure should be used by the system operator to record the needed information. 1. Use the alter/display mode of the CPU console to display the real PSW and CSW. Also, display the general registers and the control registers. 2. Press the SYSTEM RESTART system ABEND dump. 3. IPL the system. button to get a Examine this information to find what caused the wait. If you cannot find the cause, try to reconstruct the situation that existed before the wait state was entered. If you cannot find the cause of the wait or loop from the information just gathered, try to reproduce the problem, this time tracing the processing via the CP TRACE command. If CMS is running in the virtual machine, the CMS debugging facilities may also be used to display information. take a dump, or trace the processing. The CMS SVCTRACE and the CP TRACE commands record different information. Figure 11 compares the two. VIRTUAL MACHINE ENABLED WAIT If the virtual machine is in an enabled wait state, try to find out why an I/O interruption has not occurred to allow processing to resume. CP ENABLED WAIT If you determine that CP is in an enabled wait state, but that no I/O interrupts are occurring, there may be an error in a CP routine or CP may be failing to get an interrupt from a hardware device. Press the SYSTEM RESTART button on the operator's console to cause an ABEND dump to be taken. Use the ABEND dump to determine the cause of the enabled (and noninterrupted) wait state. After the dump is taken, IPL the system. 26 CP treats the following enabled wait in a virtual machine the same as a disabled wait. If the virtual machine does not have the real timer option and loads a PSi enabled only for external interrupts, CP issues the message DHKDSP450W CP ENTERED; DISABLED WAIT STATE Because the virtual timer is not decremented while the virtual machine is in a wait state, it IBH VM/370: System Logic and Problem Determination Guide cannot cause the external interrupt. A real timer runs in both the problem state and wait state and an external interruption can cause a virtual machine to resume processing. r-------------wait I Problem Type --------------,I I----~---------~-------------------- I Problem I Type Disabled virtual machine wait I I Distinguishing Characteristics The VM/370 Control Program does not allow a virtual machine to enter a disabled wait state or certain program loops. Instead, CP issues one of the following message: DMKDSP450W DMKDSP451W DMKDSP452W DMKDSP453W Enabled virtual machine wait I I I I I I I I I I CP ENTERED; DISABLED WAIT PSW CP ENTERED; INVALID PSW CP ENTERED; EXTERNAL INTERRUPT LOOP CP ENTERED; PROGRAM INTERRUPT LOOP A PSW enabled for I/O interruptions is loaded. Nothing happens if an I/O device fails to issue an I/O interruption. If a program is taking longer to execute than expected, periodically issue the CP command, QUERY TIME. If the processing time remains unchanged, probably a virtual machine enabled wait exists. CMS types a blip character for every two seconds of elapsed processing time. If the program does not end and blip characters stop typing~ an enabled wait state probably exists. _______________ ---J ~ Figure 9. Virtual Machine Wait Problem Type RSCS VIRTUAL MACHINE DISABLED WAIT Three disabled wait conditions can occur during the operation of the RSCS component of VM/370. They can result from either hardware malfunctions or system generation errors. CP notifies the RSCS operator of the wait condition by issuing the message DMKDSP450W CP ENTERED; DISABLED WAIT PSW to the RSCS operator's console. Using CP commands, the operator can display the virtual machine's PSW. The rightmost 3 hexadecimal characters indicate the error condition. WAIT STATE CODE X'OOl': If no RSCS message was issued;--i -progrii---check interrupt occurred during the execution of the program check handler. A progra.ming error is the probable cause. If the RSCS message DMTREX091 T INITIALI ZATI ON FAI LURE -- RSCS SHUTDOWN was issued, RSCS operation was terminated because of an error in the loading of DKTAXS or DKTLAX. A dump of virtual storage is automatically taken. Verify that the CMS files 'DHTAXS TEXT' and 'DMTLAX TEXT' are correctly written and that they reside on the RSCS system residence device. If the RSCS message DMTREX090T PROGRAM CHECK IN SUPERVISOR -- RSCS SHUTDOWN was issued, the program check handler has terminated RSCS because of a program check interrupt in other than a dispatched line driver. A dump of virtual storage is automatically taken. A program.ing error is the probable cause. The wait state code is loaded by DMTREX at RSCS termination or automatically during program check handling. If neither of the last two messages was issued, use the CP DUMP command to dump the contents of virtual storage. Do an initial program load to restart the system. If the problem persists, notify your system support personnel. WAIT STATE £QQ~ X'007': A program check interrupt- has occurred during initial process1ng, before the program check handler could be activated. This may be caused by a programming error or by an attempt to load RSCS into an incompatible virtual machine. The latter case can occur if the virtual machine has (1) an incomplete instruction set, (2) less than 512K of virtual storage, or (3) does not have the required VM/370 DIAGNOSE interface support. The wait state code is loaded automatically during the initial loading and execution of the RSCS supervisor, DMTINI, DMTREX, DMTAXS or DMTLAX. Verify that the RSCS virtual machine configuration has been correctly specified and that the "retrieve SUbsequent file descriptor" function of DIAGNOSE code X'14' is supported. Dump the contents of virtual storage via the CP DUMP command. If the problem persists, notify your system support personnel. WAIT STATE CODE X'011': An unrecoverable error occorred-when-readlng-the RSCS nucleus from DASD storage. This may be caused by a hardware malfunction of the DASD device. It may also be the result of an incorrect virtual DASD device definition, an attempt to use a system residence section 1. Introduction 27 device unsupported by RSCS, incorrect RSCS system generation procedures, or the subsequent overlaying of the RSCS nucleus on the system residence device. The wait state code is loaded by DMTINI after an attempt, successful or not, to issue the message: DMTINI402T IPL DEVICE READ I/O ERROR r-------------------------------------------, 1 RSCS Wait Problem Type 1 1---------------------------------------------1 1 Problem Type 1 1 1 Disabled RSCS wait 1 Distinguishing Characteristics 1 The RSCS operator is notified of the wait state because CP issues the message DMKDSP450W Verify that the RSCS system residence device has been properly defined as a virtual DASD device and that the real DASD device is mounted and operable. If the problem persists, dump virtual storage via the CP DUMP command and notify your system support personnel. The RSCS system residence device may have to be restored or the ascs system may have to be regenerated. CP ENTERED; WAIT PSW DISABLED If, in addition, the message DMTINI402T IPL DEVICE ERROR READ I/O appears on the RSCS console, an unrecoverable error has occurred while reading the RSCS nucleus from DASD storage. RSCS enters a disabled wait state with a code of X'Oll' in the PSW. RSCS VIRTUAL MACHINE ENABLED WAIT Whenever Rses has no task ready for execution, CMTDSP loads a masked-on wait state PSW with a code of hexadecimal zeros. This occurs during normal ascs operation and does not indicate an error condition. An external interrupt caused by command entry or an I/O interrupt due to the arrival of files automatically causes processing to resume. If a program check occurs before the program ~heck handler is activated, RSCS enters a disabled wait state with a code of X'007' in the PSi. If a program check occurs after the program check handler is activated, RSCS enters a disabled wait state with a code of X'OOl' in the PSW. One of the following messages also appear on the ascs console: DMTREX090T PROGRAM CHECK IN SUPERVISOR ascs SHUTDOWN DMTREX091T INITIALIZATION FAILURE - - RSCS SHUTDOWN 1-------------------_·_---------------1 1 Enabled 1 RSCS I RSCS has 1 execution. no task ready for 1 A PSW, enabled for 1 1 wait 1 external and I/O interruptions, 1 I I is loaded with a wait code of all I I _ _ _ _ _ _ _ _ _I_ _zeros. L _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _._--'I Figure 10. 28 IBM VM/370: System Logic and Problem Determination Guide RSCS Wait Problem Type Figure 11 summarizes the VM/370 commands that are useful in debugging. commands are classified by the function they perform • .--------------------------------/ Function / comments / CP Command Stop execution at a specified location Set the address stop before the prograll reaches a specified address. CMS allows 16 address stops to be active while CP allows only one. Resume execution Resume Begin execution where prograil was interrupted/ Continue execution at a specific 1c/ cation L________ Figure 11. CP and CMS ------------,/ CMS Command DEBUG ADS TOP {heX10C } OFF BReak id {symbOl} hex10c DEBUG GO ---------------// / / / / / / DEBUG / / GO { S y mh01} / hex10c / / / / / / -------------------------------------/ / Begin [hex1oc] / / / / /----------------------------- / Dump data / Dump the I I contents I I of specisto/ / fic / I rage 10ca/ / tions. I I I I / 1 The / .-.-, I DUMP {heX10C 1 } I {-}I hex10c21 / Lhex10c1 / : Un!!! / / / L .J / /.-, / /{. }/bytecount/ I I I I ~!J2 I L L .J I [*dUllpid] ----------/ , /DEBUG II ., ., // DUmp / sYllbo11/ /symbo12/ // /hex10c1/ /hex10c2/ // / Q / / * / // L .I / .1~ / II L.J .J I [ident] I / I / ./ / I I .1 _.JI ___.__-____________ _ ~ SUllllary of VM/370 Debugging Tools (Part 1 of 4) section 1. Introduction 29 r-------------------------------------------------------------, 1 Function 1 comments 1 CP Command 1 C"S Command I -------------------------------------------------------------1 Display da ta 1 Display I contents I of storage 1 locations 1 in hexadeI cimal) 1 1 I 1 r r ' " 1 I DEBUG I Display hexlocl -}I hexloc21 II X I I : I~!Q I II I I L .J II I 1 r , I I I I{ • } I bytecount III I I I ~!Q I II I L L .J.J I I{ rl I symbol I n i l 1!~!Hlihl I L J I r "1 I I n I I hexloc I 4 I I L .J I --------------------------------------------------1 I Display I r r "1' I I I contents IDisplay Thexlocll{-}lhexloc21 II I I of storage I I : I~!Q I II I I locations I I L .J II I I (in hexa- I I r , II I I I { • } I bytecount I I I I I decimal I and EBCDIC) I I I~!Q III I I I L L .J.J I I 1-----------------,-------------------------,-------1 I Display I r r '"1 I I I storage I Display KheXlOC11{ -} I hexloc21 II I Ike y 0 f I I : I ~!Q I II I I specific I I L .J II I I I r , II I I storage I lccations 1{.}lbytecountlll I I in hex- I I 1~!Q III I I adecimal I L L .J.J I I 1 1-1 Display I general I registers I I I ---------------------------------------1 I DEBUG I I IDisplay Gre g l I I I l {-}lre g 2 1 I : I~!Q I r "1 I I{ • }I regcoun t I I 1 r r , , I~!Q 1 GPR regl [reg2] I I I I I I I 1'1 I I ILL.J.J 1 Display I floatingI point I registers I I I I I r r , , I Display Yregll{ -} Ireg21 I I I : I~!Q I I I l L .J I I I r , I 1 I{ • }I regcount" I I I~!Q II ILL.J.J I Display I control I registers I I r r , IDisplay Xreg11{-}lreg21 I I : I~!Q I L.J 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 1------------------------------------------------1 I I 1 --------------------1 , I I I I I I I I I I I I I{. }lregcountll I~!Q II I I ILL.J.J I I I I I I I DEBUG I PSW I I I I I I I I I I I r , 1--------------------------------------------·-------1 I I I I I I I Display I Display contents I of current I virtual I PSW in I hexadecimal I format I PSW 1-------------------------------- 1 ·-----1 I Display I Display CAW DEBUG I I CAW con- 1 CAW I I tents I I I 1-------------------,-------_·_------------------_·_--I I Display I Display CSW I DEBUG I I CSW con- I I CSW I I tents I I - - . JI L________ Figure 30 11. _________________________________.__.___ Summary of V"/370 Debugging Tools (Part 2 of 4) IB" VM/370: System Logic and Problem Determination Guide r---------------------------------------------------------------, 1 Function 1 Co •• ents CP Command 1 eMS Command 1 -------------------------------------1 store data store 1 1 1 specified ISTore Shexloc hexdata... 1 DEBUG 1 infor.a1 1 STore {SYllbOl} hexinfo 1 tion into 1 1 hexloc 1 consecutive storage locations w i t h - I I I out align- 1 1 1 1 1 1 1 mente 1 11 1 1 1 1 1 1 1-----------------------------------------------------------1 1 Store 1 1 1 1 1 1 1 1 specified 1STore {hexloc } words of 1 Lhexloc information 1 into con- 1 (hexvord1[hexword2 ••• ]) secutive 1 1 fullword 1 1 storage 1 1 locations 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Store ISTore Greg hexword1 [hexword2 ••• ] 1 specified 1 1 words of 1 1 information 1 1 into con1 1 secutive 1 1 general 1 1 1 registers IDEBUG 1 ISET GPR reg hexinfo[hexinfo] 1 1------------------------------------------------------I 1 1 1 1 1 1 1 1 1 1 1 1 I-------------------------------------~-~--·~--"------------------1 1 1 1 1 1 1 1 1 1 Store 1 STore Ireg hexword 1 specified 1 [hexword2 ••• ] words of 1 informationl into con- 1 secutive 1 floating- 1 point 1 registers 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1--------------------------------------------------1 1 Store 1STore Xreg hexword 1 1 1 1 specified 1 words of 1 data into 1 1 1 [hexword2 ••• ] 1 1 1 1 1 1 1 consecutive 1 1 1 1 control 1 registers 1 1 1 1 1 1 1 ------------------------------~--------I 1 Store 1STore PSW [hexword1] hexword2 1 inforaationl 1 into PSW 1 IDEBUG ISET PSW hexinfo [hexinfo] 1 1 1 1 1-------------------------------------------------1 1 store 1 1 informationl 1 in CSW 1 IDEBUG ISET CSW hexinfo [hexinfo] 1 1 1 1 1----------------------------------------------------------1 1 Store 1 1DEBUG 1 1 informationl ISET CAW hexinfo 1 1_in 1 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _--'1 L ________ _ _CAW ______ Figure 11. Summary of VM/370 Debugging Tools (Part 3 of 4) section 1. Introduction 31 ,.------------------------------_._----------------------------------, I Function 1 Comaents 1 CP Command 1 C~S Command , --------------·_-------------------------------1 Trace Trace all 1 TRace ALL , 1 execution 1 instructions, 1 interrupts, 1 and 1 1 branches 1 1, 11 1 1 1 1 1 1 1----------------------------------------------------------------1 1 Trace SVC 1 TRACE SVC 1 interrupts 1 1 SVCTrace ON 1 1 1 1 1 1 1 1------·_----------------------------------------------------------1 1 Trace I/O 1 interrupts 1 TRace 1 I/O PROgram 1--------------------------------------------------------I 1 Trace 1 TRace 1 program 1 interrupts 1 1 I Trace 1 TRace 1 external 1 interrupts 1 1 1 1 1 1 1 1 1-----------_·_----------------------------------------------1 EXTernal I 1 1 I , 1 1 1------------------------------------------------------------1 1 Trace 1 TRace PRIV 1 1 I privileged 1 1 1 instruc- 1 I 1 1 tions 1 1 1 1 I 1 1 1 1 1 1 Trace all TRace 1 user I/O 1 operations I SIO 1 Trace SIO CCW -----------------·-------1 1-------------------------------------------------------I 1 TRace I virtual andl TRace 1 1 1 1 1 real CCws 1 1 1 1 Trace 1 all user 1 TRace BRANCH 1 1 1 1 1 1---------------------------------------------------1 1 interrupts 1 1 1 1 and suc1 cessful 1 1 1 1 1 1 1 branches 1 I 1 1 Trace 1 TRace INSTruct 1 1 1 all in- 1 I 1 1 structions 1 1 1 1 End all 1 tracing 1 activity 1 TRace END 1 1 1 SVCTrace OFF 1 1 1 1 1 1 Trace reall Trace 1 MONitor STArt CPTRACE 1 1 1 machine I events 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1------------------_·_-----------------------_·_--------I 1-----------------------------------------------------------, 1----------------------------------------------------------------·---1 1 1 events in 1 real 1 machine 1-----------------------------------------------------'---1 1 stop trac- 1 MONitor STOP CPTRACE 1 ing events 1 1 1 l i t h e real 1 1L _ _ _ _ _ _ _ _ _I _machine 1 ___________________________ 1 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _.__ --'1 _________ Figure 32 11. Summary of VM/370 Debugging Tools (Part 4 of 4) IBM VM/370: system Logic and Problem Determination Guide If you are debugging problems while your virtual machine is running CMS, you can choose the CP or CMS debugging tools. See • Figure 12 for a comparison CMS debugging tools. --------- 1 Function 1 CP 1 of the CP and I CMS 1 1 hexadecimal format. The I storage address of the I first byte of each line is I identified at the left. I The contents of the genI eral and floating-point 1 registers are printed at I the beginning of the dump. 1 adecimal format. The CMS commands do not display storage keys, floating-point registers or control registers as as the CP command does. I 1 I 1 I 1 I I 1----------------------------------------1 setting Can set only one address 1 Can set up to 16 address 1 address stop at a time. 1 stops at a time. 1 stops 1 1 -------------------------1 Dumping The dump is printed in hexa- 1 The dump is printed in 1 contents of storage to the printer decimal format with EBCDIC translation. The storage address of the first byte of each line is identified at the left. The control blocks are formatted. Display the contents of storage and control registers at the terminal The display occurs in hexadecimal format with EBCDIC translation. The CP command displays storage keys, floating-point registers and control registers. information stored by the CP command is limited only by the length of the input line. The information can be fullword aligned when stored. CP stores data in the PSW, but not in the CAW or CSW. However, data can be stored in the CSW or CAW by specifying the hardware address in the STORE command. CP also stores the status of the virtual machine in the extended logout area. Tracing information CP traces: --------------------_.------storing The amount of information • All interrupts, instructions and branches • SVC interrupts • I/O interrupts • Program interrupts • External interrupts • Privileged instructions • All user I/O operations • Virtual and real CCW's • All instructions I 1 1 I I I 1 1 The display occurs in hex- 1 The CMS command stores up to 12 bytes of information and can store data in the general registers but not in the floating-point or control registers. CMS stores data in the PSW, CAW, and CSW. CMS traces all SVC interrupts. CMS displays the rupts. CMS displays the contents of general and floating-point registers before and after a routine is called. The parameter list is recorded before a routine is called. The CP trace is interactive. You can stop and display other fields. '---------------------------------------12. Comparison of CP and CMS Facilities Figure for Debugging Section 1. Introduction 33 dump data must fit on one reel; VM/370 does not support multiple tape volumes. Many CP problems can be isolated without standalone machine testing. It is possible to debug CP by running it in a virtual machine. In most instances, the virtual machine system is an exact replica of the system running on the real machine. To set up a CP system on a virtual machine, use the same procedure that is used to generate a Cf system on a real machine. However, remember that the entire procedure of running service programs is now done on a virtual machine. Also, the virtual machine must be described in the real VM/370 directory. See the !~LdlQ: 2Y2!~! g£Qg£~!!~~~2 §~!~~ for directions for setting up the virtual machine. ABEND DUMPS A third kind of dump occurs when the CP system cannot continue. The CP abnormal termination dumps can be directed to a printer or tape or be dynamically allocated to DASD. If the dump is directed to a tape, the dumped data must fit on one reel of tape. Multiple tape volumes are not supported by VM/370. The historical data on the tape is in print line format and can be processed by user-created programs or via CMS commands. Use the CP SET command to specify the output device for CP ABEND dumps. The format of the SET comlland is: l-=~r-l-::::-l:~!~r -1-T~tLT-I--l I I dumps only the CP storage area. ALL dumps all of real storage. USING THE VMFDUMP COMMAND Use the CMS VMFDUMP command to print the dump on the real printer, when the CP ABEND dump is sent to a disk. The format of the VMFDUMP command is: ---------------------, , , I r--- There are three kinds of abnormal termination dumps possible when using CPo The first kind occurs when the problem program cannot continue. It terminates and in some cases attempts to issue a dump. The second occurs when the operating system for your virtual machine cannot continue. It terminates and in some cases attempts to issue a dump. In the VM/370 environment, both the problem program and the virtual machine's operating system dumps go to the virtual printer. A CLOSE must be issued to the virtual printer to have either dump print on the real printer. I I CP I I I r r I I ERASE I VMFDUMP I I I NOMAP I DUMPxx I I NOHEX I I I .I L I I NOFORM I I NOVIRT IL_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _L _ _ _ _ _ _ I I I I I .I I I I I I I _.I DUMP:xx specifies the name of the CP dump file to be formatted and printed. xx may be any value from 00 to 09. Class D spool files contain only CP dump files. These files are searched for the indicated dump file. When the file is found, it is used to create a CMS file which, in turn, is formatted and printed. ERASE specifies that the CMS file which is being formatted and printed is to be erased at the conclusion of the program. NOMAP specifies that a load map is not to be printed. NOHEX specifies that a hexadecimal not to be printed. dump is ROFORM specifies that no formatted blocks are to be printed. control NOVIRT specifies that only the real machine control blocks are to be formatted. This option is ignored if ROFORM is also specified. I I L.I L _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _,,________________________ .1 Use the VMFDUMP command to format and print a current or previous VM/370 system ABEND dump. Specify DUMP specifies the ABEND Dump. AUTO automatically directs to disk. VMFDUMP raddr 34 the ABERD dump directs the ABEND dump to the specified unit address (either a printer or a tape unit). If the address specifies a tape device, the to obtain printout. a complete formatted, When the dump has been messages is printed: IBM VM/370: System Logic and Problem Determination Guide hexadecimal printed, one of two DUMP FILE - DUMP xx - PRINTED AND KEPT "Load Map" later in this section instructions for generating a load map. for -- or -DUMP FILB - DUMP xx - PRINTBD AND ERASBD REASON FOR THE ABEND HOW TO PRINT A CP ABBND DUMP FROM TAPE When the CP ABBBD dump is sent to a tape, the records are 133 characters unblocked, and include carriage control characters. Determine the immediate reason for the ABEND. You need to examine several fields in the PSA (prefix storage Area) which is located in low storage, to find the reason for the ABEND. • Examine the program old PSW and program interrupt code to find out if a program check occurred in CPo The program old PSW (PROPSW) is located at X'2S' and the program interrupt code (INTPR) is at X'SB'. If a program check has occurred in supervisor mode, use the CP system load map to identify the module. If you cannot find the module using the load map, refer to "Identifying a Pageable Module." • Examine the SVC old PSW, the SVC interrupt code, and the ABEND code to find out if a CP routine issued an SVC O. The SVC old PSW (SVCOPSW) is located at X'20', the SVC interrupt code (INTSVC) is at X'SA', and the ABEND code (CPABEND) is at X'374'. To print the tape, first make sure the tape drive is attached to your system. Next, define the printer and tape file: FILEDEF ddname1 PRINTBR (RECPM P LRECL 133) FILEDEF ddname2 {TAP2} (9-track DBB 1600 TAP1 RECPM F LRBCL 133 BLOCK 133) Then use tape: the MOVEFILE command to print the MOVEFILE ddname2 ddname1 The modules that may issue an SVC 0 are: DMKBLD DMKCFG DMKCKS DMKCPI DMKCVT DMKDRD DMKDSP DMKFRE DMKHVD DMKIOS DMKNLD DMKPGS DMKPGT DMKPRG Two types of printed dumps occur when CP abnormally ends, depending on the options specified in the CP SBT DUMP command. When the dump is directed to a direct access device, VMPDUMP must be used to format and print the dump. VMFDUMP formats and prints: • • • • • • • Control blocks General registers Floating-point registers Control registers TOD (Time-of-Day) clock CPU timer Storage The ABEND code (CPABEND) is a full word in length. The first three bytes identify the module that issued the SVC 0 and the fourth hyte is a binary field whose value indicates the reason for issuing an SVC O. See "CP ABEND Codes, Reason and Action" in section 3. is printed in hexadecimal Storage notation, eight words to the line, with BBCDIC translation at the right. The hexadecimal address of the first byte printed on each line is indicated at the left. !Q~~: If the CP SET DUMP command directed the dump to tape or the printer, the printed format of the dump is the same as with VMFDUMP, except that the control blocks are not formatted and printed. When CP can no longer continue and abnormally terminates, you must first determine the condition that caused the ABEND, and then find the cause of that condition. You should know the structure and function of the Control Program. The following discussion on reading CP dumps includes many references to CP control hlocks and control hlock fields. Refer to !~L12Q: R~~~ A~~~2 ~~g ~Q~~~Q! ~!Qf! 1Qg!f for a description of the CP control blocks. You will need the current load map for CP to he ahle to identify the modules from their locations. See DMKPSA DMKPTR DMKRGA DMKRNH DMKRPA DMKSCH DMKTDK DMKUDR DMKVDB DMKVDR DMKVIO DMKVMA DMKVSP Use the CP system load map to identify the module issuing the SVC O. If you cannot find the module using the CP system load map, refer to "Identifying a Pageahle Module" in this Section. • Examine the old PSW at X'OS'. If the operator has pressed the SYSTEM RESTART button on the CPU console, the old PSW indicates the instruction executing when the ABEND (caused hy pressing the SYSTEM RESTART hutton) was recognized. • For a machine check, examine the machine check old PSW and the logout area. The section 1. Introduction 35 machine check old PSW (MCOPSW) is found at X'30' and the fixed logout area is at X'100'. Also examine the machine check interrupt code (INTMC) at X'E8'. COLLECT INFURMATION To trace control blocks and necessary to know the CP conventions. may contain ~~g!~!~!: GRl GR2 GR6,7,8 GR10 GR14,15 always contain CP Running status Field The CP running status is stored in CPSTAT at location X'348'. The value of this field indicates the running status of CP since the last entry to the dispatcher. CPSTAT Values gDg ~~gD!Dg in wait state X'40' CP is running the user in RUNUSER X'20' CP is executing a stacked request X'80'- • it is usage Contents The-vIrtual address to be translated The real address or parameters The address of the active VMBLOK and device control blocks The address of the active IOBLOK The external branch linkage The following general registers the saDe information: • modules, register The 16 general registers have many uses that vary depending upon the operation. The contents of some of the general registers follows: Examine several other fields in the PSA to analyze the status of the system. As you progress in reading the dump, you may return to the PSA to pick up pointers to specific areas (such as pointers to the real control blocks) or to examine other status fields. The following areas of the PSA useful debugging information. REGISTER USAGE -cp-is !!~.9j.§!~.!: GRll GR12 GR13 Contents 'The-address of thE! active VMBLOK The base register for the module executing The address of the current save area, if the module was called via an SVC Use these registers, the CP control blocks, and the data in the prefix storage area to determine the error that caused the CP ABEND. Current User SAVE AREA CO.VENTIONS The PSW that was most recently loaded by the dispatcher is saved in RUNPSW at location X'330', and the address of the dispatched VMBLOK is saved in RUNUSER at location X'338'. Also, examine the contents of control registers 0 and 1 as they were when the last PSW was dispatched. See RUNCRO (X'340') and RUNCRl (X'344') for the control registers. Also, examine the CP internal trace table to determine the events that preceded the abnormal termination. start with the last event recorded in the trace table and proceed backward through the trace table entries. The last event recorded is the last event that was completed. The trace table is at least one page (4096 bytes) long. Cne page is allocated to the trace table for each block of 256K bytes of real storage available at IPL. Each trace table entry is 16 bytes leng. The TRACSTRT field (location X'OC') contains the address of the start of the trace table. The TRACEND field (location X'10') contains the address of the byte following the end of the trace table. The address of the next available trace table entry is found in the TRACCURR field (location X'14'). There are three save areas that may be helpful in debugging CPo If a module was called by an SVC, examine the SAVEAREA. SAVEAREA is not in the PSAi the address of the SAVEAREA is found in general register 13. If a module was called by a BALR, the general registers are saved in the PSA in an area called BALRSAVE (X'240'). The DMKFRE save area and work area is also in the PSA: these areas are only used by the DMKFREE and DMKFRET routines. The DMKFRE save area (FREESAVE) is at location X'280' and its work area (FREEWORK) follows at location X' 2CO' • Use the save areas to trace back and find the previous module executed. • SAVEAREA An active save area contains the caller's return address in SAVERETN (displacement X'OO'). The caller's base register is saved in SAVER12 (displacement X'04'), and the address of the save area for the caller is saved in SAVER13 (displacement X' 08'). Using SAVER13, you can trace back again. subtract 16 (X '10') bytes from the value at X' 14' (TRACCURR) to find the address of the last trace table entry recorded. 36 IBM VK/370: SY5tem Logic and Problem Determination Guide • • BALRSAVE • All the general registers are saved ~n BALRSAVE after branching and linking (via BALR) to another routine. If you look at BALR14 for the return address saved, BALR13 for the caller's save area, and BALR12 for the caller's base register, you can trace module control backwards. Examine the virtual PSW and the last virtual machine privileged instruction. The virtual machine PSW is saved in VMPSW (displacement X'AS') and the virtual /lachine privileged or tracing instruction is saved in VMINST (displacement X'9S'). • Find the name of the last CP command that executed in VMCOMND (displacement X'14S'). • Check the status of following fields information. FREESAVE All the general registers are saved in FREESAVE before DMKFRE executes. Use the address of FREESAVE to trace module control backwards. Field FREER 15 FREER14 FREER13 FREER12 FREERl FREERO I/O activity. The contain pertinent VMPEND (displacement X'63') contains the interrupt pending summary flag. The value of VMPEND identifies the type of interrupt. contents The---entry point (DMKFREE or DMKFRET) The saved return address The caller's save area (unless the caller was called via BALR) The caller's base register Points to the block returned (for calls to DMKFRET) Contains the number of doublewords requested or returned VMPEND Values i'4'o'X'20' X'10' X'OS' X'02' X'Ol' !!~!!i!!g Virtual PER (Program Event Recording) interrupt pending Virtual program interrupt deferred Virtual SVC interrupt deferred Virtual pseudo page fault pending Virtual I/O interrupt pending Virtual external interrupt pending VIRTUAL AND REAL CONTROL BLOCK STATUS VMIOINT (displacement X'6A') contains the I/O interrupt pending flag. Each bit represents a channel (0-15). An interrupt pending is indicated by a 1 in the corresponding bit position. Examine the virtual and real control blocks for more information on the status of the CP syste/l. V"IOINT Values 10000000 VMBLOK The address of the VMBLOK is in general register 11. Examine the following VMBLOK fields: • 01000000 00000000 Interrupt pending on channel 0 00000000 Interrupt pending on channel 1 The virtual machine running status is contained in VMRSTAT (displacement X'SS'). The value of this field indicates the running status: 000000'00 VMRSTAT Status i'80'X'40' X' 20' X'10' X' 08' X'04' X'02' X'Ol' • !!~!!niBg ~~!!!ti:B9 Waiting, executing console function Waiting, page operation Waiting, scheduled IOBLOK start Waiting, virtual PSW wait state Waiting, instruction siaulation User not yet logged on User logging off virtual /lachine in idle wait state The virtual .machine dispatching status is contained in VMDSTAT (displace/lent X'S9'). The value of this field indicates the dispatching status: VMDSTAT Values X'80'X' 40' X'20' X '10' X'OS' X'04' ~~!!B!B9 virtual machine is dispatched RUIUSES virtual machine is compute bound virtual machine in-queue time slice end Virtual /lachine in TIO/SIO busy loop virtual machine is runable Virtual machine in a queue 00000001 Interrupt pending on channel 15 VMIOACTV (displacement X'36') is the active channel mask. An active channel is indicated by a 1 in the corresponding bit position. VCBBLOK The address of the VCBBLOK table is found in the V"CBSTRT field (displacement X'lS') of the VMBLOK. General register 6 contains the address of the active VCBBLOK. Examine the following VCBBLOK fields: • The virtual channel address is VCBADD (displace sent X' 00 ') • contained in • The status of the virtual channel is found in the VCBSTAT field (displacement X'06'). The value of this field indicates the virtual channel status: Section 1. Introduction 31 VCHSTAT Values X'80'X'40' X'01' • VDEVSTAT values !1~~!!!!!g X'80'- virtual subchannel busy Virtual channel interrupt pending X' 40' virtual device busy X'20' virtual device :interrupt pending X' 10' virtual control unit end X'OS' virtual device :not ready X' 04' Virtual device attached by console X'02' function VDEVREAL is dedicated to device X'01' RDEVBLOK tl~~!!!!!9 Virtual channel busy Virtual channel class pending virtual channel dedicated interrupt The value of the VCHTYPE field (displacement X'07') indicates the virtual channel type: VCHTYPE Values X'80'X'40' ~~~!!i!!g Virtual selector channel Virtual block multiplexer • The value of the VDEVFLAG field (displacement X'07') indicates the following device dependent information: VCUBLOK VDEVFLAG Values !1~~!!!!!g X'80'- DASD--read-only device Virtual 2701/2702/2703 device--line X'SO' enabled DASD--TDISK space allocated by CP X' 40' Virtual 2701/2702/2703 device--line X'40' connected Console--activity spooled X'40' DASD--2311 device simulated on top X' 20' half of 2314 DASD--2311 device simulated on X' 10' bottom half of 2314 Console and spooling X'10' device--processing first ccw DASD--executing standalone seek X'OS' RESERVE/RELEASE are valid CCW X'02' operation codes. Vi~tual device sense bytes present The address of the VCUBLOK table is found in the VCUSTRT field (displacement X' 1C') of the VMBLOK. General register 7 contains the address of the active VCUBLOK. Useful information is contained in the following VCUBLOK fields: • The virtual control unit address is found in the VCUADD field (displacement X'OO'). • The value of the 1'06') indicates control unit: VCUSTAT Values X'80'X '40' X'20' X'10' !1~~!!i!!g Virtual subchannel busy Interrupt pending in subchannel Virtual control unit busy Virtual control unit interrupt pending Virtual control unit end pending • The VDEVCSW field (displacement X'OS') contains the virtual channel status word for the last interrupt. The value of the VCUTYPE field (displacement X'07') indicates the type of the virtual control unit: • The VDEVREAL field (displacement contains the pointer to the real block, RDEVBLOK. VCUTYPE Values • The VDEVIOB field (displacement X'34') contains the pointer to the active IOBLOK. • For console devices, the value of the VDEVCFLG field (displacement X'26') describes the virtual console flags: X'OS' • VCUSTAT field (displacement the status of the virtual X'80'X'40' ~~~!!i!!g virtual control unit on shared subchannel Virtual control unit is a channel-to-channel adapter VDEVCFLG values !1~~!!!!!9 X'80'- User signaled attention too many times Last CCW processed was a TIC X'40' Data transfer occurred during this X'20' channel program Virtual console function in progress X' 10' Automatic carriage return on first X'OS' read VDEVBLOK The address of the VDEVBLOK table is found in the VMDVSTRT field (displacement X'20') of the VMBLOK. General register S contains the address of the active VDEVBLOK. Useful information is contained in the following VDEVBLOK fields: • • The virtual device address is found VDEVADD field (displacement X'OO'). • The value of the VDEVSTAT field (displacement X'06') describes the status of the virtual device: 3S in the X' 24') device For spooling devices, the value of the VDEVSFLG field (displacement X'27') describes the virtual spooling flags: IBM VM/370: system Logic and Problem Deteraination Guide VDEVSFLG Values li~g!!!119 i 7 8'0'Spool reader--last command was a feed X I 80 1 Spool output--transfered to VSPXXUSR I 1 X 40 Spool device--continuous operation X I 20 1 Hold output--save input 1 XI 10 Spool output--for user and distribution XI 08 1 Spool input -- set unit exc~ption at EOF XI 08 1 Terminal output required for spooled console X I 04 1 Device closed by console function XI 02 1 spool output--purge file at close XI 02 1 spool input--device opened by DIAGNOSE X 1011 Spool output--DMKVSP entered via SVC RCUBLOK The address of the first RCUBLOK is found in the ARIOCU field (displacement X 1 3B8 1) of the PSA. General register 7 points to the current RCUBLOK. Examine the following RCUBLOK fields: • The RCUADD field (displacement XIOOI) contains the real control unit address. • The value of the X1041) describes unit: RCUSTAT Values i'so'1140 1 X 20 X I Ol l I • For output spooling devices, the VDEVEITN field (displacement Xll01) contains the pointer to the virtual spool extension block, VSPXBLOK. • i'80'- The address of the first RCHBLOK is found in the ARIOCH field (displacement I13B41) of the PSA (Prefix Storage Area). General register 6 contains the address of the active RCHBLOK. Examine the following RCHBLOK fields: X Ol XI 02 1 1103 1 XI 04 1 I • • The real channel address is found in RCHADD field (displacement XIOOI). • The value of the RCHSTAT field (displacement X 1041) describes the status of the real channel. RCHSTAT Values x'SO'X 40 1 X' 20 1 X '0 l' • 1!~~ning Channel busy lOB scheduled on channel Channel disabled Channel dedicated Control unit busy lOB scheduled on control unit Control unit disabled Control unit dedicated l l1~gn!!!g This control unit can attach to only one subchannel TCU is a 2701 TCU is a 2702 TCU is a 2703 Subordinate control unit The RCUFIOB field (displacement 1108 1 ) points to the first IOBLOK in the queue and the RCULIOB field (displacement XIOCI) points to the last IOBLOK in the queue. RDEVBLOK The address of the first RDEVBLOK is found in the ARIODV field (displacement XI 3BCI) of the PSA. General register 8 points to the current RDEVBLOK. Also, the VDEVREAL field (displacement 11241) of each VDEVBLOK contains the address of the associated RDEVBLOK. Examine the following fields of the RDEVBLOK: XIOOI) The value of the RCHTYPE field (displacement X'05 1) describes the real channel type: • The RDEVADD field (displacement contains the real device address. RCHTYPE values • The values of the RDEVSTAT (displacement XI 04 1 ) and RDEVSTA2 (displacement X143 1) fields describe the status of the real device: x'SO'X 40 I 1 X 20 XI Ol l I • the 1!~g!!i!!g The value of the RCUTYPE field (displacement X105 1) describes the type of the real control unit: RCUTYPE Values RCHBLOK I 1 RCUSTAT field (displacement the status of the control 1 1!~~!!ing Selector channel Block multiplexer channel Byte mUltiplexer channel System/370 type channel (System/370 instruction support) The RCHFIOB field (displacement X108 1 ) is the pointer to the first IOBLOK in the queue and the RCHLIOB field (displacement XIOCI) is the pointer to the last IOBLOK in the queue. RDEVSTAT Values l1~g!!i!!g Device busy i7 lOB scheduled on device XI 40 1 1120 1 Device disabled (offline) II 10 1 Device reserved XI 08 1 Device in intensive error recording mode Device intervention required XI 04 1 11021 GRAF IOBLOK pending; queue requests I l Dedicated device (attached X Ol to a user) so'- Section 1. Introduction 39 RDEVSTA2 Values !15H!!!!!!g X'80'- Active device is being reset Device is busy with the channel X'40' Contingent connection present X'20' • The value of the RDEVFLAG field (displacement X'05') indicates device flags. The following flags are device dependent. RDEVFLAG Values ~t~~!!!!!g 1'80'- DASD--ascending order seek que?eing DASD--volume preferred for pag1ng X'40' DASD--volume attached to system X'20' DASD--CP owned volume X'10' DASD--volume mounted but not X'OS' attached Console--terainal has print suppress X'SO· feature Console--terminal executing prepare X'40' command Console--IOBLOK pendingi queue X'20' request Console--2741 terminal code X' 10' identified Console--device is enabled X'OS' Console--next interrupt from a halt X'04' I/O Console--device is to be disabled X '02' Consolp.--3704/3705 NCP resource in X' 0 l' EP mode Spooling--device output drained X'SO' Spooling--device output terminated X' 40' Spooling--device busy with X'20' accounting Spooling--force printer to single X '10' space Spooling--restart current file X'OS' Spooling--backspace the current file X' 04' Spooling--print/punch job separator X'02' Spooling--UCS buffer verified X' 0 l' Special--network control program is X'SO' active Special--2701/2702/2703 emulation X'40' program is active Special--3704/3705 is in buffer X'20' slowdown mode Special--automatic dump/load is X '10' enabled Special--IOBLOK is pendingi queue X'OS' requests Special--emulator lines are in use x'04' by system Special--automatic dump/load process X'02' is active Special--basic terminal unit trace X' 01' requested • The RDEVIOER field (displacement X'48') contains the address of the IOERBLOK for the last CP error. • For spooling unit record devices, the RDEVSPL field (displacement X'lS') points to the active RSPLCTL block. • For real 3704/3705 Communications Controllers, several pointer fields are defined. The RDEVEPDV field ~isplacement X'lC') points to the .start of the f:ree RDEVBLOK list fer EP lines. The RDEVNICL field (displace.ent X'38') points to the network control list and the RDEVCKPT field (displacement X'3C') points to the CKPBLOK. Also, the RDEV"AX field (displacement X'2E') is the highest valid NCP resource name and the RDEVNCP field (displacement X'30') is the reference name of the active 3705 RCP. • For terminal devices, additional flags are defined. The value of the RDEVTFLG field (displacement r'3A') describes the additional flags: RDEVTFLG Values l1~!!J!!!!g X'80'- Terminal--logon process has been initiated Terminal--terminal in reset process X'40' Terminal--suppress attention Signal X'20' Graphic--logon process initiated x'so' Graphic--screen full, more data X' 40' waiting Graphic--screen in running status X'20' Graphic--read pending for screen X' 10' input Graphic--last input not accepted X'OS' Graphic--timer request pending X' 04' Graphic--control function X'02' interruption pending Screen full, hold status X'Ol' • For terminals, an additional flag is defined. The value of the RDEVTMCD field (displacement X'46') describes the line code translation to be used: RDEVTMCD Values !1~g!!!!!g 1'10·- UASCII--S level APL correspondence x'oC' APL PTTC/EBCD x' os' Correspondence X'04' PTTC/EBCD x' 00' IDENTIFYING A PAGEABLE MODULE The value of the RDEVTYPC field (displacement X'06') describes the device type class and the value of the RDEVTYPE field (displacement X'07') describes the device type. • The RDEVAIOE field (displacement X' 24' ) contains the address of the active IOBLOK. • The RDEVUSER field (displacement X' 2S') points to the VMBLOK for a dedicated user. The RDEVATT field (displacement X'2C') contains the attached virtual address. 40 If a program check PSi or SVC PSi points to an address beyond the end of the CP resident nucleus, the failing module is a pageable module. The CP system load map indicates where the end of the resident nucleus is located. Go to the address indicated in the PSi. Backtrack to the beginning of that page frame. The first eight bytes of that page frame (the page frame containing the address pointed to by the PSi) contain the name of the failing module. If multiple modules exist within the IBM VM/370: System Logic and Problem Determination Guide same page frame, identify the module using the load map and failing address displacement within the page frame. When CMS abnormally terminates, the terminal operator must issue the DEBUG command and then the DUMP subcommand if an ABEND dump is desired. The DUMP formats and prints the following: • • • • General registers Extended control registers Floating-point registers storage boundaries with their storage protect key Current PSW selected storage • • corresponding storage is printed in hexadecimal, eight words to the line with EBCDIC translation at the right. The hexadecimal storage address corresponding to the first byte of each line is printed at the left. When CMS can no longer continue, it abnormally terminates. You must first determine the condition that caused the ABEND and then find why the condition occurred. In order to find the cause of a CMS problem, you must be familiar with the structure and functions of CMS. The discussion ab6ut reading'CMs dumps refers to several CMS control blocks and fields in the control blocks. Refer to the !~L37~: &g~g !I~g2 g~g £g~!~gl ~lg£! 199i£ for a description of each CMS control block. Figure 13 shows the relationships of CMS control blocks. You also need a current CMS nucleus load map to analyze the dump. 3. Examine the external old PSW (EXTOPSW) at location X'lS'. If the virtual machine operator terminated CMS, this PSW points to the instruction executing when the termination request was recognized. 4. For a machine check, examine the machine check old PSW (MCKOPSW) at location X'30'. COLLBCT INFORMATION Bxamine several other fields in NUCOH to analyze the status of the CMS system. As you proceed with the dump, you may return to NUCON to find pointers to specific areas (such as pointers to file tables) or to examine other status fields. The complete contents of NUCON and the other CMS control blocks are described in the !J!ilZQ: !2atg !~~g2 ~n~ £Qn~~Q! §!Q£! Logi£. The following areas of NUCON may contain useful debugging information. NUCON ARBAS • Save Area For Lov storage. Before executing, DEBUG saves the first 160 bytes of low storage in a NUCON field called LOWSAVE. LOiSAVE begins at X'CO'. • Register Save Area. DMSABN, the ABEND routine, saves the user's floating-point and general registers. Contents Userts~loating-point registers User's general registers User's extended control registers Field FPRiOG REASON FOR THE ABEND Determine the immediate reason for the ABEND and identify the failing module. The ABEND message DMSABN14ST contains an ABBND code and failing address. "CMS ABEND Codes" in Section 3 lists all the CMS ABBND codes, identifies the module that caused the module to abnormally terminate, and describes the action that should be taken whenever CMS abnormally terminates. • GPRLOG X'lS0' ECRLOG X 'lCO' Device. The name of the device causing the last I/O interrupt is in the DEVICE field at X'26C'. • Last Two Commands or Procedures Executed. You may have to examine several fields in the nucleus constant area (NUCON) of low storage. 1. 2. Examine the program old PSW (PGMOPSW) at location X'2S'. Using the PSW and current CMS load map, determine the failing address. Examine the SVC location X'20'. old PSW (SVCOPS~ at £g~!~J!!2 PRBVCMND X'2AS' LASTEXBC X'2BO' PREVEXEC X'2BS' Last CMS command issued Next to last CMS command issued Last EXEC procedure invoked Next to last EXEC procedure invoked Section 1. Introduction 41 DMSNUC USERSECT SUBSECT OPSECT SYSREF DMSABW CMSCB DMSFRT DMSERT DBGSECT (Debug work areal fields are filled in FVS DCB DIOSECT DECB SVCSECT PGMSECT IOSECT EXTSECT AFTSECT (Create when the file is opened. There is room for 5 AFTs in DMSNUC, others are in free storage. ADTSECT (Space is allocated when DMSNUC is assembled, fields are filled in when ACCESS command is issued. There is one ADT entry for each of the 10 possible disks.) DEVTAB BB NUCON Figure 13. • CMS Control Blocks Last Module Loaded Into Transient Area. Pree storage and The name of the last module loaded into free storage via a LOADMOD is in the field LASTLMOD (location X'2CO'). The name of the last module loaded into the transient area via a LOADMOD is in the field LASTTMOD (location X'2C8'). a simulated job file control block (JPCB), a simulated data event block (DEB), and the first in a chain of I/O blocks (lOBs). • The Last Command. The last command entered from the terminal is stored in an area called CMIDLIRE (X'7AOI), and its corresponding PLIST is stored at CMRDLIST (X'848 1 ) • • Pointer to CMSCB. • The pointer to the CMSCB is in the PCBTAB field located at XI 5CO'. CMSCB contains the simulated as control blocks. These simulated os control blocks are in free storage. The CMSCB contains a PLIST for CMS I/O functions, 42 External Interrupt Work Area. EXTSECT (X'1550') is a work area for external interrupt handler. It contains: IBM VM/370: system Logic and Problem Determination Guide the The PSW, EXTPSW (X'lSFS') Register save areas, EXSAVE1 (X'15BS') separate area for timer interrupts, EXSA VE (X '1550') • NUCLEUS LOAD MAP I/O Interrupt Work Area. IOSECT (X'1620') is a work area for the I/O interrupt handler. The oldest and newest PSW and CSW are saved. Also, there is a register save area. • Each time the CMS resident nucleus is loaded on a DASD, and an IPL can be performed on that DASD, a load map is produced. Save this load map. It lists the virtual storage locations of nucleus-resident routines and work areas. Transient modules are not inclUded in this load map. When debugging CMS, you can locate routines using this map. The load map may be saved as a disk file and at any time. A copy of the nucleus load map 1S contained on the system with the file identification of 'filename NUCMAP'. Issue the prin~ed Program Check Interrupt Work Area. PGMSECT (X'16BO') is a work area for the program check interrupt handler. The old PSW and the address of register 13 save area are stored in PGMSECT. LISTF * NUCMAPS command to determine the filename. • Then issue SVC Work Area. PRINT filename NUCMAP SVCSECT (X'174S') is a work area for the interrupt handler. It also contains first four register save areas assigned. SFLAG (X'175S') indicates the mode of called routine. The values have following meanings: f!2.9 X'80' X'40' X'20' X' 0 l' SVC the The the the to obtain map. SVC protect key is zero Transient area routine Nucleus routine Invalid re-entry flag current nucleus load Figure 14 shows a sample CMS load map. Notice that the debug work area (DBGSECT) and the DMSINM module have been located. LOAD MAP is located • Simulated CVT (Com.unications Vector Table). The CVT, as supported by (X'lCCS'). Only the fields are filled in. CMS, is CVTSECT supported by CMS The load map of a disk-resident command module contains the location of control sections and entry points loaded into storage. It may also contain certain messages and card images of any invalid cards or it may replace cards that exist in the loaded files. The load map is contained in the third record of the MODULE file. This load map is useful in debugging. When using the debug environment to analyze a program, use the program's load map to help in displaying information. There are two ways to get a load map: • Active Device Table and Active File Table. For file system problems, examine the ADT (Active Device Table), or AFT (Active File Table) in NUCON. 1. When loading relocatable object code into storage, make sure that the MAP option is in effect when the LOAD command is issued. Because MAP is the default option, be sure that NOMAP is not specified. A load map is then created on the primary disk each time a LOAD com.and is issued. 2. When generating the absolute image form of files already loaded into storage, make sure that the MAP option is in effect when the GENMOD command is issued. Because MAP is the default option, be sure that NOMAP is not specified. Issue the MODMAP command to type the load map associated with the specified MODULE file on the terminal. The format of the MODMAP command is: REGISTEEt USAGE To trace control blccks and important to know the CMS conventions. modules, it is register usage !!~gi§!5E! Contents GR14 GR15 of the !!5E§£Iil!:!:i2!l Also, the SVC ABEND code, SVCAB, at X'175A'. GRl GR12 GR13 a copy Address-of the PLIST Program's entry point Address of a 12-doubleword work area for an SVC call Return address Progra. entry point or the return code The preceding infor.ation should help you to read a eMS dump. with a dump, the control block diagra.s, and a CMS load .ap you should be able to find the cause of the ABEND. r-----------------------------------------, I filename I I MODmap I -_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ._J !!!5EI5E: filename is the module whose map is to be displayed. The filetype must be MODULE. Section 1. Introduction 43 FILE: lOAD CMSMAP INVALID CARD ••• :READ * * * *000000 DMSNUC AT D8SNUCU AT 002800 AT 000000 NUCON SYSREF AT 000600 AT 000274 PEIBM CMNDlINE AT 0007AO SOBFlAG AT 0005E9 IADT AT 000644 DEVICE AT 00026C AT 000C90 DEVTAB CONSOLE AT 000C90 ADISK AT OOOCAO DDISK AT OOOCDO SDISK AT 000D10 YDISK AT 000D20 TABEND AT OOODFO ADTSECT AT OOODFO AFTSTART AT 001200 EXTSECT AT 001500 EXTPSW AT 0015A8 AT 0015DO IOSECT IONTABl AT 001610 PGMSECT AT 001660 AT 001668 PIE SVCSECT AT 0016F8 DIOSECT AT 001998 FVS AT 001A88 ADTFVS AT 001B48 KXFlAG AT 001C2F UFDBUSY AT 001C2E CMSCVT AT 001C80 DBGSECT....... AT 001D£HJ DMSERT AT 002098 DMSPRT AT 002208 DMSABW AT 002258 OPSECT AT 002800 DMSERl AT 002935 TSOBlKS AT 0029BO SOBSECT AT 002A40 OSERSBCT AT 002AD8 INVALID CARD ••• :READ ABBREV AT 003000 OSABRV AT 0030DO INVALID CARD ••• :READ CMSTIMER AT 003200 AT 003200 GETClK DMSINM ......... AT 003200 INVALID CARD ••• :READ AT 003308 TAPEIO DMSTIO AT 003308 Figure 14. 44 CONVERSATIONAL MONITOR SYSTEM C DMSNOC OPlIB CMSlIB OSMACRO DMSNOC TEXT MAClIB MAClIB MAClIB ASSEMBLE C1 D1 D1 Y2 C1 CMS191 CMS191 CMS191 CMS19E SOURCE 9:01 9/21/72 9/21/72 8:47 9/21/72 8:44 7/19/72 18:11 9/18/72 23:09 DMSINA TEXT C1 C8S191 9/19/72 15:37 DMSINM TEXT C1 CMS191 9/18/72 20:36 DMSTIO TEXT C1 CMS191 9/19/72 10:33 Sample eM S Load Map IBM VM/370: System Logic and Problem Determination Guide a segment table that references a set and swap tables that describe CP's storage space. of page virtual The VM/370 Control Program (CP) manages the resources of a System/370 to provide virtual storage support by using virtual machines. with this support each terminal user appears to have the complete function of a dedicated System/370 at his disposal r even though many other users may be running batch r teleprocessing r time-sharing r testing r or production jobs at the same time. The virtual space is divided into 2 parts; the first part (4 segments (256K» is reserved for executable CP code, both resident and pageable; the second part (the remaining storage of at least 256K) is dynamically allocated for spooling buffers and for user directory functions. For a routine to be pageable, a number of restrictions must be observed. A user defines the configuration he requires input/output (I/O) device addresses r and a storage size up to 16 million bytes regardless of whether they match the real machine's configuration. virtual devices must have real counterparts r but not always in a one-for-one ratio. For example r many users' readers r punches r and printers can be mapped onto common spool disks r and their virtual disk devices may be mapped as minidisks onto different sections of common disk packsr effectively multiplying the number of logical disk devices that are available on the real machine. When the system is loaded, resolved, and written onto the system residence volume, pagable modules must be loaded at addresses higher in main storage than the symbol DftKCPEND, which defines the last byte of the resident CP nucleus. This is done by reordering the LOAD-LIST EXEC that the VftFLOAD procedure uses when punching out the text decks that comprise the Any pageable modules are listed after the entry for DftKCPE. In addition, the set page boundary (SPB) loader control card must precede each pageable module. This SPB card forces the loader to start loading the succeeding module at the next higher 4k page boundary and ensures that the entire module is resident when it is paged in. Each user's virtual machine comprises: • An operator's console (his terminal device) local or remote • A virtual CPU either storage addressing. • Virtual storage of up to 16 million bytes • Virtual I/O devices with or without virtual !!.Q'!~: If an operating system that manages virtual storage is running in the virtual machine r the CPU must have extended control (EC) mode. virtual I/O devices are controlled by the virtual machine's operating system r not by CPo Thus r for proper operation, the support for the correct number and type of I/O devices must be provided by the operating system of the virtual machine. CP moriitors, translates r and schedules all real I/C operations to provide system integrity. It executes all virtual machine operations in a problem state by trapping r screening r and processing all the interrupts, and passing on the necessary information to the appropriate virtual machine. Only CP executes in the privileged state. To increase the amount of real main storage available to the user's virtual machine r parts of CP that are infrequently used are not resident in main storage. Instead r they reside on part of the auxiliary paging storage used by the system r and are brought into main storage only when they are required. Because CP nonresident modules are paged into main storage, CP also occupies virtual storage space. The system VftBLOK, assembled into the resident control program in the module DftKSYS r defines this space. The VftBLOK has a pointer to If several pageable modules perform similar or related functions and if they are likely to be resident at the same time, they may be included in the same page by omitting the SPB cards that would normally have preceded the second and subsequent modules. The group of modules to be loaded together must not exceed 4K as their total storage requirement; if they do, one or more must be loaded in separate pages, because no page boundary crossover in the pageable part of the control program is allowed. All currently pageable CP modules punch their own SPB card via an assembler PUNCH statement, except those that are designed to reside in a page along with other modules. CP INITIALIZATION System initialization (IPL) prepares Vft/370 for operation. IPL performs the following tasks: • Initializes main storage • ftounts devices • Reads spool file checkpoint records, on a warm start from the warm start cylinder; reads spool file checkpoint records on a checkpoint or force start, from the checkpoint cylinders. • Allocates space for the system dump file • Logs on the system operator In the case of a system restart that follows a failure, active files and the system log message are written on the warm start cylinder before the CP nucleus can be brought into main storage. The user can now log on. section 1. Introduction 45 VIRTUAL MACHINE MANAGEMENT A virtual machine is created for a user when he logs on VM/370, on the basis of information stored in his directory entry. The entry for each user identification includes a list of the virtual I/O devices associated with his virtual machine and the real device equivalents. The directory file contains additional information about the virtual machine. Included are the VM/370 command privilege classes for the user, accounting data, normal and maximum virtual storage sizes, and optional virtual machine characteristics such as extended control mode. CP supervises virtual machine execution by (1) permitting only problem state execution except in its own routines, and (2) receiving control after all interruptions occur on the real system. CP intercepts each privileged instruction and simulates it if the current PSi of the issuing virtual machine indicates a virtual supervisor state. If the virtual machine is running in the problem state, an attempt to execute a privileged instruction is reflected back to the virtual machine as a program interruption. All virtual machine interruptions (including those caused by attempting privileged instructions) are first handled by CP, and are reflected to the virtual machine if an equivalent interruption would have occured on the real machine. The real CPU uses time-slicing to simulate mUltiple virtual CPUs. Virtual machines executing in a conversational mode are given access to the real CPU more frequently than those that are not; these conversational machines are assigned the smaller of two possible time slices. CP determines execution characteristics of a virtual machine at the end of each time slice on the basis of the recent frequency of its console requests or terminal interruptions. The virtual machine is queued for subsequent CPU usage according to whether it is a conversational or nonconversational user of system resources. A virtual machine can gain control of the CPU only if it is not waiting for some activity or resource. The virtual machine itself may enter a virtual wait state after an I/O operation has begun. The virtual machine cannot gain control of the real CPU if it is waiting for a page of storage, an I/O operation to be translated and started, or a CP command to finish execution. A virtual machine can be assigned a priority of execution. Priority is a parameter affecting the execution privilege of a particular virtual machine in comparison to other virtual machines that have the same general execution characteristics. priority may be assigned by the real machine operator, but is more frequently determined by the virtual machine's directory entry. 46 The normal and maximum storage sizes of a virtual machine are defined in the virtual machine configuration in the VM/370 directory. The virtual storage size can be temporarily redefined to any value that is a multiple of 4K and not greater than the value stated as the maximum allowable in the directory. VM/370 uses this storage as virtual storage. The storage can appear as paged or nonpaged to the virtual machine, depending upon whether the extended control (EC) mode option was specified for that virtual machine. EC mode is required if operating systems that control virtual storage, such as OS/VS1 or VM/370, are to be run in the virtual machine. storage in the virtual machine is logically divided into 4096 byte areas called pages. A complete set of segment and page tables describe the storage of each virtual machine. These tables are maintained by CP and reflect the allocation of virtual storage pages to blocks of real storage. The System/370 machine uses these tables to address virtual storage. Storage in the real machine is logically and physically divided into 4096 byte areas called page frames or blocks. Only referenced virtual storage pages are kept in real storage and, therefore, use real storage more efficiently. A page can be brought into any available page frame; the necessary relocation is done during program execution by a combination of VM/370 software and the dynamic address translation hardware of the System/370. The active pages from all logged-on virtual machines and from the pageable routines of CP compete for available page frames. ihen the number of page frames available for allocation falls below a threshold value, CP determines which virtual storage pages currently allocated to real storage are relatively inactive and starts suitable operations to write them out on a paging device (paging out). Inactive pages are maintained on a direct access storage device. If an inactive page has been changed at some time during virtual machine execution, CP assigns it to a paging device, selecting the fastest such device with available space. If the page has not changed, it remains allocated in its original direct access location and is written into real storage from there the next time the virtual machine references that page. A virtual machine program can use the DIAGNOSE instruction to inform CP that the information from specific pages of virtual storage is no longer needed. CP then releases the areas of the paging devices that had been assigned to hold the specified pages. Paging is done on demand by CPo This means that a page of virtual storage is not read from the paging device and written to a real storage block until it is needed for virtual machine execution. No attempt is made by CP to anticipate what pages might be required by a virtual machine. While a paging operation is being performed for one virtual machine, another virtual machine can be executing. Any paging operation started by CP is transparent to the virtual machine. IBM VM/370: System Logic and Problem Determination Guide If the virtual machine is executing in EC mode with translate on, two additional sets of segment and page tables are maintained. The virtual machine operating systea is responsible for the equivalency of the virtual storage created by it to the virtual storage of the virtual machine. CP uses this set of tables in conjunction with the page and segment tables created for the virtual machine at logon time to build shadow page tables for the virtual machine. These shadow tables map the virtual storage created by the virtual aachine operating system to the storage of the real computing system. The tables created by the virtual machine operating system may describe any page and segment size permissible in the IBM System/370. The system operator can assign the reserved page frames option to a single virtual machine This option, specified by the SET RESERVE command, assigns a specific amount of the storage of the real machine to the virtual machine. CP dynamically builds a set of reserved real storage page frames for this virtual machine during its execution until the maximum number "reserved" has been reached. Because other virtual machines' pages are not allocated from this reserved set, the most active pages of the selected virtual machine remain in real storage. During the process of CP system generation, the installation may specify that a single virtual machine is to be given an option called virtual=real. With this option, the virtual machine's storage is allocated directly from real storage at the time CP is initially loaded, and remains allocated until released by an operator command. All pages except page zero are allocated to the corresponding real storage locations. To control the real computing system, real page zero must be controlled by CPo Consequently, the real storage size must be large enough to accommodate the CP nucleus, the entire virtual=real virtual Ilachine, and the rema1n1ng pageable storage requirements of CP and the other virtual machines. The virtual=real option improves performance in the selected virtual machine because it removes the need for CP to perform paging operations for the selected virtual machine. The virtual=real option is necessary whenever programs that contain dynamically modified channel programs (excepting those of OS ISAM) are to execute under control of CPo A real disk device can be shared among multiple virtual machines. virtual device sharing is specified in the directory entry or by a user command. If sharing is requested by a user command, an appropriate password must be supplied before gaining access to the virtual device. A particular virtual machine can be assigned read-only or read/write access to a shared disk device. CP verifies each virtual machine I/O operation against the parameters in the virtual machine configuration to ensure device integrity. The virtual machine operating systea is responsible for the operation of all virtual devices associated with it. These virtual devices may be defined in the directory entry of the virtual machine, or they may be attached to (or detached from) the virtual machine's configuration while it remains logged on. virtual devices aay be dedicated, as when mapped to a fully equivalent real device; shared, as when mapped to a ainidisk or when specified as a shared virtual device; or spooled by CP to interaediate direct access storage. In a real machine running under control of OS, I/O operations are normally initiated when a problem program requests OS to issue a START I/O instruction to a specific device. Device error recovery is handled by the operating systea. In a virtual machine, OS can perform these same functions~ but the device address specified and the storage locations referenced are both virtual. It is the responsibility of CP to translate the virtual specifications to real. In addition, the interruptions caused by the I/O operation are reflected to the virtual machine for its interpretation and processing. If I/O errors occur, CP records them but does not initiate error recovery operations. These are the responsibility of the virtual machine operating system. I/O operations started by CP for its own purposes (paging and spooling), are performed directly and are not subject to translation. SPOOLING A virtual unit record device, which is mapped directly to a real unit record device, is dedicated. The real device is then controlled completely by ihe virtual machine's operating system. CP facilities allow multiple virtual machines to share unit record devices. Because virtual machines controlled by CMS ordinarily have modest requirements for unit record I/O, such device sharing is quite advantageous, and it is the standard mode of system operation. Spooling operations stop if the direct access storage space assigned to spooling is eXhausted, and the virtual unit record devices are in a not ready status. The system operator can make additional spooling space available by purging existing spool files or by assigning additional direct access storage space to the spooling function. specific files can be transferred from the spooled card punch or printer of a virtual machine to the card reader of the same or another virtual machine. Files transferred between virtual unit record devices by the spooling routines are not physically punched or printed. With this method, files can be made available to multiple virtual machines, or to different operating systems executing at different times in the same virtual machine. section 1. Introduction 47 CP spooling includes many desirable options for the virtual machine user and the real machine operator. These options include printing multiple copies of a single spool file, backspacing any number of printer pages, and defining spool classes for scheduling real output. The Remote Spooling Communications Subsystem (RSCS), a component of VM/370, provides support for the automatic transfer of spool files generated by VM/370 virtual machines to remote locations. It also supports the transmission of files from remote locations to virtual users. RSCS uses VM/370 to: • • the CP spooling facilities of Gain access to files spooled to RSCS by transmission to remote VM/370 users for locations. Transfer files, received locations, to the intended machines. This support is fully from VM/370 described in remote virtual the !~~ !~L]lQ: B~£~ ~§~~~§ §~!g~. such as assigning a set of reserved page frames to a selected virtual machine. PROGRAM STATES When instructions in CP are being executed, the real computer is in the supervisor state; at all other times, when running virtual machines, it is in the problem state. Therefore, privileged instructions can only be executed by CPo Programs running on a virtual computer can issue privileged instructions; such an instruction causes an interruption that is handled by CPo CP examines the operating status of the virtual machine PSW. If the virtual machine indicates that it is functioning in supervisor mode, then the privileged instruction is simulated according to its type. If the virtual machine is in problem mode, then the privileged interrupt is reflected to the virtual machine. Only CP may operate in the supervisor state on the real machine. All programs other than CP operate in the problem state on the real machine. All user interruptions, including those caused by attempted privileged operations, are handled by CP, which then reflects to the user program only those interruptions that the user program would expect from a real machine. A problem program executes on the virtual machine in a manner identical to its execution on a real System/370 CPU, as long as it does not violate the CP restrictions. CONSOLE FUNCTIONS The CP console functions allow the user to control the virtual machine from the terminal, much as an operator controls a real machine. virtual machine execution can be stopped at any time by the terminal's attention key; it can be restarted by typing in the appropriate CP command. External, attention, and device ready interruptions can be simulated on the virtual machine. Virtual storage, virtual machine registers, the PSW and CSW can be inspected and modified. Extensive trace facilities are provided for the virtual machine, as well as a single-instruction mode. Commands control the spooling and disk sharing functions of CPo Console functions are divided into privilege classes. The directory entry for each user assigns one or more privilege classes. The classes are: • • • Primary system operator system resource operator System programmer Spooling operator Systems analyst IBM field engineer or PSR General user Commands in the system analyst class can inspect real storage lecations, but they cannot make modifications to real storage. Commands in the operator class control real resources. system operator commands include all those relating to virtual machine performance options, 48 PREFERRED VIRTUAL MACHINE CP supports four special virtual machine operating environment functions. Each function can be applied to one virtual machine at a time. Although each function could be applied to a different virtual machine, optimum performance would not be achieved. Each function is discussed separately following. CP attempts to provide up to a specified percentage of CPU time to a particular virtual machine, provided that the virtual machine is functioning in a way that fully utilizes CPU time. At regular time intervals the CP dispatcher checks the CPU time used by the particular virtual machine. If the specified percentage is exceeded, the machine becomes the lowest priority user in the system. If the percentage used is lower than that specified, the virtual machine has highest priority execution for the remainder of the interval. The percentage of CPU time assured is specified in the privileged class command that invokes the function. CP can also assure that a designated user is never dropped from the active (in queue) subset by the scheduler. When the user is runnable, he IBM VM/370: system Logic and Problem Determination Guide is placed in the dispatchable list at his normal priority. CP uses chained lists of table entries for available and pageable pages. Pages for users are assigned from the available list which is replenished from the pageable list. Pages that are temporarily locked in real storage are not available or pageable. Paging proceeds using demand paging with a "reference bit" algorithm to select the best page for swapping. The reserved page frames option gives a particular virtual machine an essentially "private" set of pages. The pages are not locked, that is, they can be swapped, but usually only for the specified virtual machine. The number of reserved pages for the virtual machine are specified as a maximum. The page selection routine selects an available page for a reserved user and marks that page reserved if the maximum specified for the user has not been reached. If an available, unreferenced reserved page is encountered during page replenishment for the reserved user, it is used whether or not the maximum h~s been reached. If the page selection routine cannot locate an available page for other users because they are all reserved, the routine may steal the reserved pages. This feature requires that the CP nucleus be reorganized to provide a "hole" in real storage large enough to contain the entire storage area of the virtual machine. For the virtual machine, each page from page one to the last page (n) is in its true real storage location; only page zero is relocated. The virtual machine runs in relocate mode, but because the virtual page address is the same as the real page address, 'no CCi translation is required for the virtual machine. Because no CCi translation is performed, no check is made of the I/O data addresses. The virtual machine must ensure that no I/O data transfer is specified into page zero or into any page not in the virtual machine's domain. There are several considerations for the virtual=real option of preferred machine support that affect overall system operation: be a high availability, high throughput machine. The virtual=real storage can be released by the operator. That storage is then available for paging. Once virtual=real storage space is released by the operator, a VM/310 IPL is necessary to reallocate that storage to that virtual=real machine. • The virtual machine with the virtual=real option operates in the pre-allocated storage area with normal CCi translation in effect until the execution of the SET NOTRAIS ON command. At that time, all subsequent I/O operations are performed from the virtual CCis in the virtual=real space without translation. In this mode, the virtual machine must not perform I/O operations into page zero nor beyond its addressable limit. Violation of this requirement may cause destruction of the VM/310 system and/or other virtual machines. • If the virtual=real machine performs a virtual. reset or IPL, the normal CCi translation is performed until the issuance of the SET NOTRANS ON command. Only the virtual=real virtual machine can issue the command. A message is issued if normal translation mode is entered. The virtual machine assist feature is available with system/310 Models 135, 145, and 158 and as an RPQ on the Syste./310 Model 168. It improves the performance of VM/310. It intercepts and handles interruptions caused by svcs, invalid page conditions and the following privileged instructions: LRl STCTL RRB ISK SSK IPK STNSH STOSM SSM LPSi SPKA (load real address) (store control) (reset reference bit) (insert storage key) (set storage key) (insert PSi key) (store then and system mask) (store then or system mask) (set system mask) (load PSi) (set PSi key from address) Although virtual machine assist feature is designed te improve the performance of VM/310, the virtual machines that do not have virtual machine assist feature available may see a performance improvement because the virtual machines with virtual machine assist feature are using less of the system resources leaving more resources available for the other users. • The area of contiguous storage built for the virtual=real machine must be large enough to contain the entire addressing space of that machine. !!EIYA1 • While allocated as such, the storage reserved for the virtual=real machine can be used only by a virtual machine with that option. It is not available to other users for paging space nor for VM/310 usage, even when the virtual=real machine is net logged on. For this reason, the virtual=real machine should -0- ~Afn!!~ £Q!IBQb: Real control register 6 (see Bote 1) and a MICBLOK control virtual machine assist feature. The MICBLOK is a list of pointers to areas within V8/310 control blocks. The control register 6 format follows: Bit ~~2!l!~19 1=virtual machine assist feature on for this virtual machine O=virtual machine assist feature disabled (VM/310 mode) section 1. Introduction 49 -,Bit ~~!!!!!!!g INTERACTION WITH PROGRAM l=Virtual machine is in problem state O=Virtual machine is in supervisor state (see Note 2) 2 l=ISK and SSK not handled by virtual machine assist feature O=ISK and SSK handled by virtual machine assist feature 3 1=360 operations and 370 non-DAT operations only 0=370 DAT operations allowed (see Note 3) 4 l=SVC interruptions not handled by virtual machine assist feature O=SVC interruptions handled by virtual machine assist feature 5 l=Shadow table mode: Shadow page fixup done by virtual machine assist feature O=Shadow Table fixup not allowed 6 Reserved (must be zero) 7 Reserved (must be zero) 8-28 Real address of list 29-31 Unused (must be zero) Notes: -l~--control register 6 is loaded before virtual machine is dispatched. Bit 1 of control register 6 may be changed by virtual machine assist feature during a virtual machine status change~ 3. Bit 3 affects instructions that only a virtual machine with the EC option may execute. Specifically, they are: LRA, RRB, IPK, STNSM, STOSM, and SPKA. Bit 3 also affects STCTL even though it can be executed by a virtual machine without the EC option. virtual machine assist feature uses the list of pointers, or MICBLOK, to access virtual machine control information. The list must start on a doubleword boundary. A MICBLOK is obtained for each user when he logs on. The entries in this list are as follows: • Pointer to the real address of PSi currently in effect. • Pointer to the 64 byte workspace area reserved for virtual machine assist feature. 50 !!:!fl ~Q~ ~~Y1!:!QB: On machines with both virtual machine assist feature and the DOS Emulation feature installed, local execution (LEX) mode inactivates virtual machine assist feature; privileged instruction interruptions and SVC interruptions occur according to DOS emulation architecture. When the machine is not in LEX mode, the machine performs as described for virtual machine assist feature. !!!:!~~!£:!!Q!! ~~§!~!£!~~ y~~ OF VIRTUAL MACHINE ASSIST l~A:!Y~~: Certain Interruptions mu~t--be handled by VM/370. Consequently, the virtual machine assist feature is not on in a virtual machine if the machine has instruction address stop set on. VM/370 turns SVC handling off when instruction address stop is set on, and turns it back on after the stop occurs. V"/VS HANDSHAKING Pointer to the control register address Privileged instruction interruptions resulting from the virtual instructions may show a PER event for instruction fetching, just as they would without the feature. Real SVC interruptions may be followed by a program interruption for an instruction fetch PER event. length, page • real For virtual SVC interruption, PER monitoring specified in the current real PSW, current virtual PSi, or new virtual PSW causes a real SVC interrupt, regardless of the values specified in real or virtual control registers 9,10, and 11. For virtual LPSW, similar conditions result in a real privileged instruction interruption. each 2. o. (g~~): machine assist feature except SVC and LPSW, PER monitoring events are indicated normally as if the instructions were being executed in supervisor state. Changes made to the virtual PSW or swap table entries in VM/370 real storage are indicated as storage alteration events, because those locations are considered to be internal registers to the virtual machine. A virtual instruction that attempts to change the state of the virtual PSW PER mask causes a privileged instruction interruption, and the instruction is suppressed. PER monitoring specified in the real PSW causes the VM/370 page invalid interruption to be inactive. virtual machine pointer Real segment table pointer and size, and segment size. ~!l;!!:! R~£Q!Ul!!!§ i~~-~II--ris~~i~tI~i~-li virtual of virtual the virtual The V"/VS Handshaking feature provides a communication path between CP and a virtual machine operating system (OS/VS1) that makes each system control program aware of certain capabilities or requirements of the other. V"/VS Handshaking performs the following functions: • Closes CP spool files when the vsl job output from its DSO, terminator, and output writer is complete • Processes VS1 pseudo page faults IB" V"/370: System Logic and Problem Determination Guide • Provides an optional nonpaging .ode for VS1 when it is run in the VM/310 environment When a VS1 virtual machine with the handshaking feature is loaded (via IPL), its initialization routines determine whether the handshaking feature should be enabled. First, VS1 determines if it is running under the control of VM/310 by issuing a STIDP (store Processor ID) instruction. STIDP returns a version codei a version code of X'FF' indicates VS1 is running with V"/310. If VS1 finds a version code of X'FF', it then issues a DIAGNOSE (X' 00' ) instruction to store the V"/310 extended-identification code. If an extended-identification code is returned to VS1, VS1 knows that V"/310 supports handshakingi if nothing is returned to VS1, VM/310 does not support handshaking. At this time or any time after IPL, the operator of the VS1 virtual machine can issue the CP SET PAGE X ON command to enable the pseudo page fault handling portion of handshaking. If the VS1 virtual machine is in the nonpaging mode and, if the pseudo page fault handling is active, full handshaking support is available. Because the VS1 system does no paging, any ISAM programs run under VS 1 are treated by though they are running in an V"/310 as ADDRSPC=REAL partition. Therefore, the ISA" option is required for the VS1 machine to successfully execute the ISAM program. When a page fault occurs for a VS1 virtual machine, VM/310 checks that the pseudo page fault portion of handshaking is active and that the VS1 virtual machine is in EC .ode and enabled for I/O interruptions. Then, VM/370 reflects the page fault to VS1 by: • Storing the virtual machine address that caused the page fault at location X'90' (the translation exception address) • Indicating a program code X' 14') to VS 1 • Removing the VS1 virtual wait and execution wait interruption (interrupt .achine fro. When VS1 recognizes program interruption code X'14', it places the associated task in wait state. VS1 can then dispatch other tasks. When the requested page becomes available in real storage, VM/370 indicates the same progra. interruption to VS1, except the high order bit in the translation exception address field is set on to indicate completion. VS1 removes the task from page wait; the task is then eligible to be dispatched. When Vs1 runs under the control of executes in nonpaging mode if: If the handshaking feature is active, VS1 closes the CP spool files when its job output from the DSO, terminator, and output writer is complete. Once the spool files are closed, VM/310 processes them and they are sent to the real printer or punch. During its job termination processing, VSl issues a DIAGNOSE (X'08') instruction to pass the CP CLOSE command to VM/310 for each CP spool file. page VM/370, it • Its virtual storage size is equal to the size of the VM/370 virtual machine • Its virtual machine size is at least one megabyte and no more than four megabytes. • The V"/VS Handshaking feature is available. When VS1 executes in nonpaging mode, it uses fewer privileged instructions and avoids duplicate paging. The VS1 Nucleus Initialization progra. (NIP) fixes all VS1 pages to avoid the duplicate paging. !Qt~: A page fault is a program interruption that occurs when a page marked "not in storage" is referred to by an instruction with an active page. The virtual machine referring to the page is placed in a wait state while the page is brought into real storage. Without the handshaking feature, the entire VSl virtual machine is placed in page wait by VM/310 until the needed page is available. However, with the handshaking feature, a multiprogramming (or multitasking) VS1 virtual machine can dispatch one task while waiting for a page request to be answered for another task. V"/370 passes a pseudo page fault (program interrupt X'14') to VS1. When VS1 recognizes the pseudo page fault, it places only the task waiting for the page in page wait and can dispatch another tasks. The working set size may be larger for a VS1 virtual machine in nonpaging mode than for one in paging mode. A VS1 virtual machine with the handshaking feature avoids many of the instructions or procedures that would duplicate the function that V"/370 provides. For example, VS1 avoids: • 15K (Insert storage Key) uses a key table • Seek separation devices • ENABLE/DISABLE sequences Supervisor (IDS) for instructions 2314 in direct the and access VS1 section 1. Introduction I/O 51 • TCn (Test Channel) instructions preceding SIO (start I/O) instructions. CP INTERRUPTION HANDLING Interruption processing occurs within the CP environment. More than 30 modules control the process of interrupting events brought about by CP or virtual machine activity. Each module handles a particular I/O device or class or a function of CP, (for exaaple: tiaers, paging, SVCs). For an overview of interruption handling, see Figure 15. I/O interruptions from completed I/O operations initiate various completion routines and the scheduling of further I/O requests. The I/O interruption handling routine also gathers device sense information. When a machine check occurs, CP Recovery Management Support (RHS) gains control to save data associated with the failure for FE maintenance. RHS analyzes the failure and determines the extent of damage. Damage assessment results following actions being taken: Program interruptions occur in t~o states. If the CPU is in the supervisor state, the interruption indicates a systea failure in the CP nucleus and causes a system abnormal termination. If the CPU is in the problem state, a virtual machine is in execution. If the program interruption indicates that the Dynamic Address Translation (DAT) feature has an exception, a virtual machine issued a privileged instruction, or a protection exception occurred for a shared segment system, CP takes control and performs any required processing to satisfy the exception. Usually, the interruption is transparent to the virtual machine. Most other program interruptions result from virtual machine processing and are reflected to the virtual machine for handling. 52 in one of the with no • system termination • selective virtual user termination • Refreshing of damaged information effect on system configuration • Refreshing of damaged information with the defective storage page removed from further system use • Error recording only for certain soft machine checks The system operator is informed of all actions taken by the RMS routines. When a machine check occurs during VM/370 startup (before the system is set up well enough to permit RMS to operate successfully), the CPU goes into a disabled wait state and places a completion code of X'OOB' in the high-order bytes of the current PSi. IBM VM/370: System Logic and Problem Determination Guide The VM/370 Control Program (CP) is interrupt driven. Thus, when an interrupt occurs, control is passed to the appropriate Interrupt Handler. These are: • • From unknown channel, the interrupt is ignored From an unsolicited Device End, bUild;a~n~IO~B:LO~K~~~~~~_' C and for: Console (Start/Stop) . . . . and for 3270s on bisync lines .C DMKCNSIN and for local 3270 devices, 3158 and 3066 cunsoles . .( I Unit Record (U/R), real spooling • From a dedicated device error, for either CP or a virtual machine (DMKVCHI. the ERP for: ) DASD • DMKDASER) Tape --C DMKTAPER ) From 3270 bisync line and channel errors",( DMKBSC) Recoverable error? No, record error . . . . DMKIOERR) C DMKRSPEX) From a solicited Device End • From a Channel ERROR, the Channel Check Handler.C DMKCCHNT) DMKSTKIO) --C C DMKGRF ) • C Monitor Tape I/O Operation ----------------~ DMKRGA or ) _.___D_M....,;.;K;.;.,R;..,;G;;.;B:::..-__ t • • to stack 10BLOK Yes., For Program Check interrupts, the Program Check Interrupt Handler • • • • • • •_ _ _• _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _. .~ '------- DMKPRGIN passes control to the appropriate processor, depending on the type of program check, as follows: .....c DMK~TRAN ) • For normal paging • For paging (virtual.....r DMKVAT ) machine in EC moder--- \. . • For Supervisor state • ~ For privileged instructions _ ._ _ _ _• Figure 15. DMKVIOEX passes control as follows: DMKPRVLG passes control as follows: instructions~ • For DIAGI\JOSE • Fortimers~ • For virtual machine I/O _ _ _ _ _ _ _111 • Forconsole·G~ • For Unit Record (U/R), virtual .~ spooling Overview of Interruption Handling When an SVC interruption occurs, the SVC interruption routine is entered. If the machine is in problem state, the type of interruption is usually reflected back to the pseudo-supervisor (that is, the supervisor operating in the user's virtual machine). If the machine is in supervisor state, the SVC interruption code is determined, and a branch is taken to the appropriate SVC interruption handler. event has occurred, such as the time of day, a scheduled shutdown, or a reached user event. The CPO timer indicates that a virtual machine's allowed execution interval (time in queue) has expired. The external console interruption invokes cp processing to switch from the primary console to an alternate operator's console. FREE STORAGE MANAGEMENT If a timer interruption occurs, CP processes it according to type. The interval timer indicates time-slice end for the running user. The clock comparator indicates that a specified timer During its execution, CP occasionally requires small blocks of storage that are used for the duration of a task. CP obtains this storage from the free storage area. The free storage area is divided into various size subpools. The requestor informs the free storage manager of the size of the block required and the smallest available subpool that fulfills the request is allocated to the requestor. When the block is Section 1. Introduction 53 no longer needed, the requestor informs the free storage manager and CP returns the block to free storage. 3. Checks for a fetch protection violation on a write CCW (except for spooling or console devices) • If the request for free storage cannot be fulfilled, the free storage manager requests the temporary use of a page of storage from the dynamic paging area. If a page is obtained, the page is chained to the free storage area and used for that purpose until it is no longer needed and subsequently returned to the dynamic paging area. A special case of storage protection occurs when the CMS nucleus resides in a shared segment. The nucleus must be protected and still be shared by many CMS users. The program interruption handler, DMKPRG, manipulates the real storage key and real PSW key to ensure that user programs and disk-resident commands run with a different key than the nucleus code. If the request for a page fulfilled, the requestor waits storage becomes available. EXECUTING THE PAGEABLE CONTROL PROGRAM cannot be until free STORAGE PROTECTION VM/370 provides both fetch and store protection for real storage. The contents of real storage are protected from destruction or misuse caused by erroneous or unauthorized storing of fetching by the program. Storage is protected from improper storing or from both improper storing and fetching, but not from improper fetching alone. When the CPU accesses storage, and protection applies, the protection key of the current PSW is used as the comparand. The protection key of the CPU is bit positions 8-11 of the PSW. If the CPU access is prohibited because of a protection violation, the operation is suppressed or terminated, and a program interruption for a protection exception takes place. When the reference is made to a channel, and protection applies, the protection key associated with the I/O operation is used as the comparand. The protection key for an I/O operation is in bit positions 0-3 of the CAW and is recorded in bit positions 0-3 of the CSW stored as a result of an I/O operation. If channel access is prohibited, the CSW stored as a result of the operation indicates a protection-check condition. When a storage access is prohibited because of a store protection violation, the contents of the protected location remain unchanged. If a fetch protection violation occurs, the protected information is not loaded into an addressable register, moved to another storage location, or provided to an I/O device. To use fetch protection, a virtual machine must execute the set storage key (SSK) instruction referring to the data areas to be protected, with the fetch protect bit in the key. VM/370 subsequently: 1. Checks for a fetch protection violation when handling privileged and nonprivileged instructions. 2. Saves and restores the fetch protection bit (in the virtual storage key) when writing and recovering virtual machine pages from the paging device. 54 Calls to pageable routines are recognized at execution time by the svc 8 linkage manager in DMKPSA. For every SVC 8, the called address (in the caller's GPR15) is tested to see if it is within the resident nucleus. If it is less than DMKCPEND and greater than DMKSLC, the called routine's base address is placed in GPR12 and control is passed to the called routine in the normal way. However, if the called address is above DMKCPEND or below DMKSLC, the linkage manager issues a TRANS macro, requesting the pagin~ manager to locate and, if necessary, page-~n the called routine. The TRANS is issued with LOCK option. Thus, the lock count associated with the called routine's real page indicates the responsibility count of the module. • When the module incremented. is called, • When the routine exits via is decremented. the count is SVC 12, the count When the count reaches zero, the pageable routine is unlocked and is eligible to be paged out of the system. However, because all CP pageable modules are reentrant, the page is never swapped out, but when the page is stolen, it is placed directly on the free page list. Because unlocked page able routines participate in the paging process in a manner similar to user virtual storage pages, the least recently used approximation used by page selection tends to make highly used control program routines, even when not locked, remain resident. The called routine is locked into real storage until it exits. Thus, it can request asynchronously scheduled function, such as I/O or timer interrupts, as long as it dynamically establishes the interruption return address for the requested operation and does not give up control via an EXIT macro prior to receiving the requested interruption. Addressability for the module, while it is executing, is guaranteed because the CALL linkage loads the real address of the paged module into GPR12 (the module base register) prior to passing control. If all addressing is done in a base/displacement form, the fact that the module is executing at an address different from that at which it was loaded is transparent. Although part of CP is pageable, it never runs in relocate mode. Thus, the CPU is not degraded IBM VM/370: system Logic and Problem Determination Guide by the DAT feature being active, and no problems occur because of handling disabled page faults. • The module cannot contain any A- or V-type address constants that point to locations within itself or within other pageable modules, and it cannot contain any CCws that contain data addresses within themselves. The only exceptions are address constant literals generated as the result of calls to other modules (because these addresses are dynamically relocated at execution time, they must be resolved by the loader to the loaded address of the called module) and a pageable module that locks itself into storage. In ,practice, this restriction means that data or instructions within the pageable routine must be referenced via base/displacement addressing, and the address in register 15 for a CALL may not be generated by a LOAD ADDRESS instruction. • The pageable module must be no more than 4096 bytes in length. SYSTEM SUPPORT MODULES The system support modules provide CP with several common functions for data conversion and control block scanning and verification. Most of the routines are linked to via the BALR option of the CALL macro, and make use use of the BALRSAVE and TEMPSAVE workareas in DMKPSA. Two exceptions are the virtual and real I/O control block scan routines DMKSCNVU and DMKSCNRU. These routines do not alter the contents of the BALRSAVE area, and hence may be called by another low level BALR routine. CONTROL REGISTER USAGE Every IBM System/370 CPU provides the program with 16 lo~ical control registers (logical registers s~nce the number that are active depends on the features installed in the machine at anyone time) that are addressable for loading and storing from basic control (BC) mode. VM/370 provides only a single control register, control register zero, for normal virtual machines, and for processing systems that do not require the full set of registers (for example, CMS, DOS, or other operating systems for system/360. Any user whose virtual machine operating system requires the use of control registers other than control register zero, can request the full set of 16 registers by specifying the ECMODE option in the VM/370 directory entry for his virtual machine. A virtual machine, which utilizes any system/370 features that use the control registers, requires the ECMODE option. Some of these features are expanded timer support of the System/370 CPU timer, clock comparator, etc., the virtual relocate mode and its instructions, RRB, LRA, PTLB, virtual monitor calls, virtual Program Event Recording (PER), etc. RESTRICTIONS MODULES AND CONVENTIONS FOR PAGEABLE CP If the four above design and coding restrictions are adhered to, the CP module can be added to the existing pageable nucleus modules by utilizing the service routine, VMFLOAD, which is described in "VM/370 Maintenance Procedures" of the !~LJ1Q: ~~£y!£~ SgY!i~~~ R~~g~2! 199!f· Additional information can be found in the !~L1IQ: g!~~~!~g ~~g 212!~! ~~~~£2!!gD ~~!g~. DATA AREA MODULES In addition to the executable resident and pageable modules, there are certain modules that only contain data areas and do not contain executable code. These modules are: Resident ~ggYl~ DMKCPE DMKRIO DMKSYS DMKTBL Pageable ~ggYl~ DMKBOX DMKEMS UMKFCB DMKSNT DMKSYM DMKUCB DMKUCS Pageable CP modules must observe the following restrictions and conventions when they are designed and coded: • • The module should be completely reenterable. Any messages to be modified, temporary work or scratch areas, or program switches must be allocated from system free storage or from the caller's save area. The module must be entered by the standard SVC 8 CALL linkage. Modules entered by BALR or GOTO cannot be pageable. contents DefInes-the end of the CP nucleus I/O device blocks System constants Terminal translate table DMKTBM Contents output-separator table Error message data module 3211 Forms Control Buffer (FCB) load tables System name table System symbol table 3211 Universal Character set Buffer (UCSB) load tables 1403 Universal Character set (UCS) load tables Terminal translate tables SVC INTERRUPTIONS SVC interruption occurs, the SVC When an interrupticn routine (DMKPSASV) is entered. If the machine is in the problem state, DMKPSASV takes the following action: section 1. Introduction 55 EXECUTABLE MODULES DMKBSC DMKCCH DMKCCW DMKCFC DMKCFM DMKCNS DMKCVT DMKDAS DMKDGD DMKDMP DMKDSP DMKFBE DMKGBF DMKHVC DKKHVD DKKIOE DMKIOS DMKLOC DMKKCH DMKKSW DMKOPB DMKPAG DMKPGT DMKPBG" DMKPRV DMKPSA DMKPTR DMKQCN DMKBGA DMKRGB DMKRGF DMKRNH DMKRPA DMKBSP DMKSCH DMKSCN DMKSTK DMKTMB DMKUNT DMKVAT DMKVCN DMKVIO DMKVMA DMKVSP DMKACO DKKBLD DMKCDB DMKCDS DMKCFD DMKCFG DMKCFP DMKCFS DMKCFT DMKCKP DMKCKS DMKCPB DMKCPI DMKCPV DMKCQG DMKCQP DMKCQR DMKCSO DKKCSP DMKCST DMKCSU DMKDEF DMKDIA DMKDBD DMKEIG Df!KEf!A DMKEMB DMKEBM DMKGIO DMKIOC DMKIOF DMKIOG DMKISK DMKLNK DMKLOG DKKKCC DKKKID DKKMON DKKKSG DKKNEM tMKNES DMKNET tKKNLD DMKPGS DMKRSE DMKSAV Df!KSEP DMKSEV DMKSIX DMKSNC DMKSPL DKKTAP DKKTDK Df!KTHI DMKTRA DKKTBC DKKTRM DKKUDR DKKUSO DMKVCA DMKVCH DMKVDB DMKVDR DKKVDS DMKVER DMKVKI DMKWRM If the interruption was the result of an ADSTOP (SVC code X'B3'), the message ADSTOP AT XXXXX is sent to the user's terminal, the overlaid instruction is replaced, and the virtual machine is placed in console function mode (CP mode) via DKKCFKBK. • If the interruption was the result of an error recording interface (SVC 76), DKKPSA checks for valid parameters and passes control to DKKVER to convert virtual device addresses in the error record to real device addresses. The actual recording is accomplished in DMKIOE and DMKIOF. If recording is not possible, the interrupt is reflected back to the virtual machine. • If the virtual machine was in EC mode or its page 0 was not in real storage, then all general and floating-point registers are saved, the user's VKBLOK is flagged as being in an instruction wait, and control is transferred (via GOTO) to DMKPRGRF to reflect the interruption to the virtual machine. • If the virtual machine was in BC mode and if page 0 is in main storage, an aFpropriate SVC old PSW is stored in page 0 and the interruption is reflected to the virtual machine, bypassing unnecessary register saving. If the new virtual PSi indicates the wait state, all registers are saved in the VKBLOK and control transfers to DMKDSPB for PSi validation. 56 If the machine is in the supervisor state, the SVC interruption code is determined and a branch is taken to the appropriate SVC interruption handler. SVC 0 Impossible condition or terminal error. The SVCDIE routine initiates an abnormal termination by using the DMKDMPDK routine. SVC 4 Reserved for IBM use. SVC 8 i-link request that transfers control from the calling routine to the routine specified by register 15~ The SVCLINK routine sets up a new save area, and then saves the caller's base register in register 12 and save area address in register 13, and the return address (from the SVCOPSi) in the new save area. If the called routine is within the resident CP nucleus, SVCLINK places its address in register 12 and branches directly to the called routine. If the called routine is in a pageable module, a TRANS macro is Ferformed for register 12 to ensure that the page containing the called routine is in storage. Upon return from the TRANS execution, the real address of the pageable routine is placed in register 12 and SVCLINK branches to the called routine. The real storage location of DMKCPE is the end of the resident CP nucleus. Any modules loaded at a IBM VK/370: System Logic and Problem Determination Guide higher real storage pageable modules. address are defined as SVC 12 i-return request that transfers control from the called routine to the calling routine) • The SVCRET routine is invoked. If the routine that issued the SVC 12 is in the pageable module DMKPTRUL, then DMKPGSUL is called to unlock the page. SVCRET then restores registers 12 and 13 (address ability and save area address saved by SVCLINK), places the user's return address (also saved in this area) back into the SVCOPSW, and returns control to the calling routine by loading the SVCCPSW. SVC 16 Releases current save area from the active chain (removes linkage pointers to the calling routine). The SVCRLSE routihe releases the current save area by placing the address of the next higher save area in register 13 and returns control to the current routine by loading the SVCOPSW. This SVC is used by second level interrupt handlers to bypass returning the first level handler under specific circumstances. The base address field (register 12) in the save area being released is examined to determine if the bypassed routine is in a pageable module. If so, DMKPTRUL is called to unlock the page. SVC 20 obtain a new save area. The SVCGET routine places the address of the next available save area in register 13 and the address of the previous save area in the save area pointer field of the current save area. There are 35 SAVEAREAs initially set up by DMKCPINT for use by the SVC linkage handlers. If all the save areas are used, the linkage handlers call DMKFREE to obtain additional save areas. If DMKPSAEX is entered because of a timer interruption, the state of the machine must be determined~ If the machine was in wait state, control is transferred to DMKDSPCB, and the machine stays idle until another interruption occu~s. If the machine is in problem state, the address of the current user's VMBLOK is obtained from RUNUSER. The user's current PSW (VMPSW) is updated from the external interruption old PSi, the address of the current VMBLOK is placed in register 11, and control is transferred to DMKDSPCH. For additional information about timers, see "Virtual Timer Maintenance." If DMKPSAEX is entered because the operator pressed the console interrupt button (INTERRUPT), the following steps are taken: The current system operator's (DMKSYSOP) is referenced. The virtual machine is disconnected. The operator can now log on from another terminal. pressing the console interrupt button activates an alternate operator's console. For a description of the processing of the external interruption command, refer to module DMKCPB in Section 2. To reflect external interruptions to a virtual machine, an XINTB~oK is queued on a chain pointed to Df VMPXINT in the VMBLOK. The XINTBLOKs are chained sequentially by the XINTSORT field that contains the collating number of the pending interruption. If more than one interruption has the same collating number, the interruption codes are ORed together in the XINTCODE field for possible simultaneous reflection. When a virtual machine is enabled for external interruptions, the XINTBLOK queue for that machine is searched for an eligible block. An XINTBLOK is eligible for reflection if one or more bits of the XINTMASK field match the bits in the low-order half word of control register O. If the interruption was an interruption such as CPU timer or clock comparator, the block is left chained because reflection does not reset these interruptions. If the reflected interruption(s) does not represent all those coded in the XINTMASK field, the block is left chained and only the interruptions that were reflected are reset. In all other conditions, the XINTBLOK is unchained and returned to free storage. PROGRAM INTERRUPTIONS When a program interruption occurs, the program interrupticn handler (DMKPRG) is entered. Program interruptions can result from: EXTERNAL INTERRUPTIONS • • VMBLOK • Normal paging requests. • A paging request by a virtual machine mode (virtual relocate mode). • Privileged instructions. • Program errors. in Ee For information paging requests, see "Allocation Management" in this section. If a program interruption is caused by the virtual machine issuing a privileged instruction when it is running in supervisor state, DMKPRVLG obtains the address of the privileged instruction and determines the type of operation requested. If the virtual machine was running in problem state, the interruption is reflected back to the virtual machine. Section 1. Introduction 57 lLQ E~lYl~~Q~£ control to the (DMKVIOEX) • !Q~=lLQ INSTRUCTIONS DMKPRVLG transfers -virtual--i;o executive program E~!Y!1EQE] INSTRUCTIONS DMKPRVLG simulates valid non-I/O -prIvIleged-instructions and returns control to DMKDSPCH. For invalid non-I/O privileged instructions, the routine sets an invalid interruption code and reflects the interruption to the virtual machine. For the privileged instructions (SCK, SCKC, STCKC, SPT, and STPT that affect the TOO clock, CPU timer, and TeD clock comparator, control is transferred to DMKTMR by DMKPRVLG. Other instructions that are simulated are LPSW, SSM, SSK, 1SK, and DIAGNOSE. Although the CS and CDS instructions are non-privileged, they are not part of the standard instruction set on IBM System/370 Models 135 and 145. VM/370 simulates these instructions on Models 135 and 145 that do not have the optional hardware feature installed. 0000 Code Class Function iny-store--- 0004 0008 OOOC 0010 0014 0018 001C C,E G G G G G F 0020 G 0024 0028 002C 0030 0034 0038 003C G G C,E,F C,E,F C,E C,E A,B,C 004C Any 0050 System/370 EC mode non-I/O privileged~ instruction simulation includes the following: ~ 0054 ~0058 Definition fQ!!~ SCK SCKC STCKC SPT STPT STNSM STOSM STIDP STIDC LCTL STCTL LRA RRB PTLB IPK SPKA -set-Clock set Clock Comparator store Clock Comparator set CPU Timer Store CPU Timer store And AND System Mask Store And OR system Mask Store CPU Identification Store Channel Identification Load Control store Control Load Real Address Reset Reference Bit Purge Table Look-aside Buffer Insert PSW Key Set PSW Key From Address A,B,C G 005C 0060 G G G 0064 G extended-identification code. Examine data from real storage Execute CP console function Pseudo-timer facility Release virtual storage pages Manipulate input spool files standard DASD I/O Clear I/O and machine chE!ck recording General virtual I/O without interrupts Virtual device type information Dynamic TIC modification Return DASD start of LOGREC area Read one page of LOGREC data Read system dump spool file Read system symbol table Dynamically update system user directory Generate accounting cards for virtual user Save 3704/3705 control program image Enable or disable for external interruption Virtual console interface for 3270 Error message editing Provide virtual machine storage size Load, find, or purge a named system Rules for DIAGNOSE codes: 1. The DIAGNOSE code must always be a multiple of 4. 2. Virtual machines issuing DIAGNOSE codes should run with interruptions disabled to prevent loss of status information (condition code, sense, etc.) pertaining to the DIAGNOSE operation. X'OO' through X'FC' --Reserved for IBM use x'100' through X'lFC' --Reserved for users The DIAGNOSE co.mand communicates between a virtual machine and CPo Correct CP execution of DIAGNOSE requires that the operand storage addresses passed to CP via the DIAGNOSE interface be real addresses to the virtual machine using the DIAGNOSE instruction. In VM/370, the machine-coded format for the DIAGNOSE command is: flits 0 7 8 11 12 15 16 £!!Q!Q~~ fQQ~ Q: Allows a virtual machine to examine the VM/370 extended-identification code. For example, an OS/VSl virtual machine issues a DIAGNOSE code 0 instruction to determine if the version of V"/370 it is running in supports the VM/VS Handshaking feature. If the extended-identification code is returned to VS1, V"/370 supports handshaking; otherwise, it does not. 31 f"-------T-~-·-------------------, I L-~ content --83--rx ry code 58 83 _______ I rx I ry I ________________ code ___ - L JI ~_---L- ~!I!!g!H!~!Q!! DIAGNOSE operation code User-specified register number User-specified register number Hexadecimal value that selects a particular VM/370 control program function. The codes and their associated functions are: IBM V~/370: rx ry contains the virtual storage address where the VM/370 extended-identification code is to be stored. is the number of bytes to be stored (an unsigned binary number). If the V"/370 system currently running does not support the DIAGNOSE code 0 instruction, no data is returned to the virtual machine. If it does support the DIAGNOSE code 0 instruction, the following data is returned to the virtual machine (at the location specified by rx): System Logic and Problem Determination Guide r-------I Pield --------------------, I Attributes I system Nalle VM/370 8 bytes, EBCDIC version Number The first byte is the version number, the second is the level, and the third is the prograll level change (PLC) number. 3 bytes, hex Version Code VM/370 executes the STORE CPU ID (STIDP) instruction to determine the version code. 1 byte, hex MCEL VM/370 executes the STIDP instruction to determine the maximum length of the machine check extended logout area (MCEL). 2 bytes, hex VM/370 executes the STORE CPU ADDRESS (STAP) instruction to determine the processor address. 2 bytes, hex The userid of the virtual machine issuing the DIAGNOSE. 8 bytes, EBCDIC CPU Address userid LA LA DC Description CPPURC DC CPPUNCL BOU ~!!2!Q~~ ~Q~~ ~: A coapletion code is returned to the user as a value in the register specified in ry. A completion code of 0 signifies normal completion. If an error message is issued, the completion code is equal to the numeric portion of the error message. Q!A2!~2j ~Q~l time. Bytes 0 Obtains total and 7 8 r virtual CPU 15 16 23 24 31 -----------------------, IMM/DD/lYIBB:MM:SSIVirt CPUITotal CPUI '-----------_._------------Virtual and totdl CPU microseconds) is returned logical value. unchanged by the list of time as a , used (in doublevord lQ: Releases pages. where: ri---contains the virtual address of page to be released. ry Examines real storage. contains the virtual address page to be released. Any of the virtual pages storage are released. in real the first of the last or auxiliary contains a count of entries in the list. ry+l contains the virtual address of the result field that holds the values retrieved from CP locations. DIAGNOSE CODB 8: Allows a virtual machine perform-CP-console functions. to where: ri---contains the address (virtual) of the CP console function command and parameters. ry £: where: ri---contains the virtual address of a 32-byte data area that does not cross a page boundary, into which the following data is stored: where: ri---contains the virtual address of a CP (real) addresses. ry C' QUERY PILBS' *-CPPUNC The console function output goes to the user's terminal, and then execution continues. Any valid and authorized console function can be executed in this manner. ~!!2!Q~~ ~QQ~ The condition code remains DIAGNOSE code 0 instruction. R6,CPPUBC R10,CPPUNCL X'83',X'6A',XL2'0008' contains the length of the associated console function input, up to 132 characters. DIAGNOSE CODE miiiIpulatioii:-- 1~: Performs input spool file where: ri---contains either a buffer address, a copy count, or a spool file identifier, depending on the value of the function subcode in ry+1. ry (cannot be register 15) contains either the virtual address of a spool-input card reader or, if ry+1 contains x'OPPP', a spool file ID number. ry+1 contains a hexadecimal interpreted by DMKDRDBR as the following: function code a command to do The following example illustrates the virtual console function: Section 1. Introduction 59 Code 0000 0004 0008 OOOC 0010 0014 0018 OFFF Function Read-next spool buffer (data record) Read next print SFBLOK Read next punch SFBLOK Select a file for processing Repeat active file BB times Restart active file at beginning Backspace one record Retrieve successor file descriptor ry+1 on return, may contain error codes which further define a returned condition code of 3. 9 READ/WRITE byte count greater than 2048 10 READ/WRITE buffer not within user's storage cc=3 Uncorrectable I/O error. Register contains the following: 13 CSW (8 bytes) returned to user. 15 Sense bytes are available if user issues a SENSE comlland. !2~g: The file DMKDRDER. manipulation ~!!~!Q~~ £Q~~ 1~: is performed by Performs limited disk I/O. DIAGNOSE CODE 1C: Calls the DftKIOEFM routine to clear-the-j;o error recording data on disk. where: ri---contains the code value 1, 2, or 3 to clear and reformat the I/O ex'ror recording, M/C recording, or both. ry rx contains the device address of the disk. is ignored. ~!!Q!Q~~ £Q~~ ~Q: Performs general I/O without in terruptions. ry points to a CCW chain to read or limited number of disk records. write a Each read or write must specify no more than 2048 bytes (usually 800 is used), and the CCW chain is of a standard form, as shown below. For a 3330 or 3350 a SET SECTOR command would precede each SRCH command. Register 15 contains the number of reads or writes in the CCW chain (the number is two in the following example for a typical CCW string (to read or write two BOO-byte records): A B SEEK,A,CC,6 SRCH,A+2,CC,5 TIC,*-8,0,0 RD or WRT,DATA,CC+SILI,800 SEEK HEAD,B,CC,6 (Omitted if HEAD No. SRCH,B+2,CC,5 unchanged) TIC,*-8,0,0 RD or WRT,DATA+800,SILI,800 SEEK and SRCH arguments for first RD/WRT SEEK and SRCH arguments for second RD/WRT The condition codes (cc) and completion codes that are returned are as follows: cc=O I/O complete with no errors cc=l Error condition. Register 15 contains one of the following: 1 Device not attached 2 Device not 2314, 2319, 3330, 3340, or 3350 3 Attempt to write on a read-only disk 4 Cylinder number is not in the range of user's disk 5 Virtual device is busy or has an interrupt pending cc=2 Error condition. Register 15 of the following: !l!~.I~: rx contains address. a virtual tape ry contains the address of to be executed. or DASD device the string of CCWs The CCW string is processed by DftKCCWTR through DftKGIOEX. This provides full virtual synchronous I/O to any virtual tape or DASD device specified (self-modifying CCW strings are not permitted, however). Control returns to the virtual machine only after completion of the operation or detection of a fatal error condition. Condition codes and error codes are returned to the virtual system. Unit record devices are not supported. The condition codes (cc) and completion codes that are returned fellow: cc=O I/O complete with no errors cc=l Exception conditions. Register 15 contains the following: 1 Device not attached 5 Virtual device is busy or has an interrupt pending cc=2 Exception conditions. Register 15 contains one of the following: 2 Unit exception bit in device status byte=l 3 Wrong length record detected cc=3 Error condition. Register 15 contains the following: 13 A permanent I/O error occurred. The two low order positions of the user's R2 register contain the first two sense bytes. contains one !Qig: 5 6 3 8 60 Pointer to CCW string not doubleword aligned. SEEK/SEARCH arguments are not within range of user's storage READ/WRITE CCW is neither read (06) nor wri te (05) READ/WRITE byte count=O SUPFort is provided for DASD and tape devices only. All other devices have a return code of 13 and a condition code of 3 in the virtual machine's PSi. DIAGNOSE CODE information:-- IBM V6/370: System Logic and Problem Determination Guide ~~: Provides virtual device type rx contains a virtual device address, or a value of -1 indicating a virtual console whose address is not known. If rx contained a value of -1 upon entry and a virtual console was found, the register contains the virtual device address in the two low order bytes, upon return. ry or if it was too late to change the real CCV list because channel or device end had already occurred, a condition code and return code are returned to the virtual machine to notify it that the real CCN string was not successfully modified. The condition codes are as follows: Condition Code GR15 --00-- contains virtual device information. 1 1 ry+l contains real device information. If ry is register 15, then only virtual device information is supplied. 1 2 3 4 7 8 15 16 23 24 r 31 5 I ry IVDEVTYPCIVDEVTYPEIVDEVSTATIVDEVPLAGI 1--I ry+1 IRDEVTYPCIRDEVTYPEIRDEVHDL Isee Notel L___ 5 6 ~ 7 !!g!.§!: The low order byte of ry+1 contains the current device line length (RDEVLLEN) for a virtual console, or the device feature code (RDEVPTR) for a device other than a virtual console. The condition codes (cc) and completion codes that are returned follow: 8 2 9 J!E!~n~liQ!! Successfully modified channel program rx and ry registers are the same. Device specified by ry register was not found. Address given to rx register was not within user's storage space. Address given by rx register was not doubleword aligned. CCW string corresponding to ry device and rx address was not found. CCV string corresponding to ry and rx address was not found. CCN at address specified by rx is not a TIC or a NOP, or CCW in channel program is not a TIC or a NOP. New address in Toe is not within user's storage space. New address in TOC is not doubleword aligned. Too late to change the CCW string (channel end or device end has already occurred) • cc=O Data transfer successful cc=2 Real device does not exist DIAGNOSE locatIon CODE ~~: Returns o£~he LOGREC area. the DASD start cc=3 Device address invalid; or device does not exist rx on return contains the DASD location, in CP format, of the first record of the syste. I/O and machine check error recording area. ry is ignored. Y!!Q!!Q§~ ~~~j 28: Hodifies a real TIC or NOP CCV 1n a-channel program when the associated virtual TIC or NOP has been modified after a START I/O but before a channel or device end interruption. DIAGNOSE data:--rx ry contains the address of the TIC or NOP CCV that has been modified. The address in rx, the new address in the modified TIC CCV, and the addresses in the new eeN list pointed to by the modified TIC, .ust be "real" with respect to the virtual m~chine; they must be "second level" virtual storage addresses to CPo contains the virtual device address in bits 16 through 31. (Hust be a different register than rx.) Vhen DHKHVC has analyzed the DIAGNOSE, the real CCV string and appropriate TIC or NOP is located by a call to DHKCCWTC. If a virtual TIC had been changed to a NOP, a corresponding change is made to the real TIC. If a virtual TIC had been changed to point to a new list of CCVs or a virtual NOP had been changed to a TIC, the program translates the new list via a call to DHKCCVTR and modifies the existing channel program to include the new real CCVs. If an error was detected in the DIAGNOSE information, ~QYj lQ: Reads one page of LOGREC rx contains the DASD location, in of the desired record. CP for.at, ry contains the virtual address of a page-size buffer to receive the data. The page of data is provided to the virtual machine via DHKRPAGT. The condition codes are as follows: cc=O Successful read, data available. cc=l End of cylinder, no data. cc=2 Invalid cylinder, outside recording area DIAGNOSE £I1;;:--rx ~Q~j 1~: Reads the system dump spool contains the virtual address of a page-size buffer to accept the requested data. section 1. Introduction 61 ry (cannot be register 15) virtual device address of card reader. a contains the spool-input Code 0008 OOOC ry+l on return, may contain error codes which further define a returned condition code of 3. The system chain of spool input files is searched for a dump file belonging to the user issuing the DIAGNOSE by DMKDRDMP. The first (or next) record from the dump file is provided to the virtual machine via DMKRPAGT and the condition code is set to zero. The dump file is closed by the CLOSE command issued from the console. DIAGNOSE table:-- fQQ] ]~: Reads the system symbol 0010 ~~~~!~g rx points to a parameter list containing a userid and distribution number. rx points to a parameter list containing a userid, account number, and distribution number. rx points to a data area containing up to 70 bytes of user information to be transferred to the accounting card starting in column nine. !Q!~: If ry contains X'0010', ry cannot be register 15. ry+l contains the length of the data area pointed to by rx. If rx points to a parameter list (ry not equal to X'0010'), ry+l is ignored. The following condition codes are returned to the user by DMKHVC: rx ry contains the start address of the page contain the symbol buffer that is to table. CC -0 1 is ignored. 2 3 The system symbol table (DMKSYM) is read into storage by DMKDRDSY at the location specified by rx. DIAGNOSE CODE 3C: Dynamically updates the system ~;e~-~I~e~t~~y-by DMKUDRDS. rx contains the first 4 serial label. bytes of the volume ry the first 2 bytes of the register specified by ry contain the last 2 bytes of the volume serial label. DIAGNOSE CODE 4C: Generates accounting cards for the-virtual-user. This code can be issued only by a user with the account option (ACCT) in his directory. rx ry Code 0000 0004 62 contains the virtual address of either a 24-byte parameter list identifying the "charge to" user, or a variable length data area that is to be punched into the accounting card. The interpretation of the address is based on a hexadecimal code supplied in rYe If the virtual address represents a parameter list, it must be doubleword aligned; if it represents a data area, the area must not cross a page boundary. If rx is interpreted as pointing to a parameter list and the value in rx is zeros, the accounting card is punched with the identification of the user issuing the DIAGNOSE. contains a hexadecimal function interpreted by DMKHVC as follows: code ~~~~!~g rx points to a parameter list containing only a userid. rx points to a parameter list containing a userid and account number. ~~~~!ng Successful operation User does not have account option privileges Invalid userid in the parameter list Invalid function hexadecimal code in ry or an error occurred in trying to read in the user machine block (UMACBLOK) DMKHVC checks the VMACCOUN flag in VMPSTAT to verify that the user has the account option and if not, returns control to the user with a condition code of 1. If ry contains a code of X'0010', performs the following checks: DMKHVC • If the address specified in rx is negative or greater than the size of the user's virtual storage, an addressing exception is generated. • If the combination of the address in rx and the length in ry+l indicates that the data area crosses a page boundary, a specification exception is generated. If the value in ry+l is zero, negative or greater than 70, a specification exception is generated. If both the virtual address and the length are valid, DMKFREE is called to obtain storage for an account buffer (ACNTBLOK) which is then initialized to blanks. The userid of the user issuing the DIAGNOSE is placed in columns 1 through 8 and an accounting card identification code of "CO" is placed in columns 79 and 80. The user data pointed to by the address in rx is moved to the accounting card starting at column 9 for a length equal to the value in ry+l. A call to DMKACOQU queues the ACNTBLOK for real output. If a real punch is available, DMKACOPU is called to punch the card; otherwise, the buffer is stored in main storage until a punch is free. DMKHVC then returns control to the user with a condition code of O. If ry contains other than X'0010' code, control is passed to DMKCPV to generate the card. DMKCPV passes control to DMKACO to complete the "charge to" information; either from the user accounting block (ACCTBLOK), if a IBM VM/370: System Logic and Problem Determination Guide pointer to it exists, or from the user's VftBLOK. DftKCFV then punches the card and passes control back to DftKHVC to release the storage for the ACCTBLOK, if one exists. DftKHYC then checks the parameter list address for the following conditions: • If zero, control is returned to the user with a condition code of O. • If invalid, generated. • If not aligned on a doubleword boundary, a specification exception is generated. an addressing exception DIAGNOSE 32107--- program image. 2Q: Saves the 3704/3705 contains the virtu~l parameter list (CCPARM) ry is ignored on entry. address rx the DIAGNOSE code X'0050' invokes DMKSNC to validate the parameter specifications and write the page-format image of the control program to the appropriate system volume. ry Code ~ii- 171 176 179 435 upon return, codes: contains the following error ~~E!~n~!i2n "ncpname" was not found in system name table. System volume specified not currently available. Insufficient space reserved for program and system control information. System volume specified is not a CP owned volume. Paging error while writing saved system. ~!!2Mg~E £g~~ 2~: contains the address of the console CCW string. The format of the special display CCW is: CCW X'19', dataddr, flags, ctl, count dataddr flags ctl control of console interface for is When a 3704/3705 control program module has been created, the CftS-based service routine (SAVENCP) builds a parameter list (see CCPARft in SAVENCF data areas) of control information required by CP to load the module into the user's virtual storage. It passes this information to CP by a DIAGNOSE code X'0050'. rx 2§: Virtual Execution of DIAGNOSE code 58 allows a virtual machine to quickly display large amounts of data on a 3270 in a very rapid fashion. The interface can display up to 1760 characters on the screen with one write operation instead of up to 22 individual writes, if each line was limited to 80 characters. Por a parameter list address that is nonzero and valid, the userid in the parameter list is checked against the directory list and if not found, control is returned to the user with a condition code of 2. If the hexadecimal code in ry is invalid, control is returned to the user with a condition code of 3. If both userid and hexadecimal code are valid, the user accounting block (ACCTBLOK) is built and the userid, account number, and distribution number are moved to the block from the parameter list or the user machine block belonging to the userid in the parameter list. Control is then passed to the user with a condition code of O. ~!!2Mg~E £g~~ £g~~ Sets a flag in the VMQSTAT to reflect an external interruption to the virtual machine when the PA2 key is pressed on a 3270 keyboard with the APL feature activated. count ry is the address of the first byte to be displayed. is the standard CCW flag field. is a control byte indicating the starting output display line (0-22). If the high-order bit is on, the entire 3270 output display area is erased before the new data is displayed. A value of X'PP' clears the screen, but writes nothing. is the number of bytes to be displayed (maximum is 1760). contains the address of the virtual console device in bits 16-31. If this ccw is issued to a virtual console that is not simulated on a real 3270, a virtual command rej~ct is generated. Otherwise, a buffer is built in free storage and the data pointed to by 'dataddr' is loaded into it. Data chaining may be specified in the CCW to link noncontiguous data areas; however, command chaining is an end-of-data indication for the current buffer. The starting line specified in 'ctl' is correlated with the data 'count' to ensure that the data does not overflow the allowed area. Any invalid specification will generate a command reject. CP then processes the display CCW returning a condition code of zero if the display was successful or a nonzero code if an I/O error occurred. DIAGNOSE £Q~~ 2£: Edits error messages. Execution of DIAGNOSE Code 5C edits an error message according to the user's setting of the EftSG function. rx contains the edited. address of the message to be ry contains the edited. length of to be the message section 1. Introduction 63 DMKHVC tests the VMMLEVEL field of the VMBLOK and returns to the caller with rx and ry modified as described in Figure 16. r------------------------------------, 1 VM"LEVEL 1 Registers Upon Return 1 1------------------------------------ 1 IVMMCODEIVMMTEXTI rx 1 ry 1 1------·_--------------------------------- 1 1 On 1 On 1 No change 1 No change 1 1-------------------------------------- 1 1 On 1 Off 1 No change 1 10 (length 1 1 1 1 1 of code) 1 1----------------------------,------1 1 Off 1 On 1 Pointer to 1 Length of 1 1 1 1 text part 1 text alone 1 1 1 1 1 of message 1 1-----------------------------------1 1 Off N/A L _ _off _ _ _ _1 ___ _ _ _ _1 __ _ _ _ _ _ _ _ _ _I _ 0 _ _ _ _ _ _ _ _ _J 1 Figure 16.DIAGNOSE X'5C'/VMMLBVEL Field Analysis LOADSYS DIAGNOSE function: Execution of the DIAGNOsi- functIon-(ry=OO or 04) causes the contrcl program to locate the name and location of the named system and builds the necessary page/swap tables. All virtual storage pages into which the system is to be loaded are released prior to loading the named system. When the LOADSYS DIAGNOSE is invoked, the virtual machine's storage is expanded dynamically, if necessary, and is completely transparent to the virtual machine. Whenever the LOADSYS function is invoked, an automatic PURGESYS function occurs prior to building new page/swap tables. The automatic PURGESYS allows virtual machines to switch back and forth from shared systems to nonshared systems. LOADSYS When the LOADSYS function is executed in shared mode and the virtual machine has the CP trace facility active, the following options are reset if they are active: instruction trace and branch trace. All other options remain in effect. If no other tracing options are active, the user receives the message: TRACE ENDED. Note: Note that DIAGNOSE code X'SC' does not write the messagei it merely rearranges the starting pointer and length. For CMS error messages, a console write is performed following the DIAGNOSE, unless ry is returned with a value of o. ~Q: Returns the virtual machine storage s~ze to the user. CMS issues this DIAGNOSE during initialization. rx PSi CONDITION CODE = User's rx = address of where the named system has been loaded and also the starting address of virtual storage released prior to loading the named system. contains the virtual storage size. ry contains the address of the NAMED system. The name must occupy eight bytes, be left justified and padded with trailing blanks. the contents must be a multiple of 4 and its value cannot be greater than decimal 12. ry=OO loads the named system in shared mode and attach to the user's virtual storage. ry=04 loads the named system in non shared mode and attach to the user's virtual storage. ry=08 release the nailed storage. ry=OC finds the starting address system. system from virtual of the named If the address in the rx register is invalid an addressing exception occurs. If the code in the ry register is invalid, a specification exception occurs. 64 Successful Execution PSW CONDITION CODE = 0 User's rx = address of where the named system has been loaded. DIAGNOSE CODE 64: Allows any virtual machine to dynamIcally-load, purge, or find a named system in its virtual storage. CMS uses this DIAGNOSE to support DOS simulation. rx LOADSYS function is executed in machine assist feature is reset. • Q!!~!Q§~ £~Q~ If the ~~iied mode, the virtual User's ry ending address of virtual storage released prior to loading the named system. Note: A condition code of one in the user's PSW is-ieflected only when the named system to be loaded resides within the virtual machine size. • Unsuccessful Execution PSW CONDITION COIE Return User's rx system User's ry Return errors £YR~~§l§ = 2 code of 44 if the named does not exist. code of 174 if paging I/O occur .. DIAGNOSE function: The PURGESYS function r;I;i~;~-stoii~;--mide addressable to the virtual machine when the LOADSYS function was executed. The PURGESYS function releases page/swap tables associated with the named system. If the area released occupied a storage address range greater than the virtual machine storage size, this area is now made non addressable to the virtual machine. If the named system was being operated on in a nonshared mode, the storage which contained the named system is cleared to binary zeros. If the PURGESYS function is executed for a named system which had not been loaded by the LOADSYS function, no action takes place and the command IBM VM/370: system Logic and Problem Determination Guide is treated as a NOP. The PURGESYS function is invoked dynamically by the control program when a LOADSYS function is executed. The name of the purged named system is the same as that requested via the LOADSYS function. • • The interval X'SO' =0 • The time-of-day clock Unsuccessful Execution • The time-of-day clock comparator PSi CONDITION CODE = 1 This occurs if the named system was not found in the user's virtual storage. • The CPU timer PSi CONDITION CODE = 2 User's ry = Return code system does inactive. The PINDSYS function determines where the named system will be loaded into storage, without actually loading it. PINDSYS also determines whether or not the named system has already been invoked by this virtual machine. PINDSYS is executed by CMS prior to issuing the LOADSYS DIAGNOSE instruction. This ensures that the named system to be loaded does not overlay any part of th~ CMS nucleus and that the named system is not already active (loaded) in the virtual machine. If the named system is active, no subsequent LOADSYS DIAGNOSE is issued, therby keeping the current copy of the named system active. The address of where the named system resides is returned in the user's rx register. storage location Before describing how CP maintains these timers for virtual machines, it is necessary to review how VM/370 uses the timing facilities of the real machine. 1. The location X'SO' interval timer is used only for times1icing. The value placed in the timer is the maximum length of time that the dispatched virtual machine is allowed to execute. 2. The time-of-day clock is used as a tille stallp for messages and enables the compute elapsed in-queue scheduler to the dispatching priority time for calculation. 3. The tille-of-day clock cOllparator facility is used by CP to schedule timer driven events for both control program functions and for virtual machines. A stack of comparator requests is maintained and as clock comparator interrupts occur, the timer request blocks are stacked for the dispatcher via calls to DMKSTKIO. 4. The CPU timer functions: Successful Execution PSi CONDITION CODE = 0 User's rx address of where the named system resides in virtual storage. User's ry ending address of where the named system resides in virtual storage. PSi CONDITION CODE = User's rx = beginning address of where the named system is loaded into virtual storage •. User's ry ending address of where the named system is loaded into virtual storage. Unsuccessful Execution PSi CONDITION CODE = 2 return code of 44 if the named User's rx system does not exist. return code of 174 if paging I/O User's ry errors occur. !Q~~: timer at main of 44 if the named not exist or is 1!!~~!~ Q!!§!Q~~ !Y~£!~Q~: • The System/370 with EC mode provides the system user (both real and virtual) with four timing facilities. They are: Successful Execution PSi CONDITION CODE • VIRTUAL TIMER MAINTENANCE Condition code 0 indicates that the named system already resides in main storage. Condition code 1 indicates that the named system exists but has not been previously loaded in virtual storage. facility perforlls • Accumulates CP overhead • Detects in-queue time slice end • Simulates virtual CPU timer three The accumulation of CP overhead is accomplished as follows. The VKTTIME field in the VMBLOK contains the total CP overhead incurred by the virtual machine; it is initialized to the maximull positive number in a doub1eword, X'7PPPFFPF PPPPFPPP'. Whenever CP performs a service for a virtual lIachine, GR 11 is loaded with the address of the V"BLOK and the current value in VKTTIKE is placed in the CPU timer. When CP is finished with the service for that virtual machine the CPU timer, which has been decremented by the amount of CPU time used, is stored back into VKTTIKE. GR 11 is then loaded with a new VKBLOK pointer and the CPU timer is set froll the new VKTTIKE field. The allount of CP overhead for a given virtual lIachine at Section 1. Introduction 65 any point in time is the difference between the maximum integer and the current value in the VMTTIMB field. since VMTTIME only accounts for supervisor state overhead, detection of in-queue time slice end is performed by the CPU timer when the virtual machine is dispatched in the problem state. The VMTMOUTQ field in the VMBLOK is initialized to the amount of problem state time that the virtual machine is allowed to accumulate before being dropped from a queue. This initial value is set by the scheduler (DMKSCH) when the virtual machine is added to a queue and its value depends on the queue entered (interactive or non-interactive) and on the CPU model. For example, the initial value of VMTMCUTQ for a user entering Q1 (interactive) on a Model 145 is 300 milliseconds, while for the same user entering 02 (non-interactiv~ it is 2 seconds. Each time the user is dispatche~, the value in VMTMOUTQ is entered into the CPU timer; whenever the user is interrupted, the decremented CPU timer is stored into VMTMOUTQ prior to being set from the new VMTTIMB. When the problem state time slice has been exhausted; a CPU timer interrupt occurs, the VMQSBND flag bit is set in the VMBLOK, and the scheduler drops the user from the queue. At each queue drop, the problem time used in-queue (the difference between VMTMOUTQ and the initial value) is added to the total problem time field (VMVTIMB) in the VMBLOK. value to the user. Requests time-of-day clock are ignored. to set the A real interval timer or CPU timer is one that runs when the virtual machine is executing or is in a self-imposed wait state (that is, the wait bit is on in the virtual PSW). A real timer does not run if the virtual machine is in a CP pseudo wait state (for example, page wait or I/O wait) or if the virtual machine can be run but is not being dispatched because of other user interaction. Real timers provide accurate interrupts to programs that depend on measurement of elapsed CPU and/or wait time. They do not accurately measure wall time -- the TOD clock must be used for this function. An EC mode virtual machine with the real timer opticn has both a real interval timer and a real CPU timer. Real timer requests for waiting machines are maintained in the clock comparator stack. CPU timer requests are added to TOD clock value at the time that they are issued. Interval timer requests must have their units converted. In addition, if the virtual CPU timer contains a large negative value, then a real timer request is scheduled to occur when the virtual machine becomes positive, so that the pending timer interruption can be unflagged. Comparator requests for real timer interruptions are inserted into the stack whenever a virtual machine enters a self-imposed wait. They are removed either when the virtual machine resumes execution or when it is forced (or places itself) into a pseudo wait. I/O MANAGEMENT Virtual CPU timer simulation is handled for EC mode virtual machines if the value in the virtual CPU timer is less than that in VMTMOUTQ. In this case, the VMBLOK is flagged as "tracking CPU timer" and a CPU timer interrupt is interpreted as a virtual timer interrupt rather than as an in-queue time slice end. virtual location X'50' timers are updated by the elapsed CPU time each time the dispatcher has been entered after a running user has been interrupted. The size of the update is the difference between the value of the timer at dispatch (saved in QUANTUM at location X'54') and the value of the timer at the time of the interruption (saved in QUANTUMR at location X '4C') • virtual clock comparator requests are handled ty the virtual timer maintenance routine, DMKTMR. They are inserted into the general comparator request stack and the virtual machine is posted when the interruption occurs. virtual clock comparator requests to set the virtual CPU timer place the new value into the ECBLOK. Requests to store the new value update the ECBLOK field with the virtual CPU time used since the last entry to dispatch and pass the 66 I/O SUPBRVISOR The module, DMKIOS, handles the I/O requirements of all system devices except the following terminals: 1052, 3210, 3215, 2150, 2741, 3270 remote equipment, and compatible teletypewriter devices. scheduling and interruption handling for these devices is essentially a synchronous process and does not require the queuing and restart services of DMKIOS. This is handled by the module DMKCNS. For handling the I/O requirements of 3270 remote equipment, refer to "Programming for 3270 Remote Terminals an Introduction" in this section. REAL I/O CONTROL BLOCKS To schedule I/O requests and control the activity of the I/O devices of the system, I/O control uses several types of control blocks. These blocks are separated into two basic types. • Static blocks that describe the components of the I/O system. • The dynamic blocks that represent active and pending requests for I/O operations. The I/O devices of the real system are described by one control block for each channel, IBM VM/370: system Logic and Problem Determination Guide control unit, and device available to the control program. Units present but not represented by control blocks are not available for either user-initiated or cP-initiated operations. Because all virtual machines are run in the problem state, any atte.pt to issue a SIO instruction results in a program interruption that indicates a privileged operation exception. This interruption is handled by CP's first level program interrupt handler, DMKPRGIN. It determines if the virtual machine was in virtual supervisor state (problem state bit in the virtual PSW is zero). If so, the instruction causing the interruption is saved in the VMBLOK for the virtual machine and control is transferred to the privileged instruction simulator, DMKPRVLG, via a GOTO. DMKPRVLG determines if the privileged operation affects the virtual I/O configuration. DMKPRVLG simulates non-I/O privileged instructions (such as LPSW) • If the instruction's operation code is from x'9C to X'9F', control is transferred to DMKVIOEX. After clearing the condition code in the user's VMBLOK, DMKSCNVU is then called to locate the virtual I/O blocks representing the I/O components (channel, control unit and device) addressed by the instruction. DMKVIOEX then branches to handle the request based on the operation requested. VIRTUAL I/O REQUESTS The virtual I/O interface maintained by CP provides to the software operating in the user's virtual machine, the condition codes, CSW status information, and interruptions necessary to make it appear to the user's virtual machine that it is in fact running on a real System/370. The virtual I/O interface consists of: • A virtual I/O configuration for each active virtual machine that consists of a set of I/O control blocks that are maintained in the control Program's free storage. This configuration is built at logon time from information contained in the user's directory file, and can be changed by the user or the system operator. • A set of routines that maintain the status of the virtual I/O configuration. • Other system routines that simulate or translate the channel programs provided by the user to initiate I/O on units in the real system's configuration. With a SIO, the condition code returned from DMKSCNVU is tested to verify that all addressed components were located. If they were not, then a condition code of 3 (unit not available) is placed in the PSW and control returns to the dispatcher. Otherwise, the addresses of the appropriate virtual I/O control blocks are saved, and DMKVIOEX tests the status of the addressed I/O units by scanning the VCBBLOKs, VCUBLOKS, and VDEVBLOKs to locate the block that contains the status of the addressed subchannel. The subchannel status is indicated in: selector or block • The VCHBLOK for a multiplexer channel. • The VCUBLOK for a shared selector subchannel on a byte multiplexer channel. • The VDEVBLOK for a nonshared subchannel on a byte multiplexer channel. When the block containing the status is found, the status is tested. If the subchannel is busy or has an interruption pending, condition code 2 is placed in the virtual PSW. Otherwise, the subchannel is available and the device and the control unit are tested for interruption pending or busy. If either is found, condition code 1 is placed in the virtual PSW and the proper CSW status is stored in the virtual machine's page zero. If all components in the subchannel path are free, DMKVIOEX proceeds to simulate the SIO by locating and loading the contents of the virtual machine's CAW from virtual location x'48' and testing the device type of the unit addressed. The device type is in the VDEVBLOK. If the device class code indicates a terminal or console, control is passed to the module DMKVCNEX with a GOTO. DMKVCNEX interprets and simulates the entire channel program, moving the necessary data to or fro. virtual storage and reflecting the proper interruptions and status bytes. When DMKVCNEX has finished, it passes control directly to the dispatcher, DMKDSPCB. If the referenced device is a spooled unit record device, DMKVIOEX passes control to DMKFSPEX for additional processing. When control returns to DMKVIOEI, it passes control to DMKDSPCH. If the device is not a terminal or a spooling device, the SIO is translated and executed directly cn the real system's I/O device. DMKVIOEX calls DMKFREE to obtain free storage and then it constructs an IOBLOK in the storage obtained. The IOBLOK serves as an identifier of the I/O task to be performed. It contains a pointer to the channel program to be executed and the address of the routine that is to handle any interruptions associated with the operation. DMKVIOEX stores the contents of the user's CAW in IOECAW and sets the interruption return address (IOBIRA) to be the same as the virtual interruption return address (DMKVIOIN) in DMKVIO. The CCW translation routine (DMKCCWTR) is then called to locate and bring into real main storage all user pages associated with the channel program, including those containing data and CCWs. The following occurs: • The CCWs are translated. • A corresponding constructed. real channel program Section 1. Introduction is 67 • The data pages are locked into real storage. • DMKCCWTR returns control to DMKVIOEX • DMKVIOEX places the user in a pseudo wait state, IOWAIT, and calls the real I/O scheduler DMKIOSQV to schedule the I/O on the real configuration. DMKIOSQV queues the request for operation on the real channel, control unit, and device corresponding to the address used by the virtual machine. When the real SID is issued, DMKIOS takes the user out of IOWAIT and reflects the condition code for the SID if it is zero. If it is not zero, the operation is further analyzed by DMKVIOIN. In any case, DMKIOSQV returns control to DMKVIOEX, which passes control to DMKDSPCH. The CCW translator, DMKCCWTR, is called by the virtual machine I/O executive program (DMKVIOEX) when an I/O task block has been created and a list of virtual CCis associated with a user's SID request must be translated into real CCWs. When the I/O operation from a self-modifying channel program is completed, DMKUNTIS is called by DMKIOS. When retranslation of OS ISAM CCWs is required, the self-modifying channel program checking portion of DMKCCWTR calls DMKISMTB. DMKCCWTR operates in two phases: • • A scan and a translate phase. A TIC-scan phase. A self-modifying channel function is also included. Other privileged I/O instructions are handled directly by DMKVIOEX. DMKVIOEX scans the virtual channel, control unit, and device blocks in the same manner as for a SID and reflects the proper status and condition to the virtual machine. In some cases (TIO), the status of the addressed devices is altered after the status is presented. If the operation active on the virtual device is actually in progress in the real equipment, the simulation of a HID or HDV is somewhat more involved, since it requires the actual execution of the instruction. In this case, the active operation is halted and the resultant condition code/status is returned to the user. The virtual channel-to-channel adapter (CTCA) simulates data transfer and control communication between two selector channels, either on two distinct processors or two channels on a single processor. Data transfer is accomplished via synchronized complementary I/O commands (for example, read/write, write/read) issued to both parts of the CTCA. Each part of the CTCA is identical and the operation of the unit is completely symmetrical. The CTCA occupies an entire control unit slot on each of the two channels attached. The low-order four bits of the unit address (device address) are ignored completely and are not available for use. The VM/370 control program support for virtual CTCA includes all status, sense data, and interruption logic necessary to simulate the operation of the real CTCA. Data transfer, command byte exchange, sense data, and status data presentation for the virtual CTCA is accomplished via storage-to-storage operations (MVCL, etc.). No real I/O operations (excluding paging I/O) nor I/O interruptions are involved. Unit errors or control errors cannot occur. 68 program checking The scan and translate phase analyzes the virtual CCW list. Some channel commands require additional doublewords for control information (for example, seek addresses). Additional control words are also allocated (in pairs) if the data area specified by a virtual CCW crosses 4096-byte page boundaries, or if the virtual CCW includes an IDA (indirect data address) flag. Space is obtained from DMKFREE for the real CCW list, and the translation phase then translates the virtual CCW list into a real CCW list. TIC commands that cannot be immediately translated are flagged for later processing by the TIC-scan phase. A READ or WRITE command that specifies that data cross 4096-byte boundaries is revised to include an IDA flag that points to an indirect data address list (IDAL) and a pair of words for each 4096-byte page, in which each word handles a data transfer of 2048 bytes (or less). The real CCW is flagged as having a CP-generated IDA. DMKPTRAN is called (via the TRANS macro) to lock each 4096-byte page. If the real CCW string does not fit in the allocated free storage block, a new block is obtained. The old block is transferred and adjusted before being released. The translation continues with the new block. The process is repeated, as needed, to contain the real CCW string. Virtual CCWs having an IDA flag set are converted to user translated addresses for each IDAW ~ndirect data address wor~ in the virtual lOlL. OMKPTR1N is called for each IDAW is. The CCW is flagged as having a user (but not CP) generated lOA. The TIC-scan phase scans the real CCW list for flagged (untranslated) TIC commands and creates a new virtual CCW list for the untranslated commands. Scan-translate phase processing is then repeated. When all virtual CCWs are translated, the virtual CAW in the IOBLOK task block is replaced by the real CAW (that is, a pointer to the real CCW list created by DMKCCWTR), and DMKCCWTR returns control to OMKVIOEX. The user protection key is saved. IBM VM/370: System Logic and Problem Determination Guide r---------~---.-~--------~~-~ 7 1 Address of Read 1 at 1 Because many of the OS PCP, MFT, and MVT ISAM channel p~ograms are self-modifying, special handling ~s required by the V6/370 control program to allow virtual machines to use this access method. The particular CCvs that require special handling have the following general format: 1 8 1 1 Address of TIC 1 1 1 at 2 -1-------------1 1 Unused 1 1 Unused I-~-------~-I 9 1 1 Data area for READ at 1 I-------------~----I 10 1 SEEK HEAD on 9 1 11 1 TIC to 4 1 1---------------------------1 I-------------------~---I o A 12 1 2 6 8 r--------------------------------------, 1 READ DATA C+7 10 bytes 1 1 1 C 1------1-----1------1-------1 1 1 1 1 1 1----1-----1----1-----------1 E F 1 13 1 Image of ____ TIC CCV at 2 L-_______________ ~ 1, ~~_______ 1-----1------ 1----------1 B D 1 Image of REID CCV at 1 1----------------------1 TIC to E 1 1 1 1 1 1----1---1------1------1 1 SEEK: SEEK head on D 1 1----1---1-------1------1 L ~ 1_______________________________ SEARCH on D+2 1 The CCV at A reads 10 bytes of data. ~he tenth byte forms the command code of the CCV at E. In addition, the data read in makes up the seek and search arguments for the CCvs at E and F. After the CCV string is translated by the VM/370 control program, it usually is in the following format: The translated read CCV (at 1) is moved to the save block at 12. The TIC CCW (at 2) is moved to the save block at 13, and the addresses of 1 and 2 are saved at 7. The read CCV at 1 is modified to point to a 10-byte data area at 8+7 in the save block. The seek head CCV at 3 is copied into the save block at 10, and the seek address is modified to point to the data area at 9. At 11, a TIC CCi is built to rejoin the translated CCV string at 4. The search at 4 (or any subseguent search referencing D+2) is modified to point to 9+2. The completed CCV string has the following format: r- 1 1 2 1 Readdata 8+7 ------------.---, 1 10 Bytes ~---I 1 TIC to 10 I------~-------·------~--I o r 2 3 4 5 6 2 6 8 ------------, 1 READDATA C+7 10 bytes 1 1----1-----1 1----1 1 TIC to 3 1 1 1 1 SEEK: SEEK head on 6 1 1----1----1---1 1 1 SEARCH on D+2 1 1----1----1-----1 1 1 1 etc. 1 1 1----1----1 1----1 1 I l l S AM word 1 L To accomplish an efficient and non-timing dependent translated operation for OS ISAM, the virtual CCV string is modified in the following manner. DMKISMTR is called by DMKCCVTR if, during normal translation, a CCV of the type at 1 is encountered. The scan program locates the TIC at 2 by searching the translated CCV strings. The TIC at 2 locates the SEEK at 3. The virtual address of the virtual SEEK CCV at E is located fro. the RCWTASK header. Seven doublewords of free storage are obtained and the address of the block is saved in the IS1M control word at 5. The seven doublewords are used to save the following infor.ation from the translated CCV strings: 3 1 14 1 1 1 -----1 Unused Search on 9 + 2 1 ----------------1 5 1 1 6 1 Etc. 1 1 IS1M word 1 -I 1 ------~-----·--~·---I 7 1 1 1----1 6 1 1 1 1 1----1---1---1 1 9 1 1 10 1 1 11 1 1 1---1 Unused Data Area for Readdata 1 - - - - - - - - - - - - . -,----1 Seek Head on 9 1 1 TIC to 4 1 L ~ The interruption return address in the IOBLOK is set to DMKUNTIS. DMKURTIS restores the CCVs to their original for.at fro. the seven doubleword extensions, moves the 10 bytes of data from 8+7 into virtual storage (at C+7), and releases the block. lor.al IIO handling is resumed by DMKVIO and DMKURT. IIO COMPONENT STATES The I/O components represented by the control blocks described in "Real I/O Control Blocks" are in one of four states and the state is indicated by the flag bits in the block status Section 1. Introduction 69 byte. If the component is not disabled, either busy, scheduled, or available. it is If the disabled bit is on, the component has been taken offline by the operator or the system and is at least temForarily unavailable. A request to use a disabled component causes the IOBLOK to be stacked with an indication of condition code 3 on the SIO and the real SIO is not performed. An I/O unit is busy if it is transferring data (in the case of a channel or control unit), or if it is in physical motion (in the case of a device). If an I/O unit is busy, the IOBLOK for the request is queued from the control block representing that I/O unit. An I/O unit is scheduled if it is not busy but will become busy after a higher level component in the subchannel path becomes available and an operation is started. For example, if a request is made to read from a tape drive and the drive and control unit are available, but the channel is bUSY, the IOBLOK for that request is queued from the RCHBLOK for the busy channel and the RCUBLOK and RDEVBLOK of the drive and control unit are marked as scheduled. FutUre requests to that drive are queued from the RDEVBLOK for the scheduled device. When the channel completes the operation, the next pending operation is dequeued and startedi the scheduled control unit and device are then marked as busy. The IOBLOKs for various I/O requests indicate the status of that request by a combination of the status bits in the IOBLOK and the queue in which the block resides. In general, an IOBLOK is queued from the control block of the highest level I/O unit (taken from device up to channel) in the subchannel path that is not available. Once the I/O operation is started, the IOBLOK is chained from the active IOBLOK pointer (RDEVAIOB) in the real device control block. Flags in the IOBLOK status fields may also indicate that a unit check has occurred, that a sense is in progress, or that a fatal I/O error (unrecoverable) has been recognized by error recovery procedures. After I/O control releases control of the IOBLOK, it is stacked on the queue of IOBLOKS and CPEXBLOKs anchored at DMKDSPRQ in the dispatcher and control is passed to the second level interruption handler whose address is stored in IOBIRA. I/O INTERRUPTIONS I/O interruptions are either synchronous or asynchronous. Asynchronous interruptions indicate the change in status of an I/O unit from the not ready to ready state or busy to not busy state. In either case, if the affected component has any pending requests queued from its control block, they are restarted and whether or not the given interrupt is processed any further depends upon the status of the interrupting component. Channel available and control unit end type interruptions restart the interrupting component. An asynchronous device end is passed to the user if the device is dedicatedi otherwise, the device is restarted. 70 An interruption is considered to be synchronous if the interrupting device has a nonzero pointer to an active IOBLOK. In this case, the following processing occurs: • If a unit check has occurred, a sense is scheduled, and when the sense is completed, the appropriate ERP is called. • If an ERP is currently in control of the task (indicated by a flag in the IOBLOK), return the IOBLOK to the appropriate ERP. • If the operation is incomplete (for example, channel end is received without device end), the IOBLOK is copied and the copy is stacked but the original IOBLOK remains attached to RDEVAIOB to receive the final interrupti then, the control unit and the channel is restarted. • If the operation is complete (that is, the device is available), the IOBLOK is detached from the device and stacked, and the device, control unit and channel are restarted. The restart operation usually dequeues the next IOBLOK that is queued to the restarted component and queues it to the next higher component in the subchannel path. When the channel level is reached, a SIO is issued and exit is taken to the dispatcher after handling any non zero condition codes as previously described. VIRTUAL I/O INTERRUPTIONS When an I/O interruption is received, the IOBLOK is stacked for dispatching and control is passed to the address specified in the IOBIRA (interrupt return address) field. For operations requested by DMKVIOEX, the return address is DMKVIOIN (virtual interrupt return address). When DMKVIOIN receives control from the dispatcher, it loads the virtual address of the unit with which the interruption is associated from the IOBLOK and calls DMKSCNVU to locate the virtual device control blocks. DMKVIOIN then tests the IOBLOK status field to determine the cause for the interruption. If the block has been unstacked because of an interruption, the field is zero. If the operation was not started, it contains the condition code from the real SIO. Note: The VIRA should not see a real condition 2 as the result of a SIO, since channel busy conditions are detected and reflected before any real I/O operati.on is attempted. code A condition code of 3 is reflected virtual machine and exit is taken to the to the dispatcher. For a condition code of 1, the CSW status field in the IOBLOK is examined to determine the cause for the CSW stored condition. The status is reflected to the virtual machine and various components of the IBM V6/370: system Logic and Problem Deter.ination Guide virtual configuration may be freed, if the status so indicates. For example, if the CSW status indicated both channel end and device end, the operation was immediate and has completed. Thus, the CCW string (real) may be released and all virtual components marked available. • To 1I0veble head DASD devices that are queued in order of seek address. • That release the affected component after initiation (SEEKS and other control commands) which are queued last-in-first-out (LIFO) from the control block. The CSW status returned for a virtual interruption must be tested in the same manner, with the additional requirement that the status be saved in the affected virtual I/O control blocks and that the CSW be saved in the VDEVCSW field for the device causing the interruption. If the unit check bit is on in the status field, the sense information saved in the associated IOERBLOR (pointed to by the IOBLOR) must be retained so that a sense initiated by the virtual machine receives the proper inforllation. Regardless of whether or not the operation has been successfully started, the caller requesting the I/O operation receives control froll DMKIOS. If a free path to the device is found, the unit address is constructed and an SIO is issued. If the resulting condition code is zero, control is returned to the caller; otherw·ise, the code is stored in the requestor's IOBLOK along with any pertinent CSW status, the IOBLOR is stacked, any components that become available are restarted, and control is returned to the caller. In any case, when an interruption is received for a virtual device, a bit in the interruption mask, VCUDVIIT, for the device's control unit is set to 1. The bit that is set is the one corresponding to the relative address of the interrupting device on the control unit. Por example, if device 235 interrupts, the fifth bit in the VCUDVINT lIask in the VCUBLOK for control unit 30 on channel 2 is flagged. Similarly, the bit in the VCUCUINT in the affected VCUBLOK is also set; in this case, bit 3 in VCHBLOK for channel 2. If the interruption is a channel class interrupt (PCI or CE), the address of the interrupting unit (235) is stored in the VCHCEDEV field in the VCHBLOK. The final interruption flag is set in the VMPEND field in the VMBLOK for the interrupted virtual machine; the bit set corresponds to the address of the interrupting channel. The next time, the virtual machine is dispatched and becomes enabled for I/O. Q~g~~~g ~~~! 2Y~YiBg: Requests to start I/O on system devices are normally handled PIFO. However, requests to moveable head DASD devices are queued on the device in ascending order by seek address. This ordered seek queuing is perforlled to minimize intercylinder seek times and to improve the overall throughput of the I/O system. CP assumes that very few virtual machines perform chained SEEKs. Therefore, the first logical address represents the position of the arm upon completion of the I/O operation. Ordered SEEK queuing is based on the relocated real cylinder. DMKIOS uses the cylinder location supplied in IOBCYL for ordered SEEK queuing. This field is initialized by the calling CP routine for paging and spooling or by the CCW translator for virtual I/O. The CCW translator, DMKCCW, supplies the IOBCYL value in the following manner: • Reads the IPL record, cylinder 0 relocates to virtual • Recalibrates, issues a real calibrate then SEEKs to virtual cylinder 0 SCHEDULING I/O REQUESTS A task that requests an I/O operation lIust specify the device on which the operation is to take place and must provide an IOBLOR that describes the operation. Upon entry to DMKIOS, Register 10 must point to the IOBLOR. The IOBLOK must contain at least a pointer to the channel program to be started in IOBCAW and the address to which the dispatcher is to pass control in IOBIRA. In addition, the flags and status fields should be set to zero. If the operation is a VM/370 control program function such as for spooling or paging, the entry point DMKIOSQR is called. If the requestor is the virtual I/O executive (DMRVIOEX) attempting to start a virtual machine operation, the entry point DMRIOSQV is called and some additional housekeeping is done. In either case, an attempt is made to find an available subchannel path from the device to its control unit and channel. If an I/O unit in the path is busy or scheduled, the IOBLOK for the request is queued to the control block of the I/O unit. Requests are usually first-in-first-out (FIFO) , except requests: queued those • Cha~nel SEEKs, relocates to the and virtual cylinder The IOBLOK queuing subroutine of DMKIOS recognizes that a request is being queued on a 1I0veable head DASD device by means of the device class and type fields of RDEVBLOK. Instead of adding the IOBLOK to the end of the queue on the RDEVBLOK, the queuing routine sorts the block into the queue based on the cylinder number for the request. The cylinder number for any request to a DASD device is recorded in the field IOBCYL. The queue of IOBLOKs on a real device block is sorted in ascending order by seek address, unless the entire device is dedicated to a given user. In this cas~, DMKIOS does not automatically schedule the device, and no more than one request can be outstanding at anyone time. When an outstanding I/O request for a device has completed, DMKIOS attempts to restart the device by dequeuing and starting the next IOBLOK queued on the device. For non-DASD devices, this is the first IOBLOK queued. However, for moveable headDASD devices, the queued requests section 1. Introduction 11 are dequeued in either ascending or descending order, depending on the current position (recorded in BDEVCYL) and the direction of motion of the arm. If the arm is seeking up (that is, toward the higher cylinder numbers), the queue of IOBLOKs is scanned from the first block toward the last until an IOBLOK is found with an IOBCYL value equal to or greater than the value in BDEVCYL, or until the end of the queue is reached. At this point, the device is flagged as seeking down and the queue is scanned from last to first until an IOBLOK with an IOBCYL value equal to or less than RDEVCYL is found. When IOBLOK is found, it is dequeued and started. The direction of motion is indicated by an RDEVFLAG bit and the next request is dequeued in the down direction until the head of th~ queue is reached. Because the queue itself is a two-way chained list, no special handling for null or unity set lists is required, and the ordered seek algorithm returns to FIFO queuing. ]~~!£~!~~ £~~nn~! ~Y~~2!!: One of the facilities of the VM/370 control program allows a virtual machine to control one or more channels on a dedicated basis. The channels are attached to the virtual machine by using the privileged ATTACH CHANNEL co.mand. A virtual machine can have one or more dedicated channels. In addition, channels can be split between virtual machines but a dedicated channel cannot be shared between two virtual machines. For instance, channel 1 could be dedicated to virtual machine A, and channel 2 could be dedicated to virtual machine B, or they could be both dedicated to virtual machine A or B. with a dedicated channel, all virtual machine device addresses must be identical to the real machine device addresses. For instance, virtual device 130 must be real device 130, and virtual device 132 must be real device 132. With dedicated channels, CP does not perform any virtual device address mapping. CP error recording and channel recovery procedures are still in effect for dedicated channels. The dedicated channel support can be used in conjunction with the virtual=real feature for any virtual machine that is occupying the virtual=real storage space. appropriate invoked. processing routine in DMKVCN is !!!!!! ~!!~g Simulation ~2!!:tin.!§!: Obtains a buffer for input ~;~;-ii~i- free storage. The location of the buffer is set in the VCONCTL block. The DMKQCNRD routine is called to schedule and perform an actual read to the corresponding real device representing the user's virtual console. If SET LINEDIT ON is specified, the buffer data is edited and translated to EBCDIC. When the read is completed, the data is moved to the specified user address obtained from the address portion of the virtual CCW. If command chaining is specified, processing returns to fetch and analyze the next CCW. If command chaining is not specified, the virtual CSW is constructed in the VDEVBLOK and an interrupt is flagged as pending in the VMBLOK. The Write Simulation Routine: Obtains a buffer f~i the-constiuctI~n-of--the-output message from free storage. The virtual machine data is located from the virtual CCW address in the VCONCTL block and moved to the data buffer. The DMKQCNWT routine is called to write the data in the buffer and provide the necessary length, translation, and format functions. Control is received at the DMKVCN module upon completion of the writing. At this point, the virtual CCW is re-examined. If command chaining is specified, processing continues to fetch and analyze the next CCW. If command chaining is not specified, the virtual CSW is constructed in the VDEVBLOK and an interruption is flagged as pending in the VMBLOK. The Control Simulation Routine: Is used for the NOP operation requires no data transfer or I/O operation. An ALARM operation has no equivalent on low speed teleprocessing equipmenti thus, a message indicating the ALARM operation is constructed. DMKQCNWT is called to output the constructed message. If the command is chained, processing continues (for NOP or ALARM) to fetch the next CCW and analyze it. If command chaining is not specified and this is not the first CCR, a virtual CSW is constructed in the VDEVBLOK and an interruption is flagged as pending in the VMBLOK. If this is the first (and only) CCW, then a condition code of 1 is presented with channel end and device end in the virtual CSW. NOP -an~--iLiR"--OperatI~ns:·-- A VIRTUAL CONSOLE SIMULATION 1!!!Y~! ~!!n§~ QE~!~:ti2n: Is similar to a control operation, because no actual I/O operation is performed. However, there is data transfer. The sense data from the VDEVBLOK is moved to the virtual storage location specified in the virtual CCW address. If the command is chained, processing continues to fetch the next CCW and analyze it. otherwise, an interruption is flagged as pending in the VMBLOK. ! DMKVCN receives control from the virtual machine I/O executive, DMKVIO. When control is received, the device is available with no interruptions pending. A console control block, VCONCTL, that is obtained from storage and chained from the virtual device control block, VDEVBLOCK, by DMKLOG is accessed for use during the interpretation of the virtual console I/O sequence. The user's CAW is examined for validity. If it is valid, the TRANS macro is issued to fetch the first user CCW. This ccw is moved to the VCCNCTL block for analysis. The CCW is analyzed to determine if it is a read, a write, a control, a sense, a TIC, or an invalid operation. Based upon the analysis, the 72 !i!!Y~! !!£ Q~!!~~!!~n: Fetches the virtual CCW addressed by the TIC address and analyzes the fetched CCW. If the fetched CCW is itself a TIC, or if the TIC is the first CCR, a channel program check condition is reflected to the virtual machine as an interruption or as a CSW stored condition, respectively. ! IBM VM/370: system Logic and Problem Determination Guide J~Y~!~~ Q£~~~!~2~: Any other operation is considered invalid. Command reject status is posted in the virtual sense byte and the operation is terminated with unit check status presented in the virtual CSW. r----------------"---------'--·----, IOperationl Address IF1ags ITP Op 1 Count 1 1 Code I Field 1 1 Code 1 1 1 1 byte 1 3 bytes 11 by tel 1 bytel2 bytesl ----J L-_________ ____________________ REMOTE 3270 PROGRAMMING o 31 32 For a basic understanding of CP processing of data relating to 3270 devices on binary synchronous lines, the information and terminology contained in J]~ ~~lQ In!Q~!s!i2~ Q!2£!~I 212!~! f2!£2n~n! Q~2£!i£!!Q~, GA27-2749, and ~~~~~a! !~!Q~m~!!Qn - ]i~s~I 2Y~£h!Qn2~2 ~Qmm~n!£a!!Qn2' GA27-3004, is required. Operation Code contains the hexadecimal value of the type of operation performed by the command. 7 8 Text messages to and from remote terminals and printers can only be achieved when the bisync line is in text mode. • Text messages from a remote device can be the result of a general poll or specific poll operation to the related device or devices on the bisync line. This polling communication interface is accomplished by each line-connected control unit having unique specific poll and general poll recognition circuitry and by the CP terminal list of valid bisync lines and 3270 remote control unit addresses. This list, the terminal list, is generated by VM/370 system generation procedures employing TERMINAL and CLUSTER macros. For more details about terminal list generation, see the !~L1IQ: R!a~n!ng • • • sng X'Ol' X'02' X'03' X'09' X'23' X'27' X' 2F' Every message (text or control) that is issued by CP mayor may not be responded to by the remote station or control unit. The type of response (or absence of response) that CP receives depends on the receptiveness of that device or control unit to the previously sent message (is the device ready and enabled and accurately addressed) and the content and correctness of the message (no line errors). To establish the relationship of the line of terminal response to a particular line or device write or read operation, CP employs an operation "tracking" facility (TP op code) imbedded in the issued CCws. The function performed by the CP op code is described in the following CCW formats. 63 WRITE READ NO-OP POLL SET MODE ENABLE DISABLE Address Field Depending on CCW usage, this field may address an: Area The address of the buffer) located in BSCREAD. data area (read the BSCBLOK at Table The appropriate location in the table of data-link control characters provided in the module DMKGRF (Example: RVI, EOT, ENQ). 212!~m g~n~~~!!Q~ ~~!g~. Reliability and dependability of line operation is achieved by the use of: a double addressing scheme, control characters with a rigid message protocol, and complex redundancy check characters appended to transmission messages. Examples of these techniques are shown in the formats that follow. 47 48 Valid operation codes are: A digest of some of this essential information as it applies to VM/370 follows: • 39 40 Response (BSCRESP). The address location of the response message in the BSCBLOK. List The appropriate entry in terminal list (NICBLOKS) associated with the READ or WRITE operation. The entry for WRITE operation is at location BSCSBL. The entry for the READ operation is at location BSCPOLL. Note: To see how the key words AREA, TABLE, RESPONSB, and LIST are used, refer to the CCW sequences described in "I/O Program Routines for Bisync Lines and 3270 Remote Devices" in this section. Flags The flag bits turned on in the CCW: CC (channel commands). CD (chained data), SILl (suppress incorrect length indicatio~ , skip (suppress data transfer to main storage) and PCI (program controlled interrupt). TP Op Code An imbedded teleprocessing operation code in the CCws used in bisync line communications. This code is inspected by the secondary interruption handler, DMKRGFIN, when section 1. Introduction 73 channel end and device end are received. The code is also used by the error processing module, DMKBSC. The code indicates the function being performed by the associated command. For use of the TP op codes, refer to the formatted CCWs that follow. count Refers to the byte length of READ or WRITE operation. the CCW I/O PROGRAMS FOR BISYNC LINES AND REMOTE 32105 Before data communication to remote 3210 equipment can take place, the remote teleprocessing line, the control unit and the device(s) must be enabled for communication. This occurs when control unit hardware recognizes a unique string of characters transmitted on the line from CPo Disabling a line occurs in a similar manner. The following is the format of the CCWs used in the enabling/disabling operation: ,.--------------------------------------, 10pera-ICommandlAddress IFlagslTP OplCountl I tion I Code I I I Code I I ,.----------------------------, 10pera-ICommandlAddress IFlagslTP OplCountl Ition I Code 1 1 I Code 1 I 1------------------------------1 IWrite 1 01 1 Table 1 CC, I 02 1 1 I 1 I SILl 1 1 1 1 an EOT I 1---------------------------1 1 write 1 01 1 List 1 CC, 1 03 ILIST 1 ladI 1 1 SILl 1 1 1 Idress-I 1 1 1 I I ling I I 1 1 1 1 Ichar. 1 1 1 1 1 I 1---- --------1 IRead 02 IResponsel SILII 05 1 2 1 IRe1 1 1 1 1 1 1 _ _ _ _ _ _1_ _ _ _ _ 1 _ _ _ _1_ _ _ --'1 1L sponse _ _ _ _ _I _ _ _ _ _ _ i ----.-----------, 10pera-ICoDmandlAddress IFlagslTP OplCountl Ition 1 Code 1 1 ICode 1 1 1 ----------1 IWrite 1 01 Area 1 CC, 1 10 Ivari-I 1 text 1 1 1 SILl 1 1able I 1---------------------1 I Read I 02 1 Responsel SILII 11 1 2 I IRe1 1 I 1 1 1 I 1 1 I 1 1sponse I ------------------------' , 1-------------------------------------- 1 1Di s- 1 X' 2F ' I 0 1 CC, 1 01 1 1 1 1 SILl 1 1 1 1abl e l l ILine 1 1 1 1 1 1 1-----·------------------ 1 ISet 1 X'23' X'40' CC, 1 01 1 1 1 SILl 1 1 1 1 Mode 1 1 1 IEnablel X'21' 0 SILII 01 1 Line 1L _ _ _ _ _1 _ _ _ _ _ _ _ _ _ _ _ •_ _ _ _ _ _ _ _1_ _ _ _ _ _ _ _ _ _ J1 to be reset mode. reset In situations where the line is found in text mode, CP can issue a write sequence to put the bisync line in control The following format illustrates the write CCW. r----------------------------------, 10pera-ICommandlAddress IFlagslTP OplCountl 1tion 1 Code 1 1 ICode 1 1 1------------------------------1 r-----------------"-----------------, IWrite I 01 1 Table I SILII 09 I 1 I 1 _ _ _ _ _1 _ _ _ _ _ _ I ____ 1 ____ 1 _ _ _.J1 1L _EOT ____ 10pera-ICommandlAddress IFlagslTP OplCountl Ition 1 Code 1 1 ICode I 1 1-----1 IDis- 1 X'2F' 0 SILl 1 01 1 lable 1 1 1 ILine 1 1_ _ _ _ _ _ _ _ _ J1 L ____ After a line is then be directed to sequence of events write continuous) is enabled, communication a particular resource. (for a write disable as follows: can The and Send a data link control character on the line that places the control unit in control mode. This mode makes the control unit receptive to the specific address indicated by the second CCW. The third CCW is a read CCW that is needed for the acknowledgement response from the addressed control unit. Normally, in response, CP transmits a block of data to that device with a write text CCW. Acknowledgement of receipt of this data is contained by the read response (write continue) CCW. The format of the CCW write initial and write continue operation follows. 14 In situations where the expected response from a remote station was not received or was invalid, the channel program may request the remote station to retransmit the response. The following write ENQ format shows this sequence. The remote station, upon receipt of the ENQ message, responds by transmitting the expected or valid response to the response area indicated by the second CCW. r-------- -, 10pera-ICommandlAddress IFlagslTP OplCountl 1 tion I Cede 1 1 ICode 1 I 1------------------- IWrite I 1 ENQ 1 01 1 Table 1 1--------------- 1 CC, 1 03 1 SILII --I 1 1 1 1 IRead 1 02 1Responsel SILII 11 2 1 IRe1 1 1 1 1 1 _ _ _ _ _1_ _ _ _ _ _1_ _ _ _1_ _ _ _ _ _-.A1 1L sponse _____ IBM VM/310: system Logic and Problem Determination Guide Read operations occur following a general poll or a specific poll for text messages. In a general poll sequence, CP transmits the general poll characters to the attached control unit on the bisync line. The control unit recognizes the polling request, then the list (referred to in the poll eew) of enabled devices is scanned for any messages that are queued and ready for transmission. A positive acknowledgement (yes, I have a message to transmit) from any of the attached devices causes the next CCW to be skipped. The last CCW provides the read buffer and the count necessary for the incoming data block from the first remote station on the list that had a message queued for transmission. If, however, all remote stations respond with negative acknowledgement (no messages queued) or any station queried for a response fails to respond, then the channel program ends with the third ccw. The following read initial format shows the initial read CCW sequence. r-----------------------------------------, IOpera-ICommandlAddress IFlagslTP OplCountl Ition I Code I I ICode I I 1------------------------------1 IWrite I 01 I Table I CC, I 02 I 1 I I I SILII I I I EOT I 1------------------1 IPol1 I 09 List ec, I 03 ILIST I I I 1-------11/0 I 03 INoI lopera-I Ition I IIRead SILl I 0 SILII 07 I I I I I I I I I I I I I r--------------- i I Opera-I Command I Address IFlagslTP OplCountl Ition I Code I I ICode I I 1----------------------------1 01 I Table I CC, I 06 I 1 I I I SILl I I I 1--------------------------------1 IRead I 02 I Area I SILII 10 I 162 I IWrite I I I NAK Text I I I I I I IL_________________________________________ ~ Once ep message processing receives an error-free message fro. a remote station, CP sends an RVI control character to the remote station before processing the message. The remote station, upon recognition of the RVI character, halts the sending of additional queued data and responds with EOT (instead of the normal ACKO/ACK1 response). The second ceN of the read interruption sequence processes the EOT response from the remote station as shown in the format below. r-------------------- ---, I Opera-ICommand I Address IFlagslTP OplCountl Ition I Cede I I ICode I I I------------~--------------I IWrite I X'01' I Table I I I RVI I ce, I 06 I 51 LI I I I 2 I I 1------------------------1 IRead I X'02' IResponsel SILII 11 I 2 I I ReI I I I I I L Isponsel _________________________________ I I I I- - - - - JI ---------------1 SILII 10 I 162 I 02 Area Text I _ IL___________________________ DATA FORMATS - BISYNC LINES AND REMOTE 3270 After CP receives a message from a remote station, it may ~eissue the initial read sequence to poll the remaining stations on thelist (assuming the list of enabled devices was not exhausted on the first pass of the initial read sequence). In the event that the list was exhausted on either the first or a subsequent initial read sequence, CP starts the poll delay, then allows the poll delay interval to expire before starting another read scan to the line (assuming CP has no higher line priority tasks to process) • If, in the process of receiving messages from remote stations, CP receives a message block that is invalid or its beginning or ending bisync control characters are not recognized, CP can elect to send a negative response back to the remote station. This negative response, the NAK control character, causes the remote station to retransmit the previous message to CPi this incoming message is processed by the second CCW of the read repeat sequence as shown in the format below. CP, in conjunction with remote 3270 support, uses the following formats for its text messages. For a detailed explanation of the abbreviations used, see the IBM 3270 Information R!§£!gx ~~§t~m £Q!£Q~~nt GA27-2749. R~§£~iEli2n:-order-io: Display commands use this message format for the placement or erasure of data anywhere on the display screen. The display commands that implement this function are: WRITE (XIF11), ERASE/WRITE (XIF71) and COpy (X'F7 1 ). Section 1. Introduction 75 ~IIQI ~~!~g§ ~!~! ~~I~!! r-------------------------- Another form of input message is the error status message. Error status is processed by the DMKBGF module. The characters, IB, following the SOH signify that this message contains sense and status data. The format of this message follows. ISTXIESCICMDIWCCIBSAI Buffer I Orders ISBAI &_ Text I _ _ _I_ _ _ _I _ _ _I_ _ _ _IAddress LI _ _ _ _ _ _ _ _ _ _ _ _I_ _ _ _ _ _ _I_ _ _ _I 2 variable - - - - - - // - - - - , I Buffer I IAddress I I ETX I I I _ _ _ _ _ _ _ _ _ _ / / _ _ _ _ .J 2 r-------------------·-·-----·------, 1 IIndexlSOHI I I B ISTXICU IDeviSense/IETX I IByte I I I I IADBlldrlStatusl I Bytes I _____ I ___ I ___ I _ _ _I _ _ _I _ _ _I _ _ _I_ L ____I _ _ - - . lI The COpy command is limited to remote terminal display devices and compatible printers located on the same control unit. Action starts by pressing a PF key designated for the COPY function. CP responds by sending a message to the control unit that contains both the designated printer and the display station that requested the action and directs the control unit to print the designated display buffer to the printer specified. The format of the COpy messages follow: The test request message, upon receipt from display terminals, is ignored by CPo The input inhibit mode that the display terminal enters upon pressing the test request key can be reset only if the terminal user presses the BESET key. The characters, 1/, following SOH indicate the test request function. The format of this message follows. .--------------------------------, I Index I SOH I I I / I STX I Text I ETX I _ _ _ _ _I_ _ _ _ _I_ _ _I_ _ _ _ I _ _ _ _I_ _ _ _ _ _I _ _ _ _--'I Il _BYTE r--------------------------, ISTXIESCI CMD ICCCI From IETXI IL _ _ _I_ _ _ _ I _X'F7' IAddressl _ _ _ _ _I_ _ _ _ _ _ _ _ _ _ _ --.lI ALLOCATION MANAGEMENT Beal storage space above the Control Program nucleus is made up of the dynamic paging area and the free storage area. Page frames (allocation space in real storage for a page of data) in the dynamic paging area are allocated to virtual machines and the control program to satisfy paging requests. Blocks of storage, requested by virtual machines and CP for working storage, are allocated from the free storage area. r------------------------, ISTXIESCI CMD IWCCISBAIBuff IETXI IX'F1'1 I IAdr I I I I IL_________________________ I I I I I (4040 I --.lI The following is representative of typical input-to-processor message formats. The format of a multiline read operation follows. .---------------------------------------I Index ISTXICU IDevlAIDICursor ISBAIBuff I I Byte I I Adr I Adr I I Address I I Address I l _ _ _ _. _ _ _ _ _ _ _ _ _ _ _ _ ---I / - - - - - - - - - - - - - / / - - - - , I Text ISEAI Buff I Text I I I I I I Adr IETX I I I ---I/------------------//---------' 76 NORMAL PAGING BEQUESTS If a program interruption is caused by a normal paging request (not from a virtual machine that is running in EC mode with translation on), DMKPRGIN determines whether a segment or page translation error has occurred. If one of these errors occurred, an invalid address interruption code is set, and the interruption is reflected to the virtual machine supervisor. If a segment or page translation error bas not occurred, the virtual machine's current PSW is updated from the program old PSW (PROPSW~, the address of the current VMBLOK is placed in register 11, and DMKPTRAN is called to obtain the required page. When the paging operation is completed, control is returned to DMKDSPCH. NEXT storage, the management of real storage~ and the management of auxiliary storage (DASD paging devices). IBM VM/370; System Logic and Problem Determination Guide process of translation, CP encounters a CCW that addresses a page that is not resident in real storage, a call is made to the paging manager to make the referenced page resident. When operating in the CP relocate environment, each virtual machine's virtual storage space is described by two sets of tables. • • One set, the segment and page tables, describes the location . and availability of any of the virtual machine's virtual pages that may be resident in real storage. Locations in these tables are indexable by virtual address, and the entries contain index values that reference corresponding real storage addresses. In addition, each table entry contains an indication of whether the corresponding virtual page is available to the user in real storage. These tables are referenced directly by the DAT feature when the virtual machine's program is running. The second set of tables, called swap tables, is a map of the locations of the virtual machine's pages on the DASD devices that comprise the system's paging or auxiliary storage. The DASD addresses in these tables can either represent the source of a page of virtual storage (the location to which a page may be moved, if necessary) or a dummy address, indicating that the given page has not yet been referenced, and thus has a value of binary zeros. The swap tables are arranged in a format indexable by virtual storage address. In addition to containing the address of a page, each entry contains flags and status bytes that indicate such information as: • The storage protection keys to be assigned to the page when it is made resident. • Whether the page is currently on its on its way into or out of the system (in transit), etc. These tables, are not referenced directly by the hardware as are the page and segment tables, but are used by paging management to locate user pages that are needed to execute a program. virtual storage management is done by the technique known as demand paging. This means that a page of virtual storage is not 'paged in' from its DASD auxiliary storage area until it is needed. CP does not determine the pages required by a virtual machine before it executes. A demand for a page can be made either implicitly by the virtual machine or explicitly by CPo While the requested page is being fetched, the requesting virtual machine is unable to continue execution; however, it may be possible to run other tasks in the system, and CP runs these while the needed page is being paged in. When the requested page is resident, the virtual machine can be run and is dispatched in its turn. In addition to demanding pages, virtual machines implicitly or explicitly release page frames of their virtual storage space. Part of the space may be explicitly released from both real and virtual storage via a DIAGNOSE instruction which indicates to the control program ihose page frames that are to be released. An entire virtual storage is released when a user IPLs a new operating system or logs off from the system. CP also has virtual storage associated with it. This space contains CP (some parts of which need not always be resident in real storage) , and virtual storage buffers for spooling and system directory operations. Although CP makes use of virtual storage space for its execution, it does not run in relocate mode. Thus, nonresident modules must be completely relocatable. Real storage management allocates the system's page frames of real storage to satisfy the demands for virtual pages made by the system's virtual machines. Efficiency of allocation involves a trade-off; the paging manager uses only enough CPU time to ensure that: • The set of virtual storage pages that are resident represent those pages that are most likely to be used. • A sufficient number of cycles is available to execute virtual machine programs. • An implicit demand for a page is made when a program attempts to reference a page that is not available in real main storage. This attempt causes a program interruption with the interruption code indicating a page or segment exception. Upon recognition of this condition, control is passed to the paging manager to obtain a page frame of real main storage and to bring in the desired page. Inefficiency in the first area causes a condition known as thrashing, which means that highly used pages are not allowed to remain resident long enough for useful work to be performed by or on them. Thrashing could be aggravated by the paging manager's page frame selection algorithm or by a dispatcher that attempts to run more tasks than the system can handle (the sum of their storage requirements exceeds the real paging space available in the system). Thus, the paging manager must keep statistics on system and virtual machine paging activity and make these statistics available to the dispatcher to detect and prevent a potential thrashing condition. • An explicit demand for a page can be made by CP (for example, in the course of translating a user's channel program). If, in the Inefficiency in the second area causes an unacceptable ratio of CP overhead to virtual machine program time, and in extreme case may Section 1. Introduction 11 cause CP to use excessive CPU time. To understand how allocation is determined by CP, the way in which the inventory of real storage page frames is described to the system must be understood. Each page frame (4096-byte block) of real storage in the system is in one of two basic states: non-pageable or pageable. A non-page able page must remain resident in real storage for some finite period of time; thus, the page frame cannot be taken from its current owner to give it to someone else. Pages can be either permanently or temporarily non-pageable, depending on their use. Temporary loks usually occur when an I/O operation has been initiated that is moving data either to or from the page, and the page must he kept in real storage until the operation has completed. A page can also be if it contains an routine. temporarily non-pageable active nonresident CP In addition, a page can be non-pageable through use of the LOCK command. Pages locked this way are permanently resident until they are explicitly unlocked by the UNLOCK command. Pages that are usually considered permanently non-pageable are those that contain the resident portion of CP and those that contain the system's free storage area in which control blocks, I/O buffers, etc. are built. The data area that page management routines use to control and allecate real storage is the cortable. Each page frame of real storage has a corresponding entry in the cortable, and because the table entries are fixed in length and contiguous, the entry for any given real page frame may be located directly by indexing into the table. Each entry contains pointers that indicate both the status and ownership of the real page which it represents. Some pointers link page table and swap table entries to the real page (and thus establish ownership), while others link the entry into one of several lists that the paging routines use to indicate the page frame's status and availability for paging. A given cortable entry .ay appear on one of three lists if its real page frame is available for paging; however, if the page referenced is locked or it is in transit, its entry is not in any list and is not referenced when available page frames are being searched for swap candidates. The lists are known as the freelist, the flushlst, and the userlist, and they represent various levels of page frame availability. • 78 The freelist contains page frames that are immediately available for assignment to a requesting virtual machine. The virtual storage pages for which they were last used have either been released by their owners or they have been paged out to auxiliary storage. Requests for real storage are always satisfied fro. the freelist. If the list has been depleted, the requestor waits until a new page frame becomes available as the result of a virtual storage release or a swap-out. • The flushlist contains page frames that belong to those virtual machines that have been dropped from an active dispatching queue. The flushlst is the first place that the page frame selection routine looks to find a page to swap out or to assign to the freelist for a virtual machine that requires real storage space. • The userlist contains the cor table entries for all other pageable pages in the system that belong to active virtual machines. Requests for real storage fall into two general categories; those that are requesting space for a page of virtual storage, and those (such as requests for CP work space) that need page frames for their own QS~. The former, more general case is discussed first, because the latter case is a suhset of the first. The main page manager routine, DMKPTRAN, maps a request for a specific virtual storage address into a page frame of real storage. This requires that the virtual page be read in and the necessary tables be updated to show the proper status of the page frame. D"KPTRAN requires that the caller supply only the virtual address to be translated and any options that apply to the page to be located. Most calls are made via the TRANS macro, which sets up the necessary parameters, determines if the required page is resident, and calls D"KPTRAN if it is not. When D"KPTRAN receives control, it first tests to see if the requested page is resident. This is done via the LRA instruction. If the page is resident, the routine locks the page if requested and exits to the caller. If the LRA indicates that the page is unavailable, it is still possible that the required page is resident. This occurs if the page frame has been placed on the freelist but has not been assigned to another virtual machine. When the page swap routine removes a page frame from a virtual machine, the unavailable bit is set in the corresponding page table entry; however, the real main storage index for the page frame is left unchanged. The page table entry is set to zero only when the corresponding page is actually assigned to another virtual machine. Thus, if D"KPTRAN finds the page unavailable, a further test is made on the page table entry to see if the page can he reclaimed. If the entry is not zero (aside from the unavailable bit) , the cortable entry for the page frame is removed from the freelist and the page frame is returned to the calling virtual machine. If the page table entry corresponding to the requested virtual page is zero, the required page is not in real storage and must be paged in. However, it is possible that the page is already on its way into lIain storage. This condition is indicated by a flag in the SWPTABLE entry for the virtual page. The DMKPAGIO routine m~intains a queue of CPEXBLOKs to be dispatched when the pending page I/O is complete. The CPEXBLOK for the page in transit is located and IB" V"/370: system Logic and Problem Deter.ination Guide a new CPEXBLOK, representing request, is chained to it. the current Before exiting to wait for the p~ging operation to complete, DMKPTRAB checks to see if the deferred return (DEFER option) has been specified. If it has not, DMKPTRAH returns to the caller. If the DEFER option has been requested, DMKPTRAB exits to the dispatcher to wait for page I/O completion. When the requested page has been read into real storage, the list of CPEXBLOKs are unstacked fifo to satisfy all requests for the page that arrived while it was in transit. If a page is not in transit, a page frame of real storage must be allocated to fill the request. Before the allocation routine is called, a test is made to see if the caller wishes the return to his routine or to be delayed until after the requested page is available. If the DEFER option is not requested, DMKPTRAN returns to the caller after first building and stacking a CPBXBLOK that allows processing of the page request to be continued the next time the dispatcher (DMKDSPCH) is entered. DMKPTRAN next calls the freelist manager (DMKPTBFR) to obtain the address of the next available cortable entry. DMKPTRPR maintains a fifo list of the cortable entries for those page frames that are immediately available for assignment. As DMKPTRFR releases these page frames, a check is made to see if the number of entries on the freelist has fallen below a dynamically maintained minimum value. If it has, the page selection routine (select) is called to find a suitable page frame for placement in the freelist. The number maintained as the freelist threshold has a value equal to the number of users in queue1 plus the number of users in queue2 plus 1. The freelist is replenished directly by users releasing virtual storage space. The page-out routine, DMKPGSPO, calls DMKPTRPT to place released page frames directly on the freelist. However, most replenishment is done via the page selection routine, select. select is called by DMKPTRPR when the free list count falls below the current m1n1mum, or when a user page is reclaimed from the freelist. In either case, the selection algorithm attempts to find a page to swap to auxiliary storage. The highest priority candidates for a swap are those page frames whose cortable entries appear on the flushlst. Select attempts to take a flushed page frame before it takes a page frame from an active user. If such a page frame is found, it is checked to see if it has been changed since page-in. If not, it is placed in the freelist by DMKPTRPT; otherwise, it is scheduled for a swap-out by dequeueing the cortable entry from the flushlst, constructing a CPEXBLOK for dispatching after I/O completion, and exiting to DMKPAGIO by a GOTO. After the paging I/O is complete, the entry is placed on the freelist via a call to DMKPTRFT. If the flushlst is exhausted, select must take a page frame from an active user by examining the page frames represented by the entries in the userlist to locate the least recently used user page frame. This list is scanned from top to bottom, and each page frame is tested to see if its hardware referenced bits have been set. If a page frame has been referenced, its bits are reset and it is queued to the end of the userlist. This process is continued until either an unreferenced page frame is found or the list is exhausted. An unreferenced page frame is immediately selected. Hvwever, if the list is exhausted, it is rescanned from the top. An unreferenced page frame is always found; in the worst case it is the first one tested on the userlist at initial entry. However, if this occurs, it indicates that the rate of entry to select is too low to permit differentiation between highand low-usage page frames. Once a page frame has been selected and page-out is scheduled, control is returned to DMKPTRPR, which then passes control back to DMKPTRAN with the address of the cortable entry that was allocated. In most cases, page-outs are completely overlapped with page-ins. Approximately one half of all page-ins require a corresponding page-out. Once a page frame has been assigned, DMKPTBAH checks to see if a page-in is required. It usually is, and the DASD address of the virtual storage page must be obtained from the user's swap table entry and the I/O operation scheduled. However, if the page frame has not yet been referenced (as indicated by a DASD address of zero), the real main storage page frame is set to zero. After the page-in operation has been queued, DMKPTRAN exits to the paging I/O scheduler (DMKPAGIO) which initiates the paging operation and exits to the dispatcher (DMKDSPCH) to await the interruption. After the required page has been read in or the page frame has been set to zero, DMKPTRAH queues the appropriate cortable entry to the end of the userlist, where it eventually is available for page selection. After developing the real storage address that corresponds to the requested virtual address, DMKPTRAH tests to see if the caller has requested that the page be locked. If LOCK is requested, the cortable entry is de-queued from the userlist and is not available for selection. A resident page can also be locked by removing it from the USERLIST. In addition, a LOCK count is maintained in the cortable entry so that when all locks have been satisfied the page frame can again be made available for paging. Some requests for main storage page frames are handled differently than general virtual-to-real storage mapping. In particular, it may be necessary for CP to obtain additional free storage for control blocks, I/O lists, buffers, etc. This is handled by the free storage manager, which makes a direct call to DMKPTRPR tc obtain the needed storage. Usually this storage is immediately available (due to the page buffering technique previously described) • However, if the freelist is exhausted, the request for free storage is recognized as a high priority call and queued first on the list of those waiting for free page frames. The real storage manager (DMKPTR) accumulates paging statistics that the scheduler (DMKSCH) section 1. Introduction 79 use to anticipate user storage requirements. A count of page-reads and page-writes is kept in each virtual machine's VMBLOK; the corresponding total counts for the system are kept in DMKPSA. A running total of the number of pages a virtual machine has resident, at each instance of page-read, is kept in the VMBLOK. A count of the number of times a virtual machine enters page-wait, because a page frame has been stolen from it, is also kept in the VMBLOK. The section entitled "Controlling the Depth of Multiprogramming" under "Dispatcher/Scheduler" describes the use to which the scheduler puts these counts. !~L1IQ Yi£!Y~!=~~~! QEi!2~: The V~/370 virtual=real option involves the mapping 1n a one-for-one correspondence of a virtual machine storage area with an equivalent real storage area. For instance, virtual page 1 is in real page frame 1 and virtual page 20 is in real page frame 20. virtual page 0, is relocated at the end of the virtual storage space because it cannot occupy real page frame O. The CP nucleus is altered at system generation to support the virtual=real option. Virtual machines with virtual=real (specially identified in the directory) can then log on and use the space reserved for this option. That space can be used by only one virtual machine at a time. Two virtual machines with the virtual=real capability cannot occupy the same space at the same time. The virtual=real option allows the virtual machine to bypass the control program's CCW translation. This is possible because I/O from a virtual machine occupying a virtual=real space contains a list of CCWs whose data addresses reflect the real storage addresses. The restriction in this situation is that the virtual machine does not perform I/O into page frame 0 because this would perform a· data transfer into real page frame O. At the same time, it is assumed, and cannot be checked, that the virtual machine also does not attempt to do I/O beyond the bounds of its virtual addressing space. To do so would cause the destruction of either the CP nucleus, which resides beyond the virtual machine space, or another user's page. The bypassing of CCW translation for the virtual machine occupying the virtual=real space is only invoked after the virtual machine has executed the SET NOTRANS ON command. This command can only be issued by the virtual machine occupying the virtual=real space. The command initiates the bypass of CCW translation. This option is automatically turned off if the virtual machine performs an explicit reset or an implied reset by performing a virtual IPL. During virtual machine IPL, I/O must be performed into page frame O. For this reason, normal virtual IPL simulation assumes CCW translation in effect to accomplish the full simulation. Once the IPL sequence has completed, CCW translation can be bypassed by issuing the SET NOTRANS ON command. When the virtual machine demands a page frame thr?ugh normal use of CP's page tables, the pag1ng routine recognizes the virtual=real capability. It then assigns the virtual page to the equivalent real page frame and does not 80 perform a paging operation, because all these pages are resident and are never swapped out. Note: The virtual machine running with vIrtual=real is still run in System/370 relocate mode. Virtual 270X lines and sense operations from the virtual machine do not use the virtual=real function. These invoke CCW translation for the virtual enable/disable lines and the transfer of the sense bytes. The UNLOCK command has a VIRT=REAL operand that essentially releases the virtual=real area for normal system paging use. Once the area has been released, it can only be reclaimed for additional virtual=r~al operations only by an IPL of the VM/370 system. The size of the virtual=real area is an installation specification that is part of the special nucleus generation procedure that is outlined in the !1!Ll1Q: E!!!~!!i!!.9 ~!!g ~I§i~!!! !!~!!~!:~:t!s.m §y!g~. The size of the area must be large enough to contain the entire addressing s~ace of whatever virtual machine wishes to occupy that space. A virtual machine can use a smaller space than is provided but cannot use a larger space without regenerating the CP nucleus. DASD STORAGE MANAGEMENT Any virtual machine's virtual storage pages that have been referenced but are not resident in real storage must be kept in slots on the DASD paging device. DASD page space is assigned only when the page is selected for a page-out. Certain DASD pages may also be marked read-only. Thus, the DASD address slot initially associated with the Fage should be considered to be the source of the page only. If the page is changed after it has been read into real storage, a new slot must be obtained when it is paged out. Examples of read-only pages are those which contain portions of pageable saved systems and pages which are part of a system spool file. Slots can be reassigned when DMKPTRAN finds that it must swap a page out to a movable head DASD device. In this case, the old slot is released and the new slot is obtained. If a new slot is required, DMKPGT is called to supply the address of an available slot. DMKPGT maintains a chain of cylinder allocation maps for each cylinder that has been assigned for either virtual storage or spool file paging. The allocation chains for spooling are kept separately from those used for paging so that they can be checkpointed in case of a system failure. However, in other respects they are the same. The allocation blocks for a given volume are chained from the RDEVBLOK for the device on which the volume is mounted. The chains of cylinder and slot allocation blocks are initialized by DMKCPI. Each block on an allocation chain represents one cylinder of space assigned to paging, and contains a bit map IBM V8/370: system Logic and Problem Determination Guide indicating which slots have been allocated and which are available. Each block also has a pointer to the next allocation block on the chain, a cylinder number, and a record count. DMKPGT searches this list sequentially until an available slot is found; its DASD address is then determined and passed back to the calling routine. If DMKPGT cannot find a cylinder with a de-allocated slot, it enters the cylinder allocation phase. When an available cylinder is found, it constructs a page allocation block for this cylinder and allocates a page to the caller. space available space on these before it allocates on any other available owned volumes. Within the class of preferred devices, space is allocated first on the fastest devices, and these are spead out across channels and devices. Allocation on non preferred devices is spread out in the same manner. cylinders for spooling space are not allocated from preferred devices. Allocation on a given device is done from the relative center of the volume outward, a cylinder at a time in a zig-zag fashion in an attempt to minimize seek times. When a request to allocate a slot for virtual storage paging is received by DKKPGTGT and the slot must be allocated on a moveable head (2314/2319, 3330, 3340, or 3350) device, a cylinder and slot are selected in the following manner: DMKPGT controls the paging and spooling I/O load of the system by allocating cylinders evenly across all available channels and devices. In order for a device to be considered available for the allocation of paging and spooling space: • Its volume serial number must appear system's owned list. • It must have at least one cylinder of temporary space marked as available in the cylinder allocation block which is located on cylinder 0, head 0, record 3. 1. CP tries to allocate a space on the cylinder at which the arm on the selected device is currently positioned. 2. If slots are not available on the current cylinder, CP tries to allocate space on a cylinder for which paging I/O has been queued. 3. If the above conditions cannot be met, CP allocates space as close to the center of the volume as is possible. in the At system initialization time, cpinit reads in the allocation records for each volume and constructs the chains of device allocation blocks from which DKKPGT allocates the cylinders. In managing the cylinder allocation, DMKPGT takes three factors into consideration: device type, device address, and possible status as a preferred paging device. Before DKKIOSQR is called, the queue of IOBLOKs currently scheduled on the device is examined. If paging I/O has already been scheduled on a device, the paging channel programs are slot sorted and chained together with TICs. PAGING I/O A reques~ for a cylinder of virtual storage page space ~s satisfied by allocating space on a preferred paging device, provided that one exists on the system and that it has page space available. Preferred paging devices are specified by the installation at system generation time, and generally should be devices on which excessive seek times do not occur. A typical preferred paging device would be the lBK 2305 Fixed Head storage facility. If the 2305 is assigned as a preferred device, it is possible to allocate some of its space for other high priority data files without excessively degrading paging. An example pf such usage would be for high activity read-only saved system pages that are not shared in real storage, and high activity system residence disks. It is also possible to designate moveable head DASD devices such as the 3330, 3340, 3350 and 2314/2319 Direct Access storage facilities as preferred paging devices. The module(s) so designated should not be requiEed to seek outside of a relatively narrow cylinder band around the center of the paging areas. It is advisable to share the access arm of a moveable head preferred paging device with only the lowest usage data files. on If one or more preferred devices are defined the system, CP allocates all of the page DKKPAGIO handles all input/output requests for virtual storage and spooling pages. DKKPAGIO constructs the necessary task blocks and channel programs, expands the compressed slot addresses, and maintains a queue of CPEXBLOKs for pages to be moved. Once the I/O scheduled by DKKPAGIO completes, it unchains the CPEXBLOKs that have been queued and calls DKKSTKCP to stack them for execution. DKKPAGIO is entered by a GOTO from: • DKKPTRAN to pages read and • DMKRPA to read and spool buffers write virtual write virtual storage storage In either case, all that needs to be passed to DKKPAGIO is the address of the cortable entry for the page that is to be moved, the address of a swptable entry for the slot, a read or write operation code, and the address of a CPEXBLOK that is ·to be stacked for dispatching after the I/O associated with the page has completed. DKKPAGIO obtains an IOBLOK and builds a channel program to do the necessary I/O, and uses the device code that is part of the page address to index into the system's owndlist and locate the real device to which the I/O request should be directed. If the device is capable of rotational position sensing, the required sector section 1. Introduction 81 is computed and a SET SECTOR command is inserted into the channel program. The real SIO supervisor DMKIOSQR is then called to schedule the operation on the proper device. When the interruption for the paging operation is processed hy the primary I/O interruption handler, the IOBLOK that controls the operation is unstacked to the interruption return address, waitpage, in DMKPAGIO. waitpage then unchains the CPEXBLOKs that are queued to DMKPAGG, and then stacks the queued CPEXBLOKs, by calls to DMKSTKCP, in the order in which they were received. The address of the real page frame is filed into the appropriate page table entry and the pointers denoting the ownership of the real page frame are filed into the cortable entry by the processing routines in DMKPTRAN. If a fatal I/O error occurred for the related page frame, the CPEXBLOKs associated with it are flagged, and the dispatcher, DMKSDPCH, sets a nonzero condition code when it activates the pending task. The error recovery followed depends on the operation being performed. Paging I/O errors associated with spooling operations are discussed in "DASD Errors During Spooling" in this section, while errors associated with virtual storage paging operations are discussed later in section "Virtual storage Paging Error Recovery". DMKPAGIO maintains its own suhpool of preformatted paging IOBLOKs. As I/O operations complete, their IOBLOKs are added to a list of availahle blocks; as new blocks are needed, they are taken from this list. If the list is empty, DMKFREE is called to obtain storage for a new block. DMKPAGIO also periodically calculates system paging overhead. After 200 pages have been moved (read or written), the elapsed time for the 200 page moves is computed, and the paging rate is calculated in page moves per second. The recent paging load, expressed as the percentage of time that more than one half of the system's pages were idle due to page-wait, is averaged with the previous load and re-projected as the expected load for the next interval. assigned to another virtual machine. All other uncorrectable paging errors are hard because they more drastically affect system performance. HARD ERROR RECOVERY: Hard paging errors occur on eItber--ijo-errors- for page reads or upon of exhausting the system's spooling and paging space. Recovery attempted on hard errors depends upon the nature of the task for which the read was heing done. If the operation was an attempt to place a page of a virtual machine's virtual storage into real storage, the operation of that particular virtual machine is terminated by setting the page frame in error to zero and placing the virtual machine in console function mode. The user and operator are informed of the condition, and the page frame causing the error is not de-allocated, thereby ensuring that it is not allocated to another user. The control program functions that call DMKPTRAN (such as spooling, pageahle control program calls, and system directory management) have the oFtion of requesting that unrecoverable errors be returned to the caller. In this case, the CP task may attempt some recovery to keep the entire system from terminating (ABEND). In general, every attempt is made to at least allow the operator to hring the system to orderly shut-down if continued operation is impossible. Proper installation planning should make the occurrence of a space exhaustion error an exception. An unusually heavy user load and a backed-up spooling file could cause this to happen. The operator is warned when 90% of the temporary (paging/spooling) space in the system is exhausted. He should take immediate steps to alleviate the shortage. possible remedies that exist include preventing more users from logging on and requesting users to stop output spooling operations. More drastic measures might include the purging of low priority spool files. If the system's paging space is completely eXhausted, the operation of virtual machines progressively slows as more and more users have paging requests that cannot be satisfied and operator intervention is required. VIRTUAL STORAGE PAGING ERROR RECOVERY VIRTUAL RELOCATION Errors encountered during virtual storage (as opposed to spooling) paging operations can generally be classified as either soft or hard errors. Soft errors allow the system to continue operation without delay or degradation. Hard errors can cause noticeable effects such as the abnormal termination of user tasks (ABEND) and response degradation. Errors that are successfully retried or corrected are known only to the I/O supervisor and the I/O error retry and recording routines; they appear to the second level interruption handlers (such as waitpage) as if the original operation completed normally. SOFT ERROR RECOVERY: An I/O error that occurs on a--page-swap=out--is considered to he a soft error. DMKPTRAH calls DMKPGTPG to assign a different DASD page slot and the page is re-queued for output. The slot that caused the error is not de-allocated, and thus is not 82 CP provides the virtual machine the capahility of using the DAT feature of the real System/370. Programming simulation and hardware features are comhined to allow usage of all of the available features in the real hardware, (that is, 2K or 4K pages, 64K or 1M segments). For clarification, follow: some fi~2!=!~Y~! term definitions 2!Q~!g~: The physical storage the real CPU, in which CP resides. Second-level 2!Q~!~~: avaIlable-to any virtual of The virtual storage machine, maintained by CPo 1hi!~=1~Y~1 §!9~g9~: defined by the system IBM VM/370: System Logic and Prohlem Determination Guide The virtual storage space operating in second-level storage, under control of page and segment tables which reside in second-level storage. E~g~ ~~g §~g!~~! !~~1~§: Logical mapping between first-level and second-level storage. !i~!~~l E~g~ mapping between storage. ~ng §~g!~B! second-level §h~g2! Egg~ ~Bg §~g!~B! !~E!~2: between first-level storage. storage !g~l~§: and Logical third-level Logical mapping and third-level A standard, nonrelocating virtual machine in CP is provided with a single control register, control register zero that can be used for: • • • Extended masking of external interruptions Special interruption traps for SSM Enabling of virtual block multiplexing A virtual machine that is allowed to use the extended control feature of System/370 is provided with a full complement of 16 control registers, allowing virtual monitor calls, PER, extended channel masking, and dynamic address translation. An extension to the normal virtual-machine VMBLOK is built at the time that an extended control virtual machine logs onto CPo This ECBLOK contains the 16 virtual control registers, 2 shadow control registers, and several words of information for maintenance of the shadow tables, virtual CPU timer, virtual TOD clock comparator, and virtual PER event data. The majority of the processing for virtual address translation is performed by the module DMKVAT, with additional routines in DMKPRG, DMKPRV, DMKDSP, DMKCDB, DMKLOG, DMKUSO, and DMKPTR. The simulation of the relocation-control instructions (that is, LCTL, STCTL, PTLB, RRB, and LARA) is performed by DMKPRV. These instructions, with the exception of LCTL and STCTL, are not available to virtual machines which are not allowed the extended control mode. When an extended control virtual machine is first active, it has only the real page and segment tables provided for it by CP and operates entirely in second-level storage. DMKPRV examines each PSW loaded via LPSW to determine when the virtual machine enters or leaves extended control or translate mode, setting the appropriate flag bits in the VMBLOK. Flag hits are also set whenever the virtual machine modifies control registers 0 or 1, the registers that control the dynamic address translation feature. DMKDSP also examines PSWs that are loaded as the result of interruptions to determine any changes in the virtual machine's operating mode. The virtual machine can load or store any of the control registers, enter or leave extended control mode, take interruptions, etc., without invoking the address translation feature. If the virtual machine, already in extended control mode, turns on the translate hit in the BC mode PSi, then the DMKVATMD routine is called to examine the virtual control registers and build the required shadow tables. (Shadow tables are required because the real DAT hardware is capable of only a first-level storage mapping.) D!KV1TMD examines virtual control registers 0 and 1 to determine if they contain valid information for use in constructing the shadow tables. Control register zero specifies the size of the page and segment the virtual machine is using in the virtual page and seg.ent tables. The shadow tables constructed by DMKV1TMD are always in the sa.e for. at as the virtual tables. The shadow seg.ent table is constructed in first-level storage and initialized to indicate that all segments are unavailable. Flags are maintained in the VMBLOK to indicate that the shadow tables exist. DMKVATMD also constructs the shadow control registers 0 and 1. Shadow control register 0 contains the external interruption mask bits used by CP, mixed with the hardware controls and enabling bits from virtual control register O. Shadow control register 1 contains the segment table origin address of the shadow segment table. When the virtual machine is operating in virtual translate mode, CP loads the shadow control registers into the real control registers and dispatches the user. The immediate result of attempting to execute an instruction is a segment exception, intercepted hy DMKPRG and passed to DMKVATSX. DMKV1TSI examines the virtual seg.ent table in second-level storage. If the virtual segment is not available, the segment exception interruption is reflected to the virtual machine. If the virtual segment is marked available, then DMKV1TSX: • Allocates one full segment of shadow page table, in the format specified by virtual control register o. • page table Sets all of the indicate page not in storage. • Marks the segment segment table. • Redispatches the virtual machine via DMKDSP. available entries in the to shadow Once again, the immediate result is an interruption, which is a paging exception and control is passed to DMKVATPI. DMKVATPI references the virtual page table in second-level storage to determine if the virtual page is available. If the virtual page is not available, the paging interruption is reflected to the virtual machine. However, if the virtual page is marked in storage, the virtual page table entry determines which page of second-level storage is being referenced by the third-level storage address provided. DMKVATPX next determines if that page of second-level storage is resident in first-level storage at that time. If so, the appropriate entry in the shadow page table is filled in and marked in storage. If not, the required page is hrought into first level storage via DMKPTRAN and the shadow page table filled in as above. As the virtual machine continues execution, more shadow tables are filled in or allocated as the third-level storage locations are referenced. Whenever a new segment is referenced, another segment of shadow page Section 1. Introduction 83 tables is allocated. Whenever a new page is referenced, the appropriate shadow page table entry is validated, etc. No changes are made in the shadow tables if the virtual machine leaves translate mode (usually via an interruption), unless it also leaves extended control mode. Dropping out of EC mode is the signal for CP to release all of the shadow page and segment tables and the copy of the virtual segment table. There are some situations that require invalidating all of the shadow tables constructed by CP or even releasing and reallocating thea. Whenever DMKPTR swaps out a page that belongs to a virtual relocating machine, it sets a bit in the VMBLOK indicating that all of the shadow page tables must be invalidated. Invalidation of all of the tables is required since CP does not know which third-level storage pages map into the second-level page that is being swapped out. The actual invalidation is handled by DMKVATAB, called from DMKDSP when the virtual machine is on the verge of being dispatched. The other situations which cause shadow table invalidation arise from the simulation of privileged instructions in DMKPRV. Flags are set in the VMBLOK whenever the virtual machine loads either control register 0 or 1, and DMKPRV calls DMKVATAB to perform whatever maintenance is required. When control register 1 is loaded by the virtual machine, DMKVATAB must re-copy the virtual segment table into first-level storage and invalidate the entire shadow segment table. When control register 0 is loaded, DMKVATAB examines the relocation-architecture control bits to determine if they have changed, (such that the format of the virtual page and segment tables no longer matches that of the shadow tables). If the format has not changed, the shadow tables are left intact; otherwise, all of the shadow tables must be returned to free storage and another set, in the new format, must be allocated and initialized. The same actions can result from modifying the control registers via the CP console functions, in which case DMKVATAB is called from DMKCDB. The privileged operation, PTLB also causes the virtual segment tables to be re-copied and all of the shadow page tables to be invalidated because the shadow tables are the logical equivalent of the translation look-aside buffer. DMKPRV provides virtual interrogation of the reference and change bits in the virtual storage keys, which involve the privileged instructions ISK, SSK, and RRB. The privileged instruction LRA is simulated via DMKVATLA, which searches the virtual page and segment tables to translate a third-level storage address to a second-level storage address, returning a condition code indicator to DMKPRV, or forcing an interruption if the tables are incorrectly formatted. control registers are set valid, with the shadow segment table re-allocated at a minimum size and all segments marked unavailable. Flag bits are set in the VMBLOK to indicate that the shadow tables are artificially valid, and DMKVATSX reflects a translation specification exception to the virtual machine as soon as it is dispatched. While it is possible for the virtual machine to enter an interruption loop (if the new PSW is also a translate mode PSW), the cited process prevents the occurrence of a disabled loop within CP, which would result if the virtual machine is never dispatched. FREE STORAGE MANAGEMENT DMKPRE is responsible for the management of free storage, and CP uses it to obtain free storage for I/O tasks, CCW strings, various I/O buffers, etc. It is used, in fact, for practically all such applications except real channel, control unit, and device blocks, and the cortable. Block sizes of 30 doublewords or less, constituting about 99 per cent of all calls for free storage, are grouped into 10 subpool sizes (3 doublewords each), and are handled by LIFO (push-down stack) logic. Blocks of greater than 30 doublewords are strung off a chained list in the classic manner. When subpools are exhausted, small size blocks are generally obtained from the first larger sized block at the end of available free storage. Large size blocks, on the other hand, are obtained from the high-numbered end of the last larger block. This procedure tends to keep the volatile small subpool blocks separated from the large blocks, some of which stay in storage for much longer periods of time; thus, undue fragmenting of available stor.age is avoided. DMKPRE initially starts without any subpool blocks. They are obtained from DMKFREE and returned to DMKFRET on a demand basis. The various cases of calls to DMKFREE for obtaining free storage, or to DMKFRET for returning it, for subpool sizes and large sizes, are handled as follows: ~Y~~~~l !!gilgBl~: If a call for a sub pool is made and a block of the suitable size is available, the block found is detached from the chain, the chain patched to the next sub pool block of the same size (if any), and the given block returned to the caller. ~Y~~~~l !~! Most error situations that occur in the virtual machine are handled by means of the extended program interruptions associated with the real address translation hardware. Whenever a virtual relocating machine loads control registers 0 or 1 with an invalid value, DMKVAT releases all of the shadow tables exactly as if the hardware controls had changed. The shadow 84 Available: If a block of suitable size is not avaIlable-when a call to DMKFREE is made for a subpool, the chained list of free storage is searched for a block of equal or larger size. The first block of larger or equal storage is used to satisfy the call (an equal-size block taking priority), except that blocks within the dynamic paging area are avoided if at all possible. If no equal or IBM VM/370: system Logic and Problem Determination Guide larger block is found, all the subpool blocks currently not in use are returned to the main free storage chain, and then the free storage chain is again searched for a block large enough to satisfy the call. If there still is no block large enough to satisfy the request, then DMKPTRFR is called to obtain another page frame of storage from the dynamic paging area, and the process is repeated to obtain the needed block. If a call to DMKFREE is made for a block larger than 30 doublewords, the chained list of free storage is searched for a block of equal or larger size. If an equal size block is found, it is detached from the chain and given to the caller. If at least one larger block is found the desired block size is split off the high numbered end of the last larger block found, and given to the caller. If no equal or larger block is found, DMKPTRFR is called to obtain another page frame of storage from the dynamic paging area, and the above process is repeated (as necessary) to obtain the needed block. If a subpool block is g~ven back via a call to DMKFRET, the block ~s attached to the appropriate subpool chain on a LIFO (push-down stack) basis, and return is made to the caller. If, however, the block was in a page within the dynamic paging area, the block is returned to the regular free storage chain instead. CP INITIALIZATION System initialization starts when the operator selects the DASD device address of CP system's residence volume (SISRBS) and presses the IPL button. The System/370 hardware reads 24 bytes from record 1 of cylinder 0 on SISRES into location 0 of main storage. This record consists of an initial PSW and a channel program. The channel program reads the module DMKCKP into location X'800' and gives it control. DftKCKP checks location CPID in module DftKPSA. If CPID contains the value CPCP or WARft, DftKCKP saves the spool file control blocks, system log messages, accounting information, status of spool devices, spool hold queue blocks, and spool record allocation blocks and writes them on the warm start cylinders. If CPID contains the value CPCP, DftKCKP loads a disabled wait state code X'008'. If location CPID does not contain the value CPCP, DftKCKP now loads DftKSAV and passes control to it at entry point DftKSAVRS. DMKSAV reloads a page image copy of the CP nucleus into real storage starting at page O. When DftKSAV is finished, control is transferred to DftKCPI. DftKCPI performs the main initialization function. This includes calling DftKWRft to retrieve the information stored on the warm start cylinder. This also includes calling DftKCKS to initialize the dynamic checkpoint cylinders and to checkpoint the current status of the spool file system. When DftKCPL has finished, it passes control to DftKDSPCB. DftKDSPCB loads a wait state PSW to wait for work. INITIALIZATION AND TBRftINATION If a block larger than 30 doublewords is returned via DftKFRET, it is merged appropriately into the regular free storage chain. Then, unless the block was returned by DftKFRBTR (see "Initialization") a check is made to see if the area given back (after all merging has been done) is a page frame within the dynamic paging area. If so, it is DftKPTRFT returns it to the dynamic paging area for subsequent use. After CP has been initialized, DMKCPVBN enables the communication lines. Then an individual virtual machine is attached to the system using the following steps: 1. The number of page frames allocated to free storage depends upon the number of storage boxes upon which the Vft/370 control program is running, and is initialized by DftKCPINT (3 pages for the first 256K and 1 page for each 64K thereafter not including V=R size if any). DftKFRETR is called by DftKCPINT to merge available blocks of storage into the regular free storage chain regardless of their size. 1!~!!n~1_lg~~I!~!~~lion When the CP receives the initial interrupt from a terminal on an enabled line (normally initiated by a user dialing in on a data-set), the DftKCNSIN routine is entered. DftKCBSIB determines the terminal device type, stores this information in the terminal device block, writes the online message and puts the terminal line in a state to receive an attention interruption. 2. At!~~!ioA_~~~~_Q§~~ After the online message has been typed at the user's terminal, and he has pressed the ATTENTION key, D!KCISIB (the console-interruption routine) calls DftKBLDVft to build a skeleton v.blok for the user. At this time, the userid is section 1. Introduction 85 LOGONxxx, where xxx is the terminal real device address, and a flag is set to indicate that the user has not yet completed the LOGON process. • Allocates and initializes virtual device blocks, control unit blocks, and channel blocks, using information from the user device blocks portion of the directory. Then D~KCNSIN calls DMKCF~BK, which types a single blank at the terminal, and issues a read to the terminal for the user to enter his first command (normally LOGON or DIAL) • • Establishes links (as feasibl~ to all DASD devices included in the directory, the accessibility of any disk being determined by the user access mode in the directory, and whether any other user(s) are presently linked to the disk, in read-mode and/or write-mode. After the first command has been entered by the user, DMKCNSIN further determines the type of terminal. If the terminal is a 2741, DMKTRMID is called to identify it as either a 2741P (PTTC/EBCD) or a 2741C (Correspondence) terminal. If successful, the correct device type and translate tables for input and output are set; if not, flags are set to indicate the terminal is not yet identified. • Initializes all other virtual device blocks as appropriate, such as reader, punch, printer, and terminal. • Kaps all devices. • Performs appropriate accounting. • Informs the user of the date and time of the most recent revision to the system log message (LOGMSG), and of the presence of any outstanding spooled files in his virtual reader, printer, or punch. • Sends a ready message to the user with the date and time (and weekday), and a message to the system operator indicating that the user has logged on. 3. Then control is returned to DMKCFMBK, which determines if the first command is valid (for example, LOGON, ~SG, or DIAL). If the first command is not valid, a restart message is given, and the read to the terminal occurs again for the first command. If the first command was LOGON (or its abbreviation), DMKLOGON is called to complete the process of attaching the virtual machine to the system. The operations performed include the following: 86 by DMKLOGON • Ensures that the maximum virtual machines allowed on is not being exceeded. • Obtains the userid from the command line, and checks for a possible password and other optional operands. number of the system • Checks the userid and password (entered separately if not on the LOGON command line) against entries in CP's directory of users. • Ensures that the user is not logged on at another terminal (an error condition), or reconnects the user if he was running, in the disconnect mode. • Obtains pertinent information on the user's virtual ~achine from the user machine block portion of the directory. • Stores the correct userid (replacing the LOGONxxx userid used until now), virtual storage size, and other vital information in the virtual machine's VKBLOK. • Allocates and initializes segment, page, and swap tables (necessary for handling of the virtual machine's virtual storage). • Allocates an extended VKBLOK (ECBLOK) if the user's virtual machine has the ability to run in the extended control mode. virtual devices to real If the virtual machine has a device address or a named system in the directory and the initialization was not suppressed via an option on the LOGON command line, then that device or named system is then loaded (via IPL) at the conclusion of the LOGON process. Otherwise, when the LOGON functions are complete, the user's terminal is placed in CP read mode ready for the entry of his first desired command. Under the latter condition of no automatic 1PL, the user can IPL an alternate nucleus by using the STOP option in the IPL command. This option causes the normal IPL procedure to halt execution prior to loading the initial PSi, and issues a DIAGNOSE Code 8 that places the user's terminal in CP read mode. A hexadecimal character entered in location X'08' changes the nucleus name. A hexadecimal character entered in location X'09' changes the apparent storage size. The BEGIN command allows the IFL procedure to continue. Three commands alter the I/O configuration of a user's virtual machine after he has logged on. Two are user commands, while the third a system operator command, because it affects the status of real devices attached to the system. The ATTACH and DETACH commands are contained in DKKVDB and DEFINE in DKKDEF. The system command scanner (DKKCFM) calls both page able modules after their format and privilege classes have been validated. These commands access the same control-block building subroutines in the module DKKVDS that DMKLOG, the LOGON processor, uses. IBK VK/370: System Logic and Problem Determination Guide A!!~£hjB~ ~ S~~l R~!!£~: The system operator can dedicate any real device to a single virtual machine by issuing the ATTACH command. The device attached is available only to the given virtual machine, and all I/O requests to it are handled by CCi translation. If the device is a DASD, cylinder relocation does not occur when SEEK addresses or home addresses are referenced. The I/O supervisor does not queue operations on the device, nor does it automatically restart it or do ordered seek queueing. Nonsharable devices such as tape drives must be attached to a virtual machine to be accessed by the virtual machine. A virtual machine can also have a dedicated card read/punch or printer. However, this is usually not necessary because of the unit record spooling facilities of CPo Unit record input or output on a dedicated (attached) device is not spooled by CPo The unit attached may be given a different virtual address than its real address; however, the virtual machine may not already have a virtual device at the attached address. A real device cannot be attached (1) if it is currently dedicated to another virtual machine, (2) if it contains mini-disks that are in use by other virtual machines, or (3) if it is a system owned volume that is in use for spooling or paging. ~~!!B!n~ ~ !!~!Y~l Device: A system user can define a new virtuaI--device with the DEFINE command that does not require the dedication of a corresponding real device. Devices that can be defined are consoles, spooled readers, punches and printers, dialable TP lines, virtual channel-to-channel adapters, pseudo timers, and temporary disks. With the DEFINE command, the user can change any existing virtual device address whether it corresponds to a shared or dedicated real device or no real device unit. The DEFINE command also describe the virtual machine channel mode of operation, that is, either selector or block multiplexer. The default mode, selector channel mode, reflects a channel busy to any SIO operation attempted on the same channel path that has not completed the previous channel SIO operation. Block multiplexer mode allows the successful initiation of different devices on the same channel path. Channel 0, a byte-multiplexer channel, is unaffected by the DEFINE command. Also, any channel with a channel-to-channel adapter (CTCA) defaults to selector mode of operation regardless of the channel mode selected. Use of the DEFINE command with the CHANNELS operand generates a virtual machine reset; therefore, it should be invoked prior to the virtual machine IPL operation. Note: The channel mode selected has no bearing on the types of channels that are attached to the real system. Temporary disks are dynamically obtained cylinders of DASD storage space. They are available to the user for as long as they are part of his virtual machine configuration, but the data on them is destroyed after the user detaches the area. For all other purposes, however, they appear to be a standard disk. R~!!£h!~ ~ !!!!Y~! R~!!£~: A virtual device can be removed fro. a virtual machine configuration prior to logging off with the DETACH co •• and. A user can detach any of his own devices, and the system operator can detach a real device fro. a virtual machine. If the operator detaches the device, the user is informed of the operator's action. A real device can be detached only if it is dedicated to a single virtual .achine or is attached to the system and is not in use when the DETACH is issued. A user may permanently or temporarily disconnect bis ter.inal or virtual machine from the system by a console command, or the terminal or virtual macbine may be forcibly disconnected by the operator. The system can also log off the virtual machine. In any case, the routines that handle the termination process are in the pageable module, DMKUSO. PERMANENT DISCONNECT: The user may voluntarily reiove-hIs--vIrtual-machine from the system via the LOGOFF command. This command terminates all virtual machine operation, releases all storage occupied by control blocks and virtual storage pages, and disconnects the teleprocessing line connection to the user's terminal. If the user specifies the HOLD option with LOGOFF, all of the above occurs, except the teleprocessing line remains enabled. This option is especially useful for dialed connections that are reused immediately by another user. The virtual machine can be forced off the system by the system operator via the FORCE command. This has the same effect as a user-initiated logoff, except that the user is informed that the operator has logged off his machine. A virtual machine may also be logged off the system: • If the time for a read of expires (28 seconds). a system password • If the user makes a connection to the system but does not logon within a given period. • If the virtual machine is running disconnected (without an active terminal) and tbe virtual machine attempts a terminal read or enters a disabled wait state. The DMKUSOLG and D~KUSOFF subroutines process the LOGOFF command. DMKDSP calls DMKUSOFF directly by DMKDSP to force the logoff of a disconnected user as previously described. ~~~gQ~A~I ~l~~Q!!~~!: A user may temporarily disconnect his terminal from his virtual machine by using the DISCONN command, while allowing the virtual machine to continue to run. This command flags the virtual machine as being disconnected and releases the user's terminal and teleprocessing line. If the HOLD option was specified in the DISCONN command, CP allows the line to remain enabled, and another user can use the terminal to log on. The disconnected virtual machine continues to be dispatched until Section 1. Introduction 81 it either attempts to execute a terminal read to the disconnected console or it enters a disabled wait state. At this time, the dispatcher (DMKDSF) calls the routine DMKUSOll directly to force the machine out of the system. While the machine is disconnected from its virtual console (real terminal) any terminal output is lost; in addition, CP may apply a disconnected penalty to the machines scheduling priority, to bias the system in favor of interactive users. A user's virtual machine may also be di5connected by the system. If the disconnected user logs on to the system while his disconnected machine is still running he is reconnected and can continue to interact with th~ system in the usual manner. The DMKUSO command. subroutine processes the DISCONN DftKCFM then calls the process the command. appropriate routine to After the command has been processed, control is returned to DMKCFM. There are three possible returns. (1) On a normal return, the input buffer is scanned to see if there are any more commands. If none exist, DMKCFft returns to the virtual machine (if entered via DIAGNOSE) or calls DftKQCNRD to read the next command from the terminal. (2) On a return plus 4, the VMCFWAIT bit is turned off to allow the virtual machine to run. DMKFRET is called to return the input buffer storage. Then control returns to either the virtual machine, if entered via a DIAGNOSE or to DftKDSPCH if entered via the ATTENTION key. (3) On a return plus 8, the operation is the same as plus 4 except the VMCFWAIT bit is left on. DISPATCHING AND SCHEDULING CONSOLE FUNCTICNS CMKCFM analyzes CP commands and passes control to the appropriate routine to handle the command. DMKC1M can be entered by the ATTENTION key at the user's terminal or directly from a virtual machine. When a console interruption occurs by the ATTENTION key at the user's terminal, DMKIOSIN calls DMKCNSIN to handle the unsolicited interruption, then DMKCNSIN calls DMKCFMBK. DMKCFMBK first calls DMKFREE to obtain storage for an 18 doubleword input buffer. Next, DMKQCNiT is called to send the CP message to the terminal to inform the user that he has entered console function mode. DMKQCHRD is then called to read the command line entered at the console. DMKCFMEN is the entry point for commands coming directly from the virtual machine. DMKPRGIN enters at DMKCFMEN here when a DIAGNOSE instruction with a code of 8 is detected. The address of an 18 double word input buffer is passed in register 1; therefore, a read to the terminal is not needed. After either the read to the terminal or entry from the virtual machine, DMKSCNFD is called to find the command type. On return from DMKSCNFD, register 1 points to the start of the command and register 0 contains the length of the command. The entered command is matched against a list of valid commands. The list contains a 16-byte entry for each command. Each entry contains 8 bytes for the name, 2 bytes for class mask, 2 bytes for an abbreviation count, and 4 bytes containing the routine address. If the entered command matches an entry in the list, it is then checked to ensure that a valid abbreviation for the command has been used. If this test is not successful, DMKSCN continues to scan the list for a valid command. Should the abbreviation be valid, a check is then made to determine if this user is of the proper class to use the command entered. If this is successful, 88 The scheduler, DMKSCH, selects dispatchable virtual machines from the virtual machine population. The auxiliary routine that assists the scheduler and dispatcher is the request stack maintenance routine, DMKSTK. To make decisions on dispatching and scheduling, the control program places all virtual machines into various categories, and recognizes user machines as being in one of several states. The virtual machine categories either interactive or non-interactive virtual machine, are defined in the following way: • An interactive virtual machine is one whose use of the system is punctuated by regular and frequent termina1.I/0, and does not have long CPU execution times. A virtual machine becomes eligible to enter interactive status whenever a channel program for virtual console I/O has completed, or whenever I/O for a dedicated or ~ia1ed virtual telecommunications line has completed. • A non-interactive virtual machine is one that has violated an interactive criterion, or one that has entered an idle wait state by entering console function mode (equivalent to stopped state), or by loading a wait state PSi that is not enabled for any busy channel. CP schedules interactive users ahead of non-interactive users. Non-interactive users are subdivided into several classes. Normal non-interactive virtual machines are scheduled by a priority scheme described below. A virtual machine is allowed to execute for a specified time period and then it is placed in a list of those machines that are waiting. To give preference to certain classes of virtual machines, a priority scheduling scheme allows virtual machines to be SCheduled with a priority class. The priority is a number assigned by the directory; however, the number may be altered by the system operator. IBM VM/370: System Logic and Problem Determination Guide To efficiently manage the large inventory of potential virtual machines that are logged on to the system, CP defines several states that a virtual machine may occupy. The scheduler can move a virtual machine from one state to another; however, a virtual machine may exist in only one state at any given instant. CP can then make scheduling and dispatching decisions by looking only at the subset of virtual machines that are in the appropriate state. To do this search, it also maintains lists of virtual machines in certain executable states. A user's virtual machine may be in one of the following states: --,-state 2 3 4 5 6 7 8 1. The virtual machine's prOjected working set size, calculated the last time it was dropped from a queue, is expressed as a percentage of the amount of main storage available for paging. This percentage, usually between 0 and 100, is multiplied by the paging bias factor (stored at DMKSCBPB). 2. The virtual machine's priority (the priority set by the directory or the class A SET PRIORITY command) is multiplied by the user bias factor (stored at DMKSCHUB), and is added to the paging bias calculated in step 1. 3. The sum of paging and user bias is divided by the sum of the bias factors to obtain a weighted average. 4. A base priority is obtained by storing the TOD clock and using the high order word, which increments by 1 approximately once per second. This word is then modified by shifting it left or right based on the priority delay factor (stored at DMKSCHPD). If DMKSCBPD is positive, it indicates a right shift, thereby increasing the delay interval of the base priority. A negative value indicates a left shift. 5. The weighted average obtained in step 3 is then logically added to the adjusted base obtained in step 4. 6. If the virtual machine is entering 02 for the first time after being dropped from 01, the interactive bias factor (stored at D"KSCBIB) is subtracted from the priority obtained in step 5. If the virtual machine is entering Ql, or if it was last dropped from Q2, the interactive bias is not applied. 7. The result of steps 1 through 6 is the scheduling or eligible list priority, and is stored in the V"EPRIOR field of the V"BLOK. ~g~ning Interactive and dispatchable (in queuel, in dispatch list) Interactive and not dispatchable (in queuel, not in dispatch list) Interactive and eligible for queuel, but queuel is full (waiting for queuel, in eligible list) In wait state with terminal read or write active Hon-interactive and dispatchable (in queue2, in dispatch list) Hon-interactive and not dispatchable (in queue2, not in dispatch list) Hon-interactive and eligible for queue2, but queue2 is full (waiting for queue2, in eligible list) Idle waiting for asynchronous I/O or external interruption, or stopped (in console function mode) Entries on the dispatch list are the VMBLOKS for those virtual machines in states 1 and 5, and represent the virtual machines that can be run at any given time. The dispatch list is sorted by dispatching priority, which is the ratio of CPU time to wait time over the length of the current virtual machine task. A task is defined as that execution that takes place between terminal reads or entry to enabled wait (that is, movement from state 4 or 8 to state 1) and is re-projected for a virtual machine each time it is dropped from a queue. Virtual machines entering state 1 always have a priority of O. The eligible list are virtual machines in states 3 and 7; these virtual machines are potentially executable but due to the current load on the system they are not allowed to compete for the CPU. As soon as a virtual machine in the dispatch list is dropped from queue, the highest priority virtual machine(s) in the eligible list is added to the dispatch list. Conditions can arise where the virtual machine that is added to the DISPATCH list bas a projected working set size that far exceeds the remaining system capacity. The eligible list has two components; a section composed of those virtual machines waiting for 01 (interactive) and a section composed of those virtual machines waiting for 02 (non-interactive). Each section of the list is sorted by scheduling priority, which is determined at the time the virtual machine is added to the eligible list, as follows: The VBBLOK is then sorted into the appropriate section of the eligible list in ascending value of VMEPRIOR. The effects of the various biases and the delay factor are illustrated by the following examples. ~~~~~lg 1 Assume that two virtual machines are to be added to the eligible list for Q2. The paging bias factor is 1, the user bias factor is 1, and the priority delay factor is o. Virtual machine A has a projected working set size of 80 percent of available storage and a user priority of 50. Virtual machine B has a projected working set size of 20 percent of available storage and also has a user priority of 50. The biases are obtained as follows: Paging Bias 80-i-, 20 I 1 Dser Bias + 50-i-' + 50 X 1 Weighted Bias 130/2----65 35 70/2 Section 1. Introduction 89 If A is added to the eligible list at base time 0, its eligible list priority witll be 65. If the priority delay factor is 0, B is added ~~~~~ of A provided that B is eligible for entry to the list within the next (65-35) 30 seconds. If the priority delay factor is set to +1, the base is incremented once every two seconds. Therefore, although the bias difference is still 30, the delay time is now 60 seconds. 2. The virtual machine priority value, in the directory, may be overridden, and is the means through which selected users obtain improved performance. ~!~m£!~ ~ 4. The interactive bias factor is a tool that enhances command response to conversational commands that require disk I/O, and that may be partially executed in Q2. To force A to be given equal to B, a priority calculated as follows: 80 + A 20 + B 2 2 =B 1 a weighted bias differential is 60 - Therefore, for the biases to be equal, A must have a priority of 60 less than B. For example, if 1 is given a priority of 10 and B is given a priority of 70, the biases wuuld compute as follows: Paging Bias 80-i-, + User Bias ,o-i-, 90/2 90/2 20 X 1 + 70 X 1 Weighted Bias --45---= 45 3. The priority delay factor is the measure of the impact that the paging and user biases are to have. The greater the delay value, the greater 1S the maximum delay that can be experienced by a given user. If the paging bias factor is nonzero, the net effect of the priority scheme is to discriminate against virtual machines that require large amounts of real storage. This discrimination results in a higher level of multiprogramming and increased CPU utilization; however, it must be traded off against poorer throughput for large storage users. The distributed scheduler is ~Q! biased; the bias factors are as follows: Paging bias factor (DMKSCHPB) User bias factor (DMKSCHUB) Priority delay factor (DMKSCHPD) Interactive bias factor (DMKSCHIB) o 1 o o Thus, the basic VM/370 scheduler schedules virtual machines FIFO within user priority. ~!~m£!~ J The large difference in priorities could te lessened by increasing the user bias factor. If the user bias factor is set to 3 instead of 1, the calculated priority differential is as follows: 80 + 31 20 + 3B 4 4 3 (B - I) 1 ,.------------------, 60 B - 20 HOW, 1 requires a priority then B to achieve parity. Paging Bias 80-i-, User Bias of only 20 less For example: 30-i-3 17 0/4 20 X 1 + 50 X 3 170/4 + weighted Bias --4"2---- 1 In-Oueue 1 Rot-in-Queue 1 1--------------1 IDispatch 1 Ro IEligible 1 Ro 1 1 List IListl List IListl r-------·--.l-------------I 1Interacti ve I 1 I 2 1 3 I 4 1 1------------------------1 IRon-Inter- 1 1 1 1 1 1 5 1 6 1 7 1 8 1 1 active '-------------------_._---------' Figure 17. User Dispatching states 42 The above examples illustrate the following general points about the use of the bias factors, the delay factor, and the user priority value: 1. The paging and user bias factors are a measure of the relative importance of the bias value. A high user bias allows greater discrimination via the assigned priority; while a high paging bias makes storage requirement the primary scheduling parameter. 90 Figure 17 is a graphic breakdown of the user states, showing the relationship between interactive and non-interactive states, in-queue and not-in-queue states, and in-list and not-in-list states. Figure 18 shows the possible user-state changes and the reasons for them; any changes not described are not possible. To control the number of virtual machines allowed in queue, the scheduler monitors the paging activity of all virtual machines and of IBM VM/370: System Logic and Problem Determination Guide ---------------------,1 r 1 Status Change 1 1 1---------1 1 From 1 To 1 Reason for Status Change ---------------------------2 Pagewait, SIO-WAIT, 1 1 2 2 3 4 4 5 5 5 5 5 6 7 8 1 1 1 or enabled wait for any busy channel 4 Enabled wait for interactive terminal read or write 5 Exceeds in-queue time slice 7 Same as 1 to 5 except that queue 2 is full 8 Wait without active I/O, disabled WAIT or hit ATTN 1 Wait condition complete 5,7 Wait completes, but in-queue time slice exceeded Another user drops from queuel and now there is room Terminal I/O completes while user is waiting 3 Terminal I/O completes, but queuel is full Terminal I/O completes while user is active in queue2 4 User puts up terminal read or write and enters wait 6 Pagewait, SIO-WAIT, or enabled wait for busy channel 7 Dropped from queue2 due to in-queue time-slice end 8 Wait without active I/O, disabled WAIT, or hit ATTN 5 wait condition completes 5 Room is found in queue2 5,7 IAsynchronous I/O or external 1 interruption or BEGIN Figure 18. User Status Changes the total system. A decision as to whether or not to move a potential virtual machine from the eligible to the dispatch list is based upon whether or not that its projected working set exceeds the system's remaining capacity. Individual virtual machine's working sets are calculated and projected at queue drop time according to one of the following formulas: lA last actual working set lP last projected working set P Current projected working set The actual working set, A, is the smaller of the two values determimined at queue drop time by the following formula: N L r (P-A) PRi / • + Steals i= 1 A -- or -Pages referenced N Number of page reads while in queue. PR Number of pages resident page read. Steals Number of times page wait was entered because of a stolen page. at the ith The number of referenced pages is determined by scanning the virtual machine's page tables for software referenced bits. These bits are set by D"KPTRAN when the page is taken from the virtual machine by CPo Thus the actual working set is generally th~ average number of pages resident at each page read. However, this estimate is sensitive to the overall system paging activity for the following reasons: 1. If there is no paging load on the system, there is one page read for each resident page, and no steals; the working set therefore tends to be equal to about one half of the resident page total. 2. As paging activity increases, and the working set location shifts, the working set tends to increase toward the average number of resident pages. 3. If paging activity becom~s excessive, the number of page steals 1ncreases to the extent that the working set expands to the maximum of the total number of pages referenced while in the queue. P=(A+P)/2 If (lP-lA) , r < 0 -- or -P=A If (lP-lA) r (P-A) ~ 0 The working set is added to the current system load, which consists of the sum of the working sets for all virtual machines currently in a que~e. The sum is compared to the system maX1mum, which is equal to the number of dynamically assignable pages in the system. If the virtual machine's projected working set will not push the system load over tthe virtual machine maximum, he is placed in the queue and added to the dispatchable list. A Actual working set at queue drop time In summary, the scheduler selects the subset of logged-on virtual machines that are allowed to compete for the resources of the CPU, with the constraint that a new virtual machine is not added to the active subset if its projected main storage requirement, added to that of the other active virtual machines, causes the current section 1. Introduction 91 capacity of the syste. to be exceeded. Selection within scheduling priority simply means that a executable virtual .achine of high priority is always added to the active subset (to a queue) before a executable virtual machine of lower priority. If the paging bias mechanism is activated by setting the paging bias factor to a nonzero value, scheduler selection is in favor of smaller virtual machines; otherwise, selection is within priority. Once the active subset (the set of in-queue virtual machines) has been selected, the dispatcher allocates resources of the CPU among them. The list of executable virtual machines in a queue is sorted by dispatching (as opposed to scheduling) priority. The dispatching priority is a running average of a given virtual machine's CPU time/wait-time ratio. Thus, virtual machines who are most likely to go into wait state, based on past performance, are dispatched ahead of those whose demands on the CPU are more extensive. This simple ratio priority is normally altered if a virtual machine is identified as compute bound by means of the fact that it has executed for at least 50 ms. without entering the wait state. In this case, it is placed at the bottom of the dispatchable list. On the other hand, virtual machines identified as interactive by virtue of the frequency their requests for terminal I/O are placed at the top of the dispatchable list. dispatchable list at its normal priority position. However, any active virtual machine represents either an explicit or implicit commitment of main storage. An explicit storage com.itment can be specified by either the virtual=real option or the reserved page option. An implicit commitment exists if neither of these options are specified, and the scheduler recomputes the virtual machine's projected work-set at what it would normally have been at queue-drop time. Multiple virtual machines can have the basic favored execution option set. However, if their combined main storage requirements exceed the sytem's capacity, performance can suffer due to thrashing. The basic favored execution option removes the primary source of elapsed time stretch~out in a loaded time-sharing environment. However, if the favored task is highly compute bound and must compete for the CPU with many other tasks of the same type, an installation can define the CP~ allocation to be made. In this case, the favored execution percentage option can be selected for one virtual machine. This option specifies that the selected virtual machine, in addition to remaining in queue, receives a given minimum percentage of the total CPU time, if he can use it. The percentage is assured in the following manner: 1. The in-queue time slice is multiplied by the requested percentage and added to the virtual machine's current total CPU time usage. 2. When the favored virtual machine, is executable, it is always placed at the top of the dispatchable list until it has obtained his guarantee. 3. If the virtual machine obtains its guarantee before the interval has elapsed, it is placed in the dispatchable list according to its caluculated dispatching priority. 4. In any case, at the end of the in-queue time slice, the guarantee is recomputed as in step 1 and the process repeated. DMKDSP also provides a fast dispatch path for virtual machines that have issued specific privileged instructions that are not handled by the Virtual Machine Assist feature. These virtual machines can be dispatched very rapidly because the virtual machine's program old PSM needs very little reconstruction to redispatch the virtual machine, hence use of full PSi reconstruction path is not required. The decision for using the fast dispatch path (DMKDSFA) is accomplished by the module that handles privileged operation, DMKPRV. ihen the resources of the CPU (and real storage) are being allocated, the dispatching and scheduling functions are implemented in such a manner that options exist which allow an installation to designate that certain virtual machines are to receive preferential treatment. The favored execution options allow an installation to modify the algorithms described above and force the system to devote more of its resources to a given virtual machine than would ordinarily be the case. The options provided are: 1. 2. The favored execution option. The favored execution percentage. The favored execution option means that the virtual machine so designated is never to be dropped from the active (in-queue) subset by the scheduler. When the virtual machine is executable, it is to be placed in the 92 These options can impact the response time of interactive virtual machines and only one favored percentage virtual machine is allowed at any given time. Most of the routines in the CP nucleus are reenterable and multiple control program or virtual machine tasks can make use of one routine at the same time. However, there are certain areas where requests for a resource must be serialized (as in paging) or delayed while previous requests are serviced (as in requests to schedule I/O) • IBM VM/370: System Logic and Problem Determination Guide The routine handling the request obtains a CPEXBLOK from free storage and stores the caller's registers in it; when the requested resource is free, the CPEXBLOK is stacked for the dispatcher via a call to the request stack manager (DMKSTKCP). The dispatcher un stacks the block and exits to the requesting routine the next time it is entered. I/O requests are stacked in the same manner, except that the stacking vehicle is the IOBLOK, and return is passed to the address specified in the interrupt return address (IOBIRA). In either case, it should be noted that the dispatcher always unstacks and gives control to any stacked IOBLOKs and CPEXBLOKs prior to dispatching a user. This guarantees that CP information needed by a virtual machine (such as page availability) is always as up-to-date as possible. compression except that trailing blanks are suppressed. The first two doublewords of each buffer contain linkage information described below, followed by the data and CCWs. Bach spool logical record (card or print line) is stored as one CCW that moves data (READ or WRITB), a TIC to the following CCW, and the full data record. Space is left at the end of each buffer so that a SENSE command can be inserted to force concurrent channel end and device end. For card punch channel programs there is an additional back chain field that points to the card previously punched so that error recovery for punch equipment checks can back up one card. The only exception to the format of RBAD/MRITB-TIC-Data is in buffers of files directed to the printer. In this case, immediate operation code CCWs (skips and spaces) are followed by the next CCW. CP SPOOLING The spooling functions. • support in CP performs three Simulates the operation of the virtual unit record devices that are attached to each user's virtual machine configuration. The simulation is done in such a way that it appears to the program in the virtual machine that it is controlling a real unit record device. This support involves the interception and interpretation of virtual machine SIOs, the movement of data to and from the virtual machine's virtual storage space, and the reflection of the necessary interruption codes and ending conditions in PSW's, CSW's and sense bytes. This support is provided by the virtual spooling executive. • Operates the real unit record equipment, attached to the system, that transcribes virtual machine output spool files to the real printer or punch and input from the real card reader to DASD storage. This function is provided by the real spooling executive. • Provides an interface among the virtual machines, the system operator, and the spooling system so that the locatioh, format, priority and utilization of the systems spooling data and resources can be controlled. SPOOL DATA AND FILB FORMAT The buffers that collect and write spool data are all one page (4096 bytes) in length, and contain the data to be transcribed and all CCis necessary for operating the unit record devices that perform the transcription. The data is provided in the exact format required with no In addition to the data and CCWs contained in each spool buffer, the first two doublewords contain forward and backward links to the next and previous buffers in the file. This two-way linkage allows the file to be backspaced or restarted from any point at any time. Also, it means that if I/O errors are encountered while reading one buffer, the file is put in system hold status. If purged, all buffers except those in error are released. The two-way chain allows this control of the file while preventing fragmentation by allowing pages to be assigned and released individually regardless of their ownership. The first spool buffer of an output spool file contains a special data record called the tag record. This record immediately follows the two doublewords containing the forward and backward buffer linkage pointers. The tag record allows VM/370 users to specify information to be associated with spool files that they generate. The information is entered via the CP TAG command, although the tag record is not considered a spool file data record and is not printed or punched as part of the spool file. However, the contents may be interrogated via the CP TAG QUBRY command. The format of the tag record is a NOP CCW, followed by a TIC to the next CCW and a 136 byte data field. To differentiate the tag record from an immediate NOP CCW (no TIC-data sequence) independently of the command code, the 'skip' bit (bit 35) in the CCM has the following convention: Bit 35 =0 =1 for NOP CCW, record) for NOP CCM co.mand) TIC, data (tag (immediate NOP Each spool file in the system is controlled by a spool file control block (SFBLOK) that is resident in storage. While the file is open, these blocks are chained from the devices (either real or virtual) that are processing the file, and from device type file anchors after section 1. Introduction 93 the file is closed. There is one file chain each for printer, readerv and punch files. Each SFBLOK contains information about the file that describes its owner and originator (these can be different for transfered files), the filename and filetype, and the class and number of copies for output files. All of these attributes can be examined and most can be changed by the file's owner or the system operator. The SFBLCK also contains information such as the starting and ending buffer addresses for the file, the record size, certain file status flags, etc. SPOOL BUFFER MANAGEMENT Buffers that temporarily store spool data on its way between DASD secondary storage and the user's virtual machine are allocated from a pool of virtual storage space that belongs to CPo The size of this pool varies with the real storage available to VM/370 (the storage specified at system generation or actual real storage, whichever is less). Allocation is as follows: While a spool buffer is inactive, it resides in real storage or on the paging device. After it has been filled with data from the virtual machine or a real input reader, it is written to a page of secondary DASD storage. The allocation of pages on the spooling disk(s) is managed by DMKPGT, which handles requests for both pages of virtual storage and semi-permanent spool file residence. DMKPGT maintains separate allocation block chains for virtual storage and spooling pages. Each block contains control information and a bit map that allocates pages on a single cylinder. If none of the cylinders allocated have any available pages, DMKPGT enters its cylinder allocation routine. DMKPGT attempts to even out the spooling and paging I/O load by allocating cylinders across channels and devices. To minimize seek times on a given device, cylinders are allocated as close to the relative center of the spooling or paging area as possible. f~~j~~ Q~!i£~ ~y££~~!: All actual I/O for the page buffers on any device is controlled by the paging I/O executive DMKPAGIO. Virtual Buffers ___ !1!~£~!~~ __ _ VIRTUAL SPOOLING MANAGER (DMKVSP) 256K to 655,360 bytes 655,361 bytes to 1.1 megabytes over 1.1 megabytes 128 320 640 virtual storage buffers are allocated in l-page increments by DMKPGT at the time the spool file is opened for either input or output. If no virtual storage space is available, the virtual machine is placed in a wait state until a buffer is freed by another virtual machine closing a file. This places limits on the number of concurrent spooling operations permitted by the system because spooling operates as a high priority task. Real storage is not allocated for a spooling buffer until a virtual machine actually issues a SIO that attempts to transfer data between the buffer and the user's virtual storage space. At this time, a page of real storage is allocated to the buffer via the real storage paging manager. The buffer is locked in main storage (that is, is unavailable to be paged out) only for the amount of time necessary to transfer the data. After the data transfer is complete, the buffer is treated as a normal page of virtual storage, and can be selected to be paged out. This ensures that low usage spool files do not have buffers in real storage, while the buffers for high usage files should remain resident. The location of the spool buffer in real storage is transparent to the virtual spooling executive, because all references to the data therein are accomplished through the DAT feature of the cPU. The two functions of the virtual spooling manager are (1) to simulate the operation of all spooled unit-record devices attached to the user's virtual machine, and (2) to read and write the spool files associated with those devices. The following virtual devices are supported for spooling, with tbe exceptions notefr: • IBM 2540 Card Reader/Punch, feed read and column binary except for punch • IBM 1403 Printer positions) 2 • IBM 3211 Printer (150 print positions) • IBM 3505 Card Reader reading) • IBM 3525 Punch (except for the card print, and data protect features). Models and N1 (132 (except for mark senses read, The following consoles are supported for spooling when entered into the directory as the virtual system console: • IBM 1052 Printer-Keyboard, Model 7 2150 Console) (via the • IBM 3210 and 2 Models 1 • IBM 3215 Console Printer-Keyboard, Model 1 Console printer-Keyboard, All virtual printers must have the universal character set feature. No checking is done on the spooled printer data. However, any UCS 94 IBM VM/370: System Logic and Problem Determination Guide buffer commands issued by the virtual machine (load UCS buffer, block data checks, etc.) are ignored. It is up to the user and the installation to ensure that the output is directed to the proper real printer via use of the output CLASS feature described below. For the 3211 printer, forms control buffer (PCB) commands are accepted and simulated by means of a virtual PCB maintained by the executive. The use of the virtual PCB is the only way to si~ulate end-of-form conditions reflected hy the detection of a channel 9 or 12 punch. When the spooled file is directed to a real 3211 or 1403, the operator is responsible for loading the FCB or mounting the proper carriage tape. If any of the unsupported unit record features are required, the real device must he attached directly to the user's virtual machine. Thus, a 3505 reader could he a spooling input reader, but attached directly to a batch virtual machine when it is necessary to read mark sense cards. DMKVSP receives control from the virtual I/O executive, DMKVIO, when the user's machine issues a SIO to a spooled unit record device. DMKVIO does not pass control until it has been determined that the device is availahle (that is, non-busy and with no interruptions pending). DMKVSP first determines if the device is currently processing a file. If it is, processing continues. If this is the first command issued hy the given device, a new output file must be opened. An open suhroutine is called to build the control blocks necessary to manage the file and to ohtain virtual storage and DASD buffer space. Control is then returned to DMKVSP. Before the first record of an output spool file is written, DMKVSP writes a tag record (NOP CCW, TIC, data sequence) and initializes the 136-byte data area to blanks. It then sets the spool buffer displacement pointer to the first doubleword in the buffer heyond the tag record. DMSVSP then analyzes and interprets the channel program associated with the virtual machine's SIO. Each CCW is tested for validity of command, address, flags, alignment, protection, etc., and if the CCW is valid, the virtual machine's data is moved from his own virtual storage space to the buffer in the spooling virtual storage. When this buffer is full, it is written to a page of DASD secondary storage and a new buffer is obtained. The interpretation of the virtual machine's channel program continues until there are no more CCWs or until an error condition is detected that prohibits further processing. In either case, the device is marked as having the proper interruptions pending, a CSW is constructed, and DMKVSP exits to the main dispatcher. In contrast to nonspooled I/O, the virtual machine has remained in a pseudo-wait (IOWAIT) for the time it took to interpret the entire channel program. The output file can be logically closed by the virtual machine either by issuing an invalid CCw co.mand code, or hy the CP CLOSE co.mand. In either case, DMKSPL checks for tag record information in the VSPXBLOK. (The VSPXBLOK, pointed to by the VDEVEXTR field of the VDEVBLOK for the output spool device, contains the tag information entered via the CP TAG com.and.) If tag data exists, the first spool buffer for the file is read in, the tag data is inserted in the tag record, and the buffer is rewritten to DASD storage. If no tag data exists, the tag record data field is left blank. The device is then cleared of pending interruptions, the file chains are completed, and the file is either queued for output on a real device of the proper type (printer or punch), or, if IPER is in effect, is queued for input to another virtual machine. Input file processing is similar to output file processing, except for the open and close functions, and the analysis of CCW commands and the direction of data movement. Many common routines are utilized to locate and verify CCWs, obtain buffer space, and to move the spooling data. The difference in the open function is that instead of creating a new file, it is necessary to locate a reader file that already exists in the system. To do this, the open subroutine scans the SPBLOKs chained from the anchor, READBRS, to find a file with an owner userid that matches that of the caller and is not in hold status. If a file is not found, a unit check or intervention required condition is reflected to the virtual machine; otherwise, its SPBLOK is chained to the control hlock for the reader and the channel program is interpreted in the same manner as for an output file. After the input file is exhausted, a unit exception is reflected to the user machine, unless the user has requested either continuous spooling or that an BOP not be reflected. With continuous spooling, the unit exception is not reflected until the last file for that virtual machine is processed. If HOEOP is specified, the simulation terminates with a unit check or intervention required condition (similar to what happens if the BOP hutton on a real reader is not pushed) • In either case, the input file is then deleted from the system, unless the user has specifically requested that his input files be saved. If the file is saved, it can be re-read any number of times. Support of virtual console I/O for both the virtual machine and VM/370 is provided as an option for the VM/370 spooling capabilities. This support fulfills the following requirements: Section 1. Introduction 95 • Provides hardcopy support Facility virtual machines. • Provides hardcopy support for display devices used as system or virtual machine consoles. • Allows disconnected virtual machines to spool virtual console output, CP commands and system resources to disk instead of losing the output. • Improves the perfor.ance of virtual machines that currently produce a large amount of console output. for CMS Batch Whenever a SIO is issued to a virtual machine console, the virtual console manager (DMKVCN) determines if the spooling option is active. If it is, control is passed to the virtual spooling manager at DMKVSPBP to insert the data into a spool file buffer. While console spooling utilizes, basically, the same code as printer spooling, the fcllowing exceptions are made: • A skip to channel 1 CCW every 60 lines of output. is inserted after • The operator's virtual console spool buffer is written out after every 16 lines of output. The virtual spool buffer is written out to the allocated spool device when the first CCW is placed in that virtual buffer. The linkage drea of the virtual spool buffer takes the form of a CLOSE file to allow checkpoint (DMKCKP) to recover the active spool file in the event of a shutdown because of system failure. The data in the virtual buffer, not yet written out to the spool device will not be recovered. To maintain a pseudo closed file status for console spool files, DMKSPL now assigns spool identifications to all output spool files where they are first queued. A virtual system reset, device reset, or 1PL does not close the virtual console spool file. --The LOGOFF, FORCE, or DETACH of virtual console commands does close the virtual console spool file.---The SHUTDOWN command does close the operator's console spool file. If the SHUTDOWN command is issued by a Class A user other than the operator, the console spool file for both the user and operator is closed. The inclusion of the spool file tag record in a virtual console spool file is processed by DMKVSP and DMKSFL as described for printer spool files in "Output File Processing" under "Virtual Spooling Manager." executive optimizes the use of main storage and the CPU rather than running the system unit record devices at their rated speeds. DASD input files are not double buffered and under periods of peak load, input and output devices tend to run in bursts. However, command chaining is used for all unit record channel programs so that the devices are running at their maximum speed with a minimum of interruptions. Both the input and output operations of DMKRSP are interruption driven. Thus, DMKRSP does not process unless an internally or externally generated not-ready to ready device end interruption occurs. External interruptions are generated by the hardware in the normal manner, while internal, "pseudo interruptions," are generated by the software when an output file has been queued on the real printer ~r punch file chain, or when the operator issues a START command to a drained device. Upon receipt of the initial device end for a printer or punch, DMKRSP searches the appropriate file chain for the SFBLOK of a file whose class matches that of the device that was made ready. When the SFBLOK is located (provided the file is not in a HOLD status) f it is unChained from the output queue and chained to the real device block that services the file. A page of real main storage is then obtained for use as a buffer, and the output separator routine (DMKSEP) is called to print output identifier pages. When DMKSEP returns control to DMKRSP, the first buffer of the file is paged into real main storage, and the CCWs in the channel program that it contains are adjusted so that their data addresses correspond to the real addresses at which the data resides. The real SIO supervisor (DMKIOSQR) is then called to start the channel program, and DMKRSP exits to the dispatcher (DMKDSPCH) to await the interruption. When the channel end/device end interruption for the completed buffer is unstacked to DMKRSP, the forward chain file link field locates the next buffer. This buffer is paged-in, and the process is repeated until the final buffer is processed. At this point, the number of copies requested for the file is decremented. If the number of copies is 0, processing is terminated and the file is deleted from the system; otherwise, the process is repeated as many times as necessary. REAL SPOOLING MANAGER (DMKRSP) When file processing is complete, a scan of the appropriate output queue is again made, and if a file is found it is processed. If the queue is empty, or if a file with a matching class is not found, an exit is taken to DMKDSPCH to wait for another ready interruption. The real spooling manager operates the real unit record devices that are attached to the system and that are used to transcribe input data into reader spool files and user output spool files onto the real printers and punches. The output file processing can be modified by either the system operator, by a spoolin9 support command or as a result of system errors. The operator commands allow a given file to be backspaced or restarted, and the files of individual users or the whole system to be held 96 IBM VM/370: System Logic and Problem Determination Guide and released for output. I/O errors also affect the spooling system, and a description of how they are processed is in the section "Error Recovery." Reader file processing is initiated by the receipt of a device end interruption from a spooling card reader. No explicit operator command is required to start the processing of an input file. When the device end is unstacked to DMKRSP, an open subroutine is called to build the necessary control blocks and to obtain the virtual, real, and DASD buffer space required for the file. A channel program to read 41 cards is built in the buffer, and DMKIOSQR is called to start the reader. When the interruption for the first buffer is unstacked, the first card is checked for its validity as a userid card. The minimum information that this card must contain is the use rid of the owner of the input file. It may appear anywhere on the card, with the restriction that it must be the first information punched. Optional information on the userid card can include a filename and type and/or the class of the virtual card reader to which the file is to be directed. If the userid is valid, the file processing continues; otherwise, the operator receives an error message and processing is terminated. After each file buffer is read, it is written onto disk by the paging I/O routines in the same way that virtual output files are handled. When a unit exception signaling physical end-of-file is received from the reader, the file is closed by writing the final buffer to disk and completing and queuing the SFBLOK to the reader's file chain. If the owner of the file is currently logged on, he is given a message indicating that a file has been read and if he has an available card reader, it is posted with a device end interruption. An available reader is one of the correct class which is ready, is not bUSY, has no active file, and has no pending interruptions. Various routines in CP accumulate, format, and punch account cards that contain system usage information for certain users. These routines format the information into an SO-column card image preceded by a punch CCW and call DMKACOAQ to queue the card for real output. DMKACOAQ calls DMKACOPU to punch the card on a real punch, if one is available; otherwise, the card is queued in main storage until a punch is free. When a punch finishes processing its last file, a test is made to see if any accounting cards have been queued. If they have, DMKACOPU is called to process them. In addition to the cards generated by CP to account for a virtual machine's use of system resources, the user may request cards to be punched in order to account for the use of virtual machine resources by jobs running under his userid. In order to do so, the user must have the account option (ACCT) entered into the directory. To punch an accounting card, the user must issue a code X'004C' DIAGNOSE instruction with a pointer to either a parameter list containing user specified "charge to" information, or a data area containing up to 70 bytes of user specified information to be punched into the accounting card. DMKHVC validates the instruction operands, builds an account buffer (ACNTBLOK), and DMKACOQU is called to queue the card for real output. For additional information about this user option, see "DIAGNOSE Interface (DMKHVq" under "Privileged Instructions." When the user accounting option is being utilized, the user must keep in mind that each additional accounting record requested is occupying real storage space. Degradation of system performance occurs if available storage becomes filled with accounting data. SPOOLING COMMANDS The spooling commands provide an interface between the user, the system operator, and the spooling system. There are three types of spooling commands: • Those that affect virtual devices • Those that affect real devices • Those that affect spool files that are queued within the system The commands that affect virtual devices are generally available to all system users, and a user can only affect the status of devices that are attached to his own virtual machine. Commands that affect the status of the real system's spooling devices can be used by the system operator only. Commands that affect closed spool files that are awaiting processing are generally available to all users, with some additional capabilities assigned to the system operator. For example, a user may alter the char~cteristics only of those files that have an owner's userid that matches his own, whereas the system operator may change any spool file in the system. Each spool file in the system has a number of attributes that are assigned to it, either explicitly or by default, at the time that it is created. These attributes and their values are as follows: • Filename and filetype can be 24 character fields. Either or both can be replaced by a user-supplied value. section 1. Introduction 97 Spoolid number is a system-assigned number between 1 and 9900. It is automatically assigned when the file is created (input) or closed (output), and is unique within the system. The file's owner, the device type, and the id number are specified. Usually, the userid defaults to the identification of the user issuing the given command. Because the identification number rather than the filename and filetype is an identifier, duplicate user-assigned names do not present an identification problem. • The number of logical records (cards or print lines) in the file is an integer between 1 and 16 million. For printer files, the record count also includes any immediate operation code space or skip CCWs. • The originating user is the identification of the file's creator, if the file has been internally transferred from the originator's printer or punch to the new owner's card reader. files transferred to a user's virtual reader can also be controlled by class. If the receiving user has several readers, the input to each can be limited to files of a certain class. In addition, the ORDER command allows sequencing of input files by class as well as spoolid number. output priorities can also be managed by altering the hold status of a file. Individual users can alter the hold status with the CHANGE command, While the system operator can change (hold or free) the files of specific individual users. These commands affect the status virtual spooling devices: Command CLosi-- The number of copies requested for an output file is between 1 and 99. Unless altered by the user or operator, it defaults to 1. • The device type is used by DIAGNOSE for a file transferred to a reader to determine the virtual type of output device. In addition to those attributes, a file that is queued for real output or virtual input always has a class associated with it. A class is a single alphameric character from A through Z or from 0 to 9. It controls both the real or virtual device on which the file will be printed, punched, or read, and the relative priority and sequence of output on the device. While each file is assigned a single class, each real spooling output device can be assigned from one to four classes. The device then processes only files that have a class attribute that corresponds to one of its own, and processes these files in the order that its own classes are specified. For example, if a printer is assigned the classes A, D, 2, it processes any printer file with a class of A before it searches the printer output queue for a file with class D. All class D files are printed before class 2 files. The output class for a file is assigned at the time the file is created and is the class that is associated with the virtual device that created it. While each real spooling device can have up to four classes, each virtual spooling device can have only one. When a user logs onto to the system, the class associated with a device is the one defined in his directory entry for that device. However, he can alter this class at any time by the SPOOL command. As files are created and closed by a device, they take on the device's output class. After they are closed and are awaiting output, their class can be changed by a CHANGE command issued either by the file's owner or the system operator. The system operator can alter the system generated output class (es) of a real output device by the START command. Output 98 SPOOL of a user's !1~~n!!!g Terminates spooling operations on a specified device. It clears the device of any pending interrupt conditions, and for output files, updates the tag record, completes and queues the file for real output. Optional operands allow the user to specify a filename and filetype, and to override for the given file any standard CLASS, HOLD/NOHOLD or COpy operands set into the output device by the SPOOL command. Establishes the file attributes that apply to files created on, or read by, the given device. It establishes the class that will be in effect, whether: files are to be automatically held, input files are to be saved or purged after reading, and output files are to be directed to the real system Frinters and punches or are to be transferred to a user's virtual reader. The operator can use these commands to control the activity of the real spooling devices: Command BACKSPAC ~~~~!~g DRAIN Stops the operation of a specified output or input device after it has finished processing the file on which it is currently working. A printer must be drained prior to the issuance of the LOADBUF command. Unit record devices are normally drained prior to system shutdown. START Restart a device after it has been drained. Options allow the operator to specify the spooling output class Backspaces an active spooling device for either a specified number of pages (printers only) or to the beginning of the file (printers or punches). IBM VM/370: System Logic and Problem Determination Guide for the output device separator records. FLUSH REPEAT LOADBUF SPACE and output Immediately halts the output on the specified device and either flushes that copy of the file from the system, or puts it into the system hold status for future processing. Supple.ents the number of copies requested by the user for the file when it was created. The operator can specify a number froa 1 to 99 that is added to the number specified by the user. Loads the universal character set buffer of the FCB of the specified printer with the specified image. If requested, the system verifies the loading by printing its contents on the affected printer. Forces the output on the specified printer to be single spaced, regardless of the skipping or spacing commands specified by the file's creator. ~EQQ! l!!~ ~~~~g~!~~~ ~~!!~~g~: The spooling commands alter the attributes and status of closed spool files that are queued and awaiting processing. When a command applies to an individual file, the device type (RDR, PUN, PRT) and the spoolid number must be provided to identify the file. In most commands requiring a spoolid, the keyword CLASS followed by a valid spool class or the keyword ALL are acceptable substitutes for the spoolid number. This causes the command to be executed for all files of the given class or device type. The use rid is the identification of the user issuing the command, except that the system operator must explicitly supply the identification of the user whose files he wishes to affect or he must specify the keyword SYSTEM, which give$ access to all files (valid for CHANGE, PURGE, ORDER, and TRANSFER commands also). Command CHAUGi- ~~~~i~~ Changes the filename and filetype, the number of copies, and the class of the specified file. Any of the above attributes of a file can be determined via the QUERY command. HOLD Places, via the system operator, the specified file in a hold status. The file is not printed or punched is released by the system operator. The operator can hold any user files by device type. FREE Opposite of the HOLD co.mand. Allows a file or group of files that were previously held to become available for processing. However, the user cannot reset a hold that was set by the operator with the HOLD command. PURGE Removes unwanted spool files from the system before they are printed or punched. ORDER Reorders the input files in a virtual card reader. It can order files by identification number, by class, or by any combination of the two. TRANSFER Transfers a virtual reader to another user's virtual reader without any processing. The TRABSFER command causes a changing in the owning userid field in the file's SFBLOK. SPOOL FILE ERROR RECOVERY I/O errors on real spooling unit record devices are handled by a transient routine that is called by DMKIOS after it has sensed the unit check associated with the error on a spooling device. If appropriate, a restart CAW is calculated and DMKIOS is requested to retry the operation, in some cases waiting for a device end that signals that the failing device has been made ready after manual corrective measures have been taken. If, after retrying the operation the error is unrecoverable, DMKIOS is informed that a fatal error has occurred. DMKIOS then unstacks the interruption, flagged as a fatal error, and passes control to real spooling executive. The routines that handle unstacked interruptions in real spooling executive only module operations that have been completed correctly or those that are fatal errors. If a fatal error is unstacked, the recovery mechanism depends on the operation in progress. For fatal reader errors, processing of the current file is terminated and any portion of the file that has been read and stored on disk is purged. The owner of the file is not informed of the presence of a fractional part of the file in the system. For fatal printer or punch errors, the SFBLOK for the partially completed file is re-queued to the appropriate output list and processing can be resumed by another available printer or punch, or can be deferred until the failing device is repaired. In any case, the failing device is marked logically offline, and no attempt is made by the system to use it until the operator varies it back online via the VARY command. DASD I/O errors for page writes are transparent to the user. A new page for the buffer is assigned, the file linkage pointers are adjusted, and the buffer is rewritten. The failing page is not de-allocated and no subsequent request for page space is granted access to the failing page. If an unrecoverable error is encountered while reading a page, processing depends on the routine that is reading the file. If the processing is being section 1. Introduction 99 done for a virtual reader, the user is informed of the error and a unit check/intervention required condition is reflected to the reader. If the processing is being done for a real printer or punch, the failing buffer is put into the system hold status, and processing continues with the next file. In either case, the DASD page is not de-allocated and it is not available for the use of other tasks. If the checkpoint start procedure encounters I/O errors or invalid DASD data on the checkpoint cylinders, the operator is notified. The FORCE option of the checkpoint start performs all the checkpoint start functions except that, invalid or unreadable files are bypassed. While this is at best a partial recovery, the only other alternative is a cold (COLD) start where all spool file data is lost. RECOVERY MANAGEMENT SUPPORT (RHS) If the space allocated for paging and spooling on the system's DASD volumes is exhausted and more 'is requested by a virtual spooling function, the user receives a message and a unit check intervention required condition is reflected to the virtual output device that is requesting the space, the output file is automatically closed and it is available for future processing. The user can clear the unit check and periodically retry the operation which will start when space is free or completely restart later from the beginning of the job. If the task requesting the space is the real spooling reader task, the operator receives an error message and the partially complete file is purged. Any time the spooling space is exhausted, the operator is warned by a console message and alarm. However, the system attempts to continue normal operation. The machine check handler (HCD) minimizes lost computing time caused by machine malfunction. MCD does this by attempting to correct the malfunction immediately, and by producing machine check records and messages to assist the service representatives in determining the cause of the problem. The channel check handler (CCD) aids the I/O supervisor (DHKIOS) to recover from channel errors. CCD provides the device dependent error recovery programs (ERPs) with the information needed to retry a channel operation that has failed. This support is standard and model independent on the external level (from the user's point of view there are no considerations, at system generation time, for model clependencies) • RECOVERY FROM SYSTEM FAILURE SYSTEM INITIALIZATION FOR RMS Should the system suffer an abnormal termination, CF attempts to perform a warm start. Spool file and device data, as well as other system information is copied from real storage to warm start cylinders on DASD storage. When the systme is reinitialized, the spool data and other system data is retrieved from the warm start cylinders and operation continues. DMKCPI calls to initialize the error recording at cold start and warm start. DMKIOEFL gives control to DMKIOG to initialize the MCD area. A store CPU ID (STIDP) instruction is performed to determine if VM/370 is running in a virtual machine environment, or running standalone on the real machine. If VM/370 is running in a virtual machine, the version code is set to a hexadecimal 'FF' by DMKPRV. If the version code returned is hexadecimal 'FF', the RMS functions are not initialized beyond setting the wait bit on in the machine check new PSW (virtual). This occurs because machine check interruptions and channel errors (other than channel data checks) are not reflected to any virtual machine. VM/370, running on the real machine, determines whether the virtual machine should be terminated. If the warm start data in real storage had damaged by the abnormal termination, the warm start procedure recognizes the situation and notifies the operator that a warm start cannot be performed. Another recovery method would be to attempt a checkpoint start. The spool file recovery routines (DMKCKS) dynamically checkpoint on DASD storage; the status of all open reader files, the status of all closed output files, real spooling device data, and system hold queue information. This information is stored on checkpoint cylinders that are allocated, along with warm start cylinders, at system generation. When a checkpoint (CKPT) start is requested, spool file and spooling device information is retrieved from the checkpoint cylinders. Spool file blocks are chained to their appropriate reader, printer or punch chains; record allocation blocks are reconstructed; spooling device status is restored; and, system hold queues are chained to the proper devices. system operation then continues. 100 If the version code is not X'FF,' DMKIOG determines what channels are online by performing a STORE CHANNEL ID (STIDC) instruction and saves the channel type for each channel that is online. The maximum machine check extended logout length (MCEL) indicated by the STORE CPU ID (STIDP) instruction is added to the length of the MCD record header, fixed logout length and damage assessment data field. DMKIOG then calls DMKFRE to obtain the necessary storage to be allocated for the MCH record area and the CP executing block (CPEXBLOK). DMKIOG saves the pointers for the machine check record and the CPEXBLOK in DMKMCH. DMKIOG obtains the storage for the I/O extended logout area and IBM VM/370: System Logic and Problem Determination Guide initializes the logout area and the ECSW to 1s. The 110 extended logout pointer is saved at location 172 and control register 15 is initialized with the address of the extended logout area. The length of the CCH record and the online channel types are saved in DMKCCH. It should be noted that the ability of a CPU to produce an extended logout or 110 extended logout and the length of the logouts are both model and channel dependent. If VM/370 is being initialized on a Model 165 II or 168, the 2860, 2870, and 2880 standalone channel modules are loaded and locked by the paging supervisor and the pointers are saved in DMKCCH. If VM/370 is being initialized on any other model, the integrated channel support is assumed; this support is part of the channel control subroutine of DMKCCH. Before returning to CMKIOE the MCH/CCH recording cylinder for error recording is initialized. DMKIOE passes control back to DMKCPI and control register 14 is initialized with the proper mask to record machine checks. CVERVIEW OF MACHINE CHECK HANDLER A machine malfunction can originate from the CPU, real storage or control storage. When any of these fails to work properly, the CFU attempts to correct the malfunction. When the malfunction is corrected, the machine check handler (MCH) is notified by a machine check interruption and the CPU logs out fields of inforaation in real storage, detailing the cause and nature of the error. The model independent data is stored in the fixed logout area and the model dependent data is stored in the extended logout area. The machine check handler uses these fields to analyze the error, format an error record, and write the record out on the error recording cylinder of SYSRES. If the machine fails to recover from the malfunction through its own recovery facilities, the machine check handler is notified by a machine check interruption. An interruption code, noting that the recovery attempt was unsuccessful, is inserted in the fixed logout area. The machine check handler then analyzes the data and attempts to keep the system as fully operational as possible. Recovery from machine malfunctions can be divided into four categories: functional recovery, system recovery, system-supported restart and syst~m repair. These levels of error recovery are discussed in their order of acceptability, functional recovery being most acceptable and system repair being least acceptable: !Y!~I!g!A1 RECCVERY: Functional recovery is recovery froi--i-ii~hine check without adverse effect on the system or the interrupted user. This type of recovery can be made by CPU retry, the ECC facility, or the machine check handler. CPU retry and ECC error correcting facilities are discussed separately in this section tecause they are significant in the total error recovery scheme. Functional recovery by MCH is made by correcting storage protect feature (SPF) keys and intermittent errors in real storage. E!E11~ SI~Q!ISl: System recovery is attempted when functional recovery is impossible. System recovery is the continuation of system operations at the expense of the interrupted user, whose virtual machine operation is terminated. System recovery can only take place if the user in question is not critical to continued system operation. An error in a system routine that is considered to be critical to system operation precludes functional recovery and would require a system-supported restart. SYSTEM-SUPPORTED RESTART: When the aachine check o~~urs In-i-crItical-routine, the primary system operator is notified that the system cannot continue tc operate. An automatic reload of the system occurs. This type of recovery is tried when functional and system recovery have failed or could not be tried. SYSTEM REPAIR: Sy~tem repair is recovery that requIres-the- serv~ces of maintenance personnel and takes place at the discretion of the operator. Usually, the operator has tried to recover by system-sup~orted restart one or more times with no success. An example of this type of error is when a hard error occurs so frequently that system-supported restart is not successful. SYSTEM/370 RECOVERY FEATURES The operation of the Machine Check Handler depends on certain automatic recovery actions taken by the hardware and on logout information given to it by the hardware. CPU errors are automatically retried by microprogram routines. These routines save source data before it is altered by the operation. When the error is detected, a microprogram returns the CPU to the beginning of the operation, or to a point where the operation was executing correctly, and the operation is repeated. After several unsuccessful retries, the error is considered permanent. ECC checks the validity of data from real and control storage, automatically correcting single-bit errors. It also detects multiple-bit errors but does not correct them. Data enters and leaves storage through a storage adapter unit. This unit checks each douhlewcrd for correct parity in each byte. If a single-bit error is detected, it is corrected. The Section 1. Introduction 101 corrected double word is then sent tack into real or control storage and on to the cpu. When a multiple-bit error is detected, a machine check interruption occurs, and the error location is placed in the fixed logout area. MCH gains control and attempts to recover from the error. interruption. To m~n~m~ze the possibility of losing logout information by recursive machine check interruptions, the machine check new PSW gives control to DM~MCH with the system disabled for further interruptions. There is always a danger that a machine malfunction may occur immediately after DMKMCH is entered and the system is disabled for interruption. Disabling all interruptions is only a temporary measure to give the initial analysis subroutine time to make the fcllowing emergency provisions: Two control registers are used by MCH for loading and storing control information (see Figure 19). Control register 14 contains mask bits which specify whether certain conditions can cause machine check interruptions and mask bits which control conditions under which an extended logout can occur. Control register 15 contains the address of the extended logout area. • It disables for soft machine check interruptions. Soft recording is not enabled until the error is recorded. • It saves the contents of the fiXed and extended logout areas in the machine check record. • It alters the machine check new PSW to point to the term subroutine. The term subroutine handles second machine check errors. • It enables the machine for hard machine check interruption. • If a virtual user was running when the interruption occurred, the running status (GPRs, FPRs, PSW, M.C. old PSW, CRs, etc.) is saved in the user's VMBLOK. • It initially examines the machine check data for the following error types: r--'---------------------------------, 1 1 1 IWordlBitsl Name of Field 14 o Check-stop control 14 Synch. MCEL control 14 2 14 4 I/O extended logout control Recovery report mask 14 5 Degradation report mask 14 6 14 7 External damage report mask Warning lIask 14 8 Asynch. MCEL control 14 15 1 Associatedl I With I Asynch. fixed log control 8-281 MCEL address 9 1 Mch-Chk handling Mch-Chk handling Chan-Chk handling Mch-Chk handling Mch-Chk handling Mch-Chk handling Mch-Chk handling Mch-Chk handling Mch-Chk handling Mch-Chk handling L MCIC=ZERO PSW invalid System damage Timing facilities damage The occurrence of any of these errors is considered uncorrectable by DMKMCH; the primary system operator is informed, the error is formatted and recorded, and the system is shutdown followed by an automatic restart function. ---..J Figure 19. RMS Control Register Assignments • If the instruction processing damage bit is on, it tests for the following types of Jlalfunctions: "ultiple-~it Error in Main storage Control ~s given to the main storage analysis subroutine. VM/370 Machine Check Handler 1I0dule consists of the following functions: • • • • • • • • SPF Key Error -- control is given SPF analysis subroutine. to the Retry failed If the cpu was in supervisor state the error is considered uncorrectable and the VM/370 system is terminated. If the CPU was in problem state, the virtual Jlachine is reset or terminated and the system continues operation. Initial analysis subroutine Main storage analysis subroutine SPF analysis subroutine Recovery facility mode switching Operator cOllmunication subroutine Virtual user termination subroutine soft recording subroutine Buffer error subroutine Termination subroutine The initial analysis subroutine of receives control by a lIachine 102 (DMKMCH) DMK"CH check • If CPU retry or ECC was successful on a soft error, control is given to the soft recording subroutine to format the record, write it out on the error recording cylinder, and update the count of soft error occurrences. • If external damage was reported, control is given to the soft recording subroutine to IBM V"/370: system Logic and Problem Determination Guide format the record and write it error recording cylinder. out on the The main storage analysis subroutine is given control when the machine check interruption was caused by a multiple-bit storage error. An initial function points the machine check new PSi to an internal subroutine to indicate a solid machine check, in case a machine check interruption occurs while exercising main storage. Damaged storage areas associated with any portion of the CP nucleus itself cannot be refresbed; multiple-bit storage errors in CP cause the V"/370 system to be terminated. An automatic restart reinitializes VM/370. If the damage is not in the CP nucleus, main storage is exercised to determine if the failure is solid or intermittent. If the failure is solid, the 4K page frame is marked unavailable for use by the system. If the failure is intermittent, the page frame is marked invalid. The change bits associated with the damaged page frame are checked to determine if the page had been altered, by the virtual machine. If no alteration had occurred w VM/370 assigns a new page frame to the virtual machine and a backup copy of the page is brought into storage the next time the page is referenced. If the page had been altered V"/370 resets or terminates the virtual machine, clears its virtual storage, and sends an appropriate message to the user. Normal system operation continues for all other users. If an SPF machine check occurs, which is associated with a virtual machine, the SPF analysis subroutine exercises all 16 keys in the failing storage 2K page frame. If an SPF machine check does not occur, the machine check is intermittent and the swptable for the page associated with the failing storage address is located. The storage key for the failing 2K storage page frame is retrieved fro. the swptable and the change and reference bits are set on in the storage key. The storage key is then stored into the affected failing storage 2K page frame. If an SPF machine check occurs in exercising the 16 keys 5 times each, then the machine check is considered solid and the follow.ing actions are taken. (1) The virtual machine is selectively reset or terminated by the virtual machine termination subroutine; (2) The 4K page frame associated with the failing address is removed as an available system resource. This is accomplished by locating the cortable for the defective page and altering the corfpnt and corpbpnt pointers to make the page unavailable to the system. The cordisa bit in this cortable is set on to identify the reason for the status of this page in a system dump. The recovery facility mode switching subroutine (DMKMCH"S) allows the service representative to change the mode that CPU retry and ECC recording are operating in. This subroutine receives control when a user with privilege class F issues some form of the SET "ODE command. A check is initially made to determine if this is V"/370 running under VM/370. If this is the case, the request is ignored and control is returned to the calling routine. The format of the "ODE command is as follows: SET MODE {RETRYI"AIN} {QUIETIRECORD} The SPF analysis subroutine is given control when the machine check interruption was caused by an SPF error. An initial function points the machine check new PSi to an internal subroutine if a machine check interrruption occurs during testing and validation. The SPF analysis routine then determines if the error was associated with a failure in virtual machine storage or in the storage associated with the control program. An SPF error associated with V"/370 is a potentially catastrophic failure. Namely, V"/370 always runs with a PSi key of zero, which means that the SPF key in main storage is not checked for an out-of-parity condition. The SPF analysis subroutine exercises all 16 keys in the failing storage 2K page frame. If an SPF machine check occurs in exercising the 16 keys 5 times each, the error is considered solid and the operating system is terminated with a system shutdown. The system is automatically restarted and VM/370 is reinitialized. If an SPF machine check does not occur, the machine check is considered intermittent. The zero key is restored to the failing 2K page frame and this is transparent to the virtual machine. RETRY and MAIN imply CPU storage, respectively. retry and main QUIET causes the specified facility to be placed in quiet mode. RECORD causes the count of soft errors to be reset to zero and the specified facility to be placed in record mode. The operator communciation subroutine is invoked when the integrity of the system has degraded to a point where automatic shutdown and reload of the system has been tried and was unsuccessful, or could not be attempted due to the severity of the hardware failure. A check is first made to determine if the system operator is logged on as a user, next a check is made to determine if the system operator is disconnected. If either of these checks is not affirmative a message cannot be issued directly to the system operator. A LPSW is performed to place the CPU in a disabled Section 1. Introduction 103 wait state with a recognizable wait in the CPU instruction counter. state code The virtual machine termination subroutine selectively resets or terminates a virtual user whose operation has been interrupted by an uncorrectable machine check. First, the machine is marked nondispatchable to prevent the damaged machine from running before reset or termination is performed. The machine check record is formatted and DMKIOEMC is called to record the eiror. Then the user is notified by a call to DMKQCNWT that a machine check has occurred and that his operation is ter.inated. The primary system operator is notified of the virtual user termination by a message issued by a call to DMKQCNWT. If the virtual machine is running in the virtual=real area, DMKUSO is c~lled to log the virtual machine off the system and to return the storage previously allocated to the virtual machine and to clear any outstanding virtual machine I/O requests. The HOLD option of LOGOFP is invoked to allow a user on a dial facility to retain the connection and thus permit LOGON without re-establishing the line connection. However, if the virtual machine is running in the virtual area, and DMKCPM is then called to put the virtual machine in console function mode, the user must re-initialize the system to commence operation. The soft recording subroutine performs two basic functions: • Pormats a machine check record and DMKIOEMC to record the error on the recording cylinder. calls error £fY R~trI ~y!~! Mode: Quiet mode (bit 4 of control register 14-Set to 0) can be entered in one of two ways: (1) when 12 soft machine checks have occurred, or (2) when the SET MODE RETRY QUIET command is executed by a class F user. In this mode, both CPU retry and ECC reporting are disabled. The CPU remains in quiet mode until the next system IPL (warm start or cold start) occurs or a SET MODE RETRYIMAIN RECORD command is executed by a class P user. ]££ B~£QIg!ng ~Qg~§: To achieve model independent support, RMS does not set a specific mode for ECC recording. The mode in which ECC recording is initialized depends upon the hardware design for each specific CPU model. For the IBM System/370 Models 135, 145, 158, and 168, the hardware initialized state (therefore the normal operational state for VM/370) is quiet mode. Por the IBM System/370 Models 155 II and 165 II, the hardware initialized state (the normal operational state for VM/370) is record mode. An automatic restart incident due to a VM/370 failure does not reset the ECC recording mode in effect at the time of failure. The change from record to quiet mode for ECC recording can be initiated in either of the following ways; (1) by issuing the SET MODE (MAINIRETRY) QUIET command, or ~) automatically whenever 12 soft machine checks have occurred. For the purpose of model independent implementation this occurs by setting bit 4 of control register 14 to zero. The change from quiet to record mode for ECC recording can be accomplished by use of the SET MODE MAIN RECORD command. This recording mode option is for use by maintenance personnel only. It should be noted that CPU retry is placed in recording mode if it is not in that state when the SET MODE MAIN RECORD command is issued. While in recording mode, corrected ECC reports are formatted and recorded on the error recording cylinder, but the primary systems operator is not informed of these incidents. Maintains the threshold for CPU retry and ECC errors and switches from recording to quiet mode when the threshold value is exceeded. To accomplish this, a counter is maintained by DMKMCH for successful CPU retry and corrected ECC events. ~g~ B~!II R~£QIg!ng ~Qg~: Recording mode (bit 4 of control register 14 set to one) is the initialized state, and normal operating state of VM/370 for CPU retry errors. Recording mode may also be entered by use of the CP SET command. When 12 soft machine checks have occurred, the soft recording subroutine switches the CPU from recording mode to quiet mode. For the purpose of model-independent implementation this is accomplished by setting bit 4 of control register 14 to zero. Because in quiet mode no soft machine check interruptions occur, a switch from quiet mode to recording mode can be made by issuing the SET MODE RETRYIMAIN RECORD command. While in recording mode, corrected CPU - RETRYIMAIN reports are formatted and recorded on the VM/370 error recording cylinder, but the primary systems operator is not informed of these occurrences. 104 On CPU models equipped with a high speed buffer (155 II, 158, 165 II, 168) or a data lookaside ta ble (DLA T) (165 II, 168) the deletion of buffer blocks because of hardware failure is reported via a DEGRADATION report machine check interruption. MCR enables itself for degradation report machine check interruptions at system initialization by setting bit 5 of control register 14 to 1. If a machine check interruption occurs that indicates high speed buffer or DLAT damage, MeR formats the record and calls DMKIOEMC to record it on the error recording cylinder, informs the primary systems operator of the failure, and returns control to the system to continue normal operation. IBM VM/370: System Logic and Problem Determination Guide Normally, when DHKCCH returns control to the the error recovery program for the device which experienced the error is scheduled. When the ERP receives control, it prepares to retry the operation if analysis of the IOERBLOK indicates that retry is possible. Depending on the device type and error condition, the ERP either effects recovery or marks the event fatal and returns control to the 1/0 supervisor. The 1/0 supervisor calls the recording routine DHKIOE to record the channel error. 1/0 supervisor, The termination subroutine is given control if a hard machine check interruption occurs while DHKHCH is in the process of handling a machine check interruption. Note that soft error reporting is disabled for the entire time that HCH is processing an error. An analysis is performed of the machine check interruption code of the first error to determine if it was a soft error. If it was, the first error is recorded, the system status is restored and control is restored to the point where the first error occurred. If the first error was a hard error, the operator communication subroutine is given control to issue a message directly to the system operator, and to terminate CP operation. OVERVIEW OF CHANNEL CHECK HANDLER The channel check bandler (CC~ aids the 110 supervisor in recovering from channel errors and informs the operator or service representative of the occurrence of channel errors. CCH receives control from the 110 supervisor when a channel data check, channel control check, or interface control check occurs. CCH produces an 110 error block (IOERBLOg) for the error recovery program and a record to be written on the error recording cylinder for the system operator or service representative. The operator or service representative may obtain a copy of the record by using the CPERBP programs. A message about the channel error is issued each time a record is written on the error recording cylinder. When the 110 supervisor program detects a channel error during routine status examination following an SID, TID, HID, or an 110 interruption it passes control to the channel check handler (DKKCCH). DKKCCH analyzes the channel logout information and constructs an IOERBLOK, if the error is a channel control or interface control check. An BCSW is constructed and placed in the IOERBLOK. The IOERBLOK provides information for the device dependent error recovery procedures. DKKCCH also constructs a record to be recorded on the error recording cylinder. Normally, CKKCCH returns control to the 1/0 supervisor after constructing an IOERBLOK and a record. However, if DHKCCH determines that system integrity has been damaged (system reset or invalid unit address, etc.) then CP operation is terminated. CP termination causes DKKCCH to issue a message directly to the system operator and place the CPU in a disabled wait state with a recognizable wait code in the CPU instruction counter. Recovery is not initiated for channel errors associated with 1/0 events inititated by a virtual machine, however these causes termination of the virtual machine after it has been notified of the failure. The error is recorded by DKKIOECC on the error recording cylinder. The primary system operator is notified of the failure, and DKKIOE returns control to the system and normal processing continues. CHANNEL CONTROL SUBROUTINE Control is passed to the channel control subroutine of DKKCCH after a SIO with failing status stored, or an 1/0 interrupt because of a channel control check, interface control check, or channel data check. If "logout pending" is indicated in the CSW, the CP termination flag is set. The existence of real device blocks (RCHBLOK, RCUBLOK, RDEVBLOK), for the failing device address, is determined by a call to DKKSCNRU and an indicator is set if they do exist. An indicator is also set if the IOBLOK for the failing device address exists. A call to DKKFRBE obtains storage space for the channel check record and the channel control subroutine builds the record. If the indicators show that the real device blocks and the IOBLOK exist, a call to DKKFRBE obtains storage space and the channel control subroutine builds the 1/0 error block (IOERBLOK); if these blocks do not exist, the IOERBLOK is not built. The IOERBLOK is used for two purposes: 1. The device dependent error recording program (ERP) uses the IOERBLOK to attempt recovery on CP initiated 1/0 events. If the 1/0 events that resulted in a channel check are associated with a virtual machine, the 1/0 fatal flag is set in the IOBLOK and the virtual machine is reset, cleared, and put into CP read status. The length and address of .the channel check record is placed in the IOERBLOK and the IOERBLOK is chained off the IOBLOK. 2. DMKIOECC uses the IOERBLOK to record the channel check record on the error recording cylinder. The channel control subroutine gives control to a channel dependent error analysis routine to build or save the extended channel status word (ECSW) • When the channel control subroutine regains control, eight active addresses are saved in the channel check record. If the CP termination flag is set, the 1/0 extended logout data fro. the channel check record is restored to main storage for use by SEREP. If the system operator is both logged on Section 1. Introduction 105 as a user and connected to the system, a message (DMKCCH603W) is sent to him advising him of the channel error. A LPSW is then executed to place the CPU in a disabled wait state with a wait state code of 002 in the CPU instruction counter. If the CP termination flag is not set, a check is made to determine if an IOERBLOK was built by the channel control subroutine. If an IOERBLOK was not built, DMKIOECC is called to record the channel check record on the error recording cylinder. The system operator is then sent a message (DMKCCH6011 or DMKCCH602I) informing him of the error and control is then returned to DMKIOS to continue system operation. If an IOERBLOK was built, control is returned to DMKIOS, which calls the appropriate ERP. Whether or not recovery is successful, DMKIOS eventually calls DMKIOE to record the channel check record. DMKIOE examines the status of the in CSW error in the IOERBLOK to determine if it was a channel error; if so, it finds the length and pointer to the channel check record and records the error on the error recording cylinder. If this was not a channel error, DMKIOE continues normal processing. The 2860 logout area is checked to determine if a complete logout exists; if not, CP termination is necessary. A check is made in the logout area for validity of the CSW fields and bits are set. in field to the channel check record's ECSW indicate bad fields. The channel logout is then checked and sequence codes are set based on the presence of a channel control check, or an interface control check. If a channel control check is present, the codes set are determined through parity. The count determines if parity is good and sets a resultant condition code. The logout area is examined to ensure that the unit address has valid parity and is the same address passed by DMKIOS. If so, the unit address valid bit in the ECSW is set. If the unit address is not valid the unit address valid bit is reset to indicate the invalid condition. The ECSW field in the channel check record is moved to the IOERBLOK, if one exists. After completing the ECSW the 2680 routine moves the 2860 I/O extended logout into the channel check record, set. the I/O extended logout area to ones, and returns to the channel control subroutine. INDIVIDUAL ROUTINES A separate channel error analysis routine is provided for each type of channel for which DMKCCH can be used. The purpose of these routines and the channel control subroutine is to analyze the channel logout to determine the extent of damage and to create a sequence and termination code to be placed in the ECSW in the IOERBLCK. At system initialization, the correct model dependent channel recovery routine is loaded and the storage necessary to support the routine is allocated. The model dependent error analysis subroutines and routines and their functions are as follows: Since all of these systems have integrated channels one common subroutine is used to handle all of these CPU types. This subroutine: If the channel failed to logout completely, at least part of the logout area is all 1s. If a fullword of ones is found, a CP termination condition exists. A check is made in the logout area for valid CSW fields, and bits are set in the channel check record's ECSW field to indicate bad fields. The termination and sequence codes are set depending on the presence of an interface control check or channel control check. If a channel control check is present, the codes set are determined through parity, count, and/or data transfer checks. For the 2870, parity can be determined directly from the channel logout. • Moves the ECSW to the IOERBLOK The logout area is also examined to ensure valid parity in the unit address and to ensure that the address is the same as that passed to DMKCCH by DMKIOS. If so, the unit address valid bit in the ECSW is set. • Moves the hardware stored unit address and the I/O extended logout to the channel check record The third word of the logout area is also analyzed for type II errors. If a type II error is found, a CP termination condition exists. • Sets the I/O extended area to 1s and ECSW The ECSW field in the channel check record is moved t6 the IOERBLOK, if one exists. control Before returning to the channel control subroutine, the 2870 routine moves the 2870 I/O Indicates CP termination if the ECSW is not complete, the channel has been reset, or reset codes are invalid Returns control subroutine 106 to logout area the channel IBM VM/370: system Logic and Problem Determination Guide extended logout into the channel check record and sets the 1/0 extended logout area to ones. This routine logout. analyzes 9 words of the 28 word The 2880 analysis routine handles channel data checks, interface control checks, and channel control checks. Termination code 3 (system reset) is not set in the ECSW because the 2880 channel does not issue system reset to the devices. Retry codes of zero to five are possible. Note: There are several catastrophic conditions under which the CP termination flag can be set, in the 2880 analysis routine. They are: • The channel did not complete the logout. • The CSW is not reliable. • The unit address in the 1/0 interruption device address field is not correct. If valid paraaeters are not found, the SVC is reflected back to the virtual machine and no recording takes place. If valid parameters are passed, a pageable routine (DftKVER) processes the error record. DftKVER validates the record passed by the virtual machine. If invalid conditions are found, no recording takes place. Control is returned to the SVC interruption routine in DftKPSA to reflect the SVC to the virtual machine as an SVC interruption. The action taken by the virtual machine is dependent on the operating system running in the virtual machine, not Vft/370. If the record is valid, it is modified by changing virtual information to real. The actual recording is accomplished by using existing modules in DftKIOE and DftKIOF. Control is then returned to the instruction following the SVC 76 rather than reflecting the SVC. This eliminates the duplication of error recording in Vft/370 and the operating system in the virtual machine. If DftKVER determines that the recording represented a permanent I/O error, a message is sent to the primary system operator. ERROR RECORDING AND RECOVERY Only a channel check record is needed if the channel has recognized an internal error and has recovered from it without any damage. No recovery action is necessary in these cases. If the channel address in the 1/0 interruption device address field does not match the channel address in the logout, a CP termination condition exists. If the channel was doing a scan and the unit control word had a parity check a CP termination condition exists. If there was no parity check, there was no damage during "the scan and only a channel check record i p required. Depending on the sequence the channel has entered, the termination and sequence codes are set; command address, unit addr.ess, and unit status validity is determined; and the sequence code is set valid. The ECSW field in the channel check record is moved into the IOERBLOK, if one exists. Before returning to the channel control subroutine, the 2880 routine moves the 1/0 extended logout into the channel check record and sets the 1/0 extended logout area to ones. ERROR RECORDI~G INTERFACE FOR VIRTUAL ftACHINES The error recording interface provides a means of recordinq errors encountered by operating systems running in a virtual machine under Vft/370. If the virtual operating system is Vft/370, it must be the Release 2.0 version or later. An SVC 76 issued by a virtual machine is used to signal Vft/370 that error recording is required. The SVC interruption handler in DftKPSA examines general registers 0 and 1 to determine if valid parameters have been passed. The error recording facility is made up of four modules. One module (DftKIOE) is resident and the other three (DftKIOC, DMKIOF, and DMKIOG) are pageable. The error recording modules record temporary errors (statistical data recording) for CP generated I/O except for DASD devices with a buffered log. The error recording routines record: unit checks, statistical data counter overflow records, selected temporary DASD errors, machine checks, channel ~hecks, and hardware environmental counter sense data on the error recording cylinders of the system resident device in a format suitable for subsequent processing by the CPEREP program. The recorder asynchronously updates the statistical data counters for supported devices. The recorder also initializes the error recording cylinders at IPL if they are in an unrecognizable format. When the recorder is entered from DftKIOS, it is entered at DftKIOERR. This entry is used for unit checks and channel data checks. A test is made of the failing CSW (located in the IOERBLOK) to see if the error was a channel error. If it was, control is passed to routine for recording channel checks. The IOERBLOK sense data, IOBLOK flags, and VftBLOK privilege class are examined to deter.ine if the error should be recorded. ERROR RECORD WRITING After an error record is formatted, it is added to the error recording cylinder using DftKRPAGT Section 1. Introduction 107 and DMKRPAPT. The error recording cylinders have page sized records (4096 bytes). Each page contains a header (8 bytes) which signifies: the cylinder and page number of the page (4 bytes), the next available space for recording within page (2 bytes), a page in-use indicator (1 byte), and a flag byte. Bach record within the page is recorded with a 4-byte prefix. If an error record is too large to be added into a page, a new page is retrieved, updated with record, and placed back on the error recording cylinder with the paging routines. Two cylinders are used for error recording: one cylinder is used exclusively for recording the I/O errors and the other cylinder for recording MCH/CCH errors. The cylinders that are used for error recording are specified by the user at system generation time. If either error recording cylinder becomes 90 per cent full, a message is issued to the operator using DMKQCNWT to warn him of the condition. If either cylinder becomes full, another message is issued to inform the operator and recording is stopped on that cylinder. Recording continues on the cylinder that is not full. If a channel check error is to be recorded, the recorder is entered at DMKIOERR or DMKIOECC. The channel check handler determines the entry. A channel check error record is formatted. A machine check enters at DMKIOEMC. Pointers are passed from the machine check handler in registers 6 and 7 to locate a buffer where the machine check record and length are saved. A machine check error record is recorded with the saved machine check logout and additional information. The machine check error record is written onto the error recording cylinder by using the paging routines. Hardware environmental counter records are formed using routine DMKIOEEV. This routine is scheduled by DMKIOS after control is returned from the ERP. Sense data information is stored in the IOERBLOK by the BRP. The record formed is called a nonstandard record. recording. The paging routines, DMKRPAPT and DMKRPAGT, are used to read the error recording cylinder's pages (4096 byte records). As each page record is read, it is examined to see if this record is the last recorded. If so, a pointer in storage is saved so recording can continue on that page record. Control is then returned to the caller. If either error recording cylinder is in an unrecognizable format, that cylinder is automatically reformatted by CPo DASD ERROR RECOVERY, ERP (DMKDAS) Error recovery is attempted for CP initiated I/O operations to its supported devices and for user-initiated operations to CP supported devices that use a DIAGNOSE interface. The primary control blocks used for error recovery are the RDEVBLOK, the IOBLOK and the IOERBLOK. In addition, auxiliary storage is sometimes used for recovery channel programs and sense buffers. The initial error is first detected by the I/O interruption handler which performs a SENSE operation if a unit check occurs. Unit check errors are then passed to an appropriate RRP. If a channel check is encountered, the channel check interruption handler determines whether or not retry is possible and passes control to an ERP through the I/O interruption handler. DASD errors are processed as described below. • Channel control check is treated check. It is retried 10 times. as seek • Interface control check is treated as check. It is retried 10 times. seek • Channel data check is treated as data check. It is retried 10 times. ~g.YiE!!!.!!! DMKIOEPM is called by the CPEREP program via a DIAGNOSE instruction. DMKIOEFM is invoked to reset the specified error recording cylinders (if CLEARALL, CLEARIO, or CLEARMC was specified). The clear is performed by resetting each page-header, space-available field. A pointer in storage is then updated to point to the first page on the error r~cording cylinder available for recording MCH and CCH records and the first page available on the other error recording cylinder for recording outboard errors. Control is then returned to the calling routine. £.b!!£!: Retry the operation 10 times for 3330, 3340, 3350, and 2305 devices; twice for the 2314 and 2319. No record !2Y.!!S !ng Recallbrate and retry times (2314/2319). No record found: Execute a READ HOME ADDRESS and check--home-address against seek address. If they are the same, consider the error permanent. If they are not equal recalibrate and retry the channel program 10 times (2314/231~. For other devices, return to caller. ~!!!!! £.b!!£!: Retry the that 3330/3350 seek hardware. DMKIOEPL is called by DMKCPI to find the first available page that can be used' for error 108 ,mis§i.!!g ,2SSI!!§§ ma:rks: the channel progrii--~O operation 10 times except checks are retried by !.!!!!!I!!!ntiE.!! I!!g.Yi!~~: Issue a message to console and wait for solicited device end. This procedure is repeated once. IBM VM/370: System Logic and Problem Determination Guide ~~§ Q~! £~~£!: One retry of the operation. Q~i~ £h~£~§: For 2314/2319 retry the operation 256 times, with a recalibrate being executed every 16th time. For the 2305/3340, retry the operation 10 times. For the 3330/3350, the operation is retried by hardware. Q~~~~B~: Retry the operation 10 times. ~!22!ng ~~~~~§§ m2~~~~: Retry the operation 10 times. ~Q!~2ng ~~j~£!: The command is not retried. f~~i~i~g £h~£!: Test for command reject. present, retry the operation 10 times. If not Environmental s~!~ E~~2~ni: Issue a UNLOAD-command and retry the operation. BUFFER back when the task has finished. This enables the Eap to receive control even if the retry was successful and allows the freeing of all storage gotten for CCWs and temporary buffers. The IOBRCAW is set to the recovery CCW string address. In handling an intervention required situation, the ERP sends a message to the operator and then waits for the device end to arrive. This is accomplished by a return to DKKIOS with the ERP bit in the IOBSTAT field set on and the IOBSTRT bit in the IOBFLAG field set off. When the device end interruption arrives, the original channel program which was interrupted is then started. The ERP flags of the IOERBLOK are also used to indicate when special recovery is being attempted. For example, a READ HOKE ADDRESS command when a no record found error occurs. !~~£! condition check: This error should not occur. CP-does--not-use alternate tracks in its paging or spooling management. When a disk pack is formatted, any track that is marginal 1S marked as permanently allocated and, therefore, made unavailable for use by CPo The error recovery routine keeps track of the number of retries in the IOBRCNT field of the IOBLOK. This cQunt determines if a retry limit has been exeeded for a particular error. On initial entry from DMKIOS for an error condition, the count is zero. Each time a retry is attempted the count is increased by one. The ERP preserves the original error CSW and sense information by placing a pointer to the original IOERBLOK in the RDEVBLOK. Additional IOERBLCKs, which are received from DKKIOS on failing restart attempts, are discarded. The original IOERBLOK is thus preserved for recording purposes. The other two indicators are self explanatory and are explained in Figure 20. I 1________ I!elS ____________ 1 Action to be IIOBSTATIIOBFLAG IIOBSTAT 1 Performed IIOBERP IIOBRSTRT IOBFATALlby DKKIOS ------ 0 o o 0 o 0 0 1-------------- IReturn control 1 when solicited 1 device end 1 arrives 1 IRestart using 1 IOBRCAW 1 1Permanent I/O 1 Error 1 IRetry successfulll L Figure 20. If after a specified number of retries, DKKDAS fails to correct the error situation, the operator mayor may not be notified of the error condition. Control is returned to DKKIOS. DMKIOS is notified of the permanent error by posting the IOBLOK (IOBSTAT=IOBFATAL). The error is recorded via DMKIOS by DKKIOERR, if DKKDAS and DMKIOE determine that the error condition warrants recording. o ---, ~ Summary of lOB Indicators If the error is uncorrectable or intervention is required, the ERP calls DKKKSW to notify operator. The specific message is identified in the KSGPARK field of the IOERBLOK. If the error is corrected by a restart, the temporary or transient error is not recorded. control is returned to DMKIOS witn the error flag off. TAPE ERROR RECOVERY, ERP (DKKTAP) Before returning control to DMKIOS on either a permanent error ,or a successful recovery, the ERP frees all auxiliary storage gotten for recovery CCWs, buffers, and IOERBLOKs, and updates the statistical counters for 2314 and 2319 devices. Error recovery is attempted for user-initiated tape I/O operations to CP supported devices that use the DIAGNOSE interface. The primary control blocks used for error recovery are the RDEVBLOK, the IOBLOK, and the IOERBLOK. In addition, auxiliary storage is used for recovery channel programs (repositioning and erase) • The DMKIOS interface with the ERP uses the IOBSTAT and lOB FLAG fields of the IOBLOK to determine the action required when the Bap returns to DMKIOS. When retry is to be attempted the ERP turns on the restart bit of the IOBFLAG field. The Eap bit of IOBSTAT field is also turned on to indicate to DMKIOS that the ERP wants control The interruption handler, DKKIOS, performs a SENSE operation when a unit check occurs. Tape errors are then passed to D!KTAP. The sense information associated with a unit check is contained in the IOERBLOK. If a channel check is encountered, the channel check interruption handler determines if retry is possible and passes control to the RRP through the I/O interruption handler. section 1. Introduction 109 When an error is encountered and ERP receives control, DMKTAP determines if this is the first entry into the ERP for this task. The IOBRCNT (lOB error count) field of the lOB is zero on initial entry. On this first entry, the pointer to the IOERBLOK is placed in the RDEVIOER field of the RDEVBLOK. This preserves the original error CSW and sense information for recording. Thereafter, IOERBLOKS are discarded before a retry is attempted or a permanent error is passed to lOS. The ERP looks for two other specific conditions. If the error count field is not zero, entry must be due to a recovery attempt. Thus, it may be a solicited device end to correct an intervention required condition or a retry attempt for either tape repositioning or channel program re-execution. The ERP keeps track of the number of retries in the IOBRCNT field of the IOBLOK to determine if a retry limit has been exceeded for a particular error. If the specified number of retries fails to correct the error, the error is recorded and DMKIOS is notified of the permanent error by turning on a status flag in the IOBLOK (IOBSTAT=IOBFATAL) • If the error is corrected by DMKTAP, the temporary error is not recorded and control is returned to DMKIOS with error flags all off. When repositioning is required in order to attempt recovery, additional ERP flags are contained in the IOERBLOK to indicate paths for specific errors (that is, data check on write must reposition, erase, and then reissue original channel program). All error recovery is started the same except for intervention required errors. The IOBFLAG is turned on to indicate RESTART (IOBFLAG=IOBRSTRT), and the IOBRCAW (IOBLOK Restart CAW) is filled with the restart channel address word. In addition, an IOBSTAT flag is turned on to indicate that the ERP is in control so that control can be returned to ERP during all tape error recovery (IOBSTAT=IOBERP). In the case of an intervention required error, the ERP sends a message to the operator, and then returns to DMKIOS with indications that tell DMKIOS the ERP is waiting for a device end on this device. This is done by clearing the restart flag and returning to DMKIOS with only the LOBERP flag on. When ERP has determined a permanent error situation or successfully recovered from an error, all auxiliary storage obtained for recovery CCWs, buffers, and IOERBLOKs is freed before a return is made to DMKIOS (see Figure 23 for a summary of the lOB indicators), also, the statistical counters for 2400, 3410, and 3420 devices are updated. 3270 REMOTE SUPPORT ERROR RECOVERY Recovery from errors associa ted with bisync lines, and the related channel and transmission control unit hardware is processed by DMKBSC. Recovery from errors associated with data and control processing by the remote station (the device) as defined by remote status and sense byte definition (see lIB:!. l£IQ lnf.Q~.!!!B:!.!.Q1! .Qi~E!B:I £Q!!EQn~n:!:. ~~2£!:iE:!:.iQn, Order No. GA27-2749) is processed by DMKRGF. ,Control blocks associated with these errors are the CORTASK, the RDEVBLOK, the BSCBLOK, the NICBLOK, the IOBLOK, and the IOERBLOK. The interruption handler, DMKIOS, performs a SERSE operation upon detection of a unit check condition (IOERBLOK). The related sense data is analyzed as it relates to the previous operation (CORTASK or BSCBLOK, whichever is applicable). If a channel check is encountered by the channel check interruption handler, the channel check interruption (DMKBSC) procedures determine if recovery can be attempted. If it cannot be retried, that operation is aborted and an appropriate message is sent to the system operator. Depending on the error encountered, ERP receives control and either DMKBSC or DMKGRA and DMKGRB determines if this is the first entry into the ERP for this task. The IOBRCRT (lOB error count) field of the lOB is zero on initial entry. On this first entry, the pointer to the IOERBLOK is placed in the RDEVIOER field of the RDEVBLOK. This preserves the original error CSW and sense information for recording. Thereafter, IOERBLOKs are discarded before a retry is attempted or a permanent error is passed to lOS. The ERP looks for two other specific conditions. If the error count field is not zero, entry must be due to a recovery attempt. Thus, it may be a solicited device end to correct an intervention required condition or a retry attempt channel program re-execution. The ERP keeps track of the number of retries in the IOBRCRT field of the IOBLOK to determine if a retry limit has been exceeded for a particular error. If the specified number of retries fails to correct the error, the error is recorded and DMKIOS is notified of the permanent error by turning on a status flag in the IOBLOK (IOBSTAT=ICSFATAL). If the error is corrected, the temporary error is not recorded and control is returned to DMKIOS with error flags all off. When ERP has determined a permanent error situation or successfully recovered from an error, all auxiliary storage obtained for recovery CCWs, buffers, and IOERBLOKs is freed before a return is made to'DMKIOS (see Figure 23 for a summary of the lOB indicators). Also, the statistical counters for 3270 are updated. If the error is uncorrectable or operator intervention is necessary, ERP calls the message writer to write the specific message. 110 IBM VM/370: System Logic ann Problem Determination Guide Reference. processing. • • • • Introduction to CMS Interruption handling Functional information (how C"S works) Register usage DMSNUC structure storage structure Free storage management SVC handling os macro simulation The Conversational Monitor System (CMS), the major subsystem of V"/370, provides a comprehensive set of conversational facilities to the user. Several copies of CMS may run under CP, thus providing several users with their own time-sharing system. CMS is designed specifically for the V"/370 virtual machine environment. Each copy of CMS supports a single user. This means that the storage area contains only the data pertaining to that user. Likewise, each CMS user has his own machine configuration and his own files. Debugging is simpler because the files and storage area are protected from other users. programs can be debugged from the terminal. The terminal is used as a printer to examine limited amounts of data. After examining program data, the terminal user can enter commands on the terminal to alter the program. CMS, operating with CP, is a time-sharing system suitable for problem solving, program development, and general work. It includes several programming language processors, file manipulation commands, utilities, and debugging aids. Additionally, CMS can simplify the operation of other operating systems in a virtual machine environment ~hen controlled from a remote terminal. For example, CMS can create and modify job streams,' and to analyze virtual printer output. Part of the CMS environment is related to the virtual machine environment created by CPo Each user is completely isolated from the activities of all other users, and each machine in which CMS executes has virtual storage available to it and managed for it. The CP commands are recognized by CMS. For example, the commands allow messages to be sent to the operator or to other users, and virtual devices to be dynamically detached from the virtual machine configuration. THE CMS COMMAND LANGUAGE The CMS command language offers terminal users a wide range of functions. It supports a variety of programming languages, service functions, file manipulation, program execution control, and general system control. The CMS commands that are useful in debugging are discussed in "Debugging with CMS" in this section. For detailed information on all other CMS commands, refer to the !~L~IQ: ~~~ ~2~~sBg sBg ~s£!2 Figure 23 describes CMS command THE FILE SYSTEM CMS interfaces with virtual disks, tapes, and unit record equipment. The CMS residence device is kept as a read-only, shared, system disk. Permanent user files may be accessed from up to nine active disks. CMS controls logical access to those virtual disks, while CP facilities manage the device sharing and virtual-to-real mapping. User files in CMS are identified with three designators: the filena.e, the filetype, which can imply specific file characteristics to the CMS file management routines, and the filemode, which describes the location and access mode of the file. The compilers available under CMS default to particular input filetypes, such as ASSEMBLE, but the file manipulation and listing commands do not. Files of a particular filetype form a logical data library for a user; for example, the collection of all COBOL source files, or of all object (TEXT) decks, or of all EXEC procedures. This allows selective handling of specific groups of files with minimum input by the user. User files can be created directly from the terminal with the CMS EDIT facility. EDIT provides extensive context editing services. File characteristics such as record length and for.at, tab locations, and serialization options can be specified. The system includes standard definitions for certain filetypes. CMS automatically allocates compiler work files at the beginning of command execution on whichever active disk has the greatest amount of available space, and deallocates them at completion. Compiler object decks and listing files are normally allocated on the same disk as the input source file or on the primary read/write disk, and are identified by combining the input filename with the filetypes TEXT and LISTING. These disk locations may be overridden by the user. A single user file is limited to a maximum of 65533 records and must reside on one virtual disk. The file management system limits the number of files on anyone virtual disk to 3400. All CMS disk files are written as 800-byte records, chained together by a specific file entry that is stored in a table called the master file directory; a separate master file directory is kept for, and on, each virtual disk. The data records may be discontiguous, and are allocated and deallocated automatically. A subset of the master file directory (called the user file directory) is made resident in virtual storage when the disk directory is made available to CMS; it is updated on the virtual disk at least once per command if the status of any file on that disk has been changed. section 1. Introduction 111 Virtual disks may be shared by CMS users; the facility is provided by VM/370 to all virtual machines, although a user interface is directly available in CMS commands. Specific files may be spooled between virtual machines to accomplish file transfer between users. Commands allow such file manipulations as writing from an entire disk or from a specific disk file to a tape, printer, punch, or the terminal. other commands write from a tape or virtual card reader to disk, rename files, copy files, and erase files. Special macro libraries and text or program libraries are provided by CMS, and special commands are provided to update and use them. CMS files can be written onto and restored from unlabeled tapes via CMS commands. ~~Y!!Q~: Multiple write access produce unpredictable results. under CMS can Problem programs which execute in CMS can create files on unlabeled tape in any record and block size; the record format can be fixed, variable, or undefined. Figure 21 describes the CMS file system. PROGRAM DEVELOPMENT CMS includes commands to create and compile source programs, to modify and correct source programs, to build test files, to execute test programs and to debug from the terminal. The commands of CMS are especially useful for as and DOS/VS program development, but also may be used in combination with other operating systems to provide a virtual machine program development tool. CMS utilizes the as and DOS/VS compilers via interface modules; the compilers themselves normally are not changed. To provide suitable interfaces, CMS includes a certain degree of as and DOS/VS simulation. The sequential, direct, and partitioned access methods are logically simulated; the data records are physically kept in the chained 800-byte blocks which are standard to CMS, and are processed internally to simulate as data set characteristics. CMS supports VSAM catalogs, data spaces, and files on as and DOS disks using the DOS/VS Access Method Services. as SVC functions such as GETMAIN/FREEMAIN and TIME are simulated. The simulation restrictions concerning what types of as object programs can be executed under CMS ar€ primarily related to the as/pcp, MFT, and MVT Indexed Sequential Access Method (ISAM) and the telecommunications access methods, while functions related to multitasking in as and DOS/VS are ignored by CMS. INTERRUPTION HANDLING IN CMS CMS receives virtual SVC, input/output, program, machine, and external interruptions and passes control to the appropriate handling program. 112 The Conversational Monitor System is SVC (supervisor call) driven. s'c interruptions are handled by the DMSITS resident routines. Two types of SVCs are processed by DMSITS: internal linkage SVC 202 and 203, and any other SVCs. The internal linkage SVC is issued by the command and function programs of the system when they require the services of other CMS programs. (Commands entered by the user from the terminal are converted to the internal linkage SVC by DMSINT) • The OS SVCs are issued by the processing programs (for example, the Assembler). INTERNAL LINKAGE ~!~~: When DMSITS receives controj-as-a--result of an internal linkage SVC (202 or 203), it saves the contents of the general registers, floating-point registers, and the SVC old PSW, establishes the normal and error return addresses, and passes control to the specified routine. (The routine is specified by the first 8 bytes of the parameter list whose address is passed in register 1 for SVC 202, or by a halfword code following SVC 203.) For SVC 202, if the called program is not found in the internal function table of nucleus (resident) routines, then DMSITS attempts to call in a module (a CMS file with filetype MODULE) of this name via the LOADMOD command. If the program was not found in the function table, nor was a module successfully loaded, DMSITS returns an error indicator code to the caller. To return from the called program, DMSITS restores the calling program's registers, and makes the appropriate normal or error return as defined by the calling program. QI~~R ~!~~: The general approach taken by DMSITS to process other SVCs supported under CMS is essentially the same as that taken for the internal linkage SVCs. However, rather than passing control to a command or function program, as is the case with the internal linkage SVC, DMSITS passes control to the appropriate routine. The S'C number determines the appropriate routine. In handling non-CMS SVC calls, DMSITS refers first to a user-defined SVC table (if any -- set up by the DMSHDS program). If the user-defined SVC table is present, any SVC number (other than 202 or 203) is looked for in that table. If it is found, control is transferred to the routine at the specified address. If the SVC number is not found in the user-defined SVC table (or if the table is nonexistent), the standard system table of as calls is searched for that SVC number. If the SVC number is found, control is transferred to the corresponding address in the usual manner. If the SVC number is not in either table, then the supervisor call is treated as an ABEND call. IBM VM/370: system Logic and Problem Determination Guide DMSII:UC Area of Storage til ~ til .. t+ CD til CD o t+ 1-1' o I:' H I:' t+ t1 o ~ c: o ....t+ o I:' ... W Free Storage Disk Storage The DMSHDS initialization program sets up the user-defined SVC table. It is possible for a user to provide his own SVC routines. All input/output interruptions are received by the I/O interrupt handler, DMSITI. DMSITI saves the I/O old PSi and the CSi (channel status word) • It then determines the status and requirements of the device causing the interruption and passes control to the routine that processes interruptions from that device. DMSITI scans the entries in the device table until it finds the one containing the device address that is the same as that of the interrupting device. The device table (DEVTAB) contains an entry for each device in the system. Each entry for a particular device contains, among other things, the address of the program that processes interruptions from that device. When the appropriate interrupt handling routine completes its processing, it returns control to DMSITI. At this point, DMSITI tests the wait bit in the saved I/O old PSi. If this bit is off, the interruption was probably caused by a terminal (asynchronous) I/O operation. DMSITI then returns control to the interrupted program by loading the I/O old PSi. status is present with attention and a write ccw was terminated, its buffer is unstacked. An attention interrupt causes a read to be issued to the terminal, unless attention exits have been queued via the STAX, macro. The attention exit with the highest ,-r'Iority is given control at each attention until the queue is exhausted, then a read is issued. Device end status indicates that the last I/O operation has been completed. If the last I/O operation was a write, the line is deleted from the output buffer and the next write, if any, is started. If the last I/O operation was a normal read, the buffer is put on the finished read list and the next operation is started. If the read was caused by an attention interrupt, the line is first checked for the commands RT~ HO, HT, or HX, and the appropriate flags are set if one is found. Unit exception indicates a canceled read. The read is reissued, unless it had been issued with ATTREST=NO, in which case unit exception is treated as device end. ~~!Q~~LgY!£~LE~!!I~~_!!I~~~YE1!~~~: Interruptions from these devices are handled by the routines that actually issue the corresponding I/O operations. When an interruption from any of these devices occurs, control passes to DMSITI. Then DMSITI passes control to DMSIOW, which returns control to the routine that issued the I/O operation. This routine can then analyze the cause of the interrupti en. y§~] £Q!!~Q~~~Q Qj!l£~ !~I~RRQgI!Q!§: If the wait bit is on, the interruption was probably caused by a nonterminal (synchronous) I/O operation. The program that initiated the operation most likely called the DMSIOi function routine to wait for a particular type of interruption (usually a device end.) In this case, DMSITI checks the pseudo-wait bit in the device table entry for the interrupting device. If this bit is off, the system is waiting for some event other than the interruption from the interrupting device; DMSITI returns to the wait state by loading the saved I/O old PSi. (This PSi has the wait bit on.) If the pseudo-wait bit is on, the system is waiting for an interruption fro. that particular device. If this interruption is not the one being waited for, DMSITI loads the saved I/O old PSi. This will again place the machine in the wait state. Thus, the program that is waiting for a particular interruption will be kept waiting until that interruption occurs. If the interruption is the one being waited for, DMSITI resets both the pseudo-wait bit in the device table entry and the wait bit in the I/O old PSi. It then loads that PSi. This causes control to be returned to the DMSIOi function routine, which, in turn, returns control to the program that called it to wait for the interruption. TERMINAL INTERRUPTIONS: Terminal input/output Interruptions-are-handled by the DMSCIT module. All interruptions other than those containing device end, channel end, attention, or unit exception status are ignored. If device end 114 Interrupts from devices under user control are serviced the same as CMS devices except that DMSIOW and DMSITI manipulate a user created device table, and DMSITI passes control to any user written interrupt processing routine that is specified in the user device table. Otherwise, the processing program regains control directly. The program interruption handler, DMSITP, receives control when a program interruption occurs. When DMSITP gets control, it stores the program old PSi and the contents of the registers 14, 15, 0, 1, and 2 into the program interruption element (PIE). (The routine that handles the SPIE macro instruction has already placed the address of the program interuption control area (PICA) into PIE.) DMSITP then determines whether or not the event that caused the interruption was one of those selected by a SPIE macro instruction. If it was not, DMSITP passes control to the DMSABR ABEND recovery routine. If the cause of the interruption was one of those selected in a SPIE macro instruction, DMSITP picks up the exit routine address from the PICA and passes control to the exit routine. Upon return from the exit routine, DMSITP returns to the interrupted program by loading the original program check old PSW. The address field of the PSi was modified by a SPI! exit routine in the PIE. IBM VM/370: System Logic and Problem Determination Guide On return contains: An external interruption causes control to be passed to the external interrupt handler DMSITE. If the user has issued the HNDEXT macro to trap external interrupts, DMSITE passes control to the user's exit routine. If the interrupt was caused by the timer, DMSITE resets the timer and types the BLIP character at the terminal. The standard BLIP timer setting is two seconds, and the standard ELIP character is upper case, followed by the lower case (it moves the typeball without printing). otherwise, control is passed to the DEBUG routine. Hard machine check interruptions on the real are not reflected to a CMS virtual user by A message prints on the console indicating failure. The user is then disabled and must CMS again in order to continue. CPU CPo the IPL FUNCTIONAL INFORMATION The most important thing to remember about CMS, from a debugging standpoint, is that it is a one-user system. The supervisor manages only one user and keeps track of only one user's file and storage chains. Thus, everything in a dump of a particular machine relates only to that virtual machine's activity. You should be familiar with register usage, save area structuring, and control block relationships before attempting to debug or alter CMS. fro. a routine, register 15 Return Code ---0-(0 )0 ~~~~i~g NO error occurred Called routine not found Error occurred If a CMS routine is called by an SVC 202, registers 0 through 14 are saved and restored by CMS. Most CMS routines register. use register 12 as a base DMSNUC is the portion of storage in a CMS virtual machine that contains system control blocks, flags, constants, and pointers. The CSECTs in DMSNUC contain only symbolic references. This means that an update or modification to CMS, which changes a CSECT in DMSNUC, does not automatically force all CMS modules to be recompiled. Only those modules that refer to the area that was redefined must be recompiled. The USERSECT CSECT defines space that is not used by CMS. A modification or update to CMS can use the 18 fullwords defined for USERSECT. There is a pointer (AUSER) in the NUCON area to the U3er space. The DEVTAB CSECT is a table describing the devices available for the CMS system. The table contains the fcllowing entries: When a CMS routine is called, Rl must point to a valid parameter list (PLIST) for that program. On return, RO mayor may not contain meaningful information (for example, on return from a call to FILEDEF with no change, RO will contain a negative address if a new FCB has been set up; otherwise, a positive address of the already existing FCB). R15 will contain the return code, if any. The use of Registers 0 and 2 through 11 varies. On entry SVC 202: B~g!2i~E 1 12 13 14 15 to a command or routine called by Contents The-address of the PLIST supplied by the caller The address entry point of the called routine The address of a work area (12 doublewords) supplied by SVCINT The return address to the SVCINT routine The entry point (same as register 12) • • • • • • 1 10 1 1 1 4 console disks reader punch printer tapes You can change some existing entries in DEVTAB. Each device table entry contains the following information: • • • • • virtual device address Device flags Device types symbol device name Address of the interrupt (for the console) processing routine The virtual address of the console is defined at IPL time. The virtual address of the user disks can be altered dynamically with the ACCESS command. The virtual address of the tapes can be altered in the device table. Changing the virtual address of the reader, printer, or punch will have no effect. section 1. Introduction 115 • STRUCTURE OF CMS STORAGE Figure 22 describes how CMS uses its virtual storage. The pointers indicated (MAINSTRT, are all found "AINHIGH, FREELOWE, and FREEUPPR) in NUCON (the nucleus constant area). The sections following uses: • DMSHUC of CMS storage have the Low Storage DMSFBEE Free Storage {Approximately X'03000' to X'OEOOO' Area This area is a free storage area, from which requests from DMSFREE are allocated. The top part of this area contains the File Directory for the System Disk {SST AT). If there is enough room (as there will be in most cases) , the FREETAB table also occupies this area, just below the SSTAT. • • Transient Program Area (X'OEOOO' to X'10000') The top of storage is occupied by the Loader Tables that are required by the CMS loader. These tables indicate which modules are currently loaded in the User Program Area (and the Transient Program Area after a LOAD COMMAND). The size of the Loader Tables can be varied by the SET LDRTBLS command. However, to successfully change the size of the Loader Tables, the SET LDRTBLS com.and must be issued immediately after IPL. FREE STORAGE MANAGEMENT Free storage can be allocated by the GETMAIN or DMSFREE macros. Storage allocated by the GETMAIN macro is taken from the user program area, beginning after the high-address of the user program. Storage allocated by the DMSFREE macro can be taken from several areas. If possible, DMSFREE requests are allocated from the low-address free storage area. Otherwise, DMSFREE requests are satisfied from the storage above the user program area. Because it is not essential to keep all nucleus functions resident in storage all the time, some of them are made "transient." This means that when they are needed, they are loaded from the disk into the Transient Program Area. Such programs may not be longer than two pages, because that is the size of the Transient Area. (A page is 4096 bytes of virtual storage.) All transient routines must be serially reusable since they are not read in each time they are needed. There are two types of DHSFREE requests for free storage: requests for USER storage and NUCLEUS storage. Because the two types of storage are kept in separate 4K pages, it is possible for storage of one type to be available in low storage, while no storage of the other type is available. CMS Nucleus (X'10000' to X'20000') All GETMAIN storage is allocated in the user program area, starting after the end of the user's actual program. Allocation begins at the location pointed to by the NUCON pointer MAINSTRT. The location MAIN HIGH in NUCON is the "high-extend" pointer for GETMAIN storage. Segment 1 of storage contains the reenterable code for the CMS Nucleus routines. In shared CMS systems, this is the "protected segment." That is, this segment must consist only of reenterable code, and may not be modified under any circumstances. This fact implies certain system restrictions for functions which require that storage be modified, such as the fact that DEBUG breakpoints or CP address stops cannot be placed in this segment, in a saved system. User Program Area (X'20000' to Loader Tables) User programs are loaded into this area by the LOAD command. Storage allocated by means of the GETMAIN macro instruction is taken from this area, starting from the high address of the user program. In addition, this storage area can be allocated from the top down by DMSFREE, if there is not enough storage available in the low DMSFREE storage area. Thus the usable size of the User Program Area is reduced by the amount of free storage which has been allocated from it by DMSFREE. 116 (Top pages of storage) (X'OOOOO' to approximately X'03000') This area contains pointers, flags, and other data updated by the various system routines. • Loader Tables Before issuing any GETMAIN macros, user programs must use the STRINIT macro to set up user free storage pointers. The STRINIT macro is issued only once, preceding the initial GETMAIN request. The format of the STRINIT macro is: r-------------------·--------------, I I I r r" I I [label] I STRINIT I ITYPCALL=I~!~ II I I I I I I BALR II I IL__________________________________ I ILL.J.J - - JI r , I IBALRI L .J indicates how control is passed to DMSSTG, the routine that processes the STRINIT macro. Because DMSSTG is a TYPCALL=I~!~ IBM VM/370: System Logic and Problem Determination Guide CONTROL BLOCKS INFREESTORAGE-------. VIRTUAL STORAGE ENDOFSTORAGE~--------------------------------- System Loader Table (Size determined by SET LDRTBLS command) Storage Key = X'F' FREEUPPR----~~----------------------~~----~ DMSFREE requests when no more low storage available FREELOWE -----+-- - - - - - - - -- BBG BEJG Unused portion of User Program Area DMSNUC MAINHIGH _ _ _+_ __ GETMA: MAINSTRT---~.- - - ''"u:,~ --- - --- J.,:.:Storage Key; X'E' - - _L ~~ ~~ , . . . . - - - - - - - - - . . . . . , X'3000' USERSECT _____________ ---1 X'2ADS' SUBSECT _____________ ---1 X'2A40' TSOBLKS -------------1 X'29BO' OPSECT The User's Program (program is loaded via the LOAD command) ---------------1 X'2S00' DMSABW -----------1 X'2360' -----------~X'2300' X'20000'~--------------------S-to-r-a~ge--K-e~y-=-X-'E~' CMS Nucleus In "saved systems" this area is a protected segment (that is, all code must be reentrant and cannot be modified) X'1 0000 -11----------------------=----'------4 Transient Program Area X'EOOO'--II---------------:..---Low Storage OMS F R EE Free Storage Area DMSFREE requests are filled from this area. The upper part of this area contains the System Disk MFD followed by the FREETAB, if there is enough room. X'3000'-+------------------S-t-or-a~g-e-K-e~y-=-X--'E-'-0-r-X-'-F_' DMSNUC System Control Blocks, flags, constants, and pointers. X'O'--~--------------------~~~----- *The half-page containing OPSECT and TSOBLOKS has a storage key = X'E' - - - - - - - - - - - 1 X'2190' -----------IX'1DDO' 1---------------IX'1CCS' FVS I----------------t X'1ADS' DIOSECT """--------------------t X'19ES' SVCSECT X'174S' ----------------------t --------------------1 X'16BO' ---------------------1 X'1620' ---------------------1 X'1550' - - - - - - - - - - - - 1 X'1200' ----------------1 X'DFO' ------------------1 X'C90' --------------------1 X'700' ---------------------1 X'600' -----------------------1 X'2EO' NUCON Figure 22. eMS Storage Map Section 1. Introduction 111 Refer to Figure 22 for a description of CMS virtual storage usage. The format of an element on the GETMAIN free element chain is as follows: nucleus-resident routine, other nucleus-resident routines can branch directly to it (TYPCALL=BALR) while routines that are not nucleus-resident must use linkage SVC (TYPCALL=SVC). If no operands are specified the default is TYPCALL=SVC. r--------~------_y_----~------_, 0(0) When the STRINIT macro is executed, both MAINSTRT and MAINHIGH are initialized to the end of the user's program, in the user program area. As storage is allocated from the user program area to satisfy GETMAIN requests, the MAINHIGH pointer is adjusted upward. Such adjustments are always in multiples of doublewords, so that this pointer is always on a doubleword £oundary. As the allocated storage is released, the MAINBIGH pointer is adjusted downward. 4 (4) I FREPTR -- pointer to next free I I element in the chain, or 0 I if there is no next element I I 1------1------1----1 -I I FRELEN -- length, in bytes, of I I this element I I I 1--------1------1-----1----1 I Remainder of this free element I > > > < < < The pointer MAINHIGB can never be higher than FREELOWE, the "low-extend" pointer for DMSFREE storage allocated in the user program area. If a GETMAIN request cannot be satisfied without extending MAINHIGH above FREELOWE, GETMAIN takes an error exit, indicating that insufficient storage is available to satisfy the request. When issuing a variable length GETMAIN, six and a half pages are reserved for CMS usage; this is a design value. A user who needs additional reserved pages (for example, for larger directories) should free up some of the variable GETMAIN storage from the high end. The area between MAINSTRT and MAINHIGH may contain blocks of storage that are not allocated, and that are therefore available for allocation by a GETMAIN instruction. These blocks are chained together, with the first one pointed to by the NUCON location MAINSTRT. The DMSFREE macro allocates CMS free The format of the DMSFREE macro is: storage. r--------------------------------.------------------------, r [label] DMSFREE , DWORDS={ n } I,MIN={ n } I (0) I (1) L r I .J r "r r " L L .J.J L .J.J r r" I,TYPE=IY~~R I II I,ERR=lladdrll INUCLEUSII I I ! II I, AREA= I LOW II I IHIGH II L r r" I,TYPCALL=I~!f II I IBALRII L L.J.J L L - ___________________________________ _ L.J.J ---.--1 label operand is not available, the Jargest block of storage that is greatit-thari or equal to the minimum is returned. MIN=n specifies the minimum number of doublewords of free storage directly while MIN=(l) indicates that the minimum is in register 1. The actual amount of free storage allocated is returned to the requesting routine via general register o. a valid assembler language label. DWORDS={ n } (0 ) is the number of doublewords of free storage requested. DWORDS=n specifies the number of doublewords directly and DWORDS=(O) indicates that register 0 contains the number of doublewords requested. r , TYPE=I.Y~~S I INUCLEUSI MIN={ n } ( 1) L indicates a variable request for free storage. If the exact number of doublewords indicated by the DWORDS 118 ... indicates the type of CMS storage with which this request for free storage is filled: USER or NUCLEUS. IBM VM/370: System Logic and Problem Determination Guide r routines that are not nucleus-resident must use linkage SVC (TYPCALL=SVC). , ERR=lladdrl I .! I J L is the return address if any error occurs. "laddr" is any address that can be referred to in a LOAD ADDRESS (LA) instruction. The error return is taken if there is a macro coding error or if there is not enough free storage available to fill the request. If * is specified for the return address, the error return is the same as a normal return. r , AREA=ILOW I IHIGHI L J indicates the area of CMS free storage from which this request for free storage is filled. LOW indicates the low storage area between DMSNUC and the the transient program area. HIGH indicates the area of storage between the user program area and the CMS loader tables. If AREA is not specified, storage is allocated wherever it is available. r , TYPCALL=I~!£ I IBALRI L J indicates how control is passed to DMSFREE. Because DMSFREE is a nucleus-resident routine, other nucleus-resident routines can branch directly to it (TYPCALL=BALR) while The pointers FREEUPPR and PREELOWE in NUCOR indicate the amount of storage that DMSFREE has allocated from the high portion of the user program area. These pointers are initialized to the beginning of the loader tables. The pointer PREELOWE is the "low-extend" pointer of DMSFREE storage in the user program area. As storage is allocated from the user program area to satisfy DMSFREE requests, this pointer is adjusted downward. Such adjustments are always in multiples of 4K bytes, so that this pointer is always on a 4K boundary. As the allocated storage is released, this pointer is adjusted upward. The pointer PREELOWE can never be lower than MAINHIGH, the "high-extend" pointer for GETMAIN storage. If a DMSFREE request cannot be satisfied without extending FREELOWE below MAINHIGH, DMSPREE takes an error exit, indicating that insufficient storage is available to satisfy the request. Figure 22 shows the relationship of these storage areas. The FREETAB free storage table is kept in free storage, usually in low-storage, just below the master file directory for the system disk (S-disk). However, the FREETAB may be located at the top of the user program area. This table contains one byte for each page of virtual storage. Each such byte contains a code indicating the use of that page of virtual storage. The codes in this table are as follows: section 1. Introduction 119 ~Q~~ USERCODE (X'Ol') FLAGS ~~!m!!HI The page is assigned to user storage. NUCCODE (X'02') The page is assigned nucleus storage. TRNCODE (X'03') The page is part of transient program area. USARCODE (X' 04') The page is part of the user program area. SYSCODE (X'OS') The page is none of the above. The page is assigned to system storage, system code, or the loader tables. • to • • The The The The All completely unallocated 4K pages are kept on the user chain, by convention. Thus, if one of the nucleus chains (low-storage or high-storage) contains a full page, then this page must be transferred to the corresponding user chain. low-storage nucleus chain low-storage user chain high-storage nucleus chain high-storage user chain For each of these chains of unallocated ele.ents, there is a control block consisting of four words, with the following format: ..-------------------------------, 1 POINTER -- pointer to the first 1 free element on the 1 1 chain; it is zero, if 1 1 the chain is empty. 1 o (0) 1 • FL CL B (X • 4 0' ) Set if the destroyed. • FLHC (X'20') -- High-storage chain. set for both the nucleus and user high-storage chains. • FLNU (X' 10') -- Nucleus chain. for both the low-storage high-storage nucleus chains • • FLPA (X 'OS') Page available. This flag is set if there is a full 4K page available on the chain. This flag may be set even if there is no such page available. 1---------------------------1 4 ( 4) 1 NUM 1 the number of elements on the c ha in. 1 1 1 1 8 (8) 1 MAX -- a value equal to or 1 greater than the size of the largest element. 1 1 1 12 (C) 1 FLAGS- 1 SKEY - I TCODE -I Unused 1 1 Flag 1storage 1FREETAB 1 1 1 key 1 code 1 1 byte L-_____________________________ .I1 1----------------------------1 1 1 points to the first element on this chain of free elements. If there are no elements on this free chain, the POINTER field contains all zeros. NUM contains the number of elements on this chain of free elements. If there are no elements on this free chain, this field contains all zeros. 120 Destroyed chain has flag. been set and SKEY contains the 1-byte storage key assigned to storage on this chain. TCODE contains the l-byte FREETAB table code for storage on this chain. -----------1 POINTER MAX FLCLN (X'SO') Clean-up flag. This flag is set if the chain .ust be updated. This is necessary in the following circumstances: If one of the two high-storage chains contains a 4K page that is pointed to by FREELOWE, then that page can be r.emoved from the chain, and FREELOWE can be increased. the other DMSFREE storage pointers are maintained in the DMSFRT CSECT, in NUCON. The four chain header blocks are the most important fields in DMSFRT. The four chains of unallocated elements are: • The following flags are used: avoids failing searches. It contains a number not exceeding the size, in bytes, of the largest element on the free chain. Thus, a search for an element of a given size is not be made if that size exceeds the MAX field. However, this number may actually be larger than the size of the largest free element on the chain. When DMSFREE with TYPE=USER (the default) is called, one or more of the following steps are taken in an attempt to satisfy the request. As soon as one of the following steps succeeds, then user free storage allocation processing terminates. 1. Search the low-storage user block of the required size. chain for a 2. Search the high-storage user block of the required size. chain for a 3. Extend high-storage user storage downward into the user program area, modifying FREELOWE in the process. 4. For a variable request, put all available storage in the user program area onto the high-storage user chain, and then allocate the largest block available on either the high-storage user chain or the low-storage IBM VM/370: System Logic and Problem Determination Guide user chain. The allocated block will not be satisfactory unless it is larger than the minimum requested size. 4. Get free pages from the high-storage user chain, if they are available, and put them on the high-storage nucleus chain. 5. Extend high-storage nucleus storage downward into the user program area, modifying FREELOWE in the process. 6. For variable requests, put all available pages from the user chains and the user program area onto the nucleus chains, and allocate the largest block available on either the low-storage nucleus chains, or the high-storage nucleus chains. When DMSFREE with TYPE=NUCLEUS is called, the following steps are taken in an attempt to satisfy the request, until one succeeds: 1. Search the low-storage nucleus block of the required size. chain for a 2. Get free pages from the low-storage user chain, if any are available, and put them on the low-storage nucleus chain. 3. Search the high-storage nucleus chain for a block of the required size. The DMSFRET macro releases free storage previously allocated with the DMSFREE macro. The format of the DMSFRET macro is: --, r--- I [label] I I I I I L--- DMSFRET I DWORDS={ n },LOC={laddr} (0) (1 ) I r I r r r I I,ERR=lladdrll I,TYPCALL=I.§!£ II I BALRII I I II I I ! .... L L L I L " I I I I I I " .... --------- r ------.1 , TYPCALL=I~!.£ label I IBALRI is any valid assembler language label. L (0) is the number of doublewords of storage to be released. DWORDS=n specifies the number of doublewords directly and DWORDS=(O) indicates that register 0 contains the number of doublewords being released. LOC={ laddr} (1 ) is the address of the block of storage being released. "laddr" is any address that can be refereed to in a LOAD ADDRESS (LA) iBstruction. LOC=laddr specifies the address directly while LOC=(1) indicates the address is in register 1. r When DMSFRET is called, the block being released is placed on the appropriate chain. At that point, the final update operation is performed, if necessary, to advance FREELOWE, or to move pages from the nucleus chain to the corresponding user chain. Similar update operations are performed, when necessary, after calls to DMSFREE, as well. , ERR=lladdrl I ! I L .. indicates how control is passed to DMSFRET. Because DMSFRET is a nucleus-resident routine, other nucleus-resident routines can branch directly to it (TYPCALL=BALR) while routines that are not nucleus-resident must use SVC linkage (TYPCALt=SVC). DWORDS={ n } .. is the return address if an error occurs. "laddr" is any address that can be referred to by a LOAD ADDRESS (LA) instruction. The error return is taken if there is a macro coding error or if there is a problem returning the storage. If * is specified, the error return address is the same as the normal return address. storage allocated instruction may be following ways: by the released GETMAIN macro in any of the 1. A specific block of such storage may be released by means of the FREEMAIN macro instruction. 2. The STRINIT macro instruction releases all storage allocated by any previous GETMAIN requests. section 1. Introduction 121 Almost all CMS commands issue a STRINIT macro instruction. Thus, executing almost any CMS command causes all GETMAIN storage to be released. 3. particular, it is possible to release a was never allocated. • All requests that are satisfied in high storage must be of a temporary nature, since all storage allocated in high storage is released when the second free storage initialization routine is invoked. storage allocated by the DMSFREE macro instruction may be released in any of the following ways: 1. A specific block of such storage may be released by means of the DMSFRET macro instruction. 2. When CP's saved system facility is used, the CMS system is saved at the point just after the A-Disk has been made accessible. It is necessary for DMSFRE to be used before the size of virtual storage is known, since the saved system can be used on any size virtual machine. Thus, the first initialization routine initializes DMSFRE so that limited functions can be requested, while the second initialization routine performs the initialization necessary to allow the full functions of DMSFRE to be exercised. Whenever any user routine or CMS command abnormally terminates (so that the routine DMSABN is entered), and the ABEND recovery facility of the system is invoked, all DMSFREE storage with TYPE=USER is released automatically. Except in the case of ABEND recovery, storage allocated by the DMSFREE macro is never released automatically by the system. Thus, storage allocated by means of this macro instruction should always be released explicitly by means of the DMSFRET macro instruction. INIT2 The system uses the DMSFRES macro instruction to request certain free storage management serv ices. invokes the second initialization routine. This routine is invoked after the size of virtual storage is known, and it performs initialization necessary to allow all the functions of DMSFRE to be used. The second initialization routine performs the following steps: 1. Releases all storage that been allocated in high-storage area. 2. Allocates the FREETAB free storage table. This table contains one byte for each 4K page of virtual storage, and so cannot be allocated until the size of virtual storage is known. 3. The FREETAB table is initialized, and all storage protection keys are initialized. 4. All completely unallocated 4K pages on the low-storage nucleus free storage chain are removed to the user chain. Any other necessary operations are performed. The format of the DMSFRES macro is: r------------------------------------------------, l[label]IDMSFRESI INITl r r" I I I I I I I I I I I I I I I I I I I INIT2 CHECK CKON CKOFF UREC CALOC I,TYPCALL=ISVC II I IBALRII L I I I I I I L.... L ---' label is any label. !lUT1 invokes the first free storage initialization routine, so that free storage requests can be made to access the system disk. Before this routine is invoked, no free storage requests may be made. After this routine has been invoked, free storage requests aay be made, but these are subject to the following restraints until the second free storage management initialization routine has been invoked: 122 valid assembler language • All requests for USER type storage are changed to requests for NUCLEUS type storage. • Error checking is limited before initialization is complete. In sometimes block which has the CHECK invokes a routine which checks all free storage chains for consistency and correctness. Thus, it checks to see whether any free storage pointers have been destroyed. This option can be used at any time for system debugging. CKON turns on a flag which causes the CHECK routine to be invoked each time a call is made to DMSFREE or DMSFRET. This can be useful for debugging purposes (for example, when you wish to identify the routine destroying free storage management pointers). Care should be taken when using this IBM VM/370: system Logic and Problem Determination Guide option, since the CHECK routine is coded to be thorough rather than efficient. Thus, after the CKON option has been invoked, each call to D!SPRBB or DftSPRET takes much longer to be co.pleted than before. CKOPP turns off the flag that was turned on by the CKON option. UREC is used by DftSABN during the ABEND recovery process to release all user storage. CALOC is used by D!SABN after the ABEND recovery process has been co.pleted. It invokes a routine that returns, in register 0, the number of doublewords of free storage that have been allocated. DftSABN uses this number to determine whether ABEND recovery has been successful. A nonzero return code upon return from DftSFRES, D!SFREE, or DftSFRET indicates that the request could not be satisfied. Register 15 contains this return code, indicating which error has occurred. The following codes apply to the DftSFRES, D!SFREE, and DftSFRET macros. £2f!.~ 1 Error (DKSFREE) Insufficient storage space is available to satisfy the request for free storage. In the case of a variable request, even the minimum request could not be satisfied. 2 (DMSFREE or DMSFRET) destroyed. User storage pointers 3 (DMSFREE, DMSFRET, or DMSFRES) storage pointers destroyed. 4 (DMSPREE) An invalid size was requested. This error exit is taken if the requested size is not greater than zero. In the case of variable requests, this error exit is taken if the minimum request is greater than the maximu. request. (However, the latter error is not detected if DMSFREE is able to satisfy the maximum request.) £.QS'!} III2I c. The block overlaps another block already on the free storage chain. 7 (DftSPRET) The address given for the block being released is not doubleword aligned. 8 (D!SFRES) An invalid request code was passed to the DMSFRES routine. Because all request codes are generated by the DMSFRES .acro, this error code should never appear. 9 (DftSFREE, DftSFRET, or DMSFRES) Unexpected and unexplained error in the free storage management routine. CftS HANDLING OP PSi KEYS The the CftS nucleus protection scheme protects the CMS nucleus from inadvertent destruction by a user ptogram. iithout it, it would be possible, for example, for a FORTRAN user who accidentally assigns an incorrectly subscripted array element to destroy nucleus code, wipe out a crucial table or constant area. or even destroy an entire disk by destroying the contents of the master file directory. In general, user programs and disk-resident CftS commands run with a PSi key of X'E', While nucleus code runs with PSi key of X'O'. There are, however, some exceptions to this rule. Certain disk-resident CMS commands run with a PSW key of X'O', because they have a constant need to modify nucleus pointers and storage. The nucleus routines called by the GET, PUT, READ, and WRITE macros run with a user PSi key of X'E', to increase efficiency. Nucleus 5 (DMSFRET) An invalid size was passed to the DMSFRET macro. This error exit is taken if the specified length is not positive. 6 (DMSFRET) The block of storage which is being released was never allocated by DMSFREE. Such an error is detected if one of the following errors is found: TWO macros are available to any routine that wishes to change its PSi key for some special purpose. These are the DMSKEY macro and the DM SEIS macro. The DMSKEY macro may be used to change the PSi key to the user value or the nucleus value. The DMSKEY NUCLEUS option causes the current PSi key to be placed in a stack, and a value of 0 to be placed in the PSW key. The DMSKEY USER option causes the current PSW key to be placed in a stack, and a value of X'E' to be placed in the PSi key. The DMSKEY RESET option causes the top value in the DMSKEY stack to be removed and re-inserted into the PSi. a. The block does not lie entirely inside either the low-storage free storage area or the user program area between FREELOWE and FREEUPPR. It is a requirement of the CMS system that when a routine terminates, the DMSKEY stack must be empty. This means that a routine should execute a DMSKEY RESET option for each DMSKEY NUCLEUS option and each DMSKEY USER option executed by the routine. b. The block crosses a page boundary that separates a page allocated for USER storage from a page allocated for NUCLEUS type storage. The DMSKEY key stack has a current maximum depth of seven for each routine. In this context, a "routine" is anything invoked by an SVC call. Section 1. Introduction 123 The DMSKEY LISTUSER option causes the current PSi key to be placed in the stack, and a new key inserted into the PSi, determined as follows: the SVC system save area stack is searched in reverse order (top to bottom) for the first save area corresponding to a user routine. The PSi key which was in effect in that routine is then taken for the new PSi key. (If no user routine is found in the search, then LISTUSER has the same effect as USER.) This option is used by OS macro simulation routines when they must enter a user-supplied exit routine; the exit routine is entered with the PSi key of the last user routine on the SVC system save area stack. The BOSTICK option of DMSKBY may be used with BUCLEUS, USER, or LISTUSER (as in, for example, DftSKEY BUCLEUS,IOSTICK) if the current key is not to be placed on the DMSKEY stack. If this option is used, then no corresponding DMSKEY RESET should be issued. The DMSEXS ("execute in system mode") macro instruction is useful in situations where a routine is running with a user protect key, but wishes to execute a single instruction which, for example, sets a bit in the BUCON area. The single instruction may be specified as the argu.ent to the DftSEXS macro, and that instruction will be executed with a system PSi key. ihenever possible, CMS commands run with a user protect key. This protects the CMS nucleus in cases where there is an error in the system command which would otherwise destroy the nucleus. If the com.and must execute a single instruction or small group of instructions that .odify nucleus storage, then the DftSKEY or DftSEXS macros are used, so that the system PSi key will be used for as short a period of time as possible. SVC TYPES AND LIBKAGE CONVEBTIONS SVC conventions are important to any discussion of CftS because the system is driven by SVCs (supervisor calls). SVCs 202 and 203 are the most common CMS SVCs. svc 202 is used both for calling nucleus resident routines, and for calling routines written as commands (for example, disk resident modules). I typical coding sequence for an SVC 202 call is the following: LA SVC DC R1,PLIST 202 AL4 (ERRADD) Whenever SVC 202 is calle.d, register 1 must point to a parameter list (PLIST). The format of this parameter list depends upon the actual routine or command being called, but the SVC handler will examine the first eight bytes of this parameter list to find the name of the routine or command being called. The "DC AL4(address)" instruction following the SVC 202 is optional, and may be omitted if the programmer does not expect any errors to occur in the routine or coosand being called. If included, an error return is made to the address specified in the DCa DMSITS determines whether this DC was inserted by examining the byte following the SVC call inline. A nonzero byte indicates an instruction, a zero value indicates that "DC AL4 (address)" follows. CftS SVC HABDLIBG DftSITS (IBTSVC) is the CftS system SVC handling routine. The general operation of DftSITS is as follows: 1. 2. The SVC new PSi (low-storage location X'60') contains, in the address field, the address of DftSITS1. The DftSITS .odule will be entered whenever a supervisor call is executed. DMSITS allocates a system and user save area. The user save area is used as a register save area (or work are~ by the called routine. 3. The called routine is called (via a LPSi or BALR) • 4. Upon return fro. the called routine, save areas are released. 5. Control routine call) • 124 the is returned to the caller (the which originally .ade the SVC SVC 203 is called by CMS macros to perform various internal system functions. It is used to define SVC calls for which no parameter list is provided. Por example, DMSFREE parameters are passed in registers 0 and 1. A typical calling call is as follows: SVC DC sequence for an SVC 203 203 H'code' The halfword deci.al code following the SVC 203 indicates the specific routine being called. DMSITS examines this halfword code, taking the absolute value of the code by an LPR instruction. The first byte of the result is ignored, and the second byte of the resulting halfword is used as an index to a branch table. The address of the correct routine is loaded, and control is transferred to it. It index entry name, is possible for the address in the SVC 203 table to be zero. In this case, the index will contain an 8-byte routine or command which will be handled in the same way as IBft Vft/370: system Logic and Problem Deter.ination Guide the 8-byte name passed in an SVC 202. the para.eter list to The progra •• er indicates an error return by the sign of the halfword code. If an error return is desired, then the code is negative. If the code is positive, then no error return is .ade. The sign of the ha1fword code has no effect on deter.ining the routine which is to be called, since DMSITS takes the absolute value of the code to deter.ine the routine called. Since only the second byte of the absolute value of the code is examined by DftSITS, seven bits (bits 1-7) are available as flags or for other uses. Thus, for exa.p1e, DMSFREE uses these seven bits to indicate such things as conditional requests and variable requests. When an SVC 203 is invoked, DMSITS stores the ha1fword code into the BUCOB location CODE203, so that the called routine can examine the seven bits made available to it. parameter list is invalid or cannot be found, DMSITS handles the situation in the same way it handles an error return from a legitimate SiC routine. The error code is -3. 3. Invalid SVC 203 code. If an invalid code follows SVC 203 in1ine, then an error message is displayed, and the ABEND routine is called to terminate execution. When a program issues SVC 202, passing a routine or command name in the parameter list, then DMSITS must be searched for the specified routine or command. (In the case of SVC 203 with a zero in the table entry for the specified index, the same logic must be applied.) The search algorithm is as follows: All calls made by means of SVC 203 should be made by macros, with the macro expansion co.puting and specifying the correct half word code. The programmer may use the BNDSVC macro to specify the address of a routine which will handle any SVC call o',ther than for SVC 202 and SVC 203. 1. First, a check is made to see if there is a routine with the specified name currently occupying the system Transient Area. If this is the case, then control is transferred there. 2. second, the system function name table is searched, to see if a command by this name is nucleus-resident. If successful, control goes to the specified nucleus routine. 3. Bext, a search is made for a disk file with the specified name as the filename, and MODULE as the fi1etype. The search is made in the standard disk search order. If this search is successful, then the specified module is loaded (via the LOADMOD command), and centro1 passes to the storage location now occupied by the command. 4. If all searches so far have failed, then DMSIBA (ABBREV) is called, to see if the specified routine name ~s a valid system abbreviation for a system command or function. user-defined abbreviations and synonyms are also checked. If this search is successful, then steps 2 through 4 are repeated with the full function name. 5. If all searches fail, then an error code of -3 is issued. In this case, the linkage conventions are as required by the user-specified sVc-hand1ing routine. CMS supports selected SVC calls generated by OS and DOS/VS macros, by simulating the effect of these macro calls. DftSITS is the initial SVC interrupt handler. If the SET DOS command has been issued, a flag in NUCON will indicate that DOS/VS macro simulation is to be used. Control is then passed to DftSDOS. Otherwise, OS macro simulation is assumed and DftSITS passes control to the appropriate OS simulation routine. There are several types of recognized by DftSITS. 1. 2. invalid SVC calls Invalid SVC number. If the SVC number does not fit into any of the four classes described above, then it is not handled by DftSITS. An appropriate error message is displayed at the terminal, and control is returned directly to the caller. Invalid routine name in SVC 202 parameter list. If the routine named in the SVC 202 When a command is entered from the terminal, DMSINT processes the command line, and calls the scan routine to convert it into a parameter list consisting of eight-byte entries. The following search is performed: 1. DMSIBT searches for a disk file whose filename is the command name, and whose fi1etype is EXEC. If this search is successful, EXEC is invoked to process the EXEC file. Section 1. Introduction 125 If not found, the command name is considered to be an abbreviation and the appropriate tables are examined. If found, the abbreviation is replaced by its full equivalent and the search for an EXEC file is repeated. 2. If there is no EXEC file, DMSINT executes SVC 202, passing the scanned parameter list, with the command name in the first eight bytes. DMSITS will perform the search described for SVC 202 in an effort to execute the command. 3. If DMSITS returns to DMSINT wi th a return code of -3, indicating that the search was unsuccessful, then DMSINT uses the CP DIAGNOSE facility to attempt to execute the command as a CP command. 4. transient program area may not invoke the RENAME command. In addition, it may not invoke the OS macro iTO, which generates an SVC 35, which is handled by DMSSVT. DMSITS starts programs running in the user program area enabled for all interruptions but starts programs running in the transient program area disabled for all interruptions. The individual program may have to use the SSM (SET SYSTEM MASK) instruction to change the current status of its system mask. CALLED ROUTINE START-UP TABLE Figures 24 and 25 show how the PSW and registers are set up when the called routine is entered. If all these searches fail, then DMSINT displays the error message UNKNOWN CP/CMS COMMAND. RETURNING TO THE CALLING ROUTINE See Figure 23 for a description search for a command name. of this When the called routine finishes processing, control is returned to DMSITS, which in turn returns control to the calling routine. USER AND TRANSIENT PROGRAM AREAS TWO areas can hold programs that are loaded from disk. These are called the user program area and the transient program area. (see Figure 22 for a description of CMS storage usage.) The user program area starts at location X'20000' and extends upward to the loader tables. Generally, all user programs and certain system commands (such as EDIT, and COPYFILE) run in the user program area. Because only one program can be running in the user program area at anyone time, it is impossible (without unpredictable results) for one program running in the user program area to invoke, by means of SVC 202, a module that is also intended to be run in the user program area. The transient program area is two pages long, running from location X'EOOO' to location X'FFFF'. It provides an area for system commands that may also be invoked from the user program area by means of an SVC 202 call. When a transient module is called by an SVC, it is normally run with the PSW system mask disabled for I/O and external interruptions. The transient program area also handles certain OS macro simulation SVC calls. OS SVC calls are handled by the OS simulation routines located either in the CMSSEG discontiguous shared segment or in the user program area, as close to the loader tables as possible. If DMSITS cannot find the address of a supported OS SVC handling routine, then it loads the file DMSSVT MODULE into the transient area, and lets that routine handle the SVC. A program running in the transient program area may not invoke another program intended to run in the transient program area, including OS macro simulation SVC calls that are handled by DMSSVT. For example. a program running in the 126 The return is accomplished by loading the original SVC old PSW ~hich was saved at the time DMSITS was first entered), after possibly modifying the address field. The address field modification depends upon the type of SVC call, and on whether the called routine indicated an error return. For SVC 202 and 203, the called routine indicates a normal return by placing a zero in register 15, and an error return by placing a nonzero code in register 15. If the called routine indicates a normal return, then DMSITS makes a normal return to the calling routine. If the called routine indicates an error return, DMSITS passes the error return to the calling routine, if one was specified, and abnormally terminates if none was specified. For an SVC 202 not followed by "DC AL4{address)", a normal return is made to the instruction following the SVC instruction, and an error return causes an ABEND. For an SVC 202 followed by "DC AL4{address)h, a normal return is made to the instruction following the DC, and an error return is made to the address specified in the DC. In either case, register 15 contains the return code passed back by the called routine. For an SVC 203 with a positive halfword code, a normal return is made to the instruction following the halfword code, and an error return causes an ABEND. For an SVC 203 with a negative halfword code, both normal and error returns are made to the instruction following the halfword code. In any case, register 15 contains the return code passed back by the called routine. For macro simUlation user-handled SVC calls, IBM VM/370: System Logic and Problem Determination Guide SVC calls, and for no error return is Ves Read line from terminal (.. n.me ..... ) Ves Attempt to execute LOADMOD name MODULE from disk Expand line by inserting the command name EXEC to: EXEC name Name is now the real name from a Svnonvm Tobie Pa3S control to the routine (in the nucleus, transient area, or user area) to execute the command Name is now the real name from the Synonym Table Issue SVC 202 (See the SVC 202 Subroutine) Set RC = ·3 Upon completion, return to SVC routine Pass line to CP for processing No No No Display UNKNOWN CP/CMS COMMANO Ves Notes: 1. If the terminal line was actually from an EXEC file, or if the command SET IMPEX OFF has been executed, implied EXEC is not in effect. Display Ready message, with error code if RC = 0 Figure 23. CMS Command (and Request) 2. A -3 return code indicates SVC 202 processing did not find the command. 3. If the terminal line was actually from an EXEC file, or if the command SET IMPEX OFF has been executed, implied CP is not in effect. Processing section 1. Introduction 127 , , 1 Called Type System Bask Storage Key 1 Proble. Bit 1 1 -I ---I 1 SVC 202 or 203 Disabled Syste. 1 Off 1 1 1 1 - Bucleus 1 resident 1 1 1 1 -1------1 1 Disabled 1 User 1 Off 1 1 svc 202 or 203 1 - Transient 1 1 1 1 area BODULE 1 1 1 1 1-------1 -I 1-------1 1 svc 202 or 203 1 Enabled 1 User 1 Off 1 1 - User area 1 1 1 1 1 1----------1-------1 1 1 Enabled 1 User 1 Off 1 1 User-handled 1 1----------1 1 1 1 Disabled 1 System 1 Off 1 1 os - DOS/VS 1 liuc leus 1 1 1 1 1 resident 1 1 1 1 1 1------------1-1 --I 1 os - DOS/VS 1 Disabled 1 Systea 1 Off 1 1 Transient 1 1 1 1 1 -area module 1 1 1 _ _ _ _ _ _ _ _ _ _...1 L -__________________ ._ _ _ _ Figure 24. PSW Fields When Called Routine Starts , Registers Registers 1 Register 1 Register 1 Register Register 1 Type 0-1 2 - 11 1 12 1 13 1 14 1 15 1 - - - - - - - - - -----1------1-----1 1-------1 SVC 202 Same as Unpredic- 1 Address 1 User 1 Return 1 Address 1 table 1 of 1 save 1 address 1 of 1 or 203 caller 1 called 1 area 1 to 1 called 1 1 1 1 1 routine 1 1 DMSITS 1 routine 1 1----1-----1--------1-----1 1----1-----1 lather L Same as 1 Same as 1 Address 1 User 1 Return 1 Same as 1 1 1 caller 1 caller 1 of 1 save 1 address 1 caller 1 1 1 1 1 caller 1 area 1 to 1 1 1 --1 1 1 _ _ _ _ _ _ _l SI_T_S_ _ _ 1 _ _ _ _ _---'1 L _. _ _ _ _ _i _ _D _ _ _ _ _ft_ Figure 25. Register contents When Called Routine Starts recognized by DMSITS. As a result, DftSITS always returns to the calling routine by loading the SVC old PSW which was saved when DftSITS was fi rst en te red. Upon entry to DBSITS, all registers are saved as they were when the SVC instruction was first executed. Upon exiting from DftSITS, all registers are restored from the area in which they were saved at entry. The exception to this is register 15 in the case of SVC 202 and 203. Upon return to the calling routine, register 15 always contains the value which was in register 15 when the called routine returned to DftSITS after it had completed processing. If the called routine has system status, so that it runs with a PSW storage protect key of 0, 128 then it may store Save Area. new values into the System If the called routine wishes to modify the location to which control is to be returned, it. must modify the following fields: • For SVC 202 and RUftRET and ERRET address) fields. • For other SVCs, it field of OLDPSW. 203, it must modify the (normal and error return must modify the address To modify the registers that are to be returned to the calling routine, the fields EGPR1, EGPR2, ••• , EGPR15 must be modified. If this action is taken by the called routine, then the SVCTRACE facility may print misleading information, since SVCTRACE assumes that these fields are exactly as they were when DftSITS was first entered. Whenever an SVC call is made, DftSITS allocates two save areas for that particular SVC call. Save areas are allocated as needed. For each SVC call, a system and user save area are needed. IBft VM/370: System Logic and Problem Determination Guide When the SVC called routine returns, the save areas are not released, but are kept for the next SVC. At the completion of each command, all SVC save areas allocated by that command are released. The system save area is used by DMSITS to save the value of the SVC old PSW at the time of the SVC call, the calling routine's registers at the time of the call, and any other necessary control information. Because SVC calls can be nested, there can be several of these save areas at one time. The system save area is allocated in protected free storage. The user save area contains 12 doublewords (24 words), allocated in unprotected free storage. DMSITS does not use this area at all, but simply passes a pointer to this area (via register 13.) The called routine can use this area as a temporary work area, or as a register save area. There is one user save area for each system save area. The field OSAVEPTR in the system save area points to the user save area. The exact format of the system save area can be found in the !~JIQ: ~A~A A~~A§ A~ £g~!!~l ~!2£~ ~2g!£. The most important fields, and their uses, are as follows: CALLER CALLEE (Full word) The address of instruction that resulted call. EGPRS (16 Fullwords, separately labeled EGPRO, EGPR1, EGPR2, EGPR3, ••• , The entry registers. The EGPR15) contents of the general registers at entry to DMSITS are stored in these fields. EFPRS (4 Doublewords, separately labeled EFPRO, EFPR2, EFPR4, EFPR6) The entry floating-point registers. The contents of the floating-point registers at entry to DMSITS are stored in these fields. SSAVENXT (Fullword) The address of the next system save area in the chain. This points to the system save area which is being used, or will be used, for any SVC call nested in relation to the current one. SSAVEPRV (Fullword) The address of the previous system save area in the chain. This points to the 'system save area for the SVC call in relation to which the current call is nested. OSAVEPTR (Fullword) Pointer to the user area for this SVC call. the SVC in this CMS INTERFACE FOR DISPLAY TERMIliIALS (Doubleword) Eight-byte symbolic name of the called routine. Por OS and user-handled SVC calls, this field contains a character string of the fora SVC nnn, where nnn is the SVC number in deci.al. CODE (Halfword) For SVC 203, this field contains the halfword code following the SVC instruction line. OLDPSW (Doubleword) The SVC old PSW at time that DMSITS was entered. liIHMRET (Pull word) The address of the calling routine to which control is to be passed in the case of a normal return from the called routine. EHRET (Fullword) The address of the calling routine to which control is to be passed in the case of an error return from the called routine. CMS has an interface that allows it to display large amounts of data in a very rapid fashion. This interface for display terminals is much faster and has less overhead than the normal write because it displays up to 1760 characters in one operation, instead of issuing 22 individual writes of 80 characters each (that is one write per line on a display terminal). Data that is displayed in the screen output area with this interface is not placed in the console spool file. the The DISPW macro allows you to use this display terminal interface. It generates a calling sequence for the CMS display ter.inal interface module, DMSGIO. DMSGIO creates a channel program and issues a DIAGNOSE instruction (Code 58) to display the data. DMSGIO is a TEXT file which must be loaded in order to use DISPW. The format of the CMS DISPW .acro is: r-------I I [label] I I I L- r DISPW save , r , bufad I,LIRE=nl I,BYTES=bbbbl IL~!!~=~I ILDllES=11~~1 L L .J [ERASE=YES] .J [CARCEL=YES] --, I I I I I ---' Section 1. Introduction 129 as DATA MANAGEMENT SIMULATION label is an optional macro statement label. bufad is the address of a buffer containing the data to be written to the display terminal. r , ILINE=nl ILINE=OI L ~ is the number of the line, 0 to 23, on the display terminal that is to be written. Line number 0 is the default. r The disk format and data base organization of CMS are different from those of as. A CMS file produced by an as program running under CMS and written on a CMS disk, has a different format than that of an as data set produced by the same as program running under as and written on an as disk. The data is exactly the same, but its format is different. (An as disk is one that has been formatted by an as program, such as IBCDASDI.) HANDLING FILES THAT RESIDE ON CMS DISKS , IBYTES=bbbbl 1~!I~~=11~QI L ~ is the number of bytes (0 to 1760) to be written on the display terminal. 1760 bytes is the default. [ERASE=YES] specifies that the display screen is to be erased before the current data is written. The screen is erased regardless of the line or number of bytes to be displayed. specifying ERASE=YES causes the screen to go into "MORE" status. [CANCEL=YES] causes the performed: erased. CANCEL operation to the output area CMS can read, write, or update any as data that resides on a CMS disk. By simulating as macros, CMS simulates the following access methods so that as data organized by these access methods can reside on CMS disks: direct identifying a record by a key or by its relative position within the data set. partitioned seeking a named the data set. sequential accessing a record in a sequence relative to preceding or following items in the data set. be is member within Refer to Figure 26 and the "Simulation Notes", then read "Access Method Support" to see how CMS handles these access methods. as MACRO SIMULATION UNDER CMS When a language processor or a user-written program is executing in the CMS environment and using Os-type functions, it is not executing as code. Instead, CMS provides routines that simulate the as functions required to support as language processors and their generated object code. CMS functionally simulates the as macros in a way that presents equivalent results to programs executing under CftS. The as macros are supported only to the extent stated in the publications for the supported language processors, and then only to the extent necessary to successfully satisfy the specific requirement of the supervisory function. The restrictions for COBOL and PL/I program execution listed in "Executing a Program that Uses as Macros" in the !~L~lQ: gl~BBiB~ and ~I~~~~ §~~~I2t!Q~ §g!g~ exist because of the limited simulation by CMS of the as macros. Figure 26 shows the as macro are partially or completely defined by SVC number. 130 functions that simulated, as Because CMS does not simulate the indexed sequential access method (ISAM), no as program which uses ISAM can execute under CMS. Therefore, no program can write an indexed sequential data set on a CMS disk. HANDLING FILES THAT RESIDE ON as OR DOS DISKS By simulating as macros, CMS can read, but not write or update, as sequential and partitioned data sets that reside on as disks. Using the same simulated as macros, CMS can read DOS sequential files that reside on DOS disks. The as macros handle the DOS data as if it were as data. Thus a DOS sequential file can be an input to an as program running under CMS. However, an as sequential or partitioned data set that resides on an as disk can be written or updated only by an as program running in a real as machine. CMS can execute programs that read and write VSAM files from as programs written in the VS BASIC, COBOL, or PL/I programming languages. This CMS support is based on the DOS/VS Access Method Services and Virtual Storage Access Method (VSAM) and therefore the as user is limited to those VSAM functions that are available under DOS/VS. IBM VM/370: system Logic and Problem Determination Guide ..-- Macro Title -inAPl WAIT POST EXIT/RETURN GETMAIN FREEMAIN GETPOOL FREE POOL LINK XCTL LOAD DELETE GETMAIN/ FREEMAIN TIMEI ABEND » SPIEl SVC NUliber --00-01 02 03 04 05 06 07 08 09 10 11 13 14 RESTOREI BLDL/FINDI 17 18 OPEN CLOSE STOWI OPENJ TCLOSE DEVTYPEI 19 20 21 22 23 24 TRKBAL WTO/WTORI EXTRACTI IDENTIFYI ATTACHI CHAPI TTIMERI STIMERI DEOI SNAPI ENOl FREEDBUF _.STAE 25 35 40 41 42 44 46 47 48 51 56 57 60 DETACHI CHKPTI RDJFCBl 62 63 64 SYIADI BSPI GET/PUT READ/WRITE laTE/poINT CHECK TGET/TPUT TCLEARQ 68 69 ~STAX 93 94 96 Function Read or-wrIte-direct access volumes wait for an I/O completion Post the I/O coapletion Return from a called phase Conditionally acquire user storage Release user-acquired storage simulate as SVC 10 Simulate as SVC 10 Link control to another phase Delete. then link control to another load phase Read a phase into storage Delete a loaded phase Manipulate user free storage Get the time of day Terminate processing Allow processing program to handle program interrupts Effective NOP Manipulate simulated partitioned data files Activate a data file Deactivate a data file Manipulate partitioned directories Activate a data file Temporarily deactivate a data file Obtain device-type physical characteristics NOP Communicate with the terminal Effective NOP Add entry to loader table Effective LINK Effective Nap Access or cancel timer set timer Effective NOP Dump specified areas of storage Effective NOP Release a free storage buffer Allow processing program to decipher ABEND conditions Effective NOP Effective Nap Obtain information from FILEDEF command Handle data set error conditions Backup a record on a tape or disk Access system-blocked data Access system-record data Manage data set positioning Verify READ/WRITE completion Read or write a terminal line Clear terminal input queue Create an attention exit block 1--11 Simulated in the transient routine "DMSSVT". 1 routines reside in the nucleus. Other simulation L- Figure 26. Simulated OS Supervisor Calls SIMULATION NOTES Because CMS has its own file srstem and is a single-user system operating 1n a virtual machine with virtual storage. there are certain restrictions for the simulated OS function in CMS. For example. HIARCHY options and options that are used only by OS multitasking systems are ignored by CMS. Listed below are descriptions of all the OS macro functions that are simulated by CMS as seen by the programmer. Implementation and Section 1. Introduction 131 progra. results that differ Q~L!~ R!l! A!D!g§!§!S A!~!Q Q~L!~ ~YE§!~i§9! ~§!~i~§§ !DS fro. those given in ID§!!YS!!QD§ and A!£!9 LOAD-svca The DCB and 8IARC8Y options are ignored by CMS. All other options of LOAD are supported. LOAD loads the specified progra. into storage (if necessary) and returns the address of the specified entry point in register zero. However, if the specified entry point is not in core when SVC a is issued, and the subroutine contains VCONs which cannot be resolved within that TITLIE member, CMS attempts to resolve these references, and may return another entry point address. To insure a correct address in register zero, the user should bring such subroutines into core either by the eMS LOAD/INCLUDE commands or by a VCON in the user program. GET POOL/ lREEPOOL All the options of GETPOOL and lREEPOOL are supported. GETPOOL constructs a buffer pool and stores the address of a buffer pool control block in the DCB. lREEPOOL frees a buffer pool constructed by GETPOOL. DELETE-SVC9 All the options of DELETE are supported. DELETE decreases the use count by one and if the result is zero frees the corresponding virtual storage. Code 4 is returned in register 15 if the phase is not found. GET!AIN/ lREEMAINSVC10 All the options of GETMAIN and lREEMAIN are supported. Subpool specifications are ignored. TIME-SVC11 All the options of TIME except MIC are supported. TIME returns the time of day to the calling program. ABEND-SVC13 The completion code parameter is supported. The DUMP parameter is not. If a STAE request is outstanding, control is given to the proper STAE routine. If a STAE routine is not outstanding~ a message indicating an ABEND has occurred is printed on the terminal along with the completion code. SPIE-SVC14 All the options of SPIE are supported. The SPIE routine specifies interruption exit routines and program interruption types that will cause the exit routine to receive control. RESTORE-SVC11 The RESTORE routine in CMS is a NOP. It returns control to the user. lD§!!YS!!2!~ are stated. 8IABC8Y options and those used only by OS .ultitasking syste.s are ignored by CMS. Validity checking is not perfor.ed within the si.ulation routines. The entry point na.e in LIBK, ICTL, and LOAD (SVC 6, 1, a) must be a .e.ber na.e or alias in a TITLIB directory unless the CO!PSWT is set to on. If the COMPSWT is on, SVC 6, 1, and a .ust specify a MODULE na.e. This switch is turned on and off by using the COMPSWT macro. See the !AL~lQ: ~A~ ~Q!!!Dg ~DS A~S!Q l§i§!§D~§ for descriptions of all CMS user macros. !acro-SVC !Q. inip:svco ~!i!~!§D~~§ !D 1!]!§!~D!!!!2D The TYPE option must be R or W; the V, I, and K options are not supported. The BLKREl-ADDR must point to an item nu.ber acquired by a NOTE macro. Other options associated with V, I, or K are not supported. WAIT-SVC1 All options of WAIT are supported. The WAIT routine waits for the completion bit to be set in the specified ECBs. POST-SVC2 All options of supported. POST completion code completion bit specified ECB. EIIT/RETURN -SVC3 Post ECB, execute end of task routine, release phase storage, unchain and free latest request block, and restore registers depending on whether this is an exit or return from a linked or an attached routine. POST are sets a and a in the GET!AIN-SVC4 All the options of GET MAIN are supported. GETMAIN gets blocks of free storage. lREEMAIN-SVCS All the options of lREEMAIN are supported. lREEMAIN frees blocks of storage acquired by GETMAIN. LIRK-SVC6 The DCB and HIARCHY options are ignored by CMS. All other options of LIRK are supported. LINK loads the specified program into storage (if necessary) and passes control to the specified entry point. ICTL-SVC1 The DCB and HIARCHY options are ignored by CMS. All other options of ICTL are supported. ICTL loads the specified program into storage (if necessary) and passes control to the specified entry point. 132 IBM VH/310: System Logic and Problem Determination Guide BLDL-SVC18 BLDL is an effective NOP for LINKLIBs and JOBLIBs. Por MACLIBs, item numbers are filled in the TTR field of the BLDL list; the K, Z, and user data fields, as described in Q~L!~ y~!~ H~~~g~!~~! IDENTIPY-SVC41 The IDERTIPY routine in CftS adds a RPQUEST block to the load request chain for the requested name and address. ATTACH-SVC42 All the options of ATTACH are supported in CftS as in OS PCP. The following options are ignored by CftS: DCB, LPftOD, DPMOD, HIARCHY, GSPV, GSPL, SHSPV, SHSPL, SZERO, PURGE, ASYNCH, and TASKLIB. ATTACH passes control to the routine specified, fills in an ECB completion bit if an ECB is specified, passes control to an exit routine if one is specified, and returns control to the instruction following the ATTACH. ~~!2 Instructions, are set to zeros:--The-'alias' bit of the C field is supported, and the remaining bits in the C field are set to zero. PIID-SVC18 All the options of PIND are supported. PIND sets the read/write pointer to the item number of the specified .ember. STOi-SVC21 All the options of STOi are supported. The 'alias' bit is supported, but the user data field is not stored in the MACLIB directory since CMS MACLIBs do not contain user data fields. OPEN/OPENJSVC19/22 CLOSE/TCLOSESVC20/23 All the options of OPEN and OPEIJ are supported except for the DISP and RDBACK options which are ignored. OPEN creates a CMSCB (if necessary), completes the DCB, and merges necessary fields of the DCB and CMSCB. All the options of CLOSE and TCLOSE are supported except for the DISP option, which is ignored. The DCB is restored to its condition before OPEN. If the device type is disk, the file is closed. If the device type is tape, the REREAD option is treated as a BEiIID. DEVTYPE-SVC24 All the options of DEVTYPE are supported. DEVTYPE moves device characteristic information for a specified data set into a specified user area. iTO/iTOR-SVC35 All options of iTO and iTOR are supported except those options concerned with .ultiple console support. iTO displays a message' at the operator's console. iTOR displays a message at the operator's console, waits for a reply, .oves the reply to the specified area, sets a co.pletion bit in the specified EeB, and returns. EXTRACT-SVC40 The EXTRACT routine in CftS is essentially a NOP. The user provided answer area is set to zeros and control is returned to the user with a return code of 4 in register 15. Because CMS is not a multitasking system, a phase requested by the ATTACH macro must return to CftS. 'CHAP-SVC44 The CHAP routine in CftS is a NOP. It returns control to the user. TTlftER-SVC46 All the options supported. STlftER-SVC47 All options of STIftER are supported except for TASK and iAIT. The TASK option is treated as if the REAL option had been specified, and the iAIT option is treated as a ROP; it returns control to the user. DEQ-SVC48 The DEQ routine in CftS is a NOP. It returns control to the user. SNAP-SVC51 All the options of SNAP are supported except for the DCB, SDATA, and PDATA options, which are ignored. SNAP always du.ps output to the printer. The dump contains the PSi, the registers, and the storage specified. ERQ-SVC56 The ERQ routine in CftS is a NOP. It returns control to the user. PREEDBUP-SVC57 All the options of PREEDBUP are supported. PREEDBUP returns a buffer to the buffer pool assigned to the specified DCB. STAE-SVC60 All the options of STAE are supported except for the XCTL option, which is set to XCTLLYES; the PURGE option, which is set to HALT; and the ASYNCH option, which is set to 10. STAE creates, overlays, or cancels a STAE control block as requested. STAE retry is not supported. of TTIMER are section 1. Introduction 133 DETACH-SVC62 The DETACH routine in CMS is a NOP. It returns control to the user. CHKPT-SVC63 The CHKPT routine is a Nap. It returns control to the user. RDJPCB-SVC64 All the options of RDJPCB are supported. RDJPCB causes a Job Pile Control Block (JFCB) to be read from a CMS Control Block (CMSCB) into real storage for each data control block specified. CMSCBs are created by PILEDEP commands. SYNADAP-SVC68 All the options of SYNADAP are supported. SYNADAP analyzes an I/O error and creates an error message in a work buffer. SYNADRLS-SVC68 All the options of SYNADRLS are supported. SYNADRLS frees the work area acquired by SYNAD and deletes the work area from the save area chain. BSP-SVC69 All the options of BSP are supported. BSP decrements the item pointer by one block. TGET/TPUTSVC93 TGET and TPUT operate as if EDIT and WAIT were coded. TGET reads a terminal line. TPUT writes a terminal line. TCLEARQ-SVC94 TCLEARQ in CMS clears the input terminal queue and returns control to the user. STAX-SVC96 NOTE POINT The manipulation of data is governed by an access method. To facilitate the execution of as Code under CMS, the processing program must see data as as would present it. For instance, when the processors expect an access method to acquire input source cards sequentially, CMS invokes specially written routines that simulate the OS sequential access method and pass data to the processors in the format that the as access methods would have produced. Therefore, data appears in storage as if it had been manipulated using an as access method. For example, block descriptor words (BDW), buffer pool management, and variable records are updated in storage as if an as access method had processed the data. The actual writing to and reading from the I/O device is handled by eMS file management. The essential work of the Volume Table of Contents (VTOC) and the Data set control Block (DSCB) is done in CMS by a Master File Directory (MPD) which updates the disk contents, and a Pile status Table (PST) (one for each data file). All disks are formatted in physical blocks of 800 bytes. CMS continues to update the as format, within its own format, on the auxiliary device, for files whose filemode number is 4. That is, the block and record descriptor words (BDW and nDW) are written along with the data. If a data set consists of blocked records, the data is written to, and read from, the I/O d~vice in physical blocks, rather than logical records. CMS also simulates the specific methods of manipulating data sets. To accomplish this simulation, CMS supports certain essential macros for the following access methods: Updates a queue of CMTAXEs each of which defines an attention exit level. • BDAM (direct) -- identifying a record by a key or by its relative position within the data set. All the options of NOTE are supported. NOTE returns the item number of the last block read or written. • BPAM (partitioned) -- seeking member within data set. • BSAM/QSAM (sequential) accessing a record in a sequence relative to preceding or following records. • VSAM (direc~ or sequential) access1ng a record sequentially or directly by key or address. 1!.Q!~: CMS :support of as VSAM files is ba:sed on DOS/VS Access Method Services and virtual Storage Access Method (VSAM). Therefore, the as user is restricted to those functions available under DOS/VS Access Method Services. See the section "CMS Support for as and DOS VSAM Functions" for details. All the options of POINT are supported. POINT causes the control program to start processing the next read or write operation at the specified item number. The TTR field in the block address is used as an item number. CHECK All the options of CHECK are supported. CHECK tests the I/O operation for errors and exceptional conditions. DCB The following fields of a DCB may be specified, relative to the particular access method indicated: 134 ACCESS METHOD SUPPORT a named CMS also updates portions of the as control blocks that are needed by the as simulation routines to support a program during execution (see Pigure 27). Most of the simulated supervisory as control blocks are contained in the following two CMS control blocks: IBft Vft/370: system Logic and Problem Determination Guide !l~A1! F,D n (number) a (address) n n s (sYllbol) DA a n n R,W A,E,F,R F,V,U a !lRA1! F,D n a n n s PO a a a n n a n n s PS s PS a a a a n n R,W n R,W, P F,V,U a n F,V,B,5,A,M,U a n G,P,L,M F,V,B,U,A,M,S a n -------------------------------------------- DCB Fields That Can be specified for Each Access Method CMSCVT simulates the COllmunication Vector Table. Location 16 contains the address of the CVT control section. PUTX PUTX support is provided only for data sets opened for QSAM-UPDATE with simple buffering. C"SCB is allocated from system free storage whenever a FILEDEF command or an OPEN (SVC19) is issued for a data set. The CMS control Block (CM5CB) consists of a File Control Block (FCB) for the data file, and partial sillulation of the Job File control Block (JFCB), Input/Output Block (lOB), and Data Extent Block (DEB) • READ/WRITE (BI5AM) BISAM is not supported in CMS. The Data Control Block (DCB) and the Data Event Control Block (DECB) are used by the access method simulation routines of CMS. READ/WRITE (BSAM and BPAM) All the B5AM and BPAM options of READ and WRITE are supported except for the 5E option (read backwards). READ (Offset Read of Keyed BDAM data set) This type of READ is not supported because it is only used for spanned records. READ/WRITE (BDAM) All the BDAM and BSAM (create) options of READ and WRITE are supported except for the R and RU options. The GET and PUT macros are not supported for use with spanned records. READ and WRITE are supported for spanned records, provided the filemode number is 4, and the data set is Physical Sequential (B5AM) format. The four methods of accessing BDAM records are: GET (Q5A") All the Q5AM options of GET are supported. substitute mode is handled the same as move mode. If the DCBRECFM is FB, the filemode number is 4, and the last block is a short block, an EOI indicator (X'61FFFF61') must be present in the last block after the last record. GET (QI5AM) QI5AM is not supported in CMS. PUT (Q5AM) All the Q5AM options of PUT are supported. Substitute mode is handled the same as move mode. If the DCBRECFM is FB, the file.ode number is 4, and the last block is a short block, an EOF indicator is written in the last block after the last record. PUT (QI5AM) QI5AM is not supported in CM5. 1. 2. 3. 4. Relative Block RRR Relative Track TTR Relative Track and Key TI~ey Actual Address MBBCCHfl~ The restrictions follows: on those methods are as • Only the BDAM identifiers underlined above can be used to refer to records, since CMS files have a two-byte record identifier. • CMS BDAM files are always created with 255 records on the first logical track, and 256 records on all other logical tracks, regardless of the block size. If BDAM methods 2, 3, or 4 are used and the RECFM is U or V, the BDAM user must either write 255 records on the first track and 256 records on every track thereafter, or he must not update the track indicator until a NO SPACE FOUND message is returned on a write. For method 3 (WRITE ADD), this message occurs when no more dummy records can be found on a WRITE section 1. Introduction 135 request. Por methods 2 and 4, this will not occur, and the track indicator will be updated only when the record indicator reaches 256 aud overflows into the track indicator. • Two files of the same filetype, which both use keys, cannot be open at the same time. If a program that is updating keys does not close the file it is updating for some reason, such as a system failure or another IPL operation, the original keys for files that are not fixed format are saved in a temporary file with the same filetype and a filename of ,KEYSAVE. To finish the update, run the program again. • Once a file is created using keys, additions to the file must not be made without using keys and specifying the original length. • The number of records in the data set extent must be specified using the FILEDEP command. The default size is 50 records. • The minimum LRECL for a keys is eight bytes. READING MACROS as DATA SETS AND CMS BDAM DOS PILES USING as The CMS MOVEFILE command and the same as macros can also be used to manipulate and read DOS sequential files that reside on DOS disks. The as macros handle the DOS data as if it were as data. The following as Release 20.0 BSAM, BPAM, and QSAM macros can be used with CMS to read as data sets and DOS files: ENO FliD GET BOTE POINT POST RDJFCB READ SYNADAF SYNAl'RLS WAIT CMS supports the following disk the as and OS/VS sequential and access methods: • • • • also Before CMS can read an as data set or DOS file that resides on a non-CMS disk, you must issue the CMS ACCESS command to make the disk on which it resides available to CMS. The format of the ACCESS command is: ACCESS cuu mode[/ext] You must not specify options or file identification when accessing an as or DOS disk. You issue the PILEDEP command to assign a CMS file identification to the as data set or DOS file so that CMS can read it. The format of the PILEDEF command used for this purpose is: If you are issuing a PILEDEF for a DOS file, note that the as program that will use the DOS file must have a DCB for it. For "ddname" in the FILEDEF command line, use the ddname in that DCB. with the DSN operand, enter the file-id of the DOS file. sometimes, CMS issues the FILEDEF command for you. Although the CMS MOVEFILE command, the supported CMS program product interfaces, and the CMS OPEN routine each issue a default FILEDEF, yeu should issue the FILEDEF command yourself to be sure the appropriate file is defined. After you have issued the ACCESS and PILEDEF commands for an as sequential or partitioned CMS commands data set or DOS sequential file, (such as ASSEMBLE and STATE) can refer to the as data set or DOS file just as if it were a CMS file. Several other CMS commands can be used with as data sets and DOS files that do not reside on CMS disks. See the !~LJ.1.Q: ~11~ ~Q!!U!!~!!g ~!!g ~~£!:Q R~!~I~~£~ for a complete description of the CMS ACCESS, FILEDEF, LISTDS, ~JVEFILE, QUERY, RELEASE, and STATE commands. formats for partitioned split cylinders user labels track overflow alternate tracks As in as, the CMS support of the BSP macro produces a return code of 4 when attempting to backspace over a tape mark or when a beginning of an extent is found on an as data set or a DOS file. If the data set or file contains split cylinders, an attempt to backspace within an 136 switch, file with CMS users can read as sequential and partitioned data sets that reside on as disks. The CMS MOVEPILE command can be used to manipulate those data sets, and the as QSAM, BPAM, and BSAM macros can be executed under CMS to read them. BLDL BSP CHECK CLOSE DEO D!VTYPB extent resulting in a cylinder produces a return code of 4. For restrictions on reading as data sets and DOS files under CMS, see the "VM/370 Restrictions" in "Part 1. Debugging with VM/370". The CMS FILEDEP command allows you to specify the I/O device and the file characteristics to be used by a program at execution time. In conjunction with the as simulation scheme, PILEDEP simulates the functions of the Data Definition JCL statement. PILEDEP may be used only with programs using as macros and functions. Por example: IBM VB/370: system Logic and Problem Determination Guide r--------------------------------------------------------r r " r , FIledef -----, IDISK fn ft Ifmll IDSN ? I I I All I I DSN q 1 [q 2 ••• ] I L L JJ J r r " L L JJ DISK Ifn ft Ifm II IFILE ggn~~~ IA111 DUMMY Sgls!gg QE!ign: r , IMEMBER membernamel ICONCAT I L filedef filel disk proga data After issuing this command, your referring to FILEl would access PROGA your A-disk. J al DOS/VS SUPPORT UNDER CMS filedef filel terminal data for your program I/O performed by AUIPROC routine with residual count in GPR15; DMSSEB returns normally. program DATA on If you wished to supply data from your terminal for FILE1, you could issue the command: and enter the recompiling. GPR15>0 _________________ -J without fi tapein tap2 (recfm fb lrecl 50 block 100 9track den 800) After issuing this command, programs referring to TAPEIN will access a tape at virtual address 182. (Each tape unit in the CMS environment has a symbolic name associated with it.) The tape must have been previously attached to the virtual machine by the VM/370 operator. The AUIPROC option can only be used by a program call to FILEDEF and not from the terminal. The CMS language interface programs use this feature for special I/O handling of certain (utility) da ta sets. The AUXPROC option, followed b~ a fullword address of an auxiliary process1ng routine, allows that routine to receive control from DMSSEB before any device I/O is performed. At the completion of its processing, the auxiliary routine returns control to DMSSEB signalling whether I/O has been performed or not. If not, DMSSEB performs the appropriate device I/O. GPR15 is used by the auxiliary processing routine to inform to DMSSEB of the action that has been or should be taken with the data block as follows: CMS supports interactive program development for DOS/VS. 7his includes creating, compiling, testing, debugging, and executing commercial application programs. The DOS/VS programs can be executed in a CMS virtual machine or in a CMS Batch Facility virtual machine. DOS/VS files and libraries CMS. VSAM data sets can be under CMS. can be read under read and written The CMSjDOS en vironment (called CMS/DOS) provides many of the same facilities that are available in DOS/VS. However, CMS/DOS supports only those facilities that are supported by a single (background) partition. The DOS/VS facilities supported by eMS/DOS are: • • • • • • DOS/VS linkage editor Fetch support DOS/VS Supervisor and I/O macros DOS/VS supervisor control block support Transient area support DOS/VS VSAM macros The eMS/DOS environment is entered each time the eMS SET DOS ON command is issued. In the eMS/DOS environment, eMS supports many DOS/VS facilities. When you no longer need DOS/VS support under eMS, you issue the SET DOS OFF command and DOS/VS facilities are no longer available. eMS/DOS can execute programs that use the sequential (SAM) and virtual storage (VSAM) access methods, and can access DOS/VS libraries. GPR15=0 No I/O performed by AUXPROC routine; DMSSEB will perform I/O. eMS/DOS cannot execute programs that have execution-time restrictions, such as programs that use sort exits, teleprocessing access methods or multitasking. DOS/VS COBOL, DOS PL/I, and assembler language programs are executable under eMS/DOS. GPR15<0 I/O performed by AUXPROC routine and error was encountered. DMSSEB will take error action. All of the CP and CMS online debugging and testing facilities (such as the CP ADSTOP and STORE commands and the CMS DEBUG environment) section 1. Introduction 137 are supported in the CftS;oOS environment. Also, CP disk error recording and recovery is supported in CftS/DOS. with its support of a CftS/DOS environment, CftS becomes an important tool for DOS/VS application program development. Because CftS/DOS was designed as a DOS/VS program development tool, it assumes that a DOS/VS system exists, and uses it. The following sections describe what is supported, and what is not. • • • • • • • IBM 2314 Direct Access storage Facility IBM 2319 Disk Storage IBM 3330 Disk Storage, Models 1 and 2 IBM 3330 Disk Storage, Model 11 only as a Model 1 or 2 IBM 3340 Direct Access Storage Facility IBM 3344 Direct Access Storage IBM 3350 Direct Access storage, only in 3330 Kodel 1 compatibility mode CftS SUPPORT FOR as AND DOS VSAM FUNCTIONS The introduction information: CftS supports interactive program development for OS and DOS programs using VSAM. CftS supports VSAM for OS programs written in VS BASIC, OS/VS COBOL, or OS PL/I programming languages; or DOS programs written in DOS/VS COBOL or DOS PL/I progra.ming languages. CMS does not support YSAM for OS or DOS assembler language programs. • A brief description of the Remote Spooling communications Subsystem (RSCS) external structure and the commands used to control the system. • An overview of the RSCS control program, that is, of the RSCS supervisor and RSCS tasks. CMS also supports Access ftethod Services to manipulate OS and DOS VSAft and SAM data sets. Under CftS, VSAM data sets can span up to nine DASD volumes. CMS does not support VSAM data set sharing; however, CMS already supports the sharing of minidisks or full pack minidisks. VSAM data sets created in CMS are not in the CMS file format. Therefore, CftS commands currently used to manipulate CMS files cannot be used for VSAM data sets which are read or written in CMS. A VSAM data set created in CMS has a file format that is compatible with OS and DOS VSAM data sets. Thus a VSAM data set created in CMS can later be read or updated by OS or DOS. Because VSAM data sets in CMS are not a part of the CMS file system, CMS file size, record length, and minidisk size restrictions do not apply. The VSAM data sets are manipulated with Access Method Services programs executed under CMS, instead of with the CMS file system commands. Also, all VSAM minidisks and full packs used in CMS must be initialized with the IBCDASDI program; the CMS FORMAT command must not be used. CMS supports VSAM control blocks with GENCB, MODCB, TESTCB, and SHOWCB macros. the In its support of VSAM data sets, CMS uses RPS (rotational position sensing) wherever possible. CMS does not use RPS for 2314/2319 devices, or for 3340 devices that do not have the feature. provid(~s the following • Descriptions of the nonprogrammable terminal ~ML) line (NPT) and spool MULTI-LEAVING1 drivers. • Brief descriptions of major RSCS and storage requirements. data areas • Detailed information about RSCS supervisor functions, such as synchronizing and dispatching tasks, task-to-task communications, I/O methods, and how RSCS network links are manipulated. The VM/370 Remote spooling Communications Subsystem ~SCS) is the V~/370 component that provides for the transmission of files across a teleprocessing network controlled by the VM/370 computer. using RSCS, virtual machine users can transmi t files to remote stations. (Remote stations are I/O configurations attached to the YK/370 computer by communications lines.) Also, users at remote stations can transmit files to VM/370 virtual machines and to other remote stations using RSCS. RSCS resides in a virtual machine dedicated to remote spooling. using the RSCS command manages the language, the RSCS operator telecommunications facilities for the installaticn. Operators at remote stations can manage their own configurations using a subset of the command language. Commands issued from remote stations can be entered either at a terminal or from a card reader. Because CMS support of VSAM data sets is based on DOS/VS VSAM and DOS/VS Access Method services, only disks supported by DOS/VS can be used for VSAM data sets in CMS. These disks are: You can find detailed descriptions of RSCS functions in the publication !.HLJ1.Q: lt~m.Q:t~ 'Trademark of IBM 138 IBM VM/370: System Logic and Problem Determination Guide LOCATIONS AND LINKS AND THE VM/370 CONTROL At a local installation there are a number of transmission paths to remote stations. A unique location identifier (locid) is assigned to each of these remote stations. Like the other VM/370 virtual machines, the RSCS virtual machine runs under the control of CPo In extending the VM/370 spooling system capability to include spooling to remote stations, RSCS interacts with the CP spooling system. Therefore, some of the information in this publication requires a knowledge of that area of CP. For each transmission path (nonswitched line) or potential transmission path (switched line), a link must be defined at the local VM/370 installation. Each such link is given a name (linkid) that defines the location identifier of the remote station to which the transmission path leads. This link can be defined either at system generation or by means of the DEFINE command. THE RSCS VIRTUAL MACHINE PROGRAM (CP) The RSCS virtual machine consists of the virtual machine operator console, an RSCS system disk, and virtual telecommunications lines. During system generation, a virtual card reader is defined for the RSCS virtual machine, but this reader does not exist in the CP directory entry for the RSCS virtual machine. virtual printers, card punches, and readers are defined dynamically as they are needed. For example, when a file from a remote station is transmitted to RSCS, a virtual punch is defined to accept the file. Similarly, virtual readers are defined when RSCS receives a file to transmit. RSCS virtual storage also dumps onto a virtual printer when abnormal termination of the system occurs. Figure 28 shows the configuration of an RSCS virtual machine. The minimum RSCS is S12K. virtual storage required to run OB1 Virtual TCU OB2 RSCS Virtual Machine Virtual TCU REMOTE STATIONS Remote stations are configurations of I/O devices attached to the VM/370 computer by binary synchronous {BSC} switched or nons witched lines. Two types of remote stations are supported by RSCS: programmable remote stations and nonprogrammable remote stations. Programmable remote stations, such as the IBM System/3 and System/370, are IBM processing systems with attached binary synchronous communications adapters. These systems must be programmed to provide the MULTI-LEAVING line protocol necessary for their devices to function as remote stations. This programming support is provided by a remote terminal processor (RTP) program generated according to HASP workstation protocol and tailored to the system's hardware configuration. ·Certain programmable remote stations like the System/3 can only be programmed to function as remote terminals. Others, like the System/360 and System/370, can function either as remote terminals or as host batch systems using RSCS as a remote job entry workstation. Both of these types of remote stations are managed by the spool MULTI-LEAVING (SML) line driver of RSCS. OB3 Virtual TCU ~ Virtual Console l 191 f'-"""""I ~ RSCS System ,-~"., Nonprogrammable remote stations are I/O configurations that cannot be programmed, but are hard-wired to provide the line protocol necessary for them to function as remote stations. They can receive, read, print, punch, and send files. An example of a nonprogrammable remote station is a 2780 Data Transmission Terminal. Nonprogrammable remote stations are managed by the NPT (Nonprogrammable Terminal) RSCS line driver. Figure 28. RSCS Virtual Machine Configuration The types of devices supported for all types of remote stations, programmable and nonprogrammable, are listed in the !~LJIQ: ]~~Q1~ ~EQQ!!ng £Q~~gn!£2i!QB§ .Y§~I~§ Q!!!g~. 2g~§I§1~! (]2f2) Section 1. Introduction 139 NETWORR CONTROL: RSCS AND VM/370 COMMANDS r--------------------· I Command I Name Both RSCS and VM/370 cOllmands are used to control RSCS. The RSCS com.ands are used to control the RSCS network; VM/370 CP and CMS commands are used by virtual lIachine users who use the RSCS network. I I ------, I I Function BACKSPAC Restarts or repositions in a backward direction the file currently being transmitted. CHANGE Alters one or more attributes of a file owned by RSCS. CMD Controls certain functions performed by a remote system, or controls the logging of I/O activity on a specified link. DEPINE Temporarily adds a new link definition to the RSCS link table or temporarily redefines an existing link. DELETE Temporarily deletes a link definition from the RSCS link table. DISCONN places RSCS in disconnect mode and optionally directs output to another virtual machine. DRAIN Deactivates an cation link. VM/370 CP AND CMS COMMANDS POR RSCS PLUSH Discontinues processing the current file on the specified link. The VM/370 CP TAG and SPOOL commands specify a device to be spooled and to associate a destination location identifier (locid) with that device. SPOOL directs the file to the RSCS virtual machine. The CP CLOSE command or the CMS PRINT or PUNCH cOllmands close the file and transfer it to the RSCS virtual machine. PREE Resumes transmission on a communication link previously in HOLD sta tus. PWDSPACE Repositions the file being transmitted in direction. Data specified by the CP TAG command controls processing of files transmitted across the RSCS network. When a VM/370 user creates a file to be transmitted to a remote station via RSCS, the TAG command text operand takes the following format: HOLD Suspends file transmission on an active link without deactivating the line. MSG Sends a message remote station. ORDER Reorders files enqueued on a specific link. PURGE Removes all or from a link. QUERY Requests system information for a link, a file, or for the system in general. START Activates a specified tion link. TRACE Monitors line activity cified link. RSCS COMMANDS To manipulate the file being transmitted across the network and to communicate with the various network users, the RSCS control program provides a command language. Pigure 29 is a list of RSCS commands and the functions they perform. You can find detailed descriptions of these commands in the pUblication !~LJ1Q: ~~!21~ §E221ing £~!!~ni£~!i~n2 ~Y~212!~! (~~£§) Q2~E~~ ~~!~~. The operator may enter RSCS commands described in Pigure 29 at the RSCS virtual machine console. A subset of the RSCS command language may be entered by operators of remote stations. lin kid [userid] [priority] linkid is the location identifier of the link on which the file is to be transmitted. userid is the remote virtual machine that is to receive the file. priority is the requested transmission priority (a decimal number 0-99, default 99). The lower numbers have higher priorities. active to a communi- currently a forward local specified or files communicaon a spe- ---------------------.-------~ Also, the CP SPOOL comlland directs files to the RSCS virtual machine. See the publication Por details on how to use the CP TAG and SPOOL commands to control RSCS network functions, see the !~LdIQ: B~!Qt~ §E221ing ~~!!yni£~!iQn2 ~~~212!~! 140 (R2~2) Pigure 29. RSCS Commands and Punctions ~2~~~2 ~Yig~· IBM VM/370: system Logic and Problem Determination Guide When RSCS handles files being transmitted across the network, the RSCS control program (line driver tasks) issues CP DIAGNOSE instructions. The DIAGNOSE instruction is the method of communication between a virtual machine and CPo In VM/370, the machine-coded format for the DIAGNOSE instruction is: o 7 8 11 12 15 16 31 -, r lL _ _ _ 83_ _ _ _ _ _ rx _ Content 83----rx ry Code ry _ Code l _____________________ J There are two types of tasks: system service tasks and line driver tasks. The system service tasks are those that provide the system support functions for the supervisor and for other tasks. The line driver tasks are those that manage the transmission paths to remote stations and that interact between the remote stations and the system service tasks and the Supervisor. Each line driver task manages the transmission of files to and from a single remote station. Figure 56 in section 2 shows the communications paths between the supervisor, system service tasks, line driver tasks, remote stations, and VM/370 virtual machines. R~E!g!H~!!2!! DIAGNOSE operation code User-specified register number User-specified register number Hexadecimal value that selects particular CP function. In RSCS, a task is a single program or set of subprograms that can run concurrently and autonomously with other such programs and subprograms, and which uses control functions provided by the Supervisor. a THE RSCS SUPERVISOR Figure 30 lists the DIAGNOSE function codes used by RSCS, the functions of those codes, and the RSCS modules from which they are issued. ---------------------, l Issued bYl r l DIAGNOSE l Code 0008 OOOC I Module (s) l Function Executes a CP command. Gets the current and date. The RSCS supervisor is composed of a set of service routines that provide functions for the tasks that run under them. These service routines may be called by any task. In general, they provide four kinds of services: time DMTAXS DMTREX DMTCMX DMTMGX DMTSML DMTNPT DMTSML DMTNPT 0014 Manipulates input spool files. DMTAXS DMTSML DMTNPT 0020 Performs general without interrupt. I/O DMTINI 0024 Determines virtual device type information. DMTREX DMTLAX DMTSML • • • • Task management I/O management Interrupt handling Virtual storage management TASK MANAGEMENT The task management service routines provide three kinds of services: task execution control, task synchronization, and task-to-task communication. Task execution control includes initiating and terminating tasks. In general, the only task to request these services is the REX system control task, which is described below. Task execution control also includes the dispatcher, DMTDSP, which activates task execution as soon as that task is initiated and while the task is active. ______________________________________ ---J 005C Edits error messages. DMTREX Figure 30. VM/370 DIAGNOSE Instructions Issued by the RSCS Program THE RSCS CONTROL PROGRAM RSCS is a control program composed multitasking supervisor and multiple which are controlled by the supervisor. of a tasks, The supervisor provides only those functions that cannot be consistently provided by the tasks themselves; that is, the supervisor provides only the support necessary to control and coordinate the execution of the tasks. Task synchronization comprises a mechanism by which tasks are made ready or not ready for execution. When a task requests the services of another task, the requestor task may suspend its execution while the request is being processed. The synchronization mechanism that accomplishes this consists of two routines, DMTWAT and DMTPST. DMTWAT causes the requestor task to temporarily halt execution. DMTPST causes a temporarily-halted task to resume execution. For more information on task synchronization refer to the section "Task synchronization". There are communica tions: and (2) the (GIVE/TAKE) • two types of task-to-task (1) the DMTSIG routine (ALERT) DMTGIV and DMTAKE routines Section 1. Introduction 141 The DMTSIG routine allows a task to immediately interrupt another task to pass it information. The interrupted task must have an asynchronous exit routine defined to handle the interruption. Functionally, DMTSIG performs a function analagous to an SVC instruction. The DMTGIV and DMTAKE routines allow tasks to exchange information buffers with other tasks. The GIVE/TAKE function provides the means for organized enqueuing and delivery of requests for services or information from one task to another. For more information on task-to-task communications, refer to the section "Task-to-Task Communications" in this section. I/O MANAGEMENT I/O management for following functions: • • • • tasks consists of INTERRUPTION HANDLING supervisor service routines handle three kinds of interruptions: external interruptions, SVC interruptions, and I/O interruptions. In RSCS, supervisor routines use the SVC (SUPERVISOR CALL) to suspend the execution or dispatching of a task when that supervisor routine received control. On an SVC interruption in RSCS, DMTSVC is entered. DMTSVC saves the status of the executing task and passes control to the calling supervisor routine in supervisor execution mode. RSCS handles external interruptions from tasks by searching for asynchronous exit requests supplied by tasks. When a request with a code matching the external interruption code is found, its asynchronous exit is taken; otherwise, the external interruption is ignored. the Handling requests for I/O operations Handling I/O interrupts starting an I/O operation Completing an I/O request Whenever a task requests the services of the I/O manager, that task builds an I/O request table to be passed to the I/O manager. This table consists of the following information: I/O interruptions are handled by the RSCS I/O manager. When an active I/O request causes an I/O interruption, the status of the I/O request is updated to reflect the new information. Otherwise, a search is made for an asynchronous exit request for the interrupting device. When one is found, the asynchronous exit is taken. Otherwise, the interruption is ignored. VIRTUAL STORAGE MANAGEMENT • A synchronization completion • The address of the device operation is to take place • number of SENSE bytes T~ when applicable • The address of executed the lock for signalling on which channel to be I/O the I/G returned, program to be The following information is returned to the task by the I/O manager, in the I/O request table: • The condition code for the SID issued for the I/O operation • The composite CSW • The SENSE bytes returned by the operation (if any) Using the information in this table, the I/O manager enqueues the request on the specified subchannel, starts the I/O operation, assembles the return information in the requestor's I/O request table, and posts the synchronization lock in the I/O request table signalling that the I/O operation is complete. The supervisor virtual storage service routine DMTSTO handles requests by tasks for main storage. When a task requests main storage, DMTSTO reserves page(s} of storage for it. Main storage is freed directly by task programs. DMTQRQ manages requests for free elements of the supervisor status queue. Supervisor routines call DMTQRQ to reserve and release supervisor status queue elements. RSCS TASK STRUCTURE As described in the previous section, the RSCS supervisor comprises a set of routines that function together to manage RSCS system processing. The supervisor provides a base for many system programs called tasks. (These tasks are not to be confused with user-application programs.) The RSCS system service tasks perform less generalized functions for the system than those functions performed by the supervisor. For example, the AXS system service task is designed specifically to access the VM/370 spool file system. The supervisor identically manages all tasks in RSCS; the supervisor makes no distinction between system service tasks and line driver tasks. Figure 31 is a list of the RSCS tasks and a brief statement of the service each performs. 142 IBM V"/370: System Logic and Problem Determination Guide CREATE SYSTEM TASKS: DMTCRB r--------- 1 1 Task Name REX -----, 1 Module 1 I Name 1 Function DMTREX Handles console I/O; accepts requests for services passed by other system service tasks or line driver tasks; terminates a task; handles program check interruptions. DMTCRE Creates a system service or line driver task. DMTCMX Monitors processing of commands in RSCS; executes the DEFINE, DELETE, DISCONN, QUERY, and START commands. DMTMGX 1 1 Builds a message element and passes the element to to the appropriate tasks for transmission or printing. DMTCOM performs common task functions. 1----------------------------1 1 AXS I DMTAXS I Communicates with the 1 1 1 1 spool file system. I 1---------------------------------1 1 LAX 1 DMTLAX 1 Manages telecommunica- 1 1 1 1 tions line allocation. 1 1---------------------------------1 1 Line 1 DMTSML 1 Manages a telecommunica- 1 1 tions line for a program- 1 I Driver 1 1 1 1 mabIe remote station 1 1 1 1 1 using RTAM. 1 1 1 1 1 1 DMTNPT 1 Manages a telecommunica- 1 1 1 1 tions line for a nonpro- 1 1 1 1 programmable remote sta- 1 J1 1L___________________________________________ 1 1 tion terminal. Figure 31. If the command is not one that DMTCMX executes within its own code, the command line is examined for syntax errors and then passed to the appropriate task for execution. To do this, DMTCMX generates a formatted table called a com.and element to be passed to another active task for execution via an ALBRT asynchronous exit. The commands CHANGE, ORDER, and PURGE are executed by DMTAXS; the commands BACKS PAC, CMD, DRAIN, FLUSH, FREB, FWDSPACE, HOLD, MSG, TRACE and START (for active links) are executed by the line driver task for the specified link. PROCESS MESSAGES: DMTMGX DMTMGX manages distribution of all RSCS messages, which may be generated by REX or by any other RSCS task. Each aessage to be issued is presented to DMTMGX (via GIVE/TAKE for tasks other than REX) along with an internal routing code and an internal severity code. Messages may be addressed to the local RSCS operator console, to the local VM/370 operator, to a local VM/370 user console, to a remote station operator, or to any combination of these destinations, by means of the routing code. The severity code is defined for each message, and is an indication of the importance of the message. Messages for the RSCS local operator console are enqueued for output on the RSCS virtual machine console. Messages for the local VM/370 system operator and for local virtual machine consoles are issued by means of execution of a VM/370 MESSAGE command (through the DIAGNOSE interface). Messages for remote RSCS operators are presented to the line drivers for the associated links by means of the RSCS MSG command element interface. This method of message handling simplifies RSCS message routing, tracing, and recording. RSCS Tasks The main system service task, REX, is loaded with the supervisor during RSCS initialization. The REX,., task, in turn, creates other tasks required - by the system. DMTCRE reads these other tasks from a CMS disk by means of a CMS read access method. The task is then started as a new active task under RSCS. PROCESS COMMANDS: DMTCMX CMTCMX receives commands by means of either GIVE request elements passed by line driver tasks or in the form of a console input line resulting from a console read by DMTREX. The commands DEFINE, DELETE, DISCONN, QUERY, and START (for inactive links) are executed by DMTCMX. Execution of these commands generally involves referencing and modification of system status tables (SVECTORS, TTAGQ, TLINKS, etc.). TERMINATE SYSTEM CHECKS: DMTREX TASKS AND HANDLE PROGRAPI When a line driver task requests termination, a TAKE request is passed to DMTREX specifying that function. DMTREX marks the task as terminated, then searches for active I/O associated with the task. If active I/O is found, it is terminated. To ensure that system integrity is maintained during the termination of the I/O, a mechanism (at label QUIESE) is set up to handle situations in which an HID (Halt I/O instruction) does not take effect immediately. All RSCS program checks are handled by a routine in DMTREX. Program check diagnostic information is dumped, a message to the operator is issued, and the RSCS system status is modified, depending on the nature of the program check. Section 1. Introduction 143 COMMUNICATE WITH DMTAXS THE VM/370 SPOOL FILE SYSTEM: DMTAXS is responsible for the maintenance of the total RSCS interface to the VM/370 spool system. When a spool file arrives at the RSCS virtual machine, AXS receives the associated asynchronous interrupt, reads and interprets the file's VM/370 spool file block (SPBLOK) and TAG, enqueues the file for transmission as appropriate, and notifies the appropriate line driver of the new file's availability. AXS provides a GIVE/TAKE request interface to line driver tasks for spool file data input and output, and defines and detaches virtual spool I/O devices as necessary. Also, AXS provides an interface to DMTCMX for second-level command execution support. AXS maintains a queue of a fixed number of virtual storage elements (called tag slots) that describe files currently owned by the RSCS virtual machine. TO maintain RSCS integrity in a simple way when a very large number of files is enqueued on the RSCS virtual m~chine, the virtual storage tag queue is not extended during execution. When a new file arrives at the RSCS virtual machine, its destination locid is examined, and it is accepted only if there is a matching linkid for which there is a free tag slot available. If the file's destination locid is not defined as a linkid, the file is purged and the originating user is notified of the action. If there is no free tag slot available for a defined linkid, the file is left "pending", and is accepted when a TAG slot becomes free. While a file is pending, it is not recognized by the RSCS command processors, and cannot be referenced through RSCS functions. To prevent links from being totally locked out by an exhausted (and stagnant) virtual storage tag queue, a minimum number of tag slots is reserved for each link. This guarantees that a minimum number of files is accepted for each associated link. The number of reserved slots is defined during system generation or in the DEFINE command for each link to be defined in RSCS. The appropriate number of slots to be reserved for each link may depend on the expected file traffic, the link's line speed, the expected time the link is to be active, and the desired level of service to be provided to the link. This number for each link may be arrived at through actual operational experience in each location. MANAGE TELECOMMUNICATION LINE ALLOCATION: DMTLAX DMTLAX is responsible for line port resource allocation to line driver tasks. DMTLAX allocates available switched ports (when a link is activated without a specified line address) through an ALERT request interface. When a line port is specifically requested (by virtual address), DMTLAX checks the device for validity as a line port. 144 LINE DRIVER TASKS: DMTNPT AND DMTSML As part of the link activation process, REX (module DMTCRE) loads and st.arts a line driver task to service the remote location. The general are: functions of line driver tasks • Manage I/O on the BSC line • Manage transmission of spool file data via a GIVE/TAKE request to the AXS task o Provide GIVE/TAKE requests to command module (DMTCMX) the REX task The precise functional requirements vary from line driver to line driver, depending on t.he type of remote station t.he line driver supports. Each line driver is responsible for maintenance of its link status and line act1vity (TRAC~ records in the RSCS system status tables. Two line drivers are provided, one to support remote 2770, 2780, 3770 (in 2770 mode), and 3780 terminals, and another to interface to remote HASP- and ASp-type systems or work stations. THE SML LINE DRIVER PROGRAM The SML line driver program general types of routines: is composed of four Processors, which are routines that execute the functions required by the HOST and RJE processing modes. o An input/output routine that transmits data on the BSC line. accepts and • A function selector routine that dispatches one of the processors when a request for services is received. • Buffer blocking and deblocking routines. The SML line driver supports programmable remote stations (in both HOST and RJE modes) for HASP- and ASp-type systems. HOST mode is that processing mode in which a remote station may submit jobs to VM/370 and receive print and punch output from VM/370. RJE mode is that processing mode in which VM/370 may send jobs to a remote batch system for processing and receive print and punch output from the remote batch system. Figure 32 shows the types of data flowing to and from RSCS via the SML line driver program. IBM VM/370: system Logic and Problem Determination Guide THE SML FUNCTION SELECTOR ROUTINE: $START HOST Mode VM!370 f SML HOS~MOde I I PRINT and PUNCH Output RJEMode System RSCS I SML I RJE Mode Figure J PRINT and PUNCH Output 32. Data Plow Between RSCS and Remote stations via the SML Line Driver The $START routine is entered when SML is required (by either a remote station or a virtual machine) to perform a function. The purpose of this routine is to select a function to execute. The routine performs this function by using a commutator table, a list of synch locks, and task control tables. The SML commutator table is a branch table consisting of branch (B) and no-operation (NOP) instructions. The targets of the branch instructions are the seven processor routines, each of which performs a specific function. When the service of a processor is not required, the Commutator Table entry for that processor is a NOP instruction. When the function of the processor is required, the NOP instruction in the commutator table entry for that processor is replaced with a B instruction, thereby opening a gate in the commutator table. The $START routine cycles through the commutator table, falling through any NOP instructions and taking any branches. Control is passed in this way to any processor whose gate in the commutator table is open. SML PROCESSORS To support the HOST and RJE processing modes, the SML program provides seven "processors," or routines, that handle the seven functions required to support the two processing modes. Figure 33 is a list of the SML processors, the processing modes they support, and a brief statement of their function. When a command is transmitted from a remote station to RSCS, SML receives the command and coordinates processing of the command with supervisor routines and the REX task command module DMTCMX. The SML processor, $WRTN1, processes a command request from a remote station by passing a command request element to the REX task (module DMTCMX) via a GIVE request. DMTCMX then determines whether the command should be executed by DMTCMX, DMTAXS, or by the line driver. If the command is to be executed by the line driver, it is passed back to'SML via an ALERT request. The SML routine CMDPROC then executes the command. When the processor completes the function requested, it closes its gate in the commutator table by replacing the B instructions with a NOP instruction. $START continues cycling through the commutator table taking any open branches. When the bottom of the commutator table is reached, $START tests a series of synch locks to see if any have been posted, signifying a request for an SML function. If any synch locks are posted, $START opens the commutator table gate for the requested processor and goes to the top of the commutator table to start cycling through it again. If the bottom of the commutator table is reached and there are no posted synch locks, SML discontinues processing by issuing a wait request via a call to the supervisor module DMTWAT, waiting on a list of the synch locks. When any 'of the synch locks is posted, $START receives control, opens the appropriate gate, and starts cycling through the commutator table. The task control table (TCT) is a DSECT defining data required by each of the processors. There is a TCT for each of the processors. Also, contained within the TCT is a branch instruction to the appropriate processor. THE SML LINE IIO HANDLER ROUTINE: COMSUP BLOCK AND DEBLOCK $TPPUT AND $TPGET The SML line I/O handler routine, COMSUP, controls communications on the BSC line for SML. This routine receives data from the BSC line and passes the data to the deblocker routine ($TPGET). COMSUP also sends data (which has been blocked by the blocker routine, $TPPUT) to a remote station. COMSUP is also responsible for acknowledging receipt of data over the line using the standard BSC line contr~l characters. SML TELEPROCESSING BUPPERS: Data received over the BSC line is placed in a teleprocessing (TP) buffer. The size of TP buffers is specified by a START command parameter and can be up to 1024 bytes. Data contained in TP buffers is deblocked into tanks, which are unit buffers of a specific Section 1. Introduction 145 r----------------------------------------------, Processor I Mode I Function I I 1------1----------1--------------1 I I I I I I I I I I I I I I I I $CRTNl I HCST/RJE I Processes the followI ing MULTI-LEAVING I control records: to transI permission I mit, request to SIGNON I transmit, and I control records. I I I I I I I I I I I $TPGET receives data from a BSC line (via the COM SUP routine) and allocates tanks to output processors as they are needed. $TPPUT receives tanks from input processors, blocks the data in these tanks into TP buffers, and gives control to COMSUP to transmit the buffers over the line. I 1--------1--------,-1-------------------1 I $PRTN 1 I RJ E I Processes print file records received from remote stations and passes them to the VM/370 spool system. I I I I I I I I I I I I I I I I I I I I I I $URTNl I RJE I I I I I I I I I Processes punch file I records received from I remote stations and I passes them to the I VM/370 spool system. I I I I 1---------1-----1---------------1 I I I I I The NPT line driver program processes only one file at a time; it can either receive a file as input from the remote station or transmit an output file to a remote station. These two processes execute under control of a line monitor that reads and writes data over the ESC line and a function selector routine that determines whether an input or output function has been requested. 1---------1---------1--------------------1 THE NPT LINE MONITOR ROUTINE: LINEIO I I I I I I The NPT line monitor routine, LINEIO, controls communications on the BSC line. This routine sends and receives data over the BSC line. $JRTN 1 I I I I I I HOST I I I I I I Processes job file records received from the remote station and passes them to the VM/370 spool system. I I I $WRTNl I HOST/RJE \ In HOST mode, passes I command request eleI ments, via DMTMGX, I I to DMTCMX for procesI I sing. I I In RJE mode, passes I I message request eleI I ments to the RSCS opI I era tor I s console. I I 1----------1 I I \ 1---------------------- I I I I I I I I I I I I I I I I 1-------1-----1 I $RRTNl I I I HOST/RJE I Receives records from I I the VM/370 spool sysI I tem for transmission I I to remote stations. \ I I I \-----\------1------------------\ I CMDPBOC I I Executes local com- I I I I mands passed by I I I I DMTCMX, and passes I I I I messages and commands I I I I to remote stations. I L -JI I ________________________________________ I I Figure 33. When the data is received from remote stations, that data is received in the LINEINB buffer. When data is transmitted to a remote station, it is transitted using the LIHEBUFF buffer. The NPT buffers are a fixed size, defined by terminal type and buffer size specified on the SIGNON card. THE HPT FUNCTION SELECTOR ROUTINE: NPTGET When the NPT line driver program has been loaded and initialized, the NPTGET program begins a cycle in which it checks every three seconds for one of three functions to perform: • • • Process a command Read a file from a remote station Write a file to a remote station When a function is requested, taken to the appropriate routine. a branch is SML Function Processors NPT INPUT FILE PROCESSING size used to deblock the larger TP buffers. There are 15 tanks; these are allocated as they are needed by processors. The size of tanks is determined by MULTI-LEAVING control bytes. When an SML function has been requested, the data must be either blocked for transmission (if it is data for a remote station) or deblocked for processing (if it has been received from a remote station) • 146 For files being received from remote stations, two processing routines are executed: PUTVRFY and PUTBLOCK. PUTVRFY reads the data contained in the input buffer (LINEINB) and verifies the BSC control characters for that data. PUT BLOCK deblocks the data in LINEINB, formats it for use by VM/370, and then writes the data to the VM/370 spool system. IBM VM/370: system Logic and Problem Determination Guide NPT OUTPUT PROCESSING ROUTINES through GIVEQ. The DSECTS defining the elements chained on these queues are: FREEE, TASKE, IOE, ASYNE, and GIVEE. For files being transmitted to a remote station, three processing routines are executed: "AKEBLOC, GETBLOCK, and GETVRFY. "AKEBLOC accepts a block of data from the V"/370 spool system and passes control to GETBLOCK. GETBLOCK then builds a buffer with which to transmit the data and transmits the data to the remote station. The response received from that transmission is analyzed by GETVRFY. MAJOR DATA AREAS MAINMAP: STORAGE AVAILABLE TO TASKS RSCS PROGRAMS AND The MAINMAP DSECT is a grid of a fixed number of bytes, each of which represents a page of virtual storage. When a task (or the Supervisor) requests storage, the byte is filled with the TASKID (generated by the Supervisor) of the requestor, thus marking the storage page as taken by that task. When a page is free, its map entry is cleared to zero by the task owning the storage. The major data areas used by RSCS are: • • • • • • • TAREA: THE SAVE AREA FOR AN INTERRUPTED TASK SVECTORS RSCS supervisor queue elements KAINMAP TAREA LINKTABL TAG RSCS request elements VM/370 data areas referenced by RSCS The TAREA DSECT contains the PSW at which a task is to resume execution, the contents of the task general registers when it was interrupted, and the task's request synchronization lock. This area is used to maintain the status of a task when it is interrupted by another task. The data areas discussed below give a brief functional overview of each data area and its relationship to other data areas in the system. These are not meant to be a comprehensive description of the RSCS data areas. Rather, it is meant as an introduction to the types of data used by RSCS in performing its various functions. SVECTORS: SUPERVISOR CONTROL SUPERVISOR ROUTINE ADDRESSES QUEUES AND LINKTABL: LINK DESCRIPTION DATA The LINKTABL DSECT describes control data associated with each link in the system. The control data includes such information as the linkid of the link, the task name for the link's line driver (that is, the name by which Rses knows the task), the address of the line which is used by the link, and so on. The link table (a chain of LINKTABL DSECTS) is built during system generation and may be updated by the DEFINE, DELETE, START, and DRAIN commands. The SVECTORS DSECT contains: TAG: THE RSCS FILE DESCRIPTOR • The PSW for the last task dispatched • The RSCS system Save area • The task ID and address of the for the last task dispatched • pointers to the RSCS supervisor subqueues The TAG DSECT defines the attributes and status of a file being processed by RSCS. The TAG is built from information passed via the CP TAG command (or its counterpart for remote stations) and from the CP Spool File Block (SFBLOK) that describes the file. Entry addresses for routines RSCS REQUEST ELEMENTS task element all supervisor service This data area is updated dynamically as tasks execute and is used by RSCS to monitor the execution status of the system. Request elements are data tables built by task programs when a service is to be requested by the task. RSCS SUPERVISOR QUEUE ELEMENTS All supervisor status information pertaining to tasks and task requests is maintained in Supervisor storage defined by the SVECTORS DSECT. There are various queues defined in this DSECT, each pertaining to a particular Supervisor function, and composed of elements of similar format. The heads of these queues are defined in a portion of SVECTORS from FREEQ For example, when a command is processed by DMTCMX, the command line may be formatted into a command element, which gives the following types of information: • Length of the command element • The unique element code identifying the Section 1. Introduction command 147 • The 1inkid to which command response is to be returned VM/370 DATA AREAS REFERENCED BY RSCS • Modifiers that c omlland There are two VM/370 CP data areas referenced by RSCS when VM/370 spool files are processed: • A variable length buffer field containing the command line specify options for a given • SFBLOK The VM/370 spool file block that contains control information and describes attributes of a VM/370 spool file. This command element is then passed (via DMTSIG) to another task for processing. • SPLINK The data block that links pages VM/370 spool file buffer. Other types of request elements are built to Frocess individual commands and messages, to create and terminate tasks, to process console I/O, and so on. RSCS STORAGE REQUIREMENTS In many cases, elements are contained in a generalized control area used when processing a system function, for example, monitoring requests for DMTAXS module to open or close a VM/370 spool file. Figure 34 shows the storage used by the RSCS control program and how the parts of the system (the Supervisor, the tasks, and the data areas) fit together in storage. 0, ------------, 1 DMTVEC 1 270 1--------------------·---------- 1 1 DMTMAP 1 1-------------------------------1 1 DMTEXT 1 1-----------------------------1 1 DMTSVC 1 1 10000 r - - - - - - - - - - - - - - - - · - - - - - - - , 1 DMTREX 1 1 DMTIOM 1 1 1 DMTQRQ 1 1-----------------------------1 1 DMTDSP 1 1 1 1 1 1 1 DMTSIG 1 1------------------------------ 1 1 DMTAKE 1 10001-----------------------------1 1 Supervisor Queue Extension 1 20001------------------------------- 1 / / / / / / / / / / Free storage (al1oca table) /L-- / / / __________ -J Figure 34. Free Storage / / / / / / / / / / / / / / / / / / / / / 700001----------------------1 1 Third Line Driver 1 740001----------------------1 1 Second Line Driver 1 78000 1----------------------·---1 1 First Line Driver 1 7COOOI----------------------1 1 DMTLAX 1 7 DOOO 1--------------------------·----1 1 DMTAXS 1 80000 '--------------------------------' RSCS storage Allocation lDMTINI begins at the first page becomes part of free storage. 148 DMTINII / 1----------------------------1 1 DMTSTO 1 1--------------------------------1 1 DMTASY 1 1------------------------------1 1 DMTGIV 1 DMTSYS 1 - - - - - ·- - - - - - - - - - - - - - 1-·---------------------------1 1 DMTPST 1 11 -----------------1 DMTASK 1 1------------------------------- 1 ---------- 1------------------ 1------------------------------1 DMTWAT DMTCRE 1---------_·_-------1 DMTCOM 1--------------------1 DMTMSG 1 1------------------------------ 1 1 --------·----1 1 DMTCMX 1 1-------------------------1 1 DMTMGX 1 -----1 1 of a boundary following DMTSYS. IBM VM/370: system Logic and Problem Determination Guide After initialization its storage SYNCHRONIZATION LOCKS The means by which RSCS synchronizes and dispatches tasks are the WAIT/POST routines (DMTWAT and DMTPST), synchronization locks, asynchronous requests and exits, and the dispatcher routine (DMTDSP). synchronization locks (or "synch locks") are fullwords contained in task save areas or control tables (such as TAREA or IOTABLE). Synch locks are also found in control areas 1n function selector routines such as REXCYCLE in module DMTREX. The WAIT/POST method of task synchronization (Supervisor modules DMTWAT and DMTPST) is used when an executing task requires the services of another task. When this situation occurs, the requesting task must suspend its execution while it waits for the requested service to be performed. In conjunction with the dispatcher, WAIT/POST allows tasks to temporarily suspend execution until they receive a signal (via the synch lock) that they can resume execution. The synch lock must be set to zero before the request for services is made. Setting the synch lock to zero prepares it for processing by the WAIT routine. The first byte of the full word may contain either a zero or a "post code." If the first byte is zero, the task is nondispatchable, because the requested service has not yet been performed. A post code is a code which sets to one any bit in the first byte of the synch lock. DMTPST sets such a bit to specify that a requested service has been completed. THE WAIT/POST ROUTINES To suspend its execution, the requesting task calls DMTWAT, which inspects the synchronization locks RSCS uses to synchronize task execution. Completion of a service is signalled by means of a synch lock, which is set (or "posted") by DMTPST. R1 r----- 1A (Synch Lock) L The requesting task, that is, the caller of DMTWAT, may specify the address of a single synch lock (as in the case of a GIVE Table or an IOTABLE) or the address of a list of synch locks (as in the case of REXCYCLE), one of which must be posted by DMTPST before dispatching of the requesting task can resume. Figure 35 shows the contents of Register 1 on a call to DMTW1T. Synch Lock , ,.-----., 1------> 1 --' 1 000000 1 , - .I OR -synch Lock r R1 r-----------, r---> 1 --, 0 1 1 " --' IA(list Address) 1------->1 A (Synch Lock) 1----' Synch Lock L-------' 1----------1 r -, 11___________ A (Synch Lock) 1--------> 1 --0 - - '1 1 L r-- ------, / / / , .I / 1 1 11 (Synch Lock) 1---, I L___ Synch lock ,.---------, >1 , 0 --' Figure 35. Input to the DMTWAT Routine ASYNCHRONOUS INTERRUPTIONS AND EXITS key on the RSCS console, thereby asynchronously interrupting execution of the REX task. Asynchronous interruptions result from processes external to RSCS. For example, during REX task execution, the RSCS operator may press the ATTN To handle asychronous interruptions, RSCS tasks contain asynchronous exit routines. These asychronous exit routines are set up during initialization without dispatching the task being requested to perform the requested service. Asynchronous exits are provided for Section 1. Introduction 149 external interruptions, for certain I/O interruptions, and for ALERT requests that occur during execution of another task. Asynchronous exits are taken after a calls DMTASY specifying the requested conditions and the entry address of asynchronous exit routine. task exit the DMTASY also handles external interruptions reqeusted for the clock comparator. The request element is queued on the asynchronous exit queue and processed by DMTEXT. The DMTASY clock comparator provides a time delay mechanism by using the CPU hardware clock comparator. Asynchronous exit routines perform limited function, often enqueueing requests for further processing at a later time by dispatched tasks. When the asynchronous exit routine completes processing, it returns control to the supervisor, which then resumes dispatching tasks via a call to the dispatcher (DMTDSP). USING ASYNCHRONOUSLY REQUESTED SERVICES: DMTWAT Before a task can use the results of an asynchronously requested service, it must ensure that the service has been performed. To ensure that the service has been performed, the calling task signals that it is waiting for completion of a service via a call to the supervisor routine DMTWAT, specifying the synch lock associated with the requested service. If the high-order byte of the task's synch lock is nonzero when DMTWAT inspects it, control is returned directly to the calling task. If the high-order byte of the synch lock is zero, DMTWAT marks the calling task nondispatchable (via the task's request element), stores the address of the task's request element in the low-order bytes of the synch lock, and resumes dispatching for other tasks. POSTING ! SYNCH LOCK When the requested service is comFlete the REX Task signals completion by calling the POST routine (DMTPST), specifying the requesting task's associated synchronization lock. The POST routine sets the high-order byte of the synch lock to nonzero. This is referrred to as "posting" that synch lock, and indicates that the requested service is complete. is marked "nondispatchable," a masked-on state PSW is loaded by the dispatcher. wait In addition to posting a synch lock, DMTPST inspects the synch lock to determine whether DMTWAT has stored the address of a task element in that synch lock, implying that the task is nondispatchable. If this is the case, DMTPST marks the task's task element dispatchable and clears the last three bytes of the synch lock to zero. Tasks may call DMTWAT specifying multiple synch locks. When this is the case, each synch lock is inspected and, if any synch lock is posted, task execution resumes immediately. If no synch locks are posted, the task element for the calling task is marked nondispatchable, its address is stored in each of the synchronization locks, and dispatching is resumed for other tasks. When any synch lock in the list is posted, the task element is marked dispatachable. The dispatcher clears the low-order three bytes of each of the task's synchronization locks (pointed to in the task element before task execution is resumed) • Refer to Diagrams 1-9 and 1-10 in the Method of Operation section for details on processing by DMTWAT and DMTPST. TASK-TO-TASK COMMUNICATIONS There are situations when a task requires the services of another task in order to complete a function. For example, SML may require that AXS open a file for input before processing of that file can continue. RSCS task communicate with each other to request these kinds of services using two methods: ALERT task-to-task communication and GIVE/TAKE communication. Both methods use an element, which is a table of information that describes the nature of the request. In general, these elements are referred to as request elements and ALERT elements. ALERT TASK-TO-TASK COMMUNICATION The ALERT method of task-to-task communication allows a task to interrupt another task to request an immediate service. The type of request is described by an ALERT element, the address of which is specified by the requesting task in a call to DMTASY. DISPATCHING IN RSCS The supervisor functions return control to the tasks by means of the dispatcher (DMTDSP). The dispatcher scans the queue of tasks to be executed (TASKE in SVECTORS), selects the first dispatchable task element (that is, one that is not marked nondispatchable by DMTWAT), moves this task element to the end of the task queue, and restarts its execution. If no task element 150 The supervisor responds by g1v1ng control to the asynchronous exit routine defined by the request task and by passing to that task the address of the ALERT element that describes the requested service. The requested task's (i.e., the task receiving the request) asynchronous exit routine responds immediately and may copy the ALERT element into its own storage for further IBM VM/370: System Logic and Problem Determination Guide processing. The receiving task's asynchronous exit routine then returns control to the supervisor, which allows the dispatched task to resume execution. The ALERT routine (DMTSIG) also notifies another task that an asynchronous event has taken place. In this case, DMTSIG is not used with an ALERT request element. GIVE/TAKE TASK-TO-TASK COMMUNICATION While the ALERT method of task-to-task communication demands immediate response from the alerted task, the GIVE/TAKE method provides a means for ordered enqueueing of requests for services. These requests are handled when the servicing task is free to handle it, rather than upon immediate demand. Generally, request and response elements are formatted tables of information that reside in the storage of both the requesting task and the task providing the service. During task-to-task communication, these elements are passed from one task to another, containing either requests for services or responses to requests. When the receiving task signals that it can process a GIVE request, the receiving task builds a TAKE table in its own storage. The TAKE table consists of a field to receive the task name of the requesting task and the addresses and the lengths of a TAKE request buffer and a TAKE response buffer. Functionally, these buffers complement the GIVE request and response buffers and, like the GIVE buffers, may be at the same location in storage. Once the TAKE table is built, the receiving task specifies the address of the TAKE table in a call to DMTAKE. The supervisor then moves the GIVE request buffer (containing the GIVE request element) to the receiving task's TAKE request buffer. The receiving task performs the requested service and updates the GIVE request element and places it in its TAKE response buffer. This modified GIVE request element contains information on results of request processing to be returned to the requesting task. When all request processing is complete, the receiving task again calls DMTAKE, specifying the address of the TAKE table. The supervisor responds by immediately moving the contents of the receiving task's TAKE reponse buffer to the requesting task's GIVE response buffer, and posting the synch lock in the requesting task's GIVE table. When a task requests services of another task via GIVE/TAKE, it builds a GIVE table in its storage. The GIVE request buffer and a GIVE response buffer. (The request and response buffers may be at the same location in storage. ) The GIVE request buffer contains a GIVE request element, which is a table of information describing the service being requested. Once the GIVE request element is built, the requesting task clears the synch lock in its address of the GIVE table to zero (in preparation for a call to DMTWAT) and specifies the address of the GIVE table in a call to DMTGIV. The supervisor then enqueues a supervisor GIVE element containing a pointer to the GIVE table, so that the request can be forwarded to the receiving task when that task is ready to accept the request. If another GIVE request addressed to the receiving task has been enqueued, it is given to the receiving task as described above, and dispatched task execution is resumed. On each call to it, DMTAKE first responds to a previously accepted GIVE request (if one exists) and then gives another modified GIVE request element back to the calling task (if one exists). The requesting task waits for request completion by specifying the address of the synch lock in its GIVE table in a call to the WAIT routine (DMTWAT) • The receiving task waits for request availability by calling DMTWAT and specifying the address of its "task request synch lock," which is located in its Task Save Area. The task request synch lock is cleared to zero by DMTAKE when no GIVE request address to the calling task remains enqueued. It is posted by section 1. Introduction 151 DMTGIV when such a request is enqueued as result of DMTGIV processing for another task. a data area. Figure 37 shows the between these various data areas. relationships Figure 36 shows the movement of data during a GIVE/TAKE transaction. ACTIVE AND PENDING I/O QUEUES SVECTORS GIVEE GIVEE The supervisor I/O queues (MPXIOQ and SELIOQ) include an active queue and a number of inactive or "pending" subqueues. Each element in the active I/O queue represents an I/O operation which is active on a particular nonshared I/O subchannel. The active I/O queue is ordered according to ascending numerical I/O subchannel address. GIVEE ~====J---~==~~-C==~ GIVEQ Request ' - -_ _- I ' - Element SML STORAGE (Giver) When an I/O operation is requested on an idle I/O subchannel, an I/O element representing the request is built and enqueued on the active I/O queue in its I/O subchannel's numerical address position. The I/O operation is then started. GIVE Request Table .......... , \. \. TAKE 2 \ (Taker) I \ \ I , Request Table I \ \ TAKE \ \ Figure 36. \. "- ...... / ....... Movement of Data During GIVE/TAKE Transaction / / I I I .,,/ When an I/O operation is requested on an I/O subchannel for which an I/O element is enqueued on the active I/O queue, the nonshared subchannel is busy and, therefore cannot be started immediately. In this case, an I/O element representing the request is built and enqueued on the subchannel's inactive I/O subqueue. The head of this subqueue 1S contained in the active I/O element enqueued on the active I/O queue. When the nonshared subchannel's active I/O completes and the subchannel becomes available, the first element on the inactive I/O sub queue is enqueued on the active I/O queue and its I/O operation is started. a Typical HANDLING LINK ACTIVITY: LINKTABLS AND TAGS INPUT/OUTPUT METHODS AND TECHNIQUES Two data structures are created when RSCS performs an I/O operation: an I/O element and an I/O table. The I/O table (defined by DSECT lOT ABLE) is built by the requesting task and describes specific inforaation required to perform the requested I/O operation. The I/O element (defined by DSECT IOE) is built by the I/O request manager (DMTIOM) and consists of items of system information describing a request for an I/O operation. When the RSCS system is generated, a number of TAG slots are generated and enqueued on the free TAG queue. TAG slots are storage areas defined by the TAG DSECTi TAG slots describe the files being transmitted via RSCSi the free TAG queue cOllprises those TAG slots available for a given RSCS system. The Free TAG Queue is define~ in the DSECT TAGAREA, which also defines the status of TAG slots in the RSCS system. TAGAREA is pointed to by TTAGQ in SVECTORS. HOW LINKS HANDLE FILES I/O elements are placed on queues pointed to in SVECTORS: MPXIOQ (for multiplexer I/O requests) and SELIOQ (for Selector I/O requests). The elements in these two queues are in ascending subchannel order. Queue elements may also contain pointers to subqueues, which represent requests for use of the same nonshared subchannel. Each I/O elellent points to an I/O table. Each link in RSCS is defined by a LINKTABL DSECT. The LPOINTER field of the LINKTABL DSECT points to the link's inactive TAG queue. Tbis queue comprises those TAGs describing files tbat RSCS has not yet transmitted. Only one TAG per link can be active at a time. Also, there is a queue of I/O asynchronous exit request elements pointed to in the SVECTORS The queue of LINKTABLs (called the link table) is pointed to by the TLINKS field in SVECTORS. 152 IBM VM/370: system Logic and Problem Determination Guide ACTIVE IOE SVECTORS IOTABLE MPXIOQ SELlOQ IOEXITQ ASYNE Figure 31. ASYNE ASYNE I/O Queues and Subqueues TRAISftITTIIG Vft/310 FILES TO AI ascs LIRK from the active input queue and returned to the Free TAG Queue. When a Vft/310 file is spooled to RSCS for specific link, RSCS accepts the file and: its slot is a PROCESSING FILES FROft REftOTE STATIONS • Obtains a free TAG slot for the file. • Builds a description slot. • Enqueues the TAG queue. of the file in the TAG link's inactive As in the case of Vft/310 spool files, when files are received from remote stations, RSCS obtains a TAG slot and builds a description of the file in that slot. However, files from remote stations are enqueued on the active output queue (TAGACOUT in TAGAREA) • When trans.ission to the reaote station begins, the file's TAG is dequeued from the inactive TAG queue and enqueued on the active input file queue (TAGACIN in TAGAREA). When transmission of the file is complete, the TAG is dequeued When the file is completely transmitted, its TAG is dequeued from the active output queue, closed to the Vft/310 spool system, and its freed slot returned to the free TAG queue. new TAG on the Figure 38 shows the relationships between the DSECTs described above. section 1. Introduction 153 LlNKTABL Link's Inactive llii Queue These are TAG's representing files waiting for transmission; that is,waiting to be enqueued on the Active Input TAG Queue described below. • • • LPOINTER Freg TAG Queue All TAG "slots" which are not in use to d()scribe a file are enqueued on the free TAG queue. TLiNKS TTAGQ TAG TAG ITDTI TAG TAG Active L!l.I2.!J.! TAG Queue There may be only one active input file for any given link on this queue. Each file which is being read from the VM/370 spool system and transmitted to a remote station is represented by a TAG on this queue. TAG DTI~D Figure 38. Chaining of Data Areas Required for File TAG Manipulation 154 IBM V8/310: sJste. Logic and Proble. Deter.ination Guide Active Output TAG Queue Each file which is being written to the VM/370 spool system is represented by a TAG on this queue. section 2 describes the progra. organization for CftS, CP, and BSCS. The CftS description is in two parts. The first part contains figures showing the functional organization of CftS. The second part contains general information about internal structure of CftS programs and their interaction with one another. CftS program organization is in two figures. Figure 39 is an overview of the functional areas 8 ,..---------, Process Commands that Manipulate the File System Manage the CMS File System of CftS. Each block is nu.bered and corresponds to a .ore detailed outline of the function found in Figure 40. Figure 40 shows how CftS routines relate to these functional areas. The numbers on top of each detailed figure correspond to the numbers on Figure 39. In most cases, the detailed figures contain three levels of information: the functional topic, a breakdown of logical areas within that topic, and the CftS routines that perform those logical functions. r---------, Handle I/O Operations Process And Execute CMS Files Initialize the CMS Virtual Machine Environment o Handle Interruptions Manage CMS Storage Simulate Non-CMS Operating Envi ron ments Perform Miscellaneous CMS Functions Figure 39. An Overview of the Functional Areas of CftS section 2. ftethod of Operation and Program Organization 155 (2 Initialize the CMS Virtual Machine Environment Process and Execute CMS Files r Maintain an Interactive Console Environment DMSINI Read theCMS nucleus I I I Process and Execute EXEC Files I I I J Load and Execute TEXT Files Process MODULE Files I I I Perform Library Support Functions 1 DMSINT DMSEXC DMSLOA DMSMOD DMSLBM Interpret commands entered at the console Load a disk version of the EXEC processor Process the LOAD and INCLUDE commands Generate a MODULE file Generate and update MACLIB files DMSINS DMSEXT I I 1 DMSINA DMSLDR DMSMOD DMSLBT Initialize storage constants and virtual disks for a virtual machine Handle synonyms and abbreviations Perform EXEC processing Begin execution of programs in storage Load a MODULE file Generate and update a TXTLIB library DMSINT DMSSCN DMSLSB Handle first commands entered at the console Process a command line and create a PLiST Process loader options DMSSET DMSCPF DMSLlO Set virtual machine environment options Pass a command line to CP for execution Create a load map and perform loader I/O I I DMSQRY DMSITS DMSMDP Query the virtual machine environment option settings Process command functions via SVC calls Type a load map at a console I I I I I I I DMSGLB Define libraries to be searched during execution and assembly I DMSLGT Create a chain of TXTLIB blocks for use during execution; release the chain I DMSLlB Search TXTLIB libraries for undefined symbols; close TXTLIB libraries Figure 40. Details of eMS System Functions and the Routines That Perform Them (Part 1 of 4) 156 IBM VM/310: System Logic and Problem Deteraination Guide I CD. CD Process Commands that Manipulate the File System I Perform General File Support Functions I DMSSTT Verify the existence of a file and return its address 1 Manage the CMS File System I I I Perform Data Manipulation Functions I DMSEDC, DMSEDF DMSEDI, DMSEDX Create and update files Manage Virtual Disk Data I I 1 I I Locate Data in the CMS File System Perform File Update Functions J J DMSPRT DMAACC DMSLAD DMSARE Print a record Access data on a virtual disk Find an active disk table Clear an active disk table I I DMSLST DMSUPD DMSPUN DMSACM DMSLAF DMSFNS List the names of files on a CMS disk Update source files Punch a record Build an active disk table Find an active file table Close any open files on disk I I I I I T I T T DMSSYN DMSCPY DMSTYP DMSACF DMSLFS Create synonyms and abbreviations for a file name Manipulate disk file records Type a record Build file status table blocks for a virtual disk Find a file status table I I I I DMSALU Clear tables and free storage associated with a disk J DMSRNM DMSCMP DMSASM DMSLAF Rename a file Compare records in two files Interface with the assembler to assemble files Create or delete active file table entries I I I DMSERS DMSSRT DMSDSK Erase a file Sort/arrange records in a file Load card-todisk, dump disk-to-card I I DMSRDC DMSTPE Read a record Process TAPE command functions I I DMSMVE Move data from one device to another Figure 40. Details of eMS System Functions and the Routines That Perform Them (Part 2 of 4) Section 2. Method of Operation and Program Organization 157 CD I 0r----'--.. . Handle 110 Operations I I Perform Console 110 I I I Perform Perform Perform Write to Unit Record 110 Tape 110 a Display Terminal DMSDIO I OMSPIO I write one or Perform print more blocks 110 functions I DMSTPD DMSSCR Read a PDS tape Load display buffers to be displayed on Read or Start an 110 operation I Disk 110 I DMSCIT I of disk data I I DMSTOO, OM:; I HK DMSCWT Manipulate Wait fora console event to complete storage management chains l DMSCAT Perform read Read or Issue a card and punch write a tape card 110 record I I DMSCWR DMSTMA input for items on a disk file Write a line to the console CMS Interrupts Storage I Wait for 110 to Complete I DMSIOW Wait for an 110 event to take place DMSCIT DMSFRE Handle console Allocate and release free system and user storage interrupts I DMSGI I Read or write I I DMSTIO DMSBRD. DMSBWR Stack a line of console DMSCRD I DMSCIO Manage Handle DMSHDS DMSITS Set up and display to Handle SVC screen interrupts I-- DIAGNOSE Read an unloaded PDS from tape and place it in a [IIIACLIB handle user· defined SVC interrupts DMSITI Handle 110 interrupts DMSSMN Allocate and release user storage upon request by OSGETMAINI FREEMAN macros DMSHDI t-- Set up and handle userdefined 110 in1errupts I DMSCRD DMSPNT DMSITE Set the read Read a or write line of pointer for a fHetoa given file item console input Handle external interrupts I DMSCWR DMSITP Write a line to the console Handle program check interrupts figure 40. Details of e"s System functions and the Routines That Perform Them (Part 3 of 4) 158 IB" V"/370: System Logic and Problem Deter.ination Guide CD. 0 I Simulate Non-CMS Operating Environments r Perform Miscellaneous CMS Functions 1 1 r I DMSBTB Provide Access Method Support 1 Simulate OS Functions DMSFLD Support OSAM Interpret OS JC L parameters for use by CMS I DMSSBS Support BSAM and BPAM I Load the CMS Batch Virtual Machine I DMSDBG DMSGND DMSABN Perform DEBUG functions Generate an auxiliary directory Handle abnormal termination 1 1 DMSBTP Perform batch processing functions -~ I 1 1 DMSOVR DMSASD DMSERR Load the SVCTRACE module, DMSOVS Provide an auxiliary directory Generate error messages -I 1 1 DMSOVS DMSLAD DMSSVT, DMSSOP, DMSSCT, DMSSMN, DMSSVN, DMSSLN, DMSSAB Perform SVCTRACE functions Include an auxiliary directory on the FST chain Simulate OS macros I DMSSBD DMSSEB Support BDAM Perform I/O functions for OS 1 Simulate DOS Functions I DMSSOS I 1 I 1 DMSVIB DMSROS Load the CMS/VSAM shared system for OS VSAM programs Allow CMS to ACCESS,STATE, READ, NOTE, and BACKSPAC on OS disks Initialize DOS and Process DOS System Control Commands Process DOS I/O Functions I I Process DOS Execution Related Functions I 1 I Provide DOSSVC Simulation Process DOS Service Commands I I Terminate the DOS Environment 1 I DMSVIP DMSLDS DMSSET DMSBOP DMSDLK DMSDOS DMSSRV DMSBAB Interface with VSAM programs to perform VSAM functions for OS VSAM programs List information about OS data sets Initialize the CMS/DOS environment Simulate the DOS/VS OPEN function Link·edit DOS/VS phases in storage Handle all CMS/DOS SVC requests Copy books from a source statement library to an output device Pass control to an abnormal termination routine via STXIT AS macro I I I DMSOPT DMSOR1, DMSOR2 DMSOR3 DMSFET, DMSFCH DMSRRV DMSITP Load a phase; begin program execution Copy modules from a relocatable I ibrary to an output device Process program interrupts and SPI E exits I DMSVSR Reset fields set during VSAM processing and purge the CMS/ VSAM DCSS Set compiler options Locate a specified file DMSASN DMSOPL 1 DMSAMS Support VSAM Access Method Services 1 Associate system or programmer logical units with physical units Access a source statement library for a DOS/VS compiler 1 1 DMSPRV DMSDMP Copy procedures from a procedure library to an output device Simulate $$DUMP and $$PDUMP; issue CP DUMP DIAGNOSE 1 DMSLLU DMSCLS DMSDSV List assignments of logical units Simulate the DOS/VS CLOSE function List the directories of libraries I DMSDLB DMSDSL Ass·ociate a DTF table filename with a logical unit Delete, compress, I ist phases of a DOSLIB library Figure 40. Details of eMS System Functions and the Routines That Perform Them (Part 4 of 4) section 2. Method of Operation and program OrganiZation 159 INTRODUCTION TO CMS This introduction contains brief descriptions of the concepts on which CMS operates, for example, how the CMS file system is organized. This introduction also contains descriptions of logic flow for significant routines, for example, the logic executed when the CMS command handler, DMSITS, is invoked. The following CMS information is organized into topics that correspond to the functional areas described in the previous charts. INITIALIZE THE CMS VIRTUAL MACHINE ENVIRONMENT There are four steps CMS virtual machine: Once written on the DASD, a copy of the nucleus is read into virtual machine storage. One track at a time is read from the disk-resident nucleus into virtual storage. DMSINS is then invoked to initialize storage constants and to set up the disks and storage space required by this virtual machine. DMSINS performs three general functions: • Initializes tables. • Processes IPL and BATCH). • Initializes for os SVC processing, in the case where a saved segment is not available for use in processing os simulation req.uests. storage constants command line and system parameters (SEG= involved in initializing a • processing the IPL command for a virtual card reader. • processing the IPL command for a disk device or a named or saved system. • processing the first command the CMS virtual console. • setting up the options for machine operating environment. line entered at the virtual DMSINS ---Saves the address of BUCON. this virtual machine in DMSLAD ---~~~ates and returns the address of for this virtual machine. the ADT DMSINI and DMSINS are the two routines that are mainly responsible for the one-time initialization process in which the virtual card reader is initial program loaded. DMSIBI also handles the IPL process when a named or saved system is loaded. The CMS command interpreter, DMSINT, processes the first line entered from the console as a special case; the processing performed by this code is a part of the initialization process. DMSSET sets up the user-specified virtual machine environment features; DMSQRY allows the user to query the status of these settings. DMSACM ---Reads the S-disk SSTAT. INITIALIZATION: LOADING A FROM CARD READER DMSFRE ---Releases the low free storage allocated above (to force SSTAT into high storage) so that it can be used again. CMS VIRTUAL MACHINE When a virtual card reader is specified by the IPL command, for example OOC, initialization processing begins. Initialization refers to the process of loading from a card reader as opposed to reading a nucleus from a cylinder of a CMS minidisk or reading a named or shared system (description follows) • IPL OOC invokes the CMS module DMSINI, which requests that the operator enter information such as the address of the DASD where the nucleus is to be written, the cylinder address where the write operation is to begin, and which version of CMS is to be written (if there is more than one to choose from). When all questions are answered, the requested nucleus is written to the DASD. Figure 41 shows the structure of the CMS nucleus. 160 DMSFRE ---illocates free initialization. storage to be used during DMSFRE ---illocates all low free storage so that the system status table (SSTAT) will be built in high free storage. ADT entry and builds DMSINS ---stores the address of SSTAT into ADTFDA in NUCON. the ASSTAT and R!12!1!! Sorts the entries in the SSTAT. DMSINS ---Checks for parameters BATCH and SEG=. If BATCH is specified, DMSINS sets the flag BATFLAGS. If SEG= is specified, DMSINS loops through again to read the segment name. At this point, all the parameters on the command line have been scanned. IBM VM/370: system Logic and Problem Determination Guide CONTROL BLOCKS INFREESTORAGE----------~ END OF STORAGE VIRTUAL STORAGE -r------------------. System Loader Table (Size determined by SET LDRTBLS command) Storage Key = X'F' FREEUPPR----~r_------------------------._----- DMSFREE requests when no more low storage available FREELOWE - - - 1 - - - . - - - - - - - -- BBG BBG Unused portion of User Program Area DMSNUC MAINHIGH ---+--G --ETMA: MAINSTRT-----t-- - - requ:t~ - --- - - - Storage Key = X'E' X'3000' - X'2ADS' ~t:a~ _L ~y~ ~~ X'2A40' X'29BO' X'2800' The User's Program (program is loaded via the LOAD command) X'235O' X'2300' X'20000'~------------S-to-r-a~ge-K-e~y-=-X-'-E_i' CMS Nucleus In "saved systems" this area is a protected segment (that is, a" code must be reentrant and cannot be modified) X'219O' X'lDDO' FVS X'lADS' X'l 0000 -11-------------------------'''----'------1 Transient Program Area DIOSECT X'19ES' SVCSECT X'174S' X'EOOO'-It------------------' Low Storage DMSFREE Free Storage Area DMSFREE requests are filled from this area. The upper part of this area contains the System Disk MFD followed by the FREETAB, if there is enough room. X'3000'-+----------S-t-or-a~g-e-K-e~y-=-X-'E-'-o-r-X-'-F_' DMSNUC System Control Blocks, flags, constants, and pointers. X'16BO' X'1620' X'1550' X'1200' X'DFO' X'C90' X'O' - - - - - - - - - - - - - - - - - - - - *The half-page containing OPSECT and TSOBLOKS has a storage key = X'E' Figure 41. X'700' X'600' X'2EO' eMS Storage Map section 2. Method of Operation and Program Organization 161 If SEG= is specified, the DIAGNOSE 64 FINDSYS function is issued to determine whether the segment specified on the command line exists. If it does, the DCSSAVAL flag is temporarily set. !B.t~!.!H! DMSSTT ---pInds and returns the CMS OS SVC-handler. !H!1iI!Ul Acquires DMSSVT. Issues DIAGNCSE 24 to of the console. enough free address of DMSSVT, the storage to contain obtain the device type DM5LOA ---Loads DMSSVT. DMSCWR ---wrItes the system id message to the console. !2!2~11Hi Sets the flag DCSSVTLD. DMSCRD ---Reads the IPL command line from the console. DMSSCN ---Puts 3 the IPL command line in PLIST format. DMSINS ---If-the FINDSYS DIAGNOSE validated the segment name specified on the IPL command line, DMSINS issues a DIAGNOSE 64 SAVESYS function for that segment. DMSINS Clears DCSSAVAL and ensures that all the parameters on the command line are valid; branches back to label INITLOOP to reprocess for the segment just saved. DM SINS ---1£- the BATCH virtual machine is not being IPLed, determines whether there is a PROFILE EXEC or a first command line to be handled. If so, issues SVC 202's to process these commands and passes control to DMSINT, the CMS console manager. DMSACC ---ii-the BATCH virtual machine is being initial program loaded, accesses the D-disk and passes control to DMSINT, the console manager. DMSINS ---1£- BATCH is specified, sets BATFLAGS BATFLAG2 in NUCON. Saves the name of BATCH saved system in SYSNAME in NUCON. DMSACC ---Issues ACCESS 195 A to virtual machine A-disk. access the and the batch DMSINS ---Issues DIAGNOSE 60 to get the size of the virtual machine; sets up enough storage.for this virtual machine. DMSINS ---if-the DCSSAVAL flag is set, sees if the size of the CMSSEG segment overlaps the size of the virtual machine. If this is the case, DMSINS sets the flag DCSSOVLP and continues the initialization procedure for a CMS virtual machine running without the use of the CMSSEG segment, that is, performs time-of-day processing and 05 initialization. A named system is a copy of the nucleus that has been saved and named with the CP 5AVESYS command. It is faster to IPL a named system than to IPL by disk address because CP maintains the named system in page format instead of CMS disk format. That is, the saved system is on disk in 4096-byte blocks instead of aOO-byte blocks. The initialization of a saved system is also faster because the SSTAT is already built. The shared system is a variant of the saved system. In the shared system, reentl:ant portions of the nucleus are placed in storage pages that are available to all users of the shared system. Each user has his own copy of nonreentrant portions of the nucleus. The shared pages are protected by CP, and may not be altered by any virtual machine. If the CMSSEG segment can be used, DMSINS issues the DIAGNOSE 64 LOADSYS function as the final check to see if the segment is usable. If the segment is loaded successfully, it can be used whenever one of the functions contained in it is requested. Because it is not required immediately, DMSINS issues the DIAGNOSE 64 PURGESYS function to purge the segment. During DMSINI processing v the virtual machine operator is asked if the nucleus must be written (via message DMSINI607R). If the operator answers no, control passes directly to DMSINS to initialize the named or saved system specified by the operator in his answer to message DMSINI606R. If the segment cannot be successfully loaded, DMSINS turns off the DCSSAVAL flag. HANDLE THE FIRST COMMAND LINE PASSED TO CMS DMSIN5 ---Checks for the availability of CMSSEG. 162 INITIALIZING A NAMED OR SAVED SYSTEM DMSINT, the CMS console manager, contains the code to handle commands stacked by module DMSINS during initialization processing. DMSINT checks for the presence of a stacked command line, and if there is one to process, processes it just as it would a command entered during a terminal session. That is, DMSINT calls the WAITREAD IBM VM/370: System Logic and Problem Determination Guide subroutine and issues an SVC 202 to execute the command. When first command processing completes, DMSINT receives control to handle commands entered at the console for the duration of the session. SETTING AND QUERYING VIRTUAL MACHINE ENVIRONMENT OPTIONS DMSSET sets up the virtual machine environment options, as outlined in the publication !~LJIQ: CMS Command and Macro R~!~~~B£~. DMSQRY aisplays--these-settings--at the user console. Both of these modules are structured and relatively easy to follow, except for some sections of DMSSET. whether the segment storage. overlays virtual machine DMSSET ---If-the segment can be used (i.e. does not overlay the virtual machine storage) the DIAGNOSE 64 LOADSYS function is performed. If the LOADSYS executes successfully, control passes to DMSINT, where the segment is purged (because it is only needed on demand) • PROCESS AND EXECUTE CMS FILES As shown in Part 1 of Figure 40, the five general topics form the category "Process and Execute CMS Files." Two of these topics are discussed in this section: "Maintaining an Interactive Console Environment" and "Loading and Executing TEXT files." MAINTAINING AN INTERACTIVE CONSOLE ENVIRONMENT DMSSET ---Clabel DOS) If a disk mode is specified on the command line, ensure that it is valid. DMSLAD ---I~the disk mode specified is valid, locates and returns the address of the disk. DMSSET ---Issues DIAGNOSE 64 FINDSYS to locate the CMSDOS segment. If the segment is not already loaded, issues DIAGNOSE 64 LOADSYS to load it. DMSSET ---Sets up the SSB-transient area for use by DOS routines. DMSSET ---ii-SET DOS OFF has been specified, issues the DIAGNOSE 64 PURGESYS function for the CMSDOS segment and, if VSAM has been loaded, for the CMSVSAM segment. Two levels of information are discussed in the following section. The first level is a general discussion of how CMS maintains an interactive console environment. The second- level is a more detailed discussion of the methods of operation mainly responsible for this' function. CONSOLE MANAGEMENT AND COMMAND HANDLING IN CMS There are two major functions concerned with maintaining an interactive terminal environment for CMS: console management and command processing. The CMS module that manages the virtual machine console is DMSINT. The module responsible for command processing is DMSITS. Many CMS modules are called in support of these two functions but the modules in the following list are primarily responsible for supporting the functions: DMSCRD ---Reads a line from the console. DMSCWR ---wiItes a line to the console. DMSSET ---Determines whether the name segment is being changed. DMSSCN ---converts a command line to PLIST format. of the CMSSEG DMSSET ---Determines whether NONSHARE is specified. If so, the segment may be loaded and kept. If RONSHARE is not specified, the segment is purged, because it is needed only on demand. IHHH21!I Once a new name is placed in the SYSRAMES table replacing CMSSEG, the DIAGNOSE 64 FINDSYS function is issued to determine whether the new name has been entered correctly. If the FINDSYS is successful, the size of the virtual machine is compared to beginning address of the segment to determine DMSIRA ---coDverts abbreviated names. commands to their full DMSCPF ---Passes a command line to CP for execution. MAINTAINING SESSION AN IRTERACTIVE COMMAND/RESPONSE Three main lines of control maintain the continuity for an interactive CMS session: (1) handling of commands passed to DMSINT by the Section 2. Method of Operation and Program Organization 163 initialization module, DMSINS (2) handling of commands entered at the console during a session, and (3) handling of commands entered as subset commands. The following lists show the main logic paths for first two functions. Q~~~£] Converts the command line (subroutine waitread) • to PLIST format Q~'§!!!l Determines whether the command line is a null line or a comment. DMSLFS ---ii-the command line is neither a command line nor a comment, determines whether the command is an EXEC file. DMSINT ---on-entry from DMSINA, processes any commands passed via the console read put on the user's console by that routine; that is processes any commands the user stacks on the line as the first read that DMSINT processes. In handling the first read, if that read is null, control passes to the main loop of the program, which is described in the following section. Q~'§!!!! (AJHHUt!) Determines whether the command is an abbreviation and, if it is, returns its full name. DM SITS ---Passes the command line to DMSITS via an SVC 202. DMSITS is the CMS SVC handler. For a detailed description of the SVC handler, see "Method of Operation for DMSITS." DMSINM ---Get the current time. DMSCRD ---Branch to the waitread subroutine to command line at the console. read a DMSSCN ---wiItread then calls DMSSCN to convert the line just read into plist format. Once converted to plist format, an SVC 202 is issued (at label INIT1A) to execute the function. This cycle is repeated until all stacked commands are executed. DMSCPF ---ii-the command could not be executed by the SVC handler, passes the command to CP to see if CP can execute it. DMSFNS ---on-return from processing the command line (label UPDAT) , closes any files that may have been opened during processing. Q~'§'§~] Resets any flags or fields that may have been set during OS processing. DMSFNS ---When command execution completes, calls DMSFNS (at label UPDAT) to close any files that may have remained open during the command processing. Q~'§!~!! DMSVSR ---Ensures that any fields set by VSAM processing are reset for CMS. Also ensures that the VSAM discontiguous shared segment is purged. DMSINT ---When the command line has been successfully executed, builds a CMS ready message for the user (label PRNREADY). Ensures that any fields set for VSAM processing are reset for CMS. Also ensures that the VSAM discontiguous shared segment is purged. DMSCWR ---wrItes the ready message to the console • .!HH!.!!!I Sets up an appropriate status CMS SUBSET, CMSjDOS, etc.). message (CMS, Q~'§!!l DMSCWR ---writes the status message to the console. Returns control to DMSINT at label INLOOP2 to continue monitoring the CMS terminal session. METHOD OF OPERATION FOR DMSINT DMSIBT ---irinches (from label INLOCP2) to the waitread subroutine to read a line entered at the console. DMSCRD ---Reads a line entered (subroutine waitread). 164 at the console DMSINT, the console manager, maintains the continuity of operation of the CMS command environment. The main control loop of DMSINT is initiated by a call to DMSCRD to get the next command. When the command is entered, DMSINT calls DMSINM to initialize the CPU time for the new command and then puts it in standard parameter list form by calling the scan function program DMSSCN. After calling DMSSCN, DMSINT checks to see if an EXEC filetype exists with a filename of the typed-in command. (For example, if AEC was typed in, it checks to see if ABC EXEC exists.) If the EXEC file does exist, DMSINT adjusts register 1 to point to the same IBM VM/370: System Logic and Problem Determination Guide command as set up by DMSSCN, but preceded by CLS'EXEC', and then issues an SVC 202 to call the corresponding EXEC procedure ('ABC EXEC' in the example) • If no such EXEC file exists for the first word typed in, DMSINT makes a further check using the CMS abbreviation-check routine, DMSINA. If, for example, the first word typed in had been 'E', DMSINT looks up 'E' via the tMSINA routine. If an equivalent is found for 'E', DMSINT looks for an EXEC file with the name of the equivalent word (for example, EDIT EXEC) ; if such a file is found, DMSINT adjusts register 1 as described above to call EXEC and substitutes the equivalent word, EDIT, for the first word typed in. Thus, if 'E' is a valid abbreviation for 'EDIT' and the user has an EXEC file called EDIT EXEC, he invokes this when he merely types in 'E' from the terminal. If no EXEC file is found either for the entered command name or for any equivalent found by DMSINA, DMSINT leaves the terminal command as processed by DMSSCN and then issues an SVC 202 to pass control to DMSITS which, in turn, passes control to the appropriate command program. When the command terminates execution, or if DMSITS cannot execute it, the return code is passed in register 15. A 0 return code indicates completion of the command. METHOD OF OPERATION FOR DMSITS DMSITS (INTSVC) is the CMS system SVC handling routine. Since CMS is SVC driven, the SVC interruption processor is more complex than the other interruption processors. The general operation of DMSITS is as follows: 1. The SVC new PSW (low-storage location X'60') contains, in the address field, the address of DMSITS1. Thus, the DMSITS routine is entered whenever a supervisor call is executed. 2. DMSITS allocates a system and user save area, as described below. The user save area is a register save area used by the routine, which is invoked later as a result of the SVC call. 3. The called routine is invoked. 4. Upon return from the called routine, save areas are deallocated. 5. Control routine call). the is returned to the caller (the which originally made the SVC successful A positive return code indicates that the command was completed, but with an apparent error; and a negative code returned by DMSITS indicates that the typed in command could not be found or executed at all. In the last case, DMSINT assumes that the command is a CP command and issues a DIAGNOSE instruction to pass the command line to the CP environment. If the command is not a CP command, DMSINT calls DMSCWR to type a message indicating that the command is unknown and the main control loop of DMSINT is entered at the heginning. If the return code from DMSITS is positive or zero, DMSINT saves the return code briefly and calls module DMSAUD to update the Master File Directory (MFD) on the user's appropriate user's disk. DMSINT also frees the TXTLIB chain and releases pages of storage if required. After updating the master file directory, DMSINT checks the return code that was passed tack. If the code is zero, DMSINT types a ready message and the CPU time used by the given command. Control is passed to the beginning of the main control loop of DMSINT. If the return code is positive, an error message is typed, along with the CPU time used. The command caused the typing of an error message of the format: DMSxxxnnnt 'text' where DMSxxx is the module name, nnn is the message identification number, t is the message type, and 'text' is the message explaining the error. Control is then passed to the beginning of the main control loop. The following expands upon various features of the general operation that has just been described. The types of SVC calls recognized by DMSITS, and the linkage conventions for each are as follows: E!f ~~1: When a called routine returns control to DMSITS, the user storage key may be in the PSi. Because the called routine may also have turned on the problem bit in the PSW, the most convenient way for DMSITS to restore the system PSi is to cause another interruption, rather than to attempt the privileged Load PSW instruction. DMSITS does this by issuing SVC 201, which causes a recursive entry into DMSITS. DMSITS determines if the interruption was caused by SVC 201, and if so, determines if the SVC 201 was from within DMSITS. If both conditions are met, control returns to the instruction following the SVC 201 with a PSi that has the problem bit off and the system key restored. ~!f ~~~: SVC 202 is the most commonly used SVC in the CMS system. It is used for calling nucleus resident routines and for calling routines written as commands. A typical coding sequence for an SVC 202 call is the following: LA SVC DC R1 ,PLIST 202 AL4 (ERRADD) section 2. Method of Operation and Program organization 165 Whenever SVC 202 is called, register 1 must point to a parameter list (PLIST). The format of this parameter list depends upon the actual routins or command being called, but the SVC handler examines the first 8 bytes of the list to find the name of the routine or command being called. It searches for the routine or module as described for SVC 201. ~~~~-H!!Q1~Q ~!~§: The DC AL4{address) following the SVC 202 is optional, and may be omitted if the programmer does not expect any errors to occur in the routine or command being called. DMSITS can determine whether this DC was inserted by examining the byte following the SVC call. If it is nonzero, then it is an instruction; if it is zero, then it is a "DC AL4(address)". There is no way to specify a normal or error return from a user-handled SVC routine. SVC 203: SVC 203 is used by CMS macros to perfor;-various internal system functions. SVC 203 is an SVC call for which no parameter list is provided. An examFle is DMSFREE, for which the parameters are passed in registers 0 and 1. A typical follows: SVC DC sequence for an SVC 203 call 203 H'code' The halfword decimal code following the SVC 203 indicates the specific routine being called. DMSITS examines this halfword code as follows: (1) the absolute value of the code is taken, using an LPR instruction, (2) the first byte of the result is ignored, and the second byte of the resulting halfword is an index into a branch table, (3) the address of the correct routine is loaded, and control is transferred there, as the called routine. It is possible for the address in the SVC 203 index table to be zero. In this case, the index entry contains an 8-byte routine or command name, which is processed in the same way as the 8-byte name passed in the parameter list passed to SVC 202. The sign of the halfword code indicates whether the programmer expects an error return; if so, the code is negative: if not, the code is positive. Note that the sign of the half word code has no effect on determining the routine which is to be called, because DMSITS takes the absolute value of the code to determine the called routine. Because only the second byte of the absolute value of the code is examined by DMSITS, seven bits (bits 1-7) are available as flags or for other uses. For example, DftSFREE uses these seven bits to indicate such things as conditional requests and variable requests. Therefore, DMSITS considers the codes H'3' and B'259' to be identical, and handles them the same as B'-3' and B'-259', except for error returns. When an SVC 203 is invoked, DMSITS stores the halfword code into the NUCOI location CODE203, so that the called routine can interrogate the seven bits made available to it. The programmer may use the BNDSVC macro to specify the address of a routine that processes any SVC call for SVC numbers 0 through 200 and 206 through 255. If the BNDSVC macro is used, the linkage conventions are as required by the user specified SVC-handling routine. g~ ~Af]9 SIMULATION SVC £!11~: CftS supports certain of the-SVc-calIs-generated by OS macros, by simulating the effect of these macro calls. The proper linkages are set up by the OS macro generations. DftSITS does not recognize any way to specify a normal or error return froa an OS macro simulation SVC call. ~Q~ ~!£ CALLS: All SVC functions supported for CftS/DOS are--handled hy the CftS module DMSDOS. DftSDOS receives control from DMSITS (the CMS SVC handler) when that routine intercepts a DOS SVC code and finds that the DOSSVC flag in DOSFLAGS is set in NUCON. DMSDOS acquires the specified SVC code from the OLDPSW field of the current SVC save area. Using this code, DftSDOS computes the address of the routine where the SVC is to be handled. Many CftS/DOS routines (including DftSDOS) are contained in a discontiguous shared segment (DCSS). Most SVC codes are executed within DMSDOS, but some are in separate modules external to DftSDOS. If the SVC code requested is external to DMSDOS, its address is computed using a table called DCSSTAB; if the code requested is executed within DMSDOS, the table SVCTAB is used to compute the address of the code to handle the SVC. DOS SVC calls are discussed in more detail in "Simulating a DOS Environment Under CftS" in this section. INVALID ~!~ Invalid sVc are: ~!11~: There are several types of calls recognized by DftSITS. These • Invalid SVC number. If the SYC number does not fit into any of the classes described above, it is not handled by DftSITS. An error message is displayed at the terminal, and control is returned directly to the caller. • Invalid routine name in SVC 202 parameter list. If the routine named in the svc 202 parameter list is invalid or cannot be found, then DftSITS handles the situation in the same way it handles an error return from a legitimate SVC routine. The error code is -3. • Invalid SVC 203 code. If an illegal code follows SVC 203, an error message is displayed, and the ABEND routine is called to terminate execution. When a program issues SVC 202, and passes a routine or command name in the parameter list, 166 IBM VM/370: system Logic and Problem Determination Guide DMSITS must search for the specified routine or command. (In the case of SVC 203 with a zero in the table entry for the specified index, the same logic must be applied.) macro simulation SVC handling routine, it calls LOADMOD to load the file DMSSVT module into the transient area, and lets that routine handle the SVC. The search order is as follows: A program in the transient program area may not invoke another progra. intended to execute in the transient program area, including os macro simulation SVC calls that are handled by DMSSVT. Thus, for example, a program in the transient program area may not invoke the RENAME command. In addition, it may not invoke the OS .acro iTO, which generates an SVC 35, which is handled by DMSSVT. 1. A check is made to see if there is a routine with the specified name currently in the system transient area. If so, then control is transferred there. 2. The system function name table is searched to see if a co.mand by this name is nucleus resident. If successful, control goes to the specified nucleus routine. 3. A search is made for a disk file with the specified name as the filename, and module as the filetype. The search is made in the standard disk search order. If this search is successful, then the specified module is loaded by LOADMOD and control passes to the storage location now occupied by the command. 4. If all searches so far have failed, then DMSINA (ABBREV) is called to see if the specified routine name is a valid system abbreviation for a system command or function. User-defined abbreviations and synonyms are checked at the same time. If this search is successful, then steps 2 through 4 are repeated with the full nonabbreviated name. 5. If all searches fail, then an error code of -3 is forced. There is one further functional difference between the use of the two program areas. DMSITS starts a program in the user program area so that it is enabled for all interruptions. It starts a program in the transient program area so that it is disabled for all interruptions. Thus, the individual program may have to use the SSM (Set Syste. Mask) instruction to change the current status of its system mask. Figures 42 and 43 show how the PSi and registers are set up when the called routine is entered. r--------------------------- ----, I 1 Called Type I System 1 Mask 1 Storage 1 Problem 1 1 Key 1 Bit I ---I ISVC 202 or 203 I Disabled System Off I I - Nuc residentl 1 1 1 1-----------_·_- I------------u--------------,-----I There are two areas which can hold program modules which are loaded by LOADMOD from the disk. These are called the user program area and the transient program area. The user program area starts at location Xl 20000 1 and extends upward to the loader tables. However, the high-address end of that area can be allocated as free storage by tMSFREE. Generally, all user programs and certain system commands, such as EDIT and COPYFILE, execute in the user program area. Because only one program can be executing in the user program area at one time, unless it is an overlay structure, it is impossible for one program in the user program area to invoke, by means of SVC 202, a module which is also intended to execute the user program area. The transient program area is two pages, running from location XIEOOOI to location X1100001. It provides an area for system commands that may also be invoked from the user program area by means of an SVC 202 call. For example, a program in the user program area may invoke the RENAME command, because this command is loaded into the transient program area. The transient program area also handles certain OS macro simulation SVC calls. If tMSITS cannot find the address of a supported OS ISVC 202 or 203 1 Disabled I User 1 - Transient 1 1 1 1 area MODULE I I , , Off I 1 , ---I I------------~- ,SVC 202 or 203 1 Enabled User Off 1 1 - User Area I I I 1 1------------------------1 I User-handled I Enabled I User 1 Off 1 1--------------lOS - Nuc res 1 ,Disabled System Off lOS - in DMSSVT 1 Disabled System Off 1 1 I 1 L--- Figure 42. PSi Fields Started when Called Routine is When the called routine is finished processing it returns control to DMSITS, which then must return control to the caller. RETURN LOCATION: The return is effected by loading -the-original svc old PSW (which was saved at the time DMSITS was first entered), after possibly modifying the address field. How the address field is modified depends upon the type of SVC call, and on whether the called routine indicated an error return address. section 2. Method of Operation and Program Organization 167 r---------------------------------------------------------- 1 Type 1 0 - 1 1 2 - 11 1 12 1 13 1 14 1 1---------1----1------1-----1------1-----1 1 SVC 202 1 Saae IUnpredict-1 Address 1 User I Return I 1 or 203 1 as 1 able 1 of I save 1 address 1 I 1 caller 1 able 1 called 1 area 1 to 1 1 1 1 1 routine 1 1 DMSITS 1 1--------------------------------1 1 1 1 other 1 I 1 1 Same as caller 1 1 1 1 Same as caller 1 1 1 1 Address of called routine 1 1 1 1 User save area L--- Figure 43. Register Contents when Called Routine is Started For SVC 202 and 203, the called routine indicates a normal return by means of a zero returned in register 15, and an error return by means of a nonzero in register 15. If the called routine indicates a normal return, then DMSITS makes a normal return to the caller. If the called routine indicates an error return, then DMSITS returns to the caller's error return address, if one was specified, and abnormally terminates if none was specified. For SVC 202 not followed by "DC AL4(address)", a normal return is made to the instruction following the SVC instruction, and an error return causes an abnormal termination. For SVC 202 followed by "DC AL4~ddress)", a normal return is made to the instruction following the DC, and an error return is made to the address specified in the DC. In either case, register 15 contains the return code passed by the called routine. For SVC 203 with a positive halfword code, a normal return is made to the instruction following the halfword code, and an error return causes an abnormally terminates. For SVC 203 with a negative halfword code, both normal and error returns are made to the instruction following the halfword code. In any case, register 15 contains the return code passed back by the called routine. For OS macro simulation SVC calls, and for user-handled SVC calls, no error return is recognized by DKSITS. As a result, DMSITS always returns to the caller by loading the SVC old PSW that was saved when DMSITS was first entered. ~~~!~1~~ ~~~1g~j!!g~: Upon entry to DKSITS, all registers are saved as they were when the SVC instruction was first executed. Upon exiting from DHSITS, all registers are restored to the values that were saved at entry. The exception to this is register 15 for SVC 202 and 203. Upon return to the caller, register 15 contains the value that was in register 15 when the called routine returned to DHSITS after it had completed processing. Whenever an SVC call is made, DKSITS allocates two save areas for that particular SVC call. 168 Return address to DMSITS '-------, 15 Address of called routine Same as caller 1 1 1 1 I 1 1 I 1 1 1 --------------1 DMSITS uses the system save area (DSECT SSAVE) to save the value of the SVC old PSW at the time of the SVC call, the caller's registers at the time of the call, and any other necessary control information. Since SVC calls can be nested, there can be several of these save areas at one time. The system save area is allocated in protected free storage. The user save area contains (DSECT EXTUAREA) 12 doublewords (24 fullwords), allocated in unprotected free storage. DMSITS does not use this area at all, but simply passes to the called routine a pointer to this area in register 13. Thus, the called routine can use this area as a temporary work area, or as a register save area. There is one user save area for each system save area, and the latter contains a pointer to the former in the USAVEPTR field. The CMS leader consists of a nucleus resident loader (DMSLDR), a file and message handler program (DMSLIO), a library search program (DMSLIE), and other SUbroutine programs. DMSLDR starts loading at the user first location (AUSRAREA) specified in BUCON or at a user specified location. When performing an INCLUDE function, loading resumes at the next available location after the previous LOAD, INCLUDE, or LOADKOD. The loader reads in the entire user's program, which consists of one or more control sections, each defined by a type 0 ESD record ("card"). Each control section contains a type 1 ESD card for each entry point and may contain other control cards. Once the user's program is in storage, the loader begins to search his files for library subprograms called by the program. The loader reads the library subprograms into storage, relocating and linking them as required. To relocate programs, the loader analyzes information on the SLC, ICS, ESD, TXT, and REP cards. To establish linkages, it operates on ESD, and RLD cards. Information for end-of-load transfer of control is provided by the END and LDT cards, the ENTRY control card, START command, or RESET option. The leader also analyzes the options specified on the LOAD and INCLUDE commands. In response to specified options, the loader can: IBM VH/370: system Logic and Problem Determination Guide • Set the load area to (CLEAR option). • Load the program at (ORIGIN option). a • Suppress creation of disk (NOMAP option) • the • Suppress the printing of invalid card images in the load map (NOINvoption). • Suppress the printing of REP card the load map (NOREP option). • LOad program into TRANS option) • zeros before specified loading loca tion load-map file "transient area" on images in Suppress TXTLIB search (NOLIBE option). • suppress text file search (NOAUTO option). • Execute the loaded program (START option). • Type the load map, specified. • Set the program entry point (RESET option). TYPE option En!.!:I The routine is entered at the first instruction when it receives control from the initial and resume loading routine. It is entered at ORG2 whenever a loader routine requires the current address of a symbolic location specified on an SLC card. Q£~~2!!Q!! This routine determines which of following situations exists, and takes indicated action: the the 1. The SLC card does not contain an address or a symbolic name. The SLC card routine branches, via BADCRD in the reference table search routine, to the disk and type output routine (DMSLIO), which generates an error message. 2. The SLC card contains an address only. The SLC card routine sets the location to that address and counter (LOCCT) returns to RD, in the initial and resume loading routine, to read another card. 3. The SLC card contains a name only, and there is a reference table entry for that name. The SLC card routine sets LOCCT to the current address of that name (at ORG2) and returns to the initial and resume loading routine to get another card. 4. The SLC card contains a name only, and there is no reference table entry for that name. The SLC card routine branches via ERRSLC to the Disk and Type Output routine (DMSLIO), which generates an error message for that name. 5. The SLC card contains both an address and a name. If there is a REFTBL entry for the name, the sum of the current address of the name and the address specified on the SLC card is. placed in LQCCTi control returns to the initial and resume loading routine to get another card. If there is no REFTBL entry for the name, the SLC card routine branches via ERRSLC to the Disk and Type Output routine, which generates an error message for the name. was During its operation, the loader uses a loader table (REPTBL), and external symbol identification table (ESIDTB), and a location counter (LOCCNT). The loader table contains the names of control sections and entry points, their current location, and the relocation factor. (The relocation factor is the difference between the compiler-assigned address of a control section and the address of the storage location where it is actually loaded.) The ESIDTB contains pointers to the entries in REPTBL for the control section currently being processed by the loader. The loader uses the location counter to determine where the control section is to be loaded. Initially, the loader obtains from the nucleus constant area the address (LOCCNT) of the next location at which to start loading. This value is subsequently incremented by the length indicated on an ESD (typeO), END, or ICS card, or it may be reset by an SLC card. The loader contains a distinct routine for each type of input card. These routines perform calculations using information contained in the nucleus constant area, the location counter, the ESIDTB, the loader table, and the input cards. Other loader routines perform initialization, read cards into storage, handle error conditions, provide disk and typewritten output, search libraries, convert hexadecimal characters to binary, proce~s end-of-file conditions, and begin execution of programs in core. Following are descriptions subprocessors with LDR. the (ORIGIN • if the card, or to the address assigned (in REPTBL) to a specified symbolic name. of the individual Punction ---ThIs- routine sets the location counter (LOCCT) to the address specified on an SLC Function ---ThIs-routine establishes a reference table entry for the control-segment name on the ICS card if no entry for that name exists, adjusts the location counter to a fullword boundary, if necessary, and adds the card-specified control-segment length to the location counter if necessary. !H!!.!:I This routine has one entry point, named C2AE1. The routine is entered fro. the Section 2. Method of operation and Program organization 169 initial and resume loading routine when it finds an ICS card. control section. To do this, the routine links to the REFTBL search routine. The ESD type 0 card routine's subsequent operation depends on whether there already is a REFTBL entry for this control section. If there is such an entry, processing continues with operation 5, below; if there is not, the REFTBL search routine places the name of this control section in REFTBL, and processing continues with operation 3. QE~~~!~2~ 1. The routin~ begins its operation with a test of card type. If the card being processed is not an ICS card, the routine branches to the ESD card analysis routine; otherwise, processing continues in this routine. 2. The routine tests for a hexadecimal address on the ICS card. If an address is present, the routine links to the DMSLSBA subroutine to convert the address to binary, otherwise the routine branches via BADCRD to the disk and type output routine (DMSLIO). 3. The routine next links to the REFTBL search routine, which determines whether there is a reference table entry for the card-specified control-segment name. If such an entry is found, the REFTBL search routine branches to the initial and resume loading routine; otherwise, the REFTBL search routine places the control-segment name in the reference table, and processing continues. 4. The routine determines whether the card-specified control-segment length is zero or greater than zero. If the length is zero, the routine places the current location counter value in the reference table entry as the control segment's starting address (ORG2), and branches to the initial and resume loading routine. If the length is greater than zero, the routine sets the current location counter value at a fullword boundary address. The routine then places this adjusted current location counter value in the reference table entry, adjusts the location counter by adding the specified control-segment length to it, and branches to RD in the initial and resume loading routine to get another card. Function ---ThIs-routine creates loader table and ESID table entries for the card-specified control section. ~~!~~ This routine has one entry point, location C3AA3. The routine is entered from the ESD card analysis routine. QE~~~!iQ~ 1. If this is the first section definition, its ESDID is proved. 3. The routine obtains the control section length operation 4. 4. The routine links to location C2AJl in the ICS card routine and returns to C3AD4 to obtain the current storage address of the control section from the REFTBL entry, inserts the REFTBL entry position (N where this is the Nth REFTBL entry) in the card-specified ESID table location, and calculates the difference between the current (relocated) address of the control section and its card-specified (assembled) address. This difference is the relocation factor; it is placed in the REFTBL entry for this control section. If previous ESD's have been waiting for this CSECT, a branch is taken to SDDEF, where the waiting elements are processed. A flag is set in the REFTBL entry to indicate a section definition. 5. REFTBL is found in the The entry examined to determine whether it had been defined by a COMMON. If so, it is converted from a COMMON to a CSECT and performs operation 3. 6. If the entry had previously by an ESD continues at 3. 7. If the entry had been defined previously as other than COMMON, DMSLIO is called via ERRORM to print a warning message, "DUPLICATE IDENTIFIER". The entry in the ESID table is set negative so that the CSECT will be skipped (that is, not loaded) by the TXT and RLD processing routines. 170 This routine first determines whether a loader table (REFTBL) entry has already been established for the card-specified not been defined type 0, processing Function ---ThIs-routine establishes a loader table entry for the entry point specified on the ESD card, unless such an entry already exists. ~~!~I This routine is entered from analysis routine. QR~~~!iQ~ 1. 2. card-specified and performs the ESD card Branches and links to REFADR to find loader table entry for first section definition of the text deck saved by the ESD 0 routine. IBft VM/370: System Logic and Problem Determination Guide 2. 3. 4. 5. The routine then adds the relocation factor and the address of the ESD found in operation 1 or the address in LOCCNT if an ESD has not yet been encountered. The sum is the current storage address of the entry point. card-specified external name. If none is found, the REPTBL search routine sets the undefined flag for the new loader table entry. 2. The routine links to the REFTBL search routine to find whether there is already a REFTBL entry for the card-specified entry point name. If such an entry exists, the routine performs operation 4. If there is no entry, the routine performs operation 5. Upon finding a REFTBL entry that has been previously defined for the card-specified name, the routine then compares the REFTBL-specified current storage address with the address computed in operation 2. If the addresses are different, the routine branches and links to the DMSLIO routine (duplicate symbol warning);. if the addresses are the same, the routine branches to location RD in the initial and resume loading routine to read another card. Otherwise, it is assumed that the REFTBL entry was created as a result of previously encountered external references to the entry. The DMSLSBC routine is called to resolve the previous external references and adjust the REFTBL entry. The entry point name and address are printed by calling DMSLIO. The routine resets a possible WEAK EXTRB flag. The routine next places the REPTBL entry's position-key in the ESID table. If the entry has already been defined by means of an ESD type 0, 1, 5, or 6, processing continues at operation 4. Otherwise, it continues at operation 3. 3. The relocated RELPAC entry REPTBL entry. address is placed in the external in the name's 4. The ESD type 2 card routine then determines (at location ESDOO) whether there is another entry on the ESD card. If there is another entry, the routine branches to location CA3Al in the ESD card analysis routine for further processing of this card; otherwise, the routine branches to location RD in the initial and resume loading routine. Exits ---This routine exits to location CA3A1 in the ESD card analysis routine if there is another entry on the ESD card being processed, and exits to location RD in the initial and resume loading routine if the ESD card requires no further processing. If there is no REPTBL entry for the card-specified entry point name, the routine makes such an entry and branches to the DMSLIO routine. Function ---ihIs-routine makes loader table entries for private code CSECT. and ESIDTAB Q:E~!~.:U.Q'!! The ESD Type 4 Card Routine: Punction ---ThIs-routine creates the proper ESID table entry for the card-specified external name and places the name's assigned address (ORG2) in the reference table relocation factor for that name. £!!L!:!:I This routine has two entry points: location C3AHl and location ESDOO. Location C3AHl is entered from the ESD card analysis routine; this occurs when an ESD type 2 card is being processed. Location ESDOO is entered from: • The ESD card analysis routine, when the card being processed is an ESD type 2, and an absolute loading process is indicated. • The ESD type 0 card routine and ESD type 1 card routine, as the last operation in each of these routines. .Q.E~!~:!:.!2!! 1. 1. The routine LDRSYM is called to generate a unique character string number of the form 00000001, which is left in the external data area NXTSYM; it is greater in value than previously generated symbol. 2. The CSECT is then processed as a normal type 0 ESD with the above assigned name. Function ---ihIs- routine creates reference table ESIDTAB entries for common pseudo-register ESDs. and and Q:E~!~!.!.Q'!! The ESD type 5 and 6 card routine: When this routine is entered at location C3AH1, it first links to the REPTBL search routine to determine whether there is a REFTBL entry for the 1. Links to ESIDINC in the ESD type routine, to update the number of entries. 0 card ESIDTB section 2. Method of Operation and Program Organization 171 2. Links to the REFTBL search routine to determine whether a reference table (REFTBL) entry has already been created. If there is no entry, the RBFTBL search routine places the name of the item in the REFTBL. 3. If the ESIDTB entry was negative, this is a duplicate to CSECT and processing branches to RD. Otherwise, the routine links to the REFADR routine to obtain the relocation factor of the current control segllent. 3. If the REFTBL search routine had to create an entry for the item, the ESD type 5 and 6 card routine indexes it in the ESIDTB, enters the length and alignment in the entry, indicates whether it is a PR or common, and branches to ESDOO in the ESD type 2 card routine to determine whether the card contains additional ESD's to be processed. If the entry is a PR, the BSD type 5 and 6 card routine enters its displacement and length in the REFTBL before branching to BSDOO. 4. The routine then adds the relocation factor (0, if the loading process is absolute) and the card-specified storage address. The result is the address at which the text must be stored. This routine also determines whether the address is such that the text, when loaded starting at that address, overlays the loader or the reference table. If a loader overlay or a reference table overlay is found, the routine branches to the LDRIO routine. If neither condition is detected, the routine proceeds with address inspection. 5. The routine then determines whether an address has already been saved for possible use as the end-of-10ad branch address. If an address has been saved, the routine performs operation 7; if not, the routine performs operation 6. 6. The routine determines whether the text address is below location 128. If the address is below location 128, it should not be saved for use as a possible end-of-10ad branch address, and the routine performs operation 7; otherwise the routine saves the address and then performs operation 7. 7. The routine then stores the text at the address specified (absolute or relocated) and branches to location RD in the initial and resume loading routine to read another card. 4. If the REFTBL already contained an entry, the ESD type 5 and 6 card routine indexes it in the BSIDTB, checks alignment and branches to ESDOO. Note: The PR alignment is coded and placed into the-REFTBL. It is an error to encounter more restrictive alignment PR than previously defined. A blank alignment factor is translated to full word alignment. The WEAK EXTRN routine calls the search routine to find the BXTRB name in the loader table. If not found, set the WEAK EXTRN flag in the new loader table entry. Bxit to BSDOO. Function ---This- routine has two functions: address inspection and placing text in storage. Exits ---The routine follows: to two locations, as 1. The routine exits to location RD in the initial and resume loading routine if it is being used to process a TXT card. 2. The routine exits to location APRIL in the REP card routine if it is being used for REP card address inspection. ~!!:t.!:I This routine has three entry points: location C4AA1, which is entered from the ESD card analysis routine, and locations REPENT and APR1, which are entered from the REP card routine for address inspection • exits .QEg!:~!i2!! 1. 2. 172 This routine begins its operation with a test of card type. If the card being processed is not a TXT card, the routine branches to the RBP card routine; otherwise, processing continues in this routine. The routine then determines how many bytes of text are to be placed in storage, and finds whether the loading process is absolute or relocating. If the loading process is absolute, the routine performs operation 4, below; if relocating, the routine performs operation 3. Function ---ThIs- routine storage. places text corrections in £!!!:!:!:I This routine has one entry point, location C4AA3. The routine is entered froll the TXT card routine. .Q£g!:~:!:!2!! 1. This routine begins its operation with a test of card type. If the card being processed is not a REP card, the routine branches to the RLD card routine; IBM VM/370: System Logic and Problem Determination Guide otherwise, processing continues routine. 2. 3. 4. 5. 6. 7. in this The routine then links to the HEIB conversion routine to convert the REP card-specified correction address from hexadecimal to binary. ]~!~~ This routine has two C5AA1 and PASSTWO. Q~~~g!!2n 1. The routine then links to the HEIB conversion routine again to convert the REP card-specified ESID from hexadecimal to binary. The routine then determines whether the 2-byte correction being processed is the first such correction on the REP card. If it is the first correction, the routine performs operation 5; otherwise, the routine performs operation 6. When the routine is processing the first cOrrection, it links to location REPENT in the TXT card routine, where the REP card-specified correction address is inspected for loader overlay and for end-of-load branch address saving; in addition, if the loading process is relocating, the relocated address is calculated and checked for reference table overlay. The routine then performs operation 7. When the correction being processed is not the first such correction on the REP card, the routine branches to location APR1 in the TIT card routine for address inspection. The routine then links to the HEXB conversion routine to convert the correction from hexadecimal to binary, places the correction in storage at the absolute (card-specified) or relocated address, and determines whether there is another correction entry on the REP card. If there is another entry, the routine repeats its processing from operation 4, above; otherwise, the routine branches to location RD in the initial and resume loading routine. Location C5AA1 writes each RLD card into a work file (DMSLDR CMSUT1). Exit to RD to process the next card. Location PASSTWO reads an RLD card from the work file. At EOF got to C6AB6 to finish this file. 2. The routine uses the relocation header (RH ESID) on the card to obtain the current address (absolute or relocated) of the symbol referred to by the RLD card. This address is found in the relocation factor section of the proper reference table entry. If the RB ESID is 0, the routine branches to the LDRIO routine (invalid ESD). 3. The routine uses the position header (PH ESID) on the card to obtain the relocation factor of the control segment in which the DEFINE CONSTANT assembler instruction occurred. If the PH ESID is 0, the routine branches to BADCRD in the REFTBL search routine (invalid ESID). If the ESIDTAB entry is negative (duplicate CSECT), the RLD entry is skipped. 4. The routine next decrements the card-specified byte count by 4 and tests it for O. If the count is now 0, the routine branches to location RD in the initial and resume loading routine; otherwise, processing continues in this routine. 5. The routine determines the length, in bytes, of the address constant referred to in the RLD card. This length is specified on the RLD card. 6. The routine then adds the relocation factor obtained in operation 3 (relocation factor of the control segment in which the current address of the symbol must be stored), and the card-specified address. The sum is the current address of the location at which the symbol address must be stored. 7. The routine then computes the arithmetic value (symbol address or expression value) that must be placed in storage at the address calculated in operation 6, above, and places that value at the indicated address. If the value is undefined, the routine branches to location DMSLSBB, where the constant is added to a string of constants that are to be defined later. 8. The routine again decrements the byte count of information on the RLD card and tests the result for zero. If the result is zero, go to operation 2; otherwise, processing continues in this routine. Exits ---when all the REP-card corrections have been processed, this routine exits to location RD in the initial and resume loading routine. Function ---ThIs-routine processes RLD cards, which are produced by the assembler when it encounters address constants within the program being assembled. This routine places the current storage address (absolute or relocated) of a given defined symbol or expression into the storage location indicated by the assembler. The routine must calculate the proper value of the defined symbol or expression and the proper address at which to store that value. entry points, locations section 2. Method of Operation and Program Organization 173 9. The routine next checks the continuation flag, a part of the data placed on the RLD card by the assembler. If the flag is on, the routine repeats its processing for a new address only; the processing is repeated from operation ~. If the flag is off, the routine repeats its processing for a new symbol; the processing is repeated from operation 2. Exits ---This routine exits to location RD in initial and resume loading routine. Exits ---This routine exits to the location specified in a general register. This may be either of two locations: 1. Location RD in the initial and resume loading routine. This exit occurs when the END card routine is processing an END card. 2. The location in the LDT card routine that is specified by that routine's linkage to the END card routine. This exit occurs when the LDT card routine entered this routine to clear the ESID table and set the absolute load flag on. the Function ---ThIs-routine saves the END card address under certain circumstances, and initializes the loader to load another control segment. ~B!fl This routine has one entry point, location C6AA1. The routine is entered from the RLD card routine. Function ---ThIs-routine handles the control cards. ENTRY and LIBRARY ~B!fl This routine has one entry point, location CTLCRD1. The routine is entered from the tDT card routine. 1. This routine begins test of card type. processed is not routine branches routine; otherwise, in this routine. its operation with a If the card being an END card, the to the LDT card processing continues 2. The routine then determines whether the END card contains an address. If the card contains no address, the routine performs operation 7, below; otherwise, the routine performs operation 3. 3. The routine next checks the end-address-saved switch. If this switch is on, an address has already been saved, and the routine performs operation 7. If the switch is off, the routine performs operation 4. 4. The routine determines whether loading is absolute or relocated. If the loading process is absolute, the routine performs operation 6; otherwise, the routine performs operation 5. 5. The routine links to the REFADR routine to obtain the current relocation factor, and adds this factor to the card-specified address. QE~f~!i2B§ 1. The CMS function SCAN is called to parse the card. 2. If the card is not an ENTRY or LIBRARY card, the routine determines whether the NOINV option (no printing of invalid card image~ was specified. If printing is suppressed, control passes to RD in the initial and resume loading routine, where another card is read. If printing is not suppressed, control passes to the disk and type output routine (DMSLIO), where the invalid card image is printed in the load map. If the card is a valid control card, processing continues. ENTRY Card 6. The routine stores the address (absolute or relocated) in area BRAD, for possible use at the end-of-load transfer of control to the problem program. 7. Goes to location PASSTWO routine) to process RLD cards. 8. The routine then clears the ESID table, sets the absolute load flag on, and branches to the location specified in a general register (see "Exits"). (in ----3.--1£ the ENTRY name is already defined in REFTBL, its REFTBL address is placed in ENTADR. Otherwise, a new entry is made in REFTBL, indicating an undefined external reference (to be resolved by later input or library search), and this REFTBL entry's address is placed in ENTADR. 4. LIBRARY Card ----5:- Only nonobligatory reference LIBRARY cards are handled; any others are considered invalid. RLD 6. 174 The control card is printed by calling DMSLIO via CTLCRD; it then exits to RD. Each entry-point naRe is individually isolated a~ is searched for in the HEFTBL. If it bas already been loaded and defined, nothing is done and the next entry-point name is processed. IBM VM/370: System Logic and Problem Deteraination Guide otherwise, the nonobligatory bit is set in the flag byte of the RElTBL entry. 7. QE~~~~!2n 1. This routine begins its operation by obtaining the number of entries currently in the reference table (this number is contained in area TBLCT), the size of a reference table entry (16 bytes), and the starting address of the reference table (always the highest address in storage, contained in area TBLREl) • 2. The routine then checks the number of entries in the reference table. If the number is 0, the routine performs operation 5; otherwise, the routine performs operation 3. 3. The routine next determines the address of the first (or next) reference table entry to have its name checked, increments by one the count it is keeping of name comparisons, and compares the given name with the name contained in that entry. If the names are identical, PRSERCH branches to the location specified in the routine that linked to it. PRSERCH then returns the address of the REFTBL entry; else PRSERCH performs operation 4. 4. The routine then determines whether there is another reference table entry to be checked. If there is none, the routine performs operation 5; if there is another, the routine decrements by one the number of entries remaining and repeats its operation starting with operation 3. 5. If all the entries have been checked, and none contains the given name for which this routine is searching, the routine increments by one the count it is keeping of name comparisons, places that new value in area TBLCT, moves the given name to form a new reference table entry, and returns to the calling program. Processing continues at operation 4. Function ---ThIs-routine computes the storage address of a given entry in the reference table. jn~~I This routine has one entry point, location RElADR. The routine is entered for several of the routines within the loader. QE~!~!!2~ 1. Checks to see if requested ESDID is zero. If so, uses LOCCNT as requested location; branches to the return location + 44; otherwise continues this routine. 2. The routine first obtains, from the indicated ESID table entry, the position (n) of the given entry within the reference table (where the given entry is the nth REFTBL entry). 3. 4. 5. The routine then multiplies n by 16 (the number of bytes in each RElTBL entry) and subtracts this result from the starting address of the reference table. The starting address of the reference table is held in area TBLREF; this address is the highest address in storage, and the reference table is always built downward from that address. The result of the subtraction in operation 2, above, is the storage address of the given refer~nce table entry. If there is n~ ESD for the entry, goes to operation 5; otherwise, this routine returns to the location specified by the calling routine. Adds an element to the chain of waiting elements. The element contains the BSD data item information to be resolved when the requested ESDID is encountered. Function ---ThIs- routine compares each reference table entry name with the given name determining (1) whether there is an entry for that name and (2) what the storage address of that entry is. jn~~I This routine is initially entered at PRSERCH, and subsequently at location SERCH. The routine is entered from several routines within the loader. Exits ---This routine exits to either of two locations, both of which are specified by the routine that linked to this routine. The first location is that specified in the event that an entry fer the given name is found; the second location is that specified in the event that such as entry is not found. ESD Card Codes (col. 25 ••• ) Code -0001 02 04 05 06 OA ~~~n!ng SD LD ER PC CM XD WI (CSECT or START) (ENTRY) (EITRN) (Private code) (COMMON) (Pseudo-registe~ (WEAK EXTERN) Section 2. Method of Operation and Program Organization 175 The ESD ID table (ESltTE) is constructed separately for each text deck processed by the loader. The ESIDTB produces a correspondence between ESD ID numbers (used on RLD cards) and entries in the loader reference table (REFTBL) as specified by the ESD cards. Thus, the ESIDTB is constructed while processing the ESD cards. It is then used to process the TXT and RLD cards in the text deck. The ESIDTB is treated as an array and is accessed by using the ID number as an index. Each ESIDTB entry is 16 bits long. Bits 0--- ~ggni!lg 1, this entry corresponds to a CSECT that has been previously defined. All TXT cards and RLD cards referring to this CSECT in this text deck should be ignored. ~f If 1, this entry definition (SD). corresponds to a CSECT 2 waiting ESD items exist for this ESDID. 3 Unused. 4-15 REFTEL etc. ) entry number (e.g. 1, 2, 3, Bit 1 is very crucial because it is necessary to use the VALUE field of the REFTBL if the ID corresponds to an ER, CM, or PR; but, the INFO field of the REFTEL entry must be used in the ID corresponds to an SD. REFTBL Entry r--------------·----------------------, 10 (0) I 1- - - - - - - - NAME - - - - - - - - - I I I 1--------------_·_---------------------1 18(8) 19(9) I FLAG1 I INFO I I 1--------1----------------------1 I 12 (C) I 13 (D) I NOTE 1 I VALUE I I 1---------1----·------------------------1 I 16 ( 10) I 17 ( 11) I FLAG2 _ I AtDRESS I IL _________ 7F 07 XDBL 80 81 82 83 90 05 04 02 05 06 XUNDEF XCXD XCOMSET WEAKEXT CTLLIB INFO Field: Iteii.----- doubleword PR alignment Undefined symbol Resol ve CXD Define common area Weak external reference TXTLIBs not to be used to resolve names depends upon the type ESD Item INFO Field !.I.E~ ~~!!!li!lg SD LD CM PR (CSECT or START) (ENTRY) (COMMON) (Psuedo Register) VALUE Field: depends upon the as-dces the INFO field. ESD Item SD LD CM PR (CSECT or START) (ENTRY) (COMMON) (Psuedo register) ESD Relocation factor ze:to maximum length item: l.I.E~ of the type of the ESD VALUE Field l1g!!!ling Absolue address Absolue address Absolue address Assigned value (starting from 0) FLAG2 Eyte lli! l1gg!li!lg o Unused 1 Unused 2 3 Unused Unused Bit -4'5 6 7 ~~gni!l_g Unused Name was located in a TXTLIB section definition entry Name specifically loaded from command line. Entries m~y be created in the loader reference table pr10r to the actual defining of the symbol. For example, an entry is created for a symbol if it is referenced by means of an EXTRN (ER) even if the symbol has not yet been defined or its type known. Furthermore, common (CM) is not assigned absolute addresses until prior to the start of execution by the START command. These circumstances are determined by the setting of the flag byte; if the symbol's value has not yet been defined~ the value field specifies the address of a patch control block (PCB) • -----------------------------~ A REFTEL entry is 20 bytes. following uses: NAME Field: contains the ESO-data-Item. The fields have the symbolic name from the These are allocated from free storage and pointed at from REFTBL entries or other PCBs. ~~2..!!i.!!g Address of next PCB Loader Code --:rE7D 7E 176 ESD Code 00-0-1 03 5-7 Location of ADCON in storage 4 Flag byte Routine 19!1~! XBYTE XHALF XFULL n~g.!!i!lg PR - byte alignment PR - halfword alignment PR - fullword alignment All address constant locations in loaded program for undefined symbols are placed on PCB chains. IBM VM/370: System Logic and Problem Determination Guide All restrictions which apply to object files for the OS linkage editor apply to CMS loader input files. (FST), chain links, and file records. Figure 44 shows how these types of data blocks relate to each other; the following text and figures describe these relationships and the individual data blocks in more detail. FILE STATUS TABLES PROCESS COMMANDS THAT MANIPULATE THE FILE SYSTEM Figure 40 lists the CMS modules that perform either general file system support functions or that perform data manipulation. MANAGE THE CMS FILE SYSTEM A description of the structure of the CMS file system and the flow of routines that access and update the file system follows. HOW CMS FILES ARE ORGANIZED IN STORAGE CMS files are types of data Master File Directory organized in storage by blocks: the file status File Status Table Block (FSTB) three table CMS files consist of 800-byte records whose attributes are described in the file status table (FST). The file status table is defined by DSECT FSTSECT. The FST consists of such information as the filename, filetype, and filemode of the file, the date on which the file was last written, and whether the file is in fixed-length or variable format. Also, the FST contains a pointer to the first chain link. The first chain link is a block that contains addresses of the data blocks that contain the actual data for the file. The FSTs are grouped into 800-byte blocks called FST Blocks (these are sometimes referred to in listings as hyperblocks). Each FST block contains 20 FST entries, each describing the attributes of a separate file. Figure 45 shows the structure of an FST block and the fields defined in the FST. File Status Table Entry First Chain Link (FCL) Nth Chain Link (NCL) Addr Address of FSTB Address of an 800-byte CMS Record ~______~______~________~~:~:~__R_e_co_rd_n~1 ~----800-byte CMS Figure 44. How CMS File Records a~e Record Containing File Data I t e m s - - - -.......~I Chained Together Section 2. Method of Operation and Program Organization 111 File Status Table Block Fields in a File Status Table Entry FST 1 FILE --.-.--.-------------------------,---1 FST 2 NAME FILE TYPE FST 4 DATE LAST WRITTEN Write Pointer (Number of Item) FST 5 Filemode FST 6 Disk Address of 1st Chain Link 22 Read Pointer (Number of Item) 26 Number of Items in File 30 Fixed Variable 31 Flag Byte Item Length (F) Max. Item Length (V) Number of BOO-Byte Data Blocks Figure 45. Year Format of a File Status Block; Format of a File Status Table CHAIN LINKS Chain links are 200- or aOO-byte blocks of storage that chain the records of a file in storage. There are two types of chain links: first chain links and Nth chain links. The first chain link points to two kinds of data. The first ao bytes of the first chain link contain the halfword addresses of the remaining 40 chain links used to chain the records of the file. The next 120 bytes of the file are the half word addresses of the first 60 records of the file. The Nth chain links contain only halfword addresses of the records that contained in the file. Because there are 41 chain links (of which the first contains addresses for only 60 records), the maximum size for any C"S file is 16,060 aOO-byte records. Regardless of their format, the items of a file are stored by C"S in sequential order in as many aOO-byte records as are required to accommodate them. Each record (except the last) is completely filled and items that begin in one record can end on the next record. Figure 47 shows the arrangement of records in files for files containing fixed-length records and files containing variable-length records. The location of any item in a file containing fixed-length records is determined by the formula: (Item Number - 1) x Record Length locations= -------------800----------------- where the quotient is the number of the item and the remainder is the displacement of the item into the file. C"S RECORD FORMATS CMS records are aOO-byte blocks containing the data that comprises the file. For example, the CMS record may contain several card images or print images, each of which is referred to a record item. Figure 46 shows how chain links are chained together. C"S records can be stored on disk in either fixed-length or variable-length format. However, the two formats may not be mixed in a single file. 178 For variable-length records, each record is preceded by a 2-byte field specifying the length of the record. C"S virtual disks (also referred to as minidisks) are blocks of data designed to externally parallel the function of real disks. several virtual disks may reside on one real disk. IBM VM/370: System Logic and Problem Determination Guide Disk Aridre" of 2nd Chain Link DISk Address of Disk Address ot f\ • Oth Data Block 3rd Chain Link Disk Andress of f\. lst Data Block Cham Linkago Directory • • • Disk Address of 40th Chain link Disk Address of • 41S1Chaon Link Disk Address of 1Sf Data Block Disk Address of 2nd Data Block .... ..... A ... E Disk Addre .. of f\. 39B th Data Block DISk Address of 1\. 399th Data Block Disk Aridress of 59th Data Block - - _ l (n-2) - 400'" 61 where n "" Cham LInk. Number DISk Address of 60th Data Block Figure 46. For_at of the First Chain Link and Nth Chain Links Data block structure for file consisting of fixed-length records Data brock structure for file consisting of variable-length records 1~-------~~~ec~~-------- J 800 ~----, 1st record 800 800 ~-----I---- _________ - --2nd record -~~-------- ~-------------- L2J -------[9-------L3 [9 - - - , 3rd record -------- - 800 2nd record ------- L4 3rd record 8 0 0 1 - - - - - - - - - - - - - - - - , . . - - - - - 1 800 800 800 4th record 4th record -~~--------------------~ 5th record 8j~===-~--------------Figure 47. ii 5th record 8 r-------------I Arrangement of Fixed-Length or Variable- Length Records in Files A CftS virtual aachine .ay have up to 10 virtual disks accessed during a terminal session, depending on user specifications. Some disks, such as the S-disk, are accessed during eftS initialization; however, most are accessed dynamically as they are needed during a terminal session. Section 2. ftethod of Operation and Program Organization 179 KEEPING QQMSK PHYSICAL ORGANIZATION OF VIRTUAL DISKS Virtual disks are physically organized in aOO-byte records. Records 1 and 2 of each user disk are reserved for 1PL. Record 3 contains the disk label. Record 4 contains the master file directory. The remaining records on the disk contain user file-related information such as the FSTS, chain links, and the individual file records discussed above. THE ~ASTER FILE DIRECTORY The master file directory (~FD) is the major file management table for a virtual disk. As mentioned earlier, it resides on cylinder 0, track 0, record 4 of each virtual disk. Six types of information contained in the master file directory: • The disk addresses of the FST describing user files on that disk. • A 4-byte "sentinel," which can be either FFFD or FPFF. FFFD specifies that extensions of the Q~SK (described below) follow. FFFF specifies that no Q~SK extensions follow. • Extensions to the QMSK, if any. • General information describing the disk: The total number blocks on the user's disk. ADTNU~ ADTUSED The number of in use on the disk. entries the status of of aOO-byte blocks currently ADTLEFT Humber of blocks use (ADTNO~ - ADTUSED) . remaining for ADTLAST - Relative byte address of last record in use on the disk. the ADTCYL Number user's disk. the of cylinders on Unit Type - A l-byte field describing the type of the disk: oa for a 2314, 09 for a 3330. A bit mask called the QMSK, which keeps track of the status of the records on disk. The QMSK is described in more detail below. Another bit map, called the QQMSK, which is used only for 2314 disks and performs a function similar to that of QMSK. Figure 4a shows the structure of the master file directory. Figure 44 shows the relationship of the Master File Directory, which resides on disk, to data blocks brought into storage for file management purposes, for example, FSTs and chain links. lao TRACK OF R/W DISK STORAGE: QMSK AND Because large areas of disk space need not be contiguous in CMS, but are composed of aOO-byte blocks chain-linked together, disk space management needs to determine only the availability of blocks, not extents. The status of the blocks on any read/write disk (which blocks are available and which are currently in use) is stored in a table called QMSK. The term QMSK is derived from the fact that a 2311 disk drive has four aOO-byte blocks per track. One block is a "quarter-track", or QTRK, and a 200-byte area is a "quarter-quarter-track", or QQTRK. The bit mask for 2314, 2319, 3340, or 3330 records is called the QMSK, although each aOO-byte block represents less than a quarter of a track on these devices. On a 2314 or 2319 disk, the blocks are actually grouped fifteen aOO-byte blocks per even/odd pair of tracks. An even/odd pair of tracks is called a track group. On a 3330 disk, the blocks are grouped fourteen aOO-byte blocks per track. On a 3340 disk, the blocks are grouped into eight aOO-byte blocks per track. When the system is not in use, a user's QHSK resides on the Master File Directory; during a session it is maintained on disk, but also resides in main storage. QMSK is of variable length, depending on how many cylinders exist on the disk. Each bit is associated with a particular block on the disk. The first bit in QMSK corresponds to the first block, the second bit to the second block, and so forth, as shown in Figure 49. When a bit in QMSK is set to 1, it indicates that the corresponding block is in use and not available for allocation. A O-bit indicates that the corresponding block is available. The data blocks are referred to by relative block numbers throughout disk space management, and the disk I/O routine, DMSDIO, finally converts this number to a CCHHR disk address. A table called QQHSK indicates which 200 byte segments (QQTRK) are available for allocation and which are currently in use. QQMSK contains 100 entries, which are used to indicate the status of up to 100 QQTRK records. An entry in QQMSK contains either a disk address, pointing to a QQTRK record that is available for allocation, or zero. QQMSK is used only for 2314 files; for 3330, 3340, and 3350, the first chain link occupies the first 200-byte area of an aOO-byte block. The QMSK and QQMSK tables for read-only disks are not brought into storage, since no space allocation is done for a disk while it is read-only. They remain, as is, on the disk until the disk is accessed as a read/write disk. IBM VM/370: System Logic and Problem Determination Guide ..........- - - - - - - 2 Bytes - - - - - - - - :.. ~ Byte 0 / Disk Address of 1st FST Block Disk Address of 2nd FST Block (if any) •• · Disk Address of Nth FST Block (if any) Sentinel (Note 1) Disk Address of 1st OMSK extension (if any) ·•• Disk Address of Nth OMSK extension (if any) •• · Not used - Zero filled ~ ~ ~ •• • /~ ADTUSED,ADTLEFT,ADTLAST Byte 384 ~ '/ Not used (zero) Byte 599 ~ Byte 364 Byte 380 Byte 382 Byte 600 ADTCYL First 215 Bytes of OMSK ~ I Entire 200-Byte OOMSK Table L.. / UNIT-TYPE (Note 4) TL--_____(f_or_2_3_14_0n_ly_l_ _ _ _ _--IT Figure q8. structure of the Master File Directory 1 bit 1 bit OMSK for 2314 or 2319 0 0 0 0 0 0 1 4 2 3 0 0 0 ~ 1 1 1 10 11 12 9 0 0 0 0 g ~ T ~ i ~ 0 0 5 ~ 13 0 l 0 0 6 0 1 14 0 ~ 0 0 7 ~ 15 0 i OMSK for 3330 f--0 0 8 g t 1 bit 1 0 [IJt 1bit J Number of OMSK Extensions Required ,lif anyl 0 1 2 3 4 5 6 7 8 9 10 Record o 10 0 1 3330 6 1 30 7 54 31 78 65 79 · 102 103 · 126 127 · 150 161 · 174 176 · 198 199 ·223 224 - 246 3 1V 0 ~ L __~ Number of Cylinden on Disk 2314 or 2319 1 . 11 12. 54 55· 96 97· 139 140· 182 183·203 g ~ Block available Block in use 1 8 2 9 0 H = Head ~ g 1 g where: C ~ Cylinder R- g g g g g g g 3340 4 5 g g 12 0 J 13 0 J 6 g 14 0 ~ 7 ~ 1 0 a ~ 2 0 1~ J ,,- 3350 --- - Figure 49. Disk Storage Allocation Using the QMSK Data Block section 2. Method of Operation and Program Organization 181 DYNAMIC FILES STORAGE MANAGEMENT: ACTIVE DISKS AND CMS disks and files contained on disk are physically mapped using the data blocks described above: for disks, the QMSK, QQMSK, and the MFD; for files, the FST, chain links, and 800-byte file records. In storage, all of this data is accessed by means of two DSECTs whose addresses are defined in the DSECT NUCON, ADTSECT and APTSECT. DMSLAD: In the case where specIfied, calls DMSLAD extension disk exists. an extension has been to ensure that the DMSLAD: Ensures that the specified disk already accessed as a R/M disk. is not Y~~l!~: In the case where the specified disk is replacing a currently accessed disk, closes any open files belonging to the duplicate disk. DMSACC: verifies the parameters remaining on the coiiimand line. DMSALU: Releases any free storage belonging to the-duplicate disk via a call to DMSFRE. Also, clears appropriate entries in the ADT for use by the new disk. The ADTSECT DSICT maps information in the active disk table (ADT). This information includes data contained in the MFD, FST blocks, the QMSK, and QQMSK. The DSECT comprises of ten "slots," each representing one CMS virtual disk. A slot contains significant information about the disk such as a pointer to the MFD for the disk, a pointer to the first PST block and pointers to the QMSK and QQMSK, if the disk is a R/M disk. Also contained in ADTSECT is information such as the number of cylinders on the disk, the number of records on the disk. ~~~!£~: (Called as the first instruction by DMSACF) Reads, from the Master File Directory, QMSK, and the QQMSK for the specified disk; also, DMSACM updates the ADT for the specified disk using information from the MFD. ]~§J£l: Reads into storage all the associated with the specified disk. FST blocks !1~§J~~: Handles error processing or processing required to return control to DMSINT. INPUT/OUTPUT OPERATIONS Each open file is represented in storage by an active file table (AFT). The AFT (defined by the AFTSECT DSECT) contains data found on disk in FSTs, chain links, and data records. Also contained in the AFT is such information as the address of the first chain link for the file, the current chain link for the file, the address of the current data block, the fileid information for the file. Figure 39 shows the relationship between the AFT and other CMS data blocks. CMS ROUTINES USED TO ACCESS THE FILE SYSTEM DMSACC is the control routine used to access a virtual disk. In conjunction with DMSACM and DMSACF, DMSACC builds, in virtual s~orage, the tables eMS requires for process~ng files contained on the disk. The list below shows the logical flow of the main function of DMSACC. DMSACC: Scans the command whIch-disk is specified. line to Looks up the address of the ADT disk specified on the command line. Q~§1!Q: determine for the CMS input/output operations for disk, tape, and unit record devices are always synchronous. Disk and tape I/O is initiated via a privileged instruction, DIAGNOSE, whose function code requests CP to perform necessary error recovery. control is not returned to CMS until the operation is complete, except for tape rewind or rewind and unload operations, which return control immediately after the operation is started. No interruption is ever received as the result of DIAGNOSE I/O. The CSM is stored only in the event of an error. Input/output operations to a card reader, card punch, or printer are initiated via a normal START I/O instruction. After starting the operation, CMS enters the wait state until a device end interruption is received from the started device. Because the I/O is spooled by CP, CMS does not handle any exceptional conditions other than not ready, end-of-file, or forms overflow. CMS input/output operations to the terminal may be either synchronous or asynchronous. output to the terminal is always asynchronous, but a program may wait for all terminal input/output operations to complete by calling the console wait routine. Input from the terminal is usually synchronous but a user may cause CMS to issue a read by pressing the attention key. A program may also asynchronously stack data to be read by calling the console attention routine. ~~§!CC: Determines whether an extension to a disk has been specified on the command line and ensures that it is correctly specified. 182 IBM VM/370: system Logic and Problem Determination Guide UNIT RECORD I/O PROCESSING DMSIOW: Places the symbolic name of the Interrupting device in the PLIST and passes control to the calling routine. Seven routines handle I/O processing for CMS: DMSRDC, DMSPUN, and DMSPRT handle the READCARD, PUNCH, and PRINT commands and pass control to te actual I/O processors, DftSCIO (for READCARD and PUNCH) or DMSPIO (for PRINT). DftSCIO and DftSPIO issue the SIO instructions that cause I/O to take place. Two other routines, DMSIOW and DMSITI, handle synchronization processing for I/O operations. Figure 50 shows the overall flow of control for I/O operations. DftSCIO: Checks for SEISE information and handle I/O-errors, if necessary. DMSCWR: Displays console. a control record DftSSCI: If another control encountered, formats it via DMSSCI. R~~£!]: Displays at the record is the new control record at the console. !!~~l!~: Closes the file when end- of- file occurs. DftSRDR: Issues a card-reader. CP CLOSE command to close the DMSRDC DMSPUN DMSPRT DMSPUN: Ensures that a virtual punch avaIlable; processes PUNCH command options. DMSIOW DMSSTT: Verifies the existence of the returns its starting address. DMSITI is file and ~~~R~]: If requested, sets up a header record and calls DMSCWR to write it to the console. DMSBRD: Reads a block of data buffer; continues reading until filled. ~~~~lQ: Figure 50. Flow Processing of control For Unit Record I/O into the read the buffer is Initializes areas to punch records. DMSCIO: Issues the SIO instruction to punch the contents of the buffer. DMSCIO: Issues a call to DMSIOi to wait completion of the punch I/O operation. The following are more detailed descriptions of the flow of control for the read, punch, and print unit record control functions. for DMSIOW: Sets the wait bit on for the virtual punch- device and loads the I/O old PSW from NUCON. This causes CMS to enter a wait state until the punch operation completes. R~~!I!: Y~~~R£: Initializes block length and unit record size. Y~~£!Q: Initializes areas to read records. ]~~£lQ: Issues an SIO command to read a record. DMSIOi: Sets the wait bit for the virtual card reader and load the I/O old PSi from NUCON. This causes CMS to enter a wait state until the read I/O is complete. DMSITI: Ensures that this interrupt is for vIrtual reader. If not, the I/O old PSi loaded, returning CMS to a wait state. If interrupt is for the reader, DMSITI resets wait bit in the I/O old PSi and loads causing control to return to DMSIOW. the is the the it, Ensures that this interrupt is for the punch. If not, the I/O old PSW is loaded returning CftS to a wait state. If the interrupt is for the punch, DMSITI resets the wait bit in the I/O old PSW and then loads the PSW, returning control to DMSIOi. name of the DMSIOW: Places the symbolic Interrupting device in the PLIST and passes control to DMSCIO. DMSCIO: Checks for SENSE information and handles I/o-errors, if any. DMSPUN: Handles error returns and constants for the next punch operation. DMSFNS: Closes the file and returns the-command handler, DMSINT. resets control to Section 2. Method of Operation and Program Organization 183 interpreted as ASCII control characters, the following meanings: Cl Skip to channel 10 before print. C3 Skip to channel 12 before print. have ]~§E~!: type of the Determines the device printer. Checks out the specified fileid. Checks out the options specified on the PRINT com.and line. ]~§§f!: Verifies the existence of the returns its starting address. file and The same characters, when interpreted as machine control characters, have the following meanings: C1 DMSPRT: Determines the record size to be printed and-sets up an appropriate buffer area via a call to DMSFRE. DMSFRE: Obtains buffe~. DMSPRT: storage space to Determines whether the be used file to be Q~§~~~: Reads a record; continues reading until the buffer is filled. When the buffer is filled, calls DMSPIO to issue the SIO instruction to begin the print operation. Issues the print SIO instruction then calls DMSIOW to wait until the the operation completes. and I/O DMSIOW: sets the wait bit for the virtual prInter device and load the I/O old PSW from DUCOD. This causes CMS to enter a wait state until the print operation completes. Q~§!!!: Ensures that the interrupt is for the printer. If not, the I/O old PSW is reloaded, returning CMS to a wait state. If the interrupt is for the printer, DMSITI resets the WAIT bit in the I/O old PSW and loads that PSW, returning control to DMSICW. DMSIOW: places the symbolic name of the device in-the last word of the PLIST and passes control to DMSPIO. ]~§R1Q: Performs channel testing and handles errors. TIO instructions and sense SIO instructions are issued during the test processing. These operations are synchronized using DMSIOW and DMSITI in the manner described above. When the I/O completes successfully, control returns to DMSPRT. DMSPRT: Determines whether all file recorJs have been printed. If so, control returns to the caller. Otherwise, the address of the buffer is updated and more print operations are performed. CMS supports the use of ASCII control characters and machine carriage control characters for the printed output. Part of the CMS implementation depends upon the fact that the set of ASCII control characters has almost nothing in common with the set of machine control characters. There are two exceptions to this, the characters X'C1' and X'C3'. These two characters, when 184 then skip to channel 8 after print. C3 Do not write, immediately. but skip to channel 8 as a p~Inted is a library member or an input file. Q~§E!~: = Write, In printing lines containing carriage control characters, CMS has the capability of operating in two modes. In the first mode, which may be called ASCII control characters or machine control characters of either type are recognized and properly interpreted, except that the two conflicting characters are always interpreted as ASCII control characters. In the second mode, which may be called machine-only, only machine control characters are recognized, and the two conflicting characters are treated as machine. The DMSPIO function uses a bit in the plist to indicate which of the two modes is in effect for printing. The PRINTL macro always uses ASA control character or machine control character mode. The PRINT command with the CC option always runs in ASCII control character or machine control character mode. OS simulation output, which is used, for example, by the MOVEFILE command, uses the RECFM field in the DCB or in the FILEDEF command to determine which mode is to be used. If FA, VA, or UA is specified, then ASCII control character or machine control character mode is used. If FM, VM, or UM is specified, then machine-only mode is used. If no control character specification is included with the RECFM, then it is assumed that the output line begins with a valid data character, rather than with a control character, and single spacing is always used. Figure 40 lists the CMS modules that process interruptions for CMS. CMS modules are described briefly in "CMS Module Description." SVC 9 interruption processing is described in "Maintaining an Interactive Console Environment." DISK I/O IN CMS Files residing on disk are read and written using DMSDIO. nMSDIO has two entry points: DMSDIOR, which is entered for a read I/O operation, and DMSDIOW, which is entered for a write operation. IBM VM/370: System Logic and Problem Determination Guide is, this segment must consist only of reentrant code, and may not be modified under any circumstances. This fact implies certain system restrictions for functions which require that storage be modified, such as the fact that DEBUG breakpoints or CP ADS TOP commands cannot be placed in this segment, in a saved system • The actual disk I/O operation is performed using the DIAGNOSE code 18 instruction. A return code of a from CP indicates a successful completion of the I/O operation. If the I/O is not successful, CP performs error recording, retry, recovery, or ABEND procedures for the virtual machine. DMSDIO: Initializes operations. the CCW to DMSLAD: Obtains the address of whIch-to read or write. perform read the disk from ]~2~JQ: Determines the size of read or written. the record to be ~~2IB~: to contain the a record longer Gets enough storage record if the request is for than 800 bytes. DMSDIO: Reads records continually rec~rds for the file have been read. until all DMSFRE: Returns the buffer to free storage if the-record was longer than 800 bytes. ~~2~!Q: • User program area (1'20000' to loader tables) - User programs are loaded into this area by the LOAD command. storage allocated by means of the GETMAIN macro instruction is taken from this area, starting from the high address of the user program. In addition, this storage area can be allocated from the top down by DMSFREE, if not enough storage is available in the low-core DMSFREE storage area. Thus, the effective size of the user program area is reduced by the amount of free storage which has been allocated from it by DMSFREE. • Loader tables (top pages of storage) - The top of storage is occupied by the loader tables, which are required by the CMS loader. These tables indicate which modules are currently loaded in the user program area (and the transient program area after a LOAD command). The size of the loader tables can be varied by the SET LDRTBLS command. Returns to the caller. Free storage can be allocated GETMAIN or DMSFREE macros. DMSFRE handles requests for CMS free storage. The sections of CMS storage have the following uses: • • • • DMSNUC (1'00000' to approximately 1'03000') This is the nucleus constant area. It contains pointers, flags, and other data maintained by the various system routines. LOW-core DMSFREE free storage area (approximately 1'03000' to I'OEOOO') - This area is a free storage area, from which requests from DMSFREE are allocated. The top part of this area contains the file directory for the system disk (SST AT). If there is enough room (as there will be in most cases) , the FREETAB table also occupies this area, just below the SSTAT. Transient prog~am area (I'OEOOO' to 1'10000') - Because it is not essential to keep all nucleus functions resident in storage all the time, some of them are made "transient." This means that when they are needed, they are loaded from the disk into the transient program area. Such programs may not be longer than two pages, because that is the size of the transient area. (A page is 4096 bytes of virtual storage.) CMS nucleus (1'10000' to 1'20000') - Segment 1 of storage contains the reentrant code for the CMS nucleus routines. In shared eMS systems, this is the protected segment. That by means of the Storage allocated by means of the GETMAIN macro is taken from the user program area, beginning with the high address of the user program. storage allocated by means macro can be taken from several of the DMSFREE areas~ First, DMSFREE requests are allocated from the low-address free storage area. If requests cannot be satisfied from there, they will be satisfied from the user program area. In addition, requests are further broken down between requests for user storage and nucleus storage, as specified in the TYPE parameter of the DMSFREE macro. These two types of storage are kept in separate 4K pages. It is possible, if there are no 4K pages completely free in low storage, for no storage of one type to be available in low storage, while there is storage of the other type available there. All GETMAIN storage is allocated in the user program area, starting from the end of the user's actual program. Allocation begins at the location pointed to by NUCON pointer MAINSTRT. The location MAIN8IGB in NUCON is the pointer to the highest address of GETMAIN storage. section 2. Method of Operation and Program organization 185 When the STRINIT macro is executed, hoth MAINSTRT and MAINBIGB are initialized to the end of the user's program, in the user program area. As storage is allocated from the user program area to satisfy GETMAIN requests, the MAINHIGB pOinter is adjusted upward. Such adjustments are always in multiples of doub1ewords, so that this pointer is always on a douhleword boundary. As the allocated storage is released, this pointer is adjusted downward. The pointer MAINHIGH can never be higher than FREELOVE, the pointer to the lowest address of DMSFREE storage allocated in the user program area. If a GETMAIN request cannot be satisfied without extending MAINHIGH ahove FREELOVE, GETMAIN takes an error exit, indicating that insufficient storage is available to satisfy the request. The area between MAINSTRT and MAINHIGH may contain blocks of storage that are not allocated, and that are therefore available for allocation by a GETMAIN instruction. These blocks are chained together, with the first one pointed to by the NUCON location HAIBLIST. The format of an element on the GETMAIN free element chain is as follows: <-------- 4 bytes --------> ...--------_ _-----------------, .. 0(0) I 1 I 4(4) I 1 1 FREPTR pointer to next free element in the chain, or 0 if there is no next element .. I--~-----.-------.------------ FRELEN length, in bytes, of this element I I I 1 I I 1-------------_._----------1 1 Remainder of this free element 1 The FREETAB free storage table is kept in free storage, usually just below the master file directory for the system disk. If there was no space available there, then FREETAB was allocated from the top of the user program area. This table contains one byte for each page of virtual storage. Each such byte contains a code indicating the use of that page of virtual storage. The codes in this table are as follows: y~~]~~~~ (j): If the page ~y~~~y~ The pointer FREELOVE is the pointer to the lowest address of DHSFREE storage in the user program area. As storage is allocated from the user program area to satisfy DMSFREE requests, this pointer is adjusted downward. Such adjustments are always in multiples of 4K, so that this pointer is always on a 4K boundary. As the allocated storage is released, this pointer is adjusted upward when whole 4K pages are completely free. The pointer FREELOVE can never be lower than MAIBHIGH, the pointer to the highest address of GETMAIN storage. If a DMSFREE request cannot be satisfied without extending FREELOVE below MlINHIGB, then DMSFREE takes an error exit, indicating that insufficient storage is available to satisfy the request. 186 to user (~): If the page is assigned to nucleus storage. !]!~~]] is (1): If the page transient program area. y~!]~~]] (~): If the page part is part of of the the user program area. ~!~~~~] (~): If the page is none of the above. In these cases, the page is assigned to system storage, system code, or the loader tables. Other DHSFREE storage pointers are maintained in the DMSFRT control section, in NUCON. The most important fields there are the four chain header blocks. Four chains of elements are not allocated to be associated with DHSFREE storage: The low-storage nucleus chain, the low-storage user chain, the high-storage nucleus chain, and the high-storage user chain. For each of these chains, exists a control block consisting of four words, with the following format: < The pointers FREEUPPR and FREELOWE in NUCON indicate the amount of storage which DMSFREE has allocated from the high portion of the user program area. These pointers are initialized to the beginning of the system loader tables. is assigned storage. 4 bytes -----> r ------------------., 1 I IPOINTER pointer to the first 1 0(0) 1 free element on the chain, or I I zero, if the chain is empty. 1 1--------------------1 I BUM - the number of elements on 1 4 (4) I the chain. I 1--------------------1 I MAX the value in this word is I 8(8) 1 the size of the largest free 1 1 element on the chain. 1 1-----·_---------------1 1 FLAGS- 1 SKEY - 1 ~rCODE -I Unused 1 12(C) 1 Flag Istorage IFBEETAB 1 1 11.-_ byte key 1 _ _code 1_ _ _ _- - - '1 _ _ _ _ _1 __ ______ _____ These uses: POINTER fields have the following meanings and This field points to the first element on this chain of free elements. If there are no elements on this free chain, then the POINTER field contains a zero. IBM VM/310: System Logic and Problem Determination Guide BUM This field contains the nu mber of elements on this chain of free elements. If there are no elements on this free chain r then this field contains a zero. MAX This field is used for the purpose of avoiding searches which will fail. It contains the sizer in bytes r of the largest element on the free chain. Thus r a search for an element of a given size will not be made if that size exceeds the MAX field. FLAGS <-------- --------> 0(0) -, I I I POINTER pointer to the next element in the free chain I I I SIZE -- size of this free elelllent r in bytes I Remainder of this free element I I I 1-------------------------1 4 (4) I I I 1-------,------------------4 I The following flags are used: F LC LIi ( X' 80 ' ) Clean-up flag This flag is set if the chain must be cleaned up. This is necessary in the following circumstances: - If one of the two high-core chains contains a 4K page that is pointed to by FREELOWE r then that page can be removed from the chain r and FREELOWE can be increased. - All, completely non-allocated 4K pages are kept on the user chain r by convention. Thus r if one of the nucleus chains (low-core or high-core) contains a full pager then this page must be transferred to the corresponding user chain. FLCLB(X' 40') Clobbered flag - Set if the chain has been destroyed. When the user issues a variable length GETMAlli r the control program reserves 6 1/2 pages for CMS usage; this is a designed and set value. If the user wants more spacer for example r for more directories, he should free up from the high end of storage some of the variable GETMAIN area. As indicated in the illustration above, the POINTER field points to the next element in the chain r or contains the value zero if there is no next element. The SIZE field contains the size of this element r in bytes. III elements within a given chain are chained together in order of descending storage address. This is done for two reasons: 1. Because the allocation search is satisfied by the first free element that is large enough r the allocated elements are grouped together at the top of the storage area r and prevent storage fragmentation. This is particularly important for high-storage free storage allocations r because it is desirable to keep FREEL OWE as high as possible. 2. If free storage does become fragmented r the search causes as faults as possible. FL HC (X' 20 ' ) High-core chain - Set for both the nucleus and user high-core chains. FL Ii U ( X' 1 0 ' ) Nucleus chain - Set for both the low-core and high-core nucleus chains. FLPA (1'08') Page available - This flag is set if there is a full 4K page available on the chain. Note that this flag may be set even if there is no such page available. SKEY 4 bytes r This one-byte field contains the storage key assigned to storage on this chain. TCODE This one-byte field contains the FREETAB table code for storage on this chain. Each element on following format: the free chain has sOllewha t few page As a matter of convention r completely nonallocated 4K pages are kept on the user chain rather than the nucleus chain. This is because requests fer large blocks of storage are made r most of the timer froll user storage rather than from nucleus storage. Nucleus requests need to break up a full page less frequently than user requests. the I description of the algorithms which allocate and release blocks follows. The descriptions are based on the assumption that neither IREI=LOW nor AREI=HIGH was specified in the DMSFREE macro call. If either was specified, then the algorithm must be appropriately modified. !11Q£!~!!Q Q2~] l]~~ 2~Q]!Q~: When DMSFREE with TYPE=USER (the default) is called r the following steps are taken to satisfy the request. As soon Section 2. Method of Operation and Program organization 187 as one of the can terminate. steps succeeds, DMSFRE: then processing 1. Searches low-storage user chain for a block of the required size. 2. Searches the high-storage user block of the required size. 3. Extends high-storage user into the user program FREELOWE in the process. 4. For fixed requests, there is nothing more to try. For variable requests, DMSFRE puts all available storage in the user program area onto the high-storage user chain, and then allocates the largest block available on either the high-storage user chain or the low-storage user chain. The allocated block is not satisfactory, if it is not larger then the minimum requested size. ALLOCATING NUCLEUS FREE STORAGE: When DMSFREE 3. Nucleus blocks. 4. User variable storage requests. (Variable requests are no less efficient than fixed requests, if the maximum block size requested can be allocated.) 5. Fixed variable storage requests, if the maximum block size requested cannot be allocated. fixed storage request, for large STORAGE ALLOCATED BY g~I~A!]: storage allocated by-the-GETMAii-macro instruction may be released in any of the following ways: A specific block of such storage may be released by means of the FREEMAIN macro instruction. Searches the low-storage nucleus chain for a block of the required size. • Gets free pages from low-storage user chain, if any are available, and removes them to the low-storage nucleus chain. The STRINIT macro storage allocated requests. • Almost all CMS commands call the STRINIT routine. Thus, executing almost any CMS command causes all GETMAIN storage to be released. Searches the highstorage nucleus chain for a block of the required size. 4. Gets free Fages from the high-storage user chain, if they are available, and removes them to the highstorage nucleus chain. 6. Nucleus fixed storage requests, for small blocks (less than one page in size). • 3. 5. 2. storage downward area, modifying are taken in an attempt to satisfy the request, until one succeeds. DMSFREE: 2. User fixed storage requests, any size. chain for a wlth-TYPE~NUCLEUS-Is-called:-the-following steps 1. 1. Extends high-storage nucleus storage downward into the user program area, modifying FREELOWE in the process. For fixed requests, there is nothing more to try. For variable requests, DMSFRE puts all available pages from the user chains and the user program area onto the nucleus chains, and allocates the largest block available cn either the low-storage nucleus chains or the high-storage nucleus chains. RELEASING STORAGE: When DMSFRET is called, the block---beIng---released is placed on the appropriate chain. At that point, the cleanup operation is performed, if necessary, to advance FREELOWE, or to move pages from the nucleus chain to the corresponding user chain. instruction releases all by any previous GETMAIN STORAGE ALLOCATED BY ~~~l~~: Storage allocated by-the-DMSFREE-macro instruction may be released in either of the following ways: • A specific block of such storage may be released by means of the DMSFRET macro instruction. • Whenever any user routine or CMS command abends (so that the routine DMSABN is entered), and the ABEND recovery facility of the system 1S invoked, all DMSFREE storage with TYPE=USER is released automatically. Except in the case of ABEND recovery, storage allocated by the DMSFREE macro is never released automatically by the system. Thus, storage allocated by means of this macro instruction should always be released explicitly by means of the DMSFRET macro instruction. Similar cleanup operations are performed, when necessary, after calls to DMSFREE, as well. The system uses the DMSFRES macro instruction to request certain free storage management services. The options and their meanings are as follows: The types of DMSFREE request in decreasing order of efficiency, are as follows: 188 • INIT1--DMSINS calls this option to invoke the first free storage initialization routine, to IBM VM/370: system Logic and Problem Determination Guide allow free storage requests to access the system disk. Before this routine is invoked, no free storage requests may be made. After this routine has been invoked, free storage requests may be made, but these are subject to the following restraints until the second free storage management initialization routine has been invoked: • CHECK--This option can be called at any time for system debugging purposes. It invokes a routine that performs a thorough check of all free storage chains for consistency and correctness. Thus, it checks to see whether any free storage pointers have been destroyed. • CKON--This option turns on a flag which causes the CHECK routine described in the preceding paragraph to be invoked each time any call is made to DKSPREE or DMSPRET. This can be useful to pinpoint a problem that is, for example, destroying free storage management pointers. Care should be taken when using this option, because the CHECK routine is coded to be thorough rather than efficient. Thus, after the CKON option has been invoked, each call to DMSPREE or DMSPRET takes many times as long to be completed as before. This can impact the efficiency of system functions. • CKOPP--Use of this option turns off the flag that was turned by the CKOB option, described in the preceding paragraph. • UREC--This option is called by DMSABN during the ABEND recovery process to release all USER storage. • CALOC--This option is called by DMSABN after the ABEND recovery process has been completed. It invokes a routine that returns, in register 0, the number of doublewords of free storage that have been allocated. This figure is used by DMSABN to determine Whether ABEND recovery has been successful. All requests for user storage are changed to requests for nucleus storage. Only partial error checking is performed by the DMSPRET routine. In particular, it is possible to release a block that was never allocated. All requests that are satisfied in high storage must be temporary, because all high storage allocated is released when the second free storage initialization routine is invoked. When CP's saved system facility is used, the CMS system is saved at the point just after the system disk has been accessed. This means that it is necessary for DMSPRE to be used before the size of virtual storage is known, because the saved system can be used on any size virtual machine. Thus, the first initialization routine initializes DMSPRE so that limited functions can be requested, while the second initialization routine performs the initialization necessary to allow the full functions of DMSPRE to be requested. IBIT2--This option is called by DMSINS to invoke the second initialization routine. This routine is invoked after the size of virtual storage is known, and it performs the initialization necessary to allow all the functions of DMSPRE to be used. The second initialization routine performs the following steps: Releases all storage that has allocated in the highstorage area. been In general, the following rule applies: system storage is assigned the storage key of X'P', while user storage is assigned the key of X'E'. This is the storage key associated with the protected areas of· storage, not to be confused with the PSW or CAW key used to access that storage. The specific key assignments are as follows: Allocates the PREETAB free storage table. This table contains one byte for each 4096-byte page of virtual storage, and so cannot be allocated until the size .of virtual storage is known. It is allocated in the low-address free storage area, if there is enough room available. If not, then it is allocated in the higher free storage area. Por a 256K virtual machine, PREETAB contains 64 bytes; for a 16 million byte machine, it contains 4096 bytes. • The BUCON area is assigned the key of X'P', with the exception of a half-page containing the OPSECT and TSOBLOKS areas, which has a key of X'E'. • Pree storage allocated up into user storage The user storage has X'E', while the nucleus X'P'. • The transient X'B'. • The CMS nucleus code has a storage key of X'P'. In saved systems, this entire segment is protected by CP from modification even by the CMS system, and so must be entirely reentrant. The PREETAB table is initialized, and all storage protection keys are initialized. All completely non-allocated 4K pages on the nucleus free storage chain are removed to the user chain. Any other necessary cleaning up operations are performed. program by DMSPREE is broken and nucleus storage. a protection key of storage has a key of area has a key Section 2. Method of Operation and Program Organization of 189 • • The user program area is assigned the storage key of X'E', except for those pages which contain Nucleus DMSFREE storage. These latter pages are assigned the key of X'F'. The loader tables are assigned the key The explanation of saved system nucleus protection depends on the VSK, RSK, VPK and RPK: of X 'F'. The CMS nucleus protection scheme protects the CMS nucleus from inadvertent destruction by a user program. This mechanism, however, does not prevent a user from writing in system storage intentionally. Because a CMS user can execute privileged instructions, he can issue a LOAD PSi (LPSi) instruction and load any PSi key he wishes. If a user defeats nucleus protection in this way there is nothing to prevent his program froll: • Modifying nucleus code • Modifying a table or constant area • Losing files directory by modifying a CMS file In general, user programs and disk-resident CMS commands run with a PSi key of X'E', while nucleus code runs with PSi key of X'O'. There are, however, some exceptions to this rule. certain disk-resident CMS commands run with a PSi key of X'O', because they need to modify nucleus pointers and storage. On the other hand, the nucleus routines called by the GET, PUT, READ and iRITE macros run with a user PSi key of X'E', to increase efficiency. TWO macros, DMSKEY and DMSEXS, are available for changing the PSi key. The DMSKEY macro changes the PSi key to the user value or the nucleus value. DMSKEY NUCLEUS causes the current PSi key to be placed in a stack, and a value of 0 to be placed in the PSi key. DMSKEY USER causes the current PSi key to be placed in a stack, and a value of X'E' to be placed in the PSi key. DMSKEY RESET causes the top value in the DMSKEY stack to be removed and re-inserted into the PSi. It is a CMS requirement when a routine terminates, that the DMSKEY stack must be empty. This means that a routine should execute a DMSKEY RESET macro instruction for each DMSKEY NUCLEUS macro instruction and each DMSKEY USER macro instruction executed by the routine. The DMSKEY key stack has a maximum depth of seven for each routine. In this context, a "routine" is anything invoked by an SVC call. The DMSEXS ("execute in system mode") macro instruction is useful in situations where a routine is running with a user PSi key, but wishes to execute a single instruction with the nucleus PSi key. The single instruction may be specified as the argument to the DMSEXS macro, and that instruction is executed with a system PSi key. 1. Virtual storage Key (VSK) This is the storage key assigned by the virtual machine using the virtual SSK instruction. 2. Real Storage Key (RSK) - This is the actual storage key assigned by CP to the 2K page. 3. Virtual PSi Key (VP~ - This is the PSi storage key assigned by the virtual machine, by means of an instruction such as LPSW (Load PSW). 4. Real PSi Key (RPK) This is the PSW storage key assigned by CP, which is in the real hardware PSi when the virtual machine is running. When there are no shared segments in the virtual machine, then storage protection works as it does on a real machine. RSK=VSK for all pages, and RPK=VPK for the PSW. However, when there is a shared segment (as in the case of segment 1 of CMS in the saved system), it is necessary for CP to protect the shared segment. For non-CMS shared systems, it does this by, essentially, ignoring the values of the VSKs and VPK, and assigning the real values as follows: RSK=O for each page of the shared segment, RSK=F for all other pages, and RPK=F, always, for the real PSW. The SSK instruction is ignored, except to save the key value in a table in case the virtual machine later does an ISK to get it back. For the CMS saved system, the RSKs and RPK are initialized as before~ but resetting the virtual keys has the following effects: • If the virtual machine uses an SSK instruction to reset a VSK, CP does the following: If the new VSK is nonzero, CP resets the RSK to the value of the VSK; if the new VSK is zero, CP resets RSK to F. • If the virtual machine uses a 2 : f P instruction to reset the VPK CP does the following: If the new VPK is ero, CP resets the RPK to the value of the VPK; if the new VPK is zero, CP resets RPK to F. • If the VPK=O and the RPK=F, storage protection may be handled differently. In a real machine, a PSi key of 0 would allow the program to store into any storage location, no matter what the storage key. But under CP, the program gets a protection violation, unless the RPK of the page happens to be F. (~ther) Because of this, ther&is extra code in the CP program check handling routine. Whenever a protection violation occurs, CP checks to see if the following conditions hold: The virtual m&chine running is the saved CMS syste., running with a shared segment. 190 IBM VM/370: System Logic and Problem Determination Guide The VPK = O. The virtual machine is operating as though its PSi key is O. The BSK of the page into which the store was attempted is nonzero, and different from the BPK. could not be satisfied. Begister 15 contains this return code, indicating which error has occurred. The codes below apply to the DMSFBES, DMSFBEE and DMSFBET macros. Code 1--- Error DMSPREE -- Insufficient storage space is available to satisfy the request for free storage In the case of a variable request, even the minimum request could not be satisfied. 2 DMSFREE or DMSFRET pointers destroyed. 3 DMSFBEE or DMSFBET pointers destroyed. 4 DMSFBEE -- An invalid size was requested. This error exit is taken if the requested size is not greater than zero. In the case of variable requests, this error exit is taken if the minimum request is greater than the maximum request. However, the error is not detected if DMSFREE is able to satisfy the maximum request. 5 DMSFBET -- An invalid size was passed to the DMSFBET macro. This error exit is taken if the specified length is not positive. 6 DMSPRET -- The block of storage which is being released was never allocated by DMSFBEE. Such an error is detected if one of the following errors is found: If anyone of these three conditions fails to hold, then the protection violation is reflected back to the virtual machine. If all three of these conditions hold, then the BPK (the real protection key in the real PSi) is reset to the BSK of the page into which the store was attempted. EFFECT ON CMS: In CMS, this works as follows: CMS-keeps -Its system storage in protect key F (RSK = VSK = F), and user storage in protect key E (BSK = VSK = E) • When the CMS supervisor is running, it runs in PSW key 0 (VPK = 0, RPK = F), so that CMS gets a protection violation the first time it tries to store into user storage (VSK RSK = E). At that point, CP changes the BPK to E, and lets the virtual machine re-execute the instruction which caused the protection violation. There is not another protection violation until the supervisor goes back to storing into system-protected storage. S~~I~J~IIQ~~ CN CMS: There are several coding restrictions which-iust be imposed on CMS if it is to run as a saved system. F'. This restriction also applies to I/O instructions. If the key specified in the CCW is zero, then the data area for input may not cross the boundary between two pages with different storage keys. CVEBHEAD: It can be seen that this system is iiiost--liiefficient when "storage-key thrashing" occurs -- when the virtual machine with a VPK of o jumps around, storing into pages with different VSK 's. storage Nucleus storage a. The block is not entirely inside either the free storage area in low storage or the user program area between FBEELOWE and FBEEUPPR. The first and most obvious one is that CMS may never modify segment 1, the shared segment, which runs with a BSK of 0, although the VSK = A less obvious, but just as important, restriction, is that CMS may never modify with a single machine instruction (except MVCL) a section of storage which crosses the boundary between two pages with different storage keys. This restriction applies not only to SS instructions, such as HVC and ZAP, but also to BS instructions, such as STM, and to BX instructions, such as ST and STD, which may have nonaligned addresses on the System/370. An exception is the MVCL instruction which can be restarted after crossing a page boundary because the registers are updated when the paging exception occurs. User b. The block crosses a page-boundary which separates a page allocated for user storage from a page allocated for nucleus type storage. c. The block overlaps another block already on the free storage chain. 7 DMSFBET The address given for the block being released is not a doubleword boundary. 8 DMSFRES -- An illegal request code was passed to the DMSPBES routine. Because all request codes are generated by the DMSFBES macro, this error code should never appear. 9 DMSFBE, DMSFBET, or DMSFBES unexpected internal error occurred. An CMS uses the DMSPBES macro to request special internal free storage management services. Use of this macro by non-system routines causes unpredictable results. The format is: A nonzero return code, upon return from DMSPBES, DMSFBEE or DMSFRET, indicates that the request Section 2. Method of Operation and Program organization 191 r----------------------------------------------, option should be used only by system routines that should enter a user exit routine. IL______________________________________________ label I DMSPRES I option I ~ where 'option' is one of the following: INIT1 Performs the CMS initialization routine. system INIT2 Performs the CMS initialization routine. CtIECK the Invokes a routine that checks validity of all current free storage management pointers. CKON sets a flag that causes the invoked for each call to DMSPRET. CKOPF Turns off the above flag. UREC Assists AEEND recovery, by releasing all USER-type DMSFREE storage allocations. CALOC Assist ABEND recovery, by computing the total amount of allocated storage, excluding the system disk MFD and the FREETAE table. system NOSTACK This option may be used with any of the above options to prevent the system from saving the second byte of the current PSi in a stack. If this is done, then no OMSKEY RESET need be issued later. RESET The second byte of the PSi is changed to the value at the top of the PSi key stack, and removed from the stack. Thus, the effect of the last DMSKEY NUCLEUS or USER or LASTUSER request is reversed. This option should may not be used to reverse the effect of a OMSKEY macro for which the NOSTACK option was specified. A DMSKEY RESET macro must be executed for each DMSKEY NUCLEUS, USER or LASTUSER macro that was executed and that did not specify the NOSTACK option. Failure to observe this rule results in program abnormal termination. first second CHECK to be OMSPREE or For a full discussion of t he meanings of these options, refer to "DMSFRE Service Routines. II CMS uses the DMSKEY macro to modify the PSi storage protection key so that the nucleus code can store data into protected storage. The format is: r-----------------------------------------------, I [label] DMS KEY I {NU CLEUS[ , NOS TACK] I I I I USER[,NOSTACK]I I I I I LASTUSER[, NOSTACK] I RESET} IL _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ I _._ ____________________ I system commands running in user protect status use the DMSEXS macro to execute a single instruction with a system protect key in the PSW. This macro instruction can be used in lieu of two DMSKEY macros. The format is: r--------------------------------------------, I [label] I DMSEXS _ _ I _op-code,operands _ _._ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ I L ~ The op-code and the operands of the instruction to be executed must be given as arguments to the DMSEXS macro. For example, execution of the sequence, ~ NUCLEUS USER LASTUSER 192 The nucleus storage protection key is placed in the PSW, and the old contents of the second byte of the PSi is saved in a stack. Use of this option allows the program to store into system storage, which is ordinarily protected. The user storage protection key is placed in the PSW, and the old contents of the second byte of the PSW is saved in a stack. Use of this option prevents the program from inadvertently modifying nucleus storage, which is protected. The SVC handler traces back through its system save areas for the active user routine closest to the top of the stack, and the storage key in effect for that routine is placed in the PSi. The old contents of the second byte of the PSW is saved in a stack. This USING NUCON,O DMSEXS OI,OSSFLAGS,COMPSWT would cause the 01 instruction to be executed with a zero protect key in the PSi. This sequence would turn on the COMPSiT flag in the nucleus. It would be reset with DMSEXS NI,OSSFLAGS,255-COMPSWT The instruction to instruction. be executed may be Register 1 cannot be used in any instruction being executed. an EX way in the The following contains descriptions for: access method support for non-CMS operating systems, CMS simulation of OS functions, and CMS implementation of DOS/VS functions. IBM VM/370: system Logic and Problem Determination Guide The description of parts: An access method governs the manipulation of data. To make the execution of as generated code easier under CMS, the processing program must see data as as would present it. For instance, when the processors expect an access method to acquire input source records sequentially, CMS invokes its sequential access method and passes data to the processors in the format that the as access methods would have produced. Therefore, data appears in storage as if it had been manipulated using an as access method. For example, block descriptor words (BDi), buffer pool management, and variable records are maintained in storage as if an os access method had processed the data. The actual writing to and reading from the I/O device is handled by CMS file management. The work of the volume table of contents (VTOC) and the data set control block (DSCB) is done by a master file directory (MFD) to maintain disk contents and a file status table (FST) fo'r each data file. All disks are formatted in physical blocks of 800 bytes. CftS continues to maintain the as format, within its own format, on the auxiliary device, for files whose filemode number is 4. That is, the block and record descriptor words (BDi and RDi) are written along with the data. If a data set consists of blocked records, the data is written to and read from the I/O device in physical blocks, rather than logical records. CftS also simulates the specific methods of manipulating data sets. TO accomplish this simulation, CMS supports certain essential macros for the following access methods: • BDAM (direct)--identifying a record by a key or by its relative position within the data set. • BPAM (partitioned)--seeking a named within an entire data set. • BDAM/QSAM (sequential)--accessing a record in a sequence relative to • VSAM member (~irect or sequential)--accessing a record sequentially or directly by key or address. CMS support of as VSAM files is based on DOS/VS access method services and the virtual storage access method (VSAM). Therefore, the as user is restricted to those services available under DOS/VS AMS and VSAM. CMS simulation of as and DOS includes support for the virtual storage access method (VSAM). this support is in three • A description of the access method services program (AMSERV), which allows you to create and update VSAM files. • A description of support for under CMS/DOS. • A description of support for VSAM functions for the CMS as simulation routines. VSAM functions The routines that support VSAM reside in three discontiguous shared segments (DCSSs). The CMSAMS DCSS, which contains the DOS/VS AMS code to support AMSERV processing. The CMSVSAM DCSS, which contains actual DOS/VS VSAM code, and the CMS/VSAM as interface program for processing as VSAM requests. The CMSDOS DCSS, which contains the code that supports DOS requests under CMS. Note: DMSVSR, which performs completion processing for CMS/VSAM support, resides in the CMS nucleus. CREATING THE DOSCB CHAIN The DLBL command creates a DOSCB in CMS free specified in this DLBL with the ddname parameter a control block called storage. The ddname command is associated in the program's ACB. ·The DOSCB contains information defining the file for the system. The information in the DOSCB parallels the information written on the label information cylinder of a real DOS SYSRES unit, e.g. the name, and mode (volume serial number) of the data set, its logical unit specification, and its data set type (SAM or VSAM). The anchor for this chain is at location DOSFIRST in NUCON. The CMS AMSERV com.and invokes the .odule DMSAMS, which is the CMS interface to the DOS/VS access method services (AMS) program. Module DMSAMS loads DOS/VS AMS code contained in the CMSAMS DCSS by means of the L01DSYS DIAGNOSE 64. The AMS code requires the services of DOS/VS code that resides in the CMSVSAM DCSS so that DCSS is also loaded via LOADSYS DIAGNOSE 64 when the VSAM master catalog is opened. Figure 51 shows the relationship in storage between the interface module DMS1MS and the CMSAMS and CftSVSAM DCSSs. section 2. Method of Operation and Progra. organization 193 CMSAMS DCSS CMS A-disk AMSERV MODULE [ALR IDCAMS ---I I IDCAMS: AMS Root I ~hase_ --.J CMSVSAM DCSS B-disk for OS or DOS User Figure 51. Relationship in CMSVSAM DCSSs Storage Between the CMS The following is a general description of the tMSAMS method of operation. DMSAMS first determines whether the user is in the CMS/DOS environment. If not, a SET DOS ON (VSAM) command is issued to load the CMSDOS segment and initialize the CMS/DOS environment. In this case, DMSAMS must also issue ASSGB commands for the disk modes in the DOSCB chain created by the OS user's DLBL commands. An ASSGN is also issued for SYSCAT, the VSAM master ca talog. DMSAMS then issues the ASSGB command for the SYSIPT and SYSLST files, assigning them to the user's A-disk. DLBL commands are then issued associating these units with files on the user's A-disk. Input to the AMSERV processor is the SYSIPT file, which has the filetype AMSERV. Output from AMSERV processing is placed in the SYSLST file, which has a filetype of LISTING. DIAGNOSE 64 (LOADSYS) is then issued to load the CMSAMS DCSS, which contains the DOS/VS AMS code. A DOS/VS SVC 65 is issued to find the address of the DOS/VS AMS root phase, IDCAMS. When the SVC returns with the address of IDCAMS, a branch is made to IDCAMS, giving control to "live" DOS/VS routines. IDCAMS expects parameters to be passed to it when it receives control. DMSAMS passes dummy parameters in the list labeled AMSPARMS. After the root phase IDCAMS receives control, the functions in the file specified by the filename on the AMSERV com.and are executed. 194 Interface Module DMSAMS and the CMSAMS and In performing the functions requested in this file, AMS may require execution of DOS/VS VSAM phases located in the CMSVSAM DCSS. The CMSVSAM DCSS is loaded when AMS opens the VSAM catalog for processing. On return from DOS/VS code, DMSAMS purges the CMSAMS DCSS, and issues DLBL commands for the SYSIPT and SYSLST files to clear the DOSCB's for these ddnames. Control is then passed to DMSVSR, which purges the CMSVSAM DCSS. If the user progra. was not in the CMS/DOS environment when DMSAMS was entered, the SET DOS OFF command is issued by DMSVSR. Upon return from DMSVSR, DMSAMS performs minor housekeeping tasks and returns control to CMS. ihen a VSAM function, such as an OPEB or CLOSE macro, is requested from a DOS program, CMS routes control through the CMSDOS ncss to the CMSVSAM ncss, thus giving control to DOS/VS VSAM phases. Figure 52 shows the relationships in storage between the user program, the CMSDOS DCSS, and the CMSVSAM DCSS. The description below illustrates the overall logic of that control flow. IBM VM/370: System Logic and Problem Determination Guide DOS VSAM Program DOS Transient Area CMSDOS DCSS DMSDOS $$BOVSAM ---OPEN ACBl DMSBOP ----- ------CLOSE ACBl CMSVSAM DCSS IKOVOPEN $$BCVSAM ---- DMSCLS ---- ---- $$BACLOS IKOVCLS ---- B-disk for OS or DOS User Figure 52. The Relationships in Storage Between the User Program and the CMSDOS DCSS and the CMSVSAM DCSSs CftS/DOS SVC HANDLING ftodule DftSDOS handles all CMS/DOS SVCs. There are four CftS/DOS routines that handle VSAM requests: DMSDCS, DMSBOP, DMSCLS, and DMSXCP. Within DMSDOS, several SVC functions support VSAft requests. These are described in "Simulating a DOS Environment Under CMS." When DMSBOP is entered to process ACBs, it checks to see if CMSVSAM is loaded. If VSAM has not been leaded, DIAGNOSE 64 is issued to load the CMSYSAM DCSS. DMSBOP then initializes the transient work area and issues a DOS OPEN via SVC 2 to bring the VSAM OPEN $$BOVSAM transient into the DOS transient area. When VSAM processing completes, returns to the user program directly. DftSDOS VSAM processing involves handling of SVC 65 (CDLOAD), which returns the address of a specified phase to the caller. DMSDOS searches both the shared segment table and the nonshared segment table for the CMSDOS and CMSVSA" segments, because both could be in use. Both of these segment tables contain the name of each phase comprising that segment followed by the fullword address of that phase within the segment. During SVC 65 processing, DMSDOS checks to see if the address of IKQLAB is being requested. IKQLAB is the YSAM routine that returns the label information generated by DLBLs and EXTENT cards in DOS/VS systems. If this is the case, DftSDOS saves the address of IKQLAB in NUCON for later use by DMSXCP. If VSAM has not been loaded, a DIAGNOSE 64 (LOADSYS) is issued to load the CMSVSAM DCSS. control DMSCLS processing is nearly the same as processing for DMSBOP. When DMSCLS is entered, it checks for an ACB to process. If there is one, the $$BCVSAM transient work area is initialized and SVC 2 is issued to FETCH the VSAM CLOSE transient $$BCVSAM into the DOS transient area. When the VSAM CLOSE routines complete processing, control returns to the user program, as in the case of OPEN. When DMSXCP processes an EXCP request, it determines if the request is from IKQLAB (i.e. to read the SYSRES label information). If so, the label information area record is filled in from the appropriate DOSCB. (DM SXCP determines that the caller is IKQLAB by comparing the address of the caller with the address stored in NUCON by DMSDOS, as described above.) section 2. Method of Operation and Program Organization 195 as user requests for VSAK services are handled by DOS/VS VSAK code that resides in the CKSVSAK DCSS. To access this code, as VSAK requests are intercepted by the CKS module DKSVIP, the interface between the as VSAK requests and the CKS/DOS and DOS/VS VSAK routines. Because DKSVIP is in the CKSVSAK segment, it is available only when that segment is loaded. Kodule DKSVIB, which resides in the CKS nucleus, is a bootstrap routine to load the CKSVSAK segment and pass control to DKSVIP. DKSVIP receives control from VSAK request macros in three ways: via SVC (e.g. OPEN and CLOSE), via a direct branch using the address of DKSVIP in the ACB, and via a direct branch to the location of DKSVIP whose address is 256 bytes into the CMSCVT (CKSCVT is a CKS control block that simulates the aS CVT control block) • OS VSAM Program CMS Module DMSSOP OPEN ACBl DMSSOP19 DMSVIP DMSSOP20 CMSDOS DCSS DOS Transient Area DMSDOS $$BOVSAM DMSBOP CMSVSAM DCSS IKQVOPEN DMSCLS IKWVCLS 53. Relationship in Storage Between the User Program, Routines, and the CKSDOS and CKSVSAM DCSSs. The description below illustrates the logic of that control flow. overall DKSVIP gains control from DKSSOP when an as svc 19, 20 or 23 (CLOSE TYPE=T) is issued. It also gains control on return from execution of a VSAK function, as described below. DKSVIP performs five main functions: • Initializes the CMS/DOS VSAK processing. • Simulates an as VSAM OPEN .acro. • Simulates an as VSAM CLOSE macro. • Simulates an as VSAM control block .anipulation .acro (GENCB, KODCB, SHOWCB, or TESTCB) • environment for • Processes as VSAK I/O macros. 196 B-disk tor OS or DOS User $$BCVSAM DOSCLOSE BALR 14,15 Figure Figure 53 shows the relationships in storage between the user program, the as simUlation and interface routines, and the CMSDOS and CKSVSAM DCSSs. DOSOPEN BALR 14,15 CLOSE ACBl This last technique is used by the code generated from the as VSAK control block manipulation macros (GENeS, SHOWCB, TESTCB, That is, the address at 256 into CVT is KODCB). assumed to be that of a control block that is at displacement X'12' has the address of the VSAK control block manipulation routine. To ensure that DKSVIP receives control from these requests, the address of DKSVIP is stored at 256 bytes into CKSCVT. However, until the CKSVSAM segment is loaded, the address at CMSCVT+256 is the address of module DMSVIB rather than the address of DKSVIP. The address of DKSVIP replaces that of DKSVIB when CKSVSAK is loaded. Both DKSVIB nd DKSVIP have pointers to themselves at 12 bytes into themselves to ensure that this technique works. as the as simulation and J:!!:!!ig!i~i!!g :t.!!~ ~~'§L!1Q'§ ];;!!!,i!:Q!!'!!~'!!! R!:Q£~22i!!g I/S AMF \\-' Interface !QI .Q.§ !'§A~ DKSVIP gets control when the first VSAK .acro is encountered in the user program. Initialization processing begins at this time. The CMSDOS DCSS is loaded by issuing the command SET DOS ON (VSAK). ASSGN commands are also issued at this ti.e according to the user-issued DCBL's as indicated in the DOSCB chain. Once this initialization completes, DMSVIP processes the VSAM request. After the initialization, DKSVIP first checks to determine which VSAM function is being requested, OPEN, CLOSE, or a control block manipulation macro. For OPEN processing, the DOSSVC bit in NUCON is set on and control passes to DMSBOP via SVC 2. Once the CKS/DOS routines are in control, IBK VK/370: system Logic and Problem Determination Guide execution of the VSAM fUnction is the same as for the DOS VS1~ functions described above. On return from executing the OPEN routine, the address of another entry point to D"SVIP, at label DMSVIP2, is placed in the ACB for the data set just opened, the DOSSVC bit is turned off, and control is passed to D"SSOP, which returns to the user program. D"SVIP2 is the entry point for code that performs linkage to the VSA" data .anagement phase IKQVSM. This is done after the first OPEN because it is assumed that, once opened, the user performs I/O for the phase, e.g. a GET or PUT operation. When the linkage routine is entered, the DOSSVC bit is set on and control is given to the VSA" data management routine IKQVS". On return from IKQVSM DMSVIP turns off the DOSSVC bit and returns control to the user program. (Refer to Simulate as VSA" I/O Macros in this section.) If an error return is provided for TESTCB, the address of DMSVIP4 is SUbstituted in the PLIST. This allows DMSVIP to regain control from VSA" so that the DOSSVC bit can be turned off. The error routine is then given control after the address is returned to the PLIST. DftSVIP simulates the as GET, PUT, POINT, EBDREQ, ERASE, and CHECK I/O macros. First, the OS request code in register 0 is mapped to a DOS/!S request code. The RPL or chain of RPLs 1S rearranged to DOS format (unless that has already been done) • If there is an ECB address in the OS BPL, a flag is set in the new DOS RPL and the ECB address is saved at the end of the RPL. For CLOSE processing, the DOSSVC bit is set on and control is passed to the CMS/DOS routine D"SCLS via SVC 2. As in the case of OPEN, once control passes to the CMS/DOS routine, execution of the VSA" function is the same as for the DOS VSAM functions described above. On return from executing the VS1" CLOSE, the DOSSVC bit is turned off and control passes to D"SSOP, which returns to the user program. Asynchronous I/O processing is simulated by setting active exit returns inactive in the user EXLST. The exception to this is the JBNAD exit which need not be set inactive since it is not an error exit. Setting error exits to be inactive prevents VSAM from taking an error exit, thus allowing such an exit to be deferred until a CHECK can be issued for it. The DOS IKQVS". macro is then issued via a BALB to DOS error codes returned in the RPL PDBK field that do not exist in as are mapped to their OS equivalents= If the user has specified synchronous process1ng, this return code is passed unchanged in register 15. D"SVIP simulates the GENCE, "ODCB, SHOWCB, and TESTCB control block manipulation macros. GENCB PROCESSING: When a GENCB macro is isstied ;ith-BLK;ics--or BLK=EXLST specified, the GENCB PLIST is passed unmodified to IKQGEN for execution. If GENCB is issued with BLK=RPL and BCB=address specified, the PLIST is rearranged to exclude the ECB specification, because DOS/VS does not support BCB processing. The GENCB PLIST is then passed to IKQGEN for execution. ~Q~£~, SHOWCB, AND TESTCB ~~Q£~~~!!~: When MODCB, SHOWCB: or-TESTCB-is--issued, the OS ACB, RPL, and EXLST control blocks are reformatted, if necessary, to conform to DOS/VS formats. For "ODCB and SHOWCB, the requests are passed to IKQT"S for processing. When "ODCB is issued with EXLST= specified, ensure that the exit routines return control to entry point D"SVIP3. For TESTCB, check for any error routines the user may have specified. If the TESTCB specified RPL= and IO=CO~PLETE, a not equal result is passed to the user. All other TESTCD requests are passed to DOS and the new PSW condition code indicates the results of the test. Por asynchronous processing, return codes are cleared before return and any exit routines set inactive are reactivated in the EXLST. Also, all ECEs are set to WAITING status. CHECK PROCESSING: For CHECK processing, return -in-the--RPL FDBK field are checked to determine the results of the I/O operation. If there is an active exit routine provided for the return code, control is passed to that routine. Also, all WAITING EeBs are posted with an equivalent completion code. codes If no active exit routine is provided or if the exit routine returns to VSAM, the return code is placed in register 15 and control is returned to the instruction following the CHECK. Two types of support for error routine processing are provided in DMSVIP. Entry point DMSVIP3 provides support for user exit routines; entry point DMSVIP4 provides support for EBET error returns. Section 2. Method of Operation and Program Organization 197 M~]~ EXIT ROUTINE PROCESSING: DMSVIP provides support-for--OS-YSAM--I/o-error exits at entry point DMSVIP3. At this entry point the DOSSVC bit is turned off and the user storage key is restored. The address of the user routine is recovered from VIp·s saved exit list (either the primary exit list in the work area or the overflow exit list, OEXLSA). Control then passes to the appropriate exit routine. If the routine is one that returns to VSAM, the DOSSVC flag is set ON and VSAM processing continues. DMSVIP can save the addresses of up to 128 exit routines during execution of a user program. ERET ERROR ~~YI!!] g~~~I~~l!Q: DMSVIP provides support-for os VSAM ERET exit routines used in conjunction with the TESTCB macro. This support is located at entry point DMSVIP4. At DMSVIP4, the DOSSVC bit is turned off and the user storage key is restored. The address of the ERET routine is recovered from the work area and control passes to that routine. The ERET VSAM. COMPLETION PROGRAMS routine may PROCESSING not return FOR OS These functions are simulated to yield the same results as seen from the processing program, as specified by OS program logic manuals. However, they are supported only to the extent stated in CMS documentation and to the extent necessary to successfully execute OS language processors. The user should be aware that restrictions to OS functions as viewed from OS exist in CMS. Certain TSO Service routines are provided to allow the Program Products to run under CMS. The routines are the Command Scan and parse Service Routines and the Terminal I/O Service Routines. In addition the user 'must provide some initialization as documented in TSO TMP Service Routine initialization. The OS functions that CMS simulates are shown in Figure 54. control to AND DOS VSAM When an OS or DOS VSAM program completes, control is passed to module DMSVSR, which "cleans up" after VSAM. DMSVSR can be called from three routines after OS processing: • DMSIRT, if processing completes without system errors or serious user errors. • DMSEXT, if the user program is used of an EXEC file. • DMSABI, if there are system errors or user program abnormally terminates. After DOS VSAM processing is called by DMSDOS. When in a CMS environment, a processor or a user-written program is executing and utilizing Os-type functions, OS is not controlling this action, CMS is in control. Consequently, it is not OS code that is in C~S, but routines to simulate, in terms of CMS, certain as func~ions essential to the support of OS language processors and their generated code. TSO macros that support the use of the terminal monitor program (TMP) service routines are contained in TSOMAC MACLIB. The macro functions are as described in the TSO TMP documentation with the exception of PUTLI.E, GETLINE, PUTGET, and TCLEARQ. Before using the TSO service routines, the calling program performs the following initialization: 1. Stores the address of the command line as the first word in the command processor parameter list (CPPL) • The TSOGET macro puts the address of the CPPL in register 1. 2. Initializes CMS macro. 3. Clears the ECT field that address of the I/O work area 4. Issues the STACK macro to define the terminal as the primary source of input. as part the comFletes, DMSVSR DMSVSR issues an SVC 2 to execute the DOS transient routine $$BACLOS. $$BACLOS first checks for any OPEl VSAM files. If any are open, SVC 2 is issued to $$BCLOSE (DMSCLS) to close the files. If there are no open files or if all ACB·s have been closed, $$BACLOS issues SVC 2 to $$BEOJ4, an entry point in DMSVSR. At $$BEOJ4, a PURGESYS DIAGBOSE 64 is issued to purge the CMSVSAM DCSS. DMSVSR then checks to see if an as program has completed processing. If this is the case, the SET DOS OFF command is issued and control returns to the caller. storage using the STRINIT contains the (ECTIOWA). Most of the simulated supervisory OS blocks are contained in the following control blocks: control two CMS CMSCVT simulates the communication vector table (CVT). Location 16 contains the address of the CVT control section. 198 IBM VM/370: system Logic and Problem Determination Guide SYC Nuaber 00 01 02 03 04 05 06 07 08 09 10 11 \ 13 "1.\14 18 19 20 21 22 23 24 25 35 40 41 42 44 46 47 48 51 56 \. 57 60 62 63 64 68 69 93 \. 94 ~96 -. OS ftacro Punction Siaulation Routine IDAP WAIT POST BXIT GETftAIN PREEMAIN LINK ICTL LOAD DBLBTE GETftAIN/ PRBBMAIB GETPOOL TIMB ABEND SPIB BLDL/PIND OPBN CLOSE STOW OPENJ TCLOSE DEYTYPE TRKBAL WTO/WTOR BXTRACT IDENTIFY ATTACH CHAP TTIMER STIftER DEQ SNAP ENQ FREEDBUF STAE DETACH CHKPT RDJFCB SYNAD BACKSPACE GET/PUT READ/WRITE NOTE/POINT CHECK TGET/TPUT TCLEARQ STAI DMSSVT DftSSYB DftSSVN DftSSLB DftSSMN DftSSMN DftSSLN DftSSLB DftSSLN DftSSLB DMSSMN access voluaes Waits for an I/O coapletion Posts the I/O coapletion Returns from linked phase conditionally acquires user free storage Releases user-acquired free storage Links control to another load phase Deletes, then links control to another load phase Reads another load phase into storage Deletes a loaded phase Manipulates free user storage DftSSftN DftSSVT DftSSAB DftSSVT DftSSVT DftSSOP DMSSOP DftSSVT DftSSOP DftSSOP DMSSVT DftSSVT DftSSVT DMSSVT DftSSVT DftSSVT DftSSVT DMSSVT DftSSVT DftSSVT DftSSVT DMSSVT DftSSVT DMSSVT DftSSVT DftSSVT DMSSVT DftSSVT DftSSVT DMSSQS DftSSBS DMSSCT DftSSCT DftSSVB DMSSVN DMSSVT siaulates an SVC10 Gets the time of day Terainates processing Processes program interruptions Manipulates simulated partitioned data files Activates a data file Deactivates a data file ftanipulates partitioned director1es Activates a data file Temporarily deactivates a data file Obtains device-type physical characteristics Effective NOP Communicates with the terminal Effective NOP Adds entry to loader table Effective LINK Effective NOP Accesses or cancels timer Sets timer interval and timer exit routine Effective NOP Dumps specified storage areas Effective NOP Releases a free storage buffer Allows processing program to decipher abend condition Effective NOP Effective NOP Obtains information from FILEDEP command Handles data set error conditions Backs up to the beginning of the previous record Manipulates data records Manipulates data blocks Accesses or changes relative track address Tests ECB for completion and errors Terminal processing Clears input queue Adds or deletes an attention exit level I I -------------------------------Reads or writes direct Pigure 54. OS Punctions that CftS Simulates CMSCB allocated from system free storage whenever a PILEDEP command or an OPEN (SYC 19) is issued for a data set. The CftS control block consists of the CMS file Control block (PCB) for the data file management under CftS, and simulation of the job file control block (JFCB), input/output block (lOB), and data extent block (DEB). The name of the data set is contained in the FCB, and is obtained from the FILEDEF argument list, or from a predetermined file name supplied by the processing problea program. CftS also utilizes portions of the supplied data control block (DCB) and the data event control block (DECB). The TSO control blocks utilized are the command program parameters list (CPPL), user profile table (UPT), protected step control block (PSCB), and environment control table (ECT) • CftS provides a number of routines to simUlate certain operating system functions used by programs such as the Assembler and the FORTRAN and PL/I compilers. Some of the SVC simUlation routines are located in the disk resident transient module DftSSYT. Whenever one of the SVC routines in DMSSVT or is invoked, that routine is loaded into the transient area. The following paragraphs describe how these simulation routines work. section 2. ftethod of Operation and Program Organization 199 !Q!~-§!£_~: Writes and reads the source code spill file, SYSUT1, during language compilation for PL/I Optimizer and ANSI COBOL Compilers. WAIT-SVC 1: Causes the active task to wait until one--of-more event control blocks (ECBs) have been posted. For each specified ECB that has been posted one is subtracted from the number of events specified in the WAIT macro. If the number of events is zero by the time the last ECB is checked control is returned to the user. If the number of events is not zero after the last ECB is checked and the number of events is not greater than the number of ECBs, the active task is put into a wait state until enough ECBs are posted to set the number of events at zero. When the event count reaches zero the wait bits are turn off in any ECBS that have not been posted and control is returned to the user. If the number of events specified is greater than the number of ECBs the system abnormally terminates with an error message. All options of WAIT are supported. ~Q§!=§!£_~: Causes the specified event control block (ECB) to be set to indicate the occurrence of an event. This event satisfies the requirements of a WAIT macro instruction. All options of POST are supported. The bits in the ECB are set as follows: ~~! o 1 2-7 .§~!!!!!g 0 1 Value of specified completion code EXIT-SVC 3: This SVC is for CMS internal use only:--It-is used by the CMS routine DMSSLN to acquire an SVC SAVEAREA on return fron an executing program that had been given control by LINK (SVC 6), XTCL (SVC 7) or ATTACH (SVC 42). GETMAIN-SVC 4: Control is passed to the GETMAIN entry--point- in the DMSSMN storage resident routine. The mode is determined: VU, VC, EC. A call is made to GETBLK to obtain the block of storage. Control blocks of two fullwords precede each section of a vailable storage: (1) the address of the next block, (2) the size of this block. The head of the pointer string is located at the words MAIRSTRT - initial free block, and MAINLIST - address of first link in chain of free block pointers. All options of GETMAIN are supported. FREEMAIN-SVC 5: Releases a block of free block is part of segmented storage, a control block of two fullwords is placed at the beginning of the released area. Adjustment is made to include this block in the chain of available areas. All options of FREEMAIN are supported. ~torage:---If-the LINK-SVC 6: Program transfer is controlled by the--nocleus routine, DMSSLR. The LINK macro causes program control to be passed to a designated phase. If the COMPSWT bit within the byte OSSFLAGS is on, loading is done by calling LOADMOD to bring a CMS MODULE file into storage. If this flag is off, dynamic loading is initiated by calling LOAD. A GETMAIR is issued to obtain enough storage so that the loader 200 (DMSLDR) may relocate the phase in storage. A chain of link request blocks is built to record the old SVC PSW, and the location and size of the phase storage area. If the routine is already in storage, determined by scanning the load request chain, no LOAD or LOADMOD is done. Control is passed directly to the routine. CMS ignores the DCB and HIARCH! options; all other options of LINK are supported. XCTL-SVC 7: XCTL first deletes the current phase from ~torage. Processing then continues as for LINK-SVC 6, as previously described. CMS ignores The DCB and HIARCH! options; all other options of XCTL are supported. bQ!Q-§!£_§: Control is passed to DMSSLN8 located in DMSSLN when a LOAD macro is issued. If the requested phase is not in storage, a LOAD or LOADMOD is issued to bring it in. Control is then returned to the caller. CMS ignores the DCB and HIARCHY options; all other options of LOAD are supported. ~~b~I~=~!£_2: Control is passed to DMSSLN9 located in DMSSLN when a DELETE macro is issued. Upon entry, DELETE checks to see whether the module specified was loaded using LOADMOD or dynamically loaded by LOAD or INCLUDE. If it was loaded by LOAD MOD control is returned to the user. If it was dynamically loaded, the responsibility count is decremented by one and if it reaches zero, the storage is released using FREEMAIN, and control is returned to the user. All options of DELETE are supported. Code 4 is returned in register 15 if the phase is not found. ~1~~!lML~~~~~A!M-S!£_jQ: Control is passed to the SVC 10 entry point in DMSSMN. Storage management is analogous to SVC 4 and 5, respectively. All options of GETMAIN and PREEMAIN are supported. Subpool specifications are ignored. ~ll~QQ1: Gets control via an OS IECQBFGI. IECQBPGI allocates an storage using GETMAIN, sets up a block" in the free storage, stores the buffer control block in the returns control to the caller. LINK macro to area of free buffer control the address of DCB, and then l!~I=§!£_jj: This routine (TIME) located in DMSSVT receives control when a TIME macro instruction is issued. A call is made (by SIO or DIAGNOSE) to the RPQ software chr6nological timer device, X'OPF'. The real time of day and date are returned to the calling program in a specified form: decimal (DEC) binary (BIN), or timer units (TU). All options of TIME except MIC are supported. ABEND-SVC 13: This routine (DMSSAB) receives controI--when either an ABEND macro or an unsupported OS/360 SVC is issued. If an SVC 13 was issued with the DUMP option and either a SYSUDUMP or SYSABEND ddname had been defined via a call tD DMSPLD ~ILEDEP), a SNAP (SVC 51) specifying PDATA=ALL is issued to dump user storage to the defined file. A check is made to see if there are any outstanding STAE requests. If not, or if an unsupported SVC was issued, DMSCWR is called to type a descriptive error message at the terminal. Next, DMSCWT is called to wait until all terminal activity has ceased, IBM VM/370: System Logic and Problem Determination Guide and then, control is passed to the ABEND recovery routine. If a STAE macro was issued, a STAE work area is built and control is passed to the STAE exit routine. After the exit routine is complete, a test is made to see if a retry routine was specified. If so, control is passed to the retry routine. Otherwise, control passes to DMSABN unless the task that had the ABEND was a subtask. In that case, the resume'pSW in the link block for the subtask is adjusted to point to an EXIT instruction (SVC 3). The EXIT frees the subtask, and the attaching task is redispatched. SPIE-SVC 14: This routine (SPIE) receives control-when a SPIE macro instruction is issued. When it gets control, SPIE inserts the new program interruption control area (PICA) address into the program interruption element (PIE). The program interruption element resides in the program interruption handler (DMSITP). It then returns the address of the old PICA to the calling program, sets the program mask in the calling program's PSW, and returns to the calling program. All options of SPIE are supported. ~1R1Ll!!R1IIE~_Ql=2!~_1~: SVC to entry points in DMSSOP. If an os disk is specified, DMSSVT branches and links to DMSROS. See BLDL and FIND under description of BPAM routines in DMSSVT. STOW-SVC 21: See STOW under description of BPAM routines-In DMSSVT. ~R~!L~R~!~=2!~_12L~~: OPEN simulates the data management function of opening one or more files. It is a nucleus routine and receives control from DMSITS when an executing program issues an OPEN macro instruction. The OPEN macro causes an SVC to DMSSOP. DMSSOP simulates the OPEN macro. The DISP and RDBACK options are ignored by CMS; all other options of OPEN and OPENJ are supported. ~1Q2ILI~1Q2~=2!~_~QL~J: CLOSE and TCLOSE are simulated in the nucleus routine DMSSOP. It receives control whenever a CLOSE or TCLOSE macro instruction is issued. The CLOSE macro causes an SVC to DMSSOP. DMSSOP simulates the CLOSE macro. CMS ignores the DISP option; all other options of CLOSE and TCLOSE are supported. ~~!IXg~=§!~_~~: This routine (DEVTYPE), located in DMSSVT, receives control when a DEVTYPE macro is issued. Upon entry, DEVTYPE moves Device Characteristic Information for the requested data set into a user specified area, and then returns control to the user. All options of DEVTYPE are supported. IRK~!~=2!~_~2: DMSSVT. ~IQL~IQ~=2!~_J2: TRKBAL is a NOP located in This routine (WTO), located in DMSSVT, receives control when either a WTO or a iTOR macro instruction is issued. For a WTO, it constructs a calling sequence to the DMSCWR function program to type the message at the terminal. (The address of the message and its length are provided in the parameter list that results from the expansion of the WTO macro instruction.) It then calls the DMSCWT function program to wait until all terminal I/O activity has ceased. Next, it calls the DMSCWR function program to type the message at the ter.inal and returns to the calling program. All options of WTO and WTOR are supported except those concerned with multiple console support. Por a WTOR macro instruction, this routine proceeds as described for WTO. However, after it has typed the message at the terminal it calls the DMSCRD function program to read the user's reply from the terminal. When the user replies with a message, it moves the message to the buffer specified in the WTOR parameter list, sets the completion bit in the ECB, and returns to the calling program. ~!l~!~l=§!~_~Q: This routine (EXTRACT), located in DMSSVT receives control when an EXTRACT macro is issued. Upon entry, EXTRACT clears the user provided answer area and returns control to the user with a return code of 4 in register 15. IDENTIFY-SVC 41: Located in DMSSVT, this routIne-Creates a new load request block with the requested name and address if both are valid. The new entry is chained from the existing load request chain. The new name may be used in a LINK or ATTACH macro. ATTACH-SVC 42: Located in DMSSLN, ATTACH operates-rike a LINK (SVC 6), with additional capabilities. The user is allowed to specify an exit address to be taken upon return from the attached phase; also, an ECB is posted when the attached phase has completed; and a STAI routine can be specified in case the attached phase abends. The DCB, LPMOD, DPMOD, HIARCHY, GSPV, GSPL, SHSPV, SHSPL, SZERO, PURGE, ASYNCH, and TASKLIB options are ignored; all other options of ATTACH are supported. Because CMS is not a multitasking operating system, a phase requested by the ATTACH macro must return to CMS. ~~AR=~!£_~~: CHAP is a NOP located in DMSSVT. TTIMER-SVC 46: Checks to ensure that the value Ii-the--timer (hex location 50) was set by an STIMER macro. If it was, the value is converted to an unsigned 32 bit binary number specifying 26 microsecond units and is returned in register o. If the timer was not set by an STIMER macro a zero is returned in register 0, after setting register 0, the CANCEL option is checled. If it is not specified, control is returned to the user. If it is specified, the timer value and exit routine set by the STIMER macro are cancelled and control is returned to the user. All options of TTIMER are supported. ~Il~]]=~!£_~l: Checks to see if the WAIT option is specified. If so, control is returned to the user. If not, the specified timer interval is converted to 13 microsecond units and stored in the timer (hex location 50) • If a timer completion exit routine is specified, it is scheduled to be given control after completion of the specified time interval. If not, no indication of the completion of the time interval is scheduled. After checking and handling any specified exit routine address, control is returned to the user. All options of STIMER are supported. The TASK option is treated as though the REAL option had been specified. section 2. Method of operation and Program organization 201 RIQ:~!~_!~: DEQ is a HOP located in DftSSVT. SIAP-SVC 51: Control is passed to SlAP in iiiissVT-;iien a SlAP .acro is issued. SlAP fills in a PLIST with a beginning and ending address and calls DftPEIEC. DftFEXBC du.ps the specified storage along with the registers and low storage to the printer. Control is then returned to SlAP and SlAP checks to see if any more addresses are specified. It continues calling DftPEXBC until all the specified addresses have been du.ped to the printer. Control is then returned to the user. The DCB, SDATA, and PDATA options are ignored by CftS; all other options of SRAP are supported. J!g=SV£_~§: ERQ is a lOP located in DftSSVT. FRBEDBUF-SVC 51: This routine (FREEDBUF) locatea--lii--iiftSSVT receives control when a FREEDBUF macro is issued. Upon entry, FREEDBUF sets up the correct DSECT registers and calls the FREEDBUF routine in DftSSBD. This routine returns the dyna.icallyobtained buffer (BDAft) specified in the DECB to the DCB buffer control block chain. Control is then returned to the DftSSVT routine which returns control to the user. All the options of PREEDBUF are supported. §!!I~!£_§Q: This routine (STAE) located in DftSSVT receives control when a STAE macro is issued. Upon entry, STAE creates, overlays or cancels a STAE control block (SCB) as requested. Control is then returne~ to the user with one of the following return codes in register 15: Code 00-08 1t~gll!llg An SCB is successfully created, overlaid or cancelled. The user is atte.pting to cancel or overlay a non-existent SCB. o r-----------------, 4 t--- ., lexit address I 8 1-------"'------------\ CHKPT-SVC 63: DMSSVT:----- CHKPT is is a a NOP NOP located in located in RDJFCB-SVC 64: This routine (RDJFCB) receives control--;hen a RDJFCB macro instruction is issuedw When it gets control, RDJPCB obtains the address of the JFCB from the DCBEXLST field in the DCB and sets the JFCB to zero. It then reads the simulated JPCB located in CftSCB that was produced by issuing a FILEDEP into the closed area. RDJFCB calls the STATE function program to determine if the associated file exists. If it does, RDJFCB returns to the calling program. If the file does not exist, 202 ~I!!R=~!£_§~: Located in DMSSVT, SYNAD attempts to simulate the functions SYRADAF and SYRADRLS. SYNADAF expansion includes an SVC 68 and a high-order byte in register 15 denoting an access method. SYNAD prepares an error message line, swap save areas and register 13 pointers. The message buffer is 120 bytes: bytes 1-50, 84-119 blank; bytes 51-120, 1205 INPUT/OUTPUT ERROR nnn OR FILE: "dsna.e"; where nnn is the CftS RDBUF/WRBUF error code. All the options of SYRAD are supported. SYNADRLS expansion includes SVC 68 and a high order byte of X'FF' in register 15. The save area is returned, and the message buffer is returned to free storage. BACKSPACE-SVC 69: Also in DftSSVT. For a tape, i--BSi-coiiana--is issued to the tape. Por a direct access data set, the CftS write and read pointers are decremented by one. Control is passed to BACKSPACE in DftSSVT when a BACKSPACE macro is issued. BACKSPACE decrements the read write pointer by one and returns control to the user. No physical tape or disk adjustments are made until the next READ or WRITE macro is issued. All the options of BACKSPACE are supported. !§I!L!RQ!=§!£_~]: Located in DftSSVN, this routine receives control when a TGET or TPUT macro is issued. It is provided to support TSO service routines needed by program products. TGET reads a terminal line; TPUT writes a ter.inal line. The return code is zero if the operation was successful and a four if an error was encountered. TCLEARQ is located in DftSSVN and causes the terminal input queue to be cleared via a call to DESBUF. At completion a return is made to the user. Iparameter list address I ____ .J 12 ' DETACH Rote: The switch set by the RDJFCB is tested by the FORTRAI object-time direct-access handler (DIOCS) to determine ~hether or not a referenced disk file exists. If it does not, DIOCS initializes the direct access file. J£LI!~2=§1£_2!: 10 or pointer to next SCBI DETACH-SVC 62: DMSSVT:------ BDJFCB sets a switch in the DCB to indicate this and then returns to the calling program. RDJFCB is located in DftSSVT. All the options of RDJFCB are supported. ~J!X=§l£_~§: Located in DKSSVT, STAX gets and chains a CMSTAXE control block for each STAX SVC issued with an exit routine address specified. The chain is anchored by TAXEADDR in DMSNUC. If no exit address is specified the most recently added CftSTAXE is cleared from the chain. If an error occurs during STAX SVC processing, a return code of eight is placed in register 15. The only option of STAX which may be specified is 'EXIT ADDRESS'. Sn;!LR!!! : descr iption. ]IJ~L!]!!J: See the DlISSQS prolog for OS RBAD and WRITE macros branch and link to DMSSBS. DMSSBS branches and links to DftSSEB and, if the disks is an OS disk, DMSSEB branches and link to DMSROS. See DMSSBS for description. IBM Vft/310: System Logic and Problem Deter.ination Guide !QI~LRQ!!!L~!!~l!IE~_fl: os NOTE, POINT, and FIND (type c) macros branch and link to entry points in DMSSCT. If the disk is an as disk, DMSSCT branches and links to DMSROS. See DMSSCT for descriptions. f~~£!: See the DftSSCT prolog for description. Notes on using the as simulation routines: • CftS files are physically blocked in 800-byte blocks, and logically blocked according to a logical record length. If the fi1emode of the file is not 4, the logical record length is equal to the DCBLRECL and the file must always be referenced with the same DCBLRECL, whether or not the file is blocked. If the fi1emode of the file is 4, the logical record length is equal to the DCBBLKSI and the file must always be referenced with the same DCBBLKSI. • When writing CftS files with a fi1emode number other than four, the as simulation routines deblock the output and write it on a disk in unblocked records. The simulation routines delete each 4-byte block descriptor word (BDW) and each 4-byte record descriptor word (RDW) of variable length records. This makes the OS-created files compatible with CMS-created files and CMS utilities. When CMS reads a CftS file with a fi1emode number other than four, CftS blocks the record input as specifies and restores the BDW and RDW control words of variable length records. If the CftS fi1emode number is four, CMS does not unblock or delete BDWs or RDWs on output. CMS assumes on input that the file is blocked as specified and that variable length records contain block descriptor words and record descriptor words. • • To set the READ/WRITE pointers for a file at the end of the file, a FILEDEF command must be issued for the file specifying the ftOD option. A file is erased and a new one created if the file is opened and all the following conditions exist: The OUTPUT or specified. OUTIN option of OPEN is The TYPE option of OPEN is not J. The dataset organization option of the DCB is not direct access or partitioned. A FILEDEF command has not been issued for data set specifying the ftOD option. • The results are unpredictable if two DCBs read and write to the same data set at the same time. ACCESS COftftAID 11Q!: The module DftSACC gets control -fIrst- when you invoke the ACCESS com.and. DMSACC verifies parameter list validity and sets the necessary internal flags for later use. If the disk you access specifies a target mode of another disk currently accessed, DMSACC calls DftSALU to clear all pertinent information in the old active disk table. DMSACC then calls DMSACF to bring in the user file directory of the disk. As soon as DMSACF gets control, DMSACF calls DMSACM to read in the master file directory of the disk. Once DMSACM reads the label of the disk, and determines that it is an OS disk, DMSACM calls DMSROS (ROSACC) to complete the access of the OS disk. Upen returning from DMSROS, DMSACM returns immediately to DMSACF, bypassing the master file directory logic for CMS disks. DftSACF then checks to determine if the accessed disk is an OS disk. If it is an OS disk, DMSACF returns immediately to DMSACC, bypassing all the user file directory logic for OS disks. DMSACC checks to determine if the accessed disk is an OS disk; if it is, another check determines if the accessed disk replaces another disk to issue an information message to that effect. Another check determines if you specified any options or fi1eid and, if you did, a warning message appears on the terminal. Control now returns to the calling routine. ~!11~11 £Q~~!!~ FLQ]: DMSFLD gets control first when you issue a CMS FILEDEF command. DMSFLD adds, changes, or deletes a FILEDEF control block (CMSCB) and returns control to the calling routine. LISTDS COMMAND l~Qj: The module DMSLDS gets control -fIrst- when you invoke the LISTDS command. DMSLDS verifies parameter list validity and calls module DMSLAD to get the active disk table associated with the specified mode. DMSLDS reads all format 1 DSCB and if you specified the PDS option and the data set is partitioned, DMSLDS calls DKSROS (ROSFIND) to get the members of the data set. After displaying the DSCB (or DSCB) on you console, DMSLDS returns to"the calling routine. ~Q!JIILJ £~AAA!~ l~Qj: The module DftSMVE gets control first when you issue a CftS ftOVEFILE command. DMSMVE calls DMSFLD to get an input and output CMSCB and, if the input DftSCB is for a disk file, DMSMVE calls DMSSTT to verify the existence of the input file and get default DCB parameters in absence of CMSCB DCB parameters. DMSMVE uses OS OPEN, FIND, GET, PUT, and CLOSE macros to move data from the input file to the output file. After moving the specified data, control returns to the calling routine. ~~I~! gQ~~J!] ILO!: The module DMSQRY gets control first when you invoke the QUERY co.mand." DMSQRY verifies parameter list validity and calls DMSLAD to get the active disk table associated with the specified .ode. DMSQRY displays all the information that you requested on your console. When DMSQRY finishes, control returns to the calling routine. RELEASE COMMAND FLOW: The module DMSARE gets control fIrst--when- you invoke the RELEASE command. DMSARE verifies parameter list validity and checks to determine if the disk you want to release is accessed. If the disk you want to release is currently active, DMSARE calls DMSALU to clear all pertinent information section 2. Method of Operation and Program organization 203 associated with the active disk. DMSALU first checks the active disk table for any existing CftS tables kept in free storage. If the disk you want to release is an as disk, DMSALU does not find any tables associated with a CMS disk. If the disk is an as disk, DMSALU releases the as FST blocks (if any) and clears any as FST pointers in the as file control blocks. DMSALU then clears the active disk table and returns to DftSARE. DMSARE then clears the device table address for the specified disk and returns to the calling routine. STATE COMMAND I~Q!: The module DMSSTT gets control--first when you invoke the STATE command. DMSSTT verifies the parameter list validity and calls module DMSLAD to get the active disk table associated with the specified mode. Upon return from DMSLAD, DMSSTT calls DMSLFS to find the file status table (FST) associated with the file you specified. Once DMSLFS finds the associated FST, it checks to determine if the file resides on an as disk. If it does, DKSLPS calls DMSROS (ROSSTT) to read the extents of the data set. Upon return from DMSROS, DMSLPS returns to DMSSTT. DMSSTT then copies the PST (or OS FST) to the FST copy in statefst and returns to the calling routine. DKSACC MODULE: Once Df:lS ACC determines that the disk--you--want to access is an as disk, it bypasses the routines that perform 'LOGIN UFD' and 'LOGIN ERASE'. If the disk you want to access replaces disk, message DMSACC7241 appears at terminal. an as your If you specified any options or fileid in the ACCESS command to an as disk, a warning message, DKSACC230W, appears to notify you that such options or fileid were ignored. DKSACC returns to the calling routine with a warning code of 4. Y~~!£l MODULE: DKSACF verifies that the disk you want to--access is an as disk and, if it is, exits immediately. DKSACK KODULE: DKSACK saves the disk label and VToc-address-in the ADT block if the disk is an as disk. DMSACK checks to determine if a previous access to an as disk loaded DMSROS. If not, DKSACK calls DKSSTT to verify that DMSROS text exists. Upon successful return froa STATE, DKSACK loads DMSROS text into the high storage area with the same protect key and calls the as access routine (ROSACC) of DMSROS to read the format 4 DSCB of the disk. Upon successful return from DMSROS, control returns to the callin,g routine. Any other errors are treated as general logon errors. If the disk is an as disk, the as FST blocks (if any) to free storage. DMSALU clears the as FST pOinter in all active as file control blocks, decrements the DMSROS usage count and, if the usage count is zero, clears the address of DKSROS in the nucleus area. DMSALU also calls DKSFRET to returns to occupies. free storage which DMSROS DMSARE KODULE: DKSARE ensures that the disk you want--to-relase is an as disk. DKSARE calls DKSALU to release alIOS FST blocks and, if necessary, to free the area DMSROS occupies. Upon return from DKSALU, DKSARE clears the common CMS and as active disk table. • DSN If you specify the parameter DSN as '1', FILEDEF displays the message DKSFLD220R to request you to type in an as data set name with the format Q1.Q2.QN. Q1, Q2, and QN are the qualifiers of an as data set name. If you specify the parameter DSN as Q1.Q2.QN, FILEDEF assumes that Q1, Q2, and QN are the qualifiers of an as data set name, and stores the qualifiers with the format Q1.Q2.QN in a free storage block and chains the block to the FCB. • CONCAT -- If you specify the CONCAT option, FILEDEF assumes that the specified FILEDEF is unique unless a filedef is outstanding with a matching ddname, filename, and filetype. This allows you to specify more than one FILEDEF for a particular ddname. The CONCAT option also sets the FCBCATKL bit in the FCB to allow the as simulation routine to know the FCB is for a concatenated MACLIB. • KEKBER -- If you specify the member option, filedef stores the member name in FCBKEKBR in the FCB to indicate that the as simUlation routine should set the read/write pointer to point to the specified BPAK file member when OPEN occurs. DKSLDS MODULE: DMSLDS saves the return register, sets--itselj-with the nucleus protection key, clears the dsname key, and initializes its internal flag. DMSLDS verifies parameter list validity. The data set name must not exceed 44 characters, and the disk mode (the last parameter before the options) must be valid. DMSLDS joins the quailifiers with dots (.) to for. valid data set names. If you specify the data set name as a question mark (1), DKSLDS prompts you to enter the dsname in exactly the same form as the dsname which appears on the disk. DKSLDS calls DKSLAD to find the active disk table block. If you specify filemode as an asterisk (*), DKSLAD searches for all ADT blocks. If you specify the filemode as alphabetic, DKSLAD finds only the ADT block for the specified filemode. If you specify the dsname (which is optional), DKSLDS sets the channel programs to read by key. If you did not specify a dsname, DKSLDS searches the whole VTOC for format 1 DSCBS and displays all the requested information contained in the DSCB on your console. If you specify the format option, the RECFK, LHECL, BLKSI, DSORG, DATE, LABEL, FKODE, and data set naae appear on you console; otherwise, only the FKODE and data set naae appear. DMSALU ~QYY11: 204 IBM VK/370: system Logic and Problem Determination Guide D~SFRET returns the area If you specify the PDS option, DKSLDS calls the 'find' routine (rosfind) in DKSROS to read the .ember directory and pass back, one at a time, in the fcbmembr field of CKSCB the name of each member of the data set. This occurs if the data set is partitioned. to an OS disk. The ROSSTT routine searches for the correct FCB which a previous FILEDEF associated with the data set. If the DOS environ.ent is active, ROSSTT locates the correct DOSCB that defines a data set described by a previous DLBL. If ROSSTT finds an active FST, control p~sses to ROSSTRET; otherwise, ROSSTT acqu1res the dsname block, places its address in the FCB, and moves the dsname in the FCB to the acquired block. ROSSTT acquires an FST block, chains it to the FST chain, and fills all general fields (dsname, disk address, and disk mode). BOSSTT now reads the for.at 1 DSCB for the data set and checks for unsupported options (BDAM, ISAM, VSAM, and read protect). After processing finishes, DKSLDS resets the nucleus key to the same value as the user key, puts the return code in register 15, and returns to the calling routine. ~QQY~~: DKSLFS verifies that the PST searched for has an OS disk associated with it. DKSLFS calls the DKSROS state routine (ROSSTT) to verify that the data set exists and CKS supports the data set attributes. Upon return from DKSROS, a return code of 88 indicates that the data set was not found, and DKSLDS starts the search again using the next disk in sequence. Any other errors, such as a return code 80, cause DKSLFS to exit i.mediately. A return code of 0 from DKSROS indicates that the data set is on the specified disk. From this point on, execution occurs co.mon to both CKS and OS disks. DKSLFS being- Errors pass control back to the calling routine with an error code. ROSSTT groups together all the extents of the data set (by reading the for.at 3 DSCB if necessary) and checks them for validity. ROSSTT bypasses any user labels that .ay exist and displays a message to that effect. Next, ROSSTT moves the DSCB1 BLKSIZE, LRECL, and RECFM parameters to the OS FST and passes control to rosstret. Q~§~!~ ~~QY1~: If you specify the PDS option and the input 1S from a disk, DKSKVE sets the FCBKVPDS bit and issues an OS FIND macro before opening an output DCB to position the input file at the next member. DKSKVE then stores the input member name in the output CMSCB for use as the output filename. After reaching end-of-file on a member, the message DMSMVE2251 appears, DMSKVE closes the output DCB, and passes control to find the next member. After moving all the members to separate CMS files, movefile displays message DKSMVE226I, closes the input and output DCBS, and returns control to the calling routine. • • ROSACC Routine -- ROSACC gets contr.ol from DMSACM after DMSACM determines that the label of the disk belongs to an OS disk. The ROSACC routine reads the format 4 DSCB of the disk to further verify the validity of the OS disk. ROSACC updates the ADT to contain the address of the high extent of the VTOC (if the disk is a DOS disk) or the address of the last active format 1 DSCB (if the disk is an OS disk), and the number of cylinders in the disk. If the disk is a DOS disk, ROSACC sets a flag in the ADT. Information messages appear to notify you that the disk was accessed in read-only mode. If the disk is already accessed as another disk, another information message appears to that effect. Finally ROSACC zeroes out the ADTFLGl flag in the ADT, sets the ADRFLG2 flag to reflect that an OS disk was accessed, and returns control to the calling routine. ROSSTT Routine -- Verifies the existence of an OS data set and verifies the support of the data set attributes. Note: Within the ROSSTT description, any reference to FCB or CMSCB i.plies a DOSCB if DOS is active. ROSSTT gets control from DMSSTT after DMSSTT determines that the STATE operation is • ROSSTRET Routine -- If the disk is not a DOS disk, rosstret passes control back to the caller. If the specified disk is a DOS disk, rosstret fills in the OS FST BLKSIZE, LRECL, and RECFM fields that were not specified in the DSCB1. If the CMSCB fields are zero, rosstret defaults the. to BLKSIZE=32760, LRECL=32670, and RECFM=U. Control then returns to the calling routine. • ROSRPS Routine ROSRPS reads the next record of an OS data set. Upon entry to the ROSRPS entry point, ROSRPS calls CHKITNT and, if the current CCHHR is zero, SETITNT to ensure the CCHHR and extent boundaries are correctly set. ROSRPS then calls DISKIO and, if necessary, CHKSENSE and GETALT to read the next record. If no errors exist or an unrecoverable error occurred, control returns to the user with either a zero (I/O OK) or an 80 (I/O error) in register 15. If an unrecoverable error occurs, ROSRPS updates the CCWS and buffer pointers as necessary and recalls CHKITNT and DISKIO to read the next record. • ROSFIND Routine -- ROSFIND sets the CCHHR to point to a member specified in FCBMEMBR or, if the FCBMVPDS bit is on, sets the CCHHR to point to the next member higher than FCBHEMBR and sets a new member name in FCBMEMBR. Upon entry at the ROSFND entry point, ROSFND sets up a CCW to search for a higher member name if the FCBMVPDS bit is on, or an equal member name if the FCBMVPDS bit is off. It then calls SETITNT, DISKIO and, if needed, CHKSENSE and GETALT to read in the directory block that contains the member name requested. After reading the block, it is searched for the requested member name. If the member name is not found, an error code 4 returns to the calling routine. If an I/O error occurs while trying to read the PDS block, an error code 8 returns to the calling routine. If the member name is found, section 2. Method of Operation and Program Organization 205 TTRCRVRT is called to convert the relative track address to a CCBB and pass the address of the member entry to the calling routine. • ROSNTPTB Routine -- ROSRTPTB gets the current TTR, sets the current CCBBR to the value of the TTR, and backspaces to the previous record. Upon entry at the ROSNTPTB entry point, ROSNTPTB checks to determine if a NOTE, POINT, or BSP operation was requested. If register 0 is zero, ROTE is assumed. The note routine calls CBRCNVRT to convert the CCBB to a relative track and returns control to the calling routine with the TTR in register O. If register 0 is positive upon entry into DMSROS, POINT is assumed and ROSRTPTB loads a TTR from the address in register 0 and calls TTRCNVRT and SETXTNT to convert the TTR to a CCRRR. Then control returns to the calling routine. If register 0 is negative upon entry into DMSROS, BSP (BACKSPACE) is assumed. The backspace code checks to determine if the current position is the beginning of a track. If not, the backspace code decrements the record number by one and control then returns to the calling routine. If the current position is the beginning of a track, the backspace code calls CBRCRVRT to get the current CCBB. The backspace code then calls rdcnt to get the current record number of the last record on the new track, calls setxtnt to set the new extent boundaries, and returns control to the calling routine. • HOTE Routine -- Upon entry to note, DMSSCT checks to determine if the DCB refers to an OS disk. If it does, DMSSCT calls DMSROS (ROSHTPTB) to get the current TTR. Control then returns to the user. • POINT Routine -- upon entry to point, DMSSCT checks to determine if the DCB refers to an os disk. If it does, DMSSCT calls DMSROS (ROSNTPTB) to reset the current TTR, calls CKCOHCAT and returns control to the calling routine. • CKCONCAT Routine -- Upon entry to CKCONCAT, DMSSCT checks to determine if the PCB MACLIB COHCAT bit is on. If it is on, DCBRELAD+3 sets the correct os PST pointer in the PCB and returns control to the calling routine. If the PCB M~CLIB COHCAT bit is off, control returns to the calling routine. • • 206 PIHD (type_C) Routine -- If the DCB refers to an OS disk, DMSSCT calls DMSROS (ROSNTPTB) to update the TTR and control returns to the calling routine. BOBROUTR Routine -- If the PCB OS bit is on, control passes to OSBEID. Otherwise, if no special I/O routine is specified in PCBPBOC, control passes to BOB2 in DMSSEB. • OSREAD Routine DMSSEB calls DMSROS to perform a read or write and then control passes to EOBRETRN which, in turn, passes control back to DMSSBS. DMSSBS passes control back to the routine calling the read or write macro operation. ~~~~g~ ~Q~~~~ -- If the MICLIB CONCAT option is on in the CMSCB. OPEN checks the MICLIB names ion the global list and fills in the addresses of OS FSTS for any MACLIBS on OS disks. The CMSCB of the first MACLIB in the global list merges and initializes CMSCBS. If the CMSCB refers to a data set on an OS disk, DMSSOP checks to ensure that the data set is accessible and the DCB does not specify output, BDAM, or a key length. If any errors occur, error message DMSSOp036E appears and DMSSOP does not open the DCB. DMSSOP fills them in from the OS PST for the data set. If the CMSCB fcbmembr field contains a member name (filled in by FILEDEP with the member option), DMSSOP issues an OS PIND macro to position the file pointer to the correct member. If an error occurs on the call to the FIND macro, error message DMSSOP036E appears and DMSSOP does not open the DCB. • BSP (backspace) Routine Upon entry, backspace checks for the PCB os bit. If it is on, the BSP routine calls DMSROS (ROSNTPT~ to backspace the TTR and control returns to the calling routine. • PIID (type_D) Routine -- Upon entry to find, the find routine checks the PCB OS bit. If it is on, the FIND routine takes the OS FST address from the CMSCB or, if the CONCAT bit is on, from the global MACLIB list. The PIND routine then calls DMSROS (ROSFIND) to find the member name and TTR. DMSROS searches for a matching member name or, if the PCBMVPDS option is specified, a higher member name. If the DMSROS return code is 0 or 8, or if the PCBCATML bit is not on, control returns to the calling routine with the return code from DMSROS. If the return code is 4 and the PCBCATML bit is on, DMSSVT checks to determine if all the global MACLIBS were searched. If they were, control returns to the calling routine with the DMSROS return code. If they were not, DMSSVT issues the PIND on the next MACLIB in the global list. • BLDL Routine--BLDL list DATA = PP LL NAME TTR KZC If the DCB refers to an OS disk, the BLDL routine fills in the TTR, C-byte and data field from the os data set. • SEARCB Routine -- The search routine ensures that any OS disk currently active is included in the search order of all disks currently accessible. • DISK Routine -- The disk routine displays the status of any or alIOS disks using the following form: IBM VM/370: system Logic and Problem Determination Guide 'MODB(CUU): (HO. CYLS.), TYPB R/O - OS.' DMSSTT MODULB -- DMSSTT verifies that the disk being- searched is an OS disk. DMSSTT calls DMSLFS to get the FST associated with the data set. Upon return from DMSLFS, DMSSTT checks the return code to ensure that CMS supports the data set attributes. A return code of 81 or 82 indicates that CMS does not support the data set and message DMSSTT229B occurs to that effect. DMSSTT then clears the FST copy with binary zeros, and moves the filename, fi1etype, fi1emode, BLKSIZE, LRECL, RBCFM, and flag byte to the FST copy. From this point on, com. on code execution occurs for both CMS and OS disks. procedures from the procedure library (via the PSBRV co.mand) or displaying the procedure library (via the DSERV co •• and) • CMS/DOS does cylinder. IHITIALIZIHG DOS CONTROL COMMAHDS not support the IHD standard label PROCESSING DOS SYSTEM Initialization of the CMS/DOS operating environment requires the setting of flags and the creation of certain data areas in storage. Once initialized, these flags and data areas may then be changed by routipes invoked by the system control commands. Five modules are described in this section: • CHRCHVRT Routine The CHRHCVRT routine converts a CCHH address to a relative track address. • DMSSET Activates the CMS/DOS control blocks to be CMS/DOS processing. • CHKSEHSE Routine -- CHKSEHSE checks sense bits to determine the recoverabi1ity of a unit check error if one occurs. • DMSOPT sets or resets compiler execution-time options. • • CHKXTHT Routine CHKXTHT checks to determine if the end of split cylinder or the end of extent occurred~ and, if so, updates to the next split cylinder or extent. DMSASH Relates units. • • • DISKIO Routine -- DISKIO starts I/O operation on a CCW string via a DIAGHOSB X'20'. • GETALT Routine -- GETALT switches reading from alternate track to prime track, and from prime track to alternate track. • • RDCHT Routine -- RDCHT reads count fields on the track to determine the last record number on the track. SETXTNT Routine -- SETXTNT sets osfstend to the value of the end of the extent and, if a new extent is specified, sets CCHHR to the value of the start of the extent. SIMULATIHG A DOS EHVIROHMENT UHDER CMS CMS/DOS is a functional enhancement to CMS that provides DOS installations with the interactive capabilities of a VM/370 virtual machine. CMS/DOS operates as the background DOS partition; the other four partitions are unnecessary, since the CMS/DOS virtual machine is a one-user machine. CMS/DOS provides read access to real DOS data sets, but not write or update access. Real DOS private and system relocatable, source statement, and core-image libraries can be read. This read capability is supported to the extent required to support the CMS/DOS linkage editor, the DOS/PLI and DOS/VS COBOL compilers, the FETCH routine, and the RSERV, SSERV, and ESERV commands. Ho read or write capability exists for the DOS procedure library, except for copying logical to physical DMSLLU Lists the assignments physical units. of CMS/DOS DMSDLB Associates a DTF with a for CMS/DOS processing. logical unit ~~~~~I--!Bi!i~li~iDg ~D~i~~B~B! units environment used during !h~ DMSSET initializes the environment as follows: CMS/DOS operating • Verifies that the mode, a DOS formatted disk. if specified, is for • Stores appropriate data in the SYSRES LUB and PUB. • Locates and loads the CMS/DOS discontiguous shared segment. Saves (in HUCON) the addresses of the two major CMS/DOS data blocks, SYSCOM, BGCOM,and the address of the CMS/DOS discontiguous shared segment (CMSDOS) • • Sets the DOSMODE and in NUCON. • Assigns (via ISSGB) the SYSLOG as the CMS virtual console. DOSSVC bits in DOSFLAGS logical unit The CMS/DOS operating environment is entered when the CMS SET DOS ON command is issued, invoking the module DMSSET. section 2. Method of Operation and Program Organization 207 Data Areas Prepared Initialization for Processing During CBS/~ Several data areas are prepared for processing during initialization. The main CMS data area, NUCON, is modified to contain the addresses of two DOS data areas, SYSCOM and BGCOM. The SYSCOM DSECT is the DOS system communications region. It consists mainly of address constants, including the addresses of the AB option table, the PUB ownership table, and the FETCH table. It also includes such information as the number of partitions (always one for CMS/DOS) and the length of the PUB table. The BGCOM DSECT is the partition communication region. It includes such information as the date, the location of the end of supervisor storage, the end address of the last phase loaded, the end address of the longest phase loaded, bytes used to set the language translator and supervisor options, and the addresses of many other DOS data areas such as the LUB, PUB, NICL, FICL, PIB, PIB2TAB, and the PCTAB. The LUB and PUB tables are also made available during initialization. The LUB is the logical unit block table. It acts as an interface between the user's program and the CMS/DOS physical units. It contains an entry for each symbolic device available in the system. Each of the symbolic names in the LUB is mapped into an element in the PUB, the physical unit block table. The PUB table contains an entry for each channel and device address for all devices physically available to the system and also contains such information as device type code, CMS disk mode, tape mode setting, and 7-track indicator. Two bits are set in DOSFLAGS in NUCON, DOSMODE and DOSSVC. DOSMODE specifies that this virtual machine is running in the CMS/DOS operating environment. DOSSVC indicates whether OS or DOS SVCs are operative in the operating environment. If DOSSVC is set, DOS SVCs are used; otherwise, OS SVCs are operative. SETTING OR RESETTING SYSTEM ENVIRONMENT OPTIONS Once the CMS/DOS environment is initialized, the flags and control blocks set during initialization can be modified and manipulated to perform the functions specified by commands entered at the console. This section describes the modules that set and reset the system environment options. That is, they set those options that control compiler execution and that control the configuration of logical and physical units in the system. 208 The CMS/DOS OPTION command invokes module DMSOPT, which sets either the default options for the compiler or the options specified on the command line. The nonstandard language translator options switch and the job duration indicator byte are altered. Options are set using two control words located in the partition communication region (DGCOM). Bits in bytes JCSW3 or JCSW4 are set, depending on the options specified. Module DMSASN is invoked when the ASSGN command is entered. DMSASN first scanS the command line to ensure that the logical unit being assigned is valid for the physical unit specified (for example, SYSLOG must be assigned to either the virtual console or the vi~tual printer). Once the command line is checked, PUB and LUB entries are modified to reflect the specified assignment. For the PUB entry, the device type is determined (via DIAG 24) and the device type code is placed in the PUB. other modifications are made to the PUB depending on the specified assignment. The LUB entry is then mapped to its corresponding PUB. The function of DMSLLU is to request a list of the physical units assigned to logical units. It performs this function by referencing information located in the CMS/DOS data blocks, specifically SYSCOM, LUB, and PUB. Another data block, the next in class (NICL) table is also referenced. The information on the command line is scanned and the appropriate items are displayed at the user's console. If an option (EXEC or APPEND) is specified, an EXEC file is created ($LISTIO EXEC Al) to contain. the output. If EXEC is specified, any existing $LISTIO EXEC Al file is erased and a new one is created. If APPEND is specified, the new file is appended to the existing file. DMSDLB is invoked when the CMS/DOS DLBL command is entered. DMSDLB associates a DTF (Define The File) table filename with a logical unit. This function is performed by creating a control block called a DOSCB, which contains information defining a DOS file used during job execution. DLBL is valid only for sequential or VSAM disk devices. IBM VM/370: System Logic and Problem Determination Guide This information parallels the label information written on a real DOS SIs RES unit under DOS/VS. The DOSCB contains such information as the name, type, and .ode of the referenced dataset, its device type code, its logical unit specification, and its dataset type (SA" or VSA"). A DOSCB is created for each file specified by the user during a terminal session. The DOSCBs are chained to each other and are anchored in NOCON at the field DOSFIRST. The chain remains intact for the entire session, unless an ABEND occurs or the user specifically clears an entry in the the DOSCB chain. A given DOSCS is accessed when an OPEN macro is issued from an executing user program. The overall follows: logic flow for DMSDLB is as 1. Scans the command line to ensure that any options entered are valid (i.e. anything to the right of the open parenthesis). 2. Processes the first operand (ddname or *). When ddname is specified, loop through the DOSCB chain to find a matching ddname. If none is found, DMSDLB calls DMSFRE to get storage to create a new DOSCB for this file. The old copy of the DOSCB is then saved so that, in case of errors during processing, it can be retrieved intact. The new copy of the DOSCB contains updates and DOSCB replaces the old copy if there are no errors. 3. The mode specification is checked to ensure that it is a valid mode letter; if the file is a CMS file, the mode letter must specify a CMS disk. If DSN has been specified, the mode letter must be for a non-CMS disk. 4. Process each option appropriately. 5. If EXTENT or MULT is specified, a separate block of free storage is obtained to contain information about the extent, for example, a block is obtained to contain the DOS data set name. 5. on the command the type of DTP specified, i.e. the table generated by a unit record DTF macro is slightly different than the table generated by a DTl disk .acro. live routines are invoked to perform OPEN functions, DMSOPL, DMSOR1, DMSOR2, D"SOR3, and D"SBOP. DMSCLS performs the CLOSE function. Depending on the type of OPEN macro issued from a user program, one of five CMS/DOS OPEN routines could be invoked. OPENR macros give control to D"SOR1 and, depending on the DTl type specified, DMSOR2 or DMSOR3 may be invoked. These three routines (DMSOR1,DMSOR2, and DMSOR3) request the relocation of a specified file. D"SOPL is invoked by the DOS/VS compilers when they need access to a source state.ent library. These routines are mainly interface routines to D"SBOP, which performs the main function of opening the specified file. Each of the routines calls DMSBOP. D"SBOP is the C"S/DOS routine that simulates the DOS/VS OPEN function. The basic function of D"SBOP is the initialization of DTF tables, i.e. setting fields in specified DTFs for use by the DOS/VS LIOCS routines. When a DOS problem program is compiling, a list of DTFs and ACBs is built. At execution time, this list is passed to DMSBOP. The logic flow of D"SBOP is as follows: 1. Scans the list of DTF and ACB addresses, handling each iteam in the list in line. When the OPEN macro expands, register points to the name of the $$B transient to receive control ($$BOPEN) and register 0 points to the list of DTF/ACB addresses to be opened. 2. When an ACB is encountered in the table, control is passed directly to the VSA" OPEN routine, $$BOVSAM. The VSAM routine is responsible for opening the file and returning control to DMSBOP. 3. When a DTF is encountered in the DMSBOP itself handles the OPEN: line Check for errors. If there are errors, any blocks created during processing are purged and an error message is issued. If there are no errors, restore the old block, which has been modified to reflect current processing, and return control to DMSITS. PROCESS C"S/DOS OPEN AND CLOSH FUNCTIONS The CMS/DOS OPEN routines are invoked in response to DOS OPEN macros. They operate on DTF (define the file) tables and ACB (access method control block) tables created when the DTFxx and ACB macros are issued fro~ an executing user program. These tables contain information such as the LOG unit specification for the file, the DTF type of the file, the device code for the file, and so forth. The information in the tables varies depending on table, a. For reader/punch files (DTFCD), the OPEN bit in the DTF table is turned on. b. For printer files (DTFPR), if two IOAREAs are specified, the IOREG is loaded with the address of th~ appropriate IOAREA. Next, the PUB index byte associated with the logical unit specified in the DTF is checked to ensure that a physical device has been assigned and the PUB device code is then analyzed. The OPEN bit in the DTF table is then turned on. c. For console files logic is required. (DTFeN), no section 2. Method of Operation and Program Organization OPEN 209 d. e. f. 4. 5. For tape files (DTFMT), the PUB device type code must specify TAPE. If an IOREG is specified (for output tapes only), the address of the appropriate IOAREA is placed in it. For input files, there is separate processing for tapes with standard label, nonstandard label, and no label. For output tapes, both tape data files and work tape files are treated as no label tapes. For disk files (DTFxx), the LUB is verified to ensure that the logical unit has been assigned. A check is made to ensure that the DOSCB exists for the DTF filename. For disk output files, the address of the appropriate IOAREA is placed in IOREG. For disk ~nput files, the existence of the file 1S verified via a call to DMSSST. Also, EXTENT information is initialized and the OPEN bit is posted. DTFDT and DTFCP are separate DTF types that could describe any of the above devices. After all files in the table have been opened, DMSBOP returns control to the problem program via SVC 11. If errors are encountered during DMSBOP processing, an error message is issued and return is .ade via SVC 6. The CMS/DOS routine that processes CLOSE requests is DMSCLS, whose logic is analogous to that of DMSBOP, the OPEN routine described above: when CLOSE expands, register 1 pOints to $BCLOSE and register 0 points to the list of DTF/ACB addresses. The same table containing DTFs and ACBS used to open files is also used to close those files. Each entry in the table is processed as it occurs, with control passing to a VSAM CLOSE routine ($$BCVSAM) when an ACB is encountered. The OPEN bit is then turned off. PROCESS COMMANDS CMS/DOS EXECUTION-RELATED CONTROL The DOS/VS FETCH function is simulated by eMS modules DMSFET and DMSFCH. The main control block used during a FETCH operation is FCHSECT, which contains addressing information required for I/O operations. The FETCH command line invokes module DMSFET. This module first validates the command line and issues a FILEDEF for the DOSLIB file. It then issues a FILEDEF for a DOSLIB file. DMSFET then issues a DOS SVC 4, which invokes the module DMSFCH to perform the actual FETCH operation. DMSFCH first determines where the phase to be fetched resides. The search order is private core-i.age library, DOSLIB, system core-image library. If the phase is not found in any of these libraries, DMSFCH assumes that the FETCH is for a phase in a system or private core-image library. To find a DOSLIB library member, OS OPEN and FIND .acros are issued (SVC 19 and 18) • When the member is found~ OS READ and CHECK .acros are issued to read the first record of the file (the member directory). This record contains the number of text blocks and the length of the member. All addressing information is stored in FCHSECT and the text blocks that the phase are read into storage. If the read is from a CMS disk, issue the OS READ and CHECK macros to read the data. If the read is fro. a DOS disk, first determine whether this is the first read for the DOS discontiguous shared segment (DCSS). If this is the case, CCW information is relocated to ensure that the DCSS code is reentrant. For all reads for a DOS disk, a CP READ DIAG instruction is issued. When the entire file is read, it is relocated (if it is relocatable) • If a DOSLIB is open, close it using an OS SVC 20 and return control to DKSFET. DMSFET then checks to see whether START is specified and, if so, an SVC 202 is issued for the CMS START co •• and to execute the loaded file. When control DMSITS. all FETCH processing is complete, returns to the CMS com.and handler, The CMS/DOS FETCH and DOSLKED commands simulate the operation of the DOS/VS fetch routines and the DOS/VS Linkage Editor. The three CMS .odules that perform this si.ulation are: • DMSFET--Provide an interface to interpret the DOS FETCH co •• and line and execute the phase, if START is specified on the co.mand line. • DMSFCH--Bring into storage a specified phase from a system or private core-image library or fro. a CMS DOSLIB library. • DMSDLK--Link edit the relocatable output of the CMS/DOS language translators to create executable progra.s. 210 CMS simulation of the DOS/VS Linkage Editor function directly parallels the DOS/VS i.plementation of that function. For detailed infor.ation on the logic of the function, see the publication I!Q~L!~ Li!!k.Ag~ Igi.:t2I. 1l2gi£, Order No. SY33-8556. Note that the .odules comprising the DOS/VS Linkage Editor are prefixed by the letters IJB and are separate CSECTs. ILL of these CSECTs have counterparts contained within the one CMS .odule, DMSDLK. They are treated as subroutines IBM VM/370: System Logic and Problem Determination Guide within that .odule, but perform the same functions as their independent DOS/VS counterparts and have been named using the sa.e naming conventions as for the DOS/VS CSECTs. Por exaaple, the IJBESD CSECT in DOS/VS is paralleled by the CMS DMSDLK subroutine DLKESD. A brief dscription of the logic follows. The CMS/DOS DOSLKED command invokes the module DMSDLK, which is entered at subroutine DLKINL. DLKINL performs initialization and is later overlaid by the text buffer and the linkage editor tables. DLKINL starts to read from a DOSLNK file and processes ACTION statements, if there are any. On encountering the first non-ACTION card (or if there is no DOSLNK file), the main flow is entered. Depending on the input on the DOSLNK or the TEXT file, records from either of those files aay be read or records from a relocatable library may be read. The type of card image read determines the subroutine to which control is given for further processing. An ENTRY card indicates the end of the input to the linkage editor. At this point, a map is produced by subroutine DLKMAP. DLKRLD is then entered to finish the editing of object modules by relocating the address constants. If the phases are to be relocatable, relocation information is added to the output on the DOSLIB. Updating of the DOSLIB library is performed by DLKCAT using the OS STOW macro. A significant deviation from DOS/VS code is the use of OS macros, in some instances, rather than DOS/VS macros. To take advantage of CMS support of partitioned data sets, the OS OPEN, PIND, READ, CHECK, and CLOSE macros are issued rather then their DOS/VS counterparts. SIMULATE DOS SVC PUNCTIONS All SVC functions supported for CMS/DOS are handled by the CMS module DMSDOS. DMSDOS receives control from DMSITS (the CMS SVC handler) when that routine intercepts a DOS SVC code and finds that the DOSSVC flag in DOSFLAGS is set in NUCON. DMSDOS acquires the specified SVC code from the OLDPSW field of the current SVC save area. using this code, DMSDOS computes the address of the routine where the SVC is to be handled. state.ent describing how performed. the SVC function is SVC 0: IICP Handled by aodule DMSICP ••• reads froa-CMS--or DOS/VS formatted disks. CCls are converted to appropriate CMS I/O requests, for example, RDBUP/IRBUF, CARDRD/CARDPH. The CCB is posted (indicating I/O completion) using CMS return information. If a non-zero return code is returned, a CANCEL is performed. I/O re~uests to DOS disks are handled using CP DIAGNOSE instructions. 1: lET£H Handled by DMSFCH ••• loads a problem program phase into core and executes it, if execution is requested. For details on how FETCH works, see the section "Bring a Phase into Storage for Execution: DMSFET and DMSFCH." §!~ SVC 2: PETCH Handled by DMSPCH ••• loads a iii$B~TransIent phase into core and executes 'it, if execution is requested. For details on how FETCH works, see the section "Bring a Phase into Storage for Execution: DMSFET and DMSFCH." svc 4: l~I£H Handled by DMSFCH ••• loads a problem program phase into user storage and executes it, if execution is requested. Por details on how FETCH works, see the section "Bring a Phase into storage for Execution: DMSFET and DMSFCH." §I£ ~: ~!£~~ -- Handled by DMSDOS ••. provides the user with a way of altering bytes 12 through 23 of the partition communication region (BGCOM). Checks to ensure that the specified field is correct length and then moves the information to the specified field. SVC 6: £!!£¥ Handled by DMSDOS ••• cancels a efts/Dos seSS10n. Processing depends on value in register 15 on entry; if above 256 the request is from a system program. If below 256, request is from a user program. Processing continues with control passing to EOJ code, described below. §!£ 1: !!II Handled by DMSDOS ••• informs system programs to wait for a system event to take place before processing can continue. WAIT is an effective NOP for CMS/DOS. ~!~~: Handled by DMSDOS ••• temporarily returns control to a problem program. The address of the problem to which control is being passed is contained in register o. This address is stored in the SVC save area OLDPSW field and control is passed to the CMS SVC handler (DMSITS). 2: Handled by DMSDOS ••• returns control to system program (i.e. a user program has been given control, as in the case of SVC 8, and must return control to the system routine, a $$$$E-Transient routine, that called it) • ~!£ Many CMS/DOS routines (including DMSDOS) are contained in a discontiguous shared segment (DCSS). Most SVC codes are executed within DMSDOS, but some are in separate modules external to DMSDOS. If the SVC code requested is external to DMSDOS, its address is computed using a table called DCSSTAB; if the code requested is executed within DMSDOS, the table SVCTAB is used to compute the address of the code to handle the SVC. SVC 11: Handled by DMSDOS ••• returns control to a problem program from a $$$$-B transient routine. Uses the SVC save area OLDPSW field to return to the calling program. ~!£ 1~: The items below show the SVCs supported by CMS/DOS simulation routines, the name of the macro that invokes a given SVC code, the CMS module that executes the code, and a brief Handled by DMSDOS ••• resets flags in the linkage control byte of the Partition Communication Region (BGCO!) to zero; also, provides the user the capability to use a mask to set the value of this same byte. In both section 2. Method of Operation and Program organization 211 cases, the SVC routine that handles the request performs an AND operation to accomplish the function. ~!~ 1~: EOJ -- Handled by DMSDOs ••• normally terminates--execution of a problem program. Clears control blocks and resets control words. SVC 16: Handled by DMSDOS ••• establishes linkage with or terminates linkage to a user's program check routine. Locates the appropriate PC option table entry. If contents of register 0 is zero, terminates linkage: stores a zero into the routine address field of the PC option table. If register 0 is non-zero, the address of the PC routine and the save area address is passed to the STIlT macro. If a STXIT PC routine is already active, the complement of the new routine address is placed in the PC option table; if no STIlT PC routine is active, both the new routine address and the save area address are placed in the PC option table. SVC 11: Handled by DMSDOS ••• provides supervisory ~upport for the exit macro. Locates appropriate PC option table entry and restores user's registers and PSi. Stores the address of the PC routine in the PC option table and returns to the next sequential address in the interrupted program. ~!~ ~§: Handled by DMSDOS ••• validates address limits. Checks the limits passed in registers 1 and 2 and either returns control to the caller or writes an error message. SVC 33: COMRG-- Handled by DMSDOS ••• provides the -address--of the partition communication region (BGCOM). Returns the address of BGCOM in register 1. SVC 34: Handled by DMSDOS ••• supports the GETIME .aero: Updates the date field in the partition communications region (BGCOM). 11: Handled by DMSDOS ••• establishes linkage to or terminates linkage from a user's abonormal termination routine. Locate the AB table entry. If register 0 ccontains zeros; terminates linkage: if the AB routine is active, stores zeros into the routine address field of the AB option table. If the AB routine is not active, stores zeros into both the routine address field and the save area field of the AB option table. ~!~ If register 0 is non-zero, establishes linkage: passes the address of the AB routine and the save area address to the STIlT AB macro. If STilT AB is active, the complement of the AB routine address is stored in the AB option table. If STIlT AB is not active, both the address of the new AB routine and the address of the save area are placed in the option table. SVC 40: POST -- Handled by DMSDOS ••• signals the completion-of a system event. ~!~ ~Q: Handled by DMSDOS ••• issues an error message and terminates the command. Issued by a LIOCS routine when that routine is requested to perform a function it could not perform. 212 -- Handled by DMSDOS ••• used by obtain scratch storage; also, obtains storage for a relocatable VSAM routine. Storage is obtained from the user free storage area and the address of the storage is returned in Register 1. SVC 61: Q~j!!~ SVC 62: FREEVIS -- Handled by DMSDOS ••• returns by a GETVIS. Address of the be returned is pointed to by Register ~~iM-~o s~orage obtained area to 1. §J: Q~~ -- Handled by DMSDOS ••• VSAM uses SVC 63 to ensure that system resources are updated serially, so that two or more attempts to modify the same data at the same time do not succeed. A table of counters (RURTBL) is kept for system resources. These counters are posted when a request is made for system resources. If a resource is already in use# a return code of eight is placed in gister O. If the resource is available, a zero is returned in Register o. ~!~ ~!£ 64: RELEASE -- Handled SVC iij to-release a system USE SVC. The appropriate decremented by one each released. by DMSDOS ••• VSAM uses resource obtained via counter in RURTBL is time a resource is §2: £~~QA~ Handled by DMSDOS ••• loads a relocatable VSAM phase into storage unless that phase has already been loaded. ~!£ If an anchor tatle is available, it is searched for the phase. If the phase is found, its load point, entry point, and length are returned in registers 0, 1, and 14, respectively, and register 15 contains zeros. If the phase is not found in the anchor table, DMSFCH is called to search for it. If the phase is found in the discontiguous shared segaent, return is made to the requestor as above. If the phase was found, but not loaded, storage is ontained for it via the GETVIS SVC. DMSFCH is called again to load the phase into the storage just obtained. An anchor table is then built in the user area (unless one already exists) and return to the caller is then made as described above. SVC 66: RUNMODE BandIed by problem program is running in real or virtual mode. Register 0 contains zero on return if the program is running in virtual mode. ~~~Dos •• :determines-ihether the ~!~ 1~: SECTVAL -- Handled by DMSDOS ••• used by VSAM I/O routInes to obtain a sector number for 3330 or 3340 devices. The appropriate sector value is calculated from input supplied in ser registers 1 and O. The sector number (from 0 to 121) is returned in register O. Certain DOS SVCs are treated as no-ops by CMS/DOS and other DOS/VS SVCs are not supported. These are listed below. IBM VM/310: system Logic and Problem Determination Guide SVCS TREATED AS NO-OP BY C!S/DOS SVC 10: 18: 20: 22: 24: 35: 36: 41 : 42: 52: 67: 68: 71 : 85: 86: 87: PROCESS C!S/DOS SERVICE COMMANDS Action sets-timer interval STXIT (IT) Establishes linkage to OC Seizes (interruption enable/disable) Sets timer interval Holds a track Frees a track Dequeues a resource Enqueues a resource Returns re.aining timer interval (Register 0 is also cleare~ PFIX, fixes pages in real storage PFREE, frees pages in real storage SETPFA RELPAG FCEPGOUT PAGEIN l!Q1 §Y~~Q~I!.!2 ~! ~lI~L12Q§: The following SVCs cause an error message to be generated and are treated as a CANCL (SVC 6). §!£§ SVC Action -3: Forces dequeue Sets switches in BGCO! Heads queue and executes channel program Returns from user's IT Loads phase header Issues HIO special HIO Returns from user's MR !ultiple WAITM support waits for a QTAM element Posts a QTAM element Reserved for IB! use Initializes a subtask Terminates a subtask Reserved for IBM use External unit checks record Emulator interface OLTEP in supervisor state Multiple WAITF support Fetches a CRT trans Reserved by IBM Returns phase header Reserved by IBM Frees real page frames Gets real page frames Gets or frees PUB of POWER device Makes POWER dispatchable Interface between JCL and supervisor Interface between EOJ and supervisor EREP and CRT I/O areas address REALAD VIR TAD GETCBUF/FREECBUF SETAPP Fixes pages in real storage for restart Initializes for recording of RMSR I/O error 71: TRANSCSW 18: Reserved for IBM use 79: Reserved for IBM use 80: Reserved for IBM use 81 : Reserved for IBM use 82: Reserved for IBM use 83: Reserved for IBM use 84: Reserved for IBM use 88 and up: Reserved for IBM use 13 : 15: 19: 23: 25: 27: 28: 29: 30: 31: 32: 38: 39: 43: 44: 45: 46: 47: 48: 49: 51: 53: 54: 55: 56: 51: 58: 59: 60: 69: 10: 72: 13: 14: 16: DMSSRV--Copies books from a system or private source state.ent library to a specified output device. DMSPRV--Copies DOS procedures from a DOS system procedure library to a specified output device. DMSRRV--Copies modules from a relocatable library to a device. system or private specified output DMSDSV--Lists the directories of system libraries. DOS private or DMSDSL--Deletes me.bers (phases) of a DOSLIB library; compresses a DOSLIB library; lists the members (phases) of a DOSLIB library. ESERV--De-edits, displays or punches, verifies, and updates edit assembler macros from the source statement library. TER!INATE PROCESSING THE CMS/DOS ENVIRONMENT DMSBAB--Gives control to an abnormal termination routine once linkage to such a routine has been established via the STXIT AB macro. DMSITP--Processes exits. program interrupts and SPIE DMSD!P--Simulates the $$BDUMP and $$BPDUMP routines; issues a CP DUMP command directing the dump to an offline printer. PERFORM MISCELLANEOUS CMS FUNCTIONS CMS BATCH FACILITY The CMS Batch Facility is a function of CMS. It provides a way of entering individual user jobs through an active CMS machine from the virtual card reader rather than from the console. The batch facility reissues the IPL command after each job. The eMS Batch Facility consists of two modules: DMSBTB, the bootstrap routine (a nonrelocatable CMS module file) and DMSBTP, the processor routine (a relocatable CMS text file that runs free storage). GENERAL OPERATION OF DMSBTB The bootstrap module, DMSBTB, loads the processor routine DMSBTP and the user exit routines BATEXIT1 and BATEXIT2 (if they exist) into free storage. DMSBTB first ensures that DMSINS (CMS initialization) has set the BATRUN and BATLOAD Section 2. Method of Operation and Program Organization 213 flags on in the CMS nucleus constant area indicating that either an explicit batch initial program load command has been issued or that the CMSBATCH command has been issued immediately after initial program load has taken place. If not r error message DMSBTB101E is typed and the batch console returns to a normal CMS interactive environment. STATE (DMSSTT) is then called to confirm the existence of the processor file DMSBTP TEXT. If the file does not exist r error message DMSTBT100E is typed and the batch console returns to the CMS interactive environment. Using the "state" copy of the file status table (FST) for DMSBTP r DMSBTB computes the size of DMSBTP TEXT file by multiplying the logical record length by the number of logical records (no DS constants). A free storage request is made for the size of DMSBTP and the address of the routine is then stored at ABATPROC in the NUCON area of the CMS nucleus. The existence of the user exit routines is determined by STATE. If they exist r their sizes are included in the request for free storage. The free storage addr~ss is translated into graphic hexadecimal format and the CMS LOAD command is issued to load the DMSBTP TEXT file into the reserved free storage area. The user exit routines r BATEXITl TEXT and BATEXIT2 TEXT are also loaded at this time. If these files do not exist r an unresolved external reference error code is returned by the loader, but is ignored by DMSBTB because these routines are optional. If an error (other than unresolved names) occurs r error message DMSBTB101E is typed and the batch console returns to the CMS interactive environment. The loader tables are searched for the address of the ABEND entry point DMSBTPAB in the loaded batch processor. When the entry is found r its address and that of entry DMSBTPLM are stored in ABATABND and the ABATLIMT respectively, in the NUCON area of the CMS nucleus. If the ABEND entry point is not found in the tables r error message DMSBTB101E is typed and the batch console returns to the CMS interactive environment. The BATLOAD flag is set off to show that DMSBTP has been loaded, the BATNOEX flag is set on to prevent user job execution until DMSBTP encounters a IJOB card and finally, control is returned to the com.and processor DMSINT. If an error message is issued r DMSERR is called to type the message r and the BATRUN and BATLOAD flags are set off before control is returned to CMS. This allows the normal CMS interaction to resume. GENERAL OPERATION OF DMSBTP The batch processor module DMSBTP simulates the function of the CMS console read module DMSCRD. This is accomplished by issuing reads to the virtual card reader, formatting the card-image record to resemble a console record and returning control to CMS to process the command 214 (or data) request. DMSBTP also performs reads to the console stack if the stack is not empty, checks for and processes the IJOB card, ensuring that it is the first record in the user jOb r traps all CP commands to maintain system integrity and performs job initialization, cleanup, and job recovery. upon receiving control, DMSBTP checks the BATCPEX flag in NUCON. If the flag is set on, control was received from DMSCPF and a branch is made to the CP trap routine to verify that the command is allowable under batch. The function of that routine is described' later. If the BATCPEX flag is off, control was received from DMSCRD (console read module) and DMSBTP checks for finished reads in the real batch console stack. If the number of finished reads is not zero, control is returned to DMSCRD to process the real console finished (stacked) reads. If the number of finished reads is zero, a record is read from the batch virtual card reader into the CARD buffer via an svc call to CARDRD (DMSCIO). The record in the CARD buffer is typed on the console via the WRTERM macro. If the BATMOVE flag is set on mOVEFILE executing from the console), the records in the file are not typed on the console. The record in the reader buffer is scanned to compute its length with trailing blanks deleted. It is then moved to the CMS console read buffer and the computed length is stored in the original DMSCRD parameter list r whose address is passed by DMSCRD when it initially passes control to DMSBTP. If the first user record is not a IJOB card, error message DMSBTP105E is typed and normal cleanup is performed with the BATTERM flag set on. This flag prevents another initial program load, since it is not needed at this time. Reads to the card reader are then issued until the next IJOB card is found. If the first record is a IJOB card, DMSBTP branches to its IJOB card processing routine which calls DMSSCNN via a BALR. A check is made for the existence of the userid and account number on the card. If the fields exist, a CP diagnose 'QC' is issued to start accounting recording for that userid and account number. If an error is returned from CP denoting an invalid userid, or if the userid or account number fields were missing on the IJOB card, error message DMSBTP106E is typed and normal cleanup is performed with the BATTERM flag set on. The jobname, if provided on the IJOB card, is saved and a message is issued via SVC to inform the source userid that the job has started. The spooling devices are closed and respooled for continuous output, a CP QUERY FILES command is issued for information purposes and the implied CP function under CMS is disabled and the ,protection feature set off via SVC calls to SET (DMSSET). The BATPROF EXEC is executed via an SVC to EXEC. The BATNOEX flag, which is set by DMSBTB to suppress user job execution until the IJOB card is detected, is set off. The BATUSEX flag is set on (for DMSCPF) to signal the start of the actual user job, and a branch is taken to read the next card from the reader file (user job) . IBM VM/370: system Logic and Problem Determination Guide After reading the IJOB card, DMSBTP continues reading and checks for a 1* card, a ISET card, or a CP command. If a card is none of these, DMSBTP passes control back to the command processor DMSINT for processing of the command (or data). If a 1* card is read and it is the first card of the new job, it is assume to be a precautionary measure and thus ignored by DMSBTP which then reads the next card. If it is not the first card a check is made for the BATMOVE flag. If the flag is on, the 1* card indicates an end-of-file condition for the MOVEPILE operation from the console (reader) and is consequently translated to a null line for the MOVEPILE command. If the BATMOVE flag is not on, the 1* card is and end-of-job indicator and an immediate branch is taken to the end-of-job routine for cl~anup and reloading of CMS batch. When a CP command is encoutered DMSBTP branches to a routine that first checks a table of CP commands allowable in batch. If the command is allowed, a check is made for a reader or other spool device in the command line. If the CP command is allowed but would alter the status of the batch reader or any spooling device or certain disks, or if the command is not allowed at all, error message DMSBTP107E is typed, and the next card is read. If the CP command is LINK, the device address is stored in a table so that DMSBTP can detach all user disk devices at the end of the job. A CP DETACH command is examined for a device address corresponding to the system disk, the IPL disk, the batch 195 work disk or any spool device. If the device to be detached is any of these, error message DMSBTP107E is displayed and the next card is read. Otherwise, DMSBTP returns control to DMSINT (or DMSCPF is the BATCPEX flag is set on) for processing of the command. When a ISET control card is encountered, the card is checked for valid keywords, valid integer values (less than or equal to the installation default values), and if an error is detected, error message DMSBTP108E is typed. An abnormal termination message is also sent to the source userid and the job is terminated with normal cleanup performed. If the control card values are valid, the appropriate fields are updated in the user job limit table DMSBTPLM and the next card is read. If DMSBTP detects a "not ready" condition at the reader, a message is typed at the console stating that batch is waiting for reader input. DMSBTP then issues the WAITD macro to ,ait for a reader interrupt. When first detecting the empty reader, DMSBTP calls the CP accounting routines via a CP diagnose '4C' to charge the wait time to the batch userid. If a hard error i~ detected at the DMSBTP sends an "intervention required" to the system console and branches abnormal terminal routine and waits reader, message to its for an interruption for the reader by issuing the WAITD macro. When a 1* card is read (with the BATMOVE flag off) or when the end-of-file condition occurs at the reader, DMSBTP branches to the cleanup routine which sends the source userid a message stating that the job ended normally or abnormally (if cleaning upa fter an abnormal termination) and turns off the BATUSEX flag (for DMSCPF) to signal the end of the user user job. CONWAIT (DMSCWT) is called via SVC to allow any console 1/0 to finish, the spooling devices are clos~d (including the console), and all disks that were made available by issuing the CP LINK command are returned by issuing the CP DETACH command. DMSBTP then relinquishes control by issuing the CP IPL command with the PARM BATCH option which loads a new CMS nucleus and the next job is started when CMS attempts its first read to the console. A branch is made to the CMSBTP routine when DMSBTP itself detects an 110 error at the reader. However, the primary purpose of the routine is to receive control not only from DMSABN when there is an abnormal termination during the user job, but also from DMSITE, DMSPIO, and DMSCIO when a user job exceeds one of the batch job limits (BATXLIM flag is on). This routine, entry point DMSBTPAB, calls the CP DUMP routine via SVC and then branches to the cleanup routine which reloads CMS Batch and treat the remainder of the current job as a new job with no IJOB card. This has the effect of flushing the remainder of the job. This technique is used because batch must keep its reader spooled "continuous." Entry point DMSBTPAB is also used by the CMS commands that are disabled in CMS batch. In this case (BATDCMS flag set on), an error message is displayed and control returned to CMS. When a CP command is called via an SVC in DMSBTP, the CMS CP module (DMSCPF) is acutally called to issue the DIlGNOSE instruction to invoke the CP command. DMSBTP calls DMSCPF by issuing a direct SVC 202 or by issuing the LINEDIT macro with the CPCOMM option that generates an SVC 203. OTHER CMS MODULES MODIFIED IN CMS BATCH Several CMS modules check whether CMS batch is functions running; and, if so, perform associated with batch operation. These are shown in the following list: ~ggul~ DMSINI DMSINS DMSLDR DMSCRD DMSITE DMSPIO Function Performed for CMS Batch passes-batch-parameters-to Dftsiis. Uses batch IPL parameters to reload CMS Batch. Loads DMSBTP into free storage. Passes control to DMSBTP to read from the reader rather than from the console. Accounts for virtual time used by ABEND if over limit. batch job Accounts for number of lines printed by batch job ABEND if over limit. section 2. Method of Operation and Program Organization 215 DMSCIO DMSABN DMSERR DMSMVE DHSSET DHSRDC DMSCPF DMSFLD DM SDSK Accounts for number of cards punched by batch job -- ABEND if over limit. Passes control to batch ABEND routine in DMSBTP. Passes control to batch ABEND routine instead of entering disabled wait state. Turns the BATMOVE flag on and off allows batch to treat moved blanks as data. Disabled if batch running, except during batch initialization. Disabled if batch running. Distinguishes between CP command issued by user and by batch. Disallows reader device specification. Disk load not allowed in batch. USE OF THE ANNOTATED FLOW DIAGRAM The following text sections, which describe each major CP function, are annotated flow diagrams. These diagrams, consisting of logic labels and commentary, describe the general flow and use of CP logic modules and their relationship to other modules ~hile performing a specific function or task. The annotated flow diagrams do not contain references to error messages, abnormal termination conditions, or most control block field labels. This avoids complexity and makes the general logic of CP and its related tasks more understandable to the user. With "understandability" as the key, obtuse and complex logic that is used for obscure and seldom used functions is not described. Also the flow diagram does not indicate or describe every entry point encountered in a function. Nor do the diagrams illustrate the innumerable times that commonly used modules are utilized. DMKFRE and DMKCVT, the obtaining and returning of free storage and the number base conversion modules are such examples. Annotated flow diagrams are arranged by function and subfunction. Titles for these functions and subfunctions also precede annotated flow text and labels. The text in the charts is prefixed by underscored and capitalized entry points and labels. Entry points are indicated by 7 or 8 characters; the first three characters are DMK. Labels are indicated by prefixing with a comma and the six-character module identification. Note: annotated flow diagrams are not to be construed to be trace material. The dynamics of CP operations preclude the use of the annotated flow diagrams, as they are shown in this manual, as traces of CP functions. VM/370 CP INTERRUPTION PROCESSING SVC INTERRUPTIONS - PROBLEM STATE .Q~~E'§!'§! Entry for SVC interruptions from problem or supervisor states. For proble. mode and 216 ADSTOP (SVC X 'B3'), the overlaid instruction is replaced DMKCFMBK ---Console function mode is entered. DMKPSASV ---por-problem state SVC 76 (X'4C') check for valid parameter passing. DMKVERD, DMKVERO ---netermIne--the operating SCP used in the virtual machine by examining passed parameters in RO and R1. DMKPSA, SVCVER -invalid parameter passing, error recording is not performed. DMKIOEVR ---The-SVC is reflected back to the user. DMKIOFVR ---on-correct parameter reflection~ record the error. DMKTRCSV ---The-DMKTRC module is called if TRACE SVC was invoked. DMKPSA, REFSVCB ---Por Ec--iiiode machine or page 0 not in real storage. Per results of TRACE activity, go to the DMKDSPCH; if not successful, go to DMKDSPB. DMKPRGRF ---j~-tracing not active, flag user as being in instruction wait state and reflect the SVC back to the user. DMKPSASV ---jf-the virtual machine is in BC mode and page o is in real storage, generate and store an old SVC PSi. Then fetch the new SVC PSi. DMKDSPB ---j~-wait state is not indicated, store user's new PSi in RUNPSW, restore registers and dispatch via LPSi. ---Por SVC INTERRUPTIONS - SUPERVISOR STATE DMKPSASU ---Entry is for a system failure and is a SVC 0 or SVC 4 ABEND condition. DMKDMPDK ---Perform partial or full real storage dump. DMKCKPT ---Checkpoint the system. DMKCPINT ---Perform an automatic IPL if indicated !H!!H~12! , ~.!£1!!HS Entry via SVC 8 provides linkage to a called routine in R15 DMKPTRUL ---j~-called routine is not resident, page it in and return control to the caller by loading the SAVERTN into the old PSi and then load the old PSi. The callers addressability, SAVEAREA address and return address are maintained in a new SAVEAREA. DMKPSA, SVCRET ---Entry--vIi-svc 12 return control from the called routine to the calling routine and restores address ability via R12 and R13. DMKPGSUL ---j~--a nonresident module unlock page to return it to DASD device. DMKPSA, SVCRLSE ---Entry--vIi--svc 16 to release the current SAVEAREA used by SVC 8 and 12. Return to caller. IBM VM/370: System Logic and Problem Determination Guide DMKPSA, SVCGET ---Entry-vi;--svc 20 to Return to caller. obtain a new SAVEAREA. the class and code, branch to the appropriate data collection routine. Class Code ---00--- EXTERNAL AND CLOCK INTERRUPTION REFLECTION 97 98 99 DMKPSAEX ---Entered via the interruption key on system console, adjust accounting to charge for supervisor overhead. If problem mode, ATTN interruption, update the virtual machine PSi from the external old PSi. DMKPSA, EXTBUTTN ---jiit to-dispatcher, if there is no logged-on operator, or the operator is disconnected, or there is no active terminal. If the operator was logged on and the external interruption key was pressed, disconnect the operator's terminal .Q~!Hl£!£~ Clear all console requests. DMKSCNRD ---If-the device is a terminal or graphic device issue HIO to the real device DKKDSPCH ---EiIt-to the dispatcher. DMKPSA, EXTBUTTN ---Por 3104/3105, convert resource identifier for the NCP terminal for the index able entry into the NICBLOK for the associated VMBLOK then .Q~!H~!!!!!2 Reset all BTUs. DMKDSPCH ---Exit-to the dispatcher. !2!!!H~2A , JAI!t!I!2 Upon location X'80' timer interruption, indicate the user end of the time slice by storing flag in the VMBLOK's VKOSTAT. DKKDSPCH ---EiIt-to dispatcher. DKKPSA, EXTTIMER ---upon -cpu--tImer interruption, VKTLEVEL in VKBLOK as a real CPU timer interruption. DMKTMRVT ---sImulate the interruption. DMKDSPCH ---EiIt-to the dispatcher. DMKPSA, EXTCKC ---Upon clock-comparator interruption reflection !2!!~2£!!I.Q Use the printer to unchain TRQBLOK. Call DKKSTKIO. DMKSTKIO ---stack the block. DKKDSPCH ---EiIt-to dispatcher. the active o 1 2 3 2 2 3 4 4 5 6 7 8 0 0 0+1 o 0 2 Function perfori- timer driven system clock and counter recording MONITOR tape header record MONITOR tape trailer record MONITOR suspension due to tape busy Begin console read Console output End Console read Console sleep Drop user from queue Add user to queue Add user to eligible list User statistics Instruction simulation DASTAP Device statistics header DASD seek channel program Device statistics and system counters Each collection routine calls buffer management for space for the collected dat~. If the MONITOR tape is busy MONITOR activity is suspended. If not busy call DMKSTKCP ---to-stack a CPEXBLOK for the event to call the scheduler. DMKMON, EXIT2 ---iestore--ill registers to their previous values prior to the MONITOR CALL. Load the old program check PSi to resume processing. PROGRAM INTERRUPTION PROCESSING !HUg~!!§!! For a program interruption received while in supervisor mode (indication of CP module error) and INTRDR+1 does not indicate MONITOR CALL (X'40') exit to DMKPRG, CPERROR ---Send ABEND-message to the system operator. DMKDMKPK ---Dump-storage and initiate IPL DMKPRGIN ---por-supervisor state and MONITOR CALL save registers in in DMKPRGPR DMKPRGKI ---Do--BoNITOR CALL interruption processing (DMKMON) • !2!!~R!H~ , R!!~2I!I MONITOR INTERRUPTION PROCESSING DKKMONTI ---Par-monitor requests, with an operation code of X'AF', increment TOD with DMKPRGTI value and insert in TRQBLOK. DMKSCHST ---Insert the block in the request block chain. DMKMONTI ---collect Monitor timer driven date for the enabled classes. On the successful decode of For paging exception X'11' and EC mode with DKKVATEX ---Translation on, process the exception. DMKPRGIM ---por-paging exception, x '11' and EC mode with DMKVATPF DMKVATPF ---Translation off, and enabled for 1/0 interrupts and PAGEX on, process the pseudo page fault DMKPRG, PAGEXCP ---Por all-other page fault conditons go to DMKPTRAN !2!1~~.!!!!!! Bring in the page from the auxiliary device. DMKDSPCH ---Eiit-to dispatcher. Section 2. Method of Operation and Program Organization 217 DMKPRG, PRNSTAT ---Por segment- exception X'10' with EC and translation on DMKVATSX ---process the exception. mode on unsupported instruction operand codes and DIAGNOSE '83' function codes that are not a multiple of 4. ~IlK~!!§, ~R§§!~! For the segment exception, X'10' does not follow the above parameters; process it as an addressing exception. Y!HU~~§, :£~A.!'§I! Process X'12' translation exceptions. DMKPRG, PRG01 ---Par privileged or operational exception of a virtual machine in supervisor mode, examine ITRPR+l if X'Ol' or '02' call DMKPRVLG ---to-process the exception. DKKPRV, DKKPRGSM ---Por virtual--machines in problem mode, store the users new program PSi in VMBLOK VMPSi. DKKPSASV the program interrupt occurs and the users page 0 is not resident or the virutal machine is in EC mode, paging is performed tKKDSPB ---Check the new PSi. DKKPRVLG ---ValIdate the privileged operation indicated in VMINST+2 and perform the service. ---When- Code XI 08' X'09' X'44' X'80' X'82' X'9C' X'9D' X'9E' X'9F' X'AC' X'AD' X'Bl' X'B202' X'B203' X'B204' X'B206' X'B207' X'B208 ' X'B209' X'B20A' X'B20B' X'B20D' X'B6' X'B7' X'BA' X'BB' Q~~!:~!i2!! SSK - Set storage key Insert storage key EX - Execute instruction SSM - Set system mask LPSi - Load PSW SIO - Start I/O TIO - Text I/O HIO - Halt I/O TCH - Text Channel STNSM - Store, then AND system mask STOSK - Store, then OR system mask LRA - Load real STIDP - Store CPU ID STIDC - Store channel ID SCK - Set TOD clock SCKC - Set TOD clock comparator STCKC - Store TOD clock comparator SPT - Set CPU timer STPT - Store CPU timer SPKA - Set PSW key from address IPD - Insert PSi key PTLB - Purge TLB STCTL - Store control registers LCTL - Load control registers CS - Compare and swap CDS - Compare double and swap DKKHVCAL ---On--privileged operations of DIAGNOSE X'83' and the associated function code, perform the service. Q!H~!!Q Execute privileged I/O operations of SIO, HIO, TIO and TCH. DMKT"RTH ---Perform privileged operations related to TOD clock, TOD clock comparator and the CPU timer. CTCA OPERATIONS BETiEEN TWO VIRTUAL MACHINES DKKVIOEX ---Virtual I/O operation is reflected to DMKVCA, the channel adapter module, for processing. DMKVCAST ---Por-SIO, check if the CTCA is coupled. If not coupled, call DKKDIASK. DKKDIASM ---sIiiuIate return status. D"KVCA, VCRSTART ---P~r a---coupled CTCA, analyze operations resulting in X-side (read) and Y-side (write) of the data transfer opera tion. DMKVCA, VCASIOB ---Detected-Interruptions are presented to users via stacked IOBLOKS and DMKSTKIO. DMKVCATS ---cTci-TIO activity is determined by examining Y-side information to determine mode and activity. DMKVCASH ---cTci-HIO and HDV is processed by determining the conition code to present and whether the Y-side should be notified. DMKVCARD ---CTci-process results from RESET xxx or SYSTEM RESET commands. The CTCA status is reset but the CTCAs are not uncoupled. DKKVCARS ---Uncoupling CTCA is achieved in the VDEVBLOK (VDEVNRDY flag) idle CTCA plus an invoked DETACH xxx or user LOGOFF. Return to calling routine. SCHEDULING I/O FOR CP AND THE VIRTUAL MACHINE Yl1~!Q'§2!! Entered via SVC. Entry pOint indicate a CP I/O event as indicated in the IOBLOK. For start request, increment the SIO count in the RDEVBLOK and start the device if it is available. If not (device busy or already scheduled) queue the IOBLOK and return the operation to the caller. Yll!!Q§2! Entered via SVC. Entry point indicates virtual machine initiated I/O event. Preserve VMBLOK address in R11, turn off IOBCP bit in the IOBLOK, add 1 to SIO count in the VDEVBLOK (or RDEVBLOK). Process the SIO if there is any available path to the device. If not, queue the IOBLOK and return the operation to the caller. Y!!!.F~§'§ll Program interruption is reflected back to the user on invalid instruction operands, 218 IBf! V"/370: system Logic and Problem Determination Guide STANDARD DASD I/O INITIATED VIA DIAGNOSE DMKDGDDK ---Perform simple disk I/O of a standard format. Entry is via DMKHVC code X'18'. DMKSCNVU ---FInd-device related to SIO cuu address. DMKFREE ---illocate storage for IOBLOK and RCWTASK. DftKGDDK ---BuIld and check the CCW string. DftKVIO, VIOHIO ---For HIO,-check for dedicated channel, CE, CU, or device busy condition, and subchannel busy and set appropriate condition codes. DftKVIO, VIOTCH ---Check-far-dedicated selector or busy channel and check for pending abnormal interruption and set appropriate condition code. !l~~!Q~2! Execute I/O. On completion, post condition code (and error return code in R15, if detected) • DftKDSPCH ---Eilt-to dispatcher. GENERAL I/O OPERATION INITIATED VIA DIAGNOSE DftKGIOEX ---Perform general I/O operation. Entry is via DftKHVC code 20. DftKSCNVU ---Find-device related to SIO cuu address. DMKFREE ---illocate storage for the IOBLOK. DMKCCWTR ---BuIld the read CCW list. !H!!!OS.Q! Queue the I/O request for execution. DftKGIO, DIAGRTN ---On-interruption return, check status. DMKUNTFR ---If-no problem encountered, free storage used for CCW string and IOBLOK. DMKGIO, DIAGRTN ---Reflect-the-condition code and return code to the user. DftKDSPCH ---jilt-to dispatcher. DftKUNTRN ---On-returned error condition, convert real CSW to virtual CSW and set in user's page O. DMKGIO, GIOEXT ---Eilt vIa-sic 12. VIRTUAL MACHINE I/O INSTRUCTION INTERRUPTION REFLECTION SIftULATION AND DftKVIOIN ---Entry from DftKDSP to process the reflected virtual interruption. DMKSCNVU ---Locate the VCHBLOK, VCUBLOK, and VDEVBLOK. DMKVIOIN ---Analyze blocks and reflect condition code to user. If condition code equals 1 (cc= 1) , save status from the real device (if real device) and DMKUNTFR. DMKUNTFR ---Translate and store CSW in user's page O. DMKVIO, VIOCC1 ---On-TIO-or-HIO, free the device and set CC=1. DMKFRET ---Fret storage for the IOBLOK. DMKDSPCH ---jilt-to dispatcher. VIRTUAL CONSOLE SIMULATION DMKVIOEX ---Entry for virtual console activity comes from the SCP stored in the user's virtual machine. The program's generated CCWs and data are reflected to the attached terminal used by the virtual machine operator. DMKVCNEX ---Locate and move non-TIC CCWs from the users virtual storage to a VCONCTL block. DMKVCN, GETCCW ---Update--cii and CSW in respective control block. DMKVCN, VCNRD ---For read- operation, build a read console buffer VCONBUF for the input to be read from the terminal. Q~!2~!!m. DMKIOEX ---Entry from DMKPRV to simulate I/O per VMBLOK's VMIST field. !l~!!!Q, !!Q2!Q On detected SIO, call DMKSCNVU ---To-locate VCHBLOK, VCUBLOK, and VDEVBLOK for the cuu called per SIO instruction. DftKVIOEX ---Determine device availability and set condition code accordingly. Q~!!Q~.Q'! If the operation is warranted, operation. !H1!!!Q, !!Q!!Q schedule the For TIO, check device status, pending interrupts, and set appropriate condition codes. Execute the read operation and call DMKVCHEX. DMKVCNEX ---set--return address in VCONCTL VCNRDRET field. DMKVSPVP ---spool console activity if SPOOL CONSOLE START specified. DMKDSPCH ---EiIt-to dispatcher. wait for completion. DMKVCN VCNWR ---Calculate and obtain free storage (VCONBUF) necessary for the write to console operation. DMKVCN, VCNMDAT ---Translate-and bring in user's data page and move it into VCONBUF. section 2. Method of Operation and Program Organization 219 ~~!!Q"§2~ !H1K2£!~± Write data to user's terminal. DKKDSPCH ---'Eilt-to dispatcher. DKKVCN, VCNSHCN ---oi-a -sense-operation, set CE and DE in the virtual PSW. Reflect the PCI flag in the PSW if the PCI flag was set in the CCW. set the IL flag if warranted. Kove the sense data from the VDEVBLOK to user storage as designated by the CCW. Update VDEVBLOKS VDEVCSW to reflect status and count. .!!!U~!£!, !£!££1 On completion of I/O operation, set appropriate status for command reject, not ready protection check, incorrect length, channel program check. set appropriate CC and CSW in users page O. Otherwise post pending interruption status in VKBLOK, VCHBLOK, VCUBLOK and VDEVBLOK. DKKVCN, FLAGTEST ---If-command-chaining, process the next ccw. I:KKDSPCH ---Exit-to dispatcher. LOCAL GRAPHIC I/O AND INTERRUPTION PROCESSING Issue the SIO. DKKDSPCH ---ialt-for the response. DKKGRA, RDINT ---Ei- t~e--Interruption response, go to the return processing address in the TRQBLOK extension TRQBCRT. For read return, determine function key action and write response (if appropriate) via KEYTBL. On response of CE and DE go to auxiliary processing address and execute the processing routines: CONRETBF - completion of a write CONTASK RDKINT - completion of a buffer read GRFCFK - execute console function SETREJ - set no accepted timer SETKOR - set more ••• timer delay SETWNG set 10 second clear warning RDEXIT clear buffers after PF keys STRTREAD - set read status NOCTL - process next CONTASK or go idle DMKGRA, RDATA ---Process--read response of data plus ENTER key. DMKCNSED ---ialt-and modify length count. Move data to caller's buffer. Jl1!1S~£l!~± Schedule rewri te inhibited) • ~!H~~!U!1B! Entry for local graphic device enable and disable function (from DKKCPVEN and unstacked CPEXBLOK). Invoking CP ENABLE/DISABLE commands, start or terminate local 3270 display (and supported print devices) and 3066 console activity. DKKFREE ---Performs enabling function. Gets storage for IOBLOK and TRQBLOK generation. DKKGRB, LOGUSER ---Porm and-wrIte out the logo at the screen. DKKGRB, ATTNINI ---unsolIcltedattention for RDEVBLOK (enabled) • DKKBLDVK ---Bulla LOGON VKBLOK for logon process. ~!!~£I1!!H~ Enter console input. function mode for terminal ~~K!Q§2~ Schedule request to clear screen preparatory to logon. DKKDSPCH ---'EiIt-to dispatcher to wait for interruption. successful logon per the next interruption begins the operation of building the user's virtual machine. DKKGRAIN ---Local 3270 display and 3066 interruption entry from dispatcher. I!1!!§£1!.~!l From the IOBLOK, locate the real device blocks related to the interruption. Analyze IOBLOK CSW and condition code and the I/O operation to determine read/write sequential action. For unit error, retry 10 times (if applicable). If recovery fails, log off. For ATTN interruptions, attempt to log on the new user if unsolicited ATTN occurs. Otherwise, set up for READ CCW string. DKKFREE ---Get-storage for function and build CONTASK, IOBLOK, TRQBLOK. 220 to screen (unless Q~!HQ'§2!! Perform start I/O. DKKDSPCH ---iilt-to dispatcher. Q~!~!!n!£ Entry point to process CONTASKS queue for local 3270 and 3066 devices. DKKFREE ---Get-storage for IOBLOK and TRQBLOK. DKKGRB, BLDCCWS ---iiecute-CENTASK, if appropriate. If not DMKDSPCH ---'Eilt-to dispatcher. LOCATE AND VALIDATE AN ISAM READ SEQUENCE Qn!!.§111!! Entry from DKKCCW modules to locate and modify an ISAK CCW string_ using the IOBLOKs IOBCAW locate the RCWTASK. Check for the ISAK read CCW. DMKISK, CHKRD ---Check--for the correct ISAK sequence as follows: 1. 2. 3. 4. 5. 6. The last CCW in the RCWTASK is a TIC. This RCWTASK points to the ne~t RCWTASK with a minimum of 2 CCWs. The first modified CCW is in real storage. The last byte of the ISAK read overlays the operation code of the first CCW in the next RCWTASK. The TIC in the RCWTASK is to the next RCWTASK's first CCW. The date address of the first CCW in the next RCWTASK is the same address of the ISAK read+1 as it is in real storage. IBK VK/370: System Logic and Problem Determination Guide D!KFREE ---storage obtained for seven double words save block. D!KISft, CHKTSK2 ---institute--the ISAft read modification as follows: 1. 2. 3. 4. 5. Set the read to point to the save block data area. Set the CP TIC to point to the .odified CCW in the same block. Set the modified CCW (seek head) in the save block to point to the save block data area. Set the CP TIC in the save block to return to the RCWTASK following the modified (seek head) CCW. Set the search CCW in the RCWTASK to point to the data area in the same block. DOUBLE WORD SIVE BLOCK r-----1 1 1 1 1 1 1 . Read Address 1 (2) TIC Address Unused Read Data. Area I 1(3) Modified CCW 1---------------------TIC to RCWT AS K 1 (4) 1 1 1 1 Real Read CCW -, 1 1 1 1 1 ---I 1 DMKIOS, IOSSIO ---set the--subchannel path busy and chain the active IOBLOK from the RDEVBLOK. DftKIOS, IOSSIO ---Locate-caller's CAW and issue the SIO. Check SIO completion. Returned condition code sets sequel action. cc=O indicates successful start; cc=l, ccw stored, initiate sense operation; cc=2, busy condition, retry or requeue IOBLOK; cc=3, fatal error (not operational, stack the IOBLOK and return to caller. DftKIOSHA ---Entry point for haltin9 a device. If device is not active, return to caller. If IOBLOK active, reset the IOBLOK to halt the device and mark the device reset in RDEVBLOK. DftKIOS, lOS lOKI ---If-the-channel path is busy with a burst .ode operation, stack the IOBLOK to halt the operation when the channel path becomes available. Return to caller. 1 1 1 1 1 Real TIC CCW ________________________________ -J1 L D!KISM, CHKTSK2 ---Return-tO-DMKCCW module via SVC 12 DftKIOSIN ---Entry from I/O new PSW. Check old PSW. If problem mode, save CPU status in the VKBLOK. DMKSCNRN ---Locate RCHBLOK, RCUBLOK, RDEVBLOKs for interruption unit. 1HU~'!!Q~£ SCHEDULING CP AND VIRTUAL !ACHINE I/O OPERATIONS AND INTERRUPTION HANDLING ~~K!Q~2R Entry to process CP generated I/O. Flag the IOBLOK as a CP generated event. Initiate I/O if path to real device is free (available). If not, queue the IOBLOK and return to caller. .!H~Kl;Q.22.! Entry to process IIO for virtual machine I/O operations. ftARK IOBLOK as not CP initiated. Save VMBLOK address. If path to the VDEVBLOK or the VDEVBLOK is busy queue the IOBLOK and return to caller. DftKIOS,IOSTATDV ---i~avarlable status, start the I/O and return to caller. Process dedicated channel interruption condition. If control unit end or channel available interruption occurs, restart the operation, if interruption does not occur stack it. DftKIOSIN ---If--the IOBLOK is not active on RDEVBLOK interruption, call DKKIOS. DMKIOS, IOSENSE ---Schedule---sense operation, then go to dispatcher. DKKIOS, IOSRSTRT ---Por PCi--or-CE interruptions, copy and stack the IOBLOK • DMKCNSIN ---Process PCI or CE interruptions, if related to local graphic device or nondedicated TP line. DftKIOS, DOSENSE ---Por split-seek complete interrupt, rechain the seek and reschedule operations. DMKSTKIO ---stack IOBLOK and restart any units freed by the interruptions. DMKDSPCH ---Exit-to dispatcher. DMKIOS, IOBSTART ---if-ItO-request has not been reset, save the address of the active IOBLOK and set device busy. If the device is being reset, unflag scheduled device and scheduled control unit. stack the IOELOK and restart the device. section 2. Method of Operation and program Organization 22\ TERMINAL CONSOLE I/O 3215, AND OTHBRS CONTROL, START/STOP, 3210, DMKCNSBN ---Per-unstacked CPEXBLOK, on enable or disable function, check current status of the current real device and set flag in RDEVFLAG. Build CON TASK and IOBLOK. :Q~KIQ§2~ Issue SIO for enabling and check return. DMKDSPCH ---jiIt-to dispatcher. or disabling function :Q1H~£NS!£ Entry from DMKQCO module. Build I/O CCi string as defined by the console device type. Also select the proper line code to interface with the device. place in CONTASK. For output CONTASK determine the correct translation table applicable to terminal communications (DMKTBL). To append proper control character to the data stream for the particular device type, refer to the following labels: • DMKCNS, IBCWTTY TeletypewrIters • DMKCNS, IBC2741 2741~-3767----- • • 1050~-1051----- DMKCBS, IBC3210 3210~-3215----- DMKCRS, IRCFIlIIS ---Attempt-to--start I/O by halting the current operation, if the operation is a 'prepare' CCW or the input is a read and the forthcoming output is a priority write CON TASK. DMKPREE ---Get-storage to build IOBLOK, if needed. DMKCRSIN ---Set-return address in IOBIRA. start I/O. If busy condition build CPEXBLOK and queue execution. DMKDSPCH ---EiIt-to dispatcher. :QJ!!£2!U~1 Process completed output contask. :Q~~£1!§'!!! Interpret interruption status and CCW residual count for input CON TASK completion. DMKCN S, CNINCT ---Validate--Input data and control characters and translate to EBCDIC from line code. DMKTRMID ---Attempt to identify, if applicable, the line code identification; PTTC/EBCD or correspondence. DMKCNSED ---Perform line editing of the input buffer. DMKCNS, CNSRT41 ---Prepare--and issue control CCis to request status information from the terminal. DMKCNSIN, CNSCTAK ---por-contral-task interruption return, examine the interruption status according to control task function: • DMKCNS, CNSTAK Reset-cont~or-task. • DMKCNS, IBC1050 :QJ!K!Q§2~ assume an attention interruption and build a 'prepare' ccw for the 2741. DMKCNS, CNSLOGF ---Por unIt-Check and timeout condition - logoff the virtual machine and re-enable the line. DMKCNS, CNSRTRY ---Por data--check and other conditions, retry the previous operation. DMKCNS, CNSCTID DevIce identIfIcation. • DMKCNS, CNSCTPR Attention-sIgnal. DMKCNS, CNSCTPR ---wrIte--'VM/370 Online' interpretation of response determines retry, or build new CONTASK and execute or stack or process next CONT ASK. :Q~!,g£.!!]! Process completed CONTASK requests. If no tasks remain for the terminal, set IOBLOK's IOBIRA to DMKCNSIN and link the IOBLOK to the user. DMKDSPCH ---jiIt-to dispatcher. encountered for later CONSOLE SCHEDULING :QJ!!2£!!!!:Q SVC entry to build CONTASK for Set the input buffer to zeroes. DMKFREE ---Get-storage to build CONTASK. :Q~~£!§!!, £~§~~A~ For an active input task halted, RDEVPLAG=RDEVHIO to process priority output task. DMKPREE ---SuIid COBTASK for reverse break CCws. DftKCRS, CNSBREAK ---Move -the-Input CORTASK following the last priority write output COBTASK on the chain. DftKCNS, CBSIOUC ---Por unIt-check with intervention required, 222 :Q~!2£!, input data. §!2Y§Y§ Stack CONTASK on RDEVBJJOK, if RDEVCON was zero. If not, exit to the appropriate interrupt handler per RDEVTYPC and RDEVTYPE or DMKSPCH ---jiIt to dispatcher. :QJ!!2£!!1 SVC entry to build CONT1SK for output data. strip trailing blanks from output message, IBM VM/370: system Logic and Problem Deteraination Guide .o~ify byte count and determine real device destination. DftKFREE ---Get-storage to build output CONTASK. .!HUS.2C N, !!!~2£! Update CON TASK CCW message byte count for the message text, terminal and line control information and (i~ appropriate) time sta.p. DMKCVTDT ---if--time stamp required, get the value for CONDATA area. DftKVSPVP ---Spool console message, if VDEVFLAG=VDEVCSPL. .!2.ftK2CN, ~R§'~A.ll .!H1K2~~, !AK!!!~R If message data X115 1 , create a line. contains carriage returns, separate CONTASK for each On first CONTASK Or priority CONTASK, enqueue on chain from RDEVBLOK in appropriate location, then call related interrupt handler. !tt!K2~.I, !!!!~!!~ If NORET or DEFRET specified, build and stack CPEXBLOK to alert the interruption handler and return via EXIT SVC otherwise go to specified interruption handler. !H~KQ~.I1Q Entry via SVC to disconnect and logoff a virtual machine as a result of transmission line failures. place the virtual machine in a wait state, VftRSTAT=VftCFWAIT. DMKSCHDL ---ilter virtual machine to unrunnable state. DKKFREE ---Get- storage for message for the system operator • .!2~!~~~!!~, ~~!2£.I!!~, ].ft!£!~]~, ]~K2!2!~ Fill in message variables. DMKSCNR, DKKSCNRD, DftKCVTBH, DftKSYSNK ---FIll in-message varlables.-------~~K2£!!!1 Send the operator. ~!1!2~~, user disconnect message ~§'~2~!!Q to Build TRQBLOK, if needed, for 15 delay, schedule it, and exit via SVC. the minute ]~K2£!, ]~£11Q2 After time elapse, TRQELOK is unstacked and VHOSTAT is set to VftKILL for inevitable DMKUSOFF logoff operation. DKKDSPCH ---ExIt-to dispatcher. 3704/3705 INTERRUPTION HANDLER !H~!!Hm!£ Entry via DMKQCN or via CPEXBLOK for 3704/3705 resource initialization. Locate the NICBLOK and check resource avaiability. ~~KR!~, 1!~!1.!!!! ~.ftKRNH, ~!2~!2! !H1!!! NH, ~!2!!.I2 For resource CONTASK save DKKQCNET. unavailable, set area and return RC=12 in task via For resource available, set CONTASK values per input and output task requirements. Kove CONTASK chain. ]~K!!!M, !!!!~l!!!l from RDEVBLOK chain to NICBLCK DftKRNHIC, RNEXLST ---Search the--SICBLOKS for CONTASKs to be sent to 3704/3705, build and chain for output. DftKRNH, RNCHAIB ---Perform---necessary function for each resource. ~11!!Q2Q!! Start ou tput I/O opera tions. DKKRNH, RBICHBl ---Return-via-a7. DftKRBHND ---Entry via SVC to schedule resource control tasks • DKKRNH, RBHBDTK ---Bulld--control CONTASK and enqueue it for execution. DKKRNH, STKCPEX ---For NORET--specified, build and stack a CPBXBLOK to perfor. SVC exit. DftKRNH, RNDEXIT ---ittempt-to-start output via GOTO DKKRNHIC. DKKRNH, RBFDI sc ---Entry-for-3704/3705 recovery. DKKBLDR ---Load the 3704/3705, if it was not previously loaded. ~~K~R! Get storage to build CKPBLOK (telecommunications control block), if necessary. DMKRNH, RNSBITS ---Record-actIve line and enabled terminal flag bits. ]~!2£!]~ Clear CONTASK chains. ]~!2£~1:.Q Force disconnect to all active users. DMKNLDKP ---DUMP-the 3704/3705. DKKNLDR ---Reload the named program. Q!1!!!!~!m I IPL On complete' resources. DKKFRET ---Release the CPEXBLOK. signal, reenable ~11!~§.f£!! Exit to dispa tcher. DftKRNHIN ---Entry via IOBLOK to perform input and output interruption processing. DKKRNK, RNIOBRR ---por Input--process failure. Analyze the failure and if related to the 3704/3705 and not to a particular resource, either retry or dump and reload. DKKRNH, READBUF ---jnterpret---response codes for each BTU received and schedule necessary control operations. DKKRBH, CKPRBAD ---Generate-response to a read error. DKKRNH, CKPWRITE ---Generate-response to a write error. DKKRNH, CKPCONT ---Generate-response to a contact task error. DKKRNH, COMDISC ---Generate--response to a disconnect task error. DKKRNH, COMCNTL ---Generate-response to a control task error. Q~!!!!~, !!!~.Q1.!1: Generate response to a unsolicited read. On 3704/3705 available condition, search NICLIST and build an IOBLOK if required. ~~!2£!]~ Return completed CONTASKs. section 2. Method of Operation and Program Organization 223 DMKRNH, RNSTART ---Attempt-te-restart the 3704/3705. DMKDSPCH ---Exit-to the dispatcher. R§.§!!!!! !!~!i!Q~, Process POLL conditicn. SIO on a no CONTASK queued !!~!i!.Q~.2] ~!HH!!!J1'!!! Entry via IOBLOK to perform input and output interruption processing. DMKRNH, SCHREAD ---on- output:- examine Interrupt status per IOBLOK values and if ATTN, build and start a read CCW sequence. !!!HH~!!!!, !!!!IQ!B!~ If unit check and fatal, dump and reload the 3704/3705. DMKRNH, RNOREAD ---I~pend[ng-iTTN cleared via SIO ]~!s'IQ'§.2B Reschedule write operations. DMKRNH, RNSLOWDN ---I~ unit---exception, set reschedule rejected CONTASKs. RDEVSLOW and !!~!s'.2CN!!l! Return only CONTASKs without CONRESP or CONSPLT set. Retain others until final response is received. I:MKRNH, RN START ---Attempt-to-restart the 3704/3705. DMKDSPCH ---EiIt-to dispatcher. HANDLING LINES REMOTE 3270 WITH I:MKRGBEN ---Entered when the command is issued. BINARY NETWORK SYNCHRONOUS ENABLE/DISABLE ~~!i!BJ1!J1! Get storage for the necessary CONTASK, IOBLOK, and if applicable, BSCBLOK. DMKRGB, LINESUP ---set up-requIred CCWS and control data in the CONTASK for tasks. These tasks include: enabling the binary synchronous line, enabling a device, LOGO messages, screen formatting, and disable line or device (logoff) • ~~!s'!!!!!l~ For logon function build logon VMBLOK. .!HHSIQ~.Q] Start line I/O or device I/O, for condition. DMKRGB, RGFTASK ---Per busy--condition, build CPEXBLOK to caller. DMKRGAIN ---Entry from DKKIOS, examine line interruption condition. Discard any of the :following and go to the dispatcher: nonbinary synchronous line, copied IOBLOK, unsolicited interruption, bisync line fl.agged not-in-use, non-terminal class device. !!~!i!!'§~, fA.1A1~!! !!~!i!!§A, !!!.§A.§!A For IOBFATAL condition or any condition code, free all related IOBLOK, IOERBLOK, and BSCDLOK. non-zero CONTASK, Log off all affected users on that line. DKKMSWR ---send message to the system opera tor. DMKDSPCH ---EiIt-to dispatcher. DMKRGAIN ---j~-IIne or terminal response did not fall in the previous category, process via TP code branch. The code in the fifth byte of the ending ccw or IOBCSW-8. TP Code Function TPOO---Errer-Handling CCW TP01 Enable/disable function TP02 Write EOT (sequence prior to polling and addressing) TP03 write polling or addressing characters TP04 Handle station's status and sense message Read response to addressing TP05 write response to text TP06 TP07 NO-OP following POLL command unit exceFtion condition TP08 (timeout) A11 reset commands TP09 TP10 Read/write text Read response to text TP 11 DKKDSPCH ---Exit-to'the dispatcher • not busy and exit DMKRGBIC ---Entry from DMKDSP. On a not available line condition, exit to dispatch. For available line, process the associated CONTASKs by queueing the related resource from the NICBLOK. 224 Process selection SIO on available resources and not in control mode per NICBLOK conditions and the CONTASK CONSTAT field. DMKDSPCH ---ExIt-to dispatcher. DKKBSCER ---Entry via DKKIOS and SVC 8 to process errors related to the binary synchronous line unit check and channel error conditions. On first error pass, move the IOERBLOK pointer from the IOBLOK to the RDEVBLOK, reset retry and fatal flags, set the ERP flag and call DMKFREE. DKKFREE ---~;t-free storage for a work area for retry CCws. IBK VM/370: System Logic and Problem Determination Guide DMKBSC, NOTPIRST ---ona-not--iIrst error condition, test for unrecoverable error condition. Unrecoverable errors include: program check, protection check, chaining check, equipment check, interface control check and channel control checks. If one of these, notify the system operator. Rese~ flags, initiate error recording and DMKPREE ---Free IOERBLCK. !H1K!OS2~ Go back to scheduler. DMKRGP, UNITCK --~na1yze--TP code, sense data CSW count and retry count to determine IOBPATAL flag setting. residual retry or REAL STORAGE ALLOCATION AND PAGE MANAGEMENT DMKPTRAN ---Enter via the TRANS MACRO per paging request as determined by DAT created program interrupt (page or segment exception). DMKPTR RESTART ---Return-to-Ca11er, if virtual address in R1 is beyond range of user's directory specified storage si ze. DMKPTR, ADDROK ---Check--page residency via LRA (LOAD REAL ADDRESS) operation. DMKPTR, TESTLOCK ---For resldent- page, lock page in storage (if appropriate) • DMKPTR, GETRADD ---s;t real--address in R2, make PAGTABLE entry valid. Set cc=O and exit to caller. DMKPTR, INTRAN ---For page-- not resident but in transit (SWPTABLE, SWPPLAG), place virtual machine in locate mode. Locate CPEXBLOK for the real page requested and chain another CPEXBLOK with a return address of TRANRETN, to the same chain. DMKPTR, TRANRETN ---iiter-page--Is no longer in transit, restore registers and return to RESTART for processing. DMKPTR, GETPAGE ---Rec1aIms-a-page on PREELIST (CORETABLE). DMKPTR, DOlO ---For page-that is not in storage, do setup to read in the page. DMKPTR, CKDEPER ---For DEFER-option passed in R2, build CPEXBLOK to return to user after page is in storage. DMKPTR, PAGIN ---ifter-the-page is read into storage DMKPAGIO process, place its CORTABLE entry into the user's page list then remove the user from the wait state and update the lock count (if required). DMKPTR, GETRADD ---set reaI--address in R2, make PAGTABLE entry valid. Set cc=O and exit to caller. DMKPTRPR ---Per-the caller's code in R2, obtain a page frame DMKPTR, GETPREE ---Obtain-page-frame via CORTABLE reference then exit to caller. DMKPTRPE ---Entry via CPEXBLOK, check page availability via flush list (DMKPTRPL), if none available steal a user's page. !H1!H~l!i, .§11ECl The SELECT routine is entered to replenish the PREELIST from the flush list or user's pages that have not been referenced. DMKPTRPT ---Process pages to be returned by chaining them to the PREELIST. On page returns DEPER page requests are processed first. DMKPTRLK ---Iii-locking a page in Real Storage (addre.ss in R2), add 1 to lock count; if previously locked, and exit to caller. If not previously locked, unchain the CORTABLE entry from the user's page list and set the lock count to 1. DMKPTRUL ---To-unlock a locked page, reduce Lock ountby 1 and exit. If the lock count is now equal to zero, place CORTABLE entry on user's page list prior to exiting from routine. READING/WRITING STORAGE A DASD PAGE TO/PROM VIRTUAL DMKPGAGT ---Entered via SVC call to read in DASD page into storage. DMKPGTPR ---Release DASD space that was previously occupied by this virtual storage page. DMKRPA, RESIDENT ---Reiove--resIdent page frames from the user list. DMKPTRPT ---Place these page frames on the free list. Q1Us~g!, ~~Q~l!!~l! Update the SWPTABLE with disk address in RO. DMKPTRAN ---Bring the page into storage. DMKPRA, EXIT ---Put rear-storage address of the virtual page is passed back to the caller in R2. DMKRAPT ---Entered via SVC call to write out a page to DASD storage. DMKPTRAN ---Locate the page to be moved and lock it. DMKPRAPT ---store all registers in CPEXBLOK and flag CPEXRO as a write request. DMKPAGIO ---Write the page. l!1!!Sg~!, IQ]II! Decrement page wait count. take user out of page wait. If zero results, Section 2. Method of Operation and Program Organization 225 DMKPTRUL ---Unlock the page frame. Return to caller. !H1EY!IA~ Entry via BALR when an EC mode virtual machine needs a shadow table generation and update or purge operation. DMKVATMD ---Get--storage to create shadow table, Flag VMBLOK to show shadow table existance. DMKVATBC ---Free-shadow page, segment and copy segment, when user leaves Ee mode or alters CR o. DMKVATRN ---Entry to perform third level to first level translations and third level translations to second level address translations. Use TRANS macro to access virtual segment and page tables to get the virtual page into real storage. DMKVATLA ---usIng the TRANS macro to access the virtual segment and page tables, pass the resulting page and displacement to DMKPRVLG. DMKVATPX ---Invoked by DMKPRGIN when a paging exception is received for an EC mode virtual machine. DMKVAT, SETUPEX ---Perfor;--set up operation and develop page table address. DMKPTRAN ---Get-the page. Dt!KVATPX ---Update the shadow table. DMKVATSX ---Invoked by Dt!KPRGIH when a segment exception is received for an EC mode virtual machine. Dt!KVAT, SETUPEX ---Perform-setup operation, then invalidate the shadow page table or if none exists, allocate a new shadow table and set it invalid. DMKVATPF ---jntered via Dt!KVATPG from DMKPRG to simulate pseudo page fault interrupts when a paging exception occurs with pseudo page faults interrupts enabled. Dt!KPTRAN ---BrIng in the DASD page. Dt!KPRGSM ---Reflect program check X'14' to the user. DMKVAT, PAGRES ---When the--page becomes resident in storage. Build the PGBLOK, set high order bit in the translation exception address field, DMKDSPGH ---jilt-to dispatcher. DASD page and place it in Rl. Return to caller. DMKPGTRPR ---intry-to deallocate DASD page used for paging and Spooling. Via RDEVBLOK locate the RECBLOK and reset appropriate bit in the RECBLOKs RECMAP and adjust the member of DASD pages in use. If all the pages on the DASD cylinder have been deallocated, deallocate the cylinder. Exit to caller. DMKPGTSR ---intry to release a group of DASD pages no longer needed for spool file use. Per Rl, find RECBLOK and dummy RECBLOKs and reset the RECMAP bits as specified. Free related RECBLOKS, if complete deallocation occurs. DMKPGTCG ---Entry for allocation of enough DASD spool space to record a 3704/3705 dump. Scan RDEVBLOK and associated ALOCBLOK for enough contiguous available space to record the dump. When found, flag cylinder as allocated and build and chain the required RECBLOKs. DMKPGTVG ---iiMKPGT contains an intel:nal table, PAGET1!,BL, in which the allocation of page frames for the CP paging VMBLOK is kept. The PAGETABL is scanned for a zero bit denoting the page frame is available. The page is marked allocated by setting the bit to one and the address of the page frame is returned to the caller in Rl. If no page frames are available, a CPEXBLOK is built and queued to the deferred request chain. DMKPGTVG ---E;try to release a page of virtual storage. Check the chain of deferred requests. If there are none, reset the page bit in the PAGETBL to 0 and exit to the caller. otherwise, give the page to the first requestor in the deferred chain and stack his CPEXBLOK for the dispatcher. SHARED SEGMENT STORAGE MARAGEMERT Dt!KVMIPS ---j;try via DMKPRT because a shared page (address in R2) has been detected by CPo The virtual machine (VMBLO~ that caused the page alteration has its named system released. The original page swap tables are copies. DMKRt!SG ---ihe-running virtual machine is informed of the share page violation. DMKVMASH ---Entered via DMPDSP/BALR, the shared page table are examined for hardware change bit being on. The resulting condition code is reflected to the caller. ILLOCATIOR IND DEILLOCATIOR OF DASD SPACE TEt!PORIRY DISK STORAGE MANAGEMENT DMKPGTPG ---intry to search and allocate a DASD page for paging/spooling. Dt!KPGTSG ---~e;rch appropriate RECBLOK chain for available DASD page. If none found, locate next available cylinder and construct a new RECBLOK, calculate address of the allocated 226 Dt!KTDKGT ---Entry to allocate temporary disk space (T-disk). With RO equal to the number of cylinders required and R1 equal to the device type, locate RDEVBLOK and related ALOCBLOK's ALOCMAP. If no allocation space is to be found, return to caller with 0 in RB. If IBM Vt!/370: system Logic and Problem Determination Guide allocation is successful, flag ALOCMAP, with X'AA' as allocated and put first cylinder address in Rl and RDEVBLOK pointer in RS and return to caller. DMKDSPCH ---ExIt-to caller. Q~~f§~l~ Entry to examine user's page tables for a named system. Locate segment table and check each page table header for a named system. If found, set cc=O; if not, set cc=2 and return to caller. PAGING I/O SCHEDULER DMKPAGIO ---intry to initiate page I/O activity. Using preformatted IOBLOK from IOBSTACK, fill in the CCWs with DASD opcode and values derived from CPEXBLOK swap table and core table. Chain the CPEXBLOK on the in-transit queue. DMKPAG, GETRDEV ---plnd the-Paging RDEVBLOK. DMKPAG, FINDIOB ---search--ioBLOKs seeking the same cylinder address. If found, chain the channel programs together with TICs. DMKDSPCH ---EiIt-to the dispatcher. DMKPGSPS ---intry to release storage containing a named system passed by the caller. Search the page tables looking for a header equal to the named system. If found, release the swap and page tables and build new ones, if the address range still lies within the user's virtual storage size. ~~!fA§, 2Q~Y~R!Q DMKFREE ---intry to obtain a block of storage, validate input doubleword request (RO). DMKFRE, FREESUB subpooI size reque~t, index into SUBTABLE. For correct S1ze block found, remove block from chain and put the address of the block in Rl. Return to caller. DMKFRE, FREE02 subpool size not found condition get next large subpool size. Remove block from chain, put address in Rl and return to caller. DMKFRE TRYSPLIT ---Por subpool-that cannot honor request, start search a 30 doubleword end for block requirement. When a block is found, split block (if necessary) and give caller address of his portion in Rl and chain the remainder to the appropriate subpool size. Return to caller. DMKFRE, CLEARSAV ---1£- no--block can be found to honor user request, call DMKPTRFR ---Petch a page from the dynamic paging area. Chain it to the free storage chain. Processing then continues. See entry DMKFRE, FREESUB. If no IOBLOKs with found - some cylinder address are R~!!Q~2~ Start the I/O operation. DMKDSPCH ---ExIt-to the dispatcher to await interrupt. DMKPAG, UNTRANS ---upon Interrupt return, unchain the CPEXBLOK from the intransit queue. DMKSTPCP ---stack all deferred requests for execution. DMKPAG, UNSTACK3 ---Return-iOBLOK to IOBSTACK or free it. DMKPAG, OVERHEAD ---Calculate-paging load and store it, the TOD, and other values in PSA. DMKDSPCH ---Eilt-to dispatcher. RELEASE VIRTUAL STORAGE PAGES DMKPGSSS ---Entry to release partial virtual storage. Per Rl (address of first page to be released) and R2 (address of last page to be released) set partial entry flag. R~!fi~~Q Entry to check for shared segments and decrement usage count. Some registers and flag full entry condition. Examine VMSHRSYS for shared segments. If so, decrement use count. On 0 use count unchain the SHRTABLE from the active list. DMKPGS, CKCLEAR ---On- NOCEAi-exit to caller. If not, store number of release pages in RB. DMKPGS, PAGOUT2 ---Locate-page- and swap tables for the segment to be released and index to the entry for the first page. DMKPTRAN ---inItIate paging, and when paging stops release the page frame. DMKPGS, NEXTPAGE ---a-value:----- FREE STORAGE MANAGEMENT ---oi- ---Por DMKFRERS ---Entry to return all sub pool blocks to the free storage chain per the SUBTABLE reference, as each sub pool block is released, its address and length are placed in Rl and R2 respectively. Branch and link to FRETOS to return the block to the free storage chain (DMKFRELS) • Repeat action through all subpools. Return to caller. DMKFRET ---Entry to restore block to subpool or free storage. Per RO and Rl (number of double words to be released and and address of the first double word, respectively), the subpool sized block is returned to the appropriate subpool. Update the pointer in the SUBTABLE. DMKFRE, FRET21 ---1£- subpool size block being returned' is within the dynamic paging area, process as a block of more than 30 doublewords. Section 2. Method of Operation and Program Organization 227 D~KFRE, FRET20 ---SIocks--larger than 30 doublewords to be returned are merged into the free storage chain indicated by D~KFRELs. D~KPTRFT ---Restore page to dynamic page area; if a complete page is alloted, blocks belonging to the dynamic paging area can be built. D~KFRE, FRET03 ---Return--a-block of storage to free storage chain by merging into the chain storage addresses in an ascending order of sequence. Return to caller. CP INITIALIZATION AND TER~INATION PROCEDURES DMKCPI, NPSWS ---iocate--an available primary or alternate system console (PSA values). DMKCPI, NOTCHNG ---SuIld-u;er-directory page list per DHKSYSUD. DMKLOGOP ---iog-on the system operator. DMKCPI, STARTSYS ---iorce--iiOii--iiucleus modu.les to DASD page device. DMKIOEFL ---inItIalize error recording cylinders. DMKNLDR ---Auto load 3704/3705; if appropriate. DMKCPVAE ---Enable 270X lines, if appropriate. DMKPTRUL ---ijiilock CPI as initialization is complete. DHKDSPCH ---iwaIt interrupts. D~KCKPT ---InItial entry point to load the system after loading the first module, DMKCKP, from the system residence volume. Check CPID in PSA for startup method. DMKSAVRS ---i~r--CPID eqaal to not warm or not CPCP, insert COLD and load the nucleus. Then branch to DMKCPINT, to perform CP initialization. .!H1!£!fl !Q:!~!!~ ON CPID=WARM or CPCP, halt and drain all I/O devices and remember enabled terminals. DMKCKP, NEXTCH ---DMKRSPCV-to validate warm start cylinder. DMKCKP, CLOCKOK ---save accou;ting data, log message, SDFBLOKs and enabled terminals and lines on checkpoint cylinders. DMKCKP, CHKOS ---save spool records allocation and spool hold queue blocks on checkpoint cylinder. D~KCKP, SHUTSYS ---if-normal--shutdown indicated, issue message to system operator and load disabled wait state code X'008'. D~KCPIlU ---Entry point to perform system initialization. DMKCPI, KEYLOOP ---DeteriiiIne--real storage size, initialize CORTABLE, Allocate free storage and initialize system paging tables DMKCPI, CPIHIP ---Check-vIa-BIO for online and ready status of all DMKRIO generated devices. DMKCPI, CPISTCAW ---Read -volume-labels and aatch to RDEVBLOK, RDEVSER. DMKCIP, DMPALLOC ---Allocate-dump file to systea device. DMKCPI, ALOCLF ---suild-allocation block for CP-owned devices. DMKCPI, MICTEST ---Test -for--virtual machine assist feature availability If available, build MICBLOK and link to VMMICRO. 228 DMKWRMST ---Entry from DMKCPI initialization. Check R2=01, if so go to DMKWRN, WARMCLR for cold start. Check Warm start cylinder for 8 byte XFFs identifier. DMKWRM, ENABLERT ---jf-enable--records on, warm start cylinder, enable appropriate RDEVBLOKs. DMKWRM, EN370S ---if-warm-;tart record indicates, set flag for auto load of the named Nep program. DMKWRM, ENR3270 ---inable-bInary synchronous lines by clearing NICBLOK Offline flag, (if appropriate) DMKWRM, ACNTRT ---iuIld--ACiiBLOK, load it with warm start cylinder data and chain it. DMKWRM, WARMLOG ---SuIld-buffer and load it with the saved log message. DMKWRM, WARMSPL ---i'Uild--SPPiioKS and fill with appropriate printer, punch and reader spool data. DMKWRM, WAR HOLD ---suIld-SHQSLOK and move hold queue record data to the new block and chain it to the hold queue chain. DMKWRH, . WARMCLR ---Clear-i-bites of record 1 on the warm start cylinder. Check CPID again. DMKCKSWH --~Por--CPID=CKPT or FORCE, reconstruct spool checkpoint records. DMKCKSIN ---ior-CPID=NOT CKPT or NOTFORCE, initialize the checkpoint cylinders. DMKCKSPL ---pIles in the systems spool hold queue are added to the checkpoint cylinder. DMKWRM, GETDISK ---Read iii-the-remainder of warm start data. .!HUS£.f~2!! Entry paint results from involing CP SHUTDOWN IBM VM/370: System Logic and Problem Determination Guide command. Close active spool files for callers or operator console. DflKCPS, DASDCH ---vIa -RDEVBLOK, locate and record DASD statistical data. DflKCPS, DASDCHI ---Put cpcp-Into CPID to denote shutdown. DflKDMPRS ---set--up CAV, CCVs and issue IPL to system residence device to reinitialize CPo DMKCKPT ---save spooling and accounting data. DMKMONSH ---stop-monitor tape activity. DflKCPI SHUTSYS ---sense-shutdown flag, issue DftKCPI961V, enter disable wait state code X'006'. Entry occurs via ABENDOOO condition or by pressing system console RESTART button. Save PSA values. Determine if dump is full or just CP portion. DftKDMP, DftPftSG ---Pormat-and- issue ABEND message to operator and transfer to DMKDKP and DMPDASD. !HHUH1g, Ql1fQ!'§Q Write out a defined amount of storage or all storage to selected DASD device. DMKDftP, DSKEND ---Place-sendIng record number and the system file number in the dump file SFBLOK. DMKDMP, RECSRCH ---Chain--dump-file RECBLOKs to RDEVBLOK, and link dump file SFBLOK onto the system reader chain. DftKDSP RESTART ---Restart-the system on warm start indication. DftKDftP, DMPTAPE ---Dump -cP--storage or all storage to the selected Tape Drive per specified tape parameters. DftKDftD RESTART ---Restart--the system, if warm start is indicated. DftKDMP, DftPPRT ---Dump -cP--storage or all storage to the selected printer. DftKDftS RESTART ---Restart--the system, if warm start is indicated. DftKCFMBK ---Send-read CCVs to the terminal for LOGON or DIAL response. DMKTRMID ---On-response determine translate tables to be used. DMKFKBK ---valIdate command and transfer to DftKLOGON. DKKLOGON ---LOGON command execution. DftKDIAL ---DIal access linkage to multiaccess system. Ql1!s'yQS Via user directory access, validate user logon eligibility. On acceptance of eligibility, that is the successful completion of logon, build and allocate control blocks and linkages for the user's virtual machine. DMKCFGIP ---Par-the IPL of a named saved system, the name is verified and resources are checked for availability. virtual storage is set up with the saved system via SVAPTABLE, SEGTABLE, SHRTABLE updates. For the IPL of device address, the IPL simulator is loaded in the user's storage. DMKVKIPL ---user's page 0, set console address, IPL device address, VMBLOK flags 1PL device type and class and user CAV. Read in 24 bytes from the CTCA, reader, DASD or tape unit into the user's virtual location zero. The CCW pointer is now set to the 1PLCCW at virtual location X'8' and the program is loaded. Ql1!S!l1!, !E!!QQ!!~ For IPL STOP, the virtual machine is placed in console function mode to allow change to nucleus name and apparent storage size before continuation. DMKVftI, LOADNOW ---IPL address-is inserted in X'02' if BC mode, or X'BA', if EC mode. The user's CAV and registers are restored and control is given to the user by loading the current PSW at virtual location O. VIRTUAL ftACHINE INITIALIZATION AND TERMINATION DftKCRSII ---Entered via interruption fro. a console or terminal (not displays) device. If appropriate, determine and store device type in the RDEVBLOK. Vrite the Vft/370 online • essage. Sets up to receive attention interruption. DftKBLDVft ---On--attention interruption, build skeleton VftBLOK for LOGONxxx. DMKUSOLG ---Entry is the result of user invoking LOGOFF. Set flags in VMBLOK indicating logout operation. DftKUSO, US006 ---Retain--lIne communication, if HOLD operand specified. Ql1!s'y'§Q, 'y'§QQ~ Adjust return address to not run the user. DMKUSOPP ---set-VMBLOK flags • DftKTRCRD ---Called to reset tracing. DMKPERT ---Called to reset tracing. section 2. ftethod of Operation and Program Organization 229 DItKACOTIt ---iccounting called to co.pute the connect time for the LOGOPP .essage. J2!U~.Q£Jjl Write the .essage to the user. DItKSCHDL ---Called to alter userdispatch status. DItKCFPBB, DItKGSPO ---Reset the-virtual .achine. DItK'ATBC ---Release shadow tables (if any). DftKSCHBT ---Dequeue clock comparator request (if any). DftKBLDBL ---Release seg.ent tables, page and swap tables related to the user. J2ftK!!SO, .!l§Q.2~ Via DItKFBBT return user 'ItBLOKs to free storage. DftKUSO, US093 ---Por ~he- system operator, clear and reinitialize the 'ltBLOK. DltKFBBT ---Return all other virtual machine control blocks to free storage. DftKACOPF an accounting card for the user. DftKUSO, US098 ---Pree LOGOFP .essage area. Exit to do free storage maintenance. Exit to DltKCFIt or DltKDSPCH. DftKUSOFL ---Entry is the result of the invoked FOBCE co •• and. DftKSCNAU ---Locate userid 'ltBLOK. DftKUSOFL ---set--'ltKILL in 'ftBLOK, build CPEXBLOK and stack it for dispatcher. DltKDSPCH ---upon-CPEXBLOK execution, process as at LOGOPP entry DltKUSOPF. DftKUSODS ---Entry from an invoked CP DISCONN command. set disconnected 'ltDISCK in 'ftOSTAT. truncations allowable COftNBEGO. nalles, and of co.mand starting abbreviations, The for.at of the table entry is: Co •• and name 8 Class mask 2 Abbreviation count 2 Routine address 4 DftKCFIt, CONFFIND ---ifter--a-cOiiand match has been made, the privilege class of the command is matched with the user's privilege class, 'ltCLEVEL in the 'ltBLOK. DltKCPIt, CONFCALL ---The last--4-bytes of R command contain the address of the routine that processes the command. Figure 55 is a list of all CP commands and the associated processing modules. ---Punch r COllmand AUTOLOG LOGIN LOGON DIAL ATTACH ATTN ADSTOP ACNT BEGIN BACKSPAC CHANGE CLOSE COUPLE DISPLAY DCP DEFINE DETACH DISCONN DISABLE DltCP DRAIN DUltP ECHO EXTERNAL ENABLE FLUSH FOBCE FREE HALT HOLD INDICATE IPL LINK LOADBUF LOADVFCB LOCATE LOCK LOGOFF LOGOUT 1t0NITOR ItESSAGE ItSG !H~!2£!l!1 Send disconnect message to user. ]ftK!!§Q~§ Increment return address to DltKCFIt by 4 to prevent a return read to the user's terminal. Clear 'ltTERIt field to indicate the user terminal is disconnected. ]!1K2£!l!1 Send message to system operator informing him of user disconnect status. Exit to DftKCFIt. CONSOLE FUNCTION (CP COftltAND) PROCESSING DltKCFltBK ---Entry used when the ATTENTION key (or equivalent) is pressed once or twice (according to the ,It or CP status) to allow the user to direct a line of input data for CP command processing. Set 'ltPCWAIT and VltCF bits in VltBLOK indicating wait state and console function mode. DltKPREE ---suIlds an 18 doublevord CONBUP buffer for the read operation. DltKSCNPD ---Matches the 8-byte command name against the names, the table of matching command 230 the at Figure 55. IBIt Vlt/370: System Logic and Problem Determination Guide ----_._--------, Entry Label I DftKLOGON DltKLOGON DltKLOGON DftKDIAL DltKVDBAT DltKCFMRQ DItKCPVAC DltKCPVAC DltKCFMBE DltKCSOBS DltKCSUCH DItKCSPCL DltKDIACP DItKCDBDI DltKCDBDC DftKFENIN DltK'DBDE DltKUSODS DltKVPVDS DltKCDBDM DltKCSODB DMKCDBDU DItKftSGEC DltKCPBEX DltKCPVEN DltKCSOFL DltKUSOFL DItKCSPFR DltKCPVH DltKCSPHL DltKTHIEN DltKCFGIP DltKLNKIN DltKCSOLD DMKCSOVL DltKCFDLO DMKCPVLK DltKUSOLG DltKUSOLG DltKMCCCL DltKMSGMS DltKMSGMS ------------' CP Commands and Their Entry Points (Part 1 of 2) Module -, COlllland Entry Label NETWORK NOTREADY ORDER PURGE QUERYl READY REPEAT REQUEST RESET REWIND SYSTEM SAVESYS SET SHUTDOWN SLEEP SPACE SPOOL STORE START STCP TAG TERMINAL TRACE TRANSFER UNLOCK VARY WNG WARNING DMKBETWK DMKCPBNR DMKCSUOR DMKCS'UPU DMKCFMQU DMKCPBRY DMKCSORP DMKCFMRQ DMKCPBRS DMKCPBRW DMKCPBSR DMKCFGSV DMKCFSET2 DMKCPVSH DMKCFMSL DMKCSOSP DMKCSPSP DMKCDSTO DMKCSOST DMKCDSCP DMKCSTAG DMKCFTRM DMKTRACE DMKCSUTR DMKCPUVL DMKCPVRY DMKMSGWN DMKMSGWN DMKCFM DMKCFM *CP DISPATCHING AND SCHEDULING DMKDSPA ---Entry for fast reflection activity. Perform user (PSA RUNUSER) accounting and determine validity of fast reflection by examination of DMKDSTAT values. DMKDSP, RUNTIME ---no-user--accounting, then load the remaining tille slice. !1~!!12E, 2]!~YA!I!~ Build the PSW, then with LPSW RUNPSW. lMajor operand decode of QUERY is by a scan table at QRYLIST in DMKCFMQU. Depending on the operand match, DMKCQP, DMKCQG, or DMKCQR· are called. The respective entry points are DMKCQPRV, DMKCQGEN, and DMKCQREY. 2Major operand decode (except for PFnn) is contained by the scan table starting label SETSTART in DMKCFSET. L________________________________________ ---J Figure 55. CP Commands and Their Entry Points (Part 2 of 2) Read in the terminal input command line. DMKCFMAT ---On-NULL data and ATTN key indication, post attention interrupt pending in VDEVBLOK, VCUBLOK and VCHBLeK. Return to run the v irtual machine. I dispatch virtual machine DMKDSPB ---Entry to dispatcher when the user's been external to DMKDSP. DMKDSP, CKPSW ---Verify-the PSW change. !1~!!12E, Y!2!A£E Unstack any pending interrupts for (if enabled). DMKDSPCH ---Go-to the dispatcher. PSW has the user Module !1~K2£!!!m " !H1E£!:1!S2 tille value (siaulation of virtual aachine stop button depression) the VMBLOKs VMSLEEP bit is set. The terminal console keyboard is now inactive until the user hits an ATTENTION key or the SLEEP command times out. On receipt of CP comllands ATTN or REQUEST, process the same as previous entry, DMKCFMAT. DMKCFM ---On-receipt of * (asterisk) return to DMKCFMBK to set up another read. If console spooling is enabled, all console input and output including comllents are spooled for printer output. DMKCFMBE ---oi--receipt of BEGIN, simulate the start button on the virtual machine (If optional address is supplied with BEGIN command the supplied address is substituted for the location counter address). DMKCVTHB ---Convert this address to binary notation. DMKCFMSL ---on-receipt of the SLEEP command or SLEEP with DMKDSPCH ---Normal dispatch entry after each interrupt handler has finished processing, and after each CPEXBLOK, I/O request and external interrupt has been serviced. DMKDSP, RUNTIME ---For CPSiATOS=CPRUN, stop charging time to old virtual machine, start charging time to new virtual machine. DMKDSP, WAITIME ---Por CPSTATUS=CPWAIT, if old virtual machine was not CP start charging CP with wait time. DMKDSP, PROCWAIT ---via vNTLEvEL, allocate time to appropriate virtual machine time category. !11!!!2J2f, !!!2I!£E For nonrunnable virtual machine, DMKDSP, DISPATCH. !2!1E!2J2f, !!!2!!£E For runnable user, check interruptions for the following: • DMKDSP, CKPEND per-interruptIon (VMPERPND). Pseudo page faults (VMPGPND) External interruptions • DMKDSP, UNSTIO I/o-interruptIons. go to entry pending Section 2. Method of Operation and Program Organization 231 • ~~!Q~g, ~lQ~~£~~ I/O interruptions are reflected by swapping user PSWs and storing the unit address and status in low storage. DMKDSP, NOTRACZA ---Clear-the-pending bit in the VMBLOKs. DMKDSP, CKPSW ---Validate-the PSW. DMKVATBC ---Par-virtual machine leaving EC Mode, clean up the shadow tables. DMKVATftD ---Par-virtual machine in BC mode and entering translate mode, initialize shadow tables. DMKDSP, DSPMSG ---For PSW--Invalid, send error message to virtual machine, and place user in CP mode. If disconnected and invalid PSW, log off user. DMKDSP, DISPATCH ---netermIne--If virtual machine is allowed additional execution. If not, use DMKSCHDL entry. DMKDSP CKCPSTAK ---Process--a--stacked IOBLOK or TRQBLOK as indicated via DMKDSPRQ. The new user IOBUSER/TRQBUSER is time stamped and a branch is made to IOBIRA/TRQBIRA. Y!1!Q§!!, £!£!!~lH2 YI1!Q§!!, £!g~.rJ,g1! If system extending search CPEXBLOK for exit address of DMKPTRPD, DMKPTRPE, or DMKPTRPP. If none found load a wait state. If not extending, unstack first CPEXBLOK. The new virtual machine is time stamped and branch taken to CPEXADD. DMKDSP, CKUSER ---Load last-virtual machine with remaining time slice if applicable. Load the highest priority user in the dispatch queue, if available and applicable. If not enter the wait state to await an interruption. ~!lK§£!!Y1 Entry to modify the user's status. If the user has the wait bit on in his running status (VMRSTAT) q the user is not dispatchable or unqueue before the user's time slice has ended, the user has set favored execution option, or the user is not eligable for Q1. DMKSCH, CKCPWAIT ---net ermine-the running or not running of the real timer per VMBLOKs VMRSTAT, VMTLEVEL val ues. DMKSCH, CKRSTAT ---Process--virtual machine, if currently not runnable. DMKSCH, CKRUN ---Process---virtual machine, if currently runnable. DMKSCH, CKWRITING ---idd runnable-virtual machine to active queue 232 from eligible list search. DMKDSP, CKCPSTAK. Return to entry R.!tJS§£!!§! Set a clock comparator interrupt request. RI1!~£!!Rl Reset a clock comparator interrupt request. QI1!.§£!!I1Q Set up a request block for midnight change. DMKSCH80 ---Process a real interrupt timert"equest. date Q!!!~£!!£g Process a real CPU timer interrupt. SPOOOLING VIRTUAL DEVICE TO REAL DEVICE DMKVSPEX ---Entry from DMKVIO to initiate SIO on a spooling device that is available {not busy and no interruptions pending}. DMKVSP, OPEN ---netermIne if output device needs to be opened. DMKSPLOV ---i~-ies, build message control blocks: SPBLOK and VSPCTLBLOK. DMKPGTVG ---~btain a virtual buffer; the address is stored in VSPVAGE. DMKPGTSG ---~btiIn a DASD page; the address is stored in VSPDPAGE. DMKVSP, BUILDCTL ---Assigo-i-spoolid and the other user, record, and device values plus DMKCVTDT. DMKCVTDT ---issIgns the time stamp and date and stores it in SPBLOK. DMKVSP, PRTCONT ---Generate-TAG record at the start of the spool data buffer. DMKVSP, CCWOK ---i~ter-cci- validity check, data and CCis {if appropriate} are moved to the work buffer. Trailing blanks are truncated and when the buffer is full, it is written out to the DASD slot. DMKVSPVP ---~n-console spooling, the following occurs: 1. Skip to channell every 60 lines. 2. write out the system console, spool file buffer every 16 lines. 3. Place the system console in a pseudo closed state for checkpoint recovery in the event of system failure. DMKVSP, LASTCCW ---When --all-- CCWS are processed, post interruption pending to the VDEVBLOK, VDEVCSW and return control to the user. IBM VM/370: system Logic and Problem Determination Guide DMKVSFCO ---intry via CP CLOSE cOllmand. If device busy, defer close operation by building CPEXBLOK, stack it and exit to dispatcher. DMKVSP, PRTEOF ---on-devlce--not busy, write final buffer page to DASD storage. DMKSPLCV ---Queue closed virtual printer or punch spool file, queued to the read spool output device or transfer the file to another user's virtual reader. Also update the SFBLOK with number of copies printed/punched, distribution code, hold status, and file owner ID. If VSPXBLOK with TAG data exists for the spool device, copy the TAG data to the TAG record in the first spool file data buffer. DMKSPL, TXTXFR --I£a iispooled to" file, queue to the end of the reader file chain. Otherwise, chain the SFBLOK to the designated real spool printer or punch. DMKCKSPL ---Checkpoint the new spool file block. DMKSPL, SETPEND ---io~ a-iispooled to" file find a virtual reader with the proper class and in the ready state with no active file, and no pending interrupts. Then build an IOBLOK with IOBIRA of DMKVIOIN. DMKSTKIO ---stack the IOBLOK. ~11~~ PL, ~~I!!lB!~ Exi t to DMKVSP. DMKSPL, TSTHOLD ---io~ not-iisi~oled to" files and not in user or system hold, find printer or punch with the proper class. Then build an IOBLOK with IOBIRA of DMKRSPEX. DMKSTKIO ---Stack the IOBLOK. DMKSPL, TSTHOLD ---iiit to-DMiisp. DftKVSP, OPENRDR ---Entry--to--open a spool input file. If VDEVSPL=O the file needs to be opened. Build VSPLCTL block and a work buffer. Search the systea reader file chain per PSA linkage ARSPRD for a file with appropriate user and class. ~IIK!'§~, '§EIl~!~ On file found condition, place first DASD page address in VSPLCTL, VSPDPAGE. Obtain a virtual buffer and retain its address in the VSPLCTL block. DftKVSP, READER --Cbeck-the-CCWs for validity, move and expand the data back to its original size and the data is moved from the work buffer to user's virtual storage. ~~K!'§~, iRi~QY!1 On BOF, set to caller. SFBBOP bit in SFBLOK and return DMKVSPCR ---Por--CLOSE operation requested via console command and the device is busy, initiate a delayed close by constructing and stacking the CPEXBLOK for the CLOSE. DMKVSP, RDREOP ---ior normal-end-of file and VDEVSPLG indicates continuous read. DMKVSP, OPENCONT ---Locates-the-next file and continue reading. DMKVSP, LASTPILE ---ior last-fIle, post end status in RDEVBLOK. DMKVSP, FILECLR ---ior HOLD--status file (VDEVSFLG=VDEVHOLD), call DMKCKSPL. DMKCKSPL ---Checkpoints the file. DMKVSP, FILECLR ---Unchain-the-file (except hold files) from the reader queue and call DMKSPLDL. DMKSPLDL ---Delete the file. DftKVSP, DVICECLR ---To-clea~-the-device, call DMKRPAGT. ~IIKi~!~1 Releases the storage page. DMKPGTVR ---Releases the virtual buffer. DMKFRET ---Releases storage for the work VSPLCTL block. buffer and SPOOLING TO THE REAL PRINTER/PUNCH OUTPUT DEVICE DftKRSPEX ---intry from the dispatcher when an IOBLOK is unstacked with and interrupted for spooling unit record device. IOBRADD points to the RDEVBLOK RDEVTYPC input or output class. DMKRSP, RSPLOUT ---i£- RDEVSPOL indicates an available spool device (not active), DMKFREE ---Get-storage for a work buffer and build a RSPLCTL block and link it to RDEVBLOK. DMKRSP, PRNXTPIL ---search-prInter and punch SFBLOK chains for corresponding device and class. On a found condition, unchain the block, put its address in RSPSFBLK. DftKSEPSP ---i£--called, provides separators for output pages or cards. DftKRSP, PROCESS1 ---Brlng-firs~spool data DASD page to the work buffer and convert CCW addresses to real device addresses. ~l1JS1.Q~.Q.B Start the spool device. DMKRSP, PRNXTPAG ---Repeat-the-process until done. DMKRSP, REPEAT ---Reprocess-- and reaccess the buffer, if aultiple copies are specified. DftKCKSPL ---Checkpoint records the change to COPY count. DMKSPLDL ---Delete the file on coapletion (unless HOLD specified) • section 2. Method of Operation and Program Organization 233 DBKRSP, PRRITPIL --~ocate-the-next spool file to process. DftKRSP, PRTIDLE ---processIng--for the device is complete as there are no .ore SPBLOK, for this device or the device was drained. DBKPRET ---Release work area and co.pleted IOBLOK storage. DftKDSPCB ---ixit-to the dispatcher. SPOOLIHG TO THE REAL IHPUT DEVICE DftKSPLOR ---issuiie there is no active file being processed on the real input file reader. The spooling operator has issued the START co.mand to the device to 'open' the reader. DftKSPL, BUILDCTL ---auild-RSPLCTL and SPBLOK. DftKPGTVG ---set-virtual buffer and place its address in RSPVPAGE. !HUifGT1a~ Get DASD buffer and place its address SPBSTART and RSPDPAGE, linke together pointers. in b~ !1!!!!Q~,g~ start the reader. ]~!i!1SP£] Await the interruption. !1~!R~f, RQ~~~II!Q Check that the first card in the buffer is the userid header. If so, proceed. DftKRSP RDRCARDS ---preload-the-buffer with CCWs. !1~!i!Q~2R IssUe the 510 (SIO's of 42 cards per buffer load). DMKRSP, RDRSIO ---Write-the--buffer to the DASD slot. Repeat until EOP detected. DMKSPLCR ---Close the file on EOP. Queue the file on reader spool chains. DMKCKSPL ---iaa--the spool reader file block to the checkpoint cylinder data. DftKSPL, RDRPEND ---1f- the-file owner is logged on, and his virtual reader is available, an IOBLOK is constructed with device end pending DftKSTKIO ---Stacks it. DftKRSP, RDREXIT4 ---Release-storage for virtual buffer, RSPLCTL and the SPBLOK. DMKDSPCB ---EiIt-to the dispatcher. SPOOL PILE DELETION DftKPLDL ---wIth R7 not equal to zero, place the specified SPBLOK on the delete chain anchored to DMKRSPDL. 234 DBKCKSPL ---Delete the SPBLOK fro. checkpoint cylinder data. DBKSPLDL ---Assuie the delete routine is not running, build a CPEXBLOK to call DBKSPLDR. DBKSPLDR ---sets- the DELSW=X'80' (delete routine active). DBKSTKCP ---Stacks it and exits to caller. DBKSPLDR ---on-unstacking the CPEXBLOK, if the SPBLOK is a system dump file, calls DBKDRDDD. DBKDRDDD ---Deallocates DASD buffers. DftKSPL, NEITSPB ---Par coiplete allocation chains of RECBLOKS, call DBKPGTSR DftKPGTSR ---deallocate DASD buffer an.d return to storage held by the dummy RECBLOKs. DBKSPL, DELSTART ---Por Incoiplete allocation RECBLOK chains, deallocate by calling DftKPGTSD. DftKPGTSD ---Deallocates a page at a time via SPBSTART and the IOBLOK until the last page is reached. DftKPRPT ---Delete the SPELOK, then go to DftKSPL and NEXTSPB. DftKSPL, NEITSPB ---if-the-delete queue is not empty, process the next SPBLOK an identical manner. Continue until all SPBLOK deletions are complete then call DMKPRET. DMKPRET ---Delete the IOBLOK. DBKDSPCB ---iiit-to the dispatcher. RECOVERY BANAGEBENT SUPPORT OPERATION DMKIOEPL ---Entry from CP initialization module to set up pointers to VM/370 error recording cylinders. DMKIOGP1 ---ihe-STIDP instruction store CPU version and model in CPUID of PSA. DMKIOG, ISSUEIRS ---Check--attached channels. If standalone channel on the 165 or 168 the address of the logout routines are stored in the DftKCCB module. DBKIOG, CBARGEID ---Set u~-~ointers for machine check and channel check record area and extended logout areas. DBKIOG, PASTDAVE ---DetermIne-the 901 full and 1001 full capacity of designated error recording cylinders and store the amount in DftKIOEMX and DMKIOERI respectively. DftKIOG, PIRDREC ---Check-first- records on each cylinder of the error recording cylinders for proper format. If invalid. reformat. If valid but clear, store pointer value in PSA as the first available slot for error record* If valid but IBft Vft/370: System Logic and Problem Determination Guide used, search for first unused slot and store its value in PSA. DMKIOG, CYlFULL a--cylInder full condition, inform the operator, and continue. DMKIOEFl ---Turn-off the recording in progress switch and exit to caller. ---on- hardware recovery is not active process as in DftKftCH, ftCHSYSIl. DMKftCH, ftCHiAIT ---Par TOn-damage, load PSi, enter wait state. Q~!~~li, ~~liR~~l! If the TOD is not damaged, the address of the TOD is saved for accounting purpose andDMKDMPRS ---Dumps and initiates system restart. Process the Machine Check Interruption DMKMCHIN ---Entry via the machine check PSi upon detection of an unrecoverable and nonfatal CPU or storage error. Disable soft machine recording store logout area on the machine check and channel check recording cylinders. The system is enabled for hard machine checks with a pointer to the termination routine. DMKMCH, ERHARD for virtual user store status in VMBlOK. DMKMCH, MCHSYSIl for system damage timing facility or uncorrectable retry, multibit storage error post system operator message, flag system as terminated. place wait state code, if first hard error, record it. If the fault occurred in problem state, terminate the active virtual machine. DMKMCH, SOFTSTG ---Par corrected ECC or CPU retry, update soft error count and record the error and dispatch the virtual machine. DMKMCH, MCHSKIP ---Par mUltIbIt storage error in problem mode, exercise storage location to clear up or flag as unavailable (permanent error). DMKMCH, ftCHCHANG ---On- an-altered page condition, the virtual machine is reset, otherwise, the error is recorded and the virtual machine is redispatched. DMKftCH SPFTEST ---storage-key failure. Exercise the 2K page key. If CP area and solid error condition process as DMKftCH, ftCHSYSIl, intermittient, restore the key and go to the dispatcher. If key failure and in virtual machine area if permanent error, mark page as unavailable, terminate the user. If intermittent condition refresh the key and dispatch the virtual machine. DftKMCH, VIRTERft ---on-condItIons that cause the terminated or reset. The error is recorded, and both the user and the operator receive status .essages. Per the termination flag, VftBlOK, the user is logged off and control returns to the dispatcher or is reset via DMKCFPRR. DftKCFPRR ---iIrtual storage is released, the virtual machine is flagged dispatchable and placed in console function mode. DMKftCH, TERM ---on- a-hard machine check while handling a • achine check, the machine check new PSi is loaded with a wait state PSi and the current PSi is enabled for hard machine checks. DftKftCH, ftCHTERft2 ---Locate-the-system or the user's VftBlOK. DftKftCH, MCHTERft3 ---On- second--hard machine check error, or machine check handler is not active or DMKCCHIS ---Entry via DMKIOS via CSi channel error DMKFREE ---Obtain storage and build a CCHREC block and if IOBlOK and RDEVBlOK exist, build an IOERBlOK. DMKCCH, CCHIOERl ---Store-the--CCHREC address, it length and the CSi in the IOERBlOK DMKCCH, CCHDEPND ---Call -appropriate channel error analysis module. Analyze channel logout data for validity. DMKCCH, SCNEND ---Record--the error on the error recording cylinder, if appropriate DMKCCH, CPTERM ---Terminate-CP if the PSA's terminate flag is set. DMKCCH, CCHiAIT --~he SEREP--code (X'OF') is placed in the interruption code of the machine check new PSi. The I/O old PSi, CSi, and CAi are restored. Checkpoint is set up by moving 'CPCP' into 'CPID'. The TOD clock is saved and a wait state PSi is loaded to place the system in a disabled wait state. DMKCCH, SCNEND ---Unless-termination is established, return to DMKIOS for recovery. DMKERO ---Entry via DMSPSA as a result of SVC 76 detection. Check parameters passed in RO and Rl. DftKFREE ---obtain storage for a rdcord buffer for the user error record DMKVER, BUFFUl ---usIng--valId record type (from the buffer) branch to an appropriate routine to format that particular record type. Q~!!~R, !IBJQ Using RDEVBlOK, VDEVBlOK and VMBlOK, convert virtual data to real values and place in record • DMKIOERV ---Record the error. DftKDSPCH ---EiIt-to dispatcher Section 2. Method of Operation and Program organization 235 USER DIRECTORY ROUTINES DMKUDRFU ---Entry after CP detected LOGON command. DMKSYSPL points to the directory. Determine length of userid, if valid call DMKLOCKQ. 12!H~1Q£!S~ Lock the directory in storage. DMKODR, NXTPAGE ---Bring-in-each directory page and return each page {and clear the buffer} until a UDIRBLOK match occurs or directory's last page is detected. DMKUDR, FINDUSER ---On- useria-found move UDIRBLOK to caller's area. 121HS1.Q£!~ Unlock the directory in storage DMKUDR, EXITCCO ---Return-to-caller DMKUDRFD ---Entry from calling routine to find the addressed {cuu} device ODEVBLOK in users directory and move it to the caller. Via UMACBLOK locate the ODEVBLOKs. DMKUDR, FINDDEV ---Check-user-device address is the same as in the ODEVBLOK. Search the chain until match or end of chain occurs. DMKODR, DEVFOUND found-condition, post condition code 0 in users VMPSi. ---Par .!H1!!!12!Um Entry from calling routine to read the UDEVBLOK addressed into the caller's buffer using the DASD and the user displacement from the UMACBLOK bring in the buffer page to storage. Determine if the virtual directory page address (UDBFVADD) exists in the user directory buffer blocks. If not callDMKPGTVG ---and-get a virtual page DMKRPAGT ---por-DASD address does not match the UMACBLOK, point to the DASD page and bring in the virtual buffer page. Move UDEVBLOK into callers area and set cc=O in VMPSi. Return to caller. buffer page list, post fatal message, set cc=3 and return to caller. DMKODR, ENDLIST ---swap the--new virtual buffer page list with the old list. Anchor the new list to DMKSYSPL. DMKODR, FBETLIST ---If- there-was a previous buffer page list, free it. Save the start of the user directory pointer in DMKSYSOD, and return to caller with a CC=O in the VMPSi. SAVE THE 3704/3705 CONTROL PROGRAM IMAGE PROCESS DMKSNCP ---Entry from DMKHVC and DIAGNOSE code 50. Per the system VMELOK, locate the DMKRNTBL. The CCPARM virtual address is contained in R1 of the DIAGNOSE instruction. DMKSNC, NAMECHK ---Hatch---via- search CCPARM; CCPNAME with DMKRNTBL entries. DMKSNC, SIZECHK ---verify-niso-space requirements for 3704/3705 control program and resource data. The volume required to save {NCPVOL} as indicated in the NCPTBL entry must be: available and mounted on the system, on a Cp-owned and supported paging device. DMKSNC, SVRESDAT ---save -resource data on the NCPVOL device • CCPARMs supplies the starting address and size parameters for this write operation. DMKSNC, SVNCPIM ---save -3704/3705 control program image on NCPVOL device. CCPARMS also provides the parameters for this similar operation. DMKSNC, SAVEFINI ---store--cc;O--on no errors and return to caller. SPOOL FILE CHECKPOINT AND RECOVERY !H1~!!!H!!t! Entry to return a virtual page used as a buffer. Determine if UDBFBLOK contains a virtual buffer page pOinter (ODBFVADD). If not, exit with CC=l set in the VMPSi. If a buffer exists, check to see if it is resident; if it does, clear it to zeros. DMKPAGT ---Return the real page to the system. !!~!!!~!!!! Return the virtual page to the system DKKUDRRV ---set-cc=O and return to caller !!~!!!!!!!~! Entry from DMKDIRCT or DKKCPINT to build page buffers for each UDIRBLOK. DMKFREE ---~et-storage for the virtual buffer page list DMKODR, GETVPAGE ---Call DHKP~TV~ and DKKRPAGT to get the virtual and real buffer Save the virtual buffer address in the page list. DMKUDR, FRETLIST ---incountered--I/O error, free the virtual 236 DMKCKSIN ---Entry from CP initializer, DMKCPI to initialize the checkpoint cylinders. Per DMKSYSCH, get a virtual page for the checkpoint cylinder and set up the device code in the system residence device. In addition set up local data areas such as pages per cylinder and checkpoint cylinders. DMKCKS, CKSIN1 ---Loop through each SFBLOK in the system and checkpoint it in a slot on the checkpoint cylinder. Then loop through each remaining slot and mark it empty. DMKCKS, CKSIHS ---Place-the-map delimiter of the last non-empty slot in the map. DMKPTROL ---Unlock the map page. DMKCKS, CKSIN5 ---Return-to-caller. IBM VM/370: System Logic and Problem Determination Guide . DMKCKSPL ---Entry from any routine that adds, deletes, changes, the status of closed spool files. Lock the routine, or waits until it becomes unlocked. Bring the map page into storage and set up the device code of the system residence volume. !H!JS£JS~, l!QQ~~!H2 If the change is applicable to a SHQBLOK (hold queue block) make appropriate change on the checkpoint cylinder. DMKCKS, CKSPLl ---1£- the-change is applicable to a SFBLOK, either add, change, or delete it on the checkpoint cylinder. DMKCKS, CKSPL5 ---1£- the--change affects a spooling device RDEVBLOK, (for example, a START or DRAIN com.and issued) mark the change on the checkpoint cylinder. DMKCKS, CKSEXIT ---Unlock-the--routine. Unlock the page map and exit to caller. DMKCKSWM ---Entry via DMKCPI during reinitialization process whenever the records for closed spool data need to be reconstructed. Get a virtual page for the map of the checkpoint cylinder and set up the device code of the system residence volume • In addition, set up local data areas. DMKCKS, CKSWM2B ---Par slots-having real device entries, set or reset the RDEVDISA and RDEVDRAN and move in the checkpointed device classes into RVDEVCLAS. DMKCKS, CKSWM2G ---Par slots-containing spool hold queue block, chain this to the SHQ chain. DMKCKS, CKSWM3 ---Get storage for SFBLOK space and set flags depending on its last checkpoint activity. DMKCKS, CKSWM4 ---If-the--file SFBLOK was active, chain it to the appropriate printer, reader, or punch chain. DMKCKS, CKSWM5 ---Allocate-the DASD buffers of the spool file by reading each buffer to determine the next one and then allocate this page. DMKCKS, CKSWM6E the-duip spool file, the buffers are allocated sequentially from the beginning to the end. DMKCKS, CKSWM9 ---Set uP-the map delimiter for the end of non-empty slot; then set up a new spool file identity (spoolid) higher than existing numbers. Return to DMKWRM. ---Por VM/370 section 2. Method of operation and Program Organization 237 In this section, Figures 56 through 61 show how the RSCS routines interact with each other functionally. Figure 56 shows all of the RSCS coaponents at an overview level. Figure 57 through 61 show the parts of the individual coaponents. DMTSML REX Task , "- sse Line "- .-----..'B sse Line Supervisor Routines ~------------------~------------------------------- Figure 56. Overview of RSCS Program Organization 238 IBM VM/370: System Logic and Problem Deteraination Guide ] DMTVEC DMTSTO Fixed Storage Values Reserve Main Storage DMTMAP DMTWAT Variable Storage Work Area Suspend Dispatching for an Executing Task DMTAKE Accept and Respond to GIVE Requests; Calls DMTQRQ DMTQRQ Reserve or Release Supervisor Queue Elements <:=:- <== ~ DMTASK Initiate, Terminate and Query Tasks; Calls DMTQRQ DMTPST Signal Completion of an Event in the System ~ DMTSVC '---' ,....-DMTASY Initiate and Terminate Asynchronous Exits; Calls DMTQRQ External (Console) Interrupt DMTEXT DMTGIV Process an External Interrupt Present GIVE Requests; Calls DMTQRQ and DMTPST -- DMTIOMIN Process an I/O Interrupt 110 Inter - -- '"~ ------- ------- - ~ ~ ~ ) DMTIOMRQ Request I/O Service; Calls DMTQRQ and DMTPST ~ DMTSIG Asynchronously ALERT Another Task; Calls DMTPST "I; .I'-- '\r--- 7 DMTDSP All Task-Level Programs Resume Execution of a Task; Enter a System WAIT State WAIT Suspend Execution of a Task A <" n I [I Figure 57. Program organization for the ftultitasking Supervisor Section 2. ftethod of Operation and Program Organization 239 REX Task DMTCRE Line Driver Tasks Create System Service and Line Driver Tasks. AXS Task I DMTAXS ....... ~ ~ ~ VM/370 Spool File System ...... rE! IE Virtual Machine ~ I DM~::J- 7 '" DMTMGX DMTREX ..... - Build the Final Message Element. -Transmit File Message ... ..,-- Requests _ Handle Program Check Interrupts • Handle Console I/O - Terminate System Service and Line Driver Tasks DMTCMX Process Commands: • Execute DMTCMX Commands • Pass Command Elements to AXS and Line Drivers for Execution. .A ~ \ ~~~ Console Supervisor Routines Figure 58. Program Organization for REX system Service Tasks 240 BSC Line ¢:; _ Handle all REX Process Messages: /-7 VM/370 Virtual Machine I .A IBM VM/370: System Logic and Problem Determination Guide I DMT~ /BSC Line AXS Task (Module DMTAXS) CMDPROC • • • Reorder Files by Recording the TAGs queued to a Given Line Driver Purge Files From RSCS Change the Attributes Associated with an RSCS File Open and Close Input and Output Files REX Task I I I I DMTMSG AXSCYCLE ACCEPT: • Files Spooled by Other Tasks • Order, Change Purge Command Elements • Requests to Open and Close VM/370 Spool Files. DMTMGX DMTREX DMTCRE I DMTCMX I I ! I Line Driver Tasks BSC Line BSC Line I Accept Files from VM/370 Spool System Supervisor Routines Figure 59. program Organization for the AXS System Service Task Section 2. Method of Operation and Program Organization 241 $PRTN1 RJE: Process Print File Records and Send Them to VM/370. I"-\r-- $URTN1 RJE: Process Punch File Records and Send Them to VM/370. ;L- \r- $TPGET $JRTN1 HOST: Process Job File Records and Send Them to VM/370. ~ '--~ Receive Data from BSC Line I"-via COMSUP; VAllocate Tanks to I nput Processors COMSUP Control Communications on the BSC Line; Send and "- Receive: \ \ $CRTN1 HOST and RJE: Scan RSCS Control Records and Perform Control Functions. < -- y \ \ ;L- \r- ./ • Data Streams \ / \ \ Control Input/ Output Processors by Means of the Commutator Table and Task Control Tables ;L"\,-- HOST: Pass Commands ds to DMTCMX $RRTN1 HOST and RJE: .. Receive Records from VM/370 Spool System and Transmit. them Via $TPPUT I--- ~ } v CMDPROC E1-.J Module External Beferences (Labels and Modules) n 3: 0\ en I:MSOVS EGPB15 BO SVCOUNT NUCON Rl SVCSECT OVAPP R12 'IPPSVO OVBPP RD TYPFLAG OVP10N R14 Vl!SIZE OVSAPT R15 ICOUBT OVSHO R3 IGPBO OVSON R4 XGPBl ABATABIID ABATLIMT BATFLAGS BATLSECT BATNOEI Bl Bl0 B13 B11 B12 Ba B9 BATPBTC B14 BATPBTL B15 BATBUN B2 BATILIK B3 BATXPBT B4 CAW B5 CSW B6 NUCON B7 DMSPIIT AACTPBEE AACTLKP R14 B15 AFTIC R2 APTBP R4 APTSECT RS APTWP B6 DMSPRT ADMSPIOC AFIIIIS R1S B2 ARDEUP R3 ASTATE B4 AEBASE R12 AFINIS R14 ASISBEF R1S I:MSPUN ADTID B14 ADTSECT B15 DMSQRI ADTCIL ADTRUM FCBDD NOIMPCP Rl1 SI SRAMES ADTDTA ADTSECT FCBDEV NOIMPEI B12 TIMCCi I:MSRDC -= 3: "- ASVCSECT CUBBSAVE EPPBS OVSSO OVSTAT BPPBS B5 B6 R1 XGPB15 EGPBS BGPRS Ra EGPBO RGPBa SSAV! (.oJ -.J 0 DMSPIO 00 en ~ en t"4 0 0 F65535 NUCON BEGSAV3 BO Bl Bl1 INSTALID NUCON B6 BS RO B1 Rl Ba Rl0 R9 Rll R12 R13 R14 AWRBUF R2 BGCe!! R3 LUBPT NUCON PUBADR PUBCUU PUBPT AFINIS B2 ABDBUF B3 ASTATE B4 PVSPSTAD NUCOR B5 B6 BO B1 Bl Ba Bl0 B9 Bll R12 STATEFST R13 ADTFDOS AEITSECT FCBDSNAM ROPAGBEL R13 TIMCHAR ADTFLG 1 AFVS PCBDSTIP ROBDITIK R14 TITLIBS ADTPLG2 AIRTBTBL FCBPIBST NOSTDSYN B15 ADTFLG3 ALDBTBLS PCBRUK RUCOR R2 ADTFBO AOUTRTBL FCBSEC'! OPTPLAGS R3 ADTFBOS ASYSBEF FCBTAPID PBFPOPF R4 ADTFBW AUSABBV FVSECT PBOTPLAG RS ADTPSTC CMSSEG !!ACLIBL REDERRID R6 ADTID DUD MISPLAGS BO R1 ADTM DTADT MSGPLAGS Rl Ba ADTKX EXTSECT NOABBBEV Rl0 R9 ABATABRD AEBASE Rl0 Bl1 AFIRIS R14 ASCANN B15 ASTATEi R2 AWBBUF B3 BATDCMS R4 B.ATPLAGS BATFLAG2 BATRUN RS R6 R7 RUCOR RS BO R9 Rl I:MSBRE AERASE R3 AFIIIS B4 ARDBUF R5 AWRBUP B6 RUCOR R1 BO Rl Rl0 R12 B13 R14 R15 B2 DMSBNM AACTLKP ATIPSBCH RUCOI R5 ADTCHBA AUPDISK BEGSAVl R6 ADTFLGl EBBIT BO R7 ADTFRO EBBCODl Bl B8 ADTPBi ERSFLAG Bl0 B9 ADTPTIP PSTM Bl1 STATEFST ADTM FSTN R12 UFDBUSI ADTSECT PSTSECT B13 PSTT B14 FVSECT B1S FVSEBASO PVSEBASl FVSEBAS2 B2 B3 B4 ADTCIL FCBDSRAM FILEBUPP OSFSTBLK OSPSTNTE R10 URD ADTDTA PCBDSTIP FILEBITE OSPSTCHB OSPSTNIT R 11 VAB ADTFDOS PCEFIBST FILENAME OSPSTDEK OSFSTBPK R12 ADTFLGl PCBIOSi2 FILEBEAD OSFSTDSK OSPSTRSi B14 ADTPLG2 PCBLBECL LOC OSPSTDSI OSFSTTRK R15 ADTPLG3 PCBMVPDS RUCOR OSPSTERD OSPSTTIP B2 ADTPROS FCBREIT OPSECT OSPSTEI4 OSFSTUMV R3 ADTM PCBOP OSADTDSK OSPSTPLG OSFSTIRO R4 ADTSECT FCBOSDSN OSADTFST OSPSTPM OSFSTITN RS CSi FCBOSFST OSADTVTA OSFSTFVF PO R6 DTAD FCBPROC OSADTVTB OSFSTLRL PS R1 I:MSPRV ~ ::I ~ ~ t1 0 b" ...., CD B '=' CD cT •..... ::I ~ cT ..... 0 G'l ~ (I) DMSBOS 0 I b" CD ...., t1 0 en en RO Bl R10 !:tI CD ::I s:: ..... CD I cT n (I) t1 ~ ~ \,Q ..... 0 s:: ...., t"4 DKSLFS cT CD II 3: FCBBLKSZ FCBBECFM OSPST OSFSTLTH BO Ra FCBDSMD FCBSECT OSPSTALT OSFSTMVL Rl R9 HI CD t1 CD t:S 0 CD !!odule External References (Labels and ftodules) DftS RRV AERASE IUCOI R3 DftSSAB APGftSECT CURRSAVE DEBDCBAD PCBDD FCBFIRST PCBSECT Rl R10 Rl1 R13 R14 R12 RS R9 SCBPTR SCBSAV12 SCBWCRK STAEBIT DMSSBD DA FCBOP KEYTBLBO RS DATAEID FCBSECT OPSECT R6 DECAREA FCEXTENT PS R7 DECKYADR IHADECB RO R8 DECLBGTH IOBIN Rl R9 DMSSBS AOPSECT FCBCOUT FCBXTENT PREVIOUS R6 DA FCBDEV IHADEB PS R8 DECAREA FCEDSMC IHADECB RO TAPEDEV DECDCBAD FCBDSNAft IOBBCSW Rl TAPELIST tftSSCN BALRSAVE CftlDLIST IUCON R7 R8 CftSSCR BUPPLOC HOLDFLAG R2 TABLII DECLTH ITEM R3 TRUICOL DftSSCT ADMSBOS FCBIOSi IOBCSi R14 tftSS EB ADftSBOS FCBCASE PCEPROC IOBICFLG R13 TAPE SIZE APIIIS CSPST R4 ASTATE ASYSREP AiRBUP OSPSTDSK OSFSTXTI PUBPT RS R6 R7 BGCO!! RO RS DOSDD Rl R9 DOSDEV Rl0 DCSDSK R 11 DOSCP R12 DOSOSPST DOSSECT R1S R14 LIIKLAST LOC R1S R2 STAIBIT IUCOl R3 PGftOPSi R4 PGMSECT RS DECRECPT IOBIOFLG R10 TBLLNGTH DECSDECB DECTYPE KEYCHNG KEYCOUT Rll B12 VAR DftSSBS DftSSBSRT FCBBYTE KEYLBGTH KEY lAME KEYOP R14 R1S R2 FCBITEM KEYSECT R3 FCBKEYS KEYTBLAD R4 DECIOBPT FCBINIT IOBEECBP R11 TAPEMASK DECLNGTH PCBITEM IOBBFLG R12 TAPEOPER DECSDECB FCBMODE IOBIN R13 UND DECTYPE FCEOP IOBIOFLG R14 VAR DMSSBD PCBOS IOBOUT R1S DMSSEB FCBPDS NUCCIf R2 FCBBUFF FCBREAD OPSECT R3 FCBBYTE FCBSECT OSIOTYPE R4 FCBCATML FCBTAP PO RS RO Rl 1112 R14 R1S R2 R3 B4 RS R6 DMSGIO LIBELOC R4 TWITCH EDCB BUfttOC RS UTILFLAG EDftSK PTRl R6 VERCCLl PLAG PTR2 R7 VERLEN FLAGLOC RO R9 PLAG2 Rl SAVCNT PMODE R11 SAVEAR FBAME R12 SCLlW PV FTYPE R13 R14 SCRBUPAD SCRPLGS AOPSECT FCBITEft IOBICPLG R1S CMSOP FCBOP IOEOUT R2 DA FCBOS ftACDIRC R3 DlCCCBAD FCBCSPST MACLIBL R4 DECIOBPT PCEPDS NUCON RS DECSDECB PCEB13 OPSECT R6 FCBCATML PCB SECT PS R7 FCBCLOSE FCBTAP RO R8 FCBCOUT FILEUME Rl R9 FCEDEV IHADEE Rll SAVER14 FCEDSNAft PCBINIT IHADECE IOEBFLG R12 R13 AOPSECT FCECCUT FCBPRPU IUCON R14 TSOATCNL BLK FCBDEV FCBREAD OPSECT R1S TSOFLAGS CMIDLINE FCBDSftD FCBRECL PRINTLST R2 UND COBBDCNT FCBDSTYP FCEB13 PS R3 VAR CONBDCOD FCBIIIT PCB SECT PUlfCHLST RS CONREAD FCBIO FCBTAPID RDEUFF SAVER 14 CONiREUP FCBIOSi FXD RDCCW TAPEBUFF CONWRCNT FCBITEM IHADECB RDCOUNT TAPECOUT CONiRCOD FCEMCD! IOBBCSi BEADLST TAPEDEV CONiRITE FCEOP IOBBECBC RO TAPELIST FCBBUFF FCEOPCB IOEBECBP Rl TAPEftASK LUBPT R2 RETRYBIT RO R6 R7 GIOPLIST R1S SCRPLG2 FCEEYTE FCEOS IOEIN Rll TAPEOPER n r+ ~. 0 = 3: 0 P- en CD n 3: til DMSSEG DMSEDC DMSSCT DMSEDI DftSSEB DMSEXT DftSSLN DMSGIO DMSSftN DftSLGT DMSSCP DftSLIB DMSSQS DftSLSB DMSSVI DMSLSY DMSSVT DMSOLD DMSSAB DftSSED DMSSES DMSSCR c ..... CD I rt 0 I W t"4 t:::I CD ..... t1 CD n ~ tT ~. n r+ 0 t1 ~. CD CIl t1 0 CIl CIl ~ CD HI CD t; ~ ""'" ""'" CD = n CD N ...,j Module External References (Labels and Modules) ("") :3 co til tftSSET < 3: " W ...,j 0 til Io.c: DftSSLN en c+ (\) s t-I 0 ADTFLG2 BATHOEI LOCCNT NUCKEY Rll SYSCODE VMSIZE \oJ. 0 ADftSFRT BATDCMS FREELOil NORDYMSG RO R8 UPTSiS ADTDTA BATFLAGS JCSi3 BORDYTIM Rl R9 USERCODE ADTRANS DMSSMNSB LINKLAST SUBICT AFINIS DUMCOM LINKSTRT SUBFLAG AF'S DYLD LOCCNT SVCSECT ASTATE ALDRTBLS ALIASENT AFGMSECT ARDBUF DYLIBO DYMBRNM DYNAEND FREELOiE FRSTLOC OSRESET OSSFLAGS PGMSECT MODLIST NUCON TBINT ATSOCPFL AUSRAREA BALRSA'! BGCOM f!AINLIST f!AINSTRT MISFLAGS NUCON R14 R15 R2 B3 COD!203 COMPSiT OSSFLAGS OSSMNU R4 R6 DMSSOP EITSECT NOHIPCP PROTFLAG RS TSOBLKS ASVCSECT AUSRAREA COftPSiT CURRSAVE DMSOLD LASTLMOD LASTTMOD LDRFLAGS FVSECT F65535 STRTADDR PBFTSYS PBFUSYS PBOTFLAG SCBPTB I-' (\) I c+ 0 t-I III 1:1" (\) I-' n H CURRSAVE EGPRl EGPR15 PPEND BELPAGES RO R7 R8 R9 EOCADR Rl SSAVE FREELOWE LOCCNT Rl0 R12 MAINBIGB R13 en en ~ (\) ADTSECT BLK DMSSCTNP FCBDCBCT FCBKEYS FCBBECFM IOBIOFLG OPSECT Rl R8 AERASE CMSCVT DI"ISSQSGT FCBDD FCBLRECL FCBRECL IOBNITAD OSFST Rl0 R9 AFINIS Cf!SNAf!E DMSSQSPT FCBDE' FCBMEMBR FCBSECT IOBSTART OSFSTBLK R11 SAVERl AFTFST CURRSAVE D~SSQSUP FCBELKSZ FCBDSK FCBDSMD FCBMODE FCBMVPDS FILEBYTE FILEMODE JFCBIND2 JFCElUSK OSFSTCHR OSFSTLRL R12 R 13 SA'ER15 TAPEDEV AFTIC DA FCBBUFF FCBDSNAft FCBOP FILENAME JFCDSORG OSFSTRFM R14 TAPELIST AFTIN DEBDCBAD FCBBYTE FCBDSTYP FCEOS FILEREAD JFCK!YLE OSIOTYPE R15 TAPEftASK AFTPFST DEBDEBID FCBCASE FCBFIRST FCBOSFST FILETYPE JFCLIMCT PLIST R2 TAPEOPER DEBTCEAt FCBIOiR IOESTART R13 tP.lSSCTCE FCBITEM IOBUPD R14 DI"ISSCTCK FCBOF LOC R15 DMSSEB FCBPVMB NUCON R2 FCBBUFF FCEREAD OPSECT R3 FCBBYTE FCBSECT OSIOTYPE R4 FCBCLOSE FID PREVIOUS R5 FCBCOUT IHADEB PS R6 FCBDEV IOBECB RO R7 FCBDSMD IOEECBPT Rl UND FCBINIT IOBIN Rl0 VAR RELPAGES RO Rl R12 R14 R15 R2 BGCOM RO DOSDD Rl DOSDEV Bl0 DOSDSR R12 DOSOP R14 DOSOSFST DOSS!CT R15 R2 LUBPT R3 R15 R2 R3 R4 R5 R6 R9 BLK FCBIOSi IeBOUT R12 en tMSSRT ASCANO R3 ASTRINIT FREELOiE MAINHIGH MISFLAGS NUCON R4 R6 R5 0. tMSS RY IERISE NUCOi R4 AFIBIS OSFST R5 ISTATE ASYSREF AiRBUF OSFSTtSK OSFSTITN PUBPT R9 DMSSSK NUCON RO Rl 0 1:1" I-' (\) S t::I (t) c+ (t) H III ....c+ 0 AC~SCVT AFTADT CMSOP ~ d \oJ. (\) 0 0. d I ADTIUCi AUPDISK DI"ISSCTCK FCBCCUT FCBITEM FCBRDR IOB!ND NUCCli RO R7 AOPSECT FCBIORD IOBIOFLG Rll H ~ CPULOG NOABBREV PRFPOFF R4 TIMINIT ADTFRO ASTATE DMSSCTCE FCBCON FCBIOSi2 FCBPROCO IOBDCBPT MACLIBL QS R6 DMSSQS It:! \oJ. CftSVSAM ftISFLAGS ftSGFLAGS PPEND PIBPT R3 R2 TIMCBAR TIMER C~SSEG ADTFLGl AOSRET DMSSBS FCBCLOSE FCBIOSi FCBPROCC IBADEB MACDIRC PS R5 AOPSECT DEBOFATB FCBCLEA' FCBINIT FCBPROC F6 LOC PREVIOUS R4 VAR 0. II :3 CMSDOS MAINBIGB OPTFLAGS R15 TIMCCi HI AACTLRF AFT SECT DEBOFLGS FCBCATML FCBFORM FCBPDS FID JFCOPTCD PO R3 UND ~ IDTSECT BGCOM LUBPT NUM R14 SYSREF ADEVTAB ASYSREF FREELOiE BOPAGREL REDERRID R7 UPTMID 0 DMSSMI I.Q III ADTFDOS BATFLAG2 JCSi4 NOVMREAD Rl0 SOBl USERKEY ADTM BATRUN LTK NUCON R12 SYSNAMES ABATABND AS TATE FRDSECT HOlftPEI PUBPT R6 UPSI V~SIZE R12 R14 R8 (\) H (\) ~ 0 (\) eodule External References (Labels and eodules) EHSSTG AEXTSECT CORESIZE EOCADR NUCON R12 SCBWORK ALDRTBLS CURRSAVE EITSECT OLDPSW R13 SSAVE ANCHENDA DHSLGTA FREELOWE OPTNBYTE R14 STIHEXIT ANCHSECT tHSSHNCF IJBBOX OSSFLAGS R15 SYSCOft ANCHSIZ DeSSeNCN LIRKLAST osselu R2 TAIEADDR APGHSECT DHSSHNRP LIRKSTRT PDSSECT R3 USAVEPTR ASTATEIT DHSSftNTS LOCCNT PGftSECT R4 ATSOCPPL DYLD HACDIRC PICADDR R5 AUSRAREA DYLIBO HACLIBL PPEND R6 BALRSAVE DYHBRNH HAlliHIGH RELPAGES R7 BGCOH EGPR12 !UIBLIST RO R8 CODE203 EGPR14 HAIBSTRT Rl R9 COepSiT EGPR15 ftISFLAGS Rl0 SCBPTR DftSSTT AACTLKP AFTSECT FSTFBWI Rl STATERO ADTFLGl AFTWRT FSTft Rl0 ADTFLG2 DftSLAD FSTSECT R12 ADTFRO DftSLADW FVSFSTAD R13 ADTFROS DftSLFS FVSFSTDT R14 ADTFRW DHSLFSW FVSFSTft R15 ADTH FSTFAP FVSFSTN R2 ADTftX FSTFAR NUCON R3 ADTSECT FSTFAW OSFST R4 AFTADT FSTFB OSFSTFLG R5 AFTFLG FSTFRO OSFSTFft B6 AFTFST FSTFROX REGSAV3 R9 AFTRD FSTFRW RO STATEFST DftSSVI AEITSECT LOC R12 TIMINIT AOPSECT LSTFINRD R13 TSOATCNL COBRDBUF COBRDCRT CONREAD CONSTACK CORWRBUF CORWRCRT CONiRITE CURRSAVE EXTSECT FCBSECT RUCON RUftFIRRD RUftFRDiR OPSECT OSSFLAG.S PERDREAD PERDiRIT PS RO Rl R14 R2 83 R4 R15 R5 R6 R8 STlftEIIT TlftCHAR TSOFLAGS FSTFINRD Rl0 TlftER tftSSVT ADftPEXEC CMBDLIlIIE DECSDECB DftSSLN6 DHSSQS FCBCATHL FCBHVPDS FILE-RAftE KEYBAftE RUCON Rl R8 WAITLIST ADHSROS CftSBAftE DIAGTlftE DHSSLI7 DHSSVI FCBCOUT FCBOF FILETYPE KEYOP OPSECT Rl0 R9 AERASE AEXTSECT CHSOP • CftSTAXE DIRNAftE DIRPTR DHSSLR8 DftSSLI9 DftSSVRl DftSSVN2 FCBDD FCBDEV FCBOS FCBOSFST IHADEB IHADECB KEYSECT KEYTABLE OSIOTYPE OSRESET Rll R12 SCBPTR STIHEXIT AOPSECT CORRDCNT DHSLGT DHSS!HI DftSSVI93 FCBDSK FCBPDS IHAJFCB KEYTBLAD OSSFLAGS R.13 TAIEADDR IftSSYN AFIIIS R2 ARDBUF R3 ASTATE R4 ROSTDSYR NOCOR R6 R7 IUSIBRV B5 APGftSECT CORREAD DHSLSB DftSSftRl0 DftSSVR94 FCBDSNAe FCBSECT IOBIN KEYTBLRO PDSBLKSI R14 TAXEDEF APIE CONWRBUF DHSSAB DftSSftR4 DOSDD FCBDSTYP FCBTAB IOBIOFLG KEYTYPE PDSDIR R15 TAIEEIIT ARDBUF CONiRCRT DftSSBDFR DHSSftN5 DOSIEXT FCBFIRST FCBXTENT JFCBftASK LIRKSTRT PDSSECT R2 TAIELNK OPTFLAGS RO R8 ASTATE CORiRITE DftSSBS DHSSOP DOSSECT FCBFORft FILEBUFF JFCLRECL LOC PGftSECT R3 TBLLIG:rH ATFINIS CORESIZE DftSSCT DftSSOP19 DuePLIST FCBINIT FILEBYTE KEYCHNG LOWSAVE PLIST R4 TEHPBYTE AUPDISK CURRDATE DftSSLB DftSSOP20 EXTSECT FCBIOSi2 FILECOUT KEYCOOT HACDIRC PREVIOUS R5 TlftER AiRBUF CURRSAVE tftSSLR3 DftSSOP22 FCBBUFF FCBITEH FILEITEft KEYFORft ftlCLIBL PS R6 VAR CHNGBYTE DATAEND DftSSLR42 DftSSOP23 FCBBYTE FCBKEYS FILEftODE KEYLIGTH REiBLKS RO R7 VftSIZE Rl Rl1 R12 R14 R15 (") 3: en CD DHSTIO ADEVTAE R12 ATAB!ID R13 CC R14 eSi R15 DEVADDR SILl DEVlUSC DEVNAHE DEVSECT DEVSIZE NUCON 80 Rl Rll en ::z DeSTHA DftSLIB R7 RO R8 Rl R9 Rl0 R11 R12 R14 R15 R2 R3 R4 R5 86 Po DeSTPD CSi R6 NUCOI R7 RO R8 81 89 Rl0 Rll R12 R14 R15 R2 R3 R4 R5 0 0 r+ 1-'0 I:' . ~ ..... CD I r+ 0 I W t-t III t:I ..... CD 1'1 0 1-'1'1 0 r+ 0 1'1 1-'CD en tr CD (") en en ~ (I) HI CD 1'1 (I) tv I:' 1.0 (I) ~ 0 '"0 CD Module External References (Labels and Modules) tMSTPE AACTLKP DEVMISC FSTSECT R2 c:: 3: " ADEVTAB DEVIAME PSTT R3 AEBASE DEVSECT PSTiP R4 APIBIS DEVSIZE PVSECT R5 APTFST PSTD IUCOI R6 n 3: til AFT SECT PSTDBC RO B7 APVS PSTPCL Rl R8 ASTATE PSTPV Rl0 R9 ATABEBD PSTIC Rll UfDBUSY 0 DMSTQQ 00 til "' label Count (") References a: N \0 W t:I 0 (l) ~ \0 label Count n References tI: til ~ < tI: '"w...., 0 til J< en rT (1) EI t"" 0 \Q ~. 0 I» l:I 0. ~ H 0 t:7' ..... (1) EI t:; (1) rt (1) H ....l:I EI I» rt .... 0 l:I en .... ~ 0. (1) DftSSftHSB D!SSftITS DftSSftll0 DftSSftl4 tftSSftl5 DftSSOP DftSSOP19 DftSSOP20 tftSSOP22 D!SSOP23 tftSSQS DftSSQSGT tftSSQSPT DftSSQSUP tftSSTGAT DftSSTTR DftSSVH DftSSVll tftSSVH2 DftSSVI93 DftSSVH94 D!SSVT tftSVSR D!SICP DOSBLKSZ DOSBUFF tOSBUFSP DOSBITE DOSCBlt DOSCOUT tOSDD DOSDDCAT tOSDEV DOSDSK tOSDSftD DOSDSHA! [OSDSTIP DOSDU! DOSEID DOSEISIZ tOSEIT DOSEITCT DOSEITCI 000001 000001 000001 000001 000001 000002 000001 000001 000001 000001 000002 000001 000001 000001 000001 000001 000002 000001 000001 000001 000001 000001 000001 000001 000005 000011 000002 000014 000002 000002 000023 000006 000017 000006 000027 000008 000001 000012 000001 000006 000004 000002 000004 D!SSLH DftSSTG D!SSVT D!SSVT DftSSVT D!SSEG D!SSVT DftSSVT D!SSVT DftSSVT DftSSEG DftSSOP D!SSOP D!SSOP DftSFHC D!SlFS D!SSEG DftSSVT DftSSVT DftSSVT DftSSVT D!SSEG DftSFHC DftSDOS D!SBOP D!SBOP DftSDLB D!SICP D!SDLB DftSICP DftSAft S DftSDLB DftSAft S DftSDLB D!SA!S D!SCLS D!SDLB DftSAftS D!SDLB DftSDLB DftSBOP D!SBOP D!SICP t"" I» t:7' (1) .....I rT 0 I DftSSVT tI: 0 0. ~ ..... (1) D!SSVT n H 0 til til l:I:l (1) D!SSVT H1 (1) H (1) l:I 0 (1) DftSICP D!SICP DftSICP DftSBOP DftSCLS DftSDLB DftSDLK DftSDSV DftSOPL DftSBBV DftSBOP D!SDLK D!SBOP DftSDLB DftSDLB DftSBBV D!SDLB D!SICP DftSDLK DftSSRV DftSVIF DftS RBV DftSICP D!SICP DftSSBV DftSVIP DftSICP D!SBOP DftSDLB DftSVIP D!SICP DftSSRV DftSSVT DftSVIP DMSICP Ul (!) 0 r+ ~. 0 t:I . W ~ ~. 11 CD 0 M- 0 11 Label Count References DOSEITNO DOSEITTB DOSFOBfil DOSIBIT DOSITE!! DOSJCAT DOSREIT DOSOP DOSOSDSI DOSOSFST DOSPEBfil DOSBEAD DOSSAVE tOSSECT DOSSERSE tOSSYS DOSTAPID tOSUCAT DOSUCBAl! DOSVOLNO DOSVOLTB tOSWOBK DOSYSIII DOUBLE DSKAD tSKADB DSKLII DSKLOC DSKLST DSYl! DTAD tTADT DTAS tUALBOS DUMCOl! I:UMPLIST DYLD DYLIBO DYl!BBBM I:YBAEBD EDCB EDCBENt EDCBLTB 000009 000007 000006 000013 000007 000006 000011 000034 000007 000009 000002 000009 000006 000028 000008 000002 000002 000006 000007 000011 000007 000004 000015 000021 000002 000006 000066 000010 000020 000002 000029 000022 000003 000008 000004 000002 000012 000004 000005 000004 000005 000001 000002 DfilSAfilS DfilSAfilS Dl!SBOP Dl!SBOP DfIlSICP Dl!SDLB DfilSAl!S DfIlSBOP DfilSDLB DfIlSBOP DfIlSDLB DfIlSICP DfIlSICP DfilSAfilS Dl!SICP Dl!SBOP DfIlSICP Dl!SBOP DfilSEOP Dl!SAMS DMSAl!S DMSICP DfilSAfilS Dl!SDIO Dl!SLIO Dl!SACF Dl!SLIO DMSACF Dl!SACF DMSLSY Dl!SACC Dl!SACl! DMSAMS DMSEDC DMSSLI DMSDBG Dl!SLDB DMSSLB Dl!SLIB Dl!SLDB Dl!SEDC Dl!SEDI DMSEDI DfilSDLE DfilSDLB DfilSVIP DMSVIP DfilSICP DMSICF Dl!SDLB DMSICP DfIlSBOP DfilSDLK DfIlSICP Dl!SDLB DfilSCLS DfIlSRBV DfIlSDLB DfIlSSBV DMSOPL Dl!SICP DfIlSSVT Dl!SDLK Dl!SBBV DfIlSSBV DMSICP DfilSBOP DMSCLS Dl!SDLB DfIlSDLK DMSDSV DfilSDLB Dl!SDLE Dl!SDLB DfIlSDLE DMSICP DMSVIP DMSVIP DfIlSICP DfIlSICP DfIlSBOP DMSCLS DMSDLB DfIlSVIP DMSICP DMSACl! DMSAUD DMSEBS Dl!SACl! DfilSACM DMSAUD DMSAUD DfilSEBS DMSEBS DfIlSFBS DMSFBS DMSl!OD DfilSMOD DfilSACM Dl!SASB DMSAl!S Dl!SAUD DMSABE DMSDIO Dl!SASB DMSQBY DPISDIO Dl!STQQ Dl!SVIP DfilSICP Dl!SOPL DMSBBV DMSSBV DMSSVT DMSFOB DPISINS DPISQBY DfIlSBOS DMSVIP Dl!SICP DfilSOPL n DMSSVT DMSLIO Dl!SSTG DMSSLB DMSOLD DMSEDI DPISOLD DMSSTG Dl!SSLR DMSEDI DMSSLB DMSSTG t:I: Ul t'"I ~ t:T (1) DMSGIO DPISSCB ~ I r+ 0 I t:I: 0 ~ ~ ~ (1) n 11 0 en en ~. CD !:d en CD ...., '" (1) (1) 11 I,Q (J1 t:I 0 CD I\.) \0 Label Count n Beferences lJI: U'l 0'\ < lJI: "w .,.J 0 00 U'l ~ [J1 rT CI> iii t-t 0 .... IQ 0 PI 1:1 ~ ttl t1 0 t:I" ....CI> Ell c;, (1) r+ (1) t1 Ell ....1:1 PI ....rT 0 1:1 Cil ....s:: ~ (1) EDCT EDLIlII IDftSK EDBET EDiOBK EFPBS 1!GPBS EGPBO IGPBl EGPBll IGPB12 EGPB14 IGPB15 EGPB2 EBDBLOC ElIIDCDADB EBDTABS ElIITADB ERTRAftE EOCADB EBBIT EBBL EBDSECT ERllBl ERllBD ERll SBI EBllSBl ERllTI EBl2Cft ERl2DI ERl2DT ERl2PR ERl2SI ERLET lRftESS ERROft ERPAS 13 ERPBlA ERPCS ERPFl ERPl2 EBPBDB !RPLET 000026 000013 000003 000003 000001 000004 000021 000062 000037 000002 000003 000009 000034 000006 000003 000006 000004 000008 000005 000006 000006 000001 000002 000002 000003 000005 000003 000002 000004 000001 000001 000002 000001 000001 000002 000002 000001 000002 000001 000013 000012 000001 000001 DftSEDI DftSEDI Dft SSCB DftSEDI DftSEDI DftSITS DftSABlII DftSDLB DftSLDB DftSITS DftSSTG DftSITS DftSITS DftSITS DftSEDI DftSLDB DftSEDI DftSLDB DftSLDB DftSDftP DftSACl DftSEBB DftSERB DftSEBB DftSERR DftSEBB DftSERR DftSEBB DftSEBR DftSEBB DftSERR DftSERR DftSERR DftSEBR DftSERR D!SEBR DftSERR D!SERB D!SERR D!SERR DftSERR DftSEBR DftSERB t-t PI t:I" Df5SEDI ....CI>I DftSEDI rT 0 DftSOYS DftSBSC DftSlLD DftSSftR DftSITS DftSITS tlftSSTG DftSOVS DftSSftB DftSEDI. DftSLSE DftSEDI DftSOLI: DftSLSB DftSSftR DftSEBS DftSCVS DftSOVS I lJI: 0 ~ s:: .... CI> n DftSSTG t1 0 [J1 [J1 DftSOLD ~ CI> ~ DftSOLD DftSSTG DftSBRft CI> t1 CI> 1:1 0 (I) til CD n ....r+0 t:I Label Count References ERPNOft ERPSBA ERPTIA ERRCODE ERRCODO ERRCODl ERRET ERRNOft ERSAVE ERSBD ERSBF ERSBL ERSECT ERSFA ERSFL ERSFLAG ERSFLST ERSSZ ERTEIT :ERTPL ERTPLA ERTPLL ERTSIZE :ERTl ERT2 ESD1ST ESIDTB EXADD EIAftLC EXAftLG EIECFLAG EIECRON EIENACiB EXENADtR EILEODF EXLEODL EILEODP EILEVEL BILJRN EILJRNL BILLEN ULLERF EILLERL 000001 000004 000003 000063 000009 000017 000035 000002 000007 000013 000010 000005 000001 000004 000005 000050 000002 000002 000004 000004 000006 000008 000002 000008 000013 000007 000040 000008 000005 000006 000003 000004 000009 000002 000004 000001 000001 000006 000002 000004 000009 000004 000001 DftSERR DftSERR DftSERR DftSDIO DftSACft DftSACF DftSITS DftSINT DftSERR DftSERR DftSERR DftSERR DftSERR DftSERR DftSERR DftSERS DftSERR DftSERR DftSERR DftSERR DftSERR DftSERR DftSERR DftSERR DftSERR DftSLDR DftSLDR DftSEXC DftSDBG DftSDBG DftSEIC DIISEIC DftSVIP DftSVIP DftSVIP DftSVIP DftSVIP DIISEXC DftSVIP DftSVIP DftSVIP DftSVIP DftSVIP DftSERS DftSRNft DftSRNft DIISOLD DftSOLI: DftSEIT n 3: til t-I DftSEXT I» ~ CD ..., t r+ 0 t 3: 0 ~ ~ W ..., ....0 CD t1 t1 0 CD n n r+ rn rn .... !:C rn CD 0 t1 CD CD I-h t; CD f\..) \0 ..J :::s n (I) ...., I.C Label count References n 13 til (X) MSINS DMSLGT DMSOPT DMS RNM DMSSQS DMSTPE DMSAUD DMSCPF DMSFCH DMSINT DMSLIB DMSORl DMSROS DMSSRT DMSTRK DMSARX DMSCRD DMSFCH DMSITE DMSLIO DHSRNE DM SSVN DMSASM DMSCW R DMSFLD DMSITI DMSLSB DMSRNM DMSSVT DMSASN DMSDEG DMSFNS DMSITP DMSLST DMSSAB DMSTIO DMSAUD DMSDIO DMSFOR DMSITS DMSMOD DMSSBS DMS'tPE DMSBAB DMSDLB DMSGIO DMSLAD DMSMVE DMSSCR Df'lSTRK n CD en CD 0 t+ ..... 0 1:1 W Label Count References R14 002863 R~5 004744 R2 003449 B3 003494 Df!SABN DnSBAB DnSCRD Dl!SEDX DnSGRH DMSITS D8SLLO Df!SOVR DftSRRV DMSSRT DKSTRK Df!SABN Df!SBAB D8SCRD DnSEDI DnSGRN DHSITS Df!SLLO DHSOR 1 Dl!SROS DeSSQS DeSTPE D!SACC DHSBOP DeSCWR DeSERS DHSBDI DMSLAF DMSHDP Df!SPUN Df!SSCT DMSSVT DMSICP DeSABN DHSBAB DHSCRD DHSERS DMSlNA DHSLBT DHS8VE DHSRNE DHSSHN Df'ISTPD D!SACC D8SBOP DnSCWR DMSERS D8SHtI Df!SLAD D8SLOA Df!SOVS Df!SSAE Df!SSRV DKSTYP Df!SACC Df'ISBOP D8SCWR DnSERS DnSBDI DMSLAD Df!SLOA Df'ISOVR DeSRRV Df!SSRT Dl!STBK Df!SACF D8SBRD DeSDBD Df!SEIC Df!SBDS DMSLEe DMSMOD DeSQBY Df!SSEB DeSSYN DMSZAP DMSACC DHSBOP D8SCWB DHSEIC DHSINI DMSLDR D8SNCP DHSRNM DI'!SSOP DMSTPE DftSACF D8SBRD DnSCWT D8SEIC DKSHDS Df!SLAF Df!SLSB Df!SPlO Df!SSBD Df!SSSK DKSOPD Df!SACF Df'ISBRD Df!SCWT DnSEXC Df'ISHDS Df!SLAF DHSLSB Df'ISOVS DMSSAB Df'ISSRV Dl!STYP Df!SACf'I DeSBSC DKSDBG Dl!SEIT D8SlNA Dl!SLBT DMSMVE DMSRDC DMSSET DeSTMA nnSAce D8SBSC Df'ISDBD DKSEIT DKSIHA D8SLBf! Df!SLST Df!SPHT DKSSBS Df!SSTG Df'ISVIB Df'ISACK Df'ISESC Df'ISDBD DMSEIT Df'ISINA Df!SLBf! Df!SLST Dl!SPIO DKSSBD DeSSSK DeSOPD Df'ISALO DKSBTB DeSDlO Df!SFCB DeSINI tMSLDB DeSNCP DMSRNE DeSSf!N DMSTPD D8SALO DnSBTB D8SDBG DnSFCH DKSlHI D8SLBT Dl!SLSY Df!SPRT Df!SSCN Df!SSTT Df!SVIP Df!SALO D8SBTB Df'ISDBG DnSFCH Df'ISIHl Df!SLBT Df!SLSY Dl!SPNT DHSSBS DeSSTG DMSVIB D8SA8S DeSBTP DHSDLB DKSFET Des INK DMSLDS DeSOLD DeSRNe Dessop Df!STPE DnSA!S DnSBTP Df'ISDlO DKSFET DKSINK Df!SLDR Df!Sf!DP Df!SPRV Df'ISSCR Df!SSVN Df!SVPD Df!SAf'IS Df'ISBTP Df'ISDlO DMSFET Df'ISlNf'I Df!SLDR Df!SHDP Dl!SPRT Df'ISSCN DeSSTT Dl!SVlP DHSARE DeSBiR D!SD!P Df!SFLD Des INS DMSLFS DKSOPL DMSROS Df!SSQS DMSTRK DnSARE DKSBWR Df'ISDLB DKSFLD Df!SlHS Df!SLDS Df!Sf!OD DMSPON Dl!SSCT DMSSVT Df!SVSR DMSARE Df'ISBWR Df'ISDLB Df'ISFLD Df!SINS Df!SLDS Df'ISf'IOD DMSPRV DHSSCR DeSSVN DeS'IPD DHSARN DMSCAT DHSDOS Dl!SFNS DKSlNT Dl!SLIO DHSOPT D.MSRRV Df!SSRT DMSTYP Df!SARN D!SCAT DKSDOS DKSFNS Dl!SlHT Df!SLFS DKSl!VE Df!SQRY Df'ISSEB Df!SSYN Df!SICP Df'ISARN Df'ISCAT Df'ISDOS DMSFNS Df'ISlNT Df! SLFS Df!Sf'IVE DHSPON Df'ISSCT DeSSVT Df'ISVSR Df'ISARI DKSClO D!SDSK Dl!SFOR DMSIOW DMSLKD DMSOR 1 DKSSAB DeSSRV DMSOPD Df!SARI DnSClO DKSDSK DKSFOR Df!SIOW Df!SLGT Dl!SNCP Df!SRDC DKSSET DnSTlO DMSZAP DnSARI Df'ISClO DnSDSK DMSFOR DMSlOW Df'ISLGT Dl!SNCP DHSQRY Df'ISSEB DHSSYN DeSICP DeSASH D8SCIT DHSDSL DHSGIO DMSITE DKSLLU DeSPlO Dl!SSBD DeSSSK DKSVIB DnSASK DnSClT Dl!SDSL DKSGIO DKSITE Df!SLlB Dl!SOLD Df!SRHE DKSSMN Df!STKA D!SASN DKSCLS DKSEDC DKSGLB DKSITl Df!SLlO Dl!SOPT Df!SRNM DMSSOP Df!STPD DeSAOD D8SCPF Dl!SEDI DKSGND DKSlTP DeSLKD Dl!SOR3 DftSROS DeSSQS DMSTPE DnSASf! Df'ISClT DnSDSL DHSGlO Df!SITE DMSLlB Dl!SOLD DHSRDC DeSSET DHSTIO Df'ISZAP DHSASN D8SCLS DMSEDC DHSGLE DMSlTP DMSLOA DMSPNT DMSSES DMSSTG DeSVIP DMSASN Df!SCLS Df'ISlDC DMSGLB DKSITl Df!SLlO Dl!SOPL DeSRNE DHSSMN DMSTl!A DMSAOD DeSCPF DMSEDI DnSGND DMSlTP DMSLKD Dl!SOPT DeSRNK Dessop Df'ISTPD DHSAOD DKSCPF Df!SEDl DHSGND DMSlTS DMSLSB DeSPRT DMSSCN DMSSTT DMSVPD DeSBAB DMSCRD D8SEDX Df!SGRN DeSLAD DMSLST DMSPBV DMSSCR DeSSVN DMSVSR DMSACF D8SBRD DMSDBD DHSEIT DMSINM DHSLDS D8S0LD DHSROS DI'!SSQS DHSTRK DMSACK DeSBSC tKSDBG DHSFCB DMSINS DMSLFS DMSOPL DHSRRV DMSSRT DHSTYP DeSALO DeSBTB D8SDLB D8SFET DMSINT DMSLGT Df'I SO VR DMSSAB Df!SSRV DltSOPD DMSAHS DHSBTP D8SDHP DMSFLD DMSlTE DKSLlO DMSOVS DMSSBD DMSSSK DMSVIB DHSARE DeSBWR DHSDOS DMSFOR DMSlTl DHSLKD DMSPlO DMSSBS DMSSTG DltSVIP DKSARN DHSCAT DMSDSK DMSGLB DKSlTP Df'ISLLO DMSPRT DHSSCN DHSSTT DMSVPD D8SARI DMSClO DHSDSL DMSGND Df'ISlTS Df'ISLSB Df'ISPRV DMSSCR DMSSVN DMSVSR DHSASM DHSClT DHSEDC DMSGRN DMSLAD DMSLST DMSPON Df'ISSCT Df!SSVT Dlt SXCP DHSASN DMSCLS DMS EDI DMSHDI DHSLAF DMSKDP DMSQBY DHSSEB DMSSYN DltSZAP DMSAOD DMSCPF DMSEDI DMSHD~ DMSLBM DMSMOD DMSRDC DHSSET Df!STI'lA n 3: en t-' I» t:1' CD I-' I t+ 0 I 3: 0 /:lI ~ t:=' ..... I-' CD t1 CD (') t+ rJl rJl 0 0 t1 ..... CD t1 0 !:tI CD rJl Ht W t:S CD t; CD ~ w 0 CD w ~ Label Count References ('l :I: til C R4 002780 < :I: " w ..,.J 0 til '< til cT (!) RS 002930 e t'"4 0 I.Q 1-" n III = 0... '"0 H 0 R6 002486 R7 002318 0' ~ (I) e I:' (I) cT (I) H e 1-" = III cT ..... 0 = en c 1-" 0... (!) DI!SABH DMSBAB DMSCRD DMSEDX DMSHDI DI!SLAF DI!SMDP DMSQRY DMSSET DMSTMA DMSABN DMSBAB DMSCiR Dl'lSERS Dl'lSHDI DMSLAF DMSMOD Dt!lSQRY Dt!lSSET DMSTPD Dt!lSABN Dl'lSBAB DMSDBD DMSEXT DMS1NS DMSLGT Dt!lSOVR DMSSAB DMSSTG DMSVPD Dl!SABN DMSBOP DMSD10 DMSFET DMSIOi DMSLIB DMS FRT DMSSCT DMSTYP DMSACC DMSBOP DMSCWR DfilSERS DMSHDS DMSLBM DMSI!OD DMSRDC DMSSMN DMSTPD DMSACC Dl'lSBOP DMSDBD DMSEXC DMSHDS DMSLEM DMSMVE Dt!lSRDC Dt!lSSOP DMSTPE DMSACC DMSBOP DMSDBG DMSFCH DMSINT Dt!lSLKD DMSOVS DMSSBD Dl!SSTT DMSVSR DMSACC Dl!SBRD DMSDLE Dl!SFLD DMSITE DMSLKD DMSPUN DMSSET Dl'lSUPD DI!SACF DfilSBRD DMSDBD DMSEXC DMSINA DMSLBT DMSMVE DMSRNE DMSSOP DMSTPE DMSACF DMSBRD DMSDBG DMSEXT DMSINA DMSLBT Dt!lSNCP DMSRNE DMSSQS DMSTRK DMSACF DMSBRD DMSDIO DMSFET DMSIOi Dt!lSLLU DMSPIO DMSSBS DMSSVN Dl!SXCP Dl!SACF Dl!SBSC DMSDMP DMSFNS DMSITI DMSLLU DMSQRY DMSSMN DMSVIP DMSACM DMSESC tMSDBG DfilSEXT DI!SIN1 tMSLDR DI!SNCP DMSRNM DMSSQS DMSTRK DMSACM tMSBSC DMSD10 DMSPCH DMSIN1 DMSLDR Dt!lSCLD DMSRNM DMSSRT DMSTYP DMSACM DMSBSC DMSDLE DMSPLD DMSITI I:MSLOA DMSPNT DMSSCN Dl'ISSVT DMSZAP DMSACM Dl!SBTP DMStOS DMSFOB DMS1TP DMSLSB DMSRDC DMSSOF DMSVPD DfilSALU DMSBTB DMSDIO DMSFCH DI!SINM DMSLDS DMSOLD DfilSROS DMSSRT DMSTYP DMSALU DfilSBTB DMSDLB DMSFET DMSINM DMSLDS DMSOPL DMSROS DMSSRV DMSUPD DMSALU Dt!lSBTP DMSDMP DMSFNS Dt!lS1TP DMSLSB DMSPRT Dl!SSCR DMSSYN Df!SAMS DMSBTP DMSDLB DMSFET DMS1NS DMSLFS DMSOPL DMSRRV DMSSRV DMSUPD DMSAMS Dl'lSBTP Dt!lSDt!lP DMSFLD DMSINS Dl'lSLFS Dt!lSOR1 DMSRRV DMSSSK DMSVIB DMSAMS DMSBiR Dt!lSDOS DMSFOR DMSITS DMSLST DMSPUN Dl!SSCT DMSTl!A DMSBWR DMS DMP DMSFLD DMSINT DMSLGT DMSOVR DMSSAB DMSSSK DMSVIP DMSARE DfilSBiR DMSDOS DMSFNS DMSINT DMSLGT Dt!lSOVR DMSSAB DMSSTG DMSVIP DMSARE DMSC10 DMSDSK DMSGND DMSLAD DMSMOD DMSQRY DMSSET DMSTPD DfilSARN DMSCAT DMSDOS DMSFOR DM SlOW DMSLIO DMSOVS DMSSBD DMSSTG DMSVPD DMSARN DMSCIO DMSDSK DMSFOR DMS10i DMSLIB DM SOVS DMSSBD DMSSTT DMSVPD DMSARN DMSCIT DMSEDC DMSGRN DMSLBM DMSMVE DM SRDC DMSSMN DMSTPE DfilSARX DMSCIO DMSDSK DMSGIO DMSIT1 DMSLKD DMSPIO DMSSBS DMSSTT DMSVSR DMSARX Dl'lS CIT Dt!lSDSL DMSGIO DMSIT1 Dl'lSLKD DMSPIO DMSSBS DMSSVN DMSVSR DMSARX DMSCLS DMSEDI DMSHDI DMSLBT DMSNCP DMSRNE Dl'lSSOP DMSTRK DMSASM DMSCIT DMSDSL DMSGLB DMSITP DMSLLU DMSPNT DMSSC·N DMSSVN DMSXCP DMSASM DMSCLS DMSEDC DMSGLB DMSITP DMSLLU DMSPNT DMSSCN DMSSVT DMSXCP DMSASM DMSCPF DMSEDX DMSHDS DMSLDR DMSOLD DMSRNM Dl!SSQS Dl!STYP DMSASN DMSCLS DMSEDC DMSGND DMSITS DMSLSB DMSPRT DMSSCR DMSSVT DMSZAP DMSASN DMSCPF Dt!lSEDI DMSGND DMSITS DMSLSB DMSPRT DMSSCR DMSSYN DMSZAP DMSASN DMSCRD DMSERS Dl'lSINA DMSLDS DMSOPL Dt!lSROS DMSSRT DMSUPD DMSAUD DMSCPF DMSEDI DfilSGRN DMSLAD DMSLST DMSPUN DMSSCT DMSSYN DMSALU DMSBiR DMSDSK DMSGLB DMS1TS Dl!SLST DMSRNE DMSSQS DMSVSR DMSAMS Dl!SCIO DMSEDC DMSGRN DMSLAD DMSMOD DMSRNM DMSSTG DMSXCP DM.SARE DMSCIT DMSEDI DMSHDI DMSLBM DMSMVE DMSROS DMSSVT DMSZAP Dl'lSARN DMSCLS DMSEDX DM SEDS DMSLBT DMSOLD DMSRRV DMSSYN DMSARX DMSCPF DMSERS DMS1NA DMSLDR DMSOPL DMSSAB DMSTMA DMSASM DMSCiR DMSEXC DMSINI DMSLDS DMSOVR DMSSED DMSTPD DMSASN Dl!SDBD DMSEXT DMS1NS DMSLFS DMSOVS DMSSCN DMSTPE DMSAUD Dl'lSDBG DMSFCH DMS1NT DMSLGT DMSP10 DMSSCB DMSTRK DI!SA~E DMSAUD DMSCRD DMSEDX DMSGRN DMSLAD DMSLST DMSPUN DMSSCT DMSTMA DMSAUD DMSCiR DMSEXC DMSIII1 Dl'lSLFS DMSOR1 DMSRRV Dl'ISSSK Dl!SV1P t'"4 III 0' (I) ~ I M" 0 I 3: 0 0... ~ ~ (I) n H 0 til til ~ (I) I-tt (I) H (I) = n (I) en CD n ....0 t1" CI . W Label Count References R8 001983 R9 001779 SAVCNT SAVCWD SAVEADT SAVEAR SAVERl SAVER14 SAVER15 SAVEXT SAVEl SAVE2 SAV67 SCAW SCBPTR SCBSAV12 SCBWORK SCLNO SCRBUFAD SCRFLGS SCRFLG2 SDISK SEARCH SEEK SEEKADR SENCCW SENSB SEQ NAME 000004 000021 000002 000010 000042 000013 000002 000002 000020 000003 000006 000003 000014 000004 000008 000002 000002 000033 000015 000004 000035 000036 000001 000002 000002 000004 DMSABN DMSBAB DMSCWR DftSEXC DMSINM DMSLLU DMSPUN DMSSET DP.lSTYP DMSACC DMSBOP DMSDLB DMSFOR DMSITS DP.lSMVE DMSSAB DMSTMA DMSEDI DMSEDI DMSDIO DMSEDC DMSSOP DMSSCT DMSSOP DMSITE DftSDBD DMSDBG DMSLDR DMSITE DMSITP DMSSAB DMSSAB DP.lSSCR DMSEDX DMSEDI DMSEDI DP.lSINI DMSINI DPISI NI DMSDIO DP.lSDIO DMSDIO DMSEDI DMSACC DMSBOP DMSDBD DftSEXT DMSIOW DftSLSB DMSQRY DMSSMN DMSUPD DMSACF DMSBRD DP.lSDOS DMSGlID DMSLAD DMSNCP DMSSBD DMSTPD DMSSCR DPlSACF DMSBRD DMSDBG DftSFCB DMSITI DMSLST DMSRDC DMSSOP DP.lSVIP DMSACP.I DMSBSC DMSDSK DMSGRN DMSLBM DP.lSOLD DMSSCR DMSTPE DMSACPI DMSBSC DMSDIO DMSFLD DMSITP DMSMOD DMSRNM DMSSSK DMSVSR DMSALU DMSBTP DMSEDC DMSBDI DMSLBT DP.lSOPL DMSSCT DMSTRK D8SALU DMSBTB DMSDLB DftSFNS DMSITS DMSMVE DMSROS DMSSTG DP.lSXCP DMSAMS DMSBWR DMSEDI DMSBDS DMSLDR DP.lSPIO DMSSET DMSTYP DMSSLN DMSSTG DMSSVT D8SAftS DMSBTP DMSDOS DMSFOR DP.lSLAD DMSNCP DMSRRV DMSSVN DP.lSZAP DP.lSARE DMSCIT DftSEDX DP.lSINA DMSLDS DMSPRT DMSSMN DMSUPD DftSARE DMSBWR DP.lSDSK DMSGLB DMSLBM DP.lSOLD DftSSAB DMSSVT DftSARN DMSCIO DMSDSL DMSGRN DMSLBT DMSOPL DP.lSSBD DMSSYN DPISARX DMSCIT DMSEDC DMSBDI DftSLDR DMSOVR DMSSBS DMSTMA DftSASP.I DMSCLS DMSEDI DMSBDS DftSLDS DMSOVS DMSSCN DMSTPD DMSASlI DMSCPF DP.lSEDX DftSINA DftSLFS DMSPIO DMSSCT DftSTPE DMSAUD DMSCRD DMSERS DMSINI DMSLGT DMSPRT DMSSEB DPlSTRK DMSARN DMSCLS DMSERS DMSINI DMSLFS DMSPUN DMSSOP DMSVIP DMSARX DMSCRD DP.lSEXC DMSINS DMSLGT DP.lSQRY DMSSRV DMSXCP DP.lSASM DMSCWT DMSEXT DftSINT DMSLKD DMSRDC DMSSSK DMSZAP DMSASN DMSDBD DftSFCB DMSIOW Dft SLSB DMSRNM DMSSTG DP.lSAUD DP.lSDBG DMSFLD DP.lSITI DftSLST DftSROS DMSSTT DMSBAB DPiSDIO DftSFNS DP.lSITP DMSftOD DMSRRV DMSSVT DMSSCR DMSSEE DMSDBG DMSOLD DMSSAB DMSSTG DMSSCR DP.lSSCR DMSSCR n 1:1: U') t"4 ~ t:1' CD ..... I t1" DMSFNS DMSEDX 0 I 1:1: 0 s:lI c: ..... t:I CD 1'1 n .... CD n t1" 0 11 .... CD en - 1'1 0 en en ~ CD HI CD 11 CD w t:I VI CD n .. w Label Count n References 0( 0\ < 0( "w .. ....J 0 til IoocI en rT CD iii 1:"4 0 \.Q ~. n PI I:' ~ Itj t1 0 t:l" 1-1 CD iii t=' CD ("t CD 11 iii ~. I:' PI ("t ~. 0 I:' en ~ ~. ~ CD til SERSAV SERTSEC SERTSW SETLIB SETSEC SIG BAL SILl SIZE SKEY SOBl SPARES SPEC SPIESAV SSAVE 000002 000003 000003 000002 000002 000053 000205 000022 000003 000002 000015 000189 000002 000056 SSAVElIlXT SSAVEPRV SSAVES2 STACKAT STACKATL STAEBIT STAESAV STAIBIT STARS START STATEFST STATERO STATERl STIMEXIT STOPAT STRTADDR STRTNO SUBACT SOBFLAG SOBINIT SOBSECT SVCAB SVCOPSi SVCOUNT SVCSECT SVEARA SVEPSi 000004 000008 000003 000001 000005 000003 000002 000002 000001 000022 000022 000002 000005 000009 000002 000030 000005 000003 000024 000001 000004 000008 000020 000003 000010 000008 000008 DMSEDI DMSEDI DMSEDI DMSLIB DMSINI DftSACft DMSINI DftSFRE DMSFRE DftSOPT DMSEDI DMSLDR DMSINT DMSABN DMSSTG DftSITS DMSITS DftSITS DftSEDI DMSEDI DMSSAB DMSINT DMSSAB DMSINT DMSLDR DMSALU DftSBRD DMSDSK DMSITE DMSDBG DMSFET DMSEDI DMSEDX DMSABN DMSFNS DMSABN DMSFRE DMSITS DMSOVS DMSCIT DMSBAB DMSBAB 1:"4 PI t:l" CD 1-1 I ("t DftSEDI D1!SINS 0 DMSERS DftSTIO I tI: 0 ~ ~ 1-1 CD DftSSET DMSEDX DftSLGT DftSLIB DMSOLD DMSBSC DftSDBG DMSDLB n 11 0 DftSERR DftSFLD DftSFRE DMSITP DftSITS DftSLDR DftSOVS DftSSMN en en ~ CD HI CD 11 CD I:' n CD DMSLSB DMSBRD DftSSTT DMSERS DMSSTG DMSERS DMSfNS DMSSVN DMSSVT DMSITS DMSLDR DMSINT DMSEDX DMSSLN DMSfNS DMSI!M DMSINT DMSFRE DMSDOS DMSDOS DMSBDS DMSITP DMSITP DMSINT DMSPUN DMSRNft DMSSTT DMSLOA DMSLSB DMSMOD DMSOLD DMSSLN DMSIRT DMSMOD DMSSLN DMSI!T DMSOVR DMSOVS DMSSLN en CI) (') rT 1-" 0 Label Count Beferences SVEPSW2 SVEBOF SVEBOO SVEBOl SYEB09 SVLID SYLIDW SYLFS SiTCH SiTCHSIV SIMTIBLE SI8TBG SISADDB SISCODE SISCOM SISLINE SISNIME SISRIMES 000009 000005 000020 000002 000011 000002 000001 000002 000001 000002 000003 000004 000003 000005 000018 000001 000006 000022 SISBEF SISTE8ID SISUTl TIBLIN ilBS TIIEIlt 'IIIEKSGL TIIEBSAY 'IIPEBUFF TAPECOUT 'IAPEDEV TAPELIST TlPE8lSK TAPEOPEB 'IIPESIZE TIPEl 'IIPE4 TAXEIDtB 'IIXEDEF TIXEEXIT 'IAXEEXTS TAXEFBEQ lAXEICL 000004 000005 000024 000016 000017 000002 000001 000002 000001 000002 000003 000003 000003 000007 000002 000002 000002 000008 000001 000002 000001 000004 000002 D8SBlB DMSBIB DMSBIB DMSBAB DMSBIB DMSLAD DMSLID DMSLFS D8SlCM D8SIRT DMSDBG DMSDBG DMSINI DMSFBE DMSBIB DMSDLK DMSBTP D8SlMS D8SVSB D8SINS D8SINI D8SLDB D8SEDI D8SEDI D8SCIT DKSCIT DMSCIT D8SSEB DMSSEB D8SSBS D8SSBS D8SSBS D8SSBS D8SSEB D8SASN D8SASN D8SCIT D8SSVT D8SCIT D8SCIT D8SCIT D8SCIT D8SDOS DMSDOS D8SDOS DMSITP D8SDOS DMSITP D8SSET DMSBOP DMSDOS DMSFET D8SITP D8SSTG DMSINS DMSBOP DMSBTP DMSDOS D8SEDX DMSEXC D8SITP D8SLOI D8SINS D8S0LD D8SSCB D8SEDX DMSSET D8SSEE D8SSEB D8SSEB D8SSEB D8SS0P D8SS0P D8SS0P D8SS0P DMSINS DMSINT DMSITS DMSQBI D8SSET DMSYIB n 3: en D8SSTG D8SSVT D8SSVT ~ PI 0CI) I--' I rT 0 I t:I =-0 W 0,. C I--' ~ 1-" 11 CI) (') ("t- 0 11 1-" CI) en CI) n 11 0 00 oo l:tI CI) HI CI) 11 CI) W ..A ..,J t:I (') CI) w Label count Beferences TlIEIOWS TlIELI!IR TlIEBTNl TlIESTAT TAIETAIE TlIETSCF TBENT TBLCT TBLLNGTB TBLREF TCODE TEftPBYTE TEftPST TEMPTAB TIC UMBUF TIMCCW UMCHAR TIMER TIMINIT TIN TftPLOC TOOBlG TOUT TPFERT 'lPFNS TPFROl 'lPFSYO TPFUSR 'lBKLSAVE TRNCODE TRUNCOL TSOATCNL TSOBLKS TSOFLAGS TSYM TVERCOL 1 TVERCOL2 Ti ITCH TITDIRC TXTLlBS 'lYPE TYPEAD TYPFLAG 000002 000004 000002 000003 000002 000002 000024 000017 000005 000016 000001 000003 000008 000002 000053 000013 000005 000012 000015 000010 000007 000008 000003 000008 000003 000009 000002 000005 000011 000004 000001 000015 000018 000001 000019 000005 000002 000001 000087 000008 000004 000092 000001 000034 DftSCIT DftSCIT DftSCIT DMSCIT DftSCIT DMSCIT DftSlCft DftSLDB DftSSBD DftSLDB DftSFRE DMSSVT DftSLDB DMSEDl DMSINl DMSINM DMSITE DMSINS DftSIN S DMSINS DMSEDI DMSLDR DftSDIO DMSEDI DftSITS DMSITS DftSITS DftSITS DMSDBG DeSTQQ DMSFRE DMSEDl DMSClT DeSSET DMSClT DeSDBG De SEDI Des EDl DMSEDI DMSGLB DeSGLB DeSLGT DMSLIO DeSDBG (1 3: til CD < 3: " w ....,j 0 til '< en r+ CD a 1:-1 0 .... I.Q (1 ~ ='~ tt:1 H 0 tr ..... CD iii t::j ('0 r+ ('0 H iii .... ='~ ....0c+ =' (j) .... ~ ~ ('0 I:'"' ~ DMSSVT t:T CD ..... I c+ 0 DftSBTB DftSLIE DftSSVT DftSLIE DftSFET DftSOLD DftSGND DftSLDB DftSLOA DftSftDP DMSftOD DMSOLD DftSSLN I 3: 0 Q.. ~ ..... DMSOLD CD (1 H 0 DftSOLD en rn !:tl ('0 DftSQRY DftSINT DftSINT DMSINT DftSEDX DftSLSE DMSSET DeSIOW DMSIOW DMSlOW t-h DMSlTE DMSITE DMSITE DMSQRY DMSSET DM SSET DMSSET DMSSVN DMSSVN DMSSVN DMSSVT H CD =' (1 ('0 DftSOLD Desovs i)ftSITP DMSITS DMSLDR DftSEEX DMSCRD DMSSCR DMSITE DMSITI DMSITS DMSSEE DMSSVN DftSCRD DeSITE DMSITI DMSITS DMSSEE DMSSVN DeSEDX DeSLDR DMSLGT Des LIE DMSSCR DeSLGT DeSLIB DMSLIO DeSLIE DMSCRY tMSLOA DMSOLD DMSITP DMSlTS DMSLDR DMSOVS DMSLSB ('0 tt.I CD 0 ..,.ri" 0 ::s w . ..,. tj t1 CD 0 ri" 0 ..,.t1 CD en Label Count References TYPFLG TYPLIN TYPLIST UE UFDBUSY 000004 000040 000007 000001 000030 UND UNPACK UPBIT UPSI UPTftID UPTSWS USARCODE USAVEPTR USAVESZ USERCODE USERKEY UTILFLAG VAR VERCOL 1 VERCOL2 VERLEN VMSIZE 000017 000010 000005 000004 000002 000002 000002 000023 000002 000004 000010 000017 000027 000006 000003 000006 000037 VSTRANGE IiAIT WAITLIST iiAITLST iAITRD iAITSAVE iORKFILE iRBIT iRCOUNT iRDATA WRITE iRITEl WRTKF iTRDCNT XAREA XCOUNT XGPRO XGPRl XGPR15 XPSi 000001 000028 000002 000003 000004 000006 000005 000008 000001 000022 000028 000007 000003 000002 000001 000001 000002 000001 000002 000013 DftSEDI DftSLIO DftSITE DftSCIT DftSABN DftSITI DftSROS DftSLIO DftSACft DftSS-ET DftSSET DftSSET DftSFRE DftSITS DftSITS DftSFRE DftSFRE DftSSCR DftSROS DftSEDI DMSEDI DMSEDI DftSAMS DftSSET DMSITI DMSCIT DMSDBG DftSCRD DftSDBG DftSCIT DftSOLD DftSACC DftSGIO DftSINI DftSINI DftSINI DftSDIO DftSDBG DftSEDI DftSOVS DftSOVS DftSOVS DftSOVS DftSDEG DftSACC DftSITP DftSSBS DftSACF DftSITS DftSSEB DftSACft DftSRNft DftSSOP DftSAUD DftSTPE DftSSQS DftSBTP DftSBWR DftSAUD DftSDSK DftSSBS DMSSCR DftSSEB DftSSOP DftSSQS DftSSVT DftSSCR DftSBRD DMSSVT DftSEWR DMSVIB DftSDBG DftSDOS DftSFRE DMSINI DftSSVT DftSCiR DMSINS DMSITI DftSDEG DMSIOi DftSEiR DMSDSK DftSDIO DftSDSK DftSERS DftSFNS DftSITE DftSBDI DftSBDS DftSINS DftSLDR DftSOVS DftSSTG DftSSET DftSSET DftSSBD DftSEDX DftSEDX DftSEDX DftSBOP DMSSSK DftSCiT DMSTPE n 3 Ul t:-I I» t1' CD ~ I IT 0 I 3 DMSITI 0 s::lI ~ ..... CD n 11 0 en en !:t1 CD H'I CD 11 CD w ::s \0 CD .... 0 W tv label Count References o <: 3: " W ...,J o 00 en 1004 en rt CD B n 13 en XRSAVE XXXCiD XYCNT XYFIAG YAREA YDISK YYDDD ZONEl ZONE2 000003 000043 000008 000003 000001 000002 000003 000011 000016 DftSDIO DftSEDI DftSEDI DftSEDI DMSEDI Dl!SIBI DKSIBS Dl!SEDI DftSEDI ~ ~ tT (I) ..... I rt o I ::1: DftSEDX DftSEDX o ~ c: ..... CD n t1 o o en en ~ CD I-+J CD ~ .... o ~ t:S ~ I'tI t1 o tT ..... CD S t=' CD rt CD t1 ....EI ::I ~ ....ort t:S en ....c: ~ CD !:O t1 CD ::I o CD Module Name Entry Points DMKACO DMKACOB Dl!KACODV Dl!KACOFF Dl!KACOPU DMKACOQU DMKACOTM DMKBLD DMKBLDEC DMKBLDRL Dl!KELDRT DMKBLDVM Attributes, Function Pageable. Provides additional accounting function at logon time (for installation use). Builds an account card tuffer for a VDEVBLOK. Creates account card buffer for a VMBLOK. Punches queued up accounting cards. Queues up account card buffers for output on a real device. Creates a connect and usage time message for a user. Pageable. Allocates storage for a virtual ECBLOK and the two TRQBLOKS required for a virtual machine with the BCMOD! option, and initializes these blocks. Releases real segment, page, and swap tables to free storage. Creates and initializes segment, page, and swap tables as a function of virtual storage size, which is part of the process of building a user's virtual machine. Creates and partially initializes a VMBLOK for a virtual machine, identified by its terminal real device block. Module Name Entry Points DMKBOX DMKBOXHR DMKBSC DMKESCER DMKCCH Dt!KCCBIS DMKCCHNT DMKCCBRT DMKBOX DMKBOXBX tn CD o c+ ~. o t:I W t:! ~. t1 CD o o c+ t1 ~. CD [J1 Pageable. Provides the VM/370 or user logo (header) for printed output. Loge for initial screen display and header separator for printer spoel files. DMKCCW -----------, Attributes, Function Installation header reference. Resident. Bisync line error processing. Examines the error conditien resulting from a unit check or channel error that occurred while executing a CP generated bisync line channel program. If the error is uncorrectable, DMKMSi is called to notify the operator. After return from DMKMSi, the original channel program is terminated and the fatal flag is set in the IOELOK. If the error is correctable, the channel program is re-executed up to a maximum of seven retries. Resident. Operates with the I/O interrupt handler to schedule a device dependent error recovery procedure when a channel data check, control check, or interface control check is detected. Entry from DMKIOS when a channel check occurs when storing a CSi after a SIO. Entry from DMKIOINT when a channel check occurs on an I/O interrupt. Entry from DMKIOE to allow error messages to be printed. Resident. Invokes an internal subroutine (CNTRLSUB) to obtain control bytes (seek • _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _- - - J ___________________ _ _ _ _data) _____ DMKCCiSB In II'tI 13 10 It::I 10 ltot I~ I~ hz: I~ Ittl h< II'tI 10 ,. ,~ ,~ It::I ,~ I ttl I~ In ,~ 10 I ttl h< r--- r I Module I Name DMKCCW (cant. ) Entry Points DMKCCiTC DMKCCiTR DMKCDB DflKCDEDC DflKCDBDI DMKCDBDM DflKCDBDU DMKCDS DMKCDSCP DMKCDSTO DMKCFC DflKCFCMD DMKCFCSL DMKCFCBE Attributes, Function Searches previous (external) RCi chains and resolves the address of the RCi task if found. Takes the list of virtual CCis associated with the user's SIO and translates it into a real CCi list. Pageable. Processes DISPLAY, DCP, DUMP, and DMCP commands. Executes the DISPLAY co.mand to display real storage locations. Displays virtual storage locations, storage keys, general registers, floating-point registers, PSi, CAi, and CSW at the terminal. Dumps the contents of the specified real storage locations en the virtual printer spool file. Dumps the contents of the specified virtual storage locations, registers, PSi, and storage keys on the virtual printer spool file. ---------------------------------------------,I Module lame Entry Points DMKCFC (cant. ) DflKCFCQU DflKCFCRQ DMKCFD DftKCFDAD DftKCFDLO DMKCFG DflKCFGSV DMKCFft Pageable. Processes STORE and STCP co.mands. stores data into real storage (STCP command) • stores data into virtual storage eSTeRE command}. DMKCFftAT Pageable. Gets the address of the routine that processes the CP ccnscle function that was requested. Processes a CP console function. Processes the SLEEP command. Processes the BEGIN command. DflKCFflEN DftKCFftBK Attributes, Function Processes the QUERY command. Presents an attention interruption to the virtual machine to simulate a real request key interruption. Pageable. Processes LOCATE and ADSTOP co.mands. stops virtual machine at specified address (ADSTOP command) • Displays address of real device blocks, or VMBLOK and/or virtual device blocks (LOCATE command). Pageable. Saves a system's virtual storage space, including registers and PSi as they currently exist, in Fage form, on a DASD device. The name of the system and the DASD location at which it is to be saved is defined in tftKSVS. Resident. Processes the SLEEP, BEGIN, QUERY, and REQUEST commands. Also processes DIAGNOSE code 8. Its scans the co.mand line and goes to the required module. Posts an attention interrupt pending for the virtual machine. Puts the terminal in console function (CP) mode (ATTN key pressed twice). Scans the command line and goes to the co.mand handling routine. Entered when DIAGNOSE code 8 is executed. Scans the command line and goes to the co.mand handling routine. I ..-- Module Nallle Entry Points DMKCFP Df!KCFPII Dl!KCFPIP Df!KCFPRD Dl!KCFPRR DMKCFPRI DMKCFS Dl!KCFSET Df!KCFT DftKCFTRft ..-- Attributes, Function Pageable. Simulates the operator's console for the virtual machine. Entry from DftKLOG to process IPL command (logon). Entry from DMKCFft to process IPL command. Handles virtual device reset for other CP routines. Handles system resets for ether CP routines. Resets the virtual machine. Releases an IOBLOK when called by DftKILD. Pageable. Processes the CP SET command. Entry point for SET command processor. I Module I Bame Entry Points DMKCKS DftKCKSPL DMKCKSIN DMKCKSiM DMKCNS Pageable. Processes user's terminal eptions. Entry point for the TERftINAL command processor. DMKCBSED DMKCBSEN DMKCKP DftKCKPT til CD n ....r+ o I' .w ....t::It1 CD n r+ o .... CD t1 en Pageable. Saves pertinent data when a check point occurs. Retrieves accounting data from the VftBLOK, VD!VELOK, and unpunched accounting cards. It retrieves accounting information fer dedicated devices, saves the system log messages, and saves all control blocks for spool files. The data is written on the SYSiARft cylinder of the IPL pack. Df!KCKP is loaded and executed by DMKDftP or initial program load. DMKCBSIC Df!KCNSIB DftKCPB Df!KCPBEX Attributes, Function Pageable. Performs checkpoint processing. Performs a checkpoint on any alterations in the spool file set up to allow the recovery routine to get them if warm start fails. Initializes the check point cylinder after a successful warm start from the standard recovery procedure or after a cold start. Recovers previously check pointed spool file information. This information includes all open print or punch files in existence at the tillle the system went down or was shutdown. All open spool files are put in user hold status. Resident. Real console terminal manager. Edits the input line for the following characters: escape, line end, line delete, and character delete. Enables or disables a low-speed terllinal line. Entered from DMKQCB to initialize read and write CCWs for the COB TASK built by DMKQCB. Interruption return point and handler for terminal I/C. Pageable. Simulates the operator's console for the virtual lIachine. Processes the EXTERBAL co •• and to present an external interruption to the virtual machine. r------------- .---------------------------------------------, Module Name I tIl It'!:! It'"i Il:t! II:IiI lioz'J It'!:! 11:0 It'!:! 12: 1(') It'!:! (') r,j 3: 0 0.0 c: n ..... ::I 0 ....0rt W CD I rt I t'"i ~ tr .... ~ H CD CD ..... (') 0 H 0 en en rt .... H (t) en 0 l:t! (t) t-h (t) H W ~ (t) ::I 0 (t) w ~ n Module External References (Labels and Mod ules) DMKCCi ACORETEL CLASURI DftKFRET F16 IOBFLAG LOCK RCiINVL RDEVSADN R6 SAVEiRK2 TYP2311 VDEVDED VDEVTYPE VMSIZE APTHLK CLASURO DMKISl'lTR F2 IOBLOK PCIF RCiIO RO R7 SAVEiRK9 TYP2314 VDEVDIAL VDEVUC XPAGNUft BALRSAV! CORFLAG DMKPTRAN F240 IOBftI SC PSA RCiISAM Rl R8 SILl TYP2955 VDEVERAB VDEV231B XRIGHT16 BALR2 CORSHARE DftKPTRFR F3 IOBMISC2 RCiADDR RCWPRT Rl0 R9 SKIP TYP3210 VD1!VFLAG VDEV 231T XRIGHT24 BALR3 CORSiPNT DMKFTBUL F4 IOBRELCU RCWCCRT RCiRCRT R 11 SAVEAREA SiP FLAG TYP3217 VDEVIOER VMBLOK X2048BND BRING COR TABLE DMKSYSRM F4095 IOBSIZE RCiCCi HCiREL R12 SAVE REGS TEMPR10 TYP3330 VDEVPOSN VMCLASSF ZEROES CC CPSHRLK DMKUHTRS F4096 IOBSTAT RCiCHT RCiSHR R13 SAVERl TEl'1PR14 TYP3340 VDEVRDO VftCLEVEL CD CPSTAT2 DftKVftAPS F1 IOBiR1P RCiCOMRD RCiTASK R14 SAVER 10 TEl'1PR15 TYP3350 VDEVREAL VftDVSTRT CLASDASD Cl PFS F8 IOERBLOK RCiCTL RCiVCAi R15 SAVER12 TEMPR2 TYP3410 VDEVRELR VMISAM CLASGHAF DEFER FTREXTSN F9 IOERDATA RCiFLAG RCWVCRT R2 SAVER2 TEMPR3 TYP3420 VDEVRSRL VMOSTAT CLASSPEC DMKD1SSD F1 IDA IOEREXT RCiGEI RCi2311 R3 SAVER8 TYPURSUP TYP3705 VDEVSAS VMPSTAT CL1STAPE DMKDIASft FlO IOBCAi IOERLER RCWH!AD RDEVBLOK R4 SAVER9 TYP1442R VDIVBLOK VDEVSTAT VftSEG CLASTERM DMKFREE F15 IOBCYL IOERSIZE RCiHftR RDEVFTR R5 SAVEiRK 1 TYP2305 VDEVBRD VDEVTYPC VMSHR BRING DMKFRET F2 R14 SAVEiRK4 VMNEiCRO BUFFER DMKPTRAN F24 R15 SAVEiRK5 VMOSTAT BUFNXT DMKQCRiT F3 R2 SAVEiRK6 Vl'1PSTAT Cl DMKSCNFD F4 R3 SAVEiRK8 VMPSi DEFER DMKSYSRM F4096 R4 VMBLeK VMRSTAT DMKCVTBD DMKVATAE F6 R5 VMECEXT VMSEG DMKCVTBB DMKVSPR'I RORET R6 VMESTAT VMSHR DMKCVTDB ECBLOK PSA R1 VftEXTCM VftSI ZE Dl'1KCVTFP EXTCRO RO R8 VMFPRS VMVCRO DMKCVTHB FFS Rl R9 VMGPRS VMV310R DftKDMPTR Fl Rl0 SAVEAREA VIHNVPAG XPAGBUM DMKERMSG F15 R11 SAVEiRK 1 VMINVSEG XRIGHT 16 DMKFREE F16 R13 SAVEiRK2 VMLOGOFF ZEROES Il'1KCDS ACORETBL CPEXR15 DMKPTRAN EXTCCTRQ PAGCORE R5 SiPTRANS YftINVSEG ZEROES BLANKS CPEXR5 DftKPTRiQ EXTCPTftR PAGIBVAL R6 TEMPR14 YMBEiCRO BRING CPEXR1 DMKQCBiT EXTCRO PSA R7 TEMPR15 VftPSTAT CORFLAG CPEXSIZE DftKSCHFD EXTftODE RUNUSER R8 TRABftODE VftPSi CORPGPNT DEFER DMKSYSRM F1 RO SAVEAREA TRQELOK VMSI ZE CORSHARE DMKCVTBH DftKTRCIT F15 Rl SAVER2 TRQBVAL VMTIMER CORSiPRT DMKCVTDB DftKTRCPB F16 Rll SAVEiRK 1 VftBLOK VftTRBRIB CORTABLE DftKCVTHB DftKVATAB F2 R13 SAVEiRK2 VftECEXT VftTRCTL CPEXADD Dl'1KERftSG DMKVATBC F4 R14 SAVEiRK3 VMESTAT VftUSER CPEXBLOK Dl'1KFREE DMKVATftD F5 R15 SAVEiRK4 VMEXTCft VftVCRO CPEXFPBT DftKPAGIO DMKVftACF F6 R2 SAVEWRK5 VMFPRS VftV310R CPEXRO DMKPSACC. DftKVftAPS F8 R3 SAVEiRK8 YftGPRS iAIT CPEXR14 DMKPSASC ECBLOK NORET R4 SiPFLAG VftIBVPAG XPAGHUM IftKCFC ATTN Df!KCFMWU Df!KCPVLK DMKCSOST DMKDEFIN DMKQCNiT FFS RO SAVERl VMCLASSB VMRSTAT BLANKS DMKCFSET DftKCPSRY DftKCSOVL Df!KDIACP DftKSCHRT F1 Rl SAVER2 VMCLASse VMSLEEP DftKCDBDC DMKCFTRf! Df!KCPSSH DftKCSPCL Df!KDIAL DftKSCHST F2 Rll SAVEiRK2 VMCLASSD Vf!TERM DftKCDBDI Df!KCPBEX DftKCPVUL DMKCSPFR DftKERftSG DftKSCHFD F3 R13 SAVEiRK4 VMCLASSE VMTRBRIB DMKCDBDft Df!KCPBNR DMKCQGEN D!!IKCSPHL Df!KFREE DMKTHIEN F4 R15 SYSTEM Vf!CLASSF VMTRCTL DMKCDBDU Df!! END VMCLASSE VMMLEVEL VMVIRCF CLASGRAF DMKSCBRT RO R8 VCHBLOK VDEVSTAT VMCLASSF CLASTERM DMKSCNFD Rl R9 VCBCUINT VMELOK VMCLASSG VMOSTAT WAIT CPEIADD DMKSTKCP Rll SAVEAREA VCHCUTBL VMCF VMCLASSB VMPEND CPEIBLOK DMKVIOMK R12 SAVER 11 VCUADD VMCFREAD VMCPiAIT VMPRIDSP CPEIREGS EDIT R13 SAVER2 VCUBLOK V-MCFRUN VMCUSTRT VMPSW AVMREAL DMKBLDRT DMKQCNSY ECBLOK IOBIOER IOERSIZE RO R7 VCHELOK VCUACTV VDEVBLOK VDEVFLAG VMBLeK VMIOPND VMPXINT XINTBLOK CBBWAIT CBIELOK CBICNCT CBIFLAG CLASGRAF CLASSPEC CLASTERM CLASURI CLASURO CUE DELPAGES DMKBLDRL DMKDIADR DMKDSPCB DMKFREE DMKFRET DMKIOSHA DMKIOSQR DMKLOCKD DMKLOCKQ DMKFERT DMKPGSPO DMKPGSPP DMKPTRPW DMKSCHRT DMKSCNVU DMKSTKCP DMKSTKIO DMKTRCPE DMKUNTFR DMKVATBC DMKVCARD DMKVDREL DMKVIOMK DMKVSPCO DMKVSPCR EXTCCTRQ EITCPTMR EITCRO EITCR14 EITCR 15 EITCR2 EITCR4 FFS IOBCAi IOBFLAG 10BBIO 10EHVC IOBIRA IOBLINK 10BLOK IOBMISC IOBlUSC2 lOB RES 10BSIZE 10BSPEC IOBTIO IOBUSER 10ERBLOK IOEREXT KEEPSEGS NEWPAGES NEWSEGS OLDVMSEG PGBLOK PGBSIZE PGPNT PSA RDEVAIOB RDEVATT RDFVELOK RDEVIOER R14 Rl R10 Rll R12 R13 R15 R2 R3 R4 R5 R6 R9 SAVEAREA SAVEWRK6 SAVEiRK8 TRQBFPNT TRQBLOK TBQBVAL TYPCTCA TYP3210 TYP3215 VCHADD R8 VCBBUSY VCBCEDEV VCHCEPND VCHCUINT VCHCUTBL VCHDED VCHSTAT VCONCTL VCONRBSZ VCONRBUF VCONWESZ VCONWBUF VCUAED VCUHLOK VCUBUSY VCUCEPND VCUCHBSY VCUCUEPN VCUDVINT VCUDVTBL VCUINTS VCUSTAT VDEVADD VDEVAUCR VDEVBUSY VDEVCCW 1 VDEVCFLG VDEVCBAN VDEVCHES VDEVCON VDEVCSW VDEVCUE VDEVDED VDEVDIAL VDRVBNAB VDEVFEED VDEVINTS VDEVIOE VDEVIOER VDEVNRDY VDEVPEND VDEVREAL VDEVSFLG VDEVSPL VDEVSTAT VDEVTYPC VDEVTYPE VDEVUC VMCHSTRT VMCHTEL VMCUSTRT VMDSTAT VMDVSTRT VMECEIT VMESTAT VflEXWAIT V'HDLE VMINVPAG VMIOACTV VM IOINT V!HOWAIT VMKILL VMLOGOFF VMMICSVC VMNOTRAN VMOSTAT VMPAGEX VMPEND VMPGPND VMPGPNT VMPStAT V~PSW VMRSTAT VMSEG VM no VMTRBRIN VMTRCTL VMUSER VMSIZE VMSTOR V~VCRO VMVTERM VMV370R WAIT XINTEXT XINTSI ZE XINTSORT XRIGBT24 ZEROES DMKCFP til CD n ri- ~. O =' w . '=' ~. t1 CD n t+ 0 t1 ~. CD Ul W ~ w V~SYSOP V~MSTMP VMVTERM n I"tl 3: 0 ~ ~ I-' CD I ri- 0 I ~ I» tT CD I-' n t1 0 Ul Ul !::tI CD HI CD t1 CD =' n CD w .c:: .c:: Label External Beferences (Labels and Mod ules) DPIKCFS lCOBETEL CPMICON DKKFBEE DPIKSCHBT EDIT IBMBIT2 8ICSIZE BDEVSTAT R3 SAVEWBR7 VMBLOK VMISAM VMPISVC VMSTMPI ASYSLC CPSTAT2 DMK1BET DMKSCH80 EITCCTBQ IB8BLOK ftICVPSi BDEVSYS R4 SIVEiBK8 VMCFBUN VMftACCON VPI8TEIT VMSTOR AVMBEAL DMKBLDEC DlilKIOEIB DPIKSCIAU EITCPTBQ IBPIBYT 1 MICWOBK BDEVTYPC R5 SYSLOCS VMCLISSA VMMADDB VPI8360 VMTLEVEL BLAIKS DBKCFPBB DlIIKMCHAR DPIKSCIFD EITSIZE IBMBYT2 1II0DFLAGl BD!VTYPE R6 TEMPSAVE V8CLASSB VMMCODE VPINOTBAN VMTON BUFCNT DPIKCVTBH DPIKPICH!S DPIKSCNBD F1 IBlH'LG MOD1BETY BDEVUSEB B7 TBQEIBA VPICLASSC VMMCB6 VPIOSTAT V8TRQBLK BUFFEB DPIKCVTDB DMKPTBBC DPIKSCNBU BUFNIT DPIKCVTDT DlIIKPTBBL DlilKSYSDT 12 F3 IBPILftT IBPIOB NOAUTO NOBET BO Bl B8 B9 TBQBLOK TRQBSIZE VPICLASSD VMCLASSE VPIMFE VMIUCBO VMPAGEI VMPFUNC VMUPRIOR VMUSER CLASTlPE DKKCVTHB DKKPTRRU DKKSYSDi F4 IBPIBLADD PSA Rl0 SAVEABEA TBQBUSER VPICLASSF VMMICSVC VMPSTAT VMVCRO CLASUBO DKKDMPAU DMKQCNBD DPIKSYSLG F5 IBKSIZE BDEVBLOK R 11 SAVEWRKl TYPPBT VPICLASSG VMIHPISG nlPSi VMV370R COB FLAG DMKDMPDV DKKQCNWT DPIKSYSLi F7 KCHABEA BDEVDED R13 SAVEiBK2 UCASE VPICLEVEL VMMLEVEL VMQLEVEL VMWNGON COBBSV DKKDPIPSi DMKSCHAP DlilKSYSBV F8 MICBLOK BDEVDISA R14 SAVEiBK3 VMADSTOP VKECEIT VMMLINED VMBON I40FPS COBTABLE DKKDSPNP DrIKSCHAU DMKSYSTK IBPIAND KICCBlG BDEVFLAG R15 SAVEWBK4 VKAEI VMESTAT VKPILVL2 VMBPAGl ZEROES CPlUCAVL DMKEBKSG DKKSCHPG ECBLOK IBMBIT 1 KICBSEG BDEVIRM R2 SAVEWRK5 VPIAEIP VM HIPRI VMPISGON VMSEG ASYSLC Pl RDEVAPLP Rl0 SAVEiBKl VMTLDEL CLASGBAF F2 BDEVATOF Bl1 SYSLOCS VMTLEBD CLASSPEC P255 BDEVBLOK R13 TYPBSC VPITBMID CLASTEBM F4095 RDEV1LAG R14 TYPTTY VMVTERPI DMKCVTBH NICAPL BDEVLLEN R15 TYP3277 I40FFS DKKCVTDB NICATOP BDEVNICL R2 VMBLOK ZEBOES DKKERKSG NICBLOK RDEVPSUP R3 VKDVSTRT DMKSCNFD NICFLAG RDEVTFLG R4 VMKCPENV DftKSCNVD NICLLEN RDEVTKCD RS VMKLEVEL DKKSYSCD NICPSUP RDEVTYPC R6 VMPISTKP DKKSYSES NICSIZE RDEVTYPE R7 VMTCDEL DMKSYSLD NICTKCD RO R8 VKTERM DMRSYSLE PSA Rl SAVEAREA VMTESCP ACNTBLOK ARSPPB CLASUBI DMKBSPCV DPIRSYSCi NICDISB PSA BDEVAIOB BDEVLICP RECftlI B15 SFBFIBST SHQBSIZE TYP3330 VDEVDED VPICUSTBT ACBTCCi ASYSLC CLlSUBO D8KRSPDL DMKSYSBM NICENlB BCHAtD BDEVAUTO BDEVPIAI RECPNT B2 SFBFLAG SILl TYP3340 VDEVEITB VPIDIST ACNTDlTl ASYSVM CPCBEGO DMKBSPHQ DPIKSYSTP NICFLlG BCHBLOK BDEVBLOK BDEVMDL RECSIZE B3 SPBFLAG2 SKIP TYP33S0 VDEVFLAG VPIDVSTBT lCNTNEIT ATTN CPID DMKBSPID DftKSYSiK NICLGBP BCHCUTBL BDEVCLAS BDlVNCP RECUSED R4 SPBLAST STABTIME TYP370S VDEVSFLG VftLOGON ALARM BUSY CSi DMKBSPPB DKKTMRPT NICLINE BCUAtD BDEVCUA BtEVNICL RSPLCTL B5 SPBLOK SYSLOCS UC VDEVSPL VMPNT ABIOCC CAW CUE DMKRSPPU FTB3SPIB IICSIZE BCUBLOK RDEVDED BDEVBECS RSPSPBLK B6 SFBORIG TYPBSC USEBCABD VDEVSTAT VPIBSTAT ABIOCE CC CO DMKBSPBt IITPB NICSTAT BCUCHA BDEVDISA BDEVSEP RO R7 SFBPNT TYPPRT VCHBLOK VDEVTDSK VPIUSEB ABIOCT CE C2 DMKSAV IITTIO NICTEBPI BCUDVTBL BDEVDISB RDEVSPL Bl R8 SPBPUBGE TYPPUN VCHCUTBL VDEVTYPC VSPLCTL ABIOCU CLASDlSD C3 DKKSAVBS IONPSW NICTYPE BCUPBIPIE RDEVDBAN BDEVSTAT Bl0 B9 SFBBECER TYP230S VCUBLOK VDEVTYPE VSPSFBLK ABIODV CLASGBAF DE DKKSYSCK IOOPSW OWNDLIST BCUSUB BDEVENAB BDEVTYPC B 11 SFBCLAS SPBBECS TYP2314 VCUDVTBL VDEVIFEB VSPIBLOK ARIOPR CLASSPEC DEVCABD DMKSYSDT IPLPSi OiNDBDEV RCUTYPE BDEVPLAG BDEVTYPE B12 SFBCOPY SFBSIZE TYP3210 VDEVBLOK VMBLOK VSPIIUSB ARIOPU CLASTAPE DMKOPBWT DMKSYSLG NICBLOK PBNPSi BDEVACNT BDEVFTB RECBLOR R13 SFBDATE SFBSTABT TYP3277 VDEVCLAS VMCHSTBT ABIOBD CLASTERK DMKBSPAC DPIKSYSOC NICDISA PBOPSW RDEVADD RDEVLCEP RECCYL R14 SFBDIST SF BUSER TYP3284 VDEVCOPY VKCBTBL :.: :3 CCC IFCC RTCODES SAVEWRK9 CCBCMDV IGBLAME RO TERMSYS CCHUSV CCHDAV CCEDI CCHLOG80 CCHRCV CCHREC IGTERMSQ IGVALIDB IBTERCCB IOELPNTR IOERBLOI'( PSA R15 R2 R13 B14 Rl R12 TIOCCH ALARM DMKFRET Rll SAVEAREA BLANKS DMKPTRAN R12 SAVBRO BRING DMKQCNWT R13 SAVBR1 BUFCNT DMKSYSRM R14 SA VBR2 BUFFER ERRMSG R1S SAVER3 BUFINLTH F2 R2 SYSTEM BUFSIZE F255 R3 VMBLOK DEFER DFRE'!' DMKCVTBD DMKEMAOO DMKBMBOO DMKFREE Rl R10 RO BaRET OPERATOR PSA R8 R4 R5 R6 R7 R9 XRIGBT 16 ATTN RO R7 BUSY Rl R8 CAi R10 R9 CC Rll SILl CD R12 SKIP CE B13 Sl! CSW R14 UC CUE R15 UE ACORBTBL FREERO R13 TRACCURR AFREE FREERl R14 TRACEND ASYSVM FREER14 R1S TRACFLGl AVl!RBAL FREER1S R2 TRACSTRT BALRSAVE FREESAVE R3 TRAC67 CORPGPNT Fl R4 IPAGNUl! DMKGIO BRING DMKUNTRN IOBMISC2 R12 VDEVBLOK VMACTDEV VMRSTA'I CLASDASD IL IOBSIZE R13 VDEVBUSY VMBLeK CLASTAPE IOBCAi IOESTAT R15 VDEVCBAN VMCOME CSi IOBCC3 IOERBLOK R2 VDEVCSW VMDVSTRT DEFER IOBCSi IOBRCSW R4 VDEVDBD VMESTAT DMKGRF ALARl! CDC CONPARl! CPEXSIZE DMKCVTBB DMKRr-OCN Fl IOBEBP IOBSTAT LOGBCLD RI;>EVBLOK RDEVIOER Rl R8 TYP3066 VMCF VMQSTAT ARIODV CE CONPJI1T CPID DMKDSPCB DMKSCHRT F255 IOBFATAL IOBUNSL NOBET RDEVCON RDBVLOG R10 R9 TYP3277 VMCFWAIT VMRSTAT ASYSVl! CBC CONRESP DE DMKFREE DMKSCHST F256 IOBFLAG lOB USER NOTIME RDEVCORD RDBVMORE R11 SAVEAREA TYP3284 VMDVSTRT VMSYSOP ATTN CLASGRAF CONRETN DEFER DMKFRET DMKSCNRD F3 IOBIOBR IOERBLOK PRGC RDEVCPNA RDEVRBAD R12 SAVERO UC VMGENIO VMTLEND BLANKS CONACTV CONRSV3 Dl!KBLDVPI DMKIOERR DMKSCNRU F4 IOBIRA IOERCSi PRIORITY RDEVCTL RtEVRUN R13 SAVER2 UCASE VMLOGOFF VMTTIME DMKEIG < 3: ........ w .. -..J 0 tMKERM til '< Ul c+ CD Dl!KFMT EI ~ COMPFES RTCODEO R3 COMPSEL RTCCDEl R4 COMPSYS BTCODB2 R9 IOOPSW R4 CSW FFS RTCODE3 RTCODE4 SAVEAREA SAVEWRKl PROPSW R5 PSA R6 DB R2 ICNPSW R3 Dl!KFRE COR TABLE C2 F4096 PSA RS R6 XTNDLOCK Dl!KCPE RO R7 DPlKDSPNP Dl!KPTRFR DMKPTRFT DMKSYSRM R 11 Rl0 R12 Rl R8 SAVESIZE TEMPSAVE B9 PI ~ P. td Ii DMKCCWTR IOBFATAL IOERDATA RS VDEVFLAG VMBXTCM DMKDSPCH IOBFLAG IOEREXT R6 VDBVIOB VMEXWAIT DMKFREE IOBHVC IOERSIZE R7 VDEVIOER VMGPRS DMKFRET IOBIOER PSA R8 VDEVPEND VMIOCNT DMKIOSQV IOBIRA RO R9 VDBVPOST VMIOiAIT DMKPTRAN IOBLIIK Rl SAVEAEBA VDEVSTAT VMLOPRI DMKSCNVU IOBLOK R10 SAVER2 VDEVTYPC VMPSW DMKUNTFR IOBMISC Rll UE VDEVUC VMQLEVEL 0 EI I::j CD BRING CONADDR CONSTAT DPIKBOXBX DMKIOEST DMKSTKCP F5 IOBLINK IOEBDAT! PRTC RDEVCUA RDEVSTAT R14 SILl UE VMLOGON VMVTERM BUFCNT CONCCil CONSYNC DPIKCFMAT DMKIOSQR DMKSYSNM F8 IOBLOK IOEREIT PSA RDEVDED RDEVTFLG R15 SYSTEM VCONCTL VMMCPENV XINTBLOK BUFFER CONCCi2 CONTASK DMKCFMBK DMKMSiR DMKTBLGR IFCC IOBMISC IOERFLG3 RCUBLOK RDEVDISA RDEVTMCD R2 TEMPSAVE VCONRBSZ VMMLEVEL XINTCODE BUFINLTH CCNCCi4 CONTSIZE DMKCFMEN DMKPTRAN DMKTBLUP INHIBIT IOBRADD IOERNUM RCUDVTBL RDEVDISB RDEVTRQ R3 TRQBIRA VCONRBUF VMMLINED XINTNEXT BUFSIZE CONCNT CONTSKSZ DMKCNSED DMKQCNCL Dl!KTBMZI INTREQ IOBRCNT IOEROVFL RDEVACTV RDEVENAB RDEVTYPC R4 TRQBLOK VCORRCNT VMOSTAT XINTSIZE CC CONDATA CPEXADD DMKCPIEM DMKQCNET Dl!KTEMZO IOBCAi lOBS ENS IOERREAD RDBVAIOE RDBVFLAG RDEVTYPE R5 TRQBSIZE VDEVBLOK VMPA2APL XINTSORT CCC CONESCP CPEXBLOK DMKCVTBD DMKQCNTO EDIT IOBCOPY IOBSIZE IOERSIZE RDEVAIRA RD!VHIO RDEVUSER R6 TRQBUSER VDIVCON VI1PFUNC XTNDLOCK CD CONOUTPT CPEIRO DMKCVTDB DIHiQCNiT Fa IOBCSW IOBSPEC LOGDROP RDEVAPLP RDEVHOLD RO R7 TRQBVAL VMBLOK VMPXINT ZEROES c+ Ii .... EI ~ PI .... c+ 0 ~ G:l ....p.'=' (!) c+ 0 I t-' PI C' (!) I--' () Ii 0 ~ CD HI (!) Ii CD ~ C' I--' CD (!) '=' I--' CD I Ul Ul 0 ....n \Q 0 p. n CD en CD 0 r+ 1-'0 t:J W c;, 1-'11 CD 0 r+ 0 11 1-'(1) en W V1 w f'!odule External References (Labels and Modules) I:MKHVC BLANKS DMKCFGCL DMKPTRAN rOBCAW RCWADDR R12 TEMFR8 VMEXTCM VMPSW BRING DMKCFMBK DMKSCNVU IOBCSW RCWCCW R13 TYPBSC VMEXWAIT VMQSTAT CCC DMKCFMEN DMKTMRPT rOBLOK RCWCTL R14 TYP3277 YMGPRS VMRSTAT CDC DMKCVTDT DMKUNTFR rOBRADD RCWPNT R15 UC VMINST VMSLEEP CE DMKDGDDK DMKVIOEX IOBSIZE RCWTASK R2 UE VlUCWAIT VMSTOR CHC DMKDSPCH Fl NICBLOK RDEVBLOK B3 VDEVBLOK VMMCODE VMTERM CLASGRAF DMKFREE F16 NICGRAF RDEVNICL R4 VDEVIOB VMMLEVEL VMTRl'IID CLASTERM DMKFRET F256 NICSIZE RDEVTYPC RS VMBLOK VMMTEXT VMTTIME CFUID DMKGIOEX F4 NICTYPE RDEVTYPE R6 VMCF VMNOTRAN VMVIRCF DE DMKHVDAL F4095 PCI RO R7 VMCFWAIT Vl'IOSTAT VMWSCHG DEFER DMKPGSSS F60 PRGC Iil R8 VMCOMND VMPA2APL XPAGNUM DMKCCWTC DMKPRGSM IFCC PRTC Rl0 R9 VMDVSTRT VMPRIDSP DMKCCWTR DMKPSASP IL PSA R11 TEMPR6 VMESTAT VMPSTAT DMKHVD ACCTACNO CLASSPEC DMKDRDSY DMKUDRDS IPUADDIi RDEVTYPC R6 TYP3340 VDEVSTAT VMESTAT XRIGHT24 ACCTBLOK CLASTERM DMKFREE DMKUDRFU NICBLOK RDEVTYPE R7 TYP3350 VDEVTYPC VMEXTCM X2048BND ACCTDIST CLASURI DMKFRET DMKUDRRD BICGRAF RO R8 UDBFBLOK VDEVTYPE VMGPRS ACCTLENG CLASURO DMKIOEFM DMKUDRRV BICLLEN Rl R9 UDBFSIZE VMACCOUN VMINST ACCTUSER CPUMCELL DMKPSASP FFS NICSIZE Rl0 SAVEAREA UDBFVADD VMACCUNT VMPA2APL ACNTBLOK CPUVERSN DMKPTRAN FTR35ME NICTYPE Rll SAVERO UDIRBLOK VMELOK VMPSTAT ACNTCODE DEFER DMKRPAGT F2S6 PSA R13 SYSIPLDV UDIRDISP VMCLASSA VMPSW ACNTDATA DMKACOQU DMKSCNRU F3 RDEVBLOK R14 TYPBSC UDIRUSER YMCLASSB VMQSTAT ACNTNUM DMKCPEID DMKSCNVD F4 RDEVCODE R15 TYP230S UMACACCT VMCLASSC VMTERM ACNTSIZE DMKCPVAA Dl'IKSCNVU F409S RDEVFTR R2 TYP2319 UMACBLOK VMCLASSE VMTRMID ACNTUSER DMKCVTDB DMKSNCP F4096 RDEVLLEN R3 TYP3210 VDEVBLOK VMCLASSF VMUSER ERING DMKDRDER I:MKSYSER F60 RDEYMDL R4 TYP3277 VDEVDED VMCLEVEL VMVTERM CLASGRAF Df'!KDRDMP DMKSYSRM F8 RDEVNICL RS TYP3330 VDEVREAL VMDVSTRT XPAGNUM DMKIOC CLASDASD CLASTERM OERDEVSB OBRDEVTN OERRECN OBRSHOBR OBRSWSN RDEVCUA RDEVMDL RDEVSADN RDEVTMCD RDEVTYPC RDEVTYPE RO R9 SAVEAREA TYP2305 TYP2311 TYP3330 ZEROES PSA R12 RCUBLOK R13 RCUTYPE R4 RCU2701 R5 RCU2?02 R6 RDEVBLOK B8 DMKIOE CCC CPEXBEGS DMKICFST ERRIOER F7 IOERELOK IRMBLOK OBRCSiN OBRSWSN RDEVMDI R2 SDRCTRS TYP3330 XOBRT3 COBCCW3 DMKFREE ERRBLOK ERRVOLID IOBIOER IOERPNT IRMOR OBRLSKN PSA Rl0 R9 TNSREC VMBLOK CCNDATA DMKFRET ERRCCNT FTREXTSN IOBLOK IOERSIZE IRMRLADD OBRPGMN RDEVBLOK R 11 SAVEAREA TNSSNSl VMCLASSF CONDCNT DMKIOFCl ERRCCW Fl IOBRADD IOERVSER IRMSIZE OBRRECN RDEVCTRS R12 SAVEREGS TNSSWS3 VMCLEVEL CPEXADD DMKIOFIN ERRCORR FlO IOBSTAT IRMAND NORET OERSDRCT RDEVFTR R13 SAVERl TNSVOLID VMUSER CPEXBLOK DMKIOFM 1 ERRHEADR F2S5 IOBUSER IRMBITl OBRCORL OBRSENSN RDEVIOER R14 SDRBLOK TYP2305 XOERFLAG CPEXFPNT DMKIOFOB ERRIOB F'4 IOERADR IRMBIT2 OERCPIDN OBRSNSCT RDEVIBM R15 SDRBSIZE TYP3211 XOBRT 1 CDC CPEXSIZE DMKIOFVR ERR KEY F8 IOERCEMD IRMBYTl OBRCUAIN OBRTAPSN RDEVSER R3 SDRFLAGS TYP3340 XOBR010 CLASDASI: CPUID DMKIOGFl ERRl'IIOB IFCC IOERCSW IRMBYT2 OBRCU APR OBRURSNS RDEVSTAT R4 SDRLNGTB TYP33S0 XOBR1S0 CLASGRAF DMKCCHRT DMKIOGF2 ERRMIOER IOBCP IOERDATA IRMFLG OBRDDCNT OBRVOLN RDEVTYPC R5 SDRSERT TYP3410 XOBR180 CLASSPEC DMKCFMBK DMKQCNWT ERRPARM IOBFATAL IOEREXT IRMLMT OBRFCCWN OBR3211S RDEVTYPE R6 TNSCPIDN TYP3420 XOBR512 CLASTAPE DMKCFPRR DMKSTKCP ERRSDR IOBFLAG IOERFLG2 IRMLMTCT OBRHAN OBR33SNS RO Ii? TNSDEVAD TYP3S0S ZEROES CLASTERM DMKDSPCE DMKSYSTZ ERRSIZE IOBHVC IOERLEN IRMMAXCT OBRKEYN OER3420S Rl R8 TNSKEYN UC n t'Ij 3 0 ~ c= ~ CD I r+ 0 I t"'I I» tr' CD ~ n 11 0 en en ~ CD I-h CD 11 CD ::s 0 (1) w (J1 ~odule External References (Labels and DMKIOF BRING CDC CPEXSIZE CPOID ~od ules) n ItI .c: 3: c:; ::I "'w ...,J 0 til '< til rt' (1) a ~ 0 I.Q ..... t~KIOG I:' j;lI I'd ti 0 b" I-' (1) a tj (1) rT (t) ti a ..... I:' ~ rt' ..... 0 I:' Cl c ..... j;lI (1) CLASTAPE CLASTERM CLASURI DMKFREE DMKFRET DMKIOCVT D~KIOERP DMKIOERQ DMKIOESQ ERRCCi ERRCONT ERRCORR F15 F255 F4 IOERPNT IOERREAD IOERVSER OBRIORTY OBRKEYN OBRLSKN OBR33SNS PSA RCUBLOK RDEVTYPC RDEVTYPE RECCCPD R13 R14 R15 SDRCTR S SDRCUA SDRFLAGS TNSCPIDN TNSDEVAD TNSKEYN TYP2501 TYP2520R TYP2540R TYP3505 V~BLOK VMUSER CLASURO DMKICECQ DMKIOEVQ ERRIOB F7 LCCK OBRPGMN RCUTYPE BECFLAGl R2 SDRFLCT TNSREC TYP2700 XOBRFLAG CPEXBLOK DMKIOEFS DMKPGTVG EBBICER IOBFATAL OERCCRL OBRRECN RCu2701 RECNXT R3 SDRLNGTH TNSSNS 1 TYP2741 XOBRT 1 CPEXFPNT CPEXREGS r:~KIOEIQ DMKIOEMP DMKPG'IVR DMKP'IRAN EBRKEY ERRMIOB IOERADR IOERBLOK CBRCPIDN OBRCSiN OBRSDRCT OBRSDRSH RCU2702 RDEVELOK RECPAGFL RECPAG R4 R5 SDRMAX SDROVFiK TNSSiS3 TNSVOLID TYP3066 TYP3210 XOBRT3 XOBR010 CPEXR6 DMKIOEMQ DlIKPTRUL EBRMIOER IOERCSi OBBCUAIN OBRSHOBR RDEVCTRS RECPAGIU R6 SDRPRMCT TYPTTY TYP 3211 XOER150 0 j;lI d I-' (1) I rT 0 I t-' ~ b" (1) I-' n 11 0 en en l:O (1) C'l ~ CL!SD!St CLASGR!F CLASSPEC CPUVERSN DEFER DMKERMSG D~KICElIS DMKICE~X DMKIOENI tMKIOENQ D~KICEOP D~KRPAGT DMKRPAPT DMKST~CP EBRBLOK ERRCCNT ERRP!RM ERRSDR ERRVOLID FFS FTREXTSN IOERDAT! IOEREXT IOEBFLG3 IOERLEN IOEROVFL OBRCUAPR OBRDDCNT OBRDEVTN OBRFCCiN OBRHAN OBRSNSCT OBRSSDRl OERSiSN OBRT EMP OERVOLN RDEVCUA RDEVFTR RDEVMDL RDEVSADN RDEVTMCD BO R1 Rl0 Rll R12 R7 R8 R9 SAVEAREA SDRELCK SDRRDEV SDRSHRT SDRSIZE SDRSIZEl SYSTEM TYP1050 TYP1403 TYP1443 TYP2305 TYP2311 TYP3330 TYP3340 TYP 3350 TYP3410 TYP3420 IOBR180 XOBR512 ZEROES DMKIOS ARIOCH DMKCCH60 DMKPGTVG MCDAMLEN NOMODEL RECPAGFL R3 TYP2305 ARIOCT DMKEIG80 DMKPGTVR MCHAREA PSA RECPAGFM B4 TYP 3330 ADSPCH CLAS'IAPE CUE DMKGRFIN FTRRPS IOBCSW IOBRADD IOBUNSl PCI RCHSEL RCUSHRD RDEVDED RDEVSTA2 R2 TEMPR14 VDEVIOCT VMTESIO ASYSVM CLASTERM CO DMKIOERR FO IOBCYL IOBRCAW IOBUSER PRGC RCHSTAT RCUSTAT BDEVtISA RDEVTYPC R3 BRING DMKERMSG DMKPTRAN MCHFIX RCHBLOK RECPAGFR R5 TYP 3340 ATTI CLASURI C8 DMKRGAI N Fl IOBERP IOBRELCU IOEVADt PRTC RCHTYPE RCOSUB RDEVFIOE RDEVTYPE R4 TIl~E Ii TR!CBEF VDEVREAL VMBLOK VMTTIME YO CHANID DMKFREE DMKRPAGT MCHMODEL RCHTYPE RECPAGIU R6 TYP3350 CPEXSIZE DMKIOEES DMKRPAPT MCNPSi RCH370 RO R8 VMBLeK CPUID CPUMCELL DMKIOE~P DMKIOEMS DMKSCNRU DMKSEV70 lWDEFLAG MODEL 135 RDEVBLOK RDEVCODE Rl0 Rl R9 SA VEAREA iAIT CPUMODEL DMKIOEMX DMKSII60 MODEL145 RDEVTYPE Rl1 SAVEREGS CPUVERSN DMKIOENI DMKSYSER MODEL155 RECCCPD R12 SAVEiRK2 DEFER DMKIOEOP ECSiLOG MODEL158 RECFLAGl R13 S AVEiRK3 DMKCCHCF DMKMCHAR F7 MODEL 165 RECFLAG2 R14 SAVEiBK7 DMKCCHMX DMKMCHBL IOELPNTR MODEL168 RECNXT R15 SYSIPLDV DMKCCHSZ Df!KMCHRD LOCK MODEQUIT RECPAG R2 SYSTEM BUSY CLASORO DE DMKRNHIN IFCC IOBFATAL IOBRES IOERBLOK PSA BCH370 RCUTYPE RDEVFLAG RDEVUSER R5 TRACCURR VMESTAT Y2 CAW CPCREGO DMKBSCER DMKRSPER IL IOBFLAG IOERSTRT IOERCCW QUANTOMR RCUADD RDEVADD RDEVFTR RUNUSER R6 TRACEND VMEITCM Y4 CC CPCREG8 DMKCCHIS DMKR SPEI INTREQ IOBFPNT IOBSIOF IOERCSi BCHADD RCUBLOK BDEV AlOE RDEVIOCT RO R7 TRACFLGl VMFPRS Y6 CDC CPEIBLOK DMKCNSIN DMKSCNRU IOBBPNT IOBHVC IOBSNSIO IOEREXT RCHEMX RCUCHA RDEVBLOK RDEVLIOB Rl0 R9 'IRACSTRT VMIDLE CE CPEIR13 DMKDASER DMKSTKCP IOBCAW IeBIOER IOBSPEC IOERLEN RCHBUSY BCUDISA RDEVBUCH RDEVQCNT Rl1 SAVEAREA TRAC05 VMIOiAIT CHC CPEXSIZE DMKDASRD DIHSTKIO IOBCC 1 IOEIRA IOBSPLT IOERSIZE RCHDISA RCUFIOB RDEVBUSY RDEVRACT R12 SAVER11 TYPESC VMPSi CLASDASD CPSTATUS DMKDSPCH Df!KTAPER IOBCC2 IOELINK IOBSTAT lOOPS Ii RCHFIOB BCUPRIME RDEVCONC RDEVSCED R13 SILl TYPCTCA VMR STAT CLASGRAF CPiAIT DMKFREE DMKTRCSI IOBCC3 IOBLOK IOBTIO MNCLSEEK RCHMPX RCUQCNT RDEVCUA RDEVSKUP R14 SKIP UC VMTMOUTQ CLASSPEC CSi DMKFRET DMKVIOIN IOECP IOBPAG IOEUC MNCOCYL RCHQCNT RCUSCED RtEVCYL RDEVSTAT R15 SM VtEVBLOK VMTRCTL CCC CPEXADD DMKCCHNT DMKSCHDL INTTIO IOBHIO IOBSIZE IOERDATA RCHBLOK RCUBUSY RDEVATT RDEVIOER Rl R8 TRACFLG2 VMGPRS HI (1) 11 (1) I:' C'l (1) ~odule External References (Labels and Modules) t~KISM CD IOBIUSC R12 VMBLOK DMKFREE PSA B13 DMKPTRAll DMKPTRUL DMKUNTIS 1"16 BCiCCllT RCiCCi RCile RCiPNT B14 B15 B2 R3 DMKLDOO DMKCPE R5 DMKPSA R6 R7 RO R8 Rl R9 BLANKS DMKLOCR DMKVDREL INHIBIT R15 SAVEiRR1 UDBFVADD UDEVMODE VCHDED VMLOGON BUFFER DMKLCCKD DMKVDSLK NORET R2 SAVEiRK2 UDEVADD UDEVPASR VCHSTAT VMOSTAT BUFINLTH DMKQCllBD EDIT PSA R3 SAVEiRK4 UDEVBLOK UDEVR VDEVBLOK VMPSiDCT BUFNXT DMKQCNiT ERRMSG BDliBLOK R4 SAVEiRK5 UDliDED UDEVRELN VDliFLAG VMRSTAT BUFSIZE DMKSCNAU FFS RDEVTYPC R5 SAVEiRK6 UDEVDISP UDEVSTAT VDEVRDO VIWSER tMKLllK tn (I) 0 ..,.c+ 0 1:1 . w D~KWRM 1"2 RCiRCNT R4 F4 BCiTASK R5 F8 RCWVCAi B6 IDA BO R7 IOBCn Rl R8 IOBIRA Rl0 B9 IOBLOK Rl1 SAVEAREA Bl0 R12 R13 R14 R15 B2 R3 R4 CLASDASD DMKSCNFD FTR2311E RDEVTYPE R6 SAVEiRK7 UDEVFTR UDEVTDSK VDEVREAL VMVIRCF DMKCVTBD DMKSCllLI FTR2311T RO R7 SAVEiRK8 UDEVLINK UDEVTYPC VDEVRELN ZEROES DMKCVTBH DMKSCNVN F1 R1 R8 SAVEiRK9 UDEVLKDV UDEVTYPE VDEVTYPC DMKCVTHB DMKEPSiD D~KSCllVS DMKSCNVU F15 F2 Rl0 R 11 SAVEAREA R9 TYP2311 TYP2314 UDEVLKID UDEVLM UDEVVSER UDEVi VDEVTYPE VDEVUSER DMKERMSG DMKUDBFD F4095 R12 SAVERETN UCASE UDEVLONG UDIRBLOK VMBLOK DMKFREE DMKUI:RFU 1"7 R13 SAVER 11 UDBFBLOK UDliLR UDIRDISP VMCOMND D~KFRET DMKFRET R14 DMKSTKCP DMRSYSLB B15 R2 DMKLOC ASYSLC BALRSAVE BALR14 CPEXADD LOCKBLOK LOCKNAME LOCKNEXT LOCKQUE R3 R4 R5 R6 CPEIBLOK CPEIFPNT CPEIREGS CPEXSIZE DMKDSPCH DMKFREE LOCKSIZE PSA RO Rl Rl0 R12 R7 B8 R9 SYSLOCS DPlKLOG ABIODC CPMICAVL DMKFREE DMKSCNVN DMKUDRBD IOBUSEB NICUSEB BDEVSER B13 SAVER11 TYP1052 ASYSVM DMKBLDRT DMKQCBWT DMKSYSDi DMKVDSDF MICSIZE BDEVADD BDEVTYPC B3 SAVEiBK2 UDEFVADD UDEVTYPC UMACCLEV UMACRT VDEVAUCB VMCHCNT VMFBMI VMMLEVEL VMRlAL VMTLDEL VMVTIME ARIODV CPSTAT2 DMKFRET DMKSCNVU DMKUDBRV MICBLOK NOBET RDEVSIZE B14 SAVER2 TYP2305 UDEV~ODE UDEVSIZE UMACBLOK UlUCBMX UMACLEND UMACNSVC VCUADD VCUBLOK VMBSIZE VMCF VMDVCNT VMDVSTRT VMMFE VMMICBO VMPSTAT VPlPSW VMTEBM VMTESCP VMUSEB VMVCRO ASYSLC DMKACON DMKLIKSE DMKSYSCK DMKUSOFF MICCBEG OPEBATOB BDEVSTAT B15 SAVEB9 UDBFBLOK UDEVSTAT UMACCDEL U!UCOPT VCUSIZE VMCFBEAD VMECEIT VMMICSVC VMPSiDCT VMTIMEON VMVIRCF ASYSOP DMKBLDEC DMKQCNSY DMKSYSDT DMKVDSAT MICBSEG PSA BDEVSYS B2 SAVEiBK 1 UDBFSIZE UDEVTDSK UMACCLA UMACPBIB VDliADD VMCFiAIT VMESTAT VMMIMSG VMQSTAT VMTIMEB VMVTERM BLANKS DMKBLDV~ DMKSCHDL DMKSYSLG FFS MICVPSi RDEVAIOE BDEVTYPE B4 SAVEiBK8 UDEVADD UDEVTYPE UMACCOBE UlUCVROP VDEVBLOK VMCHSTRT VMFSTAT VftMLINED VMRON V~TLEND VMV370B BUFCNT DMKCFGII DMKSCHBT DMKSYSLi 1"1 MICiOBK BDEVBLOK BDEVUSEB B5 SYSLOCS UDEVBLOK UDEVVSER UMACDIS'I VCHADD VDEVCFLG VMCLEVEL VMISAM VMMLVL2 VftBSTAT VftTLEVEL VftiNGON BUFFER DftKCQRFI DMKSCH80 DMKSYSMA 1240 NEiPAGES RDEVDED BUIUSEB B6 TEMPSAVE UDEVDED UDIBELOK UMACDVCT VCHELOK VDEVCON VMCOMND VMKILL VftMSGON VMSEG VftTftOUTQ VRALOC BUFNIT DMKCVTBD DMKSCNAU DMKSYSMU F4095 IEWSEGS BDEVDISA BO B7 TRQBIRA UDEVDISP UDIBDISP UMACECOP VCHSIZE VDEVSIZE VMCUCNT V~LOGON VMMSVC VMSIZE VftTON iAIT DMKUDRRV 1"8 R14 SAVEB2 UDBFSIZE UDEVLi VCHBLOR VMKILL BUFSIZE CLASDASD CLASSPEC CLASTERM DMKCVTBH DMKCVTDT DMKEPSiD DMKERMSG DMKSCNFD DMKSCNBD DMKSCNRU Df!KSCNVD D~KSYSIM DMKSYSTI DMKSYSTM DMKUDBFU 1"7 INHIBIT IOBLOK 1"8 NICELOK NICFLAG IHCPSUP NICSIZE BDEVFLAG BDEVNICL BDEVOiN RDEVPSUP Bl Bl0 Bll B12 B8 SAVEABEA SAVEBETN B9 TRQELOK TRQESIZE TRQBUSER TYPBSC UDEVLIIIlK UDEVLKDV UDliLKID UDEVLONG UDIBPASS UDIBUSEB UMACACC UMACACCT UMACES UIUCIPL UMACISAM UMACLDEL VCONCTL VCONBBSZ VCOIllBBUF VCONBCNT VfUCCOUIIl VMACNT VMACOUNT VMBLOK VMCUSTBT VMDELAY VMDISC VMDIST VMIUCCCN VMMCODE VMMCPENV VMMCB6 VMftTEIT VMM360 VftOSTAT VMPNT VMSLEEP VMSTOR VMSYSOP VMTCDEL V~TRMID VftTRQELK VMTTlftE VMUPBIOB ZEBOES n ~ 3: 0 ~ s:: I-' (1) I c+ 0 I t:-t PI tr (I) ..,.t:=' I-' t1 n (I) 0 c+ 0 ..,.t1 (1) til t1 0 til til !:I:I (1) HI (1) t1 W U'I U'I CI) 1:1 0 (I) w U1 n Module External References (Labels and Modules) DMKPlCC ACORETBL DASDCL DPlKPRGMI F4 PlOBATRB PERFCL R 11 SCBEDCl TRQBVAL ASYSVPI DEFER DMKPBGTI F4095 PlOICeM PSA R13 SILl USERCL BLANKS DMKCVTDB DMKPTRAB F60 MONCTEEl RDEVBLOK R2 SPROFCL VMBLOK ERING DMKCVTHB DMKPTRFR F8 MOBDVLST RD:EVDED R3 SYSTEM VMUSER CC DMKERMSG DMKQCBiT IOBCAW MONDVNUM RDEVDISA R4 TBUSY ZEROES CFSTOP DMKFREE DMKSCHRT IOBLOK MONFLAGl RDEVFLAG R5 TRACCURR ACORETBL CPEXADD DMKDSPCB F6 NORET R12 SiPCBG1 VPlESTAT YO ALARM CPEXBLOK DPlKERPlSG F8 OPERATOR R13 SiPCBG2 VMEXTCM Y2 ASYSVPl CPEXSIZE DMKFRE! IRTftC PAGCORE R14 SiPFLAG VPlEXiAIT Y4 AVMREAL CPID DMKIOEftC MCCPUID PAGINVAL R15 SiPKEYl VMFPRS Y6 CORBPBT CPUID DMKOPRiT MCFXDLOG PROBMODE R2 SiPKEY2 VPlGPRS ZEROES CORDISA CPUVERSN DPlKPGSPO PlCBEK PSA R3 TIPlER VPlIRVPAG ALABM Rl0 SAVER11 ASYSVPI DATE R 11 R12 TEMPSAVE TODATE I'd 0'1 3: < 3: "w ...,J 0 00 til "< CLASTAPE DMKFRET DPIKSCHST IOBfUSC MONNEXT RDEVSTAT R6 TRACEFLG CORCP DMKMOBMI DPlKSCNFD IOBSIZE MOBSIZE RDEVSYS R7 'IRACSTRT CCRFLAG DMKMONSH DPlKSCBRU ICBUSER MONUSER RDEVTYPC R8 TRQBIRA CORTABLE DMKMONTH ERROR LOCK BORET RDEVUSER R9 TRQELOK CPCREG8 DMKMOITI F-FS MBBBDLEN PAGECUR BO SAVEAREA TRQBSIZE CPEXSIZE DMKPRGC8 Fl PlOBAIOB PAGEND Rl SA VEiRKl TRQBTOD C8 DPlKPRGMC F3 PlOBARDB PAGEBXT Rl0 SAVEiRK3 TRQBUSER CD E!I DMKMCH t'"4 0 ....0 I.Q III ::t P. I'd t1 0 tT ..... CD E!I ~ CD r+- CD t1 E!I .... ::t III ....r+0 ::t G"l ....a p. CD DPlKMID a ..... CD I r+- 0 I t-t III tT CD ..... til r+- 0 p. CORFLAG cO DMKPTRFT PlCRPSi QUABTUPlR R4 TRACCURB VPlKILL CORFPNT C13 DPlKQCNiT PlCOLDPi RECOVRPT R5 TRACEND VPlOSTAT CORIOLCK C3 DPlKSCNFD PlCOPSi RUBUSER R6 TRACFLGl VMPSi CORPGPBT C7 DftKSTKCP PlCPROGID RO R7 TRACSTRT VMRSTAT DMKCVTDT DPIKERMSG DftKQCNiT DftKSCBST DMKSYSDi DMKSYSTI RORET R4 R5 R13 R2 B3 R7 R6 VftTTlftE TRQBLOK TRQEVAL VPlBLOK VMMLEVEL VftMSGOB VftPNT CORSiPBT DMKCFMBK DftKSYSCK PlCREC Rl B8 TRAC04 VMTPlOUTQ CORTABLE DMKCFPRR FFS PlCRECORD Rl0 R9 TRARftODE VMTTlft! CPCREGO DftKDPlPRS F255 ftCRECTYP Rl1 SAVEAREA VftBLOK VMUSER PSA B8 RO B9 R1 SAVEAREA n 11 0 til til !:O CD t-I) CD 11 CD ::t 0 CD til (1) 0 r+ 1-'0 ~ w Module External References (Labels and Mod ules) DMKMON ALOCBLOK CONCNT CS DftKERftSG DMKPRGTI DftKPBVLP DftKPTRCS DMKSCBAL DMKSYSOC Fl IOBftISC MNCODAS KNOOO ftN097CPU MN099TOD MN20XQ1N MN202PGR MN400IOC MN400UID MN600DLN MN700QCH MNS02PGi HONDVlST PAGENXT RCUADD RDEVDISA Rl1 SAVEAREA VMBLOK VMPNCH VMUSER ALOCMAX CONTASK DASDCL DMKFREE DftKPRVCD DftKPRVLB DftKPTBFC DMKSCHCT DMKSYSOW F3 IOBftISC2 ftNCODASH MNOOOIIT MN097CBS ftNl0X MN20XQ2E ftN202PNC MN400LEN HH400UPR HN600BDR MH700QCU MNS02PRB MOIDVNUft PAGEiAIT RCUBLOK RDEVFLAG R12 SPROFCL VMCRDS VMPNT VftVTIftE ALOCUSEI CORCP DE DftKFRET DMKPBVCE DftKPBVftN DftKPTRFF DftKSCBNl DMKVIOCI F4 IOBSIZE ftNCOSUS {!NOOOLEN ftN097DAT ftNl0XADD PlN20XQ2N PlH202PBI ftN400LIN ftH400VTI HH600HLN MN700QI:V ftNS02iID ftOIFLAGl PERFCL RCUCHA RDlVIOCT R13 SUSPEID VftEPRIOB VMPSTAT VftiSPROJ ARIOCB COBFLAG DftKCPEID DftKBVCDI DMKPRVCH DftKPRVftO DftKPTRFN DMKSCBN2 DftKVIOCT F4095 IOBSTAT MNCOSYS MNOOOPPA MN097LlN ftNl0XLEN MN20XSWS HN202PST MN400PDK MI400iSS MN600MAX ftN700UID MN802iIO IWNFLAG2 PGREAD BCUDVTBL RD:EVPREF R14 TBUSY VIHNST VMPSi ZEROES ARIOCT COBFPNT DftKCVTDT DftKIOSCT DMKPRVCP DftKPRVftS DMKPTRFT DftKSCBPU DMKVIOCW II:LEiAIT IOERSIZE ftNCOTB ftNOOOPPC ftN097LEV MN10XUID ftl20XUID HN202REF ftN400PDR MN500 MN600NUM MNS02CLH MNS02iPG MONIlXT PGiRITE RCUPRIME RDEVQCNT B15 TBQBLOK VMICCNT VMQL1!VEL ARIOCU COR TABLE DftKDSPAC DftKIOSQR DMKPRVCS DftKPRVNC DftKPTRFO DftKSCHQl DftKVIOHD IOBCAW IONTWAIT MNCOTT MNOOOPRB ftN097TIM PlNl0YCNT ftN20XWSS HN202RES MN400PGR MN 500INS MH600SER MNS02CN'I MONA lOB ftONSAVE PROBTlftE BCUQCNT RDEVSER R2 TRQBSIZE VftLINS VftQPRIOR ABIODV CPCBEGS DftKDSPBC DftKPAGCC DMKPRVCT DftKPRVPB DftKPTBPR DftKSCHRT DftKVIOHI IOBCSi IPLPSi MNCOUSER MNOOOPSI MN097UID MN10YIO ftN20YTTI MN203LEN PlN400PGW ftN500LEH MN600TY MNS02CTR ftONARDB ftONSIZE PROPSi RCUSUE RDEVSKUP R3 TRQBTOD VftLOGON VftQl ASYSVft CPEXADD DftKDSPCC DftKPAGPS DftKPRVDI DftKPRVPE DftKPTRRC DftKSCHST DMKVIOSF IOBCYL P1NBHDLEN MNHCLASS MNOOOQ1E MN09S ftll0YLEN MN20YVTI HN204LEN ftN400PNC ftN5000VH ftH700 MNS02DEV MONATRB ftONSUSCK PSA RCUTYPE RDEVSTAT R4 'IRQBVAL VftPAGES VftBDINQ CC CPEXBLOK DftKDSPCB DftKPRGCT DMKPRVEK DMKPRVPT DMKPTRRF DMKSCHW1 DPlKVIOSI IOBFATAL ftNCLDAST MNHCODE MNOOOQ2E ftN09SLEN MI2 BSV1 PlN202APR ftN204PRI MN400PST MN500UID MN700ADD ftlS02DLN HONCLASS ftON SUSCT PSASVCCT RDEVADD RDEVSYS R5 TRUN VftPDISK VftRSTAT CFSTOP CPEXRO DftKDSPCK DMKPRGCS DftKPRVEP DMKPRVRR DMKPTRSC DMKSCHW2 DMKVIOTC IOBFLAG P1NCLPERF MNHDR ftNOOOWID MI09SUID MI20X MN202CRD MN4RSV1 ftN400QLV MH500VAD MN700CCY MNS02NAU ftO·NCLOCK MONTIINT RCHADD RDEVALLI RDEVTYPC R6 UC VftPDRUft VftSTEALS CLASDASD CPEXSIZE DftKDSPIT I:ftKPRGGR DftKPRVIK DftKPRVTC DftKPTRSS DftKSTKCP DPlKVIOTI IOBIOER ftNCLSYS MNBDRLEI MNOOOWIO MN099 ftN20XNPP MN202IOC MN400 ftN400RES MN600ADD MN700CYL MNS021PP eONCODE ftONUSER RCBBLOK RDEVBLOK BO R7 UE nlPGREAD VftTERM CLASTAPE CPUII: DftKDSPNP DftKPBGMC DMKPRVIP DftKPRVTE DftKPTRSW DftKSYSND EBROR IOBIBA P1NCLUSER MNBRl!CSZ ftNOOOiPG MN099CNT PlN20XQNPI MN202LEN ftN400CRD ftN400RST MN600CNT MH700DIR MNS02HUM eOlcoe PAGECUR RCBCUTBL RDEVCUA R1 RS USERCL VftPGRINQ VMTTIME CONADDR CUE DMKDSPPT DMKPBGMI DftKPRVLC DMKPSANX DftKPTRUL DftKSYSNft ,FO IOBLOK ftNCODA ftNBTOD ftl097 ftN099LEN HI20XQ1E ftN202LIH MN400IHT MH400TTI HH600DEV MN700LEH ftHS02PGR HONCTEBl PAGEND RCHQCNT RDEVCYL Rl0 R9 VftAEX VftPGiRIT VMUPRIOB DMKMSG ALARlI DftKSCNFD R15 SAVEiRK4 VMOSTAT ASYSOP Fl R2 SAVEiRK6 VftPNT BLANKS F2 R3 SAVEiRKS VftR STAT BUFFER F3 R4 VftBLOK VftTTlftE BUFNXT NORET R5 VftCLASSA VMUSER DftKCVTDB NOTlftE R7 VftCLASSB Vl!iNGON DMKCVTDT PRIORITY RS VftCLEVEL XRIGHT16 DftKERMSG PSA R9 VMDISC DftKFREE RO SAVEAREA VlIKILL DftKFRET R1 SAVERll VlILCGOFF DftKQCNRD Bl0 SAVER2 Vl!ftLEVEL DftKQCNiT Rll SAVEiRKl VftftLINl!D Dl!KSCNAU R13 SAVEiRK2 VftMSGON ALARM F20 IOERCSW IOERPEND Rl0 SAVERO ASYSOP F4 IOERDASD IOERSTRT R11 SAVER11 CCC F6 IOERDATA NOBET R12 TYP3340 CDC FS IOERDEC NOTHIJE R13 UCASE CLASI:ASD F9 IOERETRY OPERATOR R2 VMBLOK DftKCVTBH IFCC IOERFLGl PSA R3 VMDISC DMKFREE INTREQ IOERIGN RDEVBLOK R4 VMOSTAT DftKFRET IOBLOK IOERIGNR RDEVCLAS R5 VlIJTERlIJ DlIKQCNRD ICBRADD IOERIND3 RDEVDED R6 VMTTIlIJE DftKQCNiT IOERACT IOERIND4 RDEVIOFR R7 VMUSER DftKSCNRN IOERADR IOERINFO RDEVST AT RS ZEROES EDIT IOIRELOK IOERLEN RO R9 FlO IOERCNCL IOERNUft Rl SAVEAREA DMKMSW ("l I'tj tJ: 0 ~ c= ~ (1) I r+ 0 I 1:"4 ~ IT t:=' 1-'t1 CD 0 r+ 0 t1 1-'CD til w (JI ...J (1) ~ (1 t1 0 en en !:C (1) HI CD t1 (1) ~ 0 (1) w U'1 Module External References (Labels and Modules) n I"Cj ex> tMKNEM -< tl'IKNES 3: "w ~ 0 Ul '< til r+ (l) e t"4 0 IQ ..... tMKNET 0 ~ l:I 0. I"d t1 0 t:r ~ RO Rl R12 R13 R15 B2 R3 CLASSPEC DMKFREE FFS NICLBSC RCBBLOK RDBVDISA RDEVPDLY RDEVUSER R7 SAVEWRK8 R4 CLASTERM DMKFRET Fl NICLlNE RCBCUTBL RDEVDISB RDEVPTTC RDEViAIT R8 SAVEWRK9 R5 til SAVEAREA SAVERO 0 e:lI ARlOCU CSWLIiCF DftKRlORN HICCIBM HICSTAT RDEVBASE RDBVlRM RDEVTBTU R15 SAVEiRKl VMBLOK ARIODV CTBMLTB DftKRHBHD NICDISA NICSiEP RDBVBLOK RDEVLHCP RDEVTCTL R2 SAVEWRK2 VMOSTIT ASYSVM DMKCVTEB DMKRNBTR HlCEHAB NICTYPE RDBVCON RDEVMAX RDEVTftCD R3 SAVEWRK3 Vf'lTTlf'lE BLANKS tMKCVTDB DMKSCNFD HICEPAD NICUSER RDIVCTRS RDUftDL RDEVTYPC R4 SAVEWRK4 VMUSER CACTLTR DMKCVTBB Df'lKSCNRD HIC!PMD NCRET RtEVCUA RDEVNICL RDEVTYPE R5 SAVEWRK5 VMVIRCF CDlSPLY DMKERMSG DMKSCNRU HICFLAG PSA RDBVDED RDEVNRDY RDEVUSC8 R6 SAVEWRK7 IRlODV DMKEBf'lSG DftKRGBEN NlCDISA NlCSIZE RDEVENIB Rl1 SAVER2 VMCLASSB ASYSVM DMKFBEE DftKRlORN NICDISB IiICSTAT RDEVFLAG R13 SAVER9 VMCLISSC BLANKS DMKFRET DftKRNBND NICENAB NICTELE RDEVLHCP R14 SA VEiRK 1 VMCLASSt CACTLIN DMKIOESR DftKSCNFD NlCEPAD NlCTERM RDEVMAX R15 SAVEWRK2 VMCLASSE CDCTLIN Df'lKNESDS DMKSCNRD NlCEFf'lD NICTYPE RDEVNICL R2 SAVEWBK3 VMCLASSF CLASSPEC Df'lKNESEP F255 NICFLAG NlCUSER RDEVNRDY R3 SAVEWRK4 VMCLASSG CLASTERft DMKHESBD F3 NICGRAF NORET RDEVRSVD R4 SAVEWRK5 VMCLEVEL CONCCW3 DMKHESPL F4 NICLBSC PSA RDEVSTAT R5 SAVEWRK7 VMOSTAT CCNSYSB DMKHESTB F4095 NICLGRP RDEVBLOK RDEVTYPC R6 SAVEWRK8 VMSTKO CONTACT DftKHESWH F60 HICLINE RDEVCTRS RDEVUSER R7 SA VEWRK9 VMUSER CBESIMD DMKHLDMP F8 HlCNAME RDEVDED RO B8 TEMPSAVE VftVlRCF DMKCVTBB DftKNLDB HICBLOK NICRSPL RDEVtlSA Rl B9 VMBLOK ZEROES DMKCVTHB DMKQCNWT NlCCIBM NICSESN RDEVDISB Rl0 SAVEAREA VMCLASSA ABORT CCPRSTAT DMKCVTBB DMKPTRUL DMKSCIiVS F4 IOBFLAG IOBSPEC NCPPNT HICSWEP RDEVAIOB RDEVFICB RDEVRCVY Rll SAVEAREA SFBCOPY SFBRECSZ TYPUNDEF VMBLOK ADDSFB CCPRSTEP DMKCVTDT DMKQCHCL DMKSCHVU F4096 10BFPHT IOBSTAT NCPSTART IHCTEBf'I RDEVATT RDEVFLAG RDEVRSVD R12 SAVER11 SFBDATE SFBSIZE TYP2314 VMTTIME ARSPRD CCPRSTYP DMKCVTHE DMKQCHRD DMKSTKlO F5 IOBIOER IOETIO NCPTBL NICTYPE RDEVAUTO RDEVFTR RDEVSTAT R13 SAVEB2 SFBDIST SFBSTART TYP3330 Vf'lUSER ASYSVM CCPSIZE DMKDSPCB DMKQCNTO DMKSYSDU F8 IOBIRA IOBUSBR NCPVOL NlCUSER RDEVBASE BDEVIRf'I RDEVSTA2 R14 SAVEWRKl SFBDUMP SlBT!ME TYP3350 X40FFS BLANKS CCPTEP DMKERMSG DMKQCNWT DMKVDREL IL IOBLCK IOERBLOK NICELCK NOAUTO RDEVELOK RDEVLCEP RDEVTFLG R15 SAVEWBK2 SFBFILID SFBTYPE TYP3705 BRlHG CCPTPEP DMKFREE DMKRHBlN EDIT lHTREQ IOBMISC IOERDATA NICCIBM HORET RDEVCODE RDEVLHCP RDEVTMCD R2 SAVEWRK3 SFBFLAG SFBUSER UC CC CCPTYPE DMKFRET DMKRHTBL ERRMSG 10BBPNT IOBMISC2 IOERETN NlCEPAD OPERATOR RDEVCUA RDEVMAX RDEVTYPC R3 SAVEWRK4 SFBFNAME SILl UCASE CCPARM CDC DMKIOSQR DMKRPAGT FFS 10BCAW IOBRADD IOEREXT HlCEPMD PSA RDEVDED RDEVMDL RDEVTYPE R4 SA VEWRK5 SFBFTYPE SM VCUBLOK CCPENTRY CLASSPEC DMKPGTCG DMKRPAPT FTRTYP 1 IOBCCl IOBRCAW IOERSlZE NICFLAG RCUBLOK RDEVDISA RDEVNCP RDEVUSER R5 SAVEWBK6 SFBLAST SYSTEM VCUDVTBL CCPMAXID CUE DMKPGTSD DMKRSPID FO IOBCC3 IOBRCHT IPLREQ HICHUIE RCUDISA RDEVEHAB RDEVHICL RDRCBN R6 SAVEWRK7 SFBLOK TEMFSAVE VDEVADD CCPNAf'lE DEFER DMKPG'IVG DMKSCJiJFD Fl 10BCP IOBRES LOCK NICPSUP BCUDVTBL RDEVEPDV RDEVNRDY BO R7 SAVEWRK8 SFBORIG TYPBSC VDEVBLOK CCPPSlZE DMKCFPBI DMKPGTVR DMKSCHRD F256 10BCSW IOBRSTRT NCPNAME NICSIZE RCUSTAT RDEVEPLH RDEVOWN Rl R8 SAVEWRK9 SFBPNT TYPlBMl VDEVDIAL CCPRESID DMKCKSPL DMKPTRAN DMKSCHRU F3 IOBFATAL IOBSIZE NCPPAGCT NlCSTAT RDEVADD BDEVEPMD RDEVPTTC Rl0 R9 SFBCLAS SFBRECNO TYPPRT VDEVFLAG CONCCW3 DMKlOES R F255 NICLTRC RCUBLOK RDEVENAB RDEVRCVY RO R9 TYPBSC CONDATA DMKQCNCL F3 NlCPSUP RCUtISA RDEVEPDV RDEVRSVD Rl SAVEAREA TYPTTY CONSYSR tMKQCNTO F4 NICQPHT RCUDVTBL RDEVEPLN RDEVSADN R10 SAVER 11 iYPUNDEF CONTASK DMKQCNWT F4095 NICSESH RCUSTAT RDEVEPMD RDEVSLOi Rl1 SAVER2 TYP2700 CSWLMEP DMKRGBEN NlCBLOK NICSIZE RDEVADD RDEVFLAG RDEVSTAT R13 SAVER9 TYP3705 t:I (I) rt' (l) t1 EI ..... l:I ~ r+ ...,. 0 l:I (j') ~ ..... 0. (l) DMKNLD (I) I r+ 0 I t"4 ~ t:r (I) ~ n t1 0 en en (l) e ~ ~ I:tI (l) H\ (I) t1 (I) l:I 0 (l) til (I) 0 ....0 ("t ::I . ~odule External Beferences (Labels and l!odules) I:l!KOPB CLASGRAF CPUID ALARl! CAi CC CD Rl RDEVElOK RDEVCORD RDEVTYPC RDEVTYPE RO R8 SILl TYP3066 UC XRIGBT16 CPUVERSN CSi B14 R10 DMKRIOCN DlIKBIODV FFS R1S R2 R3 NOAUTO R4 PSA BS tMKPAG ACORETEL CPEXR7 DMKSYSOi IOBCYL OiNDRDEV R10 R9 Vl!BLOK ALARl! DMKCVTBB FTR70l!B IOBFATAL PAGELOAD R 11 SILl Vl!TTIME ARIODV DMKDSPCB Fl IOEFLAG PAGERATE R12 SKIP XTBDLOCK CPEXADD DMKIOSQR F4 IOBLOK PGiAITPG R1S SiPDPAGE CPEXELOK DMKOPRiT FS IOEl!ISC PSA R2 SiPFLAG CPEXEPNT DM·KPTRFF F8 IOBPAG RDEVBLOK R3 SWPTRANS CPEXFPNT DMKPTRRQ IL IOBRADD RDEVFTR R4 TYP230S CPEXl!ISC DMKPTRSS ICEEPNT IOBSIZE RDEVlIDL R5 TYP2314 CPEXRO DMKPTRiQ IOBCAi IOBSTAT RDEVTYPE R6 TYP3330 CPEXR 11 DMKSCNRD IOBCP IOBUSER RO R7 TYP3340 CPEXRS DMKSTKCP IOECSW OWNDLIST Rl R8 TYP3350 DMKPER VMBLOK VMPEND VMPERPNt Vl!TRCTL Vl!TRPER I:MKPGS ACORETBL DELPAGES F15 Rl R9 SHRBPNT SWPTAELE Vl!BLOK VMSIZE ASYSVl! DHKBLDRL F4 R10 SAVEAREA SHRFPNT SiPVlI VHESTAT VMSTOR AVMREAL Dl!KBLDRT F4096 Rll SAVERl SHRNAME SiPVPAGE VMINVPAG Vl!TIl!ER CORBPNT Dl!KDSPNP F8 R13 SAVER2 SHRSEGCT TR!XANSI VMLOGOFF VMTREXT CORCFLCK DMKFRET KEEPSEGS R14 SAVEiRK 1 SHRSEGNM TREXIN 1 VlINSHR XPAGNUP.I CORFLAG Dl!KPGTPR NEiPAGES R15 SAVEiRK2 SBRTABLE TREXNSI VMOSTAT CORFPNT Dl!KPTRAN BEiSEGS R2 SA VEiRK3 SHRTSIZE TREXT Vl!PAGES CORIOLCK Dl!KPTRFT OLDVl!SEG R3 SA VEWRK4 SBRUSECT VMABLOK Vl!PGWAIT CCRPGPNT Dl!KPTRPW PAGCORE R4 SAVEiRK7 SWPCYL VMADSTOP Vl!PSTAT CORRSV Dl!KPTRRC PAGINVAL RS SAVEWRK9 SiPFLAG VIUFPNT VMRSTAT CORSBARE Dl!KPTRSC PAGREF R6 SEGPAGE SWPKEYl Vl!A:t1AME VHSEG CORTABLE FFS PSA R7 SEGPLEN SiPRECl!P VMASIZE Vl!SHR DEFER FO RO R8 SEGTABLE SiPSHR VMASSIST VMSHRSYS tMKPGT ALARl! CPEXSIZE F4 RDEVFIOB RECSIZE R5 TYP33S0 ALOCBLOK CPID IOBCYL RDEVFLAG RECUSED R6 VMBLCK ALOCMAP DMKCKP IOBFPNT RDEVFTR RO R7 Vl!PDISK ALOCl!AX Dl!KDSPCB IOBLOK RDEVPAGE Rl R8 VMPDRUl! ALOCUSED DlIKFRBB NORET RDEVPNT Rl0 R9 ARIODV DMKFRET OPERATOR RDEVPREF R11 SiPCYL ASYSVM DMKQCNiT OWNDLIST RDEVRECS R12 SiPDPAGE EALRSAVE DHKSTKCP OiNDRDEV RDEVTYPE R13 SWPFLAG BALRO DMKSYSOi PSA RECBLOK R14 SiPRECMP BALRl FFS RDEVALLN RECCYL R1S TYP230S BALRS FTR70MB RDEVBLOK RECMAP R2 TYP2314 CP!XADD Fl RDEVCODE RECHAX R3 TYP3330 CPEXBLOK F3 RDEVCYL RECPNT R4 TYP3340 tMKPRG BRING DMKPBVLG INTPRL RO R7 TRANMODE VMEXTClI VMPSTAT YO CPABEBD DMKPTRAN INTSVCL Rl R8 TREXADD VMEXWAIT VMPSW Y2 CPCREGO DMKQCNiT l!ONCLASS Rl0 R9 TREXINTC VMFPRS VMRSTAT Y4 CPCREG8 DMKTRCPG MONCODE R11 SVCNPSi TREXINTL VHGPRS VMSHADT Y6 CO DMKVATPF NORET R12 SVCOPSi TREXPERA VMIOPBD HISVCPND C8 DMKVATPX PERADD R13 TEMPR14 TREXPERC VMIOiAIT VMTMOUTQ DEFER DMKVATSX PERCODE R14 TEMPR15 TREXPSW VMOSTAT VMTRBRIN DMKCFl!BK ECBLOK PRNPSW R1S 'HMER TBEXT VMPAGEX VMTRCTL DMKDMPDK EXTPERAD PROBMODE R2 TRACCURR VMBLOK VMPEND VMTREXT DMKDMPGR EXTPERCD PROPSW R3 TRACEND VMCFRUN HIPERCM VMTRPER DMKDSPB FFS PSA R4 TRACFLGl Vl!CFWAIT VMPERPND YMTRPRG tMKDSPCH Fl QUANTUMR RS TRACSTRT VHECEXT VMPRGIL VMTTIHE DMKPERIL INTPR RUNUSER R6 TRAC03 VHESTAT VMPRGPND VMY370R CC Dl!KFREE F2 IOEFPNT PAGEiAIT R13 SiPCODE CORTAELE Dl!KFRET F3 IOBIRA PGSRATIO R14 SiPCYL C1 I'\j 3 0 PI ~ ..... CD I ("t 0 I t-4 W P' tj .... t1 ..... (I) H 0 0 ("t 0 H .... t:1' (I) C1 en en !:tI (I) CD HI CD H W U1 ::I en (I) \0 0 CD w 0'\ ~odule n External References (Lahels and Modules) ~ 0 3 tMKPRV < 3: " .. w ~ 0 til Io.cj lJl r+ (1) EI 0 IQ 1-" 0 '" t:I p.. ~ H 0 t:r ..... (1) EI t::;I r+ (I) H 51 1-" ::s 'r+" 1-" 0 ::s G'l c 1-" p.. (1) CHANID DMKPllGSM EITCRO F7 R10 R9 VCHBMI VMGPRS VMPIINT CPCREGO DMKPSAFP EITCR9 INTPR R11 SWPFLAG VCHSEL VMINQ VMREAL CPOID DMKPSASP EITMODE INTPRL R12 SiPKEY1 VCHTYPE VMINST VMllSTAT CPOMCELL DMKPTRAN EITPERAD MNCLINST R13 SWPSHR VMBLOK VllINVFAG VMRON CFOVERSN DMKTMRTN EITSHCRO MNCOSIM R14 TEMPSAVE VMCHSTRT VMINVSEG VMSEG CO DMKTRCPE FFS PERGPRS R15 TRANMODE VMCHTBL VMIOINT VMTRBRIN C1 DMKTRCPV F15 PERSALT R2 TREICR9 VMDSP VMNEWCRO VMTRCTL DEFER DMKVATAB F16 PROBMODE R3 TREIINTC VPlDSTAT VMPEND VMTIlEIT DMKDSPA DMKVATEI F240 PROPSi R4 TREIIN 1 VMECEIT VMPERCM VMTRPER ACORETEL CPCREG8 DMKDSPE DMKT.I'lRVT F4095 PRCBMODE Rl SAVERETli TRACFLG1 HlDISC VMPERPND VMTREXT ZEROES APAGCP CRESIMD DMKDSFCH DMKTBCIT F60 PSASVCCT R10 SAVER12 TRACSTRT VMDSTAT VMPSW VMTRMID ASYSOP CSW DPlKFREE DMKTRCPE F8 QOAHTUMR R11 SAVER13 TRAC01 VMESTAT VMQSEND VMTRSVC ASYSVM CUE DMKFRET DMKTRCSV INTEl RDIYBASE R12 SAVER2 TRAC02 VMEITCM VMRSTAT VMTSEND BRING cO DMKPRGRF DMKV!RD INTEXF RDEVELOK R13 SAVESIZE TREnN 1 VMEXiAIT VMSEG VMTTIME BOSY C1 DMKPTRAN DMKVERO INTSVC RDEVFLAG R14 SA VEiRK2 TREIT VMFPRS VPlSHR iAIT CLASGRAF C8 DMKPTRUL EIOPSW INTSVCL RDEVHIO R15 SPI TRQBBPNT VMGPRS VMSYSOP XPAGNOM CLASTERM DEFER DMKQCNCL EITMODE LOCK llDEVNICL R2 SVCNPSi 'IRQBFPNT VMINST VMTERM XRIGHT24 CORFLAG DFRET DMKQCNWT FFS NICBLOK RDEVTYPC R3 SVCOPSi TRQBLOK VMMCR6 UITLEVEL X2048BND COR SHARE CORTABLE CPABEND CPCREGO DMKCFMBK DMKCVTEH DMKDMPDK DMKDMPGR DMKRNHND DMKSCHTQ DMKSCNRD DMKSTKIO F1 F15 F2 F240 NICNAME NICSIZE NICUSER NORET RDEVUSER llUNPSi RUNOSER RO R8 R4 SAVEAREA SAVENEIT SYSTEPI TIPlER TRACCORR TRACEND TRQBVAL VMADSTOP VPlBLOK HICPOTMR VMMICSVC VMMSVC VMCSTAT VMPEND VPlTMOUTQ VMTPlRIHT VMTRBRIN VMTRCTL yO Y2 Y4 Y6 ACORETBL CORFREE CPEXR13 DMKFRETR FFS PAGINVAL R14 SAVERO SAVEiRK9 SWPSHR VMPGiAIT ZERCES ARIODV CORICLCK CPEIR2 DMKPAGIO FO PAGREF R15 SAVER 1 SWPALLOC SWPTRANS VMPGWRIT ASYSVPI COBLCNT CPEXR7 DMKPAGQ Fl PGREAD R2 SA VER 11 SWPCHGl SWPVPAGE VMPSTAT AVMREAL CORPGPNT CPEIR9 DMKPGTPG F4 PGiRITE R3 SA VER12 SiPCBG2 SYSTEM VMRPAGE BALRSAVE CORRSV CPEISIZE DMKFGTFR F4095 PSA R4 SAVER13 SiPCODE TIMER VMRSTAT BALRO CORSHARE CPSTAT DMKQCNWT F4096 RDEVBLOK R5 SAVER2 SiPCYL TYP2305 VMSEG BALR2 CORSiPNT Cl DMKSCHDL F8 RDEVTYPE R6 SAVER3 SiPDPAGE VMBLOK VMSIZE ERING CORTABLE DEFER DMKSCHN 1 IOERETN RO R7 SAVER7 SWPFLAG VMESTAT VMSTEALS CORBPHT CPEIADD DMKCFMBK DMKSCHN2 LOCK Rl R8 SAVEiRKl SWPKEY 1 VMINVPAG VMTIMER CORCFLCK CPEXBLOK DMKDSPCH DMKSTKCP NCRET Rl0 R9 SAVEiRK2 SiPKEY2 VMNDCNT VMTTIME DMKDSFB DMKVATLA F4 PSA R5 TREINSI VMESTAT VMPERPND VMTRPRV DMKDSPCH DMKVATRN F5 RONCRO R6 TREIPERA VM:EITCM VMPRGIL VMVCRO DMKHVCAL DMKVIOEI F6 RO R7 TREIT VMEITPHD VMPSTAT VMv310R 0 p,. C ..... (I) I r+ 0 I t-I '" t:r (I) ..... 0 DMKPSA ~ (I) BRING DMKFERIL ECBLOK F60 R1 R8 VCHBICK VMEIWAIT VMPSW WAIT tMKPTR CORCP CPEXFPNT DMKDSPNP DMKSYSOW OiNDLIST Rl1 SAVEAREA SAVEiRK3 SiPRECMP VMPAGES VMiCNT CORFLAG CPEXMISC DMKFR!E DMKSYSRM OiNDRDEV R12 SAVEREGS SAVEWRK5 SiPREFl VMPGREAD XPAGNUM CORFPNT CPEIRO DMKFRET DMI ' Df!KRNH It:J:I 11:>1:1 It"'I Df!KSPL Df!KSPL Df!KUSO DMKSPL DftKRSE DMKCKP DMKCKP DPIKHVD DMKWRft DMKRSE DMKCKP DMKCKP DPIKHVD DMKWRM Df!KWRf! DPIKHVD DMKWRft DMKELE DMKMCH DPIKCCW Df!KPAG DMKCDS DMKFGS Df!KCFS DMKPSA DMKNLD DMKQCN DMKSPL Df!KUSO DMKVSf EPlKVCA DMKWRM DMKVER DMKCKP DMKOPR DMKCNS DMKPAG DPlKCPI DMKFGT DPlKCQP DMKQCN DMKMON Df!KTDK DMKTDK Df!KPGT DMKMON DlilKTEK Df!Kf!ON DMKPSA DMKTRC DMKPGT DMKVDB DMKVDB DMKTDK DMKPGT DMKVDE DMKPGT DMKTDK DMKVDE DMKCPI DMKCPI DMKCKF DMKSCN DMKCPS DMKCPS DMKCPI DMKCPV DMKCPV DMKCPS I 11-3 10 I Iar: 10 It! Ie: DMKWRM It-' ItltI In I~ 10 Itn Itil I~ Df!KCPI DPIKPTR DMRCPV DMKRPA DMKCSO DPIKSCH DMKDGD DMKSPL DMRDf!P DMKUDR EMKEDM DMKUNT ItltI DMKFRE I~ ItltI DMKVMA 1= ItltI HZ: In Itill Df!KDAS DMKRGE DMKDf!P DMKRNH DMKERM DPIKRSP DMKGRF DMKSAV DMKIOG DMKEEft DMRCQP DMKMON DftKlOG DMRDlA DMKSCN DMKMON DMKMON DMKSSP DMKSCN Dl!IRNES DMKMCH DMKUDR DMKPlID DMKVCN DMKMSG DMKVER DMKVDB DMKVDE DMKVDE DMKCQP DMRCQP DMKCPV n I'd DMKSSP DMKSCN DlIIKSSP DMKVCH t-' I» t:J' CD ...., t+ 0 I :z 0 ~ c:: ..,.0 1'1 CD n rt 0 1'1 ..,. CD en ....CD n 1'1 0 en en = CD ..... ~ W -....J w 1'1 CD :::s n CD w -.J 01:: Label Count References ARIODV 000045 D!!KACO DMKDRD D!!KUDR DMKCKP DMKACO D!!RCKP DMKACO D!!RCRP DMKCKS D!!KCKS DMKACO D!!KCPI DMKACO D!!KDIA DftKNES D!!KUSO Dl'IKCPC DftKBSE DftKBLD D!!KCCi DMKQCN D!!KCPI DMKCPI DMKSCB DMKVAT DMKVAT DMKCPI D!!KVCA DMKCCi DMKCCW DMKCNS DMKCPI DMKCNS Df!lKCDS DMKCSU Df!lKCCIII DMKVDB DMKCPI DMKCCW D!!KDGD DftKPRG DMKTMR DMKRGA DMKESC D!!KRGA n '"'=' t-t <: :. w " -.J 0 til '< til r+ (D EI t-t ARIOPR ARIOPU ARIORD ARSPAC ARSPPR ARSPPU ARSPRD ASYSLC ASYSOP ASYSVl'I 000004 000008 000004 000003 000011 000009 000025 000022 000014 000098 0 .... I.Q 0 ATTN 000055 I» ::s p. '"'=' t1 0 b" ..., (D &I t::J (D r+ (I) t1 .... II ::s I» ....r+0 t:S AVMREAL 000025 BALRSAVE 000077 BALRO EALR 1 BALR 11 EALR12 BALR13 fALR 14 BALR15 EALR2 BALR3 fALR6 BALRS EALR9 BLANKS 000005 000021 000001 000001 000001 000008 000001 000027 000007 000005 000005 000004 000121 BLKMPI ERING 000002 000134 Cil ....c: ~ (I) fSCAUSER 000004 BSCBLOK 000005 BSCCNT 000009 DMKCPV DMKPAG DMKCQP DMKPGT DMKCKP D!!KLOG DMKVDB DMKSPL DMKCSO DMKCKS D!!K!!CN DMKWRM DMRCRS DMKCQG D!!KCQG DMKBLD D!!KCPS DMKBLD DMKDRI: DftKNET DMKVDB DMKCPft DftKSSP DMKCPG DftKCPM DMKRNH D!!KPGT DMKCVT DMKCQG DMKCQR DMKCQR DMKCPS DMKLOG DMKCQR DMKCSF Dl'IKCSP DMRCPT DMKMSG DMKCRF DMKEDM Dl'IRPGS Dl'IKVl'IA D!!KCNS DMKVIO DftRCPS DMKCPI DftKSCN DMRCSP D!!RCSU DMKCST D!!KCKP D!!KMSi D!!RCNS Dl'IKPRE DMKPGT DMKCSU DMKSPL DMKCSU D!!KLOC DMKPSA DMKCPB Dl'IKGRP Dl'IKPSA D!!REDM DMKUSO Dl'IRDl'IP Dl'IKLOG D!!KQCN DMKCPI D!!KIOS Dl'IKPTR DMKSPL DftRDDR DMKVMI DMKCPV DPlKCPV DMKUNT DMKDIR DMKDMP DftKPBE DMKCSO DMKVAT DftKMCH DMKCVT DMKVCA DMKPGT D!!RSCN DMKVI:B DMKVDS DMKLOC DMKVAT DMRVCA DMRVDB DMRCPI Df!lKCIIIS DMKCPI DMKPGT DMKVCA DMKCPC DMKDIA D!!KRGA DMKVDS D!!KVIO DMKCDB D!!KDRD DftKPRV Df!lKTRC DMKRGB DMKRGA DMKCVT DMKSCB DftKVDB DMKSCN DMKD!!P DftKVCA D!!RPTR DMKSCN DftKCPD DMKERM DMKRNB DMKVSP DMKCPM DMKGRP DMKRSP DMKCPS DMRHVC DMKSCB DMKCDS DMKDSP DftKPSA Df!lKUDR D!!RCPD D!!KFRl'I D!!KFTR Dl'IKVAT DMKCPG DMKGIO DftRRGA DftKVCH DMKCP~ DMKDSP Dl'IKNLD Dl'IKVDR DftKCKP DftKVCA DftKCPP DMKCBS DMKSCH DMKPTR DftKDIA Df!lKRGB DMKCPI D!!KNES DMKCPS DMKNET D!!KCCB DMKGRP DMKVCB DMKCSO DMKCKP DMKCSO DMKCQR DMKPTR DMKCSO DMKSCN DMKDIA DMKSPL DMKD!!P DMKSSP I» b" ..., (D I r+ 0 DMRSPL I :3 0 p. DMRUSO ..., Dl'IKDRD Dl'IKUDR DMKUSO DMKCPS Dl'IKLOG Dl'IKRGA D!!KNLD Dl'IKUSO D!!KVCB DMKCPV D!!RMCC Dl'IKRNH D!!KSPL D!!KUSO DMKVSP (D DMKCQP Dl'IKftCB Dl'IKSCll D!!KCSO Dl'IKl'IID Dl'IKSPL DMKDAS DMKl'ION DPlKTHI DMKDSP DMKPMT DMKGRP DftKIOS DftKRNB ~ n t1 0 til til l:O (D I-h (D t1 DftKPGS DMKDIA DMKVMA DMKPTR D!!KPRE DftKRPA DMKLOC DMKSCH DMKPGT DMKVIO DMKPTR DftKTMR DftKVCA DMKVftA DMKCNS DMKLNK Dl'IKSPL Df!lRCPB DMKLOG DMRTHI DMKCQG DMKMCC Dl'IKTRC D!!KCQP DMKMSG DMKUDR Dl'IKCQR DMKNES DMKUSO DMKCSO DMKNET DMKVCA DMKCSP DMKNLD DMKVCN DMKCKS Dl'IKGRP DMKRGB DMKVCN DMKCNS D!!KHVC DftKRPA Df!lKVER DMKCPB DMKHVD DMKRSP DftKVIO DMKCPI D!!KIOF D!!KSCH DftKVftA DMKCPV DMKIOG DftKSEP DMKVSP DMKCSO D!!K!!CC DftKSNC Dl'IKWRl'I DMKCST D!!KNLD Dl'IKSPL (D ::s 0 (D til CD 0 ....0 Label Count References ESCCOPY BSCECCi1 ESCECCi2 BSCEBQ ESCETB BSCFLAG ESCFLAG 1 BSCIGB ESCIBDE! BSCLINE ESCLOG BSCOPIED ESCPCCi 1 BSCPCCi2 ESCPCCi3 BSCPCCi4 ESCRCVI: BSCREAD ESCREGEB BSCRESF ESCRROBB BSCRSTRT ESCRVI BSCSCAli ESCSCCi 1 BSCSCCi2 ESCSCCi3 BSCSEL ESCSENI: BSCSENSE ESCSIZE BSCSIZE1 ESCSIZE2 BSCSPTR ESCTMRQ BSCTSTRQ ESCUCOPY BSCUECCW EUFCNT BUFFER 000009 000004 000004 000004 000005 000040 000008 000004 000006 000002 000005 000004 000004. 000002 000003 000006 000008 000024 000003 000028 000006 000002 000003 000007 000006 000005 000003 000012 000005 000015 000002 000004 000001 000015 000006 000002 000006 000003 000027 000107 BUFIN 000003 DMKRGA Dl!KRGA DMKRGA Dl!KRGA DMKRGA Dl!KRGA DMKRGA Dl!KRGA DMKRGA Dl!KRGB DMKRGA DMKRGA DMKRGA DMKRGA DMKRGA DMKRGA DMKRGA Dl!KBSC DMKRGA Dl!KBSC DMKRGA Dl!KRGA DMKRGA Dl!KRGA DMKRGA DMKRGA DMKRGA Dl!KRGA DMKRGA Dl!KEGA DMKRGA DMKRGA DMKRGB DMKRGA DMKRGA DMKRGA DMKRGA DMKRGA DMKCFM DMKCDB DMKLOG DMKCPI ~ t:I . W ....t:I t1 CD 0 r+ 0 .... t1 CD en DMKRGE DMKRGB DMKRGB DMKRGE DMKRGB DMKRGA DMKRGA DMKRGB DMKRGB DMKRGB DMKRGE DMKRGB DMKRGB DMKRGB DMKRGE DMKRGB DMKRGE Dl!KRGE n I'tI t-t DMKCFS DMKCFG DMKMSG DMKVCB DMKCPI DMKCFM DMKRGA DMKCST I:MKCFS Df!KRSF DMKERM DMKCPI Df!KSCN I:MKGRF DPIKCSO DMKLOG DMKCSP DMKRGA DMKCST DMKRSP DMKCSU DMKVCN DMKERM III DMK GRF DMKLNK t:r CD I-' I ~ o • 3: o ~ C I-' CD n t1 o en en !::tj CD Ht CD t1 w -..J U1 CD t:I o CD w -..J label Count References n I'd 0'1 EUPINLTH 000018 BUPNXT 000026 ~ ::I: "w -..J BUPSI ZE EUSOUT BUSY 000026 000005 000044 0 til Ioc:I en rt- CACTDEV CACTLIB CACTLTR CAW 000002 000002 000002 000073 CC 000845 (1) II f:"I 0 ....0 IQ CCC 000041 CCCPUID CCDES!!D CCDEVTYP CCHADDE CCHANlt CCHCAV CCHCHNL CCHCMDV CCHCNTB CCHCPU CCHCUA CCHDAV CCHDI CCHHIO CCHINTE CCHINTPC CCHLOG!t5 CCHLOG60 CCHLOG70 CCHLOG80 CCHRCV CCHREC (CHSIOE CCHSIZE 000001 000003 000001 000001 000006 000001 000012 000010 000005 000003 000002 000010 000003 000002 000001 000007 000002 000001 000001 000002 000003 000005 000002 000002 PI t:J Cl.I I'd t1 0 t:r ~ (I) • 0 CI) rt- (I) t1 II .... t:J ~ .... rt0 =' en .... ~ Cl.I CI) DMKCPft DMKCDB DftKVCN DMKCPM DMKRNH DMKCKP DMKVIO D!!KBliH DftKNET D!!KIlES DftKCCH DMKVftI DMKACO D!!KD!!P DftKRSE DMKVDB DMKBSC D!!KESP DftKCCH D!!KDIA DMKCCH D!!KCCH DMKCCH DMKCCH DMKSEV D!!KEIG DMKSEV DMKSEV DftKCCH DMKEIG DftKEIG DMKCCH DftKCCH DMKSEV DMKCCH DMKSIX DMKSEV DMKCCH DMKCCH DMKCCH DMKCCH D!!KCCH f:"I DftKERM DMKCFG DMKGRP DMKCPM DMKINK DMKC:fS DMKRGA DMKCPI tftK RGB DMKCSO DMKCSU DMKlliK DMKCPI DMKRSE DMKCBS DMKVMI DMKERM DMKGRP DMKLNK DMKLOG DMKRGA DMKRSP PI DMKLOG DMKMSG DMKRSP DMKSCli t:r (1) ~ DMKCPI DMKDDR DftKDIR DMKDMP DMKFMT DMKIOS I rt- DMKPSA DMKRliH DMKSSP DMKVCA 0 I :.: 0 Cl.I .... ~ DMKRBH D!!KRBH DftKCKP DftKCBS DMKCPI DMKDftP DMKPMT DftKIOS DMKOPR DftKSAV DftKSSP DMKTRC DMKVIO DftKBSC DMKPMT DMKRSP DMKVMI DftKCCH D!!KSlV DftKCCW DMKGRP DMKSAV DMKVSP D!!KCNS DMKTAP DMKCKF DMKIOS D!!KSEF DMKWRM DMKCFI DMKUBT D!!KCNS DftK!!CC DMKSPL DftKCPI DMKMOB DMKSSP DftKCSO DMKBLD DftKTDK DMKDAS DMKCPR DMKUCB DMKDDR DMKPAG DMKUCS DftKDGD D!!KRGA DMKUDR DMKDIA DMKRGB DMKVCA DMKDIR DMKRNH DMKVCN D!!KDAS DMKEIG DMKGRF DMKHVC DMKIOE DMKIOS D!!KMSW DMKRSE (1) n t1 0 en til = (1) tit (1) t1 (1) t:J D!!KRBH 0 (1) DMKSIX DMKS!V DMKSIX DMKSIX DftKSIX DMKSEV DMKSEV DMKSIX - DMKSIX DMKSIX DMKEIG DMKEIG DMKEIG DMKSEV DMKSIX tn CD (1 ....1+ 0 t:S w Label Count References CCBSIZE 1 CCBSBSB CCBSTG CCBTIO CCBUSV CCPADDB CCPARft CCPEBTllY CCPftAXID CCPNUIE CCPPSIZE CCPBESID CCPROGID CCPRSTAT CCPRSTEP CCPRSTYP CCPSIZE CCPTEP CCPTPEP CCPTYPE CCRECTYP CD 000002 000001 000004 000002 000005 000001 000004 000001 000001 000003 000005 000002 000003 000001 000001 000001 000003 000002 000001 000003 000002 000099 CDC 000038 CDCTLlli CDISPLY CE 000001 000001 000077 CFSTOP CBANID CBBATTJ CBBCENT CBBCNTL CBBEOFL CBBBIO CBBftNOP CBBlO70 CBBRDBK CBBREAD CBBREST CBBSIZE 000006 000003 000013 000003 000002 000014 000015 000005 000020 000007 000008 000012 000003 DftKCCB DftKCCB DftKSEV DftKCCB DftKEIG DMKSNC DftKNLD DftKNLD DftKNLD DMKliLD DftKNLD DMKliLD DftKCCB DMKliLD DftKNLD DMKNLD DftKNLD DMKliLD DftKNLD DMKliLD DftKCCB DftKCCW DftKRGB DftKBSC DMKRSE DftKliET DftKNES DftKCKP DMKRSE DftKCPS DftKIOG DftKVCA DMKVCA DMKVCA DftKVCA DftKVCA DMKVCA DftKVCA DMKVCA DMKVCA DMKVCA DMKDIA DMKSIX DMKSEV DMKSIX DMKSNC DftKSNC DMKSNC DftKSNC DftKCBS DftKSSP DftKCCB DMKRSP DftKDAS DftKTAP DftKCNS DftKTAP DMKDDR DftKUNT DftKDAS DftRUNT DftKDGD DftKVCA DftKGRF DftKDIA tMKVCN DMKBYC DMKDIR DftKVMI DMKIOE DMKFftT DMKVSP DMKIOF DftKGRF DftKISM DftKOPR DftKRGA DftKIOS DftKftSW DMKNLD DftKRNB DftKCNS DMKRSP DMKftCC DftKPRV DftKCPI DMKSAV DMKftON DMKtDR DMKSSF DMKDIA DMKYCA DMKDIR DMKVCN DftRDftP DMKVIO DMKFMT DftKVlH DMKGRF DftKVSP DMKHVC DftKIOS DMKRGA n to DMKYIO t-' ~ 0CD ~ DMKVCA I 1+ 0 I =-0 ~ d ~ ....t:1 CD H CD n (1 H 1+ 0 H en en 0 .... l:I:1 en Ht CD CD CD H w ...,J ...,J CD t:S (1 CD w ooJ CD Label Count n References I"tj t"4 < or: w " ooJ 0 VI I< en cT CD B 1:-1 0 IQ ~. 0 PI = 0. ~ H 0 tr .... (1) iii t:::I CD ("t (I) H e ~. t:I PI ("t ~. 0 t:I en CI ~. 0. (I) CHBWAIT CHBWEOP CHBWRIT CHC CBGRDV CBGSFB CBGSBQ CBIBLOK CBICfilDE CBICfilDT CBICNCT CBIDATN CBIFLAG CBIIDAi CBINCCW CBIOTBH CBIPKEY CBIRCNT CBISTAT CBIYADD CBYBLOK CHYCfilDB CBYCfilDT CBYCNCT CBYDATN CBYFLAG CBYIDAi CBYNCCi CBYOTBR CBYRCNT CBYSTAT CBYIADD CKCMASK CKPBITS CKPBKSZ CKPBLOK CKPNAME CKPRfilAX CKPSIZE CLASDASD 000014 000002 000009 000014 000002 000012 000004 000013 000010 000014 000009 000005 000057 000004 000012 000009 000005 000010 000020 000007 000005 000001 000003 000004 000006 000032 000001 000004 000001 000005 000003 000005 000001 000003 000001 000004 000003 000002 000003 000108 DMKCFP Dl'lKYCA DMKVCA DMKBSC DfilKCSO DfilKCKS DMKCSP DMKCFP DMKVCA Dl'lKVCA DMKCFP DMKYCA DMKCFP DMKVCA DMKVCA Dl'lKCQG DJ!IIKVCA Dl'lKVCA DMKVCA Dl'lKCQG DJ!IIKDIA Dl'lKVCA DMKVCA Dl'lKVCA DMKVCA Dl'lKVCA DMKVCA Dl'lKVCA DMKDIA Dl'lKVCA Dl'lKVCA Dl'lKDIA DMKCPI Dl'lKIiNB Dl'lKRNB DMKENB DMKRNB DMKHHB DMKRNB DflKACO DMKDIR Dl'lKSCN ~ DMKVCA tr .... (1) DMKCNS 'DMKGRF DfilKHVC DfilKIOS DMKRNB DMKRSE DfilKTAP I DMKUNT cT 0 DMKCSP DMKWRM DfilKCQG DfilKCSU DfilKDfilP DMKRSP DMKDIA DMKVCA DMKVIO DfilKSPL I DMKVSP D: 0 0. CI .... CD n DMKYCA DMKVCA H 0 DMKVIO [II en !:O Dl'lKDIA DJ!IIKVCA (1) Hl (1) H CD Dl'lKDIA DMKVCA = DJ!IIKVCA 0 CD DMKVCA DMKWRM DJ!IIKWRM DMKWRM DMKWRM DMKCCW DIHDMP DMKSSP DMKCKP DMKEDM DMKTRC DMKCPI DMKGIC I:MKVCE DMKCPS DMKIOC DMKVDB DMKCPV DMKIOE DMKVDR DMKCQG DMKIOF DMKVDS DMKCQP mUIDS DMKVER Dl'lKCQR DMKLNK Dl'lKVIO Dl'lKDDR DMKLOG DMKVfH DMKD:EF Dl'lKl'lON DMKDGD Dl'lKl'lSW label Count CLAS GRAF 000060 CLASSPEC 000061 CLASTAPE 000064 CLASTERl!I 000138 CLASUR1 CLASURO til (1) 0 rT ...,. 0 I:l . W t:I ...,. t; (1) 0 rT 0 t; ...,. (1) [Il Cl!IDREJ CNTLBTU COMPFES COfilPSEL COMPSYS CONACTV CONADDR CONCCW 1 CONCCW2 CONCCW3 CONCCW4 CONCNT CONCNTL CONCOMND CONDATA CONDCNT CONDEST CONESCP CONEXTR CONFLAG CONLABEL CONOUTPT CONPABM CONPNT 000076 000058 000010 000005 000009 000015 000006 000028 000032 000083 000037 000034 000030 000069 000024 000008 000081 000031 000004 000021 000001 000006 000029 000031 000109 000091 References DlUCCW Dl!IKD1R DMKTRC DMKBLD D!!KBVD DMKUSO Dl!IKCCW DMKG10 Dl!IKBLD DMKCQP DMK10E DMKUSO DMKCCW Dl!IKDEF DMKTRC DMKCCW Dl!IKDEF Dl!IKVCH DMKCNS DMKRNH DUEIG DfilKE1G DMKCCB DfilKCNS DMKCNS DMKCNS Dl!IKCNS DMKCNS Dl!IKCNS Dl!IKCNS DMKCNS DMKCNS DMKCNS DMKD1A Dl!IKIiNB Dl!IKCNS DMKRBB Dl!IKCN S DMKBGA DMKCNS D!!KCNS DPlKCNS Dl!IKCFl!I D!!KEDl!I DMKUSO DMKCCW D!!K1OE DMKVCH DMKCFS DMK10E DMKCCW DMKCQR Dl!IK1OF DMKVCH DMKCFP DMKD1R DfilKVCH DfilKCFP Dl!IKD1R Dl!IKVDR DMKD1A Dl!IKCFP Dl!IKGRF DMKVCB DMKCFP DMK10F Dl!IKVDB DMKCKP DMK10F DMKCFM DMKCSP DMK10S DMKVCN DMKCKP Dl!IKDRD DMKVDR DMKCFS DMKDMP DMKVDS DMKRNB Dl!IKCFT I:MKBVC DMKVCN Dl!IKCFT DMK10S Dl!IKVDR DMKCPB DMK1CS DMKCFP DMRCST DMKLOG DMKVDR DMKCPB DMKEDM DMKVDS Dl!IKCKP DMKEDfiI DMKV1C DfilKRSF Dft.KSEV DfilKSEV Dl!IKE1G DfiKGRF Dl!IKGRF Dl!IKGRF Dl!IKGRF DfilKD1A Dl!IKGRF DMKGBF DMKQCN DMKRNH Dl!IKD1A DMK10E DKK51X Dl!IKS1X DfilKSEV DMKRGA DMKftON DMKBGA DfilKBGA DfilK10E DfilKRGA DMKl!ION DfilKBGA DMKRBB DftKQCN DMKRGE DMKRGB Dl!IKNES Dl!IKBGB DMK(;CN I:MKRGB Dl!IKGBF DMKBGA DMKGRF DMKRGA DMKRNH DMKRGB DMKGRF DMKGRF DMKEDM Dl!IKCKP DMKHVD DMKVDS Dl!IKCKP DMKLOG DMKVDS DMKCP1 Dl!IKl!ICC DMKCFT Dl!IKDDR Dl!IKNES DMKVDS Dl!IKCPS Dl!IKHVD DfilKV10 Dl!IKCPB DMKHVD DMKVSP DfilKVCN Dl!IKCP1 DMK10E DMKV10 DMKCPB DMKNES DMKV10 DMKCPS DMKMON DMKCKP DMKDFF DMKNET DMKV10 DMKCQG DMK10F DfilKVl!I1 DfilKCPS DMK10F Dl!IKCPS DMK10F Dl!IKCPV DMK10S D!!KCQG DMKOPR D!!KCQP DMKPSA Dl!IKI:EF DMKQCN Dl!IKD1A Dl!IKSSP DMKCQG Dl!IKBET DMKVM1 DMKCQG Dl!IKSSP Dl!IKCBS DMKD1A DMKPSA Dl!IKWRl!I Dl!IKCQP Dl!IK1OS Dl!IKVSP DfilKCQG Dl!IK1OS DMKCQP D!!KNLD DMKWRl!I Dl!IKCQP DMKVCH DMKCPB DMKD1R DMKQCN DMKCQR Dl!KQCN DMKDEF Dl!IKRBB Dl!IKD1A DMKSCN Dl!IKD1R DMKTRC D!!KCQR DMKVDB D!!KCP1 Dl!IKEDM D!!KRGA DPlKDDR DMKVDR DMKCPS DMKHVC DMKSCB DMKDl!IP Dl!IKVDS DMKCPV DMKHVD DMKSSP Dl!IKVl!I1 DMKCQG Dl!IK1OC DMKTRC Dl!IKCSO DfilKRSE Dl!IKCSP DMKRSP DMKCST Dl!IKSCN Dl!IKCSU DfilKSPL Dl!IKSSP DMKCQP Dl!IKRSE Dl!IKCSO Dl!IKRSP Dl!IKCSP Dl!IKSCB Dl!IKCST DMKSSP DMKTRC DftKRGA Dl!IKRNH DMKBNH DMKNET DftKRGB DftKRBH DfilKBGA DMKRGB DMKRGA Dl!IKBNH Dl!IKBGB DMKBNH Dl!IK1OE Dl!IKRNH DMKNES DMKQCN DMKRGA DMKRGE DMKRNB DMKVSP DMKBNB DMKRGB DMKRNB n I'd t"'4 AI 0- D!!KQCN DMKQCN DMKGRF D!!KRGE DMKRGA DMKQCN DMKRNB DMKRGB D!!KRGA (j) ~ DMKRNH DMKRGB I DMKRNH rT 0 I 3: 0 p. ~ ~ (1) n t; 0 [Il [Il !::tI (1) Hi (1) w "-oJ \D t1 (j) I:l 0 (1) w c:o Label count CORRESP CORRETR CORRSV3 CORRTAG CORRTBY CONSPLT CONSBID CONSTAT CONSYNC CONSYSR CORTACT CONTASK CONTCMD CONTSIZE CONTSKSZ CONUSER CORBPRT CORCFLCK CORCP CORDISA CORFLAG 000017 000030 000022 000003 000012 000014 000013 000126 000005 000040 000003 000119 000027 000036 000016 000012 000020 0000 17 000010 000002 000056 CORFLUSB CORFPNT CORFREE CORIOLCK CORLCN'I CORPGPNT CORRSV CORSBARE CORSiPNT CORTABLE 000001 000052 000003 000012 000008 000034 000008 000014 000019 000087 CPABERD CPCREGO CPCREG8 CPEX CPEIADD 000009 000018 000019 000009 000045 n R.eferences '" 1:"4 0 c:: 3: "w .. ...,J 0 til Io.oC: en en r+EI 1:"4 0 IQ 1-'- n I» ::l j;lo '" t; 0 ..., tT en EI t::I en en ("t 1"1 • 1-'::l I» ("t 1-'0 ::l en -= 1-'j;lo en D~KCRS DMKCRS DMKGRF DMKRRH DMKCNS DMKCNS DMKRRH DMKCNS DMKCNS DMKDIA DPlKliET DMKCNS DPlKRNH DMKCNS Df!KCRS DMKCNS DMKMCB DMKBLD DMKCPI DMKEDM DMKELD DMKPSA DMKEDM DMKBLD DPlKCPI DMKMCB DPlKBLD DMKBLD DMKCFS DMKCCi DMKBLD DMKBLD DMKPlON DMKDMP DMKCKP DMKCPS DMKDSP DMKACO DPlKPAG DMKVMA DMKGRF DfIIKGRF DMKQCR DMKQCR DMKQCN DMKRGB DMKRGA DMKRGA DMKRGB DPlKRGE I» tT DMKRRH DMKRRB en ..., I ("t DPlKRRH DMKQCN 0 I 3: DMKRNH 0 j;lo DMKGRF DMKGRF DMKNES DPlKRRH DMKEDM DfIIKQCR DMKQCN DMKNET DMKRGA DMKRGB DMKRNH DPlKRGE DMKRNH DMKRNB DMKGBF DMKPlON DMKRES DMKQCN DMKRGA DMKGBF DPIKEDM DfIIKQCN DMKPGS DMKCPI DfIIKDMP DMKMCH DfIIKCCi DMKPTR DMKQCN DMKGRF DMKRGA DMKPTR DMKCPV Dl'!IKEDM Df!KRGA DMKQCN DMKRGE DMKRPA Df!KFGS DMKMCC Df!KRGE DfIIKRGA DMKRNB DMKSCH Df!KPTR DMKMON DMKRRH DMKRGB DMKRRH DMKUDR DMKRPA DMKPTR DMKSCH DfIIKCDS DMKRPA DfIIKCFS DMKSCB DMKCPI DPlKVMA DMKCPV DPlKDMP DMKEDM Df!KMCC DMKMCB DMKMOR DMKPGS DfIIKCPI DMKEDM DMKPGS DMKPTR DMKCDS DfIIKPGS DMKCDS DfIIKCCW DMKCCW DMKPAG DMKEDM DPlKCPI DMKIOS DPlKVCA DMKCDS DfIIKPGT DMKVSP DMKCPV DMKPTR DMKPTR DMKDPlP DPIKEDM Dl'!IKMCH DfilKMOR DMKPGS DMKPTR DMKRPA DMKSCH DMKUDR DMKRPA DPIKSCH DMKDGD DMKPTR DMKEDl'!I DMKCDS DMKCDS DMKPGS DMKPRG DMKDSP DMKMCC DMKFRE DMKSCE Dl!KFGS DMKCPI DPlKCFS DMKPSA DPlKFSA DMKIOS DMKMCR DMKMCB DMKPGS DMKPTR DMKRPA DMKUDR DfIIKUNT DMKVfIIA DPlKPSA DMKDGD DMKCPI DMKPTR DMKPTR DMKEDM DMKCPV DMKRPA DMKSCE DMKMCH DMKDGD DMKSCH Dl!KVl'!IA DfIIKPTR DMKDMP DMKUDR Dl!KRPA DMKEDM DMKURT DMKnlA DMKFRE DMKVMA DMKMCC DMKMCB DMKPRG DMKPRG DMKPSA DMKPRV DMKPSA DPlKTMR DMKTRC DMKVAT DMKCFM DMKPTR DMKCPV DMKQCN DMKDIA DMKRGA DMKDSP DKKRGB DMKGRF DPlKRNH Dl'!IKIOE DKKRPA DMKIOS DPlKRSP DKKLOC DPIKSPL DMKMCH DKKUSO ..., -= en n DMKRGB i'1 0 DMKRNH en en !XI en HI en 1"1 en ::l n DMKMCH DKKMON DKKVCA en Label Count CPEIBLCK 000088 en (1) n .... ri" 0 1:1 W ....t:I 1"'1 (1) n ri" 0 1"'1 .... (1) en CPEIBPNT CPEXFPNT CPEIPllSC CPEXREGS CPEIRO CPEIR 1 CPEIR10 CPEXR 11 CPEXR12 CPEIR 13 CPEIR14 CPEXR15 CPEIR2 CPEIR3 CPEIR5 CPEIR6 CPEIR7 CPEIRa CPEIR9 CPEISIZE 000006 000033 000006 000009 000025 000001 000001 000005 000004 000004 000001 000001 000005 000001 000003 000005 000003 000001 000002 000057 CPlD CPftICAVL CPPllCOli CPRUN CPSHRLK CPSTAT CPSTATUS CPSTAT2 CPOlD CPOLOG CPOPICELL CPUftODEL CPOVERSN CPiAlT CRESCliiD CRESDQ CRESERL 000031 000007 000009 000002 000007 000001 000012 000019 000028 000001 000003 000002 000011 000008 000001 000001 000002 References DPIKACO DftKftCH DPlKSTK DPlKDSP DftKCDS DMKFAG DftKCFft DMKCDS DftKVSP DMKDSP DftKDSP DMKCPV DMKIOS DPlKCDS DftKCDS DPlKPTR DftKVftA DMKCDS DftKlOF DftKCDS DftKVSP DPlKPTR DftKACO DMKlOS DftKRSP DMKCCH DftKCFS DMKCFS DftKDSP DftKCCi DftKPTR DPlKCPI DMKCCi DftKCCH DftKCPl DMKBVD DftKCPl DMKCPl DftKCPI DMKIiNH DftKDlA DftKRliH D8KCDS DPlKftON DPIKOSO DPlKPAG DPlKDSP DMKPTR DMKCPV DMKCPS DKKCFK DMKPAG DMKVCA DMKSTK DMKlOE DMKCPS DPlKFGT DPlKVDB DKKCPi DMKPTR DPlKVftA DPlKDlA DftKQCN DftKVSP DPlKDSP DftKRGA DMKGRF DMKRGB DMKlOE DPlKRNH DMKIOF DftKRPA DPlKlOS DMKRSP DPIKIOF DPlKLOC DPlKPAG DMKPTR DftKRPA DftKSTK DftKVCA DPlKVSP DPlKDSP DMKGRF DMKlOE DMKMON DMKIOF DMKPAG DMKLOC DMKPTR DMKQCN DMKRGA DMKSPL DMKRPA DMKUSO DMKVCA DftKVDB DMKVMA DMKPAG DMKQCN DMKPTR DMKUSO DMKOSO DMKVDB DMKVSF DMKVCA DftKCPS DftKPlON DMKVDB DftKCPS DftKCPV DMKPGT DPlKVftA DftKCVT DftKDlA DftKPTR DftKVSP DftKDMP DftKDSP DMKQCN DMKGRF DMKRGA DPlKlOE DftKRGE DMKlOF DMKRNB DMKlOG DMKRPA DMKGRF DMKMCH DMKPGT DftKiRM DMKDGD DftKIOF DftKDSP DftKlOG DMKLOG DMKftCH DMKMON DPIKOPR DftKPRV DMKSSP DMKLOC DftKSPL DMKVMA DPlKPAG DPlKPAG DftKPTR DftKCDS DPlKLOC DftKSPL DPlKCKP DMKCPl DMKCPI DMKCFft DMKftCC DftKOSO DPlKCNS DMKLOG DMKCQR DMKDGD DMKDSP DPlKDSP DftKCFS DPlKCPI DPlKlOS DftKCPl DftKBVC DMKIOG DMKlOG DMKHVD DftKDSP DMKPRV DMKCPl DMKPlCH DMKVCA DPlKCPI DMKDSP DPlKCQR DftKIOE DMKVER n to t-' DMKlOF DMKlOS tMKIOG DftKVCA DMKftCH DMKOPR DMKPRV DMKSSP ~ 0(1) ..... I r+ 0 I 3 0 ~ c= ..... (1) n 1"'1 0 en en ~ (1) HI (1) 1"'1 (1) W CD ... 1:1 n (1) w .J W =' 0 CD .::: tv Label Count References R6 002567 DMKBLD DMKCFT DMKCSP DMKEDl!I DMK10S DMKNET DMKRSE DMKTMR DMKVER DMKACO DMKCFS DMKCSO Dl'IKDS P DMKISM DMKIiET DMKRPA DMKTHI DMKVER DMKACO DMKCFT DMKCS P DMKEDM Dl'IKIOS DMKNES DMKRGA DMKTAP DMKVCN DMKACO Dl'IKCNS DMKDAS DMKFRE DMKLNK DMKPAG DMKRSP DMKTH1 DMKVDS Dl'IKBLD DMKACO DMKCFS DMKCST DMK10C DMKMSG DMKIiNH DMKTHI (1 t'tj .::: < 3: "" l.rJ 0 til Ioc:I [Jl R7 002858 r+CD II t"'4 0 .... 0 I,Q I» = Po R8 002093 t'tj t1 0 0- ~ CD iii ~ CD r+- CD R9 002001 t1 II .... = .... I» rt' 0 ts Gl ....c: Po (1) SA VCREGS 000007 SAVEAREA 000143 DMKVDS DMKBSC DMKCKP DMKCST DMKERM DMKISM DMKNLD DMKRSP DMKTRC DMKVIO DMKBLD DMKCFT DMKC SP DI1KEDI1 DMKLDOOE DMKNLD DMKR SE DMKTMR DMKVIO DMKBLD DMKCKP DMKCST DMKERM DMKISM DMKNET DMKRGE DMKTDK DMKVDE DHKBLD DHKCPI DMKDDR DMKGIO DMKLOC DMKPGS DMKSAV DMKT MR DMKVER DMKCPG DMKBLD DMKCFT DMKCSU DMK10E DMKl'iSW DMKRPA DMKTRA DMKVER DMKCCB DMKCKS DMKCSU DMKFMT DMKLDOOE DMKPAG DMKSAV DMKUDR Dl'IKVMA DMKBSC DKKCKP DMKCST DMKERM DMKLNK DMKPAG DMKRSP DMKTRC DMKVMA DMKBSC DMKCKS DMKCSU DMKFMT DMKLDOOE DHKNLD DMKRNH DMKTHI DMKVDR Dl'IKBSC DMKCPS DMKDGD DMK GRF DMKLOG DMKPGT DMKSCH DMKTRA DMKV10 DMKCCW DMKCBS DMKCVT DMKFRE DMKLNK DHKFGS DMKSCH DMKUNT DMKVM1 DMKCCB DMKCKS DMKCSU DMKFMT DMKLOC DMKPGS DMKSAV DI1KUDR DMKVSF DMKCCH DMKCNS DHKCVT DMKFRE DMKLNK DMKCPR DMKRSE DMKTMR DMKVDS DMKCCH DMKCPV DMKDIA DMKHVC DMKMCC DMKPRG DMKSCN Df'IKTRC DMKVMA DMKCDB DMKCPB DMKDAS Dl!IKGIO DMKLOC DMKPGT DMKSCN DMKUSO DMKVSP DMKCCW DMKCNS DMKCVT DMKFRE DMKLOG DMKPGT DMKSCH DMKUNT DMKWRM DMKCCW DMKCPB DMKDA S DMKG10 DMKLOC DHKPAG DPlKRSP DMKTRC DMKVER DMKCCW DMKCQG DMKD1R DMKHVD DMKMCH DMKPR V DMKSEP DMKUDR Df'IKVMI DMKBSC DMKCK S DMKDAS DMK IOF DMKNEM DMKRSE DMKTRC DMKVMA DMKCCH DMKCNS DMKDEF DMKIOG DMKNES DMKRSP DMKTRM DMKCCW DI1KCPB DMKDGD DMKIOS tMKNE'I DMKSEP DMKUDR I:MKWRM D~KVSF DMKCDS DMKCPI DMKDDR DMKGRF DMKLOG DMKPRG DMKSEP DMKV AT DMKWRM DMKCDB DMKCPB DMKDAS DMKG10 DMKMCC DMKPRG DMKSCN DMKUSO DMKCFC DMKCPS Dl!IKDEF DMKHVC DMKMCC DMKPRV DMKSNC DMKVCA DMKCFD DMKCPV DMKDGD DMKHVD DMKMCH DMKPTR DMKSPL DMKVCB DMKCFG DMKCQG DMKDIA Dl!IKIOC DMKM1D DHKQCN DMKSSP DMKVCN DMKCFM DMKCQP DMKDl!IP DMKIOE DMKMOB DHKRGA DMKT AP DMKVDB DMKCFP DMKCQR DMK DRD DMKIOF DMKMSW DHKRGB DMKTDK Dl!IKVDR DMKCFS DMKCSO DMKDSP DMKIOG DMKBES DMKRNH DMKTB1 Dl'IKVDS DMKCDS DMKCP1 DMKDDR DMKGRF DI1KI1CH DMKPRV DMKSEP DMKVAT DMKCFC DMKCPS DMKDEF DMKBVC DMKIHD DMKFTR DMK SNC DMKVCA DMKCFD DMKCPV DMKDGD DMKBVD DMK110N Dl'IKQCN DMKSPL DMKVCB DMKCFG DMKCQG DMKD1A DMK10E DMKMSG DMKRGA DMKSSP DMKVCN DMKCFM DMKCQP DMKDMP DMKIOF DMKMSW DMKRGB DMKTAP DMKVDB DMKCFP DMKCQR DMKDRD DfiIK lOS DMKNES DMKRNH DMKTDK DMKVDS DMKCDB DMKCPI DMKDDR DMKGRF DMKLOG DHKPGS DMK SA V DMKT RM DMKVIO DMKCI:B DMKCQP DMKDMP DMK10C DMKMID DMKPTR DMKSEV DMKUNT Df'IKVSP DMKCDS DMKCPV DMKDEF DMKBVC DMKMCC DHKPGT DMKSCH DMKUDR DI1KVMA DHKCFG DMKCQR DMKDRD DMKIOE DMKMON DMKQCN DMKSIX Dl'iKUSO DMKWRM DMKCFD DMKCPV DMKDGD DMKHVD DMKMCH DHKPRG DMKSCN DMKUNT DHKVSP DMKCFM DMKCSO DHKDSP DMKIOF DMKMSG DMKRGA Df'IKSNC DMKVAT DMKCFG DMKCQG DMKDIA DMKIOC DMKMID DHKPRV DMKSEP DMKUSO DMKWRM DMKCFP DMKCS P DMKEDM DMK10G DMKMSW DMKRGB DMKSPL DMKVCA DMKCFM DMKCQP DMKDMP DMKIOE DMKMOB DMKPSA DMKSNC DMKVAT DMKCFP DMKCQR DMK tRD DMKIOF DMKMSG DMKFTR DMKSPL DMKVCA DMKCFS DMKCSO DMKDSP DHKIOG DHKMSW DI1KQCN DMKSSP DMKVCH DMKCFS DMKCST DMKE1G DMKIOS DMKNES DMKRBH DMKSSP DMKVCH DMKCKP DMKCSU DMKERM DMK1SM DMKNET DMKRPA DMKTAP DMKVCN DMKCKS DMKCVT DMKFMT DMKLDOOE DMKNLD DMKRSE DMKTDK DMKVDB DMKCtB DMKCPS DI1KD1A Df'IKI SM DMKNLD DMKSEV DMKUNT DMKCDS DMKCPV DMKDRD DMKLNK DMKPGS DMKSIX DMKUSO DI1KCFC Df'IKCQG DMKEIG DMKLOG DMKFSA DMKSNC DMKVAT DMKCFD DMKCQP DMKERM DMKI1CC DMKPTR DMKSPL DMKVCA DI1KCFG I:MKCQR DMKG10 DMKMCH DMKQCN DMKSSP DMKVCH DMKCFI1 DMKCSO DMKGRF DMKMID DMKRGA DMKTAP DMKVDB DMKCFP DMKCSP DMKHVD DMKMON DMKRGB DMKTDK DMKVDR ~ III 0CD ~ I r+- 0 I 3: 0 Po ~ ~ CD (1 t1 .:> [Jl [Jl l:C CD HI CD t1 CD = 0 CD Label Count SA VENEIT SAVEREGS SA VERETN SAVERO 000004 000032 000031 000049 SAVERl 000042 SAVER10 SAVERll 000013 000059 SAVER12 SAVER13 SAVER2 000014 000003 000148 SAVER3 SA VER4 SAVERS SA VER6 SAVER7 SA VER8 SAVER9 SAVESIZE SAVEWRK 1 000006 000001 000007 000008 000()O2 000022 000007 000008 001001 SAVEWRK2 000552 SAVEWRK3 000138 til CD n .... t+ 0 ::I W ....'=' t1 CD n t+ 0 t1 .... CD en SAVEWRK4 000170 References D~KPSA D~KCCW DftKCFC DMKCNS DMKRGA DMKBLD DMKRPA DMKCCW DMKACO DMKLOG DftKVCH DMKCCW DftKPSA DMKBLD DMK!RM DMKQCN DftKVDS DMKERft DftKTRC DftKCFG DMKCFG DMKPTR DMKELD DMKCCW DMKCPI DftKBLD DftKCQG DMKLOG DMKSEV DMKVDS DMKACO DMKCPS DftKIOG DPlKSNC DMKVDB DMKACO DMKDIA DMKTHI DMKCCH DMKCQR DMKPGS DMKCPV DMKCFG DftKCQG DMKRNH DftKCCW DMKTDK DMKS!P DMKELD DMKMID DMKVDE DMKDGD DMKPTR DMKCCW DMKGIO DMKRGA DMKVMA DftKPTR DMKCQP DftKCPB DMKCQP DMKRSP DMKCFC DMKTRC DMKVCA DMKCFM DMKMSG DMKVMA DMKPSA DftKVAT DftKCDS DMK GRF DMKRGB DftKVSP DftKQCN DMKTRC DMKDRD DMKSPL DMKCCW DMKLOG DMKFRE DMKCCH DMKCQP DMKMCC DMKSIX DMKVER DMKBLD DftKCPV DftKLNK DMKSPL DMKVDR DMKCCH DMKDRD DMKTRC DMKCDB DMKCSO DMKQCN DMKVCA DMKSNC DMKCKS DMKNES DMKPSA DftKCCW DftKCQR DMKMSG DMKSNC DMKVMA DMKCCH DMKCQG DMKLOG DMKTAP DMKVDS DMKCDS DMKIOG DMKUNT DMKCDS DMKCSP DMKSNC DMKDGD DMKIOE D~KDIA D~KLNK DMKDRD DMKTDK DMKCNS DMKVCA DMKIOG DMKLOG DMKERft DMKTRC DMKCQP DMKVDS DftKPSA DMKGRF DMKUDR DMKERM DMKVSP DMKRSP DftKFTR DMKHVD DMKVAT DMKICE DftKSEP DllKUSO DftKftSW DMKVCA DMKPGS DMKVAT DftKV AT DftKNEft DMKVSP DMKPTR DftKCQR DMKSNC DMKCKS DMKVAT DMKVCH DMKCPS DMKMSW DftKVCA DftKPTR DftKVER DMKQCN DMKQCN DMKRIH DMKCPV DMKNES DMKCQG DMKNLD DMKCQP DftKPTR DMKCSU DftKQCN DMKtAS DftKSPL DMKDIA DftKTHI DMKIOS DftKUSO DMKLIK DMKVCA DMKFTR DftKVAT DMKVCA DftKVER DftKCFC DMKLNK DMKRNH DMKWRft DMKVAT DftKCFM DMKLOG DMKRPA DftKCKS DMKMSG DMKSNC DMKCNS DMKNES DMKTRA DftKCQP DMKNET DMKTRC DftKDEF DMKNLD DftKUDR DftKDGD DMKPGS DftKVAT DMKDIA DMKPSA DftKVCH DftKDRD DMKPTR DMKVDB DMKDIA DMKNET DMKSEP DlIKSPL DMKSPL DMKTDK DMKVDR DMKVDS DMKVSP DMKCDE DMKCSO DMKNES DMKCFD DMKCST DMKNLD DMKTRA DftKCFG DMKCSU DMKPGS DMKTRC DftKCFS DMKDEF DMKPTR DMKUNT DftKCFT DMKDIA DMKQCN DMKUSO DftKCKS DMKDRD DMKRPA DMKVCA DMKCPS DMK!IG DMKRSE D~KSPL DMKCDS DMKCSP DMKNET DMKTHI D~KVCH DMKCPV DftKLNK DMKSEP DMKVDB DMKWRM DMKCCW DMKCQP DftKMSG DMKTDK DMKVER DMKCFD DMKMCC DMKUSO DMKCFC DMKCST DMKTRC DMKCDE DMKCQR DMKNES DMKTHI DMKVMA DMKCFG DMKNES DMKVCA DMKCFD DMKCSU DMKVCA DMKCDS DftKCSO DMKNET DMKTRA DMKVSP DMKCFS DMKNET DMKVDB DMKCFG DMKDEF DMKVDB DMKCFC DftKCSP DftKNLD DMKTRC DMKWRM DMKCKS DMKNLD DMKVDR DMKCFS DMKDIA DMKVDR DMKCFD DMKCST DMKPGS DMKUDR DMKCFG DftKCSU DftKPSA DMKUNT DMKCFS DftKD!F DftKP'IR DMKUSO DMKCKS DftKDIA DftKQCN DMKVCA DMKCPB DMKDRD DftKSEP DMKVCH DMKCPS DMKPGS DMKVDS DMKCKS DMKLNK DMRVDS DMKCPV DMKPTR DMKVER DMKCPB DftKMSG DMKVER DMKCQG DftKQCN DMKVMA DMKCPS DMKNES DMKWRM DMKCQP DMKSNC DMKWRM DMKCPV DMKNET DMKDEF DMKTAP D~KPTR DMKCQG DMKNLD n to ~ PI t7' CI) ..... I t+ 0 I IX 0 ~ c: ..... CI) n t1 0 en en !:O CD HI CD t; CI) .c:: IV c..n t:I n CD -= ~ Label Count References n "tl 0\ SAVEWRK5 000148 c:; :I: " SA VEiRK6 000148 w ...,J 0 SAVEWRR7 000066 til SA VE iRK8 000229 I.e; en rT CD e SAVEiRK9 000116 t'"4 0 I.Q 1-'0 S» I:' PI "tl H 0 tr 1-1 CD e ~ CD rT (1) H • 1-'I:' S» rT 1-'0 I:' en Q 1-'PI CD SA VFPRES SAVGREGS SAVKEYS SAVPSW SAVTABLE SCHEDCI SDRBLOK SDRBS12E SDRCTRS SDRCUA SDRFLAGS SDRFLC'I SDRLNGTH SDRI1AX SDROVFWK SDRPRMCT SDRRDEV SDRSHR'I SDRS1ZE SDRS1ZEl SEGPAGE SEGPLEli SEGTAELE SFBCLAS SFBCOPY SFBDATE SFBD1ST SFBDOMf 000002 000003 000002 000002 000002 000001 000006 000001 000014 000002 000005 000004 000008 000003 000006 000004 000002 000007 000001 000001 000033 000011 000015 000025 000018 000009 000018 000008 DMKCCH DMKCST DMKUNT DMKACO DMKDEF DMKVDB DMKACO DMKNES DMKACO DMKCSP DI1KSPL DMKACO DMKLNK DMKVCA DMKCFG DMKCFG DMKCFG DMKCFG DMKCFG DMKMCC DMK10E DMK10E DMK10E D"KIOF DMK10E DMK10F DMK10E DMKIOF DMKIOF DMK10F DMK10F DMK10E DMK10F DMK10F DMKBLD DMKBLD DMKBLD DMKCKF DMKCKP DMKCKF DMKCKP DMKCKS DMKCDB DMKCSU DMKVDB DMKCCH DPlKD1A DMKVDR DPlKCCH DMKNET DMKCCH DMKCSU DMKTRC DMKCCH DMKN!S DMKVDB DMKCDS DMKDEF DMKVER DMKCDB DPlKDRD DMKVDS DMKCFD DMKNLD DMKCDB DMKDEF DMKVMA DMKCCW DMKNET DMKVDR DMKCFD DMKDIA DMKVMA DMRCFG DPlKLNK DMKVMA DMKCFG DMRFGS DMKCDS DMRD1A Dl'IKCFG DMKLNK DMKCFS DMKNES DMKCKS DMKNET DMKCPB DMKN1D DMKCQG DMKPTR DMKCQP DMKSEP DMKCSO DMKSNC DMKCSP Dl'IKTRC DMKCFM DMKMSG DMKVSP DMKCFS DMKSEP DMKCFP DMRLNR DMKCFP DMKNLD DMKWRM DMKCKS DMKTRA DMKCFS DMKLOG DMKCKS DMKPTR DMKCQP DMKSNC DMKCSO DMKTH1 DPlKCSP DMRTRC DMKCST DMKUNT DMKCSO DMKVCA DMRCSO DMKTRC DMRCKS DMKMSG DMKCST DMKVDS DMKCPV DMKNES DMKDEF DMKVER DMRCQG DMKNET DMKDIA DMRVMA DMKCQP DMKNLD DMK10G DMKiRM DMKCQR DMKSEP DMKLNK DMRCFG DMKNLD DMRVDS DMKCKS DMKPGS DMKVER DMKCPS DMRPTR DMKVMA DMKCSP DPIKSEP DKKCSO DMKSEV DI1KDEF DMKS1X DMRDGD DMKSIIC DMKD1A DMKTRC DMKEIG DMKOIIT t""I ll> tr CD 1-1 I c+ 0 I 3: 0 PI DMKCSO DMRSNC ~ 1-1 CD n H 0 en en !:tI CD Ht CD H CD ::;:I 0 CD DMKIOF DMKIOF DMK10F DMK10F DMKIOF DMKCP1 DMKPGS DMKPGS DMKCQG DMKCRS DMKCQG DMKCQG DMKCQG DMKPGS DMKVMA DMKVMA DMKCQR DMKCQG DMKDKP DMKCSP DMKDMP DMKVMA DMKCSP DMKCSC DMKNLD DMRCSO DMKDRD DMKC SU DMKCSO DKKSEP DMKNLD DMKNLD DMKDRD DMKDBD DKKSPL DMKSEP DMKSPL DMKNLD DMKNLD DMKWRM DMKSPL DMRVSP DKKBSP DKKRSP DMKSEP DMKSPL DKKSPL DMKVSP Label Count 000014 SFBEOF SFBFILID 000035 ~FBFIRST SFBFLAG SFBFLAG2 SFBFNAME SFBFTYPE SFBHOLD SFBINUSE ~FBLAS'I SFBLOK 000002 000090 000032 000012 000003 000011 000013 000036 000067 SFBMISCl 000003 ~FBNOHID 000010 SFBOPEN 000007 000012 ~FBORIG 000055 SFBPNT SFBPURGE 000005 SFBRECER 000031 SFBRECNO 000017 ~FBRECCK 000003 SFBRECS 0000 1"8 SFBRECSZ 000006 SFBREQUE 000007 SFBRSTRT 000008 SFBSHOLD 000016 ~FBSIZE 000037 SFBSTART 000056 SFBTICER 000001 SFBTIM E 000009 SFBTYPE 000014 SFBUHOLD 000018 SFBUSER 000039 CJ:l CD 0 M- .... 0 t:' . SHQBLCK SHQESIZE SHQFLAGS SHQPNT SHQSHOID 000011 000011 000001 000001 000005 References DMKCKS Dl'.IKCKS DMKWRM DMKCKF DMKCKP DPlKVSF DMKCKP DMKCQG DMKCQG DMKCSP DMKCKS DMKCKP DMKCKP DPIKILD DMKVSP DMKCS P DMKCKS DMKCKP DMKCKP DMKVSP DMKCKP DPlKCKP DMKCKS Dl'.IKCSO DMKCKP DMKl/LD DMKCSO DMKCKS DMKCQG DMKCKP DKKCKP DMKRSP DMKCKS DMKCQG DMKCKS DMKCKP Dl'.IKSPL DPlKCKS DMKCKP DPlKCS P DMKCSP DPlKCQR DMKDRD DMKCQG DMKVSP DMKCSP DMKiiRM DMKCST DPlKCSU DPlKDl'.IP DMKDRD DPIKIUD D~KRS P DMKSEP DMKSPL DPlKVSP DMKCQG DMKCQR DMKCSO DPlKCSP DMKCSU DMKDRD DMKNLD DMKRSP DMKSPL DMKUSO DMKCSO DMKCSU DMKRSP DMKVSP DMKCQR DMKDMP DMKCPI Dr'IKSEP DMKCSF DMKNLD DMKRSP DMKRSP tMKSEP DKKSEP DMKSPL DMKSPL DMKVSP DKKWRM DMKCSF DMKDRD DMKCQG DMKSPL DMKCSU DPlKNLD DMKCQR DMKUSO DMKDRD DMKRSP DMKCSO DPlKVSP DKKUSO DMKSPL DMKCSP DPlKWRPI DMKVSP DMKVSP DMKCST DKKWRK DMKCSU DMKDMP DMKDRD DMKEDPI DMKVSP DMKVSP DMKCQG DMKCQG DPlKWRl'l DMKCSU DPlKCQR DMKNLD DPlKCST DMKRSP DMKCSU DMKSEP DKKDMP DPlKSPL DMKDRD DMKEDM DMKNLD DPlKRSP DMKSPL DKKCSO DMKNLD DKKDRD DPlKRSF DKKRSP DPIKSEP DPIKSPL DPlKVSP DMKVSP DPlKWRPI DMKRSP DKKVSP DMKSPL DMKSEP DMKCSO DMKDMP DMKCPI D!H(SFL DPlKVSP DMKWRM DKKSPL DPlKCSF DKKDRD DMKCST DPlKWRM DMKCSU DMKEDM DMKDMP DMKRSP DPlKNLD DMKDRD DKKSPL DPlKRSP DMKNLD DMKSPL DMKRSP DMKUSC DKKSPL DKKWRPI DKKVSP DMKDMP DKKDRD DMKCQR DPlKCQG DMKNLD DMKNLD DMKCSF DMKCQR DMKSEP DPlKRSP DPlKCSU DPlKCSP DMKSPL DPIKSPL DMKDRD DMKCST DMKVSP DMKVSP DKKRSP DMKCSU DKK SPL DPlKDRD DMKVSP DMKEDl'.I DMKIUD Dl'.IKRSP DKKSEP DMKCSP DMKCSP DPlKSPL DMKWRPl Dl'.IKWRM D~KSPL DMKCKS Dl'.IKWRM DMKCKS DMKCSP DMKNLD DKKSPL DMKCQG DMKCKS DMKCKS Dl'.IKRSP DMKSPL DMKDRD DMKCPI DMKCKS DMKWRM DPlKSPL DK-KCKS DMKCQG DMKRSP DMKC1{S DPIKSPL DMKRSP DMKRSP DMKCQR DMKCKS DPlKCKS DMKCQG DMKDMP DPlKCQG DMKCPI Dl'.IKVSP DPlKCQR DMKCKS n ." 1:"4 ~ t:I" CD J-I I DPlKCSP DMKSPL M0 I ::JI: 0 W ~ j:;: t:::I .... 11 CD CD 11 0 0 c+ 0 11 .... CD en J-I n en en !:tJ CD HI CD 11 ~ ~ ""'" CD t:' 0 CD .;: tv Label Count References n "'C CD c; ::I: " w ...,J 0 II C/) '< en r+ (D EI SBQUSER SHRB P5'I SHRFPNT SHBNAME SBRPAGE SHRSEGCT SHRSEGNft SBBTABIE SBRTSIZE SHROSECT SIGMASK SILl 000007 000006 000017 000018 000013 000009 000013 000024 000003 000009 000001 000896 ~ 0 I.Q .... " 0 III 1:1 Pol ttl H 0 0" ...... (D EI t::j (D r+ (D H EI .... " 1:1 III r+ .... " 0 1:1 Cil ~ .... " Pol (D SIOCCH SKIP 000002 000138 Sf! SPLIRK SPRITPIG SPPREPAG SPRECloe SPRMISC SPROFCl SPSIZE STARTIPlE SUSPENI: SVCNPSii SVCOPSi SiPALLCC SiPCHGl SiPCHG2 SiPCODE SiPCYL SiPDPAGE SiPFLAG 000022 000009 000023 000013 000015 000002 000003 000012 000011 000006 000008 000034 000006 000006 000006 000003 000009 000006 000074 SiPKEYl SiPKEY2 SiPPAG 000013 000003 000002 DftKCKS Df!lKCFG DMKCFG DMKCFG DftKCFG DPlKCFG DPlKCFG DPlKCFG DPlKCFG DPlKCFG DMKDSP DMKACO DMKDIR DMKRSE DMKVCN DPlKCCH DMKACO DMKIOS DltKVSP Df!KCNS DPlKCKS DMKCKS DftKDRD DftKCKS Df!KRSP DftKf!CC Df!KRSP DPlKCKP DMKPlON DPlKCPI Df!KPRG DPlKFTR DMKCFG DMKCFG Df!KPAG DMKCFG DftKPAG DPlKELD DftKRPA DPlKCFG DftKftCH DPlKELD DftKCQR DPlKPGS DftKPGS DPlKPGS DMKCSP DMKVMA DMKVPlA DPlKVftA ~ DPlKSFL III tr (D ...... I r+ 0 DPlKPGS DftKPGS DPlKPGS DftKPGS DPlKPGS DPlKVftJ DMKVMA DPlKVPlA DMKVftA DPlKVftA DPlKBSC DMKDf!P DMKRSP DftKVDB DPlKCCW DMKFMT DMKSAV DMKVDR DMKCKP Df!KGRF DMKSFP DPlKVPlI DMKCNS DPlKIOS DMKSPL DPlKVSP DPlKCPB DMKMCC DMKSSP DMKWRM DPlKCPI DMKNLD DMKTAP DMKCSO DPlKOPR DPlKTDK DPlKDAS DPlKPAG DPlKUCE tMKDDR DPlKRGA DMKUCS DMK tGD DPlKRGB DMKUDR DMKDIA DMKRNH DMKVCA DMKCCW DMKPIG DMKCKP DMKRSP DMKCNS DMKSAV DPlKCSO DMKSEP DMKCST DMKSPL DMKDAS DMKTAP DMKDDR DMKUNT DMKDIA DMKVCA DltKDMP tMKVCN DMKDBD DMKVtB DMKFMT DMKVMI Df!KCPI DPlKDRD DftKDBD DftKRSP DPlKRSP DMKFMT DMKRSP DftKRSP DMKVSP DMKVSP DMKIOS DPlRSFL DMKVSP DMKNLD DMKVSP DMKPSA DMKRSE DMKVIO DMKVIH DPlKf!OI DPlKSPL DPlKCPI DMKVSP DMKCQR I tI: 0 Pol ~ ...... (D n H 0 en en !:tI (D HI (D H (D DMKPRG DPlKPSA DPlKVMA DMKCPI DeKCPI DftKP'IR DftKCPI Df!KPGT DftKCCW DMKVMA DPlKftCH DMKPTR DMKVftA t:I 0 (D DPlKWRM DeKPSA DMKTRC DPlKTRC DeKeCH DPlKPlCH DMKFTR DPlKPTR Df!KPAG DMKPTR DftKCDS Df!KPGS Df!KPG'I DMKPTR DPlKRPA DPlKCFG DftKCPI DPlKDGD DMKMCH DftKPGS DPlKPRV DMKPTR DPlKFAG DIIKPGS DMKPGT DMKPRV DMKPTR til CD 0 ("i- I-'0 =' w Label Count References SiPRECftP SiPREF1 SiPREF2 SiPSHR SiPTABLE SiPTRAliS SiPV!! SiPVPAGE SIBCLOG SISCIL SISHRSEG SISIPLDV SISLOCS SISBAftE SISPAGCT SISPAGlli SISPAGNft SISPNT SISSEGLN SISSIZE SISSTART SISTBL SISTEM 000009 000003 000003 000008 000017 000011 000005 000004 000001 000002 000003 000012 000019 000047 000003 000009 000016 000003 000004 000002 000002 000003 000123 SISV1DDR SISVOL 'lBUSI TE!!PRO 'lEftPRl TEftPR10 TEMPR14 TEMPR 15 'lEftPR2 TEMPR3 'lEMPR4 TEftPR5 'lEftPR6 TEftPR7 'lEftPR8 TEftPSAVE 000005 000005 000010 000015 000005 000002 000016 000006 000016 000013 000007 000004 000004 000002 000002 000136 DftKBLD DftKPTR DftKPTR DftKCFG DftKBLD DftKCDS DftKBLD DftKPGS DftKCPI DftKCFG DftKCFG DftKCKS DftKACO DftKCFG DftKCFG DftKCFG DftKCFG D!!KCFG DftKCFG DftKCFG DMKCFG DftKCFG DMKCFC DftKIOF D!!KSHC DftKCFG DftKCFG DftKCPS D~KCNS DftKVSP DftKCCi DftKCCi DftKCCW DftKCCi DMKCCi DMKCPI DMKCPI DftKHVC DftKRGA DftKHVC DftKCFS DftKCCR DftKPGS DftKPGT DftKFTR DftKRPA DftKVftA DftKPGS D!!KED!! DftKPAG DftKED!! DftKPTR DftKPRV DftKPGS DftKPTR D!!KPGS DftKVftA DftKPTR DftKVJ!A DMKRPA DftKVftA DftKRPA DMKV!!A D!!KVftA DMKCPI DftKBLD DMKDMP DftKCFS DMKHVD DftKCFT DMKIOG DftKCKP DMKWRM DftKLOC DftKLOG DMKUDR DftKUSO DftKCFG DftKIOG DMKSPL DftKCKS DftKMCC DMKSSP DftKCNS DMKNLD D!!KUDB D!!KCPE DMKPSA DMKVCH DMKCPI DMKPTR DMKVSP DMKCPV DMKRGA DMKiRft DMKCSO DMKRGB DMKCST DftKRNB DMKftCC DftKCPI D!!KMON DMKVCA DftKVSF DftKCDS DftKCDS DftKCPI DMKCPI DMKCSU DftKVCA DftKCPI DMKCPI DMKCSP DftKCSU DMKSAV DMKIOS DftKFRG DftKCSU DftKBGA DMKVCA DMKSAV DMKVCA DMKVCA DMKDRD DMKRPA DftKERft DMKRSP DMKGRF DftKSEP DftKPRG DMKRGA DftKRGB n It:! t-t III tr CD I-' DftKCNS DftKRGA DMKCPI DMKRGB DMKCQR DMKRRB DMKCVT DMKSA V DftKFRE DftKSCH DMKGRF DMKVIO DMKLOG DftKMID DftKNET DftKNLD DftKPRV t ("i- 0 t ::.: 0 PI c:: I-' '=' 1-'- CD I'i CD 0 (') ("i- 0 H 1-'CD C/l H 0 en en !:tI CD HI CD H .;= CD =' tV 0 \0 CD ~ w Label Count Heferences n 1'0 0 c:: IZ "w -..J 0 til '< en r+ (1) • t-' 0 I.Q "".0 I» I:' p., ItJ H 0 t:r ...... CD • t:I (I) r+ CD H •"". I:' I» r+ "".0 I:' Cil c: "". ~ (I) TEHMSYS 'lIMER TIOCCH 'lISCPIDN TISDEVAD 'lliSKEYli TNSREC 'lNSSNS1 TNSSWS3 'lliSVCLID TODATE 'lRACBEF THACCURR 'lRACEFLG TRACENt 'IHACFLGl TRACFLG2 'IRACSTRT TRACOA 'IRACOC TRACOD 'IHACOl THAC02 'lHAC03 TRAC04 'lHAC05 TRAC08 'I8AC09 THAC10 'IRAC 11 TRAC67 'IRAIUWDE TREXAI:I: 'IREIAISI TREXBRAN 'IREXBUFF TREXCCW 'IHEXCH9 TREXCSW 'IREICTI TREXCTL 1 'IREICTI2 000009 000021 000012 000002 000024 000005 000006 000006 000018 000004 000013 000003 000040 000006 000020 000011 000008 000021 000001 000001 000001 000001 000002 000002 000001 000001 000001 000001 000001 000001 000002 000020 000004 000005 000012 000004 000006 000003 000006 000004 000002 000007 DMKCCB D!KCPI DMKCCB DMKIOE DMKIOE DMKIOE DMKIOE D!KIOE DMKIOE D!KIOE DMKCPI DMKCIS DMKCNS DMKCPI DMKCNS D!KFHE DMKCNS D!KCNS DMKDSP D!KI:S P DMKVIO D!KPSA DMKPSA DMKFRG DMKMCH DMKIOS DMKSCH Dl!KSCH DMKDSP Dl!KBNB DMKFRE DflKCDS DMKPRG Dl!KPGS DMKTRA DflKTRC DMKTRA Dl!KtS P DI!K'IRA DMKTRA DMKTRC DMKT He DMKEIG DMKDSP DMKEIG DMKIOF DMKIOF tMKIOF DMKIOF D!KIOF DMKIOF D!KIOF DMKCYT DMKIOS DMKCPI DMKMCC DMKCPI DMKIOS DI!KDSP DMKCPI DMKSEV DMK lOS DMKSEV D!KSIX Dl'!KMCH D!KSIX DMKPHG DMKPSA DMKPTR 1:"'4 I» b" CD Dl'!KSCH ...... I r+ 0 I 3: 0 p., c: ...... (1) D!KDMP DMKVIO DMKDSP DMKED! tMKMID Dl!KFHE DMKIOS tMKMCC Dl'!Kl'!CB tMKPRG DMKPSA DMKRNB DMKSCB DMKDSP DMKMCH DMKIOS DMKDSP DMKFRE DMKPHG DMKBiH DMKFRI DMKIOS DMKPSA DMKVIO DMKIOS DMKMCB DMKSCB DMKPHG DMKPSA DMKHNB DMKSCH DMKYIO DMKMCC DPlKMCB Dl'!KPRG DPlKPSA tPlKRliB I:MKSCH n H DIH o rt o .... t1 n> en I ---------------------------1 controlling sUFervisor task and to-I This routine is the gether with DBTCftX, DBTftGX, DftTSYS, Dft7COft, DftTftSG, andl DftTCRE make up the REX supervisor task. I Performs the initialization for the DftTREX task. I ftonitors a list of synch locks when looking for work fori DftTBEX to perform. I Processes program checks. I Entered when RSCS initialization fails. Issues the in-I itialization failure message, dumps the contents of mainl storage, types any remaining messages, and loads a diS-I abled wait state PSW. I Scans the function table and calls the aFFropriatel routine based on that code (either DftTCftX or tftTftGX). I Deactivates the link tatle entry. I Writes messages. I Terllinates a specified task. I Becemes the task code for a task in the Frocess ofl termination. Looks for any outstanding I/O for the terminating task. If any outstanding I/O is found, issues HIO and waits for completion. When all I/O is completed, it termin-ates the task. DftTSIG Performs a task alert exit for a requesting task. DMTSML DftTSML Functions as an RJE work station into a remote system using the MULTI-LEAVING transmission protocol. It can also function as a host to a remote Frogrammable work station supporting a System/370, System/3, Model 20, 1130, or a 2922. Initializes various parameters needed by DMTSftL. Saves the link table address, initializes output tags, and constructs the sign-on card from information in the operand field of the START command. Perforas the enable sequence on the communications line, analyzes the response received, and, if the resFonse is correct, writes the line connected message • This is the alert exit entered by DftTSIG. Two tasks may alert this line driver: • DMTBEX--When a command has been entered fer pro-I Processing by the DftTS!L line driver. I • DftTAXS--When DftTAXS must asynchronously notify I DftSftL that a file has arrived for transmission. I ISIO o ....rt Function DMTSIG SMLINIT n> I ASYIEIIT ----I r-I Module I Name D~TS~L Entry Foints &START (cont.) &CTRNl &FBTN1 &URTNl &JRTll &USREXIT &PRTNl AXSGET V~DEBLOK BEADPREP TODEECt &iRTNl CMDPROC I I I I I I l MSGPROC Function ------------------------------------ This is the supervisor routine for DMTSML. The co •• utater cycles while looking fer a routine to enter until all co.mutator entries are closed. It then waits for a synch lock list to be posted. Dequeues tasks from its task queue and performs the action requested by the control record in the degueued task. Dequeues tasks from its task queue, obtains a new output spoel device, if needed, fro. DMTAXS, and sends the task to a virtual printer. Dequeues tasks from its task queue, obtains a new output spool device, if needed, from DftTAXS, and sends the task to a virtual punch. Dequeues tasks from its task queue, obtains a new output spoel device, if needed, from DftTAIS, and sends the task to a virtual device. Validates the ID card in the front of decks read in from a remote card reader. Reads in files from the VM/370 spool file syste., deblocks the files into 132 byte records, and issues a call to PUT to block the record into a transmission buffer. This routine is the interface to DMTAIS. It gets files ready to transmit and purges these files when transmission is co.~lete. This is the deblock routine for the Vft/370 Fage spool buffers. It returns the deblocked record in the RDTTDTA1 buffer. provides, one record after the other, the separator and header for print files and the header card fer punch files. Converts System/370 TOD to EBCDIC data and time. writes received messages to the RSCS operator, if in RJE mode. Passes commands to DftTREI for execution, if in BOST mode. These commands or messages are dequeued from console TCT. Executes commands passed to it in the CfttRESP buffer after an alert from DMTREI indicating a ce.mand was entered. Entered when the MSGECB is posted by this task's asynChronous exit indicating messages are in the message queuel for this task. These messages are unstacked frem the I message queue by repeated calls to GftSGREQ and queuedl for transmission. I r---------------------------------Entry I Module I Name DMTSML (cont. ) Points MSG &TPGET COMSUP CERROR DMTSTO Reserves pages of free storage for use by calling task programs. Task programs free storage pages by clearing the associated map byte to zero in the main storage map. DMTSVC DMTSVC This module is the MSOP interrupt handler and receives control directly when an SVC interrupt occurs. DMTSYS DeTSYS DMTVEC DeTVEC DMTWAT D"TWAT The common system control information area that is shared by all task level functions of RSCS. All instal-I lation variable informaticn used by an RSCS system isl reflected in the assembly of this module. This modulel is the only module that must be assembled as part of ani RSCS system generation. I Describes the fixed address stcrage utilization fori MSOP, beginning at main storage address X'200'.1 System/370 architecture defies the first 512 bytes ofl main storage and MSOP uses this area as it is defined. I This area is not included in the DMTVEC module tol facilitate initial system loading. This area is ini-I tialized by DMTIB I at IPL tim e. I I Called directly from task prcgrams by a EAL instruction. I It ~rovides event synchronizaticn by means of suspendingl a task's execution until some specified event is sig-I naIled complete by another process in the syste.. I tn CD r+- 1-'- o ::s 1-'- t; CD n c+ o t; 1-'CD Ul to writes messages on the operator's console. I Scans lines and tests for delimiter characters. I Takes a line and packs it into a teleprocessing buffer. I When the buffer is filled, it is queued onte OOiBOF fori processing by COMSOP. I Deblocks received telecommunications buffers into tasksl and queues the task onto the appropriate processors I TCTTASK queue. I Processes all I/O on the communications line. It deque-I ues TP buffers from OOTEU! for transmission and queuesl received TP buffers onto the &IREOF queue for deblocking I by TPGET. I Analyses all errors on the communications line. The appropriate corrective action is taken depending on the on the type of error. DMTSTO n t:1 I I Function ----------------------------------------------------------------1 Prepares and sends requests to the specialized task REX I PARP-GET &TPPUT .w I _______________---J 11:0 ItIl llodule External References (Labels and llodules) DllTAKE ACTIVE DISPATCH GIVEADDR GIVEE R12 R14 R13 R15 TASKIUllE TASKiEXT TASKQ TGREGl GIVENAME GIVENEI7 GIVENID R4 R2 B3 TGREG1S TREQLOCK ACTIVE IOEXITQ R13 TAREA ALERTQ IOID R14 TASKE DISPATCH lONE IT R1S TASKID FREEE LIllEC R3 TASKiEXT ACTIVE Rl TGREG1S ALERTQ R12 ASYNCODE ASYNE R14 B13 ALEBTIlEQ LACTIVE POSTBEQ R1S SFBFILID SFEUHOLD TAGINTOD TASKE ASYBBEQ LACTTNllE PBCGADDR B2 SFBFLAG SVECTORS TAGINVll TASKSAVE COfilDSECT LALERT ROUTDEST R3 SFBFLAG2 TAG TAGLEB TCOfil CSi LFLAG ROUTE R4 SFBFNAfilE TAGELOCK TAGLINK TLINKS DE LINKID ROUTNEIT RS SFEFTYPE TAGCLASS TAGNAfilE TROUTE DEVCODE LINKLEN BCUTSIZE R6 SFEINUSE TAGCOPY TAGREIT TTAGQ DEVCUU LINKTABL RO R7 SFELOK TAGDEV TAGPRIOR TYPPRT GIVEREQ GLINKREQ GPAGEREQ LPEBDIBG LFOINTEB LRESERVD III Rl0 Rl1 R8 R9 SFECLAS SFEORIG SFERECNO SFBRECSZ 7AGDIST TAGFLAG TAGFLAG2 TAGRECLN TAGRECNft TAGTOLOC 7IPPUR TYP1403 TIP2540P tllTCfilX ALERTREQ LACTClSl LIIKIEi R11 SFESHOlD TAGLIRK COfilDSECT lACTDRVR lINKTAEL R12 SFEUHOLD TAGNAftE DEVCODE LACTIV! LPFllDIIG R13 SVECTORS TAGREIT DEVCUU LACTLINE LPOINTER R14 TAG TAGPRIOR DftTCBE LACTTRllE LRESERVD R1S TAGELOCK TAGBECNfiI DliTCREDA LDEFCLS 1 LTAKEN B2 TAGCLASS TAGTOLOC DftTfilGI L£EFDRVR LTRALL R3 TAGCOPY TAGTOVM DfilTREICI LDEFLIRE LTRERR R4 TAGDIST TCOft DfilTREIID GLINKREQ GTOD!ECD LDEFTNfilE LDRAIH LFLAG LHCLD filAIBfilAP ~AINSIZE BO Rl RS R7 R6 R8 TAGFLAG TAGID TAGIBLOC TAGINTOD TLIHKS TPORTS TTAGQ IOTABLE LIIKID Rl0 R9 TAGIRVM DfilTCOll ACTIVE DISPATCH LACTTlHll LIBKID R11 R12 R13 B14 SVECTCBS TAREA TASKE TASKID filAINfilAP R4 TGREGO ftAIHREQ RS TGREG 1 Rl0 R9 TPSi In Itil DMTASK DfilTASY DllTAIS !XTQ IOSUBQ R2 TASKNAfilE FREEID filAINfilAP R4 TASKQ ASYNEXIT ASYNID R1S R2 FREENEIT filAINSIZE RS TASKSAV! GIVEQ RS GIVE RID R6 PCSTREQ QREQ SVECTORS TAREA GIVEADDR filPIIOQ B6 TASKSTAT GIVEE POSTREQ R7 TGREGO GIVENEIT QREQ B8 TGREG13 ASYNNFIT ASYNTASK DISPATCH EITQ R4 R3 SVECTOIlS TAREA LINKLEB LINKTABL LMSGQ R2 R3 R1S TASKNAllE TASKNEIT TASKQ 13 Rl TASK! R11 TASKID GIVEBID RO B9 TGREG1S GIVBQ Rl SBLIOQ IOE I 1t-3 R12 10 SVBCTORS I IOEXITQ TASKE QREQ TASKID GTODEBCD LSPABE R12 SIBCOPY SFBREQUE TAGID TAG TOVll TYP3211 Itj Ie: It"t ItIII 1t'"4 I~ IOTABLE LTAK!N R13 SFEtATE SFBSHOLD TAGINDEV TAGTYPE iAITR!Q D~TBEIHC llAIHSIZE RO R6 II7 TGREG1S TGREG2 10 Rl R8 TLIRKS RO TGREGO ItEI 1t:ri2 It"t In 11:0 10 LACTCLSl len llAINftAP ItIl R14 11:0 SFEDIST ItIII II'ld SFETYPE Itill 11:0 TAGINLOC ItzJ TAKEREQ 1!Zl In leu 1:0 til n en ::I: 0 Q. til ....c: CD 0 CD 0 t:S 0 ....t+ w I t+ I t'"4 III tr ....t:::I 11 CD 0 t+ 0 11 .... CD en .&::' 0\ lJ1 ....CD n 11 0 en en 1:0 CD HI CD 11 CD t:S 0 CD ~ '"'" Module " w ~ til n til ENDCSW R15 TGIlEGO IOREQ R2 TGREGl IOTABLE R3 TGBEG2 LACTDRVR LACTTNME LINKTABL MAINMAP B4 B5 116 B7 TYP2314 WAITBEQ ACTIVE TASKID lIMBe LOCKLIST NEWPSW BO Bl TASKNEXT TASKQ TASKSAVE TASKSTAT TGBEGO R15 TGBEGl R2 'lPSi R3 WAITING R4 ACTIVE R14 ASYNCODE ASYNE 1115 R2 NEWEXT TASKE OLDEXT BO TASKS AVE TGRlGO Bl TGREG14 UITGIV ACTIVE R12 TASKC GIVENAME GIVENEX'l GIVENID DISPATCH GIVEADDR GIVEE B4 113 R14 B15 B2 R13 TASKSAVE TGIlEG15 TREQLOCK GIVEQ GIVEBID SVECTORS TABEA POSTBEQ TASKE QIlEQ TASKID BO Rl TASKNAME TASKNEXT tMTINI CAW DMTMAPCE OLDIO B4 TASKSAVE CC DMTREXVL QBEQ B5 TASKSTAT CE FREEE QUEUE R6 TIMER CLASDASD FREEN EXT BO B7 TYP2314 CLASTERM FBEEQ Rl B8 TYP3210 CSW IOTABLE Rl0 B9 TYP 3330 DE IPLCCW 1 R 11 SILl TYP3340 tEVCODE IPLPSW B12 SVECTORS iiIT DEVCUU MAINMAP B13 TASKE DISPATCH MAINSIZE R14 TASKID DMTCBEDA MCHEK B15 'lASKNAME tMTIOMIN NEWEXT R2 TASKNEXT tMTIOM ACTIVE DISPATCH IOTABLEA R15 TABEA ASYNCODE ENDCSW MPXIOQ R2 TASKE ASYNE ENDSENS E NEWIO R3 TASKlt ASYNEXIT IOADDB OLDIO B4 TASKSAVE ASYNNEIT IOE PCI B5 TGREGO ASYNTASK IOEXITQ POS'l'REQ R6 'lGBEG14 BUSY IOID PROGADDB SELIOQ TPSi CAW ION EXT QREQ SENSING UC CE IOSBCHAN BO SENSREQ tMTLAX ASYNREQ B2 WAITREQ CLASTERM LACTIVE B3 R4 LINKID B7 LIRKLEN R8 LINKTABL RO Rl B9 SVECTORS TLIRKS IMTMGX ALERTREQ COMDSECT DMTMSG Rl0 B12 B13 SVEC'lOBS TCOM TLINKS DMTNPT ASYNBEC LDRAIN Rl R8 TAGINTOD TYFFUII BUSOUT LERRCNT B10 R9 TAGINVM TYP2700 CC LPLAG Bl1 SILl TAGLIBK TYP3210 CMDREJ LHOLD R12 SKIP TAGNAME UC COMDSECT LIRKID R13 SPLINK TAGBEXT UE IMTPST RO Rl R14 TASKE TASKSTAT WAITING DMTQRQ PBEEE PBEEID PREENEXT FREEQ DMTCRE < 3: External References (Labels and Mod ules) DMTDSP ....,J CC CE MAINSIZE RO SILl SICCCND CUE DE R1 R12 SVICTORS TABEA DEVCOD! R14 TASKBEQ SVECTOBS TABEA MAINREQ R9 TASKE til (t) EI I.Q ..... ASYNEXIT ASYliNEXT ASYNTASK DISPATCH EXTQ SVECTOBS 'lAREA R4 SSAVE R3 B13 TPSW I» t::I 0- ..... (t) EI t:I rr (t) H EI ..... t::I I» ~ ..... 0 t::I en I» t:r (t) ..... n H DMTMAPME NEWIO R3 TASKQ en en !:tI (t) HI (t) H (t) 0 t:r (t) I ~ 0 (") I'd H I ~ '< 1:"4 0 ..... (t) 0 DMTEXT rr 0 0!:i 0 en 3: !:i ..... 0(t) LACTLINE LPLAG R5 R6 DMTREXHC GIIBKREQ LACTIVE B14 R15 B2 Rl EQCHK LIRKTAEL B14 SPRECNUM TAGBECNM WAITREQ R14 CHAliDONE IOS'lAT Rl SIOCOND CSW IOSUBQ B12 SM DE IOSYNCH R13 SSAVE DEVCUU IOTABLE R14 SVECTOBS 1112 TPORTS B14 TYPBSC R15 TYP2700 LACTTRME LPLAG B3 B4 LIRKID RS LINKTABL PMSGREQ B6 R7 RO R8 Rl R9 GIVEREQ LTOCNT R15 SVECTORS TAGTOLOC GMSGBEQ LTBALL B2 'lAG TAGTOVM GPAGEREQ LTREBB R3 TAGDEV TASKE GTODEBCD LTRIIS'CRT R4 TAGDIST TASKSAVE IOBEQ POSTBEQ R6 TAGIBDEV TLINKS LACTLIBE RO B7 TAGIRLOC TYPPRT R15 SVECTORS INTREQ FMSGREQ R5 TAGID 'lCOM t::I (") (t) f!odule External References (Labels and Modules) DMTREI ACTIVE DMTSYSND IOTABLEA LOCKLIST R15 TASKNAME TPORTS DMTSIG ATTN DMTSISRT LACTIVE MAINSIZE R3 TASKQ TVECTORO COMDSECT DMTSYSTQ LACTLINE MPXIOQ R4 TASKREQ TIP3210 ALERTQ ACTIVE SVECTORS TAREA ASYNE TASKE ASINEXIT ASINNEIT ASYNTASK DISPATCH RO TASKNAME TGREG15 TGREG2 tMTSML ASINREQ IOTAELE POS'IREQ R5 TAGID TLINKS CC LACTLINE PROGADDR R6 TAGINDEV TIPPBT CCC LDRAIN RO R7 TAGINLOC TYPPUN CD LERRCNT Rl RS TAGINTOD TYP2700 COMDSECT LFLAG Rl0 R9 TAGINVM TYP3210 DEVCUU LHOLD Ell SILl TAGLINK UC ENDCSW LINKID R12 SKIP TAGNAME UE DMTSTO ACTIVE TASIUD DISPATCH MAINMAP TGREG1 TGBEG15 RO Rl R14 tMTSVC ACTIVE TGREGO NEWPSW TGREG13 OLDSVC TPSi HO B13 DMTSYS LINKIED BOUTSIZE TAGLE! tMTVEC DMTAKE DMTWA'I DMTASK DMTDSP D5TGIV DMTIOMRQ DMTMAPMS tMTMAPQE D5TMAPQU DMTPST tMTWAT ACTIVE DISPATCH LOCKLIS'I Rl TASKS'IAT WAITING R14 B15 ASYNBEQ DMTSISPT LACTDRVR MAIN MAP R2 TASKNEIT TPSW NEiSVC TGBEG14 DMTASY CSi ENDCSi LACTTNME NEiPBOG R5 TASKSAVE UE DEVCODE GMSGREQ LDEFDRVR CLDPROG SELIOQ TASKSTA'I WAITING DEVCUU IOADDR LFLAG POSTREQ SILl TCOM WAITREQ DISPATCH IOE LHALT PROGADDR SSAVE 'IGREGO Df!TC1'lX IOID LIMBe RO SVECTORS TGREG12 D5TCCMVC IONEIT LINKID Rl TAKEREQ TGREG13 DMTCRE IOREQ LINKLEN R12 TAREA TGREG2 tMTMGI IOSINCH LINKTABL R13 TASKE TGREG4 DMTSYSLK IOTABLE L5SGQ R14 TASKID TLINKS RB R14 R15 R2 R3 GIVEREQ LINKTABL R13 SPLINK 'IAGRECNM i AITREQ GMSGREQ LTOCNT R14 SPRECNUM TAGTCLOC GPAGEREQ LTRALL R15 SVECTORS TAGTOVM GTODEBCD LTRERR R2 TAG TASKE IOREQ LTRNSCNT R3 TAGDEV TASKSAVE IOSINCH PMSGREQ R4 TAGDIST TCOM R15 R2 R3 R4 SVECTORS TAREA R14 E15 SSAVE SVECTORS TABEA R2 R3 R4 R5 TASKE TASKE TASKSAVE DMTQRQ DMTSIG DMTSTO R6 SVECTORS TASKE ~ til (') til 3 til (I) 0 0. .... C 0 r+ (I) 1:1 r+ 0 1-'0 . I I W ~ ~ tj .... 1-'1'1 t:1' (I) (I) (') 0 r+ 0 1'1 1'1 0 1-'(I) en en en ~ (I) HI (I) ~ 1'1 (I) 0\ I:' .,.J 0 (I) Label count Beferenct=.:. ACTIV! 000030 ILEBTQ ILEBTBEQ ISYICOIE ISYIE ASYIEXIT lSYIID ASYIIEIT 000003 000005 000004 000011 000005 000002 000011 000006 000006 000001 000001 000001 000006 000087 000001 000001 000004 000004 000001 000005 000001 000006 000026 000001 000006 000013 000008 000015 000001 000001 000001 DftTIKE DeTilT DftTISK DeTIIS DftTISY DeTASY DftTISY DI!TASY DftTISY DI!TAXS DftTISY DftTBEX DftTIPT DeTIOft DftTIII DeTCBE DftTSPlL DeTSI!L DPlTCBE DI!TIOI! DftTIII DI!TIII DftTIPT DI!TIXS DftTIXS DI!TCRE DftTIXS DI!TAXS DftTIXS DftTAKE DftTVEC DftTVEC DftTVEC ISYIBE~ ASYITASK ITTI EOSOOT BUSY CIW CC CCC CD CE CHIIDCIiE CLISDASD CLISTEBI! CfttBEJ COftDSECT CSW CUE IE DEVCODE IEVCUU DISPITCH IftTIKE DftTISK tftTASY I!XI M In len DftTISK DeTISY DeTcce DftTISY DeTCftl DftTEXT DeTEXT DftTEXT DftTSIG DPlTftGX DftTIOft DftTIOft DPlTIOft tftTSIG DeTSIG DI!TEXT DPITLAX DftTEXT DPlTIOft DeTIPT DPlTIOft DPITSIG tftTBEI DPITSIG DeTDSP DPITEIT DeTGIV tPlTIOPl DeTBEI DPITSIG DPITSTO DPlTSVC II:"" 1>1tJ:! ItzJ IL-'I I I~ 10 I 13 10 I~ Ie: IL-'I It:o€I DPlTSftL In I!XI 10 IUl IUl DftTIOI! neTI))I DeTIPT DPITINI DPlTIOPl teTseL I!XI ItIEl II'll! It:o€I I!XI ltv 12: In ItIEl DeTLAX DftTCftX DPlTIII DI!TftGX DftTIOft tftTIPT DftTBEI DeTREX DftTSftL DI!TCBE DftTCI!X DftTCftl DeTASK DeTIII DI!TCB! DftTIII DftTASY DftTICI! tftTIII DftTICft tftTCOe DftTBEX DeTBEX DeTEXT DI!TSftL DftTGIV Dft'IIII DPlTICft DPITBEX DPITSIG DftTSTO DPlTWIT !XI Ul n Ul L-'I l» Ul CD 0 r+ """ t:S 0 W ~ """ 1'1 e;," CD ~ I r+ 0 I 3 0 ~ c: ~ CD 0 n 1'1 0 1'1 en CD r+ 0 CD """ [/) ~ 0\ \D [/) !XI CD HI CD 1"1 CD t:I 0 CD -= ...,J Label count References DKTCtU IKTCOKVC DKTCRE IKTCRltA DKTDSP IKTGIV DKTIOKHI DKTIOKRQ DKTfIlAPeE tKTftAPKS DKTKAPQE DKTIUPCU tKTfIlGX DKTKSG tftTPST DftTQRQ I:KTREXCH DftTREXHC tftTREXID DftTREXYL IftTSIG DftTSTO DftTSISLK D!lTSISllD tftTSISPT DKTSISRT tftTSISTQ DftTiAT EIDCSW EIDSERSE EQCBK EXTQ FREEE FREEID FREEHEXT FREEQ GIYEADtR GIYEE GIYEBAKE GIVEHEIT GIVEBlt GIVEQ GIVEREQ GIVERID 000001 000001 000003 000003 000001 000001 000001 000001 000001 000001 000002 000001 000010 000001 000001 000001 000001 000004 000001 000001 000001 000001 000001 000001 000001 000001 000001 000001 000014 000001 000001 000004 000008 000002 000009 000005 000004 000013 000003 000014 000005 000005 000018 000002 DKTEEX DKTREX Dl!TCKX DKTCKX DKTVEC DKTVEC Dl!TIHI DKTVEC Dl!TINI DKTVEC DKTINI DKTYEC DKTCftX DKTeGX DftTVEC DftTYEC DftTCftX DKTCKX DflTCftX DKTIHI DftTYEC DKTYEC DftTREX DKTEEX DftTREX DKTEEX DKTREX DftTYEC DflTCRE DKTIOfl DftTHPT DKTASK DflTASK DKTASK DftTASK DKTIBI DftTAKE DKTAKI DKTAKE DPlTAKE DftTAKE DKT AKE DfilTAXS DKTAKE !%I til n 0 c: :I: " w ...,J 0 til '< til ri" (1) B tr 0 I.Q !J. n I» t:J s:lI ~ tot 0 tr ...., (1) B 0 (1) ri" (1) tot • !J. t:J I» ri" !J. 0 t:J en c: !J. p.. (I) til t"'I ~ Dl!TREX DKTIHI tr' ...., (1) , 0, rio :I: 0 p.. I:l ...., DKTVEC (1) n DftTREX tot 0 til til ~ tttttttt tttttttt (all others) tttttt vvvvvv EX xxxxxxxx zz vvvvvv mnem xxxx xxxxxxxx For an executed instruction, where zz (see preceding explanation of symbols) is nonzero, the mnemonic for the executed instruction is given as if the zz byte had been put into the instruction with an OR opera tion. vvvvvv mnem xxxxxxxx xxxx 506 VM/370: system Logic and Problem Determination Guide vvvvvv mnem xxxxxxxx *** vvvvvv iot code !LQ !~1EBBgR%!g~ ==) ==) tttttt tttttt (First line given only if "CSW" vas specified): CSW V vadd xxxxxxxx xxxxxxxx R radd yyyyyyyy yyyyyyyy *** vvvvvv I/O vadd ==) tttttt CSW xxxx ~B!~fB IBA£~: (ALL option selected) Entry for 'branch from' instruction vvvvvv mnem xxxxxxxx tttttt Entry for 'branch to' instruction ==) vvvvvv mnem xxxxxxxxxxxx section 4. Diagnostic Aids 507 CP real machine debugging is reserved for Class C users (system programmers) and Class E users (system analysts). CP has facilities to examine data in real storage (via the DCP and DMCP commands) and to store data into real storage (via the STCP command). There is no facility to examine or alter real machine registers, PSW, or storage words. Remember, real storage is changing even to examine and alter it. as you issue the CP commands system programmers and analysts may also want to use the CP internal trace table. This table records events that occur on the real machine. 508 VM/370: System Logic and Problem Determination Guide Use the DCP command to display the contents of real storage locations at the terminal. If an invalid operand is entered, the DCP command terminates. However, any previous valid operands are processed before termination occurs. The format of the DCP command is: r ---------------------~ I I DCP 1 1 I 1 1 1 1 1 1 1 1 1 1 I I I 1 1_______ _ L Lhexloc1 Thexloc 1 hexloc1 r r " L .I I I r , I I~!Q L L.I.I ILhexIOC111{-}1 hexloc2 I 1 1Thexloc 11 1 : 1 ~!!.Q 1 1 1 hexloc 11 1 L .I 1 .Q 11 1 1 I{. lIbytecount I 1 I 1 I I , 1 hexloc21 1 lHH! 1 L ,r specifies the first storage location to be displayed. If hexloc1 is the only operand, it specifies the only storage location to be displayed. If hexloc1 is not specified, L or T must be specified and the display begins with storage location o. If hexloc1 is specified and L or T is not specified, the display is in hexadecimal. T specifies that an EBCDIC translation is to be included with the hexadecimal display. L specifies that the display is to be in hexadecimal only. If hexloc1 is followed by a period and is not on a fullword boundary, it is rounded down to the next lower fullword. o r r .I specifies that a range of locations is to be displayed. To display the contents of one or more storage locations by specified storage address location the "-" or ":" must be used. The hexloc2 operand must be 1- to 6-hexadecimal digits; leading zeroes need not be specified. In addition, The hexloc2 operand must be equal to hexloc1 and it should not exceed the size of real storage. If END is specified, real storage from hexloc1 through the end of real storage is displayed. If hexloc2 is not specified, END is the default. Note that this occurs only if "-" or ":" follows the first operand. , {.}Ibytecountl is a hexadecimal integer designating the number of I ~!~ 1 bytes of real storage (starting with the byte at L .I hexloc1) to be displayed on the terminal. The sum of hexloc1 and the bytecount must be an address that does not exceed the size of real storage. If this address is not on a fullword boundary, it is rounded up to the next higher fullword. The bytecount operand must be a value of 1 or greater and may not exceed six hexadecimal digits. Section 4. Diagnostic Aids 509 Normally, a user will or should define the locations of storage in the following manner: dcp dcp dcp dcp dcp beginning and ending Lhexlocl-hexloc2 Thexlocl-hexloc2 hexlocl:hexloc2 hexlocl.bytecount hexlocl:hexloc2 hexlocl.bytecount Note that no blanks can be entered between the limit or range symbols (: or - r . ) or any of the operands except for the blank or blanks between the command name and the first operand. 1 blank is also required between each set of operands when more than one set cf operands are entered on one com.and line. However, if a blank immediately follows the designated type character (T or L), DCP displays all of real storage. If the next operand is either a colon (:), a hyphen (-), or a period (.) followed by a blank character, the system again defaults to a display of all storage locations as this operand assumes a second set of operands. Blanks separate operands or sets of operands if more than one operand is entered on the same command line. Blanks should not occur on the right or left of range or length symbols, unless it is intended to take the default value of the missing operand defined by the blank. ~2!~: The following are displays. dcp 1 dcp t dcp dcp dcp dcp dcp dcp dcp dcp . The following embedded blanks: dcp 1 examples of DCP entries that 11: t: 1• t• displays all dcp dcp dcp dcp dcp 00: l-end t-end O-end of storage produce full storage dcp dcp dcp dcp dcp three times t:end t:end O:end 1.end O.end because of the .t Requested locations are displayed in the following format: xxxxxx = wordl word2 word3 word4 [key] *EBCDIC translation* where xxxxxx is the real storage location of wordl. "wordl" is displayed (word aligned) for a single hexadecimal specification. Up to four words are displayed on a line. If required, multiple lines are displayed. The EBCDIC translation is displayed aligned to the next lower 16-byte boundary if Thexloc is specified. Nonprintable characters display as a ".". If the location is at a 2K page boundary, the key for that page is also displayed. The output can be stopped and the command terminated by pressing the ATTN key (or its equivalent). 510 VM/370: system Logic and Problem Determination Guide Use the DMCP command to print the contents of real storage locations on the user's virtual spooled printer. The output format is eight words per line with EBCDIC translation. Multiple storage locations and ranges may be specified. To get the output printed on the real printer, the virtual spooled printer must be terminated with a CLOSE command. The format of the DMCP command is: r , , -, , r I r I I r hexloc2 I I [ *d umpid ] I I DMCP I I Lhexloc 1 I I IThexlocl II : I lH!.Q I I I L J I I I I hexloc 1 II I Q I I I II I I .1'1 I L I I I I I I I r I I {. } I bytecoun t I I I I I I I I I I~!Q I I L L J .I LI __________________________________________________________________ ----J I "{-}I , , Lhexloc1 Thexloc1 hexlocl specifies the first storage location to be dumped. If hexloc1 is the only operand, it specifies the only storage location to be dumped. If hexlocl is not specified, L or T must be specified and dumping starts with storage location O. An EBCDIC translation is included with the dump contents. If hexlocl is followed by a period and is not on a fullword boundary, it is rounded down to the next lower fullword. o r , is a range of real storage locations to be dumped. To dump to the end of real storage, hexloc2 may be specified as END or not specified at all, in which case END is assumed by default. -.. } I hexloc21 { I END I L r .I , {.}Ibytecountl is a hexadecimal integer designating the number of I END I bytes of real storage (starting with the byte L .I at hexlocl) to be typed at the printer. The sum of hexloc1 and the bytecount must be an address that does not exceed the size of real storage. If this address is not on a fullword boundary, it is rounded up to the next higher fullword. If the "." is used for a range, hexloc2 is defined as the number of hexadecimal storage locations (in bytes) to be dumped starting at hexloc1. If hexloc2 is specified as a length in this way, it must have a value such that when added to hexlocl it will not exceed the storage size. *d umpid is specified for identification purposes. If specified, it becomes the first line printed preceding the dump data. Up to 100 characters with or without blanks may be specified after the asterisk prefix. If dumpid is specified, hexloc2 or bytecount must be specified. The asterisk (*) is required to identify the dumpid. section 4. Diagnostic Aids 511 Normally, a user would define beginning and ending dump locations in the following manner: dmcp Lhexloc-hexloc -- or -dmcp hexloc.bytecount Note that there are no blanks between length or range symbols (: or or.) or between any of the operands except for the blank(s) between the command and the first operand. A blank is also required between each set of operands when more than one set of operands are entered. Note, only one period (.), colon (:), dash (-) or no delimiter may be used within each set of operands. If, however, a blank immediately follows the designated type character, the default dump starting and ending locations are assumed to be the beginning and/or end of virtual storage. Similarly, if the range or length symbol separates the first character from a blank or END, all of real storage is dumped. !2~~: Blanks separate operands or sets of operands if more than one operand is entered on the same command line. Blanks should net occur on the right or left of the range or length symbol, unless it is intended to take the default value of the missing operand defined by the blank. Thus, all of the following produce full storage dumps. dmcp 1 dmcp t dmcp dmcp dmcp . dmcp dmcp dmcp dmcp dmcp 1t1: t: 1. Each of the following embedded blanks: dmcp dmcp dmcp dmcp dmcp t. 00: o. I-end dmcp dmcp dmcp dmcp dmcp produces three t-end O:end l.end l.end O.end full dumps because of the dmcp 1 • t dmcp - • • !2~~: In cases where multiple storage ranges or limits are specified on one command line and the line contains errors, command execution successfully processes all correct operands to the encountered error. The encountered error and the remainder of the command line is rejected and an appropriate error message is displayed. As the dump proceeds, the following message appears at the terminal indicating that the dump is continuing from the next 64K boundary: DUMPING LOC hexloc where "hexloc" is the segment such as 020000, 030000, 040000. (64~ address for If the user signals attention on the terminal is displayed, the dump ends. the dump continuation, !Ail~ the above message COMMAND COMPLETE indicates normal completion of the dump. 512 VM/370: System Logic and Problem Determination Guide Use the LOCATE command to find the addresses of CP control associated with a particular user, a user's virtual device, or system device. The control blocks and their use are described VM/370: Data Areas and Control Block Logic. The format of the command is: blocks a real in the LOCATE ----, I I r I I LOCate userid [Vaddr]} { raddr L --I userid is the user identification of the logged on user. The address of this user's virtual machine block (VMBLOK) is printed. vaddr causes the virtual channel block (VCHBLOK), virtual control unit block (VCUBLOK), and virtual device block (VDEVBLOK) addresses associated with this virtual device address to be printed with the VMBLOK address. raddr causes the real channel block (RCHBLOK), real control unit block (RCUBLOK), and the real device block (RDEVBLOK) addresses associated with this real device address to be printed. VMBLOK xxxxxx VMBLOK VCHELeK xxxxxx VCUBLOK xxxxxx xxxxxx RCHBLOK RCUBLOK RDEVBLOK xxxxxx xxx xxx xxxxxx VDEVBLOK xxxxxx section 4. Diagnostic Aids 513 Use the MONITOR command to initiate or terminate the recording of events that occur in the real machine. This recording is always active after a VM/370 IPL (manual or automatic). The events that are recorded in the CP internal trace table are: • • • • • • • • • • • • • • • • • External interruptions SVC interruptions Program interruptions Machine check interruptions I/O interruptions Free storage requests Release of free storage Entry into scheduler Queue drop Run user requests start I/O unstack I/O interruptions storing a virtual CSW Test I/O Halt device unstack IOBLOK or TRQBLOK NCP BTU (Network Control program Basic Transmission Unit) Use the trace table to determine the events that preceded a CP system failure. The format of the MONITOR command for tracing events in the real machine is: . , r I MONitor IL _ _ _ _ _ STArt CPTRACE} { STOP CPT RACE I I ------I START CPTRACE starts the tracing of events that occur on the real machine. The events are recorded on the CP internal trace table in chronological order. When the end of the table is reached, recording continues at the beginning of the table, overlaying data previously recorded. STOP CPTRACE terminates the internal trace table event tracing. Event recording ceases but the pages of storage containing the CP internal trace table are not released. Tracing can be restarted at any time by issuing the MONITOR START CPT RACE command. COMMAND COMPLETE The MONITOR command was processed successfully. 514 VM/370: System Logic and Problem Determination Guide Use the QUERY command to request system status and machine configuration information. (For 3704 or 3705 Communication controllers and remote 3270 resources see the Class A and B NETWORK command.) Not all operands are available in every privilege class. Operands available to the specified privilege classes The format of the Class A and E QUERY command is: ---------------------------------------, } I r I are given below. Query I IL_ _ _ _ _ _ _ _ PAGing PRIORity userid { SA,Ssist I -------1 PAGING displays the current system paging activity. PRIORITY userid displays the current priority of the specified userid. This is established in the VM/370 directory but can be overridden by the SET PRIORITY nn command. SASSIST displays the current status of the Virtual Machine Assist feature for the VM/370 system. PAGING nn, SET mm, RATE nnn/SEC INTERVAL=XX:xx:xx nn specifies the percentage of time the page wait during this time interval. mm is the system paging activity index (threshold value). This value affects the paging rate and degree of multiprogramming that VM/370 tries to attain. The value mm is normally 16. nnn/SEC is the current CP paging rate in pages per second. XX:XX:XX is the time interval PAGING commands. between the system was issuance of section 4. Diagnostic Aids in QUERY 515 userid PRIORITY = nn nn is the the assigned priority of the lower the value, the higher the priority. specified user. The SASSIST ON or OFF is indicates that the virtual is enabled or disabled from the system. Machine Assist feature The format of the Class B QUBRY command is: r----------------------------------------------------------------------, , r Query DAsd TApes LINES1 UR GRaf ALL l 1.!£li!!i! I IOFFline I IFREe I I ATTach I IALL I L .J ! DAsd volid TDsk STORage raddr SYStem raddr DUMP I I 11Query LINES is not effective for 3704/3705 resources unless thel I 3704/3705 is operating in 2701, 2702, 2703 Emulation Program (EP) I I mode. For 3704/3705 Communications Controllers operating in Networkl I Control Program (NCP) or Partitioned Emulator Program (PEP) mode usel I the NETWORK QUBRY command. I L___________ --' DASD displays the real addresses of disk or drum devices. TAPES displays the real addresses of magnetic tape units. LINES displays the real addresses of communication lines. UR displays the real addresses of unit record dev:ices (card reader, card punches, printers) • GRAF displays the locally attached display devices. ALL (used as a first operand) size of real storage. DASD volid displays the active or free volume. 516 displays all devices and the status of the specified DASD VM/370: System Logic and Problem Determination Guide TDSK displays all the currently allocated temporary disk space (TDSK) from all available system owned volumes assigned to virtual machine users. STORAGE displays the size of real storage. raddr displays address. SYSTEM raddr displays the userid, virtual address, and access mode of virtual disks which reside on the specified channel and control unit address raddr belonging to logged on users. DUMP displays at the operator's terminal the type of device and device address of the unit designated to receive abnormal termination dumps. ACTIVE displays the status of only the active devices within the group specified. This is the default. Active devices do not include devices that are "free" or "offline". An active device is one that is in use by a user or the system. OFFLINE displays only the devices in an "offline" status within the group specified. An offline device is one that is not available for access by any user or the system. FREE displays all the devices that are not currently in use by the system or a user on the system. Free devices do not include "offline" devices. A free device is one that is not in use by a user or the system. ATTACH displays all the on the system. device. ALL (as the second operand) displays the status of all devices within the group specified. The status is typed in the order of "active", "free" and "offline" and is equivalent to the response from entering the status of the device at the specified devices that are dedicated to any user An attached device is also an active QUERY type ACTIVE QUERY type FREE QUERY type OFFLINE Produces the same results as if the following commands vere issued: QUERY QUERY QUERY QUERY QUERY QUERY STORAGE UR LINES DASD TAPES GRAF section 4. Diagnostic Aids 517 DASD raddr ATTACH TO userid vaddr is displayed if the real device specified by raddr is attached to a user's (userid) virtual machine at virtual address vaddr. DASD raddr CP SYSTBM volid nnn is displayed if the real device designated by raddr is allocated to the system for use as user's minidisks. nnn is the number of active user's minidisks on the physical disk and volid is the volume serial number of the real disk. DASD raddr CP OWNED volid nnn is displayed if the real device designated by raddr is used by the system for paging and spooling activity. nnn is the number of active user's minidisks (if any) on the physical disk and volid is the volume serial number of the real disk. TAPE raddr CP SYSTEM is displayed if the real tape device designated attached to CP for its exclusive use. by raddr is TAPE raddr ATTACH TO userid vaddr is displayed if the real tape device designated by raddr is attached to a user's (userid) virtual machine at virtual address vaddr. PRT} {STARTED \ { PUN raddr DRAINED f SYSTEM CLASS RDR = a.. • STARTED} raddr { DRAINED SYSTEM is displayed for each unit record for spooling activity. 518 SEP } { NOSEP device assigned to -the system raddr is the real device address (cuu). DRAINED indicates that the device is not currently available for processing. A START command must be issued to activate the device. V8/370: System Logic and Problem Determination Guide STARTED indicates that activity. the device a... specifies the classes serviced by the output device. Up to four classes may be serviced by an output device. No blanks or commas are allowed between classes. NOSEP indicates option. the SEP indicates option. the device device is available was started was started for spooling with the NOSEP without the NOSEP Note: The separator (SEP) option applies to printer output where the edge of the fanfo1ded continuous forms are heavily printed. This indicates to the spooling operator the beginning and end of adjacent spool files. PRT} raddr ATTACH TO userid vaddr PUN { RDR is displayed if the device machine at vaddr. is attached to a user's virtual If the unit record device is currently active with a spool file, the following additional response is also given: PRT } { PRINTING} { PUN raddr t PUNCHING userid FILE RDR raddr READING userid FILE file RECDS norecs COpy nn a typ file userid is the name of the spool file owner. file is the spool file spoo1id number. norecs is the total file logical record count. nn is the number of copies remaining for output, where 01 indicates the last copy. a is the spool file class. typ is the originating device type (PRT, PUN, CON). LINE} raddr LOGON AS userid { CONS indicates that the user represented by userid is currently logged on at the terminal located at the address raddr. section 4. Diagnostic Aids 519 LINE raddr ATTACH TO userid vaddr indicates that the communication line at raddr is attached to the virtual machine represented by userid at virtual address vaddr. GRAF raddr LOGON AS userid indicates that the user represented by userid is currently logged on at the terminal located at real address raddr. GRAF raddr ATTACH TO userid vaddr indicates that the display device at real attached to the virtual ~achine represented virtual address vaddr. This command produces following format: a response for each address raddr is by userid at the offline device in the type raddr OFFLINE Multiple responses are displayed in the following format: type raddr OFFLINE, Note: In the above responses the term type following device types: 1.IE§! DASD TAPE LINE RDR PRT PUN GRAF CONS CTCA CTLR DEV refers to one or more of the ~~~!!!!!g Direct access device Magnetic tape units Communication line Card reader Line printer Card punch Graphics device Console Channel to channel adapter 3704/3705 communications controller Any other device This command produces a response for each device that is offline in the following format: not active or type raddr :FREE 520 VM/370: System Logic and Problem Deteraination Guide Por unit record devices the response is: type raddr DRAINED Note: devIce. This response implies that no spool files are queued for this Por communication devices the response is: ENABLED } type raddr { DISABLED For DASD devices with mounted volumes the response is: type raddr {FREE } volid Multiple responses are displayed in the following format: type raddr FREE, The command response is given in depending upon the device status. either the "active" or "free" format This command displays all the currently allocated user TDSK space from all available system-owned volumes. One entry of the following format is produced for each TDSK: use rid vaddr nnn use rid is the virtual machine identification. vaddr is the user's virtual device address. nnn is the number of cylinders allocated. !Q!~: If the operator does a QUERY to any real device or group of devices (such as QUERY DASD) the following message occurs for all devices in a not-ready status and the CPU alarm rung: type raddr INT REQ section 4. Diagnostic Aids 521 STORAGE = xxxxxK displays the size bytes. of real storage (xxxxx) in The response to this command depends upon raddr. multiples of 1024 the type of device located at See the QUERY DASD, TAPES, UR, GRAF, and LINES responses. This command requests the number of user minidisks residing on the physical disk located at raddr. The response for each minidisk is given in the following format: userid vaddr mode, userid is the identification of the user who owns the minidisk. vaddr is the virtual address by which minidisk. the user refers to the mode is the type of access the user has: either R/O or R/W, or nnn for the number of cylinders of TDSK space allocated. type raddr DUMP UNIT {CP } ALL indicates that the device of device type "type" located at raddr is the system dump unit. 522 VM/370: System Logic and Problem Determination Guide The format of the Class D QUERY command is: --------, r r Query , Files [CLass c] luseridl I * I .J L , , Reader rr Printer II ALL I [userid ]1 PUnch II CLass al I .J IL I I spoolid I L HOld .J _______________________________----J FILES displays the number of spooled input and output files. The Class D user receives the total count in the system. Files that are currently being processed are not included in the totals. CLASS c displays only the spool files of the specified class. CLASS is omitted then all spool classes are examined. use rid displays only the spool files owned by the specified userid. If userid is omitted then spool files owned by all users are examined. * displays only the spool files of the logon user who issued the QUERY command. READER RDR displays basic information concerning reader spool files. PRINTER PRT displays basic information concerning printer spool files. PUNCH PCH displays basic information concerning punch spool files. !Q~~: If The basic information displayed is: userid of the owner of the spool file. If exam~n~ng files for a specific user (userid option), the userid indicates the originator of the spool file. • spool file spoolid number • Class and originating device type • Number of logical records in the file • Number of copies specified for the file • File hold status HOLD displays a list of users HOLD command. whose output is being held by the ALL displays additional information for all spool files examined. Section 4. Diagnostic Aids 523 displays additional information for the specified spool file. The spool identification (spoolid) is a VM/370 generated sequential nu~ber assigned to each spool file. spoolid The additional information displayed is: • Date and time the file was created • Filename and filetype of the file (if any) • Distribution code of the file ~~E~X 111~~ [CLass c] [userid] FILES: {=~n} RDR, { '=~n } PRT, { :~n} PUN displays the total number of spool files in the system, particular class, or for a particular userid. of a , r , I ALL I I Class a I [userid] L J spoolid I I I I I J Basic Information r v , .---Additional Information--, V v v r OWNERIDl FILE CLASS RECDS CPY HOLD IDATE TIME NAME use rid file a typ norecs nn stat Imm/dd hh:mm:ss name TYPE type L , DIST I code I J Only one file is listed for a QUERY READER, QUERY PRINTER, or QUERY PUNCH command if the spoolid operand is specified. The DATE, TIME, NAME, TYPE, and DIST information only when the following commands are issued: is displayed QUERY {READER } {ALL . } PRINTER spoo11d PUNCH 1!h!g:~: userid is the identification of the user who owns the file. file is a unique, system assigned number which VM/370 to identify the file. a is the spool file class. is used by lOWNERID heading the title line for the spool file data is altered to ORIGINID when the userid operand is used. In that event, ORIGINID represents the originator of the file. 524 VM/370: system Logic and, Problem Determination Guide typ is the originating RDR) • device type norecs is the number file. nn is the number of copies specified for the file. no effect for reader files.) stat is the file hold status and is either of logical (PRT, records PUN, CON, contained in or the (Has NONE - no hold USER user hold mm/dd is the date the file was created in month/day. hh:mm:ss is the actual time of the hours:minutes:seconds. filename is the filename assigned to the file (if any). If the file has a 24-character data set name (dsname), only 20 characters are displayed. These characters extend from the "name" field through the "type" field. filetype is the filetype assigned to the file (if any). distcode is the distribution code of the file. creation of the file in HOLD : {NO } RDR, {NO } PR T, {NO } PUN nnn nnn nnn userid -{ ~~~~ PRT PUN , ••• The first response displays the total number of files within the system which are retained in the SYSTEM HOLD status. The second response indicates the type of hold (if any) for any user in the system for which HOLD is in effect. The user who issues QUERY HOLD may receive, depending upon the status of his spooled files, the first response, the second response, or both responses. section 4. Diagnostic Aids 525 The format of the Class A, B, C, D, E, F, and G QUERY command is: r-------------------------------------------------------------g J , I Query I {LOGmS I I I Names I I I user~ [userid ] I L ----JI I __________________________________________________________________ I userl.d LOGMSG displays the log messages of the day. NAMES displays a list of all the users logged on and the real address of the line to which each is connected. If the user is disconnected, DSC is displayed instead of the line address. USERS displays the number of logged on users and the number of users dialed to other virtual machines. If use rid is specified, the userid and device address of the user's terminal are displayed if he is logged on. If the specified user is not logged on, a message to that effect occurs. Use the USERS operand if the userid is the same as an operand (or its minimum truncation) of the QUERY command. Note: It is possible for the number of users logged on as indIcated by the 'NAMES' operand to differ from the number logged on as indicated by the 'USERS' operand. The number of users in the process of logging on and logging off accounts for this difference. userid displays the userid and the device address of the user's terminal if he is logged on. If the user is not legged on, a message to this effect occurs. * logmsg text line * 109ms9 text line n logmsg additional text lines All lines (both those with and without an asterisk) message fil~ are displayed. 526 VM/370: System Logic and Problem Determination Guide in the log userid - {DSC }' raddr userid - {DSC }, ••• raddr Lists all logged on users. If the user is currently connected, the real address to which he is connected is displayed (raddr). If he is not connected to the system, DSC is displayed. nnn USERS, mmm DIALED nnn is the total number of logged on users. mmm is the total number of users logically attached DIAL command to virtual machines. via the Note: The term DIALED means that the line is not available to CP because It-Is logically attached to a logged-on user and is a part of that user's virtual machine operation. userid - raddr displays the real address connected. (raddr) to which the specified user is section 4. Diagnostic Aids 527 Use the STCP command to alter the contents of real storage. The real PSi or real registers cannot be altered with this command. The format of the STCP command is: r---------------------------------------------------------------------, I STCP I { { hexloc} hexword1 [hexword2 ••• ] } I I I LI I I I I I I Lhexloc Shexloc hexdata ____________________ ~ hexloc Lhexloc stores the data given in hexword1 [hexword2 ••• ] in successive fullword locations starting at the address specified by hexloc. The smallest group of hexadecimal values that can be stored using this specification is one fullword. Data is aligned to the nearest fullword boundary. If the data being stored is less than a fullword (8-hexadecimal digits), it is right-adjusted in the word and the high order bytes of the word are filled with zeros. Either specification (hexloc or Lhexloc) may be used. Shexloc stores the data given in hexdata in the address specified by hexloc without word alignment. The shortest string that can be stored is one byte (2-hexadecimal digits). If the string contains an odd number of characters, the last character is not stored. An error message occurs and the function ends. hexword specifies up to 8-hexadecimal digits. If less than eight digits are specified, the string is right justified in a fullword and left-filled with zeros. If two or more hexwords are specified, they must be separated by at least one blank. hexdata specifies a string embedded blanks. of two or more hexadecimal digits with no STORE COMPLETE 528 VM/370: System Logic and Problem Determination Guide Use the DASD Dump Restore (DDR) program to dump, restore, copy, or print VM/370 user minidisks. The DDR program may run as a standalone program, or under CMS via the DDR command. The DDR program has five functions: 1. Dumps part or all of the data from a DASD device to tape. 2. Transfers data from tapes created by the DDR dump function to a direct access device. The direct access device must be the same as that which originally contained the data. 3. Copies data from one device to another of the same type. Data may be reordered, by cylinder, when copied from disk to disk. In order to copy one tape to another, the original tape must have been created by the DDR DUMP function. 4. Prints selected parts of DASD and tape records EBCDIC on the virtual printer. 5. Displays selected parts of DASD and tape records in hexadecimal and EBCDIC on the terminal. in hexadecimal and TO generate the VM/370 starter system from the distribution standalone RESTORE function must be used. tape, the INVOKING DDR UNDER CMS The format of the DDR command is: r----------I I I I I DDR I [fn I I ---------------.-------------., r , ft Ifml I.! I L ] .J L section 4. Diagnostic Aids 529 r , fn ft Ifml 1* I L ~ is the identification of the file containing the control no file statements for the DDR program. If identification is provided, the DDS program attempts to The filemode obtain control statements from the console. defaults to * if a value is not provided. !Qi~: If you use the CMS DDR command, CMS ignores the SYSPRINT control statement and directs the output to the CMS printer OOE. INVOKING DDR AS A STANDALONE PROGRAM To use DDR as a standalone program, the operator should IPL it from a real or virtual IPL device as he would any other standalone program. Then indicate where the DDS program is to obtain its control statements by responding to prompting messages at the console. Note: Be aware that DDR when run as a standalone program does not have error recovery support. However, when DDR is invoked in CMS, in a virtual machine environment, the I/O operation is performed by CP (CP has built-in error recovery facilities). DDR CONTROL STATEMENTS DDR control statements describe the intended processing and the needed I/O devices. I/O definition statements must be specified first. All control statements may be entered from either the console or the card reader. Only columns 1 to 71 are inspected by the program. All data after the last operand in a statement is ignored. An output tape must have the DASD cylinder header records in ascending sequences; therefore, the extents must be entered in sequence by cylinder. Only one type of function -- dump, restore, or copy -- may be performed in one execution, but up to 20 ~tatements describing cylinder extents may be entered. The function statements are delimited by an INPUT or OUTPUT statement, or by a null line if the console is used for input. If additional functions are to be performed, the sequence of control cards must be repeated. If you do not use INPUT or OUTPUT control statements to separate the functions you specify when the input is read from a card reader or CMS file, an error message (DMKDDR702E) is displayed. However, the remainder of the input stream will be checked for proper syntax, but no further DDR operations will be performed. only those statements needed to redefine the I/O devices are necessary for subsequent steps. All other IIO definitions remain the same. To return to CMS, enter a null line (carriage return) in response to the prompting message (ENTER:). To return directly to CP, key in #CP. The PRINT and TYPE statements work differently from other DDR control statements in that they operate on only one data extent at a time. If the input is £rom a tape created by the dump function, it must be positioned at the header record for each step. The PRINT and TYPE statements have an implied output of either the console (TYPE) or system printer (PRINT). Therefore, PRINT and TYPE statements need not be delimited by an INPUT or OUTPUT statement. 530 VM/370: System Logic and Problem Determination Guide I/O DEFINITION STATEMENTS The I/O definition statements describe the tape, DASD, and devices used while executing the DASD Dump Restore program. An INPUT or OUTPUT statement describes each The format of the INPUT/OUTPUT statement is: tape and DASD printer unit used. r--------------------------------------------------~------------------, I I INput I OUTput I I I I I I IL __._ I I I I I I I I I I I I I L.I I QE:th2!!§ : I r 1r ,r' I ISKip nn I IMOde 6250 I IREWindl I I~~!E Q I IMOde 1600 I IQ!J~~~I I L .I I MOde 800 I I LEave I I L . I L.I _ _____________________________ --1I r, cuu type Ivolserl laltapel [(options ••• )] INPUT indicates that the device described is an input device. OUTPUT indicates that the device described is an output device. cuu is the unit address of the device. type is the device type (2314, 2319, 3330, 3330-11, 3340-35, 3340-70, 3350, 2305-1, 2305-2, 2400, 2420, or 3420) (no 7-track support for any tape devices). Specify a 3410 device as a 3420, a 3340-70F as a 3340-70, and a 3333 as a 3330. Specify a 3350 that is in 3330-1 or 3330-11 compatibility mode as a 3330 or 3330-11. Specify a 3344 as a 3340-70, and specify 3350 for a 3350 operating in native mode (as opposed to compatibility mode). Note: The DASD Dump Restore (DDR) program, executing in a vIrtual machine, uses I/O DIAGNOSE 20 to perform I/O operations on tape and DASD devices. DDR under CMS requires that the device type entered agree with the device type of the real device as recognized by VM/370. If there is a conflict with device types, the following message is issued: DMKDDR708E INVALID OPTION However, if DDR executes standalone in a virtual machine, DDR uses DIAGNOSE 20 to perform the I/O operation if the device types agree. If the device types do not agree, error message DMKDDR708E is issued. volser is the volume serial number of a DASD device. If the keyword "SCRATCH" is specified instead of the volume serial number, no label verification is performed. al tape is the address of an alternate tape drive. section 4. Diagnostic Aids 531 ~Q~~: If multiple reels of tape are required and "altape" is not specified, DDR types the following at the end of the reel: END OF VOLUME CYL xxx HD xxx, MOUNT NEXT TAPE After the new tape is mounted, DDR continues automatically. forward spaces nn files on the tape. nn is any number up to 255. The SKIP option is reset to zero after the tape has been positioned. SKIP nn o r , MODE 162501 causes all output tapes that are opened for the first 116001 time and at the load point to be written or read in I 8001 the specified density. All subsequent tapes mounted L ~ are also set to the specified density. If no mode option is specified, then no mode set is performed and the density setting remains as it previously was. REWIND rewinds the tape at the end of a function. UNLOAD rewinds and unloads the tape at the end of a function. LEAVE leaves the tape positioned at the the end of a function. end of the file at !~!~: When the wrong input tape is mounted, the message DMKDDR709E is displayed and the tape will rewind and unload regardless of options REWIND, UNLOAD, or LEAVE being specified. Use the SYSPRINT control statement (in the standalone DDR virtual machine only) to describe the printer that is to print data extents specified by the PRINT statement. It also can print a map of the cylinder extents from the DUMP, RESTORE, or COpy statement. If the SYSPRINT statement is not provided, the printer assignment defaults to ODE. CMS ignores the SYSPRINT statement when you invoke DDR as a command under CMS, and CMS always directs the output to OOE. The format of the SYSPRINT control statement is: r I L cuu SYsprint ------------------,I ------------------------------------------------- cuu -~ specifies the unit address of the device. The function statements tell the DDR program what action to perform. The function commands also describe the extents to be dumped, copied, or restored. The format of the DUMP/COPY/RESTORE control statement is: 532 VM/370: System Logic and Problem Determination Guide r----------------------------------------------------------------------, I I r , I I DUmp I Icyl1 [To] [cyl2 [Reorder] [To] [cyI3]] I I I COpy I ICPvol I I I REstore I 1111 I I I I INUcleus I I --'I IL _____________________________________________________________________ I L -' DUMP requests the program to move data from a direct access volume onto a magnetic tape or tapes. The data is moved cylinder by cylinder. Any number of cylinders may be moved. The format of the resulting tape is: Record 1: a volume header descrIbing the volUmes. record, consisting of data Record 2: a track header record, consisting of a list of count fields to restore the track, and the number of data records written on tape. After the last count field the record contains key and data records to fill the 4K buffer. !!~£QIg 3: track records -packed truncated. data into records, consisting of 4K blocks, with the key and data last record Record 4: either the end-of-volume (EOV) or end-of-job (EOJ) traIler- label. The end-of-volume label contains the same information as the next volume header record, except that the ID field contains EOV. The end-of-job trailer label contains the same information as record 1 except that the cylinder number field contains the disk address of the last record on tape and the ID field contains EOJ. COpy requests the program to copy data from one device to another device of the same or equivalent type. Data may be recorded on a cylinder basis from input device to output device. A tape-to-tape copy can be accomplished only with data dumped by this program. RESTORE requests the program to return data that has been dumped by this program. Data can be restored only to a DASD volume of the same or equivalent device type from which it was dumped. It is possible to dump from a real disk and restore to a minidisk as long as the device types are the same. cyl1 [TO] [cyl2 [REORDER] [TO] [eyI3]] only those cylinders specified are moved, starting with the first track of the first cylinder (cyI1), and ending with the last track of the second cylinder (cyI2). The REORDER operand causes the output to be reordered, that is, moved to different cylinders, starting at the specified cylinder (cyI3) or at the starting cylinder (cyl1) if "cyI3" is not specified. The REORDER operand must not be specified unless specified limits are defined for the operation; the starting and, if required, ending cylinders (cyl1 and cyl2) must be specified. CPVOL specifies that cylinder 0 and all active directory and permanent disk space are to be copied, dumped, or restored. This indicates that both source and target disk must be in CP format, that is, the CP Format/Allocate program must have formatted them. section 4. Diagnostic Aids 533 ALL specifies that cylinders. the operation is to be NUCLEUS specifies that record 2 on cylinder 0, track 0 and the nucleus cylinders are dumped, copied, or restored. address~ performed all • Each track must contain a valid home cylinder and track location. • Record zero characters. • Flagged tracks are treated just as any other track for all 2314, 2319, 3340, and 2305 devices. That is, no attempt is made to sUbstitute the alternate track data when a defective primary track is read. In addition, tracks are not inspected to determine whether they were previously flagged when written. Therefore, volumes containing flagged tracks should be restored to the same cylinders of the volume from which they were dumped. The message DMKDDR715B occurs each time a defective track is dumped, copied or restored, and the operation continues. • Flagged tracks for 3330 and 3350 devices are handled automatically by the control unit and may never be detected by the program. The program may detect a flagged track if, for example, no a.lternate track is assigned to the defective primary track. If a flagged track is detected by the program, the message DMKDDR715E occurs and the operation terminates. must not contain more than containing on eight key the real and/or data INPUT 191 3330 SYSRES OUTPUT 180 2400 181 (MODE 800 SY SPR INT OOF DUMP CPVOL INPUT 130 3330 MINIOl DUMP 1 TO 50 REORDER 51 60 70 101 This example sets the density to 800 bpi, then dumps all pertinent data from the voluae labeled SYSRES onto the tape that is mounted on unit 180. 1£ the program runs out of space on the first tape, it continues dumping onto the alternate device (181). A map of the dumped cylinders is printed on unit OOF while the program is dumping. When the first function is coaFlete, the volume labeled MINIOl is dumped onto a Its cylinder header records are labeled 51 to 100. A map of new tape. the dumped cylinders is printed on unit OOF. Next, cylinders 60 to 70 are dumped and labeled 101 to 111. This extent is added to the cylinder map on unit OOF. When the DDR processing is complete, the tapes are unloaded and the program stops. If cylinder extents are being defined from the console, the following is displayed: ENTER CYLINDER EXTENTS ENTER: 534 VM/370: System Logic and Problem Determination Guide For any extent after the first extent, the message ENTER NEXT EXTENT OR NULL LINE ENTER: is displayed. The user may then enter additional extents to be dumped, restored, or copied. A null line causes the job step to start. ~Qt~: When a cylinder map is printed on the virtual printer (OOF as in the previous example) a heading precedes the map information. Module DMKDDR controls the disk, time and zone printed in the heading. Your installation must apply a local modification to DMKDDR to insure that local time, rather than GMT (Greenwich Meridian Time), is printed in the heading. Use the PRINT and TYPE function statement to print or type (display) a hexadecimal and EBCDIC translation of each record specified. The input device must be defined as direct access or tape. The output is directed to the system console for the TYPE function, or to the SYSPRINT device for the PRINT function. (This does not cause redefinition of the output unit definition.) The format of the PRINT/TYPE control statement is: ------------------, r I I I I cyll [hhl [rrl]] [To cy12 [hh2 [rr2 ]]] [(options ••• [)]] I I I 2.E!12.!!§: [ Hex] [ Graphic] [Count] I PRint TYpe I L cyll is the starting cylinder. hhl is the starting track. If present, it operand. The default is track zero. rrl is the starting record. If present, it must follow the hhl operand. The default is home address and record zero. TO cy12 is the ending cylinder. If more than one cylinder is printed or typed "TO cy12" must be specified. hh2 is the ending operand. The cylinder. rr2 is the record ID of the last record to print. the last record on the ending track. must follow the cyll to be track. If present, it must follow the cy12 default is the last track on the ending The default is HEX prints or displays a hexadecimal representation record specified. GRAPHIC prints or displays specified. an EBCDIC translation of of each each record section 4. Diagnostic Aids 535 COUNT prints or displays specified. only the count field for each record PRINT 0 TO 3 Prints all of the records from cylinders 0, 1, 2, and 3. PRINT 0 1 3 Prints only one record, from cylinder 0, track 1, record 3. PRINT 1 10 3 TO 1 15 4 prints all records starting with cylinder 1, track 10, record 3, and ending with cylinder 1, track 15, record 4. The example in Figure 63 shows the information displayed at the console (TYPE function) or system printer (PRINT function) by the DDR program. The listing is annotated to describe some of the data fields. DMKDDR725R ORIGINAL INPUT DEVICE WAS (IS) LARGER THAN OUTPUT DEVICE. DO YOU WISH TO CONTINUE? RESPOND YES OR NO: ~!E!~~~!!2~: RESTORE function - The number of cylinders on the original DASD input unit is compared with the number of cylinders on the output device. COpy function - The input than the output device. Qeg£~!Q£ 1£~iQ~: RESTORE function yes or no. DMKDDR711R device contains more cylinders The operator must determine if the COpy or is to continue. The response is either VOLID READ IS volid2 [NOT volidl] DO YOU WISH TO CONTINUE? RESPOND YES NO OR REREAD: volidl - The volume serial number from the input or output control statement; volidl is displayed only if it was entered. volid2 - is the volume serial number from the VOLl label on the DASD device specified by the control statement. ~1§!gm !£!iQll: The system waits for a response. If you respond "yes", the operation will continue. If you respond "no", and the input is from cards or a eMS file, the program is terminated after scanning the rema~n~ng statements for syntax. Otherwise, the next statement is solicited from the console. 536 VM/370: System Logic and Problem Determination Guide If you respond "reread", the again. volume specified will be read ]Qig: A new volume may have been mounted in the interim. y§g£ DMKDDR7l6R A£i!Q~: Respond "yes", "no", or "reread." NO VOLl LABEL FOUND FOR volser DO YOU WISH TO CONTINUE? RESPOND YES NO OR REREAD: E!El~n~iiQ~: The program was unable to find a record with the key of VOLl on cylinder 0 track 0 and was not able to read record 3 on cylinder 0 track 0 for the specified volume serial number (volid). The volume serial number is displayed only if specified in the INPUT or OUTPUT control statement. ~y§t~~ ~£t!2~: The system waits for a response. If you respond "yes", the system will continue with the job steps. If you respond "no" and the input is from cards or a CMS file, the program will be terminated after scanning the remaining statements for syntax. Otherwise, the next statement will be solicited from the console. If you respond "reread", the program will attempt to reread the specified device. Q§~£ !£i!~n: DMKDDR717R Respond to the message as indicated. DATA DUMPED FROM volidl TO BE RESTORED to volid2 DO YOU WISH TO CONTINUE? RESPOND YES NO OR REREAD: J2~El~!!~iiQ~: volidl - The volume serial number of the input tape. volid2 -- The volume serial number of the output DASD device that is to receive the data from volidl. 21§igm !£iiQ~: The system waits for a response. If you respond "yes". the restore function will continue. If you respond "no" and the input is from cards or a CMS file, the program will be terminated after scanning the remaining statement for syntax. Otherwise, the correct statement will be solicited from the console. If you respond "reread", the input tape will be backspaced to the start of the file, and the volume header label will be reread. User Action: If the wrong input tape is mounted, replace the-tape--and respond REREAD. Otherwise, respond in the appropriate manner. ENTER CYLINDER EXTENTS ENT ER: This message is tErminal. received only if you are entering input from your section 4. Diagnostic Aids 537 END OF VOLUME CYL xxx HD xx, MOUNT NEXT TAPE DDR continues processing, reel. after the mounting of the next tape dumped. The RESTORING volser volser is the volume serial number RESTORE operation has begun. of the disk COPYING volser volser is the volume serial number described by the The COpy operation has begun. input unit. DUMPING volser volser is the volume serial number described by the The dumping operation has begun. input unit. PRINTING volser volser is the volume serial number described by the The PRINT opration has begun. input unit. END OF DUMP The DUMP operation has ended. END OF RESTORE The RESTCRE operation has ended. END OF COpy The COPY operation has ended. END OF PRINT The PRINT operation has ended. END OF JOB All specified operations have completed. ENT ER: Prompts input from the terminal. A null line (Press the Enter key or equivalent) causes control to return to CMS, if the virtual machine is in the CMS environment. 538 VM/370: system Logic and Problem Determination Guide 110I11~ Addr~ss R"~nrd 0 ro -;,h;:;:" I::;h ;;;;- :;/e,:- - -+--__ Re,'llrd I A-_-_~ I I ? is • • _ l A he"ding is "rinled conlaining Ihe dala lellglh rr"m Ihe enlllli field firsl in d~dll1;11. then in hexadecimal The dala is Ihell prinled in hex"decinwl wilh g,aphic lllier"re'"'i,,n 10 thc right ~'~n~ I I ___ J 040961000 DATA LENGTH _ - - - - - - - - - 00000 0000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 SUPPRESSED CHARACTERS SAME AS ABOVE. No'e: nala Lenglh field repeated in heading. 1st lIalfllf-+----II_CYL 019 HD 00 REC 002 COUNT 0013000b02 OOM Rl'f..'ord ~ ....,IfI,. 02472~DATA LENGTH .. 00000 0000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 SUPPRESSED CHARACTERS SAME AS ABOVE. ABOVE RECORD WRITTEN USING RECORD OVERFLOW 0 r::;--------, 0 I' L Ilome Address Record 0 2nd lIalf uf Re..:ord 2 This stalemenl indicales Ihat Ihis pori ion of Rc(oru 2 was written uSlIlg the Wrtte Special Count. Key, and Data command. Thc remainder of.Record .2 is fOllnd on the next -.:,ck.:,:he'::: I re~ a~7RceordO~ .J CYL 019 HD 01 HOME ADDRESS 0000130001 RECORD ZERO 0013000100 00 0008 00000000 00000000 . CYL 019 HD 01 REC 002 COUNT 0013000102 00 0658-01624 0658 DATA LENGTH 00000 0000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 SUPPRESSED CHARACTERS SAME AS ABOVE. e- ~ G Record J I ---1---_ CYL 019 HD 01 REC 003 COUNT 0013000103 I I -.- - - - I r I he key lengl h field is not lero • • - - - ~_ _ _ _ _ _ _ _ ;Y ., I I A heading is prinled conlaining Ihe key lenglh firsl in decimal. then ill hexadecimal. The key is Ihell prinled ill hexadecimal wilh graphic inle'prelal,oll 10 the nght(nol shown here). ..J 80 OF80 00128 0080 KEY LENGTH _--~---- 00000 0000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 SUPPRESSED CHARACTERS SAME AS ABOVE 0396B OF80 DATA LENGTH 00000 0000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 SUPPRESSED CHARACTERS SAME AS ABOVE. Record" --+---- CYL 019 HD 01 REC 004 COUNT 0013000104 00 0000 G) END OF FILE RECORD re--------, I I L Figure 63. Annotated Sample of Output from of the DDR Program Whellever 11ll' dala !ellglh I,eld an end-of-file priliis lIext IS lero I I _ _ _ _ _ _ _ ....I the TYPE and PRINT Functions section 4. Diagnostic Aids 539 A wait state is produced by one of the following modules: DMKCCH DMKCKP DMKCPI DMKDMP DMKMCH DMKPAG DMKSAV DMKWRM When a wait state occurs, the Program status Word (PSW) the operator's console in the following format: is displayed at xxyyyyyyzzzzzwww xxyyyyyy is the left half of the program either: status word. This half may be 03yyyyyy Valid work. OOyyyyyy system wait caused by an error condition. wait condition. The system is waiting for zzzzzwww is the right half of the program status word. The wait state code is found in the right half of the PSW when the CPU is in the wait state. The wait state code, www, indicates the error condition. wait fQQ~ ~!El~~~t!2~ The machine check handler Probable hardware error. found an unrecoverable failure. 002 The channel check handler probable hardware error. found an unrecoverable failure. 003 A system failure performed. 004 This wait state code is loaded by DMKDMP when a console, or an output device is not operational, or when a console or output device produces an inexplicable error status. Probable hardware error. 005 DMKCPI could not find an operational console. Probable hardware error. 006 This is a normal wait when a system shutdown is completed. 007 A program check, a machine check, or found by the checkpoint program. 008 Checkpoint and system shutdown are complete. If the system is running under an alternate console, error messages DMKCKP910I, DMKCKP911w, DMKCKP960I, and DMKCKP9611 are not displayed. 009 An error 001 condit~on occurred before a valid warm primary or a permanent I/O start alternate error was occurred that prevents a warm start. If the system is running under an alternate console, messages DMKCKP9101 and DMKCKP911W are not displayed. 540 was VM/370: System Logic and Problem Determination Guide error OOA A machine check occurred while DMKSAV was attempting to restore a page image copy of the nucleus on a SYSRES probable hardware error. OOB A machine check occurred before initialization was complete. OOC An attempt was made to IPL from a disk that did not contain a system. Thus, the wait state code OOC entered on disk by the Format/Allocate program is encountered. OOD .The machine size defined during system generation is greater than the real machine size, or a hardware error has occurred which inhibits VM/370 from using the required storage. OaF Hardware errors are being received on VM/370 paging device(s). The wait state that causes this code is preceded by message DMKPAG415E save or device. CONTINUOUS PAGING ERRORS FROM DASDxxx 010 The SYSRES device, on which DMKSAV is attempting to write a page image copy of the nucleus, is not mounted or not ready. all An unrecoverable error, other than a machine check, occurred while DMKSAV attempted to write a page image copy of the nucleus on the SYSRES device. 012 The normal wait state code loaded loading the nucleus. by DMKSAV when it has completed Section 4. Diagnostic Aids 541 Figure 64 lists the CP ABEND, their cause and required action. ------'----------------------------------, r ABEND Code Action Reason for ABEND I I Verify that general register 8 points to an RDEVBLOK for a terminal. If it does not, there is probably an error in the calling program. Identify the calling program by means of the return address and the base register in the save area pointed to by general register 13. Then, attempt to identify the source of the incorrect RDEVBLOK address. BL DOO 1 Register 8 should contain a pointer to the RDEVBLOK for the user's terminal. This routine (DMKBLDVM) attempts to create and partially initialize a VMELOK for a user. DMKBLDVM abnormally terminates if general register 8 does not contain a pointer to the user. BLD002 I I I I pages are being reExamine the dump and determine why the page was released without leased but the page the page invalid bit turned on. invalid bit is not on in the page table entry., CFG010 I I I 1 , DMKCFGCL was called to perform an unsupported function. The function request may be found in SAVEWORK1, byte 2. supported values are: X' 01' LOAD SYS X'02' FIND SYS X' 04' PURGE SYS , I I 1 1 CK SOO 1 The map for dynamic checkpoint has not been allocated prior to a call to DMKCKSPL. I , , I , , CKS002 The spool file identification in the map and on the checkpoint cylinder do not match. -----------------------------------------------------1 1 I I , Identify the caller by the return address and base register in the SAVEAREA pointed to by register 13 to identify the source of the unsupported function request. I , , I CKS003 1 No function was speci, fied in the call to , DMKCKSPL. I , I I , 1 1 1 I 1 1 1 The map should be allocated via a call to entry points DMKCKSIN or DMKCKSWM fro~ DMKWRM. Check that DMKWRM does, in fact, call one of these entry points and that they do allocate a map. In this case, (1) DKKCKSWM or DMKCKSIN did not set up the map properly, (2) a call to DMKCKSPL caused the mismatch, or (3) the SFBLOK was released but the' map was not updated. Check location SAVERTN in the save area pointed to by general register 13. This indicates which routine called DMKCKSPL with insufficient data. 1----------------------------,------- 1 CKS004 I A spool file to be de- , The SFBLOK for the file should 1 I leted cannot be found , have been queued previously on , , on the system printer, , either the printer, punch, or I , punch, or reader file 1 reader file chain by DKMCKSWM I I chains. , when performing a CKPT start. I ' , Check for an error in this logic. L _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _- - - ' Figure 64. 542 CP ABEND Codes (Part 1 of 15) VM/370: System Logic and Problem Determination Guide -, r ABEND Code Reason for ABEND I I Action CPIOOl The RDEVBLOK for ·the DASD on which the SYSRES volume is mounted cannot be located, or the IPL volume is not the SYSRES volume. The SYSRES volume is specified in the SYSRES macro in the DMKSYS module. Verify that the volume serial number on the SYSRES volume from which the IPL was attempted, is the same as that specified in the field DMKSYSVL. If the volume serial number is not the same, it may have been altered by the CLIP utility. Or, the image of the same nucleus saved on the SYSRES may have been partially destroyed and the SYSRES specification altered. Load or restore the nucleus from a backup copy to the SYSRES volume and try to IPL again. CPI002 A valid system directory file could not be located. Display the volume labels for all owned volumes. If the volumes do not contain an active directory pointer, run DMKDIR (the standalone directory program) to recreate the system directory on an owned volume. If an active directory pointer is present in at least one volume label, verify that the device on which the volume is mounted is online and ready before trying to IPL the system. CPI003 The system TOD clock is not operational. Call IBM for hardware to fix the clock. CVTOOl The system TOD clock is in error or is not operational. DRDOOl The device code index in the compressed DASD address for the system dump file points to an RDEVELOK for an invalid DASD. The valid DASDs are 2305 series, 3330 series, 3340 series, 3350 series or 2314/ 2319. DSPOOl During I/O interruption, unstack and reflection, DMKSCNVU could not locate all of the virtual control blocks for the interrupting unit. Figure 64. support I Verify that the contents and or- I der of the owned list have not I been altered since the dump was I taken. If these fields have not I been altered, the SFBLOK for the I dump file may have been destroyed. I The owned list is specified by I the SYSOWN macro in the DMKSYS I module. I I I The integrity of the user's vir- I tual I/O configuration has prob- I ably been violated. The unit I addresses or indexes in the vir- I tual control blocks are in error, I or the virtual configuration has I been altered by ATTACH/DETACH I while I/O was in progress. Check I for a devi~e reset failure in I DMKCFPRD. ________ -JI CP ABEND Codes (Part 2 of 15) section 4. Diagnostic Aids 543 r -, ABEND Code Reason for ABEND Action ---------------------------------DSP002 The dispatcher (DMKDSP) Most likely, a free storage viois attempting to dis1ation has occurred. First look patch a virtual re1oat the DMKPRV and DMKVAT modules. cate user whose shadow Examine the real, virtual, and segment tables or virshadow translation tables for tua1 extended control consistency of entry size and register 0 are invalid. format. Also compare page and segment size. DSP003 The interval timer was not incremented properly. This is most likely a hardware error. The dispatcher tests for interval timer errors and abnormally terminates if such an error occurs. Results would be unpredictable if CP continued when the interval timer was in error. Check the timer fields in real storage. The value of the real interval timer is at real storage location X'50'. The dispatcher loads the value of the real interval timer in real storage location x'54' when a user is dispatched. The value of the real interval timer is loaded into real storage location X'4c' when an interrupt occurs. If the value stored at X'4C' is not less than the value stored at X'54', the dispatcher abnormally terminates. Check the routines that control the value of the time fields at X'4C', X'50', and X'54'. DSP004 While tracing SIOs or I/O interrupts, the virtual dev ice was detached. NOw, the VDEVBLOK cannot be found. Examine the operator's console sheet and the user's terminal sheet to see who detached the device. Warn the person responsib1e that devices should not be detached during I/O tracing. FREOOl The size of the block being returned (via GR 0) is less than or equal to o. Using FREER14 and FREER12 in the PSA, identify the CP module releasing the storage. Check for an error in calculating the size of the block or for a modification to the stored block size for variable-size blocks. FRE002 The address of the free storage block being returned matches the address of a block already in the free storage chain. Identify the program returning the storage by means of the return address and base registers (FREE14 and FREE12 in DMKFRE's save area in PSA). The most common cause of this type of failure is a module that returns a free storage block but fails to clear a pointer to the block that has been saved elsewhere. All modules that return blocks via a call to DMKFRET should first verify that the saved pointer is nonzero; after returning the block, any saved pointers should be set to zero. Figure 64. 544 CP ABEND Codes (Part 3 of 15) VM/370: System Logic and Problem Determination Guide I I I I I I I I I I I r----------------------------------------------------------------------, ABEND I I Code I Reason for ABEND I Action FRE003 The address of the free storage block being returned overlaps the next lower block on the free storage chain. A free storage pointer may have been destroyed. Also, the module releasing the lower (overlapped) block may have returned too much storage. Examine the lower block and determine its use and former owner. Or, identify the program returning the storage by means of the return address and base registers stored (FREER14 and FREER12 in DMKFRE's save area in PSA). The most common cause of this type of failure is a module that returns a free storage block but fails to clear a pointer to the block that has been saved elsewhere. All modules that return blocks via a call to DMKFRET should first verify that the saved pointer is nonzero; after returning the block, any saved pointers should be set to zero. FRE004 The address of the free storage block being returned overlaps the next higher block on free storage chain. A free storage pointer may have been destroyed. Also, the module releasing the higher (overlapped) block may have returned too much storage, or the module may be attempting to release storage at the wrong address. FRE005 A module is attempting to release storage in the resident VM/370 nucleus. A module is probably attempting to release location O. Check for the module picking up a pointer to the free storage block without first testing the pointer for O. Use FREER14 and FREER12 in the PSA to identify the module. FRE006 A module is requesting a block of storage whose size (contained in GR 0) is less than or equal to zero. Using FREER14 and FREER12 in the PSA, identify the module. Check for an error in- calculating the block size. Improper use of the half word instructions ICM and STCM can cause truncation of high order bits that results in a calculation error. FRE007 A module is attempting to release a block of storage whose address exceeds the size of real storage. A free storage pointer may have been destroyed. Attempt to identify the owners of the free storage blocks adjacent to the one containing the pointer that was destroyed. Check for moves and translation where initial counts of zero have been decremented to minus 1, thus generating an executed length code of X'FF', or an effective length of 256 bytes. Figure 64. CP ABEND Codes (Part 4 of 15) section 4. Diagnostic Aids 545 r-----------------------------------------------------------------------, ABEND 1 1 1 Code 1 Reason for ABEND FRE008 The address of the free storage block being returned matches the address of the first block in the subpool 1 for that size. 1 -----------------------------1 FRE009 1 The address of the free 1 storage block being 1 returned matches the 1 second block in the 1 subpool for that size. 1 1 1 1 Action I 1 1 1 1 1 1 1 I 1 Identify the program returning the storage by means of the return address and stored base registers (FREER14 and FREER12 in DKKFRE's save area in the PSA). The common cause of this type of failure is a module that returns a free storage block but fails to clear a pointer to the block that has been saved elsewhere. All modules that return blocks via a call to DMKFRET should first verify that the saved pointer is nonzero; after returning the block, any saved pointers should be set to zero. ---------------------------------FRE010 FREO 11 I -----------1 A program is attempting to extend free storage while storage is being extended. This can be caused by I/O interruptions or channel programs involving channels other than channel o. If the storage requests that caused the ABEND are due to channel activity, place the device involved on channel 0, which is disabled during free storage extension. A CP module has attempted to return a block of storage that is in the user dynamic paging area. Identify the program returning the storage by means of the return address and stored base registers (FREER14 and FREER12 in DMKFREE's save area in the PSA). The common cause of this type of failure is a module that returns a free storage block but fails to clear a pointer to the block that has been saved elsewhere. All modules that return blocks via a call to DMKFRET should first verify that the saved pointer is nonzero; after returning the block, any saved pointers should be set to zero. 1 1 1 1 1 1 I 1 1 -----------------------------------------------------1 HVD001 1 The user pointed to by I The RDEVBLOK for the SYSRES de- I I GR 11 issued a DIAGNOSE 1 vice was probably destroyed, or a 1 I instruction while at- I volume with the same serial num- I 1 tempting to format the 1 ber as the SYSRES volume was I I I/O error, channel I mounted. If a volume with the 1 1 check, or machine check 1 same serial number was mounted, I 1 recording areas: the 1 check the ATTACH processing in 1 1 SYSRRS device type is 1 the DMKVDB routine. 1 1 unrecognizable. 1 L _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - I1 Figure 64. 546 CP ABEND Codes (Part 5 of 15) VM/370: System Logic and Problem Determination Guide --------, r---------------------------------------ABEND 1 1 1 Code 1 Reason for ABEND 1 Action 1 ----------------------------10S001 The caller is trying The 10BLOK may have been returned to reset an active 10BLOK from the RCHBLOK queue, but that 10BLOK contains an invalid address. (via DMKFRET) or destroyed. Verify that the 10BLOK was valid and use the 10BLOK and RDEVBLOK to determine the last operation. 10S002 DMK10S is attempting to restart an 10BLOK from the RCHBLOK queue, but that 10BLOK contains an invalid address. 10S003 DMK10S is attempting to remove an 10BLOK from a queue, but that 10BLOK contains an invalid address. Register 2 points to the RCHBLOK, RCUBLOK, or RDEVBLOK from whose queue the 10BLOK is being removed. Register 10 points to the 10BLOK. Use the CP internal trace table to determine which module called DMK10S twice to start the same 10BLOK. NLD001 During execution of a NETWORK DUMP command, or during an automatic dump of a 3704 or 3705, VM/370 detected that it had not allocated sufficient DASD spool space to contain the information from the 3704 or 3705. The MODEL operand of the RDBV1CE macro describing the 3704 or 3705 was not specified correctly. VM/370 determines the storage size of a 3704 or 3705 by the model specified on the RDBV1CE macro. Correct the RDEV1CE macro specifying the 3704 or 3705, reassemble the DMKR10 module, and regenerate the VM/370 CP nucleus with the corrected module. 1--------- 1 PGS001 1 The user page count in l i t h e VMBLOK (VMPAGES) 1 1 became negative. ---------1 A module has attempted to release 1 more pages than it originally re- 1 ceived. The module that last 1 called DMKPGS is probably the 1 module in error. - - - - J1 1 1 L________________________________________ 1 1 Figure 64. CP ABEND Codes (Part 6 of 15) section 4. Diagnostic Aids 547 r--------------------·---------------·---------------------, ABEND Code I I Reason for ABEND I I Action PGT001 The number of cylinders in use stored in the allocation block (ALOCBLOK) is less than the maximum but the DMKPGT module was unable to find available cylinders. Inspect the chains of paging and spooling allocation blocks anchored at RDEVPAGE and RDEVRECS on the RDEVBLOK for the device in question, and verify that a cylinder allocation block (RECBLOK) exists for each cylinder marked and allocated in the ALOCBLOK. If RECBLOKs for some cylinders are missing, it is possible that the bit map in the ALOCBLOK has been destroyed. If all cylinders are accounted for, the updating of the count field is in error. PGT002 The count of pages in a page allocation block (RECBLOK) is less than the maximum but the DMKPGT module was unable to find available pages. If the RECBLOK in question is in use for paging, then locate a SWPTABLE entry for each page allocated on the cylinder. However, if the cylinder is in use for spooling, it is possible that the RECBLOK itself has been destroyed or that the updating of the use count is faulty. PGT003 The DASD page slot being released is not marked allocated. Identify the module attempting to release the page by means of the caller's return address and base register stored in BALR14 and BALR12 in the BALRSAVE save area in PSA. Locate the source (control block or SWPTABLE entry) of the DASD address being released to verify that they have not been destroyed. If the DASD page is in a spool file, it is possible that the file or the RECBLOK chain has been incorrectly checkpointed and warmstarted after a system shutdown or a system crash. PGT004 The dummy RECBLOK indicating the spooling DASD pages on the cylinder that are to be released contains a page count greater than the number of pages allocated on the cylinder. The spool file pointers may have been destroyed while the file was being processed, or the allocation chain may be in error. A cold start may be necessary. If feasible, use the DASD dump restore program to print the DASD areas containing the affected file, and try to locate the incorrect pointers. Figure 64. 548 CP ABEND Codes (Part 7 of 15) VM/370: system Logic and Problem Determination Guide I I r----------------------------------------------------------------------, I I I I ABEND I Code I PGTOO5 I Reason for ABEND A module is trying to release a DASD page slot on a cylinder for which no page allocatio,n block (RECBLOK) exists. 1--------------------PGT006 The last DASD page slot in a RECBLOK has been deallocated but the bit representing the cylinder in the cylinder allocation block (ALOCBLOK) is not currently set to one, indicating that the cylinder was not allocated. I Action Use BALR14 and BALR12 in the BALRSAVE area of the PSA to identify the module attempting to release the page. Verify that the DASD cylinder address is valid for the device in question. If it is and the rest of the DASD address is valid, verify that the cylinder is in the dynamically allocatable area. If these restrictions are met, the DASD page must have been used by more than one user. I The ALOCBLOK has probably been I destroyed, or the chain pointer I in the RDEVBLOK is in error. I I I I I I I PGT007 A module is trying to release a page of virtual storage in use by the VM/370 control program that has not been marked allocated. Use BALR14 and BALR12 in the BALRSAVE area of the PSA to identify the module attempting to release the page. Locate the control block containing the virtual page address that is being released~ It is possible that the address has been destroyed, or a pointer to a virtual page has been retained after the page was destroyed. PGT008 The system's virtual storage buffers have been exhausted because of an excessive number of open spool files. Request users to close all spool files that are no longer active. PRGOOl I Program check I tion) in the I program. (opera- I Examine the ABEND dump. In parcontrol I ticular, examine the old PSi and I identify the module that had the program check. Program check (privi- I leged operation) in the I control program. I ---I Program check (execute) I in the control program. I I Program check (protec- I tion) in the control I program. I ---------------------------------1 PRG002 I I I 1-------- I PRG003 I I I I I PRG004 I LI _ _ _ _ _ _ _ Figure 64. ---------- .J CP ABEND Codes (Part 8 of 15) Section 4. Diagnostic Aids 549 r---------------------·-------------------------------------, 1 ABEND 1 I 1 1 Code 1 Reason for ABEND 1 Action 1 I Examine the ABEND dump. In par1 PRG005 Program check (addressticular, examine the old PSi and 1 ing) in the control 1 1 program. 1 identify the module that had the ------------------------1 program check. PRG006 1 Program check (specifi- 1 1 cation) in the control I 1 program. 1 I PRG007 Program check (data) in 1 the control program. 1 --I PRG008 program check (fixed- I point overflow) in the I 1 control program. 1 -----------------------1 PRG009 1 program check (fixed- 1 I point divide) in the 1 1 control program. 1 I PRGO 10 program check (decimal 1 overflow) in the con- I trol program. 1 --I PRGO 11 program check (decimal 1 divide) in the control I 1 1 program. 1 1---------------------1 1 PRG012 1 program check (exponen- 1 1 1 tial overflow) in the 1 1 1 1 control program. 1 1 PRG013 program check (exponen1 tial underflow) in the 1 1 control program. 1 1 1 1 ---------------------1 PRG014 1 Program check (signifi- 1 1 cancel in the control 1 1 program. 1 1 program PRG015 check 1 (floating-point di- 1 vide in the control 1 program. 1 -----1 PRG016 Program check (segment) 1 1 in the control program. 1 1------------------1 I PRG017 1 Program check (paging) 1 1 I in the control program. 1 1 --------1 1 PRG018 1 1 11 PRG019 1 L1 Program check (transla- 1 tion) in the control 1 program. 1 1 Program check (special 1 operation) in the con- 1 trol program. ______________________ 1 _ ------' Figure 64. 550 CP ABEND Codes (Part 9 of 15) VM/370: System Logic and Problem Determination Guide r--------------------------------------------------------------------, ABEND 1 1 1 Code Reason for ABEND 1 Action 1 1 -------------------------------------------------1 PRG254 1 A translation specifi- 1 If the set of translaticn tables 1 1 1 1 1 1 cation exception has been received for a virtual machine that is not in extended control mode. 1 1 1 1 1 pointed to by RUNCR1 is correct, a hardware failure has occurred, possibly with dynamic address translation. Otherwise, call IBM for software support. 1 1 1 1 1 ---------------------------------------------1 PRG255 1 A PER (program event 1 Retry the program causing the er- 1 recording) has been re- 1 ror; if the problem persists, for a virtual 1 call IBM for software support. 1 machine that is running 1 PER disabled in 1 1 with 1 its virtual PSi. 1 ------------------------------------PSA001 No free storage is Try to identify the extreme load available for save condition that caused the probareas. lem. Verify that a routine has not requested an inordinate amount of storage. If the storage requests are valid and the problem occurs regularly, alter the DMKCPI module to allocate more than six pages of free storage per 256K bytes of storage. 1 1 1 ceived 1 1 1 1 1 1 1 1 1 1 1 1 1 I 1 I 1 1-----------------------------------------------------1 PSA002 The 'PSi Restart' conExamine the resulting ABEND dump 1 1 I 1 1 sole 1 for a dynamic picture of the sys- 1 key was pressed 1 1 and caused this ABEND. l i T h e operator normally 1 1 takes this action when 1 1 an un usual sys tem con 1 1 di tion occurs, such as loop or slow 1 1 a system 1 1 machine operation. 1 1 tem's status. 1 I 1 1 1 1 1 1 1 I 1 1 I 1------------------------------------------------1 1 PSA003 1 An 1 I 1 1 unrecoverable DASD 1 Check the unit address in the I/O I/O error occurred on a I old PSi to find the paging device 1 paging device. 1 in error. This is a hardware erI 1 ror. Call IBM for hardware 1 1 support. 1 1------------------------------ 1 1 1 1 1 1 1 1 1 I PTR001 1 A segment exception or 1 Inspect the contents of control 1 translation specifica- 1 registers 0 and 1, and the format table pointed to I tion has occurred while 1 of the segment LOAD REAL 1 by CR 1. One or more of these 1 executing a 1 ADDRESS (LRA) instruc- 1 tables and registers may contain 1 tion in the DMKPTR mod- 1 invalid data. If CR 1 is 1 ule. 1 invalid, check the contents of l i t h e VMBLOK pointed to by GR 11, 1 1 especially the address in the 1 1 VMSEG field. 1-----1 PTR002 1 1 Figure 64. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ---------------------------1 attempting 1 Use BALR14 and BALR12 in the 1 A program is l i t o unlock a page frame I I whose address exceeds l i t h e size of real storI 1 age. L 1 1 I BALRSAVE area of the PSA to iden- 1 1 tify the module attempting to un- 1 1 lock the page frame. Check for 1 1 the source of the invalid ad- 1 __________________________________________ - - - - J1 1 dress. CP ABEND Codes (Part 10 of 15) section 4. Diagnostic Aids 551 r-------------------------------------------------------------------, 1 ABEND 1 I 1 1 Code 1 Reason for ABEND 1 Action 1 1------------------------------------------------------1 I PTR003 1 A program is attempting 1 Use BALR14 and BALR12 in the 1 1 I to unlock a real stor- 1 BALRSAVE area of the PSA to iden- 1 1 1 age page frame whose 1 tify the module attempting to un- 1 1 1 COR TABLE entry is not I lock the page frame. Check for 1 1 I flagged as locked. 1 the source of the invalid ad- I I 1 I dress. I I------------------·---~---------------------------I 1 PTR004 1 The lock count in the I 1 CORTABLE entry for the 1 1 page frame being unI 1 locked has been decre1 1 mented to a value that I 1 is less than O. 1 Check the routines that update I I the lock count field and CORTABLE I I entry. 1 1 I 1 1 I I -----1 count in A module attempted to release 1 PTR005 The user page the VKBLOK (VKPAGES) is negative. PTR007 DMKFRE requested a page for fixed free storage but DMKPTR determined that there were no pages left in the dynamic paging area. more pages than it originally received. The last module that called DKKPTR is probably the module that caused the error. 1 I I 1 Examine the dump for one of the following conditions: 1. Excessive amounts of free storage have been allocated by CP and not released via DKKFRET. Look for blocks of identical data and determine which modules built that data. 2. A block of storage greater than 4096 bytes was requested. Requests for large blocks of free storage require contiguous pages from DKKPTR and as a result have a higher probability of failure than requests for one page or less. If possible, change the application to reduce the size of storage requests. otherwise, schedule the application when storage is less fragmented. ----------------------------------------------1 PTR008 1 A CORTABLE entry on the 1 free list points to a (page table 1 valid PTE 1 entry), but the page is 1 allocated. 1 Pages on the free list should not I valid PTEs. Examine the I determine which module I 1 called DKKPTRFR. The module that 1 1 called DKKPTRFR probably contains 1 1 I an error. I ------------------------------------I PTR009 The count of the number The field DMKPTRSC contains the I of resident shared number of resident shared pages I pages was incorrectly and the field DKKDSPNP contains 1 decremented making the the number of pageable pages. I count now less than DKKDSPNP must always be greater I zero. than DMKPTRSC. Check the routines I that update these two count 1 fields. L________________________________________________________ .__________JI Figure 64. 552 1 contain I dump to CP ABEND Codes (Part 11 of 15) VM/370: System Logic and Problem Determination Guide r--------ABEND I Code 1 Reason for ABEND -------------------------------------, I 1 1 I Action --------------------------------------------------1 PTR010 I The count of the number 1 The field DMKPTRRC contains the I 1 of resident reserved I number of reserved pages. I I I I I DMKPTRRC must always be less than DMKDSPNP. Check the routines that update these two count fields (DMKDSPNP and DMKPTRRC) • 1 I 1 1 A CORTABLE entry to be placed on the free list points to a valid PTE (page table entry), but the page is allocated. An abend occurs trying to honor a deferred reI quest. I Pages to be put on the free list should not contain valid PTEs. Examine the dump to determine why the page was not marked invalid before the call to DMKPTRPT. I I I 1 I 1 pages was incorrectly decremented so that the count is now less than zero. ------------------------------PTR011 ----------1 1 1 1 I I 1 ---------------------------------------------------1 PTR012 1 A CORTABLE entry to be 1 Pages to be put on the free list I I placed on the free list I points to a valid PTE I (page table entry), but 1 the page is allocated. should not contain valid PTEs. 1 Examine the dump to determine why I the page was not marked invalid 1 before the call to DMKPTRPT. I I I I I I--------------~-------------------------I I PTR013 1 DMKPRE requested a page 1 Examine 1 for fixed free storage but there were no DASD page slots left to write out the selected page. 1 1 I 1 I 1 1 1 1 1 1 1 I I 1 I 1 I the dump to determine what was using all the TEMP space. Excessive space may be consumed by large spool files or not enough TEMP space exists for paging. I 1 The reflected device IPL to restart the system. If the status in the CSW is problem persists, call IBM for not supported for cersystem support. tain 3270 remote device and line protocol I/O operations. Specifically, the returned CSW contains a device status other than CE, DE, and UE; and, the ending ccw contains an embedded teleprocessing code of 02, 03, or 06. 1----------------------1 1 RGA002 I The status flag 1 1 I BSCPLAG in the BSCBLOK I I I indicates a condition 1 1 1 that is not valid for a I 1 I 3270 line reset func- I 1 I tion (Teleprocessing I 1 1 code 09). I RGA001 1---------------------------------------------------1 1 RNH001 1 An unrecoverable I/O I Retry. If the problem persists, I 1 I error occurred during I ensure that the 3704/3705 and 1 1 read or write for the I channel hardware are functioning 1 1 3704 or 3705. status I correctly. program I 1 I indicates I 1L____________________________________________________________ I failure. Figure 64. 1 I 1 I I ~ CP ABEND Codes (Part 12 of 15) section 4. Diagnostic Aids 553 r---------------------------------------------------------------------, ABEND I I I Code I Reason for ABEND Action I 1 ---------------------------------------------------------1 RNH002 1 A response that should 1 Verify that the 3704/3705 NCP is 1 I not occur was received 1 from the 3704/3705 I control program. I I operating correctly. Use the I NETWORK TRACE command to deter1 mine the exact cause of the reI sponse. RPAOOl The virtual address supplied to DMKRPAGT is outside of the virtual storage being referenced. RPA002 The virtual address supplied to DMKRPAPT is outside of the virtual storage being referenced. The virtual storage belongs either to the user whose VMBLOK is pointed to by GR 11 or, if GR 2 in the SAVEAREA indicates a PARM of SYSTEM, to the system VMBLOK. Identify the calling program by means of the return address and base register saved in the SAVEAREA pointed to by GR 13. If the virtual address was obtained from the system's virtual storage, examine the virtual page allocation routine, DMKPTRVG. If the virtual page refers to a user's storage, attempt to identify the routine that has generated the incorrect address. Verify that the VMSIZE in the relevant VMBLOK reflects the correct storage size for the system or user being referenced. RPA003 The user page count in the VMBLOK became negative. A module has attempted to release more pages than it originally received. The module that last called DMKRPA is probably the module in error. SCHOOl The total number of interactive users plus batch users in the scheduler's queue is less than zero. A counter was probably decremented incorrectI lYe 1 The field SCHNl is the count of the number of interactive users and the field SCHN2 is the count of the number of batch users. Check the routines that update these two count fields (SCHNl and SCHN2) to determine why their sum was negative. I 1 I 1 -----------------------------------------------------1 SCNOOl 1 The VDEVLINK chain is 1 IPt to restart. If the problem I I invalid. A VDEVBLOK 1 persists, examine the VDEVBLOKs 1 I has a link field that 1 in the link chain as well as the 1 to another lone whose link field points into 1 I points I VDEVELOK associated I the chain but is not in the I I with the same real I chain. Determine what the owner I 1 device. The first 1 of the VDEVBLOK was doing at the 1 I VDEVBLOK is not pointed 1 time. 1 1 to by any ot her link I I I field in the chain. I ____________________________________________ - ___________---------1I Figure 64. 554 CP ABEND Codes (Part 13 of 15) VM/370: System Logic and Problem Determination Guide r--------------------------------------I I ---, 1 ABEND I Code I Reason for ABEND I I I Action verify that GR 8 points to a RDEVBLOK for a CP-owned volume. If it does not, the error may originate in the calling program. Identify the caller by the return address and base register in the SAVEAREA pointed to by GR 13, and try to identify the source of the incorrect RDEVBLOK address. If the RDEVBLOK is valid, it may be that the cylinder number passed is incorrect. The VDEVELOK for the device for which the T-disk was defined may have been destroyed. If the cylinder number appears valid, examine the allocation record on the real volume by running DKKFKT (VM/370 Format program), invoking the ALLOCATE option without allocating any new space. If the output shows that deallocated cylinder falls within an area defined for T-disk allocation, the ALOCBLOK chained to the RDEVBLOK may be destroyed. TDK001 A program is attempting to deallocate a cylinder of T-disk space for which no cylinder allocation block (ALOCBLOK) exists. TDK002 A program is attempting to deallocate cylinder(s) of T-disk space that are not marked allocated. UDR001 The user directory module is looping trying to read all of the UDIRBLOK page buffers from the directory device. Or, a directory containing over 10,816 I users was loaded. Use the DASD Dump Restore program to print the UDIRBLOK page buffers from the directory device. Determine if the chain pointers are valid. list I has an invalid format. I I I IPL to restart. If the problem persists, check the SYSOWN macro in DMKSYS for validity. If the macro is good, print the dump and examine ito I VDR003 I The DASD link chain is I invalid. In the case of I I minidisks, attaching a I I mini disk that points to I I an RDEVBLOK whose count I I of users is already zeI I ro causes this ABEND. I I V10002 DMKSCNVU was unable to I locate all of the virI tual I/O control blocks I for the virtual unit I address associated with I the interrupt just 1 stacked. I 1PL to restart. If the problem persists, examine the RDEVSYS flag. If the RDEVSYS flag is off, the problem is especially serious; print and examine the dump. Examine the VDEVBLOK and RDEVBLOK checking the link chain. 1-------------------------1 VDB002 I The system-owned I I I I 1-----1 Verify that the unit address in the field IOBVADD in the IOBLOK pointed to by GR 10 is valid for the user who initiated the I/O. The field IOBUSBR contains the address of the user's VKBLOK. If the address is valid, the integrity of the user's virtual I/O L----------------------------------------------------------------------~ Figure 64. CP ABEND Codes (Part 14 of 15) section 4. Diagnostic Aids 555 r-----------------------------'--------------------------, I ABEND I Code I I Reason for ABEND I I Action 1---------------------------------------------------------.;... I VI0002 I (cont.)I I I I configuration has probably been I been destroyed. If the address is 1 not valid, the IOBLOK has been 1 altered, or was built incorrectly I in the first place. 1 1 1 1 I VI0003 1 I DMKICS has returned an IOBLOK indicating a condition code of 2 was received from the START I/O for the operation. 1 Condition code 2 should never be returned to the virtual I/O interrupt handler. Its presence indicates either a failure in the I/O supervisor (DMKIOS), or that the status field in the IOBLOK I (IOBSTAT) has been destroyed. --------------------------------------------------1 VMAOOl I DMKVMASH was called to any shared 1 check if 1 pages were altered. A I VMABLOK associated with 1 a shared named system I could not be found. I VMA002 I Examine BALR14 for the address of 1 I the module that issues the call. I I The probable cause of error is I that the VMBLOK has been overI laid. Examine the CP trace taI ble entries and determine when I the VMBLOK was overlaid~ DMKVMA was called to make a shared named system unshared. However, the SHRTABLE associated with the shared page that was changed could not be I located. I The SHRTABLE may have been overlaid or the shared page that was changed was altered by another virtual machine. If the SHRTABLE was not overlaid find out which virtual machine altered the shared page and why it was not detected. 1 I I I I I I 1 I I 1 I I 1 --,----------------------------------------------1 VMA003 I A shared page was and a named I changed I system could not be for the virtual I found I machine. I I A shared page was alterd by anI other virtual machine and went by I undetected. Investigate system I routines that could allow the I undetected alteration of a shared I page. 1---------------------------------I VMA004 I A shared page was 1 I changed and the corres1 I ponding VMABLOK could 1 I not be found. I I I I I I I I ----------1 I A shared page was altered by 1 I another virtual machine without I I being detected. Investigate the I I system routines that could allow I I an undetected alter ation of a 1 I 1 I shared page. 1 1----------------------------------------------------1 1 VSPOOl I The virtual spooling I Verify that the unit address I 1 I manager could not 10- I (IOBVADm in the IOBLOK is valid. 1 I I cate all virtual con- I If the address is valid, the in- I I I trol blocks for an in- I tegrity of the virtual I/O con- 1 I figuration has probably been de- 1 I I terrupting unit. 1 I 1 stroyed. If the address is not 1 1 I I valid, the IOBLOK has been al- 1 1L 1 1 tered or was built incorrectly. ________________________________ ._ _ _ _ _ _ _ - 'I Figure 64. 556 CP ABEND Codes (Part 15 of 15) VM/370: System Logic and Problem Determination Guide ~g~~i~g Functional error occurred executing the command for which the user is responsible, or the user failed to supply all the necessary conditions for executing the command; or, end of file or end of tape occurred (where applicable) • If a condition arises during execution of a command which types out a Warning, Error, Severe or Terminal error message, the command passes a nonzero return code in register 15. These return codes have the following values: ~ggDiDg The user did not specify all the conditions to execute the command as intended but these conditions did not prevent the command from completing execution. However, the results are unpredictable. HC 88: HC 100: I/O errors, occurred. A C"S system restriction prevented command execution, or the requested function is an unsupported feature, or the device requested is unsupported. or serious device errors HC 8: Device errors for which a warning message is issued, or errors have been introduced into the output file. HC 104: A HC 12 Errors in input file. RC RC 20: Invalid character in fileid. The valid characters are 0-9, a-z, A-Z, at-sign, pound sign, dollar sign. 256: All unexpected errors for which system is responsible, that Terminal messages. HC 24: The user did not specify line correctly. HC 28: Error occurred while trying to access, or manipulate a user's files. For example: file not found. RC 32: The user's file(s) is not in the expected format, or the user's file(s) does not contain the expected information. HC 36: Error occurred involving the user's devices for which he is responsible. For example: disk is read-only. the command functional error occurred during command execution for which the syste. is responsible. the is, If command execution generates no Warning, Error, severe or Terminal error messages, the return code passed in register 15 is zero. Commands which invoke program products pass to the user the return code passed by the program in register 15. os simulation routines indicate return codes within the text of the messages. Commands or functions of commands passed to CP pass the return code passed by CP in register 15. section 4. Diagnostic Aids 557 Code Error --S-(DMSFRET) An invalid size was passed to the DMSFRET macro. This error exit is taken if the specified length is not positive. A nonzero return code upon return from DMSFRES, DMSFREE or DMSFRET indicates that the request could not be satisfied. Register 15 contains this return code, indicating which error has occurred. The codes below apply to the DMSFRES, DMSFREE and DMSFRET macros, described on the following pages. ~Qg~ 1 (DMSFREE or DMSFRET) User storage pointers destroyed. 3 (DMSFREE or DMSFRET) pointers destroyed. 558 a. The block is not entirely inside either the low-core free storage area or the user program area between FREELOWE and FREEUPPR. b. The block crosses a page boundary that separates a page allocated for USER storage from a page allocated for NUCLEUS storage. Error (DMSFREE) Insufficient storage space is available to satisfy the request for free storage. In the case of a variable request, the minimum request could not be satisfied. 2 4 6 (DMSFRET) The block of storage that is being released was never allocated by DMSFREE. This error occurs if one of the following errors is found: Nucleus storage (DMSFREE) An invalid size was requested. This error exit is taken if the requested size is not greater than zero. In the case of variable requests, this error exit is taken if the minimum request is greater than the maximum request. However, the error is not detected if DMSFREE is able to satisfy the maximum request. c. The block overlaps another block already on the free storage chain. 7 (DMSFRET) The address being released is boundary address. given for the block not a doubleword 8 (DMSFRES) An illegal request code was passed to the DMSFRES routine. Because the DMSFRES macro generates all codes, this error code should never appear. 9 (DMSFRE, DMSFRET, internal error. 'M/370: System Logic and Problem Determination Guide or DMSFRES) unexpected ABEND RECOVERY When the abend recovery routine is entered, it types out the abend message, followed by the line 'CMS', to indicate to the user that he may type in his next command. At this point, there available to the user. are two options First, he may type the DEBUG command. In this case, DMSABN passes control to DMSDBG, to make the facilities of DEBUG available to him. DEBUG's PSW and registers are as they were at the time that the abend recovery routine was invoked. From DEBUG, the user may alter the PSi or registers, as he wishes, and type GO to continue processing, or type RETURN to return to DMSABN, so that abend recovery can continue. The second option available is to type in any other command. If this is done, DMSABN performs its abend recovery function and passes control to DMSINT to execute the command that has been typed in. The abend recovery function consists following steps: of the 1. The SVC handler, DMSITS, is reinitialized, and all stacked save areas are released. 2. "FINIS * * *" is invoked by means of SVC 202, to close all files, and to update the user file directory. 3. If the EXEC interpreter (EXECTOR module) is in storage, it is released. ~acros 4. All link blocks allocated by the OS simulation routine DMSSLN are freed. 5. If VSAM or Access Method Services are still active, call DMSVSR for cleanup. 6. All FCB and DOSCB pointers are zeroed 7. All user storage is released. 8. The amount of system free storage that should be allocated is computed. This figure is compared against the amount of free storage that is actually allocated. If the two are equal, then storage recovery can be considered successful. If they are unequal, then a message is sent to the user. ~ut. There are certain times, such as when the SVC handler's pointers are modified, that the system can neither continue processing nor try to recover. In these cases, DMSERR with the option HALT=YES is specified to cause a message to be typed out, after which a disabled wait state PSi is loaded. In CP mode, the programmer can examine the PSi, whose address field contains the address of the instruction following the call to the DMSERR macro. He can also examine all the registers, which are as they were when the DMSERR macro was invoked. Figure 65 lists the CMS ABEND codes and describes the cause of the ABEND and the action required. Section 4. Diagnostic Aids 559 r--------------------------------------------------------, I ABEND I Module I I Code I Name I Cause of ABEND I I I I Action 1-------------------------------------------------1 I 001 I I I I DMSSCT I I I I I I I The problem program encountered an input/output error processing an os macro. Either the associated DCB did not have a SYNAD routine specified or the I/O error was encountered processing an OS CLOSE macro. Message DMSSCT120S indicates the possible cause of the error. Examine the error 1 message and take the 1 action indicated. I I I I I 1 I 1 1 1 1 I 1 1 1 1 034 I I I DMSVIP 1 The problem program encoun- 1 Refer to the ~Q~L!~ I 1 1 tered an I/O error while 1 H~2~~~2 R~fe!~~£~, 1 1 1 processing a VSAM action I Order No. GC33-5379, 1 1 I 1 I I I 1 1 I I I I I I I I I I 1 I 1 I I 1 1 1 1----------------------------------------------------1 OCx I macro I to determine the cause 1 1 under DOS/VS for which there is no OS equi1 valent. An internal error 1 occurred in a DOS VSAM rouI tine. 1 DMSITP The specified hardware exception occurred at a specified location. "x" is the type of exception: ox 1 2 3 4 5 6 7 8 9 A B C D E F of the VSAM error. I I I I 1 Type DEBUG to examine the PSW and registers at the time of the exception. !I.E~ IMPRECISE OPERATION PRIVILEGED OPERATION EXECUTE PROTECTION ADDRESSING SPECIFICATION DECIMAL DATA FIXED-POINT OVERFLOW FIXED-POINT DIVIDE DECIMAL OVERFLOW DECIMAL DIVIDE EXPONENT OVERFLOW EXPONENT UNDERFLOW SIGNIFICANCE FLOATING-POINT DIVIDE 1-------------------------------------I OFO I I DMSITS I Insufficient free storage I I is available to allocate a I I save area for an SVC call. I I I I I I I I I I I I I I I I I I I 1 I I If the ABEND was I caused by an error in I the application pro- I gram, correct it; if I not, use the CP DEFINE 1 command to increase I the size of virtual 1 storage and then reI start CM S. I 1--------------------------------------1 I OF1 I DMSITS 1 An invalid half word code is I Enter DEBUG and type I I GO. Execution conti- I I I I associated with SVC 203. I _ _ _._______________________________________________________ I I I nues. L - 'I Figure 65. 560 CMS ABEND Codes (Part 1 of 3) VM/370: System Logic and Problem Determination Guide r-------------------------------1 ABEND 1 "odule 1 Cause of ABEND 1 1 Code 1 1 DMSITS 1 1 1 1 1 1 OF2 1 Action The C"S nesting level of 20 has been exceeded. -------1 None. ABEND recovery 1 takes place when the 1 next cOllmand is en- 1 1 tered. 1 1 1 1 1 1----------------------------------------------1 1 OF3 1 D"SITS 1 C"S SVC (202 or 203) in- 1 Enter DEBUG and type 1 1 1 1 struction was executed and 1 GO. Control returns to 1 1 1 1 prov~s~on was made for an 1 the point to which a 1 would 1 1 1 1 error return from the rou- 1 normal return 1 1 1 1 1 1 OF4 1 1 1 tine processing 1 call. the 1 have been made. 1 SVC 1 1 --------------------------1 key stack over- 1 Enter DEBUG and type 1 GO. Execution conti1 nues and the D"SKEY 1 1 1 macro is ignored. 1------------- 1 1 OF5 1 D"SITS The D"SKEY key stack under- 1 1 1 1 flowed. 1 1 1 1 1 1 OF6 1 D"SITS The D"SKEY flowed. 1----------------------1 1 1 1 1 1 --------1 1 DMSITS 1 The DMSKEY key stack was 1 1 not empty when control re1 1 turned from a command or 1 1 function. 1 1 1 OF7 1 1 DMSFRE 1 1-----1 OF8 1 D"SFRE 1 1 1 1 1 1 1 Enter DEBUG and type GO. Control returns from the command or function as if the key stack had been empty. Occurs when TYPCALL=SVC When a system ABEND (the default) is specified occurs r use DEBUG to in the DMSFREE or DMSFRET attempt recovery. .acro. 1 1 1 1 1 1 1 1 1 1 ----------------------1 Occurs when TYPCALL=BALR is 1 When a system ABEND 1 specified in the D"SFREE or 1 occurs r use DEBUG to 1 1 attempt recovery. 1 1 DMSFRET "acro devices. 1------------------------------------------1 1 101 1 1 1 1 1 104 1 1 1 1 DMSSVN 1 The wait count specified in 1 1 an OS WAIT .acro was larger 1 1 than the nu.ber of EeBs 1 1 specified. DMSVIB 1 1 1 155 1 D"SSLN 1 1 1------- 1 1 1 1 1 1 1 1 1 1 1_______ 1 15A 1 DMSSLN 1 1 1 1 1 I 1 1 Examine the program 1 for excessive wait 1 count specification. 1 1 1 1 1 1 The OS interface to DOS/VS See the additional er- 1 VSAM is unable to continue ror message accollpany- 1 execution of the problem ing the ABEND message r 1 program. correct the error r and I 1 reexecute the progra m. 1 ---------------------------1 1 See the last LOAD"OD 1 (D"SMOD) error message 1 1 for error description. 1 1 In the case of an I/O I 1 error r recrea te the I 1 module. If the module I 1 _ is _missing, create __ _____ _ _ _it. _ 0_11 Error during LOAD"OD after an OS LINK r LOAD r XCTL r or ATTACH. The compiler switch is on. Severe error during load (phase not found) after an OS LINK r LOAD r XCTL r or ATTACH. The compiler switch 1 is on. 1 1 See last LOAD error (D"SLIO) for 1 the error description. 1 In the case of an I/O 1 error, recrea te the 1 message 1 I I I 1 1 L-----------------------------------------------------_________________ J Figure 65. C"S ABEND Codes (Part 2 of 3) section 4. Diagnostic Aids 561 r----------------------------------------------------------------------, ABEND I Module I II Code I Name I Cause of ABEND 1I Action 1I 1----------------------------------------------------------------------1 I 15A 1 1 1 text deck or TXTLIB. 1 I cont·1 1 1 If either is I 1 I I crea te it. missing, 1 I 174 I I DMSVIB I The as interace to DOS/VS 1 See the additional er- I 1 1 VSAM is unable to continue I ror message accompany- 1 I I-----.------------------------------.-----------------------------1 I I 1 execution I I 1 I 1 program. I I DMSVIB 1 The of the problem I ing the ABEND message, 1 I correct the error, and 1 I reexecute the program. I 1------------------------------_·_------------------------I I 177 as interface to DOS/VS I See the additional ercontinue 1 ror message accompanythe problem I ing the ABEND message, I correct the error, and I reexecute the program. I I I DMSVIP I VSAM is unable to I I 1 I I I 1 execution I program. I 1 240 I I DMSSVT 1 I NO work area was 1 in the parameter 1 I I an as RDJFCB macro. 1 I 1 I I I the as XDAP macro 1 unsupported XDAP macro I been issued by the I or for SVC O. I I problem program. I I 1 704 I 1 1 1 1 DMSSMN I 1 1 1 1 I I 1 1 1 705 1 1 I 1 1 1 1 1 1 (SVC 5) was issued specify- 1 that it specifies 1 ing the L operand. This 1 release of only 1 operand is not supported by 1 area at a time. 1 CMS. 1 the one 1 1 SVC 4, re- I 1 issued that of I I 1 1 1---------------------------------_·_--------------------I provided 1 Check RDJFCB list for 1 cation. specifi- I 1 I 1 1--------------------------------_·_-----------------------1 1 400 I DMSSVT 1 An invalid or unsupported I Examine program for I I form of I has 1-----------------------------_·_-------------------An as GETMAIN macro (SVC 4) WaS issued specifying the LC or LU operand. These operands are not supported by CMS. 1 1 1 1 1 Change the program so that it specifies allocation of only one area at a time. 1---------------------------------------------------------------------1 DMSSMN 1 An as FRBEMAIN macro 1 Change the program so 1---------------------------------------------------------------------1 DMSSMN 1 An as GETMAIN macro (804 - 1 Check the program for 1 804 1 80A 1 1 SVC 10) was requested eil i t h e r zero bytes of storage, 1 I or more storage than was 1 1 available. 1 available, increase 1 the size of the virtu- I 1 1 al machine and retry. 1 90A 1 I 1 I 1 SOA - I 1 a valid GET MAIN 1 quest. If more storage 1 was requested than was 1-------------------------------------·-------------------------------1 1 905 1 DMSSMN An as FREEMAIN macro (90S - 1 Check the program for 1 SVC 5, 90A - SVC 10) was issued specifying an area l i t o be released whose ad1 I dress was not on a doubleword boundary. 1 1 1 a valid FREEMAIN re- 1 1 quest; the address may 1 1 have been incorrectly 1 1 specified or modified. 'I 1 1 1-------------------------------------·-------------------------------1 1 A05 I DMSSMN An as FREEMAIN macro (A05 - 1 Check the program for I 1 AOA I 1 1 SVC 5, AOA SVC 10) was 1 issued specifying an area 1 l i t o be released which over- 1 1 I laps an existing free area. I a valid FREEMAIN re- I quest; the address 1 and/or length may have 1 been incorrectly spec- I modified. I _ified __ _ _ _ _ _ _ _ _ _or ___ _ _ _ _ _ _ _ _ _ - '1 1L _ _ _ ._ I Figure 65. 562 CMS ABEND Codes (Part 3 of 3) VM/370: System Logic and Problem Determination Guide ------------------------------, r--- I Message I Code DMTAXS1011 DMTAXS1021 DMTAXS103E DMTAXS1041 DMTAXS1051 DMTAXS1061 DMTAXS1071 DMTAXS108E DMTAXS5201 DMTAXS5211 DMTAXS5221 DMTAXS5231 DMTAXS524E DMTAXS525E DMTAXS526E DMTAXS6401 DMTCMX0011 DMTCMX0031 DMTCMX2001 DMTCMX201E DMTCMX202E DMTCMX203E DMTCMX204E DMTCMX205E IGenerated lat Label ITAGPEND IACCEPEND IACCEPURG ICLOOSCAN I ICLOIPURG IFILSTRY 10PENPOOF IUNPECHEK 10PENRDER ICHANGE ICHANHO ICHANNOH ICHANSCAN IORDBNEXT ICHANGE IORDBCHEK IPURGCHEK ICHANGE 10RDECHEK I PURGCHEK ICHANGE IORDBCHEK IPURGCHEK IPUBGDONE ICMXFINXT ICMXM003 ICMXLGOT ICMXHIT ICMXLGOT ICMXMISS IDEFNOLNK I MSGNOLNK IA1FLKGOT IA1FSTOW ICHALKGOT I L2FLKGOT IQYOFILE I QYOFNULL ICHALKGOT I CHANTBRM ICHASCAN IFLUMORE ILOTERM IL1TERM IQYTOOMCH IOYOFILE IQYOLINK I QYOSYSTM IROSCAN ICHACLASS ICHACOPY Message Text FILE FILE FILB FILE I I --_·-----1 'spoolid' ENQUEUED ON LINK 'linkid' I 'spoolid' PENDING FOR LINK 'linkid' I 'spoolid' RBJECTED -- INVALID DESTINATION ADDRESS SPOOLED TO 'userid2' -- ORG 'locid l' (' userid 1') mm/dd/yy hh:mm:ss FILE 'spoolid' PURGED FILE 'spoolid'MISSING -- DEQUEUED FROM LINK 'linkid' nn PENDING FILES FOR LINK 'linkid' MISSING SYSTEM ERROR READING SPOOL FILE 'spoolid' File 'spoolid' CHANGED FILE 'spoolid' HELD FOR LINK 'linkid' FILE 'spoolid' RELEASED FOR LINK 'linkid' LINK 'linkid' QUEUE REORDERED FILE 'spoolid' ACTIVE -- NO ACTION TAKEN FILE 'spoolid' IS FOR LINK 'linkid' -- NO ACTION TAKEN FILE 'spoolid' NOT FOUND -- NO ACTION TAKEN nn FILE(S) PURGED ON LINK 'linkid' FREE STORAGE = nn PAGES LINK 'linkid' EXECUTING: (command line) RSCS INVALID COMMAND 'command' INVALID LINK 'linkid' INVALID SPOOL FILE ID 'spoolid' INVALID KEYWORD 'keyword' CONFLICTING KEYWORD 'keyword' .J Section 4. Diagnostic lids 563 r-----------------------------·-----------------------------, I Message I Code DHTCMX205E (cont.) DMTCMX206E DMTCHX208E DMTCMX3001 DMTCMX301E DMTCMX302E DHTCMX303E DMTCMX304E DMTCMX5401 DMTCHX5411 DMTCMX542E DMTCMX543E DMTCMX544E DMTCMX5501 DMTCMX551E DMTCMX 552E DMTCMX5601 DMTCHX561E DMTCMX6511 DMTCMX6521 IGeneratedl lat Label I CHAHOLD CHANOHOL CHAPRIOR FLUKEYWD LCTKEYWD ROCLASS ROKEEP ROLINE ROT ASK ROTYPE CHACLASS CHACOPY CHADIST CHANAME CHAPRIOR LOHOLD LOTRACE IL1FLKGOT I QUERY IROCLASS I ROCLMULT IROKEEP IROLINE I ROTASK IROTYPE IDISCONN I MSGNOLNK IMSGNOUSR ICMXALRDY ICMXALRDY I MSGNOLNK ICMD I LOFLKGOT L1FLKGOT L2FLKGOT MSG CMXALRDY DEFLKNEW DEFLKNEW DEFINE DEFNEXT DEFNOLNK DEFLKNEW DELDELET DELETE DELETE DISCHARG DISCONN QY1STAT IQY1SNOD I IQY1DEF I QY lQUEUE I QY lINACT IQY2STAT IQY2STAT IQY2RSS I DMTCMX6631 IQY2VNOH I DM TCMX 6531 DMTC MX6541 DMTCMX6551 DMTCMX6601 DMTCMX6611 DMTCMX6621 564 I I Message Text INVALID OPTION 'keyword' 'option' INVALID USER 10 'userid' ACCEPTED BY TASK REJECTED BY TASK LINK 'linkid' IS LINK 'linkid' IS 'task' 'task' -- PREVIOUS COMMAND ACTIVE NOT DEFINED NOT ACTIVE REJECTED BY TASK 'task' NOT RECEIVING NEW LINK 'linkid' DEFINED LINK 'linkid' REDEFINED LINK 'linkid' ACTIVE -- NOT REDEFINED LINK 'linkid' NOT DEFINED LINK LIMIT REACHED LINK 'linkid' NOT DEFINED -- LIMIT REACHED LINK 'linkid' NOW DELETED LINK 'linkid' ACTIVE -- NOT DELETED LINK 'linkid' HAS A FILE QUEUE -- NOT DELETED RSCS DISCONNECTING USERID 'userid' NOT RECEIVING LINK 'linkid' INACTIVE LINK 'linkid' ACTIVE 'type' 'vaddr' c (HOINOH) (DRINOD) (TRAITREINOT)Q=m P=n LINK 'linkid' DEFAULT 'task' 'type' 'vaddr' c R=m LINK 'linkid' Q=m P=n FILE 'spoolid' 'locid' 'userid' CL a PR mm REC nnnnnn FILE 'spoolid' INACTIVE ON LINK 'linkid' FILE 'spoolid' ACTIVE ON LINK 'linkid' FILE 'spoolid' ORG 'locid' 'userid' mm/dd/yy hh:mm:ss zzz TO 'locid' 'userid' VIA 'linkid' FILE 'spoolid' PR am CL a CO nn (HOINOH) DI 'distcode', NA (' fn ft' I' dsname') VH/370: System Logic and Problem Determination Guide --------' r--------------------------------------------·--------., IGeneratedl I I Message I Code lat Label I Df'lTCMX664E IQY2RSS I QY2STAT IQY2VM IQY2VNOH DMTCMX6101 IQYSYACT DMTCMX6111 IQYM611 DMTCMX6121 IQYSYNEXT DMTCMX613I.IQYM613 DMTCMX1001 ISTALNGOT DMTCMX101E ISTACREAT I DMTCMX102E ISTACREAT DMTCMX103E I STACREAT DMTCMX104E STACREAT DMTCMX105E STACRERR DMTCMX106E STACRERR DMTCMX101E STACRERR DMTCMX108E STACRERR DMTCMX109E STACRERR DMTCMX110E STAMAXER DMTCMX150E STANOTCL DM TCMX151 I ICMXALRDY I DMTINI402T IINIEXIT DMTINI401R ASKQUEST DMTINI408R IPLDISK DMTINI409R NUCCYLN DMTINI410R IPLZERO DMTINI431S WRERROR DMTINI419E BINERR1 DMTINI480E DECERRl RDORWRT DMTINI481E IPLZERO DMTINI482E BADIPLD DMTINI483E NUCCYLN DMTNPT010E IOERRPRT DMTNPT108E VMSGET DMTNPT1411 NPTEINIT DMTNPT 1421 NPTEINIT DMTNPT1431 LINEDIS2 ILINEDROP DMTNPT1441 IPUTOPEN I DMTNPT1451 I PUTCLS 1 I DMTNPT1461 IGETGOT2 DMTNPT1411 I GET PURGE DMTNPT 1491 ITRPRT I DMTNPT190E I VMSPl DMTNPT5101 IGTBKMSG DMTNPT511E ISBKFWDN Message Text I FILE 'spoolid' NOT FOUND LINK 'linkid' ACTIVE -- LINE 'vaddr' (HOINOH) LINK 'linkid' INACTIVE NO LINK ACTIVE NO LINK DEFINED ACTIVATING LINK 'linkid' 'task' 'type' 'vaddr' NO SWITCHED LINE AVAILABLE -- LINK 'linkid' NOT ACTIVATED LINE 'vaddr' IS IN USE BY LINK 'linkidl' -- LINK 'linkid2' NOT ACTIVATED DEV 'cuu' IS NOT A LINE PORT -- LINK 'linkid' NOT ACTIVATED LINE 'vaddr' CC=3 NOT OPERATIONAL -- LINK 'linkid' NOT ACTIVATED DRIVER 'type' NOT FOUND ON DISK 'vaddr' -- LINK 'linkid' NOT ACTIVATED FATAL ERROR LOADING FROM 'vaddr' -- LINK 'linkid' NOT ACTIVATED DRIVER 'type' FILE FORMAT INVALID LINK 'linkid' NOT ACTIVATED VIRTUAL STORAGE CAPACITY EXCEEDED LINK 'linkid' NOT ACTIVATED TASK NAME 'task' ALREADY IN USE -- LINK 'linkid' NOT ACTIVATED MAX (nn) ACTIVE -- LINK 'linkid' NOT ACTIVATED LINK 'linkid' ALREADY ACTIVE NO ACTION TAKEN LINK 'linkid' ALREADY ACTIVE -- NEW CLASS(ES) SET AS REQUESTED IPL DEVICE READ I/O ERROR REWRITE THE NUCLEUS? Y OR N IPL DEVICE ADDRESS = ccu NUCLEUS CYL ADDRESS = nnn ALSO IPL CYLINDER O? Y OR N IPL DEVICE WRITE I/O ERROR INVALID DEVICE ADDRESS - REENTER INVALID CYLINDER NUMBER - REENTER INVALID REPLY - ANSWER YES OR NO IPL DEVICE ERROR - REENTER NUCLEUS OVERLAYS CMS FILES - RECOMPUTE ERROR cuu SIOCC cc CSW CSW SENSE sense CCW ccw SYSTEM ERROR READING SPOOL FILE 'spoolid' LINE 'vaddr' READY FOR CONNECTION TO LINK 'linkid' LINK 'linkid' LINE 'vaddr' CONNECTED LINK 'linkid' LINE 'vaddr' DISCONNECTED RECEIVING: FILE FROM 'locid1' ('namel') FOR 'locid2' ('name2') RECEIVED: FILE FROM 'locid1' ('namel') FOR 'locid2' ('name 1') SENDING: FILE 'spoolid' ON LINK 'linkid', REC nnnnnn SENT: FILE 'spoolid' ON LINK 'linkid' LINK 'linkid' LINE ACTIVITY: TOT= mmm; ERRS= nnn; TMOUTS= ppp INVALID SPOOL BLOCK FORMAT ON FILE 'spoolid' FILE 'spoolid' BACKSPACED NO FILE ACTIVE ON LINK 'linkid' ----' Section 4. Diagnostic Aids 565,. r--~------------------------------------ I Message I Code DMTNPT5701 DMTNPT571E DMTNPT5801 DP!TNPT581E DP!TNPT5901 DP!TNPT591E DP!TNPT6001 DMTNPT6101 DP!TNPT6llI DMTNPT612E DMTNPT750E DMTNPT7521 DMTNPT801I DMTNPT8021 DMTNPT8031 DMTNPT8l0E DMTNPT811E DMTNPT902E DMTNPT903E DMTNPT904E DMTNPT9051 DMTNPT934E DMTNPT936E DMTREXOOOI DMTREX0021 DMTREX080E DMTREX090T DHTREX091T DMTSML070E DMTSML108E DMTSML1411 DMTSML 1421 DMTSML1431 DMTSML 1441 DMTSML1451 DMTSML1461 DMTSML1471 DMTSML1491 DMTSML 1701 DHTSML190E DMTSML5101 DMTSML511E DHTSML5301 DMTSML5701 DHTSML571E DMTSML5801 DHTSML581E DMTSML5901 DHTSML591E 566 IGeneratedl lat Label I SETDRAIN SETDRERl GETFLUSH SETFLUSH GETFLSHE SETFREE SETFRER1 GDGODNE SETHOLD GETFILE SETHLDIP! GETFILE SETHLDE1 SETSTRT1 SETSTART SETTR 1 SETTR2 SETTRACE SETTRE1 SETTRE2 CONFoCKl SPASS SGNERR NPTGETX PUTCLOSE GETGOTl REXICGOT TERLHIT TERLHIT REXPTERM REXITERM IOERRPRT VMSPGET ISIO SIGNOK EOJ JOUTPUT PCONT UOUTPUT JCLOSE1 PCLOSE UCLOSE RLOCl RDEOF TRPRT WGET2 VMSPl RDBKMSG SBKFWDN SETCMD SETDRAIN $USRNPUN SETDRERl RDFLUSH SETFLUSH RDFLSHER SETFREE SETFRERl Message Text LINK LINK FILE FILE 'linkid' NOW SET TO DEACTIVATE 'linkid' ALREADY SET TO DEACTIVATE 'spoolid' PROCESSING TERMINATED 'spoolid' NOT ACTIVE LINK LINK FILE LINK 'linkid' RESUMING FILE TRANSFER 'linkid' NOT IN HOLD STATUS 'spoolid' FORWARD SPACED 'linkid' TO SUSPEND FILE TRANSMISSION ----, I I LINK 'linkid' FILE TRANSMISSION SUSPENDED LINK 'linkid' ALREADY IN HOLD STATUS LINK 'linkid' ALREADY ACTIVE -- NO ACTION TAKEN LINK 'linkid' STILL ACTIVE -- DRAIN STATUS RESET LINK 'linkid' ERROR TRACE STARTED LINK 'linkid' TRACE STARTED LINK 'linkid' TRACE ENDED LINK 'linkid' TRACE ALREADY ACTIVE LINK 'linkid' TRACE NOT ACTIVE NON-SIGNON CARD READ ON LINK (linkid) PASSWORD (password) on LINK (linkid) IS INVALID SIGNON KEYWORD (keyword) INVALID SIGNON OF LINK 'linkid' COMPLETE ID MISSING ON LINK 'linkid' -- INPUT FILE PURGED NO REMOTE PUNCH AVAILABLE ON LINK 'linkid' -- FILE 'spoolid' PURGED RSCS (VER v, LEV 1, mm/dd/yy) READY LINK 'linkid' DEACTIVATED PROGRAM CHECK -- 'linkid' DEACTIVATED PROGRAM CHECK IN SUPERVISOR -- RSCS SHUTDOWN INITIALIZATION FAILURE - RSCS SHUTDOWN I/O ERROR -- SIOCC -- CSW -- SENSE -- CCW SYSTEM ERROR READING SPOOL FILE 'spoolid' LINE 'vaddr' READY FOR CONNECTION TO LINK 'linkid' LINK 'linkid' LINE 'vaddr' CONNECTED LINK 'linkid' LINE 'vaddr' DISCONNECTED RECEIVING: FILE FROM '10cid1' ('namel') FOR '10cid2' (' name2') RECEIVED: FILE FROM 'locidl' (' name 2 ') ('namel') FOR '10cid2' SENDING: FILE ~spoolid' ON LINK 'linkid', REC nnnnnn SENT: FILE 'spoolid' ON LINK 'linkid' LINK 'linkid' LINE ACTIVITY: TOT= mmm; ERRS= nnn; TMOUTS= ppp FROM 'linkid': (MSG message text) INVALID SPOOL BLOCK FORMAT ON FILE 'spoolid' FILE 'spoolid' BACKSPACED NO FILE ACTIVE ON LINK 'linkid' COMMAND FORWARDED ON LINK 'linkid' LINK 'linkid' NOW SET TO DEACTIVATE LINK 'linkid' ALREADY SET TO DEACTIVATE FILE 'spoolid' PROCESSING TERMINATED FILE 'spoolid' NOT ACTIVE LINK 'linkid' RESUMING FILE TRANSFER LINK 'linkid' NOT IN HOLD STATUS VM/370: System Logic and Problem Determination Guide r----------I Message I Code DMTSML6001 DMTSML6101 DMTSML6111 DMTSML612E DMTSML750E DMTSML 7521 DMTSML8011 DMTSML8021 DMTSML8031 DflTSML810E DMTSML811E DMTSML901E IGeneratedl lat Label I RDGODNE SETHOLD ALLHLD SETHLDIM SETHLDE1 SETSTRT 1 SETSTART SETTR1 SETTR2 SETTRACE SETTRE1 SETTRE2 SMLIERR1 DMTSML902E MC7ERR DMTSML903E MC7A DMTSML9051 IMC7B DMTSML906E ISMLIERR2 I DMTSML934E IJCLOSE DMTSML935E IRDNOHLD I Message Text FILE 'spoolid' FORWARD SPACED LINK 'linkid l TO SUSPEND FILE TRANSMISSION LINK 'linkid' FILE TRANSMISSION SUSPENDED LINK 'linkid' ALREADY IN HOLD STATUS LINK 'linkid' ALREADY ACTIVE -- NO ACTION TAKEN LINK 'linkid' STILL ACTIVE -- DRAIN STATUS RESET LINK 'linkid' ERROR TRACE STARTED LINK 'linkid' TRACE STARTED LINK 'linkid' TRACE ENDED LINK 'linkid' TRACE ALREADY ACTIVE LINK 'linkid' TRACE NOT ACTIVE INVALID SML MODE SPECIFIED -- LINK 'linkid' NOT ACTIVATED NON-SIGNON CARD READ ON LINK (linkid) PASSWORD (password) ON LINK (linkid) IS INVALID SIGNON OF LINK 'linkid' COMPLETE INVALID SML BUFFER PARAMETER -- LINK 'linkid' NOT ACTIVATED ID CARD MISSING ON LINK 'linkid' -- INPUT FILE PURGED LINK 'linkid' IN RJE MODE -- PRINT FILE 'spoolid' ____________________ - - - - - J PURGED section 4. Diagnostic lids 567 The SVCTRACE command records information for all SVC calls. When the trace is terminated, the information recorded up to that point is printed at the system printer. In addition, several CMS commands produce or print load maps. These load maps can locate storage areas while debugging programs. DEBUGGING WITH CMS This section describes the debug tools that CMS provides. These tools can be used to help you debug CMS or a problem program. In addition, a CMS user can use the CP commands to debug. Information that is often useful in debugging is also included. The following topics are discussed in this section: • • CMS debugging commands DASD dump restore program CMS provides two commands that debugging: DEBUG and SVCTRACE. execute from the terminal. are useful in Bot h commands The debug environment is entered whenever: • • • The DEBUG command provides support for debugging programs at a terminal. The virtual machine operator can stop the program at a specified location and examine and alter virtual storage, registers, and various control words. Once CMS is in its debug environment, the virtual machine operator can request the various DEBUG options. However, in the debug environment, all of the other CMS commands are considered invalid. Any DEBUG subcommand may be entered if CMS is in the debug environment and if the keyboard is unlocked. The following rules apply to DEBUG subcommands: 1. No operand should be longer than eight characters. All operands longer than eight characters are left justified and truncated on the right after the eighth character. 2. You must use the DEFINE subcommand to create all entries in the DEBUG symbol table. 3. The DEBUG subcommands can be truncated. The following is a list of all valid DEBUG subcommands and their minimum truncation. The DEBUG command is issued A breakpoint is reached An external or program interruption occurs CMS does not accept other commands while in the debug environment. However, while in the debug environment, the options of the DEBUG command can: • DEBUG set breakpoints (address stops) that stop program execution at specific locations. Minimum 2!!!!£2!!!!gng BREAK CAW CSW DEFINE DUMP GO GPR HI ORIGIN PSW RETURN SET STORE Display the contents of the CAW (channel address word), CSW (channel status word), old PSW (program status word), or general registers at the terminal. • Change the contents of the control words (CAW, CSW and PSW) and general registers. • Dump all printer. • Display the contents of up to 56 bytes virtual storage at the terminal. • store data in virtual storage locations. • Allow an origin or base specified for the program. • Assign symbolic loca tions. or part of virtual storage at the of I address to be Truncation ----BR---CAW CSW DEF DU GO GPR HI OR PSi RET SET ST X One way to enter the debug environment is to issue the DEBUG command. The message DMSDBG7281 DEBUG ENTERED names to specific storage • Close all open files and 1/0 devices update the master file directory. • Exit from the debug environment. ,568 and appears at the terminal. Any of the DEBUG subcommands may be entered. To continue normal processing, issue the RETURN subcommand. Whenever a program check occurs, the DMSABN routine gains control. Issue the DEBUG command at this time if you want CMS to enter its debug environment. VH/370: System Logic and Problem Determination Guide Whenever a breakpoint is encountered, program check occurs. The message a DMSDBG728I DEBUG ENTERED BREAKPOINT II AT XXXXX appears on the terminal. Follow the same procedure to enter subcommands and resume processing as with a regular program check. An external interrupt, which occurs when the CP EXTERNAL command is issued, causes CMS to enter its debug environment. The message DMSDBG728I DEBUG ENTERED EXTERNAL INTERRUPT appears on the console. Any subcommands may be issued. To debug environment after interruption, use GO. of the DEBUG exit from the an external While CMS is in its debug environment, the control words and low storage locations contain the debug program values. The debug program saves the control words and low storage contents (X'OOI Xll001) of the interrupted routine at loca tion X I CO '. Breakpoints should be set after a program is loaded, but before it executes. When a breakpoint is encountered during program execution, execution stops and the debug environment is entered. Iou can then use the other DEBUG subcommands to analyze the program at that particular point. Registers, storage, and control words can be examined and altered. After you finish analyzing the program at this point in its execution, issue the GO subcommand to resume program execution. Breakpoints are set before the program executes. They are set on instruction (halfword) boundaries at locations that contain operation codes. After setting all the desired breakpoints, issue the RETURN subcommand to exit from the debug environment. Then issue the CMS START command to begin program execution. The first operand of the BREAK subcommand (id) assigns an identification number (0-15) to the breakpoint. If the identification number specified is the same as a currently set breakpoint, the previous breakpoint is cleared and the new one is set. The following is a detailed discussion of the possible DEBUG sUbcommands. Use the BREAK subcommand to set breakpoints which stop execution of a program or module at specific instruction locations, called breakpoints. Issuing the BREAK subcommand causes a single breakpoint to be set. A separate BREAK subcommand must be issued for each breakpoint desired. A maximum of 16 breakpoints (with identification numbers 0 through 15) may be in effect at one time; a~y attempt to set more than 16 breakpoints 1S rejected. The format of the BREAK subcommand is: ..-------- I BReak I id {Symbol} I - -_ _ _ _ I __ hexloc L -----------------,I id is a decimal number, from identifies the breakpoint. The second operand of the BREAK subcommand (symbol cr hexloc) indicates the storage location of the breakpoint. If the operand contains any nonhexadecimal characters, the DEBUG symbol table is searched for a matching symbol entry. If a match is found, the breakpoint is set at the storage address corresponding to that symbol, provided that the storage address is on an even (halfword) boundary. If no match is found in the DEBUG symbol table (and the operand is a valid hexadecimal number), the second operand is treated as the hexadecimal representation of the storage address. When the second operand is a valid hexadecimal number, this number is added to the program origin. If the resulting storage address is on a half word boundary and is not greater than the userls virtual machinels storage size, the breakpoint is set • I ----------' 0 to 15, which symbol is a name assigned to the storage location where the breakpoint is set. The symbolic name must be previously assigned to the storage address using the DEF subcommand of the DEBUG command. hexloc is the hexadecimal storage location (relative to the current origin) where the breakpoint is set. When the debug program sets a breakpoint, it saves the contents of the halfword at the location specified by the second operand of the BREAK subcommand. This halfword is replaced by B2Ex, where x is the hexadecimal equivalent of the identification number, specified in. the first operand of the BREAK subcommand. The storage location specified for a breakpoint must contain an operation code. It is your responsibility to see that breakpoints are set only at locations containing operation codes. After breakpoints are set and during program execution, the value B2EO through B2EF is encountered at a location where an operation code should appear. A program check occurs because all values B2EO through B2EF are invalid operation codes and control is transferred to Section 4. Diagnostic Aids 569 the debug environ.ent. DEBUG recognizes the invalid operation code as a breakpoint. The original operation code replaces the invalid operation code, and a message DMSDBG728I DEBUG ENTERED BREAKPOINT yy AT xxxxxx appears at the terminal. "yy" is the breakpoint identification number and 1XXXXX is tbe storage address of the breakpoint. After the message is displayed, the keyboard is unlocked to accept any DEBUG subcommands except RETURN. A breakpoint is cleared when it is encountered during program execution. It is your responsibility to ensure that breakpoints are set only at operation code locations. Otherwise, the breakpoint is not recognized; data or some part of the instruction other than the operation code is overlaid. Thus, errors may be generated if breakpoints are set at locations that do not contain operation codes. INVALID OPERAND This message indicates that the breakpoint identification number specified in the first operand is not a decimal number between 0 and 15 inclusive, or the second operand cannot be located in the DEBUG symbol table and is not a valid hexadecimal number. If the second operand is intended to be a symbol, a DEl subcommand must have been previously issued for that symbol; if not, the operand must be a valid hexadecimal storage location. INVALID STORAGE REFERENCE The location indicated by the second operand is uneven (not on a halfword boundary) or the sum of the second operand and the current origin value is greater than the virtual machine's virtual storage size. If the current origin value is unknown, it may be reset to the desired value by issuing the ORIGIN subcommand. MISSING OPERAND The minimum supplied. number of operands has TOO MANY OPERANDS The following error messages may appear entering the BREAK subcommand. 570 while you entered more than two operands. VM/370: System Logic and Problem Determination Guide not been Use the CAW subcommand anytime the virtual machine is in the debug environment. Issue the CAW subcommand to check that the command address field contains a valid CCW address, or to find the address of the current CCW so that you can examine it. Issuing the CAW subcommand causes the contents of the CAW (channel address word), as it existed at the time the debug environment was entered, to appear at the terminal. The CAW located at storage location X'48' is saved at the time the debug environment is entered and displayed on the terminal whenever the CAW subcommand is issued. If the subcommand is issued correctly, the contents of the CAW are displayed in hexadecimal representation at the terminal. The format of the CAW subcommand is: r- I , CAW I I L _____________________________________________ -J Bits contents The--protection key for all commands associated with START I/O. The protection key in the CAW is compared with a key in storage whenever a reference is made to storage. 4-7 This field is not binary zeros. 8-31 The command address field (::ontains the storage address (in hexadecimal representation) of the first CCW (channel command word) associated with the next or most recent START I/O. 0=3- used and must contain The three low-order bits of the command address field must be zeros for the CCW to be on a doubleword boundary. If the CCW is not on a doubleword boundary or if the command address specifies a location protected fron fetching or outside the storage of a particular virtual machine, START I/O causes the status portion of the CSW to be stored with the program check or protection check bit on. In this event, the I/O operation is not initiated. The CAW subcommand has no operands. The format of the CAW is: -, r I KEY I 0000 I Command Address L ______________________ I .J o 3 4 7 8 The following error message entering the CAW subcommand. may appear while 31 TOO MANY OPERANDS An operand was entered on the command line; the CAW subcommand has no operands. Section 4. Diagnostic Aids 571 Use the CSW subcommand any time the virtual machine is in the debug environment. Issue the CSW subcommand whenever an I/O operation abnormally terminates. The status and residual count information in the CSW is very useful in debugging. Also, use the CSW to calculate the address of the last executed CCW (subtract 8 bytes from the command address to find the address of the last ccw executed). Issuing the CSW subcommand causes the contents of the CSW (channel status word), as it existed at the time the debug environment was entered, to appear at the terminal. The CSW indicates the status of the channel or an input/output device, or the conditions under which an I/O operation terminated. The CSW is formed in the channel and stored in storage location X'40' when an I/O interrupt occurs. If I/O interruptions are suppre~sed, the CSW is stored when the next start I/O, Test I/O, or Halt I/O instruction is executed. The CSW is saved when DEBUG is entered. If the subcommand is issued correctly, contents of the CSW are displayed at terminal in hexadecimal representation. the the The format of the CSW subcommand is: -------, r IL_____________________________________________ CSW - J\ Bits contents 'The-protection key is moved to the CSW from the CAW. It indicates the protection key at the time the I/O started. The contents of this field are not affected by programming errors detected by the channel or by the condition causing termination of the operation. 4-7 This field is not used and binary zeros. 8-31 The command address (in eight bytes the last CCW 32-47 The status bits indicate the conditions in the device or channel that caused the CSW to be stored. 48-63 The residual count is the difference between the number of bytes specified in the last executed CCW and the number of bytes that were actually transferred. When an input operation is terminated, the difference between the original count in the CCW and the residual count in the CSW is equal to the number of bytes transferred to storage; on an output operation, the difference is equal to the number of bytes transferred to the I/O device. 0="3- must contain address contains a storage hexadecimal representation) greater than the address of executed. The CSW subcommand has no operands. The format of the CSW is: r---------------------------------------------, The following error message enter the CSW subcommand. may appear when you \KEYIOOOOI Command Address IStatuslByte Count -J\ L-____________________________________________ TOO MANY OPERANDS 03478 31 32 47 48 63 An operand was entered on the command line; the CSW subcommand has no operands. 572 V"/370: system Logic and Problem Determination Guide Use the DEFINE subcommand to assign symbolic names to a specific storage address. Once a symbolic name is assigned to a storage address, that symbolic name can refer to that address in any of the other DEBUG subcommands. However, the symbol is valid only in the debug environment. Issuing the DEFINE subcommand creates an entry in the DEBUG symbol table. The entry consists of the symbol name, the storage address, and the length of the field. A maximum of 16 symbols can be defined in the DEBUG symbol table at a given time. bytecount is a decimal number, from 1 throl11gh 56, which specifies the length in bytes of the field whose name is specifed by the first operand (symbol) and whose starting location is specified by the second operand (hex10c). When the bytecount operand is not specified, a default bytecount of 4 is assumed. The following error messages may appear when the DEFINE subcommand is issued: INVALID OPERAND When a DEFIlE subcommand specifies a symbol that already exists in the DEBUG symbol table, the storage address derived from the current request replaces the previous storage address. Several symbols may be assigned to the same storage address, but each of these symbols constitutes one entry in the DEBUG symbol table. The symbols remain defined until a new DEF is issued for them or until an IPL request loads a new copy of CMS. The format of the DEFINE subcommand is: r---·------- I I I DEFine I symbol I I I I r hex10c ., I bytecountl I ! I L .J This message indicates that the name specified in the first operand contains all numeric characters, the second operand is not a valid hexadecimal number, or the third operand is not a decimal number between 1 and 56 inclusive. INVALID STORAGE ADDRESS The sum of the second operand and the current origin is greater than the virtual machine's storage size. If the current origin size is unknown, reset it to the desired value by issuing the ORIGIN subcommand and then reissue the DEF subcommand. 16 SYMBOLS ALREADY DEFINED L symbol is the name to be assigned to the storage address derived from the second operand, hex10c. Symbol may be from 1 to 8 characters long. It must contain. at least one nonhexadecima1 character. Any symbolic name longer than eiqht characters is left-justified and truncated on the right after the eighth character. The DEBUG symbol table is full and no new symbols may be defined until the current definitions are cleared by obtaining a new copy of CMS. However, an existing symbol may be assigned to a new storage location by issuing another DEF subcommand for that symbol. MISSING OPERAND The DEFINE subcommand requires at least two operands and less than two were entered. TOO MANY OPERANDS hex10c is the hexadecimal storage location, in relation to the current origin, to which the name specified in the first operand (symbol), is assigned. Hex10c, a hexadecimal number, is added to the current origin established by the ORIGIN subcommand. The sum of the second operand (hex10c) and the or1g1n is the storage address to which the symbolic name is assigned. To assign the symbolic name to the correct location be sure to know the current origin. The existing DEBUG symbol table entries remain unchanged when the ORIGIN subcommand is issued. Three is the maximum number of operands for the DEFINE subcommand and more than three were entered. Section 4. Diagnostic Aids 573 Use the DUMP subcommand to print part or all of a virtual machine's storage on the printer. The format of the DUMP subcommand is: r-------------------------------------, , r , I I r I I symbo11 I I symbo12 I I DUmp I I I I I hexloc 1 I I hexloc2 I [ident] I .Q I I I I I I I * L .J I I I I I J~ lI _ _ _ _ _ _I_ _ _ _ _ _ _ _ _ _ _L_ _ _ _ _ _ _.J_ _ _ _ _ _ _ _ _ .JI .!!h~!~: symboll is the name assigned (via the DEFINE subcommand) to the storage address that begins the dump. hexloc 1 is the hexadecimal storage location, in relation to the current origin, that begins the dump. The first and second operands specify the starting and ending addresses, respectively, of the area of storage to be dumped. If you issue DUMP without the first and second operands, 32 bytes of storage are dumped starting at the current origin. If you issue DUMP without the second operand, 32 bytes of storage are dumped starting at the location indicated by the first operand. If you specify ~he first and second operands, they must be valid symbols or hexadecimal numbers. When you specify a symbol, the DEBUG symbol table is searched. If a match is found, the storage location corresponding to that symbol is the starting or ending address for the dump. When a hexadecimal number is specified, it is added to the current origin to calculate the starting or ending storage address for the dump. The first and second operands must designate storage addresses that are not greater than the virtual machine's storage size. Also, the storage address derived from the second operand must be greater than the storage address derived from the first operand. An asterisk may be specified for the second operand. In this case, all of storage from the starting address (first operand) to the end of storage is printed on the printer. symbo12 is the name assigned (via the DEFINE subcommand) to the storage address that ends the dump. hexloc2 is the hexadecimal storage location, in relation to the current origin, that ends the dump. * indicates that the dump ends at last virtual storage address. the user's ident is the name (up to eight characters) identifies this particular printout. that The requested information is printed offline as soon as the printer is available. First, a heading: ident FROM location starting location TO ending is printed. Next, the general registers 0 through 7 and 8 through 15, and the floating-point registers 0 through 6 are printed. Then the specified portion of virtual storage is printed with the storage address of the first byte in the line printed at the left, followed by the alphameric interpretation of 32 bytes of storage. 574 The following error messages may appear when you issue the DUMP subcommand. INVALID OPERAND This message is issued if the address specified by the second operand is less than that specified by the first operand, or if the first or second operands cannot be located in the DEBUG symbol table and are not valid hexadecimal numbers. If either operand is intended to be a symbol, a DEFINE subcommand must previously have been issued for that symbol; if not, the operand must specify a valid hexadecimal location. INVALID STORAGE ADDRESS The hexadecimal number specified in the first or second operand, when added to the current origin, is greater than the user's virtual storage size. If the current origin value is unknown, reset it to the desired value by issuing the ORIGIN subcommand and then reissue the DUMP subcommand. TOO MANY OPERANDS Three is the maximum number of operands for the DUMP subcommand; more than three operands were entered. VM/370: System Logic and Problem Determination Guide §Q Use the GO subcommand to 'exit from the debug environment and begin execution in the CMS environment. The old PSW for the interruption that caused the debug environment to be entered is saved and later loaded to resume processing. Issuing the GO subcommand loads the old PSi. If the debug environment was entered due to a breakpoint, external interruption, or program interruption, then the GO subcommand does not need an operand specifying the starting address. The format of the GO subcommand is: r , I r , I I symbol I I I GO I I hexloc I I I L.J L--__ · ____________________________________ -.JI symbol is the name, already assigned by the DEFINE subcommand, to a storage location where execution begins. The following error messages entering the GO subcommand. may appear while INVALID OPERAND An operand specified in the GO subcommand cannot be located in the DEBUG symbol table and is not a valid hexadecimal number. If the operand is intended to be a symbol, a DEFINE subcommand must have been previously issued for that symbol; if not, the operand must specify a valid hexadecimal storage location. INVALID STORAGE ADDRESS hexloc is the hexadecimal location, in relation to the current origin, where execution begins. When the GO subcommand is issued, the general registers, CAW (channel address word), and CSW (channel status word) are restored either to their contents upon entering the debug environment, or, if they have been modified while in the debug environment, to their modified contents. Then the old PSW is loaded and becomes the current PSW. Execution begins at the instruction address contained in bits 40-63 of the PSW. By specifying an operand with the GO subcommand, you can alter the address where execution is to begin. This operand must be specified whenever the GO subcommand is issued if the debug environment is entered by issuing the DEBUG command. The operand may be a symbol or a hexadecimal location. When a symbol is specified, the DEBUG symbol table is searched. If a match is found, the storage address corresponding to the symbol replaces the instruction address in the old PSW. When a hexadecimal number is specified, it is added to the current origin to calculate the storage address that replaces the instruction address in the old PSW. In either case, the derived storage address must not be greater than the virtual machine's storage size. Further, it is your responsibility to make sure that the address referred to by the operand of the GO subcommand contains an operation code. The address at which execution is to begin is not on a halfword boundary (indicating that an operation code is not located at that address) or the sum of the GO operand and the current origin value is greater than the virtual machine's storage size. If the current value is unknown, it may be reset to the desired value by issuing the ORIGIN subcommand. INCORRECT DEBUG EXIT The GO subcommand without an operand has been issued when DEBUG had not been entered due to a breakpoint or external interruption. The RETURN subcommand must be issued if DEBUG had been entered via the DEBUG command. TOO MANY OPERANDS The GO subcommand has a maximum of one operand; more than one operand was entered. section 4. Diagnostic Aids 575 Use the GPR subcommand to print the contents of one or more general registers at the terminal. the register indicated by the second operand are typed at the terminal. Both operands must be decimal numbers from 0 through 15 inclusive, and the second operand must be greater than the first. The format of the GPR subcommand is: r----------------------------------------------, I _____________________________________ GPR I reg1 [reg2] L ._________ JI The following error messages may appear on the terminal when the GPR subcommand is entered. reg1 is a decimal number (from 0 through 15) indicating the first or only general register whose contents are to be typed. reg2 is a decimal number (from 0 through 15) indicating the last general register whose contents are to be typed. This operand is optional and is only specified when more than one register's contents are to be printed. When only one operand is specified, only the contents of that general register are typed at the terminal. When two registers are specified, the contents of all general registers from the register indicated by the first operand through 576 INVALID OPERAND The operand(s) specified are not decimal numbers from 0 through 15, or the second operand is less than the first. MISSING OPERAND The GPR subommand requires at operand, and none was entered. least one TOO MANY OPERANDS The GPR subcommand has a maximum of two operands, and more than two operands were entered. VM/370: System Logic and Problem Determination Guide Use the HI subcommand to close all open files and I/O devices, and to update the master file directory. This subcommand may be issued whenever the keyboard is unlocked in the debug environment, regardless of the reason the debug environment was entered. The following error message may appear on the terminal while entering the HI subcommand. TOO MANY OPERANDS The HI subcommand has no operands, and one or more operands were entered. The format of the HX subcommand is: r----------------------------------------------, I HX I I L_______ _ _ ___________ - - - J The HX subcommand has no operands. Section 4. Diagnostic Aids 577 Use the ORIGIN subcommand to set the origin equal to the program load point. The ORIGIN subcommand sets an origin or base address to be used in the debug environment. In all debug subcommands, you can specify instruction addresses in relation to the program load point, rather than to O. The hexadecimal location specified in DEBUG subcommands then represents a specific location within a program, the origin represents the storage location of the beginning of the program; and the two values added together represent the actual storage location of that specific point in the program. r--------------------------------------------, I ORigin I {SymbOl} I I hexloc I L _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _.___________ --' symbol is a name that was previously assigned (via the DEFINE subcommand) to a storage address. hexloc is a hexadecimal location within of the virtual machine's storage. while The operand specified in the ORIGIN subcommand cannot be located in the DEBUG symbol table and is not a valid hexadecimal number. If the operand is intended to be a symbol, a DEFINE subcommand must have been previously issued for that symbol; if not, the operand must specify a valid hexadecimal location. INVALID STORAGE ADDRESS The address specified by the ORIGIN operand is greater than the user's virtual storage size. the limits When the ORIGIN subcommand specifies a symbol, the DEBUG symbol table is searched. If a match is found, the value corresponding to the symbol becomes the new origin. When a hexadecimal location is specified, that value becomes the origin. In either case, the operand cannot specify an address greater than the virtual machine's storage size. 578 The following error messages may appear you enter the ORIGIN subcommand. INVALID OPERAND The format of the ORIGIN subcommand is: I Any origin set by an remains in effect until another ORIGIN subcommand ORIGIN subcommand is issued, or until you obtain a new copy of CMS. Whenever a new ORIGIN subcommand is issued, the value specified in that subcommand overlays the previous origin setting. If you obtain a new copy of CMS (via IPL), the origin is set to 0 until a new ORIGIN subcommand is issued. MISSING OPERAND The ORIGIN subcommand requires and none was entered. one operand, TOO MANY OPERANDS The ORIGIN subcommand requires only operand, and more than one was entered. VM/370: system Logic and Problem Determination Guide one Use the PSi subcommand to type the contents of the old PSi (program status word) for the interruption that caused DEBUG to be entered. The format of the PSi subcommand is: r-----------------------------I PSi I ---,I L _____________________________________________ ~ where the 1 in the first byte means that external interruptions are allowed and xxxxxxxx is the hexadecimal storage address of the DEBUG program. The PSi contains some information not contained in storage or registers but required for proper program execution. In general, the PSi controls instruction seq~encing and holds and indicates the status of the systea in relation to the program currently executing. The PSi subcommand has no operands. If DEBUG was entered due to an external interrupt, the PSi subcommand causes the contents of the external old PSi to be typed at the terminal. If a program interrupt caused DEBUG to be entered, the contents of the program old PSi are typed. If DEBUG was entered for any other reason, the following is typed in response to the PSi sUbcommand: 01000000 xxxxxxxx The following error message entering the PSi subcommand. may appear while TOO MANY OPERANDS The PSi subcommand has no operands and one or more was entered. Section 4. Diagnostic Aids 579 Use the RETURN subcommand to exit from t he debug environment to the CMS command environment. RETURN should be used only when DEBUG is entered by issuing the DEBUG command. ready message followed by a carriage return and an unlocked keyboard indicates that the RETURN subcommand has successfully executed and that control has transferred from the DEBUG environment to the CMS command environment. The format of the RETURN subcommand is: r-----------------------------·-------, IL _RETurn __ I I _ _______________ J The RETURN subcommand has no operands. When RETURN is issued, the information contained in the general registers at the time DEBUG was entered is restored or, if this information was changed while in the debug environment, the changed information is restored. In either case, register 15, the error code register, is set to zero. A branch is then made to the address contained in register 14, the normal CMS return register. If DEBUG is entered by issuing the DEBUG command, register 14 contains the address of a central CMS service routine and control transfers directly to the CMS command environment. The 580 The following error messages may appear entering the RETURN subcommand. while TOO MANY OPERANDS The RETURN subcommand has no operands, one or more were specified. and INCORRECT DEBUG EXIT If DEBUG is entered due to a program or external interruption, a breakpoint or an unrecoverable error, this message is displayed in response to the RETURN subcommand. To exit from the DEBUG environment under the above circumstances, issue GO. VM/370: System Logic and Problem Determination Guide Use the SET subcommand to change the contents of the control words and general registers that are saved when the debug environment is entered. The contents of these registers are restored when control transfers from DEBUG to another environment. If register contents were modified in DEBUG, the changed contents are stored. The SET subcommand can change the contents of one or two general registers each time it is issued. When four or less bytes of information are specified, only the contents of the specified register are changed. When more than four bytes of information is specified, the contents of the specified register and the next sequential register are changed. For example, the SET subcommand: SET The format of the SET subcommand is: r----------------------------------------------, I SET I {CAW hexinfo } I I I I CSW hexinfo [hexinfo) I I I PS W hexinfo [ hexinfo ) I _____________________________________________ I GPR reg L hexinfo [hexinfo) - JI GPR 2 xxxxxxxx changes only the contents of 2. But, the SET subcommand: SET GPR changes the and 3. general register 2 xxxxxxxx xxxxxxxx contents of general registers 2 CSW hexinfo [hexinfo) indicates that the specified information (hexinfo [hexinfo) is stored in the CSW (channel status word) that existed at the time DEBUG was entered. The number of bytes that can be stored using the SET subcommand varies depending on the form of the subcommand. with the CAW form, up to four bytes of information may be stored. With the CSW, GPR, and PSW forms, up to eight bytes of information may be stored, but these bytes must be represented in two operands of four bytes each. When two operands of information are specified, the information is stored in consecutive locations (or registers), even if one or both operands contain less than four bytes of information. PSW hex info [hexinfo) indicates that the specified information (hexinfo [hexinfo) is stored in old PSW (program status word) for the interruption that caused DEBUG to be entered. The contents of registers changed using the SET subcommand are not displayed after the subcommand is issued. To inspect the contents of control words and registers, the CAW, CSW, PSW, or GPR subcommands must be issued. CAW hex info indicates that the specified information (hexinfo) is stored in the CAW (channel address word) that existed at the time DEBUG was entered. GPR reg hexinfo [hexinfo) indicates that the s~ecified information (hexinfo [hexinfo]) 1S stored in the specified general register (reg). Each hexinfo operand should be from one to four bytes long. If an operand is less than four bytes and contains an uneven number of hexadecimal digits (representing half-byte information), the information is right-justified and the left half of the uneven byte is set to zero. If more than eight hexadecimal digits are specified in a single operand, the information is left-justified and truncated on the right after the eighth digit. only change the The SET subcommand can contents of one control word at a time. For example, the SET subcommand must be issued three times: SET SET SET CAW CSW PSW to change the words. hexinfo hexinfo [hexinfo) hexinfo [hexinfo] contents of the three The following error messages entering the SET subcommand. may appear while INVALID OPERAND The first operand is not CAW, CSW, PSW, or GPR, or the first operand is GPR and the second operand is not a decimal number between 0 and 15 inclusive, or one or more of the hexinfo operands does no~ contain hexadecimal information. MISSING OPERAND The minimum entered. number of operands has not been TOO MANY OPERANDS control More than the required were specified. number of operands section 4. Diagnostic Aids 581 Use the STORE subcommand to store up to 12 bytes of hexadecimal information in any valid virtual storage address. The information is stored starting in the location derived from the first operand (symbol or hexloc). The format of the STORE subcommand is: r--------------------------------·--------, The STORE subcommand can store a maximum of 12 bytes at one time. By specifying all three information operands, each containing four bytes of information, the maximum 12 bytes can be stored. If less than four bytes are specified in any or all of the operands, the information given is arranged into a string of consecutive bytes, and that string is stored starting at the location derived from the first operand. Stored information is not typed at the terminal. To inspect the changed contents of storage after a STORE subcommand, issue an X subcommand. I STore I {SymbOl} hex info [hexinfo [hexinfo]] I IL______________________________________ I hexloc JI symbol is the naae assigned (via the DEFINE subcommand) to the storage address where the first byte of specified information is stored. hexloc is the hexadecimal location, current or1g1n, where the information is stored. relative to the first byte of hexinfo is any hexadecimal information, four bytes or less in length, to be stored. If the first operand contains any nonhexadecimal characters, the DEBUG symbol table is searched for a matching symbol entry. If a match is found in the DEBUG symbol table, or if the first operand contains only hexadecimal characters, the current origin is added to the specified operand and the resulting storage address is used, provided it is not greater than the virtual machinels storage size. The information to be stored is specified in hexadecimal format in the second through the fourth operands. Each of these operands is from one to four bytes (that is, two to eight hexadeciaml digits) long. If an operand is less than four bytes long and contains an uneven nUBber of hexadecimal digits (representing half-byte information), the information is right-justified and the left half of the uneven byte is set to zero. If more than eight hexadecimal digits are specified in a single operand, the information is left-justified and truncated on the right after the eighth digit. 582 The following errcr messages may appear on the terminal while entering the STORE subcommand. INVALID OPERAND The first operand cannot be located in the DEBUG symbol table and is not a valid hexadecimal number, or the information specified in the second, third, or fourth operands is not in hexadecimal format. If the first operand is intended to be a symbol, a DEFINE subcommand must have been previously issued for that symbol; if not, the operand must specify a valid hexadecimal storage location. INVALID STORAGE ADDRESS The current origin value, when added to the hexadecimal number specified as the first operand, gives an address greater than the userls virtual storage size. If the origin value is unknown, reset it to the desired value using the ORIGIN subcommand and reissue the STORE subcommand. MISSING OPERAND Less than two operands were specified. TOO MANY OPERANDS More than four operands were specified. VM/370: system Logic and Problem Determination Guide ----, The second operand of the X subcommand is optional. If specified, it indicates the number of bytes (up to a maximum of 56) whose contents are to be displayed. If the second operand is omitted and the first operand is a hexadecimal location, a default value of four bytes is assumed. If the second operand is omitted and the first operand is a symbol, the length attribute associated with that symbol in the DEBUG symbol table is used as the number of bytes to be displayed. I I I L J I r I hexloc I n I I I I ! I L J LI ___________________________________________ - - - JI The following error messages may appear on the terminal when the X subcommand is entered. Use the X subcommand to examine and display the contents of specific locations in virtual storage. The information is displayed at the terminal in hexadecimal format. The format of the X (examine) subcommand is: r I I I I I I I X symbol r I n I !~~g~h , I I , INVALID OPERAND symbol is the name assigned (via the DEFINE subcommand) to the storage address of the first byte to be examined. hexloc is the hexadecimal location, in relation to the current origin, of the first byte to be examined. The first operand cannot be located in the DEBUG symbol table and is not a valid hexadecimal number, or the second operand is not a decimal number from 1 through 56. If the first operand is intended to be a symbol, it must have been defined in a previous DEFINE subcommand; otherwise, the operand must specify a valid hexadecimal number. INVALID STORAGE ADDRESS n is a decimal number from 1 through 56 that specifies the number of bytes to be' examined. If a symbol is specified without a second operand, the length attribute associated with that symbol in the DEBUG symbol table specifies the number of bytes to be examined. If a hexadecimal location is specified without a second operand, four bytes are examined. The first operand of the subcommand specifies the beginning address of the portion of storage to be examined. If the operand contains any nonhexadecimal characters, the DEBUG symbol table is searched for a matching symbol entry. If a match is found, the storage address to which that symbol refers is the location of the first byte to be examined. If no match is found, or if the first operand contains only hexadecimal characters, the current origin as established by the ORIGIN subcommand is added to the specified operand and the resulting storage address is the location,of the first byte to be examined. The derived address must not be greater than the virtual machine's storage size. The hexadecimal number specified in the first operand, when added to the current origin, is greater than the storage size of the machine being used. If the current origin value is unknown, reset it to the desired valqe by issuing the ORIGIN subcommand and reissue the X subcommand. KISSING OPERAND No operands were required. entered; at least one is TOO KANY OPERANDS Kore than entered. the maximum of two operands were Section 4. Diagnostic Aids 583 SVCTRACE Use the SVCTRACE command to trace internal transfers of information resulting from SVC (supervisor call) instructions. Issuing the SVCTRACE command causes switches to be set. These switches, in turn, cause information to be recorded at appropriate times. When the trace is terminated, the recorded information is printed at the system printer. The information recorded call is: • storage address instruction of for a normal SVC the SVC calling Name of the program being called • contents of the SVC old PSi • storage address of the return from the called program • The general registers registers T he parameter issued. list at SVCTRACE ON command is issued. The first line of trace output starts with a minus sign (-), a plus sign (+), or an asterisk (*). The format of the first line of trace output is: {: } = B/D xxx/dd name FROM loc OLDPSi GOPSi psw2 [RC rc] • • A variety of information is printed whenever the and = = indicates information processing the SVC. recorded pswl before floating-point the time the SVC + indicates information recorded after processing the SVC, unless applies. * indicates processing return. N/D is an abbreviation for SVC Bumber and Depth (or level). xxx is the number of the SVC numbered sequentially). dd is the nesting level of the SVC call. * is information recorded a CMS SVC which had an after error The format of the SVCTRACE command is: ------, r ISVCTrace I I I _._------' L call (they are name is the macro or routine being called. ON indicates tracing for all SVC calls. OFF discontinues all SVC tracing. loc is the program location was issued. from which the SVC pswl is the PSi at the time the SVC was called. The trace information is: • The general registers both before the SVC-called program is given control and after a return from that program. • The floating-point registers both before the SVC-called program is given control and after a return from that program. • The parameter list, as SVC was issued. psw2 the PSi with which the routine (for example, RDBUF) being called is invoked, if the first character of this line is a minus sign f-). If the first character of this line is a plus sign (+) or asterisk (*), PSi2 represents the PSi which returns control to the user. rc it existed when the To terminate tracing set by the SVCTRACE command, issue the HO or SVCTRACE OFF command. Both SVCTRACE OFF and HO cause all trace information recorded up to the point they are issued to be printed at the system printer. SVCTRACE OFF can be issued only when the keyboard is unlocked to accept input to the CMS command environment. TO terminate tracing at any other point in system processing, HO must be issued. If a 8X subcom.and to the DEBUG environment or a logout from the control program is issued before terminating SVCTRACE, the switches are cleared automatically and all recorded trace information is printed at the system printer. 58Q is the return code passed from the SVC handling ~outine in general register 15. This field is omitted if the first character of this line is a minus sign (-), or if this is an OS SVC call. For a CMS SVC, this field is zero if the line begins with a plus sign (+), and nonzero for an asterisk (*). Also, this field equals the contents of Register 15 in the "GPRS AFTER" line. V"/370: System Logic and Problem Determination Guide The next two lines of output are the contents of the general registers when control is passed to the SVC handling routine. This output is identified at the left by "-GPRSB". The format of the output is: The next line of output is the contents of the caller's floating-point registers. The output is identified at the left by "eFPRS." The format of the output is: -GPRSB eFPRS = h h h h h h h h *dddddddd* h h h h h h h h *dddddddd* represents the contents of register in hexadecimal format. a The next line of output is the contents of general registers 0, 1 and 15 when control is returned to the user's program. The output is identified at the left by "-GPRS AFTER :". The format of the output is: -GPRS AFTER RO-R1 =h h *dd* R15 is the EBCDIC translation of of a general register. eFPRSS the contents a is the EBDCIC translation. The last two lines of output are only printed if the address in Register 1 is a valid address for the virtual machine. If printed, the output is the parameter list passed to the SVC. The output is identified by "epARM" at the left. The output format is: ePARM =h h h h h h h h *dddddddd* h h h h h h h h *dddddddd* represents a word of hexadecimal data ~ represents the EBCDIC translation of contents of a general register. contents of Each floating-point register is a doubleword and each! and g represents a doubleword of data. The EBCDIC translation is preceded and followed by an asterisk (*). h h h h h h b h *dddddddd* h h h h h h h h *dddddddd* contents of f f f f *gggg* a The next two lines of output are the contents of the general registers when the SVC handling routine is finished processing. This output is identified at the left by "-GPRSS". The format of the output is: represents the hexadecimal general register. = represents the hexadecimal floating-point register. The only general registers that CMS routines alter are registers 0, 1, and 15 so only those registers are printed when control returns to the user program. The EBCDIC translation is preceded and followed by an asterisk (*). -GPRSS a The next line of output is the contents of floating-point registers when the SVC-handling routine is finished processing. The output is identified by "eFPRSS" at the left. The format of the output is: h *d* contents of of a Each floating-point register is a doubleword: each f and g represents a doubleword of data. The EBCDIC translation is preceded and followed by an asterisk (*). g represents the hexadecimal general register. contents of is the EBCDIC translation floating-point register. the The contents of general registers 0-7 are printed on the first line, with the contents of 8-F on the second line. The hexadecimal contents of the registers registers are printed first, following by the EBCDIC. The EBCDIC translation translation is preceded and followed by an asterisk (*). f f f f *gggg* represents the hexadeciaal floating-point register. general represents the EBCDIC translation of contents of a general register. = a the is the EBCDIC translation. The parameter list is found at the address contained in register 1 before control is passed to the SVC-handling program. The EBCDIC translation is preceded and followed by an asterisk (*). Figure 66 output. summarizes the types of SVC trace General registers 0-7 are printed on the first line with registers 8-F on the second line. The EBCDIC translation is preceded and followed by an asterisk (*). Section 4. Diagnostic Aids 585 r------------------------------------, 1 Identification 1 Comments 1 -------------------------------------------1 + } 1The SVC and the routine which 1 { 1 issued the SVC. 1 1 1 1 1 IContents of general registersl 1 when control passed to the 1 1 SVC handlin~ routine. 1 NID * -GPRSB -GPRS AFTER -GPRSS 1 1 1Contents of general registers 1 0, 1, and 15 when control 1 is returned to the user 1 program. 1 IContents of the general 1 registers when the SVC 1 handling routine is finished 1 processing. 1 .FPRS ,Contents of floating-point , register before the , SVC-called program is given , control and after returning I from that program. I .FPRSS Icontents of the floatingI point registers when the SVCI I handling routine is finishedl I processing. I I I .PARM IThe parameter list, when one 1 I _is L _ _ _._ _ _ _ _ _ _ _ _ _ _ _passed _ _ _ _ _to _ _ the _ _ _ SVC. _ _ _ _ _ _ _ _.II Figure 66. Summary of SVC Trace Output Lines INVOKING DDR UNDER CMS The format of the DDR command is: r--------------------1 1 I DDR I r , [filename [filetype Ifilemodel ,1 1 I 1 1 * 1 1 I l L L _______ ______ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _.I_ _ ---'1 filename filetype [filemode] is the identification of the file containing the control statements for the DDR program. If no file identification is provided, the DDR program attempts to obtain control statements from the console. The filemode defaults to * if a value is not provided. INVOKING DDR AS A STANDALONE PROGRAM TO use DDR as a standalone program, load it from a real or virtual IPL device as you would any other standalone program. Then indicate where the DDR program is to obtain its control statements by responding to prompting messages at the console. see the "DDR Control statements" discussion in the "CP Commands for Debugging" section. The control statements for running standalone and under CMS are identical, except that CMS ignores the SYSPRINT control statement. Use the DASD Dump Restore (DDR) service program to dump, restore, copy, display, or print VM/370 user minidisks. The DDR program may run as a standalone program, or under CMS via the DDR command. 586 VM/370: System Logic and Problem Determination Guide section 5 has nine appendixes: • "Appendix A: VM/370 Coding Conventions" • "Appendix B: CP and RSCS Equate Symbols" • "Appendix C: CMS Equate Symbols" • "Appendix D: DASD Record Formats" • "Appendix E: VM/370 Restrictions" • "Appendix F: Virtual Devices Used in CMS" • "Appendix G: Function Codes for DIAGNOSE Instructions" • "Appendix H: CMS ZAP Service program" • "Appendix I: Applying PTFs" Section 5. Appendixes 587 !I.§~ Base address for modules called via BALR The following are coding conventions used by CP modules. This information should prove helpful if you debug, modify, or update CP. - For virtual-to-Real transla tion: • !!~~.!§~.§!: FORMAT Contents ~Q!.Y!!m Labels-- 1 10 16 31, 36, 41, etc. • 1 2 Operation Code Operands Comments • When describing an area of storage in mainline code, a copy file, or a macro, DSECT is issued containing DS instructions. • Meaningful names are used instead of self-defining terms, for example 5, X'02', or C'I' represent a quantity (absolute address, offset, length, register, etc.). All labels, displacements, and values are symbolic. All bits should be symbolic and defined by EQU. For example: CONSTANTS Constants follow the executable code and precede the copy files and/or macros that contain DSECTs or system equates. Constants are defined in a section followed by a section containing initialized working storage, followed by working storage. Each of these sections is identified by a comment. Wherever possible for a module that is greater than a page, constants and working storage are within the same page in which they are referenced. • NO program modifies its own instructions during execution. • No program uses its instructions as data. Use iirtu al address Real address • COMMENT Approximately 75 percent of the source code contains comments. sections of code performing distinctly separate functions are separated from each other by a comment section. address VMSTATUS EQU X'02' - To set a bit, use: 01 BYTE ,BIT where BYTE BQU symbol. = name of field, BIT is an - To reset a bit, use: NI BYTE,255-BIT - To set multiple bits, use: • own unlabeled or - All registers are referred to as: REGISTER USAGE RO, R1, ••• , R15 - For CP: ~.§gi2~~U: 6 7 8 10 11 12 13 14 BYTE,BIT1+BIT2 - All lengths of fields or blocks are symbolic, that is, length of VMBLOK is: !H~g RCHBLOK, VCHBLOK RCUBLOK, VCUBLOK RDEVBLOK, VDEVBLOK IOBLOK VMBLOK Base register for modules called via SVC SAVEAREA for modules called via SVC Return linkage for modules called via BALR VMBLOKSZ • EQU *-VMBLOK Avoid absolute relative addressing in branches and data references, (that is, location counter value (*) or symbolic label plus or minus a self-defining term used to form a displacement). section 5. Appendixes 589 • When using a single operation to reference multiple values, specify each value referenced, for example: LM R2,R4,CONT CON1 CON2 CON3 DC DC DC • F'1' F'2' F'3' • Do not use PRINT NOGEN or PRINT source code. • MODULE NAMES external name DMK - The next three letters of the module name identify the module and must be unique. Example: DSP - The preceding three-letter, unique module identifier is the label of the TITLE card. Each entry point or external reference must be prefixed by the six-letter unique identifier of the module. Example: • DMKDSPCH TITLE Card Example: DSP TITLE 'DMKDSP VERSION v LEVEL I' • VM/370 DISPATCHER PTF Card Example: CP/CMS: R2,AB (,R4) To determine if your program is executing in a virtual machine or a real machine, issue the Store CPU ID (STIDP) instruction. If STIDP is issued from a virtual machine, the version number (the first byte of the CPUID field) returned will be X'PP'. OFF in - The first three letters of the are the assigned component code. Example: For all R X instruc tions use • ,. to specify the base register when indexing is not being used, that is: L SET R2=CON1 SET R3=CON2 SET R4= CON3 Control section names and references are as follows: • PUNCH 'xxxxxxxx APPLIED' The CP loadlist EXEC contains a list of CP modules used by the VMFLOAD procedures when punching the text decks that make up the CP system. All modules following DMKCPE in the list are pageable CP modules. Each 4K page in this area may contain one or more modules. The module grouping gov:rns the order in which they appear 1n the loadl ist. An SPB 1 (Se t Page Bounda ry} card is a loader control card which forces the loader to start this module at the next higher 4K boundary. An SPB card is required only for the first module following DMKCPE. If more than one module is to be contained in a 4K page, only the first can be assembled with an SPB card. The second and subsequent modules for a multiple module 4K page must not contain SPB cards. If changes are made to the loadlist, care must be taken to ensure that any modules loaded together in the pageable area do not exceed the 4K limit. Page boundary crossover is not allowed in the pageable CP modules. The position of two modules in the loadlist is critical. All modules following DMKCPE must be reenterable and must not contain any address constants referring to anything in the pageable CP area. DMKCKP must be the last module in the loadlist. where xxxxxxxx = APAR number response • ERROR MESSAGES There should not be any insertions into the message at execution time and the length of the message should be resolved by the assembler. If insertions must be made, the message must be assembled as different DC statements, and the insert positions are to be individually labeled. 590 lA 12-2-9 multipunch must be in column 1 of an SPB card. VM/370: System Logic and Problem Determination Guide This appendix contains assembler language equate symbols for: • • • • • that reference CP and RSCS data VM/370 Device Classes, Types, Models and Peatures VM/370 Machine Usage VM/370 Extended Control Registers VM/370 CP Usage VM/370 Registers section 5. Appendixes 591 CLASTER" TYP2700 TYP2955 TYPTELE2 TYPTTY TYPIBM 1 TYP2741 TYP1050 TYPUBDEF TYPBSC TYP3210 TYP3215 TYP2150 TYP1052 CLASGRAF TYP2250 TYP2260 TYP2265 TYP3066 TYP1053 TYP3277 TYP32S4 TYP32S6 TYP315S FTROPRDR CLASORI TYPRDR TYP2501 TYP2540R TYP3505 TYP1442R TYP2520R TYPTIMER TYPTR TYP2495 TYP2671 TYP1017 CLASORO TYPPON TYP2540P TYP3525 TYP1442P TYP2520P TYPPRT TYP1403 TYP3211 TYP1443 TYPTP TYP101S FTRUCS CLASTAPE TYP2401 TYP2415 TYP2420 TYP3420 TYP3410 TYP3411 FTR7TRK FTRDLDNS FTRTRANS FTRDCONV CLASDASD TYP2311 TYP2314 TYP2319 592 EQU EQO EQU EQU EQU EQU EQU EQU EQU EQU BQU EQU EQO EQO EQU EQU EQU EQU EQU EQU EQU EQU BQU EQU EQU EQO BQU EQO EQU EQO EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU BQU EQU EQU EQU EQU BQU EQU EQU EQO EQO EQO EQU EQU EQU EQO EQU EQU EQU EQU EQU EQU EQU EQU EQU X'SO' X'40' TYP2700 X'20' X'20' X' 10' X' lS' X' 14' X' 1 C' X'SO' X'OO' TYP3210 TYP3210 TYP3210 X'40' X'SO' X'40' X'20' X'10' X'OS' X'04' X'02' TYP32S4 TYP3277 X'SO' X'20' X'SO' X'Sl' X'S2' X'S4' X'SS' X'90' X'40' X'20' X' 21' X'22' X'24' X' 10' X'SO' X'S2' X'S4' X'SS' X'90' X'40' X'41' X'42' X'44' X'20' X'24' X'Ol' X'OS' X' 80' X'40' X'20' X '10' X' OS' TYP3410 X'SO' X'40' X' 20' X' 10' X'04' X'SO' X'40' TYP2314 Teriminal Device Class 2700 Bisync Line 2955 Communications Line Telegraph Terminal Control Type II TELETYPE Terminal IBM Terminal Control Type I 2741 Communications Terminal 1050 Communications Ter.inal Terminal device type is undefined Bisync Line for 3270 Remote stations 3210 Console 3215 Console 2150 Console 1052 Console Graphics Device Class 2250 Display onit 2260 Display station 2265 Display station 3066 Console 1053 Printer 3277 Display station 3284 Printer 3286 Printer 3158 Console operator ID Card Reader Onit Record Input Device Class Card Reader Device 2501 Card Reader 2540 Card Reader 3505 Card Reader 1442 Card Reader/Punch 2520 Card Reader/Punch Timer Device Tape Reader Device 2495 Magnetic Tape Cartridge Reader 2671 Paper Tape Reader 1017 Paper Tape Reader unit Record output Device Class Card Punch Device 2540 Card Punch 3525 Card Punch 1442 Card Punch 2520 Card Punch Printer Type Device 1403 Printer 3211 Printer 1443 Printer Tape Punch Device 101S Paper Tape Punch UCS Feature Magnetic Tape Device Class 2401 Tape Drive 2415 Tape Drive 2420 Tape Drive 3420 Tape Drive 3410 Tape Drive 3411 Tape Drive 7-track Feature Dual Density Feature Translate Feature Data Conversion Feature Direct Access storage Device Class 2311 Disk Storage Drive 2314 Disk storage Facility 2319 Disk Storage Facility VM/370: system Logic and Problem Determination Guide TIP2321 TYP3330 TYP3333 TYP3350 TYP2301 TYP2303 TIP2305 TYP3340 FTRRPS EQU EQU EQU EQU EQU EQU EQU EQU EQU FTREXTSN FTR2311T FTR2311B FTR35MB FTR10MB FTRRSRL CLASSPEC TYPCTCA TYP3104 TYP3105 TYPRSVl TIPUNSUP FTRTYPl FTRTYP2 EQU EQU EQU EOU EOU EQU EQU EQU EOU EQU EQU EQU EOU EQU TYP2311 X' 10' TYP3330 X'08' TYP2311 TYP2311 X'02' X'Ol' X' 80' 2321 Data Cell Drive 3330 Disk storage Facility 3333 Disk storage Facility 3350 Disk storage Facility 3201 Parallel Drum 2303 Serial Drum 2305 Fixed Bead storage Device 3340 Disk Storage Facility Rotational Positional sensing (RPS) Installed (3340) Extended Sense Bytes (24 bytes) X'40' (= VDEV231T) Top half of 2314 used as 2311 X'20' (= VDEV231B) Bottom half of 2314 used as 2311 X' 10' 35 MB Data Module mounted (3340) X'08' 10 MB Data Module mounted (3340) X'04' RESERVE/RELEASE are valid CCW op codes X'02' special device class X'02' Channel-to-channel adapter X'80' 3104 Programmable Communication Control unit X'40' 3105 programmable communications control unit TYP3104 Reserved by IBM X'02' Device unsupported by VM/370 X'Ol' Type 1 Channel Adapter (3104/3105) X' 10' Type 2 Channel Adapter (3704/3705) X' 20' section 5. Appendixes 593 !~Ll1.Q ~!£!!!!f~ !!~!§~ ~!i~ Q~!!!!~g EITMODE MCHEK WAIT PROBMODE EQU EQU BQU EQU ~!i2 Q!1!!!!~g PERMODE TRAIMODE IOMASK EXTMASK !!! i!! 12 '13 14 '15 - Extended mode Machine check enabled Wait state Problem state Bit Bit Bit Bit 01 05 06 07 - PER enabled Translate mode Summary I/O mask summary external mask £h~!!!!gl ~!~!y§ X' 80' X'40' X'20' X' 10' X' 08' X'04' X'02' X'Ol' X'80' X'40' X' 20' X'10' X'08' X'04' X'02' X'Ol' in Bit Bit Bit Bit ~!!~!!g~g f~! X'40' X'04' X'02' X'Ol' EQU EQU EQU EQU EQU EQU BQU EQU EQU EQU EQU EQU EQU BQU EQU BQU ~i!§ Qg!:i!!.~~ ~!~!!g~!gL~!!~!!g~g r.~! X' 08' X'04' X'02' X' 0 l' EQU EQU EQU EQU ~i!§ Qg!:i!!.~~ ATTN Sit CUE BUSY CE DE UC UE PCI IL PRGC PRTC CDC CCC IFCC CHC !!! !2!:E Bit Bit Bit Bit Bit Bit Bit Bit Bit Bit Bit Bit Bit Bit Bit Bit £h~!!ngl £Q!!~!!g 32 33 34 35 36 37 38 39 40 41 L.2 Ln L.4 L~5 46 Ln !2fg - £~! -- Attention status modifier Control unit end Busy Channel end Device end unit check Unit exception Program-control interruption Incorrect length Program check Protection check Channel data check Channel control check Interface control check Chaining check ££! CD CC SILl SKIP PCIF IDA BQU EQU BQU EQU EQU EQU X'80' X'40' X'20' X' 10' X'08' X'04' Bit Bit Bit Bit Bit Bit CMDRBJ I BTRBQ BUSOUT BQCHK DATACHK EQU EQU EQU EQU EQU X' 80' X'40' X' 20' X' 10' X'08' Bit 0 - Command reject Bit 1 - Intervention required Bit 2 - Bus out Bit 3 - Equipment check Bit .~ - Data check 594 32 - Chain data 33 - Command chain Suppress incorrect length indicator 34 35 - Suppress Data Transfer program-control interruption fetch 36 37 - Indirect data address - V"/370: systea Logic and Problem Deteraination Guide !~LJIQ ~!a:~!HnU~ ~Q!!a:BQ1 R~§!~a:~B~ ~!i2 ~!!!!!!~g !.!! Q ~B~§ BLKMPX SSMSUPP EOU EQU BYTE 0 X'80' X'40' Bit 00 - Enable block multiplexing Bit 01 - Enable SSM suppression PAGE4K PAGE2K SEG1M EQU EQU EQU BYTE 1 X'80' X'40' X'10' Bit 08 Use 4K pages Bit 09 - Use 2K pages Bit 11 - Use 1M segments CKCMASK CPTMASK EQU EQU BYTE 2 X'08' X'04' Bit 20 Mask on clock comparator interruption Bit 21 - Mask on CPU timer interruption IHTMASK KEYMASK SIGMASK EOU EQU EQU BYTE 3 X'80' X' 40' X'20' Bit 24 - Mask on interval timer interruption Bit 25 - Mask on operator key interruption Bit 26 - Mask on external signals 2-7 ~!i2 ~!!!!!!~g PERSUBR PERIFET PERSALT PERGPRS !!!!§ !.!! - 2 BYTE 0 X'80' X'40' X'20' X' 10' EQU EQU EOU EQU 12!!!!!!~g ~.!!~§ !.!! - Bit Bit Bit Bit 00 01 02 03 - Monitor Monitor Monitor Monitor 00 01 02 04 05 06 07 - Check stop control Synchronous logout control I/O logout control Recovery report mask Configuration report mask External damage report mask Warning condition report mask successful branches instruction fetches storage alteration register alteration ~.!!!.§1~ EQU EQU EQU EQU EQU EQU EQU BYTE 0 X'80' X'40' X'20' X'08' X'04' X'02' X' 0 l ' Bit Bit Bit Bit Bit Bit Bit ASYHELOG EQU ASYHFLOG EQU BYTE 1 X'80' X'40' Bit 08 - Asynch·ronous extended logout control Bit 09 - Asynchronous fixed logcut control HARDSTOP SYHCLOG IOLOG RECOVRPT COHFGRPT DAMAGRPT WARHGRPT section 5. Appendixes 595 BRING DEFER LOCK IOERETN SYSTEM EQU EQU EQU EQU EQU X'80' X'40' X' 20' X'lO' X' 08' Bring requested page Defer execution until page in storage Lock page for I/O operation Return I/O errors to caller Call to DMKPTRAN for system virtual machine space DELSEGS DELPAGES NEWPAGES NEWSEGS KEEPSEGS OLDVMSEG EQU EQU EQU EQU EQU EQU X' 80' X'40' X'08' X'04' X'02' X'Ol' Release the segment tables Release the page/swap tables Build new page/swap table Build new segment table Retain information in old segment table VMSEG pointer in VMBLOK valid ERRMSG NORET DFRET OPERATOR LOGDROP LOGHOLD PRIORITY VMGENIO NOAUTO ALARM NOTIME INHIBIT EDIT UCASE EQU EQU EQU EQU EQU BQU EQU EQU BQU BQU BQU BQU EQU EQU X'0800' X'0400' X'0200' X'OlOO' X' 80' X'40' X' 20' X' 10' X'04' X'02' X' 0 l' X '08' X'04' X'02' Output - Control prograa error message Output - Return immediately after call Output - Free buffer after queueing output - Message for system operator Output - Logoff and drop line after message output - Logoff and hold line after message output - write this message immediately I/O request generated by virtual machine output - suppress auto carriage return Output - sound the audible alarm output - suppress time stamp on message Input - Prevent display of this data Input - Edit input data for corrections Input - Translate data to upper case RDRCHN PCHCHN PRTCHN ADDS FB CHGSFB DELSFB OPNSFB ACTSFB CHGRDV CHGSHQ EQU EQU EQU EQU BQU EQU EQU EQU EQU EQU X' 0 l' X'02' X'04' X'08' X' 10' X'20' X'40' X' 80' X'0100' X'0200' SFBLOK goes on reader chain SFBLOK goes on punch chain SFBLOK goes on print chain Add new SFBLOK to recovery cylinder Change existing SFBLOK Delete SFBLOK from checkpoint It is an open print-punch file File being printed or punched Change attributes of real device Checkpoint a SHQBLOK MBCLPERF MNCOSYS MBCOTH MNCOTT MNCOSUS MNCLRESP MNCOBRD MNCOWRIT MHCOERD MNCLSCH MBCODQ MNCOAQ IUICOAEL MNCLUSER MNCOUSER BQU BQU BQU EQU BQU EQU BQU BQU BQU EQU BQU BQU EQU EQU BQU X'OO' X'OOOO' X'0061' X'0062' X'0063' X' 0 l' X'OOOO' X'OOOl' X'0002' X'02' X'0002' X'0003' X'0004' X'04' X'OOOO' MONITOR PERFORM class PERFORM class; system performance MONITOR tape header record MOBITOR tape trailer record MOBITOR collection suspension record MONITOR RESPONSE class RESPONSE class; begin read code RESPONSE class; write code RESPONSE class; end read code MONITOR SCHEDULE class SCHEDULE class; drop queue code SCHEDULE class; add to queue code Schedule class; add to eligable list code MOBITOR USER class USER class; user data 596 VM/370: System Logic and Problem Determination Guide MHCLINST MNCOSIM MHCLDAST MNCODASH MNCODAS MHCL SEEK MBCOCYL MNCLSYS MICODA EQO EQO EQO EQO EQO EQ U EQU EQO EQU X'OS' X'OOOO' X'06' X'OOOO' X'OOOl' X'07' X'OOOO' X' 08' X'0002' MOHITOR instruction simulation class INST class; instruction simulation code MOlITOR DASD/TAPE class DASTAP class; first record DASTAP class; data records MONITOR DASD class DASD class; SEEKs code MONITOR SYSTEM PROFILE class SYS class; DASD data Section 5. Appendixes 597 !~L170 !!~~!~~j!!~ ~~~12Qli£ !i~gi§~.§!: ~g.!!~:.!:~§ RO Rl R2 R3 R4 R5 R6 R7 R8 R9 Rl0 R 11 R12 R13 R14 R15 EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 yO Y2 Y4 Y6 EQU EQU EQU EQU 0 2 4 6 I!Q!!!1!!g CO Cl C2 C3 C4 C5 C6 C7 C8 C9 Cl0 Cll C12 C13 C14 C15 EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 1 1 1 1 1 1 598 1 1 1 1 1 1 General j~:gi~!i!: ]~!iJ.!il!Q!!§ 1 1 1 1 1 ___ I Point ji:g!§l~! ]~!!J.!!!!Q!!2 Control j~g!§~~!: ~~!!J.!!l!Q!!§ 1 1 1 1 1 ___ I V"1370: system Logic and Problem Determination Guide This appendix contains for: • CftS Usage • CSS Registers Field Name Assembler language equate symbols used in CftS to reference data Field Description CHANO CHAN 1 CHAN2 CHAN3 CRAR4 CRANS CHARM EXTS EQU EQU EQU EQU EQU EQU EQU EQU X'80' X'40' X'20' X'10' X'08' X'04' X'02' X'Ol' Bit Bit Bit Bit Bit Bit Bit Bit 00 01 02 03 04 05 06 01 - Channel 0 mask Channel 1 mask Channel 2 mask Channel 3 mask Channel 4 mask Channel 5 mask Input/output mask External mask ECSS MCKM IiAIT PROB EQU EQU EQU EQU X'08' X'04' X'02' X'Ol' Bit Bit Bit Bit 12 13 14 15 - Extended control mode mask Machine check mask wait state mask Problem state mask FOFM DOFM EUFS SIGH EQU EQU EQU EQU X'08' X'04' X'02' X' 0 l' Bit Bit Bit Bit 36 31 38 39 - Fixed-point overflow mask Decimal overflow mask Exponent underflow mask significance mask ATTN SS CUE BUSY CE DE UC UE EQU EQU EQU EQU EQU EQU EQU EQU X'80' X'40' X'20' X' 10' X'08' X'04' X'02' X'Ol' Bit Bit Bit Bit Bit Bit Bit Bit 32 33 34 35 36 31 38 39 ,- PCI ICL PGC PTC CDC CCC ICC CRC EQU EQU EQU EQU EQU EQU EQU EQU X' 80' X'40' X' 20' X'10' X'08' X'04' X'02' X'Ol' Bit Bit Bit Bit Bit Bit Bit Bit 40 41 42 43 44 45 46 47 Attention Status modifier Control unit end Busy Channel end Device end unit check unit exception - program-controlled interruption Incorrect length - Program check - Protection check - Channel data check - Channel control check - Interface control check - Chaining check - Section 5. Appendixes 599 Field Nalle Field Description ~Q!!!Q!! ~h~!!!!!5!l ~Q!!m2!!g ~Qg~~ WRITE RE1D NOP SENSE WRDATl RDDATl SEEK TIC WRITE1 RDCONS SETSEC SE1RCH EOU EOU EOU EOU EOU EOU EOU EOU EOU EOU EOU EOU ~i~2 Q!5!'iB.!5!~ CD CC SILl SKIP PCIF IDl 600 EOU EOU EOU EOU EOU EOU X' 0 l ' X'02' X'03' X'04' X' OS' X'06' X'07' X'OS' X' 09' X'OA' X' 23' X'31' i!! 2 ----------------- Write Read No opera tion Sense Write data Read data Seek Transfer in channel write and space 1 Read from console Set sector Search ID equal ~hg!l!l!5!l ~Q!!!~!!~ !,Q!;:g (~~!O X'SO' X'40' X'20' X' 10' X'OS' X'04' Bit Bit Bit Bit Bit Bit 32 - Chain data 33 - Command chain 34 - suppress incorrect length 35 - Suppress data transfer 36 - Cause program control interruption Indirect data address 37 - VM/370: System Logic and Problem Determination Guide Field Nalle RO Rl R2 R3 R4 R5 R6 R7 R8 R9 Rl0 Rll R12 R13 R14 R15 FO F2 F4 F6 co C1 C2 C3 C4 C5 C6 C7 C8 C9 Cl0 Cll C12 C13 C14 C15 EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU o 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 o 2 4 6 o 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 section 5. Appendixes 601 Record 0 (8 bytes long) to X'OO'. of all tracks other than track 0 is initialized 32 Pages/cylinder 2314,2319 '--T--T---r I I --r--r--, *IEO 00 00 00 00 00 00 001 L_-L_-L_--'- I I L_'___J I 11100000 57 pages/cylinder 3330 '--T-T---r I f ~--y--, lEO 00 00 00 00 00 00 001 L-L---L_--'- I I L-I--J 24 pages/cylinder 2305 .---r--~-T---r~---r--Y--, lEO 00 00 00 00 00 00 001 L-L---L_-L I I • I I 120 pages/cylinder 3350 (native mode) '--T---r---r---r~-~--y--, IFO 00 00 00 00 00 00 001 L_-L---L_-L 2314 and 2319 32 3330 series 57 2305 and 3340 24 3350 120 I I I-'---.J pages/cylinder pages/cylinder pages/cylinder pages/cylinder Cylinder 0 contains less pages because this area is used by CP. *The first three pages of cylinder 0 are always flagged in use. On all other cylinders, the first byte is a hexadecimal '00' unless the disk area is flagged as bad. Record 0 of all tracks other than track 0 is initialized to hexadecimal ·OO~. Section 5. Appendixes 603 1PL record -- puts program loaded. system into wait state if storage r-------~------~--------~--------~ L _______ -L ________ ________ ________ _______ , device is initial --, 100020000 OOOOOOOC 03000000 20000000 00000000 ______ 000000001 __J ~ ~ ~ ~ Checkpoint record -- This is the checkpoint program load at CP 1PL time to retrieve and save control information for a war. start. 4 byte key of VOLl 80 byte data record Key r---~ 1 VOL 1 1 L __ ~ ~Ii~§ r-------~ y--------~------~-----, 1-20 IE5D6D3P1 xx------->xxPOOO 00000005 000000001 I 1 21-40 10040 )401 1 1 41-60 14000---->00C3D7 F3F7P040 40404040 40-)401 1 61-80 140 L--_____ -L ________ 1 ~ ________ ~ ______ ~ )401 ______ __J xx->xx is a 6-byte label Bytes 13-16 contain a pointer to the VTOC Bytes 46-50 identify the system Bytes 52-55 contain a pointer to the active directory 604 VM/370: System Logic and Problem Determination Guide 1024 bytes Track 0 Cylinder 0 Allocation byte map used to identifies one cylinder. o identify cylinder 1 usage. Each byte r-> all 0<-, r-------~ ~+--------+, 100000100 040200--->FF 0000---->00001 L______ * ~ _________ +-L------------J * FF defines the last cylinder + 1 that can be allocated. depending on the device. 00 01 02 04 This varies temporary permanent T-disk directory 44 bytes key Track 0, Cylinder 0 96 bytes data area Format 4 OS DSCE type label - used to be compatible with OS. , r--------, 1 04--->041 L _ _ _ _ _ _ _ --I FORM AT 4 LABEL 1 ------I 44 Key 96 Byte Data 44 bytes key Track 0, Cylinder 0 96 bytes data area Format 5 OS DSCE type label for compatibility with os. r---I-I--I-I---, 1 05105105105100 1 I_I __ I_I ___J L_ _ 44 Byte Key 4096 bytes r------------------, 1L-_______________ OS FORMAT 5 LABEL --I1 96 Byte Data Area 1 page, track 0 or track 1 F3 Record is reserved for CP system use. Referred to as filler record. section 5. Appendixes 605 1624 bytes, Track 1 (2314, 2319 only) F4 used only on 2314 position on track. and 2319 devices to align Record 824 bytes track 1, cylinder 0 (2314, 2319 only) First segment of Record 4 to be used for paging. RO R1 R2 Key R3 R4 Key R5 Key R6 r----r--T----r-y----r-~_y--T---~__y_---_,__-_, IPagelI ICheckiVIVOL1 IAllocl IFormatl IFormatl I IBit IP IPointlOILabellByte I I 4 I I 5 I I I Map I L I ILI I Map I I I I I I I I I 111 I I I I I I I I 812414096141 80 .L110241441 961441 96 I I L _ _ - L - . l . _ _ _ .l.- I _ _ _.L_-.l. ____--.L__.L _ _ -.l.-__ --' RO RF3 RF4 R4 r----, I 1 ......- - - , I I 1 PAGE I I F I LLE R I I I-I I-I I-I I I 4096 I I 1624 I 1824 r--_, I I I 8 L _ _--' L _ _ _ --' RO R1 r-----, r---, I -.J L--_--' R2 r----. IPage I I I I I IBit Hapl-I I-I I I 8 I LI _4096 I LI_2472 I L--_---' _----' _ _ _ ,-.J These records appear as above formats if cylinder is O. 606 VM/370: system Logic and Problem Determination Guide 4 in proper RO R4 R3 R2 r--, r-----, r-----, r---, 1--1 I-I I-I I 8 I I 1624 I I 4096 I I 824 I L ___ - - - - ' '--_ _ _ _ .1 L-_-.I L _ _ _ _ -.I RO R4 R5 r-----, r----, r----, 1--1 I-I I 8 I I 3272 I I 3296 I L _ _ _ -.I L _ _ _ -.I L -_ _-.I RO R6 R5 r---, R7 r-----, I I-I I-I r-----, 1--1 8 I II 800 L ___ - - - - ' RO I .I I 4096 I '--_ _ _ _.1 I 11648 I L _ _ _ _ _ .1 R8 R7 r----' , r-----, r-----, I-I I-I I 8 I I 2448 I I 4096 I L _ _ _-.I L _____ -.I L----.I Note: Tracks 0 to 4 are repeated for tracks 5 to 9 (R9-R16), 10 to 14, (R17-R24), and 15 to 19 (R25-R32). The last record is R32. RO r R1 i R2 I Key T I R3 R4 i Key R5 Key R6 -T--T---~-T---~ RF3 I IPagel! ICheckiVIVOL1 IBytel IFormatl IFormatl1 I IBit IP IPointlOILabellMap I I 4 I I 5 IPagel I Map I L I I LI I I I I I I I I I I 111 I I I I I I I 96 1441 96 140961 I 8 1241 4096141 80 110241441 L ___--L-.L-___ -.l._.L __ _____ .L__.L _ _ _ _ -.l._-.L-.I ~ ~ section 5. Appendixes 607 R3 r-----, IPage I I I I I I I IBit Mapl-I I-I I-I I I I I I I I I I I 8 I L-_ I 4096 I IL _______ 4096 --'I IL-_ 4096 I L _______ .I _ _ --' _- - - ' RO r------, R2 Rl r------, r--------, I I I V l!:~£!_j~ RSS RS6 RS1 r-----, r-------, r-----' I 1--1 I-I I-I I I I I I I I I 8 I L-_ I 4096 I LI _4096 I IL _4096 L _ _ _ _ _ _ .I _ _ _--' _ _ .___ .I _ _ _.I RO r----·-, RO R1 R2 Key r--r--T----T R4 R3 I • -. Key I RS Key R6 RF3 -~~---,__-T_, IPagelI IChecklVIVOLl IBytel I Formatl I Format I 1 I I IBit IP IPointlOILabellMap I I 4 I I S IPagel I ISa p I L I IL I I I I I I I I I I I I 111 I I I I I I I I I 8 1241 4096141 80 110241441 96 1441 96 L140961..I-.JI L ___ - L _ . L ____ --L-.I..1.--.1.-_ _ _.1.--.1-.-_ RO R1 r-----, R2 r-----, r-----, R3 r----, IPage I I I I I I IBit Mapl-I I-I I-I I I I I I I I 8 IL _4096 I 4096 I 4096 LI______ .II L-_ _ _.II _ _ .___ .II I I I I L __ - - - - ' I 1!:~£!_1 RO I R22 I V R23 R24 r---.----, r----, I 1--1 1--1 I-I I I I I I I I I 8 I L-_ I 4096 IL _______ 4096 --'I IL _4096 L _ _ _ _ _ .I _ _ .JI _ _ _ _ --' r-----' 608 r-----, VM/310: system Logic and Problem Determination Guide RO R1 R2 Key R3 R4 Key R5 Key R6 r----T--T-----T-T-----y----T--T------y--y------, RO r----' R1 r-------' R2 r-----, ~ _ ~ ~ _ ~ ~ ~ _ ~ ~ ~ IPagel! ICheckiVIVOL1 IBytel IFormatl IFormatl IBit IP IPointlCILabellMap 1 1 4 1 I 5 1 IMap IL I IL I I I I I I I 1.11 I I I I I I 1 I I 8 1241 4096141 __ 80 110241441 96 1441 ____ 96-JI 1L____ __ _____ ___ _____ R3 r-----, IPage I I 1 I I 1 I IBit Mapl-I I-I 1--1 I I I I . I I I I I 8 I I 4096 I IL-______ 4096 -JI IL-_____ 4096 -.JI I L _______ .J L _ _ _ _ _.J I I I RO r-----' V R23 r------, R24 r-------, I 1--1 I-I I 1 I 1 I I I 8 1 LI _______ 4096 .JI IL _______ 4096 .JI I L _______ .J section 5. Appendixes 609 A virtual machine created by VM/370 is capable of running an IBM System/360 or System/370 operating system as long as certain VM/370 restrictions are not violated. If your virtual machine produces unexpected results, be sure that none of the following restrictions are viola ted. In general, virtual machines may not execute channel programs that are dynamically modified (that is, channel programs that are changed between the time the START I/O (SIO) is issued and the time the input/output ends, either by the channel program itself or by the CPU). However, some dynamically modified channel programs are given special consideration by CP: specifically, those generated by the Indexed Sequential Access Method (ISAM) running under OS/PCP, OS/MFT, and OS/MVT; those generated by ISAM running in an OS/VS virtual=real partition; and those generated by the OS/VS Telecommunications Access Method (TCAM) Level 5, with the VM/370 option. The self-modifying channel programs that ISAM generates for some of its operations receive special handling if the virtual machine using ISAM has that option specified in its VM/370 directory entry. There is no such restriction for DOS ISAM, or for ISAM if it is running in an as/vs virtual=virtual partition. If ISAM is to run in an OS/VS virtual=real partition, you must specify the ISAM option in the VM/370 directory entry for the OS/vs virtual machine. virtual machines using OS/VS TCAM (Level 5, generated or invoked with the VM/370 option) issue a DIAGNOSE instruction when the channel program is modified. This instruction causes CP to reflect the change in the virtual ccw string to the real CCW string being executed by the channel. CP is then able to execute the dynamically modified channel program properly. The restriction against dynamically modified channel programs does not apply if the virtual machine has the virtual=real performance option and the NOTRANS option has been set on. The following restrictions exist for minidisks: 1. In the case of read home address with the skip bit off, VM/370 modifies the home address data in user storage at the completion of the channel program because the addresses must be converted for minidisks; therefore, the data buffer area may not be dynamically modified during the input/output operation. Section 5. Appendixes 611 2. On a minidisk, if a CCW string uses multitrack search on input/output operations, subsequent operations to that disk must have preceding seeks or continue to use multitrack operations. There is no restriction for dedicated disks. 3. OS/PCP, MFT, and MVT ISAM or OS/VS ISAM running virtual=real may be used with a minidisk only if the minidisk is located at the ~eginning of the physical disk (that is, at cylinder zero). There 1S no such restriction for DOS ISAM or OS/VS ISAM running virtual=virtual. 4. VM/370 does not return an end-of-cylinder condition to machine that has a virtual 2311 mapped to the top half tracks 0 through 9) of 2314 or 2319 cylinders. 5. If the user's channel program for a minidisk does not perform a seek operation, then to prevent accidental accessing, VM/370 inserts a positioning seek operation into the user's channel program. Thus, certain channel programs may generate a condition code (CC) of zero on a SIO instead of an expected CC of one, which is reflected to the virtual machine. The final status is reflected to the virtual machine as an interrupt. 6. A DASD channel program directed to a 3330, 3340, or 3350 device may give results on dedicated drives which differ from r~sults on miniaisks having non-zero relocation factors if the channel program includes multiple-track operations and depends on a search ID high or a search ID equal or high to terminate the program. This is because the record 0 count fields on the 3330, 3340, and 3350 must contain the real cylinder number of the track on which they reside. Therefore, a search ID high, for example, based on a low virtual cylinder number may terminate prematurely if a real record o is encountered. a virtual (that is, Note: Minidisks with non-zero relocation factors on 3330, 3340, and devices are not usable under OS and OS/VS systems. This is because the locate catalog management function employs a search ID equal or high CCW to find the end of the VTOC. 3350 7. The IBCDASDI program cannot 3340, or 3350 minidisk. 8. If the DASD channel programs directed to 3330/3340/3350 devices include a write record R(O), results differ depending on whether the 3330/3340/3350 is dedicated (this includes a mini disk defined as the entire device) or nondedicated. For a dedicated 3330/3340/3350, a write R(O) is allowed, but the user must be aware that the track descriptor record may not be valid from one 3330/3340/3350 to another. For a nondedicated 3330/3340/3350, a write record R(O) is replaced by a read record R(O) and tpe skip flag is set on. This could result in a command reject condition due to an invalid command sequence. 9. When performing DASD I/O, if the record field of a search ID argument is zero when a virtual Start I/O is issued, but the search ID argument is dynamically read by the channel program before the search ID CCW is executed, then the real search ID uses the relocated search argument instead of the argument that was read dynamically. To avoid this problem, the record field of a search ID argument should not be set to binary zero if the search argument is to be dynamically read or if a search ID on record 0 is not intended. 612 assign alternate tracks for VM/370: System Logic and Problem Determination Guide a 3330, Timing dependencies in input/output devices function consistently under VM/370: 1. or programming do not The following telecommunication access methods (or the designated option) violate the restriction on timing dependency by using program-controlled interrupt techniques and/or the restriction on dynamically modified channel programs: • as • as • DOS Queued Telecommunications Access Method • OS Telecommunications Access Method (TCAM). • OS/VS Telecommunications Access Method (TCAM) earlier r and Level 5 if TCAM is not generated or the VM/370 option. Basic Telecommunications dynamic buffering option. Access Method (BTAM) with the Queued Telecommunications Access Method (QTAM). (QTAM). Level 4 or invoked with These access methods may run in a virtual=real machine with CCW translation suppressed by the SET NOTRANS ON command. Even if SET NOTRANS ON is issued r CCW translation will take place if one of the following conditions is in effect: • The channel program is directed at an a nondedicated device a virtual CTCA r a (such as a spooled unit record device r minidisk r or a console). • The channel program starts with a SENSE operation code. • The channel program is for a dialed terminal. • START I/O tracing is in effect. • The CAW is area. in page zero or beyond the end of the virtual=real (OS BTAM can be generated without dynamic buffering r in which case no virtual machine execution violations occur. However r the BTAM reset poll macro will not execute under VM/370 if issued from third level storage. For example r a reset poll macro has a NOP effect if executed from a virtual=virtual storage under VS1 which is running under VM/370.) 2. Programming that makes use of the PCI channel interrupt for channel program modification or processor signalling must be written so that processing can continue normally if the PCI is not recognized until I/O completion or if the modifications performed are not executed by the channel. 3. Devices that expect a response to an interrupt within a fixed period of time may not function correctly because of execution delays caused by normal VM/370 system processing. An example of such a device is the IBM 1419 Magnetic Character Reader. 4. The operation of a virtual block multiplexer channel is timing dependent. For this reason r the channel appears available to the virtual machine operating system r and channel available interrupts are not observed. However r operations on virtual block-multiplexing Section 5. Appendixes 613 devices should use the available features like Rotational Position sensing to enhance utilization of the real channels. On the System/370 Model 158 only, the Virtual Machine Assist feature cannot operate concurrently with the 7070/7074 compatibility feature (Feature #7117). Programs written for CPU model-dependent functions may not execute properly in the virtual machine under VM/370. The following points should be noted: 1. Programs written to examine the machine logout area do not have meaningful data since VM/370 does not reflect the machine logout data to a virtual machine. 2. Programs written to obtain CPU identification (via the store CPU ID instruction, STIDP) receive the real machine value. When the STIDP instruction is issued by a virtual machine, the version code contains the value 255 in hexadecimal ("FF") to represent a virtual machine. 3. Programs written to obtain channel identification (via the store Channel ID instruction, STIDC) receive information from the virtual channel block. Only the virtual channel type is reflected; the other fields contain zeroes. 4. No simulation of other CPU models is attempted by VM/370. Other characteristics that exist for a as follows: virtual machine under VM/370 are 1. If the virtual=real option is selected for a virtual machine, input/output operations specifying data transfer into or out of the virtual machine's page zero, or into or out of storage locations whose addresses are greater than the storage allocated by the virtual=real option, must not occur. The storage-protect-key mechanism of the IBM System/370 CPU and channels operates in these situations but is unable to provide predictable protection to other virtual machines. In addition, violation of this restriction may compromise the integrity of the system. The results are unpredictable. 2. VM/370 has no multiple path support and, hence, does not take advantage of the two-channel switch. However, a two-channel switch can be used between the IBM system/370 running a virtual machine under VM/370 and another CPU. 3. The DIAGNOSE instruction cannot be issued by the virtual machine for its normal function. VM/370 uses this instruction to allow the virtual machine to communicate system services requests. The Diagnose interface requires the operand storage addresses passed to it to be real to the virtual machine issuing the DIAGNOSE instruction. For more information about the DIAGNOSE instruction in a virtual machine, see the !~LllQ: ~y§~~~ f~~~~g~~~~~§ §~ig~. 614 VM/370: System Logic and Problem Determination Guide 4. A control unit normally never appears busy to a virtual machine. An exception exists when a forward space file or backward space file command is executed for a tape drive. subsequent I/O operations to the same virtual control unit result in a control unit busy condition until the forward space file or backward space file command completes. If the real tape control unit is shared by more than one virtual machine, a control unit busy condition is reflected only to the virtual machine executing the forward space file or backward space file command. When a virtual machine attempts an I/O operation to a device for which its real control unit is busy, the virtual machine is placed in I/O wait (nondispatchable) until the real control unit is available. If the virtual machine executed a SIOF instruction (rather than SIO) and was enabled for block-multiplexing, it is not placed in I/O wait for the above condition. 5. The CP IPL command cannot simulate self-modifying IPL sequences off dedicated unit record devices or certain self-modifying IPL sequences off tape devices. 6. The VM/370 spooling facilities do not support punch-feed-read, stacker selection, or column binary operations. Detection of carriage control channels is supported for a virtual 3211 only. 7. VM/370 does not support operator's console. 8. Programs that use the integrated emulators function only if the real computing system has the appropriate compatibility feature. VM/370 does not attempt simulation. The DOS emulator running under OS or OS/VS is not supported under VM/370. 9. The READ DIRECT and WRITE DIRECT instructions are not supported for a virtual machine. 10. The System/370 SET CLOCK instruction cannot be simulated and, hence, is ignored if issued by a virtual machine. The System/370 STORE CLOCK instruction is a nonprivileged instruction and cannot be trapped by VM/370; it provides the true TOD clock value from the real cpu. 11. The 1050/1052 Model 2 Data Communication system is supported only as a keyboard operator's console. Card reading, paper tape I/O, and other modes of operation are not recognized as unique, and hence may not work properly. This restriction applies only when the 1050 system is used as a virtual machine operator's console. It does not apply when the 1050 system is attached to a virtual machine via a virtual 2701, 2702, or 2703 line. 12. The pseudo-timer (usually device address OFF, device type TIMER) does not return an interrupt from a Start I/O; therefore, do not use EXCP to read this device. 13. A virtual machine device IPL with the NOCLEAR option overlays one page of virtual machine storage. The IPL simulator uses one page of the virtual machine to initiate the IPL function. The starting address of the overlayed page is either the result of the following formula: count control on the virtual 1052 virtual machine size -------------------- = starting address of the overlayed page 2 or the hexadecimal value 20,000, whichever is smaller. Section 5. Appendixes 615 14. To maintain system integrity, data transfer sequences to and from a virtual system console are limited to a maximum of 2032 bytes. Channel programs containing data transfer sequences that violate this restriction are terminated w~th an interrupt whose CSW status indicates incorrect length and a channel program check. A data transfer sequence is defined as one or more read or write CCws connected via chain data. The introduction of command chaining defines the start of a new data transfer sequence. li2~~: 15. When an I/O error occurs on a device, the System/370 hardware maintains a contingent connection for that device until a SENSE channel command is executed and sense data is recorded. That is, no other I/O activity can occur on the device during this time. Under VM/370, the contingent connection is maintained until the SENSE command is executed, but I/O activity from other virtual machines can begin on the device while the sense data is being reflected to the virtual machine. Therefore, the user should be 'aware that on a shared disk, the access mechanism may have moved during this time. 16. The mode setting for 7-track tape devices is maintained by the control unit. Therefore, when a virtual machine issues the SET MODE channel command to a 7-track tape device, it changes the mode setting of all 7-track tape devices attached to that control unit. This has no effect on virtual machines (such as OS or DOS) that issue SET MODE each time a CCW string is to be executed. However, it can cause a problem if a virtual machine fails to issue a SET MODE with each CCW string executed. Another virtual machine may change the mode setting for another device on the same control unit, thereby changing the mode setting of all 7-track tape devices attached to that control unit. 17. OS/VS2 is supported in uniprocessor mode only. 18. A shared system or one that uses discontiquous saved segments cannot be loaded (via IPL) into a virtual machine running in the virtual=real area. 19. The DUMMY feature for VSAM data sets is not supported and should not be used at program execution time. specifying this option on the DLBL command will cause an execution-time OPEN error. See X~LllQ: ~y§!~~ ~~§§~g~~ for additional information. The following restrictions apply to CMS, the conversational subsystem of VM/370: 1. CMS executes only on a virtual IBM system/370 provided by VM/370. 2. The maximum sizes in cylinders of CMS minidisks are as follows: ~i§~ 2314/2319 3330 series 3340 Model 35 3340 Model 70/3344 3350 Series 616 ~g~i~y~ £l!in~g~§ 203 246 349 682 115 £~~L!~A~ 200 404 348 696 not supported in native mode VM/370: System Logic and Problem Determination Guide 3. CMS employs the spooling facilities of VM/370 to perform unit record I/O. However, a program running under CMS can issue its own SIOs to attached dedicated unit record devices. 4. Only those OS and DOS facilities that are simulated by CMS can be used to execute OS and DOS programs produced by language processors under CMS. 5. Many types of object programs produced by CMS (and OS) languages can be executed under CMS using CMS's simulation of OS supervisory functions. Although supported in OS and DOS virtual machines under VM/370, the writing and updating of non-VSAM OS data sets and DOS files are not supported under CMS. 6. CMS can read sequential and partitioned OS data sets and sequential DOS files, by simulating certain OS macros. The following restrictions reside on OS disks: apply when CMS reads OS data sets tqat • Read-password-protected data sets are not read. • BDAM and ISAM data sets are not read. • Multivolume data sets are read as single-volume data sets. End-of-volume is treated as end-of-file and there is no end-of-volume switching. • Keys in read. • User labels in user-labeled data sets are bypassed. data sets with The following restrictions reside on DOS disks: keys are ignored apply when and only the CMS reads data is DOS files that • Only DOS sequential files can be read. CMS options and operands that do not apply to OS sequential data sets (such as the MEMBER and CONCAT options of FILEDEF and the PDS option of MOVEFILE) also do not apply to DOS sequential files. • The following types of DOS files cannot be read: --DOS DAM and ISAM files. --Files with the input security indicator on. --DOS files that contain more than 16 user label and/or data extents. (If the file has user labels, they occupy the first extent; therefore the file must contain no more than 15 data extents.) • Multivolume files are End-of-volume is treated end-of-volume switching. • User labels in user-labeled files are bypassed. • Since DOS files do not contain BLKSIZE, RECFM, or LRECL parameters, these parameters must be specified via FILEDEF or DCB parameters; otherwise, defaults of BLOCKSIZE=32760 and RECFM=U are assigned. LRECL is not used for RECFM=U files. read as as single-volume end-of-file. There files. is no Section 5. Appendixes 617 • CMS does not support the use of OS/VS DUMMY VSAM data sets at program execution time, since the CMS/DOS implementation of the DUMMY statement corresponds to the DOS/VS implementation. Specifying the DUMMY option with the DLBL command will cause an execution-time error. 7. Assembler program usage (lIP) is not supported. 1. If you intend to run VM/370 Release 1 and pre-PLC 9 Release 2 systems alternately, apply Release 1 PLC 14 or higher (APAR V1179) to your Release 1 system, to provide compatibility and to prevent loss of spool files in case of a warm start. Changes to the spool file format in PLC 9 of Release 2 require a cold start when switching between pre-Release 2 PLC 9 and post-Release 2 PLC 9 systems. 2. The number of pages used for input/output must not exceed the total number of user pages available in real storage. Violation of this restriction causes the real computing system to be put into an enabled wait state. 3. If you intend to define more than 73 virtual devices for a single virtual machine, be aware that any single request for free storage in excess of 512 doublewords (a full page) may cause the VM/370 system to abnormally terminate (ABEND code PTR007) if the extra storage i p not available on a contiguous page. Therefore, two contiguous pages of free storage must be available in order to log on a virtual machine with more than 73 virtual devices (three contiguous pages for a virtual machine with more than 146 virtual devices, etc.). contiguous pages of free storage are sure to be available only immediately after IPL, before other virtual machines have logged on. Therefore, a virtual machine with more than 73 devices should be the first to log on after IPL. The larger the real machine size, the lesser the possibility of this occurring. 4. of 16 binary For remote 3270s, VM/370 supports a maximum synchronous lines, minus the number of 3704/3705 Communications Controllers in NCP mode minus one (if there are any 3704/3705 Communications Controllers in emulation mode) • 5. If an I/O device (such as a disk or tape drive) drops ready status while it is processing virtual I/O activity, any virtual machine users performing I/O on that device are unable to continue processing or to log off. Also, the LOGOFF and FORCE commands are not effective because they do not complete until all outstanding I/O is finished. The system operator should determine which I/O device is involved and make that device ready once more. 618 of VSAM and the ISAM Interface VM/370: System Logic and Problem Determination Guide Program Figure 67 indicates those devices that are supported by a CMS machine. -, r I I Virtual IBM Device 3210, 3215, 3066, 3270 2314, 3330, 3350 2314, 3330, 3350 2314, 2319, 3340, 3350 2314, 2319, 3340, 3350 2314, 2319, 3340, 3350 2314, 2319, 3340, 3350 2314, 2319, 3340, 3350 2314, 2319, 3340, 3350 2314, 2319, 3340, 3350 2314, 2319, 3340, 3350 1403, 3211, 2540, 2501, 2540, 3525 2415, 2420, 3420 Virtual I Symbolic I Address 1 1 Name I 1052, ccu CON1 System console 3340 190 DSKO system disk 3340 191 2 DSK1 Primary disk (user files) 3330, ccu DSK2 Disk (user files) 3330, ccu DSK3 Disk (user files) 3330, 192 DSK4 Disk (user files) 3330, ccu DSK5 Disk (user files) 3330, ccu DSK6 Disk (user files) 3330, ccu OSK7 Disk (user files) 3330, 19E DSK8 Disk (user files) 3330, ccu DSK9 Disk (user files) 1443 3505 OOE OOC 000 181-4 Line Card Card Tape printer reader punch drives 3410, PRN1 ROR1 PCH1 TAP1-TAP4 I I Device Type (read-only) I I 1The device addresses shown are those that are preassembled into the I CMS resident device table. These need only be modified and a new I device table made resident to change the addresses. I 2The virtual device address (ccu) of a disk for user files can be I any valid system/370 device address, and can be specified by the I CMS user when he activates a disk. If the user does not activate I a disk immediately after loading CMS, CMS automatically activates I the primary disk at virtual address 191. L Figure 67. ~ Devices Supported by a CMS Virtual Machine Section 5. Appendixes 619 Figure 68 indicates its use. the DIAGNOSE codes used in VM/370 and gives a r-----IFunctionl I I Code IClassl DMKHVC Label Function --, DMKHVD I Label I Store extended identification code. HVDSTIDX Examine READCPC 000 G 004 C,E 008 G Execute VM/370 CP command. HVCONFN OOC G Pseudo-timer facility. HVCHRON 010 G Release virtual storage pages. HVCPGRL 014 G Manipulate input spool files. 018 G Standard DASD I/O. 01C F Clear I/O and MC recording areas. 020 G General virtual I/O interruptions. 024 G virtual device type inquiry. 028 G Dynamic TIC modification. 02C C,E,F Get DASD areas. 030 C,E,F Read a page of error recording data. Figure 68. brief explanation of data from real storage. address HCDSPRD HVCDISK of error HVDLRER HVCFAKE HVDDTYP HVCDCPM HVDEREP 1 recording HVDEREP2 Function Codes for DIAGNOSE Instruction (Part 1 of 2) -------1 section 5. Appendixes 621 r--------------------------------·------------------------, I Function I I I Code IClassl I I Function DMKHVC Module I I DMKHVD Module C,F Beads the system dump spool file. BVDRSDF C,E Beads the system symbol table. HVDRDSYM A,B,C any A,B,C G Dynamically directory. updates BVDDIRCT VM/310 the Reserved for IBM use. HVCEXIT Reserved for IBM use. HVCEXIT Reserved for IBM use. HVCEXIT Generate accounting cards. HVDACCT Saves 3104/3105 control program image. HVD3705 Enable or interruptions. HVDEXPA Virtual disable external console interface for 3210. Edit message settings. according to EMSG I I HVCGRAF HVCEMSG Provide virtual machine storage size. HVCSTOR Load, find, or purge a named system. HVCSYS start of functions specified by a user. HVCUSER ________________________________ ---J Function Codes for DIAGNOSE Instruction (Part 2 of 2) 622 VM/310: System Logic and Problem Determination Guide ZAP is a CMS command that modifies or dumps MODULE, LOADLIB, or TXTLIB files. It may be used to modify either fixed or variable length MODULE files. It is for use by system support personnel only. Input control records control ZAP processing. They can be submitted either from the terminal or from a disk file. Using the VER and REP control records, you can verify and replace data or instructions in a control section (CSECT). Using the DUMP control record, you can dump all or part of a CSECT, or an entire member of a LOADLIB or TXTLIB file, or an entire module of a MODULE file. The format of the ZAP command is: r----------------------------------------------------------------------, I I I ZAP I I {MCDULE } I LOADLIB [libname 1 ••• libname 3][ (option ••• [) ]] I TXTLIB I I I I I 2Eii2!!§ : I I r , r , I I 1~~!H1 IIE]!]l I I I I INPUT filenameilNOPRINTI IL __________________________________________________ I L .J L . J o_ _ _ _ _ _ _ _ _ _ _ _ _ I I I -.JI MODULE LOADLIB TXTL IB indicates the type of file that is to be modified or dumped. libname is the library name containing the member to be modified or dumped. You can specify one to three library names. The libname is valid only for LOADLIB and TXTLIB files. r ~~B~ , IPRINT I INOPRINTI L .J indicates that input to the ZAP service program is submitted through the terminal. If you specify TERM, the prompting message ENTER: is issued, and you can then enter input control records up to 80 characters long. If you specify PRINT with TERM, all output prints on the printer, but only error messages display at the terminal. If you specify NOPRINT with TERM, nothing prints on the printer. All output except control records displays at the terminal. r INPUT filename , IPRINT I I NOPRINT I L .J specifies that input is submitted from a disk file, filename. This file must have a filetype of ZAP, and must be a fixed 80-byte sequential file residing on any accessible device. If you specify PRINT with INPUT filename, all output produced by the ZAP service program prints on the printer. In addition, section 5. Appendixes 623 commands and control records in error and error messages display at the terminal. If you specify NOPRINT with INPUT filename, nothing prints on the printer. All output displays at the terminal. The following combinations: table shows the resulting output of valid option r---------'------------------------------------------'---.------, 1 OPTIONS 1 PRINT 1 NOPRINT 1 1-------,-----------------------------------------,-----I I I Commands and control records 1 1 1 INPUT I 1 I I Everything on the in error and error messages 1 on the terminal. Everything 1 to printer. I 1 terminal. Nothing on the printer. 1 1 1 1------·_-------------------------------------1 I I Only error messages on the I Everything except controll I terminal. Everything on the 1 records on the terminal. 1 IL _ _ _ _ _ _ _ _ _ _I_ _ _Printer. Nothing on_ _the printer. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _1 ___ _______ _ _ _._ _ _ _----11 1 TERM ZAP INPUT CONTROL RECORDS Seven types of ZAP control records VERIFY, REP, comment, and END. exist: NAME, DUMP, BASE, VER or ZAP control records are free form and need not start in position one of the record but the ZAP program can accept only 80 characters of data for each control record. Separate all information by one or more blanks. All address fields including disp (displacement) fields in VER and REP control records must contain an even number of hexadecimal digits, to a maximum of six digits (OD, 02C8, 014318). Data fields in VER and REP control records must also contain an even number of hexadecimal digits, but are not limited to six digits. If you wish, you example, 83256482 or operation. may separate the data anywhere by commas (for 8325,6482). The commas have no effect on the The program sets the NOGO switch on if a control record is found to be in error. A file cannot be modified once the NOGO switch is turned on. The next valid NAME record turns the NOGO switch off. This means that if the control record is the NAME record, all succeeding records are ignored until the next NAME, DUMP, or END record. For any other error, only REP control records that follow are ignored. The DUMP control record resets the NOGO switch off. The DUMP control record must not immediately precede a BASE, VER, or REP control record. A NAME control record must precede the BASE, VER, and REP control records (if any) that follow a DUMP control record. The DUMP control record allows you to dump a portion or all of a specified control section, or the complete member or module. The format of the output of the dump is hexadecimal with an EBCDIC translation of the hexadecimal data. 624 VM/370: System Logic and Problem Determination Guide The DUMP control record is optional. record is: r------- The format of the DUMP control "----------, I I I I r I DUMP {membername} Icsectname [startaddress [endaddress]] I I I modulename IALL I I J L I I IL _____________________________________________________________- - - - JI , membername is the name of the member to be dumped, or the member that contains the CSECT(s) to be dumped. This member must be found in one of the libraries specified in the ZAP command line. However, if the library is a CMS TXTLIB, its directory does not contain member names. Therefore, the program ignores the member name (although you must specify it), and the program searches for the csectname (which you must specify). modulename is the name of the module to be dumped, or the module that contains the CSECT(s) to be dumped. If you specify a module that has no loader table, the program dumps the entire module. csectname is the name of the control section that is to be dumped. If you do not specify csectname, the program dumps only the first CSECT. The csectname is required for CMS TXTLIBs, optional for OS TXTLIBs, LOADLIBs, and MODULE files. (See the discussion of csectname under "Name control Record.") You must not specify csectname for a module created with the NOMAP option. ALL specifies to the program to dump all CSECTs within the specified member or module. You can specify ALL for MODULE files, LOADLIBs, and OS TEXTLIBs, but not for CMS TXTLIBS. If you wish to dump all the CSECTs in a member of a CMS TXTLIB, you must issue a separate DUMP control record for each CSECT. startaddress is the location within the specified CSECT where the dump is to begin. lhis must be two, four, or six hexadecimal digits. The start address is the displacement from the beginning of the CSECT. For example, if you wish to start dumping at address 08 in a CSECT that begins at location 400, you specify start address or 08, not 0408. endaddress is the last address to be dumped. This must be two, four, or six hexadecimal digits. If you specify no address, the program dumps the rest of the CSECT. Note that start and end addresses apply only when you specify a csectname. If the file to be dumped contains undefined areas (such as a DS in a TXTLIE member), the hexadecimal portion of the dump contains blanks to indicate that the corresponding positions are undefined. section 5. Appendixes 625 The NAME control record specifies the member or module and CSECT that contain the data to be verified or replaced by the ZAP operation. The format of the NAME control record is: r---------------------------------------------------------------------, I I I I IL NAME { membername } [csectname] modulename I I _ _ _ _ _ _ _ _ _ _ _ _ _ _ - - 1I membername } { modulename is the member or module that you want to be searched for the desired CSECT. csectname is the name of the desired control section. You must specify csectname if the CSECT you wish to modify is in a eMS TXTLIB (that is, TXTLIB created by the TXTLIB command from CMS TEXT decks that do not have a NAME card following the END card). The directory of a CMS TXTLIB contains only CSECT names and no member names. The CSECT name specified in the NAME record is compared with CSECT names in the directory. If a CSECT match is found and no member name match is found, the member selected is the one that contains the CSECT name. The csectname is optional if the CSECT you wish to modify is a LOADLIB or an OS TXTLIB (that is, a TXTLIB created by the TXTLIB command from CMS TEXT decks that have a NAME card after the END card). The dictionaries of the specified libraries are searched for the member name and the member is then searched for the CSECT name, if you specified one. If you do not specify csectname for a LOADLIB or an OS TXTLIB, the program uses the first control section. The csectname is optional for a MODULE file. The module named in the NAME control record is located and, if you specified csectname, the first record is read to determine the number of records in the module and the availability of a loader table, which the program can then search for the csectname. If you do not specify csectname, the program uses the beginning location of the module. You are not allowed to specify csectname if the module was created with the NOMAP option. The NAME control r(~cord must precede the BASE, VER, and REP control records. If it does not, the program sets the NOGO switch on. The BASE control record adjusts displacement values for subsequent VER or REP control records for a CSECT whose starting address is not location zero in an assembly listing. The format of the BASE control record is: 626 VM/370: System Logic and Problem Determination Guide ----------------, ..-I I I BASE I I I address --,,-------------' L address is the starting address of the CSECT. The address must be two, four, or six hexadecimal digits. For example, for a CSECT starting at location 400, you would specify the BASE 0400 in the BASE control record. If a subsequent VER card requests verification of location 0408, the BASE of 0400 is subtracted from 0408, and the program verifies location 08 in the CSECT. This example applies if you specify TXTLIB, LOADLIB, or MODULE and the module map is present. However, if no module map is present for a MODULE file (that is, the module was generated with the NOMAP option), then all operations are performed as if the BASE address is location O. For example, if you specify a BASE of 400 and the address you wish to inspect or modify is 408, then you must specify 08 and not 408 in REP and VER control records. The address in this case is from the start of the module. If you do not specify csectname in the NAME control record, you cannot specify any BASE value other than 00. The BASE control record is optional. See the discussion ~nder "VER or VERIFY control Record." If specified, the BASE control record must follow the NAME record, but it need not follow the NAME record immediately. For example, you could have the following sequ~nce of control records: NAME, VER, REP, BASE, VER, REP. The VER control record requests verification of instructions or data within a CSECT. If the verification fails, the program does not perform a subsequent REP operation until it encounters another NAME control record. The VER control record is follow a single NAME record. optional. More than one VER record can The format of the VER control record is: ..--- ------, I :{ VERIFY } VER disp I I I I data I L disp . --' is the hexadeciaal displacement of the data to be inspected from the start of the CSECT, if you did not submit a BASE control record for this CSECT. If you did submit a BASE control record, then disp is the actual location of the data. The disp must be two, four, or six hexadecimal digits. This displacement does not have to be aligned on a full word section 5. Appendixes 621 boundary. If this displacement value is outside the limits of the CSECT specified by the preceding NAME control record, the VERIFY control record is rejected. data is the data against which the data in the CSECT is to be compared. This must be an even number of hexadecimal digits. For example, if the location you wish to verify is 3CC, and the CSECT begins at location 2BO, you can either issue: BASE 02BO VER 03CC data or you can omit the BASE control record, subtract the CSECT start address from the address of the data, and issue: VER 011C data This also applies record. to the disp operand of the REP control The REP control record modifies instructions or data at the specified location within the CSECT that you specified in a preceding NAKE control record. The data specified in the REP control record replaces the data at the CSECT location specified by the disp operand. This replacement is on a "one-for-one" basis; that is, one byte of data defined in the control record replaces one byte of data at the location that you specified. If the replacement fails, the program does net perform additional REP operations until it encounters another NAME control record. The REP control record is follow a single NAME record. optional. More than one REP record can The format of the REP control record is: -------, r I I I I disp data I REP L I _________________________ _ disp is the hexadecimal displacement of the data to be replaced from the start of the CSECT, if you did not submit a BASE control record for this CSECT. If you did submit a BASE control record, then disp is the actual location of the data. The disp must be two, four, or six hexadecimal digits. This displacement need not address a fullword boundary. If this displacement value is outside the limits of the CSECT being modified, the program does not perform the replacement operation. data is the data that is to replace the data in the must be an even number of hexadecimal digits. Although you do not have to data, you should do so to make sure you expect it to be. !Q1~: 628 CSECT. This verify a location before replacing that the data being changed is what VM/370: System Logic and Problem Determination Guide The ZAP program ignores comment control records. If the PRINT option is in effect, the program prints the comments. The format of a comment record is: r----------------------------------------------------------------------, I I I I * I I comment L _____________________________________________________________________ -J You must follow the asterisk with at least one blank. The END control record ends ZAP processing. The END record is required and must be the last control record. The format of the END control record is: r I I END IL ________________________________________________ _ SPECIAL CONSIDERATIONS FOR USING THE ZAP SERVICE PROGRAM Before you use the ZAP command against MODULE files, you can MODMAP command to determine whether a module map exists and contains. use the what it When a ZAP input file has more than one pair of VER and REP control records and a VER control record (other than the first) fails, you must remove the records prior to the failing record and correct the error before you issue the ZAP command again. Otherwise, the file being modified returns to its original status. If you issue a REP control record against a file that contains an undefined area (for example, a Define storage area) within the REP data field and do not issue a VER control record prior to the REP control record, the bytes prior to the undefined area, if any, are modified and all the bytes after the undefined area are not modified. The program prints warning message DMSZAP248W. section 5. Appendixes 629 Appendix I tells you how to apply Program Temporary Fixes (PTFs) and updates to an installed VM/310 system. It contains information about the following: • supporting a VM/310 system • Updating modules using the VMFASM EXEC procedure • Using the VMFMAC EXEC procequre to • using VMFLOAD to generate a new nucleus • The loader • Using the GENERATE EXEC procedure to generate nucleus, or to load IPCS • Using the VMFBLD EXEC procedure to build a new nucleus • Using the CMSGEND EXEC procedure to generate a CMS module • Using the ASMGEND EXEC procedure to generate the Assembler • Recommended procedures for updating VM/310 updat~ macro libraries a new CP, CMS, or RSCS The multiple virtual machine environment created by VM/310 permits support of both hardware and software to be done concurrently with other installation work. virtual machines can be used to: • • • • • • Generate and test new systems Apply and test PTFs Run hardware diagnostics Retrieve and examine VM/370 ABEND dumps and error recordings Examine portions of real VM/310 storage Trace the execution of a system in a virtual machine Before installing VM/310, you should develop an account support plan with the IBM FE representative. Appropriately configured virtual machine entries should be included in the VM/310 directory for the service representative. Two virtual machines, with userids CE and MAINT, are defined for these representatives in the VM/310 directory distributed with the starter system. Using the VM/310 update facility, you can update files with several levels of updates and/or any number of program temporary fixes (PTFs). Procedures are supplied for assembling the updated source code to produce a uniquely identifiable text file. The file has a unique section 5. Appendixes 631 filename and records that identify the libraries, and source statements. origin of the updates, macro Procedures are provided for generating load files fr~m various object modules, and for generating MACLIB files from various COpy and MACRO files. The update procedure involves a file naming convention for update and text files, a set of programs to support the processing, and a set of EXEC procedures to process the files. The update procedures and programs supplied with VM/370 are: • VMFASM • • • VMFLOAD CMSGEND GENERATE GENERATE IPLDECK • GENERATE SRVCPGM GENERATE IPCS VMFMAC CMS UPDATE Command • • • • Incorporates PTFs and/or updates and creates a new text file Generates a new CP, CMS, or RSCS nucleus Generates a new CMS module Generates a new VM/370 system (CP, CMS, or RSCS) Generates a new standalone version of a service program on disk Punches the service programs on cards Loads the IPCS modules onto the IPCS disk Generates a new CP, CMS, or RSCS macro library Updates modules All modules prefaced by the letters DMK are CP modules. There are two kinds of CP modules: those that are part of the CP nucleus (these modules are contained in the CPLOAD EXEC file) and those that are not part of the CP nucleus (service programs that execute either standalone or under CMS). The programs that execute standalone are DMKDDR, DMKDIR, and DMKFMT. If you apply a PTF to these modules and create a new text deck, use the GENERATE EXEC to create a new standalone file. 632 VM/370: System Logic and Problem Determination Guide The service programs that execute under CMS are: • • • • DASD Dump Restore Program (module DMKDDR) Directory program (module DMKDIR) VMFDUMP, the virtual dump program (module DMKEDM) NCPDUMP, the 3704/3705 dump program (module DMKRND). If you apply updates to these modules, use the CMSGEND EXEC to create a new CMS module. The module name to specify is DDR, DIRECT, NCPDUMP, or VMFDUMP, respectively. CMS cannot execute the Format/Allocate program (mod ule DMKFMT) and the IBCDASDI Virtual Disk Initialization program (module IBCDASDI). If you apply a PTF to any DMK module other than these six service programs, you must reload CP (using the VMFLOAD command). UPDATING A MODULE The following discussions assume that areas containing the source code for CP and CMS are added to the appropriate virtual machine configurations. Source code for the CMS system is included on the CMS2 tape; source code for CP is included on the CP2 tape. These tapes are distributed by the Program Information Department (PID). VM/370 has update procedures to incorporate changes (additions, deletions, or corrections) into an existing module, macro, or copy file. For example, if you apply updates to the DMKVAT module, the VMFASM update procedure: • Locates the DMKVAT source file. It is the unmodified Assembler language source code that is distributed with the VM/370 system. • Locates the update control file for DMKVAT. The control file name is specified on the VMFASM command. The control file can have any filename, but must have a filetype of CNTRL. It contains records indicating how to apply the updates. • Applies the updates to tqe specified source (in this case, DMKVAT) and gives the updated source a temporary name by concatenating a $ (dollar sign) to the first seven characters of the filename (in this case, the temporary filename is $DMKVAT). • Puts macro library names specified in the control file into the proper Assembler library list. (The macro libraries required at assembly time are specified in a MACS record in the control file.) • Assembles the updated source file ($DMKVAT) and creates an updated object deck. The object deck filetype is derived from information found in the control file. The filename of the updated object file is the same as that of the original source, DMKVAT. As the VMFASM update procedure progresses from one step to the next, informational or error messages are displayed. To more fully understand how the update procedures operate, you need to know what a control file contains, and how it is handled. The following discussion provides this information. Section 5. Appendixes 633 CONTROL FILES The CMS UPDATE command and the VMFASM EXEC procedure use control files. You may have one or more control files to specify various combinations of updates and macro libraries to be used at different times. A control file contains the following types of records: • The MACS Record -- This record contains the names of macro libraries to be used at assembly time. A MACS record is required for a control file used by the CMS UPDATE command; it is optional for a control file used by the VMFLOAD EXEC procedure. A control file must not contain more than one MACS record. If a MACS record is included r it must precede any other records except comments. Up to eight libraries may be specified in the MACS record (if space permits). A MACS record has the following format: uplevel MACS libl lib2 lib3 ••• The uplevel. field is usually filetype of the updated file. • TEXT; it is not used to generate th~ Update identification records--These records identify updates that are to be applied to a particular source filer if such a file exists. An update identification record has the following format: uplevel upid where uplevel is an update level identifier that generates a filetype for the new file (the new filetype uniquely identifies the updated source file). The field r upid r is the update identification; it can he from one to four characters long. This update identification is concatenated with the prefix UPDT to identify the filetype of the direct update to be applied. The filename must be the same as the name of the file to be updated. For example r if an update identification record for DMKVAT is: TEXT NEW1 the update file is called DMKVAT UPDTNEW1.The update level identifier is TEXT. • AUX file identification records--These records contain the names of auxiliary files (AUX files) r which in turn contain a list of filetypes of update files to be applied to a particular source file. An auxiliary file identification record has the following format: uplevel AUXnnnn where uplevel is an update level identifier that generate~ the filetype of the updated source file. The string r nnnnr 1S an identification string that can be from one to four characters long. This identification string, with the prefix AUX, is the filetype of the auxiliary file that contains the list of updates to be applied. The filename of the auxiliary file is the same as the filename of the source file to be updated. For example, if an AUX file identification record that contains a list of updates for DMKVAT is: TEXT AUXnnnn then the auxiliary file called DMKVAT AUXnnnn contains the filetypes of the update files that are to be applied. These update files have the same filename as the source file to be updated. 634 VM/370: System Logic and Problem Determination Guide • Commen ts-- An asterisk (*) in identifies a comment record. the first column of the record Note: Control file records in the format that was used under VM/370 Release 1 or 2 are still accepted under Release 3. Por example, an AUX file identification record in the format TEXT nnnn AUX is still accepted by the update procedures. A control file can have many update identification records, AUX file identification records, and comments, but can have only one MACS record. The control file can have any filename. Note, however, that VM/370 updates from IBM normally use the following special control files: • A control file for CP source, copy, and macro updates is called DMKR30 CNTRL. The DMKR30 CNTRL file contains the following records: - TEXT - TEXT • A control file for CMS source updates is called DMSR30 DMSR30 CNTRL file contains the following records: - TEXT - TEXT • The MACS CMSLIB OSMACRO AUXR30 DMSM30 AUXM30 A control file for assembling the NCPDUMP source is called NCPR30 CNTRL. The NCPR30 CNTRL file contains the following records: - TEXT - TEXT • CNTRL. A control file for CMS macro and copy updates is called CNTRL. The DMSM30 CNTRL file contains the following record: - COpy • MACS DMKMAC CMSLIB OSMACRO AUXR30 MACS OSMACRO DMKMAC CMSLIB AUXR30 A control file for assembling RSCS source, copy, and macro updates is called DMTR30 CNTRL. The DMTR30 CNTRL file contains the following records: - TEXT - TEXT MACS DMTLOC DMTMAC AUXR30 PTF updates are distributed in card or magnetic tape form, cr as APAR answers typed on coding forms. In any case, a CMS file (with the correct filename and filetype) must be created on a disk to contain the update. The disk must belong to the user (userid MAl NT) who is responsible for updating VM/370. The disk may be the CP or CMS source disk, but it is usually a separate disk. section 5. Appendixes 635 A suggested virtual machine configuration for updating a 2314 system is: USER MAINT CPCMS 720K 16M BCEG ACCOUNT (install ation defin ed) OPTION ECMODE REALTIMER CONSOLE 009 3215 SPOOL OOC 2540 READER A SPOOL OOD 2540 PUNCH A SPOOL OOE 1403 A MDISK 190 2314 035 110 CPV 3LO MR MDISK 191 2314 019 010 CPV3LO WR MDISK 194 2314 145 058 CPV3LO MR MDISK 199 2314 034 001 CPV3LO WR MDISK 193 2314 001 050 USERDl MR MDISK 294 2314 051 050 USERDl MR MDISK 393 2314 001 110 USERD2 MR MDISK 394 2314 001 110 USERD3 MR MDISK 390 2314 101 003 USERDl MW MDISK cuu 2314 000 203 yyyyyy MW READ READ READ READ READ READ READ READ READ where cuu and yyyyyy are the address and label of your system residence volume defined in your DMKSYS module. A suggested virtual machine configuration for updating a 3330 system is: USER MAINT CPCMS 720K 16M BCEG ACCOUNT (installation defined) OPTICN ECMODE REALTIMER CONSOLE 009 3215 SPOOL OOC 2540 READER A SPOOL OOD 2540 PUNCH A SPOOL OOE 1403 A MDISK 190 3330 030 076 CPV3LO MR MDISK 191 3330 016 007 CPV 3LO WR MDISK 194 3330 106 044 CPV3LO MR MDISK 199 3330 029 001 CPV3LO WR MDISK 193 3330 001 030 USERDl MR MDISK 294 3330 031 030 USERDl MR MDISK 393 3330 061 060 USERDl MR MDISK 394 3330 121 060 USERDl MR MDISK 390 3330 181 002 USERDl MW MDISK cuu 3330 000 404 YYYYYI MW READ READ READ READ READ READ READ READ READ where cuu and YYIIYI are the address and label of your system residence volume defined in your DMKSYS module. 636 VM/370: System Logic and Problem Determination Guide A suggested virtual machine configuration for updating a 3340 system is: USER MAINT CPCMS 720K 16M BCEG ACCOUNT (installation defined) OPTION ECMODE REALTIMER CONSOLE 009 3215 SPOOL OOC 2540 READER SPOOL 000 2540 PUNCH SPOOL OOE 1403 A MDISK 190 3340 048 203 CPV3LO MDISK 191 3340 026 015 CPV3LO MDISK 194 3340 251 098 CPV3LO MDISK 199 3340 046 002 CPV3LO MDISK 193 3340 001 090 USERD1 MDISK 294 3340 031 090 USERD1 MDISK 393 3340 061 180 USERDl MDISK 394 3340 121 180 USERD1 MDISK 390 3340 181 006 USERD1 MDISK cuu 3340 000 348 yyyyyy A A MR WR MR WR MR MR MR MR MW MW READ READ READ READ READ READ READ READ READ where cuu and yyyyyy are the address and label of your system residence volume defined in your DMKSYS module. The entries in the preceding VM/370 directory, with the exception of the 193, 294, 393, 394, and 390 virtual disks, are in the 2314, 3330, and 3340 VM/370 directories supplied with the starter system, and should be included in your VM/370 directory, because IBM uses them for support. The contents of the preceding virtual disks are: Disk fQ!!~~!!!:2 Current CMS system disk Work area 191 19i~ CP and RSCS text retention 199 The 191 minidisk (work area) 193 CMS PTFs, updates, and updated text decks (object modules) and updated text decks (object 294 CP and RSCS PTFs, updates, modules) 393 CMS source and macros 394 CP and RSCS source, macros, and copy files 390 CMS test nucleus area cuu CP system residence device, or a replica of it, for test purposes 190- These·virtual disks are shown in Figure 69. You should apply all distributed updates. Once you create the appropriate files, you should access the disks containing the CP, eMS, or RSCS source files and update procedures, and apply the updates. To apply the IBM distributed updates to an existing source file, use the VMFASM EXEC procedure. To apply the IBM distributed updates to a copy or macro file, use the VMFMAC EXEC procedure. If you update a copy or macro file, you should use the VMFASM EXEC procedure to reassemble the module(s) that contain that copy or macro file. section 5. Appendixes 637 Figure 69. system support plan Use the VMFASM EXEC procedure to update a specified source file according to entries in a control file, and to assemble the updated source file. VMFASM invokes the eMS UPDATE command. The format of the VMFASM command is: 638 VM/370: System Logic and Problem Determination Guide r----------------------------------------------------------------, VMFASM I fn 1 fn2 [ (options ••. [) ]] I I I I QE~i2n§: I I,. ,,. ,,. , I IDISK I ITERM I 11!~± I I IE~!]!:I I!!Q!:lH!~1 INOLISTI .J L .J L J I L I I I I I,. I , ,. , , IDECK "RENT I [EXP] [XREF] I , I !!QQ~~!i I , !tQ1!]!1 , , I L .J L .J I ____________________________________________________________ -.J fnl is the filename of the source file to be updated. fn2 is the filename of the control a filetype of CNTRL. file. The control file must have QE!i9n§: DISK places the LISTING file on a virtual disk. EB!!1 writes the LISTING file to the printer. TERM writes the diagnostic information on the SYSTERM data set. The diagnostic information consists of the diagnosed statement followed by the error message issued. !!Q!:§~~ suppresses the TERM option. 1!~1 produces an Assembler listing. NOLIST does not produce an Assembler listing. DECK writes an object module on the device specified on the FILEDEF statement for PUNCH. !QQ]£!i suppresses the DECK option. RENT checks the program for a possible violation cf program reenterability. Code that makes the program nonreenterable is identified by an error message. !!QE§]1 suppresses the RENT option. EXP expands printing of certain macros which check for the SUP parameter issued via the SYSPAEM option of the assembler. XREF causes the XREF(SHORT) invokes the assembler. option to be ~Q~g: invoked VMFASM only accepts the non-defaulted options. entered are ignored and the defaults are used. The control file contains records that identify applied and the macro libraries, if any, needed to when VMFASM All other options the updates to be assemble the source section 5. Appendixes 639 program. The updates are applied starting with the last update file in the control file and in sequence up to the first update file (or the update file immediately following the HACS record). Updates identified by auxiliary files are applied starting with the last update in the auxiliary file and proceeding in sequence up to the first. For example, a control following two records: TEXT IBHl HACS DHKHAC AUX2000 file CHSlIB named UPDATEl CNTRl contains the OSHACRO An Assembler language source file is named DHKVAT ASSEHBlE. An auxiliary file named DHKVAT AUX2000 contains a list of filetypes (NEW2 and NEW1) with NEW2 the first entry and NEWl the last. The two update files are named DHKVAT NEWl and DHKVAT NEW2. These are the files identified by the auxiliary file, DHKVAT AUX2000. Assume these files contain IBM-supplied updates to DMKVAT, such as inserted, deleted, or replaced source statements and the appropriate control statements. The update control statements are described in the !~LllQ: f~§ fQmm~~~ ~ll~ ~~££Q ~gtg£g~~g with the CMS UPDATE command. To update DMKVAT, you enter the command: VMFASH DMKVAT UPDATEl VMFASM does the following: • VMFASM locates the DMKVAT ASSEMBLE and UPDATEl CNTRl files. • The UPDATEl CNTRL file is processed from entry found is IBMl AUX2000. • VHFASM tries to locate the file named DHKVAT AUX2000 by searching all accessed disks. • When VHFASH locates the DHKVAT AUX2000 file, it processes it from the bottom up. The first entry found is NEW1. • VMFASM tries to locate the the update file named DMKVAT NEil. When it finds DMKVAT NEW1, VHFASM applies the updates that are in DMKVAT NEWl to the DHKVAT ASSEHBLE file, and creates a new file called $DMKVAT ASSEMBLE. • Next, VMFASH processes the NEW2 entry in the DMKVAT AUX2000 file. When VMFASM locates the update file DMKVAT NEW2, it applies the updates to the updated ASSEMBLE file ($DHKVAT). • Because there are no more filetypes listed in the DMKVAT AUX2000 file, VMFASH reads the next control record in the UPDATEl CNTRl file. In this case, it is the MAes record. 640 the bottom up. VM/370: System Logic and Problem Determination Guide The first • After entering the macro library names into the appropriate Assembler library updated ASSEMBLE file ($DMKVAT). • The UPDATE command then stacks in the console read buffer the uplevel (update level identifier) associated with the last update applied. If there were no updates, it stacks the uplevel associated with the MACS control record and the names of the macro libraries specified in the MACS record. VMFASM then reads the stacked lines and concatenates the uplevel (if it is not TEXT) to the characters TXT to form the filetype of the assembled updated source. that are on the MACS record lists, VMFASM assembles the An update level identifier of TEXT causes special handling in the VMFASM EXEC procedure, whether or not an update is used with it. A name of TEXT is used as the object module filetype without level identification concatenation. Thus, TEXT becomes the filetype. VMFASM places the macro library names that were specified en the MACS record in the Assemble library list (via the CMS GLOBAL command) so that those libraries can be used when the updated source file is assembled. In this example, the last (and only) update applied was identified as IBM1 AUX2000. The file identification for the updated source is DMKVAT TXTIBM1. The updated source is assembled using the macro libraries DMKMAC, CMSLIB, and OSMACRO. You may want, on occasion, to have entries in a control file that specify an update level identifier but no update. A record of the following format, for example, is allowed: NAMES because the control file is used for loading object modules (text decks) as well as for updating input files. If updates are not continues, if possible. found, a message is issued and processing If you wish to apply your own update to VM/370 (for example, if you wish to expand the accounting routines), you follow the same procedure described for applying IBM-supplied updates. You create the update file. You can name the update file in either of two ways. If you are going to identify the update file directly in the control file, use the form: DMKACO UPDTupid where DMKACO is the filename of the accounting module expand, and upid is the identification for the filetype. you might call your update file: you wish to For example, DMKACO UPDTFIXl section 5. Appendixes 641 The second way to identify your update is via an auxiliary file. If you use an auxiliary file, you use the following form to name your upda te file: DMKACO ft where DMKACO is the filename expand and ft is any filetype. of the accounting routine you wish to For example, you could have two update files called: DMKACO NEWl DMKACO NEW2 When you decide to use an auxiliary control file, it must have a name in the form DMKACO Auxnnnn For example, assume you have an auxiliary control file called: DMKACO AUXllll This AUX files) : file has the following entries (the filetypes of your update NEW2 NEW 1 Next, you must create a control file to identify all IBM-supplied updates to the module you are changing and your own updates. You must apply the IBM-supplied updates first. Assume there are IBM-supplied updates in an auxiliary file called: DMKACO AUXR30 and that your own updates are those used as examples in the preceding paragraphs. Then, you need your own control file, identified as: fn CNTRL It can have any filename, but its filetype example, the control file is called: must be CNTRL. For Lec CNTRL and it has the following records: TEXT MACS DMKMAC LOCAL FIXl SPEC AUXllll IBM 1 AUXR30 To apply the updates to DMKACO, issue the command: VMFASM DMKVAT LOC The VMFASM procedure handles the update as follows; it: • Locates the source file, DMKACO. • Locates the control file, LOC CNTRL. • Reads the control file, last line first (IBMl AUXR30). 642 VM/370: System Logic and Problem Determination Guide this • Locates the IBM-supplied auxiliary file, DMKACO AUXR30. • Reads the DMKACO AUXR30 auxiliary file from bottom to top and applies the IBM-supplied updates to DMKACO, naming the updated source $DMKACO ASSEMBLE. • Reads the next entry in the control file • Locates your own auxiliary file, DMKACO AUXllll. • Reads the last entry (NEW1), locates the update file DMKACO NEW1, and applies the update to the updated source $DMKACO. • Reads the next entry in your auxiliary file (NEW2), locates the corresponding update file DMKACO NEW2, and applies it to the updated source $DMKACO. Processing for your auxiliary file is now complete. • Reads the next entry in the control file • Locates the directly-identified update file, DMKACO UPDTFIX1. • Applies the DMKACO UPDTFIXl updates to the updated source ($DMKACO). • Reads the next control record, the MACS record. • Issues the GLOBAL command for the macro libraries MACS record (DMKMAC MAC LIB). • Assembles the updated source file, $DMKACO ASSEMBLE. • Names the object module DMKACO TXTLOCAL. The filetype is derived by concatenating the prefix (TXT) and the uplevel of the last upda te applied (LOCAL). (SPEC AUXllll). (LOCAL FIX1) • identified on the If you create a new object module for a VM/370 module, you must also reconstruct the CP, CMS, or RSCS nucleus using the VMFLOAD service program. Or, if the file is a part of a CMS command module, use the CMSGEND procedure to generate a new module utilizing the new object code. See Appendix D to determine whether the CMS nucleus or some other MODULE files must be generated again because of your update. When you use CMSGEND to create a new module, you must change the filetype of the object deck to TEXT (if it is not already TEXT) before issuing the CMSGEND command. After the CMSGEND processing is complete, you can change the filetype of the object deck back to what it was before. Note that CMSGEND renames the existing module to "fname MODOLD" before creating the updated module. This ensures that any users currently using the CMS system do not have their processing interrupted by the updating of modules, because the SSTAT (system status table) of the loaded system is still pointing to the area on the system disk occupied by the renamed modu1e. When the system is reloaded, the SSTAT points to the updated module, and the old module can be erased. section 5. Appendixes 643 VMFASM invokes the UPDATE command, which produces two output files that indicate which updates were applied. The file fn UPDATES lists the names of update (fn) and the file files that were applied to the source file fn UPDLOG lists the actual updates that were applied to the source file (fn) and error messages. Both of these files are included in the LISTING file, and precede the program source statements. Also, the file (fn UPDLOG) precedes the object code in the text file. 644 VM/370: System Logic and Problem Determination Guide I!HH~! A ABEND (2~~ abnormal termination (ABEND» ABEND macro 17 abnormal termination (ABEND) 11 CMS 16 codes 559 collect information 41 printing dumps 41 procudure when occurs 17 reading dumps 41 reason for 16,41 register usage 43 CP 12 codes 542 collect information 36 printing dump from tape 35 procedure when occurs 12 reading dumps 35 reason for 12,35 register usage 36 save area conventions 36 debugging procedures 15 dumps 34 messages 19 operating system 18 problem types 21 virtual machine (other than CMS) 18 ACCESS command 136 access methods BDAM 193 restrictions 135 BDAM/QSAM 193 BPAM 193 for non-CMS environments 193 OS 193 supported by CMS 134 VSAM 193 CMS support for 193 accessing a virtual disk 182 the file system 182 accounting card, processing 97 active disk and file storage management 182 acti ve disk table (ADT) 182 used in disk management 182 active file table (AFT) 182 used in file management 182 ADSTOP command 480 allocated free storage, types of 185 storage, releasing of 188 allocating free storage nucleus 121 user 120 allocation cylinder 81 management 76 of DASD space 94,226 of nucleus free storage 188 of storage 225 of user free storage 187 page frame, free storage 85 slot 80 AMSERV function, execution of 193 analyzing the problem 12 appendixes 587 applying PTFs 631 areas nucleus constant (NUCON) 41 program, user and transient 126 assist feature, virtual machine 49 attaching a real device 87 a virtual machine to the system 85 virtual machine, to the syst~m 229 attributes, spool file 97 AXS system service task, program organization 241 B batch CMS 213 modules used in 215 BDAM CMS support of 193 restrictions 135 BDAM/QSAK, CMS support of 193 BEGIN command 482 binary synchronous line enabling/disabling, remote 3277 error recovery, 3270 224 bisync lines data formats 75 I/O programs for 74 BPAM, CKS support of 193 224 C called routine modifications to system area 128 pSW fields 128 register contents 128 restoration 128 register contents, when started 167 return location 126 returning 126 start-up table 128,167 caller, returning to 167 calling DMKFREE for a large block 85 for a subpool 84 DKKFRET for a large block 85 for a subpool 85 calls SVC invalid 125 Index 645 simulation by OS and DOS/VS macro 125 carriage control characters, C~S 184 CCH (channel check handler) 100 overview 105 subroutines channel control 105 channel error analysis 106 chain header block 186 FLCLB in 187 FLCLN in 187 FLHC in 187 FLNU in 187 FLPA in 187 format 186 MAX in 187 NUM in 187 POINTER in 186 SKEY in 187 TCODE in 187 chain links 178 changes, user status 91 channel, dedicated, support 72 channel check, interrupt, processing of 235 channel check handler (§gg CCH (channel check handler)} channel-to-channel adapter, virtual 68 CHECK processing, os VSA~ 197 checkpoint spool file 237 recovery of closed 237 clock interrupt reflection 217 CLOSE, OS VSAM, simulation of 197 closed, checkpointed spool files, recovery of 237 closing virtual machine input files 233 virtual output files 233 CMS (Conversational Monitor System) ABEND 16 debugging procedure 17 procedure when occurs 17 reason for 16,41 recovery function 17 ABEND codes 559 ABEND dump printing 41 reading 41 ABEND macro 17 accessing the file system 182 batch facility 213 modules used in 215 command handling 163 language 111 processing 127 commands for debugging 568 BREAK 569 CAW 571 CSW 572 DEBUG 568 DEFINE 573 DUMP 574 GO 575 GPR 576 HX 577 ORIGIN 578 646 PSW 579 RETURN 580 SET 581 STORE 582 SVCTRACE 584 X 583 console management 163 control blocks 42 debugging collect informaiton 41 comparison with CP facilities 33 register usage 43 debugging commands 568 BREAK 569 CAW 571 CSW 572 DEBUG 568 DEFINE 573 DUMP 574 GO 575 GPR 576 HI 577 ORIGIN 578 PSW 579 RETURN 580 SET 581 STORE 582 SVCTRACE 584 I 583 DEVTAB (device table) 115 disk organization 178 disk storage management 180 DOS/VS support 137 dynamic storage management 182 equate symbols 599 error codes D~SFRES 558 D~SFRET 558 D~SFREX 558 file execution 163 processing 163 file status table block 178 file status table format 178 file status tables 177 file system 111,113 accessing 182 management 177 files, storage organization of 177 first command processing 162 free storage management 185 functional information 115 handling of PSi keys 190 PSW keys 124 SVC 124 initialization for OS SVC handling 162 interactive console environment 163 interface, display terminals 129 interrupts external 115 handling 112 I/O 114 machine check 115 processing 184 program 114 SVC 112 introduction 111,160 IBM VM/370: System Logic and Problem Determination Guide IPL command processing 160 label to module cross reference 281 load map 43 sample of 44 loader 168 loading, from card reader 160 maintaining interactive session 163 management, free storage 116 master file directory 180 miscellaneous functions 213 module entry point directory 247 module to label cross reference 265 nucleus constant (NUCON) areas 41 nucleus load map 43 OS and DOS VSAM functions supported 138 hardware devices supported 138 OS simulation access method support 134 BDAM restrictions 135 data management 130 handling files that reside on eMS disks 130 handling files that reside on OS or DOS disks 130 macro 130 notes 131 reading DOS files using OS macros 136 reading OS data sets using OS ,macros 136 supervisor calls 131 overview of functional areas 155 printer carriage control 184 printing a file 184 processing, commands entered during 164 program development 112 organization 155 punching a card 183 read disk I/O 185 reading a card 183 record formats 178 register usage 115 restrictions on, as a saved system 191 return codes 557 routines that access the file system 182 simulation of DOS environment 207 of OS by 198 storage constant initialization 160 map 117,161 structure 116 structure of DMSNUC 115 system functions 156 USERSECT (user area) 115 virtual devices used in 619 virtual machine initialization 160 write disk I/O 185 ZAP service program 623 CMS commands ACCESS 136 DEBUG 17,41,568 FILEDEF 136 MODMAP 43 VMFDUMP 34 CMSAMS-CMSVSAM DCSSs, storage relationships with DMSASM 194 CMSCB, defined 199 CMSCVT, defined 199 CMS/DOS CLOSE functions 209 routines that perform them 209 DOSLKED command 210 environment, termination of 213 execution related control commands 210 FETCH command 210 initialization 207 data areas 207 OS VSAM processing 196 OPEN functions 209 routines that perform them 209 service command processing 213 SVC functions CANCL- SVC 6 211 CDLOAD-SVC 65 212 EOJ-SVC 14 212 EXCP-SVC 0 211 FETCH- SVC 1 211 FETCH-SVC 2 211 FETCH- SVC 4 211 FREEVIS-SVC 62 212 GETVIS-SVC 61 212 MVCOM-SVC 5 211 POST-SVC 40 212 RELEASE-SVC 64 212 RUNMODE-SVC 66 212 SECTVAL-SVC 75 212 simulation of 211 SVC 11 211 SVC 12 211 SVC 16 212 SVC 17 212 SVC 26 212 SVC 33 212 SVC 34 212 SVC 37 212 SVC 50 212 SVC 8 211 SVC 9 211 treated as NOPs 212,213 USE-SVC 63 212 WAIT-SVC 7 211 SVC functions not supported 213 SVC handling 195 CMSDOS-CMSVSAM-user program storage relationships 195 CMS/VSAM error return processing 197 CMSVSAM-CMSDOS-user program storage relationships 195 codes for DIAGNOSE instruction 58 wait state 27 coding conventions CP 589 VM/310 589 command handling, CMS 163 processing eMS 121 SET DOS ON 163 SET SYSNAME 163 commands CP processing 230 Index 647 entered from the terminal 125 file system manipulation 177 passed via DMSINS, execution of 164 process of, entered during CMS 164 RSCS 140 spool files 97 management 99 spooling real 98 virtual 98 commands for debugging ADSTOP 480 BEGIN 482 DISPLAY 483 DUMP 489 SET 492 STORE 499 SYSTEM 502 TRACE 503 commands for system programmers and analysts debugging 508 DCP 509 DMCP 511 LOCATE 513 MONITOR 514 QUERY 515 STCP 528 comparison, of CP and CMS debugging facilities 33 completion processing DOS VSAM programs 198 OS VSAM programs . 198 component states, I/O 69 console management, CMS 163 scheduling 222 simulation, virtual 219 console functions 88 CP 48 CP processing 230 CONTASK data, processing of 222 CONTASK interrupt, control, processing of 222 control block CMS 42 I/O, real 66 manipulation macros, simulation of, VSAM 197 real 37 RCHBLOK 39 RCUBLOK 39 RDEVBLOK 39 virtual 37 VCHBLOK 37 VCUBLOK 38 VDEVBLOK 38 VMBLOK 37 control card routine 174 ENTRY card 174 LIBRARY card 174 control CONTASK interrupt, processing of 222 control flow for I/O processing 183 Control Program (§~ CP (Control Program» control program, RSCS 141 648 control register usage 55 used by MCH 102 control statements, DDR 530 controlling multiprogramming 91 virtual Machine Assist 49 conventions linkage 165 SVCs 165 pageable CP modules 55 Conversational Monitor system (2~~ CftS (Conversational Monitor System» CP (Control Program) ABEND 12 procedure when occurs 12 reason for 12,35 ABEND codes 542 ABEND dump printing from tape 35 reading 35 annotated flow diagram, use of 216 coding conventions 589 command module entry points 230 command processing 230 commands for system programmers and analysts, debugging 508 console functions 48,88 processing 230 control blocks RCHBLOK 39 RCUBLOK 39 RDEVBLOK 39 real 37 VCHBLOK 37 VCUBLOK 38 VDEVBLOK 38 virtual 37 VMBLOK 37 debugging collect informaiton 36 comparison with eMS facilities 33 on a virtual machine 34 register usage 36 save area conventions 36 debugging commands 479 ADSTOP 480 BEGIN 482 DISPLAY 483 DUMP 489 SET 492 STORE 499 SYSTEM 502 TRACE 503 debugging commands for system programmers and analysts DCP 509 DMCP 511 LOCATE 513 MONITOR 514 QUERY 515 STCP 528 disabled loop 24 equate symbols 591 handling of saved systems 190 BIO operations 221 initialization 45,85 procedures 228 IBM VM/370: System Logic and Problem Determination Guide internal trace table 477 interrupts handling 52 processing 216 introduction 45 I/O operations, scheduling of 221 I/O scheduling for CP and the virtual machine 218 label to module cross reference 373 loadlist requirements 590 module entry point directory 321 module to label cross reference 341 pageable module, identifying 39 program organization 216 program states 48 request stack 93 SIO operations 221 spooling 47,93,232 remote 48 termination 85 procedures 228 without a dump 16 trace table entries 478 undiagnosed machine check 16 unexpected results 23 unrecoverable machine check 16 virtual interrupt processing 218 I/O operations 218 virtual machine I/O management 47 management 46 preferred environment 48 storage management 46 time management 46 wait state codes 540 disabled 25 enabled 26 CP commands ADSTOP 480 BEGIN 482 DCP 509 DISPLAY 483 DMCP 511 DUMP 489 LOCATE 513 MONITOR 514 QUERY 515 SET 34,.492 STCP 528 STORE 499 SYSTEM 502 TRACE 503 CPU (Central Processing Unit), System/370,. retry 101 cross reference label to module CMS 281 CP 373 RSCS 469 message-to-label, RSCS 563 module to label CMS 265 CP 341 RSCS 465 CTCA operations between virtual machines 218 D DASD (Direct Access storage Device) error recovery 108 errors, during spooling 99 I/O initiated via DIAGNOSE 219 record formats 603 space allocation of 94,.226 de-allocation of 226 exhausted for spool files 100 st~rage management 80 cylinder allocation 81 slot allocation 80 DASD Dump/Restore (DDR) Program 530 control statements 530 function control statements 532 invoking standalone 530 under CMS 530 I/O definition statements 531 TYPE and PRINT functions,. sample output 539 data area modules 55 data. areas RSCS 147 VM/370,. referenced by RSCS 148 data base, loader 175 data formats for bisync lines 75 for remote 3270 75 DDR program (§gg DASD Dump/Restore (DDR) program) de-allocation of DASD space 226 DEBUG command, usage 17 debugging aids 477 approach to 11 CMS collect information 41 register usage 43 comparison of CP and CMS facilities 33 CP collect information 36 on a virtual machine 34 register usage 36 save area conventions 36 introduction 11 procedures ABEND 15 loops 14 unexpected results 15 wait states 14 software problem 11 tools, summary of 29 with CMS 568 debugging commands CP 479 for system programmers and analy~ts 508 DCP 509 DMCP 511 LOCATE 513 MONITOR 514 QUERY 515 STCP 528 dedicated channel, support 72 defining,. a virtual device 87 detaching, a virtual device 87 Index 649 device real attaching 87 spooling commands 98 virtual defining 87 detaching 87 spooling commands 98 DIAGNOSE codes 58 FINDSYS function 65 instruction format 58 instructions, issued by RSCS 141 interface 58 LOADSYS function 64 PURGESYS function 64 DIAGNOSE instruction function codes for 622 starting a general I/O operation 219 used to start standard DASD I/O 219 diagnostic aids 477 direct access storage device (§~~ DASD (Direct Access Storage Device» directories 245 directory routines, user 236 disconnecting a terminal 87 permanently 87 temporarily 87 a virtual machine 87 permanently 87 temporarily 87 disk and file storage management 182 I/O, CMS 185 organization in CMS 178 disk storage management CMS 180 QMSK used in 180 QQMSK used in 180 dispatch entry point 231 dispatched user, reflection for 231 dispatching 231 a new virtual machine 232 states, user 90 support routines 92 virtual machines 88 examples 89 dispatching lists, virtual machine 89 DISPLAY command 483 DISPW macro, format 129 I:MKFREE calling for a large block 85 calling for a sub pool 84 DMKFRET calling for a large block 85 calling for a subpool 85 DMSACC module 203,204 used for access 182 DMSACF module 204 DMSACM module 204 DMSALU module 204 DMSAMS, operation of 194 DMSAMS-CMSAMS-CMSYSAM, storage relationships 194 DMSARE module 203,204 DMSASN module 207,208 DMSBOP module 195,209 650 DMSBOP YSAM processing 195 DMSETB module 213 DMSBTP module 213 DMSCLS module 195,210 DMSCLS YSAM processing 195 DMSDLB module 207,208 DMSDLK module 210 DMSDOS module 195 DMSDOS VSAM processing 195 DMSEXS macro 190,192 DMSFCH module 210 DMSFET module 210 DMSFLD module 203,204 DMSFRE module method of operation 187 used in free storage management 185 DMSFRE service routine 188 CALOC option of 189 CHECK option of 189 CKOFF option of 189 CKON option of 189 INITl option of 188 INIT2 option of 189 UREC option of 189 DMSFREE allocated storage 188 error codes 191 free storage allocation 185 free storage management 118 free storage pointers 186 request efficiency 188 service routines 122 DMSFRES macro 122 DMSFREE macro error codes 123 format 118 DMSFRES, error codes 191,558 DMSFRES macro 191 error codes 123 format 122 DMSFRET error codes 191,558 releasing free storage 121 DMSFRET macro error codes 123 format 121 DMSFREX error codes 558 DMSINS module, executing commands 164 .DMSINT module 164 DMSITS module 165 DMSKCP VSAM processing 195 DMSKEY macro 190,192 DMSLDR module 175 DMSLDS module 203,204 DMSLFS module 205 DMSLLU module 207,208 DMSMVE module 203,205 DMSOPT module 207,208 DMSPIO, carriage control characters 184 DMSPIO module 184 DMSQRY module 203,206 DMSROS module 205,207 DMSSCT module 206 DMSSEB nodule 206 DMSSET module 207 DMSSOP module 206 DMSSTT module 204,207 DMSSYT module 206 IBM VM/370: System Logic and Problem Determination Guide DMSVIP module 196 DMSXCP module 195 DOS CLOSE functions 209 environment simulation under CMS 207 initialization 207 assign logical and physical units 208 associate a DTF table filename with a logical unit 209 data areas 207 for OS VSAM processing 196 list assignments of CMS/DOS logical units 208 reseting compiler options 208 resetting DOS environment options 208 setting compiler options 208 setting DOS environment options 207 OPEN functions 209 simulation by CMS handling files that reside on DOS disks 130 read DOS files using OS macros 136 SVC calls 166 system control commands, processing of 207 use of CMS ACCESS command 136 use of CMS FILEDEF command 136 VSAM functions supported by CMS 138 hardward devices supported by CMS 138 DOS commands 207 DOS emulator, interaction with virtual Machine Assist feature 50 DOS VSAM completion processing 198 execution of, for a DOS user 194 DOSCB 209 DOSCB chain, creation of 193 DOS-OS-VSAM-user program storage relationships 196 DOS/VS FETCH function 210 Linkage Editor, simulation of 210 support, under CMS 137 DTF tables, opening files associated with 209 DTFs, closing files associated with 210 DUMP operand of CP SET command 34 subcommand of DEBUG 41 DUMP command 489 dump the system 229 dumps ABEND 34 CMS ABEND, reading 41 CP ABEND printing from tape 35 reading 35 printing 34 dynamic storage management, active disk and file 182 E ECC, validity checking 101 END card routine 174 operation 174 enhancements, miscellaneous, with VM/VS Handshaking feature 51 ENTBY control card 174 entry point directory CMS 247 CP 321 BSCS 455 entry points for CP commands 230 environments non-CMS 192 access method support for 193 equate symbols CM~ 599 CP 591 RSCS 591 ERET error routine processing 198 ERP (error recording program) 105 error codes DMSFREE macro 123 DMSFRES 558 DMSFRES macro 123 DMSFRET 558 DMSFRET macro 123 DMSFREX 558 from DMSFREE 191 from DMSFRES 191 from DMSFRET 191 error recording 107 record writing 107 via SVC 76 235 virtual machine, interface 107 error recording base, establishing 234 error recovery 107 DASD 108 hard 82 soft 82 spool files 99 tape 109 virtual storage paging 82 3270 binary synchronous line 224 3270 remote support 110 error return, CMS/VSAM, processing of 197 error routine, ERET, processing of 198 errors, DASD, during spooling 99 ESD card codes 175 ESD type 0 card routine 170 operation 170 ESD type 1 card routine 170 operation 170 ESD type 10 routine 172 ESD type 2 card routine 171 operation 171 ESD type 3 card routine 171 operation 171 ESD type 5 card routine 171 operation 171 ESD type 6 card routine 171 operation 171 ESDID (ESD ID table) entry 176 examples, of virtual machine dispatching and scheduling 89 executable modules pageable 55 resident 55 Index 651 executing CMS files 163 text files 168 the pageable control program 54 execution favored 48,92 of scheduled users 232 exit routine, user, processing of 198 extended virtual external interrupt 51 external interrupt 53,51 reflection 211 F facilities VM/370 real timing 65 timing 65 virtual timing 66 failure, system, recovery 100 favored execution option 48,92 features system/370 recovery 101 control registers used by MCH 102 CPU retry 101 ICC validity checking 101 Virtual Machine Assist 49 VM/VS Handshaking 50 file status table (FST) CMS 178 format 178 file status table block, format 178 file status tables, CMS 177 file system CMS 111,113 management 177 manipulation commands 171 FILEDEF command 136 AUXPROC option 137 FILEDEF command flow 203 FINDSYS function 65 return codes 65 first chain link format 179 first command processing, CMS 162 format CCW, 3270 remote 73 DIAGNOSE instruction 58 first chain link 179 macro DISPW 129 tMSFREE 118 DMSFRES 122 DMSFRET 121 STRINIT 116 spool data 93 spool files 93 system save area 168 user save area 168 free chain element format 187 free storage allocating nucleus 121 user space 120 allocation 185 management 84,185,221 eMS 116,185 DMSFREE 118 652 GETMAIN 116 pointers 185 nucleus, allocation of 188 page frame allocation 85 pointers, DMSFREE 186 releasing 121 DMSFRET 121 user, allocation of 187 free storage table FREETAB 186 NUCCODE 186 SYSCODE 186 TRNCODE 186 USARCODE 186 USERCODE 186 PREETAB free storage table 186 function codes for DIAGNOSE instructions 622 function control statements, DDR 532 functional area, overview, CMS 155 functions, console, CP 48 G GENCB processing 191 GETMAIB allocated storage 188 free storage allocation 185 management 116 management pointers 185 graphic I/O processing, local 220 H handling CMS PSW keys 124 SVC 124 interrupts 52,55 CMS 112 overview 53 link activity, RSCS 153 OS files that reside on CMS disks 130 that reside on os or DOS disks hard error, recovery 82 high-core nucleus chain 186 high-core user chain 186 HIO operations, CP 221 130 I ICS card routine 169 operation 169 identifying, a pageable module 39 information, functional, CMS 115 initialization eMS virtual machine 160 CMS/DOS, for OS VSAM processing CP 45,85 procedures 228 DMSIBS module 160 DOS 207 for OS SVC handling, eMS 162 of a named system 162 of a saved system 162 IBM VM/370: System Logic and Problem Determination Guide 196 storage constant, CMS 160 system 85,228 for RMS 100 system table, CMS 160 virtual machine 229 input processing for a virtual machine 233 real spool files 97 virtual spool files 95 input device, real, spooling to 234 input files, virtual machine, closing of 233 input restrictions, loader 177 input/output control flow 183 input/output operations 182 instruction simulation for virtual machine 219 interactive console environment, CMS 163 Interactive Problem Control System (§~~ IPCS (Interactive Problem Control System» interface DIAGNOSE 58 error recording, virtual machines 107 internal trace table 477 interrupt channel check, processing of 235 handling, RSCS 142 in CMS external 115 handling 112 I/O 114 machine check 115 program 114 SVC 112 I/O 70 virtual 70 machine check, processing of 235 reflection in a virtual machine 219 secondary, processor for 3270 224 start/stop terminal, processing of 222 3704/3705, handling of 223 interrupt processing 221 local graphic 220 MONITOR 217 program 217 interrupt reflection clock 217 external 217 interrupts external 53,57 extended virtual 57 handling 52,55 overview 53 I/O 52 machine check 52 processing 184,216 program 52,57 SVC 53,55 timer 57 introduction CMS 111,160 debugging 11 RSCS 138 to CP 45 invalid SVC calls 125 I/O component states 69 control blocks, real 66 disk, CMS 185 for DASD 219 general operation, initiated via DIAGNOSE 219 instruction simulation, for virtual machine 219 interrupts 52,70 virtual 70 macros, OS VSAM, simulation of 197 management 66 RSCS 142 paging 81 privileged instructions, other 68 processing, local graphic 220 programs for bisync lines 74 for remote 3270 74 reconfiguration 86 requests scheduling 71 virtual 67 virtual selector channel 68 RSCS active and pending queues 153 methods and techniques 152 queues and subqueues 153 scheduler, paging 227 scheduling for CP and the virtual machine 218 supervisor 66 3270, request handler 224 I/O definition statements, DDR 531 IPL command processing, CMS 160 IPL of the virtual machine 229 ISAM read sequence locate an 220 validate 220 K key real PSi 190 real storage 190 virtual PSi 190 virtual storage 190 keys, storage protection 189 L label to module cross reference CMS 281 CP 373 RSCS 469 language, CMS command 111 LIBRARY control card 174 line driver programs NPT 146 SML 144 linkage conventions 165 SVCs 165 links RSCS handling by 153 handling files 153 transmitting VM/370 files to 153 Index 653 LISTDS command flow 203 load map CMS 43 sample of 44 nucleus 43 loader CMS 168 data base 175 input restrictions 177 loading CMS, from card reader 160 from card reader, CMS 160 t ext files 168 the nucleus 228 load list requirements, CP 590 LOADSYS function 64 return codes 64 local graphic interrupt processing 220 I/O processing 220 locate ISAM read sequence 220 lock a page of free storage 225 loops 11,23 debugging procedures 14 disabled CP 24 virtual machine 24 enabled, virtual machine 24 low-core nucleus chain 186 low-core user chain 186 M machine check interrupt 52 processing of 235 undiagnosed 16 unrecoverable 16 machine check handler (§gg MCH (machine check handler» machine states, virtual machine 89 macro format DISPW 129 DMSFREE 118 DMSFRES 122 DMSFRET 121 STRINIT 116 macro processing I/O ENDREQ 197 ERASE 197 GET 197 POINT 197 PUT 197 macros control block manipulation, VSAM 197 GENCB 197 MODCB 197 SHOWCB 197 TESTCB 197 maintaining interactive session, CMS 163 maintenance, virtual timer 65 management allocation 76 commands, for spool files 99 free storage 53,84,227 CMS 116 654 I/O 66 RSCS 142 of pages 225 OS data, simulation by eMS 130 real spooling 96 real storage 94 storage DASD 80 real 77 virtual 77 task, Rses 141 virtual machine 46 I/O 47 storage 46 time 46 virtual spooling 94 virtual storage 94 RSeS 142 master file directory CMS 180 structure 181 MCH (machine check handler) 100 control registers 102 overview 101 recovery functional 101 system 101 system repair 101 system-supported restart 101 subroutines 102 buffer error 104 initial analysis 102 main storage analysis 103 operator communication 103 recovery facility mode switching 103 soft recording 104 storage protect feature (SPF) analysis 103 termination 105 virtual user termination 104 m~ssages, ABEND 19 message-to-Iabel cross reference, RSCS 563 miscellaneous eMS functions 213 MODCB processing 197 mode, VSl nonpaging 51 modifications, by called routine to system area 128 MODMAP command 43 module directory, RSCS 447 module entry point directory CMS 247 CP 321 RSCS 455 module entry points for CP commands 230 module to label cross reference CMS 265 CP 341 Rses 465 modules data area 55 executable pageable 55 resident 55 pageable conventions 55 identifying 40 restrictions 55 system support 55 IBM VM/370: System Logic and Problem Determination Guide MONITOR interrupt processing 217 MOVEFILE command flow 203 multiprogramming, controlling 91 multitasking supervisor, program organization of 239 N named system initialization 162 network, control, RSCS 140 non-CMS operating environments 192 NPT line driver program 146 routines function selector 146 I/O processing 146 line monitor 146 NPT line driver task, program organization 243 Nth chain link, format 179 nucleus free storage allocation 121,188 loading of 228 storage copy of 160 nucleus constant (NUCON) areas 41 nucleus load map 43 o obtain a page of free storage 225 OPEN, OS VSAM, simulation of 196 operating environments non-CMS 192 access method support for 193 operating' system, abnormal termination (ABEND) 18 operation of DMSINT 164 of DMSITS 165 options performance favored execution 48,92 reserved page frames 49 virtual=real 49,80 virtual Machine Assist 49 order seek queuing 71 organization, virtual disk 180 OS CMS simulation, data management 130 control block functions, CMS simulation of 198 macro simulation, under CMS 130 simulation by CMS access method support 134 handling files that reside on CMS disks 130 handling files that reside on OS disks 130 notes 131 reading OS data sets using OS macros 136 supervisor calls 131 use of CMS ACCESS command 136 use of ~MS FILEDEF command 136 VSAM functions supported by CMS 138 hardware devices supported by CMS 138 OS ACCESS, flow of commands used in 203 OS access method modules DMSACC 204 DMSACF 204 DMSACM 204 DMSALU 204 DMSARE 204 DMSFLD 204 CONCAT 204 DSB 204 MEMBER 204 DMSLDS 204 DMSLFS 205 DMSMVE 205 DMSQRY 206 DISK routine 206 SEARCH routine 206 DMSROS 205 CHKXTNT routine 207 CHRCNVRT routine 207 common routines 207 DISKIO routine 207 GETALT routine 207 RDCNT routine 207 ROSACC routine 205 ROSFIND routine 205 ROSNTPTH routine 206 ROSPRS routine 205 ROSSTRET routine 205 ROSSTT routine 205 SETXTBT routine 207 SHKSENSE routine 207 DMSSCT 206 CKCONCAT routine 206 FIND (Type C) routine 206 NOTE routine 206 POINT routine 206 DMSSEB 206 EOBROUTN routine 206 OSREAD routine 206 DMSSOP 206 DMSSTT 207 DMSSVT 206 BLDL routine 206 BSP routine 206 FIND (Type D) routine 206 OS access method support 193 OS and DOS/VS macro simulation of SVC calls 125 OS functions CMS module used for 199 defined 199 simulated by CMS 199 SVC numbers of 199 OS ISAM, handling by DMKISMTR 69 OS macro simulation SVC calls 166 OS simulation by CMS 198 OS simulation routines 199 ABEND-SVC 13 200 ATTACH-SVC 42 201 BACKSPACE-SVC 69 202 BLDL/FIBD(Type D)-SVC 18 201 CHAP-SVC 44 201 CHECK 203 CHKPT-SVC 63 202 CLOSE/TCLOSE-SVC 20/23 201 Index 655 DELETE-SVC 9 200 DEQ-SVC 48 202 DETACH-SVC 62 202 DEVTYPE-SVC 24 201 ENQ-SVC 56 202 EXIT-SVC 3 200 EXTRACT-SVC 40 201 FREEDBUF-SVC 57 202 FREEMAIN-SVC 5 200 GETMAIN/FREEMAIN-SVC 10 200 GETMAIN-SVC 4 200 GETPOOL 200 GET/PUT-SVC 96 202 IDENTIFY-SVC 41 201 LINK-SVC 6 200 LOAD-SVC 8 200 NOTE/POINT/FIND(Type C) 203 notes on 203 OPEN/OPENJ-SVC 19/22 201 POST-SVC 2 200 RDJFCB-SVC 64 202 READ/WRITE 202 SNAP-SVC 51 202 SPIE-SVC 14 201 STAE-SVC 60 202 -STAX-SVC 96 202 STIMER-SVC 47 201 STOW-SVC 21 201 SYNAD-SVC 68 202 TCLEARQ-SVC 94 202 TGET/TPUT-SVC 93 202 TIME-SVC 11 200 TRKBAL-SVC 25 201 TTIMER-SVC 46 201 used by Assembler 199 used by FORTRAN 199 used by PL/I 199 WAIT-SVC 1 200 WTO/WTOR-SVC 35 201 XCTL-SVC 7 200 XDAP-SVC 0 200 OS SVC handling, initialization for, CMS 162 as VSAM CHECK processing 197 CLOSE, simulation of 197 execution, user 196 I/O macros, simulation of 197 OPEN, simualtion of 196 program completion processing 198 OS-DOS-VSAM-user program storage relationships 196 output processing real spool files 96 virtual spool files 95 output files, virtual machine, closing of 233 output lines, SVCTRACE, summary of 586 overview CCH 105 CMS, functional areas 155 MCH 101 RSCS 138 656 P page frames, reserved 49 management 225 of free storage lock 225 obtain 225 return 225 unlock 225 reading from virtual storage 225 request, processing of 225 writing to virtual storage 225 page faults, pseudo, with VM/VS Handshaking feature 51 page frame, allocation, free storage 85 pageable control program, executing 54 CP modules conventions 55 restrictions 55 executable modules 55 pages, virtual storage, releasing 227 paging I/O 81 I/O scheduler 227 requests 76 virtual storage, error recovery 82 patch control block (PCB) 176 performance options favored execution 48,92 reserved page frames 49 virtual=real 49,80 virtual Machine Assist 49 pointers, free storage management 185 preferred virtual machine 48 printer, real, spooling to 233 printing a file, CMS 184 privileged instruction I/O, other 68 program interrupt 57 problem analyzing 12 determining if one exists 13 problem state, SVC interrupts 216 problem types ABEND 11,21 loop 11,23 disabled, CP 24 disabled, virtual machine 24 enabled 24 unexpected results 11,23 CP 23 wait state 11,24 disabled, CP 25 disabled, RSCS virtual machine 27 disabled, virtual machine 26 enabled, CP 26 enabled, RSCS virtual machine 28 enabled, virtual machine 26 processing accounting cards 97 CMS files 163 commands entered during eMS session 164 DOS system control commands 207 interrupts 184 RSCS, files from remote stations 153 IBM VM/370: System Logic and Problem Determination Guide spool files real input 97 real output 96 virtual output 95 virtual input 233 virtual output 232 program areas, user and transient 126 development, CMS 112 organization, CMS 155 program areas transient 167 user 167 Program Event Recording (PER), interaction with virtual Machine Assist feature 50 program interrupt 52,57 privileged instruction 57 processing 217 program organization RSCS 238 RSCS overview 238 program states, CP 48 programming, remote 3270 73 protection, storage 54 PRSERCH routine 175 operation 175 PSR (2~~ IBM Program Systems Representative (PSR» PSi fields, when called routine starts 128 validation 231 PSi keys CMS handling of 190 handling by CMS 124 PTFs, applying 631 punch, real, spooling to 233 punching a card, CMS 183 PURGBSYS function 64 return codes 65 Q QMSK data block 181 QUERY command flow 203 querying options in the virtual machine environment 163 queuing, order seek 71 R reading a card, CMS 183 a DASD page from virtual storage real device attaching 87 spooling commands 98 input devi~e, spooling to 234 PSi key 190 storage key 190 real spooling manager (DMKRSP) 96 real storage allocation 225 management 77,94 page management 225 requests for page frames 78 225 reconfiguration, I/O 86 record, error, writing 107 record formats CMS 178 DASD 603 recovery from system failure 100 MCH functional 101 system 101 system repair 101 system-supported restart 101 System/370 101 control registers used by MCH 102 CPU retry 101 BCC validity checking 101 Recovery Management Support (§gg RMS (Recovery Management Support» REFADR routine 175 operation 175 reflection for the dispatched user 231 REFTBL address field 176 entry 176 flagl byte 176 flag2 byte 176 info field 1'76 name field 176 value field 176 register contents when called routine starts 128,167 restoration by called routine 128,168 usage, CMS 115 RELEASE command flow 203 releasing allocated storage 188 free storage 121 storage 188 virtual storage pages 227 relocation, virtual 82 remote stations, RSCS processing of files from 153 3270 CCW format 73 data formats 75 I/O programs for 74 support error recovery 110 3270 programming 73 Remote Spooling Communications Subsystem (§~~ RSCS (Remote spooling Communications Su1:system) ) REP card routine 172 operation 172 request handler, 3270 I/O 224 request stack, CP 93 requests for real storage page frames 78 I/O scheduling 71 virtual 67 paging 76 RSCS 147 requirements, RSCS storage 149 reserved, page frames 49 resident, executable modules 55 restart, MCH, system-supported 101 Index 657 restrictions input, loader 177 on CMS as a saved system 191 pageable CP modules 55 Virtual Machine Assist feature 50 VM/370 613 return a page of free storage 225 return codes CMS 557 FINDSYS function 65 LOADSYS function 64 PURGESYS function 65 return location, when returning to caller 168 returning to caller 167 register restoration 168 return location 168 to the called routine 126 REX system service tasks, program organization 240 RLD card routine 173 operation 173 RMS (Recovery Management Support) 100,234 channel check handler (CCH) 100 machine check handler (MCH) 100 system initialization 100 RSCS (Remote Spooling Communications su bsystem) AXS system service task, program organization 241 control program 141 data areas 147 VM/370 148 DIAGNOSE instructions 141 equate symbols 591 interrupt handling 142 introduction 138 I/O active and pending queues 153 method and techniques 152 queues and subqueues 153 label to module cross reference 469 links handling 153 handling files 153 transmitting VM/370 files to 153 management I/O 142 task 141 virtual storage 142 message-to-Iabel cross reference 563 module directory 447 module entry point directory 455 module to label cross reference 465 multitasking supervisor, program organization of 239 network control 140 commands 140 CP and CMS commands used 140 CP instructions used 141 NPT line driver program 146 function selector routine 146 I/O processing routines 146 line monitor routine 146 NPT line driver task, program organization 243 overview 138 658 processing files from remote stations 153 program organization 238 overview 238 request elements 141 REX system service tasks, program organization 240 SML line driver program 144 buffer routines 145 function selector routine 145 I/O handler routine 145 processors 145 SML line driver task, program organization 242 spooling, remote 48 storage requirements 149 supervisor 141 TAG file descriptor 147 task structure 142 tasks 143 ALERT task-to-task communication 150 asynchronous interrupts and exits 150 asynchronously requested services 150 dispatching 149,150 GIVE/TAKE task-to-task communication 151 posting a synch lock 150 synchronization locks 149 synchronizing 149 wait/post routines 149 virtual machine configuration 139 locations and links 139, nonprogrammable remote stations 139 programmable remote stations 139 remote stations 139 wait state disabled 27 enabled 28 RSCS commands 140 S saved system effect on CMS as a 191 handling of, CP 190 initialization 162 restrictions on C~S as a 191 saving the 3704/3705 control program image 236 scheduler functions, other 232 I/O paging 227 scheduling 231 CP I/O operations 221 interrupt handling 221 I/O for CP and the virtual machine 218 I/O requests 71 support routines 92 the console 222 users for execution 232 virtual machine I/O operations 221 virtual machines 88 examples 89 selector channel, virtual, I/O requests 68 service program, ZAP, CMS 623 IBM VM/370: System Logic and problem Determination Guide service routines DMSFRE 188 DMSFREE 122 TSO, support of 198 SET command (CP) 492 usage 34 SET DOS ON command processing, VSAM 163 SET SYSNAME command processing 163 setting options in the virtual machine environment 163 shared segment storage management 226 SHOWCB processing 191 shutdown, normal 228 simulation CMS, OS data management 130 of as by CMS 198 OS macro, under CMS 130 virtual console 12 control routine 12 invalid operation 12 read routine 12 sense operation 12 TIC operation 12 write routine 12 simulation routines, OS (~gg OS simulation rou tines) SIO operations, CP 221 virtual 61 SLC card routine 169 operation 169 SML line driver program 144 routines buffer blocking and deblocking 145 function selector 145 I/O handler 145 processors 145 SML line driver task, program organization 242 soft error, recovery 82 software problem, debugging 11 space, allocation, DASD 94 spool data, format 93 spool files attributes 91 checkpoint 236 initialization 236 commands 91 CP, closing with VM/VS Handshaking feature 51 DASD, space exhausted 100 deletion of 234 error recovery 99 format 93 management, commands 99 real input processing 91 output processing 96 recovery 236 recovery of closed checkpointed 231 virtual input processing 95 output proces~ing 95 spooling 232 commands for real device 98 for virtual device 98 CP 41,93 remote 48 DASD errors 99 real, management 96 remote, via RSCS 48 to the real input device 234 to the real printer 233 to the real punch 233 virtual, management 94 virtual console 95 virtual device to real device 232 start/stop terminals, interrupt processing 222 start-up table, called routine 161 STATE command flow 204 status, changes, user 91 status tables, file, CMS 111 storage allocated by DMSFREE 188 allocated by GETMAIN 188 allocation 225 constant initialization, CMS 160 free allocation 185 management of 53 map CMS 111,161 organization of CMS files 111 protection 54 protection keys 189 releasing of 188 RSCS, requirements 149 structure in CMS 116 storage management free 221 shared segment 226 temporary disk 226 storage relationships, DOS-OS-VSAM-user program 196 STORE command 499 STRINIT macro, format 116 structure, CMS storage 116 subpool calling DMKFREE for 84 calling DMKFRET for 85 subroutines CCH channel control 105 channel error analysis 106 MCH 102 buffer error 104 initial analysis 102 main storage analysis 103 operator communication 103 recovery facility mode switching 103 soft recording 104 storage protect feature (SPF) analysis 103 termination 105 virtual user termination 104 summary of, VM/310 debugging tools 29 supervisor I/O 66 RSCS 141 supervisor state, SVC interrupts, processing of 216 support, dedicated channel 12 support plan, system 638 Index 659 support routines dispatching 92 scheduling 92 SVC CALLS (2~~ SVC CALLS) handling by CMS 124 handling for CMS/DOS 195 interrupt 53,55 problem state 216 supervisor state, processing of 216 linkage conventions 124 types 124,165 user handled 125,166 201 165 202 124,165 203 124,166 SVC calls DOS 166 invalid 125,166 OS and DOS/VS simulation 125 OS macro simulation 166 SVC 201 165 svc 202 165 execute commands entered from the terminal 125 search hierarchy for 125,166 SVC 203 166 SVC 76 error recording 235 SVCTRACE output lines, summary of 586 system dump of 229 failure, recovery 100 file, management 177 functions; CMS 156 initialation 85,228 for RMS 100 save area format 168 start, warm 228 table initialition, CMS 160 termination 85 virtual machine, attaching to 229 SYSTEM command 502 system support modules 55 system support plan 638 System/370 recovery 101 control registers used by MCH 102 CPU retry 101 ECC validity checking 101 GIVE/TAKE task-to-task communcation 151 posting a synch lock 150 synchronation locks 149 synchroning 149 using asynchronously requested services 150 wait/post routines 149 temporary disk storage management 226 terminals disconnecting 87 permanently 87 temporarily 87 display, CMS interface 129 I/O control disabling 222 enabling 222 termination abnormal (~~~ abnormal termination (ABEND) ) CP 85 without a dump 16 of the virtual machine 229 procedures, CP 228 system 85 virtual machine 229 TESTCB processing 197 text files 168 executing 168 loading 168 thrashing, VPK of 0 191 timer interrupt 57 virtual, maintenance 65 timing facilities 65 real 65 virtual 66 TRACE command 503 trace table entries, CP 478 transient program areas 126,167 TSO service routine, support of 198 TXT card routine 172 operation 172 TYPE and PRINT function, DDR, sample output 539 U T table, start-up, called routine 167 table entry ESDID 176 REPTBL 176 TAG, RSCS file descriptor 147 tape, error recovery 109 task management, RSCS 141 task structure, RSCS 142 tasks RSCS 143 ALERT task-to-task communications 150 asynchronous interrupts and exits 150 dispatching 149,150 660 unexpected results 11,23 CP 23 debugging procedures 15 virtual machine 23 unlock a page of freee storage 225 update procedures, VM/370 631 updating modules with the VMPASM EXEC procedure 638 usage, control register 55 user directory routines 236 dispatching states 90 exit routine processing 198 free storage allocating 120 allocation of 187 handled SVCs 166 program areas 126,161 IEM VM/370: System Logic and Problem Determination Guide save area format 168 status changes 91 user program-CMSDOS-CMSVSAM storage relationships 195 user program-VSAM-DOS-OS storage relationships 196 V validate ISAM read sequence 220 validation of the PSW 231 virtual channel-to-channel adapter 68 device defining 87 detaching 87 spooling commands 98 devices used in CMS 619 disk accessing 182, organization 180 physical organization 180 I/O interrupts 70 I/O requests 67 output files, closing of 233 PSi key 190 relocation 82 selector channel I/O requests 68 SIO 67 virtual=real option 49,80 virtual console simulation 72,219 control routine 72 invalid operation 72 read routine 72 sense operation 72 TIC operation 72 write routine 72 spooling 95 virtual machine abnormal termination (ABEND) 18 attaching to the system 85,229 debugging, CP 34 debugging commands, CP 479 disabled loop 24 disconnecting 87 permanently 87 temporarily 87 dispatching 88 example of 89 dispatching lists 89 enabled loop 24 environment querying options 163 setting options 163 error recording, via SVC 76 235 error recording interface 107 initialition 229 CMS 160 input files, closing of 233 input processing 233 interrupt reflection 219 I/O, scheduling by CP 218 I/O instruction simulation 219 I/O operations, scheduling of 221 IPL of 229 machine states 89 management 46 I/O 47 storage 46 time 46 new, dispatching of 232 output processing 232 preferred 48 BSCS configuration 139 locations and links 139 nonprogrammable remote stations 139 programmable remote stations 139 remote stations 139 scheduling 88 example of 89 termination 229 termination of 229 unexpected results 23 wait state, disabled 26 virtual Machine Assist feature 49 control 49 interaction with DOS emulator 50 with Program Event Recording (PER) 50 restrictions 50 virtual Machine Facility/370 (VM/370) coding conventions 589 CP and CMS commands used to control RSCS network functions 140 CP instructions used to control RSCS network functions 141 data areas, referenced by RSCS 148 debugging introduction 11 software problem 11 summary of tools 29 restrictions 613 system, supporting a 631 timing facilities 65 real 65 virtual 66 transmitting files to an RSCS link 153 update procedures 631 virtual spooling manager (DMKVSP) 94 virtual storage key' 190 management 77,94 EC mode 226 non-EC mode 225 RSCS 142 paging, error recovery 82 releasing pages 227 VMFASM EXEC procedure other files produced by 644 updating modules with 638 using to apply updates 638 VMFDUMP command format 34 usage 34 VM/VS Handshaking feature 50 closing CP spool files 51 miscellaneous enhancements 51 pseudo page faults 51 VM/370 (2~~ Virtual Machine Facility/370 (VM/370) ) VPK of 0 caused overhead 191 VSAM CLOSE, OS, simulation of 197 Index 661 CMS support of 193 control block manipulation macros, simulation of 197 execution for os user 196 execution of, for a DOS user 194 OPEN, OS, simulation of 196 processing, DMSDOS 195 SET DOS ON command processing 163 VSAM-DOS-OS-user program storage relationships 196 VS1 nonpaging mode 51 Z ZAP service program, CMS 3 3270 binary synchronous line error recovery 224 remote CCW format 73 data formats 75 I/O programs for 74 programming 73 support error recovery 110 secondary interrupt processor 224 3277 remote, enabling/disabling of 224 remote station binary synchronous line enabling/disabling 224 enabling/disabling 224 3704/3705, saving the control program image 236 3705/3704, interrupt handling 223 Ii wait state 11,24 codes 27 CP 540 debugging procedures 14 disabled CP 25 RSCS virtual machine 27 virtual machine 26 enabled CP 26 RSCS virtual machine 28 virtual machine 26 warm start 228 writing a DASD page to virtual storage 662 623 225 IBM VM/370: System Logic and Problem Determination Guide READER'S COMMENT FORM Title: IBM Virtual Machine Facility/370: System Logic and Problem Determination Guide Order No. SY20-0885-0 Please check or fill in the items; adding explanations/comments in the space provided. Which of the following terms best describes your job? o Customer Engineer D Engineer D Instructor D Manager D Mathematician D Operator D Programmer D Sales Representative D Student/Trainee D Systems Analyst D Systems Engineer D Other ( explain below) How did you use this publication? D Introductory text ;] Reference manual D Student/ D Instructor text D Other (explain) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ .. Did you find the material easy to read and understand? DYes D No ( explain below) Did you find the material organized for convenient use? DYes D No (explain below) c • :J: Specific criticisms (explain below) Clarifications on pages Additions on pages Deletions on pages Errors on pages Explanations and other comments: Thank you for your cooperation. No postage necessary if maile4.in the U.S.A. ::;l : 3" :l> SY20-088S-0 '0 • :J 'IQ :-1 .::r • en' :r ·5" Your views about this publication may help improve its usefulness; this form will be sent to the author's department for appropriate action. Using this form to request system assistance and/or additional publications or to suggest programming changes will delay response, however. For more direct handling of such requests, please contact your IBM representative or the IBM Branch Your comments will be carefully reviewed by Office serving your locality. the person or persons responsible for writing and publishing this material. All comments or suggestions become the property of IBM • CD FOLD : aJ FOLD ............................................................................................................................ 3: .:< :3: FIRST CLASS PERMIT NO. 172 [ BURLINGTON, MASS. ] .W ...... :!=? :~ .~ :rBUSINESS REPLY MAIL NO POSTAGE STAMP NECESSARY IF MAILED IN U.S.A. :c8 : c;' '1» .:::s .·:c. ." '0 ~ :P" POSTAGE WI LL BE PAl D BY :0 ·CD IBM CORPORATION :3 •.CD r+ VM/370 PUBLICATIONS : :i' • I» • d'. '0 24 NEW ENGLAND EXECUTIVE PARK ::::s BURLINGTON, MASS. 01803 :c 'C) '0.: :CD :." • :::!. • :::s •'CD r+ :c. ........................................~ ................................................................................... : :r :c FOLD FOLD 'en ·:l> . • en :< 'N '0 :6 .OQ 'OQ :Y" :0 International Business Machines Corporation Data Processing Division 1133 Westchester Avenue, White Plains, New York 10604 (U.S.A. only) IBM World Trade Corporation 821 United Nations Plaza, New York, New York 10017 (International) SV20-0885-0 . "'tI :i' s-a. :i' c en ~, (I) -< N 9 o()Q ()Q Y1 o International Bu.lne•• Machine. Corporation Data Proce ••lng Dlvl.lon 1133 We.tche.ter Avenue, White Plain., New York 10604 (U.S.A. only) IBM World Trade Corporation 821 United Nation. Plaza, New York, New York 10017 (International)
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 : 2003:11:06 18:00:35-08:00 Modify Date : 2009:09:11 08:15:10-07:00 Metadata Date : 2009:09:11 08:15:10-07:00 Producer : Adobe Acrobat 9.13 Paper Capture Plug-in Format : application/pdf Document ID : uuid:631596ef-ff1b-4bc8-96ca-1785a06397f5 Instance ID : uuid:26c80014-ab2f-4fd1-a638-5b69b1d32146 Page Layout : SinglePage Page Mode : UseOutlines Page Count : 665EXIF Metadata provided by EXIF.tools