SC34 0638 0_EDX_5.0_Communications_Guide_Dec84 0 EDX 5.0 Communications Guide Dec84
SC34-0638-0_EDX_5.0_Communications_Guide_Dec84 SC34-0638-0_EDX_5.0_Communications_Guide_Dec84
User Manual: SC34-0638-0_EDX_5.0_Communications_Guide_Dec84
Open the PDF directly: View PDF .
Page Count: 274
Download | |
Open PDF In Browser | View PDF |
-- --- -- --- - ----------_ .- Series/1 • SC34-0638-0 Event Driven Executive Communications Guide Version 5.0 Library Guide and Common Index Installation and System Generation Guide Operator Commands and Utilities Reference SC34·0645 SC34-0646 SC34-0644 Language Reference Communications Guide Messages and Codes SC34-0643 SC34-0638 SC34'()636 Operation Guide Event Driven Language Programming Guide Reference Cards SC34-0642 SC34-0637 SBOF-1625 Problem Determination Guide Customization Guide Internal Design SC34-0639 SC34-0635 LY34.()354 --..-- --- . --- ---- - -- ---- Series/1 -~-,- SC34-0638-0 Event Driven Executive Communications Guide Version 5.0 c Communications Guide SC34-0638 o o First Edition (December 1984) This is a revision of, and obsoletes, SC34-0443-0. Use this publication only for the purposes stated in the following section, "About This Book." Changes are made periodically to the information herein; any such changes will be reported in subsequent revisions or Technical Newsletters. This material may contain reference to, or information about, IBM products (machines and programs), programming, or services that are not announced in your country. Such references or information must not be construed to mean that IBM intends to announce such IBM products, programming, or services in your country. Publications are not stocked at the address given below. Requests for copies of IBM publications should be made to your IBM representative or the IBM branch office serving your locality. This publication could contain technicalJDaccuracies or typographical errors. A form for readers' comments is provided at the back of this publication. If the form has been removed, address your comments to IBM Corporation, Information Development, Department 28B, P. O. Box 1328, Boca Raton, Florida 33432. IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation whatever. You may, of course, continue to use the information you supply. © Copyright International Business Machines Corporation 1983 o 0 ', "I Summary of Changes for Version 5 The only changes made to this document for Version 5 are miscellaneous editorial enhancements. o c Summary of Changes for Version 5 iii o o iv SC34-0638 o About This Book The information in the Communications Guide pertains to the Event Driven Executive Version 5, modification level O. The book describes the use of various forms of data communications that are available with Series/ I and the Event Driven Executive. It covers several methods of Binary Synchronous Communications (BSC), operation of a host system with a Series/I, communications between two Series/Is, and communications between Series/I and multiple peripheral devices. It tells the reader how to prepare for data communications operations, how to use Event Driven Language (EDL) instructions to perform communications functions, and how to use Event Driven Executive communications utilities. o In conjunction with the Communications Guide, the following books provide information to help perform data communications: Language Reference provides syntax and descriptions of EDL instructions. • Messages and Codes lists the error messages and codes issued for communications. • Operator Commands and Utilities Reference provides information on the use of communications utilities. Audience Readers of the Communications Guide should have the following: Knowledge of data communications concepts in general Experience in communications programming for either IBM or non-IBM products o About This Book v o Contacting IBM about Problems You can inform IBM of any inaccuracies or problems you find when using this book by completing and mailing the Reader's Comment Form provided in the back of the book. If you have a problem with the Series/l Event Driven Executive services, fill out an authorized program analysis report (APAR) form as described in the IBM Series/l Software Service Guide, GC34-0099. o o About This Book vii o o viii SC34-0638 o Contents Introduction to Communications Guide CO-l Part 1. Binary Synchronous Communications CO-3 Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-5 Terms Used in this Chapter CO-6 Planning for BSCAM Operations CO-6 U sing Data Links CO-7 Selecting HSC Line Connection Types CO-7 Meeting Hardware Requirements CO-8 Including BSCAM Support in the Supervisor CO-12 Selecting Type of Data to Transmit CO-14 Selecting Mode of Transmission CO-IS Programming for BSCAM Applications CO-16 Basic Programming Functions for BSCAM CO-16 Acquiring Use of a BSC Line CO-17 Coding Control Block for Read and Write Operations CO-17 Sending Data CO-19 Receiving Data CO-26 Providing for Errors During BSCAM Operations CO-29 BSCAM Sample Programs CO-29 WRITE Sample Program CO-29 READ Sample Program CO-31 Interacting with BSCAM (Using BSC Utilities) CO-32 Tracing I/O Activities on a BSC Line (Using $BSCTRCE) CO-33 Formatting Trace Files for Print or Display (Using $BSCUTl) CO-34 Testing BSCAM Operations (Using $BSCUT2) CO-38 Monitoring BSC Lines with the Communications Indicator Panel CO-4S o Contents ix Contents Using X.2l Switched Network Support CO-48 Attaching and Jumpering the 2080 Card CO-48 System Generation for X.2l Support CO-48 The $$X2lDS Connection Record Data Set CO-49 Convert BSC Program for X.2l CO-51 X.2l Error and Call Progress Signal Logging CO-52 o Chapter 2. Remote Management Utility ($RMU) CO-57 Planning for the Remote Management Utility Operations CO-59 Types of Line Connections CO-59 Mode of Transmission CO-60 Storage Considerations CO-60 Remote System Requirements CO-60 Host System Requirements CO-6l Remote Management Utility Defaults CO-62 Host Programming for the $RMU Application CO-66 Using Event Driven Language BSC Instructions CO-66 Receiving $RMU's Responses to Host Requests CO-67 Coding the Required Field for Requests to $RMU CO-70 Managing Disk/Diskette Data Sets CO-70 Controlling Data Transfers between Host and Remote Systems CO-78 Remote System Echoing Host Data (WRAP) CO-84 Controlling Program Execution on the Remote System CO-86 Verifying Identities between Systems (IDCHECK) CO-94 Interacting Between Host and Remote Systems (PASSTHRU) CO-96 Considerations for Using PASSTHRU CO-96 Establishing a PASSTHRU Session CO-99 Conducting a P ASSTHR U Session CO-l02 PASSTHRU Record Types CO-l04 P ASSTHRU Blocking CO-l08 Sample Programs CO-l09 Multifunction Program CO-l09 RECEIVE Sample Program CO-Ill SEND Sample Program CO-lIS PASSTHRU Sample Program CO-117 Example of Conducting a PASSTHRU Session CO-125 Chapter 3. Host Communications Facility CO-127 Planning to Use the Host Communications Facility CO-128 Installation Requirements CO-128 Host Data Sets CO-128 Opening Host Data Sets CO-130 System Status Data Set CO-130 Host Storage CO-132 Data Transfer Rates CO-132 Tasks Common to Programming and Using $HCFUTI CO-132 Programming for the Host Communications Facility Application CO-132 Event Driven Language Instruction Set CO-132 o x SC34-0638 o Controlling Data Transfers between Series/l and Host CO-133 Submitting Background Jobs to the Host CO-135 Performing Status Functions CO-135 Obtaining Time and Date from the Host CO-136 Sample Programs CO-136 Sample Program to Receive a Host Data Set CO-138 Interacting with the Host Communication Facility ($HCFUTl) CO-139 Transferring Host Data to Series/l CO-139 Performing Status Functions CO-141 Submitting Jobs to the Host Job Stream CO-141 Sending Data to the Host CO-141 Part 2. Channel Attach CO-143 o Chapter 4. Channel Attach Program CO-145 Planning for the Channel Attach Application CO-145 Channel Attach Program ($CAPGM) CO-145 Channel Attach Device (4993) CO-146 Software Considerations CO-146 Hardware Considerations CO-146 Tailoring the Channel Attach Program CO-147 Powering On The Channel Attach Device CO-148 Programming for the Channel Attach Application CO-148 Event Driven Executive Instruction Set CO-148 Detecting and Handling Errors CO-149 BT AM Considerations CO-149 Assembling the Application Program CO-150 Link-Editing the Application Program CO-150 Starting a Channel Attach Device CO-151 Opening a Channel Attach Port CO-152 Coding the Control Block for a Channel Attach Port CO-152 Issuing I/O CO-152 Closing a Channel Attach Port (CACLOSE) CO-154 Stopping the Channel Attach Device (CASTOP) CO-154 Tracing Series/1 I/O during Channel Attach (CATRACE) CO-155 Printing Channel Attach Trace Data (CAPRINT) CO-155 Interacting with Channel Attach (Using $CHANUT1 Utility) CO-155 $CHANUTI Commands CO-155 Channel Attach Sample Programs CO-157 Configuration Requirements for Sample Programs CO-157 General Guide for Execution of Sample Programs CO-158 Host Sample Program CO-165 Part 3. Specialized Series/1 Event Driven Executive Communications Methods CO-173 Chapter 5. Series/l-to-Series/l Attachment Support CO-175 o Contents xi Contents o Planning the Series/1-to-Series/1 Application CO-175 Processor Relationships CO-176 Initiating Data Transfers CO-176 Responding to External Events CO-176 Programming for Series/ 1-to-Series/ 1 Attachment CO-179 Event Driven Language Instruction Set CO-179 Basic Programming Tasks CO-179 Programming Considerations CO-181 Programming Examples CO-183 Interacting with the Series/1-to-Series/1 Attachment (Using $SlSlUTl) CO-194 Chapter 6. General Purpose Interface Bus - IEEE Standard 488-1975 CO-199 Planning for the GPIB Application CO-199 System Generation for GPIB CO-199 Relationship between Series/land GPIB Devices CO-200 Assigning Device Addresses CO-200 Initializing and Configuring the Bus CO-201 Programming for the GPIB Application CO-203 Event Driven Language Instruction Set CO-203 Programming Considerations CO-204 Coding GPIB Functions CO-212 GPIB Sample Program CO-216 Interacting with the GPIB Application (Using $GPIBUTl) CO-220 Debugging Applications with $GPIBUT1 CO-227 $GPIBUT1 Utility Example CO-228 Detecting Errors During GPIB Operations CO-233 Examining Interrupt Status Byte CO-233 Examining Cycle Steal Status Block CO-234 Retrieving Cycle Steal Status CO-234 Retrieving Residual Status Block CO-235 Glossary of Terms and Abbreviations CO-237 Index CO-247 xii SC34-0638 r,;1--~"I -'--.J Figures 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. Specifying BSCLINE TYPE= Operand CO-13 Event Driven Language BSC Instructions CO-16 Example of Coding BSCOPEN and BSCCLOSE Instructions CO-17 Example of Coding BSCIOCB Instruction CO-18 Buffers Required for Write Operations CO-18 Buffers Required for Read Operations CO-19 Initial Write Types CO-20 Control Character Flow for Initial Write Instructions CO-21 Control Character Flow for Initial Conversational Write Instructions CO-21 Control Character Flow for Initial Transparent Write Instructions CO-21 Control Character Flow for Initial Transparent Block Write Instructions CO-22 Control Character Flow for Initial Conversational Transparent Write Instructions CO-22 Continue Write Types CO-23 Control Character Flow for Continue Write Instructions CO-23 Special Write Types CO-24 Control Character Flow for Special Write Type Instructions CO-25 Programming Sequences for Sending Data CO-26 Read Types CO-27 Dumping Trace File Records CO-35 Dump of the LAST RECORD of Trace File CO-36 Trace Record Fields CO-37 Communications Indicator Panel CO-47 Mapping Procedures for BSC X.21 Circuit Switched Support CO-49 Connection Record Format Fields CO-50 X.21 BSCOPEN Coding Example CO-51 Example of the X.21 Printed Log Information for a Read Error CO-52 Example of the X.21 Printed Log Information for a Device Error CO-54 Device Error Codes CO-55 Call Progress Signal Counter Usage CO-56 Communication Between Host and Remote Systems CO-59 $RMU Status Failure Codes CO-68 Required Fields for ALLOCATE Request CO-72 Communications Flow for ALLOCATE CO-74 Required Fields for DELETE Request CO-75 Communications Flow for DELETE CO-76 Required Fields for DUMP Request CO-77 o Figures xiii Figures o 37. Communications Flow for DUMP CO-78 38. Required Fields for RECEIVE Request CO-80 39. Communications Flow for RECEIVE CO-8l 40. Required Fields for SEND Request CO-83 41. Communications Flow for SEND Request CO-84 42. Required Fields for WRAP Request CO-85 43. Communications Flow for WRAP CO-86 44. Required Fields for EXEC Request CO-88 45:' -Communications Flow for EXEC CO-90 46. Required Fields for SHUTDOWN Request CO-92 47. Communications Flow for SHUTDOWN CO-94 48. Required Fields for IDCHECK Request CO-95 49. Communications Flow for IDCHECK CO-95 50. Required Fields for PASSTHRU Request CO-99 51. Communications Flow for PASSTHRU CO-1Ol 52. Example of PASSTHRU Records Received by Host CO-l07 53. Multifunction Sample Program CO-l09 53. $RMU Multifunction Program CO-l09 54. RECEIVE Sample Program CO-Ill 54. RECEIVE Sample Program CO-Ill 55. SEND Sample Program CO-115 56. PASSTHRU Sample Program CO-118 57. Example of Conducting a PASSTHRU Session CO-125 58. EDL TP Instructions CO-133 59. System Status Data Set Sample Program CO-136 60. Sample Program to Send Data Set to the Host CO-137 61. Sample Program to Receive a Host Data Set CO-138 62. $HCFUTI Commands CO-139 63. Listing of USERPGM Data Set CO-lSI 64. Series/l Sample Program CO-159 65. Host Sample Program CO-165 66. Program for Posting an Event Control Block CO-l77 67. EDL Instructions for Communication between Series/Is CO-179 68. TERMCTRL Functions for Series/l-to-Series/l Communications CO-180 69. Usage of READTEXT/PRINTEXT without Direct I/O CO-182 70. Primary Processor Sample Program CO-184 71. Secondary Processor Sample Program CO-188 72. Synchronization Sample Program CO-l92 73. Listen and Talk Addresses for GPIB Devices CO-20l 74. GPIB Sample Program CO-2l6 75. GPIB Utility Example CO-228 xiv SC34-0638 (---~\ \",-:~ Introduction to Communications Guide The Communications Guide discusses the data communications methods that are available as part of the Event Driven Executive system, and in conjunction with Installed User Programs (IUPs). "Part 1. Binary Synchronous Communications" on page CO-3 covers three methods of communications that use binary synchronous protocol: Binary Synchronous Communications Access Method (BSCAM) Remote Management Utility ($RMU) • Host Communications Facility (HCF) "Part 2. Channel Attach" on page CO-143 discusses communications between the Series/l and a larger host system. "Part 3. Specialized Series/l Event Driven Executive Communications Methods" on page CO-173 covers two methods of communications unique to Series/l under the Event Driven Executive: • Series/ I-to-Series/ 1 Attachment • General Purpose Interface Bus (GPIB) o Introduction to Communications Guide CO-l In addition to the methods mentioned above, several licensed programs offer forms of communications with the Event Driven Executive: o Multiple Terminal Manager Systems Network Architecture/Synchronous Data Link Control Communications Facility Licensed programs can be purchased separately from the basic system, along with documentation on their use. ~-'''''\' I "oC::' co- 2 SC34-0638 o Part 1. Binary Synchronous Communications Part 1 covers the following forms of binary synchronous communications: Binary Synchronous Communications Access Method (BSCAM) o • Remote Management Utility ($RMU) • Host Communications Facility (HCF) o Part 1. Binary Synchronous Communications CO-3 Notes o o CO-4 SC34-0638 Chapter 1. Binary Synchronous Communications Access Method (BSCAM) o The Binary Synchronous Communications Access Method (BSCAM) provides I/O access at a read/ write level using a BSC protocol similar to that of BTAM. It allows the Series/Ito communicate with local and remote processors and terminals. The BSCAM access method is also the basis for the Remote Management Utility ($RMU), which runs on the Series/l and allows it to be controlled by a host system. $RMU is discussed in Chapter 2, "Remote Management Utility ($RMU)" on page CO-57. BSCAM supports the attachment of multiple BSC lines to the Series/I. Data can be either transparent or nontransparent. Stations acknowledge transmissions either with standard BSC control characters or with conversational responses. The transmission code that BSCAM uses is EBCDIC. Hardware features and BSC protocol that BSCAM does not support are: ASCII mode Leading graphics support Transparent ITB and ENQ transmission. BSCAM provides I/O at the READ/WRITE access level. It does not insert or delete control character sequences from the data you place in your buffers. When sending data, you must place the proper start and end-of-transmission control characters (STX, DLE STX, and ETX) in your output buffer. The only case in which you must not place characters in your output buffer is when you are sending the transparent end-of-transmission and end-of-block (DLE ETX and DLE ETB) sequences. Do not place these control characters in your buffer. When you receive data, your input buffer will contain all the control characters that it received in the transmission. o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-5 Binary Synchronous Communications Access Method (BSCAM) For a general introduction to binary synchronous communications and details of line protocol used by the Event Driven Executive, refer to General Information - Binary Synchronous Communications, GA27-3004. Application programs that run under BSCAM consist of special Event Driven Language BSC instructions. These programs send and receive data from one or more stations. In addition, several BSC utilities check the way BSCAM is working by monitoring and simulating its operations. This chapter tells how to: • Plan to use BSCAM. • Write application programs with the special set of BSC instructions. Use the BSC utilities to check for potential problems. Use the X.21 digital communications capabilities. Terms Used in this Chapter Below are some definitions of terms used throughout this chapter. The computers that are communicating are called stations. The data records sent and received are called messages. The station sending messages (writing) is called the sending or transmitting station. The station receiving messages (reading) is called the receiving station. Planning for BSCAM Operations Before you can begin to use BSCAM, your system must have certain hardware and software support. The combination of support on your system determines the type of programs you should write and the way you can use BSCAM. CO-6 SC34-0638 o o Planning for BSCAM Operations (continued) The sections that follow will help you to: Select the hardware and software you need to use BSCAM and define the support during system generation. Determine what hardware and software your system already supports, if system generation has already been done. Decide which of the BSCAM features you will use. Using Data Links BSCAM supports transmission over switched and nonswitched (leased) data links. The data link is the line provided by a common carrier over which data is transmitted from your station to another station. BSCAM supports half-duplex transmission only. Only remote connections between stations need a data link. (Local connections use direct-connect.) If you plan to communicate with a remote station, make sure your system is linked to either a switched or a nonswitched line. Selecting BSC Line Connection Types o One of the most important things you must decide about a BSC line is the type of station it will function as. BSCAM supports connection of multiple BSC lines to a Series/I. Think of each BSC line as a separate physical entity, functioning independently of the others. As far as each BSC line knows, it has an exclusive connection with the Series/I. One BSC line may function as a point-to-point station communicating over a switched data link. Another line (installed on the same processor) may function as a multipoint tributary on a leased link. Still another may be a multipoint control station. Every BSC line that you have attached to your Series/1 can form one of several types of connection with the processor. Select the type of connection you want to establish for each BSC line on Series/I. Then refer to "Defining a BSC Line to the Supervisor" on page CO-12 for details on defining your selections to the system. If system generation has already been done, use the $IOTEST utility LS (list supervisor configuration) command to determine the assignment of each BSC line. The type of connection each BSC line forms with your Series/1 affects the way you program that line to send and receive data. Point-to-Point Connection If a BSC line forms a point-to-point connection with your Series/I, it will handle communications between your processor and one other station. The connection between the two stations can be either local or remote. In remote connections, the data link can be either switched or leased. Local connections use a direct connection. In a point-to-point connection, each station contends with equal priority for the right to send data across the line. o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-7 Binary Synchronous Communications Access Method (BSCAM) Planning for BSCAM Operations (continued) o Multipoint Connection If a BSC line forms a multipoint connection with your Series/I, it handles communications between your processor and one or more other stations. You can designate your Series/Ito act either as the control station or as a tributary station in the multipoint connection. A control station is in charge of which of the multiple stations has the right to transmit at any given time. It governs the other stations by polling (asking the tributary if it is ready to send data) and selecting (asking the tributary if it is ready to receive data). The tributary has direct communication only with the control station, and then only when the control station polls or selects it. To send data to another tributary that is under the same control station, the first tributary sends the data directly to the control station, which in turn sends it to the specified tributary. For more information on polling and selecting, refer to the section "Sending Poll/Select Sequences" on page CO-20. Note: The hardware does not use the correct selection sequence if you specify cluster addresses 'C1' and '50' for a device emulating a 3270 on a BSC line. Meeting Hardware Requirements Before you can actually use BSCAM to communicate with other stations, you must ensure that the following hardware is installed on your Series/I: • BSC lines are attached with control provided for each of them. Modem or modem eliminator is attached to the BSC line(s) (if applicable). The attachment (physical connection) and control (interface with BSCAM) of a BSC line can be provided by one of several Series/1 communications features. These features are actually hardware cards installed in the processor or I/O expansion unit of your Series/I. Some types of cards attach a single BSC line to the Series/I, while other cards can attach multiple lines. Determining Existing Hardware Configuration and BSC Line Addresses To determine the hardware address and feature type of each communications card already installed on your system, load the $IOTEST utility, and issue the LD (List Devices) command. To determine the address of each BSC line defined to the supervisor, again use $IOTEST and issue the LS (List Supervisor Configuration) command. o CO-8 SC34-0638 o Planning for BSCAM Operations (continued) Series/1 Communications Features Here is a list of the communications features that control and attach BSC lines to the Series/1. For details on the functional characteristics and installation of these features, refer to the IBM Series/l Binary Synchronous Communications Feature Description, GA34-0244. IBM 2074 BSC Single-Line Control, Medium Speed: This communications feature card makes the physical connection of one BSC line to the Series/1. It also provides control of the line. You can use this feature for BSC lines that you will use to form either point-to-point or multipoint connections. The point-to-point connections can be either local or remote; for remote operation, the data link can be either switched or leased. Multipoint connections must use a leased data link. For details on the functional characteristics and installation of this card, refer to the IBM Series/l Binary Synchronous Communications Feature Description, GA34-0244. The single-line control feature requires an electrical interface compatible with RS-232C (CCITT V.24). Its maximum data transfer rate is 9600 bits per second. In addition, it supports the following calling features: manual call, manual answer, and automatic answer (the last feature applies to switched connections only). The single-line control allows IPL from another system through use of its BSC line. o IBM 2075 BSC Single-Line Control, High Speed: This communications feature card attaches and controls one BSC line. Its characteristics are similar to the medium-speed control (2074) described above, but with the following differences: It is for use in remote operations only, since it has no internal clocking and, therefore, cannot be used in direct connections. It operates in point-to-point leased and multipoint connections. It requires a Western Electric 303 modem (or equivalent), or an electrical interface compatible with CCITT V.35. Its maximum data transfer rate is 56K bits per second. For details on the functional characteristics and installation of this card, refer to the IBM Series/l Binary Synchronous Communications Feature Description, GA34-0244. o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-9 Binary Synchronous Communications Access Method (BSCAM) Planning for BSCAM Operations (continued) o IBM 2080 Synchronous Communications Single-Line Control, High Speed: This communications feature card attaches and controls one BSC line. It is required if you want X.21 digital data communications capabilities for your Series/I. It has the following characteristics: • It operates in point-to-point connections only for BSC switched mode and point-to-point and multipoint for BSC leased mode. • It can be jumpered for switched or leased mode. • It requires an electrical interface compatible with CCITT V.35 (leased) or an X.21 electrical interface (switched or leased). • Its maximum data transfer rate is 48K bits per second. For details on the functional characteristics and installation of this card, refer to the IBM Series/l Synchronous Communication Single-Line Control Attachment Feature Description, GA34-0241. IBM 2093/2094 BSC 8-Line Control and BSC 4-Line Adapter(s): These features, used together, can attach and control up to 8 BSC lines. The 8-line control is for use with one or two 4-line adapters (which provide only attachment of lines). The characteristics of these features are similar to those of the BSC Single-Line Control. /,-'-~, <,j For details on the functional characteristics and installation of this card, refer to the IBM Series/l Binary Synchronous Communications Feature Description, GA34-0244. IBM 1310 Multifunction Attachment: This feature can attach one BSC line to the Series/l and conforms to RS-232C interface standards. The use of this feature requires special system definitions during system generation for your Series/I. For details on the functional characteristics and installation of this card, refer to the IBM Series/l Multifunction Attachment Feature and 4975 Printer Description, GA34-0144. o CO-I0 SC34-0638 o Planning for BSCAM Operations (continued) IBM RPQ 002349 Direct BSe Attachment: This feature controls the serial transfer of data to and from remote terminals or systems using direct-connect cabling for half-duplex, single-line capability. It has the following characteristics (for more information, refer to IBM Series/l Direct Binary Synchronous Communication Attachment RPQ D02349 Custom Feature, GA34-I577: • It conforms to EIA RS-422 electrical interface standards. Data transmission is serial-by-bit using BSC transmission method. It can be used as either a primary or a secondary station. It is able to send and receive transparent data for EBCDIC only. Its maximum data transfer rate is 38,400 bits per second if you jumper for internal clocking and 56,000 bits per second if you jumper for data terminal equipment clocking to another system. Special Considerations for Multipoint Tributary Stations If you plan to use a BSC line as a multipoint tributary station, you must ensure that its feature card is jumpered with DTR (data terminal ready) permanently enabled. This means that the electrical interface or modem always leaves the line open to receiving data from its multipoint control station. Special Considerations for Local (Direct Connect) Operation If you are using a Multifunction Attachment card to attach a BSC line to your Series/I, and you plan to use that line in a local (direct) connection, then you must use a modem eliminator, to act as the electrical interface in the direct connection. The modem eliminator must meet the electrical interface requirements of the feature cards to which it connects. If you are using a single-line, medium speed control or the 8-line control with 4-line adapter, then you do not need to use a modem eliminator. The direct connection is made between the communicating lines. However, ensure that internal clocking is jumpered on the card(s) to provide direct connection. As stated previously, the 2075 single-line control, high speed feature card cannot be used for direct connections. Optional Hardware The Communications Indicator Panel (model #2000) is an optional piece of hardware that is useful in program debugging and hardware troubleshooting. Refer to the section "Monitoring BSC Lines with the Communications Indicator Panel" on page CO-45 for information on using the panel. o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-II Binary Synchronous Communications Access Method (BSCAM) Planning for BSCAM Operations (continued) o Including BSCAM Support in the Supervisor You must ensure that your supervisor supports the BSC hardware and operation of the BSCAM access method. This is done during system generation, when you must include a statement to define each BSC line to the supervisor. You must also include the supervisor module that supports BSCAM. Note: For X.21, you must include the BSCX21 module. The statement that defines BSC lines is called BSCLINE. The supervisor module that includes BSCAM support is called BSCAM. For step-by step directions on performing system generation, refer to the Installation and System Generation Guide. If system generation is already complete, you can find out what the supervisor supports. Load the $IOTEST utility and issue the LS (List Supervisor Configuration) command. Defining a BSe Line to the Supervisor Each BSC line attached to the Series/l needs a BSCLINE statement to define it to the supervisor. Code the statements in the system definition data set, which defines hardware support. For each line, you must.define the following: • Hardware address (in hexadecimal) of the line • Type of connection (point-to-point, multipoint) it is part of Number of retries before a timeout occurs on the line • Communications feature that attaches the line. Specifying SSC Line Type (TYPE=Operand of SSCLINE): The TYPE= operand of the BSCLINE statement is where you tell the system what type of station the line functions as. Here is a list of the available station types and how to code them in a BSCLINE statement. Note: For a complete mapping of connection types for X.21, see "Using X.21 Switched Network Support" on page CO-48. CO-12 SC34-0638 ("'(-~\ \0 o Planning for BSCAM Operations (continued) Type Connection What to code PT point-to- point local remote (leased) BSCLINE TYPE=PT SM point-to- point remote (switched) manual call BSCLINE TVPE=SM SA point-to- point remote (switched) automatic answer BSCLINE TVPE=SA MC multipoint control station remote (switched) BSCLINE TVPE=MC MT multipoint tributary station remote (switched) BSCLINE TVPE=MT For X.21 only AC pOint-to-point switched auto call BSCLINE TVPE=AC DC pOint-to-point switched direct call BSCLINE TVPE=DC Figure 1. Specifying BSCLINE TYPE= Operand When a BSC line is attached with a Multifunction Adapter (MFA), you must code the parameter ADAPTER=MFA in the BSCLINE statement for the line. In addition, you must code an ADAPTER statement, specifying the address of the line in the ADDRESS= parameter. Note: The address specified in the BSCLINE and ADAPTER statements must be identical. Refer to the Installation and System Generation Guide for details on the BSCLINE and ADAPTER statements. When a BSC line acts as a Multipoint Tributary Station, you must specify the poll/select addresses (up to 4) that the line should respond to during polling/selection by its control station. o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-I3 Binary Synchronous Communications Access Method (BSCAM) Planning for BSCAM Operations (continued) o Defining BSCAM Supervisor Module Support You must tell the supervisor to support BSCAM operations. During system generation, edit the link control data set, which defines software support to the supervisor, to include the BSCAM module. Note: For X.21, you must include the BSCX21 module. Refer to the Installation and System Generation Guide for details on defining BSCAM software support. Selecting Type of Data to Transmit You can transmit data in several forms during BSCAM operations. The type of data affects the way you write programs to send it. Standard Data (Nontransparent) When BSCAM transmits nontransparent data, the receiving station interprets the bits according to the EBCDIC code. If the data contains bit combinations that represent BSC control characters, the receiving station will recognize and act on the meaning of the characters. Nontransparent data is commonly used to transmit text. You must be sure that the data you wish to send does not contain bits that look like BSC control characters. If the data does contain control characters, the receiving station will not receive the transmission correctly. Transparent Data Transparency allows you to transmit data with bit combinations that look like BSC control characters, without the receiving station interpreting them. It allows you to send raw binary data regardless of what the data looks like. It also allows you to store control character sequences in a buffer at the receiving station. The data-link-escape (DLE) is the control character used to transmit transparent data. The sequence DLE STX tells the station that is going to receive transparent data, and to ignore any control characters in the data. The sequence DLE ETX or DLE ETB signals the end of a transmission of transparent data, and tells the station to begin recognizing control characters again. While receiving transparent data, a station will only recognize control character sequences preceded by the DLE. o CO-14 SC34-0638 o Planning for BSCAM Operations (continued) Sending Transparent Data in Blocks You may want to break up a long transmission of transparent data into blocks and send each separately. Each block of data is checked for transmission errors, and only those blocks not properly received must be sent again. This is more efficient than sending all the data in one very long transmission. In that case, if one error occurred, then the entire body of data would have to be retransmitted, wasting time and tying up resources. Selecting Mode of Transmission Transmissions are possible in two different modes under BSCAM. Standard Transmission Mode With standard transmission under BSCAM, acknowledgements and responses between stations consist of predefined BSC control characters which are not stored at the receiving station. Limited Conversational Response Transmission Mode o Under BSCAM, you can transmit control characters or text data in response to a message by using limited conversational mode of transmission. You can send a conversational response only as a positive acknowledgement to a complete message (one that ended with ETX or DLE ETX). You cannot send conversational replies when receiving block messages (ending with DLE ETB or ETB). You can begin your conversational reply with either SOH or STX, which the other station interprets as a positive acknowledgement to its last transmission. You can also send transparent data (beginning with DLE STX) as a conversational response. However, after you send one transparent conversational response, the next response you send cannot be transparent as well. Conversational responses are stored in the input buffer of the receiving station. BSCAM checks buffer contents and reports any transmission errors that the response may indicate. The first station can send its next message only after it gets the proper conversational response. o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-IS Binary Synchronous Communications Access Method (BSCAM) Programming for BSCAM Applications o To perform BSCAM communications between your Series/1 and any station(s) connected to it, you write application programs using a set of Event Driven Language (EDL) BSC instructions. Listed below are the BSC instructions and their basic uses. Refer to the Language Reference for details on syntax and operands for each of the BSC instructions. Instruction BSCCLOSE Function Frees a BSC line for use by other tasks. Code at the end of each task or program. BSCIOCB Specifies BSC line address and buffers for all BSC operations A nonexecutable instruction, referred to in every other BSC instruction. BSCOPEN Prepares a BSC line for use by a task. Code at the beginning of each program or task. BSCREAD Reads data from a BSC line. Consists of several variations, called "types," each used to read data in a different way. Code to receive data from another station. BSCWRITE Writes data to a BSC line. Consists of several variations, called "types," each used to write data in a different way. Code to initiate data transfer to another station. Comments Figure 2. Event Driven Language BSe Instructions Each instruction requires certain BSC control character sequences to be transmitted between stations. The sections that follow, which discuss the use of the BSC instructions, also contain information on the control characters associated with each instruction. Basic Programming Functions for BSCAM The two basic BSCAM functions are: • Write operations to send data to another station Read operations to receive data from another station. o CO-16 SC34-0638 o Programming for BSCAM Applications (continued) In addition, your program must acquire the use of a BSC line and must provide buffers and include other control information. This section shows how to use the BSC instructions to perform BSCAM functions. Acquiring Use of a BSC Line You must gain the exclusive use of a BSC line before beginning a read or write operation, and release it when the operation is over. The BSCOPEN instruction gets the line, and the BSCCLOSE instruction gives up the line. Both instructions require the label of the BSCIOCB instruction associated with the particular operation. The BSCIOCB instruction is discussed in the next section. OPEN BSCOPEN CLOSE BSCCLOSE BSCIOCB,ERROR=END BSCIOCB,ERROR=END Figure 3. Example of Coding BSCOPEN and BSCCLOSE Instructions Coding Control Block for Read and Write Operations c BSCIOCB provides control information used by the other BSC instructions to perform read and write operations. Each BSC instruction must refer to the label of a BSCIOCB instruction. When you code BSCIOCB, specify the following: BSC line address to be used throughout the operation Address and length of any buffer(s) to be used Polling or selection sequence to be used by a control station. When you code BSCIOCB, you need to know: • BSC line type (control, tributary, point-to point) in use • Write type you are using (determines buffer requirements) • Read type you are using (determines buffer requirements) Length of records (messages) to be sent or received • Tributary station device type (determines poll/select sequence used by control station). Consult the tributary device description manual for correct poll and select sequences. o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-17 Binary Synchronous Communications Access Method (BSCAM) Programming for BSCAM Applications (continued) o Below is an example of a BSCIOCB instruction that specifies line 19, and one buffer 80 bytes in length. I lOCB BSCIOCB 19,BUFFER,80 Figure 4. Example of Coding BSCIOCB Instruction Code the BSCIOCB instruction outside the executable area of your programs. Note: For an X.21 example, see "Using X.21 Switched Network Support" on page CO-48. Specifying Buffers The number of buffers required during a BSCAM operation depends on the read or write type. Most write types need at least one buffer. However, the conversational writes need two buffers, and the types D, E, EX, and N, do not need any buffers at all. Write type (code) C CV CVX ex CXB D E EX I IV IVX IX IXB N Q U UX Number of buffers 1 2 2 1 1 0 0 0 1 2 2 1 1 0 1 1 2 Write type (name) Continue Continue Conversational Continue Conversational Transparent Continue Transparent Continue Transparent Block Delay End End Transparent Initial Initial Conversational Initial Conversational Transparent Initial Transparent Initial Transparent Block NAK Inquiry User User Transparent Figure 5. Buffers Required for Write Operations Most read types need only one buffer. However, the types D and Q do not require any buffers. o CO-18 SC34-0638 o Programming for BSCAM Applications (continued) Read type (code) C D E I P Q R U Number of buffers Read type (name) 1 0 1 1 1 0 1 1 Continue Delay End Initial Poll Inquiry Repeat User Figure 6. Buffers Required for Read Operations Sending Data Under BSCAM, the instruction that sends data is BSCWRITE. Control character sequences are generated when a BSCWRITE instruction executes, and certain acknowledgements are exchanged between the sending and receiving stations. You must specify which type of write operation you need to perform, according to the situation. These write types, and the reasons for using each, are covered in the sections that follow. In your program to send data, you will: Define line address and buffers (BSCIOCB). Acquire the BSC line for use by your program (BSCOPEN). • Transmit data with one or more BSCWRITE instructions (one instruction for each message). • Give up the use of the BSC line (BSCCLOSE). Selecting BSCWRITE Types There are several different types of write operation, each used to transmit data in a different form or situation, and each coded a different way with the BSCWRITE instruction. The factors that determine which type to use are: • Type of data (transparent, nontransparent) • Mode of transmission (standard, conversational) Order of transmission of messages • Special conditions that occur during transmission. The sections that follow tell how and when to code the various types of BSCWRITE instruction. o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-19 Binary Synchronous Communications Access Method (BSCAM) Programming for BSCAM Applications (continued) o Sending the First Message Code an initial write instruction to send the first message in a transmission. Different types of initial write instructions exist for each of the modes of transmission, for each of the data types, and for combinations of the two. In the following table, find the type of data you are sending and the mode of transmission you're using. The table will tell you which type of initial write instruction to code, and how to code it. Each write type consists of BSCWRITE followed by a suffix. Data Type Transmission Mode Write Type What to code Standard Standard Initial BSCWRITE I Standard Conversational Initial Conversational BSCWRITE IV Transparent Standard Initial Transparent BSCWRITE IX Transparent Conversational Transparent Initial Conversational Transparent BSCWRITE IVX Transparent Block Standard Initial Transparent Block BSCWRITE IXB Figure 7. Initial Write Types Sending Po!!/Ss!sct Sequences If your station is acting as the control station on a multipoint line, then it must poll and select its tributaries. To send each poll/ select sequence, code any initial write instruction. The poll/ select sequence consists of the following characters: EOT (poll or selection address) ENQ--------- > You must place the ENQ and the poll or selection address in your output buffer, as specified in your BSCIOCB statement. For more information on the poll/select sequence, refer to General Information - Binary Synchronous Communications. Control Characters Associated with Initial Write Instructions When an initial write instruction executes, certain BSC control characters must go across the line to the receiving station. The tables that follow show the flow of characters that must accompany each initial write instruction. The access method generates the ENQ and ACK sequences, but you must supply all other control characters in your output buffer. o CO-20 SC34-0638 o Programming for BSCAM Applications (continued) Instruction BSCWRITE I Sending Station Type of Connection point-to- point BSCWRITE I multipoint control station BSCWRITE I multipoint tributary Control Character Flow Sending Receiving ENQ------------> <------------ACK ETX (Text) STX---> < - - - - (Response character) EOT------------> ENQ (Address)-------> <------------ACK ETX (Text) STX------> <-----(Response character) ETX (Text) STX-----> <-----(Response character) Figure 8. Control Character Flow for Initial Write Instructions Instruction BSCWRITE IV c Sending Station Type of Connection point-to- point BSCWRITE IV multipoint control station BSCWRITE IV multipoint tributary Control Character Flow Sending Receiving ENQ--------------> <----------- -ACK ETX (Text) STX-----> <----(Response Text) EOT------------> ENQ (Address)-----> <------------ACK ETX (Text) STX----> <-----(Response Text) ETX (Text) STX-----> <-----(Response Text) Figure 9. Control Character Flow for Initial Conversational Write Instructions Instruction BSCWRITE IX Sending Station Type of Connection point-to- point BSCWRITE IX multipoint control station BSCWRITE IX multipoint tributary Control Character Flow Sending Receiving ENQ------------> <------------ACK OLE ETX (Text) OLE STX-----> <-----(Response Character) EOT------------> ENQ (Address)------> <------------ACK OLE ETX (Text) OLE STX-----> <-----(Response Character) OLE ETX (Text) OLE STX-----> <-----(Response Character) Figure 10. Control Character Flow for Initial Transparent Write Instructions o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-21 Binary Synchronous Communications Access Method (BSCAM) Programming for BSCAM Applications (continued) Instruction BSCWRITE IXB Sending Station Type of Connection point-to- point BSCWRITE IXB multipoint control station BSCWRITE IXB multipoint tributary o Control Character Flow Sending Receiving ENQ-------- ----> <------------ACK OLE ETB (Text) OLE STX-----> <----(Response Character) EOT------------> ENQ (Address)-----> <--- ---------ACK OLE ETB (Text) OLE STX-----> <-----(Response Character) OLE ETB (Text) OLE STX-----> <-----(Response Character) Figure 11. Control Character Flow for Initial Transparent Block Write Instructions Instruction BSCWRITE IVX Sending Station Type of Connection point-to- point BSCWRITE IVX multipoint control station BSCWRITE IVX multipoint tributary Control Character Flow Sending Receiving ENQ------------> <------ ------ACK OLE ETX (Text) OLE STX-----> <-----(Response Text) EOT------------> ENQ (Address)-----> <------------ACK OLE ETX (Text) OLE STX-----> <----(Response Text) OLE ETX (Text) OLE STX-----> <-----(Response Text) rr~\ i~..:7.f/ Figure 12. Control Character Flow for Initial Conversational Transparent Write Instructions Sending Subsequent Messages Code a continue write to send the second message and any further messages in a transmission. Code a continue write only after coding an initial write. Also, always make sure that the continue write type matches the initial write type (standard, conversational, transparent, transparent block, or conversational-transparent type). Refer to the table that follows to see which continue write type to code. o co- 22 SC34-0638 o Programming for BSCAM Applications (continued) Data Type Transmission Mode Write Type What to Code Standard Standard Continue BSCWRITE C Standard Conversational Continue Conversational BSCWRITE CV Transparent Standard Continue Transparent BSCWRITE CX Transparent Conversational Continue Conversational Transparent BSCWRITE CVX Transparent Block Standard Continue Transparent Block BSCWRITE CXB Figure 13. Continue Write Types Control Characters Associated with Continue Write Instructions When a continue write instruction executes, certain BSC control characters must be sent to the receiving station. The tables that follow show the control character flow for each continue write type. o Instruction Sending Station Type of Connection Control Character Flow Sending Receiving BSCWRITE C all types ETX (message 1+n text) STX---> <-----Response character BSCWRITE CV all types ETX (message 1+n text) STX---> <-----Response Text BSCWRITE CX all types OLE ETX (message 1+n text) OLE STX---> <-----Response character BSCWRITE CXB all types OLE ETB (Message 1+n Text) OLE STX---> < - - - - - Response Character BSCWR ITE CVX all types OLE ETX (Message 1+n text) OLE STX---> <-----Response Text Figure 14. Control Character Flow for Continue Write Instructions Coding Special Write Types Besides sending messages, you may need to control data transmissions in special ways during a write operation. The write types listed below cause BSCAM to perform specific functions. You will need to determine where and when these functions are useful in your program. o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-23 Binary Synchronous Communications Access Method (BSCAM) Programming for BSCAM Applications (continued) Write What to Code Explanation Delay BSCWRITE D Delays transmission of next message. You can code multiple delays before transmission resumes. Inquiry BSCWRITE Q Requests retransmission of response (text or acknowledgement sequence) to a previously sent message. NAK BSCWRITE N Transmits the Negative Acknowledgement (NAK) character. A tributary can write NAK if not ready during polling / selection. User BSCWRITE U Transmits a character stream. User Transparent BSCWRITE UX Transmits character stream in transparent mode. o T~pe Figure 15. Special Write Types Delaying Transmission You can inform the receiving station that transmission of the next message will be delayed with a delay write instruction. You can code multiple delays before resuming transmission. Sending a Negative Acknowledgement When you need to transmit a negative acknowledgement (NAK) character, code a NAK write. This instruction simply sends the NAK character. Tributary stations can send it to signify "device not ready" in response to polling or selection by the control station. Sending an ENQ Character To send an ENQ character, code an inquiry write instruction. This instruction is most commonly used to request retransmission of the receiving station's response to the last message sent. Sending a Data Stream In special situations you may want to send a data stream, generating no control characters. This is possible with either a user write (to send standard data) or a user transparent write (to send transparent data). o CO-24 SC34-0638 o Programming for BSCAM Applications (continued) Unlike other write instructions, the user and user transparent types do not generate the transmission of any predefined control characters or require any acknowledgement from the receiving station. In addition, BSCAM does not perform error recovery for the data stream. The data stream consists of the contents of the first buffer you specify in a BSCIOCB instruction. With the user write instruction, once the contents of the buffer are sent, the operation is over. However, with the user transparent write, you must signal the end of the operation by transmitting the contents of a second buffer specified in BSCIOCB. The buffer can contain any of these control character pairs: DLE ETX, DLE ETB, or DLE ENQ. Control Characters Associated with Special Write Instructions The following control characters are sent by the special write instructions. Instruction Sending Station Type of Connection Control Character Flow Sending Receiving BSCWRITE D all types TTD------------> <------------NAK BSCWRITE Q all types ENQ------ ------> <----Response Character or Text BSCWRITE N c all types NAK------------> Figure 16. Control Character Flow for Special Write Type Instructions Ending a Write Operation Once you have written all your data, you need to tell the other station not to expect any more. Two write types signify the end of a write operation. The end write instruction (BSCWRITE E) sends an EOT to end write operations in any form of transmission. The end transparent write instruction (BSCWRITE EX) sends a DLE EOT character to indicate the end of a write operation. Use this instruction if you are transmitting over a switched line. Programming Sequence for Write Operations Now that you know about the various write types, you'll want to be sure to code them in the right order. You'll also want to make sure that all the write types "match up" in your program. Refer to the chart below and find the mode of transmission you plan to use in your program. It shows the basic sequence of write instructions to use. o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-2S Binary Synchronous Communications Access Method (BSCAM) Programming for BSCAM Applications (continued) Mode of Trarismission, Writing First Writing Next Optional o Ending Write O~eration DataT~e Messa~e Messa~e Standard, Standard data I C D,Q,U,N E or EX Conversational Standard data IV CV D,Q,U,N E or EX Standard, Transparent data IX CX D,Q,U,N E or EX Standard, Transparent Block data Conversational, Transparent data IXB CXB D,Q,U,N E or EX IVX CVX D,Q,U,N E or EX Figure 17. Programming Sequences for Sending Data Receiving Data A read operation retrieves data from a BSC line. Each time another station sends data to your Series/I, you must have a read operation programmed to receive it. In your read program you will do the following: Define line address and buffers (BSCIOCB) Prepare the BSC line for use by your program (BSCOPEN) Receive data with one or more BSCREAD instructions (one instruction for each message) • Give up the use of the BSC line (BSCCLOSE). Selecting BSCREAD Types Several different types of read operation are available. Each is associated with a different BSCREAD instruction. Each type is used in certain situations, similar to the way the various write types are used. However, with read types it doesn't matter what mode of transmission you are using. With read types, it is when you issue the instruction that is important. For example, will the instruction read the first message? Or will it read the second message, or the last message? These are some of the questions you must ask when preparing to code read types. The chart on the next page lists all the read types, and how and when to code them. They are in alphabetical order, not in the order you would code them in a program. () CO-26 SC34-0638 o c Programming for BSCAM Applications (continued) Read Type What to Code Explanation Continue BSCREAD C Reads subsequent message after first message read by Read Initial. Issue until EOT received. Delay BSCREAD D Acknowledges correct receipt of message. Requests sender to wait before sending the next message. Multiple delays can be issued before resuming transmission. End (Reverse Interrupt) BSCREAD E Positive acknowledgment that requests sender to end current transmission and reverse the direction of data transfer. Initial BSCREAD I Reads first message in a transmission. Poll BSCREAD P Reads the poll / select sequence sent by a control station to a Series/1 that is a tributary on a multipoint line. Inquiry BSCREAD Q Reads the ENQ character. Repeat BSCREAD R Requests retransmission of the last message sent. User BSCREAD U Reads data stream. Does not perform error recovery. Figure 18. Read Types Receiving the First Message Regardless of its mode of transmission, you will always read the first message with an initial read instruction, BSCREAD I. Receiving Subsequent Messages To read subsequent messages, code a continue read, BSCREAD C. Issue continue read instructions until the transmitting station sends the end-of -transmission (EOT) sequence. Delaying Transmission of Data After successfully reading a message you may wish the sender to pause before sending the next one. A delay read instruction, BSCREAD D, causes this pause. You can issue as many delays as o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-27 Binary Synchronous Communications Access Method (BSCAM) Programming for BSCAM Applications (continued) o needed before telling the sender to resume transmission. (After the last delay, transmission resumes automatically.) Responding to a Poll/Select Sequence If your Series/lis a tributary station on a multipoint line, code a poll read (BSCREAD P) instruction to receive polling and selection sequences from the control station. Once your station is polled or selected, it should issue the appropriate read or write initial instruction. Reading an ENQ Character To read an ENQ from the sending station, code an inquiry read instruction, BSCREAD Q. Requesting Repeat of a Message If you are unsuccessful in reading the last message that was sent, you can ask the sender to retransmit it with a repeat read instruction, BSCREAD R. Reading a Data Stream The sender can transmit a data stream, which consists of the contents of a buffer. To receive this data, code a user read instruction, BSCREAD U. BSCAM does not perform error recovery during this type of read operation. Ending the Read Operation (Reverse Interrupt) The RVI (reverse interrupt) control sequence is a positive response used in place of ACK 0 or ACK 1. The receiving station transmits an RVI to request the sender to end current transmissions because the receiver now wishes to send. The sending station treats the RVI as a positive acknowledgment and responds by transmitting all data that prevents it from becoming a receiving station. This may require more than one block transmission. For the RVI, code the end read instruction, BSCREAD E. o CO-28 SC34-0638 o Programming for BSCAM Applications (continued) Providing for Errors During BSCAM Operations All the BSC instructions (except BSCIOCB, which is non-executable) allow you to code routines to take over during error or end conditions. BSCOPEN arid BSCCLOSE have the ERROR= operand; BSCREAD and BSCWRITE have both ERROR= and END= operands. It is useful to provide for error recovery in situations such as: Errors during opening or closing of the BSC line Errors in starting the program • Errors in doing the initial read or write Errors in continuing reads or writes Errors in ending the read or write operation. Common routines are to print error messages and BSC return codes in response to errors, or to restart operations at the previous phase or at the beginning. o BSCAM Sample Programs The following sample programs perform BSCAM operations. Note that both programs include routines that take over when an error occurs during any phase of the operation. WRITE Sample Program This program performs a write operations in transparent mode of transmission. The program does the following: 1. Communicates with the READ sample program 2. Opens the BSC line 3. Performs initial write of data 4. Performs calculations to build the next message to send 5. Performs continue writes until all data is sent o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-29 Binary Synchronous Communications Access Method (BSCAM) BSCAM Sample Programs (continued) o 6. Ends the write operation 7. Prints error messages and return codes if a failure occurs during any phase of the program 8. Closes the BSC line. WRITEX START RESTART PROGRAM BSCOPEN BSCWRITE START IOCB,ERROR=PRINTERR IX,IOCB **************************************************** OPEN THE LINE AND BEGIN INITIAL TRANPARENT WRITE **************************************************** IF IF DO ADD CONVTB (WRITEX,EQ,10) ,GOTO,RESTART (WRITEX,NE,-1) ,GOTO,PRINTERR 29,TIMES I, 1 MSG#,1 **************************************************** CONTINUE THE WRITE OPERATION **************************************************** BSCWRITE ENDDO CX,IOCB,ERROR=PRINTERR **************************************************** END THE WRITE OPERATION **************************************************** BSCWRITE GOTO E,IOCB,ERROR=PRINTERR ALLDONE **************************************************** ERROR ROUTINE: PRINT ERROR MESSAGE AND BSC RETURN CODE **************************************************** PRINTERR MOVE PRINTEXT PRINTNUM ERRCODE,WRITEX 'WRITE ERROR:' ,SKIP=1 ERRCODE **************************************************** CLOSE THE LINE **************************************************** ALLDONE BSCCLOSE PROGSTOP IOCB **************************************************** CONTROL INFORMATION: WRITE DATA TO BSC LINE 19 USE A BUFFER LENGTH OF 82 CHARACTERS **************************************************** IOCB BUFFER MSG# I ERRCODE BSCIOCB DC DC DC DC DC ENDPROG END 19,BUFFER,82 x'1002' CL74'TEST MESSAGE' CL6' l' F'1' F'O' o CO-30 SC34-0638 o BSCAM Sample Programs (continued) READ Sample Program This program reads the transparent data sent in the preceding WRITE program. The program does the following: 1. Gains use of the system printer 2. Opens the BSC line 3. Performs initial read of data 4. Prints data on printer 5. Reads subsequent data and prints it 6. Prints error messages and return codes if failure occurs during any phase of the program 7. Ends the read operation 8. Closes the BSC line. c o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-31 Binary Synchronous Communications Access Method (BSCAM) BSCAM Sample Programs (continued) READX START PROGRAM ENQT BSCOPEN o START $SYSPRTR IOCB,ERROR=PRINTERR ************************************************** OPEN THE'LINE AND BEGIN INITIAL READ ************************************************** RESTART PRINTIT BSCREAD IF IF MOVE PRINTEXT I,IOCB (READX,EQ,10) ,GOTO,RESTART (READX,NE,-1) ,GOTO,PRINTERR MSG,INPUT+2, (80,BYTE) MSG, SKIP=1 ************************************************** CONTINUE THE READ OPERATION ************************************************** BSCREAD GOTO C,IOCB,END=ALLDONE,ERROR=PRINTERR PRINTIT ************************************************** ERROR ROUTINE: PRINT ERROR MESSAGE AND BSC RETURN CODE, HAVE SENDER REPEAT MESSAGE ************************************************** PRINTERR ALLDONE MOVE PRINTEXT PRINTNUM BSCREAD GOTO DEQT RETCODE,READX ERRMSG,SKIP=1 RETCODE R,IOCB,ERROR=ALLDONE,END=ALLDONE PRINTIT ************************************************** CLOSE THE LINE ,~ U ************************************************** BSCCLOSE PROGSTOP IOCB ************************************************** CONTROL INFORMATION: READ FROM BSC LINE 29, USE A BUFFER 83 CHARACTERS IN LENGTH ************************************************** IOCB INPUT MSG ERRMSG RETCODE BSCIOCB DC TEXT TEXT DC ENDPROG END 29,INPUT,83 CL83' LENGTH=80 'READ ERROR:' F'O' Interacting with BSCAM (Using BSC Utilities) The BSCAM utilities ($BSCTRCE, $BSCUT1, $BSCUT2) help you check out the way BSCAM is working and point out any problems that may exist. This section shows what the BSC utilities allow you to do, and what types of information you can gather about BSCAM operations. () CO-32 SC34-0638 o Interacting with BSCAM (Using BSC Utilities) (continued) Tracing I/O Activities on a BSC Line (Using $BSCTRCE) The $BSCTRCE utility traces activity on the BSC line you specify. The trace information goes into a trace file, which you must allocate before beginning the trace. (The data in the trace file is unformatted. To format the data for a printout or to display it on a screen, use the $BSCUTI utility.) Since 110 activity on a BSC line is controlled by an application program, you must have one of your programs loaded and running at the same time you use $BSCTRCE. The program must be the one controlling the line you specify to be traced. $BSCTRCE writes trace file records at the completion of a BSC operation. Therefore, when testing a conversational write, if you specify the same buffer address for both input and output, the trace file does not show the data that was transmitted; it shows only the conversation responses received. Multiple BSC lines may be traced concurrently with multiple loads of $BSCTRCE using different trace files. Each copy of $BSCTRCE must use a different trace data set. Each trace data set name should reflect a unique line number. When $BSCTRCE terminates, it displays the relative record number of the last trace record written. o Allocating the Trace File Data Set You must allocate the data set that will contain the trace information before using the $BSCTRCE utility. It must be a "data" type data set. You can allocate the data set at any size you wish. Use the $DISKUTI utility to allocate the data set. When the end of the output file is reached, it is reused from the beginning, since $BSCTRCE displays the relative record number of the last trace record written upon termination. The trace file can then be displayed or listed using the $BSCUTI utility. Invoking $BSCTRCE You must load $BSCTRCE in the same partition as the application program that is controlling the line you want to trace. Note: If you want to use the $BSCTRCE utility with X.21, you must load the utility first. o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-33 Binary Synchronous Communications Access Method (BSCAM) Interacting with BSCAM (Using BSC Utilities) (continued) Use the $L command or option 8.1 of the session manager. When you have loaded $BSCTRCE, it prompts you for the disk or diskette file where you want to place the trace output. $BSCTRCE then prompts you for the line number you want to trace. You can end the trace action with the attention command STOP. Specifying BSe Line to Trace In response to the utility's prompt, enter the number of the BSC line you want to trace. Make sure it is the same line that the loaded application program is controlling. Terminating the Trace To end the trace at any point, press the attention key and enter STOP. The utility displays the number of the last record it traced. Tracing Multiple BSe Lines You can perform traces on multiple lines at the same time. For each trace, do the following: Load the application program that controls the line. • Load $BSCTRCE in the same partition as the program. • Specify the BSC line number. Direct each trace file to a different data set (the volumes can be the same). Formatting Trace Files for Print or Display (Using $BSCUT1) Once you have run $BSCTRCE and wish to see what is in the trace file, use the $BSCUT1 utility to format the file and send it to a printer or terminal. You can select the record for the trace file to dump. You will be prompted, as necessary, for information required by the functions of $BSCUT 1. CO-34 SC34-0638 o o Interacting with BSCAM (Using BSC Utilities) (continued) Invoking $BSCUT1 You invoke $BSCUT1 with the $L command or option 8.2 of the session manager. $BSCUT1 Commands To display the $BSCUT1 commands at your terminal, enter a question mark in response to the prompting message COMMAND (?):. $L $BSCUT1 LOADING $BSCUTl > 21P,00:04:21, LP= 9200, PART=l COMMAND(?): CV - CHANGE VOLUME DP - PRINT TRACE FILE ON PRINTER DU - DUMP TRACE FILE ON TERMINAL (CA WILL CANCEL) EN - END PROGRAM COMMAND (1): After $BSCUT1 displays the commands, it prompts you with COMMAND (?):. Then you can respond with the command of your choice (for example, CV). o Example: Figure 19 shows dumping records in a trace file to the terminal. COMMAND (?): DU TRACE9 FIRST RECORD: 32 LAST RECORD: 33 DUMP OF TRACE FILE TRACE9 ON EDX002 ***** RECORD 32 ***** START OF CHAINED OPERATION CC = 0002 ISW = A009 STATUS = 98DA 0001 c080 RESULT: EXCEPTION - WRONG LENGTH RECORD (SHORT) DeB = 8004 0000 0000 0000 0000 2B1C 0002 2AE4 OPERATION: CHAINED TRANSMIT DATA LENGTH = 1061 1 2 Figure 19. Dumping Trace File Records Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-35 Binary Synchronous Communications Access Method (BSCAM) Interacting with BSCAM (Using BSC Utilities) (continued) o The following screen shows the display for the LAST RECORD selected in the previous example, which was record number 33. '; ~***~.•'. :.• ;.~ECQRD::,;33··.:!* ~,~~;~ Cb.N:Td NUAr:tbN:OF' ;CHP;I, NED? OP E: RA1 ,bCB' •. =: ;;::~ ()O:8:!'06().():;QP()OO~:9'O ,~6~6:'~~~9' :6Z~q/96f6 \, OPERATI:ON i' ·R~:CEl.\lE . WtT~':I!. MEQUT:"; ,...., DATA {fNGTH= . ':4S:S ' : ' ." :'J: ': Q227615BF1f6\'l{'BF5f9,4B:F3F;.4QDl"D6C2 ', •• 1$16,'59.34 JOBI 17 ~040 F4F2F#.4PD.7~9F3FQ :FJP9 f5F6,~oc~ 1 424 PR301656 EI 33 E7C5 C3E4E3'C9 oSt7 40D4,40[)7:09C9 ;0640 lXECUTlN~MPR 101 49 ';Qf7 JE27615BF1 F6 4BF5,F94B F3F~4001 J:T.. I$:l6;S,9~34JJ' 65 D6C24040 :F4'P2F340C8D8: :A1 f2:'F 1:P6:{S.E6 ,lOB ,423., H~f2l656'1 ,$1 4,Ot5E7C~C3E4E3C90SC?~o():4':4o'Q7;':O~C9 L EXECUTI NGM>PRII 91.06;0;4QF7-1E27615B;F1 F646F5 F94B~f'3~4,;1 0 7 .. 1$16 •.59.341 113 4001 ·06C2:.4.040 ;F3FO:FQ40,·. ,C9E2 FOF3,PtF4 ::1.,; JO~: •..,300 JSQ3141.' 12'9 'F4F54QC5:{7C5:'.C~~k·J3C9,;;f)?C7,40E,$~d,Dl~ 14~ E~EC!JT;t N:G:ll :Jlt: 145 'D9C9D640UOF5 ,'lEZ761S8';Fl:,~6'4:~j:5"F9'~ij; I:~J.o<5~./$16.:~,9,.,J ' 161 F3F4,4001p6C2 1043 T4F~:;4~;7a,p;7E;2D7P5' 134'JO,B~.4~ #G~PE:I, 177:'J=:Q,FIF04bD'6D5:4007D~C9;D5:E3'D9F2 ,4040' Iq~poN,;PR;lNTlt21'; ,J 93 . . 0709,C9J)64040 F51EZ1,(>.J '. 58',r 1.,FQ:4~ :·~:5F9IPRIO<5·~1$16 .591 209 4BFJF4'ltO:0 lD6C'24040FJ:F:2f040C~C)P:6 1:34 ,JOB' '320FG61 '~~Sfl( D4051 ~?{>:~.' "I~:N •. '· ":"":,', ",:1' " ,,1 ,'OUMp:;:CGMPLETE ANOTHER. AREA? Figure 20. Dump of the LAST RECORD of Trace File CO-36 SC34-0638 ,rf - \, I , ~ o Interacting with BSCAM (Using BSC Utilities) (continued) Reading Trace File Records Trace records can be up to 256 bytes long. They consists of several fields, as shown in Figure 21. Field Size (bytes) Explanation CC 2 Condition code ISW 2 Interrupt status word STATUS 6 Cycle status words: 3 words, 2 bytes each DCB 16 Device Control Block LGTH 2 Length of data sent or received DATA up to 224 Data in main storage. LAST4 4 Last four bytes of data if total data is longer than 224 bytes Figure 21. Trace Record Fields Notes: 1. The CC, ISW, and STATUS fields are zero when the DCB has been chained from the previous record's DCB. 2. $BSCTRCE always reports an error on a chained DCB to the first DCB in a chain. Refer to the IBM Series/l Communications Features Description, GA34-0028 for descriptions of the interrupt condition code, interrupt status word, cycle status words, and device control block. o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-37 Binary Synchronous Communications Access Method (BSCAM) Interacting with BSCAM (Using BSC Utilities) (continued) Testing BSCAM Operations (Using $BSCUT2) With the $BSCUT2 utility you can test these BSCAM capabilities: Read and write operations standard transmission of transparent and standard data conversational transmission of transparent and standard data. Polling and selection by control station on a multipoint line Response to polling and selection by tributary station on a multipoint line. The $BSCUT2 utility prompts you for information such as: BSC line addresses Device addresses of communications feature cards Record length, also called buffer size, in bytes Number of records to be transmitted or received. The utility examines the information you supply in response to its prompts. If you supply incorrect information, the utility cannot perform its test and issues an error message. By examining the information you supply, $BSCUT2 also checks the BSCLINE statements included in the supervisor, and the customized jumper assignments in BSC hardware features. You can use $BSCTRCE to trace the exercising activities of $BSCUT2. You can format and print the records with $BSCUT 1. Hardware Considerations When Using $BSCUT2 You can use $BSCUT2 to test BSCAM on just one Series/lor between two Series/ 1'so When testing with just one Series/I, you must have two BSC lines and wrap a connection between them. Assign one line to do the "read" and the other to do the "write." If you are running a test between two processors (one performing a read, the other a write operation), load $BSCUT2 on both processors and enter one BSC line address at the "read" processor and another BSC line address at the "write" processor. If you specify an invalid address for one of the processors, the test will fail. CO-38 SC34-0638 o o Interacting with BSCAM (Using BSC Utilities) (continued) Invoking $BSCUT2 You invoke $BSCUT2 with the $L command or option 8.3 of the session manager. $BSCUT2 Commands To display the $BSCUT2 commands at your terminal, enter a question mark in response to the prompting message COMMAND (?):. $L $BSCUT2 lOADING $BSCUT2 > 76P,00:05:31, lP= 9200, PART=l COMMAND (1): 1 RWI ---- READ/WRITE - NONTRANSPARENT RWIX --- READ/WRITE - TRANSPARENT RWIXMP - READ/WRITE - MULTIDROP l)NE TRANSPARENT RI ----- READ - TRANSPARENT/NONTRANSPARENT WI ----- WRITE - NONTRANSPARENT WIX ---- WRITE -TRANSPARENT EN ~---- END TH~ PROGRAM CH ----- CHANGE ~ARD-COPY DEVICE RW IVX -- READ/WR ITE - TRANSPARENTCONVERSATI ONAl RWIV -- READ/WRITE - NONTRANSPARENT CONVERSATIONAL o After $BSCUT2 displays the commands, it prompts you with COMMAND: (?):. Then you can respond with the command of your choice (for example, RI). Testing Read and Write Capability Simultaneously With BSCAM you can test read and write operations at the same time. You can run the tests between two processors, or between two lines on one processor. If you are using one processor, make sure you specify separate lines, one to read and the other to write. The read/write tests available are: • Read/write of standard data, standard transmission: RWI command Read/write of standard data, conversational transmission: RWIV command Read/write of transparent data, standard transmission: RWIX command Read/write of transparent data, conversational transmission: RWIXV command. o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-39 Binary Synchronous Communications Access Method (BSCAM) Interacting with BSCAM (Using BSC Utilities) (continued) o For these read/write tests, the utility prompts for the following information: READ ADDRESS and WRITE ADDRESS refer to the device address of the BSC hardware feature. If the test is to be run between two processors (one to read and one to write), load $BSCUT2 on both processors and enter the correct address for read on one processor and the correct address for write on the other processor. One of the addresses can be invalid and the task for the invalid address on each processor will fail due to an undefined line. However, the read/write task will function properly. This is true for all $BSCUT2 commands. The RECL prompts refer to the buffer size to be used and, therefore, the number of bytes transferred in one transmission over the BSC line. The maximum buffer size permitted is 512 bytes. READ (RECL) should always be equal to or greater than WRITE (RECL) or errors will occur. NUMBER OF RECORDS determines the number of transmissions to be made before the test ends. The MONITOR function causes each task to report its progress to the terminal. If the monitor function is enabled, messages such as TASK ENTERED and TASK EXITED are written to the terminal. Example: RWI command CQMMAND. {~}:. RWJ ~Wl ----.READlwRJrE - NONTRANSPARENT READ ADDR~SS?·5A WRITE ~.DPRESST 5B READRE·CL?80 WRI TE RECI./l 80 NUMBER·OF RECORDS? READ MONITOR? ~ WRiTE MONITORty Example: RWIV command COMM.AND ;•.<7:);: .•. . R\.HV. ... . .• RWI ~.""' ':":' •READ/WR I TE· .~. .• REAtiADDRESS75B . WRJ TE.ADPRESS? SA BUFFER LENGTH? 80 NUMflER. OF. RECORDS? REAP .·MON I rOR 7 y. WRf TEMONITOR ? Y o CO-40 SC34-0638 o Interacting with BSCAM (Using BSC Utilities) (continued) Example: RWIVX command COMMAND (?): RWIVX RWIVX -- READ/WRITE - TRANSPARENT CONVERSATIONAL READ ADDRESS? 5A WRITE ADDRESS? 5B BUFFER LENGTH? 5 NUMBER OF RECORDS? 10 READ MONITOR? Y WRITE MONITOR? Y Example: RWIX command COMMAND (?): RWIX RWIX --- READ/WRITE - TRANSPARENT READ ADDRESS? 5A WRITE ADDRESS? 5B READ RECL?80 WRITE RECl? 80 NUMBER OF RECORDS? 10 READ MONITOR? Y WRITE MONITOR? Y o Testing Read and Write on a Multipoint Line (RWIXMP) This command tests the polling/selection capabilities between stations and also reads and writes transparent data. One BSC line acts as the control station, and one or more other stations act as tributary stations. When you issue the RWIXMP command, you must answer prompts for: Control station device address Number of tributaries Tributary station device address and tributary address Loop count for the control station Buffer length and number of records to be exchanged. The control station device address refers to the address of the BSC hardware feature. The tributary station address refers to the jumpered tributary address on each hardware feature card. You must jumper the adapter in tributary mode for this test to function properly. Loop count refers to number of times you want to send a block of messages. o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-41 Binary Synchronous Communications Access Method (BSCAM) o Interacting with BSCAM (Using BSC Utilities) (continued) To perform this test with $BSCUT2 running on two processors: Processor 1 uses a valid control station (MC) address and dummy tributary (MT) addresses. It acts as the control station. Processor 2 uses a dummy control station address and valid tributary (MT) addresses. It acts as the tributary station. Specify the same number of tributaries on both processors. Specify the same loop count on both processors. Example: RWIXMP command COMMAND (?): RWIXMP RWIXMP - READ/WRITE - MULTIDROP LINE TRANSPARENT MC DEVICE ADDRESS? 50 BUFFER LENGTH? 80 NUMBER OF RECORDS? 5 LOOP COUNT?: 1 MONITOR? Y NUMBER OF TR IBUTARI ES? PARAMETERS FOR TRIBUTARY? MT DEVICE ADDRESS? 51 MT rrHSOrARY ADDRESS? 02 BUFFER LENGTH? . 80 1 l~~~~~~R~F ~ECORDS?5 ) DEVICE ADDRESS for this command refers to the device address of the BSC hardware feature. TRIBUTARY ADDRESS refers to the jumpered tributary address on each hardware feature card. LOOP COUNT refers to the number of times $BSCUT2 sends the block of messages that you have specified. Note: The adapter must be jumpered in tributary mode for this test to function properly. Testing Read Capability The RI command tests the read capability of both standard and transparent data. You don't have to specify the number of records to read since it this test continues to read either type of data until EOT is received. This test is useful for monitoring any BSC line sending data to the processor. For example, the RI test can receive data from the $RJE2780 or $RJE3780 utility operating in the same Series/lor in another Series/I. o CO-42 SC34-0638 o Interacting with BSCAM (Using BSC Utilities) (continued) Example: RI command COMMAND (?): RI RI ----- READ - TRANSPARENT/NONTRANSPARENT READ ADDRESS? 5A READ RECL? 80 READ MONITOR? y Testing Write Capability The WI command tests the write of nontransparent data. The utility prompts you for device address, record length, and number of records. The WIX command tests the write of transparent data. You specify device address, record length, and number of records. Example: WI command o COMMAND (?): WI WI ----- WRITE - NONTRANSPARENT WRITE ADDRESS? 58 WRITE RECL? 80 NUMBER OF RECORDS? 10 WRITE MONITOR? Y Example: WIX command COMMAND (?): WIX WIX ---- WRITE - TRANSPARENT WRITE ADDRESS? 58 WRITE RECl? 80 NUMBER OF RECORDS? 5 WRITE MONITOR? Y Ending $BSCUT2 Utility (EN) The EN command ends the $BSCUT2 utility. Example: EN command COMMAND (?): EN $BSCUT2 ENDED AT 01:14:40 Changing Hard-Copy Device (CH) The CH command reassigns the hard-copy device where the test messages and results are printed or displayed. If the hard-copy device you enter is not defined to the system, output goes to the terminal that loaded $BSCUT2. o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-43 Binary Synchronous Communications Access Method (BSCAM) Interacting with BSCAM (Using BSC Utilities) (continued) o Example: CH command Interpreting Test Results The results of a test will print out or display at your output terminal. The utility issues a test pattern message for every record it read or wrote in a test. The first line of a test pattern message gives the task name, record number, and record length. The second line shows the alphabet repeated to fill up the number of characters specified for record length. TASK READ ENTERED RECORD NUMBER= 1 RECORD LENGTH= 72 ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRST The meanings of the task names are as follows: READ - read of standard or transparent data in standard mode RXVI - read of transparent data in conversational mode • RNVI - read of standard data in conversational mode • WRTN - write of standard data in standard mode • WRIT - write of transparent data in standard mode • WXVI - write of transparent data in conversational mode • WNVI - write of standard data in conversational mode • MTX 1 - read of transparent data by a tributary station • MCXl - write of transparent data by a control station. The output message in the previous example repeats for the number of records transmitted. o CO-44 SC34-0638 o Interacting with BSCAM (Using BSC Utilities) (continued) A test can fail if the utility detects an internal error in BSCAM. In that case, the utility issues a BSC return code that points out the cause of the problem. Refer to the Messages and Codes for explanations of the BSC return codes. However, a test can also fail because you supplied wrong information to the utility. It could be that you gave invalid BSC line addresses or specified too small a buffer for a read test. Retry the test and specify valid information to the utility. Whenever an error is detected, either in BSCAM or in the information you entered, the test ends, the utility is cancelled, and a program check message is issued to the logging terminal for the system. Monitoring BSC Lines with the Communications Indicator Panel The communications indicator panel is an aid in program debugging and machine troubleshooting during BSCAM operations. It lets you select a BSC line and the activity on function to monitor. Installing and Attaching the Communications Indicator Panel The panel can be installed on the frame of full-width processors and 110 expansion units by screwing it into the upper left part of the unit. It is possible to use the panel on half-width processors because it is not necessary to install it on the unit itself. c To monitor a BSC line you must attach the panel connector to the card where the line is assigned. Attach the panel connector to the appropriate set of pins on the card you want to monitor. Be sure the card itself is properly seated and that the connector and pins fit together snugly. Do not force the connector onto the pins. Selecting BSC Line to Monitor When using the panel on a 4-line adapter card, you must select which of the BSC lines to monitor. Using the toggle switches labeled "LINE SELECT," set the last three bits of the line's device address, in binary form. When using the panel on a single-line card, you do not need to set the line select switches. The panel will monitor the line automatically. o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-4S Binary Synchronous Communications Access Method (BSCAM) Interacting with BSCAM (Using BSC Utilities) (continued) o Selecting Function to Monitor The "DISPLAY /FUNCTION SELECT" switches allow you to select what activity or function to monitor on the line. The settings are different for the single-line adapter and the 4-line adapter. The following is an overview of the functions and activities you can monitor with the panel. DCB control word • DCB chain address • DCB byte count • DCB data address Storage data register Interrupt condition code Interrupt status byte • Cycle-steal status word (-\ I Cyclic redundancy check character j ~,J Modem or modem eliminator states Jumper assignments • Multipoint station address Control character transmission • Errors in block checking. The information supplied with the communications indicator panel can help you isolate problems or confirm proper functioning of BSCAM and its associated hardware. o CO-46 SC34-0638 Interacting with BSCAM (Using BSC Utilities) (continued) Example of Using the Communications Indicator Panel Figure 22 shows the communications indicator panel. Assume that it is being used to test one of the lines on a 4-line adapter. The "line select" switches are set at "111," indicating the last three digits, in binary form, of the line address being tested. The "display/function select" switches are set at "10111," which causes the panel to monitor when the line goes into select or control mode, and when VRe or Bee errors occur on the line. (For detailed information on the exact switch settings to test both single and 4-line cards, refer to the IBM Series/l Communications Features Description, GA34-0028. For X.21 display/function select switch settings, refer to the IBM Series/l Synchronous Communications Single-Line Control Attachment Feature, GA34-0241.) o 2 3 4 5 6 7 00000'000 0 16 c' 8 4 2 1 4 2 10 ~~QQQQoQ L I L DISPLAY/FUNCTION I SELECT ~ LINE SELECT~ Figure 22. Communications Indicator Panel o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) eO-47 Binary Synchronous Communications Access Method (BSCAM) Using X.21 Switched Network Support The X.2I circuit switched network support is the basis for the BSC link with the digital Public Data Network used by many countries outside the United St~tes. The information in the preceding sections is still valid for the X.2I network; the exceptions are noted in this section. For X.2I to function on your Series/I, you must: Jumper the IBM 2080 synchronous communications single-line control, high speed feature card for switched operation. • Perform system generation for X.2l circuit switched support. - Define the connection type you want. Edit the $$X2IDS data set on your IPL volume and build a connection record. • Know the network information codes for your country. Convert BSC program for X.21. Activate $LOG for tracking X.2l errors and call progress signals. Note: For general hardware information about IBM implementation of X.2l, refer to IBM Implementation of X.21 Interface General Information Manual, GA27-3287. Attaching and Jumpering the 2080 Card You must jumper the 2080 card for switched operation if you want X.2I switched network support capabilities, and you must jumper BSC if you want to use BSC. For details on the functional characteristics and installation of this card, refer to IBM Series/l Synchronous Communication Single-Line Control Attachment Feature Description, GA34-024I, or the Maintenance Logic Diagrams and the Customer Site Preparation Manual, GA34-00S0. System Generation for X.21 Support During system generation, you must tell the supervisor to support X.2l by defining the BSCLINE definition statement and connection type, and by including the BSCX2l module. (Refer to Installation and System Generation Guide for system generation information.) o CO-48 SC34-0638 o Using X.21 Switched Network Support (continued) Determining the Connection Type You Need The following figure shows the four connection types defined for BSC X.21 circuit switched support, their connection method, and their protocol after connection. esc connection type supplied by user X.21 method Auto answer Auto call Auto call Direct call Switched auto (SA) Switched manual (SM) Auto call (AC) Direct call (DC) esc protocol after connection Pt-to-pt switched Pt-to-pt switched Pt-to-pt switched Pt-to-pt switched Figure 23. Mapping Procedures for BSC X.21 Circuit Switched Support Use the connection type when you code the TYPE= operand of the BSCLINE statement. You must code this parameter because there is no default for TYPE= with X.21 circuit switched support. Code this operand at system generation time. The $$X21 DS Connection Record Data Set c' You have an IBM-supplied one-record data set allocated on your IPL volume with the reserved name $$X21DS. It contains no information. If you are using TYPE=DC, you can edit this data set to create your own connection records. With TYPE=AC or SM, you can either create your own connection records, or you can create and use the default record named X21RECyy, where "yy" is the hexadecimal address of your attachment card. If you are specifying TYPE=SA (auto answer), the system requires no connection record, but don't delete the $$X21DS data set or X.21 will fail. o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-49 Binary Synchronous Communications Access Method (BSCAM) o Using X.21 Switched Network Support (continued) Building a Connection Record You can build as many connection records as you need. To format a connection record, use the $FSEDIT utility or option 1 of the session manager. (For information on the $FSEDIT utility and the session manager, refer to the Operator Commands and Utilities Reference.) Every connection record that you build MUST begin in column 1. Figure 24 shows the format for each connection record, followed by an explanation of each field. Columns: 72 10 Name Retry count Delay value Network information field 1-8 characters 0-3 characters 0-5 characters 0-61 characters Figure 24. Connection Record Format Fields • Name - a 1 to 8 alphanumeric character name. The system uses this record name to identify the connection record it should use for a particular request. If you are going to use the default record with auto call (AC or SM) or direct call (DC), one of your record names must be X21RECyy (where yy is the hex address of the 2080 card). • Retry Count - decimal number from 0 to 255 to indicate the maximum number of times the system should retry this same request. This field MUST begin in column 10. Use a comma to separate this field from the delay value field. If you use a comma by itself, the number of retries defaults to 1. • Delay Value - decimal number from 0 to 65535 to indicate (in milliseconds) the time between the receipt of an error status from a call and the time when the network should reissue that call. Use a comma to separate this field from the network information field. If you use a comma by itself, the delay time defaults to 0 milliseconds. Network Information Field - up to 61 characters for a total record length of 72. This field contains your facility requests and the address selections the network should use for a call request. All information in this field must conform to the requirements of your network, including all special characters. (Refer to the network information technical report for your country to find this information.) If you have specified DC (direct call), the network will not use this field, but it will use the name, retry, and delay fields. Neither the hardware nor the software verifies that the data in the network information field is valid. o CO-50 SC34-0638 o Using X.21 Switched Network Support (continued) The following example shows a sample connection record data set. The fourth sample record, X21 RECOA, illustrates the default record. Its retry count is 2 and its delay value is 1. You have to fill in the network information field with valid data for your country. The last sample record, GEORGE, is an example of a connection record for DC (direct call); no network information is needed for DC. Example: A connection record data set. CONNREC1 CONNREC2 CONNREC3 X21RECOA GEORGE 255,65000,NETWORK INFORMATION GOES INTO THIS FIELD 156,100,01234567+ ,,01234567890+ 2,1,0123456789012345+ 25,255, Convert BSC Program for X.21 The only change you need to make for BSC programs to run with X.21 is to code the X21RN operand on the BSCOPEN instruction in your program if you want the system to use your own connection records. (Refer to Language Reference for further coding information.) If you are using auto call (AC or SM) and you don't code X21 RN, X.21 will look for the default record named X21 RECyy, where yy is the hexadecimal address of your attachment card. As stated earlier, you must insert X21RECyy into the $$X21DS data set. However, if you specify DC and you don't code X21RN, the retry and delay values default to 1 and 0 respectively. Figure 25 shows a coding example for the BSCOPEN statement. For example, if you name your connection record "CONNRECl," the BSCOPEN statement contains the pointer, X21RN, to that record. Note: In the DC statement below, if your record name has fewer than 8 characters, it's a good idea to pad the name with blanks to equal 8 characters in length. label recrdptr BSC:rOC!?',·X2.1 RN~Tecrdptr c18 'CONNREC1' member name Figure 25. X.21 BSCOPEN Coding Example o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-51 Bin-ary Synchronous Communications Access Method (BSCAM) Using X.2rSwitched Network Support (continued) o X.21 Error and Call Progress Signal logging You should activate $LOG when using X.21 circuit switched support. Then use the LL or LP command of the $DISKUT2 utility to list your error log record. The system will tell you when you have an X.21 switched error. Then you need to check the error log record to determine what the error is. Figure 26 shows an example of the printed output created by the $DISKUT2 utility when you have X.21 circuit switched support. In this case, the X.21 return code field (word 19) equals-9 (FFF7), indicating a read instruction error. An explanation of the numbered items follows the example. .. COMMAND ( ?): LL LOG DS NAME: LOGDS B DEVICE ADDRESS (NULL FOR ALL): 0002 I/O LOG ERROR COUNTERS (BY DEVICE ADDR): REQUESTED HEX DUMP OF LOG RECORD: _II 0000 ~OO 0010 0000 0000 0000 0000 0002 02DO 0402 8000 0020 0030 0040 0050 0060 0070 0080 0090 OOAO OOBO OOCO OODO OOEO OOFO 0000 0055 7EOO 0000 0222 0000 0000 II II II FFFF 0005 FFF7 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 (r~ I, "'t :I 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 LOG LISTING ENDED Figure 26. Example of the X.21 Printed Log Information for a Read Error o CO-52 SC34-0638 o Using X.21 Switched Network Support (continued) . . This is the name of the log data set you created with $LOG. In this example, the log data set is LOGDS. II This is what you will see on the usual log information. The dots (.) replace the list of device addresses and I/O error indications that $DISKUT2 provides. These device addresses range from X'OO'to X'FF', or 0 to 255. II This is the start of your X.21 log record output. The first 28 bytes contain the log header information that is reserved for system use. II This byte contains the X.21 record type, X'04'. It marks the beginning of the X.21 statistical log. II This byte contains your device address, in this case X'02'. II This word contains the X.21 error flags reserved for system use. In this case, it indicates that there are X.21 log entries. II This word indicates that there is a read instruction error when equivalent to -1 (FFFF hex). Refer to this byte only when the word indicated by II equals -9 (FFF7 hex). EJ This word contains the error return code from the read instruction. Refer to this word only when the word indicated by II equals -9 (FFF7 hex). (Refer to Messages and Codes for the meanings of these error codes.) II When this word equals -9 (FFF7 hex), you must consult the two words indicated by II and EJ· In this case, the remainder of the log record will contain zeroes. o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-53 Binary Synchronous Communications Access Method (BSCAM) Using X.21 Switched Network Support (continued) o Figure 27 shows a second example of the printed output created by $DISKUT2 when you have X.21 circuit switched support. In this case, the X.21 return code field (word 19) equals -27 (FFES) and indicates a device error. An explanation of the numbered items follows the example. .. COMMAND(?): LL, LOG DSNAME: LOGDS II DEVICE ADDRESS (NULL FOR ALL): 0002 I/O LOG ERROR COUNTERS (BY DEVICE ADDR): REQUESTED HEX DUMP OF LOG RECORD: 0000 ~OO 0010 0000 0000 0000 0000. 0002 02DO 0000 0055 7EOO 0000 0222 0000 0000 II FFE5 - ~11c10 0020 0000 0000 03FA 0000 0000 0000 0000 0030 0040 0050 0000 0000 0000 0000 0000 0000 0002 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 00000000 0000 0000 0000 0000 0060 0070 0000 0000 0001 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0080 0090 OOAO OOBO OOCO OODO OOEO OOFO 0000 0000 0000 0000 0000 0000 0000 0000 IE ~\, ! ',? III 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 001 0600 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 LOG LISTING ENDED Figure 27. Example of the X.21 Printed Log Information for a Device Error o CO-54 SC34-0638 o Using X.21 Switched Network Support (continued) . . This is the name of the log data set you created with $LOG. In this example, the log data set is LOG DS. II This is what you will see on the usual log information. The dots (.) replace the list of device addresses and I/O error indications that $DISKUT2 provides. These device addresses range from X'OO'to X'FF', or 0 to 255. 11 This is the start of your X.21 log record output. The first 28 bytes contain the log header information that is reserved for system use. II This byte contains the X.21 record type, X'04'. It marks the beginning of the X.21 statistical log. II This byte contains your device address, in this case X'02'. II This word contains the X.21 error flags reserved for system use. In this case, it indicates that there are X.21 log entries, and that a device error has occurred. II This word is the X.21 return code field. When it equals -27 (FFE5 hex), consult the device error code field ( II). II c This byte shows you how many times the call was retried before it failed. In this case, the retry count equals 3. II This byte will give you the device error code, in this case -6 (FA hex). Use the data in this byte only when the word indicated by II equals -27. The error codes are as follows: /..:,:.:'.' .... ;.; DEVI:0EERROR CODES :~:::-~1 :(FF) Buffer9ye;t:'run. '. . ' --2 (FE) UnSuQcessfulDCEcleitr •.. . , ..... . ,...3 (FD) Tnterfacecode ~5 (FB) lriv:alid inte~rupt statu~'by;t~ __ 6 (FA) •... Inv:alid . I!Ocop.dLt,:ioncode --7 {F9) . Start cycle stea·l status issued .:;/~,8 (FS): ;,~:peQificat.io.:ri. ch~.ck> . Figure 28. Device Error Codes Note: Refer to the hardware manual IBM Series/l Communications Theory Diagrams, SY34-0059, for the meanings of these messages. o Chapter 1. Binary Synchronous Communications Access Method (BSCAM) CO-55 Binary Synchronous Communications Access Method (BSCAM) Using X.21 Switched Network Support (continued) o The next 100 bytes (00 to 99) are the call progress signal counters. They record call progress signals and hardware errors. The following example shows the meaning of the significant bytes. The number within the byte indicates how many times the error occurred. For example, II shows you a call progress signal of 21 because it's the 21st. byte after II; the number 02 within the byte tells you that it occurred twice. III shows you a call progress signal 61 because it's the 61st. byte after II; the number 01 within the byte tells you that it occurred once. The byte number column gives the byte number relative to the beginning of the log ( II ). Call progress signal Byte number Meaning of signal What X.21 does 00 01 02 03 28 29 2A 28 Reserved Terminal called Redirected call Connect when free Does not clear. Waits for attempt to complete. 20 21 22 23 3C 3D 3E 3F No connection Number busy Selection signals procedure error Selection signal transmission error Clears due to short-term conditions. Tries again up to retry limit. 41 42 43 44 45 46 47 48 49 51 52 51 52 53 54 55 56 57 58 59 58 5C Access barred Changed number Not obtainable Out of order Controlled not- ready Uncontrolled not-ready DCE power off Invalid facility request Network fault in local loop Call information service Incompatible user class of service Clears due to long-term conditions. Call unsuccessfully completed. 61 65 Network congestion Clears due to network short-term conditions. Tries again up to retry limit. 71 72 6F 70 Long-term network congestion RPOA out of order Clears due to long-term network conditions. Call unsuccessfully completed. 81 82 83 79 7A 78 Registration / cancellation confirmed Redirection activated Redirection deactivated Clears due to DTE network procedure. (-\: \~--_/ Figure 29. CaD Progress Signal Counter Usage IE This byte marks the end of the statistical log. o CO-56 SC34-0638 o Chapter 2. Remote Management Utility ($RMU) When the Remote Management Utility ($RMU) is loaded on a Series/I, it allows another system, called the host, to control the Series/1. The Series/l with $RMU loaded on it is called the remote system. o The host starts and controls functions that $RMU performs on the remote system. $RMU waits for an application program running on the host to ask it to perform some function, and then does the work. No operator action at the remote system is needed. $RMU sends responses to the host that tell if it completed the function successfully, and to provide other information about the function. The $RMU-controlled (remote) system is always a Series/l. The host system can be a Series/I, too. This chapter talks about the host system being a Series/I. It tells how to write host programs to communicate with $RMU. The Binary Synchronous Communications Access Method (BSCAM) controls I/O during $RMU operations. Because of this, $RMU operation requires the use of binary synchronous communication (BSC) lines. In addition, the host program must consist of Event Driven Language BSC instructions and must follow rules for BSCAM programs in general. If your Series/l is the Host system making requests of another Series/I, then you must write the application programs that send requests to $RMU. o Chapter 2. Remote Management Utility ($RMU) CO-57 Remote Management Utility ($RMU) Your host program can ask $RMU to perform the following functions: c Manage data sets on the remote system ALLOCATE function DELETE function DUMP function. Transfer data between the two systems SEND function RECEIVE function WRAP function. Control the running of programs on the remote system EXEC function SHUTDOWN function. Establish interactive sessions between the two systems • P ASSTHR U function. Verify the IDs of the two systems - IDCHECK function. If your Series/lis the remote system, there is no work that you must do to respond to host requests, since the utility takes care of that automatically. However, before $RMU operations can begin, you must load the utility into your system with the command $L $RMU. The only other work that can be done at the remote system is changing $RMU default values. The section, "Remote Management Utility Defaults" on page CO-62 tells about these values and how to change them. Figure 30 on page CO-59 shows how the host and remote systems communicate by means of the host program and $RMU. ·-·-"~·· C ,.) CO-58 SC34-0638 0 /! 1 Host system Series/1 .' Host program $RMU Figure 30. Communication Between Host and Remote Systems o Planning for the Remote Management Utility Operations Types of Line Connections $RMU operations can take place over several types of BSC line connections. The host and remote systems can be connected on either point-to point or multipoint lines during $RMU operations. Point-to-point connections can be over leased or switched lines, depending on which type of service you have bought from the common carrier. Multipoint connections require the host system to be the control station and the remote system to be a tributary station. Remember, $RMU operates in point-to-point only for X.21. Find out what type of line connection your Series/lis part of, and whether it is acting as the host or the remote system. Keep this information in mind since you will use it in other areas of planning for $RMU operations. o Chapter 2. Remote Management Utility ($RMU) CO-59 Remote Management Utility ($RMU) Planning for the Remote Management Utility Operations (continued) Mode of Transmission o Transmissions during $RMU operations are in transparent mode. Although BSCAM, which controls I/O for $RMU, supports other modes of transmission, only the transparent mode is available with $RMU. This is important when you write host programs to send requests to $RMU. Storage Considerations $RMU needs a maximum of 7.25K bytes of storage, plus buffer space, to perform all its functions. However, $RMU can perform its data set management functions with only 5.5K bytes of storage. In that case, $RMU gets any additional storage it needs from the partition in which it is executing. The section, "Remote Management Utility Defaults" on page CO-62 tells how to use the reduced storage size and how to change it. Remote System Requirements For $RMU operations the remote Series/l must meet certain hardware and software requirements. Hardware Requirements Minimum hardware requirements for the remote Series/l are as follows: Processor: 4952, 4954, 4955, or 4956. Storage: must be sufficient to handle the supervisor, $RMU (maximum of 7.25K bytes), and the programs that run under $RMU (see notes). • BSC Hardware Connection Features: must be one of the following: single-line control, medium speed single-line control, high speed 8-line control and one or two 4-line adapters multifunction attachment. • Disk or Diskette: 4962, 4963, or 4967 (disk); 4964,4965, or 4966 (diskette). o CO-60 SC34-0638 o Planning for the Remote Management Utility Operations (continued) Notes: 1. The section "Storage Considerations" on page CO-60 tells you how $RMU uses storage. 2. For additional information on storage considerations, refer to the Installation and System Generation Guide. Software Requirements Since the Binary Synchronous Communications Access Method (BSCAM) controls the transfer of data during $RMU operations, the system generation for the remote Series/1 must include one BSCLINE statement per copy of $RMU you plan to use. You must define each BSC line to be used by $RMU as either a point-to-point (BSCLINE TYPE=PT, SM or SA), or multipoint tributary station (BSCLINE TYPE=MT). You must include enough storage to accommodate $RMU and the programs that run under it in the partition where you plan to load it. If you plan to set up P ASSTHRU sessions between the remote Series/l and the host, $RMU requires two virtual terminals. You must include two TERM IN AL statements in your system generation. On one statement, code the parameter ADDRESS=CDRVTA, and on the other, code ADDRESS=CDRVTB. These are the only addresses that are valid. You must also include support for the BSCAM supervisor module. o Refer to the Installation and System Generation Guide for details on performing system generation. Host System Requirements In this discussion, the host system is a Series/I. It too must meet certain requirements to successfully communicate with $RMU. The following support must be defined during system generation for the host Series/I: BSCLINE TYPE=PT, SM, SA, or MC • BSCAM supervisor module support. Besides the Series/I, the host can be any system that meets these requirements: • provides binary synchronous protocol compatible with BSCAM • transmits in transparent EBCDIC supports the form of record exchange that $RMU performs. o Chapter 2. Remote Management Utility ($RMU) CO-61 Remote Management Utility ($RMU) Planning for the Remote Management Utility Operations (continued) o Remote Management Utility Defaults Certain values associated with $RMU operations have predefined defaults. These default values are: Host system ID is set at HOSTRMUX. • Remote system ID is set at REMTRMUX. • BSC line is set at X'09'. • $RMU storage size is set at 7.25 K bytes. • Buffer size is set at 1024 bytes. At the remote system, you can modify these default values by using the $DISKUT2 utility. This utility allows you to get at main storage for $RMU and patch your changes. After you load the $DISKUT2 utility, respond to its prompts to make changes to the default values. In general, the utility prompts for the following information: a $DISKUT2 command the storage address containing the default value type of code the default value is in new data to replace the default value. The storage addresses listed in this book are subject to change. Consult the PID directory for the latest storage addresses for $RMU. The sections that follow tell what information to enter to change each of the defaults. o CO-62 SC34-0638 o Planning for the Remote Management Utility Operations (continued) Changing Host System 10 The default value for the host system ID (used in the IDCHECK function) is HOSTRMUX. You can change this to another name if you wish. In response to the utility's prompts, enter the following information: • Command: P A $RMU Address: 0864 (*) Code type: E (for EBCDIC) Data: the new host system ID (8 characters). * The address listed for the host system ID is subject to change. Consult the PID directory for the latest storage addresses for this default value. Changing the Remote System 10 The default value for the remote system ID (used in IDCHECK function) is REMTRMUX. You can change this to another name if you wish. In response to the utility's prompts, enter the following information: c • Command: P A $RMU • Address: 085C (*) • Code type: E (for EBCDIC) Data: the new remote system ID (8 characters). * The address listed for the remote system ID is subject to change. Consult the PID directory for the latest storage addresses for this default value. () Chapter 2. Remote Management Utility ($RMU) CO-63 Remote Management Utility ($RMU) Planning for the Remote Management Utility Operations (continued) Changing the BSC Line Address o The default value for the BSC line address is X'09'. You can change this to another line address if you wish, but if you do, make sure that the BSC line definitions for the remote system (made during system generation) reflect the change. In response to the utility's prompts, enter the following information: • Command: PA $RMU Address: 086E (*) • Code type: H (for hexadecimal) Data: new BSC line address. * The address listed for the BSC line address is subject to change. Consult the PID directory for the latest storage addresses for this default value. Changing Storage Size The default value for storage required by $RMU is 7.25K bytes. However, you can change the size of storage from 7.25 to 5.5K bytes. In response to the utility's prompts, enter the following information: • Command: SS $RMU New Storage Size in Bytes: nnnn, which specifies the new storage size. o CO-64 SC34-0638 o Planning for the Remote Management Utility Operations (continued) Changing Buffer Size The default value for buffer size on the remote system is 1024 bytes. You can change buffer size within the minimum value of 512 and the maximum value of 32,512 bytes. Buffer size should be in multiples of 256. In addition, buffer size depends on the size of the blocks $RMU is storing in the buffer. Two factors determine the size you should change buffer size to: • data set type to be stored in the buffer • number of blocks sent in each record, according to data set type. First decide what data set type you will be storing in the buffer. • Standard data set - meant to contain standard data • Source data set - meant to contain source data • PASSTHRU data set - meant to be used in a PASSTHRU session. Now determine the blocking factor for your type of data set. The blocking factor refers to the number of logical records contained in each block of data. If you want to send a certain number of records in each block, then your buffer must be able to accommodate those records. The calculations to determine blocking factor are described in the sections that follow. Determining Blocking Factor for Standard Data Sets: To determine the blocking factor for a standard data set, make the following calculation: (buffer size - 6) / 256 = blocking factor Discard the remainder. For example, assume a buffer size of 768 (256 x 3); subtract 6 to get the value 762. Divide 762 by 265; the quotient is 2. Discard the remainder. The blocking factor is 2. o Chapter 2. Remote Management Utility ($RMU) CO-65 Remote Management Utility ($RMU) Planning for the Remote Management Utility Operations (continued) Determining the Blocking Factor for Source Data Sets: To determine the blocking o factor for a source data set, make the following calculation: (buffer size - 262) / 80 = blocking factor Discard the remainder. For example, assume a buffer size of 2048 (256 x 8); subtract 262 to get the value 1786. Divide 1786 by 80; the quotient is 22. Discard the remainder. The blocking factor is 22. Determining Blocking Factor for PASSTHRU Data Sets: To determine the blocking factor for a PASSTHRU data set, make the following calculation: buffer size - 264 = blocking factor Discard the remainder. For example, assume a buffer size of 512 (256 x 2); subtract 264. The result is 248. The blocking factor is also 248. To change the buffer size, enter the following information in response to the utility's prompts: • Command: PA $RMU Address: 0892 (*) Data: nnnn, which specifies the new buffer size. * The address listed for the buffer size is subject to change. Consult the PID directory for the latest storage addresses for this default value. Host Programming for the $RMU Application If your Series/lis acting as the host, you must write application programs to communicate with $RMU on the remote Series/I. Your program sends requests to $RMU and receives responses from $RMU. Using Event Driven Language sse Instructions Since BSCAM controls transmissions between the host and remote systems, your host program must contain EDL BSC instructions. To send requests, code BSCWRITE instructions, and to receive $RMU's responses, code BSCREAD instructions. You may want to review BSCAM programming techniques before going further with programming for the $RMU application. Chapter 1 contains information on BSCAM programming using the BSC instructions. CO-66 SC34-0638 o o Host Programming for the $RMU Application (continued) Since $RMU transmissions are in transparent mode, the BSC write instructions in your program must be of the transparent type. For example, to send a request, code a BSCWRITE IX (initial transparent write). To signify the end of a request, code a BSCWRITE E instruction. To send data, code BSCWRITE IX for the first record and BSCWRITE CX (continue transparent write) for subsequent records. To review the syntax of the BSC instructions, refer to the Language Reference. Receiving $RMU's Responses to Host Requests During the course of performing any function, $RMU sends various types of messages to the host. These messages provide the following information to the host: • Status messages that indicate success or failure of a function • Count messages that show the number of records sent or received by $RMU • Data messages that $RMU uses to send data. All of these messages start with three fields that make up the header, as shown below: c • RMHBSCC contains the BSC control characters DLE STX. • RMHID identifies a message from $RMU. • RMHTYP identifies the type of message: 'S' for status, 'C' for count, or 'D' for data. Status Message $RMU sends a status message to the host to indicate the success or failure of a requested function. A status record is 18 bytes in length. Besides the three fields that make up the header, it contains several fields that provide the following information: • RMSREQ specifies the request that the status message pertains to. For example, if it is in response to an allocate request, the RMSREQ field shows the value 2, which represents the allocate request. • RMSFN indicates the success or failure of the particular request. This field contains a -1 to indicate the success of a request. Any other value (a positive value) indicates failure of the request. The number refers to a specific error condition, as shown in the chart below: o Chapter 2. Remote Management Utility ($RMU) CO-67 Remote Management Utility ($RMU) Host Programming for the $RMU Application (continued) Status Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 21 22 24 25 26 27 31 32 33 34 41 Condition IDCHECK Function Failed Buffer area is too small for the record Short record (less than 4 bytes) Header ID is 'H' (invalid) Invalid header ID (not 'X' or' H') Request expected Invalid request Request short (missing information) Invalid SEND/RECEIVE type Invalid blocking factor Invalid message received during request Invalid PASSTHRU record type Invalid DUMP partition number Request received while another was running EOT expected and not received Virtual terminal busy READ disk/ diskette failed WRITE disk/ diskette Load failed Load of overlay failed BSC I/O failure PRINTEXT failed for virtual terminal ALLOCATE/DELETE failed OPEN failed SETEOD failed Parameters to build LOAD instructions are invalid Overlay function missing Figure 31. $RMU Status Failure Codes RMSST appears when the number in RMSFN indicates that an Event Driven Executive function failed. This field appears in a status message only if one of the following numbers appears in the RMSFN field: 21 or 22: contains disk (READ/WRITE) return code 24 or 25: contains LOAD return code 26: contains BSC (binary synchronous communications) return code 27: contains virtual terminal I/O return code 31,32 or 33: contains $DISKUT3 return code 34: contains LOAD return code. For explanations of the return codes, refer to the Messages and Codes. • CO-68 SC34-0638 RMSRID appears only in the status message of a successful IDCHECK request. It specifies the ID of the remote Series/I. o o Host Programming for the $RMU Application (continued) Count Message $RMU sends a count message to the host when it detects an end-of-data condition during a data set transfer (from either a SEND or RECEIVE request). This message shows the number of records that $RMU sent. The count message also indicates if records were padded (blanks inserted) during the data set transfer. The host should use the count message to verify whether a complete data transfer occurred. For example, if the host program sent 30 messages, then the count message from $RMU should indicate that the utility received 30 messages. The count message can be up to 12 bytes long. Besides the header, it contains several fields that provide the following information: = SEND, 1 = • RMCREQ identifies the request type that the count message pertains to (0 RECEIVE). • RMCFLG indicates if record padding occurred during a data set transfer. A value of '1' in this field indicates padding; a value of '0' indicates no padding. RMCCNT specifies the number of records transmitted. This number reflects the number of logical records (80-byte or 256-byte) that $RMU transmitted, regardless of how the records were blocked. Data Message o $RMU sends data messages to transmit data to the host in response to a SEND request. This type of message contains the 80-byte or 256-byte records from the data set specified in the SEND request. Besides the header, the data record contains the field RMDDATA. RMDDATA contains the data that $RMU is sending to the host. The length of this field will be a multiple of 80 or 256, depending on the specifications of the host in its SEND request. Error Handling During $RMU Operations If a communications error occurs while $RMU is executing, the terminal that loaded $RMU (on the remote system) receives an error message. If a communications error occurs while $RMU is performing a function, it generally terminates. However, the SEND, RECEIVE, and P ASSTHRU functions may continue executing because these functions require multiple message exchanges between the host and the Series/1 before the function is complete. If the error is recoverable, $RMU sends the host a status record followed by a termination (EOT). After this sequence of messages is over, the host can issue a new request. () Chapter 2. Remote Management Utility ($RMU) CO-69 Remote Management Utility ($RMU) Host Programming for the $RMU Application (continued) Both $RMU and the host program can detect errors while an $RMU function is executing. If $RMU detects such an error, it sends the host a status record indicating the error condition, followed by an EOT to terminate the function. After this sequence is complete the host can issue a new request. If the host program detects an error, it should terminate the function in the same sequence as $RMU. However, the status record the host sends to the remote system requires only the 4-byte header of a status record (RMHBSCC, RMHID, and RMHTYP fields). o $RMU detects errors during all phases of operations and sends failure status messages to the host. Refer to "Status Message" on page CO-67 for details of these failure messages. Status, count and data messages were discussed previously in "Receiving $RMU's Responses to Host Requests" on page CO-67. The type and sequence of responses $RMU sends varies according to the request type. The sections below, which tell how to code each type of request in a host program, also show the way $RMU responds to each request. You must code a BSCREAD instruction to receive each of $RMU's responses to a request. To receive $RMU's first response to a request, code a BSCREAD I (initial read) instruction. To receive the rest of $RMU's responses, code BSCREAD C (continue read) instructions. Coding the Required Field for Requests to $RMU For each request the host sends to $RMU, you must code certain fields of information in your program. Each set of fields identifies a different type of request, and tells $RMU exactly what the host wants it to do. The sections that follow identify the required fields for each type of request and show what information to enter in each field. Managing Disk/Diskette Data Sets The host can ask $RMU to work with disk or diskette data sets on the remote system. The three such functions that $RMU can perform are: ALLOCATE a disk or diskette data set DELETE a disk or diskette data set DUMP storage to a disk or diskette data set. o CO-70 SC34-0638 o Host Programming for the $RMU Application (continued) Allocating Disk/Diskette Data Sets (ALLOCATE) The host can ask $RMU to allocate a disk or diskette data set on the remote system with the ALLOCATE request. The data set can contain either standard data or a program. To send $RMU your ALLOCATE request, code a BSCWRITE IX instruction along with the required information fields. Then code a BSCWRITE E or EX instruction to signify that you are finished sending the ALLOCATE request. After $RMU gets the host's ALLOCATE request, it sends a status message. Code a BSCREAD I instruction to receive this message. After performing the requested function, or after encountering a failure condition, $RMU terminates the function by sending an EOT (endof -transmission) sequence to the host. Code a BSCREAD C instruction to receive the notice of termination. IMPORTANT: The ALLOCATE function uses the $DISKUT3 utility. Do not allocate a data set named $EDXNUC, $$EDXVOL, or $$EDXLIB. Allocating a Program Data Set: If you are going to allocate a data set that is to contain a program from the host system, you must have the following information available: o • The load address of the program • the size (in bytes) of the program • the entry point of the program • the RLD (relocation dictionary) count of the program. Obtain the information by opening the host program data set and examining the data set control block. o Chapter 2. Remote Management Utility ($RMU) CO-71 Remote Management Utility ($RMU) Host Programming for the $RMU Application (continued) Coding the Required Fields for ALLOCATE o The chart that follows shows all the fields to code in your program for an allocate request. The fields identified with an asterisk (*) contain variable values. You can code any appropriate value in these fields. However, the other fields can contain only the values shown in the chart. Code these fields exactly as the chart specifies. Field Size, Type Explanation What to Code RMHBSCC 2 hex Starts transmission of a request RMHBSCC DATA X'1002' RMHID 1 alpha Identifies message to $RMU RMHID DATA C'X' RMHTYP 1 alpha Identifies request to $RMU RMHTYP DATA C'R' RMREQ 2 num Specifies ALLOCATE request RMREQ DATA F2' RMADSN (*) 8 alpha Name of the data to be allocated RMADSN DATA CL8'DATASET RMAVOL (*) 6 alpha Name of the volume containing data set. Default = IPL volume. RMAVOL DATA CL6'VOLUMF RMANREC (*) 4 num Number of 256-byte records allocated for data set RMANREC DATA D'nn' RMADST (*) 2 num Type of data set allocated (1 3 = program) RMALAD (*) 2 num Load address of program data set (see note) = data; RMADST DATA Fn' RMALAD DATA Fnn' Figure 32 (Part 1 of 2). Required Fields for ALLOCATE Request o co- 72 SC34-0638 o Host Programming for the $RMU Application (continued) Field Size. Type Explanation What to Code RMAPSZ (*) 2 num Program size in bytes (see note) RMAPSZ DATA Fnn RMAENT (*) 2 num Program entry point (see note) RMAENT DATA Fnn' RMARLD (*) 2num RLD count of program (see note) RMARLD DATA Fnn' Figure 32 (Part 2 of 2). Required Fields for ALLOCATE Request Note: The RMALAD, RMAPSZ, RMAENT and RMARLD fields are required only if the data set you are allocating is a program. In this case, the RMASDT field must contain the value 3. Figure 33 shows an example of the ALLOCATE function. The host requests a data set named "MYDATA" to be allocated on volume "MYVOL." The data set type is 1 (data) and ten 256-byte records are allocated. $RMU sends a status record with -1 (successful completion) to the host. o Figure 53 on page CO-I09 shows a sample program that can send an ALLOCATE request. Chapter 2. Remote Management Utility ($RMU) CO-73 Remote Management Utility ($RMU) Host Programming for the $RMU Application (continued) Host Program Host BSCWRITE IX ENQ -------> RMHBSCC DATA X'1002' RMHID DATA C'X' RMHTYP DATA C'R' RMREQ DATA F'2' RMADSN DATA CLS'MYDATA' RMAVDL DATA CL6'MYVDL' RMANREC DATA D'10' RMADST DATA FT RMALAD DATA FO' RMAPSZ DATA FO' RMAENT DATA FO' RMARLD DATA FO' TEXT -------> BSCWRITE E EDT -------> o Remote <------- ACK* <------- ACK* <------- ENQ ACK* -------> <------- TEXT BSCREAD I (status) RMHTYP='S' RMSREQ=2 RMSFN=-1 ACK* BSCREAD C -------> <------- EDT (termination) Figure 33. Communications Flow for ALLOCATE Deleting a Disk/Diskette Data Set (DELETE) You can ask $RMU to delete a disk or diskette data set on the remote system with a DELETE request. To send $RMU your DELETE request, code a BSCWRITE IX instruction along with the required information fields. Then code a BSCWRITE E or EX instruction to signify that you are finished sending the DELETE request. After $RMU gets the host's DELETE request, it sends a status message. Code a BSCREAD I instruction to receive this message. After performing the requested function, or after encountering a failure condition, $RMU terminates the function by sending an EaT (endof-transmission) sequence to the host. Code a BSCREAD C instruction to receive the notice of termination. IMPORTANT: The DELETE function uses the $DISKUT3 utility. Do not delete data sets $EDXNUC, $$EDXVOL, and $$EDXLIB. o co- 74 SC34-0638 o Host Programming for the $RMU Application (continued) Coding the Required Fields for DELETE The chart that f0110ws shows all the fields to code in your program for a delete request. The fields identified with an asterisk (*) contain variable values. You can code any appropriate value in these fields. However, the other fields can contain only the values shown in the chart. Code these fields exactly as the chart specifies. Field Size, Type Explanation What to Code RMHBSCC 2 hex Start of message RMHBSCC DATA X'1002' RMHID 1 alpha Identifies message to $RMU RMHID DATA C'X' RMHTYP 1 alpha Identifies request to $RMU RMTYP DATA C'R' RMREQ 2 num Specifies DELETE function RMREQ DATA F'3' RMDDSN (*) a alpha Data set to be deleted RMDDSN DATA CLa'DATASET RMDVOL (*) 6 alpha Volume containing data set to be deleted. Default = IPL volume RMDVOL DATA CL6'VOLUME' o Figure 34. Required Fields for DELETE Request Figure 35 on page CO-76 shows an example of the DELETE function. The host specifies a data set named "MYDATA" to be deleted from volume "MYVOL." $RMU sends a status record with -1 (successful completion) to the host. Figure 53 on page CO-I09 shows a program that can send a DELETE request. o Chapter 2. Remote Management Utility ($RMU) CO-75 Remote Management Utility ($RMU) Host Programming for the $RMU Application (continued) Host Program BSCWRITE IX Host ENQ -------> RMHBSCC DATA X'1002' RMHID DATA C'X' RMHTYP DATA C'R' RMREQ DATA F'3' RMDDSN DATA CL8'MYDATA' RMDVOL DATA CL6'MYVOL' TEXT -------> BSCWRITE E EOT -------> () Remote· <------- ACK* <------- ACK* <------- ENQ -------> <------- TEXT ACK* BSCREAD I (status) RMHTYP='S' RMSREQ=3 RMSFN=-1 ACK* BSCREAD C -------> <------- EOT (termination) Figure 35. Communications Flow for DELETE Dumping Storage to a Disk/Diskette Data Set (DUMP) You can ask $RMU to dump a storage partition to a disk or diskette data set on the remote system with a DUMP request. To send $RMU your DUMP request, code a BSCWRITE IX instruction along with the required information fields. Then code a BSCWRITE E or EX instruction to signify that you are finished sending the DUMP request. After $RMU gets the host's DUMP request, it sends a status message. Code a BSCREAD I instruction to receive this message. After performing the requested function, or after encountering a failure condition, $RMU terminates the function by sending an EOT (end-of-transmission) sequence to the host. Code a BSCREAD C instruction to receive the notice of termination. Coding the Required Fields for DUMP The chart that follows shows all the fields to code in your program for a dump request. The fields identified with an asterisk (*) contain variable values. You can code any appropriate value in these fields. However, the other fields can contain only the values shown in the chart. Code these fields exactly as the chart specifies. ( "';\ CO-76 SC34-0638 o C' Host Programming for the $RMU Application (continued) Field Size, Type Explanation What to Code RMHBSCC 2 hex Start of transmission RMHBSCC DATA X'1002' RMHID 1 alpha Identifies message to $RMU RMHID DATA C'X' RMHTYP 1 alpha Identifies request to $RMU RMHTYP DATA C'R' RMREQ 2num Specifies DUMP request RMREQ DATA F'4' RMDPDSN (*) a alpha Name of the data set to dump to RMDPDSN DATA CLa'DATASET' RMDPVOL (*) 6 alpha Volume containing dump data set. Default = IPL volume RMDPVOL DATA CL6'VOLUMF (filler) 1 nla Reserved field (unused) RMDPPTN (*) 1 num Partition to be dumped DATA H'O' RMDPPTN DATA H'n' Figure 36. Required Fields for DUMP Request Figure 37 on page CO-78 shows an example of the DUMP request. The host requests that partition 1 be dumped to the data set "MYDATA" on volume "MYVOL." $RMU sends a status record with -1 (successful completion) to the host. Figure 53 on page CO-109 shows a sample program that can send a DUMP request. o Chapter 2. Remote Management Utility ($RMU) CO-77 Remote Management Utility ($RMU) o Host Programming for the $RMU Application (continued) Host Program BSCWRITE IX Host ENO -------> RMHBSCC DATA X'1002' RMHID DATA C'X' RMHTYP DATA C'R' RMREO DATA F4' RMDPDSN DATA CL8'MYDATA' RMDPVOL DATA CL6'MYVOL' DATA H'O' RMDPPTN DATA H'1' TEXT -------> BSCWRITE E EOT -------> Remote <------- ACK* <------- ACK* <------ACK* ENO -------> <------- TEXT BSCREAD I (status) RMHTYP='S' RMSREO=4 RMSFN=-l ACK* -------> BSCREAD C <------- EOT (termination) Figure 37. Communications Flow for DUMP Controlling Data Transfers between Host and Remote Systems Your host program can ask $RMU to perform functions involving data transiers. You can ask $RMU to send data to your system or receive data from you. Also, you can send data to the remote system and have $RMU echo it back to you. The requests associated with these functions are: • RECEIVE data from the host • SEND data to the host • WRAP host data back to the host. Host Sending Data to Remote System (RECEIVE) You can ask $RMU to receive a host data set, and then put the data into a data set on the remote system. This is the RECEIVE request. The RECEIVE function requires a data set on the remote system in which to place the data. If such a data set does not already exist on the remote system, you can allocate one with an ALLOCATE request. Send your RECEIVE request by coding a BSCWRITE IX instruction, along with the required information fields. CO-78 SC34-0638 o Host Programming for the $RMU Application (continued) Upon receiving the RECEIVE request, $RMU checks to see if it can handle the size of the records to be sent. It then sends a status message to the host. A status message of -1 (successful completion) indicates the RECEIVE function will continue; otherwise it terminates. After receiving a status message of -1, the host begins to send the data set to $RMU. The record length of the data set should be a multiple of 256 or 80. If $RMU receives a data record whose length is not a mUltiple of the specified length, it pads the record with null bytes. For example, a record of 156 bytes will contain padding with 100 null bytes, if 256 bytes is the specified length. If $RMU receives a data record whose length is greater than the length specified on the request, the RECEIVE function terminates with a status indicating "BSC I/O Failure" and BSC return code 20 (wrong length record - long). At the completion of the data set transfer, $RMU sends the host a count message to report the number of host records it received. This message also indicates if any records were padded. If the host is sending an empty data set, send one data record which contains no data (only the 4-byte header) and then end the transmission. If an unrecoverable error occurs, such as a disk or diskette error, $RMU interrupts the host o transmission by sending an EOT (end-of-transmission) and a status message containing the appropriate error code. $RMU terminates the RECEIVE function, and then waits for another request from the host. The host should use the status record to determine the reason for failure. The host can terminate the RECEIVE function at any time by sending a status message followed by a BSCWRITE E instruction. Specifying Data Set Type You must specify what type of data set the host is sending. The field RMRTYP is where to code this information. Enter one of the following values in this field: • 0 for a standard data set with 256-byte records • 1 for a source data set with 80-byte records. Specifying Record Blocking You must specify whether or not the host will send blocked records to $RMU. If the host is going to send blocked records, you must specify the number of blocks in each record. The RMRBLK field is where to code this information. Enter one of the following values in this field: • '0' or '1' to specify no blocking • any other number to specify the exact number of blocks the host will send in a record. o Chapter 2. Remote Management Utility ($RMU) CO-79 Remote Management Utility ($RMU) Host Programming for the $RMU Application (continued) () Specifying the Starting Record You must tell $RMU which record of the host data set will be the first to be received. For example, you may want to start at the first record, or at any other record within the data set. The field RMRSTR is where to code this information. If you enter the value '0' or '1', the host will start sending at the first record. If you enter any other value, the host will start sending at that particular record. Coding the Required Fields for RECEIVE Request The chart that follows shows all the fields to code in your program for a RECEIVE request. The fields identified by an asterisk (*) contain variable values. You can code any appropriate value in these fields. However, the other fields can contain only the values shown in the chart. Code these fields exactly as the chart specifies. Field Explanation What to Code RMHBSCC Size Tvpe 2 hex Starts the message RMHBSCC DATA X'lOO2' RMHID 1 alpha Identifies a message to $RMU RMHID DATA C'X' RMHTYP 1 alpha Specifies a request to $RMU RMHTYP DATA C'R' RMREQ 2 num Specifies RECEIVE request RMREQ DATA Fl' RMRDSN (*) 8 alpha Name of data set to receive host data RMRDSN DATA CLS'DATASET RMRVOL (*) 7 alpha Volume containing data set to receive host data. Default=1 PL volume RMRVOL DATA CLS'VOLUMF RMRSTR (*) 4num Starting record of host data set RMRSTR DATA D'n' RMRTYP (*) 2 num Type of host data set to be received RMRTYP DATA Fn' RMRBLK (*) 2 num Specifies record blocking RMRBLK DATA Fn Figure 38. Required Fields for RECEIVE Request Here is an example of a RECEIVE request sent by a host program. The host sends a data set called "MYDATA" to volume "MYVOL" on the remote system. o CO-80 SC34-0638 o Host Programming for the $RMU Application (continued) Figure 54 on page CO-Ill shows a sample program that sends a RECEIVE request. Host Program Host ENQ -------> RMHBSCC DATA X'1002' RMHID DATA C'X' RMHTYP DATA C'R' RMREQ DATA F1' RMRDSN DATA CL8'MYDATA' RMRVDL DATA CL6'MYVOL' RMRSTR DATA 0'0' RMRTYP DATA FO' RMRBLK DATA F1' TEXT -------> BSCWRITE E EDT -------> ACK* -------> BSCWRITE IX Remote BSCREAD I <------- ACK* <------- ACK* <------- ENQ <------- TEXT (status) RMHTYP='S' RMSREQ=1 RMSFN=-1 ACK* -------> BSCREAD C ENQ C BSCWRITE IX RMHBSCC DATA X'1002' RMHID DATA C'X' RMHTYP DATA C'D' RMDDATA DATA C text -------> TEXT -------> <------- EOT <------- ACK* <------- ACK* BSCWRITE C RMHBSCC DATA X'1002' RMHID DATA C'X' RMHTYP DATA C'D' RMDDATA DATA C text BSCWRITE E TEXT EDT -------> -------> ACK* -------> BSCREAD I <------- ACK* <------- ENQ <------- TEXT (count) RMHTYP='C' RMREQ=1 RMCNT=2 ACK* BSCREAD C -------> <------- EDT Figure 39. Communications Flow for RECEIVE o Chapter 2. Remote Management Utility ($RMU) CO-81 Remote Management Utility ($RMU) Host Programming for the $RMU Application (continued) Remote System Sending Data to Host (SEND) o You can ask $RMU to send a remote system data set to the host with the SEND request. Send this request by coding a BSCWRITE IX instruction, along with the required information fields. Upon receiving request, $RMU first checks that it can send the requested records. It then sends a status record to indicate its ability to perform the function. A status record of -1 (successful completion) indicates the SEND function will continue; otherwise it terminates. If $RMU is sending a program data set to the host, it also sends the program's RLD count, the program size in bytes, the program entry point and the program load address. After transmitting the last data record of the data set to the host, $RMU sends a count message to indicate the number of records it sent the host. The host should compare this number to the number of records it received to verify that it got all the records $RMU sent. The RMCFLG field of the count message is not used for the SEND function. If an unrecoverable error occurs, such as a disk or diskette read error, $RMU sends the host a status message with the appropriate error code, and terminates the SEND function. The host can terminate the SEND function by coding a BSCWRITE E instruction, followed by a status message and another BSCWRITE E. Specifying the Starting Record: You must tell $RMU to start sending data from a particular record in the data set. For example, you may want it to start at the first record or at any other record within the data set. The RMSSTR field is where to code this information. If you enter the value '0' or ' l' in this field, $RMU starts sending the first record in the data set. If you enter any other number, $RMU starts sending from that particular record. Specifying Data Set Type: You must tell $RMU what type of data set to send. The RMSTYP field is where to code this information. Enter one of the following values in this field: '0' for a standard data set with 256-byte records • '1' for a source data set with 80-byte records. Specifying Record Blocking: You must tell $RMU whether or not to block the records it sends. If you want $RMU to block the records, you must specify the number of blocks in each record. The RMSBLK field is where to code this information. Enter one of the following values in this field: • '0' or '1' to specify no blocking • any other number to specify the exact number of blocks for $RMU to send in one record. o CO-82 SC34-0638 o Host Programming for the $RMU Application (continued) Coding Required Fields for SEND Function The chart that follows shows all the fields to code in your program for a SEND request. The fields identified with an asterisk (*) contain variable values. You can code any appropriate value in these fields. However, the other fields can contain only the values shown in the chart. Code these fields exactly as the chart specifies. o Field Size Type Explanation What to Code RMHBSCC 2 hex Starts the message RMHBSCC DATA X'1002 RMHID 1 alpha Identifies a message to $RMU RMHID DATA C'X' RMHTYP 1 alpha Identifies a request to $RMU RMHTYP DATA C'R' RMREQ 2 num Specifies the SEND request RMREQ DATA FO' RMSDSN (*) S alpha Name of data set to send to host RMSDSN DATA CLS'DATASET' RMSVOL (*) S alpha Volume containing the data set to be sent. Default=IPL volume RMSVOL DATA CLS'VOLUME' RMSSTR (*) 4num Starting record of the data set to be sent RMSSTR DATA 0'0' RMSTYP (*) 2 num Type of data set to be sent to the host RMSTYP DATA FO' RMSBLK (*) 2num Specifies record blocking of data to be sent RMSBLK DATA FO' Figure 40. Required Fields for SEND Request Here is an example of SEND request communications flow. The host asks the remote system to send it a data set called "MYDATA." Figure 55 on page CO-tt5 shows a sample program that sends a SEND request. o Chapter 2. Remote Management Utility ($RMU) CO-83 Remote Management Utility ($RMU) o Host Programming for the $RMU Application (continued) Host Program Host ENQ -------> RMHBSCC DATA X'1002' RMHID DATA C'X' RMHTYP DATA C'R' RMREQ DATA FO' RMSDSN DATA CLS'MYDATA' RMSVOL DATA CL6'MYVOL' RMSSTR DATA D'O' RMSTYP DATA FO' RMSBLK DATA Fl' TEXT -------> BSCWRITE E EOT BSCWRITE IX Remote -------> ACK* -------> ACK* -------> ACK* -------> BSCREAD I BSCREAD C BSCREAD C ACK* -------> ACK* -------> BSCREAD C BSCREAD C <------- ACK* <------- ACK* <------- ENQ <------- TEXT (status) RMHTYP='S' RMSREQ=O RMSFN=-1 <------- TEXT (data) RMHTYP='D' RMDDATA=Text <------- TEXT (data) RMHTYP='D' RMDDATA=Text (--\ 'llLJ <------- TEXT (count) RMHTYP='C' RMCREQ=O RMCCNT=2 <------- EOT (termination) Figure 41. Communications Flow for SEND Request Remote System Echoing Host Data (WRAP) The host can send data to the remote system, and ask $RMU to echo that data back to the host. This is the WRAP request. WRAP is useful for testing line conditioning. Send a WRAP request by coding a BSCWRITE IX instruction, along with the required information fields. The RMWTXT field is where to specify the text you want $RMU to echo back to the host. o CO-84 SC34-0638 o Host Programming for the $RMU Application (continued) Coding the Required Fields for WRAP Request Specify the following fields for the WRAP function: The chart that follows shows all the fields to code in your program for a WRAP request. The fields identified by as asterisk (*) contain variable values. You can code any appropriate value in these fields. However, the other fields can contain only the values shown in the chart. Code these fields exactly as the chart specifies. Field Size Explanation What to Code Type RMHBSCC 2 hex Starts the message RMHBSCC DATA X'1002 RMHID 1 alpha Identifies a message to $RMU RMHID DATA C'X' RMHTYP 1 alpha Identifies a request to $RMU RMHTYP DATA C'R' RMREQ 2num Specifies the WRAP request RMREQ DATA FS' RMWTXT(*) vari- able Text that $RMU is to echo back to host. RMWTXT DATA C'ANY TEXT' Figure 42. Required Fields for WRAP Request Figure 43 on page CO-86 shows an example of the WRAP function. The host sends the Series/l a WRAP request along with the text "WRAP TEXT." The Series/l receives the request and transmits the identical data back to the host, and the operation is completed. Figure 53 on page CO-l09 shows a sample program that can send a WRAP request. 0: , , Chapter 2. Remote Management Utility ($RMU) CO-85 Remote Management Utility ($RMU) o Host Programming for the $RMU Application (continued) Host Program BSCWRITE IX Host ENQ --------> RMHBSCC DATA X'1002' RMHID DATA C'X' RMHTYP DATA C'R' RMREQ DATA F5' RMWTXT DATA C'WRAP TEXT TEXT BSCWRITE E EOT -------> -------> ACK* -------> BSCREAD I Remote <------- ACK* <------- ACK* <------- ENQ <------- TEXT (wrap text) RM H BSCC=X' 1002' RMHID=C'X' RMHTYP=C'R' RMREQ=F'5' RMWTXT=X'WRAP TEXT ACK* -------> BSCREAD C <------- EOT (termination) Fagure 43. Communications Flow for WRAP Controlling Program Execution on the Remote System $RMU can perform functions involving the execution of programs on the remote system. You can tell $RMU to start a program running on the remote system. You can also teli $RMU to load another program and at the same time terminate itself. The requests associated with these functions are: • EXEC start a program on the remote system • SHUTDOWN the operation of $RMU and load another program on the remote system. Host Starting a Program on Remote System (EXEC) The host can ask $RMU to start execution of a program on the remote system. This is the EXEC request. Send the EXEC request by coding a BSCWRITE IX instruction, along with the required data fields. $RMU sends a the host a status message to tell if it was able to perform the EXEC function. $RMU then waits for a new request from the host. o CO-86 SC34-0638 o Host Programming for the $RMU Application (continued) Coding the RMXFLG Field: The RMXFLG is an optional field which activates these conditions: • Prints a "program loaded" message on the remote terminal that loaded $RMU. Enter the value X'40'. Causes $RMU to wait for the program to finish running before sending a status message to the host. Enter the value X'20'. These two values correspond to the LOGMSG and WAIT operands of the Event Driven Language instruction LOAD. To specify both of these conditions, enter the value X'60'. To specify neither of these conditions, simply do not code the RMXFLG field. Specifying Partition: You must tell $RMU the partition in which to run the program. The field RMXPTN is where to code this information. Enter one of the following values in this field: • -1 $RMU partition • 0 Any partition • 1 - 8 Specific partition. Allocating Free Space: You can specify the amount of free space (in bytes) to pass to the program. The RMXLFS field is where to code this information. Passing Parameters: Some programs require parameters to be passed from the host in order to run successfully. You accomplish this with the RMXPRM# and RMXPRM fields. In RMXPRM#, specify the length (in words) of the parameters to pass to the program. In RMXPRM, specify the parameters themselves. The length of RMXPRM must be equal to the value in RMXPRM#. Passing Data Sets: You can pass data sets to the program by coding the RMXDS# and RMXDS fields. In RMXDS#, specify the number of data sets (up to nine) to pass to the program. Do not leave this field blank; enter zero if you are not passing any data sets. In RMXDS, specify the name and volume of each data set to pass to the program. The number of RMXDS fields must be equal to the value of RMXDS#. o Chapter 2. Remote Management Utility ($RMU) CO-87 Remote Management Utility ($RMU) Host Programming for the $RMU Application (continued) Coding Required Fields for EXEC Request o The chart that follows shows all the fields to code in your program for an EXEC request. The fields identified by as asterisk (*) contain variable values. You can code any appropriate value in these fields. However, the other fields can contain only the values shown in the chart. Code these fields exactly as the chart specifies. Field Size Type Explanation What to Code RMHBSCC 2 hex Starts the message RMHBSCC DATA X'1002 RMHID 1 alpha Identifies a message to $RMU RMHID DATA C'X' RMHTYP 1 alpha Identifies a request to $RMU RMHTYP DATA C'R' RMREQ 2 num Specifies the EXEC request RMREQ DATA F9' filler 2 Reserved field (unused) RMXFLG (*) 1 num Load message prints (X' 40') or status message is delayed (X'20') This field is optional. RMXFLG DATA X'nn' RMXPTN (*) 1 num Partition to run program in RMXPTN DATA H'n' RMXPGM (*) 8 alpha Name of program to execute RMXPGM DATA CL8'DATASET RMXVOL (*) 6 alpha Volume containing the program to execute. Default= IPL volume RMXVOL DATA CL6'VOLUME' RMXLFS (*) 2 num Free space (in bytes) to pass to program RMXLFS DATA Fnn' DATA FO' Figure 44 (Part 1 of 2). Required Fields for EXEC Request o CO-88 SC34-0638 o Host Programming for the $RMU Application (continued) Field Size Type Explanation What to Code RMXPRM# (*) 2num Length of parameters to pass to program RMXPRM# DATA Fnn' RMXPRM (*) vari- able Parameters to pass to program RMXPRM EQU * RMXDS# (*) 2 num Number of data sets to pass to program RMXDN# DATA Fnn' RMXDS (*) 14 alpha Name and volume of data set to pass to program. RMXDS EaU * Figure 44 (Part 2 of 2). Required Fields for EXEC Request o Figure 45 on page CO-90 shows an example of the EXEC function. The host specifies that a program named "MYPROG" on volume "MYVOL" is to be executed in partition 1, with 256 bytes of free space passed to the program. The RMXFLG field specifies that both the RMXFLGL and RMXFLGW bits are set on. No parameters or data sets are passed to "MYPROG." The program ends with a return code of -1. $RMU sends a status record of -1 (successful completion) to the host, along with the return code for "MYPROG." Figure 53 on page CO-109 shows a sample program that can send an EXEC request. o Chapter 2. Remote Management Utility ($RMU) , CO-89 Remote Management Utility ($RMU) o Host Programming for the $RMU Application (continued) Host Program BSCWRITE IX Host ENQ -------> RMHBSCC DATA X'1002' RMHID DATA C'X' RMHTYP DATA C'R' RMREQ DATA F9' DATA FO' RMXFLG DATA X'60' RMXPTN DATA H'1' RMXPGM DATA CLS'MYPROG' RMXVOL DATA CL6'MYVOL' RMXLFS DATA F256' RMXPRM# DATA FO' RMXPRM EQU * RMXDS# DATA FO' RMXDS EQU * TEXT BSCWRITE E EOT Remote <------- ACK* -------> <------- ACK* -------> ACK* -------> BSCREAD I <------- ENQ <------- TEXT (status) RMHTYP='S' RMSREQ=9 RMSFN=-1 RMSST=_I ACK* -------> BSCREAD C <------- EOT ("---,, ,_,"c) Figure 45. Communications Flow for EXEC Terminate $RMU/Start Another Program on Remote System (SHUTDOWN) You can ask $RMU to terminate and release any Series/l resources it has allocated. In addition, you can ask $RMU to start another program on the remote system before terminating. This is the SHUTDOWN request. Send your SHUTDOWN request by coding a BSCWRITE IX instruction, along with the required information fields. The request may also specify the name of a program to be executed, similar in format to the EXEC function. Coding the RMSDFLG Field: The RMSDFLG is an optional field which activates these conditions: • Specifies that $RMU is to run another program. Enter the value X' 80' . Prints a "program loaded" message on the remote terminal that loaded $RMU. Enter the value X'60'. This value corresponds to the LOGMSG parameter of the Event Driven Language instruction LOAD. To specify both conditions, enter the value X'CO' o CO-90 SC34-0638 o Host Programming for the $RMU Application (continued) To specify neither of these conditions, simply do not code the RMSDFLG field. Specifying Partition: You must tell $RMU the partition in which to run the program. The field RMSDPTN is where to code this information. Enter one of the following values in this field: -1 $RMU partition • 0 Any partition • 1 - 8 Specific partition. Allocating Free Space: You can specify the amount of free space (in bytes) to pass to the program. The RMSDLFS field is where to code this information. This value is expressed in bytes. Passing Parameters: Some programs require parameters to be passed from the host system in order to run successfully. You accomplish this with the RMSDPRM# and RMSDPRM fields. In RMSDPRM#, specify the length (in words) of the parameters to pass to the program. c In RMSDPRM, specify the parameters themselves. The length of RMSDPRM must be equal to the value in RMSDPRM#. Passing Data Sets: You can pass data sets to the program by coding the RMSDDS# and RMSDDS fields. In RMSDDS#, specify the number of data sets (up to nine) to pass to the program. Do not leave this field blank; enter zero if you are not passing any data sets. In RMSDDS, specify the name and volume of each data set to pass to the program. The number of RMSDDS fields must be equal to the value of RMSDDS#. o Chapter 2. Remote Management Utility ($RMU) CO-91 Remote Management Utility ($RMU) Host Programming for the $RMU Application (continued) ( ,J~) , Coding the Required Fields for SHUTDOWN Request The chart that follows shows all the fields to code in your program for a SHUTDOWN request. The fields identified by an asterisk (*) contain variable values. You can code any appropriate value in these fields. However, the other fields can contain only the values shown in the chart. Code these fields exactly as the chart specifies. Field Size Type Explanation What to Code RMHBSCC 2 hex Starts the message RMHBSCC DATA X'1002' RMHID 1 alpha Identifies a message to $RMU RMHID DATA C'X' RMHTYP 1 alpha Identifies a request to $RMU RMHTYP DATA C'R' RMREO 2 num Specifies the SHUTDOWN request RMREO DATA FT filler 2 Reserved field (unused) RMSDFLG (*) 1 num Execute another program (X'80') and/or load message prints (X'40') This field is optional. RMSDFLG DATA X'nn' RMSDPTN (*) 1 num Partition to run program in RMSDPTN DATA H'n' RMSDPGM (*) 8 alpha Name of program to execute RMSDPGM DATA CL8'DATASET' RMSDVOL (*) 6 alpha Volume containing the program to execute. Default= I PL volume RMSDXVOL DATA CL6'VOLUMF RMSDLFS (*) 2num Free space (in bytes) to pass to program RMSDLFS DATA Fnn' DATA FO' Figure 46 (Part 1 of 2). Required Fields for SHUTDOWN Request o CO-92 SC34-0638 o Host Programming for the $RMU Application (continued) Field RMSDPRM# (*) Size Type 2 num Explanation What to Code Length of parameters to pass to program RMSDPRM# DATA Fnn' RMSDPRM (*) vari- able Parameters to pass to program RMSDPRM EQU * RMSDDS# (*) 2num Number of data sets to pass to program RMSDDN# DATA Fnn' RMSDDS (*) 14 alpha Name and volume of data set to pass to program. RMSDDS EQU * Figure 46 (Part 2 of 2). Required Fields for SHUTDOWN Request Figure 47 on page CO-94 shows an example of the SHUTDOWN function. The host sends the Series/1 a SHUTDOWN request with a program name specified. The program, "MYPROG" on volume "MYVOL," is to execute in partition 1, has 256 bytes of free space passed to it, and has no parameters or data sets passed to it. The RMSDFLG field specifies that a program is to be executed and a "program loaded" message is to be printed following a successful load of the program. $RMU sends a status record of -1 (successful completion) to the host, loads the program, and $RMU ends. Figure 53 on page CO-109 shows a sample program that can send a SHUTDOWN request. o Chapter 2. Remote Management Utility ($RMU) CO-93 Remote Management Utility ($RMU) o Host Programming for the $RMU Application (continued) Host Program Host Remote Remote -------> BSCWRITE IX ENO RMHBSCC DATA X'1002' RMHID DATA C'X' RMHTYP DATA C'R' RMREO DATA F7' RMSDFLG DATA X'CO' RMSDPTN DATA H'1' RMSDPGM DATA CLS'MYPROG' RMSDVOL DATA CLS'MYVOL' RMSDFLS DATA F25S' RMSDPRM# DATA FO' RMSDPRM EOU * RMSDDS# DATA FO' RMSDDS EOU * TEXT BSCWRITE E EOT -------> -------> ACK* -------> BSCREAD I <------- ACK* <------- ACK* <------- ENO <------- TEXT (status) RMHTYP='S' RMSREQ=7 RMSFN=-1 ACK* BSCREAD C -------> <------- EOT (termination) Figure 47. Communications Flow for SHUTDOWN Verifying Identities between Systems (I DCH ECK) You can ask $RMU to verify the identities of the host and remote systems. This is the IDCHECK request. You send your IDCHECK request by coding a BSCWRITE IX instruction along with the required information fields. The IDs of both the host and remote systems have predefined default values. These values are discussed in the section, "Remote Management Utility Defaults." The default IDs are in remote system storage. $RMU asks the host to send its ID for verification. Only if the host ID is correct does $RMU send the remote system ID to the host. If the host sends an incorrect (invalid) ID, $RMU terminates the function. Coding the Required Fields for IDCHECK Function The chart that follows shows all the fields to code in your program for an IDCHECK request. The fields identified by an asterisk (*) contain variable values. You can code any appropriate value in these fields. However, the other fields can contain only the values shown in the chart. Code these fields exactly as the chart specifies. o CO-94 SC34-0638 o Host Programming for the $RMU Application (continued) Field Size Type Explanation What to Code RMHBSCC 2 hex Starts the message RMHBSCC DATA X'1002 RMHID 1 alpha Identifies a message to $RMU RMHID DATA C'X' RMHTYP 1 alpha Identifies a request to $RMU RMHTYP DATA C'R' RMREQ 2 num Specifies the IDCHECK request RMREQ DATA F9' RMICHK (*) 8 alpha Host 10 RMICHK DATA C'HOSTID' Figure 48. Required Fields for IDCHECK Request Figure 49 shows an example of the IDCHECK function. The host sends the default ID "HOSTRMUX." $RMU validates the host ID and sends a status record of -1 (successful completion) to the host along with its default ID, "REMTRMUX." Figure 5 3 on page CO-I09 shows a sample program that can send an IDCHECK request. Host Program BSCWRITE IX Host RMHBSCC DATA X'1002' RMHID DATA C'X' RMHTYP DATA C'R' RMREQ DATA FS' RMICHK DATA C'HOSTRMUX' TEXT BSCWRITE E EOT ENQ Remote -------> -------> -------> ACK* -------> BSCREAD I <------- ACK* <------- ACK* <------- ENQ <------- TEXT (status) RMHTYP='S' RMSREQ=S RMSFN=-1 RMSRID=' REMTRMUX' ACK* BSCREAD C -------> <------- EOT Figure 49. Communications Flow for IDCHECK o Chapter 2. Remote Management Utility ($RMU) CO-95 Remote Management Utility ($RMU) Interacting Between Host and Remote Systems (PASSTHRU) You can set up interactive sessions between the host and remote systems with the PASSTHRU request. During a passthru session, the host can perform the same functions as a station directly attached to the remote system. The host can interact with the Event Driven Executive supervisor by issuing operator commands, or with a program or utility on the remote system. o Most programs that do not require full screen terminal support, including most Event Driven Executive utilities, are available for use during a passthru session. Programs which cannot be run under the PASSTHRU function are discussed in "Considerations for Using PASSTHRU." Considerations for Using PASSTHRU Certain restrictions apply to programming for the PASSTHRU session. Before establishing a session, you must know what you can and cannot do with PASSTHRU. Virtual Terminal Support PASSTHRU uses the virtual terminal support of the Event Driven Executive. Because of this, the restrictions inherent in virtual terminal support also apply to PASSTHRU. Virtual terminals do not support static screens. Therefore, programs that use static screens cannot be run under the PASSTHRU function. This includes programs such as the full screen editor, $FSEDIT. Another virtual terminal restriction is that the maximum record length is 254 bytes. During system generation, you must define two virtual terminals for the remote system: CDRVTA and CDRVTB. You may want to change the LINSIZE parameter. A LINSIZE of 132 will handle output that uses the full width of a printer. Specifying a smaller value saves storage, but messages longer than the LINSIZE will be truncated. The maximum value for LINSIZE is 254. Because the $RMU PASSTHRU function uses a predefined set of virtual terminals (CDRVTA and CDRVTB), only one PASSTHRU session can be conducted at a time. While a PASSTHRU session is being conducted, another copy of $RMU (defined for another communications line) can be performing any other function except PASSTHRU. No Attention Interrupt $RMU allows the host to transmit a Program Function key or an attention key only after $RMU has sent a request message. Therefore, when the attention key is pressed at a host terminal, the terminal stops communicating with $RMU (the remote system) and begins communicating with its own (the host) system. This prevents output from $RMU to the host from being interrupted by a host terminal attention key, as it could be by a local terminal. For example, a listing produced by the $DISKUT2 utility could not be interrupted by pressing the host terminal attention key and entering the $C command. o CO-96 SC34-0638 o Interacting Between Host and Remote Systems (PASSTHRU) (continued) Deadlock and $RMUPA A program that stops communicating with the terminal which loaded it and waits for operator commands (using the attention or Program Function key) will not run directly under the P ASSTHRU function. This is because $RMU waits indefinitely on a READTEXT to the virtual channel at the same time the host program is waiting for an Attention or PF key. Since both programs are "listening" and neither is "talking," both will wait forever. This is called a deadlock. Programs that may do this include: $DEBUG $TRAP $LOG $BSCTRCE $TERMUT 3 (attention-entered commands) $IOTEST (attention-entered commands) CALCDEMO (sample program) $RMUPA is a program that can break this deadlock. It must be started under the PASSTHRU function prior to starting a PASSTHRU session with a program which may have this problem. $RMUP A causes a "disconnect", which results in a $RMU sending a Program End P ASSTHRU record to the host whenever the following events occur: o • No activity has occurred over the virtual channel for 20 seconds. • $RMU is waiting on completion of a READTEXT instruction. • The host program is not enqueued (ENQT) on its virtual terminal. $RMUP A uses the STIMER instruction; therefore, timer support must be included in the Event Driven Executive system. The sample PASSTHRU host program in "PASSTHRU Sample Program" on page CO-II? shows how to use $RMUPA. First $RMUPA is started. When a Program End PASSTHRU record is received at the host, the host responds with a Program End PASSTHRU record and the PASSTHRU session with $RMUPA ends. Only one copy of $RMUPA should be running at any time; it can run in any partition. It continues running until an "attention" followed by $RMUPA is entered. Once $RMUPA is running, you may start another program. The sample PASSTHRU host program in "Example of Conducting a PASSTHRU Session" on page CO-12S shows how you can use $DEBUG. Note that you can enter $PFO to provide the same function as the attention key. If a remote program does not perform any terminal I/O for 20 seconds, $RMUPA causes a Program End record to be sent even though the program is still running. If this happens, the host should respond with a Request for Data record until the remote program performs terminal I/O. o Chapter 2. Remote Management Utility ($RMU) CO-9? Remote Management Utility ($RMU) Interacting Between Host and Remote Systems (PASSTHRU) (continued) Indefinite Waits o If the PASSTHRU function loads a program which issues an ENQT for a terminal other than the terminal which loaded $RMU and the program terminates, $RMU does not receive a "disconnect" over the virtual channel and the host will not receive a Program End record. $RMU will wait indefinitely. One example of when this occurs is when $EDXASM is running with output directed to a printer. This condition can be avoided in two ways: • Load the program from another program (such as the $JOBUTIL utility) which will wait for the program to complete. Programs that require interaction with the terminal operator, such as $EDXASM, should be handled in this way. • Load the program through a session with the Event Driven Executive supervisor (using the $L command) and respond with a Program End when the command terminates. Abrupt Termination If a PASSTHRU session is abruptly terminated (status received from host, invalid message received from host, or an error in the BSCAM), $RMU sends a return code 5 ("disconnected") to the program for the outstanding terminal request. This code will be received only once by the PASSTHRU-invoked program. The program should take appropriate action, which would most likely be to terminate. If the program does not recognize the error and continues to perform terminal I/O, it will interfere with attempts to establish a new PASSTHRU session. If the new session is being established with a program, $RMU returns the status "virtual terminal busy." The host may establish a session with the Event Driven Executive supervisor and issue a $C command to cancel the suspended program. (As noted in the Operator Commands and Utilities Reference, the $C command should be used with caution). When a load command ($L) is issued during a PASSTHRU session with the Event Driven Executive supervisor, a Program End record, resulting from completion of the command, may be received by the host. Whether it is received depends on how quickly the loaded program begins performing terminal I/O. Timeouts $RMU will not time-out while it is receiving messages during a PASSTHRU session. However, if the host does not acknowledge receipt of messages sent by $RMU, a time-out will occur and the PASSTHRU session will terminate. This can be avoided in two ways: • Avoid any long delays at the host while messages are being received from the Series/I. • Define a high retry count for the RETRIES parameter of the BSCLINE statement. o CO-98 SC34-0638 o Interacting Between Host and Remote Systems (PASSTHRU) (continued) Send your P ASSTHRU request by coding a BSCWRITE IX instruction, along with the required information fields. Once the passthru session begins, the host and $RMU exchange a series of messages in a manner similar to the way messages are written to and read from a terminal. This record exchange consists of two parts: • Establishing a PASSTHRU session Conducting a PASSTHRU session, Establishing a PASSTHRU Session The host initiates the PASSTHRU function by sending a PASSTHRU request to $RMU. After the host receives a successful status record and an EOT, a PASSTHRU session is established. The PASSTHRU request specifies (in the RMPRPGM field) the type of session: Communication with the Event Driven Executive supervisor • Communication with a program or utility which $RMU will load. If a session with the EDX supervisor is established, $RMU issues an "attention" (as if the attention key on the terminal were pressed). After the terminal on the host receives the caret symbol (», the host operator can enter a Series/1 operator command, for example, $L. c If a session with a program is established, the host specifies the name of the program and $RMU loads the program. The P ASSTHRU session will be conducted with the host interacting with the program. Coding Required Fields for PASSTHRU Request The chart that follows shows all the fields to code in your program for a PASSTHRU request. The fields identified by an asterisk (*) contain variable values. You can code any appropriate value in these fields. However, the other fields can contain only the values shown in the chart. Code these fields exactly as the chart specifies. Field RMHBSCC Size Tvpe 2 hex Explanation What to Code Starts a message RMHBSCC DATA X'1002' RMHID 1 alpha Identifies a message to $RMU RMHID DATA C'X' RMHTYP 1 alpha Identifies a request RMHTYP DATA C'R' Figure SO (Part 1 of 2). Required Fields for PASSTHRU Request o Chapter 2. Remote Management Utility ($RMU) CO-99 Remote Management Utility ($RMU) Interacting Between Host and Remote Systems (PASSTHRU) (continued) Field Size Tvpe Explanation What to Code RMREO 2 num Specifies the PASSTHRU request RMREO DATA F12' RMPRBLK* 2 num Specifies record blocking by remote system RMPRBLK DATA Fn' RMPRFLG 1 Reserved field (unused) RMPFLG DATA H'O' RMPRPTN* 1 num Partition to run program or utility in RMPRPTN DATA H'n' RMPRPGM* 8 alpha Name of program or utility to interact with host RMPRPGM DATA CL8'PROGNAME' RMPRVOL* 6 alpha Volume containing the program or utility Default= IPL volume RMPRVOL DATA CL6'VOLUME' RMPRLFS* 2 num Free space to pass to program RMPRLFS DATA F'n' RMPRPRM# (*) 2 num Length of parameters to pass to program RMPRPRM# DATA F'n' RMPRPRM* variable Parameters to be passed to the program. RMPRPRM EOU * RMPRDS# (*) 2 num Number of data sets to pass to program RMPRDS# DATA Fn' RMPRDS 14 alpha Name and volume of data sets to pass to program RMPRDS EOU * o Figure SO (Part 2 of 2). Required Fields for PASSTHRU Request Here is an example of the communications flow for a PASSTHRU request. Figure 56 on page CO-118 shows a sample program that sends a PASSTHRU request. o CO-IOO SC34-0638 o Interacting Between Host and Remote Systems (PASSTHRU) (continued) Host Program BSCWRITE IX Host ENQ -------> RMHBSCC DATA X'1002' RMHID DATA C'X' RMHTYP DATA C'R' RMREQ DATA F12' RMPRFLG DATA H'O' RMPRPTN DATA H'O' RMPRPGM DATA CLS'MYPROG' RMPRVOL DATA CL6'MYVOL' RMPRLFS DATA F256' RMPRBLK DATA FO' RMPRPRM# DATA FO' RMPRPRM EQU * RMPRDS# DATA FO' RMPRDS EQU * TEXT BSCWRITE E EOT Remote <------- ACK* -------> <------- ACK* -------> <------- ENQ ACK* -------> <------- TEXT (status) RMHTYP ='S' RMSREQ=12 RMSFN=-1 BSCREAD I o ACK* -------> <------- EOT BSCREAD C <------ACK* ENQ -------> <------- TEXT (passthru data) RMHTYP='P' RMPTYP=1 RMPST=Status from READTEXT RMPTXTL=Message length RMPTXT=Message text BSCREAD I ACK* -------> Figure 51 (Part 1 of 2). Communications Flow for PASSTHRU Chapter 2. Remote Management Utility ($RMU) CO-l 0 1 Remote Management Utility ($RMU) Interacting Between Host and Remote Systems (PASSTHRU) (continued) o <-------- BSCREAD C TEXT (request for data) RMHTYP='P' RMPTYP=2 -------> ACK* BSCREAD C ENO -------> BSCWRITE IX RMHTYP='P' RMPTYP=1 RMPST=Q (Unused) RMPTXTL=Message length RMPTXT=Message text TEXT BSCWRITE E EaT -------> -------> -------> <------- TEXT <------- EaT <------- ACK* <------- ACK* <------- ENO ACK* BSCREAD I BSCREAD C ENO BSCWRITE IX (PASSTHRU program end) RMHTYP='P' RMPTYP=3 -------> TEXT (PASSTHRU program end) RMHTYP='P' RMPTYP=3 ACK* -------> <------- EaT <------- ACK* --------> <------- ACK* BSCREAD E EaT () ------> Figure 51 (Part 2 o( 2). Communications Flow (or PASSTHRU Conducting a PASSTHRU Session Once the P ASSTHRU session is established, the host and the remote systems exchange P ASSTHRU records. These records provide information to and receive information from the host program, as if the host program were a terminal on the remote system. There are four types of PASSTHRU records: • Text or Program Function (PF) Key - passes messages or Program Function keys • Request for Data - indicates data should be sent • Program End - indicates termination • No Data - indicates no messages are available. o CO-I02 SC34-0638 o Interacting Between Host and Remote Systems (PASSTHRU) (continued) The host "state" can be changed by: • Receiving a PASSTHRU record from $RMU. This is shown as a solid horizontal line with an arrow pointing to the new state. • Sending a PASSTHRU record to $RMU. This is shown as a horizontal line of dashes with an arrow pointing to the new state. • A change of state with no PASSTHRU record transfer. This is represented by a dotted line with an arrow pointing to the new state. The PASSTHRU session begins with the host in the state READTEXT. The host issues a read to the communications line and receives either a Text or PF Key, Request for Data, or Program End record. If the host receives a Text or PF Key record, the Series I 1 is sending data to the host. The program (or the supervisor) has issued a PRINTEXT or other terminal 110 instruction, and it is transmitted to the host as if the host were a terminal. The state of the host changes from READ TEXT to READING, the host reads the Text or PF Key record, and the state then changes back to READ TEXT . The host remains in the READ TEXT state as long as it receives Text or PF Key records. o If the host receives a Request for Data record, $RMU needs data from the host. The program (or the supervisor) has issued a READTEXT or other terminal 110 instruction, and requires data from the host as if the host were a terminal. The state of the host changes from READTEXT to "PGM NEEDS DATA". Note that an EOT follows the the Request for Data record. The host must also read the EOT. When the host is in the state "PGM NEEDS DATA," it must send a Text or PF Key record followed by an EOT. The Text or PF Key record the host sends can contain either text or a PF key. If the host sends text, the state of the host changes from "PGM NEEDS DATA" to READTEXT. If the host sends a Program Function key, the host goes to the state "PFK SENT." The host issues a read to the communications line and will receive a Request for Data record followed by an EOT. $RMU sends the Request for Data record to the host because the original request was not satisfied by the Program Function key. As a result, the host is now in the state "SEND TEXT." The host must send a Text or PF Key record which contains text, followed by an EOT. The host then returns to the state READTEXT. If the host is in the state READ TEXT and receives a Program End record followed by an EOT, this means that the program, the operator command, or an attention exit has completed. The host changes from the state READTEXT to "CONTINUE ?". At this point, the host must determine whether the P ASSTHRU session should continue. 0 ,'\ " Chapter 2. Remote Management Utility ($RMU) CO-I03 Remote Management Utility ($RMU) Interacting Between Host and Remote Systems (PASSTHRU) (continued) If the PASSTHRU session is with a program and the program ends (while in the "CONTINUE ?" state), the host usually does not continue the session. If the session is with the supervisor and o you enter a $L command, the host usually continues the session and communicates with the program that was loaded. To terminate the PASSTHRU session, the host sends a Program End record, followed by an EOT. This changes the state of the host from "CONTINUE?" to "EXIT". The PASSTHRU session now terminates and the Remote Management Utility waits for a new request from the host. To continue the session, the host sends a Request for Data record followed by an EOT. The state of the host then changes from "CONTINUE ?" to "ACTIVITY?". At this point, $RMU determines if there is any activity on the Series/l for the host. If there is, $RMU sends one of the three PASSTHRU records (Text or PF Key, Request for Data, or Program End) which the host can receive in the "READTEXT" state. The state of the host then changes depending on the type of PASSTHRU record it receives. If there is no terminal activity, $RMU sends a No Data record followed by an EOT, and the host state changes from "ACTIVITY?" to "CONTINUE ?". The host then determines whether it should continue. If the program in the Series/l has delays in performing terminal I/O while the host is in the "CONTINUE ?" state, the host may change from "CONTINUE ?" to "ACTIVITY?" and back again several times. However, if no activity occurs, the host must eventually send a Program End record and terminate the PASSTHRU session. Figure 57 on page CO-125 shows a PASSTHRU session that invokes and runs the $DEBUG utility from the host terminal. ~" '~L._"i PASSTHRU Record Types This section describes the format and content of the four types of PASSTHRU records. Text or Program Function Key Record This record consists of two segments. The first six bytes, or the main segment, identifies the record as a PASSTHRU Text or Program Function (PF) key record. One or more text or PF key segments follow the main segment. In the main segment, all values are constants, as shown below. The number 1 for the RMPTYP field identifies the record as a text or PF key record. The text or Program Function key segment contains the information to be transferred. o CO-I04 SC34-0638 o Interacting Between Host and Remote Systems (PASSTHRU) (continued) Main segment: RMHBSCC DATA X'1002' RMHID DATA C'X' RMHTYP DATA CP' RMPTYP DATA F1' Text or Program Function key segment: RMPST DATA Fnnnn' RMPTXTL DATA F'nnnn' RMPTXT DATA C'xxxx' The fields in the text or Program Function key segment are: RMPST A 2-byte numeric field containing the return code associated with the text. For example, the return code might indicate that the text is to appear on a new line. This field contains a value only on records received by the host. Some return codes have no text associated with them. For a complete description of the possible return codes, see the virtual terminal return codes for the READTEXT instruction in the Language Reference. o The return codes which apply are: X'8Fnn' X'8Enn' -2 -1 LINE=nn received SKIP= nn received Line received (no CR) New line received RMPTXTL A 2-byte numeric field specifying either the length of the text, or indicating a PF key is being sent (-1). If there is no text, for example when only a return code is sent, this field contains a zero. RMPTXT Either a variable-length alphameric field containing text, or a 2-byte numeric field containing the PF key value. If the field contains text, the length of the text must equal RMPTXTL. If RMPTXTL is an odd number, one byte of blanks (X'40') follows the text. If the Text or PF Key record is not blocked, it will contain one of each segment. If the record is blocked, it will contain one main segment followed by multiple text or PF key segments. The host must determine the length of the record to process each segment. All records sent by the host are unblocked. Records sent by $RMU may be blocked if specified on the P ASSTHRU request. Blocking is discussed in "PASSTHRU Blocking" on page CO-l08. All Text or PF Key records sent by $RMU will always contain text; the host will never receive a Program Function key. o Chapter 2. Remote Management Utility ($RMU) CO-l05 Remote Management Utility ($RMU) Interacting Between Host and Remote Systems (PASSTHRU) (continued) When the host sends a Text or PF Key record, the record may contain either text (the host as a terminal has entered text), or a PF key (the host as a terminal has entered a PF key). If text is sent, the length of the text is specified in the RMPTXTL field, and the text is specified in the RMPTXT field. The RMPST field is not used. The following example shows a record sent by the host which contains the text "MESSAGE FROM HOST PROGRAM." RMHBSCC DATA X'1002' RMHID DATA C'X' RMHTYP DATA C'P' RMPTYP DATA F1' RMPST DATA FO' (IGNORED) RMPTXTL DATA F25' RMPTXT DATA C'MESSAGE FROM HOST PROGRAM' When the host sends a PF key, the value of the RMPTXTL field is set to - i and the PF key is specified as a 2-byte numeric value in the RMPTXT field. A PF key value of 0 is the equivalent of an "attention." The following example shows the host sending a Program Function key 3. RMHBSCC DATA X'1002' RMHID DATA C'X' RMHTYP DATA C'P' RMPTYP DATA F1' RMPST DATA FO' (IGNORED) RMPTXTL DATA F-1' (INDICATES PF KEY) RMPPF DATA F3' PF KEY 3 Figure 52 on page CO-tO? is an example of the records the host receives from a program which executes a PRINTEXT instruction. CO-I06 SC34-0638 o o Interacting Between Host and Remote Systems (PASSTHRU) (continued) Issued by program on Series/1 : PRINTEXT 'ENTER COMMAND',SKIP=1 PASSTHRU record received by host with no blocking: RMHBSCC DATA X'1002' RMHID DATA C'X' RMHTYP DATA C'P' RMPTYP DATA F1' RMPST DATA X'SE01' (SKIP=1) RMPTXTL DATA FO' (NO TEXT) RMHBSCC DATA X'1002' RMHID DATA C'X' RMHTYP DATA C'P' RMPTYP DATA F1' RMPST DATA F-2' RMPTXTL DATA F13' RMPTXT DATA C'ENTER COMMAND' DATA C" (PAD) PASSTHRU record received by host with blocking: c RMHBSCC DATA X'1002' RMHID DATA C'X' RMHTYP DATA C'P' RMPTYP DATA F1' DATA X'SE01' (SKIP=1) DATA FO' (NO TEXT) DATA F-2' (NEXT SEGMENT) DATA F13' DATA C'ENTER COMMAND' DATA C' , (PAD) Figure 52. Example of PASSTHRU Records Received by Host Request for Data Record The Request for Data record is a 6-byte record that contains constant values. A Request for Data record is always followed by an EOT. The format of the Request for Data record is: RMHBSCC DATA X'1002' RMHID DATA C'X' RMHTYP DATA C'P' RMPTYP DATA F2' o Chapter 2. Remote Management Utility ($RMU) CO-I07 Remote Management Utility ($RMU) Interacting Between Host and Remote Systems (PASSTHRU) (continued) Program End Record o The Program End record is a 6-byte record that contains constant values. A Program End record is always followed by an EOT. The format of the Program End record is: RMHBSCC DATA X'1002' RMHID DATA C'X' RMHTYP DATA C'P' RMPTYP DATA F'3' No Data Record The No Data record is a 6-byte record that contains constant values. A No Data record is always followed by an EOT. The format of the No Data record is: RMHBSCC DATA X'1002' RMHID DATA C'X' RMHTYP DATA C'P' RMPTYP DATA F'4' PASSTHRU Blocking When PASSTHRU records are not blocked, each Text or PF Key record contains only one text segment. With blocking, each record may contain mUltiple text segments. For PASSTHRU sessions in which the host receives many consecutive lines of output, such as a result of a "list" command to a utility, blocking allows more efficient usage of the communications line. !(:~) The host specifies blocking in the RMPRBLK field of the PASSTHRU request. If this field is zero, blocking is not performed. A value greater than zero indicates the maximum size, in bytes, of the text segments which the host can process. To determine the value for the RMPRBLK field, start with the size of the buffer at the host. Subtract 6 from the size of the host buffer for the 6-byte main segment of each record. Then subtract 2 more to allow space for the ETX plus one byte for word alignment. The resulting number is the maximum block size. $RMU will use this value if it can. However, if $RMU does not have a buffer as large as the value of RMPRBLK, $RMU will use the largest block size it can. The host must determine the length of the Text or PF Key record and process each text segment until the end of the record is reached. If a text record exceeds the block size specified in RMPRBLK, $RMU still-sends that record to the host. This may result in a "wrong length record" condition. The host should ensure that it can handle the longest length record expected from the utility. For example, if the longest text record is 132 bytes, a block size of 136 would be sufficient for all records. o CO-I08 SC34-0638 () Interacting Between Host and Remote Systems (PASSTHRU) (continued) Sample Programs The following sample Series/1 programs communicate with and perform functions of the Remote Management Utility. Multifunction Program This program executes on a host Series/land communicates with $RMU on a remote Series/1. The program performs all the functions of $RMU except SEND, RECEIVE, and PASSTHRU. The program sends an ALLOCATE request and prints a status message, but can be used for the other functions by simply defining the fields of the desired request at label "RM." UT START * o * * TERM * BSCERR PROGRAM START EQU * BSCOPEN IOCB,ERROR=BSCERR IOCB3,+REQLEN MOVE OPEN BSC LINE LENGTH OF REQUEST IN IOCB BSCWRITE IX, IOCB,ERROR=BSCERR WRITE REQUEST WRITE EOT BSCWRITE E,IOCB,ERROR=BSCERR MOVEA IOCB2,ST ADDRESS OF STATUS IOCB3,20 LENGTH OF STATUS MOVE IN IOCB BSCREAD I,IOCB,ERROR=BSCERR,TIMEOUT=NO READ STATUS IOCB,IOCB2,RESULT=PN2 LENGTH INTO PRINTNUM SUB ADD PN2,+1 PN2,1 CONVERT LENGTH TO WORDS SHIFTR PRINTEXT '@STATUS MESSAGE:@' PRINTNUM ST,O,MODE=HEX,P2=PN2 PRINT STATUS MSG READ EOT BSCREAD C,IOCB,ERROR=BSCERR,TIMEOUT=NO (ST+6,EQ,-1) IF SUCCESSFUL STATUS IF THEN PRINTEXT '@FUNCTION SUCCESSFUL' ELSE ELSE PRINTEXT '@FUNCTION FAILED' ENDIF ENDIF POINT TERMINATION EQU * CLOSE BSC LINE BSCCLOSE IOCB PROGSTOP EQU MOVE PRINTEXT PRINTNUM GO TO * ST,UT '@BSC ERROR:' ST TERM BSC ERROR ROUTINE MOVE RETURN CODE PRINT RETURN CODE GO TO TERMINATION Figure 53 (Part 1 of 2). Multifunction Sample Program o Chapter 2. Remote Management Utility ($RMU) CO-109 Remote Management Utility ($RMU) o Sample Programs (continued) IOCB * * * ST * * * * * * *-* RM 9,RM,0,P2=IOCB2,P3=IOCB3 IOCB P2=IOCB2 IS MESSAGE ADDRESS P3=IOCB3 IS MESSAGE LENGTH DATA 10F'0' AREA FOR STATUS RECORD 10 BYTES NORMAL STATUS RECORD 8 BYTES IDCHECK STATUS EXT. ETX 1 BYTE TOTAL, ROUNDED UP TO 10 WORDS THE FOLLOWING MAY BE CHANGED FOR OTHER REQUESTS --* RMHBSCC RMHID RMHTYP RMREQ RMADSN RMAVOL RMANREC RMADST REQLEN * BSCIOCB 19 BYTES EQU DATA DATA DATA DATA DATA DATA DATA DATA EQU * X'1002' C'X' C'R' F'2' CL8'MYDATA' CL6'MYVOL' D' 10' F'1 ' *-RM REQUEST BSC CTRL CHARS (DLE STX) HEADER ID HEADER TYPE: REQUEST REQUEST TYPE: ALLOCATE . DATA SET NAME: MYDATA VOLUME NAME: MYVOL NUMBER RECORDS: 10 DATA SET TYPE: DATA LENGTH OF REQUEST ENDPROG END Figure 53 (Part 2 of 2). $RMU Multifunction Program o CO-110 SC34-0638 o Sample Programs (continued) RECEIVE Sample Program This sample program, which runs on the host, sends a RECEIVE request transferring a data set to the remote Series/I. The blocking factor for the data is 2, and it is transferred in 80-byte records. EXRECV START * * * o DATA RDEND PROGRAM START,DS=((RECVDS,??» EQU * BSCOPEN IOCB,ERROR=BSCOPEN OPEN BSC LINE MOVE IOCB3,+REQLEN LENGTH OF REQUEST IN IOCB BSCWRITE IX,IOCB,ERROR=BSCERR WRITE REQUEST BSCWRITE E,IOCB,ERROR=BSCERR WRITE EOT MOVEA IOCB2,ST MOVE IOCB3,+STL BSCREAD I,IOCB,ERROR=BSCERR BSCREAD C,IOCB,ERROR=BSCERR IF (STSFN,NE,-1) PRINTEXT '@STATUS INDICATES PRINTNUM ST,5,MODE=HEX GOTO TERM1 ENDIF ADDRESS OF STATUS LENGTH OF STATUS IN IOCB READ STATUS READ EOT IF STATUS INDICATES ERROR ERROR' THEN PRINT IT TERMINATE ENDIF MOVEA IOCB2,DT ADDRESS OF DATA MOVE IOCB3,+DTL SET LENGTH EQU * READ DS1,DISKREC,ERROR=RDERR,END=RDEND READ RECORD MOVE DTDATA,DISKREC,(80,BYTE) FIRST RECORD MOVE DTDATA+80,DISKREC+128, (80,BYTE) SECOND RECORD IF (COUNT,EQ,O) IF FIRST TIME THEN BSCWRITE IX,IOCB,ERROR=BSCERR,END=BSCAB WRITE INITIAL ELSE ELSE BSCWRITE CX,IOCB,ERROR=BSCERR,END=BSCAB WRITE CONTINUE ENDIF ENDIF ADD COUNT, 2 ADD 2 TO COUNT GOTO DATA CONTINUE TRANSFERRING DATA EQU * TO HERE WHEN AT ENDFILE BSCWRITE E,IOCB,ERROR=BSCERR WRITE EOT BSCREAD I,IOCB,ERROR=BSCERR READ COUNT BSCREAD C,IOCB,ERROR=BSCERR READ EOT IF (DTCCNT,EQ,COUNT) IF COUNT OK THEN PRINTEXT 'COUNT OK:' PRINT IT PRINTNUM COUNT ELSE ELSE PRINTEXT '@COUNT FAILED. COUNTED:' PRINTNUM COUNT PRINT COUNTS PRINTEXT' COUNT RECORD:' PRINTNUM DTCCNT ENDIF ENDIF Figure 54 (Part 1 of 4). RECEIVE Sample Program o Chapter 2. Remote Management Utility ($RMU) CO-Ill Remote Management Utility ($RMU) o Sample Programs (continued) TERM 1 TERM2 BSCAB * BSCERR * BSCOPEN EQU BSCCLOSE EQU PROGSTOP EQU BSCREAD BSCREAD PRINTEXT PRINTNUM GOTO ABORT RECEIVED ON WRITE I,IOCB,ERROR=BSCERR READ STATUS C,IOCB,ERROR=BSCERR READ EOT '@ABORT RECEIVED. STATUS:' DT,5,MODE=HEX TERM1 TERMINATE EQU * MOVE PRINTEXT PRINTNUM GOTO ST,EXRECV '@BSC ERROR:' ST TERM1 EQU * MOVE PRINTEXT PRINTNUM GOTO OPEN ERROR ST,EXRECV MOVE RETURN CODE '@BSC OPEN ERROR:' ST PRINT RETURN CODE TERM2 GO TO TERMINATION * * * IOCB EXIT POINT FOR NORMAL TERM CLOSE BSC LINE EXIT POINT FOR OPEN FAILED BSC ERROR ROUTINE MOVE RETURN CODE PRINT RETURN CODE GO TO TERMINATION Figure 54 (Part 2 of 4). RECEIVE Sample Pr~am o CO-112 SC34-0638 o Sample Programs (continued) * EQU * MOVE PRINTEXT PRINTNUM MOVEA DISK READ ERROR MOVE RETURN CODE ST,EXRECV '@DISK READ ERROR: ' PRINT RETURN CODE ST POINT IOCB TO IOCB2,ST STATUS MESSAGE IOCB3,4 SET LENGTH TO 4 MOVE ST,X'1002' SET UP STATUS MESSAGE MOVE ST+2,C'XS' MOVE BSCWRITE IX, IOCB,ERROR=BSCERR SEND STATUS MESSAGE BSCWRITE E,IOCB,ERROR=BSCERR SEND EOT GO TO TERMINATION GOTO TERM2 RDERR * *IOCB * * * RLEN* COUNT *-- * c BSCIOCB 9,RM,O,P2=IOCB2,P3=IOCB3 IOCB P2= IS RECORD ADDRESS P3= IS RECORD LENGTH DATA F'O' RECORD LENGTH DATA F'O' RECORD COUNT REQUEST FOR $RMU TO RECEIVE A DATA SET RM RMHBSCC RMHID RMHTYP RMREQ RMRDSN RMRVOL RMRSTR RMRTYP RMRBLK REQLEN EQU DATA DATA DATA DATA DATA DATA DATA DATA DATA EQU * X'1002' C'X' C'R' F'1' CL8'MYDATA' CL6' D'O' F'1' F'2' *-RM REQUEST BSC CNTRL CHARS (DLE STX) HEADER ID HEADER TYPE: REQUEST REQUEST TYPE: RECEIVE DATA SET NAME: MYDATA VOLUME NAME: (IPL VOL) STARTING RECORD: NONE RECEIVE TYPE: SOURCE BLOCKING FACTOR: 2 LENGTH OF REQUEST Figure 54 (Part 3 of 4). RECEIVE Sample Program o Chapter 2. Remote Management Utility ($RMU) CO-113 Remote Management Utility ($RMU) o Sample Programs (continued) *-- STATUS RECORD * ST * * * STSFN STL **-* DT DATA 10F'O' AREA FOR STATUS RECORD EQU EQU ST+6 *-ST STATUS FUNCTION STATUS RECORD LENGTH DATA AND COUNT RECORD DTCCNT DTDATA DTL * DISKREC DATA DATA EQU DATA EQU X'1002' C'XD' DT+l0 160C' , *-DT DATA 128F'O' ENDPROG END DATA RECORD: DLE STX HEADER ID, TYPE (DATA) LOCATION OF COUNT LENGTH DISK RECORD AREA Figure S4 (Part 4 of 4). RECEIVE Sample Program o CO-114 SC34-0638 o Sample Programs (continued) SEND Sample Program This program, which runs on the host, contains a SEND request. It asks the remote system to transfer a data set to the host. Data is blocked with a factor of 3, and transferred in 2S6-byte records. EXSEND START DATA * * * PROGRAM START,DS=((SENDDS,??» EQU * BSCOPEN IOCB,ERROR=BSCOPEN OPEN BSC LINE MOVE IOCB3,+REQLEN LENGTH OF REQUEST IN IOCB BSCWRITE IX,IOCB,ERROR=BSCERR WRITE REQUEST BSCWRITE E,IOCB,ERROR=BSCERR WRITE EOT MOVEA IOCB2,ST ADDRESS OF STATUS MOVE IOCB3,+STL LENGTH OF STATUS IN IOCB BSCREAD I,IOCB,ERROR=BSCERR READ STATUS IF (STSFN,NE,-1) IF STATUS INDICATES ERROR BSCREAD C,IOCB,ERROR=BSCERR READ EOT PRINTEXT '@STATUS INDICATES ERROR' THEN PRINT IT PRINTNUM ST,5,MODE=HEX GOTO TERM1 TERMINATE ENDIF ENDIF MOVEA IOCB2,DT ADDRESS OF DATA EQU * IOCB3,+DTL SET LENGTH TO MAX MOVE BSCREAD C,IOCB,ERROR=BSCERR READ DATA OR COUNT IOCB,IOCB2,RESULT=RLEN COMPUTE LENGTH SUB (DTHTYPR,EQ,C'D' ,BYTE) IF DATA THEN IF RLEN,+4 -4 FROM LENGTH SUB FOR HEADER RLEN = NUMBER RECORDS SHIFTR RLEN,8 WRITE RECORDS NEXT DS1,DTDATA,RLEN,ERROR=WRERR,END=WRERR WRITE COUNT,RLEN ADD NUMBER WRITTEN ADD TO COUNT GO READ NEXT RECORD GOTO DATA ELSE ELSE (DTHTYPR,EQ,C'C' ,BYTE) IF COUNT THEN IF IF (DTCCNT,EQ,COUNT) IF COUNT OK THEN PRINTEXT 'COUNT OK:' PRINT IT PRINTNUM COUNT ELSE ELSE PRINTEXT 'COUNT FAILED. COUNTED:' PRINTNUM COUNT PRINT COUNTS PRINTEXT' COUNT RECORD:' PRINTNUM DTCCNT ENDIF ENDIF ELSE MUST BE STATUS ELSE PRINTEXT 'ERROR MSG RECEIVED:' PRINT IT PRINTNUM DT,5,MODE=HEX ENDIF ENDIF ENDIF ENDIF BSCREAD C,IOCB,ERROR=BSCERR READ EOT Figure 55 (Part 1 of 3). SEND Sample Program o Chapter 2. Remote Management Utility ($RMU) CO-tts Remote Management Utility ($RMU) Sample Programs (continued) TERM 1 TERM2 BSCERR * BSCOPEN * WRERR EQU BSCCLOSE EQU PROGSTOP EQU * MOVE PRINTEXT PRINTNUM GO TO () * * IOCB ST,EXSEND '@BSC ERROR:' ST TERM1 EXIT POINT FOR NORMAL TERM CLOSE BSC LINE EXIT POINT FOR OPEN FAILED BSC ERROR ROUTINE MOVE RETURN CODE PRINT RETURN CODE GO TO TERMINATION EQU * MOVE PRINTEXT PRINTNUM GOTO OPEN ERROR ST,EXSEND MOVE RETURN CODE '@BSC OPEN ERROR:' ST PRINT RETURN CODE TERM2 GO TO TERMINATION EQU * MOVE PRINTEXT PRINTNUM BSCWRITE MOVEA MOVE MOVE MOVE BSCWRITE BSCWRITE GO TO WRITE ERROR MOVE RETURN CODE ST,EXSEND '@DISK WRITE ERROR:' PRINT RETURN CODE ST E,IOCB,ERROR=BSCERR WRITE EOT (ABORT) POINT IOCB TO STATUS IOCB2,ST SET LENGTH TO 4 IOCB3,4 SET UP STATUS MESSAGE ST,X'1002' ST+2,C'XS' IX, IOCB,ERROR=BSCERR WRITE STATUS E,IOCB,ERROR=BSCERR WRITE EOT GO TO TERMINATION TERM 1 Figure 55 (Part 2 of 3). SEND Sample Program o CO-116 SC34-0638 o 0 Sample Programs (continued) * BSCIOCB 9,RM,O,P2=IOCB2,P3=IOCB3 IOCB IOCB * P2=IOCB2 IDENTIFIES MSG ADDRESS * P3=IOCB3 IDENTIFIES MSG LENGTH * F'O' RECORD LENGTH RLEN DATA * F'O' DATA RECORD COUNT COUNT * *-- REQUEST FOR $RMU TO SEND DATA SET * REQUEST RM EQU * BSC CNTRL CHARS (DLE STX) RMHBSCC DATA x'1002' HEADER ID RMHID DATA C'X' REQUEST HEADER TYPE: RMHTYP DATA C'R' REQUEST TYPE: SEND RMREQ DATA F'O' DATA SET NAME: MY DATA RMSDSN DATA CL8'MYDATA' (IPL VOL) VOLUME NAME: RMSVOL DATA CL6' RMSSTR DATA D'O' STARTING RECORD: NONE SEND TYPE: NORMAL RMSTYP DATA F'O' BLOCKING FACTOR: 3 RMSBLK DATA F'3' LENGTH OF REQUEST REQLEN EQU *-RM *-- STATUS RECORD * AREA FOR STATUS RECORD DATA 10F'O' ST * * * STATUS FUNCTION STSFN EQU ST+6 STATUS RECORD LENGTH STL EQU *-ST * *-- DATA AND COUNT RECORD * DATA 387F'O' AREA FOR DATA RECORD DT 4 BYTES MESSAGE HEADER * 768 BYTES 3 256-BYTE RECS * 1 BYTE ETX * * 773 BYTES TOTAL, ROUNDED UP * TO 387 WORDS * RECORD TYPE DT+3 DTHTYPR EQU DATA DTDATA EQU DT+4 COUNT DTCCNT EQU DT+10 LENGTH DTL EQU *-DT ENDPROG END Figure 55 (Part 3 of 3). SEND Sample Program PASSTHRU Sample Program This sample program executes a PASSTHRU session. The host Series/I establishes a session with the supervisor of a remote Series/I. The program uses blocking. The host terminal looks as if it were connected to the remote system. o Chapter 2. Remote Management Utility ($RMU) CO-II? Remote Management Utility ($RMU) o Sample Programs (continued) EXPASST * * * * * * * * * * * * * * START **-* * * * * PROGRAM START,TERMERR=TERM1 THIS EXAMPLE HOST PROGRAM USES THE PASSTHRU FUNCTION OF THE REMOTE MANAGEMENT UTILITY. THE OPERATOR IS ASKED WHETHER TO START THE PASSTHRU ASSIST PROGRAM. IF SO, THE PROGRAM $RMUPA IS INVOKED. AFTER THIS, A SESSION IS ESTABLISHED WITH THE EDX SUPERVISOR. WHENEVER A "PROGRAM END" PASSTHRU RECORD IS RECEIVED, A "REQUEST DATA" RECORD IS SENT. WHEN A "NO DATA" RECORD IS RECEIVED, THE OPERATOR IS ASKED WHETHER TO "ATTN" (END THE SESSION AND START ANOTHER), "READ" (TRY TO ACQUIRE DATA FROM THE HOST), OR "QUIT" (END THE PASSTHRU SESSION AND THEN TERMINATE. EQU * BSCOPEN IOCB,ERROR=BSCOPEN OPEN BSC LINE START UP PASSTHRU ASSIST PROGRAM ($RMUPA) IF NEEDED QUESTION 'START PASSTHRU ASSIST PROGRAM?' , NO=START2 MOVEA MOVE BSCWRITE BSCWRITE IOCB2,REQPTAS IOCB3,+REQPTASL IX,IOCB,ERROR=BSCERR E,IOCB,ERROR=BSCERR ADDRESS OF REQUEST IN IOCB LENGTH OF REQUEST IN IOCB WRITE REQUEST WRITE EOT ADDRESS OF STATUS IOCB2,ST MOVEA LENGTH OF STATUS IN IOCB MOVE IOCB3,+STL BSCREAD I,IOCB,ERROR=BSCERR READ STATUS BSCREAD C,IOCB,ERROR=BSCERR READ EOT IF (STSFN,NE,-1) IF STATUS INDICATES ERROR PRINTEXT '@STATUS INDICATES ERROR' PRINT IT PRINTNUM ST,5,MODE=HEX GOTO TERM 1 TERMINATE ENDIF ENDIF IOCB2,DT ADDRESS OF DATA MOVEA MOVE IOCB3,+DTL SET LENGTH BSCREAD I, IOCB,ERROR=BSCERR,TIMEOUT=NO READ, EXPECT PROGRAM END BSCREAD C,IOCB,ERROR=BSCERR,TIMEOUT=NO READ EOT (EXPASST,EQ,+1) ,AND, (DT+RMPTYP,EQ,+RMPTYPPE) IF IF PGM END AND EOT THEN DT,X'1002' SET UP PTHRU PGM END MOVE MOVE DT+RMPTYP,+RMPTYPPE PTHRU TYPE IS PGM END IOCB3,+RMPX SET UP LENGTH IN IOCB MOVE BSCWRITE IX,IOCB,ERROR=BSCERR,END=BSCAB WRITE TO RMU BSCWRITE E,IOCB,ERROR=BSCERR WRITE EOT Figure S6 (Part 1 of 7). PASSTHRU Sample Program o CO-tt8 SC34-0638 o Sample Programs (continued) ELSE MOVE PRINTEXT PRINTEXT PRINTNUM PRINTEXT PRINTNUM GOTO ENDIF ELSE ST,EXPASST SAVE RETURN CODE '@UNSUCCESSFUL LOAD OF PASSTHRU ASSIST PGM. ' '@LAST MESSAGE READ: ' DT,10,MODE=HEX PRINT MESSAGE '@LAST RETURN CODE FROM READ:' ST,MODE=HEX PRINT RETURN CODE TERM1 TERMINATE ENDIF * MAIN PASSTHRU PROCESSING. *START2 MOVEA IOCB2,REQPT *-- SEND REQUEST ADDRESS OF REQUEST IN IOCB MOVE IOCB3,+REQLEN LENGTH OF REQUEST IN IOCB BSCWRITE IX,IOCB,ERROR=BSCERR WRITE REQUEST BSCWRITE E,IOCB,ERROR=BSCERR WRITE EOT * o MOVEA IOCB2,ST MOVE IOCB3,+STL BSCREAD I,IOCB,ERROR=BSCERR BSCREAD C,IOCB,ERROR=BSCERR IF (STSFN,NE,-1) PRINTEXT '@STATUS INDICATES PRINTNUM ST,5,MODE=HEX GOTO TERM 1 ENDIF ADDRESS OF STATUS LENGTH OF STATUS IN IOCB READ STATUS READ EOT IF STATUS INDICATES ERROR ERROR' PRINT IT TERMINATE ENDIF Figure 56 (Part 2 of 7). PASSTHRU Sample Program o Chapter 2. Remote Management Utility ($RMU) CO-119 Remote Management Utility ($RMU) o Sample Programs (continued) READ * * *-- * TEXT * * * * EQU * MOVE A IOCB2,DT ADDRESS OF DATA MOVE IOCB3,+DTL SET LENGTH IF (BSCST,NE,+BSCSTRD) IF BSC STATE IS NOT READ BSCREAD I,IOCB,ERROR=BSCERR,TIMEOUT=NO READ INIT MOVE BSCST,+BSCSTRD BSC STATE READ ELSE ELSE BSCREAD C,IOCB,ERROR=BSCERR,TIMEOUT=NO READ CONT ENDIF ENDIF IF (DT+RMHTYP,NE,C'P',BYTE) IF NOT PASSTHRU THEN PRINTEXT '@NON-PASSTHRU MESSAGE RECEIVED:' PRINTNUM DT,5,MODE=HEX PRINT WHAT WAS RECEIVED (WILL BE STATUS) BSCREAD C,IOCB,ERROR=BSCERR,TIMEOUT=NO READ EOT GO TO TERM 1 TERMINATE ENDIF ENDIF CASE: PASSTHRU TYPE GO TO (ERRPT,TEXT,REQD,PGME,NODA),DT+RMPTYP PASSTHRU TYPE: DATA SET #1 TO BEGINNING OF TXT DO UNTIL AT END OF TEXT UNTIL, (#1,EQ,IOCB) (IOCB CONTAINS ADDRESS OF BYTE PAST LAST BYTE OF DATA) IF ( (0, # 1 ) , EQ , -1 ) , OR, ( (0, # 1 ) , EQ , - 2) IF TEXT PRINTEXT (4,#1) ,MODE=LINE PRINT TO TERMINAL IF ((0,#1),EQ,-1) IF NEWLINE PRINTEXT SKIP=1 THEN DO NEWLINE ENDIF ENDIF ADD #1, (2,#1) POINT #1 TO NEXT TEXT ADD #1,5 ADD HEADER LENGTH + 1 AND #1,X'FFFE' POINT TO EVEN BOUNDARY ELSE ELSE IF ((0,#1),EQ,X'8F',BYTE) IF LINE= THEN AND (0,#1) ,X'OOFF' ,RESULT=N1 DO IT PRINTEXT LINE=N1 ON TERMINAL ELSE ELSE IF ((0,#1),EQ,X'8E',BYTE) IF SKIP= THEN AND (0,#1),X'00FF' ,RESULT=N1 DO IT PRINTEXT SKIP=N1 ON TERMINAL ENDIF ENDIF ENDIF ENDIF ADD #1,4 POINT #1 TO NEXT TEXT BLOCK ENDIF ENDIF ENDDO ENDDO END TEXT PROCESSING GO TO READ EQU MOVEA DO *#1,DT+RMPST Figure 56 (Part 3 of 7). PASSTHRU Sample Program o CO-120 SC34-0638 o Sample Programs (continued) REQD * * PGME 0 * NODA NODAQ * * EQU * PASSTHRU TYPE: REQ DATA BSCREAD C,IOCB,ERROR=BSCERR READ EOT MOVE DT+RMPTXTL,X'FEOO' SET UP "TEXT" STATEMENT READTEXT DT+RMPTXT,MODE=LINE GET TEXT FROM TERMINAL MOVE DT,X'1002' SET UP PTHRU TEXT RECORD DT+RMPTYP,+RMPTYPTX PTHRU TYPE IS TEXT OR PFK MOVE MOVE DT+RMPTXTL,O,BYTE ZERO HI-ORDER LENGTH BYTE IF (DT+RMPTXTL,GE,4) ,AND, (DT+RMPTXT,EQ,C'$P'), AND, (DT+TXT2,EQ,C'F' ,BYTE) IF "$PFN" ENTERED MOVE DT+RMPTXTL,-1 INDICATE PF KEY MOVE DT+RMPTXT,DT+TXT2 PLACE NUMBER IN MSG AND DT+RMPTXT,X'OOOF' PURIFY NUMBER MOVE IOCB3,2+RMPTXT LENGTH IN IOCB ELSE ELSE MOVE IOCB3,DT+RMPTXTL SET UP LENGTH IN IOCB ADD IOCB3,+RMPTXT INCLUDING HEADER ENDIF ENDIF BSCWRITE IX,IOCB,ERROR=BSCERR,END=BSCAB WRITE TO RMU BSCWRITE E,IOCB,ERROR=BSCERR WRITE EOT MOVE BSCST,+BSCSTO BSC STATE = RESET GOTO READ END REQ TEXT PROCESSING PASSTHRU TYPE: EQU * BSCREAD GO TO C,IOCB,ERROR=BSCERR SNDRQD PROGRAM END (DISCONNECT) READ EOT GO AND REQUEST DATA * PASSTHRU TYPE: NO DATA C,IOCB,ERROR=BSCERR READ EOT '@"NO DATA" RECEIVED. ENTER ONE:' INMSG,'@ A(TTN), R(EAD), Q(UIT) , (INMSG,EQ,C'A' ,BYTE) ,OR, (INMSG,EQ,C'Q' ,BYTE) IF "ATTN" OR "QUIT" THEN SEND PROGRAM END DT,X'1002' SET UP PTHRU PGM END MOVE DT+RMPTYP,+RMPTYPPE PTHRU TYPE IS PGM END MOVE IOCB3,+RMPX SET UP LENGTH IN IOCB MOVE BSCWRITE IX,IOCB,ERROR=BSCERR,END=BSCAB WRITE TO RMU BSCWRITE E,IOCB,ERROR=BSCERR WRITE EOT BSCST,+BSCSTO BSC STATE = RESET MOVE EQU BSCREAD PRINTEXT READTEXT IF Figure S6 (Part 4 of 7). PASSTHRU Sample Program Chapter 2. Remote Management Utility ($RMU) CO-121 Remote Management Utility ($RMU) o Sample Programs (continued) (INMSG,EQ,C'A' ,BYTE) ,GOTO,START2 IF "A" THEN START NEW SESSION TERM 1 OTHERWISE TERMINATE GOTO ELSE (NOT "ATTN" ELSE OR "QUIT") (INMSG,EQ,C'R') ,GOTO,SNDRQD IF "R" THEN IF REQUEST DATA NODAQ ELSE ASK AGAIN GOTO ENDIF ENDIF * PASSTHRU TYPE: UNKNOWN EQU PRINTEXT '@INVALID PASSTHRU RECORD RECEIVED:' PRINTNUM DT,20,MODE=HEX TERM 1 TERMINATE GOTO IF * * * * ERRPT * *-* SNDRQD * * TERM 1 TERM2 * BSCAB END OF CASES EQU MOVE MOVE MOVE BSCWRITE BSCWRITE MOVE GOTO * SEND REQUEST DATA DT,X'1002' SET UP PTHRU REQUEST DATA DT+RMPTYP,+RMPTYPRD PTHRU TYPE IS REQEST DATA IOCB3,+RMPX SET UP LENGTH IN IOCB IX,IOCB,ERROR=BSCERR,END=BSCAB WRITE TO RMU E,IOCB,ERROR=BSCERR WRITE EOT BSCST,+BSCSTO BSC STATE = RESET READ END REQ TEXT PROCESSING EQU * BSCCLOSE IOCB EQU * PROGSTOP EQU BSCREAD BSCREAD PRINTEXT PRINTNUM GOTO EXIT POINT FOR NORMAL TERM CLOSE BSC LINE EXIT POINT FOR OPEN FAILED * ABORT RECEIVED ON WRITE I,IOCB,ERROR=BSCERR READ STATUS C,IOCB,ERROR=BSCERR READ EOT '@ABORT RECEIVED. STATUS:' DT,20,MODE=HEX TERM 1 TERMINATE Figure 56 (Part 5 of 7). PASSTHRU Sample Program o CO-i22 SC34-0638 o Sample Programs (continued) * BSCERR * EQU * MOVE PRINTEXT PRINTNUM GOTO BSCOPEN *-- EQU * MOVE PRINTEXT PRINTNUM GOTO DATA AREA *INMSG *IOCB REQLEN PRINT RETURN CODE GO TO TERMINATION OPEN ERROR ST,EXPASST MOVE RETURN CODE '@BSC OPEN ERROR:' ST PRINT RETURN CODE TERM2 GO TO TERMINATION LENGTH=4 BSCIOCB 9,O,O,P2=IOCB2,P3=IOCB3 IOCB P2= IS RECORD ADDRESS P3= IS RECORD LENGTH * REQUEST *REQPT EQU c BSC ERROR ROUTINE MOVE RETURN CODE TEXT * * *-- ST,EXPASST '@BSC ERROR:' ST TERM 1 INPUT MSG FROM OPERATOR FOR PASSTHRU DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA EQU * X'1002' C'X' C'R' A (RMREQPST) A(PBL) H'O' H'O' CL8' , CL6' , 3F'O' *-REQPT REQUEST BSC CONTROL CHARS (DLE STX) HEADER ID HEADER TYPE: REQUEST REQUEST TYPE: PASSTHRU (12) PASSTHRU BLKING FLAG (UNUSED) PARTITION (UNUSED) PROGRAM: EDX SUPERVISOR VOLUME (UNUSED) (REMAINDER UNUSED) LENGTH OF REQUEST Figure S6 (Part 6 of 7). PASSTHRU Sample Program o Chapter 2. Remote Management Utility ($RMU) CO-123 Remote Management Utility ($RMU) o Sample Programs (continued) **-- PASSTHRU * REQPTAS EQU DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA REQPTASL EQU REQUEST: START PASSTHRU ASSIST PROGRAM * X'1002' C'X' C'R' A (RMREQPST) A(O) H'O' H'O' CL8' $RMUPA ' , CL6' F'O' F'O' F'O' *-REQPTAS **-- STATUS RECORD * ST DATA 10F'O' * * * STSFN ST+6 EQU STL **-* DT EQU *-ST DATA EQU EQU 2S6F'O' *-DT DTL-8 * * * **-- MISCELLANEOUS VARIABLES * BSCST DATA F'O' BSCSTO BSCSTRD N1 * RECORD LENGTH PASSTHRU BLOCK LENGTH LENGTH OF DATA AREA 6 BYTES FOR HEADER AND 2 FOR ETX AND WORD ROUND UP 0 1 F'O' BSC STATE: RESET READING WORK WORD COPY EQU CDRRM RMPTXT+2 INCLUDE DEFINITION OF RMU MSGS BYTE 2 OF PASSTHRU TEXT Figure 56 (Part 7 of 7). PASSTHRU Sample Program SC34-0638 STATUS FUNCTION STATUS RECORD LENGTH EQU EQU DATA ENDPROG END CO-124 AREA FOR STATUS RECORD PASSTHRU SESSION AREA DTL PBL TXT2 * REQUEST BSC CONTROL CHARS (DLE STX) HEADER ID HEADER TYPE: REQUEST REQUEST TYPE: PASSTHRU ( 12) PASSTHRU BLKING (NONE) FLAG (UNUSED) (ANY) PARTITION PROGRAM: $RMUPA VOLUME: IPL FREE SPACE: NONE PARAMETERS: NONE NONE DATA SETS: LENGTH OF REQUEST o Sample Programs (continued) Example of Conducting a PASSTHRU Session In this example of conducting a PASSTHRU session, the host invokes and runs the $DEBUG utility. $L EXPASST EXPASST 9P LP=C900 > START PASSTHRU ASSIST PROGRAM? Y $L $DEBUG $DEBUG27P,09:44:08 LP=BFOO > PROGRAM NAME: $DISKUTl $DISKUTl 30P ,09:44: 14 LP=DAOO REQUEST "HELP.. TO GET LIST OF DEBUG COMMANDS TASK STQPP~D AT 0064 "NODATA+lRECEIVED. ENTER ONE: A(TTN), R(EAD), Q(UIT} A > WHERE TASK STOPPED AT 0064 $A'rTASKAT2600 "NO:DATA~ RECE IVED. ENTER ONE: ACTTN), R(EAD), Q(UIT} A o Figure 57 (Part 1 of 4). Example of Conducting a PASSTHRU Session GO OPTlQN(*/ADDR/TASK/ALU: ALL 1 BREAKPO I NT{ S) ACTI VATED USING VOLUME EDX002 > COMMAND (?): LA ZZZZ USING VOLUME EDX002 NAME FREC SIZE 12845 FREERECORO$ IN LIBRARY COMMAND (?): $PFO XX > WHERE INVALID COMMAND TASK AT 0274 ,$ATTASKCAT 2~OO Figure 57 (Part 2 of 4). Example of Conducting a PASSTHRU Session o Chapter 2. Remote Management Utility ($RMU) CO-12S Remote Management Utility ($RMU) Sample Programs (continued) COMMA.ND,{ 11 :$pr~ xX, . ....::,.wAT·, ... ;,' .INVALID;COMMAf\I.D,.. .. : .', ~RT IONf~IADDRI:1:A~K/ALI..l.: B~EAKPOtNTADDR:: .•••.. 274 . L.IS1IN.~lIST:....N .STOP/NOSTOP :' S ..·t\8~EAKPO I NT ($) '$ ET COMMAND:'."'. XX TA$I U STA 274 5X 0274 x'80AF lOlOC~D5E5C1 D3C9' "NO DATA..... RECE WEll, ENTER ONE : A{TTN)~ R(EAD), ,CUlT) A > END 1 BREAKPOINT(S) REMOVED I NVALI D COMMAND Figure 57 (Part 3 of 4), Example of Conducting a PASSTHRU Session COMMAND '(1 ):EN , . ,NO.DATA..... REtE IVEf). '. ENTER ONE: A{'(TN), R(EAD},Q(UIT) R "NO.DATA.... RECEI,VED. ENTE~ ONE: ACTIN), R ( EAD }..,'Q (U I T) A > .$RM'UPA' , ,NO ;I)ATA'" RECEI VED '.E NTER "ON~ : A(TTN)~R(EADY;QfuIT) A ~$A , PROGRAMS AT 09:5():26 'N PARTITION.ll NONE "NODATA~RECE IVED ~ .ENT£RQNE: AJTTN),:R (EAD), Q(U IT)Q. .' EXPASSt ENDED Figure 57 (Part 4 of 4). Example of Conducting a PASSTHRU Session CO-126 SC34-0638 (j o Chapter 3. Host Communications Facility o When Series/ 1 has the Host Communication Facility (HCF) loaded on it, it can communicate with a host system to perform various functions. The host system has the Host Communication Facility Installed User Program (IUP 5796-PGH) executing on it. The Host Communications Facility allows the Series/ 1 to perform file transfers and to submit job streams to the host. You must write the application program that communicates with the host system. It must contain Event Driven Language TP instructions. These instructions perform various communications functions between the Series/l and the host. Your program can perform the following functions: Write to a host data set • Read from a host data set • Submit a background job to the host system • Obtain the time and date from the host system Set the occurrence of a Series/l event so that it can be tested by a program running on the host system • Test for the occurrence of an event that is set by the host system Erase the record, on the host system, of an event that occurred on either the Series/lor the host system. You can also perform HCF functions with the $HCFUTl utility, which provides interactive capability between the Series/land the host. o Chapter 3. Host Communications Facility CO-127 Host Communications Facility Planning to Use the Host Communications Facility Certain requirements and restrictions apply to the operation of the Host Communications Facility. Installation Requirements Both the host and Series/1 must meet certain installation requirements for successful communications through HCF. The host must have the HCF IUP 5796-PGH executing on it. The BSC line connecting the Series/1 to the System/370 must be point-to-point leased. Only the BSC Single Line Control (feature #2074) can be used to attach the line to the Series/1. System generation for the Series/1 must support the Host Communications Facility. The appropriate supervisor modules and the TPCOMM system configuration statement provide this support. Refer to the Installation and System Generation Guide for information. Host Data Sets Host data sets in your HCF programs must be named according to a naming convention. Also, your program can open only one host data set at a time. Host Data Set Naming Conventions When you refer to a host data set in a TP instruction, its name must consist of an alphanumeric character string immediately preceded by one word specifying the length of the name field. You can do this most easily by coding a labeled TEXT instruction to define the name; for example: DSN1 TEXT 'XYZ.EXP1.DATA Data set names follow standard host system naming conventions and must not exceed 44 characters in length (including delimiting periods). Pad the name field with blanks on the right. In the case of a partitioned data set and member name, specify a string of the form dsname(membername); for example: I PDSDSN TEXT 'XYZ.EXP1.DATA(RUN1) The maximum length of such a string is 54 characters. To read a data set name from a terminal into a text field, issue a READ TEXT instruction. CO-128 SC34-0638 o o Planning to Use the Host Communications Facility (continued) Host Data Set Characteristics You can access host data sets with the following characteristics: • they must be catalogued • they must be single volume they must be direct-access • they must contain fixed or variable-length records • they can be either sequential data sets or members of partitioned data sets. • they can be either blocked or unblocked. Fixed-length logical records must contain an even number of words. In fixed blocked format the block size must be an integer multiple of the logical record length (LRECL), not exceeding 13030. You can use either sequential data sets or members of partitioned data sets to submit jobs to the host. Logical records must be 80 bytes long and can be blocked or unblocked. The size of blocked records must be a multiple of 80. c' Record Sizes You can use a large range of logical and physical record sizes when writing your program. In selecting a record size, there is no absolute best choice, but you should consider the following: • The basic disk or diskette record size on the Series/lis 256 bytes. Therefore, this is a natural unit of measure for transfer to and from disk and a natural choice for a logical record size on the host. This is the default for the TP READ and TP WRITE instructions. • A host physical record (block) size of 1536 bytes yields 80 percent utilization of host direct access storage on an IBM 3330 disk. This size also provides enough record space so that there will be moderate requirements for buffer storage. The larger the physical record being transferred between the host and the Series/l (a host logical record), the higher the effective data transfer rate that will be achieved. Also, the larger the physical record (block) being transferred between host processor storage and direct access, the higher will be the effective data rate. The maximum data rate is achieved when using track size records (13030 bytes for the IBM 3330 disk) for both operations. • The large physical records naturally require correspondingly large buffers in your program. In order to achieve overlapped I/O, multiple buffers are required. o Chapter 3. Host Communications Facility CO-129 Host Communications Facility Planning to Use the Host Communications Facility (continued) Variable-Length Records o A variable-length record is always prefixed by four bytes of control information. This is called a Record Descriptor Word or RDW. The RDW consists of two fields. The length (LL) field (bytes land 2) describes the total length of the record in bytes and is therefore always four greater than the length of the data field. The 00 field (bytes 3 and 4) is reserved for use by the host system. The rest of the record is taken up by the DATA field. When a variable-length record is transferred from the host to the Series/ l, the total record, including the LL field, is transferred. When a variable-length record is to be transferred from the Series/l to the host, you must set the RDW to the proper value. Opening Host Data Sets You may open only one host data set open at a time. If a second task attempts to open a data set, HCF will place it in a queue of tasks waiting to use the facility. If the task currently using HCF attempts to open a second data set, then the currently open data set automatically closes, and the second one opens. System Status Data Set Synchronization of programs in the host system and the Series/l is accomplished with a status data set on the host system. Both systems share this data set. You can directly access this system status data set with the TP SET, TP FETCH, and TP RELEASE instructions. With these instructions you set the occurrence of events on the Series/ 1 which the host monitors, tests for and then erases. These are called status functions. You can also perform the status functions with the $HCFUTl utility. For example, one program (Program A) makes an entry in the system status data set by invoking a SET instruction specifying an index and a key. Another program (Program B) tests for the existence of such an entry with a FETCH or RELEASE referring to the same index and key names, and receives a positive return code if the entry exists. After performing a SET, the first program (Program A) could periodically issue a FETCH. A companion program (Program B) on the other system might also be issuing a periodic FETCH for the agreed-upon index and key. At the appropriate time, this program (Program B) could issue a RELEASE which would result in the first program (Program A) receiving a "not found" return code from its next FETCH. This could be interpreted as a notification by the companion program (Program B) that the message had been received. o CO-l30 SC34-0638 o Planning to Use the Host Communications Facility (continued) System Status Data Set Organization The system status data set has direct organization. You write records into this data set using TP SET, test for the existence of a record using TP FETCH, or test and delete a record using TP RELEASE. A record sent to or retrieved from the status data set consists of three part, two of which are mandatory: • Index entry (mandatory) • Key field (mandatory) • Data (optional 256-byte field). Index entries and key fields can each be up to eight EBCDIC characters in length and have significance for the using programs. The system status data set has one 268-byte index record capable of containing 22 separate index entries. An index entry has two parts: • Index name - eight EBCDIC characters • Key pointer - a 4-byte relative record pointer to the first associated key field record. A key entry is a 268-byte record with the following format: • Forward pointer - a 4-byte relative record number of the next key entry or zero if this is the last one • Key name - eight EBCDIC characters • Data - 256 bytes of optional data. The next record pointer allows more than one key to be associated with a given index. The next record pointer of the last key field will be set to zero to indicate the end of the chain. Logically, an unlimited number of key records may be associated with a single index. In practice, the limiting factor is the physical size of the data set. The distributed data set allows for a total of 94 key entries. The system status data set format is defined and allocated during the installation of the Host Communications Facility Installed User Program. Appendix B of the Host Communications Facility Installed User Programcontains more details on the use of the system status data set. o Chapter 3. Host Communications Facility CO-131 Host Communications Facility Planning to Use the Host Communications Facility (continued) Host Storage o To ensure economical utilization of host processor storage, while also providing large record capability, host processor storage is shared by all Series/I systems. The Host Communications Facility IUP region allocation determines how much buffer space is available; therefore, it determines the upper limit for the host BLKSIZE. Despite this determination of buffer size, it is still possible for error code 222 (sufficient I/O buffer space unavailable) to occur because of multiple and simultaneous requests for access to data sets with very large block sizes. Although this is not likely to occur, you should minimize the amount of realtime control you require with the Host Communications Facility in order to minimize the probability of interference. You should also specifically test for error code 222 in response to a TP OPEN instruction and, if it is received, retry your request later. Data Transfer Rates Data transfer rates between a Series/I and the host vary depending on the activity on the host and the type of physical connection used between the systems. In general, you should avoid implementing any functions in a manner which depends on specific data rates between the host and Series/I. Tasks Common to Programming and Using $HCFUT1 ~..~ You can perform almost all tasks both by writing TP instruction programs and using the $HCFUTI utility. These include transfer of data sets between the host and Series/ I, submitting jobs to the host, and performing status functions. Programming for the Host Communications Facility Application Your application programs for the Host Communications Facility can control data transfers, submit background jobs to the host, and perform status functions. Event Driven language Instruction Set You write HCF programs with a set of EDL instructions called TP instructions. The chart that follows shows these instructions and the functions they perform. They are listed in alphabetical order. CO-132 SC34-0638 I\~L) o o Programming for the Host Communications Facility Application (continued) Instruction TP CLOSE Function Ends a data transfer operation (any operation begun by a TP OPEN IN or TP OPEN OUT intruction) TP FETCH Tests the existence of a record in the system status data set and/or reads it TP OPEN IN Prepares Series/1 to read data from the host TP OPENOUT Prepares the Series/1 to send data to the host TP READ Reads data sent from the host to Series /1 TP RELEASE Deletes a record from system status data set and/or reads it TPSET Writes a record to the system status data set TP SUBMIT Submits a job stream from the Series/1 to host TPTIMEDATE Obtains time of day and date from the host TPWRITE Sends data to the host Figure 58. EDL TP Instructions For the syntax of the TP instructions, refer to the Language Reference. Controlling Data Transfers between Series/1 and Host You can send data to the host and receive data from the host through your program. Chapter 3. Host Communications Facility CO-133 Host Communications Facility Programming for the Host Communications Facility Application (continued) Sending Data to the Host o Series/l can write data to a host data set. Code this sequence of TP instructions to perform this function: 1. TP OPENOUT (to specify an output operation) 2. TP WRITE (to send the data to the host system) 3. TP CLOSE (to end the output operation). In the TP OPENOUT instruction, specify the name of the host data set where you are sending the data. Follow naming conventions. In the TP WRITE instruction, you must specify the label of the buffer that contains the data to be sent. In the program, specify this buffer with a BUFFER statement that contains the operand TPBSC. You should also code error routines into the TP WRITE instruction to take over if an error or end condition occurs. Receiving Data from the Host Series/l can ask the host to send it data. Code this sequence of TP instructions to perform this function: 1. TP OPENIN (to specify an input operation) 2. TP READ (to receive the host data) 3. TP CLOSE (to end the receive operation). In the TP OPENIN instruction, specify the name of the host data set that contains the data you want to receive. Follow naming conventions. In the TP READ instruction, specify the label of the buffer where the host data is to be stored. In the program, specify this buffer with a BUFFER instruction that contains the operand TPBSC. You should also code error routines in TP READ to take over if an error or end condition occurs. o CO-134 SC34-0638 o Programming for the Host Communications Facility Application (continued) Submitting Background Jobs to the Host Your program can allow the Series/1 to submit a host data set to the host batch job stream. To perform this function, code a TP SUBMIT instruction. The host data set can be either sequential or a member of a partitioned data set. In the TP instruction, specify the label of the TEXT instruction that contains the name of the host data set. In the program, code the TEXT instruction with the naming conventions for host data sets. The Language Reference contains the syntax and description of the TEXT instruction. Performing Status Functions Your program can perform the status functions associated with the system status data set that resides on the host system. Writing Data to the System Status Data Set You can set the occurrence of an event on the Series/1 by writing a record to the system status data set. To perform this function, code a TP SET instruction. In the TP SET instruction, refer to the label of the STATUS instruction, which references a record in the system status data set. In the program, code the STATUS instruction with its index entry and key fields, along with the optional 256-byte data field. The Language Reference contains the syntax and description of the ST ATUS instruction. Retrieving a Record from the System Status Data Set You can retrieve a specific record from the host data set and (optionally) read the record. To perform this function, code a TP FETCH instruction. In the TP FETCH instruction, refer to the label of the STATUS instruction that references the specific record of data in the system status data set. If you intend to read the record, code the ~'length" operand of TP FETCH with the number of bytes in the record to be read. If you do not want to read the record, you must still code the "length" operand, but enter the value zero. Deleting a Record in the System Status Data Set You can delete a record from the system status data set after you (optionally) read it. To perform this function, code a TP RELEASE instruction. This erases a Series/1 event that was set by a TP SET instruction. In the TP RELEASE instruction, refer to the label of the STATUS instruction which in turn refers to the specific record in the system status data set. If you intend to read the record before deleting it, you must code the "length" operand in TP RELEASE, specifying the record length. If you do not want to read it, you must still code the operand, specifying the value zero. In the program, code the STATUS instruction with the required index entry and key field. o Chapter 3. Host Communications Facility CO-135 Host Communications Facility Programming for the Host Communications Facility Application (continued) Obtaining Time and Date from the Host o You can obtain the current time (hours, minutes, seconds) and date (day, month, year) from the host system. To perform this function, code a TP TIMED ATE instruction. You must specify the six-word data area where the time and date information is to be stored in the Series/I. Sample Programs The following sample programs show how to accomplish some of the HCF functions with the TP instructions. Status Functions Sample Program This program performs the SET, FETCH, and RELEASE function. It communicates with the system status data set on the host system. PROGA STATA * * A1 * * * A ERRORA PROGB STATB * ** * B ERRORB END PROGRAM A STATUS PROGID,KEYA TP PROGRAM A DEFINE STATUS ID & KEY SET,STATA SEND MESSAGE TO PROGB VIA HOST TP FETCH,STATA,ERRORA CHECK IF PROGB RECEIVED MESSAGE FALL THRU IF KEY & ID STILL ON HOST GOTO A1 EQU * PROGSTOP ENDPROG END PROGRAM B STATUS PROGID,KEYA TP CONTINUE INTERROGATION DELETE THE MESSAGE ON HOST PROGRAM B DEFINE SAME STATUS ID & KEY FETCH, STATB , ERROR=ERRORB FETCH MESSAGE MESSAGE WAS FOUND AND IS DELETED, THUS SIGNALING PROGA TP RELEASE,STATB GOTO END GOTO B PROGSTOP ENDPROG END CONTINUE LOOKING FOR MESSAGE Figure 59. System Status Data Set Sample Program o CO-136 SC34-0638 o Programming for the Host Communications Facility Application (continued) Sample Program to Send Data to the Host This same program sends a 256-byte Series/ I data set to a data set on the host. It prompts the user to specify the host data set to receive the data. WRITASK * TPOPEN o PROGRAM TPOPEN,DS=((SOURCE,??)) OPEN TP LINE READTEXT DSNAME,'HOST DATASET: ',PROMPT=COND TP OPENOUT,DSNAME IF (WRITASK,EQ,-1),GOTO,DSREAD OPEN OK? MOVE SWITCH, 3 .. TPOPEN ERROR GOTO ERRSW * READ A RECORD FROM DATA SET DSREAD READ DS1,BUFFER,ERROR=ERR2,END=TPCLOSE * WRITE A RECORD TO HOST TPWRITE TP WRITE, BUFFER, 256 IF (WRITASK,EQ,-1),GOTO,DSREAD .. OK? ERR1 MOVE SWITCH, 1 .. WRITE ERROR GOTO TPCLOSE ERR2 MOVE SWITCH, 2 .. READ ERROR * CLOSE DATA SET AND PRINT MESSAGE AS APPROPRIATE TPCLOSE TP CLOSE ERRSW GOTO (RETO,RET1,RET2,RET3) ,SWITCH RETO PRINTEXT '*****READ/WRITE SUCCESSFUL*****@' PROGSTOP RET1 PRINTEXT '*****WRITE UNSUCCESSFUL*****@' PROGSTOP RET2 PRINTEXT '*****READ UNSUCCESSFUL*****@' PROGSTOP RET3 PRINTEXT '*****TP OPEN UNSUCCESSFUL*****@' PROGSTOP SWITCH DATA F'O' DSNAME TEXT LENGTH=40 BUFFER BUFFER 256, TPBSC ENDPROG END Figure 60. Sample Program to Send Data Set to the Host o Chapter 3. Host Communications Facility CO-I37 Host Communications Facility Programming for the Host Communications Facility Application (continued) Sample Program to Receive a Host Data Set o In this example, the Series/l specifies that the host send it a data set. It reads the host data into a pre-allocated data set on a Series/l volume. During program load, the user is prompted for the Series/l data set where the host data will be placed. READTASK PROGRAM TPOPEN,DS=((TARGET,??)) OPEN TP LINE * TPOPEN READTEXT DSNAME,'HOST DATASET: ',PROMPT=COND TP OPENIN,DSNAME IF (READTASK,EQ,-1),GOTO,TPREAD OPEN OK? MOVE SWITCH, 3 TP OPEN ERROR GOTO ERRSW READ A RECORD FROM HOST * TPREAD TP READ,BUFFER IF (READTASK,EQ,-1) ,GOTO,DSWRITE OK? IF (READTASK,EQ,300),GOTO,TPCLOSE END? GOTO ERR2 WRITE RECORD ON DISK * DSWRITE WRITE DS1,BUFFER,ERROR=ERR1 IF (READTASK,EQ,-1) ,GOTO,TPREAD OK? ERR1 MOVE SWITCH, 1 WRITE ERROR GOTO ERRSW ERR2 MOVE SWITCH, 2 CLOSE TP LINE AND PRINT MESSAGE AS APPROPRIATE *TPCLOSE TP CLOSE ERRSW GOTO (RETO,RET1,RET2,RET3),SWITCH RETO PRINTEXT '*****READ/WRITE SUCCESSFUL*****@' PROGSTOP RET1 PRINTEXT '*****WRITE UNSUCCESSFUL*****@' PROGSTOP RET2 PRINTEXT '*****READ UNSUCCESSFUL*****@' PROGSTOP RET3 PRINTEXT '*****TP OPEN UNSUCCESSFUL*****@' PROGSTOP SWITCH DATA F'O' DSNAME TEXT LENGTH=40 BUFFER BUFFER 256,TPBSC ENDPROG END l) Figure 61. Sample Program to Receive a Host Data Set o CO-138 SC34-0638 o Interacting with the Host Communication Facility ($HCFUT1) The $HCFUTI utility allows the Host Communications Facility on the Series/Ito interact with the Host Communications Facility Installed User Program on the System/370. $HCFUTI can perform four functions: • Read a data set from the host • Write a data set to the host • Submit a job to the host • Perform status functions in the system status data set. Figure 62 lists the $HCFUTI commands. END FE REL READ DATA READ80 READOBJ SE SU WR o - END FETCH STATUS RELEASE STATUS READ HOST ~READaOBYT~RECORl)$- STORE2/DISK -READ80BYTE,R~CORPS,:-STORE3/DISK ~,.S~~'.STATl)S . ... 'SUBMIT A JOB .., WRITE TO HOST '. RECORD RECORD . . Figure 62. $HCFUTt Commands Notes: 1. See "Host Data Set Naming ~onventions" on page CO-128 and"Host Data Set Characteristics" on page CO-129. 2. See "System Status Data Set" on page CO-130. Appendix B of the Host Communications Facility Installed User Program contains more details on its use. 3. The Host Communications Facility IUP, program number 5796-PGH, is required on the host System/370. 4. Host Communications Facility must be installed and configured on the Series/I. Many of the functions that $HCFUTI performs are the same as those you can program with the TP instructions. Transferring Host Data to Series/1 You can transfer data with two commands, depending on the type of data being sent. o Chapter 3. Host Communications Facility CO-139 Host Communications Facility Interacting with the Host Communication Facility ($HCFUT1) (continued) Using READDATA Command o The READ DATA command transfers a data set from the host to the Series/I. The host logical record size is assumed to be 256 bytes. The utility prompts for the following information: WORKFILE. This refers to the 1-8 character name of the Series/l data set where the host data will be transferred, including the volume name. Record Count. This refers to the number of records to be transferred, beginning with the first. Use this if, for example, only the first 10 records of a 50-record data set are to be transferred. Enter zero to indicate that the entire data set is to be transferred. • DSNAME. This refers to the name of the host data set to be transferred . The following is a terminal printout of a typical run. In this example, all records (length = 256 bytes each) of the host data set "Sl.EDX.TESTIN(DATA)" (which contains 40 records) are transferred to the Series/l data set "DATAFIL2." > $L $HCFUTl LOADING $HCFUTl 8P,08.15.30, LP=4BOO WORKFILE(NAME,VOLUME): DATAFIL2,EDXOOl COMMAND (1): READDATA NO. OF RECORDS TO READ (O=ALL): DSNAME: Sl.EDX.TESTI~(DATA) END AFTER 40 RECORDS COMMAND f-- '\ ~ ) 0 (1): Using READ80 and READOBJ Commands The READ80 and READOBJ commands transfer 80-byte records from a host data set and store them in 256-byte Series/l disk or diskette data set records. READ80 stores two 80-byte records per 256-byte disk record. the first 80-byte record is stored in the first 80 bytes of the disk record. The second 80-byte record is stored starting at byte 129 of the disk record. This format is compatible with the saved results of using $EDITIN or $FSEDIT and is also the format required for input to a language compiler or $EDXASM program preparation. READ80 is normally used to transfer source program modules from the System/370 to Series/1 disk. READOBJ stores three 80-byte records in the first 240 bytes of each disk record. This format is compatible with object modules produced by any of the assembler programs. It is also the format required for input to· $EDXLINK and is one of the formats accepted by $UPDATE. o CO-140 SC34-0638 o Interacting with the Host Communication Facility ($HCFUT1) (continued) READOBJ is normally used to transfer the output object module of a host assembly to the Series/1 for processing by $EDXLINK or $UPDATE. For both these commands, the utility prompts for the name of the Series/1 data set where the data is to go, the number of host records to be transferred, and the name of the host data set where the records come from. Performing Status Functions The status commands allow you to perform, from a terminal, the SET, FETCH, and RELEASE functions on the system status data set. The functions are identical to those you can perform with TP SET, TP FETCH and TP RELEASE. For the SE and FE commands, the utility prompts for the index entry and key field. For the RE command, it prompts for the index entry. After performing one of the status functions, the utility sends a return code indicating the status of the data set. Submitting Jobs to the Host Job Stream c The SU command allows you to submit a job to the host job stream. This function is identical to the one that TP SUBMIT performs. The utility prompts you for the name of the host data set you want to submit. Follow host data set naming conventions when you specify the name. Sending Data to the Host The WR command sends data from the Series/1 to the host. The host logical record size is assumed to be 256 bytes. The utility prompts you for the following information: • WORKFILE. This refers to the 1-8 character name of the Series/1 data set to be transferred, and its volume name, if not the IPL volume. • Record Count. This refers to the number of records to be transferred, beginning with the first. This would be used if, for example, only the first 10 records of a 50-record data set are to be transferred. A count of zero is used to indicate that the entire data set is to be transferred. • DSNAME. This refers to the name of the host data set to which the data is to be transferred. The name consists of up to 44 characters, or 54 characters if a member of a partitioned data set. o Chapter 3. Host Communications Facility CO-141 Host Communications Facility Interacting with the Host Communication Facility ($HCFUT1) (continued) The following is a terminal printout of a typical run. In this example, 28 records of the Series/l data set "DATAFILl" are transferred to the host data set "S1.EDX.TESTOUT(DATA)." c COMMAND' (1) :,WR NO. OF RECORDS TO WRITE(O=ALL): D?NM1E:,$ 1.EQX.JESTOUT{oAJA) END ,AFTER'28 RECORDS l \~ " ~-/ o CO-142 SC34-0638 o Part 2. Channel Attach Part 2 discusses the Channel Attach Program, which allows Series/Ito communicate with large host systems. o o Part 2. Channel Attach CO-143 Notes o o CO-144 SC34-0638 o Chapter 4. Channel Attach Program o The channel attach program allows the Series/1 to communicate with a larger host processor. This discussion refers to the System/370 as the host processor. However, the host can be any processor that uses the Basic Telecommunications Access Method (BT AM) form of data communications. Series/lis physically connected to the host by a channel attach device. You must write the application programs that communicate with the System/370 host. The program must contain special Event Driven Language instructions, called CA instructions, used for the channel attach application. In addition, you can communicate with the host by using the $CHANUTI utility. Planning for the Channel Attach Application Before you begin to write your application program to communicate with the host system, you should be familiar with the way channel attach works and what requirements and restrictions apply to its use. Channel Attach Program ($CAPGM) The channel attach program, as it executes on the Series/I, transfers data from the Series/l application program to the channel attach device. At the same time, an application program on the System/370 is executing to transfer data between the channel attach device and the System/370. Chapter 4. Channel Attach Program CO-14S Channel Attach Program Planning for the Channel Attach Application (continued) $CAPGM allows you to perform the following functions through your application program running on the Series/1: • o Establishing, controlling, and terminating access between Series/1 and System/370 Transferring data between Series/1 and System/370 • Communicating with System/370 application programs by 32 data ports (System/370 device addresses) Handling interrupts from the channel attach device • Managing data ports to avoid conflict or contention Performing error recovery and retry • Performing error logging Tracing Series/1 I/O commands and attention interrupts from the channel attach device. Channel Attach Device (4993) The channel attach device provides an interface between a Series/1 and a System/370. It responds to commands from the System/370 and directs the information to the Series/I. Likewise, the device responds to commands from the Series/1 and directs the information to the host. (f-)\ ~ The connection between the channel attach device and the 370 consists of 32 device address (data port) connections. The channel attach device allows activity over only one port at a time. Software Considerations During system generation for the Series/I, you must define each channel attach device as an EXIO device. The instructions for this procedure are described in the Installation and System Generation Guide. Hardware Considerations You should consider the following when installing your channel attach device: By installing the channel attach device in the I/O expansion unit rather than the processor, you will be able to turn off the processor power temporarily without having to turn off the channel attach device first. If the channel attach device is in the processor, you must follow the power-off sequence described in "Powering On The Channel Attach Device" on page CO-148 to power off. o CO-146 SC34-0638 o Planning for the Channel Attach Application (continued) • When you install your channel attach device, it must be jumpered correctly to specify the lowest System/370 device address you will be using. For example, if your channel attach device is connected to the host on channel 5, subchannel8 (with 32 device addresses X'580' to X'59F'), then the setting of the jumpers on the channel attach feature card should be for X'80'. You must be able to provide this information to the person who installs your channel attach device. • On the System/370, your channel attach device must be defined to use a shared unit control word (DCW). Failure to specify a shared UCW can cause unpredictable results when you are using more than one port. Tailoring the Channel Attach Program During system generation for the Series/ l, you can tailor the channel attach program to fit your specific needs by editing the program's control module, $CACBS. The section of $CACBS that you should edit consists of channel attach control block statements, CACBl and CACB2. Two channel attach control block statements are required for each channel attach feature installed (physically and logically) on the Series/l processor. CACBl and CACB2 are configuration statements that create control blocks. These statements describe to the channel attach program the characteristics of a particular channel attach device. The CACBl and CACB2 statements for a device must be contiguous and both must specify the same device address, trace size, and number of ports. In these statements, you can specify the following information: o • device address of the channel attach device • amount of storage for the channel attach trace area • number of host ports with which the device will connect • number of retries during errors. After you modify the CACBl and CACB2 statements, assemble the $CACBS module and use $EDXLINK or $LINK/$UPDATE to link edit it to the channel attach support modules. If you followed the standard installation procedures, the link-edit control statements to do this are in data set $CALNK on EDX002. $CALNK provides full support for a channel attach system, including trace, log, and OLTEP support. You should use the full support system for initial debugging efforts. To modify the provided support, you may want to include XCAXDIAG instead of $CAXDIAG to eliminate OLTEP support; XCAXLOG instead of $CAXLOG to eliminate error logging; XCAXTRCE instead of $CAXTRCE to eliminate tracing; and XCAXERR instead of $CAXERR to eliminate the task error exit facility. Chapter 4. Channel Attach Program CO-l47 Channel Attach Program Planning for the Channel Attach Application (continued) ~\ () Powering On The Channel Attach Device Before any communication can occur, you must power on the channel attach device at the Series/I. Use the following procedure: 1. Turn off the channel attach device, and ensure that it is offline. Set the Enable/Disable switch on the 4993 Termination Enclosure to the Disable position and the On/Off switch to the Off position. 2. Turn on the other devices. Set the On/Off switch for each Series/l unit (except for the 4993 Termination Enclosure and the Series/l processor) to the On position. 3. Turn on the processor by setting the On/Off switch on the Series/l processor to the On position. 4. Turn on the Termination Enclosure unit by setting the On/Off switch on the 4993 Termination Enclosure to the On position and making sure that the Power On indicator is on. 5. After you complete the above steps, place the channel attach device online to the System/370 by setting the Enable/Disable switch on the 4993 Termination Enclosure to the Enable position. Make sure that the Disable indicator is off (indicating that the unit is online), and notify the System/370 operator that the channel attach device is online. If you attempt to vary a System/370 device address online when the channel attach device is not powered on and enabled, the System/370 receives a NO PHYSICAL PATH message. (1-_--)'\ "'-- To power off the channel attach device, use the reverse sequence of the power on instructions. You must disable the channel attach device, turn off the device, and turn off the I/O expansion unit and the other devices. Never turn the channel attach device off when the device is enabled. Programming for the Channel Attach Application This section tells how to write programs that communicate between the Series/land the host by means of the channel attach. Event Driven Executive Instruction Set Your program must contain these channel attach instructions. They provide you with the interface to the System/370 channel attach program. They are: • • • • • CACLOSE - Close a channel attach port CAIOCB - Create a channel attach port I/O control block CAOPEN - Open a channel attach port CAPRINT - Print channel attach trace data CAREAD - Read from a channel attach port o CO-148 SC34-0638 o Programming for the Channel Attach Application (continued) • • CASTART - Start channel attach device CASTOP - Stop a channel attach device CATRACE - Control channel attach trace CAWRITE - Write to a channel attach port. For the syntax of each instruction, refer to the Language Reference. Detecting and Handling Errors Each instruction sets the task code word to indicate success or failure of the operation it performs. You should use the ERROR operand of the instruction or check the task code word after each instruction. To ensure that the instructions are successful, your program should wait on an event control block (ECB) for completion of the I/O associated with the instruction. CATRACE has no I/O associated with it so no wait is required. CASTOP, CASTART, and CAPRINT use the ECB supplied with the instruction. CAOPEN, CAREAD, CAWRITE, and CACLOSE use the first three words of the CAIOCB as the ECB to wait on. After you do a WAIT on the ECB, check the completion code for I/O errors. Do not issue a WAIT if the return code in the task code word indicates an unsuccessful operation. The second word of the TCB contains the address of the instruction that received the error. c BT AM Considerations The Basic Telecommunications Access Method (BTAM) interfaces with the System/370 channel attach; you should consider the following: • BT AM issues an ERASE/WRITE of 1 byte (X'C3 ') or (X'7B') when you open or close a channel attach port. Respond with a read o( this ERASE/WRITE when opening a port. When closing a port, you can either read the (X'C3 ') or ignore it. If you ignore the (X'C3 ') then you may get a return code from the close operation to show data pending from the host. • If BTAM requests an I/O operation to the device and the device is in a "not ready" condition (the System/370 device address has not been enabled by Series/l), BTAM posts an intervention required (X' 41 '). • On an asynchronous device end from the Series/1 (caused by a Series/1 ENABLE System/370 DEVICE ADDRESS), the System/370 application may elect to be notified by BTAM (OS/VS only). This is done by specifying the READYQ option on the DCB macro, which causes the user to be posted when a device end occurs for the specified device address. The device end is ignored if the READYQ option is not selected or if using DOS/VS BTAM. • BTAM issues retries for read errors and all busy conditions. 0 ,\ .1, Chapter 4, Channel Attach Program CO-149 Channel Attach Program Programming for the Channel Attach Application (continued) You must not issue any BTAM macro which might cause BTAM to generate a channel program that contains both read and write channel command words (CCWs), such as Read Modify Position or Read Buffer Position. Extraneous I/O operations that result from chained read and write CCWs can invalidate protocol understanding at the Series/I. o Do not issue a command that requires an attention interrupt to begin on the System/370 as the first command after OPEN. If you do, you must have some method of ensuring that the System/370 opening process is done before you issue the (Series/I) attention interrupt. • The first three bytes of data sent by a Series/l write request can have explicit meaning to the System/370 support program. Therefore, be careful when setting the first three bytes of data, because unpredictable results can occur. To avoid problems, set the first three bytes of the data to X'7D4040'. This corresponds to an attention identification descriptor (AID) and two bytes of null buffer address. The X'7D' corresponds to an Enter key response from an IBM 3272 Control Unit. Assembling the Application Program If you are going to assemble your program with either the host or native macro assemblers, you don't have any special steps to perform. If you are using $EDXASM to assemble, you must code the following statements in your program for proper assembly. COPY CMDEQU COpy PROGEQU These statements generate several pages of equates. To suppress printing these equates, code the following statements: PRINT COpy COpy PRINT OFF CMDEQU PROGEQU ON Link-Editing the Application Program After assembling your program, you must use $EDXLINK or $LINK/$UPDATE to link-edit it. If your channel attach support has been installed as shown in the Program Directory, the link editing control statements required to link your application program are in the data set USERPGM on EDX002. A listing of the data set USERPGM follows. () CO-ISO SC34-0638 o Programming for the Channel Attach Application (continued) LIST OF DATA SET USERPGM ON EDX002 * * EVENT DRIVEN EXECUTIVE SYSTEM/370 CHANNEL ATTACH VER. 1 *************************************************************** * COMMENTS MAY BE INCLUDED BY AN '*' IN COLUMN 1 * * * USE THIS TECHNIQUE TO OMIT UNNEEDED SUPPORT *************************************************************** OUTPUT <---- YOUR OUTPUT MODULE NAME AND VOLUME IT RESIDES ON, GOES HERE * INCLUDE <---INCLUDE *INCLUDE INCLUDE INCLUDE INCLUDE * INCLUDE INCLUDE INCLUDE INCLUDE c INCLUDE INCLUDE INCLUDE END YOUR INPUT MODULE NAME AND VOLUME IT RESIDES ON, GOES HERE $CAPRCES,EDX002 *MAKE A COMMENT AND INCLUDE XCAPRCES,EDX002 *THIS IF TRACE PRINT OMITTED $CABEGIN,EDX002 $CAPARM,EDX002 *MAKE A COMMENT AND INCLUDE $CALOGCO,EDX002 XCALOGCO,EDX002 *THIS IF INPUT ERR. OK OMITTED $CALOGIC,EDX002 $CAFILL,EDX002 $CAPRNT,EDX002 *MAKE THIS A COMMENT IF TRACE *PRINTING OMITTED $$SVC,ASMLIB $$RETURN,ASMLIB $EDXATSR,ASMLIB LIST COMPLETE Figure 63. Listing of USERPGM Data Set The name of your output module and input module refer to your object output and input data sets respectively. This link editing control data set provides you with the full support link modules. You should use the full support system during initial debugging activities. Starting a Channel Attach Device Code a CASTART instruction to load the channel attach device support program and prepare the channel attach device to accept interrupts from the host. You must start the channel attach device before you can open any of its ports and before you can issue any I/O instructions. After your program issues a CASTART instruction, check the return code in the first word of the task control block (TCB). If the return code indicates a successful request, issue a WAIT for the I/O to complete. Use the event control block (ECB) operand of the CASTART instruction to wait on I/O completion. If the return code indicates that the device was already started or an error occurred, do not issue aWAIT instruction. Chapter 4. Channel Attach Program CO-lSI Channel Attach Program Programming for the Channel Attach Application (continued) Opening a Channel Attach Port o Code a CAOPEN instruction to open a specific port on the channel attach device. This logically assigns the port to your application program, and enables it to accept interrupts from the host. You must open a port before using it for data transfer. You must code a control block instruction (CAIOCB) for each port you open in your program. The CAIOCB stores the device address, port number, control block addresses associated with the port, and the ECB used to wait for I/O completion on the port. Its use it discussed in the next section. Coding the Control Block for a Channel Attach Port The CAIOCB statement creates a channel attach port I/O control block which contains the information required to access a port. It is a nonexecutable instruction which allocates storage. You supply the device address, port number, and the address of the first buffer control area. Other information in the System/370 channel attach I/O control block is supplied by the System/370 channel attach link module when the device is opened. In every other CA instruction you code to perform operations on a port, you must refer to the label of the CAIOCB for that port, which you code in the nonexecutable section of your program. As for all EDX channel attach instructions, check the return code in the TCB before issuing a WAIT. Issuing I/O Your application program requests I/O processing by issuing CAREAD and CAWRITE instructions. For both CAREAD and CAWRITE, check the return code in the TCB before issuing a WAIT instruction for the I/O to complete. Series/1 Receiving Data from the Host (CAREAD) The CAREAD instruction reads data from a host device address. Specify the CAIOCB statement that refers to the port in the CARE AD instruction. Each CAREAD instruction must supply the addresses of two buffer control blocks. When you issue a Series/1 read request, one of two conditions are true: either the System/370 has aiready issued the write to match your CAREAD, or your CAREAD was issued before the matching write request was received. If the System/370 has already issued its write request, your CAREAD is posted immediately and the address of the buffer that the System/370 wrote to is returned to you. If the System/370 has not issued a write to match your CAREAD, the channel attach program holds your CAREAD until the System/370 issues its write request. Because the System/370 can issue a write request at any time, a buffer must be available to receive data from the System/370. This is accomplished as follows: o CO-1S2 SC34-0638 o Programming for the Channel Attach Application (continued) When you open a channel attach port, you must point to a buffer control block defining the address, size, and partition of the buffer to receive data for the first System/370 write. This information is stored by the channel attach program and is returned to you when your first CAREAD is complete. When you issue a CAREAD instruction it must identify two buffer control blocks: The first buffer control block receives (from the channel attach program the address, size, and partition of the data buffer written by the System/370 to satisfy that CAREAD. The second buffer control block must contain three words defining the address, size and partition of the buffer to be used for the next System/370 write. These values are stored by the channel attach program, and are returned to you when the next Series/I CAREAD is complete. On every Series/I CAREAD instruction, you are told where the data for the read was stored, and you supply the information required to set up for the next System/370 write operation. Series/1 Sending Data to the Host o The CAWRITE instruction sends data from your application program buffer to a channel attach device port. On the CAWRITE instruction, you must specify the CAIOCB used to open the port. When a Series/I CAWRITE is issued to a port and the System/370 application program is not actively reading from the corresponding device address, the channel attach program issues an attention interrupt to the System/370. This attention interrupt notifies the System/370 application program that the data from the Series/I is available for the associated device address. The System/370 should then select the port and issue a READ. The channel attach program recognizes the READ command and issues a start I/O (write) command to the channel attach device to start transfer of the contents of the Series/I data buffer to the System/370. When data transfer is complete, the write operation is not posted until the System/370 application program acknowledges the data transfer or indicates negative acknowledgement. This acknowledgement can be in one of two forms. If the System/370 program issues an Erase All Unprotected (EAU) command after data has been sent to the host, then the EAU is considered to be a positive acknowledgement of the data transfer. The CAWRITE which caused the data to be sent to the host is then posted. A second way the System/370 acknowledges a CAWRITE is by issuing a write command. When a System/370 Write or Erase/Write is received as an acknowledgement of a CAWRITE, bit 6 of the first data byte from the System/370 is examined to determine whether it is a positive acknowledgement (bit 6 on) or a negative acknowledgement (bit 6 off), and the Series/I program is posted appropriately. o Chapter 4. Channel Attach Program CO-IS 3 Channel Attach Program Programming for the Channel Attach Application (continued) ~ . c>J ( If the System/370 issues additional read requests before it acknowledges the Series/1 CAWRITE, the read requests connect to the same CAWRITE, causing retransmission of the data. If the System/370 tries to read when no corresponding Series/1 CAWRITE has been issued, the channel attach program generates a write operation and sends X'604040' to the host; this indicates that a CAWRITE is not pending on the Series/1. If the channel attach program has sent X'604040' to the host one or more times before the Series/1 user issues a CAWRITE, then when the CAWRITE is issued the channel attach program sets the appropriate flags to allow the next System/370 read to the Series/1 user data buffer. No attention interrupt is issued to the System/370 in this case. The first three, bytes of data sent by a Series/1 CAWRITE can have explicit meaning to the System/370 support program. Therefore, be careful when setting the first three bytes of data, because unpredictable results can occur. To avoid problems, set the first three bytes of the data to X'7D4040'. This corresponds to an attention identification descriptor (AID) and two bytes of null buffer address. The X'7D' corresponds to an Enter key response from an IBM 3272 Control Unit. Closing a Channel Attach Port (CACLOSE) When your program no longer requires a port it should issue a CACLOSE instruction to free the port. A CACLOSE for a port causes the channel attach program to: • Reinitialize the control blocks for the port so the port can be opened by another application program. o Disable the port except for port 0 which is kept open for potential use by the Online Test Executive Program (OLTEP). Stopping the Channel Attach Device (CASTOP) The CASTOP instruction frees the channel attach device. A CASTOP causes the channel attach program to: • Disable port 0 Disable the channel attach device for interrupts Reinitialize the control block for the channel attach device so it can be started by another application program • Unload the channel attach program (only if all channel attach devices are stopped). o CO-1S4 SC34-0638 o Programming for the Channel Attach Application (continued) Traci~g Series/1 I/O during Channel Attach (CATRACE) The CATRACE instruction enable or disables the collection of I/O trace data for a channel attach device. Channel attach trace data is collected in processor storage and, for performance reasons, should only be used during debugging. Printing Channel Attach Trace Data (CAPRINT) To print the entire area of trace data obtained through CATRACE, code a CAPRINT instruction. The data prints out on a printer or displays at your terminal. Tracing is disabled while printing is in progress. Interacting with Channel Attach (Using $CHANUT1 Utility) The channel attach utility, $CHANUTI, allows you to perform several functions associated with channel attach operations: • o start or stop channel attach device enable or disable I/O tracing • print trace data. Invoke $CHANUTI by the $L command or by the session manager. You can load the utility into any partition. As soon as it is loaded, the utility asks for the address of the channel attach device you want to work with. All commands you enter during a session with $CHANUTI will apply to the first device you specify, unless you change the address (this procedure is discussed below). The $CHANUTI commands interface with the channel attach program in the same manner as the channel attach instructions. The error codes for the $CHANUTI commands are the same as those for the corresponding instructions. $CHANUT1 Commands The $CHANUTI commands are shown below. To obtain this list at your terminal, enter a question mark in response to the prompting message, COMMAND(?): o Chapter 4. Channel Attach Program CO-IS S Channel Attach Program o Interacting with Channel Attach (Using $CHANUT1 Utility) (continued) Changing Channel Attach Device Address (CA) The CA command changes the address of the channel attach device you want to use during the $CHANUTI session. Ending the Utility (EN) The EN command ends the $CHANUTI utility. lCOMMANO(?): EN j Printing the Trace Data (PR) The PR command prints the trace buffer, with the title you enter, on a terminal. COMMAND(?): PR TITLE: TRACE PRINTOUT 07/26/80 CONSOLE: $SYSPRTR PRINT TRACE BUFFER SUCCESSFUL COMMAND(?) : Stopping a Channel Attach Device (SP) The SP command stops the channel attach device you have specified. I· COMMAND(?): SP l" " - - - - - - - - - - .STO. P DEVICE SUCCESSFUL COMMAND(?): ) I Starting a Channel Attach Device (ST) The ST command starts the channel attach device you have selected. COMMAND (?): ST START DEVICE SUCCESSFUL COMMAND ( ?): Performing Trace Function (TR) The TR command allows you to enable (E) or disable (D) the trace function. COMMAND (? ): TR ENABLE OR DISABLE: 0 ENABLE/DISABlESUCCESSFUL COMMAND(?) : o CO-lS6 SC34-0638 o Channel Attach Sample Programs This section contains two sample programs. The first, executes on a Series/1 using the EDX channel attach support. It communicates with an OS/VS2 application program which is executing at the same time on the host System/370. The second sample program executes on a System/370 using BTAM or BTAM-ES facilities. It communicates with the first sample program, which is running on the Series/1. Configuration Requirements for Sample Programs Hardware System/370 Block multiplexer or selector channel One control unit position on channel Other peripherals to support OS/VS2. Series/1 IBM Series/l hardware required to operate EDX IBM 4993-1 Series/1-System/370 termination enclosure IBM Series/l-System/370 Channel Attachment Feature #1200. • Software System/370 software: OS/VS2 (MVS) Basic Telecommunications Access Method (BTAM) Channel attach device defined to OS /VS2 via I/O generation User application program. Series/l software: EDX operating system (any version) EDX Channel Attach Program User application program. o Chapter 4. Channel Attach Program CO-lS7 Channel Attach Program Channel Attach Sample Programs (continued) General Guide for Execution of Sample Programs o • . Install channel attach support. • Modify the sample program if your channel attach device is not at address 10. Assemble, link, and update Series/l program. • Assemble host program and link-edit for S/370 execution. • Power on the channel attach device and set the enable/disable switch to enable. • Start sample program on the Series/I. When prompted, start the sample program on the System/370. Series/1 Sample Program The Series/l sample program (SAMPLEA) performs the following functions: • Starts the channel attach device (the CASTART instruction) • Enables and disables I/O tracing (the CATRACE instruction) • Opens channel attach device port #1 (the CAOPEN instruction) • Reads from the System/370 over port #1 (the CAREAD instruction) • Writes to the System/370 over port #1 (the CAWRITE instruction) Closes channel attach device port #1 (the CLOSE instruction) • Prints the I/O trace area (the CAPRINT instruction) • Stops the channel attach device (the CASTOP instruction). o CO-lS8 SC34-0638 o Channel Attach Sample Programs (continued) SAMPLEA BEGIN PROGRAM BEGIN PRINT OFF COpy PROGEQU ===> REMOVE FOR MACRO ASSEMBLER COPY CMDEQU ===> REMOVE FOR MACRO ASSEMBLER PRINT ON PRINTEXT '@THIS IS A TEST OF THE CHANNEL ATTACH SUPPORT.' PRINTEXT '@THE CHANNEL ATTACH DEVICE MUST BE ON AND' PRINTEXT '@ENABLED BEFORE YOU PRESS ENTER TO CONTINUE.' READTEXT SYNC ******************************************************************** * * START CHANNEL ATTACH DEVICE 10 ******************************************************************** CASTART 10,STREVNT,ERROR=STRTERR WAIT STREVNT IF (STREVNT,NE,+MINUS1) GOTO STRTERR ENDIF PRINTEXT '@DEVICE 10 STARTED' ******************************************************************** * * TURN ON I/O TRACING ******************************************************************** CATRACE 10,ENABLE=YES,ERROR=TRCERR PRINTEXT '@TRACE ENABLED' ******************************************************************** * o OPEN PORT ONE * ******************************************************************** CAOPEN PORTONE,ERROR=OPNERR WAIT PORTONE IF (PORTONE,NE,+MINUS1) GOTO OPNERR ENDIF PRINTEXT '@PORT ONE OPENED' PRINTEXT '@PLEASE START SAMPLEC ON THE SYSTEM/370.' PRINTEXT '@PRESS ENTER WHEN RDACK APPEARS ON THE' PRINTEXT '@S/370 DISPLAY, INDICATING THAT THE S/370' PRINTEXT '@HAS COMPLETED OPEN PROCESSING.' READTEXT SYNC Figure 64 (Part 1 of 6). Series/l Sample Program o Chapter 4. Channel Attach Program CO-lS9 Channel Attach Program Channel Attach Sample Programs (continued) o ******************************************************************** * READ C3 WRITTEN BY SYSTEM/370 DURING OPEN PROCESSING * ******************************************************************** CAREAD PORTONE,WHATREAD,INAREA,ERROR=C3ERR WAIT PORTONE IF (PORTONE,NE,+MINUS1) GOTO C3ERR ENDIF PRINTEXT '@READ OF C3 SUCCESSFUL' ******************************************************************** * WRITE MESSAGE TO SYSTEM/370 TO ACKNOWLEDGE RECEIPT OF C3 * ******************************************************************** CAWRITE PORTONE,OUTACK,ERROR=ACKERR WAIT PORTONE IF (PORTONE,NE,+MINUS1) GOTO ACKERR ENDIF PRINTEXT '@ACK OF C3 WRITTEN TO SYSTEM/370' ******************************************************************** * I/O LOOP * ******************************************************************** DO WHILE, (COUNT,LT,+LIMIT) ADD COUNT, 1 ******************************************************************** * WRITE MESSAGE TO SYSTEM/370 * ******************************************************************** CAWRITE PORTONE,OUTAREA,ERROR=WRITERR WAIT PORTONE IF (PORTONE,NE,+MINUS1) GOTO WRITERR ENDIF PRINTEXT '@DATA WRITTEN TO SYSTEM/370' Figure 64 (Part 2 of 6). Series/l Sample Program o CO-160 SC34-0638 o Channel Attach Sample Programs (continued) ******************************************************************** * * READ MESSAGE FROM SYSTEM/370 ******************************************************************** CAREAD PORTONE,WHATREAD,INAREA,ERROR=READERR WAIT PORTONE IF (PORTONE,NE,+MINUS1) GOTO READERR ENDIF PRINTEXT '@DATA READ FROM SYSTEM/370' ******************************************************************** * * WRITE ACK TO SYSTEM/370 ******************************************************************** CAWRITE PORTONE,OUTACK,ERROR=RDACKERR WAIT PORTONE IF (PORTONE,NE,+MINUS1) GO TO RDACKERR ENDIF PRINTEXT '@ACK WRITTEN TO SYSTEM/370' ENDDO ******************************************************************** * * CLOSE PORT ONE ******************************************************************** EXIT CACLOSE PORTONE,ERROR=CLOSERR WAIT PORTONE IF (PORTONE,NE,+MINUS1) GOTO CLOSERR ENDIF PRINT EXT '@PORT ONE CLOSED' Figure 64 (Part 3 of 6). Series/l Sample Program o Chapter 4. Channel Attach Program CO-161 Channel Attach Program Channel Attach Sample Programs (continued) o ******************************************************************** * TURN OFF TRACE * ******************************************************************** TRCDIS CATRACE 10,ENABLE=NO,ERROR=TDISERR PRINTEXT '@TRACE DISABLED' ******************************************************************** * PRINT THE TRACE AREA ON THE SYSTEM PRINTER * ******************************************************************** PRNTRCE CAPRINT 10,STREVNT,TITLE=TITLDATA,ERROR=PRNTERR WAIT STREVNT IF (STREVNT,NE,+MINUS1) GOTO PRNTERR ENDIF PRINTEXT '@TRACE AREA PRINTED' ******************************************************************** * STOP THE CHANNEL ATTACH DEVICE * ******************************************************************** STOPDEV CASTOP 10,STREVNT,ERROR=STOPERR WAIT STREVNT IF (STREVNT,NE,+MINUS1),AND, (STREVNT,NE,+ENDED) GOTO STOPERR ENDIF PRINTEXT '@DEVICE 10 STOPPED' PROGSTOP -1 Figure 64 (Part 4 of 6). Series/1 Sample Program :1 \ i,'L) o CO-162 SC34-0638 o Channel Attach Sample Programs (continued) ******************************************************************** * * DATA AREAS AND I/O BUFFERS ******************************************************************** PORTONE STREVNT C3AREA o CAIOCB 10,PORT=1,BUFFER=C3AREA CAIOCB FOR PORT ONE ECB 0 EVENT FOR START, STOP, PRINT DATA A(INBUFF) BUFFER CONTROL AREA FOR DATA F'1' * READ OF C3 DATA F'O' * FROM S/370 OPEN INAREA DATA A(INBUFF) BUFFER CONTROL AREA FOR DATA F'128' * DATA INPUT DATA F'O' * FROM S/370 WRITE OUTAREA DATA A (OUTBUFF) BUFFER CONTROL AREA FOR DATA F'128' * WRITE OF DATA * TO SYSTEM/370 DATA F'O' OUTACK DATA A (OUTBUFF) BUFFER CONTROL AREA FOR DATA F'4' * WRITE OF ACK DATA F'O' * TO SYSTEM/370 WHAT READ DATA 3F'0' RECEIVE CONTROL INFO FOR READ INBUFF DATA 128C'0' OUTBUFF DATA X'7D4040AA' DATA C'BB CC DD EE FF GG HH' DATA C'11 22 33 44 55 66 77' DATA C'ZZZZZYYYYYXXXXXWWWWW' DATA C'THIS IS TO BE WRITTE' DATA C'N TO THE SYSTEM/370.' DATA C' THE END' COUNT DATA F'O' LIMIT EQU 2 MINUS1 EQU -1 SYNC TEXT LENGTH=4 TITLDATA DATA A (MYTITLE) DATA F'25' MYTITLE DATA C'SAMPLE PROGRAM TRACE AREA' ENDED EQU 599 Figure 64 (Part 5 of 6). Series/l Sample Program o Chapter 4. Channel Attach Program CO-163 Channel Attach Program Channel Attach Sample Programs (continued) () ******************************************************************** * ERROR MESSAGES * ******************************************************************** STRTERR PRINTEXT '@ERROR DURING START PROCESSING' GOTO EXIT OPNERR PRINTEXT '@ERROR DURING OPEN PROCESSING' GOTO EXIT C3ERR PRINTEXT '@ERROR DURING C3 PROCESSING' GOTO EXIT ACKERR PRINTEXT '@ERROR DURING C3/ACK PROCESSING' GOTO EXIT WRITERR PRINTEXT '@ERROR DURING S/1 WRITE PROCESSING' GOTO EXIT READERR PRINTEXT '@ERROR DURING S/1 READ PROCESSING' GOTO EXIT RDACKERR PRINTEXT 'ERROR DURING READ/ACK PROCESSING' GOTO EXIT TRCERR PRINTEXT '@ERROR DURING TRACE ENABLE' GOTO EXIT TDISERR PRINTEXT '@ERROR DURING TRACE DISABLE' GOTO PRNTRCE PRNTERR PRINTEXT '@ERROR DURING PRINT OF TRACE AREA' GOTO STOPDEV CLOSERR PRINTEXT '@ERROR DURING CLOSE PROCESSING' GOTO TRCDIS STOPERR PRINTEXT '@ERROR DURING STOP PROCESSING' PROGSTOP -1 ENDPROG END Figure 64 (Part 6 of 6). Series/l Sample Program CO-164 SC34-0638 o Channel Attach Sample Programs (continued) Host Sample Program This program executes on a System/370 using OS/VS Basic Telecommunications Access Method (BTAM) facilities, to communicate the application program executing at the same time on the Series/I. Refer to the previous program, which is the companion to this host program. ********************************************************************* * INVOKE SAMPLEC VIA TSO COMMANDS OR JCL. * EXAMPLE: INVOKE SAMPLEC VIA TSO COMMANDS: * * * * FREE FI(PRINTER,SNAP,S1GROUP) * ALLOC FI(SYSABEND) DA(DUMP.LIST) NEW SPACE(5,1) CYLINDERS + * * CATALOG * ALLOC FI(SNAP) DA(SNAP.LIST) NEW SPACE(5,1) CYLINDERS CATALOG * * ALLOC FI(S1GROUP) UNIT(581) NEW * * ALLOC FI(PRINTER) DA(*) * * * CALL 'PROJECT.LIB.LOAD(SAMPLEC)' * * * FREE FI(PRINTER,SNAP,S1GROUP) * EXAMPLE: INVOKE SAMPLEC VIA OS/vs JCL: * * II JOB (ACCOUNTING INFO),'NAME', * * IISAMPLEC EXEC PGM=SAMPLEC * * * IISTEPLIB DD DISP=SHR,DSN=PROJECT.LIB.LOAD * IIS1GROUP DD UNIT=581,DISP=NEW * * * IIPRINTER DD SYSOUT=A * IISNAP DD SYSOUT=A * * IISYSIN DD * * * 1* * ********************************************************************* * EQUATES * ********************************************************************* RO o EQU TEMPORARY STORAGE R1 1 TEMPORARY STORAGE EQU RLN EQU 1 RELATIVE LINE NUMBER R2 2 EQU MESSAGE ADDRESS R3 3 LOOP COUNTER EQU R4 4 BAL EQU R5 5 BAL EQU DCBREG 6 DCB USING REGISTER EQU DECBREG EQU DECB USING REGISTER 7 R8 BAL 8 EQU R9 NOT USED EQU 9 R10 10 NOT USED EQU BASEREG EQU 11 BASE USING REGISTER R12 12 NOT USED EQU SAVEREG EQU 13 SAVE AREA ADDRESS REGISTER R14 14 LINKAGE EQU R15 15 LINKAGE EQU Figure 65 (Part 1 of 8). Host Sample Program o Chapter 4. Channel Attach Program CO-165 Channel Attach Program Channel Attach Sample Programs (continued) o ********************************************************************* * START SAMPLEC * ********************************************************************* SAMPLEC CSECT SAMPLEC PROGRAM SAVE (14,12) SAVE REGISTERS BALR BASEREG,O ESTABLISH ADDRESSABILITY USING *,BASEREG FOR CSECT. USING IHADCB,DCBREG ESTABLISH ADDRESSABILITY USING IECTDECB,DECBREG FOR DCBS AND DECBS ST SAVEREG,SAVEAREA+4 STORE ADDRESS OF SAVE AREA LA SAVEREG,SAVEAREA LOAD THIS PROG SAVE AREA ADDR LA DECBREG,CADECB LOAD DECB USING REG ********************************************************************* * OPEN PRINTER DATASET * ********************************************************************* LA DCBREG,PRINTDCB LOAD DCB DSECT REG OPEN (PRINTDCB,(OUTPUT)) OPEN PRINTER DCB TM DCBOFLGS,X'10' IF OPEN OK BO CAOPEN1 BRANCH ABEND 1,DUMP ELSE ABEND ********************************************************************* * ISSUE OPEN MACRO FOR SNAP DATASET * * * * ********************************************************************* CAOPEN1 LA DCBREG,SNAPDCB LOAD DCB DSECT REG OPEN (SNAPDCB,(OUTPUT)) OPEN SNAP DCB TM DCBOFLGS,X'10' IF OPEN OK BO CAOPEN2 BRANCH ABEND 2,DUMP ELSE ABEND ********************************************************************* * OPEN CHANNEL ATTACH DEVICE DCB * ********************************************************************* DCBREG,CADCB LOAD DCB DSECT REG CAOPEN2 LA COP(8) ,OPEN CURRENT OP = OPEN MVC OPEN SERIES/1 LINE GROUP DCB OPEN (CADCB) DCBOFLGS,X'10' IF OPEN OK TM BO CAINIT BRANCH LA R2,MSG09 ELSE R5,PRINTIO PRINT MESSAGE BAL ELSE ABEND ABEND 3,DUMP CAINIT EQU * PRINT BEGIN LA R2,MSGOO TEST MESSAGE. BAL R5,PRINTIO PRINT CHANNEL ATTACH R2,MSG01 LA DEVICE OPEN MESSAGE. R5,PRINTIO BAL Figure 65 (Part 2 of 8). Host Sample Program o CO-166 SC34-0638 o Channel Attach Sample Programs (continued) ********************************************************************* * READ ACKNOWLEDGE MESSAGE FROM SERIES/1 FOR BTAM OPEN'S WRITE. ********************************************************************* BAL BAL RB,RDACK R4,CHKRTN READ S/1 ACK MSG CHECK RETURN CODE ********************************************************************* DO UNTIL COUNT = LIMIT ********************************************************************** LOOP LA EQU R3,NLIMIT * SET R3 = LIMIT ********************************************************************* * READ A MESSAGE ********************************************************************* BAL BAL RB,RDINIT R4,CHKRTN READ FROM SERIES/1 CHECK RETURN CODE ********************************************************************* * WRITE A MESSAGE ********************************************************************* WRIT BAL BAL BAL BAL RB,WRINIT R4,CHKRTN RB,RDACK R4,CHKRTN WRITE TO SERIES/1 CHECK RETURN CODE READ SERIES/1 ACKNOWLEDGEMENT CHECK RETURN CODE ********************************************************************* ENDDO ********************************************************************** c BCT R3,LOOP IF R3 NE ZERO CONTINUE ********************************************************************* * OUTPUT 'SAMPLEC TEST ENDED' ********************************************************************* LA BAL R2,MSG04 R5,PRINTIO PRINT END OF TEST MESSAGE. ********************************************************************* ISSUE CLOSE MACRO CHANNEL ATTACH DCB ********************************************************************** MVC COP(B),CLOSE CLOSE CADCB CURRENT OP = CLOSE CLOSE LINE DCB ********************************************************************* * ISSUE CLOSE MACRO FOR PRINTER DATASET ********************************************************************* EXIT CLOSE PRINTDCB EQU * L SAVEREG,SAVEAREA+4 RETURN (14,12),RC=O CLOSE PRINTER DCB RESTORE SAVEREG EXIT Figure 65 (Part 3 of 8). Host Sample Program o Chapter 4. Channel Attach Program CO-167 Channel Attach Program o Channel Attach Sample Programs (continued) ********************************************************************* * * INTERNAL SUBROUTINE CHKRTN: CHECK I/O RETURN CODES CALLING SEQUENCE: BAL R4,CHKRTN ********************************************************************* CHKRTN CHKFL1 CHKFL2 CHKCC41 IOERROR IOERR EQU CLI BNE CLI BNE BR CLI BNE MVI BR CLI BE MVC UNPK MVI TR LA BAL ABEND EQU TM BNO TM BNO TM BNO LA BAL * DECSDECB,X'7F' CHKCC41 DECFLAGS,X'OO' CHKFLl R4 DECFLAGS,X'FO' CHKFL2 READY,X'FF' R4 DECSDECB,X'41 , IOERROR WORK(l) ,DECSDECB MSG02+28(3),WORK(2) MSG02+30, C' , MSG02+28(2),TABL-240 R2,MSG02 R5,PRINTIO 4,DUMP * DECERRST,X'80' IOERR DECCSWST,X'02' IOERR DECSENSO,X'40' IOERR R2,MSG10 R5,PRINTIO EXIT B WORK(1) ,DECFLAGS MVC UNPK MSG03+33 (3) ,WORK(2) MSG03+35, C' , MVI MSG03+33(2),TABL-240 TR LA R2,MSG03 BAL R5,PRINTIO ABEND 5,DUMP IF ECB POST CODE IS BAD BRANCH ELSE IF FLAGS NOT ZERO BRANCH ELSE RETURN IF DEVICE HAS NOT BECOME READY BRANCH ELSE SET READY FLAG RETURN IF ECB POST CODE IS I/O ERROR BRANCH ELSE LOAD POST CODE INTO WORK LOAD CHAR INTO MSG INSERT BLANK TRANSLATE PRINT MESSAGE ABEND IF NOT SIO ERROR BRANCH ELSE IF NOT UNIT CHECK BRANCH ELSE IF NOT INTERVENTION REQ'D 'RRANC'H ELSE PRINT INTERVENTION REQ'D EXIT LOAD FLAGS INTO WORK LOAD CHAR INTO MSG INSERT BLANK TRANSLATE PRINT MESSAGE. ABEND FIgUre 65 (Part 4 of 8). Host Sample Program o CO-168 SC34-0638 () Channel Attach Sample Programs (continued) ******************************************************************** * * * * INTERNAL SUBROUTINE PRINTIO: PRINT MESSAGE CALLING SEQUENCE: LA R2,MSGXX ADDR OF MSG IN R2(NOTE) BAL PRINTIO,R5 PRINT MESSAGE NOTE: FIRST BYTE PRECEDING THE MESSAGE HAS LENGTH OF MESSAGE. ******************************************************************** PRINTIO LR BCTR CLI BNH LA B PRINT PRINT1 IC BCTR EX PUT SNAP MVI MVC BR R1,R2 GET ADDR OF MSG R1,O GET ADDR OF MSG LENGTH O(R1),128 IF MSG NOT TOO LONG PRINT BRANCH R1,127 ELSE PRINT1 TRUNCATE TO MAX LENGTH R1,O(R1) GET MSG LENGTH R1,O SUBTRACT ONE FOR MVC INSTR R1,MOVE EXECUTE MOVE INSTRUCTION PRINT IT PRINTDCB,PRTBUF DCB=SNAPDCB,ID=10, STORAGE=(PRTBUF,EPRTBUF) PRTBUF,C' , SET PRINT PRTBUF+1 (127) ,PRTBUF BUFFER TO BLANKS. RETURN R5 ******************************************************************** * * * o INTERNAL SUBROUTINE EMSG: PRINT BTAM MACRO ERROR MESSAGE CALLING SEQUENCE: B EMSG (OR EQUIVALENT) ERROR CODE IN R15 ******************************************************************** EMSG STC UNPK MVI TR MVC UNPK MVI TR MVC LA BAL B R15,WORK MSGOS+46(3),WORK(2) MSG05+48,C" MSG05+46(2),TABL-240 WORK(1),DECSDECB MSGOS+59(3),WORK(2) MSG05+61,C" MSGOS+59(2),TABL-240 MSG05+26(8),COP R2,MSG05 RS,PRINTIO EXIT SAVE RC INTO WORK CONVERT TO ZONED FORMAT INSERT BLANK FOR SIGN POSITION TRANSLATE TO EBCDIC FOR PRINTI~G MOVE DECSDECB INTO WORK CONVERT TO ZONED FORMAT INSERT BLANK FOR SIGN POSITION TRANSLATE TO EBCDIC FOR PRINTI G INSERT CURRENT BTAM OPERATION PRINT ERROR MESSAGE EXIT Figure 65 (Part 5 of 8). Host Sample Program 0: , , Chapter 4. Channel Attach Program CO-169 Channel Attach Program Channel Attach Sample Programs (continued) ********************************************************************* * BTAM I/O REQUESTS ********************************************************************* * READ ACKNOWLEDGE MESSAGE )RDACK LA R2,MSGll RDACK MESSAGE B RDALL PRINT MESSAGE * READ INITIAL RDINIT LA R2,MSG06 RDINIT MESSAGE RDALL BAL R5,PRINTIO PRINT MESSAGE MVC COP(8),READ CURRENT OP = READ READ (DECBREG) ,TI,CADCB,AREAIN,LIN"RLN,MF=E B WAIT * WRITE INITIAL WRINIT LA R2,MSG07 WRINIT MESSAGE BAL R5,PRINTIO PRINT MESSAGE MVC COP(8),WRITE CURRENT OP = WRITE WRITE (DECBREG),TI,CADCB,AREAOUT,LOUT"RLN,MF=E B WAIT * WRITE UNPROTECTED ERASE WRUNER LA R2,MSG08 WRUNER MESSAGE BAL R5,PRINTIO PRINT MESSAGE MVC COP(8),WRITE CURRENT OP = WRITE WRITE (DECBREG) ,TUS,CADCB,AREAOUT,l"RLN,MF=E B WAIT ******************************************************************** * WAIT FOR I/O COMPLETION ******************************************************************** WAIT LTR R15,R15 IF I/O RETURN CODE IS NONZERO BNZ EMSG BRANCH WAIT 1,ECB=(DECBREG) ELSE WAIT FOR I/O TO COMPLETE SNAP DCB=SNAPDCB, ID=20,PDATA= (PSW,REGS) , STORAGE=(SAVEAREA,PRINTDCB) CLC COP(8),READ IF COP EQ READ BE WRUNER BRANCH TO WRITE ACK BR R8 RETURN o c::) Figure 65 (Part 6 of 8). Host Sample Program o CO-170 SC34-0638 o Channel Attach Sample Programs (continued) ******************************************************************** * DATA DECLARATIONS ******************************************************************** DS LTORG SAVEAREA DS LIMIT DC MOVE MVC WORK DC DC MSGOO DC DC MSGOl DC DC MSG02 DC DC MSG03 DC DC MSG04 DC DC MSG05 DC MSG10 DC DC DC DC DC DC DC DC DC DC MSGll COP READ WRITE CLOSE DC DC DC DC DC DC MSG06 MSG07 0 MSG08 MSG09 OF WORD ALIGNMENT 18F SAVE AREA F'O' LIMIT COUNTER VALUE PRTBUF(1),O(2) MOVE INSTR IS EXECUTED BY EX X'OOOF' WORK SPACE ALl (L'MSGOO) C'SAMPLEC TEST STARTED' AL 1 (L' MSGO 1 ) C'CHANNEL ATTACH DEVICE OPENED. ' AL 1 (L' MSG02) C'SAMPLEC: COMPLETION CODE = XX AL 1 (L' MSGO 3 ) C'SAMPLEC: I/O ERROR. DECFLAGS XX AL 1 (L' MSGO 4 ) C'SAMPLEC TEST ENDED' ALl (L'MSG05) C'BTAM OPERATION ERROR FROM XXXXXXXX MACRO. RC= YY DECSDX ECB= ZZ ' AL 1 (L' MSGO 6 ) C'RDINIT ALl (L'MSG07) C'WRINIT AL 1 (L' MSGO 8 ) C'WRUNER AL 1 (L' MSGO 9 ) C'CHANNEL ATTACH DEVICE COULD NOT BE OPENED.' ALl (L'MSG10) C'INTERVENTION REQUIRED ON CHANNEL ATTACH DEVICE. ISSUE X SERIES/l OPERATOR COMMAND: "STDV CAl" , AL 1 (L' MSG 11 ) C'RDACK CL8' , CURRENT BTAM OPERATION CL8'READ' READ CL8'WRITE' WRITE CL8'CLOSE' CLOSE Figure 65 (Part 7 of 8). Host Sample Program o Chapter 4. Channel Attach Program CO-17I Channel Attach Program o Channel Attach Sample Programs (continued) OPEN PRTBUF EPRTBUF READY TABL AREAIN EAREAIN AREAOUT ENDOUT NLIMIT LIN LOUT DC DS DC EQU DC DC DC EQU DC DC DC DC DC DC DC EQU EQU EQU EQU CL8'OPEN' OPEN FULLWORD ALIGNMENT 128C' , PRINT BUFFER ADDR OF LAST WORD IN PRTBUF *-4 X'OO' READY FLAG C'0123456789ABCDEF' TRANSLATE TABLE 256C' , INPUT AREA ADDR OF LAST WORD IN INPUT *-4 C'THE QUICK BROWN FOX ' AREA C'JUMPED OVER THE LAZY' C' DOG AND THE DISH RA' C'N AWAY WITH THE SPOOl C'N * $RIGX0004$ * () , C'SYSTEM/370 -> SERIES' C'/1 OF * 2 AREAOUT-AREAIN ENDOUT-AREAOUT LOOP COUNT LENGTH OF INPUT AREA LENGTH OF INPUT AREA ******************************************************************** * CONTROL BLOCKS ******************************************************************** READ CADCB DCB PRINTDCB DCB SNAPDCB CADECB,TI,AREAIN,LIN"RLN,MF=L DSORG=CX,MACRF=(R,W),DDNAME=S1GROUP,EROPT=E BLKSIZE=128,DDNAME=PRINTER,DSORG=PS, LRECL=128,MACRF=(PM) ,RECFM=FB DCB DSORG=PS,RECFM=VBA,MACRF=(W),BLKSIZE=1632,LRECL=125, DDNAME=SNAP DCBD DSORG=BS,DEVD=DA IECTDECB END Figure 65 (Part 8 of 8). Host Sample Program o CO-172 SC34-0638 () Part 3. Specialized Series/1 Event Driven Executive Communications Methods c Part 3 discusses the two methods of communications that you can use on Series/l only with the Event Driven Executive operating system: • Series/l-to-Series/l Attachment • General Purpose Interface Bus (GPIB) Adapter. o Part 3. Specialized Series/l Event Driven Executive Communications Methods CO-173 Notes o o CO-174 SC34-0638 o Chapter 5. Series/1-to-Series/1 Attachment Support () Your Series/l can communicate directly with the processor of another Series/lin a configuration called a Series/ I-to-Series/ 1 attachment. The two processors communicate over a connection established by RPQ 002241 and RPQ 002242 attachment cards plugged into each processor's I/O channel and connected by a cable. (One processor uses RPQ 002241 and the other RPQ D02242.) Each RPQ card connected to a given Series/l must have its own cable. For hardware installation and configuration details, refer to the Series/ l-to-Series/ 1 Attachment (RPQs D02241 and D02242) Custom Feature. Application programs running on both processors control the transfer of data between the two Series/Is. A separate synchronization program, also running simultaneously on the two processors, synchronizes the execution of the application programs. To communicate with the processor that your Series/lis attached to, you must write application programs to perform data transfers, and synchronization programs to control the application programs. Planning the Series/1-to-Series/1 Application Certain requirements and restrictions apply to the Series/Ito Series/l application. o Chapter 5. Series/ I-to-Series/ 1 Attachment Support CO-l 75 Series/1-to-Series/1 Attachment Support Planning the Series/1-to-Series/1 Application (continued) Processor Relationships o Normally, the attached Series/l systems communicate in a peer-to-peer relationship. Both processors contend with equal priority to initiate data transfers. However, the Series/l to Series/l attachment allows one processor to IPL the other (remote IPL). This establishes a primary-and-secondary processor relationship between the two Series/Is. Only the processor connected with RPQ D02241 can perform the remote IPL. When remote IPL is complete, the processor with RPQ D02241 functions as the primary and the processor with RPQ D02242 as the secondary. The primary processor controls the data transfers, thus eliminating contention between the two. Initiating Data Transfers Either Series/l can initiate a data transfer to the other, regardless of the relationship between the processors. A data transfer can write data to the other processor, read data from it, or issue a control instruction. The receiving processor must always respond to a data transfer by sending back the opposite instruction to the initiating processor. For example, if the initiating processor performs a write operation, the receiving processor must answer with a read operation. Responding to External Events A processor that receives an external interrupt while attached to another Series/l can record the external event by posting an event control block (ECB). For example, one processor may need to receive data from a device attached to it while it is in the middle of talking to the other processor. However, it is possible to post an event control block even if the processor is not communicating with the other Series/I. This enables other terminal I/O tasks to execute on the posting processor while it waits for communications from the other processor. Figure 66 on page CO-177 illustrates setup and usage of posting a user ECB. The program should execute on both processors. The program has three tasks: • Task 1 performs a write (PRINTEXT) and is driven by an external event, in this case task 3, which is a timer task. It could be sensor I/O or BSC as well. • Task 2 performs a read (READTEXT). It responds only to an attention interrupt on the Series/l-to-Series/llink, or to a post from task 1. • Task 3 is a timer task, intended to simulate external stimuli. o CO-l 76 SC34-0638 o Planning the Series/1-to-Series/1 Application (continued) T1 GO * WAITT1 o * * * * * T2 T2GO PROGRAM GO,30 PRINT OFF COPY CCBEQU PRINT ON EJECT RESET ECB RESET ECB FOR S1S1 TECB RESET ECB FOR TIMER TASK RESET MOVE BUF-2,256 SET TO READ/WRITE 256 BYTES MOVE BUF-4,BUF-2 ENQT S1S1 GET S1S1 TCBGET #1,$TCBCCB GET CCB ADDRESS OF S1S1 MOVEA #2,ECB SET ECB ADDR IN CCB MOVE ($CCBS1EI+2,#1),#2,TKEY=0 DO IT TCBGET #2, $ TCBAKR GET AKR AND #2,X'0030' AND TO GET OP2 SHIFTR #2,4 MOVE IT OVER TO BITS 13-15 MOVE ($CCBS1EI,#1),#2,TKEY=0 SET INTO CCB DEQT S1S1 GIVE UP S1S1 ATTACH T2 START TIMER TASK ATTACH T3 START READ TASK TASK 2 ALWAYS DOES A WRITE (PRINTEXT) WAIT TECB WAIT FOR TIMER TASK RESET TECB CLEAR TIMER ECB ENQT S1S1 PRINTEXT BUF,XLATE=NO WRITE DATA MOVE T1STAT,T1 CHECK STATUS IF (T1STAT,EQ,-1) IF OK ADD NUMT1,1,PREC=DS BUMP COUNT ELSE ADD NUMT1E,1,PREC=DS IF ERROR, BUMP COUNT DUE TO THE ASYNCHRONOUS NATURE OF THE S1/S1 WE MUST POST THE ECB WHEN WE GET AN ERROR HERE - ASSUMING IT IS AN INVALID SEQUENCE ERROR (PRINTEXT FACING PRINTEXT) POST ECB,-1 POST THE ECB JUST IN CASE ENDIF DEQT GOTO WAITT1 LOOP TASK 2 ALWAYS DOES A READ TASK T2GO,25 EQU * Figure 66 (Part 1 of 2). Program for Posting an Event Control Block ~, '-Ii Chapter 5. Series/l-to-Series/l Attachment Support CO-I77 Series/1-to-Series/1 Attachment Support Planning the Series/1-to-Series/1 Application (continued) SLEEP * T3 T3GO ECB TECB T1STAT T2STAT NUMT1 NUMT1E NUMT2 NUMT2E TYPE ZERO S1S1 BUF c WAIT ECB WAIT ON ECB POSTED BY S1S1 RESET ECB RESET ECB S1S1 ENQT CLEAR HEADER AREA BUF,O,DWORD MOVE SEE IF A READ TERMCTRL STATUS,BUF,WAIT=NO IF NO OPERATION READY IF (BUF,EQ,ZERO,4) DEQT GO BACK TO SLEEP GOTO SLEEP ENDIF IF OPERATION READY AND BUF,X'2000' (BUF,EQ,ZERO) SEE IF REQUIRES A READTEXT IF DEQT IF NOT, GO BACK TO SLEEP GOTO SLEEP ENDIF IF REQUIRES A READ, DO IT READTEXT BUF,XLATE=NO CHECK STATUS MOVE T2STAT,T2 (T2STAT,EQ,-1) IF BUMP COUNT NUMT2,1,PREC=DS ADD ELSE BUMP ERROR COUNT NUMT2E,1,PREC=DS ADD ENDIF DEQT LOOP GOTO SLEEP TASK 3 MERELY WAKES UP TASK 1 PERIODICALLY T3GO,510 TASK EQU * STIMER 50,WAIT TECB POST GOTO T3GO EJECT -1 ECB -1 ECB F'O' DATA F'O' DATA D'O' DATA D'O' DATA D'O' DATA D'O' DATA F'O' DATA D'O' DATA X'0808' DATA S1S1,BUFFER=BUF IOCB 1024,BYTES BUFFER ENDPROG END Figure 66 (Part 2 of 2). Program for Posting an Event Control Block o CO-178 SC34-0638 o Programming for Series/1-to-Series/1 Attachment You must write application programs using a set of Event Driven Language instructions that implement Series/l-to-Series/l communication. Your program can perform any type of data transfer (read, write or control operation). You can also write a program to synchronize the execution of the application program on both processors. Event Driven Language Instruction Set The following Event Driven Language instructions allow communication between the Series/ls. For descriptions and syntax of the instructions, refer to the Language Reference Instruction DEQT Explanation Releases the Series/1 previously enqueued with the ENQT instruction ENQT Acquires exclusive right to communicate with the enqueued Series/1 IOCB Identifies the Series/ 1 as the enqueued processor PRINTEXT Writes a message to the enqueued Series/1 READTEXT Reads a message from the enqueued Series /1 TERMCTRL Performs control functions on the enqueued Series/1 Figure 67. EDL Instructions for Communication between Series/Is Basic Programming Tasks To communicate with the other Series/l processor, your program must perform the following tasks: • Gain exclusive ability to communicate with the other processor (enqueue with ENQT instruction) • Identify the other processor (lOCB instruction) • Write data to or read data from the other processor (PRINTEXT or READTEXT instruction) • Perform control functions on the other processor (TERMCTRL instruction). In addition, your program should provide for error detection and handling, and keep a count of the data transfers. o Chapter 5. Series/l-to-Series/l Attachment Support CO-l79 Series/1-to-Series/1 Attachment Support Programming for Series/1-to-Series/1 Attachment (continued) Enqueuing the Other Processor o Before your Series/l can make data transfers to the other Series/I, you must gain exclusive right to communicate with that processor. The instruction that performs this function is ENQT. The other processor is treated as a terminal that your Series/l enqueues. No other device or processor is able to send data to the other Series/l while you have it enqueued. Because ENQT treats the other processor as a terminal, you must specify its symbolic identity. You must refer to the label of the IOCB instruction, which identifies the enqueued Series/l in your program. The IOCB instruction is covered in the section that follows. Identifying the Enqueued Processor You must specify the identity of the processor that your Series/l is going to communicate with. The IOCB instruction provides this information. Give the lOeB instruction a label when you code it. You must refer to this label in the ENQT and DEQT instructions for the program. A typical way to identify the Series/l in IOCB is "S 1S1." Writing Data to the Enqueued Processor To write data to the other Series/I, code a PRINTEXT instruction. Besides using PRINTEXT to simply initiate a write operation, code it in response to a READTEXT instruction issued by the other processor. Reading Data from the Enqueued Processor To read data from the other processor, code a READTEXT instruction. Besides using READTEXT to simply initiate a read operation, code it in response to a PRINTEXT issued by the other processor. Performing Control Functions on the Enqueued Processor You can perform certain control functions on the other processor by coding TERMCTRL instructions. The functions that apply to the Series/ I-to-Series/ 1 Attachment are listed in the chart below. Function ABORT IPL Explanation What to Code Enqueued processor sends back a message to your Series/l telling it to terminate the last function TERMCTRL ABORT Performs remote I PL of the enqueued processor TERMCTRL IPL Figure 68 (Part 1 of 2). TERMCTRL Functions for Series/l-to-Series/l Communications o CO-180 SC34-0638 o Programming for Series/1-to-Series/1 Attachment (continued) Function RESET Explanation Resets to the last ENQT issued What to Code TERMCTRL RESET STATUS Obtains status of enqueued processor TERMCTRL STATUS Figure 68 (Part 2 of 2). TERMCTRL Functions for Series/l-to-Series/l Communications Do not attempt to use any TERMCTRL functions other than those specifically for Series/ 1-to-Series/ 1 attachment. Programming Considerations Certain requirements and restrictions apply to programming for the Series/ 1-to-Series/ 1 attachment. • If a program that has issued an ENQT loads a program (via LOAD), the new program will have the Series/ 1-to-Series/ 1 as its default terminal. Therefore, a DEQT instruction should always be issued to the attachment before issuing the LOAD. • c Data to be transferred must start at an even address. Byte counts (data length) must be even. Return codes must be examined by the application. The return code is placed in the first word of the task control block (TCB). The return codes for the operations performed by the attachment are described in the Messages and Codes with the PRINTEXT /READTEXT instructions. • Synchronization between the two processors is possible only by checking and responding to the return codes and by using TERMCTRL STATUS. A listing of the return codes can be obtained by including the copy code "COPY ERRORDEF" in your program. • Do not use the CT command of the $TERMUT1 utility to reconfigure the Series/1-to-Series/1. The CT command parameters are not valid for the Series/1-to-Series/1 Attachment. Using $TERMUT1 to change attributes will cause unpredictable results. • Byte counts must be equal on each processor. For example, if processor A issues a READTEXT for 50 bytes, then processor B must respond with a PRINTEXT for 50 bytes. However, if Event Driven Executive terminal I/O buffer management is utilized, this may be very difficult to achieve unless direct I/O is used. Direct I/O means that a buffer is specified in the application program by an 10CB statement and the lOeB is enqueued (ENQT) prior to issuing a PRINTEXT /READTEXT instruction. Data is transferred directly from the buffer instead of the buffer generated by the TERMINAL configuration statement. Refer to the Event Driven Executive Language Programming Guide for a description of the 10CB statement and for further information on direct I/O. o Chapter 5. Series/l-to-Series/l Attachment Support CO-181 Series/1-to-Series/1 Attachment Support Programming for Series/1-to-Series/1 Attachment (continued) Your program should use direct I/O, with XLATE=NO, and should always transmit fixed-length records. Terminal I/O buffer management allows the number of bytes to vary for a PRINTEXT, but not for a READTEXT. READTEXT always reads the number of bytes specified by the TERMINAL statement LINSIZE parameter. PRINTEXT writes the number of bytes specified by the LENGTH parameter or the number of bytes in the message itself. You may not be able to synchronize the byte counts unless direct I/O is used. If, however, direct I/O is not used and buffering of data with PRINTEXT /READTEXT instructions is performed, the results of using these instructions are shown in Figure 69. The "error" in the figure means that an invalid data length status is returned to the application. Initiating Processor READTEXT of x bytes PRINTEXT of x bytes Responding Processor PRINTEXT of x bytes of less than x bytes of more than x bytes READTEXT of x bytes of less than x bytes of more than x bytes Status Returned to Responding Processor OK OK error OK error OK Figure 69. Usage of READTEXT /PRINTEXT without Direct I/O CO-182 • Except for the device address, use identical TERMINAL statements for each processor. The results will be unpredictable if the TERMINAL statements differ. • The IPL function of the $SISI UTI utility reads a specified nucleus from a disk and sends this nucleus to the other processor. The IPL function does not merely trigger the other processor to IPL from a disk or diskette. Therefore, the other processor does not require a disk or diskette. If the other processor does not have a disk or diskette, then the nucleus being sent must contain the supervisor and your application program. One processor cannot load a program on another processor. • The Series/l-to-Series/l Attachment supports only a subset of the terminal I/O instructions. Using instructions other than those described in the Language Reference for Series/ l-to-Series/ I can cause unpredictable results. In addition, only the RESET, ABORT, STATUS, and IPL functions of the TERMCTRL instruction should be used. • When a processor issues a PRINTEXT or READTEXT instruction (with or without direct 1/0), control is not returned to the issuing program until the data transfer is complete (the other processor issues the opposite operation). Therefore, it is not necessary to perform request/ acknowledge operations. • TERMCTRL RESET is used for error recovery. This operation causes the attachment to reset. The two applications must be synchronized to avoid an error/reset loop. SC34-0638 o o Programming for Series/1-to-Series/1 Attachment (continued) For example, an error/reset loop can occur if program A issues a PRINTEXT and encounters an error, issues a TERMCTRL RESET, and reissues the PRINTEXT. Program B, on the other hand, issues a READTEXT (at approximately the same time as program A's initial PRINTEXT) and receives an error. However, because of heavy processor or I/O activity, program B is unable to issue its TERMCTRL RESET until after program A has already performed its reset and reissued a PRINTEXT. Hence, program B's reset will cause program A to receive an error while program A is issuing its second PRINTEXT (retry). Both programs enter the loop as a result of trying to read or write while the programs are no longer synchronized and the attachments are being reset. Issuing an STIMER instruction (with WAIT) in the error recovery routine in program A can help avoid entering an error / reset loop. • Only two of the possible errors can occur concurrently on both processors. These errors should be taken into consideration in your error recovery routine: 1004 - Checksum error 1008 - Time-out error. Programming Examples o The following programs perform data transfers controlled by a synchronization program. The processors are assumed to be operating in a primary-to-secondary relationship. The PRIMARY program runs on the Series/l using RPQ D02241; the SECOND program runs on the Series/l using RPQ D02242. Both of these programs run simultaneously on the two processors. The SYNC program controls their execution. Primary Processor Sample Program The PRIMARY program controls the SECOND program. The processor running PRIMARY can abort the SECOND program. The operator presses the attention key and enters "AB" at the terminal that loaded PRIMARY. The command "MS" sends a message, a count of the transfers, and their length. Note the code for error recovery. () Chapter 5. Series/l-to-Series/l Attachment Support CO-183 Series/1-to-Series/1 Attachment Support Programming for Series/1-to-Series/1 Attachment (continued) PRIMARY * * ABT MSG GO GETSIZE G01 G02 * PROGRAM ATTNLIST EQU MOVE ENDATTN EQU MOVE ENDATTN PRINTEXT PRINT EXT PRINTEXT EQU GETVALUE IF AND IF PRINTEXT GO TO ENDIF QUESTION ENQT TERMCTRL DEQT EQU QUESTION QUESTION EQU MOVE MOVE MOVE MOVE MOVE MOVE MOVE MOVE ENQT o GO (AB,ABT,MS,MSG) * ABSW,1 SET ABORT FLAG * SET MESSAGE FLAG MSW,1 '@I AM THE PRIMARY SERIES/1@' '@"> AB" TO ABORT SECOND@' '@"> MS" TO SEND MESSAGE FLASH@' * BUFI,'@ENTER DATA LENGTH(6 ==> 4096)@' (BUFI,LT,6) ,OR, (BUFI,GT,4096) ,GOTO,GETSIZE BUFI,X'0001' ,RESULT=TEMP TEMP,NE,O '@DATA LENGTH CANNOT BE ODD@' GETSIZE '@RESET S1S1? ',NO=G01 S1S1 RESET *'@READY? ',YES=G02 '@TERMINATE? ',YES=STOP1,NO=GO * SET UP CONSTANTS FOR RESTART SET DATA LENGTH BUFI+2,BUFI CLEAR STATUS STAT, 0 CLEAR ABORT SWITCH ABSW,O CLEAR MESSAGE SWITCH MSW,O SET TYPE TYPE,-1 CLEAR COUNTER COUNT,O,DWORD CLEAR S1S1 HEADER HBUF,O, (6,BYTES) CSs,O, (24,BYTES) CLEAR S1S1 CSS S1S1 Figure 70 (Part 1 of 4). Primary Processor Sample Program o CO-184 SC34-0638 0 Programming for Series/1-to-Series/1 Attachment (continued) CONT * * * 0 EQU MOVE ADD MOVE MOVE * TYPE, 1 COUNT,1,PREC=D BUF, COUNT, DWORD BUF+4,MSW MOVE PRINTEXT MOVE IF CALL GOTO ENDIF MOVE MOVE IF MSW,O BUF,XLATE=NO STAT, PRIMARY STAT,NE,-1 S1ERR ERROR ADD READTEXT MOVE IF CALL GOTO ENDIF IF COUNT,1,PREC=D BUF,XLATE=NO STAT, PRIMARY STAT,NE,-1 S1ERR ERROR PRINTEXT CALL GOTO ENDIF IF BUF,O, (6,BYTES) TYPE,O (ABSW,NE,O),GOTO,ABORT SET TYPE = WRITE INCREMENT COUNTER MOVE COUNTER TO BUFFER MOVE MESSAGE SWITCH TO BUFFER CLEAR MESSAGE SWITCH GET STATUS CHECK FOR BAD STATUS CALL ERROR SUBROUTINE ERROR EXIT CLEAR BUFFER SET TYPE = READ CHECK OPERATOR ABORT REQUEST INCREMENT COUNTER ACKNOWLEDGE GET STATUS IF ERROR CALL ERROR SUBROUTINE IF COUNT BAD OUT OF SYNC '@OUT OF SYNC - COUNT FAILURE@' S1ERR ERROR (BUF,NE,COUNT,DWORD) BUF+4,NE,O * CHECK MESSAGE FLAG REQUEST Figure 70 (Part 2 of 4). Primary Processor Sample Program o Chapter 5. Series/l-to-Series/l Attachment Support CO-18S Series/1-to-Series/1 Attachment Support Programming for Series/1-to-Series/1 Attachment (continued) DEQT PRINTEXT PRINTEXT PRINTNUM PRINTEXT PRINTNUM PRINTEXT ENQT ENDIF GOTO ** * * * ERROR o '@MESSAGE RECEIVED FROM SECOND@' 'COUNT= ' COUNT,FORMAT=(12,0,I),TYPE=D '@DATA LENGTH = ' BUFI,FORMAT=(6,0,I) '@' S1S1 CONT ERROR EXIT IF GET AN ERROR - RESET THE OTHER DEVICE, WAIT, THEN RETRY. * STOP STOP1 ** * ABORT ABORT 1 EQU DEQT ENQT TERMCTRL STIMER DEQT PRINTEXT GOTO EQU DEQT QUESTION EQU PROGSTOP * S1S1 RESET 200,WAIT RESET S1S1 WAIT 200 MS '@AUTO RESTART@' G02 RESTART AUTOMATICALLY * '@RESTART? ',YES=GO * ABORT ROUTINE EQU DEQT PRINTEXT EQU ENQT STIMER TERMCTRL IF TERMCTRL DEQT PRINTEXT GOTO ENDIF DEQT PRINTEXT GOTO * '@OPERATOR REQUESTED ABORT@' * S1S1 1000,WAIT STATUS,HBUF (HBUF,NE,DO,DWORD) ABORT WAIT 1 SECOND SECONDARY TALKING TO ME? IF YES - ABORT SECOND '@ABORT ISSUED AS PER REQUEST@' STOP END IT '@SECOND DID NOT REQUEST DATA IN 1 SECOND@' STOP END IT Figure 70 (Part 3 of 4). Primary Processor Sample Program () CO-186 SC34-0638 o Programming for Series/1-to-Series/1 Attachment (continued) ** * c HBUF CSS * STAT TYPE COUNT MSW ABSW S1S1 BUF DO TEMP S1S1 ERROR SUBROUTINE SUBROUT S1ERR TERMCTRL STATUS,HBUF,CSS DEQT ENQT PRINTEXT '@BUF: ' PRINTNUM BUF PRINTEXT '@TYPE: ' PRINTNUM TYPE PRINT EXT '@COUNT: ' PRINTNUM COUNT,FORMAT=(12,O,I) , TYPE=D PRINTEXT '@I/O ERROR ON S/1-S/1 - STATUS PRINTNUM STAT,MODE=HEX PRINTEXT , HEX; , PRINTNUM STAT PRINTEXT , DEC@' PRINTEXT '@HEADER: ' PRINTNUM HBUF,2,MODE=HEX PRINTEXT , @' 'DIAGNOSTIC JUMPER WORD: ' PRINTEXT PRINTNUM CSS,1,MODE=HEX PRINTEXT '@' 'CYCLE STEAL STATUS: ' PRINTEXT PRINTNUM CSS+2,11,MODE=HEX PRINTEXT '@' DEQT RETURN S1S1 HEADER 2F'O' DATA JUMPER + CYCLE 12F'O' DATA STEAL STATUS F'O' STATUS RETURN DATA READ/WRITE TYPE DATA F' -1 ' D'O' SYNC COUNTER DATA F'O' MESSAGE SWITCH DATA F'O' ABORT SWITCH DATA IOCB S1S1,BUFFER=BUF BUFFER 4096,BYTES,INDEX=BUFI D'O' DWORD CONSTANT DATA F'O' TEMP STORAGE DATA ENDPROG END Figure 70 (Part 4 of 4). Primary Processor Sample Program o Chapter 5. Series/l-to-Series/l Attachment Support CO-187 Series/1-to-Series/1 Attachment Support Programming for Series/1-to-Series/1 Attachment (continued) Secondary Processor Sample Program o The SECOND program is controlled by the PRIMARY program. The attention command "MS" sends a message, transfer count, and data length to PRIMARY. SECOND * * MSG GO G01 G02 * * * * * * PROGRAM GO ATTNLIST EQU MOVE ENDATTN PRINTEXT PRINTEXT QUESTION ENQT TERMCTRL DEQT EQU QUESTION QUESTION EQU (MS,MSG) * MSW,1 SET MESSAGE SWITCH '@I AM THE SECOND@' '@"> MS" TO SEND MESSAGE FLASH@' '@RESET S1S1? ',NO=G01 S1S1 RESET RESET DEVICE *'@READY? ',YES=G02 '@TERMINATE? ',YES=STOP1,NO=GO * HERE WE WAIT FOR THE MASTER TO INITIATE A DATA TRANSFER. WHEN IT DOES, WE USE ITS DATA LENGTH AND PROCEED. STIMER ENQT TERMCTRL DEQT IF DEQT PRINTEXT GOTO ENDIF MOVE MOVE MOVE MOVE MOVE MOVE MOVE ENQT 1000,WAIT S1S1 STATUS,HBUN GET STATUS (HBUF,EQ,DO,DWORD) IF NO DATA HERE YET WAIT 1 SECOND '@NO DATA FROM MASTER IN 1 SECOND@' G02 SHOULD HAVE HAD DATA BY NOW BUFI,HBUF+2 BUFI+2,HBUF+2 STAT,O COUNT,O,DWORD TYPE,-1 HBUF, 0, (6, BYTES) CSs,O, (24,BYTES) S1S1 GET DATA LENGTH INTO BUFFER CLEAR STATUS CLEAR COUNTER INIT TYPE CLEAR S1S1 HEADER CLEAR CSS Figure 71 (Part 1 of 4). Secondary Processor Sample Program o CO-I88 SC34-0638 o Programming for Series/1-to-Series/1 Attachment (continued) CONT * * 0 ., '1 EQU MOVE ADD MOVE READTEXT MOVE IF CALL GOTO ENDIF IF DEQT PRINTEXT CALL GOTO ENDIF IF DEQT PRINTEXT PRINTEXT PRINTNUM PRINTEXT PRINTNUM PRINTEXT ENQT ENDIF * TYPE,O COUNT,1,PREC=D BUF,O, (6,BYTES) BUF,XLATE=NO STAT, SECOND STAT,NE,-1 S1ERR SET TYPE = READ INCREMENT COUNTER CLEAR BUFFER GET STATUS ERROR - CALL ERROR SUBROUT ERROR (BUF,NE,COUNT,DWORD) CHECK COUNT FOR SYNC '@OUT OF SYNC - COUNT FAILURE@' S1ERR ERROR (BUF+4,NE,O) CHECK FOR MESSAGE REQUEST '@MESSAGE RECEIVED FROM MASTER@' 'COUNT = ' COUNT,FORMAT=(12,O,I) , TYPE=D '@DATA LENGTH = ' BUFI,FORMAT=(6,O,I) '@' S1S1 Figure 71 (Part 2 of 4). Secondary Processor Sample Program Chapter 5. Series/l-to-Series/l Attachment Support CO-189 Series/1-to-Series/1 Attachment Support Programming for Series/1-to-Series/1 Attachment (continued) * * STOP STOP1 ** * * * ERROR ADD MOVE MOVE COUNT,1,PREC=D BUF",COUNT , DWORD BUF+4,MSW MOVE MOVE PRINTEXT MOVE IF MSW,O TYPE, 1 BUF,XLATE=NO STAT, SECOND STAT,NE,-1 CALL GO TO ENDIF GOTO EQU DEQT QUESTION EQU PROGSTOP S1ERR ERROR CONT INCREMENT COUNTER MOVE COUNT TO BUFFER MOVE MESSAGE SWITCH TO BUFFER CLEAR MESSAGE SWITCH SET TYPE = WRITE GET STATUS IF ERROR - CALL S1S1 ERROR GO TO ERROR ROUTINE CONTINUE * '@RESTART? ',YES=GO * IF THE ERROR IS AN ABORT REQUEST, TERMINATE THE EXERCISE. IF IT IS ANY OTHER ERROR, RESET THE DEVICE, AND START OVER. EQU DEQT IF PRINTEXT GOTO ENDIF ENQT TERMCTRL DEQT GOTO * (STAT,EQ,1010) '@MASTER ISSUED ABORT@' STOP S1S1 RESET SEE IF ABORT RESET DEVICE G02 Figure 71 (Part 3 of 4). Secondary Processor Sample Program o CO-190 SC34-0638 o Programming for Series/1-to-Series/1 Attachment (continued) * * * c S1S1 HBUF CSS * STAT TYPE COUNT MSW ABSW BUF DO S1S1 ERROR SUBROUTINE SUBROUT TERMCTRL DEQT ENQT PRINTEXT PRINTNUM PRINTEXT PRINTNUM PRINTEXT PRINTNUM PRINTEXT PRINTNUM PRINTEXT PRINTNUM PRINTEXT PRINTEXT PRINTNUM PRINTEXT PRINTEXT PRINTNUM PRINTEXT PRINTEXT PRINTNUM PRINTEXT DEQT RETURN IOCB DATA DATA S1ERR STATUS,HBUF,CSS DATA DATA DATA DATA DATA BUFFER DATA ENDPROG END '@BUF: ' BUF '@TYPE: ' TYPE '@COUNT: ' COUNT,FORMAT=(12,O,I),TYPE=D '@I/O ERROR ON S/1-S/1 - STATUS STAT,MODE=HEX , HEX; , STAT , DEC@' '@HEADER: ' HBUF,2,MODE=HEX '@' 'DIAGNOSTIC JUMPER WORD: ' CSS,1,MODE=HEX '@' 'CYCLE STEAL STATUS: ' CSS+2,11,MODE=HEX '@' S1S1,BUFFER=BUF 2F'O' 12F'O' F'O' F' -1 ' D'O' F'O' F'O' 4096,BYTES,INDEX=BUFI D'O' S1S1 HEADER BUFFER JUMPER + CYCLE STEAL STATUS S1S1 STATUS READ/WRITE TYPE SYNC COUNTER MESSAGE SWITCH ABORT SWITCH DWORD CONSTANT Figure 71 (Part 4 of 4). Secondary Processor Sample Program o Chapter 5. Series/l-to-Series/l Attachment Support CO-191 Series/1-to-Series/1 Attachment Support Programming for Series/1-to-Series/1 Attachment (continued) Synchronization Program (SYNC) o The synchronization program shows a way to synchronize operations between two processors. Neither processor begins communicating until some external event sets FLAG. When FLAG is set, the program responds as follows: • • • • FLAG = 0 indicates no external event. FLAG = 1 indicates write to other processor. FLAG = 2 indicates read from other processor. FLAG = 3 is the termination indicator. This program runs on both processors. SYNC * F1 F2 END A A1 * PROGRAM A ATTNLIST MOVE ENDATTN MOVE ENDATTN MOVE ENDATTN MOVE ENQT TERMCTRL DEQT IF STIMER IF (WR,F1,RD,F2,EN,END) FLAG, 1 EXTERNAL EVENT= WRITE FLAG, 2 EXTERNAL EVENT=READ FLAG, 3 EXTERNAL EVENT=STOP PGM BUFX,1024 S1S1 STATUS,HBUF,WAIT=NO SET BUFFER FOR WRITES GET THE S1S1 OBTAIN S1S1 STATUS (HBUF+2,EQ,O) 5000,WAIT (FLAG,EQ,O) IF NO ACTION YET WAIT 5 SECONDS EXTERNAL EVENT NOT OCCURRED YET rf· \ \',-) DEQT PRINTEXT '@NOTHING HAS OCCURRED YET IN 5 SECONDS@' GO TO A1 ENDIF IF (FLAG,EQ,3),GOTO,STOP EXTERNAL EVENT TERMINAT IF FLAG,EQ,1 EXTERNAL EVENT WRITE DEQT PRINTEXT '@WRITING TO OTHER CPU@' ENQT S1S1 GET S1S1 WRITE TO OTHER CPU PRINTEXT BUF,XLATE=NO DEQT MOVE FLAG,O CLEAR FLAG TO IDLE GOTO A1 CONTINUE ENDIF Figure 72 (Part 1 of 2). Synchronization Sample Program o CO-192 SC34-0638 () Programming for Series/1-to-Series/1 Attachment (continued) * STOP S1S1 BUF FLAG TEMP HBUF EXTERNAL EVENT READ IF FLAG,EQ,2 DEQT PRINTEXT '@READING FROM OTHER CPU@' S1S1 ENQT GET 81S1 READTEXT BUF,XLATE=NO READ FROM OTHER CPU DEQT CLEAR FLAG TO IDLE MOVE FLAG, 0 A1 CONTINUE GOTO ENDIF ELSE SEE IF READ OR SHIFTL HBUF,2,1,RESULT=TEMP WRITE REQUEST IT DID A WRITE IF TEMP,LT,O DEQT PRINTEXT '@READING WHAT IT SAID@' S1S1 ENQT READTEXT BUF,XLATE=NO READ WHAT IT WROTE DEQT CONTINUE GOTO A1 ELSE DEQT PRINTEXT '@WRITING WHAT IT SAID@' ENQT S1S1 WRITE WHAT IT WROTE PRINTEXT BUF,XLATE=NO DEQT CONTINUE GOTO A1 ENDIF ENDIF GOTO A1 CONTINUE PROGSTOP END THE PROGRAM IOCB S1S1,BUFFER=BUF BUFFER 1024,BYTE,INDEX=BUFX DATA BUFFER F'O' DATA EXTERNAL EVENT FLAG F'O' DATA 2F'O' DATA S1S1 HEADER ENDPROG END Figure 72 (Part 2 of 2). Synchronization Sample Program o Chapter 5. Series/l-to-Series/l Attachment Support CO-193 Series/1-to-Series/1 Attachment Support Interacting with the 8eries/1-to-8eries/1 Attachment (Using $8181 UT1) The $SISI UTI utility allows you to perform several functions on the other processor. These include remote IPL, data transfers and status operations. The utility also verifies that the attachment is installed correctly, and checks out an application program. You must always specify the identity of the other Series/l the $SISI UTI commands: o AB - Abort • DD - Define device name • IP - IPL the other processor • RE - Read data • RS - Reset device • WR - Write data • EN - End the program EC - Verify the Series/l - Series/l attachment • ST - Obtain status. You must have both attached processors actively communicating with the RE (read), WR (write), and AB (abort) commands. For example, if you issue a WR command on one processor, then you must issues a corresponding RE command on the other processor. (1«-- ' ; 1,'<11, _) ...... ~-' When you load $SISI UTI, it immediately issues a DD command to obtain the ID of the Series/l that loaded it. Invoking $S1 S1 UT1 You invoke the $SISIUTI utility with the $L operator command or option 4.8 of the session manager. $SIS1UTI must be active on two connected processors for processor-to-processor communication via the RE (read), WR (write), and AB (abort) commands. For example, if you issue a WR command on one processor, then you must issue a corresponding RE command on the other processor. Aborting an Operation (AB) The ..AJ3 command causes the other processor to abort a pending operation on the initiating processor. The AB command is sent to the Series/l specified in the most recent DD command. This command abnormally ends a data transfer operation. o CO-194 SC34-0638 o Interacting with the Series/1-to-Series/1 Attachment (Using $S1 S1 UT1) (continued) Example: AB command COMMAND(?): AB ABORT OPERATION? Y COMMAND(?): Specifying the Other Processor (DO) For every function you perform with $SlSlUTl, you must identify the other Series/l. The specified processor receives all the issued subsequent utility commands until another DD is issued. The Series/l name is the name specified on the TERMINAL configuration statement at system generation. Example: DD command COMMAND(?): DD 5151 DEVICE NAME: 515100 COMMAND(?): c Verifying the Series/1-to-Series/1 Attachment (Ee) The EC command verifies that the attachment is installed correctly. It results in a continuous exchange of l024-byte records between the attached processors. To terminate EC, press the attention key and enter EC. Example: EC command COMMAND(?): EC ECHO EXERCISE ATTN.." EC~ TO STOP ECHO TEST ATTEMPTtNG TO SYNCH UP lK DATA TRANSMITTED lK DATA RECEIVED DATA CHECKS OUT! (Attention) > EC COMMAND(?): o Chapter 5. Series/l-to-Series/l Attachment Support CO-195 Series/1-to-Series/1 Attachment Support Interacting with the 5eries/1-to-5eries/1 Attachment (Using $5151 UT1) (continued) (J "'\. ' IPL the Other Processor UP) You can issue the IP command only if your Series/I is the primary. It issues an IPL (initial program load) command to the secondary processor. You must supply the member name and volume that contains the nucleus to be transferred to the secondary. The nucleus being transferred must begin with the characters $EDXNUC. The IPL bootstrap program, IPLS I SI, must be located in the IPL volume; you are prompted to verify that the volume name specified is correct. You are also asked if the secondary has a disk or diskette device and for the address of that device. The specified disk or diskette becomes the default direct access device for disk I/O operations on the processor being initialized. The bootstrap program is sent to the secondary and it reads the specified nucleus, 1024 bytes at a time, across the attachment. Control is passed to the nucleus upon completion of the transfer. Example: IP command COMMAND (?): IP ENTER NUCLEUS DSN: $EDXNUC ENTER NULCEUS VOLUME: EDX002 IS THERE A DEFAULT DISK DEVICE FOR THE NUCLEUS? Y SUPPLY DISK/DISKETTE DEVICE ADDRESS(HEX): 48 IPL PROGRAM NAME: IPLS1Sl ON VOLUME: EDX002 OK? Y READY FOR lPL? Y Reading Data from the Other Processor (RE) The RE command issues an ENQT instruction for the terminal name specified by the most recent DD command. $SISI UTI then issues a READ TEXT instruction for that terminal to read data from the other processor. If $SISIUTI is active on the other processor, a WR command must be issued to complete an RE command. Example: RE command COMMAND ( ? ) : RE MESSAGE RECEIVED! I --'•.j T_H._I_S__ IS_'_(?) TE_S._T DA_T_A_R_E_C_E_IV_E_D_________________________________________ _COMMAND : __ _ o CO-196 SC34-0638 o Interacting with the Series/1-to-Series/1 Attachment (Using $S1S1UT1) (continued) Resetting Device (RS) The RS command resets the to the Series/l attachment specified by the most recent DD command. This command clears any pending interrupt or busy condition. Example: RS command COMMAND(?}: RS RESET ATTACHMENT? Y COMMAND(?}: Obtaining Status of an Operation (ST) The ST command obtains status information on an operation. The status returned by this command is the same as the information returned when a TERMCTRL STATUS instruction is issued. Example: ST command o COMMAND(?}: ST OBTAIN CYCLE STEAL STATUS ALSO? Y WAIT FOR HEADER? N HEADER WORDS: 1100 0400 READ(READTEXT} ISSUED BY OTHER CPU NO. BYTES = 0400 DIAGNOSTIC JUMPER WORD: 02E6 CYCLE STEAL STATUS: (11 words of status) COMMAND(?): o Chapter 5. Series/l-to-Series/l Attachment Support CO-197 Series/1-to-Series/1 Attachment Support Interacting with the Series/1-to-Series/1 Attachment (Using $S1S1UT1) (continued) o Writing Data to the Other Processor (WR) The WR command issues an ENQT instruction to the Series/l specified by the most recent DD command. A PRINTEXT instruction is then issued for that terminal to write data to the other processor. If $SISI UTI is active on the other processor, an RE command must be issued to complete a WR command. Example: WR command COMMAND (? ) : WR ENTER TEXT: TEST DATA TO WRITE MESSAGE SENT! COMMAND(?): Ending the Utility (EN) The EN command ends the $SIS1 UTI utility. Example: EN command COMMAND ( 1 ) : EN $SlS1UTl ENDED AT 00:00:00 o CO-198 SC34-0638 o Chapter 6. General Purpose Interface Bus - IEEE Standard 488-1975 The General Purpose Interface Bus (GPIB) Adapter, when connected to the Series/I, allows it to communicate with up to 14 peripheral devices. The devices that GPIB can connect to the Series/l include printers, plotters, graphics display units, and programmable laboratory equipment such as digital voltmeters, frequency analyzers, and signal generators. The connection between the Series/l and the GPIB devices is much like a multipoint connection. The Series/l acts as the control station, and the GPIB devices as its tributaries. You must write application programs to control communications between the Series/l and the GPIB devices. Your program must perform polling and selection, and initiate all data transfer operations. Planning for the G PI B Application System Generation for GPIB During system generation for the Series/I, you must include a TERMINAL statement in the configuration module ($EDXDEF) for each GPIB adapter. Also, you must include the GPIB device handler (IOSGPIB) in the supervisor link control data set ($LNKCNTL). Refer to the Installation and System Generation Guide for additional information on system generation. o Chapter 6. General Purpose Interface Bus - IEEE Standard 488-1975 CO-199 General Purpose Interface Bus - IEEE Standard 488-1975 Planning for the GPIB Application (continued) You may want to connect GPIB to a particular partition so that SRQ interrupts adapter can be properly handled. The partition to which the GPIB adapter is initially connected is defined by the PART parameter of the TERMINAL statement. To modify the size of the system buffer generated for the GPIB adapter, use the LINSIZE parameter. o The following TERMINAL statement connects a GPIB adapter named GPIB to partition 2 and defines the system buffer to be 200 bytes in length. GPIB TERMINAL DEVICE=GPIB,ADDRESS=32,LINSIZE=200,PART=2 Relationship between Series/1 and GPIB Devices The Series/ 1 always acts as the control station and the GPIB devices act as its tributary stations. A GPIB device can function in two roles: As a talker, a device is sending data to the Series/ 1 or to another device. • As a listener, a device is receiving data from the Series/ 1 or another device. The Series/l controls communications so that only one device is talking at a time. However, any number of devices can be listening at the same time. The devices can function in either role. A device can act as talker during one data transfer, and as listener during another transfer. The Series/ 1 tells the devices which role to assume during each transfer operation. The Series/ 1 must make the assignments of talker and listener(s) before a data transfer operation occurs. For example, to send data to a device, the Series/l designates itself as the talker and the receiving device as the listener. The Series/l then sends the data. To read the response from the device, the Series/l designates the device as talker, and itself as listener. The Series/ 1 then reads the data. Assigning Device Addresses Each device on a GPIB bus has two addresses: one identifies the device as a listener and the other identifies it as a talker. Each listen address has a corresponding talk address, and vice versa. For example, if a device listens at address C'3', it talks at address C'S'. The chart below shows the sets of listen and talk addresses; they are ASCII characters. Although GPIB device addresses are usually expressed as ASCII characters, they can also be coded in hexadecimal. The Series/llisten and talk addresses are C'5' and C'U' respectively; they cannot be changed. o CO-200 SC34-0638 o Planning for the GPIB Application (continued) Listen Address (space) ! &sqd. # $ Talk Address @ A B C D % & E F G H I * J K + L M N / P 1 Q 2 3 4 C\ o 0 5 6 7 8 9 / < > R S T U V W X y Z [ \ ] (caret) Figure 73. Listen and Talk Addresses for GPm Devices Initializing and Configuring the Bus You must initialize and configure the bus before the Series/land the GPIB device can communicate. These functions are performed by the TERMCTRL instruction, as described in the Programming section. The initialization consists of these operations: 1. Reset the adapter. 2. Clear the interface between Series/l and GPIB; this makes the entire bus inactive. 3. Perform remote enable of GPIB; this enables all the devices attached to the bus. Code these operations at the beginning of your application program. Unless an error oCGurs, you do not have to repeat the initialization. o Chapter 6. General Purpose Interface Bus - IEEE Standard 488-1975 CO-201 General Purpose Interface Bus - IEEE Standard 488-1975 Planning for the GPIB Application (continued) Configuring the bus consists of assigning the roles of talker and listener(s) for the tasks in a program. It also allows the Series/Ito send data to listening devices. Interrupt Handling A service request (SRQ) is a device-generated signal that informs the controller (Series/I) that the device needs service. A program can be notified of the occurrence of an SRQ by coding a $PF255 reference in an attention list (ATTNLIST), with SCOPE=GLOBAL specified. Since the attention list receives control enqueued to the terminal, the main task (which is enqueued to GPIB) .1Jlust issue a DEQT to GPIB. The following example shows an event control block (ECB) being posted when an SRQ occurs. ATTNLIST ($PF255,GOTSRQ) ,SCOPE=GLOBAL * ATTENTION LIST * WHEN AN SRQ IS * GOTSRQ EQU TASK THAT RECEIVES CONTROL RECEIVED. POST ENDATTN * * * * * SRQECB POST SRQ OCCURRENCE END ATTENTION PROCESSING MAIN TASK AT THIS POINT, INSTRUCTIONS HAVE BEEN ISSUED THAT CAUSE A GPIB DEVICE TO ISSUE AN SRQ. DEQT WAIT * SRQECB ECB SRQECB DISCONNECT FROM GPIB PROGRAM WAITS FOR EVENT INDICATING SRQ OCCURRENCE SRQ EVENT CONTROL BLOCK Note: A program that uses an attention list to receive SRQ interrupts in this manner must run in the partition to which the GPIB terminal is connected. This is initially defined at system generation time; but can be changed using the change partition (CP) command of $GPIBUTl. A program can also handle an SRQ interrupt via the WAIT KEY instruction. The program remains in a wait state until an SRQ interrupt is received by the Series/I. However, as for all WAIT KEY instructions, an interrupt that occurs before the WAIT KEY is executed will be lost. An SRQ does not identify the interrupting device. To determine this, the application program must poll all devices connected to the bus; see "Polling the Devices" on page CO-209. o CO-202 SC34-0638 o Programming for the GPIB Application You must write programs that allow communication between Series/land the GPIB devices. Your program must perform the following tasks: • Initialize and configure the bus • Control data transfer operations • Poll and select devices • Send data to devices • Receive data from devices • Perform control functions on devices. Your programs must consist of Event Driven Language instructions. The instructions that apply specifically to the GPIB application are discussed in the next section. Event Driven Language Instruction Set Your program must contain the following EDL instructions, which perform the task of communicating between the Series/land the GPIB devices. o Instruction DEQT Function Releases the device that Series /1 is communicating with ENQT Gives Series/1 exclusive right to communicate with a device IOCB Identifies the particular GPIB adapter that connects the device Series/1 wants to communicate with PRINTEXT Sends data to a device READTEXT Receives data from a device TERMCTRL Performs control functions on a device For description and syntax of the instructions refer to the Language Reference. o Chapter 6. General Purpose Interface Bus - IEEE Standard 488-1975 CO-203 General Purpose Interface Bus - IEEE Standard 488-1975 Programming for the GPIB Application (continued) Programming Considerations o Certain requirements and restrictions apply to programming for the GPIB application. Performing Control Function (Using TERMCTRL) Use only the TERMCTRL operands specific to GPIB. These are described in the Language Reference. Forcing Output of Data You must "force" the output of data to a GPIB device. If the Series/ I issues a PRINTEXT instruction to send data to a device, the program must force the output by one of several methods: Include the new line character (@) in the output. Do not use this method when coding MODE=LINE or XLATE=NO parameters. • Code the XLATE=NO parameter. • Specify SKIP = I on a PRINT EXT instruction. • Issue a TERMCTRL DISPLAY instruction. Specifying Translation of Data If you want to send or receive hexadecimal data (when issuing the PRINTEXT or READTEXT instructions) you must suppress translation of the data. The Series/I uses EBCDIC s the GPIB Adaptor uses ASCII, and the GPIB devices use the code specific to each device type. To suppress translation of data, code the XLATE=NO parameter for PRINT EXT or READTEXT. If you want to send or receive data in EBCDIC for Series/I, ASCII for GPIB, or the code appropriate to a device, code XLATE= YES. Use of XLATE=NO with PRINTEXT forces output of data. Specifying a User Buffer If an application is to transfer more data than will fit in the system buffer (defined at system generation), the IOCB through which the application is enqueued must specify a user buffer. A user buffer is necessary if you want to specify the exact number of characters for a read. In the following example) the IOCB (GPIBIOCB) specifies a BUFFER operand; the buffer length is 500 bytes. If a buffer is used, you are responsible for setting the buffer iength (GPIBLEN in this example) to the number of bytes to be written via PRINTEXT. The buffer length is set to the number of bytes actually read by a READTEXT instruction. The example below shows how the buffer can be initialized for a PRINTEXT of IOO bytes. C) ,,I CO-204 SC34-0638 o Programming for the GPIB Application (continued) ENQT GPIBIOCB CONNECT TO GPIB DEQT GPIBIOCB IOCB GPIBBUFF BUFFER MOVE DISCONNECT FROM GPIB GPIB,BUFFER=GPIBUFF 500,BYTES,INDEX=GPIBLEN GPIB TERMINAL NAME BUFFER FOR GPIB USE GPIBLEN,100 If a user buffer is not desired, do not include the BUFFER parameter in the IOCB statement. Initializing and Configuring the Bus The TERMCTRL instruction provides operations that are used to initialize the bus: adapter reset (RSET), interface clear (IFC), and remote enable (REN). Normally these three operations are performed when a GPIB program starts, and need not be executed again unless an error occurs. When used at the start of a GPIB program, these control operations should be executed in the order discussed. The RSET operation resets the adapter. TERMCTRL GPIB,RSET RESET ADAPTER The IFC operation clears the GPIB interface, thus causing the entire bus to be made inactive. TERMCTRL GPIB,IFC INTERFACE CLEAR The remote enable (REN) operation enables all the devices on the bus. Not all devices need to be enabled in this manner; some are initialized to an enabled state. Check the manufacturer's device description to see whether a remote enable is needed. o Chapter 6. General Purpose Interface Bus - IEEE Standard 488-1975 CO-205 General Purpose Interface Bus - IEEE Standard 488-1975 Programming for the GPIB Application (co. tinued) TERMCTRL GPIB,REN PRINTEXT LISTADDR TERMCTRL DISPLAY LISTADDR TEXT o REMOTE ENABLE SEND LISTENER ADDRESS FORCE OUTPUT LISTEN ADDRESS FOR ONE DEVICE '% ' Configuring the Bus The configure bus (CON) operation of the TERMCTRL instruction does two things: it assigns the roles of talker and listener, and it can be used to write data to listeners. In the following examples, the universal unlisten command (a question mark) is transmitted first, followed by a talker address, and then by the list of listener addresses. The unlisten command is a special message that resets all devices that were listeners to a nonlistening state. Series/1 talks, and some device(s) TERMCTRL PRINTEXT PRINTEXT PRINTEXT PRINTEXT TERMCTRL GPIB,CON I?' 'u' LISTADDR '''.' DISPLAY LISTADDR TEXT '%' listens: CONFIGURE BUS UNIVERSAL UNLISTEN COMMAND SERIES/1 TALK ADDRESS DEVICE LISTENER ADDRESS(ES) DATA BLOCK TERMINATOR FORCE OUTPUT LISTEN ADDRESS Series/1 sends data via CON: TERMCTRL PRINTEXT PRINTEXT PRINTEXT PRINTEXT PRINTEXT TERMCTRL GPIB,CON '?U' LISTADDR '" , , DATA , " :' \ DISPLAY LISTADDR TEXT '%' CONFIGURE BUS (AS ABOVE) DEVICE LISTENER ADDRESS (ES) DATA SEPARATOR SEND DEVICE DATA DATA BLOCK TERMINATOR FORCE OUTPUT LISTEN ADDRESS o CO-206 SC34-0638 o Programming for the GPIB Application (continued) Some device talks, and Series/1 listens: TERMCTRL PRINTEXT PRINTEXT PRINTEXT PRINTEXT TERMCTRL GPIB,CON I?I TALKADDR 151 I ": I DISPLAY TALKADDR TEXT lEI CONFIGURE BUS UNIVERSAL UNLISTEN COMMAND DEVICE TALK ADDRESS SERIES/1 LISTENER ADDRESS DATA BLOCK TERMINATOR FORCE OUTPUT TALK ADDRESS One device talks, and other device(s) listens: TERMCTRL PRINTEXT PRINTEXT PRINTEXT PRINTEXT TERMCTRL c GPIB,CON I? I TALKADDR LISTADDR I ": I DISPLAY LISTADDR TEXT 1%1 TALKADDR TEXT lEI CONFIGURE BUS UNIVERSAL UNLISTEN COMMAND DEVICE TALK ADDRESS OTHER LISTENER ADDRESS (ES) DATA BLOCK TERMINATOR FORCE OUTPUT LISTEN ADDRESS TALK ADDRESS Enqueuing and Oequeuing GPIB The ENQT instruction connects Series/1 to a GPIB adapter and excludes other sources from accessing the adapter at the same time. You must specify the GPIB adapter that the Series/1 wants to communicate with. To do this, refer to the label of the IOCB instruction that identifies the GPIB adapter. The DEQT instruction releases the GPIB adapter previously enqueued. If your program is connected to a GPIB adapter and issues a a LOAD instruction, the task issuing the LOAD will be disconnected from the GPIB adapter, and the task being loaded will be connected to the GPIB adapter. If this is not desirable, the program issuing the LOAD must first issue a DEQT, followed by the LOAD, and then issue an ENQT to reconnect to the GPIB adapter. In the following example, the IOCB (GPIBIOCB) is initially enqueued. Next, the program issues a DEQT to disconnect itself from the GPIB adapter. The program then issues a LOAD instruction for the program NEWPROG, which now has the GPIB adapter connected to it. After NEWPROG completes, the program reconnects to the GPIB adapter by issuing another ENQT. o Chapter 6. General Purpose Interface Bus - IEEE Standard 488-1975 CO-207 General Purpose Interface Bus - IEEE Standard 488-1975 o Programming for the GPIB Application (continued) ENQT GPIBIOCB CONNECT TO GPIB DEQT LOAD ENQT NEWPROG GPIBIOCB DISCONNECT FROM GPIB LOAD NEW PROGRAM RECONNECT TO GPIB GPIBIOCB IOCB GPIB Series/1 Sending Data to a Device The Series/1 acts as talker and transmits data to the listener(s) with a PRINTEXT instruction. The data actually goes to the GPIB adapter which in turn directs it to the designated device(s). The following example shows what to code for Series/1 to send data to a device. Example of writing character data: TERMCTRL GPIB,WRIT PRINTEXT DATA TERMCTRL DISPLAY DATA TEXT 'IN; , WRITE TO GPIB SEND DATA FORCE OUTPUT DEVICE DEPENDENT DATA Example of writing hex data: (note the simulated TEXT statement) TERMCTRL GPIB,WRIT PRINTEXT HEXDATA,XLATE=NO TERMCTRL DISPLAY WRITE TO GPIB SEND HEX DATA FORCE OUTPUT \ DATA HEXDATA DATA X'OiOi X'03' I TEXT LENGTH/COUNT DEVICE DEPENDENT DATA Series/1 Receiving Data from a Device Series/1 receives data transfers from GPIB devices with a READTEXT instruction. This example shows how the Series/1 receives data being sent by a device. It is assumed that the device appends an end-of-string character to the data to be sent. Since the device can send o CO-208 SC34-0638 o Programming for the GPIB Application (continued) a variable number of characters, the SE option is used in the READTEXT instruction to suppress incorrect length record exceptions. TERMCTRL GPIB,READ, (SE,EOS) ,X'OD' READTEXT DATA READ GPIB READ INPUT DATA Sending Data Between Devices One device can send data to one or more other devices while the Series/1 merely monitors the data transfer. This is done with the READTEXT instruction. The following example shows how Series/1 allows the data transfer between the devices. TERMCTRL GPIB,MON,(SE,EOS),X'OD' READTEXT DATA READ MONITOR DUMMY READ Polling the Devices Your program can perform either a serial or parallel polling operation to determine the source of a device interrupt. The TERMCTRL instruction performs polling. Serial Polling Code these TERMCTRL instructions to perform serial polling (polling devices in sequence): • TERMCTRL SPE (enable serial poll) • TERMCTRL SPL (read serial poll) • TERMCTRL SPD (disable serial poll). The SPE command polls each device whose talker address has been specified. The SPL command reads the poll status of each device. The poll status returned for each device consists of two bytes: the talker address of the polled device (first byte) and the device status (second byte). The status byte is device-dependent, and is usually expressed in hex. If it is, use XLATE=NO on the appropriate READTEXT. The SPD command disables the serial poll status reporting ability of the devices previously enabled through an SPE command. TERMCTRL PRINTEXT TERMCTRL TERMCTRL READTEXT TERMCTRL GPIB,SPE TALKADDR DISPLAY GPIB,SPL STATUS,XLATE=NO GPIB,SPD SERIAL POLL ENABLE TALK ADDRESS OF DEVICE FORCE OUTPUT READ SERIAL POLL GET SERIAL POLL STATUS SERIAL POLL DISABLE "~I '-I' Chapter 6. General Purpose Interface Bus - IEEE Standard 488-1975 CO-209 General Purpose Interface Bus - IEEE Standard 488-1975 Programming for the GPIB Application (continued) o Parallel Polling: A parallel poll polls all enabled devices in parallel, with the poll status encoded as a single byte. Device response to parallel polling is highly device-dependent; many devices do not even acknowledge parallel polling. Code the following TERMCTRL instructions to perform parallel polling: TERMCTRL PPE (enable parallel poll) TERMCTRL WPPL (write parallel poll command) TERMCTRL RPPL (read parallel poll status) • TERMCTRL PPD (disable parallel poll) TERMCTRL PPU (unconfigure parallel poll). The PPE command enables the devices to respond to a parallel poll. You must supply two bytes of information for each device to be polled. The first byte specifies the listener address. The first four bits of the second byte have, by definition, the value of six. The fifth bit is the line level (one or zero) which is the active level for the addressed device. The final three bits indicate which GPIB data line is used to request service. Bit values zero through seven are used to specify GPIB data lines one through eight. Note: Some devices that respond to parallel polling may respond to a poll only in predefined ways. Consult your device manual. Since a parallel poll word is most conveniently expressed in numeric form, PRINTEXT with XLATE=NO should be used. A TEXT statement must be simulated so that hex data can be used. In the following example, the TEXT statement is simulated by the first DATA statement containing the value X'0202'. This value corresponds to the length and count bytes of a TEXT statement followed by another DATA statement that contains the two bytes of polling information. In the example, a single device at listener address X'2S' is enabled to respond at line level one on GPIB data line one. TERMCTRL GPIB,PPE PRINTEXT PPEMSG,XLATE=NO PPEMSG DATA DATA X'0202' X'2568' PARALLEL POLL ENABLE SEND DATA TEXT PARAMETERS The actual polling of the devices is accomplished by a write parallel poll command (WPPL). The resulting poll status byte is stored in the adapter until a read parallel poll status (RPPL) is performed. The RPPL operation moves the status byte into the byte specified on the TERMCTRL GPIB,RPPL statement. o CO-210 SC34-0638 o Programming for the GPIB Application (continued) TERMCTRL GPIB,WPPL TERMCTRL GPIB,RPPL"RPPLDATA RPPLDATA DATA X'OO' \ WRITE PARALLEL POLL STATUS READ PARALLEL POLL STATUS PARALLEL POLL STATUS BYTE One device or all devices configured to respond to parallel polling can be unconfigured using the parallel poll disable (PPD) or parallel poll unconfigure (PPU) command. TERMCTRL GPIB,PPD PRINTEXT LISTADDR TERMCTRL DISPLAY PARALLEL POLL DISABLE LISTENER ADDRESS (ES) FORCE OUTPUT or TERMCTRL GPIB,PPU PARALLEL POLL UNCONFIGURE Assigning Device Mode of Operation 0' " Local Mode Operation: Some GPIB devices can be operated by an attached panel as well as via GPIB bus commands; this is called local mode operation. A device with this capability can be enabled to operate in local mode by the go to local mode TERMCTRL GTL command. Similarly, local mode can be disabled by the local lock out TERMCTRL LLO command. Both of these commands must specify the listener addresses of the devices to be operated in this mode. TERMCTRL GPIB,GTL PRINTEXT LISTADDR TERMCTRL DISPLAY GO TO LOCAL LISTENER ADDRESS (ES) FORCE OUTPUT TERMCTRL GPIB,LLO PRINTEXT LISTADDR TERMCTRL DISPLAY LOCAL LOCK OUT LISTENER ADDRESS(ES) FORCE OUTPUT Device Group Operation: Some devices can have predefined operations which are executed by a trigger command. These operations can be initiated by a group execute trigger TERMCTRL GET command which must specify a list of listener addresses for the devices. o Chapter 6. General Purpose Interface Bus - IEEE Standard 488-1975 CO-211 General Purpose Interface Bus - IEEE Standard 488-1975 Programming for the GPIB Application (continued) TERMCTRL GPIB,GET PRINTEXT LISTADDR TERMCTRL DISPLAY o GROUP EXECUTE TRIGGER LIS~ENER ADDRESS (ES) FORCE OUTPUT Coding GPIB Functions These coding examples demonstrate the steps necessary to communicate with a device connected to the GPIB bus. In this sample case, the GPIB device is a plotter. Therefore, some operations unique to the plotter are covered. Following this section is a sample program that contains the coding segments shown below. In the coding segments, the following plotter commands are used: IN PAx,y OC 1M Initialize plotter Move pen to absolute position at x,y coordinates Output current pen position Initialize masks Connecting to the GPIB Adapter The program must first connect to the GPIB adapter with an ENQT instruction. ENQT GPIBIOCB IOCB GPIBIOCB CONNECT TO GPIB GPIB IOCB FOR GPIB ADAPTER Initializing the Adapter The program initializes the adapter and bus by means of the RSET and IFC operations. TERMCTRL TERMCTRL GPIB,RSET GPIB,IFC RESET ADAPTER CLEAR BUS Enabling the GPIB Device The plotter is remotely enabled with a REN command followed by its listener address. TERMCTRL PRINTEXT GPIB,REN '%@' REMOTE ENABLE THE PLOTTER o CO-212 SC34-0638 o Programming for the GPIB Application (continued) Clearing All Devices All devices are cleared by a device clear command. TERMCTRL GPIB,DCL CLEAR ALL DEVICES Preparing to Send Data At this point, the bus is configured so that the Series/1 can send data to the plotter, that is, the Series/1 is enabled to talk, and the plotter is enabled to listen. The coding for this consists of the universal unlisten command (question mark), followed by the talker and listener addresses, the data block terminator, and a new line character (@) to force output. SENDCON c TERMCTRL PRINTEXT GPIB,CON SENDCON TEXT '?U%":@' CONFIGURE BUS S/1 TALKS, PLOTTER LISTENS Writing Data to the Device The Series/1 writes data to the plotter by issuing a GPIB write command. Then a series of plotter commands are sent. PRINTNUM is used to convert numeric data to character form. F5000 CURRPOS TERMCTRL PRINT EXT PRINT EXT PRINTNUM PRINT EXT PRINTNUM PRINT EXT PRINT EXT TERMCTRL GPIB,WRIT,TO 'IN; , 'PA' F5000 , , DATA TEXT F'5000' LENGTH=14 , ,., , F5000 'OC; , DISPLAY WRITE, TIMER OVERRIDE INITIALIZE PLOTTER MOVE PEN ABSOLUTE X=5000 SEPARATOR Y=5000 TERMINATOR OUTPUT CURRENT PEN POSITION FORCE OUTPUT Preparing to Receive Data Since the Series/1 requested data from the plotter, it must reconfigure the bus so that the plotter talks and the Series/1 listens. o Chapter 6. General Purpose Interface Bus - IEEE Standard 488-1975 CO-213 General Purpose Interface Bus - IEEE Standard 488-1975 Programming for the GPIB Application (continued) RECVCON TERMCTRL PRINTEXT GPIB,CON RECVCON TEXT '?E5":@' o CONFIGURE BUS PLOTTER TALKS, S/1 LISTENS Receiving Data From the GPIB Device The actual read is performed by a GPIB READ operation. Since a variable number of characters can be sent, incorrect length record (ILR) exceptions are suppressed with the SE option. The end of data is indicated by an end-of-string (EOS) character. At this point, the input data can be tested or displayed. TERMCTRL -READTEXT GPIB,READ,(SE,EOS,TO),X'OD' CURRPOS READ CURRENT POSITION Preparing Device to Issue Service Request (SRQ) Interrupts To show the use of service request (SRQ) interrupts, the plotter will issue an SRQ upon receipt of an invalid plotter command. First, the bus must be configured again. (tc '\ 1,\___ ) ENQT TERMCTRL PRINTEXT GPIBIOCB GPIB,CON SENDCON CONNECT TO GPIB CONFIGURE THE BUS S/1 TALKS, PLOTTER LISTENS Then plotter commands can be transmitted which initialize the plotter to issue the SRQ when an error occurs, and to cause an error. TERMCTRL PRINTEXT PRINTEXT PRINTEXT PRINTEXT DEQT GPIB,WRIT,TO 'IN; , 'IM223,32,O;' 'XX; , SKIP=1 WRITE, TIMER OVERRIDE INITIALIZE PLOTTER TO SEND SRQ UPON ERROR SEND INVALID COMMAND FORCE OUTPUT DISCONNECT FROM GPIB Receiving Device's SRQ Interrupt At this point the plotter issues an SRQ interrupt. The following code receives the interrupt and posts the event. The preceding DEQT was necessary, since the attention list task would wait until the GPIB adapter was dequeued. Note that the ECB is initialized to the "event not occurred" condition. (This code appears elsewhere in the actual program sequence.) o CO-214 SC34-0638 o Programming for the GPIB Application (continued) POSTSRQ SRQECB ATTNLIST ($PF255,POSTSRQ),SCOPE=GLOBAL EQU POST ENDATTN SRQECB SPACE ECB SPACE o * POST EVENT The program waits for the SRQ event to occur, and then continues operation. WAIT RESET SRQECB SRQECB WAIT FOR SRQ RESET ECB Retrieving Device Status To retrieve the plotter status, the program serially polls the plotter with the serial poll enable (SPE) and read serial poll (SPL) commands. The talker address for the plotter must be specified with the SPE. The SPL is accompanied by a READTEXT with XLATE=NO, because the plotter status is most easily handled in numeric form. Finally, a serial poll disable is issued to prevent the plotter from talking with status information. STATUS ENQT TERMCTRL PRINTEXT TERMCTRL READTEXT TERMCTRL GPIBIOCB GPIB,SPE TEXT LENGTH=2 'E@' GPIB,SPL STATUS,XLATE=NO GPIB,SPD CONNECT TO GPIB SERIAL POLL ENABLE PLOTTER TALKER ADDRESS READ SERIAL POLL READ STATUS SERIAL POLL DISABLE o Chapter 6. General Purpose Interface Bus - IEEE Standard 488-1975 CO-215 General Purpose Interface Bus - IEEE Standard 488-1975 Programming for the GPIB Application (continued) GPIB Sample Program Figure 74 shows the preceding coding segments as a complete sample program. An error testing routine is called after each 110 operation. GPIBEG PROGRAM START * * EQU * START ENQT TERMCTRL CALL TERMCTRL CALL TERMCTRL PRINTEXT CALL TERMCTRL CALL GPIBIOCB GPIB,RSET ERRTEST GPIB,IFC ERRTEST GPIB,REN '%@ , ERRTEST GPIB,DCL ERRTEST ** * CONFIGURE BUS SO THAT S/1 TALKS AND THE PLOTTER LISTENS. ** * INITIALIZE THE PLOTTER. ** * MOVE THE PEN TO (5000,5000) . TERMCTRL PRINTEXT CALL TERMCTRL PRINTEXT PRINTEXT PRINTNUM PRINTEXT PRINTNUM PRINTEXT GPIB,CON SENDCON ERRTEST SC34-0638 CONFIGURE BUS S/1 TALKS, PLOTTER LISTENS CHECK FOR ERRORS GPIB,WRIT,TO WRITE, TIMER OVERRIDE 'IN; , INITIALIZE PLOTTER 'PA' F5000 , ,, F5000 '., , Figure 74 (Part 1 of 4). GPIB Sample Program CO-216 CONNECT TO GPIB RESET ADAPTER CHECK FOR ERRORS CLEAR BUS CHECK FOR ERRORS REMOTE ENABLE THE PLOTTER CHECK FOR ERRORS CLEAR ALL DEVICES CHECK FOR ERRORS MOVE PEN ABSOLUTE X=5000 SEPARATOR Y=5000 TERMINATOR o o Programming for the GPIB Application (continued) ** * ** * ** * * * ** * ** * COMMAND THE PLOTTER TO SEND ITS CURRENT POSITION. PRINT EXT TERMCTRL CALL 10C; I DISPLAY ERRTEST OUTPUT CURRENT POSITION FORCE OUTPUT CHECK FOR ERRORS CONFIGURE THE BUS SO THE PLOTTER TALKS, AND S/1 LISTENS. TERMCTRL PRINTEXT CALL GPIB,CON RECVCON ERRTEST CONFIGURE BUS PLOTTER TALKS, S/1 LISTENS CHECK FOR ERRORS READ THE CURRENT POSITION OF THE PLOTTER. (SPECIFY SUPPRESS EXCEPTION, TIMER OVERRIDE, END OF STRING CHAR = X'OD ' TERMCTRL READTEXT CALL GPIB,READ, (SE,EOS,TO) ,X'OD' CURRPOS READ CURRENT POSITION CHECK FOR ERRORS ERRTEST DISPLAY CURRENT POSITION OF PLOTTER. DEQT PRINTEXT PRINTEXT PRINTEXT EJECT ENQT DISCONNECT FROM GPIB '@CURRENT PLOTTER POSITION = I CURRPOS DISPLAY CURRENT POSITION SKIP=1 GPIBIOCB CONNECT TO GPIB CONFIGURE THE BUS SO THAT S/1 TALKS AND PLOTTER LISTENS. TERMCTRL PRINTEXT CALL GPIB,CON SENDCON ERRTEST CONFIGURE THE BUS S/1 TALKS, PLOTTER LISTENS CHECK FOR ERRORS Figure 74 (Part 2 of 4). GPIB Sample Program o Chapter 6. General Purpose Interface Bus - IEEE Standard 488-1975 CO-217 General Purpose Interface Bus - IEEE Standard 488-1975 Programming for the GPIB Application (continued) ** * INITIALIZE THE PLOTTER TO SEND AN SRQ UPON AN ERROR. ** * CAUSE A PLOTTER ERROR. * ** * * ** * * TERMCTRL GPIB,WRIT,TO PRINTEXT- , IN; , PRINTEXT 'IM223,32,O;' PRINTEXT PRINTEXT CALL 'XX; , SKIP=1 ERRTEST o WRITE, TIMER OVERRIDE INITIALIZE PLOTTER TO SEND SRQ UPON ERROR SEND INVALID COMMAND FORCE OUTPUT CHECK FOR ERRORS DISCONNECT FROM GPIB DEQT WAIT FOR THE SRQ, AND POLL THE PLOTTER TO GET ITS STATUS. WAIT RESET ENQT TERMCTRL PRINTEXT CALL TERMCTRL READTEXT CALL TERMCTRL CALL SRQECB SRQECB GPIBIOCB GPIB,SPE 'E@' ERRTEST GPIB,SPL STATUS,XLATE=NO ERRTEST GPIB,SPD ERRTEST WAIT FOR SRQ RESET EVENT CONNECT TO GPIB SERIAL POLL ENABLE PLOTTER TALKER ADDRESS CHECK FOR ERRORS READ SERIAL POLL READ STATUS CHECK FOR ERRORS SERIAL POLL DISABLE CHECK FOR ERRORS DEQT GPIBIOCB DISCONNECT FROM GPIB If) (' ',,"- DISPLAY PLOTTER STATUS. PRINTEXT PRINTNUM PRINTEXT '@PLOTTER STATUS STATUS,MODE=HEX SKIP=1 = I DISPLAY STATUS PROGSTOP Figure 74 (Part 3 of 4). GPIB Sample Program o CO-218 SC34-0638 o Programming for the GPIB Application (continued) ** THIS ATTENTION LIST TASK RECEIVES CONTROL WHEN * AN SRQ INTERRUPT IS POSTED. * ATTNLIST ($PF255,POSTSRQ),SCOPE=GLOBAL * POSTSRQ EQU *SRQECB POST POST EVENT ENDATTN ** SUBROUTINE TO CHECK FOR AND DISPLAY GPIB TERMINAL ERRORS. * * * * TASKRC 0 GPIBIOCB SRQECB F5000 CURRPOS STATUS SUBROUT MOVE GET TASK RETURN CODE TASKRC,GPIBEG (TASKRC,NE,-1) ERROR? IF DISCONNECT FROM GPIB DEQT PRINTEXT '@GPIB TERMINAL I/O ERROR =' PRINTNUM TASKRC,MODE=HEX PRINTEXT SKIP=1 PROGSTOP ENDIF RETURN DATA IOCB ECB DATA TEXT TEXT ** CONFIGURATION * SENDCON TEXT RECVCON * ERRTEST TEXT F'O' GPIB 0 F'5000' LENGTH=14 LENGTH=2 IOCB FOR GPIB ADAPTER SRQ EVENT INFORMATION. '?U%":@' '?E5":@' S/1 TALKS, PLOTTER LISTENS PLOTTER TALKS, S/1 LISTENS ENDPROG END Figure 74 (Part 4 of 4). GPIB Sample Program o Chapter 6. General Purpose Interface Bus - IEEE Standard 488-1975 CO-219 General Purpose Interface Bus - IEEE Standard 488-1975 Interacting with the GPIB Application (Using $GPIBUT1) o The $GPIBUTI utility enables you to interactively control and transfer data to and from GPIB devices. This utility can also be used as a diagnostic tool to check out the application program interface and the attached devices. The $GPIBUTI commands are listed below. To obtain this list at your terminal, enter a question mark in response to the prompting message, COMMAND(?): COMMAND ( ? ) : CH - DEFINE END CHARACTER CP - CHANGE GPIB PARTITION DO - DEFINE DEVICE EN - END THE PROGRAM GP - GPIB CONTROL LOeB - LI ST DEV I CE CONTROL BLOCK RE - READ DATA RS -RESET I/O ADAPTER ST - READ ERROR STATUS SU - SUSPEND PROGRAM WR - WRITE DATA "ATTN - PGPIB.. TO POST "ATTN - GPRESUME.. TO RESUME PROGRAM COMMAND(?): If a $GPIBUTI command fails, use the attention list command PGPIB to terminate the failing operation. If the PGPIB command is used, you must issue an RS command (or RSET if GP sub commands are used) to reset the adapter. Defining End Character (CH) The CH command defines or changes the ending character that is added to output data. COMMAND(?}: CHARACT~R 1 2 1 eH TO BE APPENDED TO OUTPUT DATA -~ NOW IS NONE CARRIAGE RETURN L tNE FEED = END OF TEXT = == 4 = USERSPEC~FJED HEX BYTE 5= NONE SELECT CODE: 3 END CHARACTER IS NOW ETX COMMANDO): () CO-220 SC34-0638 o Interacting with the GPIB Application (Using $GPIBUT1) (continued) Changing GPIB Partition (CP) The CP command changes the partition to which the GPIB adapter is connected. The partition is initially defined at system generation. COMMAND(?): CP 2 PARTITION CHANGED TO 2 COMMAND (?) : Cp PARTITION NUMBER (NOW IS 2): PARTITION NUMBER NOT CHANGED COMMAND(7): Defining Device (DO) The DD command prompts for the name of the GPIB adapter. This name is specified in the TERMINAL configuration statement. The name specified is used for all enqueues of the adapter until another DD command is issued. o COMMAND(7): DO NEW GP I B TERM I NAL . NAME=- GP I B COMMANO(?): Ending The Program (EN) The EN command ends the $GPIBUTI utility. ~~:_O_M_MA_N_.D_{_f)_;;~.. ~.~E*~.____~~....-~~~~~____~_____~__..-....-..______________,~ Controlling GPIB (GP) The GP command enables you to enter the GPIB bus command options that can be specified on the TERMCTRL instruction, as described in the Language Reference. When GP is entered and followed by a bus command, $GPIBUTI prompts for additional data, depending upon the specific command. For example, the CON (configure) command requires both configuration and programming data. For the REN (remote enable) command, a list of GPIB device addresses must be included. o Where appropriate, $GPIBUTI performs PRINTEXT /READTEXT operations as part of the execution of a GP command, inserting delimiters as needed. In some cases, one delimiter is a user-defined end character. The end character can be defined by the CH command. Chapter 6. General Purpose Interface Bus - IEEE Standard 488-1975 CO-221 General Purpose Interface Bus - IEEE Standard 488-1975 o Interacting with the GPIB Application (Using $GPIBUT1) (continued) CONFIGURATION DATA: GPIB 'COMMANO(?}:RtAD O'TION(~E~EOS,TO,EOI): OPTION(SE,EOS;TO,EOI): EOSBYTE (HEX): 00 QPTION( 5E,EO$ ,TO,E,O I): TRANSLATE INPUT1 Y SE WARNING ros EOBOR EO~REQUIRED . .~. WARNING -SE'MAY:BE NEEDED (x '00 I)., HOW MANY CHARACTERS (MAX=OEFAULT::80): ~,_:_;_:_:(_N_~_: _\_:_LT_E~ _T_O_ ••• _M_.__________________________________________ ~~ Listing Device Control Block (LOCB) The LDCB command lists the contents of the current GPIB device control block (DCB). The DCB describes the last GPIB operation performed. However, the information provided may require that you use the GPIB Adapter manual. The items listed include: • Address of the GPIB terminal control block (CCB) • Address of the GPIB device control block (DCB) • Status of the DCB control word, specifically: Cycle steal status key (that is, the address space of the data buffer) GPIB operation mnemonic (for an undefined operation, '****') () CO-222 SC34-0638 () Interacting with the GPIB Application (Using $GPIBUT1) (continued) Status of the chaining, input, suppress exception (SE), end of string (EOS), timer override (TO), and end of identify (EOI) bits, if they are set. • End of string character • Address of the residual status block (RSB) • Chain address • Byte count for the data transfer • Address of the data buffer • Contents of the data buffer, expressed as: A string of hexadecimal words EBCDIC characters ASCII characters. The DCB is checked for certain error conditions, including: • DCB words two or three not equal to zero • RSB address not equal to zero, and suppress exception set • Chain address nonzero and chaining bit set. If the byte count is odd, the last byte in the string of hex words is not part of the buffer and should be disregarded. Because the buffer data can be either EBCDIC or ASCII, depending on the application, it is displayed in both character codes. In most cases, the ASCII data displayed will be accurate. An inappropriate translation is displayed as a blank line. The following example illustrates a DCB used in the execution of: TERMCTRL GPIB,CON,TO PRINTEXT '?U%":@' () Chapter 6. General Purpose Interface Bus - IEEE Standard 488-1975 CO-223 General Purpose Interface Bus - IEEE Standard 488-1975 Interacting with the GPIB Application (Using $GPIBUT1) (continued) o CONTROL WORD ,CYCLESTEAL~EYIS O· TIMEROVERR ID.E SET DEVICE OPERATION I scoN BYTE 'COUNT IS 5 DATA ADDRESS IS 1102 DATAINHE:X FORMAT IS: 3F552522 2COO DAtA JNTERPREtED AS EBCDIC IS: '1U%'·: COMMAND (1): Reading Data (RE) (11---', The RE command reads data from the GPIB adapter. You can also specify GPIB options (TERMCTRL functions), translation, and the number of characters to be read. "'\,~o) COMMAND~~): READ oPtrON(SE,EOS,TO,EOI) : optlorHsE,EOS,TO,EOI ): EO~BYTE(IiEXl: ,00 OPT I ON(SE,tOS ,TO, EO 1) ,,~ 'TRANS,l",ATE 'rNPUT1Y' SE WARNING - EOS OREOI REQUIRED ••• EOS WARN ING - SE MAY ,BE NEEDED (X'on;') HOW MANY CHARACTERS , (MAX=DEFAULT::80): VALUE DEFAULTED TO 80 ' o CPMMAND( 1): ----~~----------------~--~--~~~--~~--~~'~ RS - Resetting the GPIB Adapter (RS) The RS command issues a device reset to the adapter. Any pending interrupt or busy condition is cleared when this command is executed. o CO-224 SC34-0638 () Interacting with the GPIB Application (Using $GPIBUT1) (continued) COMMAND(?): RS RESET ADAPTER? Y COMMAND(?): Reading Error Status (ST) The ST command displays the status information contained in the adapter cycle steal status words and the residual status block (RSB). COMMAND(?): ST Y READ STATUS? CYCLE STEAL STATUS BLOCK (HEX) o RESIDUAL ADDRESS = B45A RESIDUAL BYTE COUNT = 0050 (RESERVED) = 0000 (RESERVED) = 0000 ERROR STATUS = 8000 BUS STATUS (AFTER POWER ON) = 0008 BUS STATUS (CURRENT) = OOOA SPE DEVICE ADDRESS = 0000 DCB SPECIFICATION CHECK = 0000 (RESERVED) = 0000 DCB ADDRESS = 1238 RESIDUAL STATUS BLOCK (HEX) RESIDUAL BYTE COUNT RSB FLAGS = (RESERVED) = (RESERVED) = (RESERVED) = RESET ADAPTER? = 0000 0000 0000 0000 0000 Y NO DATA RECEIVED COMMAND (?): Suspending $GPIBUT1 (SU) The SU command suspends the operation of $GPIBUTI until you tell it to resume using GPRESUME. This enables you to run $GPIBUTI concurrently with a GPIB application from the same terminal. COMMAND(?): SU $GPIBUTl SUSPENDED Chapter 6. General Purpose Interface Bus -IEEE Standard 488-1975 CO-225 General Purpose Interface Bus - IEEE Standard 488-1975 Interacting with the GPIB Application (Using $GPIBUT1) (continued) c Writing Data (WR) The WR command writes data to the GPIB adapter. You can specify GPIB options (TERMCTRL functions) and translation. COMMANDO) :WR OPTIONlsE,EOS,TO,EOI}: WRLTEHEX.DATA? ENTER TEXT: IS THE DATA OK? COMMAND(?): Y WR OPTION(SE,EOS,TO,EOI): WRITE HEX DATA? Y ENTER . HEX. WORDS: IS THE DATA OK? OAOO .0102 Y COMMAND{?): o Posting GPIB Operation Completion (PGPIB) Sometimes a GPIB operation waits indefinitely, such as if a device fails to respond to an operation in which timer override (TO) is specified. The PGPIB attention command can be used to complete the operation; it cancels the operation by simulating its completion. However, after a PGPIB, the GPIB adapter is still in a busy state, so it must be reset. GP IB COMMAND (?): READ OPT ION (SE~EOS, TO,EO I): TRANSLATE INPUT? TO Y HOW MANY CHARACTERS· (MAX=DEFAULT=80): VALUE DEFAULTED TO 80 DATA REtE! VED: GP IB COMMAND (?) :. RESET ADAPTER? RSET Y ~' (,~) CO-226 SC34-0638 o Interacting with the GPIB Application (Using $GPIBUT1) (continued) Resuming $GPIBUT1 Operation (GPRESUME) If $GPIBUTI has been suspended using the SU command, the GPRESUME attention command can be used to resume it. > GPRESUME $GPIBUTl RESUMED COMMAND (1): Debugging Applications with $GPIBUT1 Along with tools such as $DEBUG, $GPIBUTI can be used to debug an executing GPIB application. This can be done from one terminal by using the suspend and resume commands. Using $L, load both $GPIBUTI and the application program from a terminal. (The application program can also be loaded using $DEBUG.) First load $GPIBUTI and then suspend it with the SU command. Application debugging can then proceed until you need to use a $GPIBUTI function. At that point, use GPRESUME to reactivate $GPIBUTl. o The list DCB (LDCB) and display status (ST) commands are helpful in this context because they interpret the effects of GPIB operations. In addition, PGPIB can be used to complete a GPIB operation which is in an indefinite wait state. o Chapter 6. General Purpose Interface Bus - IEEE Standard 488-1975 CO-227 General Purpose Interface Bus - IEEE Standard 488-1975 Interacting with the GPIB Application (Using $GPIBUT1) (continued) $GPIBUT1 Utility Example o Figure 75 shows many of the $GPIBUTI utility operations. The attached device is a plotter. > $CP 2 > $L $GPIBUTl $GP I BUTl 45P, LP= 0000 $GPIBUTl - GPIB UTILITY USING GPIB TERMINAL GPIBl COMMAND(?): DD NEW GPIB TERMINAL NAME = GPIB3 GPIB3 IS NOT A GPIB TERMINAL RETRY? Y Figure 7S (Part t of 9). GPIB Utility Example NEW GPIB TERMINAL NAME = GPIB COMMAND (?): CP2 PARTITION CHANGED TO 2 COMMAND (?): CH CHARACTER TO BE APPENDED TO OUTPUT DATA -- NOW IS NONE 1 2 3 4 5 = CARRIAGE RETURN = LINE FEED = END OF TEXT = USER SPECIFIED HEX BYTE = NONE SELECT CODE: 3 END CHARACTER NOW IS ETX Figure 75 (Part 2 of 9), GPlB Utility Example o CO-228 SC34-0638 o Interacting with the GPIB Application (Using $GPIBUT1) (continued) CHARACTER TO BE APPENDED TO OUTPUT DATA -- NOW IS ETX 1 = CARRIAGE RETURN 2 = LI NE FEED 3 = END OF TEXT 4 = USER SPECIFIED HEX BYTE 5 = NONE SELECT CODE: 5 END CHARACTER NOW IS NONE COMMAND (1): GP GPIB COMMAND (1): CON OPTION(SE,EOS,TO,EOI): OPTION(SE,EOS,TO,EOI): CONFIGURATION DATA: PROGRAMMING DATA (OR PROGRAMMING DATA (OR PROGRAMMING DATA (OR o TO 1U% NONE): NONE): NONE): CONFIGURATION DATA: 1E5 PROGRAMMING DATA (OR NONE): PROGRAMMING DATA (OR NONE): CONFIGURATION DATA: IN; OE; NONE Figure 75 (Part 3 of 9). GPIB Utility Example o Chapter 6. General Purpose Interface Bus - IEEE Standard 488-1975 CO-229 General Purpose Interface Bus - IEEE Standard 488-1975 c Interacting with the GPIB Application (Using $GPIBUT1) (continued) GPI B ~OMMAtfD ( ?): ({tAD OPT,ION(SE:,EO$;TO~EO.r): OPTION (SE, EOS, TO,gO,1 ): SE WARNING- EOS OREOI EOS WARNING..;. SE MAY BE NEEDED EOS BX-rE(HEX): .0oixi,QO) OPIION(SE,EOS,IO,EOI}: TRANSLATE INPUT? y HOW MANY CHARACTERS (MAX=DEFAULT=80): TO 80 VALUE~EFAULTED o GP IBCOMMAND (?) : CON OPTION(SE,EOS,TO,EOI): CONFIGURATION DATA: PROGRAMM ING DATA (OR PROGRAMMING DATA (OR PROGRAMMING DATA (OR ?U% NONE): IN; NONE):lM223,32,O; NONE): XX; ****** SRQ RECEIVED ****** Figure 75 (Part 4 of 9). GPIB Utility Example PROGRAMMING DATA (OR NONE): CONFIGURATION DATA: GPIB COMMAND (?): SPE OPTION(~E,EOS,TO,EOI): TALKER ADDRESS LIST: IS THE DATA.OK? GPIB COMMAND (?): E Y SPL WARNING - SPE MUST HAVE JUST BEEN EXECUTED TRANSLATE INPUT? l~ • DATA RECEIVED: 4578 .. . . . WARN I NG N ... ~ AN SPD MAY NOW BE REQU I RED ) Figure 75 (Part 5 of 9). GPIB Utility Example o CO-230 SC34-0638 o Interacting with the GPIB Application (Using $GPIBUT1) (continued) GPIB COMMAND (?): SPD OPTION(SE,EOS,TO,EOI}: GPIB COMMAND (?): READ OPT10N(SE,EOS,TO,EOI}: TRANSLATE INPUT? TO Y HOW MANY CHARACTERS (MAX=DEFAULT=80): VALUE DEFAULTED TO 80 Figure 75 (Part 6 of 9). GPIB Utility Example > PGPIB DATA RECEIVED: GPf8;COMMAND (?): c READ 'QPTlON(SE,EOS,TO,EOI): TRANSLATE INPUT? Y HOW MANY CHARACTERS (MAX=DEFAULT=80) VALUE DEFAULTED TO 80 '~ERRQR CODE = 0002 RESET ADAPTER? Y Figure 75 (Part 7 of 9). GPIB Utility Example O~f'I'9,~TsE ,E OS, TO, EO n: 'TRANSlATE I NPUT? Y 'H~~::'~ANY CHARACTERS (MAX=DEFAUL T=80) VALUE DEFAULTED TO 80 .• ER~6,g;iC'QDE = 0180 c·':[l ,~~~i~~};~g~P~:D~:~U~TATUS AVA ILABlE Rk~~ :~t~.T'US? y' o Figure 75 (Part 8 of 9). GPIB Utility Example Chapter 6. General Purpose Interface Bus - IEEE Standard 488-1975 CO-231 General Purpose Interface Bus - IEEE Standard 488-1975 Interacting with the GPIB Application (Using $GPIBUT1) (continued) RESIDUAL' ADDRESS = RESIDUAL B)'TE'COUNT = (RESERVED):; B45A 0050 '0000 (RES~RVEQ) = 0000 ERROR STATUS = 8000 ausstAfus (AFTER POWER ON) =0068 BUS STATUS (CURR~NT)~= OOOA SPE DEVICE ADDRESS ~ 0000 DCBSPECIFICATION CHECK = 0000 (RESERVED) = 0000 Dca ADDRESS = 1238 RESIDUAL STATUS BLOCK (HEX) RESIDUAL BYTE COUNT =0000 RSB fLAGS = 0000 (RESERVED) = 0000 (RESERVED) = 0000 (RESERVED) = 0000 RESET ADAPTER? Y NO DATA RECE1VED GPIB COMMAND (?): END Figure 75 (Part 9 of 9). GPIB Utility Example o CO-232 SC34-0638 o Detecting Errors During GPIB Operations To control the GPIB bus and the attached devices, you should check the return code after each operation. In general, the application program performs error recovery by retrieving and analyzing the adapter cycle steal status block or residual status block. The manual General Purpose Interface Bus (GPIB) Adapter - RPQ D02118 Custom Feature contains detailed information on cycle steal status and the residual status block. The methods available to the application program for detecting possible errors and retrieving the return codes returned are described below. GPIB errors can be detected in the same manner as other EDX terminal errors: by testing the first word of the task control block after an I/O instruction, or by coding an error routine (identified by TERMERR= in the PROGRAM statement). Except for return code 3 (busy after reset), the application program should handle GPIB return codes like other terminal errors. An application program can initialize a GPIB bus by means of the TERMCTRL GPIB,RSET statement. This generates an interface clear (IFC) bus command. All GPIB devices on the bus must initialize themselves in response to this command. If the application program issues another command before a device can complete initialization, the busy after reset condition will occur. One solution is to cause the program to wait long enough for the reset operation to complete (this takes about 350 milliseconds). Another is to code the TERMCTRL GPIB command (which follows the reset) with the timer override (TO) option. o For exception conditions, the first byte of the error code indicates whether a read or write operation was requested. A value of 1 in the first byte indicates a read exception, while a 2 indicates a write exception. The second byte of the error code is the interrupt status byte (ISB) which contains further information on the exception. Examining Interrupt Status Byte The ISB can be examined to determine whether the exception condition resulted from an application program, hardware, or system error. Unless otherwise noted, the ISB bits below describe the condition when the bit is on. Bit 0 Unless bit 2 is on, indicates that cycle steal status should be retrieved via the TERMCTRL GPIB,STAT statement. Bit 1 Indicates a delayed command rejection which suggests a system error or an inappropriate/ unusual TERMCTRL GPIB statement. Bit 2 Indicates an incorrect length re.cord, which means that the number of characters read from GPIB was less than specified in the input buffer. If the system buffer (contained in the terminal control block) was used, then the associated TERMCTRL GPIB,READ statement should contain the suppress exceptions (SE) option. Bit 3 Indicates a device control block specification error, which may be a system error. Word 8 of the cycle steal status block indicates the cause. o Chapter 6. General Purpose Interface Bus - IEEE Standard 488-1975 CO-233 General Purpose Interface Bus - IEEE Standard 488-1975 Detecting Errors During GPIB Operations (continued) Bit 4 Indicates a storage data check, which means that there is a parity problem with main storage. Bit 5 Indicates an invalid storage address was passed to the GPIB adapter. This can be a system problem or a problem with the application program buffer. Bit 6 Indicates that the GPIB adapter tried to use an invalid storage key. This can be a system problem or a problem with the application program buffer. Bit 7 Indicates that an interface data parity error was detected. o Examining Cycle Steal Status Block If bit zero of the ISB is on, word 4 of the cycle steal status block can be examined to determine the source of the error. The bits in word 4 given below describe the condition when the bit is on. Bit 0 The GPIB adapter timed out while waiting to receive data from the bus. To prevent this, specify timer override (TO) on the TERMCTRL GPIB,READ statement. Bit 2 The GPIB adapter timed out while waiting to send data to the bus. To prevent this, specify timer override (TO) on the TERMCTRL GPIB,WRIT statement. Bit 4 End of string (EOS) was specified on a TERMCTRL GPIB,READ statement, but the buffer was filled before the EOS character was received. Bit 5 End of information (EOI) was specified on a TERMCTRL GPIB,READ statement, but the buffer was filled before EOI was received. Retrieving Cycle Steal Status When a GPIB operation terminates with an exception, an II-word cycle steal status block is available. To retrieve it, the application should issue a TERMCTRL GPIB,STAT instruction specifying an area in storage to contain the status block. STATDATA TERMCTRL GPIB,STAT"STATDATA RETRIEVE STATUS * * * DATA BLOCK FOR STATUS 11 FlO I () CO-234 SC34-0638 o Detecting Errors During GPIB Operations (continued) Retrieving Residual Status Block If a GPIB READ or read monitor (MON) operation specifies the suppress exception (SE) option, the 5-word residual status block is available. To retrieve it the application should issue a TERMCTRL GPIB,RSB instruction specifying an area in storage to contain the status block. RSBDATA TERMCTRL GPIB,RSB"RSBDATA RETRIEVE STATUS * * * DATA BLOCK FOR STATUS SF'O' o o Chapter 6. General Purpose Interface Bus - IEEE Standard 488-1975 CO-235 Notes c o CO-236 SC34-0638 o Glossary of Terms and Abbreviations This glossary defines terms and abbreviations used in the Series/1 Event Driven Executive software publications. All software and hardware terms pertain to EDX. This glossary also serves as a supplement to the IBM Data Processing Glossary, GC20-1699. o $SVSLOGA, $SVSLOGB. The name of the alternate system logging device. This device is optional but, if defined, should be a terminal with keyboard capability, not just a printer. asynchronous communications control adapter. An ASCII terminal attached via #1610, #2091 with #2092, or #2095 with #2096 adapters. $SVSLOG. The name of the system logging device or operator station; must be defined for every system. It should be a terminal with keyboard capability, not just a printer. attention key. The key on the display terminal keyboard that, if pressed, tells the operating system that you are entering a command. $SVSPRTR. The name of the system printer. attention list. A series of pairs of 1 to 8 byte EBCDIC strings and addresses pointing to EDL instructions. When the attention key is pressed on the terminal, the operator can enter one of the strings to cause the associated EDL instructions to be executed. abend. Abnormal end-of-task. Termination of a task prior to its completion because of an error condition that cannot be resolved by recovery facilities while the task is executing. ACCA. See asynchronous communications control adapter. address key. Identifies a set of Series/1 segmentation registers and represents an address space. It is one less than the partition number. address space. The logical storage identified by an address key. An address space is the storage for a partition. application program manager. The component of the Multiple Terminal Manager that provides the program management facilities required to process user requests. It controls the contents of a program area and the execution of programs within the area. o application program stub. A collection of subroutines that are appended to a program by the linkage editor to provide the link from the application program to the Multiple Terminal Manager facilities. backup. A copy of data to be used in the event the original data is lost or damaged. base record slots. Space in an indexed file that is reserved for based records to be placed. base records. Records are placed into an indexed file while in load mode or inserted in process mode with a new high key. basic exchange format. A standard format for exchanging data on diskettes between systems or devices. binary synchronous device data block (BSCDDB). A control block that provides the information to control one Series/1 Binary Synchronous Adapter. It determines the line characteristics and provides dedicated storage for that line. ~ Glossary of Terms and Abbreviations CO-237 Glossary of Terms and Abbreviations o block. (1) See data block or index block. (2) In the Indexed Method, the unit of space used by the access method to contain indexes and data. block mode. The transmission mode in which the 3101 Display Station transmits a data data stream, which has been edited and stored, when the SEND key is pressed. BSCAM. See binary synchronous communications access method. be used to contain control blocks or data that will be accessed by more than one program. completion code. An indicator that reflects the status of the execution of a program. The completion code is displayed or printed on the program's output device. constant. A value or address that remains unchanged thoughout program execution. binary synchronous communications access method. A form of binary synchronous I/O control used by the Series/1 to perform data communications between local or remote stations. controller. A device that has the capability of configuring the G PI B bus by designating which devices are active, which devices are listeners, and which device is the talker. In Series/1 GPIB implementation, the Series/1 is always the controller. BSCOOB. See binary synchronous device data block. conversion. See update. buffer. An area of storage that is temporarily reserved for use in performing an input/ output operation, into which data is read or from which data is written. See input buffer and output buffer. control station. In BSCAM communications, the station that supervises a multipoint connection, and performs polling and selection of its tributary stations. The status of control station is assigned to a BSC line during system generation. bypass label processing. Access of a tape without any label processing support. cross-partition service. A function that accesses data in two partitions. CCB. See terminal control block. central buffer. The buffer used by the Indexed Access Method for all transfers of information between main storage and indexed files. character image. An alphabetic, numeric, or special character defined for an IBM 4978 Display Station. Each character image is defined by a dot matrix that is coded into eight bytes. character image table. An area containing the 256 character images that can be defined for an IBM 4978 Display Station. Each character image is coded into eight bytes, the entire table of codes requiring 2048 bytes of storage. cross-partition supervisor. A supervisor in which one or more supervisor modules reside outside of partition 1 (address space 0). data block. In an indexed file, an area that contains control information and data records. These blocks are a multiple of 256 bytes. data record. In an indexed file, the records containing customer data. data set. A group of records within a volume pointed to by a directory member entry in the directory for the volume. character mode. The transmission mode in which the 3101 Display Station immediately sends a character when a keyboard key is pressed. data set control block (OSCB). A control block that provides the information required to access a data set, volume or directory using READ and WRITE. cluster. In an indexed file, a group of data blocks that is pointed to from the same primary-level index block, and includes the primary-level index block. The data records and blocks contained in a cluster are logically contiguous, but are not necessarily physically contiguous. data set shut down. An indexed data set that has been marked (in main storage only) as unusable due to an error. COO (change of direction). A character used with ACCA terminal to indicate a reverse in the direction of data movement. cold start. Starting the spool facility by erasing any spooled jobs remaining in the spool data set from any previous spool session. command. A character string from a source external to the system that represents a request for action by the system. OCE. See directory control entry. device data block (OOB). A control block that describes a disk or diskette volume. direct access. (1) The access method used to READ or WRITE records on a disk or diskette device by specifying their location relative the beginning of the data set or volume. (2) In the Indexed Access Method, locating any record via its key without respect to the previous operation. (3) A condition in terminal I/O where a READTEXT or a PRINTEXT is directed to a buffer which was previously enqueued upon by an 10CB. common area. A user-defined data area that is mapped into the partitions specified on the SYSTEM definition statement. It can o CO-238 SC34-0638 o directory. (1) A series of contiguous records in a volume that describe the contents in terms of allocated data sets and free space. (2) A series of contiguous records on a device that describe the contents in terms of allocated volumes and free space. (3) For the Indexed Access Method Version 2, a data set that defines the relationship between primary and secondary indexed files (secondary index support). directory control entry (DCE). The first 32 bytes of the first record of a directory in which a description of the directory is stored. external label. A label attached to the outside of a tape that identifies the tape visually. It usually contains items of identification such as file name and number, creation data, number of volumes, department number, and so on. external name (EXTRN). The 1- to 8-character symbolic EBCDIC name for an entry point or data field that is not defined within the module that references the name. FCA. See file control area. FCB. See file control block. directory member entry (OM E). A 32-byte directory entry describing an allocated data set or volume. display station. An IBM 4978,4979, or 3101 display terminal or similar terminal with a keyboard and a video display. DME. See directory member entry. DSCB. See data set control block. dynamic storage. An increment of storage that is appended to a program when it is loaded. end-of-data indicator. A code that signals that the last record of a data set has been read or written. End-of-data is determined by an end-of-data pointer in the DME or by the physical end of the data set. ECB. See event control block. EDl. See Event Driven Language. emulator. The portion of the Event Driven Executive supervisor that interprets EDL instructions and performs the function specified by each EDL statement. end-of-tape (EOT). A reflective marker placed near the end of a tape and sensed during output. The marker signals that the tape is nearly full. enter key. The key on the display terminal keyboard that, if pressed, tells the operating system to read the information you entered. event control block (ECB). A control block used to record the status (occurred or not occurred) of an event; often used to synchronize the execution of tasks. ECBs are used in conjunction with the WAIT and POST instructions. Event Driven Language (EDL). The language for input to the Event Driven Executive compiler ($EDXASM), or the Macro and Host assemblers in conjunction with the Event Driven Executive macro libraries. The output is interpreted by the Event Driven Executive emulator. EXIO (execute input or output). An EDL facility that provides user controlled access to Series/1 input/output devices. file. A set of related records treated as a logical unit. Although file is often used interchangeably with data set, it usually refers to an indexed or a sequential data set. file control area (FCA). A Multiple Terminal Manager data area that describes a file access request. file control block (FCB). The first block of an indexed file. It contains descriptive information about the data contained in the file. file control block extension. The second block of an indexed file. It contains the file definition parameters used to define the file. file manager. A collection of subroutines contained within the program manager of the Multiple Terminal Manager that provides common support for all disk data transfer operations as needed for transaction-oriented application programs. It supports indexed and direct files under the control of a single callable function. floating point. A positive or negative number that can have a decimal point. formatted screen image. A collection of display elements or display groups (such as operator prompts and field input names and areas) that are presented together at one time on a display device. free pool. In an indexed data set, a group of blocks that can be used for either data blocks or index blocks. These differ from other free blocks in that these are not initially assigned to specific logical positions in the file. free space. In an indexed file, records blocks that do not currently contain data, and are available for use. free space entry (FSE). An 8-byte directory entry defining an area of free space within a volume or a device. FSE. See free space entry. general purpose interface bus. The IEEE Standard 488-1975 that allows various interconnected devices to be attached to the GPIB adapter (RPQ 002118). o Glossary of Terms and Abbreviations CO-239 Glossary of Terms and Abbreviations c GPIB. See general purpose interface bus. group. A unit of 100 records in the spool data set allocated to a spool job. H exchange format. A standard format for exchanging data on diskettes between systems or devices. host assembler. The assembler licensed program that executes in a 370 (host) system and produces object output for the Series/1. The source input to the host assembler is coded in Event Driven Language or Series/1 assembler language. The host assembler refers to the System/370 Program Preparation Facility (5798-NNQ). host system. Any system whose resources are used to perform services such as program preparation for a Series/1. It can be connected to a Series/1 by a communications link. IACB. See indexed access control block. IAR. See instruction address register. index register (#1. #2). Two words defined in EDL and contained in the task control block for each task. They are used to contain data or for address computation. input buffer. (1) See buffer. (2) In the Multiple Terminal Manager, an area for terminal input and output. input output control block (lOCB). A control block containing information about a terminal such as the symbolic name, size and shape of screen, the size of the forms in a printer; or an optional reference to a user provided buffer. instruction address register OAR). The pointer that identifies the machine instruction currently being executed. The Series/1 maintains a hardware IAR to determine the Series/1 assembler instruction being executed. It is located in the level status block (LSB). integer. A positive or negative number that has no decimal point. interactive. The mode in which a program conducts a continuous dialogue between the user and the system. ICB. See indexed access control block. liB. See interrupt information byte. image store. The area in a 4978 that contains the character image table. immediate data. A self-defining term used as the operand of an instruction. It consists of numbers, messages or values which are processed directly by the computer and which do not serve as addresses or pointers to other data in storage. index. In an indexed file, an ordered collection of pairs of keys and pointers, used to sequence and locate records. index block. In an indexed file, an area that contains control information and index entries. These blocks are a multiple of 256 bytes. indexed access control block (lACB/ICB). The control block that relates an application program to an indexed file. indexed access method. An access method for direct or sequential processing of fixed-length records by use of a record's key. internal label. An area on tape used to record identifying information (similar to the identifying information placed on an externallabell. Internal labels are checked by the system to ensure that the correct volume is mounted. interrupt information byte (liB). In the Multiple Terminal Manager, a word containing the status of a previous input/ output request to or from a terminal. invoke. To load and activate a program, utility, procedure, or subroutine into storage so it can run. job. A collection of related program execution requests presented in the form of job control statements, identified to the jobstream processor by a JOB statement. job control statement. A statement in a job that specifies requests for program execution, program parameters, data set definitions, sequence of execution, and, in general, describes the environment required to execute the program. job stream processor. The job processing facility that reads job control statements and processes the requests made by these statements. The Event Driven Executive job stream processor is $JOBUTIL. indexed data set. Synonym for indexed file. indexed file. A file specifically created, formatted and used by the Indexed Access Method. An indexed file is sometimes called an indexed data set. index entry. In an indexed file, a key-pointer pair, where the pointer is used to locate a lower-level index block or a data block. jumper. (1) A wire or pair of wires which are used for the arbitrary connection between two circuits or pins in an attachment card. (2) To connect wire(s) to an attachment card or to connect two circuits. key. In the Indexed Access Method, one or more consecutive characters used to identify a record and establish its order with respect to other records. See also key field. () CO-240 SC34-0638 o key field. A field. located in the same position in each record of an indexed file. whose content is used for the key of a record. level status block (LSB). A Series/1 hardware data area that contains processor status. This area is eleven words in length. library. A set of contiguous records within a volume. It contains a directory. data sets and / or available space. line. A string of characters accepted by the system as a single input from a terminal; for example. all characters entered before the carriage return on the teletypewriter or the ENTER key on the display station is pressed. new high key. A key higher than any other key in an indexed file. non labeled tapes. Tapes that do not contain identifying labels (as in standard labeled tapes) and contain only files separated by tapemarks. listener. A controller or active device on a GPIB bus that is configured to accept information from the bus. null character. A user-defined character used to define the unprotected fields of a formatted screen. load mode. In the Indexed Access Method. the mode in which records are loaded into base record slots in an indexed file. option selection menu. A full screen display used by the Session Manager to point to other menus or system functions. one of which is to be selected by the operator. (See primary option menu and secondary option menu.) load point. (1) Address in the partition where a program is loaded. (2) A reflective marker placed near the beginning of a tape to indicate where the first record is written. lock. In the Indexed Access Method. a method of indicating that a record or block is in use and is not available for another request. logical screen. A screen defined by margin settings. such as the TOPM. BOTM. LEFTM and RIGHTM parameters of the TERMINAL or IOCB statement. LSB. See level status block. mapped storage. The processor storage that you defined on the SYSTEM statement during system generation. member. A term used to identify a named portion of a partitioned data set (PDS). Sometimes member is also used as a synonym for a data set. See data set. menu. A formatted screen image containing a list of options. The user selects an option to invoke a program. menu-driven. The mode of processing in which input consists of the responses to prompting from an option menu. message. In data communications. the data sent from one station to another in a single transmission. Stations communication with a series of exchanged messages. o multivolume file. A data file that. due to its size. requires more than one unit of recording media (such as tape reel or disk pack) to contain the entire file. link edit. The process of resolving external symbols in one or more object modules. A link edit is performed with $EDXLlNK whose output is a loadable program. load module. A single module having cross references resolved and prepared for loading into storage for execution. The module is the output of the $UPDATE or $UPDATEH utility. () multiple terminal manager. An Event Driven Executive licensed program that provides support for transaction-oriented applications on a Series/1. It provides the capability to define transactions and manage the programs that support those transactions. It also manages mUltiple terminals as needed to support these transactions. output buffer. (1) See buffer. (2) In the Multiple Terminal Manager. an area used for screen output and to pass data to subsequent transaction programs. overlay. The technique of reusing a single storage area allocated to a program during execution. The storage area can be reused by loading it with overlay programs that have been specified in the PROGRAM statement of the program or by calling overlay segments that have been specified in the OVERLAY statement of $EDXLlNK. overlay area. A storage area within a program reserved for overlay programs specified in the PROGRAM statement or overlay segments specified in the OVERLAY statement in $EDXLlNK. overlay program. A program in which certain control sections can use the same storage location at different times during execution. An overlay program can execute concurrently as an asynchronous task with other programs and is specified in the EDL PROGRAM statement in the main program. overlay segment. A self-contained portion of a program that is called and sequentially executes as a synchronous task. The entire program that calls the overlay segment need not be maintained in storage while the overlay segment is executing. An overlay segment is specified in the OVERLAY statement of $EDXLlNK or $XPSLlNK (for initialization modules). overlay segment area. A storage area within a program or supervisor reserved for overlay segments. An overlay segment area is specified with the OVLAREA statement of $EDXLlNK. multifile volume. A unit of recording media. such as tape reel or disk pack. that contains more than one data file. Glossary of Terms and Abbreviations CO-241 Glossary of Terms and Abbreviations parameter selection menu. A full screen display used by the Session Manager to indicate the parameters to be passed to a program. partition. A contiguous fixed-sized area of storage. Each partition is a separate address space. performance volume. A volume whose name is specified on the DISK definition statement so that its address is found during IPL, increasing system performance when a program accesses the volume. physical timer. Synonym for timer (hardware). polling. In data communications, the process by which a multipoint control station asks a tributary if it can receive messages. precision. The number of words in storage needed to contain a value in an operation. prefind. To locate the data sets or overlay programs to be used by a program and to store the necessary information so that the time required to load the prefound items is reduced. process mode. In the Indexed Access Method, the mode in which records can be retrieved, updated, inserted or deleted. o processor status word (PSW). A 16-bit register used to (1) record error or exception conditions that may prevent further processing and (2) hold certain flags that aid in error recovery. program. A disk- or diskette-resident collection of one or more tasks defined by a PROGRAM statement; the unit that is loaded into storage. (See primary task and secondary task.) program header. The control block found at the beginning of a program that identifies the primary task, data sets, storage requirements and other resources required by a program. program/storage manager. A component of the Multiple Terminal Manager that controls the execution and flow of application programs within a single program area and contains the support needed to allow multiple operations and sharing of the program area. protected field. A field in which the operator cannot use the keyboard to enter, modify, or erase data. PSW. See processor status word. primary file. An indexed file containing the data records and primary index. primary file entry. For the Indexed Access Method Version 2, an entry in the directory describing a primary file. OCB. See queue control block. 00. See queue descriptor. OE. See queue element. primary index. The index portion of a primary file. This is used to access data records when the primary key is specified. primary key. In an indexed file, the key used to uniquely identify a data record. primary-level index block. In an indexed file, the lowest level index block. It contains the relative block numbers (RBNs) and high keys of several data blocks. See cluster. primary menu. The program selection screen displayed by the Multiple Terminal Manager. primary option menu. The first full screen display provided by the Session Manager. primary station. In a Series/1 to Series/ 1 attachment. the processor that control communication between the two computers. Contrast with secondary station. primary task. The first task executed by the supervisor when a program is loaded into storage. It is identified by the PROGRAM statement. priority. A combination of hardware interrupt level priority and a software ranking within a level. Both primary and secondary tasks will execute asynchronously within the system according to the priority assigned to them. queue control block (OCB). A data area used to serialize access to resources that cannot be shared. See serially reusable resource. queue descriptor (00). A control block describing a queue built by the DEFINEQ instruction. queue element (OE). An entry in the queue defined by the queue descriptor. quiesce. To bring a device or a system to a halt by rejection of new requests for work. quiesce protocol. A method of communication in one direction at a time. When sending node wants to receive, it releases the other node from its quiesced state. record. (1) The smallest unit of direct access storage that can be accessed by an application program on a disk or diskette using READ and WRITE. Records are 256 bytes in length. (2) In the Indexed Access Method, the logical unit that is transferred between $IAM and the user's buffer. The length of the buffer is defined by the user. (3) In BSCAM communications, the portions of data transmitted in a message. Record length (and, therefore, message length) can be variable. recovery. The use of backup data to re-create data that has been lost or damaged. o CO-242 SC34-0638 o reflective marker. A small adhesive marker attached to the reverse (nonrecording) surface of a reel of magnetic tape. Normally, two reflective markers are used on each reel of tape. One indicates the beginning of the recording area on the tape (load point), and the other indicates the proximity to the end of the recording area (EOT) on the reel. relative block address (RBA). The location of a block of data on a 4967 disk relative to the start of the device. relative record number. An integer value identifying the position of a record in a data set relative to the beginning of the data set. The first record of a data set is record one, the second is record two, the third is record three. relocation dictionary (RLD). The part of an object module or load module that is used to identify address and name constants that must be adjusted by the relocating loader. remote management utility control block (RCB). A control block that provides information for the execution of remote management utility functions. reorganize. The process of copying the data in an indexed file to another indexed file in a manner that rearranges the data for more optimum processing and free space distribution. o restart. Starting the spool facility w the spool data set contains jobs from a previous session. The jobs in the spool data set can be either deleted or printed when the spool facility is restarted. return code. An indicator that reflects the results of the execution of an instruction or subroutine. The return code is usually placed in the task code word (at the beginning of the task control block). roll screen. A display screen which is logically segmented into an optional history area and a work area. Output directed to the screen starts display at the beginning of the work area and continues on down in a line-by-line sequence. When the work area gets full, the operator presses ENTER/SEND and its contents are shifted into the optional history area and the work area itself is erased. Output now starts again at the beginning of the work area. secondary option menu. In the Session Manager, the second in a series of predefined procedures grouped together in a hierarchical structure of menus. Secondary option menus provide a breakdown of the functions available under the session manager as specified on the primary option menu. secondary task. Any task other than the primary task. A secondary task must be attached by a primary task or another secondary task. secondary station. In a Series/1 to Series/1 attachment, the processor that is under the control of the primary station. sector. The smallest addressable unit of storage on a disk or diskette. A sector on a 4962 or 4963 disk is equivalent to an Event Driven Executive record. On a 4964 or 4966 diskette, two sectors are equivalent to an Event Driven Executive record. selection. In data communications, the process by which the multipoint control station asks a tributary station if it is ready to send messages. self-defining term. A decimal, integer, or character that the computer treats as a decimal, integer, or character and not as an address or pointer to data in storage. sensor based I/O control block (SBIOCB). A control block containing information related to sensor I/O operations. sequential access. The processing of a data set in order of occurrence of the records in the data set. (1) In the Indexed Access Method, the processing of records in ascending collating sequence order of the keys. (2) When using READ/WRITE, the processing of records in ascending relative record number sequence. serially reusable resource (SRR). A resource that can only be accessed by one task at a time. Serially reusable resources are usually managed via (1) a QCB and ENQ/DEQ statements or (2) an ECB and WAIT/POST statements. service request. A device generated signal used to inform the controller that service is required by the issuing device. SBIOCB. See sensor based I/O control block. GPIB second-level index block. In an indexed data set, the second-lowest level index block. It contains the addresses and high keys of several primary-level index blocks. session manager. A series of predefined procedures grouped together as a hierarchical structure of menus from which you select the utility functions, program preparation facilities, and language processors needed to prepare and execute application programs. The menus consist of a primary option menu that displays functional groupings and secondary option menus that display a breakdown of these functional groupings. secondary file. See secondary index. secondary index. For the Indexed Access Method Version 2, an indexed file used to access data records by their secondary keys. Sometimes called a secondary file. o secondary key. For the Indexed Access Method Version 2, the key used to uniquely identify a data record. shared resource. A resource that can be used by more than one task at the same time. secondary index entry. For the Indexed Access Method Version 2, this an an entry in the directory describing a secondary index. Glossary of Terms and Abbreviations CO-243 Glossary of Terms and Abbreviations shut down. See data set shut down. source module/program. A collection of instructions and statements that constitute the input to a compiler or assembler. Statements may be created or modified using one of the text editing facilities. spool job. The set of print records generated by a program (including any overlays) while engueued to a printer designated as a spool device. spool session. An invocation and termination of the spool facility. spooling. The reading of input data streams and the writing of output data streams on storage devices, concurrently with job execution, in a format convenient for later processing or output operations. system partition. The partition that contains the root segment of the supervisor (partition number 1, address space 0). o talker. A controller or active device on a GPIB bus that is configured to be the source of information (the sender) on the bus. tape device data block (TDB). A resident supervisor control block which describes a tape volume. tapemark. A control character recorded on tape used to separate files. task. The basic executable unit of work for the supervisor. Each task is assigned its own priority and processor time is allocated according to this priority. Tasks run independently of each other and compete for the system resources. The first task of a program is the primary task. All tasks attached by the primary task are secondary tasks. SRQ. See service request. stand-alone dump. An image of processor storage written to a diskette. stand-alone dump diskette. A diskette supplied by IBM or created by the $DASDI utility. standard labels. Fixed length BO-character records on tape containing specific fields of information (a volume label identifying the tape volume, a header label preceding the data records, and a trailer label following the data records). static screen. A display screen formatted with predetermined protected and unprotected areas. Areas defined as operator prompts or input field names are protected to prevent accidental overlay by input data. Areas defined as input areas are not protected and are usually filled in by an operator. The entire screen is treated as a page of information. station. In BSCAM communications, a BSC line attached to the Series/1 and functioning in a point-to-point or multipoint connection. Also, any other terminal or processor with which the Series/1 communicates. subroutine. A sequence of instructions that may be accessed from one or more points in a program. supervisor. The component of the Event Driven Executive capable of controlling execution of both system and application task code word. The first two words (32 bits) of a task's TCB; used by the emulator to pass information from system to task regarding the outcome of various operations, such as event completion or arithmetic operations. task control block (TCB). A control block that contains information for a task. The information consists of pointers, save areas, work areas, and indicators required by the supervisor for controlling execution of a task. task supervisor. The portion of the Event Driven Executive that manages the dispatching and switching of tasks. () TCB. See task control block. terminal. A physical device defined to the EDX system using the TERMINAL configuration statement. EDX terminals include directly attached IBM displays, printers and devices that communicate with the Series/1 in an asynchronous manner. terminal control block (CCB). A control block that defines the device characteristics, provides temporary storage, and contains links to other system control blocks for a particular terminal. terminal environment block (TEB). A control block that contains information on a terminal's attributes and the program manager operating under the Multiple Terminal Manager. It is used for processing requests between the terminal servers and the program manager. piogiams. system configuration. The process of defining devices and features attached to the Series/1. SYSGEN. See system generation. system generation. The processing of defining I/O devices and selecting software options to create a supervisor tailored to the needs of a specific Series/1 hardware configuration and application. terminal screen manager. The component of the Multiple Terminal Manager that controls the presentation of screens and communications between terminals and transaction programs. terminal server. A group of programs that perform all the input/ output and interrupt handling functions for terminal devices under control of the Multiple Terminal Manager. () CO-244 SC34-0638 o terminal support. The support provided by EDX to manage and control terminals. See terminal. timer. The timer features available with the Series/1 processors. Specifically, the 7840 Timer Feature card (4955 only) or the native timer (4952, 4954, and 4956). Only One or the other is supported by the Event Driven Executive. update. (1) To alter the contents of storage or a data set. (2) To convert object modules, produced as the output of an assembly or compilation, or the output of the linkage editor, into a form that can be loaded into storage for program execution and to update the directory of the volume On which the loadable program is stored. trace range. A specified number of instruction addresses within which the flow of execution can be traced. user exit. (1) Assembly language instructions included as part of an EDL program and invoked via the USER instruction. (2) A point in an IBM-supplied program where a user written routine can be given control. transaction oriented applications. Program execution driven by operator actions, such as responses to prompts from the system. Specifically, applications executed under control of the Multiple Terminal Manager. variable. An area in storage, referred to by a label, that can contain any value during program execution. transaction program. See transaction-oriented applications. transaction selection menu. A Multiple Terminal Manager display screen (menu) offering the user a choice of functions, such as reading from a data file, displaying data on a terminal, or waiting for a response. Based upon the choice of option, the application program performs the requested processing operation. vary offline. (1) To change the status of a device from online to offline. When a device is offline, no data set can be accessed on that device. (2) To place a disk or diskette in a state where it is unknown by the system. vary online. To place a device in a state where it is available for use by the system. vector. An ordered set or string of numbers. o tributary station. In BSCAM communications, the stations under the supervision of a control station in a multipoint connection. They respond to the control station's polling and selection. unmapped storage. The processor storage in your processor that you did not define On the SYSTEM statement during system generation. volume. A disk, diskette, or tape subdivision defined using $INITDSK or $TAPEUT1. volume descriptor entry (VDE). A resident supervisor control block that describes a volume on a disk or diskette. volume label. A label that uniquely identifies a single unit of storage media. unprotected field. A field in which the operator can use the keyboard to enter, modify or erase data. Also called non-protected field. o Glossary of Terms and Abbreviations CO-24S o () o CO-246 SC34-0638 o Index The following index contains entries for this book only. See the Library Guide and Common Index for a Common Index to all Event Driven Executive books. o o Special Characters $$X21 DS data set description CO-49 $BSCTRCE utility description CO-33 $BSCUT1 utility commands CO-35 invoking CO-35 $BSCUT2 utility change hard-copy device CO-43 commands CO-39 description CO-38 invoking CO-39 $CAPGM, channel attach program CO-145 $GPIBUT1 utility description CO-220 example CO-228 use in debugging applications CO-227 $HCFUn utility CO-139 $RMU See Remote Management Utility ($RMU) $RMUPA CO-97 A abort Series /1 -to- Series /1 write CO-194 acquire use of BSC line CO-17 ADAPTER statement CO-13 ADAPTER= operand, BSCLINE statement CO-13 allocate trace file data set CO-33 ALLOCATE function, $RMU control character flow CO-73 for program data set CO-71 receive status message CO- 71 required fields CO- 72 send request CO-71 terminate function CO-71 application programs, BSCAM CO-16 attach BSC lines CO-8 B binary synchronous communications (BSC) communications features CO-9 line connections CO-7 Remote Management Utility ($RMU) CO-57 sample programs CO-109 test BSCAM CO-38 trace printing utility, $BSCUT1 CO-34 trace utility, $BSCTRCE CO-33 binary synchronous communications access method (BSCAM) Index CO-247 Index $BSCTRCE, invoking CO-33 acquire use of BSC line CO-17 allocate trace file data set CO-33 basic programming functions CO-16 BSCWRITE I instruction CO-20 buffers, use of CO -18 communications indicator panel, installing CO-45 continue write operations CO-22 control block, coding CO-17 control characters for continue write CO-23 for initial write CO-20 for special writes CO-25 control station CO-8 conversation mode of transmission CO-15 data links, use of CO-7 define BSC line type CO-12 BSC lines to supervisor CO-12 delay receiving messages CO-27 write operation CO-24 DLE character, use of CO-14 EDL instruction set CO-16 end read operation CO-28 write operation CO-25 error recovery CO-29 format trace files for output CO-34 hardware configuration, determining CO-8 requirements CO-8 initial write operations CO-20 interacting with CO-32 line connections, use of CO-7 nontransparent data transmission CO-14 overview CO-5 planning for CO-6 point-to-point connection CO-7 poll/select address CO-13 sequences CO-20 programming for CO-16 read data stream CO-28 ENQ character CO-28 operation CO-16, CO-26 transparent/nontransparent data CO-38 types, selecting CO-26 READ sampie program CO-31 receiving data CO-26 first message CO-27 subsequent messages CO-27 requesting repeat of message CO-28 responding to poll/select CO-28 sample programs CO-29 sending data CO-19 tranparent data in blocks CO-15 special considerations for local operations CO-ll special write operations CO-23 standard data transmission, uses of CO-14 standard mode of transmission CO-15 supervisor module CO-14 support, including CO-12 terminology CO-6 test read and write capability CO-39 trace I/O activity CO-33 transmission, modes of CO-15 transparent data transmission CO-14 types of data transmitted CO-14 utilities CO-32 write continue CO-22 end operation CO-25 initial CO-20 operation CO-16, CO-19, CO-25 programming sequence CO-25 types, selecting CO-19 WRITE sample program CO-29 blocking factor $RMU PASSTHRU data set CO-66 $RMU source data set CO-66 $RMU standard data set CO-65 BSC communications features communications indicator panel, use with CO-ll jumpering for direct-connect operations CO-ll jumpering for multipoint tributary operation CO-ll modem eliminators, use with CO-ll modems, use with CO-ll multifunction attachment CO-l0 single-line control, high speed (2075 feature card) CO-9 single-line control, high speed (2080 feature card) CO-9 single-line control, medium speed (2074 feature card) CO-9 4-line adapter CO-l0 8-line control CO-l0 BSC control characters use with continue writes CO-23 use with initial writes CO-20 use with special wri~ CO-25 BSC I/O exerciser ($BSCU~CO-38 BSC line address default, ($RMU) CO-64 BSC lines acquiring use of CO-17 addresses, determining CO-8 attaching and controlling CO-8 defining line type CO-12 defining to supervisor CO-' 2 in multipoint connection CO-8 in point-to-point connection CO-7 trace I/O activity on CO-33 BSC read types BSCREAD C CO-27 BSCREAD D CO-27 BSCREAD E CO-28 BSCREAD I CO-27 BSCREAD P CO-28 BSCREAD Q CO-28 o o CO-248 SC34-0638 o o BSCREAD R CO-28 BSCREAD U CO-28 BSC single-line control high speed, 2075 feature card CO-9 high speed, 2080 feature card CO-9 medium speed, 2074 feature card CO-9 BSC trace records, dump CO-34 BSC 4-line adapter CO-l0 BSC 8-line control CO-l0 BSCAM See binary synchronous communications access method (BSCAM) BSCCLOSE instruction use of CO-17 BSCIOCB statement forX.21 CO-17 using CO-17 BSCLINE statement ADAPTER= operand CO-13 address default for $RMU CO-64 TYPE= operand CO-12 TYPE= operand for X.21 use CO-12 use with $RMU CO-59 BSCOPEN instruction forX.21 CO-17 use of CO-17 BSCREAD instruction C-type CO-27 D-type CO-27 E-type CO-28 I-type CO-27 P-type CO-28 Q-type CO-28 R-type CO-28 U-type CO-28 BSCWRITE instruction C-type CO-22 D-type CO-24 E-type CO-25 EX-type CO-25 I-type CO-20 N-type CO-24 Q-type CO-24 U-type CO-24 UX-type CO-24 BTAM/BTAM-ES, channel attach considerations CO-149 buffer use in BSCAM CO-18 buffer size default, ($RMU) CO-65 c o CA instructions CO-148 call progress signals for X.21 CO-56 CH command ($GPIBUTl) CO-220 change BSC line address default, $RMU CO-64 buffer size default, $RMU CO-65 GPIB partition CO-221 host system ID, $RMU CO-63 remote system ID, $RMU CO-63 storage size default, $RMU CO-64 channel attach $CAPGM CO-145 $CHANUTl utility CO-155 assembling application program CO-150 BTAM considerations CO-149 change device address (CA) CO-156 close a port (CACLOSE) CO-154 code control block for port (CAIOCB) CO-152 commands CO-155 device (4993) CO-146 EDL instruction set CO-148 enable / disable a trace (TR) CO-156 end utility (EN) CO-156 error handling CO-149 functions supported CO-146 hardware considerations CO-146 invoking CO-155 issue I/O CO-152 link-edit application program CO-150 open a port (CAOPEN) CO-152 overview CO-145 perform a trace (TR) CO-156 plan to use CO-145 power on device CO-148 print trace data (CAPRINT) CO-155 print trace data (PR) CO-156 programs for CO-148 read from a port (CAREAD) CO-152 receive data from host (CAREAD) CO-152 sample programs CO-157 send data to host (CAWRITE) CO-153 software considerations CO-146 start a device (ST) CO-156 start device (CASTART) CO-151 stop a device (CASTOP) CO-154 stop a device (SP) CO-156 tailor channel attach program CO-147 trace Series /1 I/O (CATRAC E) CO -155 write to a port (CAWRITE) CO-152 communications applications, writing for $RMU CO-66 for BSCAM CO-16 for channel attach CO-148 for Host Communication Facility CO-132 for Series/l-to-Series/1 attachment CO-179 communications features jumpering CO-11 communications indicator panel for X.21 display/function select switch settings CO-47 functions monitored CO-46 selecting line to monitor CO-45 communications utilities $BSCTRCE CO-33 $BSCUTl CO-34 $BSCUT2 CO-38 $CHANUTl CO-155 $GPIBUT1 CO-220 Index CO-249 Index $HCFUT1 CO-139 $S1S1UT1 CO-194 connect host and remote systems, $RMU CO-59 connection record for X.21 CO-49 continue write operations, BSCAM CO-22 control block, use with BSCAM CO-17 control characters, BSC CO-20 control data transfers, $RMU echo host data CO-84 perform echo test CO-84 receive data from host CO- 78 receive data from remote system CO-82 send data to host CO-82 send data to remote system CO-78 control data transfers, Host Communication Facility receive data from host CO-134 send data to host CO-134 control program execution, $RMU execute program CO-86 terminate $RMU CO-90 controlling BSC lines CO-8 conversation response mode, BSCAM CO-15 count message, Remote Management Utility CO-69 CP command ($GPIBUT1) CO-221 D data links, selecting CO-7 data links, types of CO-7 data message, Remote Management Utility CO-69 data types transmitted by BSCAM CO-14 data-link=escape (DLE) character CO-14 DO command ($GPIBUT1) CO-221 define BSC line to supervisor CO-12 BSC line types CO-12 end character (GPIB) CO-220 GPIB device CO-221 remote system defaults CO-62 requirements CO-60 responses to host CO-.67 delay receiving messages with BSCAM CO-27 delay transmission write operation CO-24 delete data set ($RMU) CO-74 DELETE function, $RMU control character flow CO-75 receive status message CO-74 required fields CO- 75 send request CO-74 terminate function CO-74 determine BSC hardware configuration CO-8 device error codes for X.21 CO-55 direct-connect operations, BSCAM CO-11 OLE character, use of CO-14 dump storage partition ($RMU) CO-76 -DUMP function, $RMU BSC trace records CO-34 control character flow CO-77 receive status message CO-76 required fields CO-76 send request CO-76 terminate function CO- 76 o E echo test, ($RMU) CO-84 EN command ($GPIBUT1) CO-221 end BSCAM write operation CO-25 read operation with BSCAM CO-28 error handling $RMU CO-69 BSCAM error recovery CO-29 error log for X.21 CO-52 EXEC function, $RMU allocate free space CO-87 control character flow CO-89 data set passing CO-87 parameter passing CO-87 required fields CO-88 send request CO-86 specify partition CO-87 execute program with $RMU CO-86 exerciser, BSC line ($BSCUT2) CO-38 F FE command ($HCFUT1) CO-141 format BSC trace files CO-34 G General Purpose Interface Bus configuration CO-201, CO-206 cycle steal status CO-234 data transfers CO-208 device addresses CO-200 device group operation CO...,,211 device modes CO-200 error handling CO-233 initialization CO-201, CO-205 interrupt handling CO-202 interrupt status byte CO-233 loading programs CO-207 overview CO -199 parallel polling CO-210 planning to use CO-199 sample program CO-216 o CO-2S0 SC34-0638 o serial polling CO-209 service requests (SRQ) CO-202 system generation CO -199 terminal I/O considerations CO-204 translated data (XLATE=NO) CO-204 universal unlisten CO-206 user buffer CO-204 GP command ($GPIBUT1) CO-221 GPIB control CO-221 GPRESUME command ($GPIBUT1) CO-227 H c hardware requirements $RMU remote system CO-60 for BSCAM CO-8 Host Communications Facility $HCFUT1 utility CO-139 control data transfers CO-133 data set characteristics CO-129 data transfer rate CO-132 host data sets CO-128 host storage CO-132 installation requirements CO-128 obtain time and date CO-136 open host data set CO-130 overview CO-127 perform status functions CO-135 plan for CO-128 programming for CO-132 submit job to host CO-135 system status data set CO-130 TP instructions CO-132 host data set, HCF characteristics CO -129 naming conventions CO-128 open CO-130 record sizes CO-129 variable-length records CO -130 host programming for $RMU CO-66 host system 10, change ($RMU) CO-63 host system requirements, $RMU CO-61 J jumper for direct-connect operations, BSCAM CO-11 for multipoint tributary stations CO-11 L LOCB command ($GPIBUT1) CO-222 leased lines CO- 7 limited conversational transmission mode, use by BSCAM CO-15 list device control block (GPIB) CO-222 local operations, BSCAM CO-11 M manage data sets, $RMU allocate CO-71 delete CO-74 dump storage to data set CO-76 messages $RMU count CO-69 data CO-69 header CO-67 status CO-67 mode of transmission, $RMU CO-60 modem eliminators CO-ll modems CO-ll monitor BSC lines CO-45 multifunction attachment use in BSC CO-l0 multipoint connections CO-8 control station CO-8 special considerations CO-ll tributary station CO-8 N I I/O, exerciser ($BSCUT2) CO-38 10CHECK function, $RMU control character flow CO-95 required fields CO-94 send request CO-94 initial write operations, BSCAM CO-20 initialize GPIB CO-201 install communications indicator panel CO-45 installation requirements, HCF CO-128 internal clocking, jumpering for CO-ll no data record, PASSTHRU function of $RMU CO-l08 nonswitched lines CO-7 nontransparent (standard) data CO -14 o output BSC trace files CO-34 o Index CO-2St Index p PASSTHRU function, $RMU abrupt termination CO-98 $RMUPA program CO-97 attention interrupt, use of CO-96 conduct a session CO-102 control character flow CO-100 deadlock CO-97 indefinite waits CO-98 no data record CO-108 overview CO-96 program end record CO-108 programming considerations CO-96 programs not to be run under CO-96 programs that run under CO-96 record blocking CO-108 record types CO-102, CO-104 request for data record CO-107 required fields CO-99 sample program CO-117 send request CO-99 system generation for CO-96 text/PF key record CO-104 timeouts CO-98 virtual terminal support CO-96 with $DEBUG CO-125 perform status functions, Host Communication Facility delete record from system status data set CO-135 retrieve record from system status data set CO-135 write to system status data set CO-135 PGPIB command ($GPIBUT1) CO-226 plan for $RMU operations CO-59 point-to-point station CO-7 poll / select address CO-13 poll/select sequences, sending CO-20 post GPIB operation complete CO-226 print trace file on printer/terminal CO-35 program end record, PASSTHRU function of $RMU CO-108 Program Function key record, PASSTHRU function of $RMU CO-104 programming sequence, BSCAM write operations CO-25 R RE command $GPIBUT1 CO-224 $HCFUT1 CO-141 read data data stream with BSCAM eO-28 ENQ character with BSCAM CO-28 error handling CO-29 records from host ($HCFUT1) CO-140 using $GPIBUT1 CO-224 with BSCAM CO-27, CO-28 READDATA command ($HCFUT1) CO-139 CO-2S2 SC34-0638 READOBJ command ($HCFUT1) CO-140 READ80 command ($HCFUT1) CO-140 receive first message with BSCAM CO-27 subsequent message with BSCAM CO-27 RECEIVE function, $RMU control character flow eO-80 overview CO-78 receive count message CO-79 receive status message eO-79 record length overrun CO-79 record padding CO-79 required fields eO-80 sample program CO-111 send empty data set CO-79 send request CO-78 specify data set type CO- 79 specify record blocking CO-79 specify starting record CO-80 terminate function eO-79 records sizes, host data sets (HCF) CO-129 Remote Management Utility ($RMU) allocate data sets CO-71 blocking factor PASSTHRU data set CO-66 source data set CO-66 standard data set CO-65 BSC line address default CO-64 Bse line connections CO-59 BSCWRITE CX instruction eO-66 BSeWRITE IX instruction CO-66 buffer size default CO-55 conduct PASSTHRU session CO-102 control data transfers CO-78 control program execution CO-86 count message CO-69 data message CO-69 data transfers CO-78 delete data sets CO-74 dump storage to data set eO-76 echo host data eO-84 EDL BSe instructions, use of CO-66 error handling CO-69 establish PASSTHRU session CO-99 execute program CO-86 hardware for remote system CO-60 host programming for eO-66 host system ID CO-63 host system requirements CO-61 invoke on remote system CO-58 manage data sets CO-70 mode of transmission CO-60 overview CO-57 PASSTHRU function CO-96 perform echo test CO-84 plan for operations CO-59 receive data from host eO-78 receive data from remote system eO-82 remote system ID eO-63 o o o o o requests, fields required CO-70 sample programs CO-l09 send data to host CO-82 to remote system CO-78 sending messages to host CO-67 software for remote system CO-61 status error conditions CO-67 status message CO-67 storage considerations CO-60 storage size default CO-64 terminate $RMU CO-90 verify identities between systems CO-94 virtual terminals, use of CO-61 remote system $RMU defaults CO-62 $RMU requirements CO-60 10, change ($RMU) CO-63 request for data record, PASSTHRU function of $RMU CO-107 repeat of message with BSCAM CO-28 to $RMU, required fields CO-70 reset GPIB adapter CO-224 respond to poll/select with BSCAM CO-28 RS command ($GPIBUT1) CO-224 s sample programs $RMU multifunction CO-l09 $RMU PASSTHRU function CO-117 $RMU RECEIVE function CO-lll $RMU SEND function CO-115 for BSCAM CO-29 for channel attach CO-157 for Host Communication Facility CO-136 for Series/1-to-Series/l attachment CO-183 SE command ($HCFUT1) CO-141 send data in standard mode with BSCAM CO-15 first message with BSCAM CO-20 poll/select sequences CO-20 subsequent messages with BSCAM CO-22 transparent data in blocks CO-15 SEND function, $RMU send request CO-82 communications flow CO-83 control character flow CO-83 overview CO-82 receive status message CO-82 required fields CO-83 sample program CO-115 specify data set type CO-82 specify record blocking CO-82 specify starting record CO-82 terminate function CO-82 Series/1-to-Series/l attachment $S1S1 UT1 utility CO-194 abort write operation CO-194 application programs CO-179 data transfers CO-176 define attached processor CO-195 echo test CO-195 enqueue other processor CO-180 error recovery CO-182 identify enqueued processor CO-180 IPL function CO-182 IPL other processor CO-196 obtain status of operation CO-197 overview CO-175 perform control functions CO-180 posting an event control block (ECB) CO-176 processor relationships CO-176 program synchronization CO-181 programming considerations CO-181 read data from other processor CO-196 receive data CO-180 reconfiguring CO-181 reset device CO-197 sample programs CO-183 send data CO-180 using direct I/O CO-181 write data to other processor CO-198 service request (SRQ) CO-202 SHUTDOWN function, $RMU allocate free space CO-91 control character flow CO-93 data set passing CO-91 parameter passing CO-91 required fields CO-92 run another program CO-90 send request CO-90 specify partition CO-91 signal special conditions with BSCAM CO-23 software requirements, $RMU remote system CO-61 special write operations, BSCAM CO-23 specify buffers for use with BSCAM CO-18 ST command ($GPIBUT1) CO-225 standard data, transmission by BSCAM CO-14 standard mode of transmission, BSCAM CO-15 status commands ($HCFUT1) CO-141 status data set, Host Communications Facility CO-130 status message, Remote Management Utility CO-67 STIMER instruction CO-97 in Series/ l-to-Series/ 1 error recovery CO-183 with PASSTHRU function CO-97 storage considerations, $RMU CO-60 size default, ($RMU) CO-64 SU command ($GPIBUT1) CO-225 SU command ($HCFUT1) CO-141 submit job to host ($HCFUn) CO-141 job to host, Host Communication Facility CO-135 suspend $GPIBUTl CO-225 switched lines CO- 7 Index CO-253 Index system generation for BSCAM CO-12 for BSCX21 CO-12 for channel attach CO-146 for GPIB CO-199 for Host Communications Facility CO-128 for host system, $RMU CO-61 for remote system, $RMU CO-61 for X.21 support CO-48 system status data set, HCF data entry CO-131 index entry CO-131 key entry CO-131 organization CO-131 T terminate Remote Management Utility CO-90 terminating GPIB operation CO-220 terminology, BSCAM CO-6 test BSC definitions CO-38 text record, PASSTHRU function of $RMU CO-104 TP instruction functions CO-132 trace BSC activities CO-33 I/O on BSC line CO-33 utility for BSC CO-33 trace printing utility for BSC CO-34 transfer data set from host ($HCFUT1) CO-139 transfer rates for data, Host Communications Facility CO-132 transmission modes, BSCAM CO-15 transmit binary data with BSCAM CO-14 text data with BSCAM CO-14 transparent data transmission, use by BSCAM CO-14 tributary station addresses CO-13 TYPE= operand, BSCLINE statement CO-12 v w o WR command ($GPIBUT1) CO-226 WR command ($HCFUT1) CO-141 WRAP function, $RMU control character flow CO-85 overview CO-84 required fields CO-85 send request CO-84 write data to the GPIB adapter CO-226 x X.21 circuit switched network support $$X21 DS data set CO-48, CO-49 $BSCTRCE utility CO-33 attaching and jumpering the 2080 card CO-48 BSCIOCB statement CO-51 BSCLINE TYPE= parameter CO-13 BSCOPEN statement CO-51 call progress signals CO-56 coding example for BSCLINE TYPE= parameter CO-49 connection record data set building a connection record CO-50 delay value field CO-50 example records CO-51 network information field CO-50 record name field CO-50 retry count field CO-50 determining the connection type you need CO-49 device error codes CO-55 network requirements CO-48 system generation CO-48 X.21 error logging CO-52 X21 RECYY default record CO-49 X21 RN operand CO-51 2080 high speed feature card description CO-1O X21 RECYY default record for X.21 CO-49 X21 RN operand CO-51 1·~. U 2 verify SSC communications CO-38 identities of systems, $RMU CO-94 virtual terminals use with $RMU CO-61 2074 feature card CO-9 2075 feature card CO-9 2080 synchronous communications feature card attaching and jumpeiing description CO-1O 4 4993 channel attach device CO-146 o CO-2S4 SC34-0638 .0 s : :i~~ Series/1 Event Driven Executive Publications Order Form Instructions: Order: 1. Complete the order form, supplying all of the requested information. (Please print or type.) Description 2. If you are placing the order by phone, dial Order number Reference books: 1-800-1 BM-24G8. 3. If you are mailing your order, fold the order form as indicated, seal with tape, and mail. We pay the postage. Ship to: Name: Address: Communications Guide SC34-0638 Extended Address Mode and Performance Analyzer User Guide SC34-0591 Installation and System Generation Guide SC34-0646 Language Reference SC34-0643 Library Guide and Common Index SC34-0645 Messages and Codes SC34-0636 Operator Commands and Utilities Reference SC34-0644 Guides and reference cards: o City: State: Zip: Bill to: Customer number: Name: Address: Customization Guide SC34-0635 Event Driven Language Drogramming Guide SC34-0637 Operation Guide SC34-0642 Problem Determination Guide SC34-0639 Language Reference Card SX34-0165 Operator Commands and Utilities Reference Card SX34-0164 Conversion Charts Reference Card SX34-0163 Reference Card Envelope SX34-0166 City: State: Zip: Binders: o Your Purchase Order No.: 3-ring easel binder with 1 inch rings SR30-0324 Phone: ( 3-ring easel binder with 2 inch rings SR30-0327 Signature: Standard 3-ring binder with 1 inch rings SR30-0329 Standard 3-ring binder with 1 1/2 inch rings SR30-0330 Standard 3-ring binder with 2 inch rings SR30-0331 Diskette binder (Holds eight 8-inch diskettes.) S830-0479 Date: Oty. I I I I Publications Order Form ~ ... c: Q c:" 0 l> 0::s 0 IQ r 5' ~ Please Do Not Staple Fold and tape Fold and tape .................................................................................................................................................................................... ~ 111111 NO POSTAGE NECESSARY IF MAILED IN THE UNITED STATES BUSINESS REPLY- MAIL FIRST CLASS PERMIT NO. 40 o ARMONK, N.Y. POSTAGE Will BE PAID BY ADDRESSEE: I BM Corporation 1 Culver Road Dayton, New Jersey 08810 .................................................................................................................................................................................... J Please Do Not Staple Fold and tape Fold and tape - -- ------_ - -. - ® International Business Machines Corporation o IBM Series/1 Event Driven Executive Communications Guide Order No. SC34-0638-0 o READER'S COMMENT FORM This manual is part of a library that serves as a reference source for systems analysts, programmers, and operators of IBM systems. You may use this form to communicate your comments about this publication, its organization, or subject matter, with the understan'ding that IBM may use or distribute whatever information you supply in any way it believes appropriate without incurring any obligation to you. Your comments will be sent to the author's department for whatever review and action, if any, are deemed appropriate. Note: Copies oflRlIJ puhlications are not stocked at the location to which this form is addressed. Please direct allY requests for copies ofpublicatiol1s, or for assistance in using your IBM system, to your I B1I1 represell tative or to the IBM branch office serving your locali(v. (1) +-' o Z o Thank you for your cooperation. No postage stamp necessary if mailed in the U.S.A. (Elsewhere, an IBM office or representative will be happy to forward your comments or you may mail directly to the address in the Edition Notice on the back of the title page.) I I I I I () SC34-0638-0 Printed in U.S.A. C M' ~ "'Tl o c: ~ o Reader's Comment Form :l o \C C :l ro Fold and tape Fold and tape Please Do Not Staple I" II NO POSTAGE NECESSARY IF MAILED IN THE UNITED STATES BUSINESS REPLY MAIL FIRST CLASS PERMIT NO. 40 o ARMONK, N.Y. POSTAGE WILL BE PAID BY ADDRESSEE: International Business Machines Corporation I nformation Development, Department 28B 3405 (I nternal Zip) P.O. Box 1328 Boca Raton, Florida 33432 Fold and tape Please Do Not Staple Fold and tape - ----- ---- ---,- - ® o --- - ---- ---.-_ - --- '" International Business Machines Corporation SC34-0638-0 SC34-0638-0 Program Numbers : 5719-XS5 , 5719-XX6, 5719-LM6, 5719-CX1, 5799-PGH File Number : Sl-30 Pri nted in U .S.A .
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 : 2013:01:03 10:37:27-08:00 Modify Date : 2013:01:03 19:45:56-08:00 Metadata Date : 2013:01:03 19:45:56-08:00 Producer : Adobe Acrobat 9.52 Paper Capture Plug-in Format : application/pdf Document ID : uuid:06e100ea-9382-4617-87be-c62638efa407 Instance ID : uuid:53dc71a0-ae0f-4d51-abc8-69967bb36410 Page Layout : SinglePage Page Mode : UseNone Page Count : 274EXIF Metadata provided by EXIF.tools