3.5 dbx90 Expressions

3.5.1 Scalar expressions

Scalar expressions in dbx90 are composed of literal constants, scalar variable references including array elements, intrinsic operations and parentheses.

Literal constants can be of any intrinsic type, e.g.

INTEGER 42
REAL 1.2
1.3e2
COMPLEX (5.2,6.3)
CHARACTER "string"
LOGICAL .TRUE.
.T.

Subscript expressions must be scalar and of type INTEGER.

All intrinsic operations are supported except for exponentiation and concatenation, that is:

+, -, *, /, ==, /=, <, <=, >, >=, .AND., .OR., .NOT., .EQV., .NEQV., .EQ., .NE., .LT., .LE., .GT., .GE.

(Operator names are not case-sensitive).

Note: array operations and operations involving variables of complex, character or derived type are not supported.

3.5.2 Array sections

Assignment, printing and displaying of array sections follows the Fortran syntax, e.g.
   ARRAY(:)
   ARRAY(1:5)
   ARRAY(1:10:2)

If the stride is supplied it must be a positive scalar expression – negative strides are not supported. All subscript expressions must be scalar – vector subscripts are not supported.

3.5.3 Derived type component specification

Individual components of a derived type scalar or array may be printed using normal Fortran syntax.

For example,

     print var%a
will print the “a” component of derived type “var”.

Components of all data types are supported.

Components which are of derived type will be displayed recursively until either:

  1. there are no further nested derived types, or
  2. a derived type array component is reached.

Array components of intrinsic data types will be truncated to ‘<array>’, and derived type array components will be truncated to ‘<derived type array>’.

Allocatable components of derived types are supported.

Derived type assignment is not supported; however, scalar non-derived-type components may be assigned values.