This document, the VAX Pascal Reference Manual (Order Number: AA-L369D-TE, December 1989, Version 4.0), serves as a comprehensive description of the VAX Pascal programming language. It details the language's syntax and semantics, its adherence to various Pascal standards, and its extensions to those standards.
Intended Audience: The manual is designed for experienced applications programmers who already possess a basic understanding of the Pascal language; it is not a tutorial.
Key Contents:
- Language Fundamentals: Covers lexical elements, Pascal language standards (Unextended and Extended Pascal), and comments.
- Data Types and Values: Describes ordinal, real, pointer, structured (arrays, records, sets, files), schema, and string types, along with rules for type compatibility.
- Declaration Sections: Explains the CONST, LABEL, TO BEGIN DO, TO END DO, TYPE, VALUE, and VAR sections for defining constants, labels, user-defined types, and variables.
- Expressions and Operators: Details how to form expressions using arithmetic, relational, logical, string, and set operators, as well as type conversions and operator precedence.
- Statements: Explains various executable statements including assignment, CASE, compound, empty, FOR, GOTO, IF, procedure call, REPEAT, WHILE, and WITH statements.
- Procedures and Functions: Covers routine declarations, calls, and the different types of parameters (value, variable, routine, foreign, schema, conformant) and their passing mechanisms.
- Program Structure and Scope: Discusses blocks, identifier scope, modules, programs, compilation units, and data sharing (including environment files).
- Predeclared Routines: Provides an alphabetical reference for numerous built-in functions and procedures for tasks like mathematical computations, character-string manipulation, dynamic allocation, time/date operations, and low-level system interactions.
- Input and Output Processing: Explains file organizations (sequential, relative, indexed), component formats, access modes, file locking, TEXT files, and a wide array of I/O routines.
- Attributes: Describes how attributes can be applied to program elements to modify compiler behavior regarding alignment, allocation, error checking, data representation, visibility, and parameter passing.
- Directives: Outlines compiler directives such as %INCLUDE, %DICTIONARY, %TITLE, and %SUBTITLE.
Appendices provide supplementary information, including the ASCII character set, a language syntax summary, compatibility details between VAX Pascal versions, a summary of VAX Pascal extensions, implementation-defined features, and error detection information.
New and Changed Features in Version 4.0 (since Version 3.5) highlighted in this manual include:
- Schema Types: User-defined templates for families of distinct data types.
- Structured Constructors & Access to Structured Function-Return Values: Enhanced capabilities for specifying structured type values and directly indexing/selecting fields from function results.
- New Logical Operators:
AND_THEN and OR_ELSE for controlled evaluation order and short-circuiting.
- Standard Date/Time Routines:
DATE, TIME, and GETTIMESTAMP.
- Enhanced String Comparison Functions:
EQ, GE, GT, LE, LT, NE for comparisons without blank padding.
FOR-IN Statement: For iterating through set elements.
- Extended-Digit Integer Notation: For specifying integer constants with various bases.
- VAX Internal Register Manipulation:
MFPR and MTPR routines.
- Module Initialization/Finalization:
TO BEGIN DO and TO END DO sections.
STRING Predefined Schema: For variable-length character strings.
WITH Statement Enhancement: Extended scope for schema discriminants and record fields.
- New Compiler Qualifiers and
CHECK Attribute: /DESIGN, /STANDARD (with EXTENDED option), /NOOPTIMIZE qualifiers, and CHECK attribute for run-time validation.
The manual also notes that much of the system-specific and tutorial information has been relocated to the VAX Pascal Reference Supplement for VMS Systems and the VAX Pascal User Manual.