Table of Contents

top   contents   index   framed top   this page unframed


TableOfContents



MAINSAIL Language Manual

1. Introduction
  1.1. Version
  1.2. The History of MAINSAIL and XIDAK
  1.3. The Design of MAINSAIL
  1.4. Terminology and Symbols
  1.5. Conventions Used in This Document
  1.5.1. User Interaction
  1.5.2. Syntax Descriptions
  1.5.3. Temporary Features
  Tables for Chapter 1: Introduction
    1–1. Data Type Abbreviations

2. Basic Language Concepts
  2.1. Character Set
  2.2. Comments
  2.3. Identifiers
  2.4. Use of Semicolons and Formatters
  2.5. Compiletime Evaluation
  2.6. Storage Units and Character Units
  2.7. Type Codes
  2.8. Garbage Collections and Memory Management
  2.8.1. How the MAINSAIL Garbage Collector Determines Whether Data Are Accessible
  2.9. cmdFile and logFile
  Tables for Chapter 2: Basic Language Concepts
    2–1. MAINSAIL Minimum Character Set
    2–2. Character-Set-Independent System Procedures
    2–5. Type Codes
  Examples for Chapter 2: Basic Language Concepts
    2–3. Legal Identifiers
    2–4. Illegal Identifiers

3. Data Types
  3.1. Overflow and Underflow
  3.1.1. How to Write (LONG) INTEGER Addition and Multiplication Routines That Do Not Overflow
  3.2. BOOLEAN
  3.3. INTEGER and LONG INTEGER
  3.4. REAL and LONG REAL
  3.5. BITS and LONG BITS
  3.6. STRING
  3.6.1. Low-Level STRING Manipulation
  3.6.2. STRING Constants and Garbage Collection
  3.7. POINTER
  3.8. $PROCVAR
  3.9. ADDRESS
  3.10. CHARADR
  3.11. Conversion Procedures
  3.12. Explicit Data Sizing
  3.12.1. Allowed Data Types and Sizes for Explicit Sizing
  3.12.2. Assignment Compatibility
  3.12.3. Where Explicitly Sized Data Types May Occur
  3.12.4. Explicitly Sized Data Types and GENERIC Procedures

4. Expressions
  4.1. Constants
  4.2. Variables
  4.3. PROCEDURE Expression
  4.4. Substrings
  4.4.1. INF
  4.5. IF Expression
  4.5.1. Operand Types and Result Type of an IF Expression
  4.5.2. IF Expressions Passed to $REFERENCE Parameters
  4.6. Assignment Expression
  4.7. Compiletime Pseudoprocedures
  4.8. Operators and Operations
  4.8.1. Why DIV and MOD Are Undefined for Negative Arguments
  4.8.2. STRING Comparison
  4.8.3. Bitwise Operations
  4.8.4. Comparison Chains
  4.8.5. Operator Precedence
  4.8.5.1. Precedence of the Assignment Operator
  4.8.6. Dotted Operators
  4.8.7. Operators and Garbage Collection
  4.9. Assignment Compatibility
  Tables for Chapter 4: Expressions
    4–1. Unary Operations
    4–2. Binary Operations
  Figures for Chapter 4: Expressions
    4–3. Precedence of the Assignment Operator in Expressions and Statements

5. Statements
  5.1. Assignment Statement
  5.2. Expression Statement
  5.3. PROCEDURE Statement
  5.4. RETURN Statement
  5.5. BEGIN Statement
  5.5.1. Special Names for Named BEGIN Statements
  5.6. IF Statement
  5.7. CASE Statement
  5.8. Iterative Statement
  5.9. DONE Statement
  5.10. CONTINUE Statement
  5.11. Empty Statement
  5.12. Parenthesized Statements
  Tables for Chapter 5: Statements
    5–3. Equivalent Forms of Iterative Statement
  Figures for Chapter 5: Statements
    5–2. Choice of a Selector Is Affected by Ordering of Selectors
  Examples for Chapter 5: Statements
    5–1. Sample CASE Statement
    5–4. Iterative Statement with a CONTINUE Statement

6. Declarations
  6.1. Scope of Identifiers
  6.2. Simple Variable Declarations
  6.3. Qualifiers
  6.4. OWN Qualifier
  6.5. $SHARED Qualifier
  Figures for Chapter 6: Declarations
    6–1. Where Declarations May Occur

7. PROCEDUREs
  7.1. PROCEDURE Declarations
  7.2. PROCEDURE Calls
  7.3. Typed and Untyped PROCEDUREs
  7.4. Parameters to PROCEDUREs
  7.5. Parameter Qualifiers
  7.5.1. USES
  7.5.2. PRODUCES
  7.5.3. MODIFIES
  7.5.4. $REFERENCE
  7.5.4.1. Classification of $REFERENCE Inplace Record Parameters
  7.5.4.2. The Null $REFERENCE
  7.5.4.3. Untyped $REFERENCE
  7.5.4.4. Type Compatibility for $REFERENCE Parameters
  7.5.4.5. $ref
  7.5.4.6. Efficiency of $REFERENCE Parameters
  7.5.5. OPTIONAL
  7.5.6. REPEATABLE
  7.6. User-Declared CLASS Parameters
  7.7. Order of Argument Evaluation
  7.8. Inplace Record Parameters
  7.9. Dynamic ARRAY Parameters
  7.10. Inplace ARRAY Parameters
  7.11. PROCEDURE Qualifiers
  7.12. Recursion
  7.13. FORWARD PROCEDUREs
  7.13.1. FORWARD for Mutual Recursion
  7.13.2. FORWARD for Source Library Declarations
  7.14. INLINE PROCEDUREs
  7.15. The COMPILETIME PROCEDURE Qualifier
  7.15.1. SPECIAL and $BUILTIN Compiletime System PROCEDUREs
  7.15.2. Other System Compiletime PROCEDUREs and User Compiletime PROCEDUREs
  7.15.2.1. How User-Declared Compiletime PROCEDUREs Are Handled
  7.16. GENERIC PROCEDUREs
  7.16.1. Sample GENERIC System PROCEDURE
  7.16.2. GENERIC PROCEDURE Instance Selection Algorithm
  7.16.3. GENERIC PROCEDURE Selection and LONG ARRAYs
  7.16.4. GENERIC PROCEDURE Selection and STRICTCLASSES
  7.16.5. GENERIC PROCEDURE Selection Is Not Based on Return Types
  7.16.6. GENERIC PROCEDUREs and Explicit Sizes for Parameter Data Types
  7.16.7. GENERIC PROCEDURE Extension
  7.17. Stack Overflow
  Figures for Chapter 7: PROCEDUREs
    7–1. Format of a PROCEDURE Declaration
  Examples for Chapter 7: PROCEDUREs
    7–2. A Parameter May Be Used Like Any Other Local Variable
    7–3. PRODUCES Parameters Are Not Automatically Initialized
    7–4. A FORWARD PROCEDURE

8. PROCEDURE Variables
  8.1. Declaration
  8.2. Zero
  8.3. Assignment Compatibility
  8.3.1. Safe and Unsafe Assignment of $PROCVARs
  8.3.2. Examples of Safe and Legal $PROCVAR Assignments
  8.4. Operations
  8.4.1. $PROCVAR-Valued PROCEDUREs
  8.5. $PROC
  8.6. Initialization
  8.7. $newProcvar
  8.8. $PROCVAR Example

9. CLASSes and POINTERs
  9.1. Classified POINTERs and ADDRESSes
  9.1.1. Forward CLASSes
  9.1.2. Classified ADDRESSes
  9.2. Unclassified POINTERs and ADDRESSes
  9.2.1. Use of Unclassified POINTERs Requires Caution
  9.3. Classification of Inplace Records
  9.4. Accessing Fields of Records, Data Sections, and Storage Templates
  9.5. Explicit CLASSes
  9.5.1. POINTERs and ADDRESSes with Explicit CLASSes
  9.5.1.1. Use of Explicit CLASSes in POINTER or ADDRESS Field Variables
  9.5.1.2. Use of Explicit CLASSes for POINTERs and ADDRESSes outside Field Variables
  9.5.2. Inplace Records with Explicit CLASSes
  9.6. Prefix CLASSes
  9.6.1. Accessing Prefix Fields
  9.7. Related CLASSes
  9.8. Safe and Unsafe Assignment of POINTERs
  9.9. Explicit Alignment of CLASSes
  9.9.1. Aligned CLASSes and Foreign Languages
  9.9.2. Alignment Rules for Each Platform
  9.9.3. Assignment Compatibility
  Tables for Chapter 9: CLASSes and POINTERs
    9–3. Alignment Rules for Each Platform
  Figures for Chapter 9: CLASSes and POINTERs
    9–2. Fields of a Record of a Prefixed CLASS
    9–4. Field Alignment under Different Alignment Rules
  Examples for Chapter 9: CLASSes and POINTERs
    9–1. The Use of Field Variables

10. Records
  10.1. Inplace Records
  10.2. Dynamic Records
  10.3. Inplace Record Declaration
  10.4. Declaration of POINTERs to Dynamic Records
  10.5. Inplace Record Allocation
  10.6. Dynamic Record Allocation
  10.7. Inplace Record Operations
  10.7.1. Field Access
  10.7.1.1. Fields of Record Expressions
  10.7.2. Assignment
  10.7.2.1. Explicit Classification and Inplace Records
  10.7.3. Inplace Records as PROCEDURE Parameters
  10.7.4. Miscellaneous Operations
  10.7.4.1. Inplace Records and the Foreign Language Interface
  10.8. Dynamic Record Operations
  10.8.1. Field Access
  10.8.1.1. Explicit Classification and Dynamic Record Fields
  10.8.2. Assignment
  10.8.2.1. Copying Fields from One Dynamic Record to Another
  10.8.3. Dynamic Records as PROCEDURE Parameters
  10.8.4. Miscellaneous Operations
  10.9. Deallocating Inplace Records
  10.10. Deallocating Dynamic Records
  10.11. When to Use Inplace Records and When to Use Dynamic Records
  10.12. How to Make a PROCEDURE Able to Take Both Inplace Records and POINTERs to Dynamic Records as Arguments
  10.13. The Layout of Fields within a Record
  10.13.1. The Layout of Fields within a Record of a Prefixed CLASS
  Figures for Chapter 10: Records
    10–1. A Record with Three Fields
    10–2. A POINTER p to a Dynamic Record
    10–3. An Inplace Record r

11. MODULEs and Data Sections
  11.1. Bound and Nonbound Data Sections
  11.2. MODULE Declaration
  11.3. Indirect Access to Interface Fields
  11.4. CLASSes with PROCEDUREs and CLASSes as Prefixes of MODULEs
  11.5. Direct Access to Interface Fields
  11.6. MODULE Allocation and Disposal
  11.7. Allocation of a Dynamic Record of a CLASS with PROCEDURE Fields
  11.8. Garbage Collection of Data Sections
  11.9. Establishing MODULE Linkage
  11.10. Intermodule Consistency Checking
  11.10.1. Detailed Intermodule Consistency Checking Rules, with an Example
  11.11. INITIAL PROCEDURE
  11.12. FINAL PROCEDURE
  11.12.1. FINAL PROCEDUREs and $exitingMainsail
  11.12.2. How to Avoid Problems During a Call to exit
  11.13. GENERIC PROCEDUREs as Field Variables
  11.14. Control Sections and MODULE Swapping
  11.14.1. Deletion of Swap Files
  11.15. Compilation of Several MODULEs in One File
  11.16. Nonbound-Invocation MODULEs
  Tables for Chapter 11: MODULEs and Data Sections
    11–1. A MAINSAIL MODULE
  Figures for Chapter 11: MODULEs and Data Sections
    11–4. Accessing Data Section Fields with a POINTER
  Examples for Chapter 11: MODULEs and Data Sections
    11–2. Sample MODULE Declaration
    11–3. Sample MODULE Declaration Using a CLASS

12. ARRAYs
  12.1. Inplace ARRAYs
  12.2. Dynamic ARRAYs
  12.3. ARRAY Declarations
  12.3.1. Inplace ARRAY Bounds
  12.3.2. LONG ARRAYs
  12.4. Inplace ARRAY Allocation
  12.5. Dynamic ARRAY Allocation
  12.6. Accessing an ARRAY Element
  12.7. ARRAY Bounds and Subscript Calculation Overflow
  12.8. ARRAY Pseudofields
  12.8.1. NULLARRAY Checking for Compiletime-Evaluated Pseudofields of ARRAYs
  12.9. Inplace ARRAY Operations
  12.9.1. Assignment
  12.9.2. Inplace ARRAYs as PROCEDURE Parameters
  12.9.3. Miscellaneous
  12.9.3.1. Inplace ARRAYs and the Foreign Language Interface
  12.10. Dynamic ARRAY Operations
  12.10.1. Dynamic ARRAY Assignment
  12.10.1.1. Copying Elements from One Dynamic ARRAY to Another
  12.10.2. Dynamic ARRAY Initialization
  12.10.3. Dynamic ARRAY Comparison
  12.10.4. Converting a POINTER to an ARRAY and Vice Versa
  12.10.5. Miscellaneous
  12.10.5.1. Copying a Dynamic ARRAY
  12.10.5.2. Clearing a Dynamic ARRAY
  12.11. Deallocating Inplace ARRAYs
  12.12. Deallocating Dynamic ARRAYs
  12.13. How ARRAYs Are Stored in Memory
  12.14. Unsized Inplace ARRAYs and Unsized CLASSes
  12.14.1. Parameterized Records
  Tables for Chapter 12: ARRAYs
    12–1. ARRAY Pseudofields
    12–3. Array arr3 as a Matrix
  Figures for Chapter 12: ARRAYs
    12–2. Pointer Semantics of Dynamic ARRAYs

13. Intmods
  13.1. Typical Use of Intmods
  13.2. Intmod Directives
  13.2.1. Opening Intmods and Accessing Symbols
  13.2.2. MODULE Visibility
  13.2.3. Qualified Identifiers: Low-Level Access to Identifiers from Intmods
  13.2.3.1. Example of the Use of Qualified Identifiers to Distinguish between Symbols from Two Different Open Intmods
  13.2.4. Individual Symbol Visibility
  13.3. RESTOREFROM and SAVEON
  13.4. Visibility from Supporting Intmods When a RESTOREFROM Is Done
  13.5. MAKEMODULEALLVISIBLE
  13.6. Unqualified Identifier Search Rules
  13.7. Use of Symbols from an Intmod
  13.7.1. Redefining Macros from Intmods
  13.7.2. CLASSes Declared in Different Intmods Are Different CLASSes
  13.8. Intmod Search Rules
  13.9. Changing an Intmod
  13.9.1. Innocuous Intmod Changes
  13.10. Intmods vs. the SOURCEFILE Directive
  Examples for Chapter 13: Intmods
    13–1. Use of Intmods to Maintain Common Declarations

14. Objmods, Intmods, Libraries, and Search Rules
  14.1. Objmod and Intmod File Names
  14.2. Objmod and Intmod Search Rules
  14.3. Summary of Search Rules

15. Macros
  15.1. DEFINE
  15.2. REDEFINE
  15.3. Bracketed Text
  15.4. Interactive Definition
  15.5. Macro Calls
  15.6. Macro Arguments
  15.6.1. REPEATABLE Macro Parameters, $numArgs, $arg, and $sArg
  15.7. Determining Whether a Macro Argument Has Been Omitted
  15.7.1. Omitted Macro Arguments and Empty Macro Arguments
  15.8. Bracketed Text in Constant Expressions
  15.9. Forcing Evaluation of Macro Arguments before Passing: $expandMacro and $expandExpr
  15.9.1. $expandMacro
  15.9.2. $expandExpr
  15.10. L Cannot Be Used as a Macro Parameter If Macro Body Contains LONG Constants
  Examples for Chapter 15: Macros
    15–1. Use of REDEFINE

16. Compiler Directives and Conditional Compilation
  16.1. MESSAGE
  16.2. SOURCEFILE
  16.3. CHECK, NOCHECK, and CHECKING
  16.4. $DIRECTIVE
  16.4.1. HIDEPROC Directive
  16.4.2. DATETIMECHECK/NODATETIMECHECK Compiler Directives
  16.5. SAVEON and RESTOREFROM
  16.6. ENCODE
  16.7. $GLOBALREDEFINE
  16.8. DSP and $LDSP
  16.9. $sizeOfField
  16.10. $sizeOfValue
  16.11. $LEGALNOTICE
  16.12. Conditional Compilation: IFC, THENC, $EFC, ELSEC, and ENDC
  16.13. $CASEC: Compiletime Case
  16.13.1. Selectors
  16.13.2. Selector Matching Rules
  16.13.3. Delimiters of Selected Text
  16.14. $BEGINC
  16.15. $DOC, $DONEC, $CONTINUEC, $FORC: Compiletime Iteration
  16.15.1. $DOC iteratedText ENDC
  16.15.2. $DONEC and $CONTINUEC
  16.15.3. $FORC
  16.16. Conditional Compilation and End-of-File
  16.17. DCL
  16.18. $TYPEOF
  16.19. $CLASSOF
  16.20. $ISCONSTANT
  16.21. Scanning Directives
  16.22. NEEDBODY and NEEDANYBODIES
  16.23. $compileTimeValue
  16.24. $def

17. Optimization and Checking
  17.1. Optimization
  17.1.1. $compileTimeValue("OPTIMIZE")
  17.2. Checking
  17.2.1. $compileTimeValue("CHECKINGSTATUS"), $compileTimeValue("LOCALCHECKINGSTATUS"), and CHECKING
  17.3. Arithmetic Checking
  17.4. Uninitialized Variable Checking
  17.5. When Checking May Fail to Raise an Exception
  Tables for Chapter 17: Optimization and Checking
    17–1. Effects of Optimization Directives outside Any PROCEDURE Body or Specified as a Compiler Subcommand
    17–2. Effects of Optimization Directives inside a PROCEDURE p
    17–3. Effects of Checking Directives outside Any PROCEDURE Body or Specified as a Compiler Subcommand
    17–4. Effects of Checking Directives inside a PROCEDURE p

18. SUPERCHECK
  18.1. What SUPERCHECK Checks
  18.1.1. Implementation Overview: Data Field References
  18.1.2. Implementation Overview: Intermodule Calls
  18.1.3. Implementation Overview: $PROCVAR Calls
  18.2. Decreased Frequency of POINTER Rigging: DELAYRIGPTRS
  18.3. Effect of SUPERCHECK on Speed
  18.4. Effect of SUPERCHECK on Size

19. Compiletime Execution of Arbitrary MAINSAIL Code: $expr, $STMT, and $UNDCL
  19.1. $expr
  19.2. $STMT
  19.3. Identifiers That May Be Accessed by $exprs and $STMTs
  19.4. $UNDCL
  19.5. A Sophisticated Example of $STMT, $expr, and $UNDCL: Using the Contents of a File as the Initialization Specifiers in an INIT Statement
  Examples for Chapter 19: Compiletime Execution of Arbitrary MAINSAIL Code: $expr, $STMT, and $UNDCL
    19–1. Initialization Specifiers from a File without the Use of an Auxiliary Temporary File
    19–2. Initialization Specifiers from a File Using an Auxiliary Temporary File

20. Exceptions
  20.1. $HANDLE Statement
  20.2. Handling Exceptions
  20.3. Propagating Exceptions
  20.4. Information about the Current Exception
  20.5. Nested Exceptions
  20.5.1. Exceptions Raised While an Exception with $cannotFallOut Set Is Being Handled
  20.6. Aborting PROCEDUREs
  20.7. Exception Naming Conventions
  20.8. Predefined Exceptions
  20.8.1. $abortProgramExcpt and $systemExcpt
  20.9. Informational Exceptions
  20.10. errMsg Response Abbreviations
  20.10.1. Sample Use of Registered Exceptions
  20.11. Visualizing Exceptions
  Tables for Chapter 20: Exceptions
    20–1. System PROCEDUREs, Variables, and Macros for Exceptions
  Figures for Chapter 20: Exceptions
    20–2. Stack Diagrams in the Absence of Exceptions and $HANDLE Statements
    20–3. Depiction of a Handle Frame
    20–4. An Exception Is Caught by the First Ready Handler down the Stack
    20–5. An Exception is Propagated by a Call to $raise with No Arguments
    20–6. Frames Invoked from a Handler
    20–7. Exception Raised in a Handler
    20–8. $abortProcedureExcpt is Raised in All Handle Frames in PROCEDUREs That Are Being Aborted

21. Coroutines
  21.1. Coroutine Facilities
  21.2. Coroutine Implementation
  21.3. Coroutines and Exceptions
  21.4. C Exceptions and MAINSAIL Coroutines
  Tables for Chapter 21: Coroutines
    21–1. System PROCEDUREs, Variables, and Macros for Coroutines
  Examples for Chapter 21: Coroutines
    21–2. Generator/Processor Coroutines
    21–3. Coroutine Tree

22. Files
  22.1. File Names
  22.2. The CLASSes file, textFile, and dataFile
  22.3. Text Files
  22.4. Data Files
  22.5. Input and Output
  22.6. Sequential and Random Access
  22.7. End-of-File Positions
  22.8. Opening a File
  22.9. Closing a File
  22.10. Terminal I/O and Primary Input and Output
  22.11. Device MODULEs
  22.12. cmdFile and logFile and MAINSAIL Standard Input and Output
  22.13. errorOK and File I/O
  22.14. End-of-Line Conventions
  22.14.1. CRLF Device Prefix
  22.14.2. LF Device Prefix
  22.14.3. Changing the Default Text File Device Prefix
  22.14.4. Converting CRLF Files to LF Files and Vice Versa
  22.15. cmdFile and logFile Echoing
  22.16. Caching of Files
  22.16.1. Background: Buffered I/O
  22.16.2. Introduction to the File Cache
  22.16.3. File Cache PROCEDUREs
  22.17. Disk I/O and the BIGMSLBUFFERS Environment Variable
  22.18. Partial Data Reads
  Tables for Chapter 22: Files
    22–1. System PROCEDUREs for Files
  Figures for Chapter 22: Files
    22–2. File Name And Device Mapping

23. Intercepting Terminal I/O
  23.1. $ttyCls and $ttyMod
  23.2. How to Write a $ttyCls MODULE
  23.2.1. How to Write $ttyCls.$ttyRead
  23.2.2. How to Write $ttyCls.$sttyWrite and $ttyCls.$ttycWrite
  23.2.3. How to Set $ttyCls.$ttyAttributes
  23.3. Direct Terminal I/O
  23.4. Sample Use of Terminal I/O Redirection and Direct Terminal I/O
  Figures for Chapter 23: Intercepting Terminal I/O
    23–1. Intmod with SCRIPTTTY Interface
    23–2. SCRIPTTTY: $ttyCls MODULE That Maintains a Transcript
    23–3. ST: Module That Uses SCRIPTTTY

24. Date and Time Facilities
  24.1. Representation of Dates and Times
  24.2. Information Required by MAINSAIL
  24.3. GMT Conversions and $timeSubcommandsSet
  24.4. Conversion Caveats at the Start and End of Daylight Savings Time (or Other Adjusted Time)
  24.5. MAINEX Time Subcommand Values Appropriate to the Forty-Eight Contiguous United States
  Tables for Chapter 24: Date and Time Facilities
    24–1. System PROCEDUREs and Macros for Date and Time
    24–2. MAINEX Time Subcommand Values for the Contiguous United States
    24–3. Subcommands Defining the Names of the Time Zones in the Forty-Eight Contiguous United States
    24–4. Subcommands for the Eastern Time Zone: from the Atlantic Seaboard West through Michigan, Eastern Kentucky, Eastern Tennessee, Georgia, and Florida Exclusive of the Panhandle
    24–5. Subcommands for Indiana except Parts of the Extreme West
    24–6. Subcommands for the Central Time Zone: Wisconsin, Illinois, Parts of Extreme Western Indiana, Western Kentucky, Western Tennessee, Alabama, the Florida Panhandle, Mississippi, Louisiana, Arkansas, Missouri, Iowa, Minnesota, Eastern North Dakota, Eastern South Dakota, Eastern Nebraska, Kansas except Parts of the Extreme West, Oklahoma, and Texas except the Extreme West
    24–7. Subcommands for the Mountain Time Zone: Western North Dakota, Western South Dakota, Western Nebraska, Parts of Extreme Western Kansas, Extreme Western Texas, New Mexico, Colorado, Wyoming, Montana, Southern Idaho, Parts of Extreme Eastern Oregon, and Utah
    24–8. Subcommands for Arizona
    24–9. Subcommands for the Pacific Time Zone: Northern Idaho, Washington, Oregon except Parts of the Extreme East, Nevada, and California

25. Areas
  25.1. Examples and Motivation
  25.2. Area Facilities
  25.2.1. Allocation, Clearing, and Disposal
  25.2.2. Specifying Memory Management Attributes of an Area
  25.3. Inaccessible Areas
  25.4. Anchored Areas
  25.4.1. When to Use Anchored Areas
  25.4.2. How to Anchor an Area
  25.4.3. Compatibility of $anchored with Other Area Attributes
  25.4.4. Preallocated Space for Areas
  25.5. Area Caveats
  Figures for Chapter 25: Areas
    25–1. POINTER Assignment That Violates the Bits Specified in $newArea's attr Argument
    25–2. Dangling POINTERs and STRINGs after an Area Is Disposed

26. Portable Data Format (PDF)
  26.1. Introduction
  26.2. PDF I/O
  26.2.1. PDF I/O and $storageUnit/$page I/O
  26.3. Opening a File for PDF I/O
  26.4. Positions in a File Opened for PDF I/O
  26.5. $ioSize
  26.6. PDF Example
  Tables for Chapter 26: Portable Data Format (PDF)
    26–1. Portable Data Format (PDF) Representation of Data
  Figures for Chapter 26: Portable Data Format (PDF)
    26–2. PDF Data Files vs. Host Data Files
    26–4. How to Run FVIEW
  Examples for Chapter 26: Portable Data Format (PDF)
    26–3. Data-Format-Independent I/O

27. Potential Pitfalls in Moving a 32-Bit MAINSAIL Application to 64-Bit MAINSAIL
  27.1. Constants
  27.2. Alignment Gaps
  27.3. Relationship between MAINSAIL and C Data Types
  27.4. Assumption That size(realCode) = size(longBitsCode))
  27.5. Assumption That size(longBitsCode) = 32
  27.6. Data Files
  27.7. FLI Parameter Data Types and C Data Type Macros
  27.8. PDF

28. Generalized Parameter Files
  28.1. The v1620.prm File
  28.2. Format of a Parameter File
  28.3. Parameter Groups Used by XIDAK Software
  28.3.1. The Group $MAINEX
  28.3.2. The Group $COMPIL
  28.3.3. The Group $MAINEDIT
  28.3.4. The Group $MAINED
  28.3.5. The Group $MAINDEBUG
  28.3.6. Sample Parameter File
  28.4. How to Process Parameters in a Program
  28.5. Recommendations for Use of Parameters
  Figures for Chapter 28: Generalized Parameter Files
    28–1. PROCEDUREs for Processing Parameters

29. Introduction to System PROCEDUREs, Macros, and Variables
  29.1. System PROCEDUREs and Garbage Collection
  29.2. The $BUILTIN PROCEDURE Qualifier
  29.3. The SPECIAL PROCEDURE Qualifier
  29.4. Area Facility Declarations
  29.5. System Procedures, Variables, and Macros Summary
  Tables for Chapter 29: Introduction to System PROCEDUREs, Macros, and Variables
    29–1. System Procedures, Macros, and Variables Summary

30. System Identifiers Beginning with “A”
  30.1. $abortProcedureExcpt
  30.2. $abortProgramExcpt
  30.3. abs
  30.4. aCos
  30.5. $addDefinedTimeZone
  30.6. $addMemMngModule
  30.7. $addToDateAndTime
  30.8. $adrOfFirstElement
  30.9. $allYearDigits
  30.10. $almostOutOfMemoryExcpt
  30.11. aLoad
  30.12. alterOK
  30.13. $anchored
  30.14. append
  30.15. $applySearchPath
  30.16. $areaOf
  30.17. $arg
  30.18. $arithmeticExcpt
  30.19. aSin
  30.20. $assembleDate
  30.21. $assembleDateAndTime
  30.22. $assembleTime
  30.23. aTan
  30.24. $atan2
  30.25. $atLeastOneDigitAfterDot
  30.26. $attributes
  Figures for Chapter 30: System Identifiers Beginning with “A”
    30–1. $abortProcedureExcpt
    30–2. $abortProgramExcpt
    30–3. abs (GENERIC)
    30–4. aCos (GENERIC)
    30–5. $addDefinedTimeZone
    30–6. $addMemMngModule
    30–7. The CLASS $memMngModule
    30–8. $addToDateAndTime
    30–9. $adrOfFirstElement
    30–10. $allYearDigits
    30–11. $almostOutOfMemoryExcpt
    30–12. alterOK
    30–13. $anchored
    30–14. append
    30–15. $applySearchPath and $getSearchPath
    30–16. $areaOf (GENERIC)
    30–17. $arithmeticExcpt
    30–18. aSin (GENERIC)
    30–19. $assembleDate
    30–20. $assembleDateAndTime
    30–21. $assembleTime
    30–22. aTan (GENERIC)
    30–23. $atan2 (GENERIC)
    30–24. What the Return Value from $atan2 Represents
    30–25. $atLeastOneDigitAfterDot
    30–26. $attributes

31. System Identifiers Beginning with “B”
  31.1. $baseType
  31.2. $bGet
  31.3. $bigEndian
  31.4. binary
  31.5. bind
  31.5.1. Handling Errors from bind
  31.6. $bitsPerChar
  31.7. $bitsPerStorageUnit
  31.8. bLoad
  31.9. bMask
  31.10. $boGet
  31.11. boLoad
  31.12. break
  31.13. $briefFormat
  31.14. $bsFormat
  Tables for Chapter 31: System Identifiers Beginning with “B”
    31–5. Valid Bits for bind ctrlBits
  Figures for Chapter 31: System Identifiers Beginning with “B”
    31–1. $baseType
    31–2. $bigEndian
    31–3. binary
    31–4. bind (GENERIC)
    31–6. $bitsPerChar
    31–7. $bitsPerStorageUnit
    31–8. bMask
    31–10. break
    31–11. $briefFormat
    31–12. $bsFormat
  Examples for Chapter 31: System Identifiers Beginning with “B”
    31–9. Use of bMask

32. System Identifiers Beginning with “C”
  32.1. $canFindModule
  32.2. $cannotFallOut
  32.3. $cannotReturn
  32.4. $canReclaimStrings
  32.5. $caseIndexExcpt
  32.6. $CDOUBLE
  32.7. ceiling
  32.8. $CFLOAT
  32.9. $changeAreaParms
  32.10. $CHAR
  32.11. $characterRead
  32.12. $characterWrite
  32.13. $CHARBITS
  32.14. $charSet
  32.15. $charsPerPage
  32.16. $charsPerStorageUnit
  32.17. $checkConsistency
  32.18. $CINT
  32.19. $CINTBITS
  32.20. $classDscrFor
  32.21. $classInfo
  32.22. $className
  32.22.1. $className of a Data Section
  32.23. clear
  32.24. $clearArea
  32.25. $clearFileCache
  32.26. $cleartDelayPtrRigging
  32.27. $clearStrSpc
  32.28. cLoad
  32.29. $CLONG
  32.30. $CLONGBITS
  32.31. close
  32.32. $closedFile
  32.33. closeLibrary
  32.34. $clrConfigurationBit
  32.35. $clrSystemBit
  32.36. cmdFile
  32.37. $cmdFileEofExcpt
  32.38. cmdMatch
  32.38.1. The Default Case (No Bits Set in ctrlBits)
  32.38.2. Non-Default Cases (ctrlBits is Non-Zero)
  32.38.3. Examples of cmdMatch
  32.38.4. The upperCase Bit to cmdMatch
  32.39. $collect
  32.40. $collectableChkSpc
  32.41. $collectableStrSpc
  32.42. $collectLock
  32.43. $compactableChkSpc
  32.44. compare
  32.45. $compareIntmods
  32.46. $compareObjmods
  32.47. $compile
  32.48. $compileTimeValue
  32.49. $composeFileName
  32.50. $composePath
  32.51. $concat
  32.52. confirm
  32.53. $convertDateAndTime
  32.54. copy
  32.55. $copyDirectory
  32.56. $copyFile
  32.57. $copyStringToField
  32.58. $coroutineExcpt
  32.59. cos
  32.60. cosh
  32.61. $cot
  32.62. $cpuID
  32.63. $cpuTime
  32.64. $cpuTimeResolution
  32.65. $cr
  32.66. cRead
  32.67. create
  32.68. $createClassDscr
  32.69. $createCoroutine
  32.70. $createDirectory
  32.71. $createParameterizedRecord
  32.72. $createRecord
  32.73. $createUniqueFile
  32.74. $cScan
  32.75. $CSHORT
  32.76. $CSHORTBITS
  32.77. $cStr
  32.78. $CSTRUCT
  32.79. $currentDirectory
  32.80. cva
  32.81. cvAry
  32.82. cvb
  32.83. $cvbo
  32.84. cvc
  32.85. cvcs
  32.86. $cvFieldToString
  32.87. $cvFieldToStringInPlace
  32.88. cvi
  32.89. cvl
  32.90. cvlb
  32.91. cvli
  32.92. cvlr
  32.93. cvp
  32.94. cvr
  32.95. cvs
  32.95.1. The BOOLEAN Form of cvs
  32.95.2. The (LONG) INTEGER Forms of cvs
  32.95.3. The (LONG) REAL Forms of cvs
  32.95.4. The (LONG) BITS Forms of cvs
  32.95.5. The STRING Form of cvs
  32.96. cvu
  32.97. cWrite
  Figures for Chapter 32: System Identifiers Beginning with “C”
    32–1. $canFindModule
    32–2. $cannotFallOut
    32–3. $cannotReturn
    32–4. $canReclaimStrings
    32–5. $caseIndexExcpt
    32–6. ceiling (GENERIC)
    32–8. $changeAreaParms
    32–9. $characterRead
    32–10. $characterWrite
    32–11. $charSet
    32–12. $charsPerPage
    32–13. $charsPerStorageUnit
    32–14. $checkConsistency
    32–15. $classDscrFor
    32–16. $classInfo
    32–18. $className
    32–20. clear (GENERIC)
    32–22. $clearArea
    32–23. $clearFileCache
    32–24. $cleartDelayPtrRigging
    32–25. $clearStrSpc
    32–27. Effects of $clearArea and $clearStrSpc
    32–28. cLoad
    32–30. close
    32–32. $closedFile
    32–33. closeLibrary
    32–35. $clrConfigurationBit
    32–36. $clrSystemBit
    32–37. cmdFile
    32–38. $cmdFileEofExcpt
    32–39. cmdMatch
    32–40. $collect
    32–41. $collectableChkSpc
    32–42. $collectableStrSpc
    32–43. $collectLock
    32–44. $compactableChkSpc
    32–45. compare
    32–47. $compileTimeValue
    32–48. $composeFileName
    32–49. $composePath
    32–50. $concat
    32–51. confirm
    32–52. $convertDateAndTime
    32–53. copy (GENERIC)
    32–55. $copyDirectory
    32–56. $copyFile
    32–57. $copyStringToField
    32–58. $coroutineExcpt
    32–59. cos (GENERIC)
    32–60. cosh (GENERIC)
    32–61. $cot (GENERIC)
    32–62. $cpuID
    32–63. $cpuTime
    32–64. $cpuTimeResolution
    32–65. $cr
    32–66. cRead (GENERIC)
    32–67. create
    32–68. $createClassDscr
    32–70. $createCoroutine
    32–71. $createDirectory
    32–72. $createParameterizedRecord
    32–73. $createRecord
    32–75. $createUniqueFile (GENERIC)
    32–76. $cScan
    32–77. $cStr
    32–78. $currentDirectory (GENERIC)
    32–79. cva (GENERIC)
    32–81. cvAry (GENERIC)
    32–82. cvb (GENERIC)
    32–84. $cvbo
    32–85. cvc (GENERIC)
    32–87. cvcs
    32–89. $cvFieldToString
    32–90. $cvFieldToStringInPlace
    32–91. cvi (GENERIC)
    32–93. cvl (GENERIC)
    32–95. cvlb (GENERIC)
    32–98. cvli (GENERIC)
    32–100. cvlr (GENERIC)
    32–102. cvp (GENERIC)
    32–104. cvr (GENERIC)
    32–105. cvs (GENERIC)
    32–109. cvu (GENERIC)
    32–111. cWrite (GENERIC)
  Examples for Chapter 32: System Identifiers Beginning with “C”
    32–7. Use of ceiling
    32–17. Use of $classInfo
    32–19. Behavior of $className with Data Section Arguments
    32–21. Use of clear for a Dynamic ARRAY
    32–26. Use of $clearStrSpc
    32–29. Use of cLoad
    32–31. Use of close
    32–34. Use of closeLibrary
    32–46. Use of compare
    32–54. Use of copy
    32–69. Use of $createClassDscr
    32–74. Use of $createRecord
    32–80. Use of cva
    32–83. Use of cvb
    32–86. Use of cvc
    32–88. Use of cvcs
    32–92. Use of cvi
    32–94. Use of cvl
    32–96. Use of cvb
    32–97. Use of cvlb
    32–99. Use of cvli
    32–101. Use of cvlr
    32–103. Use of cvp
    32–106. Use of (LONG) INTEGER Forms of cvs
    32–107. Use of (LONG) REAL Forms of cvs
    32–108. Use of (LONG) BITS Forms of cvs
    32–110. Use of cvu
    32–112. Use of the File and STRING Forms of cWrite
    32–113. Use of the CHARADR Form of cWrite

33. System Identifiers Beginning with “D”
  33.1. $data
  33.2. $dataSecPart
  33.3. $date
  33.4. $dateAndTime
  33.5. $dateAndTimeCompare
  33.6. $dateAndTimeDifference
  33.7. $dateAndTimeToStr
  33.8. $dateFormat
  33.9. $dateToStr
  33.10. $debugExec
  33.11. $decomposeFileName
  33.12. $decomposePath
  33.13. $def
  33.14. $defaultArea
  33.15. delete
  33.16. $delete
  33.17. $deleteDirectory
  33.18. $deregisterException
  33.19. $descendantKilledExcpt
  33.20. $devModBrk
  33.21. $devModBrkStr
  33.22. $directory
  33.22.1. Transforming a Directory Name into a Relative Path Name
  33.23. Direct Terminal I/O Routines
  33.24. $disassembleDate
  33.25. $disassembleDateAndTime
  33.26. $disassembleTime
  33.27. discard
  33.28. displace
  33.29. displacement
  33.30. dispose
  33.31. $disposeArea
  33.32. $disposeDataSecsInArea
  33.33. $disposedDataSecExcpt
  33.34. $doNotAllocateInStaticPool
  33.35. $doNotClear
  33.36. $doNotIncludeTimeZone
  33.37. $doNotMatch
  33.38. $doNotRaise
  33.39. $dscrPtr
  33.40. DSP
  33.41. $dup
  Figures for Chapter 33: System Identifiers Beginning with “D”
    33–1. $data
    33–2. $dataSecPart
    33–3. $date
    33–4. $dateAndTime
    33–5. $dateAndTimeCompare
    33–6. $dateAndTimeDifference
    33–7. $dateAndTimeToStr
    33–8. $dateFormat
    33–9. $dateToStr
    33–10. $decomposeFileName
    33–11. $decomposePath
    33–12. $defaultArea
    33–13. delete
    33–14. $delete
    33–15. $deleteDirectory
    33–16. $deregisterException
    33–17. $descendantKilledExcpt
    33–18. $devModBrk
    33–19. $devModBrkStr
    33–21. $directory (GENERIC)
    33–22. Direct Terminal I/O Routines
    33–23. $disassembleDate
    33–24. $disassembleDateAndTime
    33–25. $disassembleTime
    33–26. discard
    33–27. displace (GENERIC)
    33–29. displacement (GENERIC)
    33–31. dispose (GENERIC)
    33–32. $disposeArea
    33–33. $disposeDataSecsInArea
    33–34. $disposedDataSecExcpt
    33–35. $doNotAllocateInStaticPool
    33–36. $doNotClear
    33–37. $doNotIncludeTimeZone
    33–38. $doNotMatch
    33–39. $doNotRaise
    33–40. $dscrPtr
    33–41. $dup
  Examples for Chapter 33: System Identifiers Beginning with “D”
    33–20. Use of $devModBrkStr
    33–28. Use of displace
    33–30. Use of displacement

34. System Identifiers Beginning with “E”
  34.1. enterLogicalName
  34.2. eof
  34.3. eol
  34.4. eop
  34.5. equ
  34.6. errMsg
  34.7. errorOK
  34.8. $exceptionBits
  34.9. $exceptionCoroutine
  34.10. $exceptionName
  34.11. $exceptionPointerArg
  34.12. $exceptionStringArg1
  34.13. $exceptionStringArg2
  34.14. $excludeSeconds
  34.15. $executeIntlibCommands
  34.16. $executeMainpmCommands
  34.17. $executeModlibCommands
  34.18. $executeStampCommands
  34.19. exit
  34.20. $exitingMainsail
  34.21. exp
  34.22. $expandExpr and $expandMacro
  34.23. exponent
  34.24. $exponentExcpt
  34.25. $expr
  Figures for Chapter 34: System Identifiers Beginning with “E”
    34–1. enterLogicalName
    34–2. eof
    34–3. eol
    34–4. eop
    34–5. equ
    34–7. errMsg
    34–8. errorOK
    34–9. $exceptionBits
    34–10. $exceptionCoroutine
    34–11. $exceptionName
    34–12. $exceptionPointerArg
    34–13. $exceptionStringArg1
    34–14. $exceptionStringArg2
    34–15. $excludeSeconds
    34–16. exit
    34–17. $exitingMainsail
    34–18. exp (GENERIC)
    34–19. exponent
    34–20. $exponentExcpt
  Examples for Chapter 34: System Identifiers Beginning with “E”
    34–6. Use of equ

35. System Identifiers Beginning with “F”
  35.1. fastExit
  35.2. fatal
  35.3. $fieldInfo
  35.4. $fileInfo
  35.5. $findArea
  35.6. $findCoroutine
  35.7. first
  35.8. $findGroup
  35.9. fixed
  35.10. $fixFormat
  35.11. fldRead
  35.12. fldWrite
  35.13. floor
  35.14. $flush
  35.15. $formatAsParagraph
  35.16. formatted
  35.17. $formParagraph
  35.18. $fullPathNames
  Figures for Chapter 35: System Identifiers Beginning with “F”
    35–1. fastExit
    35–2. fatal
    35–3. $fieldInfo
    35–4. $fileInfo (GENERIC) and $fileInfoCls
    35–5. $findArea
    35–6. $findCoroutine
    35–7. first
    35–9. fixed
    35–10. $fixFormat
    35–11. fldRead (GENERIC)
    35–12. fldWrite (GENERIC)
    35–14. floor (GENERIC)
    35–16. Rounding Directions for (LONG) REAL to (LONG) INTEGER Conversion PROCEDUREs
    35–17. $flush
    35–18. $formatAsParagraph
    35–19. formatted
    35–20. $formParagraph
    35–21. $fullPathNames
  Examples for Chapter 35: System Identifiers Beginning with “F”
    35–8. Use of first
    35–13. Use of fldWrite
    35–15. Use of floor

36. System Identifiers Beginning with “G”
  36.1. generateMultipleQuickSort
  36.2. generateQuickSort
  36.3. The Get PROCEDUREs
  36.4. $getCommandLine
  36.5. $getDefinedTimeZones
  36.6. $getDSTEndRule
  36.7. $getDSTName
  36.8. $getDSTOffset
  36.9. $getDSTStartRule
  36.10. $getEofPos
  36.11. $getGMTOffset
  36.12. $getInArea
  36.13. getPos
  36.14. $getSearchPath
  36.15. $getStdName
  36.16. $getSubcommands
  36.17. $getToTop
  36.18. The Global Symbol Table PROCEDUREs
  36.18.1. General Global Symbol PROCEDUREs
  36.18.2. Sample Use of Global Symbol PROCEDUREs
  36.18.3. STRING Global Symbols
  36.19. $gmt
  36.20. $GMTtoLocalTime
  36.21. $gotValue
  Figures for Chapter 36: System Identifiers Beginning with “G”
    36–1. $boGet, $iGet, $liGet, $rGet, $lrGet, $bGet, $lbGet, and $sGet
    36–2. $getCommandLine
    36–3. $getDefinedTimeZones
    36–4. $getDSTEndRule
    36–5. $getDSTName
    36–6. $getDSTOffset
    36–7. $getDSTStartRule
    36–8. $getEofPos
    36–9. $getGMTOffset
    36–10. $getInArea (GENERIC)
    36–11. getPos
    36–13. $getStdName
    36–14. $getToTop
    36–15. Global Symbol Table PROCEDUREs
    36–16. STRING Global Symbol Table PROCEDUREs and the CLASS $stringGlobalSymbol
    36–17. $gmt
    36–18. $GMTtoLocalTime
    36–19. $gotValue
  Examples for Chapter 36: System Identifiers Beginning with “G”
    36–12. Use of getPos

37. System Identifiers Beginning with “H”
  37.1. $hasFileVersions
  37.2. $hash
  37.3. hex
  37.4. $homeDirectory
  37.5. HSHMOD PROCEDUREs
  37.6. $hyphenateDate
  Figures for Chapter 37: System Identifiers Beginning with “H”
    37–1. $hasFileVersions
    37–2. $hash
    37–3. hex
    37–4. $homeDirectory
    37–5. $hyphenateDate

38. System Identifiers Beginning with “I”
  38.1. $iGet
  38.2. iLoad
  38.3. $inArea
  38.4. $includeDot
  38.5. $includeTimeZone
  38.6. $includeWeekday
  38.7. $initRand
  38.8. $initsRand
  38.9. input
  38.10. $insertLeft
  38.11. $insertRight
  38.12. $intmodInfo
  38.13. $intSize
  38.14. $invokeModule
  38.15. $ioSize
  38.16. isAlpha
  38.17. $isArray
  38.18. $isBound
  38.19. $isDirectory
  38.20. isLowerCase
  38.21. isNul
  38.22. $isNullRef
  38.23. $isParameterizedRecord
  38.24. isUpperCase
  38.25. $isBlankSpaceChar
  Figures for Chapter 38: System Identifiers Beginning with “I”
    38–1. $inArea
    38–2. $includeDot
    38–3. $includeTimeZone
    38–4. $includeWeekday
    38–5. input
    38–6. $insertLeft
    38–7. $insertRight
    38–8. $intmodInfo
    38–9. $intSize
    38–10. $invokeModule
    38–11. $ioSize
    38–12. isAlpha
    38–14. $isArray
    38–15. $isBound
    38–16. $isDirectory
    38–17. isLowerCase
    38–19. isNul
    38–20. $isNullRef
    38–21. $isParameterizedRecord
    38–22. isUpperCase
    38–24. $isBlankSpaceChar
  Examples for Chapter 38: System Identifiers Beginning with “I”
    38–13. Use of isAlpha
    38–18. Use of isLowerCase
    38–23. Use of isUpperCase

39. System Identifiers Beginning with “K”
  39.1. keepNul
  39.1.1. A Note on the Treatment of Carriage Return
  39.2. $killCoroutine
  39.3. $killedCoroutine
  Figures for Chapter 39: System Identifiers Beginning with “K”
    39–1. keepNul
    39–2. $killCoroutine (GENERIC)
    39–3. $killedCoroutine

40. System Identifiers Beginning with “L”
  40.1. last
  40.2. $lastCommandLineArg
  40.3. $lbGet
  40.4. lbLoad
  40.5. lbMask
  40.6. $lbOnes
  40.7. lDisplacement
  40.8. $LDSP
  40.9. $leadingDigitBeforeDot
  40.10. length
  40.11. $length
  40.12. $lf
  40.13. $liGet
  40.14. liLoad
  40.15. ln
  40.16. The Load PROCEDUREs
  40.16.1. Sized Load PROCEDUREs
  40.17. $localTime
  40.18. $localTimeToGMT
  40.19. log
  40.20. $log2
  40.21. logFile
  40.22. $login
  40.23. $longSize
  40.24. lookUpLogicalName
  40.25. $lrGet
  40.26. lrLoad
  40.27. $lSize
  40.28. $lSizeInBits
  Figures for Chapter 40: System Identifiers Beginning with “L”
    40–1. last
    40–3. $lastCommandLineArg
    40–4. lbMask
    40–5. $lbOnes
    40–6. lDisplacement (GENERIC)
    40–7. $leadingDigitBeforeDot
    40–8. length
    40–10. $length (GENERIC)
    40–11. $lf
    40–12. ln (GENERIC)
    40–13. The Load PROCEDUREs
    40–15. Sized Load PROCEDUREs
    40–16. $localTime
    40–17. $localTimeToGMT
    40–18. log (GENERIC)
    40–19. $log2
    40–20. logFile
    40–21. $login
    40–22. $longSize
    40–23. lookUpLogicalName
    40–24. $lSize (GENERIC)
    40–25. $lSizeInBits
  Examples for Chapter 40: System Identifiers Beginning with “L”
    40–2. Use of last
    40–9. Use of length
    40–14. Use of the Load PROCEDUREs

41. System Identifiers Beginning with “M”
  41.1. $mainsailExec
  41.2. $majorVersion
  41.3. $maxChar
  41.4. $maxInteger
  41.5. $maxLongInteger
  41.6. $maxLongReal
  41.7. $maxReal
  41.8. $maxStringLength
  41.9. $memoryManagementInfo
  41.10. $mergeArea
  41.11. $minFractionDigits
  41.12. $minInteger
  41.13. $minLongInteger
  41.14. $minLongReal
  41.15. $minReal
  41.16. $minorVersion
  41.17. $moduleInfo
  41.18. $moduleName
  41.19. $moveCoroutine
  41.20. msgMe
  41.21. msgMyCaller
  41.22. $mslParms
  41.23. $msStr
  41.24. $msStrInPlace
  Figures for Chapter 41: System Identifiers Beginning with “M”
    41–1. $majorVersion
    41–2. $maxChar
    41–3. $maxInteger
    41–4. $maxLongInteger
    41–5. $maxLongReal
    41–6. $maxReal
    41–7. $maxStringLength
    41–8. $memoryManagementInfo
    41–9. $mergeArea
    41–10. $minFractionDigits
    41–11. $minInteger
    41–12. $minLongInteger
    41–13. $minLongReal
    41–14. $minReal
    41–15. $minorVersion
    41–16. $moduleInfo
    41–18. $moduleName
    41–19. $moveCoroutine (GENERIC)
    41–20. msgMe
    41–21. msgMyCaller
    41–22. $msStr
    41–23. $msStrInPlace
  Examples for Chapter 41: System Identifiers Beginning with “M”
    41–17. Use of $moduleInfo

42. System Identifiers Beginning with “N”
  42.1. new
  42.1.1. Handling Errors from new
  42.2. $newArea
  42.3. $newException
  42.4. newPage
  42.5. $newProcvar
  42.6. $newRecords
  42.7. newScratch
  42.8. $newScratchChars
  42.9. newString
  42.10. newUpperBound
  42.11. nextAlpha
  42.12. $nextCommandLineArg
  42.13. $nextLongReal
  42.14. $nextParm
  42.15. $nextReal
  42.16. $noCollectablePtrs
  42.17. $noCollectableStrs
  42.18. $noCompactablePtrs
  42.19. $noHandler
  42.20. $nonRecursive
  42.21. noResponse
  42.22. $noTranslate
  42.23. $nth
  42.24. $nulChar
  42.25. $nulcStr
  42.26. $nullArrayExcpt
  42.27. $nullCallExcpt
  42.28. $nullPointerExcpt
  42.29. $numArgs
  Figures for Chapter 42: System Identifiers Beginning with “N”
    42–1. new (GENERIC)
    42–3. $newArea
    42–4. $newException
    42–5. newPage (GENERIC)
    42–7. $newProcvar
    42–8. $newRecords (GENERIC)
    42–9. newScratch (GENERIC)
    42–11. $newScratchChars (GENERIC)
    42–12. newString
    42–13. newUpperBound (GENERIC)
    42–15. nextAlpha
    42–17. $nextCommandLineArg
    42–18. $nextLongReal
    42–19. $nextReal
    42–20. $noCollectablePtrs
    42–21. $noCollectableStrs
    42–22. $noCompactablePtrs
    42–23. $noHandler
    42–24. $nonRecursive
    42–25. noResponse
    42–26. $noTranslate
    42–27. $nth
    42–28. $nulChar
    42–29. $nulcStr
    42–30. $nullArrayExcpt
    42–31. $nullCallExcpt
    42–32. $nullPointerExcpt
  Examples for Chapter 42: System Identifiers Beginning with “N”
    42–2. Use of new
    42–6. Use of newPage
    42–10. Use of newScratch
    42–14. Use of newUpperBound
    42–16. Use of nextAlpha

43. System Identifiers Beginning with “O”
  43.1. octal
  43.2. $okToMixCoroutinesAndForeignCalls
  43.3. omit
  43.4. $omitDevModStr
  43.5. open
  43.5.1. File Names
  43.5.2. openBits
  43.5.3. Error Behavior
  43.5.4. saveUnexpandedFileNames
  43.6. openLibrary
  43.7. $outOfSpaceIoExcpt
  43.8. output
  43.9. $overheadPercentExitValue and $overheadTooHighExcpt
  Tables for Chapter 43: System Identifiers Beginning with “O”
    43–7. Possible First Lines of the msg Parameter to open When open Fails
  Figures for Chapter 43: System Identifiers Beginning with “O”
    43–1. octal
    43–2. $okToMixCoroutinesAndForeignCalls
    43–3. omit
    43–4. $omitDevModStr
    43–5. open (GENERIC)
    43–8. openLibrary
    43–9. $outOfSpaceIoExcpt
    43–10. output
    43–11. $overheadPercentExitValue
    43–12. $overheadTooHighExcpt
  Examples for Chapter 43: System Identifiers Beginning with “O”
    43–6. Use of open

44. System Identifiers Beginning with “P”
  44.1. pageDispose
  44.2. $pageRead
  44.3. $pageSize
  44.4. $pageWrite
  44.5. PDF Low-Level PROCEDUREs
  44.6. $pdf
  44.7. $platformNameAbbreviation
  44.8. $platformNameFull
  44.9. $platformNumber
  44.10. pLoad
  44.11. $preferredRadix
  44.12. prevAlpha
  44.13. $prevLongReal
  44.14. $prevReal
  44.15. $printingChar
  44.16. proceed
  44.17. $processorNameAbbreviation
  44.18. $processorNameFull
  44.19. $processorNumber
  44.20. $procvarName
  44.21. $programInterface
  44.22. $programName
  44.23. prompt
  Figures for Chapter 44: System Identifiers Beginning with “P”
    44–1. pageDispose (GENERIC)
    44–2. $pageRead
    44–3. $pageSize
    44–4. $pageWrite
    44–5. $pdf
    44–6. $platformNameAbbreviation
    44–7. $platformNameFull
    44–8. $platformNumber
    44–9. $preferredRadix
    44–10. prevAlpha
    44–12. $prevLongReal
    44–13. $prevReal
    44–14. $printingChar
    44–15. proceed
    44–16. $processorNameAbbreviation
    44–17. $processorNameFull
    44–18. $processorNumber
    44–19. $procvarName
    44–20. $programInterface
    44–21. $programName
    44–22. prompt
  Examples for Chapter 44: System Identifiers Beginning with “P”
    44–11. Use of prevAlpha

45. System Identifiers Beginning with “Q”
  45.1. $queryFileCacheParms
  Figures for Chapter 45: System Identifiers Beginning with “Q”
    45–1. $queryFileCacheParms

46. System Identifiers Beginning with “R”
  46.1. $raise
  46.2. $raiseReturn
  46.3. $rand
  46.4. random
  46.5. rcRead
  46.6. rcWrite
  46.7. read
  46.8. $readParms
  46.9. $reclaim
  46.10. $registerException
  46.11. relFileName
  46.12. relModName
  46.13. relPos
  46.14. $removeBits
  46.15. $removeBoolean
  46.16. $removeDateAndTime
  46.17. $removeInteger
  46.18. $removeLastWord
  46.19. $removeLeadingBlankSpace
  46.20. $removeMemMngModule
  46.21. $removeReal
  46.22. $removeTrailingBlankSpace
  46.23. $removeWord
  46.24. $rename
  46.25. $renameDirectory
  46.26. $reOpen
  46.27. $reportAllVersions
  46.28. reorder
  46.29. $resumeCoroutine
  46.30. retain
  46.31. $returnExcpt
  46.32. $returnIfNoHandler
  46.33. reverse
  46.34. $reverseDateAndMonth
  46.35. $rGet
  46.36. $rigDanglingPtrs
  46.37. $riggedAdrBits, $riggedCharadrBits
  46.38. rLoad
  Tables for Chapter 46: System Identifiers Beginning with “R”
    46–2. Predefined BITS Constants for $raise ctrlBits
  Figures for Chapter 46: System Identifiers Beginning with “R”
    46–1. $raise
    46–3. $raiseReturn
    46–4. random
    46–5. rcRead
    46–7. rcWrite
    46–9. read (GENERIC)
    46–11. $reclaim
    46–12. $registerException
    46–13. relFileName
    46–15. relModName
    46–16. relPos
    46–18. $removeBits
    46–19. $removeBoolean
    46–20. $removeDateAndTime
    46–21. $removeInteger
    46–22. $removeLastWord
    46–24. $removeLeadingBlankSpace
    46–25. $removeMemMngModule
    46–26. $removeReal
    46–27. $removeLeadingBlankSpace
    46–28. $removeWord
    46–30. $rename
    46–31. $renameDirectory
    46–32. $reOpen
    46–33. $reportAllVersions
    46–34. $resumeCoroutine (GENERIC)
    46–35. retain
    46–36. $returnExcpt
    46–37. $returnIfNoHandler
    46–38. $reverseDateAndMonth
  Examples for Chapter 46: System Identifiers Beginning with “R”
    46–6. Use of rcRead
    46–8. Use of rcWrite
    46–10. Use of read
    46–14. Use of relFileName
    46–17. Use of relPos
    46–23. Use of $removeLastWord
    46–29. Use of $removeWord

47. System Identifiers Beginning with “S”
  47.1. $sArg
  47.2. scan
  47.3. scanRel
  47.4. scanSet
  47.5. $scanSet
  47.6. scratchDispose
  47.7. $searchCallChain
  47.8. $setCommandLine
  47.9. $setConfigurationBit
  47.10. $setCurrentDirectory
  47.11. $setDelayPtrRigging
  47.12. $setDSTEndRule
  47.13. $setDSTName
  47.14. $setDSTOffset
  47.15. $setDSTStartRule
  47.16. $setExitCode
  47.17. $setFileCacheParms
  47.18. setFileName
  47.19. $setGMTOffset
  47.20. setModName
  47.21. setPos
  47.22. $setSearchPath
  47.23. $setStdName
  47.24. $setSystemBit
  47.25. $setTheDate
  47.26. $sGet
  47.27. $shortSize
  47.28. sin
  47.29. $SIGNEDCHAR
  47.30. sinh
  47.31. size
  47.32. $sizeInBits
  47.33. $sizeOfField
  47.34. $sizeOfValue
  47.35. sLoad
  47.36. sort
  47.37. $sorted
  47.38. sqrt
  47.39. $sRand
  47.40. $stackOverflowExcpt
  47.41. $startMonitoring
  47.42. $startRigging
  47.43. $statisticsInfo
  47.44. $STMT
  47.45. $stopMonitoring
  47.46. $stopRigging
  47.47. $storageUnitRead
  47.48. $storageUnitWrite
  47.49. store
  47.50. $stringGlobalEnter and $stringGlobalLookup
  47.51. $stringTooLongExcpt
  47.52. $storeSized
  47.53. $strToDate
  47.53.1. twoDigitCutoffYear
  47.54. $strToDateAndTime
  47.55. $strToTime
  47.56. Structure Blaster PROCEDUREs
  47.57. $subscriptExcpt
  47.58. $systemExcpt
  47.59. $systemNameAbbreviation
  47.60. $systemNameFull
  47.61. $systemNumber
  Tables for Chapter 47: System Identifiers Beginning with “S”
    47–11. Configuration Bit Identifiers
  Figures for Chapter 47: System Identifiers Beginning with “S”
    47–1. scan (GENERIC)
    47–3. scanRel (GENERIC)
    47–4. scanSet
    47–6. $scanSet
    47–7. scratchDispose (GENERIC)
    47–8. $searchCallChain
    47–9. $setCommandLine
    47–10. $setConfigurationBit
    47–12. $setCurrentDirectory
    47–13. $setDelayPtrRigging
    47–14. $setDSTEndRule
    47–15. $setDSTName
    47–16. $setDSTOffset
    47–17. $setDSTStartRule
    47–18. $setExitCode
    47–19. $setFileCacheParms
    47–20. setFileName
    47–22. $setGMTOffset
    47–23. setModName
    47–25. setPos
    47–26. $setSearchPath
    47–27. $setStdName
    47–28. $setSystemBit
    47–29. $setTheDate
    47–30. $shortSize
    47–31. sin (GENERIC)
    47–32. sinh (GENERIC)
    47–33. size (GENERIC)
    47–35. $sizeInBits
    47–36. $sorted
    47–37. sqrt (GENERIC)
    47–38. $stackOverflowExcpt
    47–39. $storageUnitRead
    47–40. $storageUnitWrite
    47–41. store (GENERIC)
    47–42. $stringTooLongExcpt
    47–43. $strToDate
    47–44. $strToDateAndTime
    47–45. $strToTime
    47–46. $subscriptExcpt
    47–47. $systemExcpt
    47–48. $systemNameAbbreviation
    47–49. $systemNameFull
    47–50. $systemNumber
  Examples for Chapter 47: System Identifiers Beginning with “S”
    47–2. Use of scan
    47–5. Use of scanSet
    47–21. Use of setFileName
    47–24. Use of setModName
    47–34. Use of size

48. System Identifiers Beginning with “T”
  48.1. tab
  48.2. tan
  48.3. tanh
  48.4. $targetSystemBaseFileNameSuffix
  48.5. $text
  48.6. $thisCoroutine
  48.7. thisDataSection
  48.8. $thisFileName
  48.9. $time
  48.10. $timeDifference
  48.11. $timeFormat
  48.12. $timeout
  48.13. $timeSubcommandsSet
  48.14. $timeToStr
  48.15. $treatLikeNul
  48.16. truncate
  48.17. $truncateFile
  48.18. $tstConfigurationBit
  48.19. $tstSystemBit
  48.20. $ttyCls
  48.21. ttycWrite
  48.22. $ttyEofExcpt
  48.23. $ttyMod
  48.24. ttyRead
  48.25. ttyWrite
  48.26. $twelveHour
  48.27. $twoYearDigits
  48.28. $typeName
  Figures for Chapter 48: System Identifiers Beginning with “T”
    48–1. tab
    48–2. tan (GENERIC)
    48–3. tanh (GENERIC)
    48–4. $targetSystemBaseFileNameSuffix (GENERIC)
    48–5. $text
    48–6. $thisCoroutine
    48–7. thisDataSection
    48–8. $time
    48–9. $timeDifference
    48–10. $timeFormat
    48–11. $timeout
    48–12. $timeSubcommandsSet
    48–13. $timeToStr
    48–15. $treatLikeNul
    48–16. truncate (GENERIC)
    48–18. $truncateFile
    48–19. $tstConfigurationBit
    48–20. $tstSystemBit
    48–21. ttycWrite
    48–22. $ttyEofExcpt
    48–23. ttyRead
    48–25. ttyWrite (GENERIC)
    48–27. $twelveHour
    48–28. $twoYearDigits
    48–29. $typeName
  Examples for Chapter 48: System Identifiers Beginning with “T”
    48–14. Sample $timeToStr Output Formats
    48–17. Use of truncate
    48–24. Use of ttyRead
    48–26. Use of ttyWrite

49. System Identifiers Beginning with “U”
  49.1. unBind
  49.2. $unboundModuleExcpt
  49.3. $unbuffered
  49.4. $UNDCL
  49.5. $uninitializedLocExcpt
  49.6. $uninitializedProdExcpt
  49.7. upperCase
  49.8. useKeyWord
  49.9. $useOriginalFileName
  49.10. $useProgramInterface
  49.11. $userID
  49.12. $usesEditWindow
  Figures for Chapter 49: System Identifiers Beginning with “U”
    49–1. unBind (GENERIC)
    49–2. $unboundModuleExcpt
    49–3. $unbuffered
    49–4. $uninitializedLocExcpt
    49–5. $uninitializedProdExcpt
    49–6. upperCase
    49–7. useKeyWord
    49–8. $useOriginalFileName
    49–9. $useProgramInterface
    49–10. $userID
    49–11. $usesEditWindow

50. System Identifiers Beginning with “V”
  50.1. $valueInfo: $fieldInfoExtended, $classInfoExtended, and $createClassDscrExtended
  50.1.1. $fieldInfoExtended
  50.1.2. $classInfoExtended
  50.1.3. $createClassDscrExtended
  50.2. $varFormat
  Figures for Chapter 50: System Identifiers Beginning with “V”
    50–1. $varFormat

51. System Identifiers Beginning with “W”
  51.1. warning
  51.2. write
  51.3. $writeCalls
  Figures for Chapter 51: System Identifiers Beginning with “W”
    51–1. warning
    51–2. write (GENERIC)
    51–4. $writeCalls
  Examples for Chapter 51: System Identifiers Beginning with “W”
    51–3. Use of write
    51–5. Sample $writeCalls Output

Appendices for the MAINSAIL Language Manual
  A. Type Codes
    A.1. C Data Type Codes
    Tables for Appendix A: Type Codes
      A–1. Type Code Identifiers

  B. Target Platform, Operating System, and Processors
    Tables for Appendix B: Target Platform, Operating System, and Processors
      B–1. Supported Target Platforms
      B–2. Supported Target Systems
      B–3. Supported Target Processors

  C. Predefined Exception Names
    Tables for Appendix C: Predefined Exception Names
      C–1. Predefined Exceptions

  D. Target System Attributes

  E. Character Set Identifiers
    Tables for Appendix E: Character Set Identifiers
      E–1. Supported Character Sets

  F. PDF Character Set Translation Tables
    F.1. Translation between the ASCII and PDF Character Sets
    F.2. Translation between the EBCDIC and PDF Character Sets
    Tables for Appendix F: PDF Character Set Translation Tables
      F–1. PDF to EBCDIC Character Set Translation Table
      F–2. EBCDIC to PDF Character Set Translation Table

  G. Reserved Identifiers
    Tables for Appendix G: Reserved Identifiers
      G–1. Reserved Identifiers

  H. Predefined Non-Reserved Identifiers without Dollar Signs
    Tables for Appendix H: Predefined Non-Reserved Identifiers without Dollar Signs
      H–1. Non-Reserved Identifiers without Dollar Signs

  I. Synonyms
    Tables for Appendix I: Synonyms
      I–1. MAINSAIL Synonyms

  J. Restrictions
    J.1. Portable Data Type Ranges and Data Structure Size Limits
    J.2. Interface PROCEDUREs in a MODULE
    J.3. Local Variable Limitations
    J.4. STRING Constants in a MODULE
    J.5. Size of a PROCEDURE
    J.6. Number of Cases in a CASE Statement
    J.7. Uninitialized Variables
    J.8. INIT Statements
    J.9. FOR-Clause Limit Values
    Tables for Appendix J: Restrictions
      J–1. Portable Data Type Ranges and Data Structure Size Limits

  K. MODULEs Shipped in a Standard System
    Tables for Appendix K: MODULEs Shipped in a Standard System
      K–1. Standard MAINSAIL System Objmods
      K–2. Objmods Shipped in Runtime-Only MAINSAIL Systems

  L. Predefined Data Type Macros
    L.1. C Data Type Macros in FLI Parameter Declarations


MAINSAIL System-Specific User's Guides

1. System-Specific User's Guides
  Tables for Chapter 1: System-Specific User's Guides
    1–1. Supported Platforms

User's Guide for MAINSAIL on UNIX
  1. Introduction
    1.1. Version
    1.2. UNIX Flavors and Shell Prompts

  2. General Operation
    2.1. Installation Assumptions
    2.2. Invoking MAINSAIL
    2.3. Default Objmod and Intmod Searchpaths and File Names

  3. CONF, MAINSAIL Configurator
    3.1. UNIXBITS
    3.1.1. Platform-Independent UNIXBITS Bit: $useMalloc
    3.2. Flavor-Specific CONF Commands
    3.2.1. MAXFOREIGNMEMORYSIZE
    3.2.2. FOREIGNSTACKSIZE
    3.3. OS Memory Pool
    3.4. General Use
    3.5. Memory Fragmentation Problems on SUN4, SOLRS, and PSOLRS and in Any Program That Calls Foreign Language Code: Use Large MINSIZETOALLOCATE If Allocating Large Dynamic Objects

  4. MAINSAIL and the UNIX File System
    4.1. UNIX Shell Variables in File Names
    4.2. File Deletion
    4.3. MAINEDIT and Links
    4.4. Protection Mode of Files
    4.5. Disk Full
    4.6. Removing NFS Automounter File Name Prefix That Can Make Full Path Names Invalid
    4.7. Limit on Number of Open Files

  5. UNIX STREAMS
    5.1. Patches Required to Avoid $readStream Timeout on SOLRS

  6. System Information PROCEDUREs
    6.1. $currentDirectory
    6.2. $homeDirectory
    6.3. $directory (for UNIX Disk Files)
    6.4. Command Line and $programName
    6.5. $fileInfo (for UNIX Disk Files)
    6.6. $composeFileName Examples
    6.7. $composePath Examples
    6.8. $decomposePath
    6.9. $decomposeFileName
    6.10. $userID
    6.11. $cpuID
    6.12. Exit Codes
    6.13. $lookupEnvironmentVar and $getEnvironmentVars
    6.14. $environment

  7. UNIX Shared Mapped Library and Kernel Support
    7.1. Systems Where Mapping Is Automatic
    7.2. Systems Where Mapping Is Not Automatic: HPPA, HPPA64, and RAIX before OS Version 3.2
    7.3. Running SHMCTL
    7.4. Disabling Automatic Mapping
    7.5. Caveats
    Examples for Chapter 7: UNIX Shared Mapped Library and Kernel Support
      7–1. Example Use of SHMCTL on HPPA

  8. UNIX Signals
    8.1. Signals Handled by MAINSAIL
    8.2. UNIX Signals MAINSAIL Depends On
    8.3. UNIX Signals MAINPM Uses for PC Monitoring
    8.4. System Calls to Use to Establish Signal Handlers

  9. MAINPM PC Monitoring

  10. Foreign Language Interface
    10.1. FLI Compilers
    10.2. Data Types
    10.2.1. MAINSAIL and C Arrays
    10.3. Caveat: Beware of Overwriting Data
    10.4. ANSI C FLI Caveat
    10.5. MAINSAIL Foreign Call Compiler Example
    10.6. MAINSAIL Entry Compiler Example
    10.7. Entry FLI Example When Foreign Code Starts Execution
    10.8. Caveat: Use of gets or fgets on stdin on UNIX
    10.9. Linking X Code with MAINSAIL
    10.9.1. Changes to C Code
    10.9.2. Building a MAINSAIL Bootstrap That Calls X Routines from MAINSAIL
    10.9.2.1. Setup of X/Motif Libraries on HPPA64
    10.9.2.2. X/Motif on Linux
    10.10. Passing Command Line Arguments from C to MAINSAIL When Foreign Code Starts Execution: UNIX-Specific Function xiSetArgvForMainsail
    Tables for Chapter 10: Foreign Language Interface
      10–1. MAINSAIL and C Parameter Data Types
    Figures for Chapter 10: Foreign Language Interface
      10–2. MAINSAIL and C Arrays in a CLASS/struct
      10–3. MAINSAIL MODULE CALLC That Calls C Procedure proc1
      10–4. C Procedure proc1
      10–5. MAINSAIL Foreign Language Interface MODULE MSTOC
      10–7. C Procedure That Calls MAINSAIL PROCEDURE proc1
      10–8. MAINSAIL MODULE MSMOD Called by C Procedure callms
      10–9. MAINSAIL Foreign Language Interface MODULE MSTOC
      10–10. MAINSAIL MODULE CALLC That Calls C Procedure callms
      10–12. C Program with Function main That Calls MAINSAIL PROCEDURE proc1
    Examples for Chapter 10: Foreign Language Interface
      10–6. MAINSAIL to C Example
      10–11. C to MAINSAIL Example
      10–13. C to MAINSAIL Example When Foreign Code Starts Execution

  11. IA-64-Dependent Information
    11.1. Procedure Size
    11.2. Data Types
    11.3. Miscellaneous Information

  12. RISC System/6000 Processor-Dependent Information
    12.1. Procedure Size
    12.2. Data Types
    12.3. Miscellaneous Information

  13. HP PA-RISC-Dependent Information
    13.1. Procedure Size
    13.2. Data Types
    13.3. Miscellaneous Information

  14. HP PA-RISC (64-Bit
    14.1. Procedure Size
    14.2. Data Types
    14.3. Miscellaneous Information

  15. Intel Pentium Processor-Dependent Information
    15.1. Procedure Size
    15.2. Data Types
    15.3. Miscellaneous Information

  16. Purify-Compatible SPARC Processor-Dependent Information
    16.1. Procedure Size
    16.2. Data Types
    16.3. Miscellaneous Information

  17. SPARC Processor-Dependent Information
    17.1. Procedure Size
    17.2. Data Types
    17.3. Miscellaneous Information

  Appendices for the User's Guide for MAINSAIL on UNIX
    A. Flavor-Dependent Features of UNIX MAINSAIL
      A.1. Object MODULE File Name Extensions for Available UNIX Flavors
      A.2. FLI Considerations for Available UNIX Flavors
      A.2.1. MAINSAIL FLI Considerations Specific to IBM's AIX on IBM RISC System/6000
      A.3. Program Exceptions
      A.3.1. Stack Overflow
      A.3.2. UNIX Signals
      A.3.3. BIGSUN and mainsab
      A.4. Terminal Handling
      A.4.1. BSD Systems
      A.4.2. System V Systems
      A.4.3. ioctl from Programs
      A.5. MAINSAIL and Purify
      A.5.1. Bootstrap-Building Instructions on PSOLRS When Running under Purify 4.2
      A.6. Using MAINSAIL under ClearCase on RAIX
      A.7. Note on Linux Operating System Versions
      Tables for Appendix A: Flavor-Dependent Features of UNIX MAINSAIL
        A–1. UNIX Intmod and Objmod File Name Prefixes
        A–2. Flavor-Dependent FLI Characteristics
        A–3. Standard UNIX Signals Caught by MAINSAIL
        A–4. BSD and System V UNIX Flavors

    B. Flavor-Dependent Configuration on UNIX
      B.1. Standard Configuration Files for Available UNIX Flavors
      B.2. CONF's STACKSIZE Parameter on 64-Bit Platforms
      B.3. Producing a Bootstrap on Each Flavor of UNIX
      B.3.1. Allocating Memory on the HPPA Using mmap
      B.3.1.1. Using -N and chatr to Allow a MAINSAIL Bootstrap to Allocate More Than 1 Gb of Contiguous Memory
      B.3.1.2. Memory Allocated Automatically by mmap and MAXFOREIGNMEMORYSIZE
      B.3.2. Compiling C Code Linked with a MAINSAIL Bootstrap on the HPPA
      B.3.3. Compiling C Code Linked with a MAINSAIL Bootstrap on the HPPA64
      B.3.4. Making a Bootstrap on the RAIX Platform
      B.3.4.1. Memory Allocation Considerations on RAIX
      B.3.4.1.1. sbrk, malloc, and Shared Memory Routines
      B.3.4.1.2. The MAXFOREIGNMEMORYSIZE CONF Parameter
      B.3.4.2. Bootstrap-Building Commands on AIX OS Version 4.1 and Subsequent Versions of the Operating System
      B.3.5. Making a Bootstrap on Other Flavors of UNIX
      Tables for Appendix B: Flavor-Dependent Configuration on UNIX
        B–1. Standard UNIX Configuration File Names
      Examples for Appendix B: Flavor-Dependent Configuration on UNIX
        B–2. Making a Bootstrap for the HPPA Platform
        B–3. Making a Bootstrap for the HPPA64 Platform
        B–4. Making a Bootstrap for the LINIA64 Platform
        B–5. Making a Bootstrap for the LINPN Platform
        B–6. Making a Bootstrap for the PSOLRS Platform
        B–7. Making a Bootstrap for the SOLRS Platform
        B–8. Making a Bootstrap for the SUN4 Platform

    C. Linking MAINSAIL Bootstraps with UNIX Shared C Libraries
      C.1. Linking a Static Bootstrap with a Shared C Library
      Examples for Appendix C: Linking MAINSAIL Bootstraps with UNIX Shared C Libraries
        C–1. Commands to Link with a Shared Library on HPPA
        C–2. Commands to Link with a Shared Library on HPPA64
        C–3. Commands to Link with a Shared Library on LINPN
        C–4. Commands to Link with a Shared Library on RAIX
        C–5. Commands to Link with a Shared Library on SOLRS or PSOLRS
        C–6. Commands to Link with a Shared Library on SUN4

    D. Putting CONF and FLI Compiler Output into a Shared Library
      Examples for Appendix D: Putting CONF and FLI Compiler Output into a Shared Library
        D–1. Commands to Put CONF and FLI Output into a Shared Library on SOLRS


User's Guide for MAINSAIL on Microsoft's Windows on Pentium
  1. Introduction
    1.1. Version

  2. General Operation
    2.1. Installation Assumptions
    2.2. Invoking MAINSAIL
    2.3. Default Objmod and Intmod Searchpaths and File Names

  3. CONF, MAINSAIL Bootstrap Configurator
    3.1. STACKSIZE on NTPNT
    3.2. NTPNT-Specific CONF Commands
    3.2.1. INITIALWORKINGDIR s
    3.2.2. VIRTUALALLOCMEMSIZE li
    3.2.3. WIN32BITS b
    3.3. Linking a Bootstrap for NTPNT
    3.3.1. Linking a Bootstrap
    3.3.1.1. Restriction: Bootstrap-Making Command Files and Environment Variables

  4. File System
    4.1. End-of-Line Conventions
    4.1.1. CRLF> Device Prefix
    4.1.2. LF> Device Prefix
    4.1.3. Changing the Default Text File Device Prefix
    4.1.4. Converting CRLF Files to LF Files and Vice Versa
    4.2. Environment Variables and File Names
    4.3. File Names Containing Colons and SEARCHPATH * * ...
    4.4. Simultaneous Opens of the Same File
    4.5. File Security Attributes

  5. System Information PROCEDUREs
    5.1. $currentDirectory
    5.2. $setCurrentDirectory
    5.3. $homeDirectory
    5.4. $getCommandLine
    5.5. $programName
    5.6. $directory
    5.7. $fileInfo
    5.8. $composeFileName Examples
    5.9. $composePath Examples
    5.10. $decomposePathName
    5.11. $decomposeFileName
    5.12. $userID
    5.13. $cpuID
    5.14. Exit Codes
    5.15. $truncateFile
    5.16. Environment Variable PROCEDUREs

  6. NTPNT Shared Mapped Library and Kernel Support

  7. Resetting MAINSAIL OS Exception Handlers to Default State on NTPNT
    Figures for Chapter 7: Resetting MAINSAIL OS Exception Handlers to Default State on NTPNT
      7–1. $reinstateMslOsdExcptHandlers

  8. Intel Pentium Processor-Dependent Information
    8.1. Procedure Size
    8.2. Data Types
    8.3. Miscellaneous Information

  9. Foreign Language Interface
    9.1. FLI Compilers
    9.2. Data Types
    9.2.1. MAINSAIL and C Arrays
    9.3. Caveat
    9.4. MAINSAIL Foreign Call Compiler Example
    9.5. MAINSAIL Entry Compiler Example
    9.6. Additional FLI Considerations
    9.6.1. Default Foreign Labels and Label Prefixes
    Figures for Chapter 9: Foreign Language Interface
      9–1. MAINSAIL MODULE CALLC That Calls C Procedure proc1
      9–2. C Procedure proc1
      9–3. MAINSAIL Foreign Language Interface MODULE MSTOC
      9–4. C Procedure That Calls MAINSAIL PROCEDURE proc1
      9–5. MAINSAIL MODULE MSMOD Called by C Procedure callms
      9–6. MAINSAIL Foreign Language Interface MODULE MSTOC
      9–7. MAINSAIL MODULE CALLC That Calls C Procedure callms

  10. Linking Entry FLI Output into a DLL
    10.1. DLL Examples
    10.1.1. Console-Single Configuration
    10.1.2. Graphical-Single Configuration
    10.1.3. Console-DLL Configuration
    10.1.4. Graphical-DLL Configuration
    Examples for Chapter 10: Linking Entry FLI Output into a DLL
      10–1. Source for mecm.c
      10–2. Source for mec.msl

  11. Miscellaneous
    11.1. MAINPM PC Monitoring
    11.2. Treatment of CTRL-C
    11.3. Procedure Stack Overflow
    11.4. Treatment of Operating System Exceptions



MAINSAIL Compiler User's Guide

1. Introduction
  1.1. Version

2. Invoking the MAINSAIL Compiler
  Tables for Chapter 2: Invoking the MAINSAIL Compiler
    2–1. Compiler Commands

3. Incremental Recompilation

4. Compiler Subcommands
  4.1. Subcommands in Parameters File
  4.2. ABORT
  4.3. ACHECK/NOACHECK, ACHECKALL/NOACHECKALL
  4.4. ALIST/NOALIST
  4.5. BROWSE/NOBROWSE
  4.6. CHECK/NOCHECK, CHECKALL/NOCHECKALL
  4.7. CMDLINE s
  4.8. DATETIMECHECK/NODATETIMECHECK
  4.9. DEBUG/NODEBUG
  4.10. FLDXREF/FLDXREF f/NOFLDXREF
  4.11. FLI s
  4.12. GENCODE/NOGENCODE
  4.13. GENINLINES/NOGENINLINES
  4.14. INCREMENTAL/NOINCREMENTAL
  4.15. ININTLIB f/NOININTLIB
  4.16. INOBJFILE f
  4.17. INOBJLIB f/NOINOBJLIB
  4.18. ITFXREF/ITFXREF f/NOITFXREF
  4.19. LIBRARY f/NOLIBRARY
  4.20. LOG/NOLOG
  4.21. MODTIME
  4.22. MONITOR/NOMONITOR
  4.23. OPTIMIZE/NOOPTIMIZE, OPTIMIZE procedurei/NOOPTIMZE procedurei, and OPTIMIZEALL/NOOPTIMIZEALL
  4.24. OUTINTFILE f
  4.25. OUTINTLIB f/NOOUTINTLIB
  4.26. OUTOBJFILE f
  4.26.1. OUTOBJFILE Command Can Specify RPC Output File Names
  4.27. OUTOBJLIB f/NOOUTOBJLIB
  4.28. OUTPUT/OUTPUT f/NOOUTPUT
  4.29. PERMOD
  4.30. PERPROC
  4.31. PERSTMT
  4.32. PLIST/PLIST f/NOPLIST
  4.33. PROCCALLS/PROCCALLS f/NOPROCCALLS
  4.33.1. Header Page
  4.33.2. CLASS Page
  4.33.3. Call Page
  4.33.4. Example
  4.34. PROCS/NOPROCS
  4.35. PROCTIME
  4.36. RECOMPILE procedure1 procedure2 ... proceduren
  4.37. REDEFINE id def/NOREDEFINE/NOREDEFINE defi
  4.38. RESPONSE/NORESPONSE
  4.39. SAVEON/SAVEON f/NOSAVEON
  4.40. SLIST/SLIST f/NOSLIST
  4.41. STRICTCLASSES/NOSTRICTCLASSES
  4.42. SUBCOMMAND s
  4.43. TARGET s/NOTARGET
  4.44. UCHECK/NOUCHECK
  4.44.1. UCHECK Details
  4.45. UNBOUND/NOUNBOUND
  4.46. # s
  Tables for Chapter 4: Compiler Subcommands
    4–1. MAINSAIL Compiler Subcommands
    4–3. The Format of Arguments to the Compiler FLI Subcommand
  Figures for Chapter 4: Compiler Subcommands
    4–2. FLDXREF Sample Output
    4–4. ITFXREF Sample Output

5. DISASM, the MAINSAIL Disassembler
  5.1. Using DISASM to Find the Source Code Corresponding to a Position in a Non-Debuggable MODULE

6. XRFMRG, the Interface Cross-Reference Merger

7. The Foreign Language Interface
  7.1. Introduction
  7.2. Foreign Call Compiler
  7.3. Foreign Call Compiler Example
  7.4. MAINSAIL Entry Compiler
  7.5. MAINSAIL Entry Compiler Example
  7.6. Foreign Labels and the ENCODE Directive
  7.7. Matching Parameters
  7.8. MAINSAIL Language and Runtime System Features to Support Foreign Language Data Access
  7.8.1. Foreign Data Access System PROCEDUREs
  7.9. C Function for Accessing MAINSAIL Arrays: xiAdrOfFirstElement
  7.10. Foreign Data Structure Example
  7.11. Foreign Code and Garbage Collection
  7.12. Foreign Code and Exceptions
  7.12.1. C Exceptions and MAINSAIL Coroutines
  7.13. FLI MODULE and PROCEDURE Name Restrictions
  7.14. FLI Parameter Restrictions
  Figures for Chapter 7: The Foreign Language Interface
    7–1. Interfacing MAINSAIL to Other Languages

8. Arguments on the Command Line

9. Invoking the Compiler from a Program
  Figures for Chapter 9: Invoking the Compiler from a Program
    9–1. $compile


MAINDEBUG User's Guide

1. Introduction
  1.1. Version

2. General Operation
  2.1. Compilation
  2.2. Invocation
  2.2.1. Setting Debugger Options in the Parameter File
  2.2.2. Typical Ways to Start a Debugging Session
  2.2.3. Forcing a MAINSAIL Bootstrap to Start in the Debugger
  2.3. Finding Intmods
  2.4. Context
  2.5. Positions and iUnits
  2.6. Breakpoints and Single Stepping
  2.7. Command Interface
  2.7.1. Line-Oriented Command Interface
  2.7.2. Display-Oriented Command Interface
  2.8. Command Syntax
  2.8.1. Command Arguments
  2.8.2. Direct Arguments
  2.8.3. Indirect Arguments
  2.9. Miscellaneous

3. General Commands
  3.1. Changing to/from Display-Oriented Interface: {-}@
  3.2. Quitting: Q
  3.3. Quitting Unconditionally: +Q
  3.4. Counts: {n}
  3.5. Help: ?
  3.6. Defining Macros: /cs/
  3.7. Invoking Macros: {n}{-}=c

4. Debugging Commands
  4.1. Most Recently Used Field Bases: $p1 and $p2
  4.2. Displaying ARRAY Slices: A ary{,l1,u1{,l2,u2{,l3,u3}}}
  4.2.1. ARRAY Display Example
  4.3. Setting Breakpoints: {+}B{[condition]}{:commands}
  4.3.1. Where Breakpoints May Be Set
  4.3.2. Setting a Breakpoint in a Specific MODULE Instance or Coroutine
  4.4. Setting a Breakpoint at a Specified PROCEDURE: {+}B@
  4.5. Setting a Breakpoint at a Specified iUnit: {+}B@
  4.6. Continuing: {n}{.{i}}C
  4.7. Declaring Debugger Variables: .D d1;...;dn {END}
  4.8. Going to the Declaration of an Identifier: !D identifier
  4.9. Executing MODULEs: {-}E {moduleOrFileName}{arguments}
  4.10. Displaying Individual Fields of Unclassified POINTERs: .F p,f1,f2,...
  4.11. Displaying Hexadecimal Values: H {expression1, ..., expressionn}
  4.12. Displaying Hexadecimal Field Values: .H {p1, ..., pn}
  4.13. Information: I
  4.14. Brief Information: 1I
  4.15. Displaying the Synthesized Declaration of an Identifier: {+}.I identifier
  4.16. Jumping into PROCEDUREs: {n}J
  4.17. Count Breaks: K n
  4.17.1. K Command Arguments Starting with +
  4.18. Removing a Count Break: -K
  4.19. Setting Context to Current Breakpoint: M
  4.20. Setting Context to a MODULE: M s
  4.21. Setting Context to a Particular MODULE Instance: .M p
  4.22. Releasing a MODULE: -M m
  4.23. Walking the Call Stack: {n}{-}N
  4.24. Walking the Exception Stack: {n}{-}.N
  4.25. Setting Context to Current Breakpoint: +N
  4.26. Setting Cursor to Current Command Context: !N
  4.27. Setting the Current iUnit: O n
  4.28. Opening a Coroutine: OC s
  4.29. Opening a PROCEDURE Frame: OF a
  4.30. Opening an Intmod Library: OI s
  4.31. Opening an Objmod Library: OL s
  4.32. Debugger Options: {-}OP s
  4.32.1. recursiveDebug and nonRecursiveDebug Modes
  4.32.2. breakForWatchExprsAtStmts Mode
  4.32.3. Setting Initial Values for Options in Your Parameter File
  4.33. Removing a Breakpoint: R
  4.34. Removing Breakpoints at a Specified PROCEDURE: R@ {module.}procedure
  4.35. Removing Breakpoints at Specified iUnits: R@ module1.iUnit1, ..., modulen.iUnitn
  4.36. Removing All Breakpoints: R@@
  4.37. Remote Debugging: Tracking Bugs That Go Away When You Use the Debugger with +R {program}, +!R host {program}
  4.37.1. Preparation for Remote Debugging
  4.37.1.1. Changing the Default Terminal Emulator Program
  4.37.2. Remote Debugging Commands
  4.38. Stepping into PROCEDUREs: {n}S
  4.39. Show Contents of Current PROCEDURE Stack Frame (Show All Local Variables of Current PROCEDURE): .SF
  4.40. Show Contents of All PROCEDURE Stack Frames (Show Local Variables of All PROCEDUREs): .SS{s}
  4.41. Setting Temporary Breakpoints: {+}T{[condition]}{:command}
  4.42. Setting a Temporary Breakpoint at a Specified PROCEDURE: {+}T@
  4.43. Setting a Temporary Breakpoint at a Specified iUnit: {+}T@
  4.44. Tracing PROCEDURE Calls: !T {fileName}
  4.45. Displaying Values: V expression1, ..., expressionn
  4.46. Displaying Fields: .V {p1, ..., pn}
  4.47. Watching Variables: +W expression
  4.47.1. Specifying the Watched Expression
  4.47.1.1. The Default for Watched Expressions Specified When the Debugger Context Includes a Data Section and PROCEDURE
  4.47.1.2. The Default for Watched Expressions Specified When the Debugger Context Includes a MODULE But No Data Section and PROCEDURE
  4.47.1.3. Overriding the Defaults: Bracketed Watch Expression Specifiers in Watched Expressions
  4.47.2. Watched Expressions and Multiple Coroutines
  4.47.3. When the Debugger Considers Two Watch Expressions to be the Same
  4.48. Breaking When a Value Changes: +W:C expression, +W:Z expression, +W:N expression
  4.48.1. +W:C expression
  4.48.2. +W:Z expression
  4.48.3. +W:N expression
  4.48.4. Changing the Break Condition Associated with a Watch Expression
  4.49. Stop Watching Variables: -W n1,n2,...
  4.50. Stop Watching All Variables: -!W
  4.51. Examining Memory: {+}XM expression{,type1,type2,...}
  4.52. Executing Statements: XS s1;...;sn {END}
  Tables for Chapter 4: Debugging Commands
    4–5. XM Subcommands
  Examples for Chapter 4: Debugging Commands
    4–1. Uses of the A Command
    4–2. Uses of the B Command
    4–3. Uses of the .D Command
    4–4. Use of the E Command
    4–6. Use of the XS Command

5. Editing Commands
  5.1. Moving Down: {n}D
  5.2. Setting File Context: Fs
  5.3. Moving to Page and Line: {p}{.n}G, +{n}G, and -{n}G
  5.4. Listing Lines: {-}{n}L
  5.5. Moving to a File Position: Pn
  5.6. Moving Up: {n}U
  5.7. Displaying a Window of Lines: {n}W
  5.8. Moving Left: {n}<
  5.9. Moving Left by Words: {n}(
  5.10. Moving Right: {n}>
  5.11. Moving Right by Words: {n})
  5.12. Searching for a Character: {n}{-}'c
  5.13. Searching for a STRING: {n}{-}"{s"}

6. Rigging POINTERs and STRINGs
  6.1. Introduction to Rigging
  6.2. $startRigging and $stopRigging
  6.3. Rigging Is Slow
  6.4. What Happens When a Rigged POINTER or STRING Is Used
  6.5. Changing the Default Bit Patterns for Rigged POINTERs and STRINGs
  6.6. Figuring Out Where the Rigged POINTER or STRING Was Disposed
  6.6.1. Debugger's +W:C Command and POINTER Rigging
  Figures for Chapter 6: Rigging POINTERs and STRINGs
    6–1. Program to Test for Valid Memory Addresses

7. Debugger Initialization

8. Line-Oriented Interface Sample Session
  Examples for Chapter 8: Line-Oriented Interface Sample Session
    8–1. Compiling the MODULE SAMPLE with the DEBUG Option
    8–2. Debugging the MODULE SAMPLE
    8–3. Using the D and B Commands
    8–4. Using the E Command
    8–5. Hitting the Breakpoint
    8–6. Single Stepping
    8–7. Single Stepping and Examining Variables
    8–8. Continuing and Quitting
    8–9. Line-Interface MAINDEBUG Session

9. Display-Oriented Interface Sample Session
  Examples for Chapter 9: Display-Oriented Interface Sample Session
    9–1. A Buffer Named FOO
    9–2. The Debugger, Starting Up
    9–3. The Debugger Prompt for the M Command
    9–4. The Screen after the QY Command
    9–5. After Giving the M SAMPLE Command
    9–6. Positioned to the Breakpoint Place
    9–7. The Break Is Set
    9–8. After the Debugger's E Command
    9–9. Invoking SAMPLE
    9–10. At the First Breakpoint
    9–11. At the Start of the WHILE-Clause
    9–12. The Value of One Variable
    9–13. The Values of Several Variables
    9–14. After Scrolling Back through CMDLOG
    9–15. After the Debugger's C Command
    9–16. Exiting from SAMPLE
    9–17. Returning to the Debugger
    9–18. After Exiting from the Debugger

10. $debugExec
  Figures for Chapter 10: $debugExec
    10–1. $debugExec

Appendices for the MAINDEBUG User's Guide
  A. Debugger Restriction

  B. The MODULE SAMPLE

  C. Command Summary
    C.1. General Command Summary
    C.2. Debugging Command Summary
    C.3. Editing Command Summary
    Tables for Appendix C: Command Summary
      C–1. General Command Summary
      C–2. Debugging Command Summary
      C–3. Editing Command Summary


MAINEDIT User's Guide

1. Basic Concepts
  1.1. Version
  1.2. Changes to Commands
  1.3. Using This Manual
  1.4. Notation Conventions
  1.4.1. File Names
  1.4.2. Special Keys
  1.4.3. Dialogues
  1.4.4. Command Descriptions
  1.5. Files, Buffers, and Windows
  1.6. Front Ends and Back Ends
  1.7. Establishing the Default Front End
  1.8. Invoking MAINEDIT
  1.8.1. File to Edit
  1.8.2. Display Module and Baud Rate
  1.8.3. New File
  1.9. MAINEDIT with Command Line Arguments
  1.10. Screen Format
  1.10.1. Message Line
  1.10.2. Status Line
  1.10.3. Page Marks
  1.10.4. Other Special Characters
  1.10.5. Cursor
  1.11. Tabs
  1.12. End-of-Line Characters: Carriage Returns and Linefeeds
  1.13. Finishing the Edit Session
  Tables for Chapter 1: Basic Concepts
    1–1. Key Name Abbreviations
  Figures for Chapter 1: Basic Concepts
    1–2. MAINEDIT Screen Format

2. Editor Parameters: eparms and v1620.prm
  2.1. The $MAINEDIT Group in the Parameter File
  2.1.1. DONOTPROMPTFORPAGEANDLINE
  2.1.2. DISPLAYMODULE
  2.1.3. UPDATEDISPLAYMODULE
  2.1.4. DONOTPROMPTFORDISPLAYMODULE
  2.1.5. PROMPTFORDISPLAYMODULE
  2.1.6. BAUDRATE and UPDATEBAUDRATE
  2.1.7. WINDOWWIDTH
  2.1.8. DONOTUPDATEEPARMS
  2.1.9. FRONTEND and BACKEND
  2.1.10. PROPORTIONALWINDOWS, VISIBLELEFTBORDER, VISIBLERIGHTBORDER, AUTOHORIZONTALSCROLL, and MAXIMUMPROPORTIONALWINDOWS
  2.2. The eparms File
  2.2.1. EDITORPARMSFILE
  2.2.2. CONTEXT
  2.2.3. MACRO and NAMEDMACRO
  2.2.4. DISPLAYMODULE
  2.2.5. Creating a New eparms File

3. Switching among Front Ends

MAINED User's Guide
  1. MAINED Basics
    1.1. Notation Conventions
    1.1.1. Case
    1.2. Starting and Ending a MAINED Session
    1.2.1. Initial Page and Line
    1.2.2. The $MAINED Group in the Parameter File
    1.2.3. Finishing the Edit Session
    1.3. Modes
    1.3.1. Command Mode
    1.3.2. Insert Mode
    1.3.3. Overstrike Mode
    1.3.4. Escape Mode
    1.3.5. Returning to Command Mode
    1.4. Basic Editing Commands
    1.4.1. Moving the Cursor
    1.4.2. Windowing
    1.4.3. Deleting
    1.5. Current Character, Word, Line, and Page
    1.6. MAINED Window Appearance
    1.6.1. Margins
    1.6.2. Buffer End
    1.7. Pages and Page Marks
    1.8. Buffer Names
    1.9. MAINED Special Keys
    Tables for Chapter 1: MAINED Basics
      1–1. Basic Cursor Movement Commands
      1–2. Basic Scrolling Commands
      1–3. Basic Commands for Deleting Text
      1–4. Key Name Abbreviations

  2. Command Syntax
    2.1. Direction (+ or -)
    2.2. Count (n)
    2.3. Emphasis (Q)
    2.4. Special ($)
    2.5. Basic Command
    2.6. Object

  3. Cursor Movement and Windowing
    3.1. Basic Cursor Movement
    3.2. Go to Specified Page and Line
    3.3. Go to Specified Character Position
    3.4. Skip to Character or Line
    3.5. Set and Jump to Mark
    3.6. Scroll Window
    Tables for Chapter 3: Cursor Movement and Windowing
      3–1. Basic Cursor Positioning Commands
      3–2. Page- and Line-Relative Motion Commands
      3–3. Commands to Skip to a Character or Line
      3–4. Commands to Control and Use the Mark
      3–5. Commands for Scrolling Windows

  4. Searching
    4.1. Case-Sensitive Search
    4.2. Identifier Search
    4.3. Pattern Search
    4.4. Line Search
    4.5. RS: Recall SearchStrings into Buffer
    4.6. +R{C,W,L}: Recall {Characters, Words, Lines} into Search Strings
    Tables for Chapter 4: Searching
      4–1. Text Search Commands

  5. Overstriking
    5.1. Overstrike Mode
    5.2. Special Keys in Overstrike Mode
    5.3. Overstriking a Sequence of Characters
    Tables for Chapter 5: Overstriking
      5–1. Effect of Special Keys in Overstrike Mode
      5–2. Commands to Overstrike Text

  6. Inserting
    6.1. Insert Mode
    6.2. Special Keys in Insert Mode
    6.3. Inserting Lines or Characters
    6.4. Inserting the Contents of a Buffer or File
    6.5. Inserting Page Marks
    6.6. Inserting Characters by Code
    Tables for Chapter 6: Inserting
      6–1. Commands to Enter Insert Mode
      6–2. Effect of Special Keys in Insert Mode
      6–3. Commands to Insert Characters or Lines
      6–4. Commands to Insert Buffers or Files
      6–5. The Four Radices Understood by the ' Command

  7. Deleting and Recalling Text
    7.1. Character, Word, and Line Delete Buffers
    7.2. Page Buffers
    7.3. Delete
    7.4. Zap
    7.5. Recalling Text
    7.6. Recalling Text at Prompts on the Message Line
    Tables for Chapter 7: Deleting and Recalling Text
      7–1. Text Deletion Commmands
      7–2. The Zap Commands
      7–3. Text Recalling (Undeletion) Commands

  8. Other Text Modifying Commands
    8.1. Center
    8.2. Copy
    8.3. Move
    8.4. Break
    8.5. Join
    8.6. Convert to Lower or Upper Case
    8.7. Filling and Justification
    Tables for Chapter 8: Other Text Modifying Commands
      8–1. Commands to Center Text on a Line
      8–2. Commands to Copy Text
      8–3. Text Rearranging Commands
      8–4. Commands to Break a Line
      8–5. Commands to Join Two Lines
      8–6. Commands to Convert to Lower/Upper Case
      8–7. Commands to Fill and Justify Text
    Examples for Chapter 8: Other Text Modifying Commands
      8–8. .J Command, Example 1
      8–9. .J Command, Example 2
      8–10. .J Command, Example 3

  9. Windows
    9.1. Changing Window Size
    9.2. Anchoring Windows
    Tables for Chapter 9: Windows
      9–2. Window Management Commands
      9–4. Commands Used to Anchor and Unanchor Windows
    Examples for Chapter 9: Windows
      9–1. A Screen with Two Windows
      9–3. Left-Right Scrolling

  10. Files and Buffers
    10.1. Bringing a File into the Editor
    10.2. Moving the Cursor among Buffers
    10.3. Modifiers of the .F and .B Commands
    10.4. Deleting Buffers
    10.5. Changing Buffer and File Names
    10.6. Displaying Information about Buffers and Files
    10.7. Specifying Front and Back Ends for a Buffer; Multiple Buffers into the Same Data
    Tables for Chapter 10: Files and Buffers
      10–1. File Selection Commands
      10–2. Buffer Selection Commands
      10–3. Commands to Change Buffer and File Names
    Examples for Chapter 10: Files and Buffers
      10–4. Sample Output from the Q= Command

  11. Command and View Front Ends

  12. Saving and Finishing
    Tables for Chapter 12: Saving and Finishing
      12–1. Commands to Save Files and/or Exit from MAINEDIT

  13. Miscellaneous Commands
    13.1. <abort>
    13.2. Again
    13.3. Undo
    13.4. Status Report
    13.5. Suppress Output
    13.6. Refresh Screen
    13.7. Setting Tab Stops
    13.8. Changing the Frequency of Save Reminders
    Tables for Chapter 13: Miscellaneous Commands
      13–1. Forms of the Again Command
      13–2. Undoing Previous Commands on the Current Line
      13–3. Fields Displayed by the = Command
      13–4. Commands to Refresh Part or All of the Screen

  14. Macros
    14.1. Defining a Macro
    14.2. Invoking a Macro
    14.3. Recursive Macros
    14.4. Macros and Editor Modes
    14.5. Special Macro INITIALIZE
    14.5.1. Buffer-Specific INITIALIZE Macros
    Tables for Chapter 14: Macros
      14–2. Commands Used to Manipulate the Mode
    Examples for Chapter 14: Macros
      14–1. Example of a Recursive Macro Definition
      14–3. Setting Tabs to Be Every Fourth Column

  15. Arithmetic Functions
    Tables for Chapter 15: Arithmetic Functions
      15–1. Commands to Perform Arithmetic
    Examples for Chapter 15: Arithmetic Functions
      15–2. Valid Numeric Forms for Arithmetic Commands

  16. Setting and Clearing Options
    16.1. Options That Are Both Global and Local
    16.1.1. lineNumber Option
    16.1.2. readOnly Option
    16.1.3. statusLine Option
    16.1.4. Border Options
    16.1.5. autoHorizontalScroll Option
    16.2. Global Option
    16.2.1. proportionalWindowsMode Option
    16.2.2. maxUnanchoredProportionalWindows
    16.3. MAINED-Specific Options
    16.3.1. stickyTabs Option
    16.4. insertModeDefault and overstrikeModeDefault Options
    16.5. Case Options
    16.6. wordWrap Option
    16.7. countPageMarksAsLines Option
    Tables for Chapter 16: Setting and Clearing Options
      16–1. Editor Option Commands
      16–2. Options
    Examples for Chapter 16: Setting and Clearing Options
      16–3. How the stickyTabs Option Affects the Insertion of Tab Characters

  17. Using MAINED to Invoke Other MAINSAIL Modules
    17.1. Executing a MAINSAIL Module
    17.2. Escaping to Caller
    17.3. Sample Invocation of the MAINSAIL Compiler from MAINED
    17.4. Simultaneous File Access Caveat
    Tables for Chapter 17: Using MAINED to Invoke Other MAINSAIL Modules
      17–1. Commands to Invoke Modules
    Examples for Chapter 17: Using MAINED to Invoke Other MAINSAIL Modules
      17–2. Initial Screen Configuration
      17–3. After Issuing the Command QEcompil
      17–4. After Typing poem
      17–5. After Typing QY-4W in CMDLOG
      17–6. Examining the File poet with .Fpoet
      17–7. After Returning to COMPIL with the E Command
      17–8. Terminating the Compilation with a c
      17–9. Compiling the Correct File
      17–10. After Ending the Compiler Session

  Appendices for the MAINED User's Guide
    A. Terminal Ports

    B. MAINED Command Summary
      Tables for Appendix B: MAINED Command Summary
        B–1. MAINED Commands


MAINVI User's Guide
  1. MAINVI Introduction

  2. Differences between MAINVI and vi
    2.1. Initialization
    2.2. Status Line
    2.3. Tabs
    2.4. Lines Too Long to Fit on the Screen
    2.5. Display of Control Characters
    2.6. Page Marks (CTRL-L in a File)
    2.7. Deletions during Input Mode
    2.8. CTRL-L Command
    2.9. Shell Commands
    2.10. Delete Buffers and Text Recovery
    2.11. Macros
    2.12. Ignored Modes and Variables
    2.13. tabstop
    2.14. Undoing Commands
    2.15. Marks
    2.16. Quoting Input Characters
    2.17. Tags
    2.18. = (Indent for LISP)
    2.19. Crash Facilities
    2.20. Other Unimplemented Commands
    2.21. File Argument List
    2.22. Reading a File
    2.23. Autoindent Space and CTRL-D in Input Mode
    2.24. Warnings about Switching among Buffers
    2.25. The Bell
    2.26. Error Messages
    2.27. Printing the Current Line in ex Mode

  3. Commands and Variables Added to MAINVI
    3.1. Commands
    3.1.1. g: Moving to a Page Mark
    3.1.2. :buffer
    3.1.3. :swm, :frontend
    3.1.4. :hredo, :hundo
    3.1.5. :invoke
    3.1.6. :leftcolumn
    3.1.7. :lset, :set
    3.1.7.1. :reinit
    3.1.8. :unabbreviateall, :unmapall
    3.1.9. :mapcode, :mapcode!
    3.2. Variables
    3.2.1. leftBorderChar, rightBorderChar (Numeric)
    3.2.2. width (Numeric)
    3.2.3. pageAndLinePrompt
    3.2.4. replaceWithoutPrompt

  4. Known MAINVI Problems


Appendices for the MAINEDIT User's Guide
  A. The DATMGR Back End
    Examples for Appendix A: The DATMGR Back End
      A–1. Sample Buffer Using Back End DATMGR

  B. Display Modules
    B.1. How to Get Out When a Display Module Hangs While Trying to Initialize Itself
    B.2. Display Module AM60
    B.3. Display Module AT386
    B.4. Display Module BIGSUN
    B.5. Display Module DTTERM
    B.6. Display Module HEATH
    B.7. Display Module HPTERM
    B.8. Display Module LINDPY
    B.9. Display Module LINXTERM
    B.10. Display Module MSWIN
    B.11. Display Module NCOL
    B.12. Display Modules SUN, SUN3, SUN46, SUNOPENWIN, and SUNXTERM
    B.12.1. Suppressing Flashing in OpenWindows Shell Windows
    B.13. Display Module TRMCAP
    B.14. Display Modules TELEVI and TVI950
    B.15. Display Module VIS550
    B.16. Display Modules VT100, VT102, and VT102M
    B.17. Display Modules WY43, WY50, WY5043, and WY75
    B.18. Display Module XDPY
    Tables for Appendix B: Display Modules
      B–1. Available Display Modules
      B–2. Names of the Arrow Key Codes and Default Macros
      B–3. Sample Heath Switch Settings
      B–4. LINDPY Special Sequences

  C. Key Code Program


MAINKERMIT User's Guide

1. Overview of MAINKERMIT
  1.1. Version
  1.2. File Names and Types
  1.3. File Transfer
  1.4. Operation
  Tables for Chapter 1: Overview of MAINKERMIT
    1–1. Information Displayed during File Transfer

2. MAINKERMIT Commands
  2.1. The SEND Command
  2.2. The RECEIVE Command
  2.3. The GET Command
  2.4. The TEXT, PTEXT, and DATA Commands
  2.5. The SERVER Command
  2.6. The RTEXT, RPTEXT, and RDATA Commands
  2.7. SHOWQUEUE
  2.8. The REMOTE, FINISH, and REXECUTE Commands
  2.9. Local File Manipulation Commands
  2.10. The SET Command
  2.10.1. SET LINE deviceName
  2.10.2. SET BAUD [300|1200|2400|4800|9600]
  2.10.3. SET FILETYPE [TEXT|PTEXT|DATA]
  2.10.4. SET TARGET osName
  2.10.5. SET PROMPT s
  2.10.6. SET DEBUG
  2.10.7. SET BLOCKCHECK [1|2|3]
  2.10.8. SET RETRIES n
  2.10.9. SET ERRORLOG fileName
  2.10.10. SET HALFDUPLEX
  2.10.11. SET FULLDUPLEX
  2.10.12. SET TRANSLATION ebcdicCharCode asciiCharCode
  2.10.13. SET PARITY
  2.10.14. SET NOPARITY
  2.10.15. SET ESCAPE newEscapeCharacter
  2.11. The TAKE Command
  2.12. The CONNECT Command
  2.13. The DIAL and CALL s Commands
  2.14. The HISTORY Command
  Tables for Chapter 2: MAINKERMIT Commands
    2–1. MAINKERMIT Command List
    2–2. Server Commands Supported by MAINKERMIT
    2–3. Remote Commands
    2–4. MAINKERMIT Local File Commands
    2–5. MAINKERMIT SET Options
    2–6. MAINKERMIT Emulator Commands

3. Program Interface
  Figures for Chapter 3: Program Interface
    3–1. MAINKERMIT Module Declaration

Appendices for the MAINKERMIT User's Guide
  A. Status of MAINKERMIT Version 3.1


MAINPM User's Guide

1. Introduction
  1.1. Version

2. General Operation
  2.1. Compiling MODULEs to Be Monitored
  2.2. Running MAINPM, Issuing MAINPM Commands, Running Your Program from MAINPM, and Getting a Listing

3. Running MAINPM
  3.1. Invoking the MODULE MAINPM
  3.2. MAINPM Commands
  3.2.1. Specifying What to Monitor
  3.2.2. Invoking MODULEs from MAINPM
  3.2.3. Specifying Kinds of Statistics
  3.2.4. Specifying Level of Detail
  3.2.5. Including Commands Read from a File
  3.2.6. Writing to the Report File
  3.2.7. Combining Statistics from Several Executions into One Report
  3.2.7.1. Portability of Statistics Files
  3.2.8. Displaying Current MAINPM Status
  3.2.9. Exit from MAINPM
  3.3. Details on the Statistics File
  Tables for Chapter 3: Running MAINPM
    3–1. Summary of MAINPM Commands
    3–2. Types of MAINPM Monitoring
    3–3. Commands Controlling Kinds of Statistics
    3–4. Commands Controlling Level of Detail

4. Monitoring Chunk, STRING, and Static Space
  4.1. The {NO}MONITOR Commands
  4.2. How Chunk, STRING, and Static Space Usage Is Credited to PROCEDUREs

5. PC Sampling
  5.1. PC VIRTUAL {t}
  5.2. PC REAL {t}
  5.3. PC {t}
  5.4. PC WHEN callPattern
  5.5. Deep PC Monitoring
  5.6. Restrictions on PC Monitoring

6. User-Specified Resource Monitoring
  6.1. User-Defined Time Example
  Examples for Chapter 6: User-Specified Resource Monitoring
    6–1. A User-Timed MODULE
    6–2. MODULE to Run before FOO
    6–3. Timing FOO

7. TRACECHUNKS Command
  Figures for Chapter 7: TRACECHUNKS Command
    7–1. Module FOO to Be Executed under TRACECHUNKS
  Examples for Chapter 7: TRACECHUNKS Command
    7–2. Sample TRACECHUNKS Session

8. Report File
  8.1. Counts Table
  8.2. PC-Sampled Timing Output
  8.3. Total Execution Time
  8.4. Unexecuted PROCEDUREs
  8.5. Source Text with Statement Counts
  8.6. Unexecuted Statements
  8.7. TRACECHUNKS Command Output
  8.8. Report File Examples
  Examples for Chapter 8: Report File
    8–1. Partial Listing Generated for PC-Sampled Timing
    8–2. Lines Containing More Than One Statement
    8–3. Source Text of Monitored MODULE
    8–4. Timing and Statement Counts Table
    8–5. Source Text with Statement Counts
    8–6. SPACE Command Output
    8–7. SPACE DEEP Command Output

9. Controlling Monitoring from a Program
  9.1. $startMonitoring and $stopMonitoring
  9.2. $executeMainpmCommands
  9.3. How to Control Monitoring from a Program: The Differences between $executeMainpmCommands("START") and $startMonitoring, and between $executeMainpmCommands("STOP") and $stopMonitoring
  9.4. $statisticsInfo
  Figures for Chapter 9: Controlling Monitoring from a Program
    9–1. $startMonitoring and $stopMonitoring
    9–2. $executeMainpmCommands
    9–3. Starting and Stopping Monitoring
    9–4. $statisticsInfo


MAINSAIL Structure Blaster User's Guide

1. Introduction
  1.1. General Description
  1.2. Version

2. Structure Blaster Function and Performance
  2.1. Alignment and Positioning of Structure Images in Files
  2.2. Portability Considerations in PDF Images
  2.3. Opening Structure Blaster Files
  2.4. Portability of Data Images and Text Forms
  Tables for Chapter 2: Structure Blaster Function and Performance
    2–1. Relative Advantages and Disadvantages of Different Structure Image Formats

3. Text Forms
  3.1. Constants
  3.2. Attributes
  3.3. Units
  3.3.1. CLASS Units
  3.3.2. Record Units
  3.3.3. ARRAY Units
  3.3.4. Vector Units (Obsolete)
  3.3.5. DataSec Units
  3.4. Editing a Text Form
  3.5. Compressed Text Forms
  Tables for Chapter 3: Text Forms
    3–1. \ Escape Sequences in Text Form STRING Constants
  Examples for Chapter 3: Text Forms
    3–2. A Sample CLASS Unit
    3–3. A Sample Record Unit
    3–4. A Sample ARRAY Unit
    3–5. A Sample DataSec Unit

4. Structure Blaster PROCEDUREs
  4.1. $structureCompare
  4.2. $structureCopy
  4.3. $structureDataToText
  4.4. $structureDispose
  4.5. $structureInfo
  4.6. $structureRead
  4.7. $structureSetup
  4.8. $structureTextToData
  4.9. $structureUnSetup
  4.10. $structureWrite
  4.10.1. Structures Written Only from Specified Areas
  Figures for Chapter 4: Structure Blaster PROCEDUREs
    4–1. $structureCompare
    4–2. $structureCopy
    4–3. $structureDataToText
    4–4. $structureDispose
    4–5. $structureInfo
    4–6. $structureRead
    4–7. $structureSetup
    4–8. $structureTextToData
    4–9. $structureUnSetup
    4–10. $structureWrite (Generic)

5. Structure Blaster Examples

6. Structure Blaster Utility Modules
  6.1. STRTXT
  6.2. STRCHK


MAINSAIL STREAMS User's Guide

1. Introduction
  1.1. Version
  1.2. Terminology

2. Overview and Examples
  2.1. What Can I Do Using STREAMS?
  2.2. How to Write Network Servers
  2.2.1. A Normal MAINSAIL MODULE That Provides a Simple Service
  2.2.2. Changing a MODULE to Be an RPC Server
  2.2.3. Compiling the Server MODULE with the RPC Subcommand
  2.2.4. Compiling the Server and Client MODULEs
  2.2.5. Adding an Entry for Your Service to the Services Table and Setting Up the Unregistered Server Directory
  2.2.6. Starting the Server
  2.3. How to Write Embedded Legacy Applications
  2.4. How to Write Parallel Processing Applications
  2.5. How to Write Low-Level Device Control Applications
  Figures for Chapter 2: Overview and Examples
    2–13. The Main Program Starts Multiple Parallel Processes on Different Hosts and Communicates with Them through RPC
  Examples for Chapter 2: Overview and Examples
    2–1. Intmod Containing Interface for ECHOMOD
    2–2. ECHOMOD: A MODULE That Provides a Trivial Service
    2–3. ECHOTST, a MODULE That Tests ECHOMOD
    2–4. Execution of ECHOTST
    2–5. Changes to ECHOHDR for RPC
    2–6. Changes to ECHOMOD for RPC
    2–7. Changes to ECHOTST for RPC
    2–8. Compiling with the RPC Subcommand
    2–9. Compiling the Server MODULEs
    2–10. Compiling the Client MODULEs
    2–11. Invoking the C Compiler from a Program
    2–12. Execution of the Program of
    2–14. LIFEHDR, Life Program Intmod
    2–15. LIFE, Life Main Program
    2–16. LIFECOMOD, MODULE for Dealing with a Single Client Coroutine
    2–17. SUBLIFEMOD, Server MODULE to Which Computation Is “Subcontracted”
    2–18. A Program That Reads a Password without Echoing It

3. Facilities Provided by STREAMS
  3.1. Stream Features
  3.1.1. Summary of Stream Support and Implementation
  3.1.2. The Basic TTY Stream
  3.1.3. Reading Interrupt Characters from the TTY
  3.1.4. Opening Serial TTY Lines
  3.1.5. Setting the Baud Rate on TTY Streams
  3.1.6. Writing a BREAK on TTY Streams
  3.1.7. Clearing Pending I/O
  3.1.8. Scheduling of TTY Streams
  3.1.9. Catching Keyboard Interrupts
  3.1.10. Server/Client Communication
  3.1.11. Child Process Creation
  3.1.12. The System Shell as a Child Process
  3.1.13. Scheduling of Advanced STREAMS
  3.1.14. Timeouts
  3.2. Stream Types
  3.3. Automatic Scheduling of Stream I/O
  3.4. Loose Coupling of STREAMS to MAINSAIL
  Figures for Chapter 3: Facilities Provided by STREAMS
    3–1. Summary of Stream Support
  Examples for Chapter 3: Facilities Provided by STREAMS
    3–2. Using the NTTY Device MODULE

4. Opening and Closing Streams
  4.1. Making STREAMS Available to a MAINSAIL Program: the STRHDR Intmod and $initializeStreams
  4.2. Automatically Opened Streams: $tty and $parent
  4.3. The CLASS $stream
  4.4. Opening and Closing Streams: $openStream and $closeStream
  4.4.1. $openStream
  4.4.2. $closeStream
  4.4.2.1. Detecting When a Child Process Has Exited
  Tables for Chapter 4: Opening and Closing Streams
    4–5. Error Handling in $openStream
  Figures for Chapter 4: Opening and Closing Streams
    4–1. $initializeStreams
    4–3. User-Visible Fields of $stream and STREAMS Macros
    4–4. $openStream (GENERIC) and $closeStream
  Examples for Chapter 4: Opening and Closing Streams
    4–2. Use of $initializeStreams

5. Remote MODULEs and Remote PROCEDURE Calls (RPC)
  5.1. Overview
  5.2. Remote MODULE PROCEDUREs
  5.3. Remote MODULE Interfaces
  5.4. STRING RPC Parameter Limitations
  5.5. Buffer Passing Conventions
  5.5.1. When Buffers Are Allocated and Deallocated
  5.5.2. How to Allocate and Deallocate Buffers
  5.5.3. Redirecting Calls to rpcNewBuffer and rpcDisposeBuffer
  5.5.4. Low-Level Forms of rpcNewBuffer and rpcDisposeBuffer
  5.6. Example of Remote MODULEs between a Parent and Child Process
  5.7. Example Clients and Servers Using Remote MODULEs
  5.8. The Fields of $remoteModuleCls
  5.9. Use of Version Numbers
  5.10. Writing Adaptable Clients
  5.11. The Server Log File
  5.12. Terminating a Global Server: $killServerExcpt
  5.13. Generic RPC Server: the RPCSRV MODULE
  5.14. RPC Implementation Restrictions
  5.15. RPC Efficiency Considerations
  5.16. Parallel Processing Using RPC Calls
  5.17. Remote Exceptions
  5.18. C RPC
  5.18.1. Data Type Rules
  5.18.2. connectServer and the _init Function
  5.18.2.1. connserver
  5.18.3. Calling Remote PROCEDUREs
  5.18.4. The _final Function and disconnserver
  5.18.5. dispose_array
  5.18.6. Handling Exceptions in the Remote MODULE
  5.18.7. Obsolete Mechanism for Handling Exceptions in the Remote MODULE
  5.18.8. Sample C RPC Session
  5.18.9. Building a Sharable Object for mrpc.o
  Tables for Chapter 5: Remote MODULEs and Remote PROCEDURE Calls (RPC)
    5–4. Order of Events with MODIFIES/PRODUCES-Content and MODIFIES/PRODUCES-ADDRESS Buffers
    5–14. C Client Arguments and MAINSAIL Server Parameters
    5–15. ARRAY struct Fields and Meanings
  Figures for Chapter 5: Remote MODULEs and Remote PROCEDURE Calls (RPC)
    5–1. How a Remote Procedure Is Routed
    5–2. Remote MODULE PROCEDUREs
    5–5. rpcNewBuffer and rpcDisposeBuffer
    5–12. User-Visible Fields of $remoteModuleCls
  Examples for Chapter 5: Remote MODULEs and Remote PROCEDURE Calls (RPC)
    5–3. Example USES, PRODUCES-ADDRESS, MODIFIES-ADDRESS, PRODUCES-Content, and MODIFIES-Content Buffer Parameters
    5–6. Example Remote MODULE
    5–7. Parent Executing Remote MODULE FOO in a Child
    5–8. Child Providing the FOO Remote MODULE
    5–9. Example Remote MODULE
    5–10. Example Client of the FOO Remote MODULE Service
    5–11. Example Server Providing the FOO Remote MODULE
    5–13. A Remote MODULE That Sets Its Version Numbers
    5–16. Compilation of Remote MODULE with RPC C Compiler Subcommand
    5–17. C RPC Client in foo.c
    5–18. Compiling the C Client on a Typical UNIX System

6. RPC Files
  6.1. $openRpcFile
  6.2. $rpcFileModuleCls
  Tables for Chapter 6: RPC Files
    6–3. RPC File openBits
  Figures for Chapter 6: RPC Files
    6–1. $openRpcFile
    6–2. CLASS $rpcFileModuleCls

7. Interprocess Communication: Socket Streams
  7.1. Meaning of $eos on Socket Streams
  7.2. Socket-Specific Fields of $stream
  7.3. Servers and Clients: Network Protocol MODULEs and the SERVICE Stream Prefix
  7.3.1. Terminology and Conventions
  7.3.2. Services Table
  7.3.3. The Client End
  7.3.4. The Server End
  7.3.5. STREAMS PROCEDUREs Supported by xidakservices
  7.3.6. The Services Table
  7.4. Child Process Creation: PROCESS and PTYPRO
  7.4.1. Starting a Child Process Using PROCESS
  7.4.2. Starting a Child Process Using PTYPRO
  7.4.3. Starting a MAINSAIL Child Process
  7.4.4. Establishing an Additional Control Stream to a Cooperating Child
  7.5. Terminating a Child Process
  7.6. Process Control
  7.7. Examples
  7.7.1. Sprouting a Print Job and Waiting for It to Exit
  7.7.2. Sprouting an Interactive Child
  Tables for Chapter 7: Interprocess Communication: Socket Streams
    7–1. Socket-Specific Fields of the Stream Record
    7–4. Valid hostAndServiceName Values ($getProtocols)
  Figures for Chapter 7: Interprocess Communication: Socket Streams
    7–3. Server PROCEDUREs
    7–5. Fields of $port
    7–6. Server PROCEDUREs Supported Only by xidakservices
    7–7. $executableBootName
  Examples for Chapter 7: Interprocess Communication: Socket Streams
    7–2. Client Access to a Service
    7–8. Sprouting a Print Job and Waiting
    7–9. Sprouting an Interactive Child

8. Multitasking and the Scheduler
  8.1. Scheduled Coroutines
  8.2. Using Scheduled Coroutines for Stream I/O
  8.3. Cautions About Shared Data Access
  8.4. Scheduling Coroutines for Stream I/O: $queueCoroutine
  8.5. Voluntary Rescheduling: $msTimeout and $reschedule
  8.6. Waiting for Descendant Coroutines: $waitForDescendants
  8.7. Semaphores (Locks)
  8.8. Scheduled Coroutine Map
  8.9. Example Multitasking Programs
  8.9.1. A Simple Terminal Emulator
  8.9.2. Parallel Processing Using RPC Calls
  Figures for Chapter 8: Multitasking and the Scheduler
    8–1. Creating and Scheduling Coroutines
    8–2. Voluntary Rescheduling Calls
    8–3. Coroutine Synchronizing Calls: $waitForDescendants (GENERIC)
    8–4. Semaphore Scheduler Calls
    8–5. $scheduledCoroutineMap
    8–6. Schematic of a Terminal Emulator Program
  Examples for Chapter 8: Multitasking and the Scheduler
    8–7. A Simple Terminal Emulator Using STREAMS
    8–8. Multitasking RPC Calls

9. Handling Keyboard Interrupts
  9.1. Enabling and Handling Interrupts on $tty
  9.2. Stacking of $enableInterrupts
  9.3. Conflict between $enableInterrupt and the $noInterrupt Bit
  9.4. Sample Program That Catches Interrupts
  9.5. Causing Keyboard Interrupts to Occur in a Child Process
  Figures for Chapter 9: Handling Keyboard Interrupts
    9–1. Interrupt-Catching PROCEDUREs
  Examples for Chapter 9: Handling Keyboard Interrupts
    9–2. Handling Keyboard Interrupts
    9–3. Catching Interrupts Asynchronously

10. Low-level Stream I/O PROCEDUREs
  10.1. Low-Level Stream I/O PROCEDURE Conventions
  10.1.1. Timeouts
  10.1.2. Success and Failure of I/O Operations
  10.1.3. The General Error Return ($error)
  10.1.4. The End-of-Stream Return ($eos)
  10.1.5. Timeout Return ($timedOut)
  10.2. Octets
  10.3. Input: $readStream
  10.4. Output: $writeStream
  10.5. Single-Character I/O: $cReadStream and $cWriteStream
  10.6. Miscellaneous Operations: $flushStream and $clearStream
  10.7. Constants and Macros for Stream I/O
  10.8. Multiple Coroutines Performing I/O to the Same Scheduled Stream
  Tables for Chapter 10: Low-level Stream I/O PROCEDUREs
    10–4. Buffering Modes
  Figures for Chapter 10: Low-level Stream I/O PROCEDUREs
    10–1. Special Timeout Values
    10–2. Error Testing Macros
    10–3. $readStream (GENERIC)
    10–5. $writeStream (GENERIC)
    10–6. $cReadStream and $cWriteStream
    10–7. $flushStream and $clearStream

11. TTY Streams: TTYSTR
  11.1. $tty
  11.2. Meaning of $eos on TTY Streams
  11.3. TTY-Specific I/O Bits
  11.4. TTY-Specific PROCEDUREs
  11.5. TTY-Specific Fields of $stream
  11.6. Is My $tty Interactive?
  11.7. Am I a Cooperative Child?
  11.8. Half-Duplex TTY Streams
  11.9. PTY Streams
  11.9.1. PTY-Specific PROCEDUREs
  11.9.2. PTY-Specific Fields of $stream
  Figures for Chapter 11: TTY Streams: TTYSTR
    11–1. TTY-Specific PROCEDUREs
    11–2. TTY-Specific Fields of $stream
    11–3. PTY-Specific PROCEDUREs

12. Memory Streams: MEMSTR

Appendices for the MAINSAIL STREAMS User's Guide
  A. Server Installation Instructions
    A.1. Formats of the XIDAK Services Table
    A.1.1. Choosing Which Format of Services Table to Use
    A.1.2. The xidakservices File Format
    A.1.2.1. The Syntax of the file xidakservices
    A.1.2.1.1. General Rules for xidakservices Syntax
    A.1.2.2. Semantics of the xidakservices Commands
    A.1.2.3. Logical File Name for xidakservices
    A.1.3. The mslhosts File Format
    A.1.3.1. MYHOST hostName
    A.1.3.2. HOSTNAME officialName alias1 alias2 ... aliasn
    A.1.3.3. HOSTPROTOCOL hostName protocol1 protocol2 ... protocoln
    A.1.3.4. SERVICE serviceName hostName/protocol ...
    A.1.3.5. DEFAULTPROTOCOL protocol1 protocol2 ... protocoln
    A.1.4. Creating a mslhosts File
    A.1.4.1. Adding ENTER Subcommands to the MAINSAIL Site-Specific Startup Command File (site.cmd)
    A.2. Registering a Server with the Operating System: Host-Dependent Service Tables
    A.2.1. UNIX Services Table
    A.2.2. Windows NT Services Table
    A.3. Unregistered Servers
    A.4. Arranging for a Server to Be Started as a Background Process at System Startup
    A.5. Starting a Server Manually
    A.6. Installing the gensrv Server
    A.6.1. The gensrv Log File
    Figures for Appendix A: Server Installation Instructions
      A–1. Sample xidakservices File
    Examples for Appendix A: Server Installation Instructions
      A–2. Typical mslhosts File
      A–3. Minimal General mslhosts File between Hosts A and B
      A–4. ENTER in site.cmd for Using Servers
      A–5. Declaring the Service gensrv to BSD UNIX
      A–6. Starting gensrv Automatically under BSD UNIX

  B. Available Network Protocol MODULEs
    Tables for Appendix B: Available Network Protocol MODULEs
      B–1. Protocol MODULEs and Their Characteristics

  C. System-Specific Support for STREAMS
    Tables for Appendix C: System-Specific Support for STREAMS
      C–1. Features Supported by STREAMS Implementations

  D. Extended C RPC Client Example
    Examples for Appendix D: Extended C RPC Client Example
      D–1. MAINSAIL RPC Server Interface PROCEDURE Header
      D–2. C Client That Calls MAINSAIL Remote Module

  E. A Guide to Remote File Access Using NET
    E.1. Use of the NET Device MODULE
    E.2. Execution of MODULEs Stored Remotely
    E.3. Syntactic Sugar for Remote File Access
    E.4. Known Restrictions and Limitations

  F. XIDAK STREAMS Applications and Utilities
    F.1. Orion Database Management System
    F.2. Network File Access: NET Device MODULE
    F.3. Network Server Status: SRVINF
    F.4. MAINSAIL Kermit


MAINSAIL Utilities User's Guide

1. Introduction
  1.1. Version
  1.2. Command Syntax for Line-Oriented Utilities: File Names Containing Spaces
  1.2.1. Trailing Commas
  1.3. Changes to Utility Programs
  1.4. Command Line Arguments

2. CALLS, Call Chain Examiner
  Examples for Chapter 2: CALLS, Call Chain Examiner
    2–1. Sample CALLS Output

3. CHKMOD, Static Interface Consistency Checker
  3.1. Introduction
  3.2. Definition of “References”
  3.3. Src MODULEs and Dst MODULEs
  3.4. Commands to Add, Remove, and Show MODULEs
  3.5. Auxiliary Commands
  3.6. showAllRefs
  3.7. findRefs
  3.8. checkConsistency
  3.9. Use of CHKMOD

4. CLOSEF

5. CONCHK, Memory Consistency Checker

6. CONF, the MAINSAIL Configurator
  6.1. Configuration Files
  6.2. Configuration Commands
  6.2.1. (LONG) INTEGER and (LONG) BITS Command Arguments
  6.2.2. Single-Line and Multiline Command Formats for STRING-Valued Command Arguments
  6.2.3. Commands That Specify (LONG) BITS Values
  6.2.4. <eol>
  6.2.5. BOOTFILENAME s
  6.2.6. COLLECTMEMORYPERCENT n
  6.2.7. COMMANDSTRING
  6.2.8. CONFIGURATIONBITS b
  6.2.9. FOREIGNMODULES
  6.2.9.1. Always Include the Default Foreign MODULEs When Building a Bootstrap
  6.2.10. INITIALMEMORYSIZE n
  6.2.11. INITIALSTATICPOOLSIZE n
  6.2.12. KERMODNAME s
  6.2.13. MAXMEMORYSIZE n
  6.2.14. MAXPERCENTDELAYRIGCHUNKS n
  6.2.15. MAXSIZEDELAYRIGCHUNKS n]
  6.2.16. MINSIZETOALLOCATE n
  6.2.17. MINSTATICPOOLEXTENSIONSIZE n
  6.2.18. OSMEMORYPOOLSIZE n
  6.2.19. PLATFORM s
  6.2.20. QUIT
  6.2.21. RESTORE s
  6.2.22. RUNTIMERESTORE s
  6.2.22.1. Sample Use of RUNTIMERESTORE
  6.2.22.2. How RUNTIMERESTORE Works
  6.2.22.3. Runtime Restore of Configuration Parameters from a C Program
  6.2.23. SAVE s
  6.2.24. SHOW
  6.2.25. STACKSIZE n
  6.2.26. SUBCOMMANDS
  6.2.27. SYSTEMLIBNAME s
  6.2.28. System-Specific CONF Commands
  Tables for Chapter 6: CONF, the MAINSAIL Configurator
    6–2. CONF Command Summary
    6–3. CONF Configuration Bits
  Examples for Chapter 6: CONF, the MAINSAIL Configurator
    6–1. CONF Example
    6–4. Using the CONF Command CONFIGURATIONBITS

7. COPIER, File Copier
  Examples for Chapter 7: COPIER, File Copier
    7–1. COPIER Example

8. Coroutine Utilities
  Examples for Chapter 8: Coroutine Utilities
    8–1. PRNTCO Parent and Children
    8–2. PRNTCO Output

9. DELFIL, File Deleter
  Examples for Chapter 9: DELFIL, File Deleter
    9–1. DELFIL Example

10. DIR

11. DISPSE, MODULE Disposer
  Examples for Chapter 11: DISPSE, MODULE Disposer
    11–1. DISPSE Example

12. DVIEW, Data File Viewer
  12.1. n, <eol>, +n, and -n
  12.2. A and R
  12.3. D
  12.4. I and L
  12.5. P
  12.6. S xxx
  12.7. W xxx
  12.8. F xxx
  12.9. Q
  12.10. DVIEW Example
  Tables for Chapter 12: DVIEW, Data File Viewer
    12–1. DVIEW Commands
  Examples for Chapter 12: DVIEW, Data File Viewer
    12–2. DVIEW Example

13. FILMRG, File Merging Utility
  Examples for Chapter 13: FILMRG, File Merging Utility
    13–1. Prompts for FILMRG Options
    13–2. FILMRG Example
    13–3. A Sample Conflicting Section from the Merged File

14. GCCHP, Global File Cache Parameter Utility
  14.1. Overview
  14.2. How to Use GCCHP
  Examples for Chapter 14: GCCHP, Global File Cache Parameter Utility
    14–1. GCCHP Example

15. HSHMOD, Hash Lookup Utility
  15.1. Overview
  15.2. HSHMOD Header
  15.3. The PROCEDURE hashInit
  15.4. The PROCEDURE hashEnter
  15.5. The PROCEDURE hashLookup
  15.6. The PROCEDURE hashRemove
  15.7. The PROCEDURE hashNext
  15.8. The PROCEDUREs hashLookupNextInit and hashLookupNext
  15.9. The PROCEDURE hashRemoveRecord
  15.10. The PROCEDUREs hashLoad and hashStore
  15.11. Creating Instances of HSHMOD
  15.12. Disposing HSHMOD Data
  15.13. Efficiency Issues
  Figures for Chapter 15: HSHMOD, Hash Lookup Utility
    15–1. Declaration of hashedRecord
    15–3. HSHMOD Interface
    15–4. Including the HSHMOD Declarations
  Examples for Chapter 15: HSHMOD, Hash Lookup Utility
    15–2. Using hashedRecord as a Prefix CLASS
    15–5. Using the PROCEDURE hashLookup
    15–6. Using the PROCEDURE hashNext
    15–7. Disposing of All Records in a Symbol Table
    15–8. HSHMOD Pointers

16. IFX, ELSEX, and ENDX: MAINEX Script Conditional Execution MODULEs
  Examples for Chapter 16: IFX, ELSEX, and ENDX: MAINEX Script Conditional Execution MODULEs
    16–1. Use of IFX, ELSEX, and ENDX

17. INTCOM
  17.1. Interactive Use of INTCOM
  17.2. Calling INTCOM from a Program
  Figures for Chapter 17: INTCOM
    17–1. $compareIntmods

18. INTLIB
  18.1. How INTLIB Opens Library Files
  18.2. Library Size
  18.3. INTLIB Commands
  18.3.1. <eol>, QUIT
  18.3.2. ADD dLibName{,sysAbbrev} modList
  18.3.3. COPY sLibName{,sysAbbrev} dLibName{,sysAbbrev}{ modList}
  18.3.4. CREATE libName
  18.3.5. DEFINE libName s
  18.3.6. DELETE sLibName{,sysAbbrev} modList
  18.3.7. DIRECTORY libName{,sysAbbrev}{=fileName}{ modList}
  18.3.8. EXTRACT sLibName{,sysAbbrev}{ modList}
  18.3.9. LOG
  18.3.10. MOVE sLibName{,sysAbbrev} dLibName{,sysAbbrev} modList
  18.3.11. NOLOG
  18.3.12. QDIRECTORY libName{,sysAbbrev}{=fileName}{ modList}
  18.3.13. READ fileName
  18.3.14. TARGET{ sysAbbrev}
  18.3.15. UPDATE/NOUPDATE
  18.4. INTLIB as a Device Prefix
  18.5. INTLIB Program Interface
  Tables for Chapter 18: INTLIB
    18–1. Forms of a modList Element
    18–2. INTLIB Commands
    18–3. INTLIB ADD Command modList Forms
    18–5. Option Letters Displayed by the DIRECTORY Command
    18–6. INTLIB EXTRACT Command modList Forms
  Figures for Chapter 18: INTLIB
    18–7. Declaration of $executeIntlibCommands
  Examples for Chapter 18: INTLIB
    18–4. Using the INTLIB DIRECTORY Command

19. LIB and LIBEX, File Library Device MODULE and Librarian
  19.1. Introduction
  19.1.1. Likely Changes
  19.1.2. Motivation
  19.2. General Concepts
  19.2.1. Basic Definitions
  19.2.2. The Base File
  19.2.3. The Directory Structure
  19.2.4. Library File Name Syntax
  19.2.5. Versions
  19.2.6. Hard Delete Attribute
  19.2.7. Storage of Objects
  19.2.8. The lparms File
  19.3. Device MODULE Interface
  19.4. Program Interface
  19.4.1. doCommandsInFile and doCommandsInString
  19.4.1.1. doCommandsInFile
  19.4.1.2. doCommandsInString
  19.4.2. Exiting MAINSAIL and Disposing of LIB
  19.4.3. Library Integrity
  19.5. LIB Commands
  19.5.1. Command Lines
  19.5.2. Switches
  19.5.2.1. Mode Switches
  19.5.3. Connection Commands
  19.5.4. Definition Commands
  19.5.5. Directory Information Commands
  19.5.5.1. Directory Information Command Switches
  19.5.6. Library Creation Command
  19.5.7. Directory Creation Commands
  19.5.8. Host File Manipulation Commands
  19.5.9. Object Copying Commands
  19.5.10. Object Renaming Commands
  19.5.11. Object Removal Commands
  19.5.12. Deletion Control Commands
  19.5.13. Version Control Command
  19.5.14. SAVE Command
  19.5.15. Mode Commands
  19.5.15.1. Confirmation Commands
  19.5.15.2. Verbosity Commands
  19.5.16. Termination Commands
  19.5.17. Input Redirection Commands
  19.5.18. MODULE Execution Command
  19.5.19. Maintenance and Diagnostic Commands
  19.6. LIBEX
  19.6.1. Sample LIBEX Execution
  19.7. Known Bugs and Problems in LIB
  Tables for Chapter 19: LIB and LIBEX, File Library Device MODULE and Librarian
    19–5. Mode Switches
    19–6. DIRECTORY and LS Switches
    19–7. Directory Object Attributes
    19–8. File Object Attributes
    19–11. CREATE Switches
    19–12. MAKE Switches
    19–13. LIBEX Execution
  Figures for Chapter 19: LIB and LIBEX, File Library Device MODULE and Librarian
    19–3. doCommandsInFile and doCommandsInString
    19–4. Accessing LIB's Program Interface
  Examples for Chapter 19: LIB and LIBEX, File Library Device MODULE and Librarian
    19–1. How to Open a Library File from a Program
    19–2. How to Specify a Library File to an Application
    19–9. Short Listing Produced by DIRECTORY and LS
    19–10. Long Listing Produced by DIRECTORY and LS

20. LINCOM, Text File Comparer
  Examples for Chapter 20: LINCOM, Text File Comparer
    20–1. LINCOM Subcommand Prompts
    20–2. LINCOM Example

21. MAINEX, the MAINSAIL Executive
  21.1. MAINEX Executive Dialogue
  21.1.1. Using MAINEX to Invoke MAINSAIL Programs with a Single Command Line
  21.1.1.1. Examples
  21.1.1.2. The Exact Rules for One-Line Command Syntax
  21.1.1.3. End of Redirected Command File, and Error Conditions
  21.2. MAINEX Subcommands
  21.2.1. Long Subcommand Lines
  21.2.2. Search Rule Manipulation Subcommands
  21.2.2.1. [INT|OBJ|EXE][FILE|LIB] m1{=f1} ... mn{=fn}
  21.2.2.2. [INT|OBJ|EXE]DEFAULT m1 ... mn
  21.2.2.3. [INT|OBJ|EXE]SHOW {m1 ... mn}
  21.2.2.4. [INT|OBJ|EXE]FILE
  21.2.2.5. [INT|OBJ|EXE]LIB
  21.2.3. CHECKCONSISTENCY/NOCHECKCONSISTENCY
  21.2.4. CLoseexelib fn
  21.2.5. CLOSEINTLIB fn
  21.2.6. CLOSEOBJLIB fn
  21.2.7. CMDFILE fn
  21.2.8. CONTROLINFO/NOCONTROLINFO
  21.2.9. CSUBCOMMANDS fn
  21.2.10. DEFine name body
  21.2.11. DEFINETIMEZONE s n
  21.2.12. DELAYRIGPTRS
  21.2.13. DSTENDRULE s
  21.2.14. DSTNAME s
  21.2.15. DSTOFFSET n
  21.2.16. DSTSTARTRULE s and DSTENDRULE s
  21.2.17. ECHOCMDFILE/NOECHOCMDFILE
  21.2.18. ECHOifredirected/NOECHOifredirected
  21.2.19. ENTER ln fn
  21.2.20. FILEINFO/NOFILEINFO
  21.2.21. GLOBALREMOVE r and GLOBALSYMBOL r s
  21.2.22. GMTOFFSET n
  21.2.23. LOGFILE fn
  21.2.24. LOOKUP ln
  21.2.25. MAP n/NOMAP
  21.2.26. MEMINFO/NOMEMINFO
  21.2.27. OPenexelib fn
  21.2.28. OPENINTLIB fn
  21.2.29. OPENLIBRARY fn
  21.2.30. OPENOBJLIB fn
  21.2.31. RELEASE
  21.2.32. RESPONSE/NORESPONSE
  21.2.33. REVISION
  21.2.34. RIGGINGPTRBADADDR, RIGGINGSTRBADCHAR, RIGPTRS, and RIGSTRS
  21.2.35. SEARCHPATH
  21.2.35.1. Searchpaths Beginning with * *
  21.2.36. SETFILE tmn fn
  21.2.37. SETMODULE dmn tmn
  21.2.38. STDNAME s and DSTNAME s
  21.2.39. SUBCOMMANDS fn
  21.2.40. SWAPINFO/NOSWAPINFO
  21.2.41. # s
  21.3. Initialization Parameters for MAINEX in the Parameter File
  21.4. $mainsailExec
  21.5. $getSubcommands
  Tables for Chapter 21: MAINEX, the MAINSAIL Executive
    21–1. MAINEX Commands
    21–4. MAINEX Subcommands
    21–5. MAINEX Search List Subcommands Summary
    21–9. Memory Map Display Characters
  Figures for Chapter 21: MAINEX, the MAINSAIL Executive
    21–10. $mainsailExec
    21–11. $getSubcommands
  Examples for Chapter 21: MAINEX, the MAINSAIL Executive
    21–2. Invoking a MODULE by MODULE Name
    21–3. Invoking a MODULE by File Name
    21–6. Using the MAINEX Subcommand CMDFILE
    21–7. Using the MAINEX Subcommand ENTER
    21–8. Using the MAINEX Subcommand LOGFILE

22. The Device MODULE MEM

23. MM
  23.1. all
  23.2. ari
  23.3. ci
  23.4. di
  23.5. fr
  23.6. i
  23.7. Memory Gaps and the m Command
  23.8. ri Command
  23.8.1. LOCAL kindOfVar
  23.8.2. OWN kindOfVar
  23.8.3. SHARED kindOfVar
  23.8.4. FIELD kindOfVar
  23.8.5. IFIELD kindOfVar
  23.8.6. ARYELEM kindOfVar
  23.8.7. VECELEM kindOfVar
  23.9. Other Commands
  23.10. Command Line Arguments to MM
  Tables for Chapter 23: MM
    23–1. MM Commands

24. MODLIB, the MAINSAIL Objmod Librarian
  24.1. How MAINSAIL Opens Library Files
  24.2. MODLIB on Old Libraries
  24.3. Library Size
  24.4. MODLIB Commands
  24.4.1. <eol>, QUIT
  24.4.2. ADD dLibName modList
  24.4.3. COPY sLibName dLibName{ modList}
  24.4.4. CREATE libName
  24.4.5. DEFINE libName s
  24.4.6. DELETE sLibName modList
  24.4.7. DIRECTORY libName{=fileName}{ modList}
  24.4.8. DIRECTORY ?
  24.4.9. EXTRACT sLibName{ modList}
  24.4.10. LEGALNOTICE libName{ modList}
  24.4.11. LOG/NOLOG
  24.4.12. MOVE sLibName dLibName modList
  24.4.13. QDIRECTORY libName{=fileName}{ modList}
  24.4.14. READ fileName
  24.4.15. TARGET{ targetSystem}
  24.4.16. UPDATE/NOUPDATE
  24.5. MODLIB as a Device Prefix
  24.6. MODLIB Program Interface
  Tables for Chapter 24: MODLIB, the MAINSAIL Objmod Librarian
    24–1. Forms of a modList Element
    24–2. MODLIB Commands
    24–3. MODLIB ADD Command modList Forms
    24–5. Option Letters Displayed by the DIRECTORY Command
    24–6. MODLIB EXTRACT Command modList Forms
    24–7. MODLIB MOVE Command modList Forms
  Figures for Chapter 24: MODLIB, the MAINSAIL Objmod Librarian
    24–8. Declaration of $executeModlibCommands
  Examples for Chapter 24: MODLIB, the MAINSAIL Objmod Librarian
    24–4. Using the MODLIB DIRECTORY Command

25. The Device MODULE NUL

26. OBJCOM
  26.1. Interactive Use of OBJCOM
  26.2. Calling OBJCOM from a Program
  Figures for Chapter 26: OBJCOM
    26–1. $compareObjmods

27. PDFMOD, Portable Data Format Routines
  27.1. pdfCharRead
  27.2. pdfChars
  27.3. pdfCharWrite
  27.4. pdfcRead
  27.5. pdfcWrite
  27.6. pdfDeInit
  27.7. pdfFldRead
  27.8. pdfInit
  27.9. pdfRead
  27.10. pdfWrite
  27.11. The PDF CHARADR Read PROCEDUREs
  27.12. The PDF CHARADR Write PROCEDUREs
  Figures for Chapter 27: PDFMOD, Portable Data Format Routines
    27–1. pdfCharRead (GENERIC)
    27–2. pdfChars
    27–3. pdfCharWrite
    27–4. pdfcRead
    27–5. pdfcWrite
    27–6. pdfDeInit
    27–7. pdfFldRead
    27–8. pdfInit
    27–9. pdfRead
    27–10. pdfWrite
    27–11. The PDF CHARADR Read PROCEDUREs
    27–12. The PDF CHARADR Write PROCEDUREs

28. PMERGE, Page Merger
  Tables for Chapter 28: PMERGE, Page Merger
    28–1. PMERGE Page Specifications
  Examples for Chapter 28: PMERGE, Page Merger
    28–2. PMERGE Page Specification Example
    28–3. PMERGE Example

29. $ranCls and $ranMod, Pseudorandom Number Generator
  Figures for Chapter 29: $ranCls and $ranMod, Pseudorandom Number Generator
    29–1. $ranCls and $ranMod
  Examples for Chapter 29: $ranCls and $ranMod, Pseudorandom Number Generator
    29–2. Use of $rand and $sRand

30. RNMFIL, File Renamer
  Examples for Chapter 30: RNMFIL, File Renamer
    30–1. RNMFIL Example
    30–2. RNMFIL Example with a Rename Error

31. SRTMOD, Sorting Package
  31.1. Sorting Dynamic ARRAYs of Ordered Data Types
  31.2. Sorting ARRAYs with User-Defined Ordering
  31.3. Multiple-ARRAY or Non-ARRAY Sorting
  31.4. Reversing an ARRAY
  31.5. Reordering an ARRAY According to an Index ARRAY
  Figures for Chapter 31: SRTMOD, Sorting Package
    31–1. sort (GENERIC)
    31–6. reverse (GENERIC)
    31–7. reorder (GENERIC)
  Examples for Chapter 31: SRTMOD, Sorting Package
    31–2. A Parallel Sorting Program
    31–3. Input File parsrt.dat for PARSRT
    31–4. PARSRT Execution
    31–5. Use of generateMultipleQuickSort

32. STAMP and Object MODULE Security
  32.1. Expiration Date
  32.2. Password
  32.3. Target CPU IDs
  32.4. Target System
  32.5. Stamping MODULEs in Libraries
  32.6. Information about an Object MODULE
  32.7. Miscellaneous
  32.7.1. List of Commands
  32.7.2. Long Command Lines
  32.7.3. setToCompiledState Example
  32.7.4. Match-All Keys
  32.8. STAMP Program Interface
  Tables for Chapter 32: STAMP and Object MODULE Security
    32–10. Forms of the STAMP library Command
  Figures for Chapter 32: STAMP and Object MODULE Security
    32–14. $executeStampCommands
  Examples for Chapter 32: STAMP and Object MODULE Security
    32–1. setExpirationDate
    32–2. mixupExpirationDate
    32–3. setMixedupExpirationDate
    32–4. setPassword
    32–5. mixupPassword
    32–6. setMixedupPassword
    32–7. setCpuIds
    32–8. mixupCpuIds
    32–9. setMixedupCpuIds
    32–11. Stamping a MODULE in a Library
    32–12. STAMP Help
    32–13. setToCompiledState
    32–15. Use of $executeStampCommands

33. SUBCMD, Subcommand Processor
  33.1. SUBCMD Example
  Examples for Chapter 33: SUBCMD, Subcommand Processor
    33–1. SUBCMD Example with Subcommands Entered from TTY Using MAINED

34. TVIEW, Text File Viewer
  34.1. n, <eol>, ^, +n, and -n
  34.2. C and C n
  34.3. F xxx
  34.4. P
  34.5. Q
  34.6. S xxx
  34.7. W xxx
  34.8. TVIEW Example
  Tables for Chapter 34: TVIEW, Text File Viewer
    34–1. TVIEW Commands
  Examples for Chapter 34: TVIEW, Text File Viewer
    34–2. TVIEW Example

35. WRDCOM, Data File Comparer
  Examples for Chapter 35: WRDCOM, Data File Comparer
    35–1. WRDCOM Example

36. XREF, Cross-Reference
  Tables for Chapter 36: XREF, Cross-Reference
    36–1. XREF Keyword Options
  Examples for Chapter 36: XREF, Cross-Reference
    36–2. XREF Example
    36–3. XREF Output for sample


Motif-Based MAINSAIL Tools Reference Guide

1. Introduction
  1.1. MAINDEBUG User Interfaces
  1.2. How the Motif GUI Is Built
  Figures for Chapter 1: Introduction
    1–1. To Get Started Quickly with the GUI Debugger

2. Debugger Sample Session
  Figures for Chapter 2: Debugger Sample Session
    2–1. Initial Debugger Window
    2–2. The Open module... Dialog Box
    2–3. SAMPLE's Source Text
    2–4. Search Dialog Box
    2–5. The Cursor at the Start of hash
    2–6. The Debugger Draws a Box around a Statement Where a Breakpoint Is Set
    2–7. Invoke Module Dialog
    2–8. The Program's Prompts Appear in CMDLOG
    2–9. The Main Window after the Breakpoint Is Reached
    2–10. The Data Browser Window with Local and Outer Variables
    2–11. The Data Browser Displays the PROCEDURE Stack
    2–12. The Watched Expressions List
    2–13. The Data Browser with the Watch Expr Window for s = "c"
    2–14. A Data Browser with Two Panes
    2–15. The Main Window with the Exit Confirmation Dialog

3. General Information
  3.1. Installing the GUI
  3.2. Customizing the GUI
  3.3. Starting the GUI
  3.4. Starting the GUI under Solaris
  3.5. Making the GUI Debugger the Default
  3.6. Basic Concepts
  3.7. GUI Commands
  3.7.1. Issuing Commands
  3.7.2. Dialog Windows
  3.8. Editing Commands
  3.8.1. Changing the Current Buffer
  3.8.2. Resizing Windows
  3.8.3. Scrolling
  3.8.4. Selecting Text
  3.8.5. Typing in SIMPED
  3.8.6. Cutting, Copying, Pasting, and Deleting Text
  3.8.7. Setting Local Options
  3.9. Debugging Commands
  Figures for Chapter 3: General Information
    3–1. The Main Window
    3–2. After Selecting a Word by Double-Clicking on It
    3–3. After Replacing the Selection by Typing

4. Data Browsers
  4.1. Navigation Controls
  4.2. Display Object or Display Memory
  4.3. Watch Expression Controls
  4.3.1. Break Conditions for Watch Expressions
  4.3.2. Controlling the Data Section or Coroutine in Which an Expression Is Watched
  4.4. The Watch Controls
  4.4.1. The Watch Expr Window
  Figures for Chapter 4: Data Browsers
    4–1. Data Browser Window
    4–2. A Program That Creates Records That Can Be Viewed in a Data Browser
    4–3. Local Variables of Program in Displayed with POINTER Buttons Shown Next to POINTER Variables
    4–4. Record Displayed after Clicking on a POINTER Button in
    4–5. Four Watch Buttons and One POINTER Button
    4–6. Browser with Multiple Panes

5. Graphical Performance Monitor
  5.1. Monitor Memory Pages
  5.2. Monitor Proc Pcs
  5.3. Monitor Allocated Classes
  5.4. Monitor Collected Classes
  5.5. Monitor Proc Chunk Allocation, Monitor Proc String Allocation, and Monitor Proc Static Allocation
  5.6. Trace Chunks
  Figures for Chapter 5: Graphical Performance Monitor
    5–1. MAINSAIL Monitor Window
    5–2. Add Monitoring Items Window
    5–3. Memory Map Window
    5–4. The Memory Management Menu
    5–5. The Settings Menu
    5–6. The Info Menu
    5–7. Procedure Pcs Window
    5–8. Allocated Records and DataSecs Window
    5–9. Garbage Collected Records and DataSecs Window
    5–10. Chunk Space Allocated by Proc Window

6. Menu-by-Menu Command Descriptions
  6.1. File Menu
  6.1.1. File->Edit buffer...
  6.1.2. File->Edit file...
  6.1.3. File->Save buffers...
  6.1.4. File->Change front end...
  6.1.5. File->Invoke foreign editor
  6.1.6. File->Kill buffers...
  6.1.7. File->Kill windows...
  6.1.8. File->Global options...
  6.1.9. File->Local options...
  6.1.10. File->Resume program
  6.1.11. File->Exit
  6.2. Edit Menu
  6.2.1. Edit->Undo
  6.2.2. Edit->Redo
  6.2.3. Edit->Cut
  6.2.4. Edit->Copy
  6.2.5. Edit->Paste
  6.2.6. Edit->Delete
  6.2.7. Edit->Insert pageMark
  6.2.8. Edit->Go to->Previous page
  6.2.9. Edit->Go to->Next page
  6.2.10. Edit->Go to->Page.line...
  6.2.11. Edit->Go to->Absolute line...
  6.2.12. Edit->Go to->Top of current page
  6.2.13. Edit->Search...
  6.2.14. Edit->Abort command
  6.3. Subcommands Menu
  6.3.1. Subcommands->Execute Subcommand...
  6.3.2. Subcommands->Execute Subcommand File...
  6.3.3. Subcommands->Set Parameters...
  6.3.4. Subcommands->Searchpaths...
  6.3.5. Subcommands->Logical file names...
  6.3.6. Subcommands->Module name aliases...
  6.3.7. Subcommands->Module name associations...
  6.3.8. Subcommands->Global symbols...
  6.3.9. Search Rule Manipulation Commands: Subcommands->Exemods..., Subcommands->Objmods..., and Subcommands->Intmods...
  6.4. Access Menu
  6.4.1. Access->Open module...
  6.4.2. Access->Dispose module...
  6.4.3. Access->Open module instance...
  6.4.4. Access->Open coroutine...
  6.4.5. Access->Open intlib...
  6.4.6. Access->Open modlib...
  6.5. Breaks Menu
  6.5.1. Changing Breakpoint Definitions
  6.5.2. Breaks->Set breakpoint at cursor
  6.5.3. Breaks->Set temp breakpoint at cursor
  6.5.4. Breaks->Remove breakpoint at cursor
  6.5.5. Breaks->Remove all breakpoints
  6.5.6. Breaks->Show breakpoints...
  6.5.7. Breaks->Set breakpoint...
  6.5.8. Breaks->Set count break...
  6.6. MoveTo Menu
  6.6.1. MoveTo->Caller
  6.6.2. MoveTo->Callee
  6.6.3. MoveTo->Break context
  6.6.4. MoveTo->Command context
  6.6.5. MoveTo->Exception
  6.6.6. MoveTo->Handler
  6.6.7. MoveTo->Code dspl...
  6.7. Show Menu
  6.7.1. Show->Value...
  6.7.2. Show->Object...
  6.7.3. Show->Declaration->Original source...
  6.7.4. Show->Declaration->Synthesized source...
  6.7.5. Show->Declaration->Synthesized source with proc body...
  6.7.6. Show->Data browser
  6.7.7. Show->Memory...
  6.7.8. Show->Options...
  6.8. Execution Menu
  6.8.1. Execution->Step over calls
  6.8.2. Execution->Step into calls
  6.8.3. Execution->Trace procs...
  6.8.4. Execution->Stop tracing procs
  6.8.5. Execution->Continue->From break
  6.8.6. Execution->Continue->From cursor
  6.8.7. Execution->Continue->From position...
  6.8.8. Execution->Remote debug...
  6.8.9. Execution->Local debug
  6.8.10. Execution->Abort user program
  6.8.11. Execution->Invoke module...
  6.8.12. Execution->Monitor...
  6.8.13. Execution->Compile declarations...
  6.8.14. Execution->Execute statements...
  6.8.15. Execution->Execute commands...
  6.9. Command Buttons
  Figures for Chapter 6: Menu-by-Menu Command Descriptions
    6–1. File Menu
    6–2. Edit Buffer Window
    6–3. Edit File Window
    6–4. Write buffer ...? Dialog Box
    6–5. Change FrontEnd Dialog
    6–6. The Kill Buffers Window
    6–7. Kill Windows Window
    6–8. Global Options Window
    6–9. Local Options Window
    6–10. Edit Menu
    6–11. Go to Page and Line Window
    6–12. Go to Absolute Line Window
    6–13. Search Window
    6–14. Searching for this, that, or the other
    6–15. Searching for Identifiers this, that, the, or other
    6–16. Searching for foo or bar at the Start of a Line
    6–17. The Pattern Help Window
    6–18. Subcommands Menu
    6–19. Execute Subcommand Window
    6–20. Execute Subcommand File Window
    6–21. Parameters Window
    6–22. Searchpaths Window
    6–23. Logical File Names Window
    6–24. Module Name Aliases Window
    6–25. Module Name Associations Window
    6–26. Global Symbols Window
    6–27. Exemods Window
    6–28. Access Menu
    6–29. Open Module Window
    6–30. Dispose Module Window
    6–31. Open Module Instance Window
    6–32. Open Coroutine Window
    6–33. Open Intlib Window
    6–34. Open Modlib Window
    6–35. Breaks Menu
    6–36. After Moving the Cursor to the Start of j .+ 2 and Choosing Breaks->Set breakpoint at cursor
    6–37. After Moving the Cursor to the Start of j .+ 2 and Choosing Breaks->Set temp breakpoint at cursor
    6–38. Breakpoint Window
    6–39. Count Break Window
    6–40. MoveTo Menu
    6–41. Move to Code Dspl Window
    6–42. Show Menu
    6–43. Show Values Window
    6–44. Show Objects Window
    6–45. Show Declaration Original Source Window
    6–46. Show Declarations Synthesized Source Window
    6–47. Show Declaration Synthesized Source with Proc Body Window
    6–48. Show Memory Window
    6–49. Options Window
    6–50. Execution Menu
    6–51. Trace Procs Window
    6–52. Continue from Position Window
    6–53. Remote Debug Window
    6–54. Invoke Module Window
    6–55. Compile Declarations Window
    6–56. Execute Statements Window
    6–57. Execute Commands Window

Appendices for the Motif-Based MAINSAIL Tools Reference Guide
  A. The INVOKABLE Compiler Directive and the invokableModules Parameter in the $GUIEXE Group
    A.1. INVOKABLE Compiler Directive
    A.2. The invokableModules Parameter in the $GUIEXE Parameter Group

  B. MAINDEBUG, Motif, and X
    B.1. Setting Up Your .Xdefaults or .Xresources File
    B.2. Running X and Motif Applications Remotely

  C. Display MODULE XDPY



top   contents   index   framed top   this page unframed

Table of Contents