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.
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.