VMS Help  —  RDML72  Preprocessor  /PASCAL
    Specifies that the input file is a DEC Pascal or VAX Pascal
    source file. If the /PASCAL qualifier is used on the command
    line, the RDML preprocessor will assume a file extension of
    ".RPA" unless you specify otherwise in the file specification.

    Format:

          /PASCAL

    Example:

          $ RDML/PASCAL SALARY_PLAN

    On Oracle Rdb for OpenVMS Alpha, Pascal users will need to compile
    /ALIGN=VAX because RDML/PASCAL generates code that is byte aligned.
    This is a permanent restriction.

1  –  More

    o  RDML/Pascal does not generate the correct length for a character
       string value expression in the form:

       FOR E IN EMPLOYEES WITH E.LAST_NAME = ('T' | host_variable)
            ... some statements ...
       END_FOR;

       This statement generates an error from VAX Pascal, such as:

       00470      0  0     RDB$PORT_FIELD_0 :      VARYING[0] OF CHAR;
                                                           1
       %PASCAL-E-MAXLENRNG, (1) Max-length must be in range 1..65535
       %PASCAL-E-ENDDIAGS, Pascal completed with 1 diagnostic

       To avoid this problem, construct the value needed before issuing the
       query, using a method such as the following:

       host_variable1 := 'T' + host_variable2;
       FOR E IN EMPLOYEES WITH E.LAST_NAME = host_variable1
             ... some statements ...
       END_FOR;

       This method is recommended for all RDML statements when possible
       because it generally improves the performance of the query.

    o  RDML/Pascal does not accept all possible valid Pascal host
       language variables, and it issues the following error if one it
       does not accept is encountered:

       %RDML-W-HOST_VARIABLE, error detected in host variable syntax

       The set of possible values is limited to the syntax described in the
       RDML Reference Manual, with the restriction that the expression
       allowed in an array index must be a simple name or expression.
       The following illustrates an unacceptable statement:

       FOR E IN EMPLOYEES WITH E.EMPLOYEE_ID = emparray[empstruct.index]
            ... some statements...
       END_FOR;

       In the preceding example, empstruct.index is a reference to a
       structure member.  To avoid this problem, you would  assign
       empstruct.index to an intermediate variable and use that variable
       in the FOR statement WITH clause.
Close Help