Introduction to Regina
Purpose of this document
Implementation
Ports of Regina
Executing Rexx programs with Regina
Switches
External Rexx programs
Rexx Language Constructs
Definitions
Null clauses
Commands
Assignments
Instructions
The ADDRESS Instruction
The ARG Instruction
The CALL Instruction
The DO/END Instruction
The DROP Instruction
The EXIT Instruction
The IF/THEN/ELSE Instruction
The INTERPRET Instruction
The ITERATE Instruction
The LEAVE Instruction
The NOP Instruction
The NUMERIC Instruction
The OPTIONS Instruction
The PARSE Instruction
The PROCEDURE Instruction
The PULL Instruction
The PUSH Instruction
The QUEUE Instruction
The RETURN Instruction
The SELECT/WHEN/OTHERWISE Instruction
The SIGNAL Instruction
The TRACE Instruction
The UPPER Instruction
Operators
Arithmetic Operators
Assignment Operators
Comparative Operators
Concatenation Operators
Logical Operators
Implementation-Specific Information
Miscellaneous
Implementation of the ADDRESS environment
SYSTEM aka ENVIRONMENT aka OS2ENVIRONMENT
PATH
CMD aka COMMAND
REXX or REGINA
ADRRESS WITH on Windows
Regina Restricted Mode
Native Language Support
Error Messages
Implementation
Rexx Built-in Functions
General Information
The Syntax Format
Precision and Normalization
Standard Parameter Names
Error Messages
Possible System Dependencies
Blanks vs. Spaces
Regina Built-in Functions
Implementation specific documentation for Regina
Deviations from the Standard
Interpreter Internal Debugging Functions
REXX VMS Interface Functions
Conditions
What are Conditions
What Do We Need Conditions for?
Terminology
The Mythical Standard Condition
Information Regarding Conditions (data structures)
How to Set up a Condition Trap
How to Raise a Condition
How to Trigger a Condition Trap
Trapping by Method SIGNAL
Trapping by Method CALL
The Current Trapped Condition
The Real Conditions
The SYNTAX
The HALT condition
The ERROR
The FAILURE
The NOVALUE
The NOTREADY
The LOSTDIGITS condition
Further Notes on Conditions
Conditions under Language Level
Pitfalls when Using Condition Traps
The Correctness of this Description
Conditions in Regina
How to Raise the HALT
Possible Future extensions
Stream Input and Output
Background and Historical Remarks
REXX's Notion of a Stream
Short Crash-Course
Naming Streams
Persistent and Transient Streams
Opening a Stream
Closing a Stream
Character-wise and Line-wise I/O
Reading and Writing
Determining the Current Position
Positioning Within a File
Errors: Discovery, Handling, and Recovery
Common Differences and Problems with Stream I/O
Where Implementations are Allowed to Differ
Where Implementations might Differ anyway
LINES() and CHARS()
The Last Line of a Stream
Other Parts of the I/O System
Implementation-Specific Information
Stream I/O in Regina 0.07a
Functionality to be Implemented Later
Stream I/O in ARexx 1.15
Main Differences from Standard REXX
Stream I/O in BRexx 1.0b
Problems with Binary and Text Modes
Extensions
Why Have Extensions
Extensions and Standard REXX
Specifying Extensions in Regina
The Trouble Begins
The Format of the OPTIONS
The Fundamental Extensions
Meta-extensions
Semi-standards
Standards
The Stack
Background and history
General functionality of the stack
Basic functionality
LIFO and FIFO stack operations
Using multiple buffers in the stack
The zeroth buffer
Creating new stacks
The interface between REXX and the stack
Strategies for implementing stacks
Implementations of the stack in Regina
Implementation of the internal stack in Regina 2.2
Implementation of the external stack in Regina 2.2
rxstack
rxqueue
rxqueue Built-in Function
Queue Names
Security of External Queues
Environment Variables
Interfacing Rexx to other programs
Overview of functions in SAA
Include Files and Libraries
Preprocessor Symbols
Data structures and data types
The RXSTRING structure
The RXSYSEXIT structure
The Subcommand Handler Interface
What is a Subcommand Handler
The RexxRegisterSubcomExe() function
The RexxRegisterSubcomDll() function
The RexxDeregisterSubcom() function
The RexxQuerySubcom() function
The External Function Handler Interface
What is an External Function Handler
The RexxRegisterFunctionExe() function
The RexxRegisterFunctionDll() function
The RexxDeregisterFunction() function
The RexxQueryFunction() function
Executing REXX Code
The RexxStart() function
Variable Pool Interface
Symbolic or Direct
The SHVBLOCK structure
Regina Notes for the Variable Pool
The RexxVariablePool() function
The System Exit Handler Interface
The System Exit Handler
List of System Exit Handlers
RXFNC - The External Function Exit Handler
RXCMD - The Subcommand Exit Handler
RXMSQ - The External Data Queue Exit Handler
RXSIO - The Standard I/O Exit Handler
RXHLT - The Halt Condition Exit Handler
RXTRC - The Trace Status Exit Handler
RXINI - The Initialization Exit Handler
RXTER - The Termination Exit Handler
RXENV - The External Environment Exit Handler
The External Queue Interface
The RexxCreateQueue() function
The RexxDeleteQueue() function
The RexxQueryQueue() function
The RexxAddQueue() function
The RexxPullQueue() function
The Macro Space Interface
The RexxAddMacro() function
The RexxDropMacro() function
The RexxSaveMacroSpace() function
The RexxLoadMacroSpace() function
The RexxQueryMacro() function
The RexxReorderMacro() function
The RexxClearMacroSpace() function
Allocating and De-allocating Space
The RexxAllocateMemory() function
The RexxFreeMemory() function
Calling back into running REXX Code
The RexxCallBack() function
Implementation Limits
Why Use Limits?
What Limits to Choose?
Required Limits
Older (Obsolete) Limits
What the Standard does not Say
What an Implementation is Allowed to "Ignore"
Limits in Regina
Appendixes
Definitions
Bibliography
GNU Free Documentation License