Implementation Details

Numeric Types. See .

XGC Coral supports 16[1], 32 and 64 bit integer types, 16, 32 and 64 bit fixed point types, and 32 and 64 bit floating point types. The implementation defined keyword LONG is used to form LONG INTEGER, LONG FIXED and LONG FLOATING.

Meaning of Word-position. See .

XGC Coral allows table elements to extend over more than one word. Word-position always refers to the word in which the least significant bit is located.

Format of Code Statements. See .

In XGC Coral 66, a code statement follows the practice established for other programming languages. Each line of the code statement is an assembly language instruction, where the operands are references to Coral source objects. A full description will be found in .

Support for the COMMON Communicator. See .

COMMON Communicators are implemented as recommended. They are the primary means by which program segments communicate. Where the source text for a program is located across many files, it is usual for the COMMON Communicators to have their own files, which are then compiled along with the program segments by giving the file name on the compiler command line. Note: there is no include feature in Coral 66.

Support for the LIBRARY Communicator. See .

In XGC Coral, the library communicator is used to include a Coral source file that contains an external communicator that defines the data and procedures in a program library. It is typically used with standard libraries (an I-O library for example), but may be used with user-defined libraries too. The communicator is written LIBRARY ("filename"). The convention is for files used in this way to have the suffix ".h66" to indicate that they are Coral 66 files. For example, the file for the math library is called "math.h66", and is included by the statement LIBRARY ("math.h66").

Support for the EXTERNAL Communicator. See .

The EXTERNAL Communicator is supported as recommended. The form is similar to that of the COMMON communicator, but using the keyword EXTERNAL rather than COMMON. As an implementation-defined extension, the syntactic form Id / String is permitted so that linkage may be made to external symbols that are not acceptable as Coral identifiers.

Support for the ABSOLUTE Communicator. See .

ABSOLUTE Communicators are implemented as recommended. The syntactic form Id / Integer gives the address of the object identified by Id. On a byte-addressed computer, this is a byte address.

Length of identifiers. See .

XGC Coral permits identifiers of any length up to the length of a line. A compile-time option is provided to specify whether just the first twelve or all the characters are significant.

Binary Numbers. See .

Integers and floating point numbers may also be given in binary notation. The implementation defined keyword BINARY is used as a prefix, as in the following example: BINARY (1.0001). Note: binary floating point numbers cannot have an exponent.

Hexadecimal Numbers. See .

Integers and floating point numbers may also be given in hexadecimal notation. The additional digits that represent values 10 to 15 are represented using the letters 'a' to 'f', in lower case or in upper case. The implementation defined keyword HEX is used as a prefix, as in the following example: HEX (fff.8). Note: neither the octal nor hexadecimal number formats permit an exponent.

Literal Constants. See .

The numeric representation of characters in the LITERAL form, is determined by the host computer, and is assumed to be 7-bit ASCII. Non-printing characters, with the exception of the space character, are not accepted as literals. Note also the only one character is permitted between the parentheses.

The layout of strings. See .

The first character of each string contains the length of the string. The maximum length of a string is 255 characters.

The Macro Facility. See .

Macros are supported as described in . The macro body may be written over as many lines as necessary, and there is no limit on its size.

Support for formal pairs. See .

Formal pairs are supported as suggested in the Official Definition with the address of the actual parameter passed as the first of the pair, and the encoded type of the parameter passed as the second. The encoded type is represented as follows:

Table D-1. Encoded Type in a Formal Pair

Constant Declarations. This is an XGC extension.

The keyword CONSTANT may be used to define a compile-time value that may be later used where a constant value is required. The value may be the result of an expression that includes literal numbers and references to other constants. For example:


                CONSTANT Pi := 3.14159263589793;
CONSTANT Pi over 2 := Pi / 2;

              

Notes

[1]

16-bit types are only supported on 16-bit computers