Contents

Chapter 1: 
 
  • 1.1 Features
  • 1.2 Language Overview
  • 1.2.1 Statements and Commands
  • 1.2.2 Functions
  • 1.2.3 Expressions
  • 1.2.4 Variables
  • 1.2.5 Operators
  • 1.3 Relationship with ANSI Standard M
  • Chapter 2: 
     
  • 2.1 Case Sensitivity
  • 2.1.1 Identifiers
  • 2.1.2 Keyword Names
  • 2.1.3 Class Names
  • 2.1.4 Namespace Names
  • 2.2 Invoking Commands and Functions
  • 2.3 White Space
  • 2.4 Comments
  • 2.4.1 Single-Line Comments
  • 2.4.2 Multiple-Line Comments
  • 2.4.3 Retaining Comment Text in Object Routines
  • 2.5 Literals
  • 2.5.1 String Literals
  • 2.5.2 Numeric Literals
  • 2.6 Identifiers
  • 2.6.1 Special Identifiers
  • 2.6.2 Dot (.) Character within Identifiers
  • 2.7 Labels
  • 2.8 Reserved Words
  • Chapter 3: 
     
  • 3.1 Strings
  • 3.1.1 Escaping Quotation Marks
  • 3.1.2 Concatenating Strings
  • 3.2 Numbers
  • 3.3 Objects
  • 3.4 Persistent Multi-dimensional Arrays (Globals)
  • 3.5 Undefined Values
  • 3.6 Boolean Values
  • 3.7 Dates
  • Chapter 4: 
     
  • 4.1 Categories of Variables
  • 4.1.1 Local Variables
  • 4.1.2 Globals
  • 4.1.3 Array Variables
  • 4.1.4 System Variables
  • 4.1.5 Object Properties
  • 4.2 Variable Typing and Conversion
  • 4.2.1 Object Values
  • 4.3 Variable Declaration and Scope
  • Chapter 5: 
     
  • 5.1 Introduction to Operators and Expressions
  • 5.1.1 Operator Precedence
  • 5.1.2 Expressions
  • 5.1.3 Assignment
  • 5.2 Arithmetic Operators
  • 5.2.1 Unary Positive Operator (+)
  • 5.2.2 Unary Negative Operator (-)
  • 5.2.3 Addition Operator (+)
  • 5.2.4 Subtraction Operator (-)
  • 5.2.5 Multiplication Operator (*)
  • 5.2.6 Division Operator (/)
  • 5.2.7 Exponentiation Operator (**)
  • 5.2.8 Integer Divide Operator ( \ )
  • 5.2.9 Modulo Operator (#)
  • 5.3 Logical Comparison Operators
  • 5.3.1 Unary Not
  • 5.3.2 Precedence and Logical Operators
  • 5.3.3 Binary And
  • 5.3.4 Binary Or
  • 5.4 String Operators
  • 5.4.1 Binary Concatenate
  • 5.5 Numeric Relational Operators
  • 5.5.1 Binary Less Than
  • 5.5.2 Binary Greater Than
  • 5.5.3 Greater Than or Equal To
  • 5.5.4 Less Than or Equal To
  • 5.6 String Relational Operators
  • 5.6.1 Binary Equals
  • 5.6.2 Binary Contains
  • 5.6.3 Binary Follows
  • 5.6.4 Binary Sorts After
  • 5.7 Pattern Matching
  • 5.7.1 Specifying How Many Times a Pattern Can Occur
  • 5.7.2 Specifying Multiple Patterns
  • 5.7.3 Specifying a Combination Pattern
  • 5.7.4 Specifying an Indefinite Pattern
  • 5.7.5 Specifying an Alternating Pattern (Logical OR)
  • 5.7.6 Using Incomplete Patterns
  • 5.7.7 Multiple Pattern Interpretations
  • 5.7.8 Not Match Operator
  • 5.8 Indirection
  • 5.8.1 Name Indirection
  • 5.8.2 Pattern Indirection
  • 5.8.3 Argument Indirection
  • 5.8.4 Subscript Indirection
  • 5.8.5 $TEXT Argument Indirection
  • Chapter 6: 
     
  • 6.1 Command Arguments
  • 6.1.1 Multiple Arguments
  • 6.1.2 Argumentless Commands
  • 6.2 Command Postconditional Expressions
  • 6.2.1 Postconditional Syntax
  • 6.2.2 Evaluation of Postconditionals
  • 6.3 Invoking Code
  • 6.3.1 Do
  • 6.3.2 Quit
  • 6.3.3 Job
  • 6.3.4 Xecute
  • 6.4 Assignment Commands
  • 6.4.1 Set
  • 6.4.2 Kill
  • 6.4.3 New
  • 6.5 Flow Control Commands
  • 6.5.1 If, ElseIf, and Else
  • 6.5.2 For
  • 6.5.3 While and Do/While
  • 6.6 I/O Commands
  • 6.6.1 Write
  • 6.6.2 Read
  • 6.6.3 Open, Use, and Close
  • 6.7 Other Commands
  • Chapter 7: 
     
  • 7.1 Function Syntax
  • Chapter 8: 
     
  • 8.1 Procedures, Routines, Subroutines, Functions, and Methods: What Are They?
  • 8.1.1 Routines
  • 8.1.2 Subroutines
  • 8.1.3 Functions
  • 8.2 Procedures in Detail
  • 8.2.1 Invoking Procedures
  • 8.2.2 Procedure Syntax
  • 8.2.3 Procedure Variables
  • 8.2.4 Public and Private Procedures
  • 8.2.5 Procedure Parameters
  • 8.2.6 Procedure Code
  • 8.2.7 Indirection and Xecute Commands within Procedures
  • 8.2.8 Error Traps within Procedures
  • 8.3 Legacy User-Defined Code
  • 8.3.1 Subroutines
  • 8.3.2 Functions
  • Chapter 9: 
     
  • 9.1 Defining Macros
  • 9.1.1 Saving Macros
  • 9.2 Referring to Macros in External Files
  • 9.3 Calling Macros
  • 9.4 Using Conditional Macros
  • Chapter 10: 
     
  • 10.1 What Multidimensional Arrays Are
  • 10.1.1 Multidimensional Tree Structures
  • 10.1.2 Sparse Multidimensional Storage
  • 10.1.3 Settings for Multidimensional Arrays
  • 10.2 Manipulating Multidimensional Arrays
  • 10.3 For More Information
  • Chapter 11: 
     
  • 11.1 Basic String Operations and Functions
  • 11.1.1 Advanced Features of $Extract
  • 11.2 Delimited Strings
  • 11.2.1 Advanced $Piece Features
  • 11.3 List-Structure String Operations
  • 11.3.1 Advanced List Features
  • 11.4 Lists Versus $Piece and Strings
  • Chapter 12: 
     
  • 12.1 Issuing Operating System Commands from Caché
  • 12.1.1 Issuing Operating System Commands with %CLI
  • 12.1.2 Issuing Operating System Commands from Caché with $ZF(-1)
  • 12.1.3 Issuing Operating System Commands from Caché with $ZF(-2)
  • 12.2 Calling External Applications with $ZF
  • 12.2.1 Calling External Applications with $ZF on OpenVMS Platforms
  • 12.2.2 Calling External Functions with $ZF on UNIX or Windows Platforms
  • 12.2.3 $ZF Calls Support Byte Arrays
  • 12.3 Building Callout Modules as Dynamic Shared Libraries
  • 12.4 Referencing a User-Defined Callout Module
  • 12.4.1 Statically Linked Callouts
  • 12.4.2 A Single Active DLL: The $ZF(-3) Call Interface
  • 12.4.3 Multiple Simultaneous Dynamic Link Libraries
  • 12.4.4 Referencing a DLL by Externally-Defined Index
  • 12.4.5 DLL Runup and Rundown Functions
  • 12.5 Sample Caché Callout DLL Build Procedures
  • 12.5.1 Windows
  • 12.5.2 Linux
  • 12.5.3 Tru64 UNIX
  • 12.5.4 HP 32-bit
  • 12.5.5 HP 64-bit
  • 12.5.6 PowerPC
  • 12.5.7 OpenVMS
  • 12.6 Reading and Writing to Devices Opened in UNIX
  • 12.6.1 Opening the File Descriptor
  • 12.6.2 Closing the File Descriptor
  • Chapter 13: 
     
  • 13.1 Callin Function Overview
  • 13.1.1 How the Functions Operate
  • 13.2 About ASCII and Unicode Functionality
  • 13.2.1 Data Types
  • 13.3 Other Information and Requirements
  • 13.3.1 ccallin.h Contents
  • 13.3.2 Using Callin Functions in $ZF Routines
  • 13.3.3 Requirements for Callin Programs
  • 13.4 Compiling, Linking, and Running a Callin Program
  • 13.4.1 Files Supplied
  • 13.4.2 Compiling, Linking, and Running on Windows
  • 13.4.3 Compiling, Linking, and Running on UNIX
  • 13.4.4 Compiling, Linking, and Running on OpenVMS
  • 13.4.5 Compiling, Linking, and Running the ccallin.c Sample Program
  • Chapter 14: 
     
  • 14.1 Managing Transactions Within Applications
  • 14.1.1 Transaction Commands
  • 14.1.2 Using the Lock Command in Transactions
  • 14.1.3 Transaction Rollback Within An Application
  • 14.1.4 Examples of Transaction Processing Within Applications
  • 14.2 Automatic Transaction RollBack
  • 14.2.1 Rollback During Caché Startup
  • 14.2.2 Rollback at Halt from Caché
  • 14.2.3 Rollback During RESJOB
  • 14.2.4 Restore Journal Option of JOURNAL Utility
  • 14.3 System-Wide Issues with Transaction Processing
  • 14.3.1 Backups with Transaction Processing
  • 14.3.2 Journaling with Transaction Processing
  • 14.3.3 Globals to Avoid in Transactions
  • 14.3.4 Caché Network Transaction Processing
  • 14.3.5 Asynchronous Error Notifications
  • Chapter 15: 
     
  • 15.1 How Error Processing Works
  • 15.1.1 Internal Error-Trapping Behavior
  • 15.1.2 Current Context Level
  • 15.1.3 $ETRAP Error Handlers
  • 15.1.4 Error Codes
  • 15.2 Handling Errors with $ETRAP
  • 15.2.1 Context-Specific $ETRAP Error Handlers
  • 15.2.2 $ETRAP Flow of Control Options
  • 15.3 Handling Errors with $ZTRAP
  • 15.3.1 Setting Up $ZTRAP
  • 15.3.2 Using $ZTRAP
  • 15.3.3 Unstacking NEW Commands With Error Traps
  • 15.3.4 $ZTRAP Flow of Control Options
  • 15.4 Handling Errors in an Error Handler
  • 15.4.1 Errors in a $ETRAP Error Handler
  • 15.4.2 Errors in a $ZTRAP Error Handler
  • 15.4.3 Error Information in the $ZERROR and $ECODE Special Variables
  • 15.5 Forcing an Error
  • 15.5.1 Setting $ECODE
  • 15.5.2 Creating Application-Specific Errors
  • 15.6 Processing Errors in Programmer Mode
  • 15.6.1 Understanding Error Message Formats
  • 15.6.2 Understanding the Programmer Mode Prompt
  • 15.6.3 Recovering from the Error
  • 15.6.4 <EDITED> Errors
  • Chapter 16: 
     
  • 16.1 Debugging with the Caché Debugger
  • 16.1.1 Entering the Debugger from the Control Panel
  • 16.1.2 Using Breakpoints and Watchpoints
  • 16.1.3 Establishing Breakpoints and Watchpoints
  • 16.1.4 Disabling Breakpoints and Watchpoints
  • 16.1.5 Delaying Execution of Breakpoints and Watchpoints
  • 16.1.6 Deleting Breakpoints and Watchpoints
  • 16.1.7 Single-Step Breakpoint Actions
  • 16.1.8 Tracing Execution
  • 16.1.9 INTERRUPT Keypress and Break
  • 16.1.10 Displaying Information About the Current Debug Environment
  • 16.1.11 Using the Debug Device
  • 16.1.12 Caché Debugger Example
  • 16.1.13 Understanding Caché Debugger Errors
  • 16.2 Debugging With Break
  • 16.2.1 Using Argumentless Break to Suspend Routine Execution
  • 16.2.2 Using Argumentless Break with a Condition
  • 16.2.3 Using Argumented Break to Enable or Disable Interrupts
  • 16.2.4 Using Argumented Break to Suspend Routine Execution
  • 16.2.5 Enabling Single Stepping at the Previous Execution Level
  • 16.2.6 Understanding the Programmer Mode Prompt Information
  • 16.2.7 Resuming Execution after a Break or an Error
  • 16.2.8 The NEW Command in Programmer Mode
  • 16.2.9 The QUIT Command in Programmer Mode
  • 16.2.10 Caché Error Messages
  • 16.3 Using %STACK to Display the Stack
  • 16.3.1 Running %STACK
  • 16.3.2 Displaying the Process Execution Stack
  • 16.3.3 Understanding the Stack Display
  • 16.4 Error Trap Utilities
  • 16.4.1 %ETN Application Error Trap
  • 16.4.2 %ERN Application Error Report
  • Chapter 17: 
     
  • 17.1 CctrlGetDirs
  • 17.1.1 Syntax
  • 17.1.2 Return Value
  • 17.2 CctrlConfigStatus
  • 17.2.1 Syntax
  • 17.2.2 Return Values
  • 17.3 CctrlControl
  • 17.3.1 Syntax
  • 17.3.2 Return Values
  • 17.4 CctrlRun
  • 17.4.1 Syntax
  • 17.4.2 Return Values
  • 17.5 CctrlRunIO
  • 17.5.1 Syntax
  • 17.5.2 Return Values
  • Chapter 18: 
     
  • 18.1 Displaying and Switching Language Mode
  • 18.2 DSM-11 Language Compatibility
  • 18.2.1 Using Routine Interlock Devices
  • 18.2.2 Issuing I/O Commands for Routine Interlock Devices
  • 18.2.3 Working with DSM-11 Mode Routines
  • 18.2.4 Transferring Globals from DSM-11 Systems
  • 18.2.5 I/O Programming in DSM-11 Compatibility Mode
  • 18.2.6 View Command and $View Function
  • 18.2.7 ZAllocate and ZDeallocate
  • 18.2.8 Extended Functions for DSM-11 Mode
  • 18.2.9 Unsupported DSM-11 Functions
  • 18.2.10 Extended Special Variables for DSM-11 Mode
  • 18.2.11 Extended Commands for DSM-11 Compatibility Mode
  • 18.2.12 Error Handling for DSM-11 Compatibility Mode
  • 18.2.13 $TEXT Comment Lines
  • 18.3 DSM Language Compatibility
  • 18.3.1 Porting Routines from DSM to Caché
  • 18.3.2 Programming in DSM Language Mode
  • 18.3.3 Device Control Mnemonic Spaces and Device Control Mnemonics
  • 18.3.4 Other DSM Language Features Implemented in Compatibility Mode
  • 18.3.5 View Command and $View Function
  • 18.3.6 Database Conversion
  • 18.4 DSM-J Language Compatibility
  • 18.5 DTM Language Compatibility
  • 18.5.1 Programming in DTM Compatibility Mode
  • 18.5.2 DTM Compatibility Mode Commands, Functions, and Special Variables
  • 18.5.3 Database Conversion
  • 18.6 MSM Language Compatibility
  • 18.6.1 MSM Compatibility Mode Commands, Functions, and Special Variables
  • 18.6.2 Database Conversion