21.12.2012 Views

Message Control Bank - Public Support Login - Unisys

Message Control Bank - Public Support Login - Unisys

Message Control Bank - Public Support Login - Unisys

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!