Guardian Programmer's Guide
Table Of Contents
- Guardian Programmer’s Guide
- Contents
- What’s New in This Manual
- About This Manual
- Legal Notices
- 1 Introduction to Guardian Programming
- 2 Using the File System
- 3 Coordinating Concurrent File Access
- 4 Using Nowait Input/Output
- 5 Communicating With Disk Files
- Types of Disk Files
- Using Unstructured Files
- Creating Unstructured Files
- Opening Unstructured Files
- Positioning, Reading, and Writing With Unstructured Files
- Locking With Unstructured Files
- Renaming Unstructured Files
- Avoiding Unnecessary Cache Flushes to Unstructured Files
- Closing Unstructured Files
- Purging Unstructured Files
- Altering Unstructured-File Attributes
- Using Relative Files
- Using Entry-Sequenced Files
- Using Key-Sequenced Files
- Creating Key-Sequenced Files
- Opening Key-Sequenced Files
- Positioning, Reading, and Writing With Key-Sequenced Files
- Locking, Renaming, Caching, Closing, Purging, and Altering Key-Sequenced Files
- Key-Sequenced File Programming Example
- Using Alternate Keys With an Entry-Sequenced File
- Using Alternate Keys With a Key-Sequenced File
- Using Partitioned Files
- Using Alternate Keys
- 6 Communicating With Processes
- Sending and Receiving Messages: An Introduction
- Sending Messages to Other Processes
- Queuing Messages on $RECEIVE
- Receiving and Replying to Messages From Other Processes
- Receiving Messages From Other Processes: One-Way Communication
- Handling Multiple Messages Concurrently
- Checking for Canceled Messages
- Receiving and Processing System Messages
- Handling Errors
- Communicating With Processes: Sample Programs
- 7 Using DEFINEs
- 8 Communicating With a TACL Process
- 9 Communicating With Devices
- 10 Communicating With Terminals
- 11 Communicating With Printers
- 12 Communicating With Magnetic Tape
- Accessing Magnetic Tape: An Introduction
- Positioning the Tape
- Reading and Writing Tape Records
- Blocking Tape Records
- Working in Buffered Mode
- Working With Standard Labeled Tapes
- Enabling Labeled Tape Processing
- Creating Labeled Tapes
- Checking for Labeled Tape Support
- Accessing Labeled Tapes
- Writing to the Only File on a Labeled Tape Volume
- Writing to a File on a Multiple-File Labeled Tape Volume
- Writing to a File on Multiple Labeled Tape Volumes
- Reading From the Only File on a Labeled Tape Volume
- Reading From a File on a Multiple-File Labeled Tape Volume
- Reading From a File on Multiple Labeled Tape Volumes
- Accessing a Labeled Tape File: An Example
- Working With Unlabeled Tapes
- Terminating Tape Access
- Recovering From Errors
- Accessing an Unlabeled Tape File: An Example
- 13 Manipulating File Names
- 14 Using the IOEdit Procedures
- 15 Using the Sequential Input/Output Procedures
- An Introduction to the SIO Procedures
- Initializing SIO Files Using TAL or pTAL DEFINEs
- Opening and Creating SIO Files
- Getting Information About SIO Files
- Reading and Writing SIO Files
- Accessing EDIT Files
- Handling Nowait I/O
- Handling Interprocess Messages
- Handling System Messages
- Handling BREAK Ownership
- Handling SIO Errors
- Closing SIO Files
- Initializing SIO Files Without TAL or pTAL DEFINEs
- Using the SIO Procedures: An Example
- 16 Creating and Managing Processes
- 17 Managing Memory
- An Introduction to Memory-Management Procedures
- Managing the User Data Areas
- Using (Extended) Data Segments
- Overview of Selectable Segments
- Overview of Flat Segments
- Which Type of Segment Should You Use?
- Using Selectable Segments in TNS Processes
- Accessing Data in Extended Data Segments
- Attributes of Extended Data Segments
- Allocating Extended Data Segments
- Checking Whether an Extended Data Segment Is Selectable or Flat
- Making a Selectable Segment Current
- Referencing Data in an Extended Data Segment
- Checking the Size of an Extended Data Segment
- Changing the Size of an Extended Data Segment
- Transferring Data Between an Extended Data Segment and a File
- Moving Data Between Extended Data Segments
- Checking Address Limits of an Extended Data Segment
- Sharing an Extended Data Segment
- Determining the Starting Address of a Flat Segment
- Deallocating an Extended Data Segment
- Using Memory Pools
- 18 Managing Time
- 19 Formatting and Manipulating Character Data
- Using the Formatter
- Manipulating Character Strings
- Programming With Multibyte Character Sets
- Checking for Multibyte Character-Set Support
- Determining the Default Character Set
- Analyzing a Multibyte Character String
- Dealing With Fragments of Multibyte Characters
- Handling Multibyte Blank Characters
- Determining the Character Size of a Multibyte Character Set
- Case Shifting With Multibyte Characters
- Testing for Special Symbols
- Sample Program
- 20 Interfacing With the ERROR Program
- 21 Writing a Requester Program
- 22 Writing a Server Program
- 23 Writing a Command-Interpreter Monitor ($CMON)
- Communicating With TACL Processes
- Controlling the Configuration of a TACL Process
- Controlling Logon and Logoff
- Controlling Passwords
- Controlling Process Creation
- Controlling Change of Process Priority
- Controlling Adding and Deleting Users
- Controlling $CMON While the System Is Running
- Writing a $CMON Program: An Example
- Debugging a TACL Monitor ($CMON)
- 24 Writing a Terminal Simulator
- 25 Debugging, Trap Handling, and Signal Handling
- 26 Synchronizing Processes
- 27 Fault-Tolerant Programming in C
- Overview of Active Backup Programming
- Summary of Active Backup Processing
- What the Programmer Must Do
- C Extensions That Support Active Backup Programming
- Starting the Backup Process
- Opening a File With a Specified Sync Depth
- Retrieving File Open State Information in the Primary Process
- Opening Files in the Backup Process
- Retrieving File State Information in the Primary Process
- Updating File State Information in the Backup Process
- Terminating the Primary and Backup Processes
- Organizing an Active Backup Program
- Updating State Information
- Providing Communication Between the Primary and Backup Processes
- Programming Considerations
- Comparison of Active Backup and Passive Backup
- Active Backup Example 1
- Active Backup Example 2
- 28 Using Floating-Point Formats
- Differences Between Tandem and IEEE Floating-Point Formats
- Building and Running IEEE Floating-Point Programs
- Compiling and Linking Floating-Point Programs
- Link-Time Consistency Checking
- Run-Time Consistency Checking
- Run-Time Support
- Debugging Options
- Conversion Routines
- Floating-Point Operating Mode Routines
- A Mixed Data Model Programming
- Glossary
- Index

Glossary
Guardian Programmer’s Guide — 421922-014
Glossary - 26
run unit control block (RUCB)
run unit control block (RUCB). A data structure used by the INITIALIZER procedure to
specify to SIO the name of the common FCB and the number other SIO FCBs to be
created.
secondary extent. A contiguous area of disk storage allocated to a file. A file is made up of
one or more extents; the first extent is the primary extent, and other extents are
secondary extents. The secondary extents are all the same size for a specific file. The
primary extent can be a different size. See also primary extent.”
segment. In general, a contiguous sequence of logically related pages of virtual memory.
The pages of the segment are individually swapped in and out of physical memory as
needed. Within a loadable object file, one of the portions of the file that is mapped as
one unit into virtual memory as the file is loaded. See also code segment and data
segment.
segment ID. A number that identifies an extended data segment and specifies the kind of
extended data segment to allocate.
selectable segment. A type of logical segment formerly known as an extended data
segment. The data area for a selectable segment always begins with relative segment
4, and this area can be dynamically switched among several selectable segments by
calls to the Guardian SEGMENT_USE_ procedure. The effect is similar to a rapid
overlaying of one large data area. See also logical segment and flat segment.
sequence number. See process sequence number.
server. (1) An implementation of a system used as a stand-alone system or as a node in an
Expand network. (2) A combination of hardware and software designed to provide
services in response to requests received from clients across a network. For example,
HP NonStop™ servers provide transaction processing, database access, and other
services. (3) A process or program that provides services to a client or a requester.
Servers are designed to receive request messages from clients or requesters; perform
the desired operations, such as database inquiries or updates, security verifications,
numerical calculations, or data routing to other computer systems; and return reply
messages to the clients or requesters. A server process is a running instance of a
server program.
shared data segment. An extended data segment that can be accessed by more than one
process.
shared memory. An interprocess communication mechanism that allows two or more
processes to share a given region of memory.
Shared Millicode Library. An intrinsic library containing privileged or TNS-derived millicode
routines used by many native-compiled programs and by emulated TNS programs.
This library includes efficient string-move operations, TNS floating-point emulation, and
various privileged-only operations. These routines are mode independent. They
comply with native calling conventions but can be directly invoked from any mode
without changing execution modes.