Message Control Bank - Public Support Login - Unisys
Message Control Bank - Public Support Login - Unisys
Message Control Bank - Public Support Login - Unisys
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
OS 2200<br />
<strong>Message</strong> <strong>Control</strong> <strong>Bank</strong> (MCB)<br />
Programming Reference Manual<br />
© 2003 <strong>Unisys</strong> Corporation.<br />
All rights reserved.<br />
Level 8R3<br />
Printed in USA<br />
July 2003 7833 1568–004<br />
UNISYS
NO WARRANTIES OF ANY NATURE ARE EXTENDED BY THIS DOCUMENT. Any product or related information<br />
described herein is only furnished pursuant and subject to the terms and conditions of a duly executed agreement to<br />
purchase or lease equipment or to license software. The only warranties made by <strong>Unisys</strong>, if any, with respect to the<br />
products described in this document are set forth in such agreement. <strong>Unisys</strong> cannot accept any financial or other<br />
responsibility that may be the result of your use of the information in this document or software material, including<br />
direct, special, or consequential damages.<br />
You should be very careful to ensure that the use of this information and/or software material complies with the laws,<br />
rules, and regulations of the jurisdictions with respect to which it is used.<br />
The information contained herein is subject to change without notice. Revisions may be issued to advise of such<br />
changes and/or additions.<br />
Notice to U.S. Government End Users: This is commercial computer software or hardware documentation developed at<br />
private expense. Use, reproduction, or disclosure by the Government is subject to the terms of <strong>Unisys</strong> standard<br />
commercial license for the products, and where applicable, the restricted/limited rights provisions of the contract data<br />
rights clauses.<br />
Correspondence regarding this publication can be e-mailed to doc@unisys.com.<br />
<strong>Unisys</strong> is a registered trademark of <strong>Unisys</strong> Corporation in the United States and other countries.<br />
All other brands and products referenced in this document are acknowledged to be the trademarks or registered<br />
trademarks of their respective holders.
OS 2200<br />
<strong>Message</strong> <strong>Control</strong> <strong>Bank</strong><br />
(MCB)<br />
Programming Reference<br />
Manual<br />
Level 8R3<br />
OS 2200<br />
<strong>Message</strong> <strong>Control</strong><br />
<strong>Bank</strong> (MCB)<br />
Programming<br />
Reference<br />
Manual<br />
Level 8R3<br />
7833 1568–004 7833 1568–004<br />
Bend here, peel upwards and apply to spine.
Contents<br />
Section 1. Introduction<br />
1.1. Introduction to MCB................................................................. 1–1<br />
1.2. Notation Conventions............................................................... 1–3<br />
Section 2. Components and Mass Storage Files<br />
2.1. Components............................................................................. 2–1<br />
2.1.1. Background Run .............................................................. 2–2<br />
2.1.2. Main Common <strong>Bank</strong>........................................................ 2–3<br />
2.1.3. Main Storage <strong>Message</strong> Common <strong>Bank</strong>s ........................ 2–3<br />
2.1.4. Position Identifier (PID) Table Common <strong>Bank</strong>s ............... 2–3<br />
2.1.5. <strong>Message</strong> Retention File (MRF) <strong>Control</strong> Common<br />
<strong>Bank</strong>s .......................................................................... 2–4<br />
2.1.6. Site-id Table Common <strong>Bank</strong>s .......................................... 2–4<br />
2.1.7. Range Table Common <strong>Bank</strong>s .......................................... 2–4<br />
2.1.8. VINDEX Common <strong>Bank</strong>................................................... 2–4<br />
2.1.9. <strong>Message</strong>-Recovery <strong>Bank</strong> for Short Recovery<br />
(MSGBNK)................................................................... 2–5<br />
2.1.10. <strong>Message</strong>-Recovery <strong>Bank</strong> for Long Recovery<br />
(MSGLNGBNK)............................................................ 2–5<br />
2.2. Mass Storage Files .................................................................. 2–5<br />
2.2.1. <strong>Message</strong> Retention File (MRF)........................................ 2–5<br />
2.2.2. MRF <strong>Control</strong> File.............................................................. 2–5<br />
2.2.3. PID Index File (PIX).......................................................... 2–6<br />
Section 3. <strong>Message</strong> Processing – General Concepts<br />
3.1. <strong>Message</strong> Types........................................................................ 3–1<br />
3.2. <strong>Message</strong> Attributes ................................................................. 3–2<br />
3.2.1. <strong>Message</strong> Recoverability .................................................. 3–2<br />
3.2.2. Deferred <strong>Message</strong> Queuing............................................ 3–2<br />
3.2.3. <strong>Message</strong> Numbering....................................................... 3–3<br />
3.2.3.1. Intelligent Input....................................................... 3–3<br />
3.2.3.2. Intelligent Output.................................................... 3–3<br />
3.2.3.3. Unintelligent Input .................................................. 3–4<br />
3.2.3.4. Unintelligent Output ............................................... 3–4<br />
3.2.4. Audit Text ........................................................................ 3–4<br />
3.2.5. <strong>Message</strong> Recall ............................................................... 3–5<br />
3.2.6. Low Main Storage Priority............................................... 3–5<br />
3.2.7. Reduced Output Path Length (ROPL) ............................. 3–5<br />
3.3. Validation Table Considerations ............................................... 3–6<br />
7833 1568–004 iii
Contents<br />
3.3.1. Application Group Number...............................................3–6<br />
3.3.2. Recovery Options ............................................................3–7<br />
3.3.2.1. Output <strong>Message</strong> Attributes.....................................3–8<br />
3.3.2.2. Input <strong>Message</strong> Attributes........................................3–8<br />
3.3.2.3. Program Execution Attributes .................................3–8<br />
3.3.3. Access Mask....................................................................3–9<br />
3.3.4. Input Queue Priority.........................................................3–9<br />
3.3.5. Transaction Program Number..........................................3–9<br />
3.4. <strong>Message</strong> Processing Interfaces .............................................3–10<br />
3.4.1. Basic Mode Low-Level Interface ...................................3–12<br />
3.4.2. Application Programming Considerations ......................3–13<br />
3.4.2.1. Basic Mode and Extended Mode Interfaces.........3–14<br />
3.4.2.2. Mixed-Mode Considerations .................................3–15<br />
3.5. Optional Features ...................................................................3–15<br />
3.5.1. Conversational Link........................................................3–16<br />
3.5.2. Multiple Destination Output...........................................3–16<br />
3.5.3. Rotary Output ................................................................3–16<br />
3.5.4. Unsolicited Output .........................................................3–17<br />
3.5.5. Delivery Notification.......................................................3–17<br />
3.5.6. Test and Training Modes................................................3–17<br />
3.5.6.1. Training Mode........................................................3–17<br />
3.5.6.2. Test Mode .............................................................3–18<br />
3.5.6.3. Test/Training Mode ...............................................3–18<br />
3.5.6.4. Mode Establishment .............................................3–18<br />
3.5.6.5. Mode Interpretation ..............................................3–19<br />
3.5.7. MCB Session <strong>Control</strong>.....................................................3–19<br />
3.5.7.1. Outbound Open Session Establishment ...............3–19<br />
3.5.7.2. Outbound Session Close.......................................3–20<br />
3.5.7.3. Session State Changes .........................................3–20<br />
3.5.8. Exclusive Use of a PID...................................................3–20<br />
3.5.9. PID Site-id Table.............................................................3–20<br />
3.5.10. IBM Terminal to Logical UTS 400 Terminal....................3–20<br />
3.5.11. Input <strong>Message</strong> <strong>Control</strong>...................................................3–21<br />
3.5.12. Output <strong>Message</strong> <strong>Control</strong> ...............................................3–21<br />
3.5.13. TIP Session <strong>Control</strong>........................................................3–22<br />
3.5.14. Program Options (VALTAB and XQT).............................3–22<br />
3.5.15. Common <strong>Bank</strong> Security .................................................3–22<br />
3.5.16. TIP <strong>Message</strong> Security ....................................................3–22<br />
3.5.17. MCB File Security ..........................................................3–23<br />
3.5.18. User Session Reestablishment......................................3–23<br />
3.5.19. Partitioned Applications..................................................3–23<br />
3.5.20. Statistics Monitor Transaction .......................................3–24<br />
3.5.21. MRF Threshold <strong>Control</strong> ..................................................3–24<br />
3.5.22. User <strong>Message</strong> <strong>Control</strong> ...................................................3–24<br />
3.6. TeamQuest Transaction Performance Auditing System<br />
(TPAS).................................................................................3–24<br />
Section 4. CMS Interface<br />
4.1. Requirements of CMS ..............................................................4–1<br />
4.2. Basic Mode Calling Sequence for CMS....................................4–2<br />
iv 7833 1568–004
Contents<br />
4.3. Extended Mode Calling Sequence for CMS............................. 4–3<br />
4.4. CMS Interface Packet .............................................................. 4–4<br />
4.5. Interface Functions .................................................................. 4–5<br />
4.5.1. CMS Activity Initialization ................................................ 4–5<br />
4.5.2. CMS Activity Termination................................................ 4–7<br />
4.5.3. CMS Store Input <strong>Message</strong>.............................................. 4–7<br />
4.5.4. CMS Input <strong>Message</strong> Cancel............................................ 4–9<br />
4.5.5. CMS Receive Output <strong>Message</strong>..................................... 4–10<br />
4.5.6. CMS Output <strong>Message</strong> Hold .......................................... 4–12<br />
4.5.7. CMS Output <strong>Message</strong> Positive Acknowledge.............. 4–12<br />
4.5.8. CMS Output <strong>Message</strong> Negative Acknowledge ............ 4–13<br />
4.5.9. CMS Put Text ................................................................ 4–14<br />
4.5.10. Read VINDEX Entry ....................................................... 4–15<br />
4.5.11. CMS Get Text................................................................ 4–16<br />
4.5.12. CMS Session Status Notification .................................. 4–17<br />
4.5.13. CMS PID Configuration ................................................. 4–19<br />
4.5.14. CMS Session Open Notify ............................................ 4–20<br />
4.5.15. CMS Resilient Session Open Notification ..................... 4–20<br />
4.5.16. CMS PID Information Request...................................... 4–21<br />
4.5.17. CMS Obtain Resource Status ....................................... 4–22<br />
4.6. Auxiliary Information Area...................................................... 4–23<br />
Section 5. Application Program Interface<br />
5.1. General Description.................................................................. 5–1<br />
5.2. Basic Mode High-Level Calling Sequence................................ 5–2<br />
5.3. Extended Mode High-Level Calling Sequence......................... 5–3<br />
5.4. Application Program Interface Packet...................................... 5–4<br />
5.5. Functions.................................................................................. 5–6<br />
5.5.1. Initialize............................................................................ 5–6<br />
5.5.2. Terminate ...................................................................... 5–11<br />
5.5.3. Commit.......................................................................... 5–12<br />
5.5.4. Rollback ......................................................................... 5–13<br />
5.5.5. Read Input ..................................................................... 5–14<br />
5.5.6. Release Input ................................................................ 5–16<br />
5.5.7. Cancel Output ............................................................... 5–17<br />
5.5.8. Store Output.................................................................. 5–17<br />
5.5.9. Store Pass-Off............................................................... 5–23<br />
5.5.10. Store Checkpoint........................................................... 5–26<br />
5.5.11. Enqueue <strong>Message</strong> ........................................................ 5–29<br />
5.5.12. Audit .............................................................................. 5–29<br />
5.5.13. Discrete Receive ........................................................... 5–30<br />
5.5.14. Open a Session ............................................................. 5–32<br />
5.5.15. Close a Session ............................................................. 5–34<br />
5.5.16. Request PID Status ....................................................... 5–34<br />
5.5.17. Obtain Exclusive Use of a PID ...................................... 5–35<br />
5.5.18. Release Exclusive Use of a PID .................................... 5–36<br />
5.5.19. Obtain Input-Only Exclusive Use of a PID..................... 5–37<br />
5.5.20. Obtain MCB Statistics ................................................... 5–38<br />
5.6. Auxiliary Information Area...................................................... 5–40<br />
5.7. Unique Identifier..................................................................... 5–40<br />
7833 1568–004 v
Contents<br />
5.8. Recovery Options Summary...................................................5–41<br />
5.9. Unintelligent <strong>Message</strong> Numbering Format.............................5–44<br />
5.9.1. Input Acknowledge <strong>Message</strong> ........................................5–44<br />
5.9.2. Output <strong>Message</strong> Header ...............................................5–45<br />
5.10. Delivery Notification Format ...................................................5–46<br />
5.11. Session State Changes...........................................................5–47<br />
5.12. Host-to-Host MCB Transactions.............................................5–47<br />
5.12.1. Host-to-Host Restrictions...............................................5–47<br />
5.12.2. End-to-End <strong>Message</strong> Acknowledgment ........................5–48<br />
5.12.3. Opening a Host-to-Host PID Session.............................5–48<br />
5.12.4. Store Output (SEND$$) Considerations.........................5–49<br />
5.12.5. SEP and ENP Considerations.........................................5–49<br />
5.13. HVSTAT Considerations..........................................................5–49<br />
Section 6. TIP Primitive Interface<br />
6.1. MCB Primitives.........................................................................6–1<br />
6.1.1. INITAL—Transaction Program Initialization......................6–2<br />
6.1.2. TERMN8—Transaction Program Termination..................6–2<br />
6.1.3. CONECT—Batch/Demand Program Initialization.............6–2<br />
6.1.4. DISCON—Batch/Demand Program Termination .............6–2<br />
6.1.5. CSTLOG—Store a <strong>Message</strong> ............................................6–3<br />
6.1.6. CSTOVR—Overlay or Extend a <strong>Message</strong> ........................6–3<br />
6.1.7. CDATAC—Read a <strong>Message</strong>.............................................6–3<br />
6.1.8. CDATCR—Read and Release a <strong>Message</strong>........................6–3<br />
6.1.9. CRELOG—Release All <strong>Message</strong>s....................................6–3<br />
6.1.10. RTRANO/RTRANU—Store and Queue a<br />
<strong>Message</strong> ......................................................................6–3<br />
6.1.11. RTOUTP/RTSCHD—Queue an Output or<br />
Pass-off <strong>Message</strong>........................................................6–4<br />
6.1.12. ERTERM—Program Error Termination ............................6–4<br />
6.1.13. ROLBAK—Program Step Rollback...................................6–4<br />
6.1.14. COMMIT—Program End of Step .....................................6–4<br />
6.2. <strong>Message</strong> Parameter Area.........................................................6–4<br />
6.3. User Parameter Area ................................................................6–5<br />
6.4. Application Program Impacts and Incompatibilities..................6–5<br />
6.4.1. Relative Addressing .........................................................6–5<br />
6.4.2. Overlay.............................................................................6–5<br />
6.4.3. Physical COMPOOL.........................................................6–5<br />
6.4.4. Program Options..............................................................6–5<br />
6.4.5. Initialization.......................................................................6–5<br />
6.4.6. Termination Differences between COMPOOL<br />
and MCB......................................................................6–6<br />
6.4.7. Running COMPOOL and MCB Programs<br />
Concurrently ................................................................6–6<br />
Section 7. Universal Database <strong>Control</strong> Considerations<br />
7.1. Universal Database <strong>Control</strong> Interface .......................................7–1<br />
7.2. Universal Database <strong>Control</strong> Run-Unit Conventions ..................7–1<br />
7.2.1. MCB Initialize ...................................................................7–2<br />
vi 7833 1568–004
Contents<br />
7.2.2. MCB Terminate ............................................................... 7–2<br />
7.2.3. MCB Commit................................................................... 7–2<br />
7.2.4. MCB Rollback.................................................................. 7–2<br />
7.2.5. <strong>Message</strong> Release............................................................ 7–2<br />
7.2.6. Retrieval Run-Units.......................................................... 7–3<br />
7.2.7. LOG Command ............................................................... 7–3<br />
Section 8. Error Processing Programs<br />
8.1. Overview.................................................................................. 8–1<br />
8.2. System Error Program (SEP).................................................... 8–1<br />
8.2.1. Purpose ........................................................................... 8–2<br />
8.2.2. System Generation Considerations................................. 8–2<br />
8.2.3. VINDEX Considerations................................................... 8–3<br />
8.2.4. MCB Interface ................................................................. 8–3<br />
8.3. Error Notification Program (ENP) ............................................. 8–4<br />
8.3.1. VINDEX Considerations................................................... 8–5<br />
8.3.2. <strong>Message</strong> Format ............................................................. 8–5<br />
Section 9. <strong>Message</strong> Recovery<br />
9.1. MSGBNK.................................................................................. 9–1<br />
9.2. MSGBNK Interface to IRU ....................................................... 9–1<br />
9.3. MSGBNK Error Handling.......................................................... 9–2<br />
9.4. MSGBNK Console <strong>Message</strong>s .................................................. 9–2<br />
9.5. MSGLNGBNK........................................................................... 9–2<br />
Appendix A. Function Codes<br />
Appendix B. Error Codes<br />
Appendix C. <strong>Message</strong> Recovery Options<br />
C.1. Recovery Option Combinations ...............................................C–1<br />
C.2. <strong>Message</strong> Numbering................................................................C–3<br />
C.3. Program Recovery Options......................................................C–4<br />
Appendix D. Audit Records<br />
D.1. MCA Block ...............................................................................D–2<br />
D.2. Overflow Block.........................................................................D–2<br />
D.3. User Audit Record....................................................................D–3<br />
D.4. MRF <strong>Control</strong>s ...........................................................................D–3<br />
D.5. Periodic Statistics.....................................................................D–3<br />
D.6. TIP$Q Error ..............................................................................D–3<br />
7833 1568–004 vii
Contents<br />
Appendix E. Tailoring Features<br />
E.1. Tailored <strong>Message</strong> Analysis (TMA) ........................................... E–1<br />
E.2. Tailored Session Analysis (TSA)............................................... E–3<br />
Appendix F. Data Structures<br />
F.1. <strong>Message</strong> Block Structure .........................................................F–1<br />
F.1.1. Notation Conventions.......................................................F–1<br />
F.1.2. MCA Block .......................................................................F–1<br />
F.1.2.1. MCA Field Definitions..............................................F–2<br />
F.1.2.2. TIP$Q Packet Field Definitions................................F–4<br />
F.1.2.3. TIP$Q Packet Extension for Output<br />
<strong>Message</strong>s ...........................................................F–5<br />
F.1.2.4. TIP$Q Packet Extension Area for Other<br />
<strong>Message</strong> Types...................................................F–6<br />
F.1.3. Overflow Block.................................................................F–7<br />
F.1.4. Main Storage Buffers.......................................................F–7<br />
F.2. <strong>Message</strong> Retention File (MRF) Operations ..............................F–8<br />
F.2.1. Recoverable MRFs...........................................................F–8<br />
F.2.2. Nonrecoverable MRFs .....................................................F–9<br />
F.2.3. MRF <strong>Control</strong> Tables .........................................................F–9<br />
F.2.4. MRF Blocks......................................................................F–9<br />
F.2.5. MRF Identifiers (MID) ....................................................F–10<br />
F.2.6. Segment Allocation Mask (SAM) Area...........................F–10<br />
F.3. Main MRF <strong>Control</strong> Table (MRF$TBL)......................................F–11<br />
F.3.1. MRF File Table (MF$CTX) ..............................................F–11<br />
F.3.2. MRF <strong>Control</strong> Table (MF$CTL) ........................................F–12<br />
F.4. Buffer Pool <strong>Control</strong>s ...............................................................F–14<br />
F.5. SLOT.......................................................................................F–15<br />
F.5.1. AUDIT$ Packet...............................................................F–22<br />
F.5.2. SLOT Extension Area.....................................................F–23<br />
F.5.3. DM$IOW Packet............................................................F–25<br />
F.5.4. TIP$XMIT Packet ...........................................................F–26<br />
F.6. MRF Allocation Descriptor (MAD) ..........................................F–27<br />
F.7. Position Identifier (PID) ...........................................................F–32<br />
F.7.1. PID Entry........................................................................F–33<br />
F.7.2. Group PID Entry .............................................................F–35<br />
F.7.3. Group PID Table.............................................................F–36<br />
F.8. PID Index File (PIX) .................................................................F–36<br />
F.9. Statistics Table (ST$TBL)........................................................F–37<br />
Appendix G. MCB Open Look<br />
Appendix H. Related Product Information<br />
Glossary ............................................................................................. 1<br />
viii 7833 1568–004
Contents<br />
Index ............................................................................................. 1<br />
7833 1568–004 ix
Contents<br />
x 7833 1568–004
Figures<br />
2–1. Components and Mass Storage Files ................................................................ 2–2<br />
3–1. <strong>Message</strong> Format .............................................................................................. 3–11<br />
4–1. CMS Packet ....................................................................................................... 4–4<br />
4–2. CMS Packet Overlay .......................................................................................... 4–5<br />
4–3. Auxiliary Information Area ................................................................................ 4–23<br />
5–1. Application Program Interface Packet................................................................ 5–5<br />
5–2. Application Program Interface Packet Overlay .................................................. 5–6<br />
5–3. Multiple Destination List .................................................................................. 5–20<br />
5–4. Unique Identifier............................................................................................... 5–41<br />
5–5. Input Recovery Options ................................................................................... 5–42<br />
5–6. Output Recovery Options ................................................................................ 5–42<br />
5–7. Pass-Off Recovery Options.............................................................................. 5–43<br />
5–8. Checkpoint Recovery Options.......................................................................... 5–43<br />
8–1. Error Notification <strong>Message</strong> ................................................................................ 8–6<br />
D–1. Order of MCA Blocks in Audit Trail ....................................................................D–2<br />
F–1. MCA Block Structure ......................................................................................... F–1<br />
F–2. MCA Field Definitions ........................................................................................ F–2<br />
F–3. TIP$Q Packet Field Definitions........................................................................... F–4<br />
F–4. TIP$Q Packet Extension for Output <strong>Message</strong>s ................................................. F–5<br />
F–5. TIP$Q Packet Extension Area ............................................................................ F–6<br />
F–6. Overflow <strong>Control</strong> Field Definitions ..................................................................... F–7<br />
F–7. Main Storage Buffer Field Definitions ................................................................ F–8<br />
F–8. Main MRF <strong>Control</strong> Table .................................................................................. F–11<br />
F–9. MRF File Table ................................................................................................. F–11<br />
F–10. MRF <strong>Control</strong> Table ........................................................................................... F–12<br />
F–11. MRF <strong>Control</strong> Table Formats ............................................................................. F–13<br />
F–12. Buffer Pool <strong>Control</strong>........................................................................................... F–14<br />
F–13. SLOT Header.................................................................................................... F–15<br />
F–14. SLOT ................................................................................................................ F–17<br />
F–15. Audit$ Packet ................................................................................................... F–22<br />
F–16. SLOT Extension Area ....................................................................................... F–23<br />
F–17. DM$IOW Packet.............................................................................................. F–25<br />
F–18. TIP$XMIT Packet.............................................................................................. F–26<br />
F–19. MRF Allocation Descriptor ............................................................................... F–27<br />
F–20. RNG$BNK Directory......................................................................................... F–32<br />
F–21. PID Entry .......................................................................................................... F–33<br />
F–22. Group PID Entry ............................................................................................... F–35<br />
F–23. Group PID Table ............................................................................................... F–36<br />
F–24. Field Definitions (EQUF) for Statistics.............................................................. F–38<br />
7833 1568–004 xi
Figures<br />
G–1. Example of C Language Call to UC Function Library ......................................... G–2<br />
G–2. Structure of an MCB Open Look Executable ZOOM ........................................ G–3<br />
xii 7833 1568–004
Tables<br />
3–1. Recovery Options............................................................................................... 3–7<br />
3–2. Example Programs........................................................................................... 3–13<br />
4–1. Relation between P$FUNC and P$QID............................................................ 4–18<br />
4–2. Values for UTS 400 Function Keys................................................................... 4–27<br />
4–3. Values for the Coded Character Set................................................................. 4–30<br />
8–1. VINDEX Parameters for System Error Program................................................. 8–3<br />
8–2. VINDEX Parameters for Error Notification Program........................................... 8–5<br />
8–3. Error Notification Codes ..................................................................................... 8–6<br />
A–1. Function Codes ..................................................................................................A–1<br />
B–1. Error Codes ........................................................................................................B–1<br />
7833 1568–004 xiii
Tables<br />
xiv 7833 1568–004
Examples<br />
5–1. Input Acknowledge <strong>Message</strong> .......................................................................... 5–44<br />
5–2. Output <strong>Message</strong> Header.................................................................................. 5–45<br />
7833 1568–004 xv
Examples<br />
xvi 7833 1568–004
Section 1<br />
Introduction<br />
This manual is a reference for <strong>Message</strong> <strong>Control</strong> <strong>Bank</strong> (MCB) information used in<br />
applications programming on OS 2200 systems (Exec) with OS 2200 system software.<br />
This manual contains the following information:<br />
• General information about the MCB product and message processing<br />
• Information about MCB external interfaces<br />
• MCB internal technical information for software maintenance<br />
• Information about MCB programming conventions for use with database<br />
management programs, external error processing, and message processing<br />
programs<br />
This manual assumes that you are familiar with OS 2200 Executive System software,<br />
Transaction Processing (TIP), TIP utilities, and a Communications Management System<br />
(CMS 1100 or similar program on your system), and Network Database Server (formerly<br />
DMS 2200) software. This manual assumes that you are also familiar with the Integrated<br />
Recovery Conceptual Overview.<br />
This document contains all the information that was available at the time of publication.<br />
Technical changes that were not available at that time are documented in problem list<br />
entry (PLE) 17891294. Your <strong>Unisys</strong> representative can provide you with a copy of that<br />
PLE.<br />
1.1. Introduction to MCB<br />
The <strong>Message</strong> <strong>Control</strong> <strong>Bank</strong> (MCB) is the message control component of the OS 2200<br />
integrated recovery system. MCB is an alternative to the original communications<br />
message-buffer pool (COMPOOL) and provides additional functions, particularly in<br />
message recovery. MCB is used primarily in a transaction processing environment.<br />
In combination with related software in the Communications Management System<br />
(CMS 1100) and the OS 2200 (Exec) system, MCB supports the following message<br />
types:<br />
• Communications network input messages<br />
• Communications network output messages<br />
• Internally generated program pass-off messages<br />
• Checkpoint messages (not communications)<br />
7833 1568–004 1–1
Introduction<br />
Transaction programs or programs connected with Transaction Processing (TIP) batch or<br />
demand programs can receive input or pass-off messages, or create output or pass-off<br />
messages. Application programs interface to the MCB through one of the following:<br />
• A low-level, packet-driven interface<br />
• The Display Processing System (DPS 2200)<br />
• A TIP primitive interface compatible with COMPOOL<br />
To MCB, a message consists of<br />
• <strong>Control</strong> information or data represented by a packet<br />
• Auxiliary data or data exterior to the packet<br />
• Text made up of any kind of binary data<br />
The MCB supports the following message processing activities:<br />
• <strong>Message</strong> staging<br />
<strong>Message</strong> staging holds message text in main storage buffers or in message<br />
retention files on mass storage.<br />
• <strong>Message</strong> auditing<br />
<strong>Message</strong> auditing allows optional logging of message traffic on a magnetic tape or<br />
mass storage audit trail for recovery, statistical, and accounting purposes.<br />
• <strong>Message</strong> queuing<br />
<strong>Message</strong> queuing give priority sequencing to control information for orderly delivery<br />
of input and pass-off messages to application programs and delivery of output to the<br />
network through CMS.<br />
• <strong>Message</strong> recovery<br />
<strong>Message</strong> recovery automatically requeues recoverable undelivered input, output, and<br />
pass-off messages after system failure.<br />
• <strong>Message</strong> recall<br />
<strong>Message</strong> recall recalls successfully delivered input or output from a message<br />
retention file.<br />
Note: The MCB is the only supported interface for message queuing and message<br />
recovery. However, the MCB does not perform these functions alone; they are<br />
accomplished by joint processing of the Exec and MCB.<br />
1–2 7833 1568–004
1.2. Notation Conventions<br />
Introduction<br />
This manual uses the following general command format in examples and procedural<br />
discussions:<br />
������� ����������������<br />
where:<br />
COMMAND<br />
is the name of a command. Command names are presented in uppercase, but you<br />
may enter them in either uppercase or lowercase.<br />
parameter-string<br />
is a parameter associated with the command. Parameter-string fields are presented<br />
in lowercase or italics when they represent alphanumeric variables.<br />
The following conventions are used to describe MCB command syntax:<br />
{ }<br />
Braces indicate two or more required parameters or fields from which you must<br />
choose one.<br />
|<br />
[ ]<br />
$<br />
< ><br />
A vertical line indicates a choice between two or more parameters, for example:<br />
parameter | parameter<br />
Parameters are also indicated as follows:<br />
���������<br />
���������<br />
���������<br />
Brackets indicate optional parameters or fields.<br />
The first character of each MCB command is a dollar sign to distinguish it from a<br />
transaction code.<br />
Less than and greater than symbols in procedural examples indicate the default<br />
response to a system prompt.<br />
UPPERCASE<br />
Commands and other characters that you must type in to activate the command are<br />
shown in uppercase. You do not need to enter the commands or characters in<br />
uppercase, however.<br />
7833 1568–004 1–3
Introduction<br />
lowercase italic<br />
bold<br />
Variable information (such as commands and parameters) appears in lowercase italic.<br />
In examples showing interaction between user and the system, user entries are<br />
bold.<br />
Note: Braces, brackets, and vertical lines are not part of the command syntax; do not<br />
type them in. Unless otherwise indicated, use blank spaces (one or more) to separate<br />
fields.<br />
Miscellaneous Notation Conventions<br />
The following notation conventions appear in word diagrams.<br />
Asterisk (*)<br />
An asterisk in front of a word number denotes an overlay of a word. The following<br />
example shows an overlay of word 02:<br />
02 P$HDR (output header offset)<br />
*02 P$RSTYP P$CCS<br />
Dots<br />
P$HDRSIZE P$LKEY<br />
header size logical function key<br />
In this example, the half word P$HDR can be replaced with the quarter words<br />
P$RSTYP and P$CCS.<br />
Two dots (..) indicate continuation of number in the word number column.<br />
Three dots (...) indicate continuation within the word.<br />
1–4 7833 1568–004
Section 2<br />
Components and Mass Storage Files<br />
2.1. Components<br />
The main components of the MCB are<br />
• Background run<br />
• Main common bank<br />
• Main storage buffer common banks<br />
• Position identifier (PID) table common banks<br />
• <strong>Message</strong> retention file (MRF) control table common banks<br />
• Site-id table common banks<br />
• Range table common banks<br />
• Validation table index (VINDEX) common bank<br />
• <strong>Message</strong> recovery banks<br />
• MCB initialization<br />
• <strong>Message</strong> release processing<br />
• MCB dumping<br />
• II-keyin processing (from the OS 2200 console)<br />
• Network administrator action command processing<br />
• Statistics gathering and reporting<br />
The background run executes as a real-time program, continuously locking the MCB<br />
common I-bank in main storage. Much of the infrequently used background run<br />
functional capability resides in overlay segments that MCB loads into main storage<br />
through an ER LOAD$ when needed.<br />
7833 1568–004 2–1
Components and Mass Storage Files<br />
MRF<br />
Files<br />
MCB<br />
Extended Mode<br />
Common <strong>Bank</strong><br />
MCB <strong>Message</strong><br />
Recovery <strong>Bank</strong>s<br />
Integrated<br />
Recovery<br />
Utility<br />
CMS 1100<br />
Main MCB<br />
Common <strong>Bank</strong><br />
OS 1100<br />
Executive<br />
EM<br />
BM<br />
User Program<br />
User Program<br />
CFIGUTIL<br />
MRF<br />
<strong>Control</strong> File<br />
2.1.1. Background Run<br />
PIX<br />
Files<br />
MCB Main Storage<br />
Buffer Common<br />
<strong>Bank</strong>s<br />
MCB PID Table<br />
Common <strong>Bank</strong>s<br />
MCB<br />
Background Run<br />
MCB MRF <strong>Control</strong><br />
Common <strong>Bank</strong>s<br />
VINDEX<br />
Common <strong>Bank</strong><br />
Site-id Table<br />
Common <strong>Bank</strong>s<br />
Range Table<br />
Common <strong>Bank</strong>s<br />
Figure 2–1. Components and Mass Storage Files<br />
Config<br />
When using the MCB, the background run (a batch program) executes continuously. The<br />
background run consists of multiple program activities and multiple program banks.<br />
The background run performs these functions:<br />
• MCB initialization<br />
• <strong>Message</strong> release processing<br />
• MCB dumping<br />
• II-keyin processing (from the OS 2200 console)<br />
2–2 7833 1568–004
• Network administration action command processing<br />
• Statistics gathering and reporting<br />
Components and Mass Storage Files<br />
The background run executes as a real-time program, continuously locking the MCB<br />
common I-bank in main storage. Much of the infrequently used background run<br />
functional capability resides in overlay segments that MCB loads into main storage<br />
through an ER LOAD$ when needed.<br />
2.1.2. Main Common <strong>Bank</strong><br />
The main MCB common bank contains instructions and control information. It is based<br />
on BDR0/ and entered with a Load <strong>Bank</strong> and Jump (LBJ) instruction from either CMS or<br />
an application program when a function is requested. During execution, MCB common<br />
banks are temporarily based on BDR3 by the main MCB common bank.<br />
The installed version of the main common bank is a dummy bank. During MCB<br />
initialization, the installed version is entered by the background run, reloaded through ER<br />
BANK$, contracted to the proper size through an ER LCORE$, and written by the<br />
background run. This allows a revised MCB common I-bank to be installed without<br />
reinstalling the MCB product or rebooting the operating system.<br />
To protect the integrity of the MCB against errant application programs, the main<br />
common bank is configured with a guaranteed-entry point (GEP).<br />
2.1.3. Main Storage <strong>Message</strong> Common <strong>Bank</strong>s<br />
Main storage message common banks (CORBNK) contain message staging buffers and<br />
other temporary work buffers. Up to eight CORBNKs can be configured to hold<br />
messages in main storage.<br />
Also, as with the main MCB common bank, the installed version of the main storage<br />
buffer message banks are dummy banks whose actual contents are established by the<br />
background run.<br />
Once MCB is initialized, the main storage message common banks cannot be based<br />
directly by an application program. Any attempt to do so causes the application program<br />
to terminate in error.<br />
2.1.4. Position Identifier (PID) Table Common <strong>Bank</strong>s<br />
The PID table common banks consist of a small number of control information words for<br />
each PID. Up to 33 PID table common banks can be configured.<br />
The installed PID table common banks are dummy banks. The actual contents are<br />
established at MCB initialization by the background run. The PID table common banks<br />
cannot be based directly by an application program once the MCB is initialized. Any<br />
attempt to do so causes the application program to terminate in error.<br />
7833 1568–004 2–3
Components and Mass Storage Files<br />
2.1.5. <strong>Message</strong> Retention File (MRF) <strong>Control</strong> Common <strong>Bank</strong>s<br />
The MRF control common banks contain a control table for each configured MRF file. Up<br />
to two MRF control common banks can be configured.<br />
The installed MRF control common banks are dummy banks. The actual contents are<br />
established at MCB initialization by the background run.<br />
The MRF control common banks cannot be based directly by an application program<br />
once the MCB is initialized. Any attempt to do so causes the application program to<br />
terminate in error.<br />
2.1.6. Site-id Table Common <strong>Bank</strong>s<br />
The site-id table common banks contain entries that associate a site-id with a PID<br />
number. Up to nine site-id common banks can be configured.<br />
The installed site-id table common banks are dummy banks. The actual contents are<br />
established at MCB initialization by the background run.<br />
The site-id table common banks cannot be based directly by an application program once<br />
the MCB is initialized. Any attempt to do so causes the application program to terminate<br />
in error.<br />
2.1.7. Range Table Common <strong>Bank</strong>s<br />
The range table common banks contain entries for groups of consecutive PID numbers.<br />
Up to five range table common banks can be configured.<br />
The installed range table common banks are dummy banks. The actual contents are<br />
established at MCB initialization by the background run.<br />
The range table common banks cannot be based directly by an application program once<br />
the MCB has been initialized. Any attempt to do so causes the application program to<br />
terminate in error.<br />
2.1.8. VINDEX Common <strong>Bank</strong><br />
The validation table index (VINDEX) common bank contains the validation table index<br />
(VALTAB), which identifies transaction programs by 6-character codes.<br />
The installed version of the VINDEX common bank is also a dummy bank. The actual<br />
contents are established by the background run.<br />
The VINDEX bank cannot be based directly by an application program. Any attempt to do<br />
so causes the application program to terminate in error.<br />
If TRMXVT in the Exec configuration is set to a value greater than 8190, the MCB uses<br />
an ER VT$RD to access the VINDEX. In this case, the VINDEX common bank is installed,<br />
but empty.<br />
2–4 7833 1568–004
Components and Mass Storage Files<br />
2.1.9. <strong>Message</strong>-Recovery <strong>Bank</strong> for Short Recovery (MSGBNK)<br />
The MSGBNK is constructed and installed by the MCB, and is used by the Integrated<br />
Recovery Utility (IRU) during short message-recovery processing. This bank is installed as<br />
an alternate file common bank (AFCB).<br />
2.1.10. <strong>Message</strong>-Recovery <strong>Bank</strong> for Long Recovery<br />
(MSGLNGBNK)<br />
The MSGLNGBNK is constructed and installed by the MCB, and is used by the IRU<br />
during long message-recovery processing. This bank is installed as an AFCB.<br />
2.2. Mass Storage Files<br />
Three types of mass storage files are associated with the MCB:<br />
• <strong>Message</strong> retention files<br />
• MRF control files<br />
• PID index (PIX) files<br />
Each of these TIP/Network Database Server files is accessed by the main MCB common<br />
bank using an ER DM$IOW. For initialization and recovery, the background run and<br />
message recovery common bank can also access these files.<br />
2.2.1. <strong>Message</strong> Retention File (MRF)<br />
One MRF is used for overflow storage of nonrecoverable message text. All messages<br />
are staged block-by-block in main storage buffers. When main storage buffer space is<br />
exhausted, nonrecoverable message text is moved to MRF file 0/.<br />
One or more message retention files may be used for storage of recoverable message<br />
text. These are known as MRFs 1 through n, where n is less than or equal to 63. The<br />
message source or destination (PID) and the message type (input or output) determine in<br />
which MRF the message is stored. A recoverable message is staged block-by-block in<br />
main storage buffers. It is always written to the proper MRF, but is not necessarily<br />
deleted from main storage. As buffer space permits, recoverable message text is<br />
retained in main storage to avoid a subsequent mass storage read when the text is<br />
accessed for processing.<br />
2.2.2. MRF <strong>Control</strong> File<br />
The MRF control file contains information about the allocation and release of MRF space.<br />
Each MRF is composed of one or more fixed-length segments. Each segment is further<br />
divided into one or more fixed-length message blocks. The number of segments in an<br />
MRF can vary. Each segment in an MRF is free, active, or retired at any given time.<br />
7833 1568–004 2–5
Components and Mass Storage Files<br />
A free segment does not have any allocated message blocks. Any MRF may contain one<br />
or more free segments at any time.<br />
An active segment is the segment in which message block allocation currently occurs.<br />
An MRF can have a maximum of two active segments at one time: an input message<br />
allocation segment and an output message allocation segment.<br />
A retired segment has all blocks allocated. <strong>Message</strong> blocks are individually released<br />
during the normal course of message processing so the segment remains retired until all<br />
blocks are released. Then the segment becomes a free segment.<br />
The MRF control file retains a record during a system crash, or MCB abort, of the current<br />
segment states for each of the recoverable MRFs, 1 through n. The number of MRFs, n,<br />
is determined by MCB configuration. (See the MCB Installation Guide for more<br />
configuration information.) When any segment state changes, the system updates the<br />
MRF control file. The MRF control file is not updated as each message block is allocated<br />
or released because performance would suffer. The message recovery bank restores the<br />
allocation controls after system recovery.<br />
The MRF control file also contains a copy of the PID table. If the MCB configuration has<br />
the RESILIENT SGS set to YES, session-related changes to PIDs are copied into the MRF<br />
control file. This session information is available when you recover a failed MCB. The<br />
session information saved in this file includes exclusive use, input-only exclusive use,<br />
outbound open, mode change, and session close notification.<br />
2.2.3. PID Index File (PIX)<br />
A recoverable message may be recallable; this is the choice of the application designer.<br />
When you supply a PID (source or destination), the message type, and the message<br />
number, the MCB can locate a recallable input or output message from its MRF after the<br />
message is processed and released if the subject message blocks are not reallocated.<br />
Since MRF space allocation is circular, the file wraparound time determines the<br />
maximum recall period.<br />
To recall a recoverable message, the MCB makes an entry in the PID index file (PIX). In<br />
this way, the MCB retains the MRF location of the most recent input and output<br />
messages declared recallable and recoverable. The actual number of these messages is<br />
determined by MCB configuration. See the MCB Installation Guide for more configuration<br />
information.<br />
Note: A recoverable message is not automatically recallable. <strong>Message</strong> recall is an<br />
optional message attribute due to the I/O overhead implied by a PIX file update.<br />
One or more PIX files can be configured in the MCB. A PIX file of a PID is a function of<br />
the MRF that retains its recoverable input and output messages.<br />
The contents of the PIX files are not recovered or restored by the short or long message<br />
recovery processes. After short or long message recovery, the data in the PIX files is<br />
accurate up to the time the step control application group aborts, as long as the PIX files<br />
are not corrupted.<br />
2–6 7833 1568–004
Section 3<br />
<strong>Message</strong> Processing – General<br />
Concepts<br />
3.1. <strong>Message</strong> Types<br />
The <strong>Message</strong> <strong>Control</strong> <strong>Bank</strong> (MCB) recognizes four types of messages:<br />
• Input <strong>Message</strong>s<br />
An input message arrives through Communications Systems Management System<br />
(CMS) from an external source identified by a logical terminal-id (PID). The PID is an<br />
internal numeric identifier. The physical location of the originating terminal point is<br />
not communicated to the MCB. The destination of an input message is an application<br />
program.<br />
• Output <strong>Message</strong>s<br />
An output message is created by an application program and directed to an external<br />
destination identified by a PID. The physical location of the destination terminal point<br />
is not communicated to the MCB.<br />
• Pass-Off <strong>Message</strong>s<br />
A pass-off message is created by an application program and directed to another<br />
application program.<br />
• Checkpoint <strong>Message</strong>s<br />
You generate and use a checkpoint message in a long-running, recoverable,<br />
application program. The program (transaction or online batch) uses this message to<br />
break its processing into a sequence of smaller steps. In the event of a failure, you<br />
can restart the program at the most recent checkpoint.<br />
Only transaction and online batch programs can use checkpoint messages.<br />
7833 1568–004 3–1
<strong>Message</strong> Processing – General Concepts<br />
3.2. <strong>Message</strong> Attributes<br />
A message may have the following optional attributes:<br />
• Recoverability<br />
• Deferred queuing<br />
• Numbering<br />
• Audit text<br />
• Recallability<br />
• Low main storage priority (subject to early paging if storage space is needed)<br />
• Reduced output path length (ROPL)<br />
See 3.3.2 for a description of how these attributes are established for each VINDEX entry<br />
when you use the VTBUTL utility program.<br />
3.2.1. <strong>Message</strong> Recoverability<br />
If an input or pass-off message is declared recoverable, the message remains intact<br />
across system or program failures until it is successfully delivered to the proper<br />
application program and processed by that program.<br />
If an output message is declared recoverable, the message remains intact across system<br />
failures until the message transmission is acknowledged by CMS.<br />
A checkpoint message is recoverable by definition.<br />
3.2.2. Deferred <strong>Message</strong> Queuing<br />
An output message that is declared deferred is not forwarded to CMS until the<br />
application program generating the message reaches a processing success point.<br />
A pass-off message that is declared deferred is not queued for processing by the target<br />
application program until the application program that is generating the message reaches<br />
a processing success point.<br />
A recoverable output or pass-off message must have the deferred queuing attribute by<br />
definition, since this is how message recovery is synchronized with database updates.<br />
You can assign the deferred queuing attribute to a nonrecoverable output or pass-off<br />
message. Deferred queuing is preferred even for a nonrecoverable message because it<br />
ensures that external notification of program processing completion does not occur<br />
unless processing is complete.<br />
A checkpoint message is deferred by definition.<br />
3–2 7833 1568–004
3.2.3. <strong>Message</strong> Numbering<br />
<strong>Message</strong> Processing – General Concepts<br />
You can number recoverable input and output messages in two ways:<br />
• Intelligent message numbering<br />
• Unintelligent message numbering<br />
If a recoverable input message is numbered and the associated PID is configured with<br />
unintelligent numbering, a unique message number is displayed in a header with the<br />
input acknowledgment message. If an output message is numbered, and the message<br />
requests a header (see 5.9.2), the message number can be displayed. You must<br />
configure PIDs that send or receive numbered messages with either the intelligent or the<br />
unintelligent numbering option. See the MCB Installation Guide for more information<br />
about numbering options.<br />
If a numbered message is sent to a PID that is not configured for message numbering,<br />
the numbering option is removed from the message recovery options. This applies to<br />
single destination outputs as well as multiple destination outputs.<br />
For intelligent numbering, an input or output message must have the message<br />
numbering option set. The message can be either recoverable or nonrecoverable.<br />
For unintelligent numbering, an input or output message must have both the message<br />
numbering option and the recoverable option set.<br />
3.2.3.1. Intelligent Input<br />
The sending application program sends a message number with the message text. CMS<br />
extracts this number from the message protocol and presents it to MCB along with the<br />
text. MCB accepts the message as it is and does not check message numbers for<br />
duplication or sequential order. You are responsible for the uniqueness of message<br />
numbers.<br />
If CMS does not present a message number when it stores the input, intelligent<br />
message numbering does not occur. If CMS does present a message number, and the<br />
message is recoverable, the Exec message number table is updated with this number for<br />
the input PID.<br />
3.2.3.2. Intelligent Output<br />
The message number can be generated either by the application program or the Exec.<br />
MCB looks for the message number in the application interface packet. If a number is in<br />
the packet, MCB uses this number. If the packet does not contain a message number,<br />
MCB uses the number generated by the Exec. MCB does not check the message<br />
number supplied by the application.<br />
MCB presents the message number to CMS along with the output message text. CMS<br />
may send the number as part of the message protocol.<br />
7833 1568–004 3–3
<strong>Message</strong> Processing – General Concepts<br />
If the message number field in the interface packet is nonzero, the output message can<br />
be either recoverable or nonrecoverable. If the message number field is zero, the output<br />
message must be recoverable. If the message number field is zero and the message is<br />
nonrecoverable, an error status is returned. If the message is recoverable and recallable,<br />
it can be recalled using the associated message number.<br />
Note: Be careful when you use intelligent message numbering to generate message<br />
numbers. Duplicate message numbers can produce erroneous message recalls and<br />
delivery notifications. When an application program-supplied message number is used for<br />
an intelligently numbered output message, the Exec message number table is not<br />
updated for the destination PID.<br />
3.2.3.3. Unintelligent Input<br />
MCB receives a message number generated by the Exec and associates this number<br />
with the input message. After the message is staged, MCB sends to the originating<br />
terminal an input acknowledge message that contains the message number. The input<br />
acknowledge message indicates that the input message is queued to the Exec with<br />
guaranteed processing.<br />
3.2.3.4. Unintelligent Output<br />
MCB receives a message number generated by the Exec and can create an output<br />
message header as part of the output message text. The output message header<br />
contains the message number; its position within the message text is determined by the<br />
application program. CMS transmits the message number as message text.<br />
In unintelligent numbering, message numbering is not apparent to CMS. MCB transmits<br />
the input acknowledge message and the output message headers.<br />
3.2.4. Audit Text<br />
The audit text message attribute records the text of a message on the audit trail. This<br />
option is allowed only for a recoverable message. The text of a recoverable message is<br />
always written to a message retention file. If preferred, the text of a recoverable<br />
message can also be written to the integrated recovery audit trail. The message<br />
retention file provides for recovery across a system failure. Audit trail retention provides<br />
for long message recovery and for accounting or statistical analysis of message traffic.<br />
Note: If an unaudited recoverable message was written to an MRF, the message is not<br />
rewritten during a long message recovery. If the MRF containing the message was<br />
corrupted and rebuilt, and the message is still queued or active after the long message<br />
recovery, the recovery will fail. If the recovery fails, you can initialize the application<br />
group. All recoverable messages will be lost. To run long message recovery successfully,<br />
include the audit attribute on all recoverable messages. If you do not want to run long<br />
message recovery, do not use the audit attribute.<br />
3–4 7833 1568–004
3.2.5. <strong>Message</strong> Recall<br />
<strong>Message</strong> Processing – General Concepts<br />
The optional message recall attribute allows a numbered, recoverable input or output<br />
message to be recalled. For such a message, MCB creates a PIX file entry that serves as<br />
an index with which the message can be recalled. To recall it, you must specify a PID,<br />
the message number, and the message type.<br />
When a message is recalled, the system guarantees that the recall is successful only<br />
within the limits of MRF and PIX file space. The MRF file space can be reallocated if too<br />
much time has elapsed since the message was created. With respect to PIX, the system<br />
retains a record of only the N most recent recallable input and the n most recent<br />
recallable output messages per PID. See the MCB Installation Guide for information on<br />
configuring PIX length on the P$ID statement.<br />
3.2.6. Low Main Storage Priority<br />
Low main storage priority is an optional message attribute that determines whether the<br />
message text has low priority (subject to early paging) in main storage with respect to its<br />
main storage residence in MCB staging buffers. This attribute is allowed for both<br />
recoverable and nonrecoverable messages. It adjusts the message buffering scheme<br />
used by MCB and is used for messages with a relatively long life.<br />
This attribute applies to all four message types: input, output, pass-off, and checkpoint.<br />
3.2.7. Reduced Output Path Length (ROPL)<br />
ROPL is an optional message attribute that determines whether a message will be sent<br />
with the ROPL interface, significantly reducing path length and improving throughput. An<br />
ROPL message can replace a step control message when you do not need recoverability,<br />
unintelligent message numbering, message deferment, or Transaction Processing (TIP)<br />
message security.<br />
An ROPL message is queued to CMS with an ER RT$OUT instead of an ER TIP$Q. ROPL<br />
messages do not use ERs TIP$ID, TIP$TA, TIP$TC, or TIP$XMIT. A step control message<br />
is used instead of an ROPL message when:<br />
• A message is sent to a PID with a closed session.<br />
• A message is sent to a group PID (or with the multiple destination list), and any<br />
single PID within the group has a closed session.<br />
• An output message designated as recoverable or deferred is sent by an application<br />
program to a PID.<br />
• An output message is sent by an application program to a group PID (or with the<br />
multiple destination list), and any PID in the group is open to a different CMS run.<br />
• The program sending the message does not have the V execution option (see<br />
3.5.14).<br />
All destination PIDs must have a session open to the same CMS number. If any PIDs<br />
have sessions open to different CMS numbers, the message is handled as a step control<br />
message for all PIDs.<br />
7833 1568–004 3–5
<strong>Message</strong> Processing – General Concepts<br />
If CMS terminates when using ROPL output messages with an unacknowledged, paged,<br />
ROPL output message, the MRF identifiers (MID) for the message are orphaned. The<br />
MRF blocks that contain the message are suspended until MCB is terminated.<br />
If a CMS session is closed with ROPL messages queued, and another session is opened<br />
to a second application, the queued ROPL messages from the first application remain<br />
queued and undelivered until the session is reopened to the first application.<br />
If CMS spooling is enabled, and the APPLICATION network definition statement (NDS) or<br />
PID NDS is configured to negatively acknowledge (NAK) queued messages when sent to<br />
PIDs with stopped or closed sessions, any ROPL messages are negatively<br />
acknowledged and sent to the error notification program (ENP) with the NAK reason. If<br />
you create a print file for these messages, your error notification program (ENP) can<br />
generate excess print files.<br />
When CMS TIPCSU terminates normally, queued ROPL messages are not acknowledged<br />
and are sent to the ENP with the NAK reason. Again, there may be many print files.<br />
3.3. Validation Table Considerations<br />
The target of an input or pass-off message is identified by a 1-character to 6-character<br />
transaction code, and is identified internally by a corresponding entry in the VINDEX<br />
table. The VINDEX table is constructed by executing the TIP utility program VTBUTL. The<br />
table contains an entry for each valid transaction code. See the Transaction Processing<br />
Administration and Operations Reference Manual.<br />
Each VINDEX entry contains the following fields:<br />
• Application group number<br />
• Recovery options<br />
• Access mask<br />
• Input queue priority<br />
• Transaction program number<br />
3.3.1. Application Group Number<br />
Within one system, transaction processing can take place simultaneously using the<br />
communications message-buffer pool (COMPOOL) and one or more MCBs. Each<br />
processing subdivision is called an application group. (See the Integrated Recovery<br />
Conceptual Overview.) Since there is only one VINDEX table on an OS 2200 host<br />
system, each VINDEX entry contains a parameter that defines the application group<br />
number to which the VINDEX entry applies. Use the AUDIT parameter to define the<br />
VINDEX entry when you execute the VTBUTL utility. The AUDIT parameter and the<br />
application group number defined in the MCB application must be the same.<br />
If the AUDIT parameter is nonzero and the APNUMBER does not match, input or<br />
pass-off messages are rejected with the invalid transaction code error.<br />
3–6 7833 1568–004
3.3.2. Recovery Options<br />
<strong>Message</strong> Processing – General Concepts<br />
To ensure that user programs associated with a recoverable application group are<br />
recoverable, a program must specify recoverable steps. When you specify message<br />
recovery options I through T in the validation table (VALTAB) entries associated with the<br />
application group’s transaction programs, it implies an MCB interface. The interface<br />
writes recoverable messages to the application group’s message retention file (MRF) and<br />
audited messages to the audit trail.<br />
When you execute the VTBUTL utility program, the RECOVERY parameter establishes a<br />
recovery options field for each VINDEX entry. Table 3–1 defines attributes for the given<br />
transaction code.<br />
Letter<br />
Option<br />
Bit<br />
Table 3–1. Recovery Options<br />
Explanation<br />
I 17 Low-priority output message for main storage.<br />
J 16 Output message recall.<br />
K 15 Output message numbering.<br />
L 14 Audit output message text.<br />
M 13 Output message recoverable.<br />
N 12 Defer output message.<br />
O 11 Low-priority input message for main storage.<br />
P 10 Input message recall.<br />
Q 09 Input message numbering.<br />
R 08 Audit input message text.<br />
S 07 Input message recoverable.<br />
T 06 Defer input message.<br />
U 05 Release handling for recoverable locks at commit (integrated<br />
recovery only)<br />
V 04 Reserved.<br />
0 = all recoverable locks released at commit time regardless of<br />
whether they were specifically unlocked.<br />
1 = all recoverable locks that have been explicitly released (by RU,<br />
UA, UN, or WR) are released at commit time. If a lock has not<br />
been explicitly released, retain that lock.<br />
W 03 User-specified requeue action. W option is valid only if X option is<br />
set.<br />
0 implies the message is requeued.<br />
1 implies the message is queued to the system error program.<br />
7833 1568–004 3–7
<strong>Message</strong> Processing – General Concepts<br />
Letter<br />
Option<br />
Bit<br />
X 02 Rollback default action.<br />
Table 3–1. Recovery Options<br />
0 implies the step is resumed.<br />
1 implies the step is terminated.<br />
Y 01 Commit default action.<br />
0 implies the step is advanced.<br />
1 implies the step is terminated.<br />
Z 00 Recoverable program step.<br />
Explanation<br />
The foregoing options are defined in three 6-bit subfields:<br />
• Output message attributes (bits 17-12)<br />
• Input message attributes (bits 11-6)<br />
• Program execution attributes (bits 5-0)<br />
3.3.2.1. Output <strong>Message</strong> Attributes<br />
Six bits define the attributes that apply to any output message generated by this<br />
transaction during execution (unless the calling program supplies attributes to MCB on<br />
the output message staging request). These attributes are explained in 3.2.<br />
3.3.2.2. Input <strong>Message</strong> Attributes<br />
Six bits define the attributes that apply to any input or pass-off message directed to the<br />
transaction code. These attributes are explained in 3.2.<br />
3.3.2.3. Program Execution Attributes<br />
These bits specify the recovery-related attributes that apply to processing the<br />
transaction:<br />
Bit 0<br />
This bit defines a program as recoverable because the program creates recoverable<br />
output, pass-off, or checkpoint messages, or updates recoverable Network Database<br />
Server database files. If the bit is set, audit trail records are created during execution<br />
for recovery purposes. The bit must be set if the input message is recoverable (bit 7<br />
set). The bit may or may not be set if the input message is nonrecoverable (bit 7<br />
clear).<br />
3–8 7833 1568–004
Bit 1<br />
Bit 2<br />
<strong>Message</strong> Processing – General Concepts<br />
The program step is advanced (if this bit is not set) or terminated (if it is set) when a<br />
commit point such as an Network Database Server FREE/DEPART is reached, unless<br />
the program step action is specified on the commit request.<br />
The program step is resumed (if this bit is not set) or terminated (if it is set) when<br />
rollback occurs, unless a program step action is specified on the rollback request,<br />
such as an Network Database Server DEPART WITH ROLLBACK. For information<br />
about commit, rollback, and program steps, see the Integrated Recovery Conceptual<br />
Overview.<br />
3.3.3. Access Mask<br />
The VTBUTL parameter MASK defines terminal classes from which this transaction code<br />
is entered. During MCB generation, each PID is defined as a member of a terminal class.<br />
When an input message is received from a PID, the MCB verifies that the associated<br />
terminal class can access the transaction. If the MASK is unspecified, access control is<br />
not imposed. See the P$ID stream generation statement (SGS) in the MCB Installation<br />
Guide.<br />
3.3.4. Input Queue Priority<br />
The VTBUTL parameter QPRIORITY defines the terminating node within the input queue<br />
tree structure where the input or pass-off message is queued for processing. If the<br />
message is processed by a transaction program, it is dequeued by TIP scheduling based<br />
on priority and concurrency considerations. If the message is processed by a batch or<br />
demand program, the program issues an MCB request to dequeue the next message<br />
from the specified terminating node. In this case, the specified terminating node or a<br />
node above it in the tree structure should have a maximum concurrency of zero to<br />
bypass the node with TIP scheduling. For a more complete description of the input<br />
queue, see the Exec Installation and Configuration Guide.<br />
3.3.5. Transaction Program Number<br />
Each transaction code has a corresponding program number. Although CMS and user<br />
programs use transaction code to identify a program when calling MCB, MCB finds the<br />
program number and passes it to the Exec to identify the program to be scheduled. For<br />
the MCB features of exclusive use, conversational link, output delivery notification, and<br />
outbound session open, MCB saves the program number, but not the corresponding<br />
transaction code.<br />
Use caution if you modify the VALTAB records in an active system. If you change the<br />
program numbers that correspond to the various transaction programs, it is possible that<br />
wrong programs may be scheduled to process messages that are already on the input<br />
queue at the time the VALTAB updates are made, and the programs scheduled as a<br />
result of the MCB features mentioned might not be the programs you intend to be<br />
scheduled.<br />
7833 1568–004 3–9
<strong>Message</strong> Processing – General Concepts<br />
3.4. <strong>Message</strong> Processing Interfaces<br />
There are three interfaces to MCB:<br />
• A CMS interface<br />
• An application program interface<br />
• A TIP primitive interface<br />
Display Processing System and application programs that do not use TIP primitives use<br />
the application program interface. The application interface adds functions beyond those<br />
of the TIP primitives. The TIP primitive interface is a compatible replacement for the<br />
analogous COMPOOL primitives for migration to MCB.<br />
Each time a CMS or application program activity uses the MCB, it must first register with<br />
MCB by executing an initialization function call. MCB returns an error status to any<br />
program requesting data handling before the initialization request. MCB uses the<br />
initialization to establish control tables for a calling program and to register for termination<br />
notification with an ER TRMRG$. This allows MCB to regain control if there is an error in<br />
the calling program when it is not executing in MCB. MCB regains control to clean up<br />
tables and return transient facilities to the program in error.<br />
When the calling program completes processing normally, it makes a termination call to<br />
MCB. This allows an ER TRMRG$ to deregister and return transient facilities to the<br />
program.<br />
MCB also maintains control through common data bank contingencies. If an application<br />
program executing in MCB receives an asynchronous contingency, the contingency<br />
routine receives control before MCB returns a contingency to the program. This allows<br />
execution to complete immediately. Then MCB queues the contingency to the user<br />
through an ER CQUE$.<br />
While executing on behalf of the calling program activity, MCB interfaces as needed<br />
through Executive requests to the step control and audit control components of the<br />
Exec.<br />
For the CMS or application interface, MCB assumes that any input or output message<br />
has three parts:<br />
• Interface or control parameters<br />
• Auxiliary information<br />
• Text<br />
For some message types, the auxiliary information area may not be required.<br />
For the TIP primitive interface, MCB assumes that any input or output message contains<br />
these parts:<br />
• A required message parameter area (MPA)<br />
• An optional user parameter area (UPA)<br />
• Text<br />
3–10 7833 1568–004
<strong>Message</strong> Processing – General Concepts<br />
The MPA and UPA are analogous to the MCB interface parameters area and the auxiliary<br />
information area of the CMS and application interfaces, but the packet fields have<br />
different definitions. Figure 3–1 shows each of these parts for the three types of<br />
interfaces.<br />
00<br />
07<br />
010<br />
CMS 1100<br />
Packet Interface<br />
MCB<br />
Interface<br />
Parameters<br />
Auxiliary<br />
Information<br />
Text<br />
Text<br />
Text<br />
Application Program<br />
Primitive Interface<br />
<strong>Message</strong><br />
Parameter<br />
Area (MPA)<br />
User<br />
Parameter<br />
Area (UPA)<br />
(optional)<br />
Text<br />
Application Program<br />
Packet Interface<br />
MCB<br />
Interface<br />
Parameters<br />
7833 1568–004 3–11<br />
00<br />
017<br />
020<br />
021<br />
Figure 3–1. <strong>Message</strong> Format<br />
Site-id<br />
(optional)<br />
Auxiliary<br />
Information<br />
In a CMS program using TIP session control, A0 points to word 0 of the interface packet.<br />
The word immediately before word 0 is expected to contain the TIP session identifier on<br />
all appropriate calls to MCB (see Figure 4–1).<br />
The Load <strong>Bank</strong> and Jump (LBJ) instruction that calls the MCB common I-bank must base<br />
MCB on BDR0. Before the LBJ, the application program must have a bank based on<br />
BDR0. See 5.2 for more details on calling the MCB.<br />
Text<br />
Text<br />
Text
<strong>Message</strong> Processing – General Concepts<br />
In Figure 3–1, the packets for the CMS and application program interfaces correspond to<br />
the first block shown under CMS and the application program. The MCB interface<br />
parameters are contained in words 00 to 07 for the CMS interface, and in words 00 to<br />
017 for the application program interface.<br />
A special packet version exists for the application interface when a program uses site-ids.<br />
Two extra words, 020 and 021, exist for the site-id in this case.<br />
The auxiliary information starts at word 010, 020, or 022 of the respective packet. Its<br />
length is defined by a parameter in the first part of the packet (P$AUX). MCB does not<br />
alter this auxiliary information. It is passed between CMS and application programs so<br />
the application can construct proper output and properly interpret input. The specific<br />
content of this auxiliary information area is dependent on the device handler that sends<br />
the message to, or receives the message from, the network. MCB also allows an<br />
auxiliary information area to be present in a pass-off or checkpoint message. In this case,<br />
MCB passes the auxiliary information to the receiving program.<br />
The blocking factor for message control information and text within MCB is an internal<br />
MCB consideration. CMS and the application program interfaces can store and retrieve<br />
message text by specifying any number of characters per request.<br />
3.4.1. Basic Mode Low-Level Interface<br />
Both the CMS and basic mode application program interfaces share the following calling<br />
sequence:<br />
��� ��������� �������<br />
����� ����������<br />
��� �����������<br />
MCB destroys the contents of the program’s registers X11, A0 to A5, A16 to A19, and<br />
R0 to R3.<br />
The MCB entry point is 01000. This 18-bit value is defined in the CBEP$$MCBn element<br />
produced from the MCB build, where n is the step control application number. The<br />
entry-point label is MCB$ENT.<br />
The MCB BDI is defined in the CBEP$$MCBn element in the utility file from the MCBBDI<br />
configuration SGS. Two labels are produced: MCBBNK and MCBBNK$. These labels are<br />
not unique if more than one MCB is installed. You must resolve these two labels at<br />
collection time. See 3.4.2.<br />
<strong>Control</strong> returns to the instruction following the LBJ, unless the calling program specifies<br />
some other return point in the packet (P$RTN). The P$RTN packet cell cannot be used if<br />
the CBSECURITY configuration parameter is set to YES. On return, A0 contains zero in<br />
H1 and the packet address in H2. A1 contains a status. Specific status codes are listed in<br />
Appendix B.<br />
3–12 7833 1568–004
<strong>Message</strong> Processing – General Concepts<br />
3.4.2. Application Programming Considerations<br />
Multiple MCB applications contain multiple MCB code banks. You must be sure to link a<br />
transaction program and the MCB code bank correctly. For further reference, see the<br />
examples listed in Table 3–2.<br />
Table 3–2. Example Programs<br />
File Name Explanation<br />
GN.MCBDEF-UCOB Example UCOBOL definitions for the MCB packet<br />
GN.MCBDEF-UFTN Example UFORTRAN definitions for the MCB packet<br />
GN.EXAMPLE-UCOB Example UCOBOL program<br />
GN.MCBDEF-MASM Example Meta-Assembler definitions for the MCB packet<br />
GN.EXAMPLE-ENP Example error notification program<br />
GN.EXAMPLE-SEP Example system error program<br />
GN.EXAMPLE-FTN Example FORTRAN program<br />
GN.MCBDEF-FTN Example FORTRAN definitions for the MCB packet<br />
GN.MCBDEF-UMASM Example UMASM definitions for the MCB packet<br />
GN.EXAMPLE-COB Example COBOL program<br />
GN.MCBDEF-COB Example COBOL definitions for the MCB packet<br />
GN.EXAMPLE-UFTN Example UFORTRAN program<br />
GN.EXAMPLE-UC Example UC program<br />
GN.MCBDEFCOPY/H Example UC definitions for the MCB packet<br />
GN.UCLINK Example of link of a UC program<br />
GN.UCMCBLIB Example library of MCB UC libraries<br />
The following examples, in basic mode, show correct linkage for an example<br />
application number 3. For information on using extended mode, see the C<br />
Compiler Programming Reference Manual Volume 1, C Compiler<br />
Programming Reference Manual Volume 2, COBOL Compiler Programming<br />
Reference Manual Volume 1, COBOL Compiler Programming Reference<br />
Manual Volume 2, FORTRAN Compiler Programming Reference Manual<br />
Volume 1, FORTRAN Compiler Programming Reference Manual Volume 2,<br />
and Application Development Solutions Programming Guide.<br />
7833 1568–004 3–13
<strong>Message</strong> Processing – General Concepts<br />
In basic mode, there are several methods to resolve the BDI and entry-point values of<br />
multiple MCBs:<br />
• In MASM programs, use the generic bank name MCBBNK or MCBBNK$:<br />
����� ���������� �� ����� �����������<br />
��� ����������� �� ��� �����������<br />
You must resolve the generic label MCBBNK or MCBBNK$ with one of the following<br />
three methods:<br />
− The first method requires the RB element name CBEP$$MCB3. The MAP<br />
directive is:<br />
�� ����������<br />
Though you do not need to know the MCB product file name, you do need to<br />
know the application number (in this case, 3)<br />
− The second method requires knowledge of the MCB bank’s BDI. The MAP<br />
directive is<br />
��� ���������������<br />
400600 is the BDI of the MCBBNK bank for application 3.<br />
− The third method requires knowledge of the MCB product installation file name.<br />
The MAP directive is<br />
��� ���������<br />
• In ASCII FORTRAN (FTN) and COBOL (ACOB) programs that use the primitive<br />
interface, you must use one of the MAP directives listed in the previous bullet.<br />
3.4.2.1. Basic Mode and Extended Mode Interfaces<br />
A few distinctions can be drawn between the basic mode interface and the extended<br />
mode interface.<br />
You can use an alternate return point with the basic mode interface. This 18-bit address<br />
is kept in cell P$RTN in the interface packet. In extended mode, the RTN instruction does<br />
not allow return to a specific address. Rather, the RTN instruction signals that<br />
information contained in the most recent return control stack (RCS) frame, created by the<br />
call (or LBJ/CALL), is being used.<br />
You cannot use the alternate return mechanism in extended mode. Packet cell P$RTN<br />
must be set to zero. Some users of this mechanism are guaranteed-entry point (GEP)<br />
common banks, that force the MCB to return to their GEP because an in-line return is<br />
impossible. This workaround is not necessary in extended mode, because the RTN<br />
instruction allows execution to resume at any location within a GEP common bank.<br />
3–14 7833 1568–004
<strong>Message</strong> Processing – General Concepts<br />
Batch programs, demand programs, TIP application programs, mapped absolute<br />
elements, statically linked and dynamically linked object modules (OM) are all eligible to<br />
call the EMMCB in extended mode. The MCB product requires only that the basic mode<br />
interface rules be followed for MCB callers, and that Universal Compiling System (UCS)<br />
interface rules be followed for EMMCB callers.<br />
3.4.2.2. Mixed-Mode Considerations<br />
Programmers constructing mixed-mode absolute elements must be aware of the<br />
method by which the entry point is resolved. The extended mode entry point<br />
(MCB$ENT = 202662001000) is defined only in the OM element CBEP$EMMCBn, where<br />
n is the step control application number. A program that contains both basic mode and<br />
extended mode banks cannot force the Collector to recognize the OM element<br />
CBEP$EMMCBn. The basic mode entry point (MCB$ENT = 01000) is defined only in the<br />
relocatable element CBEP$$MCBn, which is recognized by the Collector. Extended mode<br />
and basic-mode interfaces are mutually exclusive. A mixed-mode program can use either<br />
interface, but not both.<br />
3.5. Optional Features<br />
An application may use the following optional message processing features:<br />
• Conversational link<br />
• Multiple destination output<br />
• Rotary output<br />
• Unsolicited output<br />
• Delivery notification<br />
• Test and training modes<br />
• MCB session control<br />
• Exclusive use of a PID<br />
• PID site-id table<br />
• IBM_ terminal to logical UTS 400 terminal<br />
• Input message control<br />
• Output message control<br />
• TIP session control<br />
• Program options (VALTAB and XQT)<br />
• Recovery bank protection<br />
• TIP message security<br />
• MCB file security<br />
• User session reestablishment<br />
• Partitioned Applications<br />
7833 1568–004 3–15
<strong>Message</strong> Processing – General Concepts<br />
• Statistics monitor transaction<br />
• MRF threshold control<br />
• User message control<br />
3.5.1. Conversational Link<br />
The conversational link feature allows an application program to direct input from a<br />
specific PID to a specific transaction, without requiring a transaction code. The<br />
application establishes the link to the transaction when it issues an output to the PID that<br />
contains conversational link setup parameters. After the link is established, the next input<br />
message from the PID is directed to the specified transaction. After input is received<br />
from the PID, the conversational link is cleared. The link must be reestablished to direct<br />
any additional input from the PID to the transaction.<br />
An established, unused link can be cleared only by another output that establishes a new<br />
link. The system retains the most recent link established with a PID until an input<br />
message is received from that PID. If the application requires that output messages be<br />
inhibited until the input link is used, the exclusive use feature of the MCB should be<br />
considered as an alternative to conversational link.<br />
Use the conversational link feature when the application system needs direct, interactive<br />
control of an auxiliary device at a terminal, such as a tape cassette on a UNISCOPE<br />
display terminal. In this mode, device status conditions are directed to the application in<br />
the form of an input message to the program, identified by the conversational link<br />
transaction code. The auxiliary information area defines how the conversational link is<br />
used in this manner.<br />
In the event of component or system failure, conversational link is retained across a<br />
recovery of CMS and MCB only if CMS is configured RESILIENT and MCB is configured<br />
RESILIENT YES.<br />
3.5.2. Multiple Destination Output<br />
An output request can explicitly direct an output message to multiple destinations by<br />
specifying a list of output PIDs.<br />
An output request can implicitly direct an output message to multiple destinations by<br />
specifying a group PID. The members of a given group PID are established by<br />
MCBsystem generation.<br />
3.5.3. Rotary Output<br />
An output request can explicitly direct an output message to a group PID with a<br />
specification that the message be sent to only one member of the group PID. The<br />
system distributes messages directed in this manner among the members of the group<br />
PID on a rotary basis. This is useful, for example, when hard copy messages need to be<br />
continuously delivered to a physical location with more than one output device. In this<br />
situation, it does not matter which device receives a given message, but it is better to<br />
3–16 7833 1568–004
<strong>Message</strong> Processing – General Concepts<br />
keep all of the devices equally busy to distribute the workload and to prevent premature<br />
mechanical deterioration of one or more devices.<br />
3.5.4. Unsolicited Output<br />
An output request can explicitly direct an unsolicited output message to an interactive<br />
terminal. The message is queued and the terminal operator is notified of possible<br />
queued, unsolicited output, for example, through a message-waiting indicator. When the<br />
operator selects the message to be dequeued, for example, through a message-waiting<br />
function key, the message is transmitted. If both unsolicited output and conversational<br />
link are specified for a message, CMS does not transmit the text of the message to the<br />
terminal. The conversational link is used when the request for the message is received,<br />
but the output is not sent.<br />
3.5.5. Delivery Notification<br />
When the system stages a given output message, the calling program may request that<br />
the application system be notified when delivery occurs. This is useful, for example, to<br />
pace continuous output to a printer or tape cassette. The notification occurs as an<br />
internally created and scheduled pass-off message stating that a message to a given PID<br />
was transmitted.<br />
Requesting delivery notification on a message does not prevent the application from<br />
continuing with additional output messages. For example, the application may create<br />
continuous output messages in groups of five with delivery notification requested on the<br />
fifth message in each set. The program does not continue with the next set of output<br />
messages until delivery notification occurs. This prevents the system from being flooded<br />
by output from one program.<br />
3.5.6. Test and Training Modes<br />
Four modes of application program execution are recognized by TIP and Universal<br />
Database <strong>Control</strong>:<br />
• Normal<br />
• Training<br />
• Test<br />
• Test/Training<br />
3.5.6.1. Training Mode<br />
Training mode trains a new end user of an application system.<br />
In training mode, you invoke and execute a normal production copy of an application<br />
program. The application program is not notified that it is executing in training mode.<br />
During execution, an alternate database is accessed and updated, if appropriate. This<br />
alternate database is specifically set up for training. It is often a functional subset of the<br />
online database, and training functions are limited accordingly.<br />
7833 1568–004 3–17
<strong>Message</strong> Processing – General Concepts<br />
3.5.6.2. Test Mode<br />
Test mode is for debugging a new or revised application program before putting it into<br />
production. In test mode, as opposed to training mode, you invoke an alternate copy,<br />
presumably one that has not been debugged, of an application program rather than the<br />
normal production program. Like training mode, test mode is transparent to the<br />
application program. Therefore, you do not need to modify source code after you test<br />
your program.<br />
During execution in test mode, the system accesses the online database and captures<br />
attempted database updates. The system cannot update the online database because it<br />
interprets the application program as not debugged.<br />
In addition to capturing database updates, the system imposes other restrictions on<br />
execution results to minimize the impact upon the online production system.<br />
See 4.5.10 for a description of test mode usage on systems configured for concurrent<br />
operation of COMPOOL and MCB under CMS. Also, see the Transaction Processing<br />
Administration and Operations Reference Manual for a description of the VALTAB status<br />
bits J and L. The L bit defines how the test copy input is stored with MCB or COMPOOL.<br />
3.5.6.3. Test/Training Mode<br />
In test/training mode, you can debug a new or revised application program with fewer<br />
restrictions, usually after running the program successfully in test mode.<br />
As in test mode, you invoke and execute an alternate copy of the program rather than<br />
use the production copy.<br />
As in training mode, you access the alternate, training database. In test/training mode,<br />
the system removes the restrictions imposed in test mode on execution results.<br />
3.5.6.4. Mode Establishment<br />
The system determines the mode of program execution at the start of a program step<br />
and does not change it until step termination. The mode is established by the way the<br />
associated step was created.<br />
The execution mode of transaction input from a given terminal is a function of the current<br />
mode of that terminal. MCB establishes the initial mode of each PID during MCB<br />
configuration. During system operation, you can change the mode of a given PID when<br />
you send output to the PID.<br />
The execution mode of pass-off and checkpoint messages is implicit from the mode of<br />
the program that created the pass-off or checkpoint message. However, you can<br />
explicitly override the execution mode when you create a pass-off message.<br />
3–18 7833 1568–004
<strong>Message</strong> Processing – General Concepts<br />
The execution mode of a batch or demand program that creates a program step without<br />
retrieving an input, pass-off, or checkpoint message is determined by the program @XQT<br />
options O and Y:<br />
O option Test mode<br />
Y option Training mode<br />
O and Y options Test and Training mode<br />
The execution mode of a transaction or online batch program that creates a program step<br />
without retrieving an input, pass-off, or checkpoint message is determined by the<br />
VALTAB program OPTIONS field O and Y options.<br />
3.5.6.5. Mode Interpretation<br />
During program execution, both TIP and Universal Database <strong>Control</strong> are sensitive to the<br />
program execution mode and condition their processing accordingly. If the MCB<br />
configuration has the RESILIENT SGS set to YES, the mode is retained across a failure.<br />
For a description of TIP interpretation, see the Transaction Processing Programming<br />
Reference Manual. For a description of Universal Database <strong>Control</strong> interpretation, see<br />
the Network Database Server for ClearPath OS 2200 Administration and <strong>Support</strong> Guide.<br />
3.5.7. MCB Session <strong>Control</strong><br />
A session is a connection between CMS and an entity in the network known to CMS.<br />
When a session exists, CMS associates the session with one of several applications<br />
configured in CMS. See the CMS 1100 Operations Reference Manual. A session may be<br />
established automatically by CMS through an operations command or with a command<br />
from a program using MCB.<br />
When a session exists between CMS and a network entity, no new requests for<br />
sessions with the same entity are accepted. The existing session must end before a new<br />
session can begin. A session associated with MCB can be used by all programs<br />
simultaneously unless the PID is held in exclusive use by one program.<br />
If the MCB configuration has the RESILIENT SGS set to YES, the sessions established by<br />
a transaction using the MCB (outbound open) are retained across a failure. These<br />
sessions are either kept open or are reopened by a CMS that is configured with a<br />
RESILIENT parameter on the APPLICATION NDS. If the transaction has requested<br />
session close notification and the session cannot be reestablished during recovery<br />
processing, the transaction is notified that the session is closed.<br />
MCB session control gives application programs the ability to open sessions, close<br />
sessions, and to receive notification of aborted or externally closed sessions.<br />
3.5.7.1. Outbound Open Session Establishment<br />
An application program can open a session on a PID that has no session open.<br />
7833 1568–004 3–19
<strong>Message</strong> Processing – General Concepts<br />
3.5.7.2. Outbound Session Close<br />
An application program can close a session previously opened by an outbound open<br />
request.<br />
3.5.7.3. Session State Changes<br />
An application program can receive notification of sessions that are abnormally or<br />
externally closed or aborted.<br />
3.5.8. Exclusive Use of a PID<br />
A program may request exclusive use of a PID. If the request is accepted, that program<br />
is the target of all future input until exclusive use is revoked.<br />
Only the owner of exclusive use is allowed to create output destined for the exclusively<br />
held PID. This owner is a program that is currently processing a message having the<br />
same transaction program number as the message being processed when exclusive use<br />
was turned on.<br />
An input-only exclusive use feature is also provided that directs the inputs to a specific<br />
program, but no control is provided on the outputs to the specific PID.<br />
If the MCB configuration has the RESILIENT SGS set to YES, exclusive use information<br />
is retained across a failure. If the transaction requested session close notification and the<br />
session cannot be reestablished during recovery processing, the transaction is notified<br />
that the exclusive use session is closed.<br />
3.5.9. PID Site-id Table<br />
Instead of using a PID number in the application interface, you can use an ASCII<br />
8-character site-id. To use this feature, you must build the PID site-id table during MCB<br />
generation. The site-ids come from CMS system configuration statements and can be<br />
used only on the initialize, read input, and store output functions. A site-id can be<br />
returned on the initialize or read input function requests. A site-id is accepted with the<br />
store output function request. Note that both building the PID site-id table and using<br />
site-ids when the table exists are optional.<br />
3.5.10. IBM Terminal to Logical UTS 400 Terminal<br />
An application program may communicate with any one of several different device types.<br />
If the physical device uses IBM hardware protocols (3270 terminals) and is connected<br />
through the BSC 3270 program product, the program may communicate with a device in<br />
UTS 400 mode. In the MCB, two fields in the auxiliary information area of the interface<br />
packet describe the device type:<br />
• P$TTYP defines the logical type.<br />
• P$RTYP defines the actual hardware type.<br />
3–20 7833 1568–004
<strong>Message</strong> Processing – General Concepts<br />
P$RTYP always contains the code for the IBM 3270 when you use the BSC 3270<br />
program product. When a session is first opened, the terminal handler operates in<br />
emulation mode. An input message finds the code for the UTS 400 terminal in P$TTYP.<br />
An application program can change the terminal handler mode for this session by sending<br />
an output message that has the 3270 code in P$TTYP.<br />
P$TTYP defines the form of the input message. Many application programs prepare<br />
output in accordance with the input form and then have no further use for the terminal<br />
type. A program that uses the terminal type may inspect P$RTYP. If P$RTYP defines a<br />
3270, the program alters P$TTYP, if necessary, to establish the desired logical type (UTS<br />
400 or 3270 in emulation mode). If you alter P$TTYP in the output auxiliary information<br />
area, the new P$TTYP defines the form of the output message. P$TTYP is defined for all<br />
subsequent input messages during the session, unless you alter it again.<br />
It is possible for P$TTYP to be changed frequently. A single transaction performing the<br />
proper P$TTYP setting, according to a unified session purpose, would be more typical.<br />
Usually, this transaction will be an initial transaction, specified on the PID configuration<br />
statement, which has an EU-NAME with a 3270 association.<br />
This capability is provided only for sessions using the BSC 3270 program product.<br />
3.5.11. Input <strong>Message</strong> <strong>Control</strong><br />
When a recoverable numbered input message is transmitted from a terminal (PID)<br />
configured for input message control, further input is not allowed until the MCB input<br />
acknowledgment (ACK) message is displayed on the terminal. When input is attempted,<br />
MCB discards the input and a WAIT - LAST INPUT IGNORED message is displayed. MCB<br />
will accept additional inputs only after the input ACK message is displayed on the<br />
terminal.<br />
3.5.12. Output <strong>Message</strong> <strong>Control</strong><br />
When this option is configured, output messages sent to a PID with no open session are<br />
rejected. Output message control prevents core buffers and MRF space from being used<br />
by undeliverable messages. If a message is undeliverable for any reason other than a<br />
closed session, the message is not rejected.<br />
To create multiple destination messages, there must be a session open for all PIDs or<br />
group PIDs with output message control configured. The message is rejected if any PID<br />
has a closed session.<br />
If you encounter problems with tight MCB resources, check for congestion caused by<br />
output messages to PIDs that do not have an open session. You may want to configure<br />
those PIDs to use output message control. Use output message control if you plan to<br />
configure spooling for CMS.<br />
7833 1568–004 3–21
<strong>Message</strong> Processing – General Concepts<br />
3.5.13. TIP Session <strong>Control</strong><br />
This level of MCB supports the TIP session control feature of OS 2200 security. No MCB<br />
configuration or generation changes are needed to support this feature. However, proper<br />
levels of the Exec, IRU, and CMS are required to make use of TIP session control.<br />
See the MCB Installation Guide for information on configuring and running TIP Session<br />
<strong>Control</strong> in a PA environment.<br />
3.5.14. Program Options (VALTAB and XQT)<br />
A program that uses session control or ROPL output must run with the V option set in<br />
one of two ways:<br />
• OPT,V set in the VALTAB for transaction programs<br />
• @XQT,V for batch or demand programs<br />
In session control, without the V option set, an error status is returned to the calling<br />
program.<br />
3.5.15. Common <strong>Bank</strong> Security<br />
This level of MCB supports the common bank security feature of OS 2200 security. You<br />
must have the proper levels of the Exec, COMUS, and IRU to make use of common bank<br />
security. You need a configuration parameter to invoke common bank security<br />
protection. (See the MCB Installation Guide for more information.) The MCB short and<br />
long message recovery banks are installed as alternate file common banks (AFCB).<br />
If both TIP session control and TIP file security (OS 2200 security features) are<br />
configured, and common bank security is not configured (CBSECURITY=NO), you cannot<br />
access the TIP files unless the attributes of the TIP file (created from the MCB<br />
installation) match the user-id attributes of the MCB caller. To match these attributes,<br />
either run with CBSECURITY=YES in your configuration, or manually match the TIP file<br />
attributes to the user-id attributes of the MCB caller.<br />
3.5.16. TIP <strong>Message</strong> Security<br />
This level of MCB supports the TIP message security feature of OS 2200 security. You<br />
must have the proper levels of the Exec and CMS to make use of TIP message security.<br />
No MCB configuration or generation changes are needed to support this feature. The<br />
MCB does not perform specific checking of message attributes, but it does enforce<br />
security decisions made by the Exec. The MCB must create some internally generated<br />
messages with specific attributes defined by the security complex in the Exec. These<br />
messages include inputs to the following:<br />
• Error notification program (see 8.3)<br />
• Delivery notification (see 3.5.5 and 5.10)<br />
• Session control notification (see 5.11)<br />
3–22 7833 1568–004
3.5.17. MCB File Security<br />
<strong>Message</strong> Processing – General Concepts<br />
You can control the public/private access attributes of the files that MCB catalogs for<br />
you. These include the MRF <strong>Control</strong> File, the MRFs, the PIX files, and the dump files.<br />
Be careful to give the proper access rights to all MCB callers when you ask the MCB to<br />
make the files private. If you do not give the proper access rights, MCB callers will not be<br />
able to access the files.<br />
When configuring TIP File Security in Exec, be careful to assign all MCB callers the same<br />
clearance level regardless of the public/private attribute. Do not use TIP File Security<br />
unless the MCB has been configured for Common <strong>Bank</strong> Security.<br />
3.5.18. User Session Reestablishment<br />
Sessions can be reestablished after failures of CMS or MCB if each of these products is<br />
configured for resiliency. See the CMS 1100 Installation and Configuration Guide.<br />
• CMS holds all sessions open and waiting during an MCB failure and subsequent<br />
MCB recovery. CMS reestablishes any outbound open sessions reported by the<br />
MCB on a CMPIDS$$ call after a CMS failure.<br />
• The system notifies any transaction requesting session close notification of session<br />
closure if the session cannot be reestablished during recovery processing.<br />
• If you initialize the application group after an MCB failure in a resilient environment,<br />
CMS sessions remain in an open/wait state. Sessions in the MCB are marked closed<br />
because the MCB was not recovered. To resolve this inconsistency, after the<br />
application group is initialized and the MCB is up, enter these commands to CMS:<br />
���� �������� ������<br />
�� �������� ������<br />
This step is necessary only when CMS and MCB are configured as RESILIENT.<br />
3.5.19. Partitioned Applications<br />
Partitioned Applications requires MCB and CMS configured with the correct resilient<br />
configuration and correctly configured Exec. See Partitioned Applications Planning,<br />
Installation, and Operations Guide and the Partitioned Applications Conceptual Overview<br />
for more information.<br />
• The Partitioned Applications feature adds TIP scheduling on both the primary and the<br />
backup host to the functions of Hot-Standby and User Session Reestablishment.<br />
• The Partitioned Applications feature lets you move an application and its related<br />
sessions from one host to another with minimal interruption of the application<br />
environment. The IRU application recovery program (APPREC) utility, contained in the<br />
Partitioned Application feature, restarts MCB after an MCB failure or a system failure<br />
under these conditions:<br />
• MCB is automatically restarted on the backup host after a primary host failure.<br />
• MCB is automatically restarted on the primary host after an MCB failure.<br />
7833 1568–004 3–23
<strong>Message</strong> Processing – General Concepts<br />
• Sessions are automatically reestablished after either of these failures.<br />
3.5.20. Statistics Monitor Transaction<br />
When MCB is generated, an absolute element is produced that you can install as a<br />
transaction. The transaction displays information on MCB resources and statistics. See<br />
the MCB Installation Guide and the MCB Administration and Operations Guide for more<br />
information.<br />
3.5.21. MRF Threshold <strong>Control</strong><br />
You can use the $THRES keyin to define the threshold limits of the message retention<br />
files (MRF). When allocated space in an MRF reaches the upper limit you set, a message<br />
appears on the system console. The message appears once for a single MRF unless:<br />
• The allocated space in the MRF falls below the lower limit you set.<br />
• The $THRES command is issued again with the ON parameter.<br />
• The MCB is terminated and restarted.<br />
See the MCB Operations Reference Manual for more information.<br />
3.5.22. User <strong>Message</strong> <strong>Control</strong><br />
This feature allows input messages to be either discarded or rejected. <strong>Message</strong>s can be<br />
either thrown away (discarded) or thrown away with a reject message returned to the<br />
originator (rejected). The decision to discard or reject a message is taken by site supplied<br />
Tailored <strong>Message</strong> Analysis (TMA) code (see Appendix E).<br />
User message control can be used to protect the system from resource depletion.<br />
During periods of system overload or periods of application maintenance, this feature<br />
allows you to provide priority to input messages by either selectively or globally rejecting<br />
them. You can also use this feature to temporarily “ban” a specific transaction that is<br />
known to be causing problems.<br />
3.6. TeamQuest Transaction Performance Auditing<br />
System (TPAS)<br />
TPAS is a measurement tool that provides system performance analysis information in a<br />
transaction processing environment. It collects data and produces a message<br />
management report with a summary of performance statistics for calls to MCB.<br />
MCB does not call TPAS for data gathering during extended mode calls or TIP primitive<br />
calls. When you use these interfaces, the message management report may not be<br />
complete.<br />
3–24 7833 1568–004
Section 4<br />
CMS Interface<br />
This section explains the interface available for communications programs such as<br />
CMS 1100, SILAS, Communications Interface for Transaction Applications, and similar<br />
programs. In this section, the term CMS refers to any of these programs.<br />
After MCB is initialized by the MCB background run, one or more CMS programs may<br />
interface with MCB. Before using MCB, each CMS must perform preparatory action, as<br />
explained in 4.1.<br />
Multiple activities from the same CMS can interface to MCB. Successive segments of<br />
the same message can be stored or retrieved by different activities as long as only one<br />
activity is accessing a message at any time.<br />
Each CMS activity that performs message processing through MCB uses the set of<br />
functions described in this section. The first function performed by each activity must be<br />
CMS activity initialization (CMINIT$$). In addition to the functions described in this<br />
section, an activity initialized by the CMINIT$$ function can use some of the application<br />
program functions described in Section 5. The only application program functions<br />
available to a CMS activity are SEND$$, CANCEL$$, ENQUE$$, and PIDSTAT$$. For<br />
calls with these functions, the CMS activity must use the calling sequence described in<br />
Section 5 rather than the calling sequence explained in this section.<br />
4.1. Requirements of CMS<br />
Before any CMS activity can begin using MCB, CMS must perform the following<br />
preparatory processes:<br />
• Elevate to real-time status by performing ER RT$ with each activity that calls MCB.<br />
• Connect to Transaction Processing (TIP) by doing the following with at least one<br />
activity of the program:<br />
��� ����<br />
��� ����<br />
��� ����<br />
�� ������<br />
7833 1568–004 4–1
CMS Interface<br />
• Perform ER-CMS$REG with one activity of the program to register the program as a<br />
CMS and establish a TIP output message queue, sometimes referred to as the<br />
routing output queue (ROQ). Refer to the Transaction Processing Administration and<br />
Operations Reference Manual for an explanation of ER-CMS$REG and of the ROQ<br />
and its entries. Each activity performing ER-CMS$REG must obtain a unique CMS<br />
number. CMS passes that CMS number to MCB on the CMINIT$$ function call (see<br />
4.5). Several activities of the same program may use the same CMS number when<br />
calling MCB if one of them has registered the number via ER-CMS$REG. When<br />
performing ER-CMS$REG, specify the output queuing option.<br />
Note: It is permissible for multiple activities of a program to perform ER CMS$REG<br />
and obtain different CMS numbers for passing to MCB, but MCB regards the<br />
activities as being from separate programs.<br />
CMS identifies to the Exex which PIDs are under its control by performing ER RT$PID.<br />
EXEC maintains a PID matrix to record the CMS-PID relationship. When an output<br />
message is queued for a particular PID, EXEC uses the PID matrix to identify the CMS<br />
ROQ which receives the queue entry for that output.<br />
If CMS passes a nonzero value in packet field P$VER on the CMINIT$$ call (see 4.5),<br />
then CMS must be prepared to process outbound session open requests which are<br />
queued to it on the ROQ. For each outbound session open request, CMS must call MCB<br />
with one of the Session Status Notification functions (SESSOP$$ or SESSRJ$$, see 4.5).<br />
Failure to do so can result in application programs being hung in MCB.<br />
A CMS activity must be allowed to deactivate for test-and-set queuing, mass storage I/O,<br />
or audit trail writing.<br />
4.2. Basic Mode Calling Sequence for CMS<br />
Refer to 3.4.1 for a description of the calling sequence.<br />
Register A0 points to word 0 of the interface packet (see 4.4). If TIP session control is<br />
enabled, the word immediately preceding word 0 must contain the TIP session id when<br />
CMS calls MCB with the Store Input, Receive Output <strong>Message</strong>, Output <strong>Message</strong><br />
Positive Acknowledge, or Output <strong>Message</strong> Negative Acknowledge (CMSTOR$$,<br />
CMRECV$$, CMSACK$$ or CMNAK$$) functions. If TIP session control is not enabled,<br />
that word must exist in the bank containing the packet, but MCB ignores the contents of<br />
that word.<br />
For all the functions explained in this section, CMS must have the following addressing<br />
environment at the time CMS enters MCB:<br />
• The main I-bank (BDR0) is any I-bank. MCB takes the place of this bank as MCB is<br />
entered, and MCB rebases this bank when MCB returns to CMS.<br />
• The main D-bank (BDR2) is any D-bank. MCB unbases this bank and rebases it<br />
before returning to CMS. CMS cannot have either the packet or this bank when MCB<br />
is called. The bank must not be a guaranteed entry point bank.<br />
4–2 7833 1568–004
CMS Interface<br />
• The utility I-bank (BDR1) holds the packet and the data buffer that CMS passes to<br />
MCB. MCB does not unbase this bank. This bank must not be read-only, and its<br />
address limits must not overlap the MCB common banks that MCB bases on BDR0<br />
and BDR3. Because the upper limit for the MCB I-bank can be as high as 0127777,<br />
set the lower limits of the CMS bank at 0130000 or higher. If the limit needs to be<br />
below 0130000, see the MCB Installation Guide.<br />
• The utility D-bank (BDR3) is any D-bank. MCB unbases this bank, then rebases it<br />
before returning to CMS. As with the main D-bank, neither the packet nor the data<br />
buffer can be in this bank, and the bank must not be a guaranteed-entry point bank.<br />
In addition to the functions described in this section, a CMS activity (an activity initialized<br />
by the CMINIT$$ function) can use some of the application program functions described<br />
in Section 5. When you use those functions, the CMS activity must conform to the<br />
addressing requirements listed in 5.2 rather those listed in this section. The only<br />
application program functions available to a CMS activity are SEND$$, CANCEL$$,<br />
ENQUE$$, and PIDSTAT$$.<br />
4.3. Extended Mode Calling Sequence for CMS<br />
A program written in UCS C (UC) may call MCB as a CMS program with<br />
or<br />
��������� ������������ ����������� ��������� ���������������<br />
���������� ������������ ����������� ��������� ���������������<br />
where n is the application number, and where each of the parameters is defined as a<br />
pointer to void.<br />
The entry point name can be resolved by the linking system using the CBEP$EMMCBn<br />
element in the MCB installation file.<br />
The parameters are as follows:<br />
• Parameter One points to the interface packet as shown in 4.4 with the following<br />
exceptions:<br />
− The word containing P$SESID is not part of the packet. Parameter four is used<br />
instead of P$SESID.<br />
− P$BUFF must be zero. Parameter two is used instead of P$BUFF.<br />
− P$RTN must be zero. Alternate return point cannot be used.<br />
• Parameter Two points to a 36-bit word which MCB uses to return a status code.<br />
Refer to Appendix B for a list of values returned.<br />
• Parameter Three points to a text buffer. The buffer must be word-aligned.<br />
• Parameter Four points to a 36-bit word containing the TIP session id. If TIP session<br />
control is not enabled, provide a word containing 0.<br />
7833 1568–004 4–3
CMS Interface<br />
4.4. CMS Interface Packet<br />
The CMS packet shown in Figure 4–1 is used for all CMS functions. On any given<br />
function, only certain fields are used. The unused fields must be zeros.<br />
The CMS packet shown in Figure 4–1 is used for all CMS functions. On any given<br />
function, only certain fields are used. The unused fields must be zeros.<br />
-01 0<br />
00<br />
01<br />
02<br />
03<br />
04<br />
05<br />
06<br />
07<br />
01<br />
0<br />
P$FUNC<br />
function code<br />
P$AUX<br />
aux data<br />
P$LENGTH<br />
P$OFF<br />
data offset<br />
request character pointer<br />
P$START<br />
start character pointer<br />
P$FAC<br />
facilities<br />
P$PID<br />
terminal identifier<br />
P$TC2<br />
transaction code<br />
P$VER<br />
version<br />
P$TC1<br />
transaction code<br />
P$QID<br />
queue item identifier<br />
start of auxiliary information<br />
Figure 4–1. CMS Packet<br />
P$SESID<br />
TIP session identifier<br />
4–4 7833 1568–004<br />
P$ID<br />
message identifier<br />
P$BUFF<br />
data buffer address<br />
P$RTN<br />
return point<br />
P$FLAGS<br />
flags<br />
P$MN<br />
message number<br />
P$ML<br />
message length
CMS Interface<br />
When you use the CMS activity initialization function, words 01 and 02 are overlaid as<br />
shown in Figure 4–2.<br />
01 P$FUNC<br />
P$LENGTH<br />
request character count<br />
CMS feature<br />
02 P$MCBFEAT<br />
P$START<br />
start character pointer<br />
MCB feature<br />
4.5. Interface Functions<br />
P$ILVL<br />
CMS Lvl<br />
P$ILVM<br />
MCB Lvl<br />
Figure 4–2. CMS Packet Overlay<br />
P$BUFF<br />
data buffer address<br />
P$RTN<br />
data buffer address<br />
The following information describes MCB functions available to application programs<br />
through the CMS interfaces (see 4.2 and 4.3). In the packet field descriptions,<br />
mnemonics name the function codes passed in the P$FUNC field. The actual value for<br />
each function code is listed in Appendix A.<br />
4.5.1. CMS Activity Initialization<br />
The initialization function identifies an activity of CMS to the MCB. The activities switch<br />
list (SWL) is recorded, an ER TRMRG$ is performed, and the activity is marked to use the<br />
other CMS functions. The initializing activity must be in real-time mode.<br />
The packet fields in Figure 4–1 and Figure 4–2 that are used for activity initialization are<br />
described next. The packet address of word 0 must be in A0.<br />
P$ILVL<br />
Indicates level for CMS. At activity initialization, CMS passes a P$ILVL and MCB<br />
returns a P$ILVM with these values:<br />
0 = Not in use<br />
1 = Use of P$CMSFEAT and ROPL output messages allowed<br />
P$CMSFEAT<br />
Used as a bit map to indicate features in CMS that can be configured, enabled, or<br />
disabled at run time. Bits are undefined.<br />
7833 1568–004 4–5
CMS Interface<br />
P$ILVM<br />
Indicates level for MCB. At CMS activity initialization, MCB passes a P$ILVM and<br />
CMS returns a P$ILVL with these values:<br />
0 = Not in use<br />
1 = Use of P$MCBFEAT and ROPL output messages allowed<br />
P$MCBFEAT<br />
Used as a bit map to indicate features in MCB that can be configured, enabled, or<br />
disabled at run time. Bits are undefined.<br />
P$FUNC<br />
P$FAC<br />
The function code CMINIT$$ is supplied by the calling program.<br />
The facilities status field indicates the condition of system resources at completion of<br />
the request. MCB returns a value in the range 0 to 3. The following values are the<br />
maximum current values of either Exec or MCB resources.<br />
Exec values are based upon core queue items or EXPOOL. MCB values are based on<br />
core buffers or MRF allocation descriptors (MAD). If the MCB is nonrecoverable,<br />
MRF use is also included.<br />
Exec MCB<br />
0 = normal 0 = normal<br />
1 = 50 percent in use 1 = 50 percent in use<br />
2 = 80 percent in use 2 = 70 percent in use<br />
3 = 90 percent in use 3 = 90 percent in use<br />
P$RTN<br />
This is the return point. If this field is zero, control is returned to the caller following<br />
the LBJ that entered the MCB. If this field is not zero, control is returned to the<br />
address specified in the bank from which the MCB was called, and P$RTN is set to<br />
the address following the LBJ that entered the MCB.<br />
P$ID<br />
P$VER<br />
This field is supplied by the calling program and must be zero.<br />
The interface version. CMS and MCB use P$VER to communicate the level of<br />
support for various features. The value in this field indicates the support level. Level<br />
0 does not support the outbound open feature. Level 1 supports the outbound open<br />
feature. Level 2 supports TIP session control. Level 3 supports MCB resilient<br />
functionality and the outbound open feature. The MCB level is communicated in this<br />
field to CMS on return from the INIT function.<br />
4–6 7833 1568–004
P$QID<br />
The CMS number that is used by CMS.<br />
4.5.2. CMS Activity Termination<br />
CMS Interface<br />
The packet fields in Figure 4–1 that are used for activity termination are described next.<br />
This function ends the association of the activity with MCB. CMS executes an ER<br />
TRMRG$, and releases any resources held by the activity. The packet fields are<br />
P$FUNC<br />
The function code CMTERM$$. The calling program supplies this field.<br />
P$RTN<br />
This is the return point. If this field is zero, control is returned to the caller following<br />
the LBJ that entered MCB. If the field is not zero, control is returned to the address<br />
specified in the bank from which the MCB was called, and P$RTN is set to the<br />
address following the LBJ that entered the MCB. This field is supplied by the calling<br />
program.<br />
P$ID<br />
This field must be zero.<br />
4.5.3. CMS Store Input <strong>Message</strong><br />
The packet fields (see Figure 4–1) that are used to store input messages are described<br />
next. This function stages input message text and parameters from CMS to the MCB<br />
and mass storage. Before control is returned to CMS, any required auditing is initiated<br />
and any mass storage I/O is completed. Audit requests are not mandatory, and need not<br />
be finished before control is returned to CMS. The packet fields are<br />
P$SESID<br />
The TIP session identifier. The calling program supplies this field.<br />
P$FUNC<br />
The calling program supplies the function code CMSTOR$$ field.<br />
P$FAC<br />
The facilities status (see 4.5.1). MCB fills in this field.<br />
P$ID<br />
The message-id value is passed to MCB by CMS to identify the message on which<br />
the operation should be done. If the value is zero, a new message is started. If the<br />
value is not zero, it is checked for accuracy. On return from the MCB to CMS, this<br />
field is correctly set for future operations on the message. CMS is responsible for<br />
setting the field correctly on all calls to MCB. Different activities of CMS can stage<br />
successive message segments of a message, but only one segment can be<br />
7833 1568–004 4–7
CMS Interface<br />
undergoing staging at one time. A message stays associated with CMS until it is<br />
passed on to step control. See P$FLAGS bit 0.<br />
P$LENGTH<br />
The length of text being passed is the number of quarter words of data to be stored<br />
as message text. The field is supplied by the calling program.<br />
P$BUFF<br />
The address of the data area holding the text is supplied by the calling program.<br />
P$START<br />
P$PID<br />
P$OFF<br />
P$AUX<br />
P$RTN<br />
The start character pointer specifies the point in the message to begin placing the<br />
text. The value is in characters relative to the start of the message text, where the<br />
first character is denoted by P$START = 1. If zero is given as a value, the text is<br />
appended to any existing text. This field is supplied by the calling program. On return<br />
from any store function, the field is set to point at the character after the last one<br />
stored. If a change is not made, the value can be used on subsequent store functions<br />
to add new text at the end of the message. If nonzero, the value must be less than<br />
or equal to the number of characters already in the message plus one. Previously<br />
staged text may be overlaid, but holes cannot be left in a message.<br />
The input PID field is meaningful only for the first operation on a message. It is<br />
ignored on subsequent store operations for the message. This field is supplied by the<br />
calling program.<br />
The data offset value specifies the number of quarter words from the address in<br />
P$BUFF at which the text begins in the CMS data area. Zero is Q1 of the address in<br />
P$BUFF, and four is Q1 of the following word. This field is supplied by the calling<br />
program.<br />
The size in words of the auxiliary information for the message is supplied by the<br />
calling program. This data starts at word 8 of the packet, and the field is significant<br />
only for the first store operation on a message.<br />
The return point. If this field is zero, control is returned to the caller following the LBJ<br />
that entered the MCB. If the field is nonzero, then control is returned to the specified<br />
address in the bank from which the MCB was called, and P$RTN is set to the<br />
address following the LBJ that entered the MCB. The field is supplied by the calling<br />
program.<br />
4–8 7833 1568–004
P$FLAGS<br />
P$MN<br />
CMS Interface<br />
Bits to indicate special processing. For this function the bits are<br />
Bit 0<br />
Last block indicator (LBI). If set, the message is queued to step control when<br />
data transfer is complete and further attempts to access the message result in<br />
error. If the bit is not set, the message remains available to CMS for processing.<br />
Bit 13<br />
Bit 15<br />
Bit 16<br />
If set, a transaction code is not supplied in P$TC1/P$TC2 because conversational<br />
link is in effect.<br />
If set, the MCB assumes that the first store function with this flag set presents<br />
the first character of the transaction code as the first text character on that<br />
function call. This bit is ignored if P$TXN in the auxiliary information area is not<br />
zero (see 4.6).<br />
If set, the auxiliary data area previously stored with the message is replaced with<br />
the auxiliary data area presented on this call. When a new message is started<br />
(P$ID = 0), the auxiliary data area is set according to the value in P$AUX.<br />
Subsequent calls either replace the auxiliary data (if bit 16 is set) or leave it<br />
unchanged (if bit 16 is not set). You cannot alter the size of the auxiliary data<br />
area. The size is always determined by the value in P$AUX when a message is<br />
started.<br />
The message number. If CMS receives an assurance unit with a message, the<br />
assurance unit is presented to the MCB in this field. If no assurance unit is received,<br />
the field is zero. This field is significant only on the first store operation for a given<br />
message.<br />
P$TC1/P$TC2<br />
The transaction code. These fields contain the first one to six text characters in ASCII<br />
(terminated by a blank, or the sixth character, whichever comes first). If fewer than<br />
six characters are presented, a blank must be the last character. The field is supplied<br />
by the calling program. A character is a quarter word. This field is significant only on<br />
the first store operation for a given message.<br />
4.5.4. CMS Input <strong>Message</strong> Cancel<br />
The packet fields in Figure 4–1 that are used to cancel input messages are described<br />
next. This function tells the MCB that an input message being built will not be finished.<br />
The MCB can reuse the resources used for the message. The packet fields are<br />
P$FUNC<br />
The function code CMCAN$$. This field is supplied by the calling program.<br />
7833 1568–004 4–9
CMS Interface<br />
P$FAC<br />
P$ID<br />
P$RTN<br />
The facilities status (see 4.5.1). This field is filled in by the MCB.<br />
The message-id. This must be nonzero and valid. The field is supplied by the calling<br />
program.<br />
The return point. If this field is zero, control is returned to the caller following the LBJ<br />
that entered the MCB. If the field is nonzero, control is returned to the specified<br />
address in the bank from which the MCB was called, and P$RTN is set to the<br />
address following the LBJ that entered the MCB. The field is supplied by the calling<br />
program.<br />
4.5.5. CMS Receive Output <strong>Message</strong><br />
The packet fields in Figure 4–1 that are used to receive output messages are described<br />
next. This function passes output message parameters and text from the MCB or mass<br />
storage to CMS. MCB signals CMS through the output queue mechanism that pending<br />
output messages exist. The first use of this function for a new message returns a<br />
number of items in the request packet in addition to returning text. Later calls to the<br />
MCB can read or reread any part of the text. The packet fields, however, are returned by<br />
the MCB on successive calls only if P$START = 1. The packet fields are<br />
P$SESID<br />
The TIP session identifier. This field is supplied by the calling program.<br />
P$FUNC<br />
The function code CMRECV$$. This field is supplied by the calling program.<br />
P$FAC<br />
The facilities status (see 4.5.1). This field is filled in by the MCB.<br />
P$ID<br />
The message-id. This field is zero for the first operation on a message and nonzero<br />
for subsequent operations. See P$QID that follows. This field is supplied by the<br />
calling program.<br />
P$LENGTH<br />
The requested text size in quarter words. This field is supplied by the calling program<br />
and is changed by the MCB if the last character of the text is read. In this case,<br />
P$FLAGS bit 0 is also set.<br />
P$BUFF<br />
The data buffer address. This field is supplied by the calling program.<br />
4–10 7833 1568–004
P$START<br />
P$PID<br />
CMS Interface<br />
The start character pointer. This field is used in a manner analogous to the store<br />
function (see 4.5.3). It may be used to re-read text previously read. If P$START = 0,<br />
the reading of text resumes at the point where the previous read operation for this<br />
message terminated. The field is supplied by the calling program.<br />
The destination PID. CMS must present the PID to which the message is actually<br />
sent. This need not be the PID to which the message was originally directed. The<br />
field is meaningful only if P$ID = 0 (the first request).<br />
P$FLAGS<br />
Bit flags. For this function, the following meanings are defined. The field is filled in by<br />
the MCB.<br />
Bit 0<br />
Last block indicator (LBI). If set, the last text character was read. P$LENGTH is<br />
set to the number of characters actually transferred.<br />
P$OFF<br />
Bit 17<br />
P$AUX<br />
P$RTN<br />
P$ML<br />
Recoverable message indicator. If set, the message is recoverable.<br />
The data offset. This value specifies the number of quarter words from the address<br />
in P$BUFF at which the text begins in the CMS data area. Zero is Q1 of the address<br />
in P$BUFF and four is Q1 of the following word. The field is supplied by the calling<br />
program.<br />
The size of the auxiliary information area. CMS presents this value to the MCB. On<br />
return, the field contains the length of the auxiliary data actually put in the packet. If<br />
the area presented is not large enough to hold all the data, an error exists, and an<br />
error status is returned to CMS. This field is necessary on the first receive for a<br />
message or any other receive function for which P$START = 1.<br />
The return point. If the field is zero, control is returned to the caller following the LBJ<br />
that entered the MCB. If the field is nonzero, control is returned to the specified<br />
address in the bank from which the MCB was called, and P$RTN is set to the<br />
address following the LBJ that entered the MCB. This field is supplied by the calling<br />
program.<br />
The message length. The MCB returns this value to CMS on the first receive<br />
function for a given message or any other receive function for which P$START = 1. It<br />
is the total length of the message text in quarter words.<br />
7833 1568–004 4–11
CMS Interface<br />
P$QID<br />
P$MN<br />
The queue item identifier. This value is presented to CMS by step control (Exec) in<br />
the output queue entry. CMS presents it to the MCB to indicate that a new message<br />
is about to be transmitted. If P$ID is not zero, then P$QID is ignored. If P$ID and<br />
P$QID are both zero, an error exists.<br />
The message number. If the MCB returns a nonzero value, CMS must send that<br />
value as an assurance unit. If the field is zero, no assurance unit need be sent. This<br />
field is returned to CMS on the first receive function for a given message or any<br />
other receive function for which P$START = 1.<br />
4.5.6. CMS Output <strong>Message</strong> Hold<br />
The packets fields in Figure 4–1 that are used to hold output messages are described<br />
next. This function tells the MCB that a message cannot be transmitted at the present<br />
time. Since it may be possible to transmit the message in the future, the message is<br />
retained in anticipation of later delivery. For this function, the MCB releases the transient<br />
control buffers for the message but retains a copy of the message. The packet fields are<br />
P$FUNC<br />
The function code MHOLD$$. This field is supplied by the calling program.<br />
P$FAC<br />
The facilities status (see 4.5.1). This field is filled in by the MCB.<br />
P$ID<br />
The message-id. This field is supplied by the calling program.<br />
P$RTN<br />
The return point. If the field is zero, control is returned to the caller following the LBJ<br />
that entered the MCB. If the field is nonzero, control is returned to the specified<br />
address in the bank from which the MCB was called, and P$RTN is set to the<br />
address following the LBJ that entered the MCB. This field is supplied by the calling<br />
program.<br />
4.5.7. CMS Output <strong>Message</strong> Positive Acknowledge<br />
The packet fields in Figure 4–1 that are used to positively acknowledge output messages<br />
are described next. This function indicates that an output message was successfully<br />
transmitted. All system resources for the message are released. The packet fields are<br />
P$SESID<br />
The TIP session identifier. This field is supplied by the calling program.<br />
P$FUN<br />
The function code CMSACK$$. This field is supplied by the calling program.<br />
4–12 7833 1568–004
P$FAC<br />
P$ID<br />
P$RTN<br />
The facilities status (see 4.5.1). This field is filled in by the MCB.<br />
The message-id. This field is supplied by the calling program.<br />
CMS Interface<br />
The return point. If the field is zero, then control is returned to the caller following the<br />
LBJ that entered the MCB. If the field is nonzero, then control is returned to the<br />
specified address in the bank from which the MCB was called, and P$RTN is set to<br />
the address following the LBJ that entered the MCB. This field is supplied by the<br />
calling program.<br />
4.5.8. CMS Output <strong>Message</strong> Negative Acknowledge<br />
The packet fields in Figure 4–1 that are used to negatively acknowledge output<br />
messages are described next. This function indicates that an output message cannot be<br />
successfully delivered or alternately routed. A system error process is invoked to dispose<br />
of the message. The packet fields are<br />
P$SESID<br />
The TIP session identifier. This field is supplied by the calling program.<br />
P$FUNC<br />
The function code CMSNAK$$. This field is supplied by the calling program.<br />
P$FAC<br />
The facilities status (see 4.5.1). This field is filled in by the MCB.<br />
P$ID<br />
The message-id. This field is supplied by the calling program.<br />
P$RTN<br />
The return point. If this field is zero, control is returned to the caller following the LBJ<br />
that entered the MCB. If the field is nonzero, control is returned to the specified<br />
address in the bank from which the MCB was called, and P$RTN is set to the<br />
address following the LBJ that entered the MCB. This field is supplied by the calling<br />
program.<br />
7833 1568–004 4–13
CMS Interface<br />
P$SESSION<br />
When an output message is negatively acknowledged, CMS supplies the reason for<br />
NAK code in this call. The following are valid reasons for NAK:<br />
NAK Definition<br />
031 Peer negatively acknowledged the message<br />
032 <strong>Message</strong> sent, but may have been lost<br />
033 Too many output messages queued to the PID<br />
034 Output message too large<br />
035 Illegal function<br />
036 <strong>Message</strong> deleted by keyin<br />
037 Illegal PID<br />
040 CMS internal error<br />
4.5.9. CMS Put Text<br />
041 TIP message security violation<br />
042 MCB unable to retrieve the output message<br />
043 Undeliverable message; the application or the PID is configured to NAK<br />
ROPL output messages if a PID session is stopped or closed<br />
044 MCB ROPL message queued in CMS during a normal TIPCSU termination<br />
The packet fields (see Figure 4–1) that are used for text placement are described next.<br />
This function stages CMS message text temporarily in the MCB and mass storage. The<br />
text is later retrieved by the CMS get text function. The message is always<br />
nonrecoverable. The packet fields are<br />
P$FUNC<br />
The function code CMSPUT$$. This field is supplied by the calling program.<br />
P$FAC<br />
The facilities status (see 4.5.1). This field is filled in by the MCB.<br />
P$ID<br />
The message-id. This is a value passed to the MCB by CMS to identify the message<br />
on which the operation must be performed. If the value is zero, a new message is<br />
started. If the value is nonzero, it is checked for accuracy. On return from the MCB<br />
to CMS, this field is set for future operations on the message. CMS is responsible for<br />
setting the field correctly on all calls to the MCB. Different activities of CMS may<br />
stage successive segments of a given message but only one segment may undergo<br />
staging for a given message at one time. A message is associated with CMS until it<br />
is discarded by the input message cancel function or retrieved by the get text<br />
function.<br />
4–14 7833 1568–004
P$LENGT H<br />
CMS Interface<br />
The length of text being passed. This field is the number of quarter words of data to<br />
be stored as message text and is supplied by the calling program.<br />
P$BUFF<br />
The address of the data area holding the text. This field is supplied by the calling<br />
program.<br />
P$START<br />
P$RTN<br />
P$OFF<br />
The start character pointer. This value specifies the point in the message to begin<br />
placing the text. The value is in characters relative to the start of the message text,<br />
where the first character is denoted by P$START = 1. If zero is given as a value, the<br />
text is appended to existing text, if any. he field is supplied by the calling program.<br />
On return from any store function, the field is set to point at the character following<br />
the last one stored. If a change is not made, the value can be used on subsequent<br />
store functions to add new text at the end of the message. If nonzero, this value<br />
must be less than or equal to the number of characters plus one in the message.<br />
Previously staged text may be overlaid, but no holes can be left in a message.<br />
The return point. If this field is zero, control is returned to the caller following the LBJ<br />
that entered the MCB. If this field is nonzero, control is returned to the specified<br />
address in the bank from which the MCB was called, and P$RTN is set to the<br />
address following the LBJ that entered the MCB. The field is supplied by the calling<br />
program.<br />
The data offset. This value specifies the number of quarter words from the address<br />
in P$BUFF at which the text begins in the CMS data area. (0 is Q1 of the address in<br />
P$BUFF, 4 is Q1 of the following word.) The field is supplied by the calling program.<br />
P$FLAGS<br />
Bits to indicate special processing. For this function, the bit is<br />
Bit 0 Last block indicator (LBI). If set, this causes the message to become a<br />
read-only message that may be accessed by the CMS get text<br />
function. If not set, the message remains available to CMS for further<br />
put text operations.<br />
4.5.10. Read VINDEX Entry<br />
The packet fields in Figure 4–1 that are used to read the VINDEX entry are described<br />
next. This function returns to CMS the VINDEX entry corresponding to a transaction code<br />
from the MCB VINDEX bank. It retrieves only one VINDEX entry from the bank and<br />
returns it in words 4 through 6 of the calling program’s packet.<br />
When CMS is configured to run both MCB and COMPOOL, CMS uses the returned<br />
7833 1568–004 4–15
CMS Interface<br />
VINDEX entry to determine how the input should be stored. If the V bit in the recovery<br />
options field is set, the input is stored with the MCB. If the V bit is not set, the input is<br />
stored with COMPOOL.<br />
The V bit in the VINDEX entry is set by the VALTAB utility program based on the VALTAB<br />
J-status bit. If the MCB finds test mode set for the input PID, the V bit returned to CMS<br />
is based on the VALTAB L-status bit.<br />
If the PID supplied in the packet has exclusive use set, the transaction code supplied is<br />
ignored and the VINDEX entry returned is the exclusive use of the target transaction<br />
code. The V bit is set unconditionally in this case.<br />
If the input is one of the two special MAPPER_ characters, caret (^) or right bracket ( ] ),<br />
a check determines if either of the characters is an MCB trigger character. If either is an<br />
MCB trigger, the V bit is returned to CMS from the VINDEX entry of the trigger’s<br />
transaction code. If neither character is an MCB trigger, the input is stored in COMPOOL.<br />
Test mode, through the use of the VALTAB L bit, is also allowed for the MAPPER system<br />
transaction code.<br />
The packet fields are<br />
P$FUNC<br />
The function code VNXRD$$. This field is supplied by the calling program.<br />
P$PID<br />
The input PID. This field is supplied by the calling program.<br />
P$TC1/P$TC2<br />
The transaction code corresponding to the requested VINDEX entry.<br />
4.5.11. CMS Get Text<br />
This function returns to CMS message text that was previously staged in the MCB using<br />
the CMS put text function. The packet fields are<br />
P$FUNC<br />
The function code CMSGET$$. This field is supplied by the calling program.<br />
P$FAC<br />
The facilities status (see 4.5.1). This field is filled in by the MCB.<br />
P$ID<br />
The message-id. This field must be nonzero and must be the value previously<br />
returned when the message text was staged in the MCB using the CMS put text<br />
function. The field is supplied by the calling program.<br />
4–16 7833 1568–004
P$LENGTH<br />
CMS Interface<br />
The requested text size in quarter words. The field is supplied by the calling program.<br />
The field is changed by the MCB if the last character of text is read. In this case,<br />
P$FLAGS bit 0 is also set.<br />
P$BUFF<br />
The address of the data area to receive the text. This field is supplied by the calling<br />
program.<br />
P$START<br />
P$OFF<br />
P$RTN<br />
The start character pointer. This field is similar to the CMS put text function (see<br />
4.5.9). The field may be used to re-read text. If P$START = 0, the reading of text<br />
resumes at the point where the previous read operation terminated. This field is<br />
supplied by the calling program.<br />
The data offset. This value specifies the number of quarter words from the address<br />
in P$BUFF at which text begins in the CMS data area. (0 is Q1 of the address in<br />
P$BUFF, 4 is Q1 of the following word.) This field is supplied by the calling program.<br />
The return point. If this field is zero, control is returned to the caller following the LBJ<br />
that entered the MCB. If this field is nonzero, control is returned to the address in the<br />
bank from which the MCB was called, and P$RTN is set to the address following the<br />
LBJ that entered the MCB. The field is supplied by the calling program.<br />
P$FLAGS<br />
Bits to indicate special processing. For this function, the bits are<br />
Bit 0 Last block indicator (LBI). Set by the MCB when the last text character was<br />
read. P$LENGTH is set to the number of characters transferred.<br />
Bit 2 If set, the message is released when the last character is read. This bit is<br />
supplied by the calling program.<br />
P$ML<br />
The message length. The MCB returns this value to CMS on the first get text<br />
function for a given message or any other get text function for which P$START = 1.<br />
It is the total message length in quarter words.<br />
4.5.12. CMS Session Status Notification<br />
The packet fields in Figure 4–1 that are used for session status notification are described<br />
next. These functions are used by CMS to notify the MCB of session state changes. The<br />
packet fields are as follows.<br />
P$FUNC<br />
A function code from Table 4–1. This field is passed by CMS to MCB.<br />
7833 1568–004 4–17
CMS Interface<br />
P$FAC<br />
P$PID<br />
P$QID<br />
The facilities status. This field is passed back to CMS by the MCB. The values are<br />
defined in 4.5.1.<br />
The PID for which the status is being reported. This field is passed by CMS to the<br />
MCB.<br />
A function code from Table 4–1. This field is passed by CMS to MCB.<br />
Table 4–1. Relation between P$FUNC and P$QID<br />
P$FUNC Mnemonic P$QID Meaning<br />
062 SESSCLR$$ 024 Session close rejected because PID busy<br />
025 Session close rejected because PID not in use<br />
063 SESSOP$$ Ignored Session successfully opened<br />
066 SESSRJ$$ 01 Session open rejected; device information error in<br />
local configuration<br />
02 Device information error in network<br />
03 Lack of local resources<br />
04 Lack of network resources<br />
05 Local software error- protocol error<br />
06 Network software error- protocol error<br />
07 Peer failed:<br />
• Not turned on<br />
• Not connected<br />
• Hardware error<br />
• Problem with peer application<br />
010 Peer busy-in use by other user<br />
011 Session already open<br />
012 PID is DOWN (CMS CSA command)<br />
024 PID is busy-session already open with another<br />
application<br />
4–18 7833 1568–004
Table 4–1. Relation between P$FUNC and P$QID<br />
P$FUNC Mnemonic P$QID Meaning<br />
067 SESSAB$$ 050 Session aborted because Peer failed<br />
051 Local software error<br />
052 Network software error<br />
053 Reduced local resources<br />
054 Reduced network resources<br />
055 CSA commanded session abort<br />
056 TIP Session <strong>Control</strong> session timeout<br />
071 SESSCP$$ Ignored Session close received from Peer CSU<br />
072 SESSCL$$ Ignored Session closed<br />
CMS Interface<br />
Functions 067 and 072 never contain text. These functions create a pass-off message as<br />
described in 5.11.<br />
4.5.13. CMS PID Configuration<br />
This function was used by CMS with former levels of MCB to provide a list of PIDs in the<br />
CMS configuration. This function is no longer necessary. It is maintained for<br />
compatibility, but it has no effect. This function is not valid with the extended mode<br />
calling sequence. The packet fields are<br />
P$FUNC<br />
The function code, CMPIDI$$, is supplied by the calling program.<br />
P$LENGTH<br />
The CMS number, subfunction, and number of ACWs. This field is identical to H1 of<br />
A0 for the ER RT$PID. See the Transaction Processing Administration and<br />
Operations Reference Manual. Use subfunction values 1 and 2. Any other value<br />
results in an error status. Subfunctions 1 and 2 operate similarly to the ER RT$PID.<br />
However, the MCB records, for each PID, the CMS number for every copy of CMS<br />
that has the PID configured. Thus, no error is detected when this call is made when<br />
another CMS has a session open with the same PID.<br />
P$BUFF<br />
The ACW buffer address. This field points to a buffer of the same form as the ER<br />
RT$PID.<br />
7833 1568–004 4–19
CMS Interface<br />
4.5.14. CMS Session Open Notify<br />
The packet fields in (see Figure 4–1) that are used for session open notification are<br />
described next. This function is used by CMS to notify the MCB when a session is<br />
opened. The MCB places the CMS number in the PID entry for the PID specified in the<br />
calling packet. The CMS number in the PID entry signifies an active session with that<br />
PID. This function does not include outbound opens. The packet fields are<br />
P$FUNC<br />
The function code, CMSOPEN$$, is supplied by the calling CMS.<br />
P$PID<br />
The PID with which a session has been established. This is supplied by the calling<br />
CMS.<br />
P$RTN<br />
P$FAC<br />
The return point. If this field is zero, control is returned to the caller following the LBJ<br />
that entered the MCB. If this field is nonzero, control is returned to the specified<br />
address in the bank from which the MCB was called, and P$RTN is set to the<br />
address following the LBJ that entered the MCB. The field is supplied by the calling<br />
program.<br />
The facilities status. This field is passed to CMS by the MCB. The values are defined<br />
in 4.5.1.<br />
4.5.15. CMS Resilient Session Open Notification<br />
CMS uses the session open notification function to notify the MCB that the PID numbers<br />
provided in the access control word (ACW) are PIDs that were previously inbound<br />
opened and are to be recovered. The MCB places the CMS number in the appropriate<br />
cell in the PID entry. MCB determines that the PID number is valid, is not a group PID, or<br />
is not currently assigned to another CMS. The CMS number in the PID entry signifies an<br />
active session with the PID. The packet fields (which are all shown in Figure 4–1) are as<br />
follows:<br />
Note: This function is not valid with the extended mode calling sequence.<br />
P$FUNC<br />
The function code, RESOPEN$$, is supplied by calling CMS.<br />
P$LENGTH<br />
The buffer length in words.<br />
P$BUFF<br />
The address of the buffer that contains the list of PID numbers that were previously<br />
inbound opened and are to be recovered.<br />
4–20 7833 1568–004
P$PID<br />
CMS Interface<br />
The number of PIDS (integer value) that are in the list pointed to by the address in<br />
the cell P$BUFF. CMS passes a maximum of 1,000 PID numbers per call to MCB.<br />
When CMS resumes control, this cell contains a value of zero if no errors were<br />
encountered. If an error occurred in the processing of any of the PIDs to be<br />
recovered, the number of the last PID for which any error occurred is present in this<br />
cell.<br />
The three possible error codes that may be returned in register A1 following the return of<br />
control to CMS are 017, 034, and 0117. See Appendix B of this document for the<br />
explanation of these error codes.<br />
4.5.16. CMS PID Information Request<br />
The packet fields used in Figure 4–1 that are used to request PID information are<br />
described next. CMS uses this function to obtain session-related information from MCB<br />
after a CMS, MCB, or system failure. To enable this function, the RESILIENT parameter<br />
must be set on the APPLICATION NDS in the CMS configuration, and the RESILIENT<br />
parameter must be set to YES in the MCB configuration. The requested information is<br />
returned in a buffer supplied by the calling program at the address in P$BUFF.<br />
Note: This function is not valid with the extended mode calling sequence.<br />
The first word of the supplied buffer contains information about the buffer itself:<br />
• H1 always contains the total number of words of usable return buffer space (space<br />
that MCB will use).<br />
• H2 contains the number of ACWs specifying PID ranges. The calling program<br />
supplies the ACWs. If H2 is zero, no PID range ACWs are present, and the MCB<br />
searches from P$PID to MAXPID.<br />
If H2 is nonzero, it indicates the number of PID range ACWs contained in a list that<br />
immediately follows the usable buffer area. The buffer length plus the length of the<br />
ACW list is specified (in quarter words) in the P$LENGTH field.<br />
For each PID range ACW in the list, H1 contains the number of PIDs in the specified<br />
range, and H2 contains the first PID in the range.<br />
The PID session information is returned by the MCB into the specified buffer area as<br />
follows:<br />
• In the first word of the buffer, H1 contains the total number of PIDs returned.<br />
• For each following word (one word per PID), H1 indicates the type of PID:<br />
1 = outbound open, 2 = exclusive use close notification and output message control.<br />
H2 contains the PID number.<br />
The packet fields are<br />
P$FUNC<br />
The function code CMSPIDS$$ is supplied by the calling program.<br />
7833 1568–004 4–21
CMS Interface<br />
P$LENGTH<br />
The total buffer length in quarter words. This is the total of usable buffer space and<br />
the ACW list (if any). This field is supplied by the calling program.<br />
P$BUFF<br />
The starting address of the buffer area. This field is supplied by the calling program.<br />
The first buffer word contains the following information:<br />
H1 = number of usable buffer words<br />
H2 = number of ACWs in ACW list (may be zero)<br />
P$RTN<br />
The return point. This field is supplied by the calling program. A zero indicates that<br />
control is returned to the calling program following the LBJ that entered the MCB.<br />
P$FAC<br />
P$PID<br />
P$MN<br />
The facilities status (see 4.5.2). This field is supplied by the MCB.<br />
Contains the first PID number in the search. This field is supplied by the calling<br />
program. The MCB updates this field to contain the last PID number read before<br />
returning control to the calling program.<br />
This field indicates the type of information to be returned by the MCB:<br />
0 = both types<br />
1 = outbound open only<br />
2 = exclusive use close notification and output message control<br />
This field is supplied by the calling program.<br />
4.5.17. CMS Obtain Resource Status<br />
The packet fields in Figure 4–1 that are used to obtain resource status are described<br />
next. This function is used by CMS to obtain the most recent status on system<br />
resources. The packet fields are<br />
P$FUNC<br />
The function code CMFAC$$, supplied by the calling program.<br />
4–22 7833 1568–004
P$FAC<br />
CMS Interface<br />
The facilities status field indicates the condition of system resources at completion of<br />
the request. MCB returns a value in the range 0 to 3. The values in the following<br />
table are the maximum current values of either Exec or MCB resources. Exec values<br />
are based on core queue items or EXPOOL. MCB values are based on core buffers<br />
or MADs. If the MCB is nonrecoverable, MRF usage is also included.<br />
Exec MCB<br />
0 = normal 0 = normal<br />
1 = 50 percent in use 1 = 50 percent in use<br />
2 = 80 percent in use 2 = 70 percent in use<br />
3 = 90 percent in use 3 = 90 percent in use<br />
4.6. Auxiliary Information Area<br />
The information in the auxiliary information area applies to both CMS and site-developed<br />
application programs. The auxiliary information area of the interface packet begins at<br />
word 8 (010) of the CMS packet or at word 16 (020) of the application program packet.<br />
The format is shown in Figure 4–3.<br />
The use of the auxiliary information area as described here is supported by CMS1100 and<br />
SILAS. Other CMS programs do not necessarily use all of the fields of the auxiliary<br />
information area in the same manner as CMS1100 and SILAS.<br />
00 P$END<br />
size<br />
01 P$TTYP<br />
device type<br />
P$FNC<br />
function<br />
P$FORMAT<br />
text format<br />
P$DID<br />
device index<br />
P$ROW<br />
cursor row<br />
P$KEY<br />
function key<br />
P$COL<br />
cursor column<br />
P$CAT<br />
device category<br />
02 P$HDR (output header offset) P$HDRSIZE P$LKEY<br />
*02 P$RSTYP P$CCS header size logical function key<br />
03 P$TXN<br />
txn code offset<br />
P$PRIM<br />
offset for MC$PRIM<br />
P$SESSION<br />
NAK reason code or<br />
state change reason<br />
04 Start of optional UPA data<br />
Figure 4–3. Auxiliary Information Area<br />
P$RTYP<br />
real device type<br />
7833 1568–004 4–23
CMS Interface<br />
Beginning with word 4 of the auxiliary data area, an optional user parameter area (UPA)<br />
allows the application program to communicate control information between itself and a<br />
site-supplied device handler. The contents of the following fields may be input or output<br />
values:<br />
P$END<br />
This field is the size in words of the standard data. If UPA data is present, size is the<br />
difference between P$AUX and P$END. Currently, P$END = 4. If UPA data is not<br />
present, P$AUX also equals 4.<br />
P$FNC<br />
The function code. The significance of this field is dependent on the device type (P$TTYP).<br />
The following values are defined for interactive CRT devices.<br />
Value Description<br />
03 MESSAGE WAITING key input. This value is set in an input message by CMS<br />
if MESSAGE WAITING input is received and conversational link is in effect<br />
for the PID. If conversational link is not in effect, the MESSAGE WAITING<br />
input is processed by CMS. The input is not passed to any program.<br />
012 Function key input. The value in P$KEY identifies which key input was<br />
received. All the function key values (P$FNC = 12) are set up by CMS in an<br />
input message.<br />
The following values are defined only for the UNISCOPE 100/200 and UTS 400 terminals:<br />
Value Description<br />
013 Activate the auxiliary interface. This value is set by an application program in<br />
an output message. It activates the interface to auxiliary devices connected<br />
to the terminal that receives the message. The P$DID field specifies the<br />
device-id of the device to select. A DC2 character is always appended to the<br />
text by the terminal handler.<br />
014 THRU response. This value is set in an input message by CMS when the<br />
auxiliary interface is ready for another message and conversational link is in<br />
effect for the PID. If conversational link is not in effect, CMS processes the<br />
THRU response. It is not passed to any program.<br />
015 This function is similar to 013 except that the terminal handler does not<br />
append a DC2 to the text. Normally, the text should contain a peripheral<br />
initiation sequence, such as DC2, ESC DC2, or ESC H. The P$DID field<br />
specifies the device to select.<br />
4–24 7833 1568–004
Value Description<br />
CMS Interface<br />
020 If this value is specified in an output message, the terminal bell rings at the<br />
same time the message (0 or more characters) is sent. The next MESSAGE<br />
WAITING key input is given to the exclusive-use linked program, if any,<br />
unless it is given to the error notification program (see 5.3). That MESSAGE<br />
WAITING input may be used by the program to send another output or to<br />
take some other action. The program may send a message again, using the<br />
020 value, before receiving the MESSAGE WAITING input that reactivates<br />
the bell. Although somewhat different, depending on application, this<br />
functionality may be used instead of the older functionality provided by the<br />
combination of conversational link and unsolicited output (see 3.5.1 and 3.5.4,<br />
and 5.5.1 and 5.5.8). When this value is used in an output message, the<br />
function and subfunction fields of P$OUTQ should be 0, and exclusive-use<br />
should be in effect.<br />
061 This value is set in an input message if conversational link is in effect for the<br />
PID. It indicates that a power-on-confidence status (DLE6) was received from<br />
the auxiliary interface. It is returned only for OFIS Link_ terminals.<br />
067 This value is set by MCB in a pass-off message that notifies an application<br />
program that a session is aborted.<br />
Note: For the auxiliary interface status values 070 and 073 to 076, an input message is<br />
created only if conversational link is in effect. If conversational link is not in effect, then<br />
the status is processed entirely by CMS.<br />
Value Description<br />
070 This value is set by in an input message if conversational link is in effect for<br />
the PID. The value indicates that a DLE8 status was received from the<br />
auxiliary interface.<br />
071 This value is set by MCB in a pass-off message that notifies an application<br />
program that a session is closed by the peer. (See 5.11 for more information.)<br />
073 This value may be set in an input message if conversational link is in effect<br />
for the PID. The value indicates that an Error1 status was received from the<br />
auxiliary interface.<br />
074 This value is set in an input message if conversational link is in effect for the<br />
PID. The value indicates that an Error2 status was received from the auxiliary<br />
interface.<br />
075 This value is set in an input message if conversational link is in effect for the<br />
PID. The value indicates that a No Status code was received from the<br />
auxiliary interface.<br />
076 This value is set in an input message if conversational link is in effect for the<br />
PID. The value indicates that a No Error code was received from the auxiliary<br />
interface.<br />
7833 1568–004 4–25
CMS Interface<br />
P$FORMAT<br />
This field contains a value that defines the protocol or format of the text. Currently,<br />
the only defined value is<br />
1 = device dependent<br />
The values 0 to 037 are reserved for future use by CMS. The values 040 to 057 are<br />
reserved for other <strong>Unisys</strong> software such as Display Processing System. The values<br />
060 to 077 are available for definition by any application.<br />
P$ROW<br />
P$COL<br />
This field contains one of the cursor coordinates for the text. For an input message,<br />
this is the row on which the input text began. For an output message, this is the row<br />
on which to begin the text. Not all devices have cursors, and not all devices with<br />
cursors transmit coordinates. In these cases, this field and P$COL are zero.<br />
The field contains the other cursor coordinate for the text. For an input message, this<br />
is the column in which the input text began. For an output message, this is the<br />
column in which to begin the text.<br />
P$TTYP<br />
The logical device type. This field is set up by CMS for each input message.<br />
Currently, the possible values are<br />
001 UNISCOPE 100 terminal<br />
002 UNISCOPE 200 terminal<br />
003 DCT 500<br />
004 DCT 1000<br />
005 UTS 400<br />
014 TTY<br />
015 UTS 10<br />
016 UTS 20<br />
017 UTS 40<br />
020 DATASPEED 40/4<br />
021 DATASPEED 4540<br />
022 DATASPEED 40/4 printer<br />
023 UTS 10B (UTS 10 in buffered mode)<br />
024 SPERRYLINK desk station (UDSSP)<br />
025 UTS30<br />
026 UTS60<br />
027 IBM 3270<br />
4–26 7833 1568–004
CMS Interface<br />
030 UDS40 (SPERRYLINK desk station)<br />
031 SVT1210 (asynchronous terminal), VT100, VT101, VT102, VT131<br />
032 SVT1220 (asynchronous terminal), VT 220<br />
033 CMS (host-to-host)<br />
034 Transport TTY<br />
035 Telnet NVT<br />
036 LT 300<br />
037 IBM 3270 EBCDIC<br />
0100 open OLTP terminal type (not set by CMS)<br />
0200 HTML terminal (not set by CMS)<br />
The values 1 to 037 and 0101 to 0277 are reserved for future use by CMS. You may<br />
define the values 040 to 077 and 0300 to 0377. (See also P$RTYP and 3.5.10 for more<br />
information.)<br />
P$KEY<br />
The physical function key value. When function key input is received, an input<br />
message is created that may or may not have text. The value in this field identifies<br />
the specific key that was received. The field is set by CMS in an input message<br />
when P$FNC is 012. For the physical function key values for other terminal types,<br />
see the appropriate terminal hardware documentation.<br />
The values for the UTS 400 function keys are listed in Table 4–2.<br />
Table 4–2. Values for UTS 400 Function Keys<br />
Key Label P$KEY ASCII<br />
Character<br />
MSG-WAIT BEL 007<br />
P$KEY<br />
Octal<br />
Value<br />
F1 � 067 01<br />
F2 � 107 02<br />
F3 � 127 03<br />
F4 � 147 04<br />
F5 Space 040 05<br />
F6 � 041 06<br />
F7 � 042 07<br />
F8 � 043 010<br />
F9 � 044 011<br />
P$LKEY<br />
Octal<br />
Value<br />
7833 1568–004 4–27
CMS Interface<br />
Table 4–2. Values for UTS 400 Function Keys<br />
Key Label P$KEY ASCII<br />
Character<br />
P$KEY<br />
Octal<br />
Value<br />
F10 � 045 012<br />
F11 � 046 013<br />
F12 � 047 014<br />
F13 � 050 015<br />
F14 � 051 016<br />
F15 � 052 017<br />
F16 � 053 020<br />
F17 � 054 021<br />
F18 � 055 022<br />
F19 � 056 023<br />
F20 � 057 024<br />
F21 � 060 025<br />
F22 � 061 026<br />
P$LKEY<br />
Octal<br />
Value<br />
P$LKEY<br />
The logical function key index. This value is present when P$KEY is nonzero. The<br />
value is derived by CMS from the configuration parameters. See the CMS 1100<br />
Programming Reference Manual.<br />
P$TXN<br />
This field contains the text offset to the first character of the transaction, for<br />
example, the first character of text beyond device-dependent data (contained in the<br />
preamble). A value of 1 indicates that no preamble data is present, a value of 2<br />
indicates one character of preamble data, a value of 3 indicates two characters. For<br />
the applications program interface, P$TXN is filled by MCB. For the CMS interface,<br />
P$TXN may be filled by CMS, or MCB computes this value on the first store-input<br />
call with bit 15 of P$FLAGS set (see 4.5.1).<br />
P$PRIM<br />
This field contains the text offset for the beginning of a read function by a<br />
COMPOOL compatible primitive.<br />
P$SESSION<br />
This field contains the reason for a session state change. Some of the values are<br />
passed by CMS in P$QID (see 4.5.12). This field will contain the NAK reason code<br />
returned by CMS if an output message is negatively acknowledged (see 4.5.8). You<br />
4–28 7833 1568–004
P$CAT<br />
CMS Interface<br />
must specify at least four words of auxiliary data area to accept returned NAK reason<br />
codes. If you are using CMS level 5R1 or higher, CMS returns NAK reason codes to<br />
the MCB when output messages are negatively acknowledged. A value of 0777 is<br />
used for notification of the $BREAK II keyin. See the MCB Operations Reference<br />
Manual.<br />
This field identifies the device category from which an input was received or to<br />
which an output is being sent. The Distributed Communications Architecture (DCA)<br />
defines the values for the field. CMS sets the field for every input message, and the<br />
application program sets the field for every output message. A value of zero has a<br />
special meaning (discussed with P$DID). The values for this field are<br />
• Category 1, Presentation Devices, is for auxiliary printers connected to a CRT.<br />
Examples are the UNISCOPE 100 COP printer, the TP 800 printer, the 0786<br />
printer, and the DCT 1000 auxiliary printer.<br />
P$DID<br />
• Category 2, Acquisition Devices, is for auxiliary input devices connected to a<br />
CRT. There are currently no examples of such devices.<br />
• Category 3, Conversational Devices, is for devices capable of both input and<br />
output. In the case of CRTs, it refers to the screen.<br />
• Category 4, Storage Devices, is for auxiliary output devices such as card punches<br />
or paper tape punches.<br />
• Category 5, Retrieval Devices, is for auxiliary input devices not connected to a<br />
CRT. Examples are the DCT 1000 card reader or teletypewriter paper tape<br />
reader.<br />
• Category 6, Storage/Retrieval Devices, is for auxiliary devices that are capable of<br />
both input and output. An example is the TCS 610 tape cassette system.<br />
The DID or device identifier. If P$CAT is zero, this field contains the hardware<br />
device-id (DID) for the device that is to receive an output message or from which an<br />
input message was received. CMS sets the field on every input; the application<br />
program sets the field on every output.<br />
If P$CAT and P$DID are both zero in an output message, the message is not sent to<br />
any auxiliary device. If P$CAT is nonzero, this field specifies the logical device<br />
number within the category that is to receive an output message or from which an<br />
input was received. For an output message, the device number specified must exist<br />
and be assignable by CMS. If not, the message cannot be delivered.<br />
P$HDR<br />
The offset into the output message for the MCB to place its header, if any. If<br />
P$HDRSIZE is zero, P$HDR is ignored. The value in the field is in characters from the<br />
beginning of the message. (1 is the first character, 2 is the second character.) If this<br />
field is zero, the MCB does not create a header.<br />
If the field is nonzero, the MCB assumes that there are P$HDRSIZE characters in the<br />
user text that may be overlaid. MCB also assumes that any necessary control<br />
7833 1568–004 4–29
CMS Interface<br />
sequences (cursor positioning, for example) are present in the text and are not<br />
included in the P$HDRSIZE characters.<br />
The MCB inserts only alphanumeric ASCII characters in the message. If the message<br />
length is not large enough to hold all P$HDRSIZE characters, the header is truncated.<br />
This field must be set by Display Processing System or the calling program, when<br />
output message numbering is needed and the destination PID is configured with the<br />
unintelligent numbering option (see 5.9.2).<br />
P$HDRSIZE<br />
The size of the output header. If P$HDR is zero, the field has no meaning. If P$HDR<br />
and P$HDRSIZE are both nonzero, any header is limited to the number of characters<br />
specified in P$HDRSIZE. Note that this may result in truncation of the header.<br />
P$HDRSIZE must be at least 60 to avoid truncation.<br />
P$RTYP<br />
The hardware device type. This field is set up by CMS for each input message. The<br />
values can be the same as those for P$TTYP. In most cases, the actual value will be<br />
the same as P$TTYP on any one message. The exception is when P$RTYP is equal<br />
to 027 (the code for 3270). In this case, P$TTYP may be controlled by the transaction<br />
program system (see 3.5.10).<br />
P$RSTYP<br />
P$CCS<br />
The terminal subtype. This field is supplied by CMS for each input message. The<br />
terminal subtype value can be defined in the terminal configuration. This is a<br />
site-specified value that further identifies the terminal type. <strong>Unisys</strong> software is not<br />
sensitive to terminal subtype values. This field is not used as a terminal subtype on<br />
output, but is part of a different field (see P$HDR).<br />
The coded character set. This field is supplied by CMS for each input message. Table<br />
4–3 lists the currently defined values.<br />
Table 4–3. Values for the Coded Character Set<br />
Decimal Octal Explanation<br />
1 01 ASCII/ISO character set. The data is expected to be in the<br />
United States variant of ISO 646. Historically, however, this<br />
value has also been used to indicate any quarter-word<br />
character set (in contrast to sixth-word Fieldata).<br />
2 02 ASCII/APL character set<br />
3 03 Extended Binary Coded Decimal Interchange Code (EBCDIC)<br />
4 04 Raw binary<br />
5 05 Untyped data or application-dependent data<br />
6 06 Column binary format character set<br />
4–30 7833 1568–004
Table 4–3. Values for the Coded Character Set<br />
Decimal Octal Explanation<br />
7 07 Reserved for use by the operating system<br />
CMS Interface<br />
8 through 13 (octal values 010 through 015) are reserved for customer use. These character<br />
sets are assumed to be ASCII-like.<br />
14 016 Hangul character set<br />
15 017 Hanzi character se<br />
16 020 JIS 16 18-bit Kanji format character set<br />
17 021 ISO 646 United States<br />
18 022 646 Norway/Denmark<br />
19 023 646 France<br />
20 024 646 Germany<br />
21 025 United Kingdom<br />
22 026 Italy<br />
23 027 Spain<br />
24 030 Sweden<br />
25 031 Finland<br />
26 032 Canada<br />
27 033 Netherlands<br />
28 034 Portugal<br />
29-32 035-040 Reserved for future definition of ISO character sets<br />
33-34 041-042 Reserved for customer use<br />
35 043 ISO 8859.1 Latin Alphabet No. 1<br />
36 044 ISO 8859.1 Latin Alphabet No. 2<br />
37 045 ISO 8859.1 Latin Alphabet No. 3<br />
38 046 ISO 8859.1 Latin Alphabet No. 4<br />
39 047 ISO 8859.5 Latin/Cyrillic<br />
40 050 ISO 8859.6 Latin/Arabic<br />
41 051 ISO 8859.7 Latin/Greek<br />
42 052 ISO 8859.8 Latin/Hebrew<br />
43 053 ISO 8859.9 Latin Alphabet No. 5<br />
44 054 ISO 8859.10 character set (box drawing set)<br />
45 055 French/Arabic character set<br />
46 056 Katakana character set<br />
7833 1568–004 4–31
CMS Interface<br />
Table 4–3. Values for the Coded Character Set<br />
Decimal Octal Explanation<br />
47 057 BICS character set<br />
48-50 060-062 Reserved for future definition of ISO character sets<br />
51-61 063-075 Reserved for arbitrary future use Assumed to be not<br />
ASCII-like<br />
62-63 076-077 Reserved for future use<br />
4–32 7833 1568–004
Section 5<br />
Application Program Interface<br />
5.1. General Description<br />
This section describes a packet-driven interface that you can use in any application<br />
program that requires the functions of <strong>Message</strong> <strong>Control</strong> <strong>Bank</strong> (MCB). The Display<br />
Processing System can also use this interface, on behalf of application programs, to<br />
access MCB instead of COMPOOL. This is the recommended interface for application<br />
programs. It offers a richer set of functions and a shorter path length than the MCB TIP<br />
primitive interface discussed in Section 6.<br />
Any program activity that uses the MCB through this interface must use the initialize<br />
function first. This function defines a unique program step that may or may not have an<br />
associated input, pass-off, or checkpoint message to process. A program step may be<br />
started without reading an associated input or passoff message. An example of such a<br />
program is a batch program to send an unsolicited broadcast message to all terminals. A<br />
program activity that executes as a program step with the MCB may concurrently<br />
interface to Universal Database <strong>Control</strong> for database access and update. If so, the<br />
program step message processing and database processing are coordinated for<br />
recovery. See the Integrated Recovery Conceptual Overview.<br />
The use of a multiactivity program is restricted in these ways:<br />
• A multiactivity transaction program may have only one activity that executes as a<br />
program step and interfaces to the MCB.<br />
• A multiactivity batch or demand program may have two or more activities, each<br />
executing as an independent program step interfacing to the MCB. Two user<br />
program activities may not interface to the MCB with respect to the same message.<br />
Any program calling the MCB must be executing in quarter-word mode at the time the<br />
MCB is called. If the program is not in quarter-word mode, program error code 04 (see<br />
Appendix B) is returned.<br />
MCB provides a sample library of subroutines that you can use to call MCB. See<br />
Appendix G for more information.<br />
7833 1568–004 5–1
Application Program Interface<br />
5.2. Basic Mode High-Level Calling Sequence<br />
An application program written in Meta-Assembler (MASM) can invoke the calling<br />
sequence explained in 3.4 or enter the MCB with<br />
���� ��� �������������<br />
An application program written in ASCII FORTRAN (FTN) can enter the MCB with<br />
���� ��� ���������������<br />
An application program written in ASCII COBOL (ACOB) can enter the MCB with<br />
���� ������ ����� ������ �����������<br />
The subroutine with entry points MCB and CMCB is included in the TIP library files<br />
and is generated with the relocatables for the TIP primitives. The STATUS word<br />
contains the program error code, if any, returned by the MCB. For a complete list of<br />
these error codes, see Appendix B.<br />
The calling program of the MCB should have the following addressing environment at the<br />
time the MCB is entered:<br />
• The main I-bank (BDR0) is the calling program’s I-bank. This bank is unbased by the<br />
MCB when the LBJ is done, and is rebased when the MCB returns control to the<br />
calling program.<br />
• The main D-bank (BDR2) holds the packet and the data buffer that the application<br />
program passes to MCB. MCB does not unbase this bank. This bank must not be<br />
read-only, and its address limits must not overlap the MCB common banks that MCB<br />
bases on BDR0 and BDR3. Because the upper limit for the MCB I-bank can be as<br />
high as 0127777, set the lower limits of the application program bank at 0130000 or<br />
higher. If the limit must be below 0130000, refer to the MCB Installation Guide.<br />
• The utility I-bank (BDR1) can be empty or can have an I-bank based by the calling<br />
program. This bank is unbased by the MCB and rebased before returning to the<br />
calling program. The calling program must have neither the packet nor the data buffer<br />
in this window when the MCB is called. The calling program’s bank must not be a<br />
guaranteed entry-point bank.<br />
• The utility D-bank (BDR3) can be empty or can have a D-bank based by the calling<br />
program. This bank is unbased by the MCB and rebased before returning to the<br />
calling program. As with the utility I-bank, neither the packet nor the data buffer can<br />
be in this bank, and the bank must not be a guaranteed entry-point bank.<br />
The product installation file (GN file) contains these sample basic mode templates for the<br />
MCB packet. These templates can also be found in SYS$LIB$*PROC$ if you installed<br />
MCB using SOLAR.<br />
• MCBDEF-COB<br />
• MCBDEF-FTN<br />
• MCBDEF-MASM<br />
5–2 7833 1568–004
Application Program Interface<br />
The GN file also contains sample basic mode application programs that use the<br />
templates for the MCB packet. The program names are<br />
• EXAMPLE-COB EXAMPLE-COB uses a MASM routine GETADDR, located in the GN<br />
file, to obtain buffer addresses for the MCB.<br />
• EXAMPLE-FTN<br />
5.3. Extended Mode High-Level Calling Sequence<br />
An application program written in UCS FORTRAN (UFTN) can enter the MCB with<br />
���� ������� �������� ������� ����� ����<br />
An application program written in UCS COBOL (UCOB) can enter the MCB with<br />
���� ��������� ����� ������ ������ ���� ���<br />
An application program written in UCS C (UC) can enter the MCB with<br />
������� ��������� �������� ������ ������<br />
An application program written in UCS Ada (UADA) can enter the MCB with<br />
������� �������� ������� ����� �����<br />
See the Application Development Programming Guide for more information on writing<br />
programs that access MCB.<br />
Alternatively, entry-point name MCB$ENTn can be used instead of MCB$ENT, where n is<br />
the step control application number. This method is not recommended because your<br />
program cannot be ported to another application group without a symbolic rewrite.<br />
The UFTN assumed noncontiguous arrays cannot be used in the argument list of a call to<br />
the MCB.<br />
The parameters are as follows:<br />
• Parameter one points to the interface packet as shown in Figure 5–1 with the<br />
following exceptions:<br />
− P$BUFF must be zero. Parameter three is used instead of P$BUFF.<br />
− P$RTN must be zero. Alternate return point cannot be used.<br />
− P$MDL must be zero. Parameter four is used instead of P$MDL.<br />
Packet words 020 and 021 exist only if packet cell P$VER contains the value 3.<br />
An auxiliary area exists if packet cell P$AUX is nonzero. The auxiliary area<br />
immediately follows the interface packet, at word 020 (if packet words 020 and<br />
021 do not exist) or at word 022 (if packet words 020 and 021 exist).<br />
• Parameter two points to a 36-bit word which MCB uses to return a status code.<br />
Refer to Appendix B for a list of values returned.<br />
7833 1568–004 5–3
Application Program Interface<br />
• Parameter three points to the data buffer. This parameter is used instead of packet<br />
cell P$BUFF. The buffer must be word-aligned. (If you want text to start at some<br />
location in your buffer other than the first quarter of the first word, you can use the<br />
packet cell P$OFF.) This parameter can be null for functions that do not require the<br />
data buffer.<br />
• Parameter four points to the multiple destination list. This parameter is used instead<br />
of packet cell P$MDL. The destination list format is shown in section 5.5.8. This<br />
parameter can be null when a multiple destination list is not required.<br />
MCB requires read and write access to parameters one, two and three. MCB requires<br />
read access to parameter four.<br />
The product installation file (GN file) contains these sample extended mode templates for<br />
the MCB packet. These templates can also be found in SYS$LIB$*PROC$ if you installed<br />
MCB using the Software Library Administrator (SOLAR):<br />
• MCBDEF-UCOB<br />
• MCBDEF-UFTN<br />
• MCBDEF-UMASM<br />
• MCBDEF-UC/H<br />
• MCBDEFCOPY/H<br />
Note: In SYS$LIB$*PROC$, the elements MCBDEF-UC/H and MCBDEFCOPY/H are<br />
listed as incremental elements MCBDEF-UC n/H and MCBDEFCOPYn/H, where n is the<br />
application group number.<br />
The GN file also contains sample extended mode application programs that use the<br />
templates for the MCB packet. The program names are<br />
• EXAMPLE-UCOB<br />
• EXAMPLE-UFTN<br />
• EXAMPLE-UC<br />
5.4. Application Program Interface Packet<br />
The packet shown in Figure 5–1 is used for all application program functions. On any<br />
given function, only certain fields are used. The unused fields must be presented as<br />
binary zero. The bit-numbering method used in this and other packets in this section is as<br />
follows:<br />
• The leftmost bit is the high-level bit (35).<br />
• The rightmost bit is the low-level bit (0).<br />
5–4 7833 1568–004
00<br />
P$FUNC<br />
function code<br />
P$OFF<br />
data offset<br />
Application Program Interface<br />
7833 1568–004 5–5<br />
P$ID<br />
message identifier<br />
01 P$LENGTH request character count P$BUFF data buffer address<br />
02 P$START start character point P$RTN return point<br />
03<br />
P$AUX<br />
auxiliary data<br />
P$FAC<br />
facilities<br />
P$VER<br />
version<br />
P$FLAGS<br />
flags<br />
04 P$PID terminal identifier P$MN message number<br />
05 P$TC1 transaction code<br />
06 P$TC2 transaction code P$ML message length<br />
07 P$STEP1 step-id word 1<br />
010 P$STEP1 step-id word 2<br />
011 P$PROG program number P$NODE queue node<br />
012<br />
P$MODE<br />
program mode<br />
P$REQUE<br />
requeue<br />
P$TYPE<br />
message type<br />
013 P$RUNID generated run-id<br />
014 P$OS1 originator's step-id word 1<br />
015 P$OS1 originator's step-id word 2<br />
P$RECOPT<br />
recovery options<br />
016 P$OUTQ output queue parameters P$MDL destination list<br />
017<br />
P$SAVE<br />
Display Processing System screen number<br />
P$WAIT<br />
wait time<br />
~020 P$SID1 site-id for the PID<br />
~021 P$SID2<br />
~022 start of auxiliary information<br />
~ These words are optional.<br />
Figure 5–1. Application Program Interface Packet<br />
P$ERR<br />
error code<br />
P$LVL<br />
When you use the application initialize or read input functions, word 016 is overlaid as<br />
shown in Figure 5–2.<br />
level
Application Program Interface<br />
016 P$OUTQ output queue parameters P$MDL destination list<br />
*016 P$TID timer-id or input timestamp<br />
5.5. Functions<br />
Figure 5–2. Application Program Interface Packet Overlay<br />
The following information describes MCB functions available to application<br />
programs through the application program interface. In the packet field<br />
descriptions, mnemonics name the function code passed in the P$FUNC field. The<br />
actual value for each function code is listed in Appendix A.<br />
5.5.1. Initialize<br />
You can use the Initialize function in one of these ways:<br />
• Transaction program initialization with the MCB and step control. This may include<br />
retrieval of the next input message from the wait queue for the transaction program,<br />
or a step may be started with no input message.<br />
• Online batch program initialization with the MCB, connection to TIP, and initialization<br />
with step control. This may include retrieval of the next input message from the wait<br />
queue for the batch program, or a step may be started with no input message. Batch<br />
or demand program initialization with the MCB, connection to TIP, and initialization<br />
with step control. This may include retrieval of a message from a specified input<br />
queue, or a step may be started with no input message.<br />
• For any of the cases that include message retrieval, all or part of the message may<br />
be read by the program.<br />
• If the message is nonrecoverable and the entire message has been read, it may be<br />
released.<br />
A program can use the Initialize function repetitively without using a terminate first. The<br />
program must have no step outstanding at the time of the call to the MCB. Steps are<br />
terminated by the Commit, Rollback, and Terminate functions, or Network Database<br />
Server FREE, DEPART, or DEPART WITH ROLLBACK commands. A transaction program<br />
or online batch program cannot start a step without retrieving a message on the first use<br />
of this function. The message that causes a program to be executed must be read and<br />
released before a step without an input can be started. The program must end the step<br />
with commit, rollback, terminate, or Network Database Server command before starting<br />
another step.<br />
If a program issues the Initialize function more than once (multiple call) with message<br />
retrieval specified, two results may occur:<br />
• A new message is delivered to the program.<br />
• Error code 022 is returned to the program because no message is waiting.<br />
If a program uses the MCB packet interface to issue a multiple call while no messages<br />
5–6 7833 1568–004
Application Program Interface<br />
are waiting, the program remains initialized and can issue other MCB functions.<br />
Programs that use MCB primitives are terminated from the MCB if no message exists<br />
when the program issues a multiple INITAL call.<br />
The Initialize function uses several Executive requests (ER):<br />
• ER TRMRG$ is performed each time the function is used by a program.<br />
• ER QI$NIT is performed each time the function is used by a transaction program to<br />
retrieve a message.<br />
• ER QI$CON is performed each time the function is used by a batch or demand, an<br />
online batch program or by a transaction program to start a step without a message.<br />
Step control parameters and any parameters of a retrieved message are always returned<br />
to the MCB calling program. <strong>Message</strong> text can be returned. The Read Input function can<br />
be used to read or reread message text after the function is completed. TIP TIMER input<br />
may also be received using the MCB initialize function.<br />
Note: If you terminate a program with the X keyin while the program is initialized with<br />
the MCB, a short recovery of the application group is required.<br />
The packet fields are used as follows:<br />
P$FUNC<br />
The function code TRINIT$$. This field is supplied by the calling program.<br />
P$FAC<br />
The facilities status field indicates the condition of system facilities at completion of<br />
the request. MCB returns a value in the range 0 to 3. The following values are the<br />
maximum current values of either Exec or MCB resources. Exec values are based on<br />
core queue items or EXPOOL. MCB values are based on core buffers or MADs. If<br />
the MCB is nonrecoverable, message retention file (MRF) usage is also included.<br />
Exec MCB<br />
0 = normal 0 = normal<br />
1 = 50 percent in use 1 = 50 percent in use<br />
2 = 80 percent in use 2 = 70 percent in use<br />
3 = 90 percent in use 3 = 90 percent in use<br />
P$LENGTH<br />
This field contains the number of text characters requested for the message. If this<br />
field is zero, no text is transferred to the calling program. If nonzero, the number of<br />
characters or the entire message, whichever is less, is transferred to the calling<br />
program. The message field length is in quarter words, which is supplied by the<br />
calling program. When the last character of the message is read, the field is changed<br />
by the MCB to show the number of characters actually transferred. This action is<br />
described in bit 0 of P$FLAGS.<br />
7833 1568–004 5–7
Application Program Interface<br />
P$BUFF<br />
The data buffer address. This data area is assumed to be in the main D-bank window<br />
(BDR2). The field is supplied by the calling program.<br />
P$START<br />
P$PID<br />
P$MN<br />
The start character pointer. This value is the message-relative character at which to<br />
begin reading. <strong>Message</strong> text characters are numbered sequentially from one. If this<br />
field is zero, the value 1 (the first text character) is assumed. This field is supplied by<br />
the calling program. If nonzero, the value must be less than or equal to the number<br />
of characters in the message text. On return from this call, the field points to the<br />
character following the last character read.<br />
The input PID. This field is filled in by the MCB.<br />
The input message number. This field is filled in by the MCB if a message is<br />
retrieved. If the message is not numbered, zero is returned.<br />
Note: The input PID, P$PID, and input message number, P$MN, may be applicable<br />
to checkpoint and pass-off as well as network input if the checkpoint or pass-off is a<br />
member of a checkpoint or pass-off sequence generated by a nonrecoverable<br />
network input.<br />
P$VER<br />
P$OFF<br />
P$AUX<br />
The packet version number. The calling program must set this field to 3 to get the<br />
site-id, if one exists, that is associated with the PID when an input message is to be<br />
read. In addition, two extra words for P$SID1 and P$SID2 must be provided at the<br />
end of the interface packet before the auxiliary data area.<br />
The partial word in which the text is to begin in the user’s data buffer. The value 0<br />
implies the first quarter of the word given in P$BUFF; four implies the first quarter of<br />
the following word, and so forth. This field is supplied by the calling program.<br />
The size in words of auxiliary data to be put in the request packet. If the value in this<br />
field is not at least as large as the existing auxiliary data, an error condition exists,<br />
and a status is returned to the calling program. The field is supplied by the calling<br />
program. Upon return, this field is set by the MCB to the number of auxiliary words<br />
of data actually present in the message. See 4.6 for a description of the auxiliary<br />
contents.<br />
5–8 7833 1568–004
P$FLAGS<br />
The bits for this function are<br />
P$WAIT<br />
P$LVL<br />
P$RTN<br />
P$ML<br />
Application Program Interface<br />
Bit 0 Last block indicator (LBI). If set, the last character of the message was read. In this<br />
case, P$LENGTH is set to the number of characters actually transferred. The bit is<br />
set by the MCB.<br />
Bit 1 When set, start a step without retrieving a message. If clear, retrieve a message or<br />
return a status, if none is available. For a batch or demand program the waiting<br />
time when no message is queued is determined by P$WAIT. This bit is set by the<br />
calling program.<br />
Bit 2 When set, release the message if it is nonrecoverable and the last character has<br />
been read. Bits 1 and 2 cannot both be set. This bit is set by the calling program.<br />
Bit 3 When set, retrieve the timestamp, in ER TIME$ format (milliseconds past<br />
midnight), of when the message was put on the OS 2200 Step <strong>Control</strong> Input<br />
Queuing Tree. The timestamp is returned in P$TID of the input packet by MCB.<br />
Setting bit 3 also enables your application to log user HVSTAT data by setting<br />
auxiliary area word 0 to the ASCII character string HVST (see 5.13).<br />
Bit 13 If set, the message retrieved is a conversational link input message. This bit is set<br />
by the MCB.<br />
The length of time (in seconds) to wait for an input message if none exists at the<br />
time the request is made. This field applies to batch and demand programs only.<br />
The connect level for connecting a batch or demand, or online batch program to TIP.<br />
Allowed level values are one, two, or three. See the Transaction Processing<br />
Programming Reference Manual, for a definition of connect levels.<br />
The return point. If the field is zero, control is returned to the calling program<br />
following the LBJ that entered the MCB. If the field is nonzero, control is returned to<br />
the specified address in the bank from which the MCB was called, and P$RTN is set<br />
to the address following the LBJ that entered the MCB.<br />
The number of quarter words of text in the message. This field is filled in by the<br />
MCB.<br />
P$STEP1/P$STEP2<br />
The unique identifier of this program step. The field is filled in by the MCB using<br />
information returned by an ER QI$NIT or an ER QI$CON.<br />
P$PROG<br />
The transaction program number. This field is filled in by the MCB.<br />
7833 1568–004 5–9
Application Program Interface<br />
P$NODE<br />
P$TID<br />
The terminating node on the input queue from which the message should be<br />
retrieved (batch or demand) or was retrieved (transaction or online batch). This field is<br />
filled in by the MCB for transaction and online batch programs. The field is supplied<br />
by a batch or demand program if P$FLAGS bit 1 is clear.<br />
For TIMER input (P$TYPE = 6), this field is timer-id. For network input, checkpoint,<br />
and pass-off messages (P$TYPE 1, 2, and 3), this is the timestamp, in milliseconds<br />
past midnight, of when the message was put on the OS 2200 Step <strong>Control</strong> Input<br />
Queuing Tree. This field is filled in by the MCB when P$FLAGS bit 3 is set to request<br />
retrieval.<br />
P$TYPE<br />
The message type. This field is filled in by the MCB. The values are<br />
1 = Network input<br />
2 = Checkpoint<br />
3 = Pass-off<br />
4 = Output<br />
Note: The only occurrence of P$TYPE = 4 on the Initialize function is when a<br />
recoverable output message is forwarded to the system error program because<br />
it is undeliverable to the network (see 8.2.4).<br />
6 = Timer input<br />
Note: For P$TYPE=6, see the P$OUTQ/P$MDL field for the timer-id.<br />
7 = ROPL output (See SEND$ function in 5.5.8).<br />
P$MODE<br />
The program mode. This field is filled in by the MCB. The values are<br />
0 = Normal mode<br />
1 = Training mode<br />
2 = Test mode<br />
3 = Test or training mode<br />
P$RUNID<br />
The generated run-id of the program. This field is filled in by the MCB.<br />
P$OS1/P$OS2<br />
The unique identifier of the originator of the message. The field is filled in by the<br />
MCB. This field is applicable only to output, pass-off and checkpoint messages.<br />
5–10 7833 1568–004
P$OUTQ/P$MDL<br />
Application Program Interface<br />
The timer-id. This field is filled in by the MCB. It is meaningful only when the calling<br />
program retrieves a timer input.<br />
P$RECOPT<br />
The recovery options. This field must be supplied if a step is started without getting a<br />
message. If a message is retrieved, the MCB returns the step’s recovery options. In<br />
a batch-connect program, all recovery options are meaningful (see 3.3.3).<br />
P$TC1/P$TC2<br />
P$ERR<br />
The transaction code of the message. This field is filled in by the MCB and contains 1<br />
to 6 ASCII characters terminated by a blank, if fewer than six characters. For a<br />
checkpoint message (P$TYPE = 2), this field has the value supplied by the calling<br />
program at store checkpoint time (see 5.5.10).<br />
The error code. This field is filled in by the MCB from information returned by an ER<br />
QI$NIT or an ER QI$CON. The field only applies to recoverable messages directed to<br />
the system error program (see 8.2.4).<br />
P$REQUE<br />
The requeue count. The field is filled in by the MCB from information returned by ER<br />
QI$NIT or ER QI$CON. The field denotes the number of times, if any, that this<br />
recoverable message has been requeued for processing after a system failure or<br />
application rollback.<br />
P$SAVE<br />
For a network input message, the field contains the value specified in some previous<br />
output message. For pass-off and checkpoint messages, this field is zero.<br />
P$SID1/P$SID2<br />
5.5.2. Terminate<br />
The site-id of the PID. This field is filled in by the MCB and consists of 1 to 8 ASCII<br />
characters, left-justified and space-filled. It is supplied only when the application calls<br />
the MCB with P$VER set to 3 and an input message is expected. Also, the PID<br />
sending the message must have an entry and a site-id in the PID site-id table. The<br />
site-id is returned in uppercase ASCII characters. If the site-id is not found in the<br />
table, binary zero is returned in this field.<br />
The Terminate function ends the association of a program with the MCB. If a step exists,<br />
this function implies a commit with step termination. A checkpoint cannot be pending.<br />
An ER TRMRG$ is always performed, and the calling program’s SWL is no longer<br />
recorded by the MCB. The ER EXIT$ is never performed. Any batch, demand, or online<br />
batch program is disconnected from TIP. In all cases, partially constructed output,<br />
pass-off, or checkpoint messages are released. If a discrete receive has been done, that<br />
message is also released. If auditing is turned on in the Exec, this function is not allowed<br />
7833 1568–004 5–11
Application Program Interface<br />
by a run-unit currently imparted to Universal Database <strong>Control</strong> (see 7.1). The packet fields<br />
for this function are<br />
P$FUNC<br />
The function code TERM$$. This field is supplied by the calling program.<br />
P$RTN<br />
The return point. If this field is zero, control is returned to the calling program<br />
following the LBJ that entered the MCB. If the field is nonzero, control is returned to<br />
the specified address in the bank from which the MCB was called, and P$RTN is set<br />
to the address following the LBJ that entered the MCB.<br />
P$ID<br />
5.5.3. Commit<br />
The message-id. This field must be zero.<br />
The Commit function indicates a success point for a program. The current step can be<br />
• Terminated<br />
• Terminated and replaced by a checkpoint<br />
• Advanced<br />
If the first option is exercised, the program remains initialized with the MCB but it cannot<br />
perform message processing. Another initialize is required to perform more message<br />
processing and a terminate is necessary before termination. The second option is<br />
solicited by creating a checkpoint message during the step. OS 2200 step control starts a<br />
new step if a checkpoint message exists when a step terminates. In this case, the same<br />
fields returned by the MCB on an initialize are returned in the packet. This function is not<br />
allowed by a run-unit currently imparted to Universal Database <strong>Control</strong>. For such a<br />
program, a DML FREE or DEPART command implies a commit point.<br />
When the third option (advanced) is used, the step currently active remains active, and<br />
another initialize is not allowed. In all cases, partially constructed output, pass-off, or<br />
checkpoint messages are released. If a discrete receive is performed, that message is<br />
also released.<br />
The packet fields for this function are<br />
P$FUNC<br />
The function code COMMIT$$. This field is supplied by the calling program.<br />
P$FAC<br />
The facilities status (see 5.5.1). This field is filled in by the MCB.<br />
P$RTN<br />
The return point. If the field is zero, control is returned to the calling program<br />
following the LBJ that entered the MCB. If this field is nonzero, control is returned to<br />
5–12 7833 1568–004
Application Program Interface<br />
the specified address in the bank from which the MCB was called, and P$RTN is set<br />
to the address following the LBJ that entered the MCB.<br />
P$FLAGS<br />
Bits to tell the MCB what to do. This field is supplied by the calling program. The bits<br />
for this function are<br />
Bit 8 If set, advance the step.<br />
Bit 9 If set, terminate the step and release the input message. If a checkpoint<br />
message exists, a new step is started by step control. Otherwise, the<br />
program continues without a step.<br />
If both bits are set, an error exists. If both bits are clear, the program recovery<br />
options in effect for this program step determine the default.<br />
P$STEP1/P$STEP2<br />
P$ID<br />
5.5.4. Rollback<br />
The step-id. The program’s step-id is returned if an advance or terminate with<br />
checkpoint pending was performed. Zero is returned if step terminate with no<br />
checkpoint was performed.<br />
The message-id. This field must be zero.<br />
The Rollback function indicates the end of an unsuccessful step. The step may be<br />
• Started over (resumed).<br />
• Terminated and the input message, if any, requeued or released. If a recoverable<br />
message exists, it is requeued. If a nonrecoverable message exists, it is released.<br />
• Terminated and the input queued to the error program.<br />
If the second or third option is exercised, the program remains associated with the MCB<br />
but it cannot do message processing. Another initialize is required to perform additional<br />
message processing, and a terminate is necessary before program termination.<br />
If the first option is exercised, a recoverable input message held when the step started is<br />
still available; if the input message is not recoverable and was not released previously, it<br />
is also still available. This function is not allowed by a run-unit currently imparted to<br />
Universal Database <strong>Control</strong>. For such a program, a DML DEPART WITH ROLLBACK<br />
command implies a rollback. In all cases, partially constructed output, pass-off, or<br />
checkpoint messages are released. If a discrete receive was performed, that message is<br />
also released.<br />
The packet fields for this function are<br />
P$FUNC<br />
The function code ROLBAK$$. This field is supplied by the calling program.<br />
7833 1568–004 5–13
Application Program Interface<br />
P$FAC<br />
P$RTN<br />
The facilities status (see 5.5.1). This field is filled in by the MCB.<br />
The return point. If this field is zero, control is returned to the calling program<br />
following the LBJ that entered the MCB. If this field is nonzero, control is returned to<br />
the specified address in the bank from which the MCB was called, and P$RTN is set<br />
to the address following the LBJ that entered the MCB.<br />
P$FLAGS<br />
Bits to tell the MCB what to do. This field is supplied by the calling program. The bits<br />
for this function are<br />
Bit 10 If set, resume the current step with the same input message, if any. If a<br />
nonrecoverable input has been previously released, resume with no input.<br />
Bit 11 If set, terminate the step and requeue the input (if recoverable) or release<br />
it (if nonrecoverable).<br />
Bit 12 If set, terminate the step and queue the input to the system error program<br />
(if recoverable). If the input is not recoverable, release it. If no bits are set,<br />
the program recovery options in effect for this program step determine<br />
the default. Only one of these bits may be set.<br />
P$STEP1/P$STEP2<br />
The unique identifier of the program step. The new unique identifier is returned by<br />
the MCB. The values are<br />
• Zero, if the step was terminated<br />
• The current unique identifier, if the step resumed<br />
P$ID<br />
The message-id. This field must be zero.<br />
5.5.5. Read Input<br />
The Read Input function transfers message text from the MCB (or retention file) to the<br />
calling program’s data area. An option is provided to release a nonrecoverable message if<br />
the last character is read. Any part of a message can be read or reread, and a program<br />
can use this function any number of times. The packet fields for this function are<br />
P$FUNC<br />
The function code RECV$$. This field is supplied by the calling program.<br />
P$FAC<br />
The facilities status (see 5.5.1). This field is filled in by the MCB.<br />
5–14 7833 1568–004
P$ID<br />
P$VER<br />
Application Program Interface<br />
The message-id. If nonzero, this field must be the value returned by the MCB on a<br />
previous discrete receive function. If zero, the current input message is read.<br />
The packet version number. The calling program must set this field to 3 to get the<br />
site-id, if one exists, that is associated with the PID. In addition, two extra words for<br />
P$SID1 and P$SID2 must be provided at the end of the interface packet before the<br />
auxiliary data area.<br />
P$LENGTH<br />
The requested number of message text characters. If nonzero, the number of<br />
characters or the remaining message text, whichever is less, is transferred to the<br />
calling program. Refer to P$START below. This value is in quarter words, and the<br />
field is supplied by the calling program. If P$FLAGS bit 0 is set on return, this field<br />
contains the number of characters actually transferred.<br />
P$BUFF<br />
The data buffer address. This data area is assumed to be in the main D-bank window<br />
(BDR2). The field is supplied by the calling program.<br />
P$START<br />
P$OFF<br />
P$AUX<br />
The start character pointer. This value is the message-relative character at which to<br />
begin reading. If the field is zero, the read begins where the previous read or initialize<br />
function left off. If P$START = 1, the auxiliary area is again returned to the calling<br />
program (see P$AUX field).<br />
The partial word in which the text is to begin in the user’s data buffer. The value 0<br />
implies the first quarter of the word given in P$BUFF; the value 4 implies the first<br />
quarter of the following word.<br />
The size in words of auxiliary data to be put in the request packet. If the value in this<br />
field is not at least as large as the existing data, an error condition exists, and a<br />
status is returned to the calling program. The field is supplied by the calling program.<br />
Upon return, this field is set by the MCB to the number of auxiliary words of data<br />
actually present in the message. See 4.6 for a description of the auxiliary area<br />
contents.<br />
P$FLAGS<br />
Bits to indicate what the MCB should do. The bits for this function are<br />
Bit 0 Last block indicator (LBI). If set, the last character of the message was<br />
read. In this case, P$LENGTH is set by the MCB to the number of<br />
characters actually transferred.<br />
7833 1568–004 5–15
Application Program Interface<br />
Bit 2 If set, release the message if it is nonrecoverable and the last character<br />
has been read. Bit 2 is supplied by the calling program. If not set, the<br />
message is not released until the calling program issues a commit or<br />
terminates.<br />
0 When set, retrieve the timestamp, in ER TIME$ format (milliseconds past<br />
midnight), of when the message was put on the OS 2200 Step <strong>Control</strong><br />
Input Queuing Tree. The timestamp is returned in P$TID of the input<br />
packet by MCB. This bit is ignored if P$START is not equal to 1.<br />
P$RTN<br />
The return point. If this field is zero, control is returned to the calling program<br />
following the LBJ that entered the MCB. If the field is nonzero, control is returned to<br />
the specified address in the bank from which the MCB was called, and P$RTN is set<br />
to the address following the LBJ that entered the MCB.<br />
P$SID1/P$SID2<br />
The site-id of the PID. This field is filled in by the MCB and consists of one to eight<br />
ASCII characters, left-justified and space-filled. It is supplied only when the<br />
application calls the MCB with P$VER set to 3 and the PID has an entry in the PID<br />
site-id table. The site-id returned in uppercase ASCII characters. If the site-id is not<br />
found in the table, binary zero is returned in this field.<br />
5.5.6. Release Input<br />
The Release Input function releases a nonrecoverable input message or a discrete<br />
receive message. If this function is used for a recoverable message, the MCB does<br />
nothing. The function can be used whether or not the message was read. It is not<br />
necessary to use this function since input messages can be released by other functions<br />
or at the end of the step.<br />
The packet fields for this function are<br />
P$FUNC<br />
The function code INPREL$$. This field is supplied by the calling program.<br />
P$FAC<br />
The facilities status (see 5.5.1). This field is filled in by the MCB.<br />
P$RTN<br />
The return point. If this field is zero, control is returned to the calling program<br />
following the LBJ that entered the MCB. If the field is nonzero, control is returned to<br />
the specified address in the bank from which the MCB was called, and P$RTN is set<br />
to the address following the LBJ that entered the MCB.<br />
5–16 7833 1568–004
P$ID<br />
Application Program Interface<br />
The message-id. If P$ID = 0, the current input message is released. If nonzero, the<br />
specified discrete receive message is released.<br />
5.5.7. Cancel Output<br />
The Cancel Output function discards a partially constructed output, pass-off, or<br />
checkpoint message.<br />
The packet fields for this function are<br />
P$FUNC<br />
The function code CANCEL$$.<br />
P$RTN<br />
The return point. If this field is zero, control is returned to the calling program<br />
following the LBJ that entered the MCB. If the field is nonzero, control is returned to<br />
the specified address in the bank from which the MCB was called, and P$RTN is set<br />
to the address following the LBJ that entered the MCB.<br />
P$ID<br />
P$FAC<br />
The message-id. If this field is zero, there may be only one partially constructed<br />
message outstanding and it is released. If the field is nonzero, it must be valid, and<br />
the specified message is released.<br />
The facilities status (see 5.5.1). This field is filled in by the MCB.<br />
5.5.8. Store Output<br />
The Store Output function constructs an output message. The calling program supplies<br />
parameters and text for the message. The MCB retains that data and its own control<br />
information in main storage, on mass storage, or both.<br />
The packet fields for this function are<br />
P$FUNC<br />
The function code SEND$$. The field is supplied by the calling program.<br />
P$FAC<br />
The facilities status (see 5.5.1). This field is filled in by the MCB.<br />
P$ID<br />
The message-id. The field is zero when a new message is begun. The value returned<br />
in this field is used to identify the message on future store functions if more than<br />
one message is undergoing construction simultaneously. As long as a program has<br />
7833 1568–004 5–17
Application Program Interface<br />
P$VER<br />
only one message under construction, this field may be zero on all store functions.<br />
Bit 7 of P$FLAGS determines whether or not a new message is begun.<br />
The packet version number. This field is supplied by the calling program with a value<br />
of 3 to indicate that a site-id in P$SID1 and P$SID2 is being supplied instead of<br />
P$PID. The packet should be two words longer for the site-id and the site-id should<br />
exist for a valid PID in the PID site-id table.<br />
P$LENGTH<br />
The number of quarter words of text being presented with this call. The field is<br />
supplied by the calling program.<br />
P$BUFF<br />
The data buffer address. This data area is assumed to be in the main D-bank window<br />
(BDR2). The field is supplied by the calling program.<br />
P$START<br />
P$PID<br />
P$OFF<br />
P$AUX<br />
The start character pointer. This value is the message-relative character at which to<br />
begin storing, where the first character is denoted by P$START = 1. The value is<br />
presented by the calling program. On return, it is set by the MCB to point to the<br />
character following the last character stored on the call. If the field is zero, the new<br />
text is appended to any existing text. If the field is nonzero, new text can overlay<br />
previously staged text or be appended to any existing text.<br />
The output PID. This field is filled in by the calling program. It may be a group<br />
(multiple destination) PID. This field must not be used if P$MDL is nonzero. If a group<br />
PID is specified, P$MN must be zero or the message numbering option must be<br />
cleared; otherwise, error 053 is returned.<br />
The partial word in which the text begins in the application program’s data buffer.<br />
The value 0 implies the first quarter of the word given in P$BUFF; the value 4 implies<br />
the first quarter of the following word. This field is supplied by the calling program.<br />
The size in words of auxiliary data in the request packet. The maximum size allowed<br />
for this data is 63 words. If the NAK reason code is to be supplied when a<br />
recoverable message is negatively acknowledged, at least four words of auxiliary<br />
area must be specified in this field (see 4.6). This field is supplied by the calling<br />
program.<br />
P$FLAGS<br />
Bits to indicate what the MCB should do. The field is supplied by the calling program.<br />
The bits for this function are<br />
5–18 7833 1568–004
Application Program Interface<br />
Bit 0 Last block indicator (LBI). If set, the message is to be queued to step<br />
control when the data transfer is complete.<br />
Bit 3 If set, and if P$PID identifies a group PID, the message is queued to one<br />
member of the group as selected by the system. This is referred to as<br />
rotary output. If not set, and if P$PID identifies a group PID, the message<br />
goes to all the members of the group. If P$PID does not specify a group<br />
PID, the bit is ignored. This bit is set by the calling program.<br />
Bit 4 If set, MCB creates a delivery notification message when CMS has<br />
successfully transmitted and acknowledged this output. The transaction<br />
code given in P$TC1 and P$TC2 is used as the target for the delivery<br />
notification message (see 5.10). Delivery notification is not provided for<br />
multiple destination messages.<br />
Note: If end-to-end acknowledgment is not used, the delivery notification<br />
can occur before the output message has traversed the network. If you<br />
want end-to-end acknowledgment, you can use intelligent message<br />
numbering (see 3.2.3). Alternatively, you can configure CMS PID<br />
statement with the GUARANTEE-DELIVERY or the AU-LABEL parameter.<br />
See the Communications Delivery Software Configuration Guide for more<br />
information. Any of these will cause CMS to delay acknowledging the<br />
output message until the message has reached its destination and CMS<br />
has received an acknowledgment. The scheduling of the delivery<br />
notification message is not guaranteed to occur in the event of an<br />
intervening system failure.<br />
Bit 5 The options in P$RECOPT should be used for the message. If this bit is<br />
not set, the output message recovery options in effect for the program<br />
step are used by default.<br />
Bit 6 Change the mode of the PID. If this bit is set, the value in P$MODE is<br />
saved as the terminal mode. Once set, a mode stays in effect until<br />
explicitly changed by an output message. The bit is ignored if P$PID is a<br />
group PID or if P$MDL is nonzero. The bit is set by the calling program.<br />
Bit 7 If set, this function applies to a partially staged output message. If not set,<br />
start a new message. If the bit is not set, P$ID must be zero.<br />
Bit 14 If set, save the value in P$SAVE to be returned with subsequent network<br />
input messages. Every network input message contains the value (in<br />
P$SAVE) that was last specified by an output to the PID from which the<br />
input is received. Output messages without this bit set do not alter the<br />
saved value (see 5.5.1).<br />
Bit 16 If set, the auxiliary data area previously stored with the message is<br />
replaced with the auxiliary data area presented with this call. When a new<br />
message is started (P$ID = 0 and P$FLAGS bit 7 also = 0), the size of the<br />
auxiliary data area for the message is determined by the value in P$AUX.<br />
The size is unalterable after that. On subsequent calls the auxiliary data<br />
area is left unchanged if bit 16 is not set. If bit 16 is set, the contents of<br />
the auxiliary data area is completely replaced.<br />
7833 1568–004 5–19
Application Program Interface<br />
P$RTN<br />
The return point. If the field is zero, control is returned to the calling program<br />
following the LBJ that entered the MCB. If the field is nonzero, control is returned to<br />
the specified address in the bank from which the MCB was called, and P$RTN is set<br />
to the address following the LBJ that entered the MCB.<br />
P$STEP1/P$STEP2<br />
The unique identifier of this program step. The field is filled in by the MCB from<br />
information returned by ER TIP$ID. This is done only on the first Store function for a<br />
given message. For reduced output path length (ROPL) messages or when a value of<br />
7 is returned in P$TYPE, this field is unused and has no meaning.<br />
P$TC1/P$TC2<br />
The transaction code. This is a one- to six- ASCII character (quarter-word) field,<br />
left-justified and space-filled. Only alphanumeric characters may be used. The field is<br />
used in conjunction with some of the bits in P$FLAGS and for conversational link.<br />
This field is supplied by the calling program. See also 3.3.5.<br />
P$MDL<br />
The destination list. This field contains the address of a list of PIDs to which the<br />
message should be sent. None of the entries in the list may itself be a group PID. A<br />
maximum of seven entries is allowed for a destination list. If a destination list is<br />
specified, P$MN must be zero or the message numbering option must be cleared.<br />
Figure 5–3 shows the destination list format.<br />
0 number of entries first PID<br />
01 second PID third PID<br />
02 fourth PID fifth PID<br />
03 sixth PID seventh PID<br />
P$MODE<br />
Figure 5–3. Multiple Destination List<br />
The mode of the PID. This field is used to set the mode of the PID given in P$PID.<br />
The field may not be used if P$PID is a group PID or if P$MDL is nonzero. Refer to<br />
5.5.1 for a definition of P$MODE values. If the MCB configuration has ��������� ���<br />
set to ���, the mode state is retained over a failure.<br />
5–20 7833 1568–004
P$OUTQ<br />
Application Program Interface<br />
The P$OUTQ field is divided into three 6-bit subfields (function, subfunction, and<br />
queuing priority), as shown below. These subfields become H1 of the second word<br />
of the output queue entry which CMS receives on its output routing queue. The<br />
effect of these subfields depends on CMS. The use of these subfields as described<br />
here is supported by CMS 1100 and by SILAS, but not necessarily by other CMS<br />
programs.<br />
function subfunction queuing<br />
priority<br />
<br />
The function code values can be<br />
0 Normal output<br />
1 Unsolicited output message to an interactive terminal. The system notifies the<br />
terminal of queued output, if feasible. he message is delivered when it is<br />
solicited by the terminal operator.<br />
04-05 Reserved for your site-developed application programs. Your site must supply<br />
its own communications handlers to process these values. CMS negatively<br />
acknowledges output that uses these values.<br />
The subfunction code values can be<br />
0 Nonconversational link output<br />
1 Conversational link in effect<br />
04-05 Reserved for your site-developed application programs. Your site must supply<br />
its own communications handlers to process these values. CMS negatively<br />
acknowledges output that uses these values.<br />
The queuing priority field indicates the priority level:<br />
Bits 2-0 Value of priority level, 0 through 7<br />
If the function and subfunction codes are both 1, the system notifies the terminal by<br />
actuating the bell or message-waiting light, and the next message-wait key input is<br />
passed to the sending program.<br />
If the subfunction is 1, a transaction code is assumed to be present in the P$TC1/P$TC2<br />
field. The next input from the PID is directed to that transaction, regardless of the<br />
message content. For subfunction = 1, the following conditions must be met:<br />
• P$PID cannot specify a group PID.<br />
• P$MDL must be zero.<br />
• Conversational link and delivery notification cannot both be set (see Bit 4 of<br />
P$FLAGS).<br />
7833 1568–004 5–21
Application Program Interface<br />
• If conversational link is being set while exclusive use is in effect, the following must<br />
be considered: The message is processed by CMS as a conversational link output,<br />
but the transaction code in P$TC1/P$TC2 is not used. Routing of the subsequent<br />
input from the PID is governed by the exclusive use link. If exclusive use is cleared<br />
before the subsequent input, the input is routed either to the program specified by<br />
the transaction code associated with the message or to the Error Notification<br />
Program. The preceding information also applies to input-only exclusive use, except<br />
that any program can send conversational link output to the PID. The potential for<br />
conflicts between application programs is greater. If one program has input-only<br />
exclusive use of the PID, and a second program requests input through<br />
conversational link, the second program does not receive the expected input. The<br />
next input goes instead to the input-only exclusive use program, unless the<br />
input-only exclusive use has been cleared.<br />
P$RECOPT<br />
The message recovery options. These bits determine how the message is handled.<br />
The following bits have meaning for the function:<br />
Bit 12 The message is deferred.<br />
Bit 13 The message is recoverable.<br />
Bit 14 The message text is audited.<br />
Bit 15 The message is numbered.<br />
Bit 16 The message is recallable.<br />
Bit 17 The message has low main storage priority<br />
P$ML<br />
message length in quarter words. This field is returned by the MCB when P$FLAGS<br />
bit 0 is set.<br />
P$SAVE<br />
For an output message, this field contains the value to be saved and returned with<br />
subsequent input messages from the PID (P$ID). If P$FLAGS bit 14 is not set, the<br />
field is ignored.<br />
P$SID1/P$SID2<br />
P$MN<br />
The site-id of a PID. This field is filled in by the calling program with 1 to 8 ASCII<br />
characters, left-justified and space-filled. P$VER must also be set to 3 and the site-id<br />
must exist in the PID site-id table. This field is not used if P$MDL is nonzero. The<br />
site-id can be in uppercase or lowercase ASCII characters. This field is 2 full words in<br />
length. If the site-id is not found in the PID site-id table the function is rejected.<br />
The message number. If this field is nonzero and the message numbering option is<br />
set, the message is intelligently numbered. If the message is recoverable and<br />
recallable, it can be recalled using this number. For this field to be meaningful, the<br />
5–22 7833 1568–004
Application Program Interface<br />
output PID in P$PID must be configured with intelligent numbering. This field is<br />
supplied by the calling program.<br />
P$TYPE<br />
MCB returns a value of 7 in this field when the MCB sends a ROPL type message.<br />
Notes:<br />
• Only single PIDs are allowed as output PIDs in intelligent numbering. If a group PID<br />
or a multiple destination list is specified as the destination, error 053 will be returned<br />
(see Appendix B).<br />
• The MCB accepts P$MN as it is. Therefore, this field must be cleared if intelligent<br />
numbering is not required.<br />
• If P$MN is zero, the message numbering option is set, and the destination PID is<br />
configured with intelligent numbering, the message must be recoverable; otherwise,<br />
an error status is returned.<br />
5.5.9. Store Pass-Off<br />
The Store Pass-Off function creates a message for delivery to another program. The<br />
packet fields for this function are<br />
P$FUNC<br />
The function code PASOFF$$. This field is supplied by the calling program.<br />
P$FAC<br />
The facilities status (see 5.5.1). This field is filled in by the MCB.<br />
P$ID<br />
The message-id. This field is zero when a new message begins. The value returned<br />
in the field identifies the message on future store functions if more than one<br />
message undergoes construction simultaneously. As long as a program has only one<br />
message under construction, the field may be zero on all store functions. Bit 7 of<br />
P$FLAGS determines whether or not a new message is begun.<br />
P$LENGTH<br />
The number of quarter words of text presented with this call. The field is supplied by<br />
the calling program.<br />
P$BUFF<br />
The data buffer address. This data area is assumed to be in the main D-bank window<br />
(BDR2). The field is supplied by the calling program.<br />
P$START<br />
The start character pointer. This value is the message-relative character at which to<br />
begin storing, where the first character is denoted by P$START = 1. The value is<br />
presented by the calling program. On return, it is set by the MCB to point to the<br />
7833 1568–004 5–23
Application Program Interface<br />
P$OFF<br />
P$AUX<br />
character following the last character stored on the call. If the field is nonzero, it can<br />
be used to overlay previously staged text or append text to any existing text. If the<br />
field is zero, the new text is appended to any existing text.<br />
The partial word in which the text begins in the application program’s data buffer.<br />
The value 0 implies the first quarter of the word given in P$BUFF; the value 4 implies<br />
the first quarter of the following word. This field is supplied by the calling program.<br />
The size in words of the auxiliary data in the request packet. The maximum size<br />
allowed for this data is 63 words. The field is supplied by the calling program, if<br />
desired.<br />
P$FLAGS<br />
Bits to indicate what the MCB should do. The field is supplied by the calling program.<br />
The following bits have meaning for this function:<br />
Bit 0 Last block indicator (LBI). If set, the message is to be queuedto step<br />
control when the data transfer is complete.<br />
Bit 5 The options in P$RECOPT should be used for this message. If this bit is<br />
not set, the input message recovery options for the target program are<br />
used by default.<br />
Bit 6 If set, the execution mode of the target program is given by P$MODE. If<br />
clear, the execution mode of the calling program is passed along.<br />
Bit 7 If set, this function applies to a partially staged pass-off message. If not<br />
set, start a new message. If the bit is not set, P$ID must be zero.<br />
Bit 16 If set, the auxiliary data area previously stored with the message is<br />
replaced with the auxiliary data area presented with this call. When a new<br />
message is started (P$ID = 0 and P$FLAGS bit 7 also = 0), the size of the<br />
auxiliary data area for the message is determined by the value in P$AUX.<br />
The size is unalterable after that. On subsequent calls, the auxiliary data<br />
area is left unchanged if bit 16 is not set. If bit 16 is set, the contents of<br />
the auxiliary data area is completely replaced.<br />
P$RTN<br />
The return point. If this field is zero, control is returned to the calling program<br />
following the LBJ that entered the MCB. If the field is nonzero, control is returned to<br />
the specified address in the bank from which the MCB was called, and P$RTN is set<br />
to the address following the LBJ that entered the MCB.<br />
P$STEP1/P$STEP2<br />
The unique identifier of this program step. The field is filled in by the MCB from<br />
information returned by an ER TIP$ID. This is done only on the first store pass-off<br />
function for a given message.<br />
5–24 7833 1568–004
P$TC1/P$TC2<br />
Application Program Interface<br />
The transaction code. This is a one- to six- ASCII character (quarter word) field,<br />
left-justified, and space-filled. Only alphanumeric characters can be used. The<br />
recipient of a pass-off message is identified by this code. The transaction code is<br />
assumed to be in the VINDEX of the MCB. The target of a pass-off can be either a<br />
transaction program or a node of the input queue from which messages are<br />
dequeued by batch or demand programs. The application program doing the pass-off<br />
need not be cognizant of the difference. A transaction code must always be supplied,<br />
except as noted for P$PROG. This field is supplied by the calling program.<br />
P$PROG<br />
The program number of the target program. This applies only if the transaction code<br />
(P$TC1/P$TC2) is presented as zero. The transaction code and P$PROG must not<br />
both be zero. This field is supplied by the calling program.<br />
P$RECOPT<br />
The message recovery options. These bits determine how the message is handled.<br />
The field is optional. The bits for this function are<br />
P$MODE<br />
P$PID<br />
Bit 6 The message is deferred.<br />
Bit 7 The message is recoverable.<br />
Bit 8 The message text is audited.<br />
Bit 9 The message is numbered (see P$MN below).<br />
Bit 10 The message is recallable (see P$MN below).<br />
Bit 11 The message has low main storage priority.<br />
The selected execution mode of the target program. This field is optional. See 5.5.1<br />
for the definition of P$MODE values.<br />
The value supplied in this field is returned to the program receiving the pass-off<br />
message. If no PID is supplied, the input PID is returned to the receiving program. If<br />
the pass-off message is recoverable, the PID from the last input message read<br />
determines which message retention file is used. If no input message is read, the<br />
first recoverable message retention file is used.<br />
7833 1568–004 5–25
Application Program Interface<br />
P$MN<br />
P$ML<br />
The message number. This field is filled in by MCB. If the current input message is<br />
recoverable, numbering of the pass-off message is not performed and 0 is returned<br />
in P$MN.<br />
If the current input message is nonrecoverable, a recoverable pass-off message can<br />
be numbered if specified by recovery options bit 9. In that case, message recall<br />
(recovery options bit 10) can also be set. The message number is assigned from the<br />
input message numbering sequence for the input PID. The input PID must have been<br />
configured with the unintelligent message numbering option. If the input PID is<br />
configured with the intelligent message numbering option, the message is not<br />
numbered and no error status is returned.<br />
Note: Only one pass-off or checkpoint message in a step can be numbered. If an<br />
attempt is made to store a second such message, error 0131 is returned (see<br />
Appendix B).<br />
Total message length in quarter words. This field is returned by the MCB when<br />
P$FLAGS bit 0 is set.<br />
5.5.10. Store Checkpoint<br />
The Store Checkpoint function creates a checkpoint message for a program. The packet<br />
fields for this function are<br />
P$FUNC<br />
The function code CHKPT$$. This field is supplied by the calling program.<br />
P$FAC<br />
The facilities status (see 5.5.1). This field is filled in by the MCB.<br />
P$ID<br />
The message-id. This field is zero when a new message begins. The value returned<br />
in the field is used to identify the message on future store functions if more than one<br />
message is undergoing construction simultaneously. As long as a program has only<br />
one message under construction, the field can be zero on all store functions. Bit 7 of<br />
P$FLAGS determines whether or not a new message is begun.<br />
P$LENGTH<br />
The number of quarter words of text presented with this call. The field is supplied by<br />
the calling program.<br />
P$BUFF<br />
The data buffer address. This data area is assumed to be in the main D-bank window<br />
(BDR2). The field is supplied by the calling program.<br />
5–26 7833 1568–004
P$START<br />
P$OFF<br />
P$AUX<br />
Application Program Interface<br />
The start character pointer. This value is the message-relative character at which to<br />
begin storing, where the first character is denoted by P$START = 1. The value is<br />
presented by the calling program. On return, it is set by the MCB to point to the<br />
character following the last character stored on the call. If it is nonzero, this field can<br />
overlay previously staged text or append text to any existing text. If the field is zero,<br />
the new text is appended to any existing text.<br />
The partial word in which the text begins in the application program’s data buffer.<br />
The value 0 implies the first quarter of the word given in P$BUFF, and the value 4<br />
implies the first quarter of the following word. This field is supplied by the calling<br />
program.<br />
The size in words of auxiliary data in the request packet. The maximum size allowed<br />
for this data is 63 words. The field is supplied by the calling program.<br />
P$FLAGS<br />
Bits to indicate what the MCB should do. The field is supplied by the calling program.<br />
The following bits have meaning for this function:<br />
Bit 0 Last block indicator (LBI). If set, the message is to be queued to step<br />
control when the data transfer is complete.<br />
Bit 5 Use the options in P$RECOPT for this message. If the bit is not set, the<br />
input message recovery options for the program step are used by<br />
default.<br />
Bit 7 If set, this function applies to a partially staged checkpoint message. If<br />
not set, it starts a new message. If the bit is not set, P$ID must be zero.<br />
Bit 16 If set, the auxiliary data area previously stored with the message is<br />
replaced with the auxiliary data area presented with this call. When a<br />
new message is started (P$ID = 0 and P$FLAGS bit 7 also = 0), the size<br />
of the auxiliary data area for the message is determined by the value in<br />
P$AUX. The size is unalterable after that. On subsequent calls, the<br />
auxiliary data area is left unchanged if bit 16 is not set. If bit 16 is set, the<br />
contents of the auxiliary data area are completely replaced.<br />
P$RTN<br />
The return point. If this field is zero, control is returned to the calling program<br />
following the LBJ that entered the MCB. If this field is nonzero, control is returned to<br />
the specified address in the bank from which the MCB was called, and P$RTN is set<br />
to the address following the LBJ that entered the MCB.<br />
P$STEP1/P$STEP2<br />
The unique identifier of this program step. The field is filled in by the MCB from<br />
information returned by an ER TIP$ID. This is done only on the first store function for<br />
a given message.<br />
7833 1568–004 5–27
Application Program Interface<br />
P$RECOPT<br />
The recovery options for the message (see P$FLAGS, bit 5). These bits determine<br />
how the message is handled. Note that a checkpoint message is presumed to be<br />
recoverable and deferred. The bits for this function are<br />
Bit 6 The message is deferred (always assumed to be set).<br />
Bit 7 The message is recoverable (always assumed to be set).<br />
Bit 8 The message text is audited.<br />
Bit 9 The message is numbered (see P$MN).<br />
Bit 10 The message is recallable (see P$MN).<br />
Bit 11 The message has low main storage priority.<br />
P$MN<br />
The message number. This field is filled in by MCB. If the current input message is<br />
recoverable, the checkpoint message is not numbered and 0 is returned in P$MN.<br />
If the current input message is nonrecoverable, a recoverable checkpoint message<br />
can be numbered if specified by recovery options bit 9. In that case, message recall<br />
(recovery options bit 10) can also be set. The message number is assigned from the<br />
input message numbering sequence for the input PID. The input PID must have been<br />
configured with the unintelligent message numbering option. If the input PID is<br />
configured with the intelligent message numbering option, the message is not<br />
numbered and no error status is returned.<br />
Note: Only one pass-off or checkpoint message in a step can be numbered. If an<br />
attempt is made to store a second such message, error 0131 is returned (see<br />
Appendix B).<br />
P$ML<br />
Total message length in quarter words. This field is returned by the MCB when<br />
P$FLAGS bit 0 is set.<br />
P$TC1/P$TC2<br />
The transaction code. This field should contain the transaction code of the calling<br />
program; otherwise, no transaction code is associated with the checkpoint message.<br />
Typically, the application can save P$TC1/P$TC2 after initialization with the MCB (by<br />
reading a network input or pass-off message), after which it restores this field in the<br />
interface packet when it performs a store checkpoint. The MCB does not check on<br />
this field.<br />
5–28 7833 1568–004
5.5.11. Enqueue <strong>Message</strong><br />
Application Program Interface<br />
The Enqueue <strong>Message</strong> function allows a program to queue a message to step control<br />
without storing additional text. Some text must be stored prior to the use of the function.<br />
A store function can also be used to enqueue the message.<br />
The packet fields for this function are<br />
P$FUNC<br />
The function code ENQUE$$.<br />
P$ID<br />
The message-id. If P$ID = 0, at least one partially staged output, pass-off, or<br />
checkpoint message must exist. The oldest message, that is the message that was<br />
stored first, is enqueued. Any other partially staged messages are ignored. If no<br />
message exists, an error status is returned.<br />
P$RTN<br />
P$FAC<br />
P$ML<br />
5.5.12. Audit<br />
The return point. If this field is zero, control is returned to the calling program<br />
following the LBJ that entered the MCB. If the field is nonzero, control is returned to<br />
the specified address in the bank from which the MCB was called, and P$RTN is set<br />
to the address following the LBJ that entered the MCB.<br />
The facilities status (see 5.5.1). This field is filled in by the MCB.<br />
Total message length in quarter words. This field is returned by the MCB.<br />
The Audit function puts a user data record on the audit trail. A single block of data can be<br />
written; no scatter-gather operation is provided. The MCB appends a record header to<br />
the data to denote it as site-supplied audit record and to identify the calling program step.<br />
The packet fields for this function are<br />
P$FUNC<br />
The function code AUDIT$$.<br />
P$FAC<br />
The facilities status (see 5.5.1). This field is filled in by the MCB.<br />
P$LENGTH<br />
The length in words of the data to be audited. This value must be greater than seven<br />
and less than the maximum allowed by audit control.<br />
7833 1568–004 5–29
Application Program Interface<br />
P$BUFF<br />
P$RTN<br />
P$ID<br />
The data buffer address.<br />
The return point. If this field is zero, control is returned to the calling program<br />
following the LBJ that entered the MCB. If the field is nonzero, control is returned to<br />
the specified address in the bank from which the MCB was called, and P$RTN is set<br />
to the address following the LBJ that entered the MCB.<br />
The message-id. This field must be zero.<br />
5.5.13. Discrete Receive<br />
The Discrete Receive function allows a program to recall an input or output message,<br />
given a PID and a message number. Not all messages are recallable. To be recalled, a<br />
message must be marked as recoverable, numbered, and recallable at the time of<br />
creation; for output messages, transmission must have begun. Pass-off and checkpoint<br />
messages can also be numbered and recallable under certain conditions. See 5.5.9 and<br />
5.5.10.<br />
This function can be used while a normal input is associated with a program. Only one<br />
message at a time, however, can be read using the function. This function is used for the<br />
initial access to the message. The normal read input function is used to read more text or<br />
to reread text. The release input function can be used to release the message.<br />
The packet fields for this function are<br />
P$FUNC<br />
The function code DISREC$$. This field is supplied by the calling program.<br />
P$FAC<br />
The facilities status (see 5.5.1). This field is filled in by the MCB.<br />
P$ID<br />
The message-id. This field must be zero, and no discrete receive message can be<br />
associated with the program. On return, the field contains a value that must be used<br />
on subsequent read input or release input functions for the message.<br />
P$LENGTH<br />
The number of quarter words of text to be read. This field is supplied by the calling<br />
program and can be zero.<br />
P$BUFF<br />
The data buffer address. This field is supplied by the calling program. The address is<br />
assumed to be in the main D-bank (BDR2) window.<br />
5–30 7833 1568–004
P$START<br />
P$PID<br />
P$OFF<br />
P$AUX<br />
Application Program Interface<br />
The start character pointer. This value is the message-relative character at which to<br />
begin reading where, the first character is denoted by P$START = 1. If the field is<br />
zero, the read begins with the first text character. If nonzero, the value must be less<br />
than or equal to the number of characters in the text. On return, the field is set to<br />
point at the character following the last one read.<br />
The PID. This field is filled in by the calling program and is used with the message<br />
number to locate the message. For checkpoint and pass-off messages, the field<br />
refers to the PID of the originator of the message.<br />
The data offset. This field is supplied by the calling program. It specifies the partial<br />
word in which the text should start in the user data buffer (P$BUFF). Zero implies the<br />
first quarter of the word given in P$BUFF, and four implies the first quarter of the<br />
following word.<br />
The size in words of auxiliary information in the request packet. This field is supplied<br />
by the calling program, and can be 63 words at most. If the value in the field is not at<br />
least as large as the data that exists, an error status is returned. Upon return, this<br />
field is set by the MCB to the number of words of auxiliary data actually present in<br />
the message.<br />
P$FLAGS<br />
The following bits are defined for this function:<br />
Bit 0 Last block indicator (LBI). If set, the last character of the message was<br />
read. In this case, P$LENGTH is set to the number of characters actually<br />
transferred.<br />
Bit 2 Release the message if the last character is read on this request. The bit<br />
is set by the calling program.<br />
P$STEP1/P$STEP2<br />
P$MN<br />
P$RTN<br />
The unique identifier of the program step. This field is filled in by the MCB using<br />
information from the message control area (MCA).<br />
The message number. This field is supplied by the calling program, and used along<br />
with the PID to locate the message.<br />
The return point. If this field is zero, control is returned to the calling program<br />
following the LBJ that entered the MCB. If the field is nonzero, control is returned to<br />
the specified address in the bank from which the MCB was called, and P$RTN is set<br />
to the address following the LBJ that entered the MCB.<br />
7833 1568–004 5–31
Application Program Interface<br />
P$TYPE<br />
P$ML<br />
The message type. This field identifies whether the specified message number<br />
applies to the input message numbering sequence or the output message<br />
numbering sequence for the specified PID. The value for input messages is one, the<br />
value for checkpoint messages is two, the value for pass-off messages is three, and<br />
the value for output messages is four.<br />
The message length. This field contains the number of quarter words of text in the<br />
message. The field is filled in by the MCB.<br />
P$PROG<br />
The transaction program number of the program that received the message (if the<br />
message is an input message). For an output message, the field is zero. This field is<br />
filled in by the MCB.<br />
P$NODE<br />
The terminating node on the input queue to which the message was queued (if the<br />
message is an input message). For an output message, the field is zero. This field is<br />
filled in by the MCB.<br />
P$RECOPT<br />
The recovery options that applied to the message. This field is filled in by the MCB.<br />
P$TC1/P$TC2<br />
If an input message, this field contains the transaction code that was presented with<br />
the message by CMS. For an output message, the field is zero. This field is filled in<br />
by the MCB.<br />
5.5.14. Open a Session<br />
This function allows an application program to request that CMS open a session between<br />
CMS and a specified PID. The result of the attempt is reported to the calling program. If<br />
error status 0112 is returned, the P$SESSION field of the auxiliary area contains a<br />
detailed error status with the reason for failure to open a session. If the request is<br />
successful, later changes in the state of the session are reported to an application<br />
program specified in the request packet (see 5.5.11).<br />
In a failure, if the MCB configuration has the RESILIENT SGS set to YES, the PID table in<br />
the MRF control file (on mass storage) is updated, allowing open session information. If<br />
the CMS configuration has the RESILIENT parameter set on the APPLICATION NDS, and<br />
a CMS failure occurs, the PID is reopened by CMS. If an MCB failure occurs with this<br />
configuration, CMS keeps the session open over the failure.<br />
If a session is aborted, MCB notifies the transaction specified (in P$TC1/P$TC2) when<br />
the session was opened by generating a pass-off message that contains the PID and an<br />
error code. The pass-off message sent to the transaction contains 20 characters of text<br />
and an auxiliary data area of four words (see 5.11). The PID number is in P$PID and the<br />
5–32 7833 1568–004
Application Program Interface<br />
error code is in P$SESSION. The error codes returned in P$SESSION are the same as<br />
those defined for the P$QID field on the CMS session status notification function (see<br />
4.5.12).<br />
The packet fields for this function are<br />
P$FUNC<br />
The function code OPNSSN$$. This field is supplied by the calling program.<br />
P$PID<br />
The PID to which a session should be opened. Group PIDs are not allowed. See the<br />
CMS REMOTE-EU network definition statement in the CMS 1100 Installation and<br />
Configuration Guide.<br />
P$FAC<br />
P$RTN<br />
The facilities status (see 5.5.1). This field is filled in by the MCB.<br />
The return point. If this field is zero, control is returned to the calling program<br />
following the LBJ that entered the MCB. If the field is nonzero, control is returned to<br />
the specified address in the bank from which the MCB was called, and P$RTN is set<br />
to the address following the LBJ that entered the MCB.<br />
P$TC1/P$TC2<br />
P$AUX<br />
The transaction code to which future session state changes should be reported. If<br />
this field is blank or zero, no program will be notified of any session state changes.<br />
This field also identifies the program allowed to close this session. If this field is zero<br />
or blank, no program is allowed to close this session. See also 3.3.5.<br />
The size of the auxiliary information in the request packet. The field is supplied by the<br />
calling program and must have a value greater than or equal to 4.<br />
Notes:<br />
• Any program doing a session open must have the V option set (either with the<br />
VALTAB field, OPT,V, or the XQT option, @XQT,V). This is required for the ER<br />
RT$OUT, which is done internally.<br />
• To satisfy an outbound session open request, MCB communicates with all initialized<br />
CMS programs that claim to support outbound open. MCB queues the open request<br />
to each initialized CMS program one at a time in ascending CMS number order, until<br />
all have been tried or until one of the CMS programs reports the session is<br />
successfully opened.<br />
If all initialized CMS programs reject the request, the error code from the last tried<br />
CMS is returned to the caller in P$SESSION. The exception to this rule is that if the<br />
last tried CMS returned the “PID not configured” error code of 01 (see 4.5.12), the<br />
calling program receives the error code from the last tried CMS that returned an error<br />
other than 01. If all CMSs returned the 01 error code, the calling program receives<br />
the 01 error code in P$SESSION.<br />
7833 1568–004 5–33
Application Program Interface<br />
5.5.15. Close a Session<br />
This function allows an application program to direct CMS to close any session that can<br />
exist with a PID. The only application program allowed to close the outbound open<br />
session is a program running with the transaction code of the session state change<br />
notification program (see 5.5.14 and 5.5.17). The result of the attempt is reported back to<br />
the calling program (see 5.11). If error status 0112 is returned, the P$SESSION field of<br />
the AUX area contains a more detailed error status. P$SESSION values are those listed<br />
under P$QID in 4.5.12.<br />
The MCB packet fields for this function are<br />
P$FUNC<br />
The function code CLSSN$$. This field is supplied by the calling program.<br />
P$PID<br />
The PID for which the action is requested.<br />
P$FAC<br />
The facilities status (see 5.5.1). This field is filled in by the MCB.<br />
P$RTN<br />
The return point. If this field is zero, control is returned to the calling program<br />
following the LBJ that entered the MCB. If the field is nonzero, control is returned to<br />
the specified address in the bank from which the MCB was called, and P$RTN is set<br />
to the address following the LBJ that entered the MCB.<br />
P$AUX<br />
The size of the auxiliary information in the request packet. The field is supplied by the<br />
calling program and must have a value greater than or equal to 4.<br />
Note: Any program doing a session close must have the V option set (either with the<br />
VALTAB field, OPT,V, or the XQT option, @XQT,V). This is required for the ER RT$OUT,<br />
which is done internally.<br />
5.5.16. Request PID Status<br />
This function allows an application program to retrieve the state of a PID from the MCB<br />
PID table. It retrieves only a single PID entry from the table and returns it in words<br />
07-015 of the calling program’s packet. This function allows an application program to<br />
know everything about a PID that is known to the MCB. The format of the information<br />
returned in words 07-015 is defined in F.7.1.<br />
The packet fields for this function are<br />
P$FUNC<br />
The function code PIDSTAT$$. This field is supplied by the calling program.<br />
5–34 7833 1568–004
P$PID<br />
P$RTN<br />
P$FAC<br />
The PID for which the status is requested.<br />
Application Program Interface<br />
The return point. If this field is zero, control is returned to the calling program<br />
following the LBJ that entered the MCB. If the field is nonzero, control is returned to<br />
the specified address in the bank from which the MCB was called, and P$RTN is set<br />
to the address following the LBJ that entered the MCB.<br />
The facilities status (see 5.5.1). This field is filled in by the MCB.<br />
5.5.17. Obtain Exclusive Use of a PID<br />
This function allows an application program to gain exclusive use of a PID. It is used by<br />
an application program to obtain future input from a specific PID, and to exclude<br />
intervention by other programs. Exclusive use can be established only by a program that<br />
is processing a message. The program must have an MRF identifier in its queue item.<br />
Once exclusive use is established, it remains in effect until the owner program ends it<br />
with the release exclusive use function (see 5.5.18). The $BREAK II keyin can also be<br />
used by an operator to arbitrarily release exclusive use of a PID (see the MCB Operations<br />
Reference Manual). When a PID is assigned for exclusive use, MCB rejects output to the<br />
PID from programs other than the owner program. This exclusive use link can exist in<br />
addition to other sessions opened by the program.<br />
When it requests exclusive use, the owner program supplies a transaction code (in the<br />
P$TC1/P$TC2 packet fields) identifying the program to which all future input is directed<br />
(this can be different from the owner’s transaction code). If the owner is not the program<br />
identified by P$TC1/P$TC2, the transaction program specified in P$TC1/P$TC2 cannot<br />
send output to the PID or release exclusive use of that PID. This means that if the owner<br />
directs input to another transaction, the owner still retains exclusive use of the PID.<br />
If the MCB configuration has the RESILIENT SGS set to YES, the PID table in the MRF<br />
control file (on mass storage) is updated. If an MCB or CMS failure occurs, the MCB<br />
keeps exclusive use and exclusive use close notification in effect for the PID over the<br />
failure. If the same program requests exclusive use, the request does not generate an<br />
error. If the exclusive use session cannot be reestablished after a failure, the requesting<br />
transaction is notified that the session is closed.<br />
The packet fields for this function are<br />
P$FUNC<br />
The function code SETXUSE$$. This field is supplied by the calling program.<br />
P$PID<br />
The PID over which exclusive control is needed.<br />
7833 1568–004 5–35
Application Program Interface<br />
P$FAC<br />
The facilities status (see 5.5.1). This field is filled in by the MCB.<br />
P$FLAGS<br />
P$RTN<br />
Bits to indicate what the MCB should do. The field is supplied by the calling program.<br />
The bit for this function is<br />
Bit 8 If set, notify the program pointed to by the transaction code in<br />
P$TC1 /P$TC2 whenever any session with the terminal from<br />
P$PID closes or aborts. See 5.11 for a description of the format<br />
of the notification message.<br />
Note: If P$FLAGS bit 8 is used to indicate session close or abort notification, it<br />
overrides any previous notification that can have been set by an outbound open.<br />
The return point. If this field is zero, control is returned to the calling program<br />
following the LBJ that entered the MCB. If the field is nonzero, control is returned to<br />
the specified address in the bank from which the MCB was called, and P$RTN is set<br />
to the address following the LBJ that entered the MCB.<br />
P$TC1/P$TC2<br />
The transaction code to which all further input is directed. A valid transaction code<br />
must be provided. If not, the request is rejected. See also 3.3.5.<br />
5.5.18. Release Exclusive Use of a PID<br />
This function is used by an application program to release a PID from exclusive use. The<br />
packet fields for this function are<br />
P$FUNC<br />
The function code CLRXUSE$$. This field is supplied by the calling program.<br />
P$PID<br />
The PID being released from exclusive use.<br />
P$FAC<br />
The facilities status (see 5.5.1). This field is filled in by the MCB.<br />
P$RTN<br />
The return point. If this field is zero, control is returned to the calling program<br />
following the LBJ that entered the MCB. If the field is nonzero, control is returned to<br />
the specified address in the bank from which the MCB was called, and P$RTN is set<br />
to the address following the LBJ that entered the MCB.<br />
If session close or abort notification was included when exclusive use was set,<br />
releasing exclusive use also clears that notification.<br />
5–36 7833 1568–004
5.5.19. Obtain Input-Only Exclusive Use of a PID<br />
Application Program Interface<br />
This function allows an application program to gain only the input side of exclusive use of<br />
a PID. All future input from the PID is directed to the application program named in<br />
P$TC1 and P$TC2. There are no restrictions or controls on outputs to the PID. Any<br />
program can send output to the PID having input-only exclusive use set, and any program<br />
can release the input-only exclusive use from the PID with the release exclusive use<br />
function (see 5.5.18). The $BREAK II keyin can also be used by an operator to arbitrarily<br />
release exclusive use of a PID (see the MCB Operations Reference Manual).<br />
Exclusive use and input-only exclusive use cannot be in effect simultaneously. Only one<br />
exclusive use can be set on a PID at any time. This function can be used repeatedly to<br />
change the transaction code to which input is directed without clearing the current<br />
exclusive use.<br />
If the MCB configuration has the RESILIENT SGS set to YES, MCB retains exclusive use<br />
and close notification information for the PID over a failure of the MCB or CMS (see<br />
5.5.17).<br />
The packet fields for this function are<br />
P$FUNC<br />
The function code SETIXUSE$$. This field is supplied to the calling program.<br />
P$PID<br />
The PID over which input-only exclusive control is desired. This field is supplied by<br />
the calling program.<br />
P$FAC<br />
The facilities status (see 5.5.1). This field is filled in by the MCB.<br />
P$FLAGS<br />
P$RTN<br />
Bits to indicate what the MCB should do. The field is supplied by the calling program.<br />
The following bit has meaning for this function:<br />
Bit 8 If set, notify the program pointed to by the transaction code in<br />
P$TC1/P$TC2 whenever any session with the terminal from P$PID<br />
closes or aborts (see 5.11).<br />
The return point. If this field is zero, control is returned to the calling program<br />
following the LBJ that entered the MCB. If the field is nonzero, control is returned to<br />
the specified address in the bank from which the MCB was called, and P$RTN is set<br />
to the address following the LBJ that entered the MCB.<br />
If session close or abort notification was included when exclusive use was set,<br />
releasing exclusive use also clears that notification.<br />
7833 1568–004 5–37
Application Program Interface<br />
P$TC1/P$TC2<br />
The transaction code to which all further input is directed. A valid transaction code<br />
must be provided. If not, the request is rejected. See also 3.3.5.<br />
5.5.20. Obtain MCB Statistics<br />
The Statistics function allows an application program to retrieve MCB statistics for buffer<br />
control, file control, and statistics table information. The information is returned in a<br />
variable format based on the number of core banks configured in the MCB.<br />
The packet fields are<br />
P$FUNC<br />
The function code STAT$$. This function is supplied by the calling program.<br />
P$LENGTH<br />
The number of words of text returned to the calling program. If this value is smaller<br />
than the statistics area, only the first P$LENGTH words are returned. This field is<br />
supplied by the calling program.<br />
P$BUFF<br />
The data buffer address. This data area is assumed to be in the main D-bank window<br />
(BDR2) and is supplied by the calling program.<br />
total number of slots lowest number of slots available<br />
test and set cell<br />
unused number slots available<br />
The remainder of the P$BUFF area, for an MCB with two core banks and two<br />
message retention files, follows. Different MCB configurations result in a different<br />
number of replicated 6-word and 7-word controls.<br />
03 number of core banks<br />
04 core bank 0 MAD controls (6 words)<br />
012 core bank 1 MAD controls (6 words)<br />
020 core bank 0 free MRL controls (6 words)<br />
026 core bank 1 free MRL controls (6 words)<br />
034 core bank 0 active MRL controls (6 words)<br />
042 core bank 1 active MRL controls (6 words)<br />
050 core bank 0 free core buffer controls (6 words)<br />
056 core bank 1 free core buffer controls (6 words)<br />
064 core bank 0 active core buffer controls (6 words)<br />
5–38 7833 1568–004
070 core bank 1 active core buffer controls (6 words)<br />
076 core bank 0 PRP controls (6 words)<br />
0104 core bank 1 PRP controls (6 words<br />
Application Program Interface<br />
0112 number of PIX files number of MRF files<br />
0113 MRF 1 information (7 words)<br />
0122 MRF 0 information (7 words)<br />
0131 statistics information<br />
See Appendix F for the format of MAD, MRL, core buffer, and PRP controls. The<br />
format of the MRF controls for recoverable messages is<br />
Word 0,,W Relative MRF number for this entry.<br />
Word 1,,H1 Segment currently allocated for input (SC$AI).<br />
Word 1,,H2 Segment currently allocated for output (SC$AO).<br />
Word 2,,H1 Sector address of the MRF in MRF$CNTRL (SC$SEC).<br />
Word 2,,H2 Number of segments in this MRF.<br />
Word 3,,H1 TIP/ Network Database Server file number assigned to this MRF.<br />
Word 3,,H2 TIP/ Network Database Server file number of associated PIX file.<br />
Word 4,,W Number of free segments.<br />
Word 5,,T1 Number of blocks in the active input segment that have been<br />
freed.<br />
Word 5,,S3 Segment cycle number for the active input segment.<br />
Word 5,,H2 Segment number, block number of the most recently assigned<br />
block in the active input segment.<br />
Word 6,,T1 Number of blocks in the active output segment that have been<br />
freed.<br />
Word 6,,S3 Segment cycle number for the active output segment.<br />
Word 6,,H2 Segment number, block number of the most recently assigned<br />
block in the active output segment.<br />
The format of the MRF controls for MRF-0 differs from the format for all other MRFs. For<br />
MRF-0 the format is<br />
Word 0,,W Relative MRF file number for this entry (zero).<br />
Word 1,,H1 Latest MRF identifier (MID) allocated (SC$LMID).<br />
Word 1,,H2 Number of active blocks of MIDs (SC$NABLK).<br />
Word2,,H1 Reserved (SC$SEC).<br />
Word2,,H2 Number of segments configured for this MRF (SC$NSG).<br />
7833 1568–004 5–39
Application Program Interface<br />
P$ML<br />
Word 3,,H1 TIP/ Network Database Server file number assigned to this MRF file<br />
(SC$MFN).<br />
Word 3,,H2 Number of MID bit map words in the MF$CTL (SC$BMW).<br />
Word 4 Total number of blocks configured for this MRF, calculated from<br />
SC$NSG and NB$MRFBK.<br />
Words 5 and 6 Reserved<br />
The number of words transferred to P$BUFF. This field is returned by MCB. The user<br />
of this function is responsible for dealing with internal changes to the MCB when<br />
those changes can change data, or change the format in which the data is returned<br />
by this function.<br />
Set P$OFF and P$START to binary zero. These fields are not used by the statistics<br />
function. See the value of the label STATS$$LEN in the element MC$TABLE (from<br />
the MCB build) for the actual statistics area length for your MCB.<br />
5.6. Auxiliary Information Area<br />
The auxiliary information area for input and output messages begins at word 16 (020) of<br />
the interface packet unless the packet version, P$VER, is 3. Then it begins at word 18<br />
(022). The format is defined in 4.6.<br />
The auxiliary information area for pass-off and checkpoint messages is transparent to the<br />
MCB.<br />
5.7. Unique Identifier<br />
Every message (except a ROPL message) has a unique, two-word internal identifier. This<br />
is true of both recoverable and nonrecoverable messages, and of externally and internally<br />
numbered messages in the communications network.<br />
Every program step also has a unique, two-word internal identifier. This is true whether<br />
or not a program step has been initialized to process a message. If a program step has<br />
been initialized to process a message, the program step identifier is the message<br />
identifier of the processed message.<br />
The MCB, Universal Database <strong>Control</strong>, Exec, and IRU use the unique identifier internally<br />
to identify, control, and record interrelated processing activity. For example, the unique<br />
identifier of a program step is used on the audit trail as the originator of an Network<br />
Database Server database after-look record.<br />
5–40 7833 1568–004
Application Program Interface<br />
The unique identifier is available on certain MCB functions as packet fields<br />
P$STEP1/P$STEP2 and P$0S1/P$0S2. Figure 5–4 shows the format.<br />
data and time<br />
sequence number step number<br />
The packet fields are defined as follows:<br />
date and time<br />
Figure 5–4. Unique Identifier<br />
Bits 35-30 Year, relative to 1964. For example, 24 is 1988.<br />
29-24 Month, 1 to 12.<br />
23-18 Day, 1 to 31<br />
17-0 Time in seconds since midnight.<br />
sequence number<br />
Bits 35-12 A sequence number increased by one each time a new unique identifier<br />
is formed. This number gives uniqueness to two or more unique<br />
identifiers created within the same second. The number is also used to<br />
formulate a generated run-id for the transaction program that processes<br />
the transaction message identified by this unique identifier.<br />
step number<br />
Bits 11-0 Step advance number. This begins at zero and is increased by one each<br />
time the program step performs a step advance.<br />
5.8. Recovery Options Summary<br />
The 18-bit recovery options for a message are derived from three information sources:<br />
• P$RECOPT in the packet of the calling program<br />
• Target VINDEX entry<br />
• Default options in effect for the calling program step as recorded by the MCB in its<br />
table of information (SLOT) for the initialized program activity<br />
P$RECOPT is available as an override to automatic determination from the other two<br />
sources when the calling program specifies P$FLAGS bit 5 on an output, pass-off, or<br />
checkpoint function.<br />
The target VINDEX entry is applicable to input and pass-off messages.<br />
The default options in effect for an active program step are derived from:<br />
• The recovery options field of the input, pass-off or checkpoint message retrieved by<br />
the program activity on its initialize function.<br />
• The P$RECOPT field in the Initialize function as supplied by the program when a<br />
program step is created without retrieving a message<br />
7833 1568–004 5–41
Application Program Interface<br />
Figure 5–5 through Figure 5–8 summarize derivation of the recovery options for each of<br />
the four message types: input, output, pass-off, and checkpoint. Note that the resulting<br />
18-bit recovery options field has three 6-bit subfields for output, input, and program<br />
options, respectively (see 3.3.3).<br />
Target VINDEX<br />
Out In Prog<br />
Out In Prog<br />
Figure 5–5. Input Recovery Options<br />
Caller's SLOT<br />
Out In Prog<br />
Caller's Packet<br />
Out In Prog<br />
Out 0 0<br />
Figure 5–6. Output Recovery Options<br />
5–42 7833 1568–004
Caller's SLOT<br />
Out In Prog<br />
Caller's Packet<br />
Out In Prog<br />
Out In Prog<br />
Figure 5–7. Pass-Off Recovery Options<br />
Caller's SLOT<br />
Out In Prog<br />
Application Program Interface<br />
Caller's Packet<br />
Target VINDEX<br />
Out In Prog<br />
Out In Prog<br />
Figure 5–8. Checkpoint Recovery Options<br />
Out In Prog<br />
7833 1568–004 5–43
Application Program Interface<br />
5.9. Unintelligent <strong>Message</strong> Numbering Format<br />
The numbering format for input acknowledge messages and output message headers<br />
used with unintelligent PIDs is described next.<br />
5.9.1. Input Acknowledge <strong>Message</strong><br />
An input acknowledge message is created by the MCB and returned to a terminal after<br />
staging a numbered, recoverable input message received from an unintelligent PID (see<br />
3.2.3.3). Example 5–1 shows the format of this message.<br />
������������� ��� �������� �������� ������� ������ ���<br />
��� ������� ���� ���� �������� ��� ��<br />
����� ������ ������<br />
��������<br />
����<br />
������������� � � ����������<br />
Example 5–1. Input Acknowledge <strong>Message</strong><br />
The fields in this message are defined as follows:<br />
PID<br />
Numeric PID of the originating terminal.<br />
<strong>Message</strong> number<br />
Input message number.<br />
R<br />
If present, indicates that this message is recallable.<br />
Date<br />
Unique identifier of the input message (see 5.7).<br />
Time<br />
Unique identifier of the input message (see 5.7).<br />
Sequence number<br />
Unique identifier of the input message (see 5.7).<br />
Run ID<br />
Generated run-id of the transaction program that processes the message. This field<br />
is not applicable if the transaction message is processed by a batch or demand<br />
program.<br />
5–44 7833 1568–004
Mode<br />
Execution mode of this transaction:<br />
Blank = Normal<br />
TR = Training<br />
TS = Test<br />
TT = Test/Training<br />
5.9.2. Output <strong>Message</strong> Header<br />
Application Program Interface<br />
An output message header is appended by the MCB to a numbered, recoverable output<br />
message directed to an unintelligent PID (see 3.2.3.3). Example 5–2 shows the header<br />
format.<br />
���������������������� ��� � �������� �������� ������� ������ ���<br />
�<br />
�������� ��� ������� ���� ���� �������� ��� �� �� ���� ��<br />
��� ������ ������ ����������<br />
�����������<br />
� � ��������� ��������� �����������<br />
� � ���������� �������<br />
� � ����������������� ����������������<br />
Example 5–2. Output <strong>Message</strong> Header<br />
These header fields are defined as follows.<br />
Original PID<br />
If present, the message was originally destined for the terminal identified by this<br />
numeric PID, but the message is now being alternately routed.<br />
PID<br />
Numeric PID of the receiving terminal.<br />
<strong>Message</strong> number<br />
*<br />
R<br />
M<br />
Output message number.<br />
If present, indicates that the message can be a duplicate.<br />
If present, indicates that this message is recallable.<br />
If present, indicates that this message was sent to multiple destinations.<br />
7833 1568–004 5–45
Application Program Interface<br />
Date, Time, Sequence number<br />
Unique identifier of the output message (see 5.7). Date and time values will be zero<br />
for multiple destination list and group PID messages.<br />
Run-id of originator<br />
Generated run-id of the program that created this message.<br />
Mode of originator<br />
Execution mode of the program that created this message:<br />
Blank = Normal<br />
TR = Training<br />
TS = Test<br />
TT = Test/Training<br />
The application program is responsible for leaving space within the text of the output<br />
message for the header (if a header is desired). Refer to 4.6 for a discussion of P$HDR,<br />
P$HDRSIZE, and P$END.<br />
5.10. Delivery Notification Format<br />
You can request delivery notification on an output request by setting P$FLAGS option<br />
bit 4 (see 3.5.5 and 5.5.8).<br />
The delivery notification message is a nonrecoverable pass-off message with no auxiliary<br />
information area. The text of the delivery notification message is identical in format to<br />
that for the error notification program described in 8.3. The error type and error code<br />
information in word 0 of the text is zero if the message is successfully delivered. If the<br />
message is not delivered, the error notification program is scheduled instead of the<br />
delivery notification program.<br />
If the MCB is running within an application group configured to use TIP message<br />
security, input to the delivery notification program is created at the system-high level.<br />
See the Exec Installation and Configuration Guide for information about configuration<br />
parameters that control TIP message security. See the Security Administration for<br />
ClearPath OS 2200 Help for a description of system-high attributes. Delivery notification<br />
input is created at system-high because user text is included in the message.<br />
The application program, and the TIP or demand session under which it runs, must be<br />
able to accept messages at the system-high level. A batch-connect type of program is<br />
recommended for reading delivery notification inputs. The session used by the program<br />
can be given the proper security privileges through the user-id. If the delivery notification<br />
program is not privileged to read a message at system-high, access is denied and the<br />
input message is discarded.<br />
5–46 7833 1568–004
5.11. Session State Changes<br />
Application Program Interface<br />
Session state changes for sessions opened with the OPNSSN$$ function create a<br />
pass-off message to the program specified when the session was opened. Notification<br />
of session close or session abort is also provided for PIDs in exclusive use if specified<br />
when exclusive use is established. (See 5.5.14 and 5.5.17 for more information). These<br />
messages use P$PID to identify the session. The P$FNC field in the auxiliary data area<br />
has a value equal to the CMS value in P$FUNC. The auxiliary data area field called<br />
P$SESSION contains the value passed by CMS in P$QID.<br />
Twenty characters of text represent the first five words of the MCB packet used that<br />
creates the notification message.<br />
If the MCB is running within an application group configured to use TIP message<br />
security, input to the session notification program is created at the system-low level. See<br />
the Exec Installation and Configuration Guide for information about configuration<br />
parameters that control TIP message security. See the Security Administration for<br />
ClearPath OS 2200 Help for a description of system low attributes. Session state change<br />
input is created at system low because no user text is included in the message.<br />
System-low inputs can be read by any program, regardless of session attributes.<br />
5.12. Host-to-Host MCB Transactions<br />
The host-to-host feature sends an output from an MCB transaction program on one<br />
OS 2200 system (host 1) and schedules it as a transaction input on another OS 2200<br />
system (host 2). Communication is handled between two copies of CMS, one on each<br />
host. Each CMS must have at least one PID configured as a host-to-host PID. See the<br />
CMS 1100 Installation and Configuration Guide for information on the PID network<br />
definition statement (NDS) used in host-to-host feature configuration.<br />
The host-to-host feature also returns negative acknowledgment (NAK) reason codes from<br />
either host to the system error program (SEP) or the error notification program (ENP).<br />
5.12.1. Host-to-Host Restrictions<br />
The following restrictions apply to the host-to-host feature:<br />
• MCB action command output cannot be sent to a host-to-host PID.<br />
• For output messages, the auxiliary area of the MCB application interface packet is<br />
used only to return NAK reason codes.<br />
• For input messages, the auxiliary area of the MCB application interface packet is<br />
used only to specify the host-to-host type with the type fields P$TTYP and P$RTYP.<br />
The type fields identify the message source as a PID on another host.<br />
• The host-to-host feature supports only the MCB packet interface.<br />
• A session cannot be opened to or from a CMS application configured with the<br />
RESILIENT parameter on the APPLICATION NDS, or through a CMS application that<br />
is using the TIP session control feature.<br />
• Conversational link is not supported on host-to-host PIDs.<br />
7833 1568–004 5–47
Application Program Interface<br />
5.12.2. End-to-End <strong>Message</strong> Acknowledgment<br />
The host-to-host feature supports two variations of end-to-end message<br />
acknowledgment between hosts:<br />
• If an output message is sent to a PID that is not configured for intelligent message<br />
numbering, MCB receives message acknowledgment from CMS when the output is<br />
transmitted to the communications peer. An application program can receive this<br />
message acknowledgment if the program specifies delivery notification when it<br />
issues the store output (SEND$$) function call to MCB.<br />
• If the receiving PID is configured for intelligent message numbering, or if the<br />
AU-LABEL parameter is specified in the CMS configuration for that PID, MCB<br />
receives message acknowledgment (CMSACK$$) from CMS after CMS receives an<br />
AU-CONFIRM from the communications peer. MCB receives negative<br />
acknowledgment (CMSNAK$$) if CMS receives an AU-FAIL from the<br />
communications peer. An application program can receive this message<br />
acknowledgment if the program specifies delivery notification when it issues the<br />
store output (SEND$$) function call to MCB.<br />
5.12.3. Opening a Host-to-Host PID Session<br />
An application program opens a session between itself and a host-to-host PID through<br />
the MCB outbound open procedure. The outbound open to a host-to-host PID is identical<br />
to an outbound open to any other PID.<br />
When an outbound open to an host-to-host PID is performed, an MCB inbound open is<br />
performed on the receiving host to establish a session between the host-to-host PID and<br />
CMS. The host-to-host PID is identified to the receiving host in its CMS configuration (by<br />
the FROM-USER parameter of the REMOTE-EU NDS). See the CMS 1100 Installation<br />
and Configuration Guide for information on the REMOTE-EU and PID NDSs.<br />
For example, in a host-to-host session between a sending transaction on host 1 and a<br />
receiving transaction on host 2:<br />
• The host-to-host PID used for the session is logically treated by CMS on each host as<br />
a PID configured as a REMOTE-EU. Each CMS establishes a host-to-host session<br />
only through the host-to-host PIDs defined in its own configuration.<br />
• A Session Open function initiated by the transaction program on host 1 to host 2 is<br />
treated by the host 1 CMS application as an MCB outbound open to the host-to-host<br />
PID.<br />
• This communication is treated by the host 2 CMS application as an MCB inbound<br />
open from the PID.<br />
• Two-way communication can be established through a single host-to-host PID<br />
configured in CMS on both hosts. Alternatively, a different host-to-host PID can be<br />
configured on each host to handle one-way communication only.<br />
5–48 7833 1568–004
5.12.4. Store Output (SEND$$) Considerations<br />
Application Program Interface<br />
When the application program issues a store output (SEND$$) to send output to a<br />
transaction on another host, the following requirements must be met:<br />
• The value of the P$PID field must be a host-to-host PID defined in the CMS<br />
configuration of the sending host.<br />
• The first six characters of output message text must be a valid transaction code<br />
configured in the VALTABs of the receiving host. An invalid transaction code causes<br />
a TIP scheduling error on the receiving host and the error notification program is<br />
scheduled on the receiving host.<br />
• The fields P$TC1 and P$TC2 are used only if delivery notification is specified (bit 4 is<br />
set in the P$FLAGS field). MCB ignores the P$TC1 and P$TC2 fields for any other<br />
condition. The conversational link feature cannot be used with the host-to-host<br />
feature.<br />
• The application program must specify at least four words of auxiliary area when it<br />
issues a SEND$$ function for a recoverable message. If this condition is not met, the<br />
auxiliary area will not be large enough to pass NAK reason codes to the system error<br />
program.<br />
5.12.5. SEP and ENP Considerations<br />
The following modifications should be made to the SEP and ENP programs to support<br />
the return of NAK reason codes in host-to-host transactions:<br />
• When the SEP or ENP is initialized, a value of at least four must be placed in the<br />
P$AUX and P$END fields of the application interface packet. This defines an auxiliary<br />
area large enough to pass the NAK reason codes.<br />
• The SEP or ENP should be modified to include the NAK reason code (located in the<br />
P$SESSION field) in error information that is printed or displayed.<br />
• The SEP or ENP should be modified so that error messages destined for PIDs (not<br />
print devices) cannot be sent to host-to-host PIDs. If this modification is not<br />
performed, extra and unwanted traffic occurs between host systems.<br />
5.13. HVSTAT Considerations<br />
The OS 2200 TIP system contains a transaction performance monitoring capability called<br />
HVSTAT. (See the Transaction Processing Administration and Operations Reference<br />
Manual for more information.) HVSTAT provides the capability for a user transaction to<br />
log 4 words of transaction-unique information in the standard HVSTAT record. The<br />
transaction passes this data to the operating system by setting specific registers before<br />
doing an ER EXIT$ at the end of a transaction. (See the Transaction Processing<br />
Administration and Operations Reference Manual for more information.)<br />
Transactions that perform multiple TRINIT$$ functions to process multiple messages do<br />
not execute an ER EXIT$ after each message. As a result, this information cannot be<br />
logged by that method.<br />
7833 1568–004 5–49
Application Program Interface<br />
Transactions that perform multiple TRINIT$$ functions can log HVSTAT user buffers.<br />
These transactions must pass the 4-word buffer to the MCB when performing a<br />
subsequent TRINIT$$ call to retrieve another message. During the TRINIT$$ call, the<br />
MCB establishes the appropriate registers for the operating system to log the HVSTAT<br />
user data. To use this facility, you must add the following information on the TRINIT$$<br />
call:<br />
• Set bit 3 of P$FLAGS.<br />
• Set P$AUX greater than or equal to 5.<br />
• Put the ASCII character string HVST in word 0 of the auxiliary area.<br />
• Put the 4 words to pass to HVSTAT in words 1 through 4 of the auxiliary area.<br />
MCB supports HVSTAT user data only through the packet interface. MCB does not<br />
support the use of HVSTAT user data when you are using the COMPOOL-compatible<br />
primitive interface.<br />
5–50 7833 1568–004
Section 6<br />
TIP Primitive Interface<br />
This section describes the <strong>Message</strong> <strong>Control</strong> <strong>Bank</strong> Transaction Processing (MCB TIP)<br />
primitive interface, which is a migration aid to convert TIP primitives from<br />
communications message-buffer pool (COMPOOL) to MCB use. You can migrate<br />
without modifying your application programs by remapping with the alternate set of MCB<br />
primitives presented here. The MCB primitives invoke and express a functional subset of<br />
the application interface defined in Section 5. The primitives offer a compatible<br />
replacement for the functions available under COMPOOL. The TIP primitive interface is<br />
not supported for extended mode application programs.<br />
An application program must be executing in quarter-word mode (D17 set) when it calls<br />
MCB, or the MCB returns an error. Programs using the TIP primitive interface require the<br />
same addressing environment used with the applications program (packet) interface (see<br />
5.2).<br />
The MCB primitives are available in the TIP library files. See the Transaction Processing<br />
Administration and Operations Reference Manual for more information.<br />
6.1. MCB Primitives<br />
The primitives from the set of TIP ASCII primitives described in 6.1.1 through 6.1.14 are<br />
modified to use the MCB. Not all primitives perform message handling, but all primitives<br />
call the MCB. The interface to each of the primitives is described in the Transaction<br />
Processing Programming Reference Manual. These interfaces remain unchanged. Your<br />
existing application programs run correctly without changes except for conditions<br />
described in 6.4. The MCB and primitives assume the volatile register set (X11, A0 to A5,<br />
R1 to R3) is available for use and need not be saved or restored.<br />
In cases where an error return to the primitive occurs or when the transaction must be<br />
given a contingency, the primitive receives a code, a type, and a contingency from the<br />
MCB. The primitive then issues an ER CQUE$ to pass the contingency to the application<br />
program.<br />
7833 1568–004 6–1
TIP Primitive Interface<br />
6.1.1. INITAL—Transaction Program Initialization<br />
This primitive enters the MCB for MCB activity initialization to do an ER QI$NIT and to<br />
transfer part of the message to an application program data area. Activity initialization<br />
includes an ER TRMRG$ to register activity termination processing for the MCB. If<br />
INITAL or CONECT has not been used first, use of any of the other primitives listed here<br />
results in an error. INITAL can be called more than once to allow processing of more than<br />
one input message by a single transaction program. INITAL can also be used to receive<br />
TIMER inputs.<br />
To call this primitive more than once, you must use the COMMIT primitive or the FREE,<br />
DEPART, or DEPART WITH ROLLBACK DML command between each pair of successive<br />
uses of INITAL. Further, the recovery options in the VALTAB entry must specify step<br />
termination as the default for COMMIT (the Y option must be set). If on a multiple-INITAL<br />
call, a COMMIT was not first issued, the MCB issues a COMMIT with step terminate<br />
before trying to obtain the next input.<br />
6.1.2. TERMN8—Transaction Program Termination<br />
This primitive enters the MCB to deregister the activity from the MCB. The primitive then<br />
does an ER EXIT$. The MCB processing includes ER TRMRG$ to deregister termination<br />
processing, release all partially staged messages, and release main storage resources for<br />
any remaining input messages.<br />
6.1.3. CONECT—Batch/Demand Program Initialization<br />
This primitive enters the MCB to do MCB initialization and to do an ER QI$CON. As with<br />
INITAL, ER TRMRG$ registers activity termination processing. An online batch program<br />
can read some or all of its input messages. An attempt by an offline batch program to<br />
read an input message results in a contingency for the program. One of the parameters<br />
passed to the CONECT primitive is the set of recovery options for the program. This field<br />
includes the options that determine the actions to be taken with the use of COMMIT or<br />
ROLBAK primitives.<br />
6.1.4. DISCON—Batch/Demand Program Termination<br />
This primitive enters the MCB to deregister the activity from the MCB and to do an ER<br />
QI$DIS. An ER TRMRG$ is also done to deregister termination processing. The input<br />
message and partially staged output, pass-off, and checkpoint messages are released.<br />
6–2 7833 1568–004
6.1.5. CSTLOG—Store a <strong>Message</strong><br />
TIP Primitive Interface<br />
This primitive enters the MCB to create a new message. As with COMPOOL, an existing<br />
incomplete output or pass-off message is released. The specified data is stored as a new<br />
message. Certain message parameters that affect future processing for the message<br />
must be specified in the message parameter area (MPA)” (see 6.2 on this request).<br />
These parameters are the indicator character, the PID, and the transaction code. As with<br />
COMPOOL, if the message is a pass-off with indicator character 3, and if the Exec<br />
parameter TPSNUM is nonzero, the caller can supply a program number instead of a<br />
transaction code.<br />
6.1.6. CSTOVR—Overlay or Extend a <strong>Message</strong><br />
This primitive enters the MCB to replace part of a message or to add to a message. It<br />
does not change an input message into an output or pass-off message. CSTOVR can<br />
change only message text, not the MPA or user parameter area (UPA). Do not use the<br />
characters 003 in the last word of the overlaying segment. These characters are read as<br />
an end-of-text (ETX) character and are stripped off.<br />
6.1.7. CDATAC—Read a <strong>Message</strong><br />
This primitive enters the MCB to read part or all of a message. <strong>Message</strong> release is not<br />
done under any circumstances; further access is prohibited. Part or all of a message can<br />
be read as many times as necessary.<br />
6.1.8. CDATCR—Read and Release a <strong>Message</strong><br />
This primitive enters the MCB to read part or all of a message as for CDATAC. If the last<br />
word of the message is read and the message is not recoverable the message is<br />
released and is no longer accessible by the program. If the message is recoverable, it is<br />
not released until the end of the step.<br />
6.1.9. CRELOG—Release All <strong>Message</strong>s<br />
This primitive enters the MCB to release a partially staged output or pass-off message.<br />
This primitive releases the input message if the message is not recoverable. If the input<br />
message is recoverable, it is not released until the end of the step.<br />
6.1.10. RTRANO/RTRANU—Store and Queue a <strong>Message</strong><br />
This primitive enters the MCB to store a message, as does the CSTLOG primitive. In<br />
addition, the MCB queues the message for output or pass-off, according to the indicator<br />
character. As with the COMPOOL version of RTRANO/RTRANU, if the word count is<br />
zero, the primitive assumes a message already exists and does the queuing operation<br />
only. Once a message has been queued, the program is denied further access to it. As<br />
with COMPOOL, if the message is a pass-off with indicator character 3, and if the Exec<br />
parameter TPSNUM is nonzero, the caller can supply a program number instead of a<br />
transaction code.<br />
7833 1568–004 6–3
TIP Primitive Interface<br />
6.1.11. RTOUTP/RTSCHD—Queue an Output or Pass-off<br />
<strong>Message</strong><br />
This primitive enters the MCB to queue a message. The message must have been<br />
stored with the CSTLOG primitive. Parameters passed on the RTOUTP or RTSCHD call<br />
are ignored; parameters previously passed in the MPA are used instead.<br />
6.1.12. ERTERM—Program Error Termination<br />
This primitive enters the MCB to do an ER TRMRG$ and to remove the switch list (SWL)<br />
address from the activity. The primitive then does an ER ERR$. The MCB processing is<br />
identical to the process invoked by TERMN8 or DISCON.<br />
6.1.13. ROLBAK—Program Step Rollback<br />
This primitive enters the MCB to do message cleanup and perform an ER RL$BAK. The<br />
caller has the option to retain the step’s input message, or to release and requeue the<br />
input message. Any partially staged messages are released. The choice of action is<br />
determined by the recovery options specified in the program’s VINDEX or the options<br />
passed to the CONECT primitive.<br />
6.1.14. COMMIT—Program End of Step<br />
This primitive enters the MCB to release any partially staged messages and to do ER<br />
CO$MIT. Following the ER, the MCB either clears the step-id (if the step terminated) or<br />
updates the activities step-id (if the step advanced). The choice of action is determined<br />
by the recovery options specified in the program’s VINDEX or passed to the CONECT<br />
primitive.<br />
6.2. <strong>Message</strong> Parameter Area<br />
The message parameter area (MPA) is described in detail in the Transaction Processing<br />
Programming Reference Manual. For MCB, the following changes to that format are<br />
necessary:<br />
• Any fields marked zero, not used, or reserved system usage are disregarded. These<br />
fields are neither used by the MCB nor carried along with the message.<br />
• Word 4,T1; word 4,T2; and word 9,H1 are disregarded.<br />
• For output messages, the input PID (word 2,H1) is disregarded.<br />
Although the MPA is the vehicle for passing parameters between transaction programs<br />
and the MCB, the CMS interface does not use the MPA. The relevant fields are<br />
contained in the CMS MCB packet instead.<br />
6–4 7833 1568–004
6.3. User Parameter Area<br />
TIP Primitive Interface<br />
In the primitive interface, a user parameter area (UPA) can be appended to the MPA<br />
immediately preceding the message text. Within the MCB, the UPA is passed as part of<br />
the auxiliary information area. A program using the MCB primitive interface has the same<br />
access to the UPA as it does when using COMPOOL. The CSTOVR primitive is an<br />
exception; it cannot be used to rewrite the UPA. The UPA can not exceed 59 words.<br />
6.4. Application Program Impacts and<br />
Incompatibilities<br />
The following subsections explain application program impacts and incompatibilities.<br />
6.4.1. Relative Addressing<br />
The data passed to or from the MCB in a primitive request must reside in the main<br />
D-bank window. Furthermore, the relative addressing range of the main D-bank must not<br />
overlap the MCB main I-bank and utility D-banks. See 5.2 for a more complete<br />
description of the required addressing conventions.<br />
6.4.2. Overlay<br />
CSTOVR cannot be used to alter MPA or UPA data after the original CSTLOG primitive<br />
request. CSTOVR cannot transform an input message into an output or pass-off<br />
message. Do not use the characters 003 in the last word of the overlaying segment.<br />
These characters are read as an end-of-text (ETX) character and are stripped off.<br />
6.4.3. Physical COMPOOL<br />
The physical COMPOOL primitives, CASGBL, CSTPHS, CRDPHS, and CRELBL are not<br />
supported by the MCB. You cannot use these primitives.<br />
6.4.4. Program Options<br />
The R and V execution options are disregarded by the MCB.<br />
6.4.5. Initialization<br />
For the primitive interface, the INITAL or CONECT primitive must be the first primitive<br />
used by an application program. In current systems, COMPOOL primitives can be used<br />
without using INITAL or CONECT first. The MCB introduces the requirement to initialize<br />
(impart) with the MCB before other functions can be used.<br />
7833 1568–004 6–5
TIP Primitive Interface<br />
6.4.6. Termination Differences between COMPOOL and MCB<br />
A transaction program must use the TERMN8 primitive to terminate normally. This is not<br />
a requirement under COMPOOL.<br />
A batch/demand or online batch program must use the DISCON primitive to terminate its<br />
connection with the MCB prior to normal program termination. This is not a requirement<br />
under COMPOOL.<br />
An online batch program releases its input message upon execution of DISCON. This<br />
does not occur under COMPOOL.<br />
6.4.7. Running COMPOOL and MCB Programs Concurrently<br />
<strong>Message</strong>s stored with the MCB cannot be read or accessed by programs that use<br />
COMPOOL primitives. The converse is also true. For example, a program using the MCB<br />
primitives cannot use an RTRANO/RTRANU to perform a pass-off to a program that uses<br />
COMPOOL primitives. The converse is also true.<br />
Therefore, when migrating to MCB, or when COMPOOL and MCB programs are running<br />
in the same environment, keep the programs separate.<br />
6–6 7833 1568–004
Section 7<br />
Universal Database <strong>Control</strong><br />
Considerations<br />
7.1. Universal Database <strong>Control</strong> Interface<br />
Note: If auditing is not turned on in the Exec, there is no interface between Universal<br />
Database <strong>Control</strong> and MCB. Hence, this section only applies if auditing is on.<br />
Universal Database <strong>Control</strong> (formerly UDS ) notifies the <strong>Message</strong> <strong>Control</strong> <strong>Bank</strong> (MCB)<br />
whenever an end-of-step is reached. This informs the MCB of the correct step-id for<br />
each initialized program to release messages at the proper time.<br />
Universal Database <strong>Control</strong> enters the MCB by<br />
����� ������� ���<br />
��� ������� ����� �����<br />
where:<br />
A0 = Function code<br />
R1 = Application group name<br />
R3 = BDI and entry point for return to Universal Database <strong>Control</strong><br />
A4,A5 = Step-id returned by an ER DMES$ or ER DMRB$<br />
The MCB returns to the specified bank and entry point with<br />
A1 = 6<br />
X1 - X10 preserved<br />
X11, A0, A2 through A5 and R1 through R3 destroyed<br />
All other registers unchanged<br />
7.2. Universal Database <strong>Control</strong> Run-Unit<br />
Conventions<br />
A program that interfaces with the MCB for message processing and concurrently<br />
interfaces to Universal Database <strong>Control</strong> as a run-unit for database processing must<br />
observe the rules and conventions described in 7.2.1 through 7.2.7.<br />
7833 1568–004 7–1
Universal Database <strong>Control</strong> Considerations<br />
7.2.1. MCB Initialize<br />
The MCB Initialize function (or INITAL primitive) may precede the IMPART command.<br />
The MCB Initialize function (or INITAL primitive) can be executed after the IMPART<br />
command only if it is issued before the first data manipulation language (DML) command<br />
after the IMPART or FREE commands, except for the OPEN command. Any such DML<br />
command identifies the start of a program step to Universal Database <strong>Control</strong>. For a<br />
discussion of multiple INITAL commands within an IMPART/DEPART sequence, see the<br />
Integrated Recovery Conceptual Overview.<br />
7.2.2. MCB Terminate<br />
You cannot use the MCB Terminate function (or TERMN8 primitive) before the DEPART<br />
or DEPART WITH ROLLBACK commands.<br />
7.2.3. MCB Commit<br />
You cannot use the MCB Commit function (or COMMIT primitive). A FREE or DEPART<br />
command signifies an end-of-step.<br />
7.2.4. MCB Rollback<br />
You cannot use the MCB Rollback function (or ROLBAK primitive). A DEPART WITH<br />
ROLLBACK command signifies rollback.<br />
7.2.5. <strong>Message</strong> Release<br />
You can use optional DML syntax on the FREE, DEPART, and DEPART WITH ROLLBACK<br />
commands to specify disposition of the input message retrieved on the MCB initialize<br />
request (or INITAL primitive).<br />
On the FREE and DEPART commands, the options are<br />
• Retain the message (step advance).<br />
• Release the message (step terminate).<br />
On the DEPART WITH ROLLBACK command, the options are<br />
• Retain the message and resume the program step.<br />
• Requeue the message, if recoverable, or release the message, if nonrecoverable.<br />
• Queue the message to the system error program, if recoverable, or release the<br />
message, if nonrecoverable.<br />
The latter two options imply that the program step terminates.<br />
If you do not use the optional DML syntax, input message processing defaults to that<br />
specified in the program recovery options for the calling program step.<br />
7–2 7833 1568–004
Universal Database <strong>Control</strong> Considerations<br />
Fully staged and deferred output, pass-off, or checkpoint messages are handled in one of<br />
these ways:<br />
• Delivered as part of FREE or DEPART processing.<br />
• Discarded as part of DEPART with ROLLBACK processing.<br />
• Discarded, if partially staged, as part of a FREE or DEPART command.<br />
7.2.6. Retrieval Run-Units<br />
If a run-unit opens a recoverable database area for an update, the program must have<br />
specified the recoverable step option (see 3.3.3). If a run-unit wishes to open database<br />
areas for retrieval only, the program may or may not have specified the recoverable step<br />
option depending on its MCB and message processing related attributes. Even for a<br />
retrieval only run-unit, the FREE, DEPART, and DEPART WITH ROLLBACK commands<br />
denote end-of-step or rollback.<br />
7.2.7. LOG Command<br />
You can use the DML LOG command to write records from your application program to<br />
the audit trail. As an alternative, you can also use the MCB Audit function. If you use the<br />
DML LOG command, the audit record is tagged with the unique identifier of the program<br />
step only if the MCB Initialize function (or INITAL primitive) has already occurred.<br />
Note: Not all database products use the DML syntax, IMPART, DEPART, and FREE, for<br />
a step creation and step termination.<br />
7833 1568–004 7–3
Universal Database <strong>Control</strong> Considerations<br />
7–4 7833 1568–004
Section 8<br />
Error Processing Programs<br />
8.1. Overview<br />
Any installation that uses the MCB must supply these two error processing programs:<br />
• System error program (SEP)<br />
• Error notification program (ENP)<br />
The two programs would normally be transaction programs. As an alternative, the<br />
messages directed to these two processing points could be dequeued and processed by<br />
a batch or demand program. In either case, the corresponding VINDEX entries must be<br />
configured with the VTBUTL utility (see 3.3).<br />
The purpose of the two programs is to allow application-dependent error processing to<br />
be solicited in certain conditions in which it is not desirable for automatic, standard<br />
system action to occur. These programs represent an extension to such concepts as a<br />
contingency routine or ROLBAK paragraph.<br />
If the MCB is running in an application that has TIP message security configured, inputs<br />
to the ENP and the system error program SEP are created at many different security<br />
levels, ranging from system low to system high. See the Exec Installation and<br />
Configuration Guide for information about configuration parameters that control TIP<br />
message security. Refer to the Security Administration for ClearPath OS 2200 Help for<br />
information about the attributes of system-low and system-high security.<br />
The ENP and the SEP must be able to read input messages at system high. Use a<br />
batch-connect type of program to read these inputs. The sessions used by the ENP and<br />
SEP can then be given the proper security privileges through the user-id. If the ENP or<br />
SEP programs do not have the privilege to read a message at system high, access is<br />
denied and the input message is discarded.<br />
Examples of the ENP and SEP programs are in the GN file. The file names are<br />
�������������� and ��������������. The packet definitions are in file ��������������.<br />
8.2. System Error Program (SEP)<br />
The SEP is intended to be the repository of any recoverable input, pass-off, or checkpoint<br />
message that cannot be processed and any recoverable output message that cannot be<br />
delivered.<br />
7833 1568–004 8–1
Error Processing Programs<br />
8.2.1. Purpose<br />
A recoverable input, pass-off, or checkpoint message is queued to the system error<br />
program in the following situations:<br />
• TIP scheduling error.<br />
• Rollback and requeuing has occurred the maximum number of times allowed by the<br />
Exec.<br />
• Rollback occurred due to program contingency errors, and recovery option W is set.<br />
• System configured requeuing will not occur. The system error program is scheduled<br />
with all information necessary to optionally schedule the program that erred.<br />
• Queuing to the system error program has been explicitly requested with an MCB<br />
rollback function or Network Database Server DEPART WITH ROLLBACK command.<br />
A recoverable output message is queued to the system error program in the following<br />
situation:<br />
• CMS output message negative acknowledge function has been issued because the<br />
output message cannot be delivered.<br />
8.2.2. System Generation Considerations<br />
The following stream generation statement (SGS) statement must be included in the<br />
system generation of the Exec:<br />
����������� � ����� ������� �� � �������� �� �<br />
where:<br />
n<br />
x<br />
p<br />
Application group number.<br />
Transaction program VALTAB number of the system error program.<br />
Queue priority in the input queue tree structure for enqueuing messages to the<br />
system error program.<br />
See the Exec Installation and Configuration Guide. Reserve the specified queue priority<br />
exclusively for messages queued to the system error program. If error conditions arise<br />
regarding the scheduling or execution of the system error program itself, the Exec<br />
discontinues scheduling of the system error program by setting the maximum<br />
concurrency to zero on the associated queue priority.<br />
8–2 7833 1568–004
8.2.3. VINDEX Considerations<br />
Error Processing Programs<br />
Table 8–1 lists the parameters for the associated VINDEX entry for the system error<br />
program that must be included with the VTBUTL utility program.<br />
Table 8–1. VINDEX Parameters for System Error Program<br />
VINDEX Parameter Specification<br />
Applications group number Same as n in 8.2.2. Must match the APNUMBER n parameter in<br />
the MCB configuration.<br />
Transaction program number Same as x in 8.2.2.<br />
Input queue priority Same as p in 8.2.2.<br />
Access mask Zero. Irrelevant.<br />
Recovery options Zero. Any message that is redirected to the system error<br />
program already has its recovery options established.<br />
Transaction code Any desired transaction code can be used. If the terminal user<br />
explicitly enters this transaction code or if an application program<br />
issues a pass-off to this transaction code, then meaningful values<br />
should be supplied for the access mask and recovery options.<br />
8.2.4. MCB Interface<br />
The system error program should use the application program interface described in<br />
Section 5. On the MCB initialize function, give special attention to these message<br />
parameters:<br />
P$ERR<br />
This field identifies the reason for directing the message to the system error<br />
program. The value 070 indicates that a program with the W recovery option erred.<br />
(See P$OUTQ.) The value 073 indicates CMS negatively acknowledged an output<br />
message. (See P$SESSION.) Other values are possible. See the list of type 035<br />
errors in the Transaction Processing Programming Reference Manual.<br />
Note: P$ERR has a value of 070 only when a program contingency occurs that<br />
causes scheduling of the system error program, and recovery option W is set.<br />
P$TYPE<br />
This field identifies the message type. The system error program represents the only<br />
instance in which an output message can be retrieved by an application program on<br />
the initialize function.<br />
P$SESSION<br />
This field identifies the NAK reason code (see 4.5.8). At least four words of auxiliary<br />
area must have been specified with the output message to receive the NAK reason<br />
code (see 4.6). When MCB is operated with CMS level 5R1 or higher, CMS returns<br />
NAK reason codes to the MCB when output messages are negatively acknowledged.<br />
7833 1568–004 8–3
Error Processing Programs<br />
P$TC1/P$TC2<br />
P$MN<br />
This field contains the transaction code of the erring program, if it starts a step by<br />
reading an input, pass-off, or checkpoint message. If the erring program starts a step<br />
without reading a message, P$TC1/P$TC2 will contain ASCII space (040) characters.<br />
This field contains the message number associated with the input, pass-off, or<br />
checkpoint message retrieved by the erring program.<br />
P$RECOPT<br />
This field contains the recovery options of the erring program.<br />
P$MODE<br />
P$PID<br />
This field contains the execution mode of the erring program.<br />
This field contains the originating terminal-id, if the erring program is scheduled by a<br />
network input.<br />
P$OUTQ<br />
If P$ERR has a value of 070, this field contains the contingency information for the<br />
erring program: error type, error code, and contingency type. See the ER<br />
Programming Reference Manual.<br />
The system error program can interrogate the message parameters, read the message<br />
text, and take the appropriate action in the context of the user application. All MCB<br />
interface functions are available to the system error program. If the input, pass-off, or<br />
checkpoint message is queued to the SEP due to a contingency error, and the W option<br />
is set, the SEP can reschedule the erring program using all of the message parameters<br />
just listed.<br />
8.3. Error Notification Program (ENP)<br />
The ENP allows the MCB to notify the application system of these situations:<br />
• A nonrecoverable input or pass-off message has been discarded because of a TIP<br />
scheduling error or because the target transaction program terminated without<br />
retrieving the message with an MCB Initialize (or INITAL) request.<br />
• A nonrecoverable output message was discarded because it was undeliverable by<br />
CMS.<br />
• An input message was ejected and discarded by the MCB during the CMS input<br />
message staging for reasons such as an invalid transaction code.<br />
• A transaction program has terminated in error.<br />
• An attempt to queue a recoverable or nonrecoverable input message was rejected by<br />
step control. The program terminated without detaching from MCB with the TERM$$<br />
call or the TERMN8 primitive.<br />
8–4 7833 1568–004
Error Processing Programs<br />
• The ENP can close any session, using the CLSSN$$ function, that was opened with<br />
MCB. In addition, the ENP can send output messages to the PIDs in exclusive use,<br />
as well as override exclusive use.<br />
• The VALTAB for the ENP is required for Automatic Recovery of Components (ARC)<br />
to function for MCB. The specific product that heartbeats with MCB is APPREC, and<br />
APPREC requires the ENP transaction code to be registered.<br />
8.3.1. VINDEX Considerations<br />
You must include the parameters listed in Table 8–2 for the associated VINDEX entry for<br />
the error notification program with the VTBUTL utility program.<br />
Table 8–2. VINDEX Parameters for Error Notification Program<br />
VINDEX Parameter Specification<br />
Applications group number Must match the APNUMBER n in the system<br />
Transaction program number As needed.<br />
Input queue priority As needed.<br />
Access mask Zero, irrelevant. As needed.<br />
Program recovery options As needed.<br />
Output recovery options As needed.<br />
generation of the MCB.<br />
Input recovery options Zero. The message that is passed to the error<br />
notification program is a nonrecoverable pass-off,<br />
internally generated within the MCB.<br />
Transaction code Must match the ENP$TXN name in the system<br />
configuration of the MCB.<br />
8.3.2. <strong>Message</strong> Format<br />
The error notification program is scheduled for execution with a pass-off message<br />
generated within the MCB. The text of this message contains these categories of<br />
information:<br />
• Identification of the error condition<br />
• Parameters relevant to the discarded message<br />
• Auxiliary information area of the discarded message<br />
• The first n characters of text of the discarded message<br />
The message is a nonrecoverable pass-off with a total length P$ML that is no greater<br />
than 448 quarter words. The message has no auxiliary information area; P$AUX = 0.<br />
Figure 8–1 shows the format.<br />
7833 1568–004 8–5
Error Processing Programs<br />
In the case of error type 4, this message provides information about the program that<br />
terminated, rather than information about the input message held by the terminated<br />
program. The program may have been holding a recoverable or nonrecoverable input<br />
message (or none at all) at the time of error termination.<br />
0 error status information<br />
1-16<br />
message parameters<br />
17 auxiliary information<br />
17+i<br />
Word 0<br />
8–6 7833 1568–004<br />
text<br />
Figure 8–1. Error Notification <strong>Message</strong><br />
One word of error status information in the following format (the error type and code<br />
are defined in Table 8–3):<br />
0<br />
Error<br />
Types<br />
Error<br />
Code<br />
reserved error type error code<br />
Table 8–3. Error Notification Codes<br />
Explanation<br />
0 X Nonrecoverable input or pass-off discarded by TIP. The error code X<br />
identifies the reason and is defined in the Transaction Processing<br />
Programming Reference Manual as the error code applicable to type<br />
035 TIP errors.<br />
1 X Nonrecoverable output message discarded by CMS. The NAK<br />
reason code is returned in the error code field. See 4.5.8 for<br />
possible reasons for the NAK.<br />
2 X An input message has been rejected for a reason such as invalid<br />
transaction code. The error code X identifies the reason and is<br />
defined in Appendix B.<br />
3 X An input message has been rejected for a reason defined by tailored<br />
message analysis (TMA). The error code x is defined by the user.
Error<br />
Types<br />
Error<br />
Code<br />
Table 8–3. Error Notification Codes<br />
Error Processing Programs<br />
Explanation<br />
4 X A transaction program has terminated in error. The contingency<br />
word from TL$END in the SLOP table is passed in the 17th word,<br />
and the program name passed in the 18th and 19th word in the<br />
packet. The abort mask from the PCT (EN field in the PCT) is also<br />
passed in the second half of the 19th word.<br />
When TRMXVT is set greater than 8190, the TIP FLAGBOX<br />
SCHEDULE bit must be ON when the MCB background run is<br />
started. This enables MCB to schedule the ENP for error type 4.<br />
6 X An attempt to schedule a transaction with ER TIP$Q failed and the<br />
resulting error code x was returned. See the Exec Administration<br />
Reference Manual for a description of ER TIP$Q error codes.<br />
Words 1 through 16<br />
These 16 words contain message parameters in the format of the Application<br />
Program Interface packet defined in 5.2 and Figure 5–1. The parameters apply to the<br />
discarded message. For error type 4, these words make up the packet used<br />
internally by MCB to generate the pass-off message to the error notification program<br />
(ENP).<br />
Words 17 through 17 + i - 1<br />
These i words contain the auxiliary information area (if any) that applied to the<br />
discarded message. The value of i is given by the field P$AUX in the parameters<br />
within words 1 to 16.<br />
For error type 4 only, the following words (17, 18, 19) are returned in the auxiliary<br />
information area:<br />
17 + i<br />
For error types other than 4, the text of the discarded message begins at word<br />
17 + i. That text is truncated, if necessary, to allow the error notification message to<br />
reside within one MRF buffer. The length of the discarded message is given by field<br />
P$ML in the parameters within words 1 through 16.<br />
7833 1568–004 8–7
Error Processing Programs<br />
8–8 7833 1568–004
Section 9<br />
<strong>Message</strong> Recovery<br />
The MCB plays an important role in performing both long and short message recovery<br />
with the Integrated Recovery Utility (IRU). MCB common banks MSGBNK and<br />
MSGLNGBNK act as an interface between IRU and MCB. During execution, an IRU<br />
activity executes the MCB portion of message recovery from these two common banks.<br />
9.1. MSGBNK<br />
The IRU can call MSGBNK during short or long message recovery. The main function of<br />
MSGBNK is to ensure that no inconsistencies exist between the Exec and MCB.<br />
MSGBNK reads all queue items from the Exec and checks whether the MRF identifier<br />
(MID) in each queue item exists in an MCB message retention file (MRF).<br />
If a queue item contains a MID that MSGBNK cannot find, a message noting the<br />
inconsistency is displayed on the Exec system console. MSGBNK also creates SNAPs of<br />
the error-related information to send to a breakpoint print file (BPFILE) for later<br />
examination. Upon completion of the comparison process, MSGBNK updates the<br />
MRFCNTRL file to match the MIDs in use.<br />
9.2. MSGBNK Interface to IRU<br />
MSGBNK is called by the IRU activity. Register X11 contains the return address to the<br />
IRU. The IRU activity passes a recovery parameter in register A0 when it enters<br />
MSGBNK, and MSGBNK returns a completion status to the IRU in register A0.<br />
When MSGBNK is entered with register A0, indicating that the application is initialized,<br />
(A0I = 1), MSGBNK updates the MRFCNTRL file copy of the MCB directory with an<br />
initialize status. When MSGBNK is entered with A0, indicating a recovery (A0I = 2),<br />
MSGBNK goes through the recovery process. MSGBNK returns to IRU with A0 set to<br />
indicate either a success (1) or a failure (2).<br />
MSGBNK is installed by COMUS as an alternate file common bank (AFCB). The IRU uses<br />
the file SYS$*MCB as a directory to find the BDI definitions. See the MCB Installation<br />
Guide for more information about MSGBNK installation.<br />
7833 1568–004 9–1
<strong>Message</strong> Recovery<br />
9.3. MSGBNK Error Handling<br />
When MSGBNK detects a problem, a dump and other related information are placed in<br />
the breakpointed print file ����������������, which is generated during a recovery. You<br />
should print the contents of this file and include it with any User Communication Forms<br />
(UCF) you send to the development center.<br />
9.4. MSGBNK Console <strong>Message</strong>s<br />
See the MCB Operations Reference Manual for messages displayed on the system<br />
console during an IRU execution.<br />
9.5. MSGLNGBNK<br />
The IRU calls MSGLNGBNK during a long message recovery to rebuild the message<br />
retention files (MRF) and the MRFCNTRL file after a system failure.<br />
MSGLNGBNK is called by the IRU activity. Register X11 contains the return address to<br />
the IRU. The IRU activity passes a function and an audit record address to MSGLNGBNK<br />
in register A0. If the IRU requests the status function (012), MSGLNGBNK calls MCBBNK<br />
and returns either a down or an up status. If the function is a write request (010),<br />
MSGLNGBNK looks at the audit record to determine what I/O to accomplish. Any other<br />
function is treated as an error. MSGLNGBNK returns a status to IRU in register A1 as<br />
follows:<br />
• Write request<br />
ER DM$IOW status codes returned. See the Transaction Processing Programming<br />
Reference Manual for descriptions of these codes.<br />
• Status request<br />
05 = MCB is up.<br />
06 = MCB is down.<br />
• Other<br />
014 = Either bad function code or bad audit header (word 0).<br />
MSGLNGBNK is installed by COMUS as an AFCB. The IRU uses the file SYS$*MCB as a<br />
directory to find the bank descriptor index (BDI) definitions. If your Exec has the<br />
Multi-Host File Sharing (MHFS) feature installed, the IRU uses the file SYS$h*MCB<br />
instead of SYS$*MCB. h is the host identifier converted to one letter a through z. See<br />
the MCB Installation Guide for more information about MSGBNK installation.<br />
9–2 7833 1568–004
Appendix A<br />
Function Codes<br />
Table A–1 lists the function codes for the CMS and application program packet interfaces<br />
to the MCB.<br />
Table A–1. Function Codes<br />
Mnemonic Code Explanation<br />
TRINIT$$ 02 Initialize<br />
CMINIT$$ 03 CMS Activity Initialization<br />
CMTERM$$ 04 CMS Activity Termination<br />
CMSTOR$$ 05 CMS Store Input <strong>Message</strong><br />
CMCAN$$ 06 CMS Input <strong>Message</strong> Cancel<br />
CMRECV$$ 07 CMS Receive Output <strong>Message</strong><br />
CMSACK$$ 010 CMS Output <strong>Message</strong> Positive Acknowledge<br />
MHOLD$$ 011 CMS Output <strong>Message</strong> Hold<br />
TERM$$ 012 Terminate<br />
COMMIT$$ 013 Commit<br />
ROLBAK$$ 014 Rollback<br />
RECV$$ 015 Read Input<br />
INPREL$$ 016 Release Input<br />
CANCEL$$ 017 Cancel Output<br />
SEND$$ 020 Store Output<br />
PASOFF$$ 021 Store Pass-off<br />
CHKPT$$ 022 Store Checkpoint<br />
ENQUE$$ 023 Enqueue <strong>Message</strong><br />
AUDIT$$ 024 Audit<br />
DISREC$$ 025 Discrete Receive<br />
STAT$$ 030 Statistics Retrieval<br />
CMSPUT$$ 031 CMS Put Text<br />
CMSGET$$ 032 CMS Get Text<br />
7833 1568–004 A–1
Function Codes<br />
Table A–1. Function Codes<br />
Mnemonic Code Explanation<br />
CMSNAK$$ 033 CMS Output <strong>Message</strong> Negative Acknowledge<br />
CMFAC$$ 036 CMS Obtain Resource Status<br />
VNXRD$$ 037 Read VINDEX Entry<br />
SETIXUSE$$ 040 Set Input-Only PID Exclusive Use<br />
SETXUSE$$ 041 Set PID Exclusive Use<br />
CLRXUSE$$ 042 Clear PID Exclusive Use<br />
CLSSN$$ 043 Session Close<br />
CMPIDI$$ 044 CMS PID Configuration<br />
OPNSSN$$ 045 Session Open<br />
PIDSTAT$$ 046 Request PID Status<br />
CMSOPEN$$ 047 CMS Session Open Notify<br />
RESOPEN$$ 050 CMS Resilient Session Open Notify<br />
CMSPIDS$$ 051 CMS PID Information Request<br />
SESSCLR$$ 062 CMS Session Close Reject<br />
SESSOP$$ 063 CMS Open Confirm<br />
SESSRJ$$ 066 CMS Open\ Reject<br />
SESSAB$$ 067 CMS Session Abort<br />
SESSCP$$ 071 CMS Session Close<br />
SESSCL$$ 072 CMS Close Confirm<br />
A–2 7833 1568–004
Appendix B<br />
Error Codes<br />
Table B–1 lists the status codes that are returned by the MCB to the calling activity in<br />
the CMS and application program packet interfaces. MCB returns this information in the<br />
status parameter specified on the MCB call. Bit 35 is set with all error codes, which<br />
makes the status word negative. For basic mode assembler-language programs, this<br />
information is in register A1.<br />
Note: For codes 6, 7, 014, and 0137, Q3 of the status word contains the error code<br />
returned by step control and Q4 contains the error code given in this table. The codes<br />
returned in Q3 are defined in the Exec Administration Reference Manual. For codes 060<br />
to 064, 070 to 074, and 0100 to 0104, Q3 contains the Exec I/O error code (if it exists).<br />
Q4 contains the MCB error code.<br />
Table B–1. Error Codes<br />
Code Meaning<br />
01 MCB is not up.<br />
02 User packet overlaps MCB D-banks.<br />
03 User packet address not in range, or attempt to use primitives with primitives<br />
disabled in the configuration.<br />
04 Calling program is not in quarter-word mode.<br />
05 Invalid queue-item id (P$QID).<br />
06 ER TIP$Q rejected (see note).<br />
07 User audit rejected (see note).<br />
010 Maximum number of CMS programs already initialized with MCB.<br />
011 Maximum number of program activities already initialized with MCB.<br />
012 Calling activity not initialized with MCB.<br />
013 Calling activity already initialized with MCB.<br />
014 ER QI$NIT/QI$CON/QI$DIS/CO$MIT/ROL$BAK rejected (see note).<br />
015 CMS may not terminate with messages active.<br />
016 Attempt to read a partially staged message or write a completely staged<br />
message.<br />
017 ACW length too small.<br />
7833 1568–004 B–1
Error Codes<br />
Table B–1. Error Codes<br />
Code Meaning<br />
020 Privileged function. Normally indicates that an application program is<br />
attempting to use a CMS function.<br />
021 PID selected for use has exclusive use set by another program.<br />
022 No input message is currently assigned to the calling activity but input<br />
message access was attempted.<br />
023 Exclusive use or conversational link is already set for the PID.<br />
024 No partially staged message exists.<br />
025 Attempt to do ROLLBACK, but no step exists.<br />
026 Attempt to store a message larger than the size configured with the<br />
MSGMAXCHARS characters parameter.<br />
027 Output rejected. Session not open to this PID.<br />
030 Invalid function code.<br />
031 Invalid message identifier (P$ID).<br />
032 Invalid queue-item identifier (P$QID).<br />
033 Buffer address out of range.<br />
034 Invalid PID.<br />
035 Invalid transaction code. FLAGBOX SCHEDULE bit may be OFF.<br />
036 Character pointer (P$START) is past the current end of message.<br />
037 Character pointer (P$START) is past end of message.<br />
040 Conversational link not in effect but requested by CMS.<br />
041 Access mask violation. Indicates a transaction code entered from unauthorized<br />
terminal.<br />
042 Invalid mode (P$MODE).<br />
043 Conversational link and delivery notification may not both be specified.<br />
044 No PRP buffer is available.<br />
045-050 Reserved.<br />
051 Invalid PID for conversational link.<br />
052 Transaction is not numbered or recoverable, but an assurance unit was<br />
presented by CMS.<br />
053 MCB detected step-id mismatch during commit or rollback. Probable causes: a<br />
step was previously advanced by a program performing its own ER-CO$MIT,<br />
or a step was previously advanced by Universal Database <strong>Control</strong> and<br />
Universal Database <strong>Control</strong> is not configured with the correct BDI for notifying<br />
MCB of step changes.<br />
054 No more MRF space exists.<br />
B–2 7833 1568–004
Table B–1. Error Codes<br />
Code Meaning<br />
056 No more main storage buffers exist for message staging.<br />
Error Codes<br />
056 No more work buffers (MAD) exist for active message processing or auditing.<br />
057 MCB idle point in progress.<br />
060 MRF I/O error (see note).<br />
061 MRF control file I/O error (see note).<br />
062 <strong>Message</strong> text audit request rejected (see note).<br />
063 Segment controls audit request rejected (see note).<br />
064 PIX file I/O error (see note).<br />
065 Reserved.<br />
066 Reserved.<br />
067 Set up error such as PCT expansion needed but not possible.<br />
070 MRF file not cataloged or assigned to TIP, or attempt to store a recoverable<br />
message with no associated recoverable MRF file configured (see note).<br />
071 MRF control file not configured (see note).<br />
072 Reserved.<br />
073 Reserved.<br />
074 PIX not configured (see note).<br />
075-077 Reserved.<br />
0100 MRF improperly configured (see note).<br />
0101 MRF control file improperly configured (see note).<br />
0104 PIX improperly configured (see note).<br />
0105 Invalid CMS level number.<br />
0106 Invalid CMS number.<br />
0107 Function not allowed with the MCB or CMS level in use.<br />
0110 Invalid subfunction on CMPIDI$$.<br />
0111 V option not set for session open or close.<br />
0112 Session request in error.<br />
0113 Session close attempt by program that did not open the session.<br />
0114 No program queued for session status function.<br />
0115 CMS termination with sessions open.<br />
0116 Close request but no session open.<br />
0117 Attempt to open or close a session for a group PID.<br />
7833 1568–004 B–3
Error Codes<br />
Table B–1. Error Codes<br />
Code Meaning<br />
0120 No CMS registered on outbound open or outbound close.<br />
0121 No auxiliary area for a session request.<br />
0122 PID in use with another CMS number.<br />
0123 RT$OUT ERROR - no EXPOOL left (session control).<br />
0124 Attempt to use empty PID site-id table.<br />
0125 PID number not in PID site-id table.<br />
0126 Site-id not in PID site-id table.<br />
0127 Site-id interface packet end address not within application program bank.<br />
0130 Wrong function for site-id packet version.<br />
0131 Multiple numbered pass-off error.<br />
0132 Discrete receive parameter error.<br />
0133 <strong>Message</strong> not recallable.<br />
0134 Packet cell required to be zero (P$BUFF, P$RTN, P$MDL) was not zero.<br />
0135 Invalid function, subfunction, or queue priority specified in P$OUTQ field.<br />
0136 Invalid TIP session identifier.<br />
0137 ER TIP$XMIT rejected (see note).<br />
0140 Step advance and terminate both specified on commit.<br />
0141 MAD in use by another activity; access not allowed. Only activities initialized<br />
with CMINIT$$ (P$FUNC = 3) receive this error code.<br />
0142 Standard calling sequence error on an extended mode call to MCB. This<br />
indicates that a parameter failed the validation check. If the status parameter<br />
failed, or if the call descriptor is invalid, MCB cannot return a status code.<br />
MCB gives the calling program a contingency through ER CQUE$ (error type<br />
04, error code 00, contingency type 021). MCB also provides diagnostic<br />
information; register A12 contains the number of the invalid parameter (1 for<br />
first, 2 for second, and so on), and A13 contains the auxiliary information as<br />
defined for contingency type 021, error type 04.<br />
0143 Auxiliary data area outside the user D-bank or main storage buffer size less<br />
than the AUX area.<br />
0144 Multidestination list address out of range or too many entries requested.<br />
0145 Auxiliary area (P$AUX) not large enough.<br />
0146 More than one option set for rollback in P$FLAGS.<br />
0147 Group PID or multidestination list is not allowed when P$MN is nonzero and<br />
message numbering option is set.<br />
0150 File wrapped on recall.<br />
B–4 7833 1568–004
Table B–1. Error Codes<br />
Code Meaning<br />
0151 Extended mode program attempted to interface with MCB when<br />
EXTENDEDMODE NO was configured.<br />
Error Codes<br />
7833 1568–004 B–5
Error Codes<br />
B–6 7833 1568–004
Appendix C<br />
<strong>Message</strong> Recovery Options<br />
C.1. Recovery Option Combinations<br />
You can specify any of these options for a message:<br />
• Low Main Storage Priority (LCP)<br />
• <strong>Message</strong> Recall (MR)<br />
• <strong>Message</strong> Numbering (MN)<br />
• Text Auditing (ADT)<br />
• Defer the <strong>Message</strong> (DEF)<br />
• Recoverable <strong>Message</strong> (REC)<br />
The following rules control the <strong>Message</strong> <strong>Control</strong> <strong>Bank</strong> (MCB) response to each<br />
combination of options:<br />
1. Low main storage priority (LCP) is independent of any other options. It may be set or<br />
clear for any message. If the LCP option is set, the message may be overlaid by<br />
messages that do not have this option set.<br />
2. Text Auditing (ADT) requires the recoverable message (REC) option. If REC is set,<br />
ADT is honored (auditing is performed only if the ADT option is set). If REC is not set,<br />
ADT is ignored. ADT may be set for any message, but it has no meaning if REC is not<br />
also set.<br />
3. If REC is not set, the defer the message (DEF) option may be either set or clear, and<br />
the option will be honored. Thus, if the DEF option is set, the message is not<br />
forwarded by step control until the step ends. If the DEF option is not set, the<br />
message is forwarded to either CMS (output message) or the input queue (pass-off<br />
message) immediately when ER TIP$Q is performed.<br />
4. If REC is set, then DEF must also be set. If DEF is not set when REC is set, the<br />
application program gets an error when the message is queued. A Store function<br />
without the last block indicator (LBI) will be successful. The error is detected only<br />
when the message is passed to step control, because step control is the module<br />
concerned with deferring messages.<br />
5. The following rules apply to the message numbering (MN) option in conjunction with<br />
other options:<br />
a. REC+MN, but not DEF. This case is treated as in rule 4. Since the message is<br />
recoverable but not deferred, step control returns an error status when an ER<br />
7833 1568–004 C–1
<strong>Message</strong> Recovery Options<br />
TIP$Q is performed. The error is passed to the MCB’s caller. MCB does not<br />
return an error to its caller before performing an ER TIP$Q (an MCB call with LBI<br />
set).<br />
b. DEF+MN, but not REC. In this case, there are three possibilities:<br />
• MCB always sets the REC and DEF options for a checkpoint message. For a<br />
pass-off message, MCB removes the MN option before performing an ER<br />
TIP$Q because step control does not accept the MN option without the REC<br />
option.<br />
• These events occur for an input message:<br />
1) If the originating PID is unintelligent, no error is returned to the caller.<br />
MCB removes the MN option before performing ER TIP$Q.<br />
2) If the originating PID is intelligent:<br />
If P$MN is nonzero, the message number provided in P$MN is passed to<br />
the target transaction program.<br />
If P$MN is zero, there is no intelligent numbering. MCB removes the MN<br />
option.<br />
• These actions are taken for an output message:<br />
1) If the destination PID is unintelligent, an error status is returned to the<br />
caller.<br />
If P$MN is nonzero, the message number provided in P$MN is used. If<br />
P$MN is zero, an error status is returned to the caller as in the case of an<br />
unintelligent PID.<br />
MN alone. This is similar to case b, but the message is immediate<br />
because the DEF option is not set.<br />
2) If the destination PID is intelligent:<br />
If P$MN is nonzero, the message number provided in P$MN is used. If<br />
P$MN is zero, an error status is returned to the caller as in the case of an<br />
unintelligent PID.<br />
MN alone. This is similar to case b, but the message is immediate<br />
because the DEF option is not set.<br />
• MR requires REC, DEF, and MN. Again, there are several cases to consider:<br />
MR alone, MR+MN, and DEF+MR+MN. These cases are all the same. Since<br />
the REC option is not set, neither the MN nor MR options are ever checked.<br />
DEF is checked independently, so the last combination results in a deferred<br />
message while the first two combinations result in immediate messages. In<br />
this case, the MCB removes the MN option to avoid errors from an ER<br />
TIP$Q. This is the same as the first case under rule 5. If the destination PID<br />
is unintelligent, an error status is returned to the calller. REC+DEF+MR, but<br />
not MN. The MR option is never checked since a recallable message must<br />
be numbered. Without the MN, the MCB does not care whether or not MR<br />
is set. This combination of options results, therefore, in a recoverable,<br />
deferred message without numbering, recall, or auditing. REC+MN+MR, but<br />
not DEF. This is treated as in rule 4. Thus, the MCB processes the message,<br />
C–2 7833 1568–004
<strong>Message</strong> Recovery Options<br />
including numbering and recall, up to the point of doing an ER TIP$Q. An<br />
error is returned by step control and is passed back to the caller of the MCB.<br />
The message is not passed to its destination. The number that the MCB had<br />
assigned to the message is reused later.<br />
• REC may be set or clear for any message. This is the controlling option for<br />
ADT, MN, and MR. If REC is not set, then ADT, MN, and MR are not<br />
checked and may or may not be set. If REC is set, then DEF is required, and<br />
the ADT, MN, and MR options are honored subject to the conditions given<br />
earlier.<br />
C.2. <strong>Message</strong> Numbering<br />
For message numbering, it is important to note that the recovery options are not the only<br />
factors in determining whether or not a number is assigned to a message. For input<br />
messages, the transaction code entry in the VINDEX must specify numbering (the MN<br />
option just discussed), and the PID must specify numbering. For an output message, the<br />
MN, DEF, and REC option must all be set, and the PID must specify numbering. For a<br />
pass-off message, the REC, DEF, and MN options must all be set, the input message for<br />
the step generating the pass-off must be nonrecoverable, and the input PID for the step<br />
must specify unintelligent numbering. For a checkpoint message, the conditions for a<br />
pass-off message must be met.<br />
Note that assignment of a number to a message does not imply the presence of<br />
message headers. Headers are optional. They are contingent on the PID configuration<br />
and the auxiliary data area fields P$HDR, P$HDRSIZE, and P$END.<br />
7833 1568–004 C–3
<strong>Message</strong> Recovery Options<br />
C.3. Program Recovery Options<br />
For any program, there are three sets of recovery options:<br />
• One set for input, pass-off, and checkpoint messages directed to the program<br />
• One set for output messages generated by the program<br />
• One set for operations on behalf of the program while it is executing.<br />
One of the options in the third set, the Z option, declares if the program is recoverable (Z<br />
option set) or nonrecoverable (Z option not set). Step control requires that the Z option be<br />
set when any recoverable message processing is done. If the program step is<br />
nonrecoverable, an attempt to create a recoverable message of any type results in an<br />
error returned to the caller.<br />
The recovery options in effect for any program at any time are determined by the queue<br />
item associated with the program. A queue item is created together with a message or<br />
by a request to start a step without a message. When a program is processing a<br />
message, its options are those defined when the message was created, not the options<br />
that may have been declared by the program with an ER QI$CON. The options declared<br />
by the program take effect only if the program starts a step without receiving a message.<br />
There is one exception to this rule. If an Network Database Server run unit opens a<br />
recoverable database area for update without having the � option set, Universal Database<br />
<strong>Control</strong> does an ER DMSS$ and step control sets the � option in the queue item. Thus,<br />
the MCB and Network Database Server may have recorded different sets of options for<br />
the same step.<br />
C–4 7833 1568–004
Appendix D<br />
Audit Records<br />
All audit records created by the <strong>Message</strong> <strong>Control</strong> <strong>Bank</strong> (MCB) have the following format:<br />
0 type subtype length of<br />
audit header<br />
1-2 unique-id<br />
3-7 reserved<br />
8<br />
through data depending on the record type<br />
n-1<br />
The following table explains the format of an audit record:<br />
record length n<br />
Word Field Value Explanation<br />
0 type (S1) 021 This distinguishes MCB records on the audit<br />
trail from those records created by other<br />
software components, such as the OS 2200<br />
Exec or Network Database Server.<br />
0 subtype<br />
(S2)<br />
01 MCA message block<br />
02 Overflow message block<br />
03 MRF control file header after an idle point<br />
04 MRF controls<br />
05 Periodic statistics<br />
06 MRF controls after an idle point<br />
07 Error record for ER TIIP$Q<br />
010 PID audit record<br />
7833 1568–004 D–1
Audit Records<br />
Word Field Value Explanation<br />
0 record<br />
length<br />
(H2)<br />
The number of words in this audit record,<br />
including the 8-word header.<br />
1 through 2 unique-id For subtypes 1, 2, and 7: unique-id of the<br />
message<br />
3 through 7 Reserved.<br />
For subtypes 3, 4, 5, and 6: value = 0<br />
The unique-id contains the step-id of the<br />
calling program.<br />
8 through n-1 The record length is eight words plus the<br />
number of words presented by the application<br />
Site-developed audits through the MCB function AUDIT$$ are given a type 023 and a<br />
subtype of 02.<br />
MCB idle point records produced by the II keyin IDLPT are given a type 024 and a<br />
subtype of 02. The record length is four words. The time and date stamp appears in<br />
word 1 and the number of message retention files (MRF) in word 2.<br />
D.1. MCA Block<br />
When a recoverable message is audited, each message block is written as a separate<br />
audit record. The first block, the message control area (MCA) block, is actually audited<br />
last. The order, therefore, in which the blocks of a given message appear on the audit<br />
trail is<br />
2 3 N 1<br />
Figure D–1. Order of MCA Blocks in Audit Trail<br />
The text of the audit record of an MCA block is that format shown in F.1.4.<br />
D.2. Overflow Block<br />
The text of the audit record of an overflow message block is in the format shown in<br />
F.1.4.<br />
D–2 7833 1568–004
D.3. User Audit Record<br />
Audit Records<br />
The text of a user audit record is that data supplied by the calling program on an MCB<br />
Audit function in the buffer P$BUFF with length P$LENGTH (see 5.5.12).<br />
D.4. MRF <strong>Control</strong>s<br />
For a recoverable MRF file, whenever a segment changes state from free to active,<br />
active to retired or retired to free, the MRF controls for that MRF file are written to the<br />
audit trail. The text of the audit record is in the format shown as MF$CTL in F.3.2.<br />
D.5. Periodic Statistics<br />
If periodic statistics have been invoked with the $STADT command, on each periodic<br />
interval, an audit record is created whose text consists of the statistics table ST$TBL<br />
(see F.9.<br />
D.6. TIP$Q Error<br />
If the MCB request to pass the message to step control fails, no queue item (QITEM)<br />
audit record will appear on the audit trail for this step. This audit record takes the place<br />
of the missing QITEM record, which allows the IRU to recover the message properly.<br />
7833 1568–004 D–3
Audit Records<br />
D–4 7833 1568–004
Appendix E<br />
Tailoring Features<br />
If you choose to tailor MCB code for special purposes at your site, you must be aware<br />
that your specially written code interacts with the activities of your application programs<br />
and the activities of CMS. You are responsible for controlling the performance factors of<br />
your code. The two programs described in this section affect the performance of both<br />
the MCB and the Exec.<br />
E.1. Tailored <strong>Message</strong> Analysis (TMA)<br />
Tailored <strong>Message</strong> Analysis (TMA) lets you write your own code for additional or alternate<br />
processing for each message type. The entry and exit requirements are the same for<br />
each message type.<br />
TMA code resides in the element MC$TMA of the base symbolic files. Use temporary<br />
corrections to insert the TMA code after the entry points listed in the following table:<br />
Entry Usage<br />
TMAINP Network input message<br />
TMACHK Checkpoint message<br />
TMAPAS Pass-off message<br />
TMAOP Output message<br />
Each entry point is externalized and reached with an LMJ from the initial message<br />
analysis (IMA) routine for each message type. For pass-off, checkpoint, and output<br />
messages, initial message analysis (IMA) is invoked prior to any processing. For a<br />
network input message, IMA is invoked when the MCB fills the first MRF block of the<br />
message or when CMS indicates the end of the message, whichever comes first.<br />
7833 1568–004 E–1
Tailoring Features<br />
The following table lists values passed to TMA.<br />
Register Value<br />
X8 Address of the main storage buffer containing the message control area<br />
(MCA) block of the message<br />
X9 Address of the MAD<br />
X10 Address of the SLOT<br />
X11 Return address<br />
The tailored code may return to the main line IMA code (J 0,X11) or to the message<br />
retention and control dispatcher (J MRFRET) when the TMA process is complete. The<br />
correct values on return are listed in the following table:<br />
Register Value<br />
X9 Address of the MAD<br />
X10 Address of the SLOT<br />
X8 Address of the main storage buffer containing the MCA block of the<br />
message. This is only true if returning to IMA main line code.<br />
All other registers in the minor register set are available for use by TMA.<br />
Your code can reference internal MCB tables and invoke internal MCB subroutines. You<br />
should recognize, however, that when you write your own code, you are responsible for<br />
contending with internal changes to the MCB as a result of software fixes or feature<br />
enhancements.<br />
You must write input messages so that both the auxiliary data area and transaction code<br />
fit in a single main storage buffer. If the TMA code you write references text following<br />
the transaction code, then those characters must also fit in the first main storage buffer.<br />
Your code can change the recovery options that apply to network input messages.<br />
Changing the recovery options is of benefit within a recoverable application where most<br />
messages for a transaction do not need to be recoverable. TMA code can add the<br />
desired recovery option bits in the MAD and core buffers for the selected message.<br />
Adding the desired recovery option bits requires that you set the recoverable program<br />
step option (REC,Z) for any transaction that can receive a recoverable input.<br />
TMA code can make use of the user message control feature of MCB. This feature<br />
allows TMA code to either discard or reject input messages. In the case of message<br />
discard, the original input message is thrown away. In the case of message reject, the<br />
originator is sent a rejection message. To discard an input message, you must set the<br />
MA$UMCREJ flag in the MAD. To send a reject message, you must set the<br />
MA$UMCRSP flag in the TMA code. In this case, you must also set up the text of the<br />
reject message in the message portion of the current input core buffer and place the<br />
length of the text of the message in CA$LEN.<br />
E–2 7833 1568–004
Tailoring Features<br />
If you include the SLT$USIZE SGS in your MCB generation (see the MCB Installation<br />
Guide), your TMA code can store its own data within the SLOT table associated with the<br />
executing activity. The user storage area begins at S$UAREA,X10. Your TMA code must<br />
check the value of SLT$USIZE to verify that the user area exists and is large enough<br />
before storing any data in the user area.<br />
E.2. Tailored Session Analysis (TSA)<br />
TSA lets you write your own code for additional processing of an open, close, or<br />
abnormal termination of a session. The TSA code resides in the element MC$TSA of the<br />
base symbolic files. Use temporary corrections to insert the TSA code after the entry<br />
points listed in the following table:<br />
Entry point Usage<br />
TSAOPN Open session<br />
TSACLS Close session and abnormal termination<br />
Each entry point is externalized and reached with an LMJ from MC$DISP after all<br />
processing for each PID is complete, depending on the session type. The values are<br />
listed in the following table:<br />
Register Value<br />
A1 PID<br />
X10 SLOT address<br />
X11 Return address<br />
Your code returns to the main code with an LMJ (J 0,X11) when the TSA process is<br />
complete. Your code must save and restore all registers except A1.<br />
If you include the SLT$USIZE SGS in your MCB generation (see the MCB Installation<br />
Guide), your TMA code can store its own data within the SLOT table associated with the<br />
executing activity. The user storage area begins at S$UAREA,X10. Your TMA code must<br />
check the value of SLT$USIZE to verify that the user area exists and is large enough<br />
before storing any data in the user area.<br />
7833 1568–004 E–3
Tailoring Features<br />
E–4 7833 1568–004
Appendix F<br />
Data Structures<br />
F.1. <strong>Message</strong> Block Structure<br />
MCB stores each message in one or more blocks. The size of a block is defined by the<br />
configuration parameter BUF$SIZE. The first block for a message is called the MCA<br />
block. If the message text is too long to fit in the MCA block, one or more overflow<br />
blocks are used.<br />
F.1.1. Notation Conventions<br />
Data Structure Diagrams<br />
An asterisk in front of a word number (for example, *02) indicates an overlay of the<br />
previous word.<br />
Two dots (..) indicates continuation of number in the word number column.<br />
Three dots (...) indicate continuation within the word.<br />
Tables<br />
Numbers within parentheses indicate value; for example, CA$MCA (040) means that<br />
CA$MCA has a value of 040.<br />
F.1.2. MCA Block<br />
MCB creates a message control area (MCA) for each unique message it processes. MCB<br />
uses the MCA internally to retain pertinent information during message processing, until<br />
the message is released from MCB control. The MCA is located in the first block of each<br />
message (called the MCA block). Figure F–1 shows the MCA block structure.<br />
MCA<br />
auxiliary information area (optional)<br />
multidestination list (optional)<br />
message text<br />
Figure F–1. MCA Block Structure<br />
7833 1568–004 F–1
Data Structures<br />
The configuration value for BUF$SIZE must be greater than the sum of the sizes of the<br />
MCA, the auxiliary information area, and the MDL, so that the message text begins in the<br />
first block.<br />
F.1.2.1. MCA Field Definitions<br />
The fields located in the MCA area in Figure F–1 are shown in Figure F–2.<br />
CA$FLG CA$MCYC CA$BCYC CA$DCT CA$TDC<br />
CA$LNK<br />
CA$PRG CA$LEN<br />
CA$SAM1<br />
CA$SAM2<br />
CA$SAM3<br />
CA$SAM4<br />
CA$TC1<br />
CA$TC2 CA$CVL<br />
CA$DPS 0 CA$AUXL CA$FLAGS<br />
TQ$PKT<br />
TIP$Q packet begins here (see F.1.2.2)<br />
Figure F–2. MCA Field Definitions<br />
If the MCA is associated with a nonrecoverable message, words 03 through 06 have a<br />
different format from the one shown in Figure F–2.<br />
03 CA$MID2 CA$MID3<br />
04 CA$MID4 CA$MID5<br />
05 CA$MID6 CA$MID7<br />
06 CA$MID8 CA$MIDOVF<br />
F–2 7833 1568–004
Word Field Name Explanation<br />
00 S1 CA$FLG: MCA flags:<br />
CA$MCA (040)<br />
• MCA block if set<br />
CA$SCRN (020)<br />
• TQ$DPS value is in MCA<br />
CA$DUP (010)<br />
• Possible duplicate message<br />
CA$PST (004)<br />
• Post-processing transaction in CA$CVL<br />
CA$MODE (002)<br />
• User requested mode change on output<br />
CA$GPID (001)<br />
• Group PID output<br />
00 S2 CA$MCYC <strong>Message</strong> MRF cycle<br />
S3 CA$BCYC <strong>Message</strong> MRF block cycle<br />
Q3 CA$DCT Destination count for this message<br />
Q4 CA$TDC Original destination count for this message<br />
01 W CA$LNK Link to overflow block of message (MID)<br />
02 H1 CA$PRK Program number of originator if Group PID output<br />
H2 CA$LEN Logical message size in characters<br />
03 W CA$SAM1 SAMs for this recoverable message<br />
04 W CA$SAM2<br />
05 W CA$SAM3<br />
06 W CA$SAM4 Zero or link to next block of this message<br />
03 H1 CA$MID2 MIDs for this nonrecoverable message<br />
H2 CA$MID3<br />
04 H1 CA$MID4<br />
H2 CA$MID5<br />
05 H1 CA$MID6<br />
H2 CA$MID7<br />
06 H1 CA$MID8<br />
H2 CA$MIDOVF Zero or link to overflow chain of blocks.<br />
07 W CA$TC1 ASCII transaction code (Part 1)<br />
Data Structures<br />
7833 1568–004 F–3
Data Structures<br />
Word Field Name Explanation<br />
010 H1 CA$TC2 ASCII transaction code (Part 1)<br />
H2 CA$CVL VINDEX index of conversational link or post<br />
011 H1 CA$DPS Display Processing System screen number save area<br />
S5 CA$AUXL Length of auxiliary area<br />
S6 CA$FLGS More MCA flags:<br />
CA$ACK (040)<br />
• MCB input ACK (release input lockout)<br />
CA$WAIT (020)<br />
• MCB wait message<br />
CA$CVLINP (010)<br />
• Conversational link input message Word<br />
012 W TQ$PKT Start of the TIP$Q packet<br />
F.1.2.2. TIP$Q Packet Field Definitions<br />
The TIP$Q packet is included in the MCA for all message types. MCB uses this<br />
information internally for ER TIP$Q processing. The TIP$Q packet extension areas shown<br />
in Figure F–4 and Figure F–5 contain information pertinent to specific message types.<br />
The fields in the TIP$Q packet are shown in Figure F–3.<br />
0 TQ$STID<br />
01<br />
02 TQ$PID TQ$MN<br />
03 TQ$CBN TQ$FN<br />
.. TQ$MID<br />
04 TIP$ packet extension (Words 04 through 010)<br />
Figure F–3. TIP$Q Packet Field Definitions<br />
Word Field Name Explanation<br />
00 W TQ$STID Program’s step identifier (part 1)<br />
01 W Program’s step identifier (part 2)<br />
02 H1 TQ$PID Input or destination PID<br />
H2 TQ$MN Input message number (0 for output messages)<br />
F–4 7833 1568–004
Word Field Name Explanation<br />
03 W TQ$MID MRF identifier (MID) of the MCA block of this message<br />
S2 TQ$CBN Core bank number for the message being processed<br />
S3 TQ$FN Relative MRF file number containing this message<br />
F.1.2.3. TIP$Q Packet Extension for Output <strong>Message</strong>s<br />
Data Structures<br />
04 TQ$OUTQ 0 TQ$TYPE 0<br />
05 0 TQ$ORCC 0<br />
06 0 TQ$SEC 0<br />
07 TQ$OSN<br />
010 0 TQ$BDI<br />
011 TQ$ORUNID<br />
Figure F–4. TIP$Q Packet Extension for Output <strong>Message</strong>s<br />
Word Field Name Explanation<br />
04 H1 TQ$OUTQ Output queuing information (includes the output function,<br />
indicator and queuing priority)<br />
S5 TQ$TYPE <strong>Message</strong> type:<br />
MT$OP (04)<br />
• Output<br />
05 S4 TQ$ORCC Output recovery options<br />
06 S3 TQ$SEC Security options:<br />
TQ$HIGH (1)<br />
• System high<br />
TQ$LOW (2)<br />
• System low<br />
07 W TQ$OSN Save area for originator’s sequence number<br />
010 H2 TQ$BDI Common bank BDI for the group PID table of a requested<br />
group PID number<br />
011 W TQ$ORUNID Run-id of the program originating the message<br />
7833 1568–004 F–5
Data Structures<br />
F.1.2.4. TIP$Q Packet Extension Area for Other <strong>Message</strong> Types<br />
04 TQ$PGN TQ$IPRI TQ$TYPE TQ$MODE<br />
05 0 TQ$RCC<br />
06 0 TQ$PGNX TQ$ORCC TQ$IRCC<br />
07 0 TQ$SEC TQ$SESID<br />
Figure F–5. TIP$Q Packet Extension Area<br />
Word Field Name Explanation<br />
04 T1 TQ$PGN Program number (least significant 12 bits)<br />
T2 TQ$IPRI Queuing priority<br />
S5 TQ$TYPE <strong>Message</strong> type:<br />
MT$NET (01)<br />
• Network input<br />
MT$CHK (02)<br />
• Checkpoint<br />
MT$PAS (03)<br />
• Pass-off<br />
MT$PUT (05)<br />
• Text stored by CMS put text function<br />
MT$TMR (06)<br />
• Timer input<br />
S6 TQ$MODE <strong>Message</strong> mode<br />
05 H2 TQ$RCC Recovery options<br />
S3 TQ$PGNX Program number extension (most significant 6 bits)<br />
S4 TQ$ORCC Output recovery options<br />
S5 TQ$IRCC Input recovery options<br />
06 S3 TQ$SEC Security options. See F.1.2.3.<br />
H2 TQ$SESID TIP session control identifier<br />
F–6 7833 1568–004
F.1.3. Overflow Block<br />
Data Structures<br />
In addition to an MCA block, a message may consist of one or more overflow blocks.<br />
Figure F–6 shows the overflow block structure.<br />
0 0 CA$MCYC CA$BCYC 0<br />
01 CA$LNK<br />
02<br />
message text<br />
Figure F–6. Overflow <strong>Control</strong> Field Definitions<br />
Word Field Name Explanation<br />
00 S2 CA$MCYC <strong>Message</strong> cycle<br />
S3 CA$BCYC Block cycle<br />
01 W CA$LNK MRF identifier (MID) of next block if one exists, or 0<br />
F.1.4. Main Storage Buffers<br />
The MCB main storage buffers provide a high-speed staging area for message retention.<br />
The number of main storage buffers is specified in the MCB configuration. At least one<br />
main storage buffer should be configured for each activity in the system (the number of<br />
SLOTs).<br />
Buffers are organized on free and active chains. In the initial state, all the main storage<br />
buffers are located on the free chain, with no buffers on the active chain. A buffer on the<br />
free chain contains a zero MRF identifier.<br />
The free chain consists of unallocated buffers or buffers returned by a release of all<br />
facilities associated with a message. The resource release could occur because of<br />
message cancellation or message completion.<br />
The active chain consists of partial message blocks, nonrecoverable blocks, or complete<br />
blocks.<br />
Main storage buffers are allocated in the following way. First, the MCB attempts to<br />
allocate a main storage buffer from the free chain. If no buffer is found there, the first<br />
buffer is selected from the active chain. Since this buffer contains valid data, it may have<br />
to be written to an MRF file. This buffer is written to its associated MRF file if the buffer<br />
is partially filled or is a block of a nonrecoverable message not previously written<br />
(CB$PAR =1). Since a full block (full buffer) of a recoverable message is written to an<br />
MRF when created, there is no need to write it to mass storage when it is reallocated.<br />
Figure F–7 shows the field definitions for the main storage buffer and the main storage<br />
buffer structure.<br />
7833 1568–004 F–7
Data Structures<br />
0 CB$FL CB$BL<br />
01 CB$CMS CB$USE CB$STAT<br />
02 CB$MID<br />
03 CB$MID1<br />
message block<br />
(See F.1.2 or F.1.3)<br />
Figure F–7. Main Storage Buffer Field Definitions<br />
Word Field Name Explanation<br />
00 H1 CB$FL Link to next main storage buffer on chain. If currently<br />
dechained, content is zero.<br />
H2 CB$BL Link to prior main storage buffer on chain. If currently<br />
dechained, content is zero.<br />
01 S1 CB$CMS CMS number for ROPL<br />
S2 CB$USE Flag to indicate the buffer is in use.<br />
S3 CB$STAT Main storage buffer status:<br />
(000)<br />
• Complete main storage buffer (I/O done).<br />
CB$PAR (040)<br />
• Partial main storage buffer (will be marked partial until an<br />
I/O is done).<br />
02 W CB$MID MRF identifier of this block. Content is zero if on the free main<br />
storage buffer chain.<br />
03 W CB$MID1 MRF identifier of the MCA block. Content is zero if on the free<br />
main storage buffer chain.<br />
F.2. <strong>Message</strong> Retention File (MRF) Operations<br />
MCB uses several data structures to support MRF operations: the MRF itself, MRF<br />
segments and blocks, the MRF control table, the segment allocation mask (SAM) area,<br />
and the MRF identifiers.<br />
F.2.1. Recoverable MRFs<br />
Up to 63 recoverable MRFs may be configured in your system. A recoverable MRF is<br />
composed of segments. The segments are composed of message blocks (Figure F–1),<br />
which are the actual units of storage.<br />
F–8 7833 1568–004
Data Structures<br />
A recoverable MRF is organized into segments. Any segment is in one of three states:<br />
free, active, or retired. A free segment is one with all blocks available for allocation. An<br />
active segment is one designated for allocation of blocks. After all blocks of a segment<br />
have been allocated, the segment is designated retired, and a new segment is allocated<br />
as an active segment. A retired segment becomes a free segment when all blocks of<br />
that segment have been returned. An MRF may have at most one active-input and one<br />
active-output segment at one time. Segments are allocated sequentially on a first-in,<br />
first-out stack; the oldest free segment is allocated next.<br />
F.2.2. Nonrecoverable MRFs<br />
A nonrecoverable MRF is a message retention file that holds nonrecoverable messages.<br />
The blocks of the MRF 0 file are used as a paging area for message blocks in the main<br />
storage buffer banks (CORBNK). Allocation of MRF blocks is controlled by a bit map kept<br />
in the MRF control bank (CTL$BNK1). Each bit in the bit map corresponds to a single<br />
block.<br />
F.2.3. MRF <strong>Control</strong> Tables<br />
Each MRF is controlled by a table. Since each MRF may be a different size, a common<br />
control table (MF$CTX) organizes the independent control tables (MF$CTL). At system<br />
generation time, the user specifies the size of each MRF, along with the proper MRF for<br />
recoverable input or output messages from each PID. The MRF file specified for<br />
recoverable input messages is also used for recoverable pass-off and checkpoint<br />
messages. MRF 0 is used for all nonrecoverable messages.<br />
The control table for each MRF contains information to control the allocation and release<br />
of segments and blocks. For recovery processing purposes, whenever a segment of a<br />
recoverable file is allocated, a copy of the MRF control table is saved on mass storage<br />
and optionally written to the audit trail. This information, along with information<br />
accumulated in step control, enables the controls to be recovered in the event of<br />
component or system failure.<br />
F.2.4. MRF Blocks<br />
A message is composed of one or more blocks linked together by MRF identifiers (MID).<br />
These blocks can reside in main storage buffers and in blocks of an MRF. The latest copy<br />
of a complete recoverable block always resides in an MRF. Nonrecoverable and partial<br />
blocks are only written to an MRF in an overflow condition. The blocks of a message can<br />
reside in several segments of a single MRF, but they cannot reside in more than one<br />
MRF.<br />
Since a segment allocation starts an I/O operation, carefully consider the number of<br />
blocks configured per segment. If small segments are configured (containing few<br />
blocks), more I/O operations will occur. If large segments are configured (containing<br />
many blocks), it is more probable that all segments will be retired. As long as one block<br />
of a segment is still allocated, it cannot be placed on the free segment list.<br />
7833 1568–004 F–9
Data Structures<br />
F.2.5. MRF Identifiers (MID)<br />
MRF blocks are allocated sequentially in a segment. Each block of an MRF file is<br />
identified with a MID. This identifier is composed of a file number, segment number, and<br />
block number as shown in the following formats. MCB uses this unique MID to locate a<br />
block on the active main storage buffer chain, or perform an I/O to retrieve a block<br />
written to an MRF file.<br />
MID format:<br />
0<br />
(12 bits)<br />
File #<br />
(6 bits)<br />
Segment #<br />
(10 bits)<br />
OS 2200 Queue Item MID format when using Multiple Corbnks:<br />
0<br />
(6 bits)<br />
Corbnk<br />
(6 bits)<br />
File #<br />
(6 bits)<br />
Segment #<br />
(10 bits)<br />
F.2.6. Segment Allocation Mask (SAM) Area<br />
Block #<br />
(8 bits)<br />
Block #<br />
(8 bits)<br />
As MRF blocks are returned to a segment, a count is kept to detect when a segment is<br />
free. A count of the number of MRF blocks assigned to a message is kept in a segment<br />
allocation mask (SAM). The SAMs can be found in the MRF allocation descriptor (MAD)<br />
when the message is being accessed, and in the message control area (MCA) while<br />
waiting to be accessed. A SAM is composed of a file number, segment number, and a<br />
block count of this message from the specified segment as shown below. Since the<br />
MRF blocks are allocated sequentially, this information is all that is needed to return<br />
blocks to a segment. It is not necessary to know which blocks in the segment are<br />
allocated.<br />
SAM format:<br />
0<br />
(12 bits)<br />
File #<br />
(6 bits)<br />
Segment #<br />
(10 bits)<br />
Block count<br />
minus 1<br />
(8 bits)<br />
F–10 7833 1568–004
F.3. Main MRF <strong>Control</strong> Table (MRF$TBL)<br />
Data Structures<br />
The MCB directory points to the main MRF control table as shown in Figure F–8.<br />
00 MF$CTXL MF$CTX<br />
01 MRF$LEN MRF$NPX<br />
02 MRF$PIX MRF$PBK<br />
… …<br />
MRF$PIX MRF$PBK<br />
Figure F–8. Main MRF <strong>Control</strong> Table<br />
Beginning with word 02, there is one word per PIX file.<br />
Word Field Name Explanation<br />
00 H1 MF$CTXL Length of MF$CTX table<br />
H2 MF$CTX Offset to the MF$CTX table<br />
01 H1 MRF$LEN Number of MRFs<br />
H2 MRF$NPX Number of PIX files<br />
02 H1 MRF$PIX TIP/Network Database Server file number of PIX file<br />
H2 MRF$PBK Number of PIX blocks in PIX file<br />
F.3.1. MRF File Table (MF$CTX)<br />
The MRF file table, shown in Figure F–9, contains one two-word entry for each<br />
configured MRF.<br />
00 MR$FCL (0) MR$FCA (0)<br />
01 MR$FCI (0) MR$FCC (0)<br />
02 MR$FCL (1) MR$FCA (1)<br />
03 MR$FCI (1) MR$FCC (1)<br />
…<br />
2N MR$FCL (N) MR$FCA (N)<br />
7833 1568–004 F–11<br />
…<br />
MR$FCI (N) MR$FC (N)<br />
N=63<br />
Figure F–9. MRF File Table
Data Structures<br />
Word Field Name Explanation<br />
00 H1 MR$FCL Length of MRF control table<br />
H2 MR$FCA Offset to the MRF control table<br />
01 H1 MR$FCI Index into MC$DIR for this MRF<br />
H2 MR$FCC Common bank BDI, which contains this MRF control<br />
F.3.2. MRF <strong>Control</strong> Table (MF$CTL)<br />
Each MRF has a control table MF$CTL. For the first MRF (MRF-0), the format of the<br />
control table is shown in Figure F–10.<br />
00 SC$TS<br />
01 SC$LMID SC$NABLK<br />
02 SC$SEC SC$NSEG<br />
03 SC$MFN SC$NBMW<br />
04 MID bit map words<br />
where:<br />
X is 0 for an allocated MID.<br />
X is 1 for an available MID.<br />
(8192 words maximum, 32 bits per word are used)<br />
format:<br />
0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX000<br />
Figure F–10. MRF <strong>Control</strong> Table<br />
In the first word, the leftmost X corresponds to MID 0, and is permanently allocated.<br />
Each MID bit map word contains a leftmost zero, 32 Xs, and three rightmost zeros.<br />
Word Field Name Explanation<br />
00 W SC$TS Test-and-set<br />
01 H1 SC$LMID Latest MID allocated<br />
H2 SC$NABLK Number of active blocks<br />
02 H1 SC$SEC Sector address of information in MRF$CNTRL<br />
H2 SC$NSG Number of configured elements<br />
F–12 7833 1568–004
Word Field Name Explanation<br />
03 H1 SC$MFN MRF Network Database Server file number<br />
H2 SC$NBMW Number of bit map words<br />
04 W Bit map words<br />
The control table formats for MRF-1 through MRF-63 are shown in Figure F–11.<br />
00 SC$TS<br />
01 SC$AI SC$A0<br />
02 SC$SEC SC$NSG<br />
03 SC$MFN SC$PFN<br />
04 SC$CF SC$CSC SC$CSB<br />
.. word 4 repeated once per segment<br />
SC$CF SC$CSC SC$CSB<br />
4+N SC$FSN<br />
5+N SF$SOLD SC$FSNEW<br />
SC$FS ... ... ...<br />
.. ... ... ...<br />
N number of segments<br />
Figure F–11. MRF <strong>Control</strong> Table Formats<br />
Data Structures<br />
Within this table, beginning at word 4, one control word exists per segment. Following<br />
this set of words are two words of control information for the free segment list, followed<br />
by the free segment list itself.<br />
Word Field Name Explanation<br />
00 W SC$TS Test-and-set cell used when altering this MRF control table<br />
01 H1 SC$AI Segment currently being allocated for input messages<br />
H2 SC$AO Segment currently being allocated for output messages<br />
02 H1 SC$SEC Sector address of this MRF in MRF$CNTRL<br />
H2 SC$NSG Number of segments in this MRF Word<br />
03 H1 SC$MFN TIP/Network Database Server file number assigned to this<br />
MRF<br />
H2 SC$PFN TIP/Network Database Server file number of associated PIX<br />
file (may be 0)<br />
7833 1568–004 F–13
Data Structures<br />
Word Field Name Explanation<br />
04 T1 SC$CF Number of blocks freed in this segment (This field only<br />
applies to retired segments.)<br />
S3 SC$CSC Segment cycle number<br />
H2 SC$CSB Segment number, block number of next block to be assigned<br />
4+N W SC$FSN Number of free segments<br />
5+N H1 SC$FSOLD Offset to oldest free segment<br />
H2 SC$FSNEW Offset to newest free segment in the free segment list<br />
SC$FS Start of free segment list<br />
F.4. Buffer Pool <strong>Control</strong>s<br />
Each word in the free segment list is broken into thirds with<br />
each third containing a free segment number. The offsets<br />
SC$FSOLD and SC$FSNEW provide access to this list for<br />
segment allocation and release respectively.<br />
The data in these fields, shown in Figure F–12, controls the MRF allocation descriptor<br />
(MAD), main storage buffer, and message release resources of the MCB.<br />
Q$FL Q$BL<br />
Q$TS<br />
Q$RET Q$CUR<br />
Q$MAXN Q$MIN<br />
Q$PS Q$PE<br />
Q$SIZ unused<br />
Figure F–12. Buffer Pool <strong>Control</strong><br />
Word Field Name Explanation<br />
00 H1 Q$FL Address of buffer on the head of the chain<br />
H2 Q$BL Address of buffer on the tail of the chain<br />
01 W Q$TS T/S queuing cell for locking during chain manipulation<br />
02 H1 Q$RET Return save cell<br />
H2 Q$CUR Current number of buffers chained<br />
03 H1 Q$MAXN Maximum number of buffers chained<br />
H2 Q$MIN Minimum number of buffers chained<br />
F–14 7833 1568–004
F.5. SLOT<br />
Word Field Name Explanation<br />
04 H1 Q$PS Starting address of this pool<br />
H2 Q$PE Address of the last buffer in the pool<br />
05 H1 Q$SIZ Size of the buffers in this pool<br />
H2 Unused<br />
Data Structures<br />
All MCB message processing requires an activity control table called a SLOT. The SLOT<br />
is created when an activity makes an initialization function call to the MCB, and it remains<br />
attached to the activity until it terminates with the MCB, at which point the SLOT is<br />
released.<br />
The SLOTs reside in MCBBNK unless you are using the multiple SLOT bank feature. In<br />
the latter case, the SLOTs reside in the SLOT banks and MCBBNK contains a 2-word<br />
SLOT header (SLOTH) corresponding to each SLOT. Figure F–13 shows the SLOT<br />
header. (Five SLOTs reserved for the MCB background run reside in MCBBNK in either<br />
case. The background run SLOTs are not counted in SLT$NUM.)<br />
00 SH$STAT SH$BNKNUM SH$SLOT<br />
01 SH$PIDX SH$SWL<br />
Figure F–13. SLOT Header<br />
Word Field Name Explanation<br />
00 S1 Not used.<br />
S2 SH$STAT Status bits for S$SLOTH and SLOT:<br />
SH$CMS (02)<br />
• SLOTH belongs to a CMS caller (duplicates S$CMS).<br />
SH$ATC (04)<br />
• Type 017 contingency has occurred (replaces S$ATC).<br />
SH$BDR2 (010)<br />
• Current call bases SLOT on BDR2.<br />
S3 SH$BNKNUM Logical bank number of SLOT<br />
H2 SH$SLOT Address of SLOT<br />
01 H1 SH$PIDX Replaces S$PIDX<br />
H2 SH$SWL Duplicates S$SWL<br />
The MCB bank descriptor index (BDI) is used as the activity identifier for TRMRG$<br />
registration and the SLOT pointer is passed as user information. The SLOT contains the<br />
7833 1568–004 F–15
Data Structures<br />
activity's switch list (SWL) address. This provides the activity SLOT-TRMRG$<br />
associations for all MCB processing. The SLOT is shown in Figure F–14.<br />
00 Q$FL Q$BL<br />
01 Q$TS<br />
02 Q$RET Q$SCUR<br />
03 Q$MAXN Q$MIN<br />
04 0 S$PMODE S$COB S$SWL<br />
05 S$PID S$OMN<br />
*05 S$PMN<br />
06 S$TD<br />
*06 S$STID<br />
07 S$SEQ S$STEP<br />
010 S$ST<br />
*010 S$A0<br />
011 S$LIJRET<br />
012 S$DRET S$START<br />
013 S$OFF S$VERS S$FLAGS<br />
014 S$LEN S$BUFF<br />
*014 S$ACW<br />
015 S$BDI2 S$BDI1<br />
*015 S$BDI<br />
016 S$BITS<br />
017 S$STAT S$LMFC S$CMERR S$PRCC<br />
*017 S$BANKSAV S$PORCC S$PIRCC<br />
020 S$TRACE (word 1)<br />
021 S$TRACE (word 2)<br />
022 S$PRIM<br />
023 S$X8<br />
024 S$X9<br />
025 S$X10<br />
026 S$SKIP S$STAT2 S$USECBN reserved S$CMSN<br />
F–16 7833 1568–004
027 S$PROG S$PIDX<br />
*027 S$SLOTH<br />
030 S$RUNID<br />
031<br />
…<br />
036<br />
031<br />
…<br />
037<br />
035<br />
…<br />
046<br />
042<br />
…<br />
052<br />
053<br />
051<br />
…<br />
053<br />
054<br />
…<br />
057<br />
61<br />
61<br />
…<br />
0101<br />
SLOT extension area (see F.5.2)<br />
AUDIT$ packet (see F.5.1)<br />
(partially overlays SLOT extension area)<br />
QI$CON/QI$NIT pcket<br />
(partially overlays AUDIT$ packet)<br />
TIP$XMIT (see F.5.4) or DM$IOW packet (see F.5.3)<br />
(partially overlays QI$CON/QI$NIT packet)<br />
Network Database Server EOS code save area<br />
VINDEX table item save<br />
(partially overlays TIP$XMIT or DM$IOW packet)<br />
S$REGSAV register save area<br />
S$UAREA User definable save area.<br />
Data Structures<br />
The size of this area is defined by the optional SLT$USIZE SGS.<br />
This area is present only if SLT$USIZE is specified.<br />
Copy of EM caller’s interface packet (see Figure F–1) present<br />
only if EXTENDEDMODE = YES in configuration<br />
Figure F–14. SLOT<br />
7833 1568–004 F–17
Data Structures<br />
Word Field Name Explanation<br />
00 H1 Q$FL Forward link.<br />
H2 Q$BL Backward link.<br />
If free, a SLOT points to itself. If in use, a SLOT either points<br />
to itself or the first MAD in the chain.<br />
If free, a SLOT points to itself. If in use, a SLOT either points<br />
to itself or the last MAD in the chain.<br />
01 W Q$TS T/S cell for chaining MADs to or removing MADs from SLOT<br />
(zero indicates SLOT not in use.)<br />
02 H1 Q$RET Return link for chaining to a SLOT.<br />
H2 Q$CUR Current number of MADs chained off a SLOT.<br />
03 H1 Q$MAXN Maximum number of MADs chained off a SLOT.<br />
H2 Q$MIN Lowest number of MADs chained off a SLOT.<br />
04 S2 S$PMODE Originator’s program mode.<br />
S3 S$COB COBOL flag (primitive interface only).<br />
H2 S$SWL Originator’s switch list (SWL), which provides a unique identity<br />
for each user of the MCB.<br />
05 W S$PMN Originator’s PID/MSG number.<br />
H1 S$PID Originator’s PID.<br />
H2 S$OMN Originator’s message number.<br />
06 W S$STID Originator’s step identifier.<br />
W S$TD Originator’s time and date.<br />
07 H1 S$SEQ Originator’s sequence number.<br />
H2 S$STEP Originator’s step number.<br />
010 W S$A0 Caller’s A0 (request packet address).<br />
H1 S$ST Caller’s request status.<br />
011 W S$LIJRET Return address to external MCB caller.<br />
012 H1 S$DRET Return address to internal caller.<br />
H2 S$START Caller’s requested position to start data manipulation within<br />
the message.<br />
013 Q1 S$OFF Number of quarters from S$BUFF to start data manipulation.<br />
Q2 S$VERS Packet version in use by this activity.<br />
F–18 7833 1568–004
Word Field Name Explanation<br />
013 H2 S$FLAGS Flags from the request packet (P$FLAG):<br />
S$LBI (01)<br />
• Last block indicator.<br />
S$SOS (02)<br />
• Start a step with no message.<br />
Data Structures<br />
S$RLSE (04)<br />
• Release if a nonrecoverable message and at end of<br />
message.<br />
S$MLH (010)<br />
• Only queue to one member of a group.<br />
S$PST (020)<br />
• Create post-processing message when this message is<br />
acknowledged by CMS (see S$TC1 and S$TC2 in the<br />
extension, Figure F–16).<br />
S$RECOPT (040)<br />
• Use the user-defined recovery options.<br />
S$MODE (0100)<br />
• Change the mode of this transaction or PID.<br />
S$CMAD (0200)<br />
• Apply operation to current message.<br />
S$ADV (0400)<br />
• Step advance on commit.<br />
S$TRM (01000)<br />
• Step terminate on commit.<br />
S$RSM (02000)<br />
• Step resume on rollback.<br />
S$RQUE (04000)<br />
• Step requeue on rollback.<br />
S$RECV (0400000)<br />
• Recoverable message output indicator for CMS.<br />
S$ERRQ (010000)<br />
• Rollback queue to error program.<br />
S$CVL (020000)<br />
• Input PID in conversational mode.<br />
S$SCRN (040000)<br />
• P$SAVE value in packet.<br />
S$TXN (0100000)<br />
• Transaction code presented as first character in text.<br />
S$AUXR (0200000)<br />
• Replace auxiliary data area.<br />
7833 1568–004 F–19
Data Structures<br />
Word Field Name Explanation<br />
014 W S$ACW Access control word for LMR and LMW.<br />
H1 S$LEN Logical amount of data to transfer.<br />
H2 S$BUFF Destination or source of data.<br />
015 W S$BDI User’s BDIs.<br />
H1 S$BDI2 BDI of bank from utility D-bank window (BDR 3).<br />
H2 S$BDI1 BDI of bank from UI or MD window (BDR 1 or 2).<br />
016 W S$BITS Processing bits.<br />
017 S1 S$STAT Status of this caller:<br />
S$NPF (040)<br />
• Numbered pass-off.<br />
S$DISR (020)<br />
• Discrete receive function.<br />
S$LBW (010)<br />
• Last block write.<br />
S$ATC (004)<br />
• Abnormal termination.<br />
(Replaced by SH$ATC, see SH$STAT, for multiple SLOT<br />
banks .)<br />
S$CMS (002)<br />
• CMS activity.<br />
(See also SH$CMS, in SH$STAT.)<br />
S$DIS (001)<br />
• Disconnect at termination.<br />
F–20 7833 1568–004
Word Field Name Explanation<br />
017 S2 S$LMFC Logical message handler function code:<br />
NOSCH (01)<br />
• Normal LMW entry with a core buffer.<br />
CLMW (02)<br />
• Recursive call on LMW.<br />
Data Structures<br />
FBU (03)<br />
• MCA requires updating before scheduling but is in current<br />
main storage buffer.<br />
IBWENT (04)<br />
• Finish simple message (one call, one block).<br />
AUXRW (05)<br />
• Rewrite auxiliary data.<br />
LMWFNC (06)<br />
• Last LMW function.<br />
PMOR (06)<br />
• Recursive LMR call.<br />
MUPD (07)<br />
• MAD requires updating. Return here after obtaining first<br />
block in MR.<br />
SHRTCL (010)<br />
• Short calculation.<br />
017 S3 S$CMERR Code for error notification.<br />
017 S3 S$BANKSAV Save CORBNK number over some primitive calls.<br />
017 H2 S$PRCC Default recovery options.<br />
017 S4 S$PORCC Output recovery options (original).<br />
017 S5 S$PIRCC Input recovery options (original).<br />
020 W S$TRACE Trace, word 1.<br />
021 W S$TRACE Trace, word 2.<br />
022 W S$PRIM Working storage (primitive use only).<br />
023 W S$X8 Save area (X8) (primitive use only).<br />
024 W S$X9 Save area (X9) (primitive use only).<br />
025 W S$X10 Save area (X10) (primitive use only).<br />
7833 1568–004 F–21
Data Structures<br />
Word Field Name Explanation<br />
026 Q1 S$SKIP Offset to transaction code in input message (primitive use<br />
only) .<br />
026 Q2 S$STAT2 Additional status bits for this caller:<br />
S$BG (0400)<br />
• Background run activity.<br />
S$EM (0200)<br />
• Extended mode caller.<br />
S$LOW (0100)<br />
• System low.<br />
S$HIGH (040)<br />
• System high.<br />
S$USEPRIM (020)<br />
• Primitive caller.<br />
S$BNKSEL (010)<br />
• Core bank selected.<br />
026 S4 S$USECBN Location of the core bank number of the message being<br />
processed that is associated with the SLOT activity.<br />
026 S6 S$CMSN CMS number.<br />
027 H1 S$PROG Program number, if any, from the input message.<br />
H2 S$PIDX PID index for outbound open sessions.<br />
(Replaced by SH$PIDX for multiple SLOT banks.)<br />
H2 S$SLOTH Address of corresponding SLOT header.<br />
030 W S$RUNID Program run-id.<br />
F.5.1. AUDIT$ Packet<br />
The AUDIT$ packet, shown in Figure F–15, contains audit trail information. It overlays the<br />
SLOT extension area.<br />
00 reserved A$PTID reserved<br />
01 reserved<br />
02 reserved<br />
03 A$PSTS A$PFN reserved<br />
04 A$ACWLST<br />
06 A$ACW1<br />
07 A$ACW2<br />
Figure F–15. Audit$ Packet<br />
F–22 7833 1568–004
Word Field Name Explanation<br />
00 S3 A$PTID Audit number (application number)<br />
03 S1 A$PSTS Audit status<br />
S2 A$PFN Audit function (GW$)<br />
04 W A$ACWLST ACW list (points at S$APKT+5)<br />
Data Structures<br />
05 W A$ACW1 AUDIT header ACW (points at the AUDIT header in the MAD<br />
for message AUDITs—(MA$AHDR))<br />
06 W A$ACW2 ACW pointing to the text to AUDIT<br />
F.5.2. SLOT Extension Area<br />
The SLOT extension area, shown in Figure F–16, contains information about messages.<br />
It may be overlaid by the AUDIT$ packet.<br />
00 S$INTRTN A$PTID S$CBCTL<br />
*00 S$SESSTAT S$CMSREJ<br />
01 S$MIDSAV<br />
02 S$UPID unused S$AUXO S$AUXL<br />
03 S$MIDCB S$FN<br />
*03 S$TC1<br />
*03 S$QID<br />
*03 S$MID<br />
04 S$TC2 S$MDL<br />
05 S$MN<br />
*05 S$OUTQ S$UREC S$UMODE S$TYPE<br />
*05 S$OUTFN S$OUTSUB S$OUTPI<br />
Figure F–16. SLOT Extension Area<br />
Word Field Name Explanation<br />
00 H1 S$INTRTN Internal return address saved across recursive MCB calls<br />
Q1 S$SESSTAT Session status function returned by CMS<br />
Q2 S$CMSREJ Last CMS number tried on session open<br />
H2 S$CBCTL Buffer control address saved by DQMIC<br />
01 W S$MIDSAV Save area for MID on auxiliary rewrite<br />
7833 1568–004 F–23
Data Structures<br />
Word Field Name Explanation<br />
02 H1 S$UPID User specified PID (for store output or store pass-off<br />
functions)<br />
S5 S$AUXO Offset in words from the beginning of the request packet to<br />
the auxiliary information area<br />
S6 S$AUXL Length of the auxiliary information area in words<br />
03 S2 S$MIDCBN Location of the core bank number of the message being<br />
processed<br />
S3 S$FN MRF file number<br />
W S$TC1 ASCII transaction code (Part 1)<br />
W S$QID Queue item identifier (CMS receive output message)<br />
W S$MID MRF identifier of the message<br />
04 H1 S$TC2 ASCII transaction code (Part 2)<br />
H2 S$MDL Address of the multidestination list<br />
05 H1 S$MN Input message number<br />
H1 S$OUTQ Output message queuing information<br />
S1 S$OUTFN Output queue function<br />
S2 S$OUTSUB Output message queuing subfunction<br />
S3 S$OUTPI Output queue priority<br />
S4 S$UREC User-specified recovery options<br />
S5 S$UMODE User-specified mode<br />
S6 S$TYPE <strong>Message</strong> type (see MA$TYPE for values)<br />
F–24 7833 1568–004
F.5.3. DM$IOW Packet<br />
Data Structures<br />
The DM$IOW packet, shown in Figure F–17, contains information for Network Database<br />
Server. It partially overlays the QI$CON and QI$NIT packets.<br />
00 DM$FNR<br />
01 unused<br />
02 unused<br />
03 DM$STA DM$FUN<br />
04 DM$WDC DM$BUF<br />
*04 DM$ACW<br />
05 DM$SAD<br />
*05 DM$WRD<br />
06 unused<br />
07 unused<br />
10 DM$RTN/DM$PIX/DM$LNK<br />
*010 DM$LK1<br />
Figure F–17. DM$IOW Packet<br />
Word Field Name Explanation<br />
00 W DM$FNR Network Database Server file number<br />
03 S1 DM$STA Error status<br />
S2 DM$FUN Network Database Server function code<br />
04 W DM$ACW Network Database Server I/O access word<br />
H1 DM$WDC Word count<br />
H2 DM$BUF Buffer address<br />
05 W DM$SAD Sector address in file<br />
S1 DM$WRD Word read indicator<br />
010 W DM$RTN Save return for MRF$00 I/O<br />
W DM$PIX PIX word read up<br />
W DM$LNK Read up overflow on mass storage<br />
H2 DM$LK1 Link word area<br />
7833 1568–004 F–25
Data Structures<br />
F.5.4. TIP$XMIT Packet<br />
The TIP$XMIT packet, shown in Figure F–18, contains TIP security information. It partially<br />
overlays the QI$CON/QI$NIT packet.<br />
00 TXM$STATUS TXM$AKSTAT TXM$FUNC TXM$APNBR 0 TXM$PKTVER<br />
01 TXM$DESTPID TXM$SESID<br />
02 TXM$APNAM1<br />
03 TXM$APNAM2 0<br />
04 TXM$OMSGNBR TXM$OPID<br />
05 TXM$MRFID<br />
06 TXM$QID TXM$MSGNUM<br />
07 TXM$STID (word 1)<br />
010 TXM$STID (word 2)<br />
Figure F–18. TIP$XMIT Packet<br />
Word Field Name Explanation<br />
00 S1 TXM$STATUS Status<br />
S2 TXM$AKSTAT ACK Status<br />
S3 TXM$FUNC Function code<br />
S4 TXM$APNBR Application number<br />
S6 TXM$PKTVER Packet version<br />
01 H1 TXM$DESTPID Destination PID<br />
H2 TXM$SESID Session-id<br />
02 W TXM$APNAM1 Application name (first 4 characters)<br />
03 H1 TXM$APNAM2 Application name (last 2 characters)<br />
04 H1 TXM$OMSGNBR Original message number<br />
H2 TXM$OPID PID of origin<br />
05 W TXM$MRFID MRF-id<br />
06 H1 TXM$QID Queue item address<br />
H2 TXM$MSGNUM <strong>Message</strong> number 07<br />
07 W TXM$STID Step-id, word 1<br />
010 W TXM$STID Step-id, word 2<br />
F–26 7833 1568–004
F.6. MRF Allocation Descriptor (MAD)<br />
Data Structures<br />
A MAD, shown in Figure F–19, exists for each message built or read by the MCB. The<br />
MAD tables are linked off the SLOT of the activity that is building or reading the<br />
message. MADs exist only for the period of time a particular message is accessed by the<br />
MCB. Each MAD contains control information for handling its associated message, such<br />
as the current logical address within the message.<br />
00 MA$FL MA$BL<br />
01 MA$CBP MA$NDX MA$MCMS MA$ERR<br />
02 MA$SM1<br />
03 MA$SM2<br />
04 MA$SM3<br />
05 MA$SM4<br />
06 MA$PID MA$MN<br />
07 MA$ATYP MA$ASTYP MA$AHL MA$QID or MA$ARECSIZ<br />
*07 MA$AHDR<br />
010 MA$STID (word 1)<br />
011 MA$STID (word 2)<br />
012 MA$SLOT MA$RCC MA$AUDNO MA$TYPE<br />
013 MA$CMID<br />
014 MA$MID1<br />
015 MA$CURPOS MA$CUMCNT<br />
*015 MA$DATA<br />
016 MA$FLAG MA$FN MA$CYC MA$CBC<br />
017 MA$TXN<br />
*017 MA$HDR<br />
020 MA$CAHDR reserved MA$AU<br />
021 MA$TS<br />
Figure F–19. MRF Allocation Descriptor<br />
7833 1568–004 F–27
Data Structures<br />
If the MAD is associated with a nonrecoverable message, words 02 through 05 have a<br />
different format:<br />
MA$MID2 MA$MID3<br />
MA$MID4 MA$MID5<br />
MA$MID6 MA$MID7<br />
MA$MID8 MA$MIDOVF<br />
Word Field Name Explanation<br />
00 H1 MA$FL Forward link to next free MAD, if available, or link to next<br />
MAD chained off of this SLOT<br />
H2 MA$BL Backward link to prior free MAD, if available, or link to prior<br />
MAD chained off of this SLOT<br />
01 H1 MA$CBP Pointer to main storage buffer presently or removes, on<br />
writes, previously chained to this MAD<br />
S4 MA$NDX SAM index to next available segment allocation mask (SAM)<br />
entry<br />
S5 MA$MCMS The CMS number destination of a ROPL output message<br />
S6 MA$ERR Error code for error notification program<br />
02 W MA$SM1 SAMs for this recoverable message<br />
03 W MA$SM2<br />
04 W MA$SM3<br />
05 W MA$SM4 Link to overflow block if nonzero<br />
02 H1 MA$MID2 MIDs for this nonrecoverable message<br />
02 H2 MA$MID3<br />
03 H1 MA$MID4<br />
03 H2 MA$MID5<br />
04 H1 MA$MID6<br />
04 H2 MA$MID7<br />
05 H1 MA$MID8<br />
05 H2 MA$MIDOVF Zero or link to overflow chain of blocks<br />
06 H1 MA$PID PID for this message<br />
H2 MA$MN <strong>Message</strong> number for this message<br />
F–28 7833 1568–004
Word Field Name Explanation<br />
07 W MA$AHDR AUDIT header for this message<br />
S1 MA$ATYP AUDIT record type (021)<br />
S2 MA$ASTYP AUDIT record subtype:<br />
AT$MCA (01)<br />
• <strong>Message</strong> control area (MCA) block<br />
AT$OVFLO (02)<br />
• Overflow block<br />
Data Structures<br />
AT$HDR (03)<br />
• <strong>Message</strong> retention files (MRF) control file header audit<br />
subtype<br />
AT$SEG (04)<br />
• Segment control audit<br />
AT$SEGIPT (06)<br />
• MRF controls after idle point<br />
AT$TQERR (07)<br />
• TIP$Q error audit record subtype<br />
S3 MA$AHL Audit header length<br />
H2 MA$QID Queue item-id (output message only)<br />
H2 MA$ARECSI<br />
Z<br />
Audit record size<br />
010 W MA$STID Step identifier (2 words)<br />
012 H1 MA$SLOT Address of SLOT to which this MAD is attached<br />
S4 Address of<br />
SLOT to<br />
which this<br />
MAD is<br />
attached<br />
Recovery options for this message:<br />
MA$LCP (040)<br />
• Low core priority<br />
MA$RET (020)<br />
• Retrievable message<br />
MA$NUM (010)<br />
• <strong>Message</strong> to be numbered<br />
MA$AUD (004)<br />
• Audit the message text<br />
MA$RECV (002)<br />
• Recoverable message<br />
MA$DEF (001)<br />
• Deferred message<br />
7833 1568–004 F–29
Data Structures<br />
Word Field Name Explanation<br />
S5 MA$AUDNO AUDIT application number<br />
S6 MA$TYPE <strong>Message</strong> type:<br />
MT$NET (01)<br />
• Input message<br />
MT$CHK (02)<br />
• Checkpoint message<br />
MT$PAS (03)<br />
• Pass-off message<br />
MT$OP (04)<br />
• Output message<br />
MT$PUT (05)<br />
• Text stored by CMS Put Text function<br />
013 W MA$CMID MRF identifier of the current main storage buffer (Buffer<br />
pointed to by MA$CBP should contain this MID.)<br />
014 W MA$MID1 MRF identifier of block 1 of this message<br />
015 W MA$DATA Count data for this message<br />
H1 MA$CURPOS Current position pointer<br />
H2 MA$CUMCNT Cumulative data count for this message<br />
016 H1 MA$FLG Flags associated with this MAD:<br />
MA$SDM (0400000)<br />
• Single destination message<br />
MA$NCF (0200000)<br />
• Network control function<br />
MA$ACK (0100000)<br />
• Acknowledge message requested<br />
MA$REC (0040000)<br />
• Receive-only flag<br />
MA$RDL (0020000)<br />
• Redelivered message flag<br />
MA$OH (0010000)<br />
• Output header required for this message<br />
MA$ALT (0004000)<br />
• Alternate delivery flag for output header<br />
MA$MLH (0002000)<br />
• Rotary output<br />
MA$RCL (0000400)<br />
• Input PID PIX flag<br />
F–30 7833 1568–004
Word Field Name Explanation<br />
MA$CMS (0000200)<br />
• Flag for IMA<br />
MA$AUDFLG (0000100)<br />
• First audit flag for long recovery<br />
MA$TMA (0000040)<br />
• TMA error flag<br />
MA$CB (0000020)<br />
• First CB acquired<br />
MA$MCACK (0000010)<br />
• Check the MCA block<br />
MA$MS (0000004)<br />
• Mass storage read indicator<br />
MA$CBRD (0000002)<br />
• Read MCA on CMSACK<br />
MA$MULTI (0000001)<br />
• Multiactivity MAD<br />
Data Structures<br />
S4 MA$FN Relative MRF file number for MA$CMID and MA$MID1<br />
016 S5 MA$CYC MCA block cycle number<br />
S6 MA$CBC Cycle of current block<br />
017 Q1 MA$TXN Transaction code offset<br />
W MA$HDR Save area for output header routines<br />
020 Q1 MA$CAHDR Size in words of area occupied by the auxiliary information<br />
area, the multidestination list, or both<br />
H2 MA$AU Assurance unit for input messages<br />
021 W MA$TS MAD test-and-set cell for multiactivity message locking<br />
7833 1568–004 F–31
Data Structures<br />
F.7. Position Identifier (PID)<br />
The MCB information about PIDs is contained in tables in the PID$BNKn common banks.<br />
The following sections describe the table entries for PIDs and group PIDs. The location of<br />
the entry for a PID is found in the directory located in the RNG$BNKn common banks.<br />
The directory has the format shown in Figure F–20:<br />
00 reserved MR$CRNG<br />
01 MF$RBDI MF$RADR<br />
02 MF$BHIGH MF$BLOW<br />
03 MF$HIGH MF$LOW<br />
04 MF$BDI MF$ADR<br />
Words 3 and 4 repeated according to the number of PID ranges in configuration.<br />
Figure F–20. RNG$BNK Directory<br />
Word Field Name Explanation<br />
00 H2 MF$CRNG The number of range table entries in the current range table<br />
common bank<br />
01 H1 MF$RBDI The BDI for the next range table common bank<br />
H2 MF$RADR The address of the range table common bank<br />
02 H1 MF$BHIGH The highest PID number in the current range table common<br />
bank<br />
H2 MF$BLOW The lowest PID number in the current range table common<br />
bank<br />
03 H1 MF$HIGH The highest PID number in this range table entry<br />
H2 MF$LOW The lowest PID number in this range table entry<br />
04 H1 MF$BDI The BDI for the PID table comon bank that contains the PID<br />
entries for this range table entry<br />
H2 MF$ADR The address of the first PID entry for this PID range<br />
F–32 7833 1568–004
F.7.1. PID Entry<br />
Figure F–21 describes the table entries for a PID.<br />
00 MF$TS<br />
*00 MF$TSFLAG<br />
Data Structures<br />
01 MF$FLG MF$IMR MF$CMS MF$TCC<br />
02 MF$FLG MF$OMR reserved<br />
03 MF$CVL MF$XCVL<br />
04 MF$TXN MF$PROG<br />
05 MF$IMW MF$OMW<br />
06 MF$IFO MF$OFO<br />
Figure F–21. PID Entry<br />
Word Field Name Explanation<br />
00 W MF$TS Test-and-set (TS) cell<br />
S3 MF$TSFLAG User area of TS cell<br />
01 H1 MF$FLG PID flags:<br />
MF$RPID (01)<br />
• This is a real PID entry as opposed to a group<br />
PID entry<br />
MF$GPID (02)<br />
• This is a group PID entry<br />
MF$SACK (04)<br />
• Unintelligent input numbering<br />
MF$PIX (010)<br />
• PIX file I/O desired<br />
MF$NUM (020)<br />
• <strong>Message</strong> numbering desired<br />
MF$OH (040)<br />
• Unintelligent output numbering<br />
MF$INTEL (0100)<br />
• Intelligent message numbering<br />
MF$EXCL (0200)<br />
• Exclusive use<br />
MF$IMC (0400)<br />
• Input message control<br />
7833 1568–004 F–33
Data Structures<br />
Word Field Name Explanation<br />
MF$TRAIN (01000)<br />
• Training mode<br />
MF$TEST (02000)<br />
• Test mode<br />
MF$PSTPRC (04000)<br />
• Delivery notification requested<br />
MF$XNOT (010000)<br />
• Exclusive use notification<br />
MF$OUTOPN (020000)<br />
• Outbound open<br />
MF$OMC (040000)<br />
• Output message control<br />
MF$IPEXCL (0200000)<br />
• Input only exclusive use<br />
MF$ILK (0400000)<br />
• Input locked out<br />
01 S4 MF$IMR Relative MRF file number for input, pass-off, and checkpoint<br />
messages<br />
S5 MF$CMS CMS number with which a session is opened<br />
S6 MF$TCC Terminal class<br />
02 H1 MF$SCRN Value for P$SAVE<br />
S4 MF$OMR Relative MRF file number for output messages<br />
03 H1 MF$CVL Program number for conversational link<br />
H2 MF$XCVL Program number for exclusive use<br />
04 H1 MF$TXN Program number of session owner<br />
H2 MF$PROG Program number of exclusive use owner<br />
05 H1 MF$IMW Input PIX message wrap size<br />
H2 MF$OMW Output PIX message wrap siz<br />
06 H1 MF$IFO Input offset into PIX for this PID<br />
H2 MF$OFO Output offset into PIX for this PID<br />
Note: If no PIX files are configured, words 5 and 6 do not exist.<br />
F–34 7833 1568–004
F.7.2. Group PID Entry<br />
Figure F–22 describes the table entries for a group PID.<br />
00 MF$TS<br />
*00 MF$TSFLAG<br />
01 MT$FLG MF$PNT<br />
Data Structures<br />
02 MF$NXT MF$OMR reserved<br />
03 MF$GPBDI reserved<br />
04 reserved<br />
05 reserved<br />
06 reserved<br />
Figure F–22. Group PID Entry<br />
Word Field Name Explanation<br />
00 W MF$TS Test-and-set (TS) cell<br />
S3 MF$TSFLAG User area of TS cell<br />
01 H1 MF$FLG MF$GPID is the only valid PID flag value (see F.7.1)<br />
H2 MF$PNT Address of the entry in MF$GPD defining the members of this<br />
group PID (see F.7.3)<br />
02 H1 MF$NXT Next PID for rotary output<br />
S4 MF$OMR See F.7.1<br />
03 H1 MF$GPBDI The BDI of the common bank where this group PIDs list of<br />
real PID numbers can be found<br />
Note: If no PIX files are configured, words 5 and 6 do not exist.<br />
7833 1568–004 F–35
Data Structures<br />
F.7.3. Group PID Table<br />
The group PID table, shown in Figure F–23, contains a variable length entry for each<br />
group PID.<br />
00 number of real PIDs PID<br />
01 PID PID<br />
02 PID 0/<br />
(If even number of PIDS in group)<br />
03 number of real PIDs PID<br />
04 PID PID<br />
05<br />
..<br />
..<br />
F.8. PID Index File (PIX)<br />
Figure F–23. Group PID Table<br />
PIX files provide message recall. Since an entire message is linked together, it can be<br />
retrieved by locating only the first block. The first block is located using the MRF<br />
identifier (MID). To recall a message, the originating and destination PID must be<br />
associated with an MRF that has an associated PIX file.<br />
These associations are created at system generation time, using the P$ID and M$FILE<br />
statements. Therefore, an area is dedicated in the PIX file for each PID, based on the<br />
configuration. The size of the area set aside is also based on the configuration. It should<br />
be noted that each PID can recall a different maximum number of messages. This is<br />
called the message wrap size. This mechanism is controlled in the MCB by the PID entry<br />
table. One entry per PID contains both a message wrap size and the file offset into the<br />
PIX file for input and output. The associated MRF file numbers for input and output also<br />
exist there (see F.7.1). The PID and the message number are the only information<br />
necessary to recall the desired message. The requested message number is divided by<br />
the wrap size and the resulting remainder is the relative offset into the area set aside for<br />
this PID. Using this calculated offset, plus the file offset, the 1-word MID entry is read. If<br />
the MID does not identify the proper MCA block, the MRF file has wrapped and the<br />
message is no longer retrievable.<br />
F–36 7833 1568–004<br />
...<br />
...
F.9. Statistics Table (ST$TBL)<br />
Data Structures<br />
The statistics table, shown in Figure F–24, collects information about MCB operations.<br />
00 STMCBID<br />
01 STATSON STTBSZ<br />
02 STMBDI STMBSZ<br />
03 STDIR STUDBASE<br />
04 STCMSN reserved<br />
05<br />
STGENID<br />
010 reserved<br />
011 reserved<br />
012 reserved<br />
013 reserved<br />
014 reserved<br />
015 STCBPLF STCBPLA<br />
016 STSLTS STMADS<br />
017 STMSGI<br />
020 STMSGO<br />
021 STMSGC<br />
022 STMSGP<br />
023 STROPLO<br />
024 STCBAS<br />
025 STCBRL<br />
026 STOHPB 0<br />
027 STCBNR<br />
030 STADTW<br />
031 STSEGW<br />
032 STUSER<br />
033 STNOMSG<br />
034 STCMAI<br />
035 STCMCN<br />
7833 1568–004 F–37
Data Structures<br />
036 STCMRQ<br />
037 STCMAK<br />
040 STCMNA<br />
041 STBRMR<br />
042 STTXIN<br />
043 STCMST<br />
044 STTSEN<br />
045 STTPAS<br />
046 STTCHK<br />
047 STTENQ<br />
050 STTREC<br />
051 STMISC<br />
052 STMRFR<br />
053 STMRFW<br />
054 STSAM4<br />
055 STMRF (1)<br />
..<br />
055+N STMRF (N)<br />
Figure F–24. Field Definitions (EQUF) for Statistics<br />
F–38 7833 1568–004<br />
...
Name Word/Field Description<br />
STMCBID 0,,W MCB internal identifier.<br />
STATSON 1,,H1 Value 1 = MCB statistics ON<br />
Value 0 = MCB statistics OFF<br />
STTBSZ 1,,H2 Fixed table size in words<br />
Data Structures<br />
When value = 0, words 0 through 016 only are used<br />
STMBDI 2,,H1 Main MCB bank BDI (MCBBNK)<br />
STMBSZ 2,,H2 Main MCB bank size in words<br />
STDIR 3,,H1 Directory address<br />
STUDBASE 3,,H2 Configured UDBASE<br />
STCMSN 4,,H1 CMS number used by the MCB (MCBNUM)<br />
reserved 4,,H2<br />
STGENID 5,,W - 7,,W COMUS generation identifier<br />
reserved 010,,W - 014,,W<br />
STCBPLF 015,,H1 Free core buffer control address<br />
STCBPLA 015,,H2 Active control buffer address<br />
STSLTS 016,,H1 SLOT control address<br />
STMADS 016,,H2 MAD control address<br />
STMSGI 017,,W Number of CMS input messages<br />
STMSGO 020,,W Number of output messages<br />
STMSGC 021,,W Number of checkpoint messages<br />
STMSGP 022,,W Number of pass-off messages<br />
STROPLO 023,,W Number of ROPL output messages<br />
STCBAS 024,,W Number of main storage buffer assignments<br />
STCBRL 025,,W Number of main storage buffer releases<br />
STOHPB 026,,H1 Active chain overhead I/O for nonrecoverable full buffers<br />
and all partial buffers<br />
STCBNR 027,,W Number of messages found in main storage buffers<br />
rather than MRF<br />
STADTW 030,,W Number of audit trail requests<br />
STSEGW 031,,W Number of MRF control writes<br />
STUSER 032,,W Number of user errors detected<br />
STNOMSG 033,,W Number of no input message errors<br />
STCMAI 034,,W Number of CMS initializations<br />
STCMCN 035,,W Number of CMS input message cancels<br />
STCMRQ 036,,W Number of CMS output message requeue<br />
7833 1568–004 F–39
Data Structures<br />
Name Word/Field Description<br />
STCMAK 037,,W Number of CMS acknowledgments<br />
STCMNA 040,,W Number of CMS negative acknowledgments<br />
STBRMR 041,,W Number of MRF space releases<br />
STTXIN 042,,W Number of transaction initializations<br />
STCMST 043,,W Number of CMS message store functions<br />
STTSEN 044,,W Number of send output message functions<br />
STTPAS 045,,W Number of pass-off input message functions<br />
STTCHK 046,,W Number of send checkpoint message functions<br />
STTENQ 047,,W Number of enqueue message functions<br />
STTREC 050,,W Number of message receive functions<br />
STMISC 051,,W All other functions<br />
STMRFR 052,,W Number of message block reads<br />
STMRFW 053,,W Number of recoverable MRF writes<br />
STSAM4 054,,W Number of times fourth SAM is used<br />
STMRF 055,,W Start of write counters for each (N) MRF file<br />
F–40 7833 1568–004
Appendix G<br />
MCB Open Look<br />
MCB Open Look applies the software engineering concepts of reusability, modularity,<br />
information hiding, and data abstraction. Open Look allows you to write MCB application<br />
programs in a particular UCS language without having to tailor that language to a specific<br />
MCB application environment. A program can call an MCB library of functions in a native<br />
language, thereby simplifying the writing of the program. This function library, which can<br />
be edited, contains functions tailored for the specific application environment in which<br />
the program runs.<br />
<strong>Unisys</strong> provides the function library in the MCB installation file with element name<br />
UCMCBLIB. You can edit this file in this library to suit your site needs. An example of<br />
linking commands is provided in element UCLINK.<br />
Figure G–1 illustrates the relation between a program written in C and its calls to<br />
functions in the UC function library.<br />
7833 1568–004 G–1
MCB Open Look<br />
C language<br />
program call<br />
(includes files<br />
copied from<br />
the release<br />
tape)<br />
Function<br />
called in UC<br />
function<br />
library<br />
#include /* MCB packet definition */<br />
#include <br />
#include <br />
#include <br />
#include <br />
main()<br />
{<br />
status = 0;<br />
number_of_chars = 5000;<br />
/* */<br />
status = read_message(&number_of_chars, &chars_read, text_area, &pid);<br />
if (status != 0)<br />
{<br />
printf("Bad MCB status on message read: %o\n",status);<br />
}<br />
.<br />
.<br />
.<br />
/* */<br />
/************************************************************************/<br />
/* READ MESSAGE */<br />
/************************************************************************/<br />
/* */<br />
int read_message (int *bytes_to_read, int *bytes_read,<br />
char *message_buffer, int *message_address)<br />
{<br />
_mcb_packet_type mcbpkt;<br />
int mcb_status;<br />
/* */<br />
zero (20,&mcbpkt);<br />
/* */<br />
mcbpkt.mcb_std_pkt.p_length = *bytes_to_read;<br />
mcbpkt.mcb_std_pkt.p_func = TRINIT$$;<br />
mcbpkt.mcb_std_pkt.p_aux = 63;<br />
mcbpkt.mcb_std_pkt.p_flags = 4;<br />
/* */<br />
mcb_ent (&mcbpkt, &mcb_status, message_buffer);<br />
/* */<br />
*message_address = mcbpkt.mcb_std_pkt.p_pid;<br />
*bytes_read = mcbpkt.mcb_std_pkt.p_ml;<br />
*bytes_to_read = mcbpkt.mcb_std_pkt.p_length;<br />
/* */<br />
return mcb_status;<br />
}<br />
/* */<br />
Figure G–1. Example of C Language Call to UC Function Library<br />
To run the program in a particular application environment, an executable zoom needs to<br />
be created by statically linking these files:<br />
• The file of the compiled program to the file of the compiled function library<br />
• The file of the compiled function library to the MCB application group.<br />
Figure G–2 shows the files linked as an executable zoom.<br />
The program you are compiling from must contain the files required to run as an Open<br />
Look program. Before compiling and linking a program as an executable ZOOM, you<br />
G–2 7833 1568–004
MCB Open Look<br />
must copy these files from either the utility file on the release tape or the installed MCB<br />
files. The C language call in Figure G–1 shows the required files copied into the program.<br />
Program<br />
(EXAMPLE-UC)<br />
Static Link<br />
MCB Function<br />
Library<br />
(UCMCBLIB)<br />
Static Link<br />
Executable ZOOM<br />
Figure G–2. Structure of an MCB Open Look Executable ZOOM<br />
MCB application<br />
group linked to<br />
library search chain<br />
(sys$lib$*app$N)<br />
7833 1568–004 G–3
MCB Open Look<br />
G–4 7833 1568–004
Appendix H<br />
Related Product Information<br />
Application Development Solutions Application Development Programming Guide<br />
(7831 4077). <strong>Unisys</strong> Corporation.<br />
Application Development Solutions C Compiler Programming Reference Manual Volume<br />
1: C Language and Library (7831 0422). <strong>Unisys</strong> Corporation.<br />
Application Development Solutions C Compiler Programming Reference Manual Volume<br />
2: Compiler and System Interface (7831 0430). <strong>Unisys</strong> Corporation.<br />
Application Development Solutions COBOL Compiler Programming Reference Manual<br />
Volume 2: Compiler and System Interface (7831 0455). <strong>Unisys</strong> Corporation.<br />
Application Development Solutions FORTRAN Compiler Programming Reference Manual<br />
Volume 1: FORTRAN Statements (7831 0489). <strong>Unisys</strong> Corporation.<br />
Application Development Solutions FORTRAN Compiler Programming Reference Manual<br />
Volume 2: Compiler and System Interface (7830 7477). <strong>Unisys</strong> Corporation.<br />
ClearPath Enterprise Servers Security Administration for ClearPath OS 2200 Help<br />
(7862 1760). <strong>Unisys</strong> Corporation.<br />
Enterprise Network Database Server for ClearPath OS 2200 Administration and <strong>Support</strong><br />
Guide (7830 7568). <strong>Unisys</strong> Corporation.<br />
OS 2200 Communications Management System (CMS 1100) Operations Reference<br />
Manual (7831 5694). <strong>Unisys</strong> Corporation.<br />
OS 2200 Communications Management System (CMS 1100) Programming Reference<br />
Manual (7831 5827). <strong>Unisys</strong> Corporation.<br />
OS 2200 Exec System Software Administration Reference Manual (7831 0323). <strong>Unisys</strong><br />
Corporation.<br />
OS 2200 Exec System Software Executive Requests Programming Reference Manual<br />
(7830 7899). <strong>Unisys</strong> Corporation.<br />
OS 2200 Exec System Software Installation and Configuration Guide (7830 7915). <strong>Unisys</strong><br />
Corporation.<br />
OS 2200 Integrated Recovery System Conceptual Overview (7830 8186). <strong>Unisys</strong><br />
Corporation.<br />
7833 1568–004 H–1
Related Product Information<br />
OS 2200 <strong>Message</strong> <strong>Control</strong> <strong>Bank</strong> (MCB) Administration and Operations Guide<br />
(7833 1550). <strong>Unisys</strong> Corporation.<br />
Previously titled and numbered OS 2200 <strong>Message</strong> <strong>Control</strong> <strong>Bank</strong> (MCB) Installation Guide<br />
(7430 0476) and OS 2200 <strong>Message</strong> <strong>Control</strong> <strong>Bank</strong> (MCB) Operations Reference Guide<br />
(7833 1550).<br />
OS 2200 Meta-Assembler (MASM) Programming Reference Manual (7830 8269). <strong>Unisys</strong><br />
Corporation.<br />
OS 2200 Partitioned Applications Conceptual Overview (7831 0927). <strong>Unisys</strong> Corporation.<br />
OS 2200 Partitioned Applications Planning, Installation, and Operations Guide<br />
(7831 0935). <strong>Unisys</strong> Corporation.<br />
OS 2200 Transaction Processing Administration and Operations Reference Manual<br />
(7830 7881). <strong>Unisys</strong> Corporation.<br />
OS 2200 Transaction Processing Programming Reference Manual (7830 7402). <strong>Unisys</strong><br />
Corporation.<br />
OS 2200 Universal Compiling System (UCS) COBOL Programming Reference Manual<br />
Volume 1, COBOL Statements (7831 0448). <strong>Unisys</strong> Corporation.<br />
H–2 7833 1568–004
Glossary<br />
A<br />
access control word (AWC)<br />
An ACW describes the location and length of data.<br />
acknowledgment (ACK)<br />
A system response, expressed as ACK, that indicates to the sender of a message that<br />
the message was received. Compare with negative acknowledgment.<br />
action code<br />
See transaction code.<br />
activity<br />
ACW<br />
AFCB<br />
The basic entity in a multiprogramming environment, as implemented on OS 2200 hosts<br />
(see SWL).<br />
See access control word.<br />
See alternate file common bank.<br />
alternate file common bank (AFCB)<br />
A non-Exec component of Partitioned Applications that lets components such as<br />
<strong>Message</strong> <strong>Control</strong> <strong>Bank</strong> (MCB) and UDS register, send heartbeats to the monitor run, and<br />
deregister with the Partitioned Applications system through the application interface bank<br />
request packet. The AIB, along with the monitor run, forms the Automatic Recovery of<br />
Components (ARC) feature. In other contexts, AFCB is a bank you can install or update<br />
after system generation and library boot and that several programs can share<br />
simultaneously.<br />
application group<br />
An integrated recovery entity that consists of a database, an audit trail, a data dictionary<br />
(optional), and message retention files (optional). Integrated recovery is provided only for<br />
users of an application group. Multiple application groups can be configured on one host.<br />
7833 1568–004 Glossary–1
Glossary<br />
B<br />
backup host<br />
A host that is not actively connected to a shared application group until a system failure<br />
occurs on the production host. When this happens, the Partitioned Applications software<br />
installed on the backup host attaches the backup host to the application group and also<br />
recovers the failing host. The backup host takes over for the failed host as soon as the<br />
application group is successfully attached. The backup host can process non-shared<br />
batch and demand programs while the production host of a Partitioned Applications<br />
system is running.<br />
bank descriptor index (BDI)<br />
An index into the bank descriptor table (a data structure defined by the Exec). Practically,<br />
BDIs are the equivalent of symbolic bank names. Program BDIs are assigned by the<br />
Collector, whereas configured common bank BDIs are managed by the Exec, COMUS,<br />
and the systems analyst.<br />
bank descriptor register (BDR)<br />
One of four registers that specify the upper and lower relative address limits and the<br />
base address of the bank.<br />
BATCH-CONECT<br />
A TIP program type. Programs of this type are scheduled by way of the normal Exec<br />
@XQT command. They gain access to TIP facilities by ”connecting” to the online system<br />
by way of the CONECT primitive.<br />
BDI<br />
BDR<br />
buffer<br />
C<br />
CAT<br />
CCB<br />
See bank descriptor index.<br />
See bank descriptor register.<br />
A storage area in random access memory where a computer temporarily places data until<br />
the data can be transferred to a peripheral device or the next phase of operations. By<br />
removing data from the immediate processing environment, buffers free the computer to<br />
continue processing other data.<br />
Communications Management System (CMS 1100) activity table. An MCB data structure<br />
used as a cross-reference to coordinate message processing by different CMS 1100<br />
activities.<br />
See configured common bank.<br />
CMS 1100<br />
See Communications Management System.<br />
Glossary–2 7833 1568–004
Glossary<br />
Collector<br />
A <strong>Unisys</strong> system processor that joins relocatable elements into an absolute element.<br />
COMMIT<br />
An action to end a recoverable step; that is, update the database, write updates to the<br />
audit, and forward deferred messages.<br />
Communications Management System (CMS 1100)<br />
The real-time program that interfaces the communications network with the MCB.<br />
CMS 1100 resides on a network host and handles all communications processing<br />
associated with that host.<br />
COMPOOL<br />
Communications <strong>Message</strong> Pool; an OS 2200 message-handling component developed<br />
before MCB. COMPOOL does not support integrated recovery of message processing<br />
and data processing.<br />
COMUS<br />
CONECT<br />
An interactive software installation and maintenance program sites used to install<br />
OS 2200 products and Exec features.<br />
The primitive entry point (and element name) used to provide batch programs an access<br />
to TIP facilities.<br />
configured common bank (CCB)<br />
A common bank whose template resides on the operating system boot tape.<br />
D<br />
DAP<br />
Abbreviation for Dump Analysis Procedures.<br />
Data Manipulation Language (DML)<br />
A standardized programming language used with data management software such as<br />
Network Database Server.<br />
DCA<br />
DID<br />
See Distributed Communications Architecture.<br />
A device identifier, or device index.<br />
Display Processing System (DPS 2200)<br />
A software product for OS 2200 systems that provides terminal presentation control for<br />
application programs.<br />
Distributed Communications Architecture (DCA)<br />
The logical communications network structure supported by CMS 1100 software on<br />
2200 Series systems and OS 2200 systems.<br />
7833 1568–004 Glossary–3
Glossary<br />
DML<br />
DPS<br />
E<br />
ER<br />
F<br />
FIFO<br />
See Data Manipulation Language.<br />
See Display Processing System.<br />
Abbreviation for Executive request (ER).<br />
Acronym for first in, first out.<br />
FILESETUP<br />
An absolute element that catalogs and registers MCB files.<br />
G<br />
GN file<br />
H<br />
host<br />
A utility file that contains elements of released software, to control system generation,<br />
and other elements for site-configuration stream generation statements (SGS).<br />
A medium to large central processor attached to a network. Also referred to as an end<br />
system. The host is generally dedicated to data processing functions, such as executing<br />
application or system programs, rather than data communications functions.<br />
Architecturally, there is no distinction between a DCA host and a DCA terminal, since<br />
both contain a termination system, although of vastly differing powers. In SNA, a host is<br />
defined as an SNA node that contains a PU Type 5. See also backup host, Partitioned<br />
Application host.<br />
host mass storage (HOSTMS)<br />
A process that provides access to mass storage on the OS 2200 host to other network<br />
nodes. Each node can have one or more sessions (logical connections) to the host mass<br />
storage process. One or more files can be in use by each session.<br />
I<br />
initialization<br />
The process of reading a tape containing a database and storing it on disk. This is similar<br />
to loading, except that initialization is done on a newly-installed system.<br />
Glossary–4 7833 1568–004
Glossary<br />
integrated recovery application group<br />
An entity configured by a CMS 1100 APPLICATION network definition statement with an<br />
application number from 1 to 9. This entity is also configured with the Exec and MCB. It<br />
is a TIP-oriented application consisting of an MCB, a set of transaction programs that use<br />
MCB interfaces and step control logic, and a set of VALTABs that specify the<br />
transactions.<br />
integrated recovery system<br />
The combination of OS 2200 features that protects users against the effects of hardware<br />
and software failures. Integrated recovery encompasses the database recovery needs of<br />
the Exec, TIP file control, and Universal Database <strong>Control</strong>. It also encompasses the<br />
message recovery needs of MCB and CMS 1100. The Exec components of integrated<br />
recovery are step control, audit control, and TIP file control. Integrated recovery<br />
components that are not part of the Exec are IRU, Universal Database <strong>Control</strong>, and MCB.<br />
IMA<br />
Abbreviation for initial message analysis.<br />
Integrated Recovery Utility (IRU)<br />
A command-driven utility used after a system or application group failure to maintain the<br />
integrity and availability of files, databases, and transaction messages.<br />
IRU<br />
L<br />
See Integrated Recovery Utility.<br />
last block indicator (LBI)<br />
An interface packet flag, located in the P$FLAGS field, that indicates MCB read the last<br />
block of a message.<br />
LBI<br />
LBJ<br />
See last block indicator.<br />
See load bank and jump.<br />
load bank and jump (LBJ)<br />
A hardware instruction that specifies a BDI, a BDR, and an address. LBJ causes a new<br />
bank to be based and program execution to begin at a new memory address.<br />
long recovery<br />
A last-resort Integrated Recovery Utility (IRU) procedure that rebuilds the database from<br />
the after-looks on the audit trail, starting with reloading the most recent database dump<br />
for all steps that were completed before the failure occurred. Long recovery of messages<br />
involves rebuilding the MCB message retention files from the audit trail.<br />
7833 1568–004 Glossary–5
Glossary<br />
M<br />
MAD<br />
MASM<br />
See MRF allocation descriptor. An MCB internal data structure that exists only while a<br />
message is being read or built by MCB. The MAD contains MCB processing information<br />
such as message type, recovery options, SAMs, MID, and audit information for the<br />
current message.<br />
Acronym for Meta-Assembler. The OS 2200 assembly language.<br />
master file directory (MFD)<br />
A directory that resides on local (nonshared) mess storage and contains cataloged files<br />
that can be assigned and accessed only by a particular host. See also SHARED master<br />
file directory.<br />
MCA<br />
MCB<br />
See message control area.<br />
See <strong>Message</strong> <strong>Control</strong> <strong>Bank</strong>.<br />
MCB command<br />
An MCB operations command. Most action commands can be entered either from the<br />
OS 2200 system console or from a privileged network terminal. Some action commands<br />
are restricted to the OS 2200 console only.<br />
message control area (MCA)<br />
An internal data structure built by MCB to retain control information pertinent to a<br />
message during MCB processing. A unique MCA exists for each message until MCB<br />
completes processing of that message.<br />
<strong>Message</strong> <strong>Control</strong> <strong>Bank</strong> (MCB)<br />
A common bank, provided as a separately packaged feature, that works with the Exec to<br />
provide queuing and recovery of input messages to CMS 1100 from user terminals,<br />
pass-off messages between transaction programs, and output messages from the<br />
programs. CMS 1100, TIP file control, and Exec step control use MCB for message<br />
recovery and transaction scheduling. MCB maintains its own message storage area.<br />
message existence time<br />
The time a message resides in the MCB. For an input, this is measured from the time<br />
CMS 1100 starts to store the input to the time the application program releases the<br />
message. For an output, this is measured from the time the application program starts to<br />
store the message to the time CMS 1100 acknowledges successful delivery.<br />
message parameter area (MPA)<br />
The 16-word header of a logical COMPOOL record. It contains information required by<br />
CMS 1100 and TIP to route and process the message.<br />
Glossary–6 7833 1568–004
Glossary<br />
message rate<br />
The number of messages processed divided by some time interval (usually seconds). For<br />
example, if you process 6000 messages over a 60-second period, your message rate is<br />
100 per second.<br />
message recovery<br />
The process of recovering input and output messages from the communications<br />
network. See also long recovery.<br />
message retention file (MRF)<br />
A mass storage file defined by MCB configuration. MCB uses MRFs to store in-process<br />
recoverable messages for recovery in the event of a system failure. MCB can access<br />
multiple MRFs, one of which (MRF 0/ ) can be used as an overflow area for<br />
nonrecoverable messages.<br />
MID<br />
MPA<br />
MRF<br />
See MRF identifier.<br />
See message parameter area.<br />
See message retention file.<br />
MRF allocation descriptor (MAD)<br />
An MCB internal data structure that exists only while a message is being read or built by<br />
MCB. The MAD contains MCB processing information such as message type, recovery<br />
options, SAMs, MID, and audit information for the current message. See also PID index<br />
file (PIX).<br />
MRF identifier (MID)<br />
A one-word unique identifier for each block of a message retention file (MRF). MCB uses<br />
the MID to locate blocks associated with a message.<br />
Multi-Host File Sharing (MHFS)<br />
An Exec feature that allows file sharing between multiple OS 2200 hosts. It associates<br />
the files with a local or shared directory and handles the communications needed for file<br />
sharing across multiple host systems. MHFS is required for interhost recovery in a<br />
Partitioned Applications configuration.<br />
N<br />
negative acknowledgment (NAK)<br />
A system response, expressed as NAK, that indicates to the sender of a message that<br />
the message was not properly received or could not be received. Compare with<br />
acknowledgment (ACK).<br />
NCCB<br />
See nonconfigured common bank.<br />
7833 1568–004 Glossary–7
Glossary<br />
network<br />
A group of hardware and software components that are physically and logically linked,<br />
and that interact according to established protocols. Network functions are determined<br />
by the types of cooperating application systems within the network.<br />
Network Database Server<br />
A software product for OS 2200 systems that provides database control and that may<br />
use the TIP file control component of OS 2200.<br />
nonconfigured common bank (NCCB)<br />
A common bank whose template resides in a user-defined file. The file name is known to<br />
the operating system at system boot time.<br />
O<br />
output transmission time<br />
Output transmission time is the time between the program sending an output message<br />
and CMS 1100’s acknowledgment of delivery.<br />
P<br />
Partitioned Applications<br />
A grouping of software features that extends the availability of 1100 and 2200 Series<br />
hardware and software. Each host functions both as a production host and a backup host<br />
for switchable application groups. Each host has its own set of switchable application<br />
groups running at the same time. If a switchable application group fails, the system<br />
automatically recovers it onto the backup host without interrupting the end user. If a<br />
critical component fails but the host remains up, the system automatically recovers the<br />
component on the same host and processing continues. Partitioned Applications also<br />
allows the operator to switch an application group from the backup host to the host on<br />
which it was originally running without bringing down the host or other application<br />
groups. The Partitioned Applications software features are PAEXEC, ARC, MHFS, and<br />
Unit Duplexing. Beginning with SB4R2, Partitioned Applications replaces Hot-Standby.<br />
Partitioned Applications host<br />
A backup host or a production host in the Partitioned Applications system. Partitioned<br />
Applications is a dual-host system (for example two 1100/92 systems) in which one host<br />
is the production host and the other is a backup host. The backup host can process batch<br />
and demand calls while the production host is running TIP, batch, and demand runs. Each<br />
host has its own operating system, mass storage, and shared mass storage.<br />
PBR<br />
PCF<br />
PCT<br />
See product build routine.<br />
See permanent correction file.<br />
See program control table.<br />
Glossary–8 7833 1568–004
Glossary<br />
permanent correction file (PCF)<br />
A file containing code that is applied to a software component during generation to<br />
permanently correct or upgrade the software.<br />
PID<br />
See position identifier (logical terminal-id).<br />
PID index file (PIX)<br />
A file containing information that MCB uses to recall messages associated with specific<br />
PIDs. The PIX is defined by MCB configuration. See also MRF allocation descriptor.<br />
PIX<br />
PMD<br />
See PID index file.<br />
See postmortem dump.<br />
position identifier (PID)<br />
A numeric identifier that provides the location of terminals in a network. PIDs are known<br />
to both APPs and CMS 1100. Through the use of PIDs, APPs identifies a terminal to<br />
CMS 1100 and vice versa.<br />
postmortem dump<br />
A diagnostic dump created by the operating system when a program aborts or is<br />
otherwise terminated.<br />
primitive<br />
A TIP primitive is an assembler language subroutine written to provide an interface to the<br />
TIP/Exec ERs.<br />
private file<br />
An unowned private file is private by project-id or account number. It may have read/write<br />
keys, or read-only/write-only attributes. An owned private file is private by user-id. The<br />
user-id of the person who cataloged the file (or started a batch run) is required for access<br />
to an owned private file.<br />
product build routine (PBR)<br />
A routine that creates software product generation runstreams.<br />
program control table (PCT)<br />
The PCT is a bank whose data structure is defined, created, and maintained by the<br />
operating system. The PCT contains information about the run.<br />
public file<br />
A public file may be accessed by anyone.<br />
Q<br />
QID<br />
See queue item identifier.<br />
7833 1568–004 Glossary–9
Glossary<br />
queue item identifier (QID)<br />
A unique one-word identifier placed in the CMS 1100 output message queue by Exec<br />
step control to identify a pending output message.<br />
R<br />
recovery<br />
There are several different references to recovery in this manual:<br />
• Database recovery provides auditing and rollback features.<br />
• Recoverable steps are an execution entity to accomplish database recovery.<br />
• Recoverable files are those files that are to be audited and whose updates can be<br />
rolled back.<br />
• System recovery is the recovery of the Exec system.<br />
• <strong>Message</strong> recovery, supported only by MCB.<br />
See also long recovery.<br />
recovery bank protection<br />
A feature that enables only the Integrated Recovery Utility (IRU) to access the long and<br />
short recovery banks. Recovery bank protection discriminates between various MCB<br />
callers while accessing these banks. This feature is enabled only when common bank<br />
protection is configured (CBSECURITY=YES).<br />
Remote Symbiont Interface (RSI)<br />
The interface employed by communications terminal handler programs whereby input<br />
and output images are exchanged with the operating system to support remote<br />
application programs.<br />
resilient<br />
RL<br />
RSI<br />
S<br />
SAM<br />
Resilient refers to the ability of a software component to recover from a failure within the<br />
system. For example, if the MCB is in a resilient system, PID session information is<br />
saved on mass storage. The information can then be used after a system or component<br />
failure to restore PID sessions and continue network message processing at the point<br />
before the failure.<br />
An Exec system console keyin for reloading a common bank.<br />
See Remote Symbiont Interface.<br />
See segment allocation mask.<br />
Glossary–10 7833 1568–004
Glossary<br />
segment allocation mask (SAM)<br />
An MCB internal data structure that records the block count for each segment used by a<br />
message in a message retention file (MRF).<br />
SEXEM<br />
SGS<br />
The name of the TIP contingency-handling function that produces a program dump.<br />
See stream generation statement.<br />
shared application group<br />
A feature that enables multiple hosts to access an application group to satisfy availability<br />
and capacity requirements. It also enables multiple hosts to process a single application<br />
group simultaneously, thereby increasing the potential system power available to an<br />
application group.<br />
shared file<br />
A file in a Partitioned Applications environment that resides on shared mass storage so<br />
multiple hosts can access it. Each shared file is cataloged in the SHARED master file<br />
directory with a directory-id of SHARED# and a file name syntax of<br />
SHARED*qualifier-filename.<br />
shared mass storage<br />
The mass storage files in a Resilient System configuration that are cataloged in the<br />
shared master file directory so multiple hosts can concurrently access them. Each host<br />
has an independent physical connection to shared mass storage.<br />
SHARED master file directory<br />
An alternative to the STD (standard) master file directory (MFD). The SHARED MFD<br />
resides on shared mass storage and contains only cataloged files common to all hosts in<br />
the Multi-Host File Sharing (MHFS) environment. All hosts in an MHFS system can<br />
assign and access the files cataloged in the SHARED MFD.<br />
shared resource<br />
A resource (in Multi-Host Transaction Processing terms) that is accessible simultaneously<br />
by all hosts in a loosely-coupled system. Examples of shared resources are the database<br />
files of the shared directory.<br />
short recovery<br />
The Integrated Recovery Utility (IRU) process that recovers Exec components, Universal<br />
Database <strong>Control</strong>, and MCB after a system or component failure. The IRU coordinates<br />
with automatic Exec recovery processes (step control and TIP file control recovery) to<br />
restore all recoverable data and message processing associated with a single application<br />
group to its state before the failure. The short recovery process is started by executing<br />
the IRU SHORT command.<br />
site-developed code<br />
All code written and controlled by users. This includes applications programs and<br />
site-developed code in any of the communications network processors. Formerly called<br />
user-own-code<br />
7833 1568–004 Glossary–11
Glossary<br />
site identifier (SID)<br />
An optional one-character to eight- character terminal identifier (can be a mnemonic) used<br />
in addition to the position identifier (PID), a numeric identifier required in network<br />
configurations. Also referred to as site identifier.<br />
step<br />
A recoverable program entity that is accessing recoverable files to accomplish auditing<br />
and rollback features.<br />
step control<br />
An Exec component of the integrated recovery system that records and updates the<br />
current state of all steps accessing the database within an application group. Step control<br />
provides central control information for the other integrated recovery components (audit<br />
control end TIP file control). Step control includes Exec recovery, an option that initializes<br />
the application group.<br />
step recovery<br />
The recovery of a unit of work in the Integrated Recovery environment.<br />
stream generation statement (SGS)<br />
The instructions entered during installation and used by the symbolic stream generator<br />
(SSG) and the OS 2200 Exec to generate a system. SGSs are used to configure and<br />
generate the MCB product.<br />
SSG<br />
See Symbolic Stream Generator.<br />
switch list<br />
A data structure defined and maintained by the operating system. The SWL address<br />
uniquely identifies an activity within a single host.<br />
SWL<br />
See switch list.<br />
Symbolic Stream Generator (SSG)<br />
A general-purpose OS 2200 language processor that creates and manipulates symbolic<br />
streams. By using the SSG, temporary correction files (TCF) and permanent correction<br />
files (PCF) can be updated, merged with another set of corrections, printed in the<br />
symbolic output stream, or reinserted in the original input file for use in future<br />
programming. The SSG creates a runstream that, when executed, generates software on<br />
an OS 2200 system. The SSG processor is an integral component of the MCB product<br />
generation procedure.<br />
system generation log (SGL)<br />
A document created by COMUS during product generation. SGLs contain data related to<br />
the product generation.<br />
system installation log (SIL)<br />
A document created by COMUS during product installation. SILs contain data related to<br />
product installation, verification of installation, and product deinstallation.<br />
Glossary–12 7833 1568–004
Glossary<br />
system registration log (SRL)<br />
A document created by COMUS when you enter the REGISTER command. SRLs contain<br />
data related to a product release master tape or a separately packaged feature tape.<br />
T<br />
tailored message analysis (TMA)<br />
A method of adding site-supplied message processing code to MCB.<br />
TCF<br />
See temporary correction file.<br />
temporary correction file (TCF)<br />
A file containing code that is applied to a software component to temporarily correct or<br />
upgrade the software.<br />
test mode<br />
A state in which TIP transactions or CONECT programs may execute. Test mode is a<br />
method of testing transaction programs in an online environment. While in test mode,<br />
only FCSS and KONS read functions are performed. Writes, lock requests, and counter<br />
updates are not done, but a normal return is simulated. Test mode allows modifications<br />
or updates to be made on a working program without interfering with network usage of a<br />
production copy of that program. Test and training modes also apply to Network<br />
Database Server.<br />
TIP<br />
See Transaction Processing.<br />
TIP session control (TSC)<br />
A function supported by MCB and CMS 1100 that manages the OS 2200 Exec integrated<br />
recovery sessions.<br />
TIP terminal<br />
A terminal that is logically-connected to the TIP portion of the Exec through the MCB or<br />
COMPOOL interface, and is interactive with a transaction program.<br />
TMA<br />
TPAS<br />
See tailored message analysis.<br />
Acronym for Transaction Performance Auditing System.<br />
7833 1568–004 Glossary–13
Glossary<br />
training mode<br />
A state in which a TIP transaction (or connected program) may operate. Training mode<br />
can be used for training terminal users in the use of operational (debugged) transactions<br />
on a real but controlled database, or for tracking down ”logic” bugs in transactions by<br />
accessing selective (controlled) records. While in training mode, file accesses are made<br />
to an alternate (specified) set of file control superstructure (FCSS) files. The full repertoire<br />
of FCSS operations is permitted, thus allowing live access to files while ensuring the<br />
integrity of the database. The contents of the alternate database can be and are restored<br />
independently of the prime (live) database. Test and training modes also apply to<br />
Network Database Server.<br />
transaction code<br />
That part of the screen (or terminal) input message that identifies which transaction is to<br />
be scheduled. Normally, the transaction code is the first six characters of the message. It<br />
is the job of CMS 1100, or whichever program is making the scheduling request, to<br />
extract the transaction code from the message and place it into the MCB request packet.<br />
Same as action code.<br />
Transaction Processing (TIP)<br />
A <strong>Unisys</strong> product that executes transaction processing programs. TIP enables a remote<br />
terminal operator to initiate execution of a previously registered program at the central<br />
computer site. Once in execution, the transaction program has access to all functions of<br />
the OS 2200, as well as the specialized TIP functions and services.<br />
TSC<br />
U<br />
UPA<br />
See TIP session control.<br />
See user parameter area.<br />
user parameter area (UPA)<br />
The UPA immediately follows the MPA in the COMPOOL record. It is a configurable<br />
number of words long and contains whatever information a system designer specifies. It<br />
could be used in conjunction with site-developed code in CMS 1100.<br />
V<br />
VALTAB<br />
VINDEX<br />
The transaction program validation table. VALTAB records contain information for<br />
transaction scheduling and various execution parameters.<br />
The VALTAB index. The VINDEX identifies transaction programs by unique six-character<br />
transaction codes and unique program numbers. The VINDEX resides in the VALTAB file<br />
and is used for quick reference by the Exec and MCB.<br />
Glossary–14 7833 1568–004
Index<br />
A<br />
access mask, transaction code, 3-9<br />
active segment (MRF), 2-5<br />
activity<br />
control table (slot), F-15<br />
initialization packet fields, 4-5<br />
termination packet fields, 4-7<br />
activity initialization CMS function<br />
(CMINIT$$), 4-5<br />
activity termination CMS function<br />
(CMTERM$$), 4-7<br />
address limits<br />
main D-bank, 5-2<br />
utility I-bank, 4-3<br />
addressing environment, application<br />
program, 5-2<br />
AFCB, See common banks<br />
alternate return point<br />
with basic mode interface, 3-14<br />
with extended mode interface, 3-14<br />
APNUMBER, 3-6<br />
application interface functions<br />
audit (AUDIT$$), 5-29<br />
cancel output (CANCEL$$), 5-17<br />
close session (CLSSN$$), 5-34<br />
commit (COMMIT$$), 5-12<br />
discrete receive (DISREC$$), 5-30<br />
enqueue message (ENQUE$$), 5-29<br />
initialize (TRINIT$$), 5-6<br />
input-only exclusive use<br />
(SETIXUSE$$), 5-37<br />
obtain exclusive use (SETXUSE$$), 5-35<br />
obtain statistics (STAT$$), 5-38<br />
open session (OPNSSN$$), 5-32<br />
read input (RECV$$), 5-14<br />
release exclusive use (CLRXUSE$$), 5-36<br />
release input (INPREL$$), 5-16<br />
request PID status (PIDSTAT$$), 5-34<br />
rollback (ROLBAK$$), 5-13<br />
store checkpoint (CHKPT$$), 5-26<br />
store output (SEND$$), 5-17<br />
store pass-off (PASOFF$$), 5-23<br />
terminate (TERM$$), 5-11<br />
application program<br />
basic mode addressing environment, 5-2<br />
basic mode high-level calling sequence, 5-2<br />
checkpoint messaging, 3-1<br />
error termination, 2-3<br />
extended mode high-level calling<br />
sequence, 5-3<br />
function codes, A-1<br />
input message, 3-1<br />
interface packet (figure), 5-4<br />
interface packet description, 5-6<br />
interface, message parts, 3-10<br />
output message, 3-1<br />
pass-off message, 3-1<br />
application program considerations, alternate<br />
return point, 3-14<br />
application program interface<br />
auxiliary information area, 5-40<br />
description, 5-1<br />
functions, 5-6<br />
packet description, 5-6<br />
program activity initialization, 5-1<br />
application-unique label, 3-12<br />
APPREC, See IRU application recovery<br />
program<br />
asynchronous contingency<br />
execution completion, 3-10<br />
queue with ER CQUE$, 3-10<br />
attributes, message, 3-2<br />
audit<br />
control, Exec component, 3-10<br />
DML LOG command, 7-3<br />
MCA block, D-2<br />
MRF controls, D-3<br />
overflow block, D-2<br />
periodic statistics, D-3<br />
QITME record, D-3<br />
records, D-1<br />
text, integrated recovery audit trail, 3-4<br />
trail retention, 3-4<br />
user audit record, D-3<br />
audit function (AUDIT$$), 5-29<br />
AUDIT$ packet, F-22<br />
AUDIT$$, 5-29<br />
7833 1568–004 Index–1
Index<br />
automatic restart (MCB)<br />
MCB failure, 3-23<br />
primary host failure, 3-23<br />
auxiliary information area<br />
conversational link, 3-16<br />
device type, 3-20<br />
field definitions, 4-24<br />
for application program packet, 4-23<br />
for CMS, 4-23<br />
input and output messages, 5-40<br />
interactive CRT function codes, 4-24<br />
pass-off and checkpoint messages, 5-40<br />
session state changes, 4-28<br />
start in packet, 3-12<br />
UNISCOPE 100/200, UTS 400 function<br />
codes, 4-24<br />
user parameter area (UPA), 4-24<br />
auxiliary information, word size, 4-8<br />
B<br />
background run<br />
locking common I-bank, 2-1<br />
real-time program, 2-1<br />
TIP/database files, 2-5<br />
use of ER LOAD$, 2-1<br />
basic mode<br />
alternate return point, 3-14<br />
ASCII COBOL (ACOB) program, 5-2<br />
ASCII FORTRAN (FTN) program, 5-2<br />
MASM program, 5-2<br />
basic mode interface<br />
calling sequence, 3-12<br />
MCB entry point (MCB$ENT), 3-12<br />
MCBBDIn, 3-12<br />
batch/demand program<br />
initialization, 5-6<br />
initialization, CONECT, 6-2<br />
termination, DISCON, 6-2<br />
BPFILE, 9-2<br />
BUF$SIZE, F-1<br />
buffer pool controls, F-14<br />
C<br />
calling activity initialization, 3-10<br />
calling sequence, basic mode interface, 3-12<br />
cancel output function (CANCEL$$), 5-17<br />
CANCEL$$, 5-17<br />
CBEP$$MCB BUILD element, 3-12<br />
labels<br />
MCB$ENT, 3-12<br />
MCBBNK, 3-12<br />
MCBBNK$, 3-12<br />
CDATAC, 6-3<br />
CDATCR, 6-3<br />
checkpoint<br />
message, 3-1, 3-2, 5-30<br />
recovery options, 5-42<br />
CHKPT$$, 5-26<br />
close session function (CLSSN$$), 5-34<br />
CLRXUSE$$, 5-36<br />
CLSSN$$, 5-34<br />
CMCAN$$, 4-9<br />
CMFAC$$, 4-22<br />
CMINIT$$, 4-6<br />
CMPIDI$$, 4-19<br />
CMRECV$$, 4-10<br />
CMS<br />
activity initialization (CMINIT$$), 4-5<br />
activity switch list, 4-5<br />
activity termination (CMTERM$$), 4-7<br />
addressing environment, 4-2<br />
application program messages, 3-2<br />
auxiliary information area, 4-23<br />
spooling, 3-21<br />
termination with ROPL output<br />
messages, 3-6<br />
CMS interface<br />
auxiliary information area, 4-23<br />
packet, 4-4<br />
CMS interface functions<br />
activity initialization (CMINIT$$), 4-5<br />
activity termination (CMTERM$$), 4-7<br />
get text (CMSGET$$), 4-16<br />
input message cancel (CMCAN$$), 4-9<br />
obtain resource status (CMFAC$$), 4-22<br />
output message hold (MHOLD$$), 4-12<br />
output message negative acknowledge<br />
(CMSNAK$$), 4-13<br />
output message positive acknowledge<br />
(CMSACK$$), 4-12<br />
PID configuration (CMPIDI$$), 4-19<br />
PID information request<br />
(CMSPIDS$$), 4-21<br />
put text (CMSPUT$$), 4-14<br />
read VINDEX entry (VNXRD$$), 4-15<br />
receive output message<br />
(CMRECV$$), 4-10<br />
Index–2 7833 1568–004
esilient session open notify<br />
(RESOPEN$$), 4-20<br />
session open notify (CMSOPEN$$), 4-20<br />
session status notification, 4-17<br />
store input message (CMSTORE$$), 4-7<br />
CMSACK$$, 4-12<br />
CMSGET$$, 4-16<br />
CMSNAK$$, 4-13<br />
CMSOPEN$$, 4-20<br />
CMSPIDS$$, 4-21<br />
CMSPUT$$, 4-14<br />
CMSTOR$$, 4-7<br />
CMTERM$$, 4-7<br />
COMMIT, 6-4<br />
commit function (COMMIT$$)<br />
description, 5-12<br />
step termination, 5-6<br />
COMMIT$$, 5-12<br />
common bank security, 3-22<br />
common banks<br />
alternate file common bank (AFCB), 9-1<br />
main<br />
components, 2-1<br />
guaranteed-entry point (GEP), 2-3<br />
installed version, 2-3<br />
main storage message (CORBNK), 2-3<br />
MSGBNK, 9-1<br />
MSGLNGBNK, 9-1<br />
use of ER LCORE$, 2-3<br />
Communications Management System, See<br />
CMS<br />
Compiler, rules, 3-15<br />
COMPOOL<br />
communications message-buffer pool, 1-1,<br />
6-1<br />
concurrent operation with MCB, 3-6, 6-6<br />
migrating primitives to MCB, 3-10<br />
termination differences, 6-6<br />
concurrent operation, COMPOOL and<br />
MCB, 3-6, 6-6<br />
CONECT, 6-2<br />
configure resilient parameter, 4-21<br />
conversational link<br />
auxiliary information area, 3-16<br />
purpose, 3-16<br />
CRELOG, 6-3<br />
CRT function codes, 4-24<br />
CSTLOG, 6-3<br />
CSTOVR, 6-3<br />
Index<br />
7833 1568–004 Index–3<br />
D<br />
data buffer address (P$BUFF), 5-8<br />
Data Management System (DMS), See<br />
Network Database Server<br />
data manipulation language (DML)<br />
DEPART command, 5-12<br />
FREE command, 5-12<br />
syntax, 7-2<br />
data structures<br />
buffer pool controls, F-14<br />
message block structure, F-1<br />
MRF allocation descriptor (MAD), F-27<br />
MRF operations, F-8<br />
PID, F-32<br />
PID index file (PIX), F-36<br />
SLOT, F-15<br />
statistics table, F-37<br />
D-bank, main<br />
address limits, 5-2<br />
deferred queuing, 3-2<br />
delivery notification format, 5-46<br />
DEPART<br />
database command, 5-6, 7-2<br />
DEPART WITH ROLLBACK<br />
database command, 5-6, 5-13, 7-2<br />
device category (P$CAT), 4-29<br />
device identifier (P$DID), 4-29<br />
device type<br />
hardware (P$RTYPE), 4-30<br />
logical (P$TTYP), 3-20, 4-26<br />
real (P$RTYPE), 3-20<br />
DID (device identifier), 4-29<br />
discarding input messages, E-2<br />
DISCON, 6-2<br />
discrete receive function (DISREC$$), 5-30<br />
Display Processing System<br />
application interface to MCB, 5-1<br />
application program interface, 3-10<br />
ASCII characters, 4-30<br />
text format, 4-26<br />
DISREC$$, 5-30<br />
Distributed Communications Architecture<br />
(DCA)<br />
field value definitions, 4-29<br />
DM$IOW packet, F-25<br />
DML, See data manipulation language<br />
DMS 2200, See Network Database Server<br />
duplicate message numbers, 3-4
Index<br />
E<br />
ENQUE$$, 5-29<br />
enqueue message function (ENQUE$$), 5-29<br />
entry point<br />
basic mode, 3-12<br />
ER CQUE$<br />
contingency queue, 3-10<br />
ER DM$IOW<br />
in mass storage, 2-5<br />
MSGLNGBNK status, 9-2<br />
ER QI$CON<br />
start a step without a message, 5-7<br />
ER QI$NIT<br />
transaction program initialization, 5-7<br />
ER RT$OUT<br />
queuing ROPL messages, 3-5<br />
ER TRMRG$<br />
program initialization, 5-7<br />
termination notification, 3-10<br />
error code (P$ERR), 5-11<br />
error codes<br />
program, B-1<br />
error conditions, system error program, 8-3<br />
error notification message, 8-5<br />
error notification program (ENP)<br />
description, 8-4<br />
ROPL messages, 3-6<br />
error processing programs<br />
error notification program (ENP), 8-1<br />
system error program (SEP), 8-1<br />
ERTERM, 6-4<br />
example application number 3, 3-13<br />
example programs, 3-13<br />
excess print files<br />
with ROPL, 3-6<br />
exclusive use of PID, 3-20<br />
exclusive use of PID function<br />
(SETXUSE$$), 5-35<br />
Exec message number table, 3-3<br />
Exec system generation, required stream<br />
generation statement, 8-2<br />
Exec usage of unique identifier, 5-40<br />
extend a message, CSTOVR, 6-3<br />
extended mode<br />
alternate return point, 3-14<br />
calling EMMCB, 3-15<br />
enter MCB<br />
UCS Ada (UADA), 5-3<br />
UCS C (UC), 5-3<br />
UCS COBOL (UCOB), 5-3<br />
UCS FORTRAN (UFTN), 5-3<br />
high-level calling sequence, 5-3<br />
RTN instruction, 3-14<br />
Index–4 7833 1568–004<br />
F<br />
facilities status (P$FAC), 4-7, 4-23, 5-7<br />
file security, 3-23<br />
requirement for TIP, 3-23<br />
FREE command, 5-6, 7-2<br />
free segment, 2-6<br />
free segment (MRF), 2-5<br />
function codes<br />
CRT, 4-24<br />
for CMS, A-1<br />
for packet interfaces, A-1<br />
UNISCOPE 100/200, UTS 400<br />
terminals, 4-24<br />
function key index, 4-27<br />
functions<br />
activity initialization (CMINIT$$), 4-5<br />
activity termination (CMTERM$$), 4-7<br />
audit (AUDIT$$), 5-29<br />
cancel output (CANCEL$$), 5-17<br />
close session (CLSSN$$), 5-34<br />
commit (COMMIT$$), 5-12<br />
discrete receive (DISREC$$), 5-30<br />
enqueue message (ENQUE$$), 5-29<br />
get text (CMSGET$$), 4-16<br />
initialize (TRINIT$$), 5-6<br />
input message cancel (CMCAN$$), 4-9<br />
obtain exclusive use (SETXUSE$$), 5-35<br />
obtain input-only exclusive use<br />
(SETIXUSE$$), 5-37<br />
obtain resource status (CMFAC$$), 4-22<br />
obtain statistics (STAT$$), 5-38<br />
open a session (OPNSSN$$), 5-32<br />
output message hold (MHOLD$$), 4-12<br />
output message negative acknowledge<br />
(CMSNAK$$), 4-13<br />
output message positive acknowledge<br />
(CMSACK$$), 4-12<br />
PID configuration (CMPIDI$$), 4-19<br />
PID information request<br />
(CMSPIDS$$), 4-21<br />
put text (CMSPUT$$), 4-14<br />
read input (RECV$$), 5-14<br />
read VINDEX entry (VNXRD$$), 4-15<br />
receive output message<br />
(CMRECV$$), 4-10<br />
release exclusive use (CLRXUSE$$), 5-36<br />
release input (INPREL$$), 5-16
G<br />
request PID status (PIDSTAT$$), 5-34<br />
resilient session open notify<br />
(RESOPEN$$), 4-20<br />
rollback (ROLBAK$$), 5-13<br />
session open notify (CMSOPEN$$), 4-20<br />
session status notification, 4-17<br />
store checkpoint (CHKPT$$), 5-26<br />
store input message (CMSTORE$$), 4-7<br />
store output (SEND$$), 5-17<br />
store pass-off (PASOFF$$), 5-23<br />
terminate (TERM$$), 5-11<br />
get text CMS function (CMSGET$$), 4-16<br />
group PID, 3-16<br />
guaranteed-entry point (GEP), 2-3, 3-14<br />
H<br />
host-to-host transactions, 5-47<br />
I<br />
I-bank, utility<br />
address limits, 4-3<br />
IBM 3270 protocol, 3-20<br />
IMPART command, 7-2<br />
INITAL, 6-2<br />
INITAL primitive, 7-2<br />
INITAL, with database, 7-2<br />
initialization<br />
online batch program, 5-6<br />
transaction program, 5-6<br />
initialize function (TRINIT$$), 5-6<br />
initializing activity<br />
real-time mode, 4-5<br />
INPREL$$, 5-16<br />
input<br />
acknowledge message, 5-44<br />
queue priority, 3-9<br />
input message<br />
acknowledge format, 5-44<br />
attributes, 3-8<br />
cancel function (CMCAN$$), 4-9<br />
control, 3-21<br />
number (P$MN), 5-8<br />
source of, 3-1<br />
Index<br />
input message cancel CMS function<br />
(CMCAN$$), 4-9<br />
input-only exclusive use function<br />
(SETIXUSE$$), 5-37<br />
integrated recovery system<br />
message control component, 1-1<br />
Integrated Recovery Utility, 5-40<br />
Integrated Recovery Utility (IRU), 2-5, 9-1.<br />
See also IRU application recovery<br />
program (APPREC)<br />
intelligent message numbering<br />
input, 3-3<br />
option, 3-3<br />
output, 3-3<br />
setting, requirements, 3-3<br />
interface<br />
application program functions, 5-6<br />
application program packet, 5-4<br />
CMS packet, 4-4<br />
database, 7-1<br />
message processing, 3-10<br />
packet formats, 3-11<br />
TIP primitive, 6-1<br />
IRU, See Integrated Recovery Utility<br />
IRU application recovery program<br />
(APPREC), 3-23<br />
7833 1568–004 Index–5<br />
L<br />
LBJ instruction, 3-11<br />
link, conversational, See conversational link<br />
long message recovery<br />
audit attribute, 3-4<br />
low main storage priority attribute, 3-5<br />
M<br />
MAD, See data structures<br />
main storage<br />
buffers, F-7<br />
buffers, field definitions, F-8<br />
message common banks (CORBNK), 2-3<br />
MAP directives<br />
basic mode, 3-14<br />
MCB<br />
automatic restart, 3-23<br />
component of integrated recovery<br />
system, 1-1<br />
components<br />
action command processing, 2-1
Index<br />
background run, 2-1, 2-2<br />
dumping, 2-1<br />
initialization, 2-1<br />
keyin processing, II, 2-1<br />
long recovery common bank, 2-5<br />
main common bank, 2-1, 2-3<br />
main storage buffer common<br />
banks, 2-1, 2-3<br />
message recovery banks, 2-1, 2-5<br />
message release processing, 2-1<br />
MRF control common banks, 2-1, 2-4<br />
PID table common banks, 2-1, 2-3<br />
range table common banks, 2-1, 2-4<br />
short recovery common bank, 2-5<br />
site-id table common banks, 2-1, 2-4<br />
statistics gathering and reporting, 2-1<br />
validation table index (VINDEX) common<br />
bank, 2-1, 2-4, 6-4<br />
concurrent operation with COMPOOL, 3-6,<br />
6-6<br />
entry point label, MCB$ENT, 3-12<br />
file security, 3-23<br />
file types, 2-5<br />
host-to-host transactions, 5-47<br />
interface types, 1-2<br />
message elements, 1-2<br />
message processing activities, 1-2<br />
message processing concepts, 3-1<br />
message retention files (MRF), 2-5<br />
message types, 3-1<br />
MRF control file, 2-5<br />
PID index file (PIX), 2-6<br />
primitives<br />
CDATAC, 6-3<br />
CDATCR, 6-3<br />
COMMIT, 6-4<br />
CONECT, 6-2<br />
CRELOG, 6-3<br />
CSTLOG, 6-3<br />
CSTOVR, 6-3<br />
DISCON, 6-2<br />
ERTERM, 6-4<br />
INITAL, 6-2<br />
ROLBAK, 6-4<br />
RTOUTP, 6-4<br />
RTRANO, 6-3<br />
RTRANU, 6-3<br />
RTSCHD, 6-4<br />
TERMN8, 6-2<br />
TIP library files, 6-1<br />
volatile register set, 6-1<br />
unique identifier, 5-40<br />
Universal Database <strong>Control</strong> interface, 5-1<br />
MCB$ENT, 3-12<br />
MCBBDI<br />
where defined, 3-12<br />
MCBBNK, 3-12<br />
MCBBNK$, 3-12<br />
message<br />
attributes, 3-2<br />
audit text, 3-4<br />
block allocation, 2-6<br />
checkpoint, 3-1<br />
deferred queuing, 3-2<br />
extend (CSTOVR), 6-3<br />
format, 3-11<br />
header, offset, 4-29<br />
input, 3-1<br />
low main storage priority, 3-5<br />
numbering<br />
configuration, 3-3<br />
intelligent, 3-3, 3-4<br />
removal, 3-3<br />
unintelligent, 3-3, 3-4<br />
output, 3-1<br />
overlay (CSTOVR), 6-3<br />
parameter area (MPA), 6-4<br />
pass-off, 3-1<br />
processing<br />
common bank security, 3-22<br />
contingencies, 3-10<br />
conversational link, 3-16<br />
delivery notification, 3-17<br />
exclusive use of PID, 3-20<br />
IBM terminal to logical UTS400<br />
terminal, 3-20<br />
initialization, 3-10<br />
input message control, 3-21<br />
interfaces, 3-10<br />
MCB file security, 3-23<br />
MRF threshold control, 3-24<br />
multiple destination output, 3-16<br />
optional features, 3-15<br />
output message control, 3-21<br />
Partitioned Applications, 3-23<br />
PID site-id table, 3-20<br />
PID, exclusive use request, 3-20<br />
ROPL output, options, 3-22<br />
rotary output, 3-16<br />
security<br />
common bank, 3-22<br />
MCB file, 3-23<br />
TIP, 3-22<br />
session control, 3-19<br />
session control, options, 3-22<br />
session control, TIP, 3-22<br />
Index–6 7833 1568–004
statistics monitor transaction, 3-24<br />
termination, 3-10<br />
test and training modes, 3-17<br />
TIP message security, 3-22<br />
TIP session control, 3-22<br />
unsolicited output, 3-17<br />
user message control, 3-24<br />
queue output (RTOUTP), 6-4<br />
queue output (RTSCHD), 6-4<br />
queue pass-off (RTOUTP), 6-4<br />
queue pass-off (RTSCHD), 6-4<br />
read (CDATAC), 6-3<br />
read and release (CDATCR), 6-3<br />
recall, 3-5<br />
recall period, 2-6<br />
recoverability, 3-2<br />
recovery<br />
error handling, 9-2<br />
interface to IRU, 9-1<br />
long, 9-1, 9-2<br />
message numbering options, C-3<br />
option combinations, C-1<br />
program recovery options, C-4<br />
recall option, 5-26, 5-28<br />
short, 9-1<br />
TIP/database files, access, 2-5<br />
recovery bank<br />
MSGBNK, 2-5, 9-1<br />
MSGLNGBNK, 2-5, 9-2<br />
reduced output path length (ROPL), 3-5<br />
release all (CRELOG), 6-3<br />
ROPL, 3-5<br />
step control replacement, 3-5<br />
store (CSTLOG), 6-3<br />
store and queue (RTRANO), 6-3<br />
store and queue (RTRANU), 6-3<br />
traffic, statistical analysis, 3-4<br />
types, 3-1<br />
user session reestablishment, 3-23<br />
message control area (MCA) block, F-1<br />
message numbering option, 3-3<br />
message retention file<br />
active segment, 2-5, F-9<br />
allocation descriptor (MAD), F-27<br />
blocks, F-8, F-9<br />
common banks, 2-4<br />
common control table, F-9<br />
control file, 2-5<br />
control table (MF$CTL), F-12<br />
control table, main (MRF$TBL), F-11<br />
error termination, 2-4<br />
file table (MF$CTX), F-11<br />
files, F-8<br />
Index<br />
free segment, 2-5, F-9<br />
identifier (MID), 9-1, F-10<br />
main control table (MRF$TBL), F-11<br />
message blocks, 2-6<br />
MRF file number, 2-5<br />
MRF$TBL, F-11<br />
MRF/PIX relationship, F-36<br />
nonrecoverable message text, 2-5<br />
queue item, 9-1<br />
recoverable message text, 2-5<br />
retired segment, 2-5, F-9<br />
segment, F-8<br />
segment allocation mask (SAM), F-10<br />
segments, 2-5<br />
staging, 2-5<br />
threshold control, 3-24<br />
MHOLD$$, 4-12<br />
MID, See message retention file (MRF)<br />
identifier<br />
mixed-mode, 3-15<br />
MPA, See message parameter area<br />
MRF, See message retention file<br />
MRFCNTL file, updating by MSGBNK, 9-1<br />
MSGBNK<br />
interface to IRU, 9-1<br />
status codes, 9-1<br />
updating MRFCNTL, 9-1<br />
MSGLNGBNK<br />
interface to IRU, 9-2<br />
status codes, 9-2<br />
multiactivity program, restrictions, 5-1<br />
Multi-Host File Sharing (MHFS) feature, IRU<br />
file used, 9-2<br />
multiple destination<br />
list format, 5-20<br />
output, 3-16<br />
multiple SLOT banks, F-15, F-20, F-22<br />
7833 1568–004 Index–7<br />
N<br />
Network Database Server<br />
commit point, 3-9<br />
recovery, 3-8<br />
run unit conventions, 7-1<br />
Universal Database <strong>Control</strong> interface, 7-1<br />
network input messages<br />
changing recovery options, E-2<br />
nonrecoverable message text, overflow<br />
storage, 2-5<br />
nonrecoverable MRF, F-9
Index<br />
O<br />
object modules (OM), linked, 3-15<br />
obtain exclusive use function<br />
(SETXUSE$$), 5-35<br />
obtain input-only exclusive use function<br />
(SETIXUSE$$), 5-37<br />
obtain resource status CMS function<br />
(CMFAC$$), 4-22<br />
obtain statistics function (STAT$$), 5-38<br />
online batch program initialization, 5-6<br />
open a session function (OPNSSN$$), 5-32<br />
OPNSSN$$, 5-33<br />
output message<br />
attributes, 3-8<br />
header, 5-45<br />
source of, 3-1<br />
output message hold CMS function<br />
(MHOLD$$), 4-12<br />
output message negative acknowledge CMS<br />
function (CMSNAK$$), 4-13<br />
output message positive acknowledge CMS<br />
function (CMSACK$$), 4-12<br />
overflow storage, of nonrecoverable message<br />
text, 2-5<br />
overlay a message, CSTOVR, 6-3<br />
P<br />
packet fields<br />
activity initialization CMS function<br />
(CMINIT$$), 4-5<br />
activity termination CMS function<br />
(CMTERM$$), 4-7<br />
audit function (AUDIT$$), 5-29<br />
cancel output function (CANCEL$$), 5-17<br />
close session function (CLSSN$$), 5-34<br />
commit function (COMMIT$$), 5-12<br />
discrete receive function (DISREC$$), 5-30<br />
enqueue message function<br />
(ENQUE$$), 5-29<br />
get text CMS function (CMSGET$$), 4-16<br />
initialize function (TRINIT$$), 5-7<br />
input message cancel CMS function<br />
(CMCAN$$), 4-9<br />
obtain exclusive use function<br />
(SETXUSE$$), 5-35<br />
obtain input-only exclusive use function<br />
(SETIXUSE$$), 5-37<br />
obtain resource status CMS function<br />
(CMFAC$$), 4-22<br />
obtain statistics function (STAT$$), 5-38<br />
open a session function (OPNSSN$$), 5-33<br />
output message hold CMS function<br />
(MHOLD$$), 4-12<br />
output message negative acknowledge<br />
CMS function (CMSNAK$$), 4-13<br />
output message positive acknowledge<br />
CMS function (CMSACK$$), 4-12<br />
PID configuration CMS function<br />
(CMPIDI$$), 4-19<br />
PID information request CMS function<br />
(CMSPIDS$$), 4-21<br />
put text CMS function (CMSPUT$$), 4-14<br />
read input function (RECV$$), 5-14<br />
read VINDEX entry CMS function<br />
(VNXRD$$), 4-16<br />
receive output message CMS function<br />
(CMRECV$$), 4-10<br />
release exclusive use function<br />
(CLRXUSE$$), 5-36<br />
release input function (INPREL$$), 5-16<br />
request PID status function<br />
(PIDSTAT$$), 5-34<br />
resilient session open notify CMS function<br />
(RESOPEN$$), 4-20<br />
rollback function (ROLBAK$$), 5-13<br />
session open notify CMS function<br />
(CMSOPEN$$), 4-20<br />
session status notification CMS<br />
function, 4-17<br />
store checkpoint function (CHKPT$$), 5-26<br />
store input message CMS function<br />
(CMSTORE$$), 4-7<br />
store output function (SEND$$), 5-17<br />
store pass-off function (PASOFF$$), 5-23<br />
terminate function (TERM$$), 5-12<br />
PASOFF$$, 5-23<br />
pass-off message, source of, 3-1<br />
PID configuration CMS function<br />
(CMPIDI$$), 4-19<br />
PID index file, MRF/PIX relationship, F-36<br />
PID information request CMS function<br />
(CMSPIDS$$), 4-21<br />
PIDSTAT$$, 5-34<br />
PIX, See PID index file<br />
program failure<br />
message recoverability, 3-2<br />
put text CMS function (CMSPUT$$), 4-14<br />
Index–8 7833 1568–004
Q<br />
queue a pass-off message (RTOUTP), 6-4<br />
queue a pass-off message (RTSCHD), 6-4<br />
queue an output message (RTOUTP), 6-4<br />
queue an output message (RTSCHD), 6-4<br />
queuing ROPL messages<br />
ER RT$OUT, 3-5<br />
R<br />
range table common banks, 2-4<br />
read a message (CDATAC), 6-3<br />
read and release message (CDATCR), 6-3<br />
read input function (RECV$$), 5-14<br />
read VINDEX entry CMS function<br />
(VNXRD$$), 4-15<br />
real-time mode<br />
initializing activity, 4-5<br />
recall period, 2-6<br />
receive output message CMS function<br />
(CMRECV$$), 4-10<br />
recoverable messages, 3-2<br />
recoverable MRF, F-8<br />
recovery<br />
messages, 2-5<br />
MRF segment states, 2-6<br />
MSGBNK, 2-5<br />
MSGLNGBNK, 2-5<br />
options<br />
default, 5-41<br />
ensuring recovery, 3-7<br />
for VINDEX entries, 3-7<br />
input message attributes, 3-8<br />
message numbering, 3-3<br />
output message attributes, 3-8<br />
P$RECOPT override, 5-41<br />
Discrete Receive, 5-32<br />
Initialize, 5-11<br />
Store Checkpoint, 5-28<br />
Store Output, 5-22<br />
Store Pass-Off, 5-25<br />
program execution attributes, 3-8<br />
ROPL, 3-6<br />
specified in VALTAB, 3-7<br />
summary, 5-41<br />
target VINDEX entry, 5-41<br />
PIX file, 2-6<br />
processing notification, 3-19<br />
RECV$$, 5-14<br />
reduced output path length, 3-5<br />
Index<br />
reduced output path length messages,<br />
undelivered, 3-6<br />
release all messages (CRELOG), 6-3<br />
release exclusive use function<br />
(CLRXUSE$$), 5-36<br />
release input function (INPREL$$), 5-16<br />
request PID status function<br />
(PIDSTAT$$), 5-34<br />
resiliency<br />
conversational link, 3-16<br />
copying session-related changes, 2-6<br />
exclusive use information, retention, 3-20<br />
exclusive use retention, 5-35, 5-37<br />
MCB, 4-6<br />
mode interpretation, 3-19<br />
mode state retention, 5-20<br />
Partitioned Applications, 3-23<br />
restrictions, 5-47<br />
session retention, 3-19, 5-32<br />
user session reestablishment, 3-23<br />
resilient parameter, configure, 4-21<br />
resilient session open notify CMS function<br />
(RESOPEN$$), 4-20<br />
RESILIENT SGS<br />
MCB session control, 3-19<br />
mode interpretation, 3-19<br />
MRF control file, 2-6<br />
Open a Session, 5-32<br />
PID, exclusive use of, 3-20<br />
PID, obtain exclusive use of, 5-35<br />
PID, Obtain Input-Only Exclusive Use<br />
of, 5-37<br />
Store Output, 5-20<br />
RESOPEN$$, 4-20<br />
restrictions<br />
database run units, 7-1<br />
host-to-host, 5-47<br />
multiactivity programs, 5-1<br />
Partitioned Applications, 3-23<br />
TIP primitive interface<br />
CSTOVR, 6-5<br />
message parameter area, 6-4<br />
user parameter area, 6-5<br />
retired segment (MRF), 2-5<br />
return point (P$RTN)<br />
activity initialization, 4-6<br />
activity termination, 4-7<br />
audit, 5-30<br />
cancel output, 5-17<br />
close a session, 5-34<br />
commit, 5-12<br />
discrete receive, 5-31<br />
enqueue message, 5-29<br />
7833 1568–004 Index–9
Index<br />
extended mode, 5-3<br />
get text, 4-17<br />
initialize, 5-9<br />
input message cancel, 4-10<br />
obtain exclusive use of PID, 5-36<br />
obtain input-only exclusive use of PID, 5-37<br />
open a session, 5-33<br />
output message hold, 4-12<br />
output message negative<br />
acknowledgement, 4-13<br />
output message positive<br />
acknowledgement, 4-13<br />
PID information request, 4-22<br />
put text, 4-15<br />
read input, 5-16<br />
receive output message, 4-11<br />
release exclusive use of PID, 5-36<br />
release input, 5-16<br />
request PID status, 5-35<br />
rollback, 5-14<br />
session open notify, 4-20<br />
store checkpoint, 5-27<br />
store input message, 4-8<br />
store output, 5-20<br />
store pass-off, 5-24<br />
terminate, 5-12<br />
ROLBAK, 6-4<br />
ROLBAK primitive, 7-2<br />
ROLBAK$$, 5-13<br />
rollback function (ROLBAK$$), 5-13<br />
ROPL, See reduced output path length<br />
rotary output, 3-16<br />
RTOUTP, 6-4<br />
RTRANO, 6-3<br />
RTRANU, 6-3<br />
RTSCHD, 6-4<br />
S<br />
SAM, See segment allocation mask<br />
segment allocation mask (SAM), F-10<br />
segment states (MRF), 2-5<br />
SEND$$, 5-17<br />
SEP, See System Error Program<br />
session<br />
control, MCB, 3-19<br />
control, RESILIENT parameter, 3-19<br />
control, TIP, 3-22<br />
recovery, 3-19<br />
state change notification, 3-20, 5-47<br />
session open notify CMS function<br />
(CMSOPEN$$), 4-20<br />
session status notification CMS function, 4-17<br />
SETIXUSE$$, 5-37<br />
SETXUSE$$, 5-35<br />
site-id table common banks, 2-4<br />
SLOT, extension area, F-23<br />
spooling, changes for CMS<br />
configuration, 3-21<br />
staging<br />
input message, 3-4, 4-7<br />
output message, 3-17<br />
STAT$$, 5-38<br />
statistics<br />
message traffic, analysis, 3-4<br />
monitor transaction, 3-24<br />
obtaining (STAT$), 5-38<br />
table, F-37<br />
step control<br />
basic mode, 3-12<br />
Exec component, 3-10<br />
message, 3-5<br />
mixed mode, 3-15<br />
store a message (CSTLOG), 6-3<br />
store and queue a message (RTRANO), 6-3<br />
store and queue a message (RTRANU), 6-3<br />
store checkpoint function (CHKPT$$), 5-26<br />
store input message CMS function<br />
(CMSTORE$$), 4-7<br />
store output function (SEND$$), 5-17<br />
store pass-off function (PASOFF$$), 5-23<br />
success point<br />
processing, 3-2<br />
system error program, 8-3<br />
system error program (SEP), 8-1<br />
system error program, MCB interface, 8-3<br />
system failure<br />
message recoverability, 3-2<br />
system generation, Exec, required stream<br />
generation statement, 8-2<br />
Index–10 7833 1568–004<br />
T<br />
Tailored <strong>Message</strong> Analysis (TMA)<br />
code location, E-1<br />
initial message analysis (IMA), use of, E-1,<br />
E-2<br />
main storage buffer requirement, E-2<br />
register use, E-2
Tailored Session Analysis (TSA)<br />
code for additional processing, E-3<br />
code location, E-3<br />
register use, E-3<br />
TERM$$, 5-12<br />
terminal class, 3-9<br />
terminate function (TERM$$), 5-11<br />
termination<br />
application program, 2-3<br />
batch program, DISCON, 6-6<br />
COMPOOL, 6-6<br />
notification, ER TRMRG$, 3-10<br />
transaction program, TERMN8, 6-2, 6-6<br />
TERMN8, 6-2<br />
test mode, 3-18<br />
TIP, See transaction processing<br />
TIP$XMIT packet, F-26<br />
TMA, See Tailored <strong>Message</strong> Analysis<br />
TPAS, See Transaction Performance Auditing<br />
System<br />
training mode, 3-17<br />
transaction code<br />
access mask, 3-9<br />
fields, 4-9<br />
input queue priority, 3-9<br />
P$TC1/P$TC2<br />
Discrete Receive, 5-32<br />
Initialize, 5-11<br />
Obtain Exclusive Use of a PID, 5-36<br />
Obtain Input-Only Exclusive Use of a<br />
PID, 5-38<br />
Open a Session, 5-33<br />
Store Checkpoint, 5-28<br />
Store Output, 5-20<br />
Store Pass-Off, 5-25<br />
recovery options, 3-7<br />
target, 3-6<br />
transaction program number, 3-9<br />
Transaction Performance Auditing System<br />
(TPAS), 3-24<br />
transaction processing<br />
file security, 3-23<br />
message dequeuing, 3-9<br />
message security, 3-22<br />
modes of execution, 3-17<br />
primitive interface<br />
application programming<br />
considerations, 6-5<br />
batch program initialization, 6-2<br />
batch program termination, 6-2<br />
calling sequence, basic mode, 5-2<br />
CDATAC, 6-3<br />
CDATCR, 6-3<br />
Index<br />
COMMIT, 6-4<br />
concurrency, restrictions, 6-6<br />
CONECT, 6-2<br />
CRELOG, 6-3<br />
CSTLOG, 6-3<br />
CSTOVER, 6-3<br />
CSTOVR, 6-5<br />
demand program initialization, 6-2<br />
demand program termination, 6-2<br />
DISCON, 6-2<br />
ERTERM, 6-4<br />
extend a message, 6-3<br />
INITAL, 6-2<br />
initialization<br />
batch program, 6-2<br />
demand program, 6-2<br />
restrictions, 6-5<br />
transaction program, 6-2<br />
MCB primitives, 6-1<br />
message contents, assumed, 3-10<br />
message parameter area (MPA), 6-4<br />
overlay a message, 6-3, 6-5<br />
physical COMPOOL primitives, 6-5<br />
program end of step, 6-4<br />
program error termination, 6-4<br />
program options, 6-5<br />
program step rollback, 6-4<br />
queue a pass-off message, 6-4<br />
queue an output message, 6-4<br />
read a message, 6-3<br />
read and release a message, 6-3<br />
relative addressing, 6-5<br />
release all messages, 6-3<br />
restrictions, 6-4, 6-5<br />
ROLBAK, 6-4<br />
RTOUTP, 6-4<br />
RTRANO, 6-3<br />
RTRANU, 6-3<br />
RTSCHD, 6-4<br />
store a message, 6-3<br />
store and queue a message, 6-3<br />
termination<br />
batch program, 6-2<br />
demand program, 6-2<br />
program error, 6-4<br />
transaction program, 6-2<br />
TERMN8, 6-2<br />
transaction program initialization, 6-2<br />
transaction program termination, 6-2<br />
user parameter area (UPA), 6-5<br />
program number, 3-9<br />
session control, 3-22<br />
7833 1568–004 Index–11
Index<br />
transaction program<br />
initialization, 5-6<br />
initialization, INITAL, 6-2<br />
number (P$PROG), 5-9<br />
termination, TERMN8, 6-2<br />
TRINIT$$, 5-7<br />
TSA, See Tailored Session Analysis<br />
U<br />
UCF, See User Communication Forms<br />
unintelligent message numbering<br />
format<br />
input acknowledge message, 5-44<br />
output message header, 5-45<br />
input, 3-4<br />
option, 3-3<br />
output, 3-4<br />
setting, requirements, 3-3<br />
unique identifier<br />
discrete receive, 5-31<br />
Exec usage, 5-40<br />
format, 5-41<br />
initialize, 5-9, 5-10<br />
Integrated Recovery Utility usage, 5-40<br />
MCB usage, 5-40<br />
message originator (P$OS1/P$OS2), 5-40<br />
program step (P$STEP1/P$STEP2), 5-40<br />
rollback, 5-14<br />
store checkpoint, 5-27<br />
store output, 5-20<br />
store pass-off, 5-24<br />
Universal Database <strong>Control</strong> usage, 5-40<br />
UNISCOPE 100/200, function codes, 4-24<br />
Universal Database <strong>Control</strong><br />
MCB interface, 5-1, 7-1<br />
modes of execution, 3-17<br />
unique identifier usage, 5-40<br />
unsolicited output, 3-17<br />
UPA, See user parameter area<br />
User Communication Forms (UCF), MSGBNK<br />
error handling, 9-2<br />
user message control<br />
using with TMA, E-2<br />
user parameter area (UPA)<br />
program access, 6-5<br />
purpose, 4-24<br />
user session reestablishment, 3-23<br />
UTS 400<br />
emulation mode, 3-20<br />
function codes, 4-24<br />
function key index, 4-27<br />
Index–12 7833 1568–004<br />
V<br />
validation table index (VALTAB)<br />
mode establishment, 3-19<br />
modification caution, 3-9<br />
relationship to VINDEX, 2-4<br />
system error program (SEP)<br />
considerations, 8-2<br />
transaction program options, 3-7, 3-22<br />
validation table index (VINDEX) common bank<br />
COMMIT recovery options, 6-4<br />
construction, 3-6<br />
description, 2-4<br />
error notification program (ENP)<br />
considerations, 8-5<br />
fields of entries, 3-6<br />
ROLBAK recovery options, 6-4<br />
system error program (SEP)<br />
considerations, 8-3<br />
VALTAB, See validation table index<br />
VINDEX, See validation table index common<br />
bank<br />
VNXRD$$, 4-16<br />
volatile register set, 6-1<br />
VTBUTL<br />
AUDIT parameter, 3-6<br />
MASK parameter, 3-9<br />
purpose, 3-6<br />
QPRIORITY parameter, 3-9<br />
RECOVERY parameter, 3-7
*78331568-004*<br />
78331568– 004