Using ObjectScript
- Introducing ObjectScript
- Syntax Rules
- Data Types and Values
- Strings
- Numbers
- Objects
- Persistent Multidimensional Arrays (Globals)
- Undefined Values
- Boolean Values
- Dates
- Variables
- Categories of Variables
- Local Variables
- Process-Private Globals
- Globals
- Special Variables
- Variable Typing and Conversion
- #dim (Optional)
- Operators and Expressions
- Introduction to Operators and Expressions
- String-to-Number Conversion
- Arithmetic Operators
- Numeric Relational Operators
- Logical Comparison Operators
- String Concatenate Operator (_)
- String Relational Operators
- Pattern Match Operator (?)
- ObjectScript Pattern Matching
- Specifying How Many Times a Pattern Can Occur
- Specifying Multiple Patterns
- Specifying a Combination Pattern
- Specifying an Indefinite Pattern
- Specifying an Alternating Pattern (Logical OR)
- Using Incomplete Patterns
- Multiple Pattern Interpretations
- Not Match Operator
- Pattern Complexity
- Regular Expressions
- Wildcards and Quantifiers
- Literals and Character Ranges
- Character Type Meta-Characters
- Grouping Construct
- Anchor Meta-Characters
- Logical Operators
- Character Representation Meta-Characters
- Modes
- Comments
- Error Messages
- Indirection Operator (@)
- Introduction to Indirection
- Name Indirection
- Pattern Indirection
- Argument Indirection
- Subscript Indirection
- $TEXT Argument Indirection
- Commands
- Command Keywords
- Command Arguments
- Command Postconditional Expressions
- Multiple Commands on a Line
- Variables
- Error Processing
- Transaction Processing
- Locking and Concurrency Control
- Invoking Code
- Controlling Flow
- Controlling I/O
- Callable User-defined Code Modules
- Procedures, Routines, Subroutines, Functions, and Methods: What Are They?
- Defining Procedures
- Parameter Passing
- Procedure Code
- Indirection, XECUTE Commands, and JOB Commands within Procedures
- Error Traps within Procedures
- Legacy User-Defined Code
- Using Macros
- Creating Custom Macros
- Saving Custom Macros
- Invoking Macros
- Referring to External Macros (Include Files)
- Where to See Expanded Macros
- Embedded SQL
- Multidimensional Arrays
- String Operations
- Basic String Operations and Functions
- Delimited Strings
- List-Structure String Operations
- Lists and Delimited Strings Compared
- Locking and Concurrency Control
- Introduction
- Lock Names
- The Lock Table
- Locks and Arrays
- Using the LOCK Command
- Lock Types
- Escalating Locks
- Locks, Globals, and Namespaces
- Avoiding Deadlock
- Practical Uses for Locks
- Locking and Concurrency in SQL and Persistent Classes
- For Additional Information
- Details of Lock Requests and Deadlocks
- Waiting Lock Requests
- Queuing of Array Node Lock Requests
- ECP Local and Remote Lock Requests
- Avoiding Deadlock
- Managing the Lock Table
- Available Tools for Managing the Lock Table
- Viewing Locks in the Management Portal
- Removing Locks in the Management Portal
- ^LOCKTAB Utility
- Transaction Processing
- Managing Transactions Within Applications
- Automatic Transaction Rollback
- System-Wide Issues with Transaction Processing
- Suspending All Current Transactions
- Working with %Status Values
- Basics of Working with Status Values
- Examples
- Variation (%objlasterror)
- Multiple Errors Reported in a Status Value
- Returning a %Status
- %SYSTEM.Error
- For More Information
- Using TRY-CATCH
- Introduction
- Using THROW with TRY-CATCH
- Using $$$ThrowOnError and $$$ThrowStatus Macros
- Using the %Exception.SystemException and %Exception.AbstractException Classes
- Other Considerations with TRY-CATCH
- Error Logging
- Logging Application Errors
- Using Management Portal to View Application Error Logs
- Using ^%ERN to View Application Error Logs
- Command-line Routine Debugging
- Secure Debug Shell
- Debugging with the ObjectScript Debugger
- Debugging With BREAK
- Using %STACK to Display the Stack
- Other Debugging Tools
- (Legacy) Using ^%ETN for Error Logging
- (Legacy) Traditional Error Processing