BASICHELP.HLB  —  Release Notes
    VSI BASIC for OpenVMS I64 Systems is a native compiler that runs
    on and generates code to run on OpenVMS I64 systems. Version
    V1.8-004 is a port of the Alpha BASIC compiler to the Itanium
    architecture.

1  –  General Notes

    o  Throughout these notes, the term VSI BASIC or the name BASIC
       used alone, applies to VSI BASIC for OpenVMS I64 Systems, HP
       BASIC for OpenVMS Alpha Systems, and HP BASIC for OpenVMS VAX
       Systems. The following terms refer to information that applies
       specifically to the corresponding product.

          I64 BASIC  -  VSI BASIC for OpenVMS I64 Systems
          Alpha BASIC  -  HP BASIC for OpenVMS Alpha Systems
          VAX BASIC  -  HP BASIC for OpenVMS VAX Systems

    o  I64 BASIC V1.8-004 minimally requires OpenVMS I64 Version
       8.4-1H1 to run.

    o  The default data type for I64 BASIC is IEEE S_floating point
       whereas for Alpha BASIC and VAX BASIC the default is VAX F_
       floating point. To continue use of the VAX floating point data
       types you must use the /REAL_SIZE={SINGLE | DOUBLE | GFLOAT}
       qualifier, or the OPTION SIZE=REAL {SINGLE | DOUBLE | GFLOAT}
       statement.

       Since the VAX floating point data types are not available
       in the Itanium hardware, they are supported by converting
       the values to an appropriate IEEE data type, performing
       the calculation, and then converting the values back to VAX
       floating point data type. This process can cause rounding
       errors and the results to differ slightly from those obtained
       using VAX floating point directly.

       Note that constants in programs are represented in the
       default floating point data type unless explicitly specified
       otherwise, and they may be subject to conversion to IEEE data
       types.

       See the white paper, "OpenVMS floating-point arithmetic on the
       Intel[R] Itanium[R] architecture" at
       http://www.hp.com/products1/evolution/alpha_retaintrust/download/i64-floating-pt-wp.pdf
       for more information.

    o  By default, programs are compiled at optimization level 4
       (/OPT=LEVEL=4), the highest level of optimization. If you
       encounter problems with the generated code, try compiling the
       program with a lower level of optimization. This may correct
       the problem. Please report any problems to HP, even if the
       program works correctly at a lower optimization level.

2  –  Feature enhancements

    Some minor feature enhancements have been made for version 1.8-
    004. These include:

    o  Routine parameters that are passed by reference whose address
       is not aligned no longer generate alignment faults.

    o  Various diagnostic messages have been improved.

3  –  Problems fixed

    A number of problems have been fixed in I64 BASIC V1.8-004. The
    known problems that have been fixed include:

    o  A dump was getting generated when the program was trying to
       perform copy in an optimized mode. This issue has been fixed.

    o  Extremely long command lines no longer cause a compiler
       internal error.

    o  The display of S-Float constants in listing files no longer
       causes an error.

4  –  Known problems and Restrictions

4.1  –  General Problems

 The following are known general problems with I64 BASIC V1.8-004.

    o  Floating point numbers displayed in E-format may differ.

       In some cases floating point numbers displayed in E-format may
       contain an additional zero in the exponent field. For example,
       6.0E+002 instead of 6.0E+02

    o  Floating point exceptions not accurately reported.

       In some cases a floating point exception may not be accurately
       reported. For example: a divide-by-zero exception may be
       reported as an invalid-number.

    o  Inability to open UNDEFINED type file for output.

       It is currently not possible to open a file of type UNDEFINED
       for output.

       Workaround: Create an empty file with the desired attributes
       by some other means, for example with a program in a different
       language or with the DCL command CREATE/FDL. Then in BASIC
       open the file for input with the APPEND attribute. The
       following code fragment illustrates the technique.

       %INCLUDE "$FDLDEF" %FROM %LIBRARY "SYS$LIBRARY:BASIC$STARLET"

       EXTERNAL INTEGER FUNCTION FDL$CREATE

       MAP (outbuff) STRING myrec = 512

       DECLARE INTEGER i, fdlstat
       DECLARE STRING resultname

       fdlstat = FDL$CREATE ("RECORD; FORMAT UNDEFINED;",                    &
                             "myfilename", ".DAT", resultname,,              &
                             FDL$M_FDL_STRING +                              &
                             FDL$M_DEFAULT_STRING +                          &
                             FDL$M_FULL_OUTPUT)

       OPEN resultname FOR INPUT AS FILE #3, ORGANIZATION UNDEFINED,         &
                                             ACCESS APPEND,                  &
                                             MAP outbuff,                    &
                                             RECORDTYPE ANY

       myrec = ...

       PUT #3

    o  DET incorrect with default XFLOAT type.

       When the default floating point type is set to XFLOAT, the
       result of the determinant statement (DET) is incorrect.

       Workaround: Use explicitly declared variables of XFLOAT type,
       and avoid using XFLOAT type as the default floating point type
       when the DET statement is used.

    o  The most-negative integer constants cannot be represented.

       The compiler incorrectly gives an integer overflow message
       when the most negative integer constants:

               BYTE -128%
               WORD -32768%
               LONG -2147483648%

       are used.

       Workaround: Use the appropriate expression:.

               BYTE -127% - 1%
               WORD -32767% - 1%
               LONG -2147483647% - 1%

    o  Passed by value quadword arguments in STARLET are not yet
       supported.

       Since routines that declare pass by value quadword parameters
       are not yet supported by BASIC, declarations of routines that
       do this are not included in BASIC$STARLET.TLB.

       Workaround: Use of the these routines should be avoided until
       full support of 64-bit quantities is provided.

    o  The CMA facility found in BASIC$STARLET.TLB is incompatible
       with BASIC.

       BASIC is not currently thread safe and will not work with the
       CMA$DEF module in BASIC$STARLET.TLB. Compiling it with BASIC
       results in a number of Record type undefined errors.

       Workaround: BASIC does not support the CMA facility and
       compiling the CMA$DEF module should be avoided.

4.2  –  Debugger problems

    With this release of the compiler, debugging support for I64
    BASIC programs is not complete. The "OpenVMS I64 V8.4-1H1 Release
    Notes" document contains general release notes on the debugger.
    This section describes additional problems and workarounds
    specific to I64 BASIC programs.

    o  Examining a symbol declared with the DIMENSION keyword
       sometimes causes a debugger access violation.

       Workaround: Type SHOW SYMBOL/ADDRESS then examine the memory
       location directly.

    o  Examining a field in a record sometimes fails with the error:

           %DEBUG-W-NOFIELD, 'xxx' is not a field in this record

       Workaround: Examine the entire record.

    o  In some cases the Debugger can not determine the end of user
       code. In these cases, the following message may be produced if
       you STEP at the last line of user application code:

           DBG> Step
           %DEBUG-W-SCRNOSRCLIN, no source line for address xxxxxxxx for display in SRC

       You can ignore this message.

    o  Examining some types of variables is not possible, including:
       A RECORD variable, or an array of RECORDs which is declared
       in a MAP DYNAMIC and also passed as a parameter to another
       routine.

    o  Examining EXTERNAL constants with a plain EVALUATE command
       results in a warning message. Instead the EVALUATE/ADDRESS
       command should be used. Note that it is not possible to
       display EXTERNAL constants in floating point format.

    o  Problems with examining dynamic objects in the debugger.

       Certain types of dynamic objects referenced by descriptors
       cannot be displayed in the OpenVMS debugger.

       Workaround: The inability to display these kinds of objects is
       a restriction.

5  –  Documentation

5.1  –  Release notes

    I64 BASIC provides the following online information, which is
    copied to the user's system during installation:

    o  The VSI BASIC for OpenVMS I64 Systems online Release Notes

    o  I64 BASIC DCL Help

    o  I64 BASIC Language Topics Help

5.1.1  –  I64 BASIC Language Topics Help

 HELP on BASIC language topics, available from the VAX BASIC
 environment is accessible from DCL in I64 BASIC. For help on
 language features, type the following command at the DCL prompt:

    $ HELP/LIBRARY=BASICHELP

    Alternately, a symbol can be defined to access help on BASIC
    language features directly. For example, the DCL command:

    $ BASHELP == "HELP /LIBR=BASICHELP"

    will allow you to type:

    $ BASHELP BASIC-topic

5.2  –  Documentation corrections

    The following corrections should be made to the Alpha BASIC
    manuals.

5.2.1  –  Reference Manual

    Corrections to the online HTML documentation HP BASIC for OpenVMS
    Systems Reference Manual.

    o  The Table of Result Data Types in Alpha BASIC Expressions in
       Section 1.6.1.2 has two incorrect entries in the online HTML
       documentation. The table in the paper and PDF documentation
       however is correct. The entries for GFLOAT/SFLOAT and
       SFLOAT/GFLOAT should be GFLOAT.

5.2.2  –  User Guide

    Corrections to the HP BASIC for OpenVMS Systems User Manual.

    o  The conditional at the end of Example 13-1, in the "File
       Input and Output" chapter should have an equal sign instead
       of "AND". It should read as Rms_status = Rms$_normal instead
       of Rms_status AND Rms$_normal.

6  –  Feedback

 If you experence a problem, please file a PTR problem report,
 including enough information to reproduce the problem.

    Thank you for your continued support of VSI BASIC for OpenVMS I64
    Systems.
Close Help