# Compaq BASIC for OpenVMS
Alpha and VAX Systems
User Manual

Previous | Contents | Index

# Chapter 23
Using DECwindows Motif Bindings with BASIC

This chapter explains the BASIC language exceptions for using standard DECwindows Motif Bindings. For more detailed information about programming DECwindows Motif, see the DECwindows Motif Guide to Application Programming.

# 23.1 Overview of DECwindows Motif Concepts

This section introduces DECwindows Motif concepts. DECwindows Motif is an X Window System type of operating environment. DECwindows Motif is used on a workstation, where several windows can be displayed with different applications on each window.

To program in the DECwindows Motif environment, DECwindows Motif bindings are used to help write programs that create and manage the different resources needed to control the windowing environment.

# 23.2 Using DECwindows Motif Bindings with BASIC

The DECwindows Motif bindings consist of constant definitions, global variable declarations, record structures, and function prototypes. The bindings include everything that is needed to do windows programming using the DECwindows Motif Application Programming Interface (API).

The BASIC implementation of the DECwindows Motif bindings allow you to write to either the C version or the non-C version of the bindings. In either case, you will want to refer to the DECwindows Motif OpenVMS User Interface before you start programming. For more detailed information about using Non-C Bindings, see DECwindows Motif for OpenVMS, Guide to Non-C Bindings.

BASIC$HELLOMOTIF.BAS, and BASIC$HELLOBURGER.BAS supplied on the kit as examples of using the BASIC language for windows programming.

A BASIC user may code to the standard C DECwindows Motif bindings with the following exceptions:

- Any identifiers longer than 31 characters must be truncated to 31 characters. Known instances include:

  > S__XmTraverseObscuredCallbackStru (33)
  > S_XmOperationChangedCallbackStruc (33)
  > S_XmDragDropFinishCallbackStruct (32)

- Any identifiers beginning with an underscore must have the underscore dropped. Known instances include:

  > _DXmPrintFormatStruct
  > _DXmPrintOptionMenuStruct
  > _XA_MOTIF_BINDINGS
  > _XA_MOTIF_WM_FRAME
  > _XA_MOTIF_WM_HINTS
  > _XA_MOTIF_WM_INFO
  > _XA_MOTIF_WM_MENU
  > _XA_MOTIF_WM_MESSAGES
  > _XA_MOTIF_WM_OFFSET
  > _XA_MWM_HINTS
  > _XA_MWM_INFO
  > _XA_MWM_MESSAGES
  > _XmSDEFAULT_BACKGROUND
  > _XmSDEFAULT_FONT
  > _XmSecondaryResuourceDataRec
  > _XmTraverseObscuredCallbackStru
  > _XtCheckSubclassFlag
  > _XtIsSubclassOf

- The following list of identifiers are used either as both a data type and a field name or as a BASIC keyword. They cannot be used as is, but must have the suffix "_D" appended when used as a data type and the suffix "_F" appended when used as a field name.

  > dimension
  > display
  > font
  > name
  > pixel
  > screen
  > size
  > status
  > substitution
  > time
  > value
  > window

The DECW$MOTIF.BAS Motif bindings file includes the file DECW$MOTIF_DEFS.BAS, which contains data type aliases. This makes separate compilation of Motif application subroutines simpler. To separately compile a Motif application routine, add both of the following:

- %INCLUDE DECW$MOTIF_DEFS.BAS before the subroutine statement
- %INCLUDE DECW$MOTIF.BAS after it

# 23.3 DECwindows Motif Programming Examples Using BASIC

DECW$EXAMPLES contains two examples of DECwindows Motif applications in BASIC: BASIC$HELLOMOTIF.BAS and BASIC$MOTIFBURGER.BAS. SYS$LIBRARY:DECW$MOTIF.BAS, which contains the DECwindows Motif declarations, is required to build the programs. The steps to build and run the HELLOMOTIF example are:

1. Copy the needed files into your current directory:

       $ COPY DECW$EXAMPLES:BASIC$HELLOMOTIF.* *.*

2. Build the Resource (UID) file:

       $ UIL/MOTIF BASIC$HELLOMOTIF.UIL

3. Compile and link the BASIC program:
   - Use the following example for DECWindows Motif V1.1:

         $ BASIC BASIC$HELLOMOTIF
         $ LINK BASIC$HELLOMOTIF,SYS$INPUT/OPTIONS
         SYS$LIBRARY:DECW$DXMLIBSHR.EXE/SHARE
         SYS$LIBRARY:DECW$XMLIBSHR.EXE/SHARE
         SYS$LIBRARY:DECW$XTSHR.EXE/SHARE
         ^Z
         $

   - Use the following example for DECWindows Motif V1.2:

         $ BASIC BASIC$HELLOMOTIF
         $ LINK BASIC$HELLOMOTIF,SYS$INPUT/OPTIONS
         SYS$LIBRARY:DECW$DXMLIBSHR12.EXE/SHARE
         SYS$LIBRARY:DECW$MRMLIBSHR12.EXE/SHARE
         SYS$LIBRARY:DECW$XMLIBSHR12.EXE/SHARE
         SYS$LIBRARY:DECW$XTLIBSHRR5.EXE/SHARE
         ^Z
         $

   You may want to create an options file with the previously mentioned shareable libraries in it.
4. If you are not running on a workstation, make sure that your display is set correctly, for example:

       $ SET DISPLAY/CREATE/NODE=xxxx

   xxxx is the node name of a workstation with appropriate graphic capability.
5. Run the application:

       $ RUN BASIC$HELLOMOTIF

   Note The .UID file must be kept in the same directory as the .EXE file when run. This program looks in the current directory for the UID file.

6. Then follow the instructions in the dialog box.

# 23.4 Special Considerations for Handling Strings with DECwindows Motif

All strings passed between DECwindows Motif and your program must be null terminated. For example:

    "A string" + "0"C

When passing a string argument to a DECwindows Motif routine, the address of the string is required. For static strings, the address of the string can easily be obtained with the LOC function. For example:

    COMMON (c1) STRING hierarchy_file_name = 21
    hierarchy_file_name = "BASIC$HELLOMOTIF.UID" + "0"C

    DECLARE LONG hierarchy_file_name_array(1)
    hierarchy_file_name_array(0) = LOC (hierarchy_file_name)

Because dynamic strings are described by a descriptor, a different means is needed to get the address of the string text. The following helper function will get the address of dynamic strings as well as static strings:

    FUNCTION LONG ADDRESS_OF_STRING (STRING str_arg BY REF)
       OPTION TYPE=EXPLICIT, INACTIVE=SETUP
    END FUNCTION (LOC (str_arg))

Example of passing a dynamic string to a DECwindows Motif routine:

    DECLARE STRING temp_string
    temp_string = "A string value" + "0"C
    list_test = DXmCvtFCtoCS (ADDRESS_OF_STRING (temp_string),  &
         byte_count, istatus)

# Appendix A
Compile-Time Error Messages

This appendix describes compile-time and compiler command errors, their causes, and the user action required to correct them.

# A.1 Compile-Time Errors

BASIC diagnoses compile-time errors and does the following:

- Indicates the program line that generated the error or errors.
- Displays this program line.
- Shows you the location of the error or errors and assigns a number to each location for future reference.
- Displays the mnemonic, statement number within the line, the location number as previously displayed, and the message text. This is repeated for each error in the line.

BASIC repeats this procedure for each error diagnosed during compilation. The error message format for compile-time errors is as follows:

`%BASIC--<l>--<mnemonic>, <n>: <message>`

> ### <l>

> Is a letter indicating the severity of the error. The severity indicator can be one of the following:
> - I ---- indicating information
> - W ---- indicating a warning
> - E ---- indicating an error
> - F ---- indicating a severe error

> ### <mnemonic>

> Is a 3- to 9-character string that identifies the error. Error messages in this appendix are alphabetized by this mnemonic.

> ### <n>:

> Is the nth error within the line's picture.

> ### <message>

> Is the text of the error message.

For example:

    Diagnostic on source line 1, listing line 1, BASIC line 10

            10 DECLARE REAL BYTE A, A
    ........................1.......2

    %BASIC--E--CONDATSPC, 1:   conflicting data type specifications
    %BASIC--E--ILLMULDEF, 2:   illegal multiple definition of name A

This display tells you that two errors were detected on line 10; BASIC displays the line containing the error, then prints a picture showing you where the errors were detected. In the example, the picture shows a 1 under the keyword BYTE and a 2 under the second occurrence of variable A. The following line shows you:

- The error mnemonic CONDATSPC
- Which error in the line's picture is referred to by the mnemonic
- The message associated with that error

In this case, the error message tells you that there are two contradictory data-type keywords in the statement. The next line shows you the same type of information for the second error; in this case, the compiler detected multiple declarations of variable A.

If a compilation causes an error of severity I or W, the compilation continues and produces an object module. If a compilation causes an error of severity E, the compilation continues but produces no object module. If a compilation causes an error of severity F, the compilation aborts immediately.

The following is an alphabetized list of compilation error messages:

ACTARGMUS, actual argument must be specified
Explanation: ERROR ---- A DEF function reference contains a null argument, for example, FNA(1,,2).
User Action: Specify all arguments when referencing a DEF function.

ALLOCSML, allocated area may be too small for section
Explanation: WARNING---A MAP or COMMON with the same name exists in more than one program module, and the first one encountered by the compiler is smaller than the subsequent ones.
User Action: BASIC first allocates MAP and COMMON areas in the main program, then MAP and COMMON areas in subprograms, in the order in which they were loaded. Thus, you can avoid this error by loading modules with the largest MAP or COMMON first. However, it is better practice to make MAP and COMMON areas equal in size.

AMBRECCOM, ambiguous RECORD component
Explanation: ERROR---The program contains an ambiguous RECORD component reference, for example, A::D when both A::B::D and A::C::D exist.
User Action: Remove the ambiguity by fully specifying the record component.

AMPCONILL, & continuation is illegal after %INCLUDE directive
Explanation: ERROR---A program contains a %INCLUDE directive followed by an ampersand continuation to another statement. For example, the following is illegal:

    2300  %INCLUDE %FROM %CDD "CDD$TOP.PERSONNEL.EMPLOYEE"  &
          GOTO 3000

Ampersand continuation of the %INCLUDE directive is legal, however.
User Action: Recode to eliminate the line continuation or use backslash continuation.

AMPCONREP, & continuation is illegal after %REPORT directive
Explanation: ERROR---A program contains a %REPORT directive followed by an ampersand continuation to another statement. For example, the following is illegal:

    2300  %REPORT %DEPENDENCY "CDD$TOP.PERSONNEL.EMPLOYEE.COURSE_FORM"  &
          GOTO 3000

Ampersand continuation of the %REPORT directive itself is legal, however.
User Action: Recode to eliminate the line continuation or use backslash continuation.

ANSDEFMUS, ANSI DEF must be defined before reference
Explanation: ERROR---A program compiled with the /ANSI_STANDARD qualifier contains a reference to a DEF function before the function definition.
User Action: Renumber the line containing the function definition so that the definition precedes all references to the function.

ANSILNREQ, a line number is required on first line for ANSI
Explanation: ERROR---When you specify the /ANSI qualifier, a program must have a line number on the first line for the ANSI qualifier.
User Action: Supply a line number on the first line.

ANSKEYSPC, keywords must be delimited by spaces in /ANSI
Explanation: ERROR---A program compiled with the /ANSI_STANDARD qualifier contains a line where two elements (two keywords, a keyword and a line number, or a keyword and a string constant) are not separated by at least one space. For example, PRINT"Hello".
User Action: Delimit all keywords, line numbers, and string constants with at least one space.

ANSLINDIG, ANSI line number may not exceed 4 digits
Explanation: ERROR---A program compiled with the /ANSI_STANDARD qualifier contains a line number with more than 4 digits, that is, a number greater than 9999.
User Action: Renumber the program lines so that no line number exceeds 9999.

ANSLINNUM, ANSI line numbers must begin in column 1
Explanation: ERROR---A program compiled with the /ANSI_STANDARD qualifier contains a line number preceded by one or more spaces or tabs.
User Action: Remove any spaces and tabs that precede the line number.

ANSREQREA, ANSI requires REAL default type
Explanation: ERROR---The /ANSI_STANDARD qualifier conflicts with the /TYPE_DEFAULT qualifier.
User Action: Do not specify a default data type other than REAL. REAL is the default.

ANSREQSCA, ANSI requires SCALE 0
Explanation: ERROR---The /ANSI_STANDARD qualifier conflicts with the /SCALE qualifier.
User Action: Do not specify a scale factor.

ANSREQSET, ANSI requires SETUP
Explanation: ERROR---The /ANSI_STANDARD qualifier conflicts with the /NOSETUP qualifier.
User Action: Do not specify /NOSETUP.

ANYDIMNOT, dimension checking not allowed on ANY
Explanation: ERROR---Both a data type of ANY and a DIM clause were specified in an EXTERNAL statement.
User Action: Remove the DIM clause from the EXTERNAL statement. ANY implies either scalar or array.

ANYNOTALL, ANY not allowed on EXTERNAL PICTURE
Explanation: ERROR---An attempt was made to specify the ANY keyword on an EXTERNAL PICTURE declaration. This is not allowed because the ANY data type should be used for calling non BASIC procedures only.
User Action: Remove the ANY keyword from the EXTERNAL PICTURE declaration.

APPMISNUM, append file missing line number on first line
Explanation: ERROR---An attempt was made to append a source file that does not contain a line number on the first line.
User Action: Put a line number on the first line of the appended file.

APPNOTALL, append not allowed on programs without line numbers
Explanation: ERROR---The APPEND command cannot be used on a program without line numbers.
User Action: Use an include file.

ARESTYMUS, area style must be "HOLLOW", "SOLID", "PATTERN", or "HATCH"
Explanation: ERROR---You specified an invalid value in the SET AREA STYLE statement.
User Action: Specify one of the values listed in the message.

AREREQTHR, AREA output requires at least 3 X,Y points
Explanation: ERROR---An AREA graphic output statement specifies less than 3 points.
User Action: Specify at least 3 points in the AREA graphic output statement.

ARGERR, illegal argument for command
Explanation: ERROR---An argument was entered for a command that does not take an argument, or an invalid argument was entered for a command, for example, SCALE A or LIST A.
User Action: Reenter the command with the proper arguments.

ARRMUSHAV, array must have 1 dimension
Explanation: ERROR---An array with multiple dimensions is specified where a one-dimensional array is required.
User Action: Specify an array that has 1 dimension.

ARRMUSELE, array must have at least 4 elements
Explanation: ERROR---You specified an array with less than four elements. This statement requires an array with at least four elements in it.
User Action: Supply an array declared as having at least 4 elements.

ARRNAMREQ, array names only allowed
Explanation: ERROR---The type of variable name required must be an array name.
User Action: Change the variable name to an array name.

ARRNOTALL, array <name> not allowed in DEF declaration
Explanation: ERROR---The parameter list for a DEF function definition contained an entire array.
User Action: Remove the array specification. Passing an entire array as a parameter to a DEF function is not allowed.

ARRTOOBIG, named array <array-name> is too large
Explanation: ERROR---An array must occupy fewer than (2^16 ---- 1) bytes of storage.
User Action: Reduce the size of the array. If the array is within a record, the maximum size of the array is 65,535 bytes.

ATROVRVAR, attributes of overlaid variable <name> don't match
Explanation: ERROR---A variable name appears in more than one overlaid MAP; however, the attributes specified for the variable are inconsistent.
User Action: If the same variable name appears in multiple overlaid MAPs, the attributes (for example, data type) must be identical.

ATRPRIREF, attributes of prior reference to <name> don't match
Explanation: WARNING---A variable or array is referenced before the MAP that declares it. The attributes of the referenced variable do not match those of the declaration.
User Action: Make sure that the variable or array has the same attributes in both the reference and the declaration.

ATTGTRZER, graphics attribute value must be greater than zero
Explanation: ERROR---You specified a negative value when a positive value is required.
User Action: Supply a value greater than zero.

BADFMTSTR, invalid PRINT USING format string
Explanation: ERROR---The PRINT USING format string specified is not valid.
User Action: Supply a valid PRINT USING format string.

BADLOGIC, internal logic error detected
Explanation: ERROR---An internal logic error was detected.
User Action: This error should never occur. Please submit a Software Performance Report with a machine-readable copy of the source program.

BADNO, qualifier <name> does not accept 'NO'
Explanation: ERROR---A qualifier that does not allow a NO prefix was entered. For example, NODOUBLE.
User Action: Select the proper qualifier.

BADPROGNM, error in program name
Explanation: ERROR---The program name is longer than 39 characters or contains invalid characters.
User Action: Change the program name to be less than or equal to 39 characters and make sure that it contains only letters, digits, dollar signs, and underscores.

BADVALUE, <text> is an invalid keyword value
Explanation: FATAL---The command supplied an invalid value for a keyword.
User Action: Supply a valid value.

BASICHLB, BASIC's HELP library is not installed on this system
Explanation: INFORMATION---A HELP command was entered and the BASIC HELP library was not available.
User Action: See your system manager.

BIFREQNUM, built in function requires numeric expression
Explanation: ERROR---A reference to a BASIC built-in function contains a string instead of a numeric expression.
User Action: Supply a numeric expression.

BIFREQSTR, built in function requires string expression
Explanation: ERROR---The program specifies a numeric expression for a built-in function that requires a string argument.
User Action: Supply a string expression for the built-in function.

BLTFUNNOT, built in function not supported
Explanation: ERROR---The program contains a reference to a built-in function not supported by this version of BASIC.
User Action: Remove the function reference.

BOTBOUSPE, bottom boundary must be less than the top boundary
Explanation: ERROR---In a statement that specifies a viewport or windowsize, you specified a bottom boundary that is greater than or equal to the corresponding top boundary.
User Action: Correct the bottom boundary so that it is less than the top boundary.

BOUCANNOT, bound cannot be specified for array
Explanation: ERROR---An EXTERNAL statement declaring a SUB or FUNCTION subprogram specifies bounds in an array parameter, for example:

                   EXTERNAL SUB XYZ (LONG DIM(1,2,3))

User Action: Remove the array parameter's bound specifications. When declaring an external subprogram, you can specify only the number of dimensions for an array parameter. For example:

                   EXTERNAL SUB XYZ (LONG DIM(,,))

BOUMUSTBE, bounds must be specified for array
Explanation: ERROR---The program contains an array declaration that does not specify the bounds (maximum subscript value). For example:

                   DECLARE LONG A(,)

User Action: Supply bounds for the declared array. For example:

                   DECLARE LONG A(50,50)

CANCON, can't continue
Explanation: FATAL---A CONTINUE command was typed after changes had been made to the source code.
User Action: After changes have been made to the source code, you can run the program, but you cannot continue it.

CAUNOTALL, CAUSE statement not allowed in error handler
Explanation: ERROR---A CAUSE statement is specified within an error handler.
User Action: Remove the CAUSE statement from the error handler.

CDDACCERR, CDD/Repository access error
Explanation: ERROR---CDD/Repository detected an error on an attempted CDD/Repository record extraction. BASIC displays the CDD/Repository error.
User Action: Take action based on the associated CDD/Repository error.

CDDACCITE, CDD/Repository error while accessing item <field-name> of record
Explanation: ERROR---CDD/Repository reported an error when accessing the field. The CDD/Repository record definition is corrupt, or there is an internal error in either BASIC or CDD/Repository.
User Action: If the problem is not in the CDD/Repository definition, please submit a software problem report (SPR) with the source code of a small program that produces this error.

CDDACCREC, CDD/Repository error while accessing record
Explanation: ERROR---CDD/Repository reported an error when accessing the record. The CDD/Repository record definition is corrupt or there is an internal error in either BASIC or CDD/Repository.
User Action: If the problem is not in the CDD/Repository definition, please submit a software problem report (SPR) with the source code of a small program that produces this error.

CDDADJBOU, adjusted bounds for dimension <number> of <array> to be zero based
Explanation: INFORMATION---CDD/Repository contains an array field with a lower bound that is not zero. BASIC adjusts the bound so that the array is zero based.
User Action: None.

CDDALCOFF, please submit an SPR ---- CDD/Repository inconsistent with allocated offset for <field-name>
Explanation: FATAL---The offset of a field within a BASIC RECORD differs from the offset specified by CDD/Repository for that record.
User Action: Please submit a software problem report (SPR) with the source code of a small program that produces this error.

CDDALCSIZ, please submit an SPR ---- CDD/Repository inconsistent with allocated size for <field-name>
Explanation: FATAL---The amount of storage allocated for a field in a BASIC RECORD differs from the amount specified by CDD/Repository for that record.
User Action: Please submit a software problem report (SPR) with the source code of a small program that produces this error.

CDDALCSPN, please submit an SPR ---- CDD/Repository inconsistent with allocated span for <field-name>
Explanation: FATAL---The amount of storage allocated by a BASIC RECORD for an array differs from the amount specified by CDD/Repository for that record.
User Action: Please submit a software problem report (SPR) with the source code of a small program this error.

CDDAMBFLD, ambiguous field name <name> for <RECORD--name>
Explanation: ERROR---More than one CDDL structure share the same level and the same name.
User Action: Change the CDD/Repository definition so that the structures have different names.

CDDATTBAS, CDD/Repository attributes for <name> are other than base 10
Explanation: ERROR---A field in a CDD/Repository definition uses the BASE keyword. This warns you that the numeric field is not interpreted as a base 10 number.
User Action: Remove the BASE attribute in CDD/Repository or avoid using the field.

CDDATTDAT, CDD/Repository data type attribute not permitted for GROUP
Explanation: ERROR---A CDD/Repository definition specified a data type after the CDD/Repository STRUCTURE keyword. BASIC translates STRUCTURE to a BASIC RECORD or GROUP statement. These BASIC statements do not allow data type attributes.
User Action: Change the CDD/Repository definition.

CDDATTDIG, DIGITS attribute of <field-name> not supported for datatype
Explanation: INFORMATION---The field contains a CDD/Repository fixed-point data type that specifies the number of allowed digits. This warning tells you that BASIC interprets the field as BYTE, WORD, LONG, or QUAD and does not support the DIGITS attribute for this data type.
User Action: None.

CDDATTSCA, CDD/Repository specifies SCALE for <RECORD-component>. Not supported.
Explanation: INFORMATION---A field in a CDD/Repository definition uses the SCALE keyword. This warns you that the field has an implied exponent.
User Action: Remove the SCALE attribute in CDD/Repository, or avoid using the field.

CDDATTTXT, CDD/Repository TEXT attribute for group <group-name> ignored
Explanation: INFORMATION---A CDD/Repository record definition specifies a data type of TEXT for the entire record.
User Action: None. BASIC ignores the TEXT attribute and substitutes the UNSPECIFIED attribute.

CDDBASNAM, CDD/Repository specified BASIC name <name> has illegal form
Explanation: ERROR---The BASIC name specified in the CDD/Repository record definition is a reserved keyword or contains an illegal character.
User Action: Change the invalid field name.

CDDBITFLD, field <field-name> from CDD/Repository has bit offset or length
Explanation: ERROR---A CDD/Repository field does not start on a byte boundary.
User Action: Change the bit field in CDD/Repository to have a length that is a multiple of 8 bits.

CDDCOLMAJ, <array-name> from CDD/Repository is a column major array
Explanation: ERROR---An array specified in a CDD/Repository definition is column-major rather than row-major. Thus, it is incompatible with BASIC arrays.
User Action: Change the CDD/Repository definition to be a row-major array.

CDDDIGERR, decimal digits of <VALUE> in CDD/Repository out of range for <field-name>
Explanation: ERROR---A packed numeric CDD/Repository definition specifies more than 31 digits.
User Action: Reduce the number of digits specified in the CDD/Repository definition.

CDDDIMNOT, RECORD cannot be dimensioned
Explanation: ERROR---A CDD/Repository definition is itself an array. This is incompatible with BASIC RECORDs, which can contain arrays but cannot be arrays.
User Action: None. You cannot access CDD/Repository definitions that are arrays.

CDDDUPREC, RECORD <name> from CDD/Repository has duplicate name
Explanation: ERROR---The CDD/Repository record name conflicts with a previous RECORD name. The previous RECORD name may be a standard BASIC RECORD or another CDD/Repository record.
User Action: Remove one of the duplicate definitions.

CDDFLDNAM, field name missing
Explanation: ERROR---The CDD/Repository definition contains a field that is not named.
User Action: Supply a field name for the CDD/Repository definition.

CDDINIIGN, initial value specified in CDD/Repository ignored for: name
Explanation: INFORMATION---The specification of an initial value is unsupported by BASIC.
User Action: Set the initial value of this field in your application program.

CDDINTONLY, % not allowed on <name> with noninteger datatype
Explanation: ERROR---The % suffix is allowed only on numeric data types.
User Action: Remove the % suffix from the variable name or change the data-type keyword.

CDDLOWBOU, lower bound omitted for dimension <number> of <array-name>
Explanation: ERROR---An array in a CDD/Repository definition does not specify a lower bound.
User Action: Check to make sure the omission is not a mistake. BASIC supplies a lower bound of zero and continues after issuing this warning.

CDDMAXDIM, <array-name> exceeds maximum dimensions
Explanation: ERROR---An array in a CDD/Repository definition specifies more than 32 dimensions.
User Action: Reduce the number of dimensions in the CDD/Repository definition.

CDDNAMKEY, <name> is a BASIC keyword
Explanation: ERROR---A CDD/Repository definition contains a field name that is a reserved word in BASIC.
User Action: Change the name in the CDD/Repository definition or supply a BASIC name clause.

CDDOCCIGN, OCCURS DEPENDING ON clause for <array-name> from CDD/Repository ignored
Explanation: INFORMATION---CDD/Repository contains an array field with a variable number of elements. BASIC creates an array large enough for the maximum value.
User Action: If you modify the array field, be sure also to change the field that contains the number of array elements.

CDDOFFERR, CDD/Repository offset error, field <field-name> offsets out of order
Explanation: ERROR---The CDD/Repository definition has been corrupted or there is an internal error in either BASIC or CDD/Repository.
User Action: If the problem is not in the CDD/Repository definition, please submit a software problem report (SPR) with the source code of a small program that produces this error.

CDDPLUSERR, CDD/Repository access error
Explanation: ERROR---CDD/Repository detected an error while attempting to record dependency data. BASIC displays the CDD/Repository error.
User Action: Take action based on the associated CDD/Repository error.

CDDPREERR, decimal precision of <VALUE> in CDD/Repository out of range for <field-name>
Explanation: ERROR---The number of fractional digits for a packed decimal field is greater than the total number of digits specified for that field.
User Action: Change the number of fractional digits in CDD/Repository to be less than or equal to the total number of digits.

CDDRECFOR, CDD/Repository record format is not fixed
Explanation: ERROR---CDD/Repository supports both variable and fixed-length records. BASIC supports only fixed-length records.
User Action: Change the CDD/Repository record definition to specify fixed-length.

CDDRECNAM, record from CDD/Repository does not have a record name
Explanation: ERROR---BASIC uses the field name of the outermost structure to name the record, and therefore cannot include a CDD/Repository record that does not provide a record name.
User Action: Change the CDD/Repository record definition to provide a field name for the outermost structure of the record.

CDDSCAERR, decimal scale of <scale-factor> is out of range for <field> from CDD/Repository
Explanation: ERROR---The scale factor for a packed decimal CDD/Repository field is greater than the number of digits in the field or less than zero.
User Action: Change the scale factor in the CDD/Repository definition.

CDDSCAZER, scale 0 specified for CDD/Repository field <field-name>
Explanation: INFORMATION---A CDD/Repository field specifies no scale factor for a D_floating field, but the BASIC program specifies a nonzero scale factor.
User Action: Use a scale factor of zero in the BASIC program.

CDDSTRONLY, $ not allowed on <name> with nonstring datatype
Explanation: ERROR---The $ suffix is only allowed on string data types.
User Action: Remove the $ suffix from the variable name or change the data-type keyword.

CDDSUBGRO, substituted GROUP for <field-name>. Data type in CDD/Repository not supported.
Explanation: INFORMATION---The CDD/Repository definition specifies a data type that is not native to BASIC. BASIC creates a GROUP with the same name as the CDD/Repository field and creates variable names for the GROUP components.
User Action: None.

CDDTAGIGN, tag value ignored for <field-name> from CDD/Repository
Explanation: INFORMATION---The CDD/Repository record definition contains a VARIANTS OF.
User Action: None. BASIC translates the VARIANTS OF as if it were a regular variant; however, the tag value is ignored.

CDDUNSDAT, data type specified in CDD/Repository for <field-name> not supported
Explanation: ERROR---The data type specified for a field is not supported by BASIC.
User Action: Change the data type in the CDD/Repository record definition.

CDDUPPBOU, upper bound omitted for dimension <number> of <array-name>
Explanation: ERROR---An array in a CDD/Repository definition does not specify an upper bound.
User Action: Specify an upper bound in the CDD/Repository definition.

CDDVARFLD, field <name> from CDD/Repository has variable offset or length
Explanation: ERROR---A CDD/Repository field can be either variable or fixed-length. BASIC supports only fixed-length fields.
User Action: Change the CDD/Repository definition.

CHAEXPMUS, channel expression must be numeric
Explanation: ERROR---The program contains a nonnumeric channel expression, for example, PUT #A$
User Action: Change the channel expression to be numeric.

CHALINCLA, CHAIN does not support line number clause
Explanation: ERROR---A CHAIN statement contains a LINE keyword and a line number argument.
User Action: Remove the LINE keyword and the line number argument.

CHANGES, unsaved change has been made, Ctrl/Z or EXIT to exit
Explanation: WARNING---A BASIC source program in memory has been modified, and an EXIT command or Ctrl/Z has been typed. BASIC signals the error notifying you that if you exit from the compiler, the program modifications will be lost.
User Action: If you want to save the program, type SAVE. If you do not want to save the program, type EXIT or Ctrl/Z.

CHANOTALL, CHANGES not allowed on primary key
Explanation: ERROR---The PRIMARY KEY clause in an OPEN statement specifies CHANGES.
User Action: Remove the CHANGES keyword; you cannot change the value of a primary key.

CHASTAAMB, CHANGE statement is ambiguous
Explanation: ERROR---A string variable and a numeric array have the same name in a CHANGE statement.
User Action: Change the name of the string variable or the numeric array.

CLIPMUSBE, clipping must be set to "ON" or "OFF"
Explanation: ERROR---You specified an invalid value in the SET CLIP statement.
User Action: Specify one of the values listed in the message.

CLOSEIN, error closing <file-name> as input
Explanation: ERROR---An error was detected while closing an input file.
User Action: Take corrective action based on the associated message.

CLOSEOUT, error closing <file-name> as output
Explanation: ERROR---An error was detected while closing an output file.
User Action: Take corrective action based on the associated message.

CMDNOTALL, command not allowed on programs without line numbers
Explanation: ERROR---A command that cannot be used on a program without line numbers has been used on a program without line numbers.
User Action: Do not use this command on programs without line numbers.

CODLENEST, internal code length estimate error. Submit an SPR
Explanation: FATAL---BASIC has incorrectly estimated the size of the generated code for your program.
User Action: Submit a software problem report (SPR) with the program that caused the error. (You can often work around this error by making a simple change to your code.)

COLOUTRAN, color intensities must be in the range 0.0 to 1.0
Explanation: ERROR---The value specified for color intensity is either less than 0.0 or greater than 1.0.
User Action: Supply a value from 0.0 to 1.0.

COMMAPALI, variable <name> not aligned in COMMON/MAP <name>
Explanation: INFORMATION---In a COMMON or MAP, the total storage preceding a REAL, WORD, LONG, or QUAD numeric variable is an odd number of bytes.
User Action: None. In BASIC, numeric data can start on any byte boundary.

COMMAPNEQ, COMMON/MAP area sizes are not equal for section
Explanation: WARNING---A MAP or COMMON with the same name exists in more than one program module, but the size of the areas differs.
User Action: Make the size of the COMMON or MAP areas equal in size in all modules.

COMMAPOVF, COMMON/MAP <name> is too large
Explanation: ERROR---The program contains a MAP or COMMON longer than (2^31 ---- 1) longwords.
User Action: Reduce the length of the COMMON or MAP.

CONCOMSYN, conditional compilation cannot be used with /SYNTAX
Explanation: FATAL---The /SYNTAX_CHECKING qualifier is in effect when a program line containing the %IF, %THEN, %ELSE, or %END %IF lexical directive was entered.
User Action: Turn off syntax checking before entering a program line containing the %IF, %THEN, %ELSE, or %END %IF lexical directive.

CONDATSPC, conflicting data type specifications
Explanation: ERROR---The program contains a declarative statement containing two or more consecutive and contradictory data-type keywords, for example, DECLARE REAL BYTE.
User Action: Remove one of the data-type keywords or make sure that the keywords refer to the same generic data type. For example, DECLARE REAL SINGLE is valid.

CONEXPREQ, constant expression required
Explanation: ERROR---A statement specifies a variable, built-in function reference or exponentiation where a constant is required.
User Action: Supply an expression containing only literals or declared constants or remove the exponentiation operation.

CONTARNOT, CONTINUE target not legal in detached error handlers
Explanation: ERROR---A CONTINUE statement within a detached WHEN block error handler contains a target.
User Action: Remove the target line number or label from the CONTINUE statement or use an attached error handler.

CONIS_INC, constant is inconsistent with the type of <name>
Explanation: ERROR---A DECLARE CONSTANT statement specifies a value that is inconsistent with the data type of the constant, for example, a BYTE value specified for a REAL constant.
User Action: Change the declaration so that the data type of the value matches that of the constant.

CONIS_NEE, <item> requires conditional expression
Explanation: ERROR---A CASE or IF keyword is immediately followed by a floating-point or string expression.
User Action: Supply a conditional expression (relational, logical, or integer).

CONLFTSID, constant <name> not allowed on left side of assignment
Explanation: ERROR---The program tries to assign a value to a user-defined constant.
User Action: Remove the assignment statement; once you have assigned a value to a declared constant, you cannot change it.

CONNOTALL, constant <name> not allowed in assignment context
Explanation: ERROR---The program tries to assign a value to a user-defined constant.
User Action: Remove the assignment statement; once you have assigned a value to a declared constant, you cannot change it.

COOMUSBE, coordinates must be within NDC space (0.0 to 1.0)
Explanation: ERROR---The value of a coordinate is either less than 0.0 or greater than 1.0.
User Action: Supply a value from 0.0 to 1.0.

CORSTAFRA, corrupted stack frame
Explanation: ERROR---An immediate mode statement was entered after a STOP statement was executed in the VAX BASIC Environment and something corrupted the stack.
User Action: Check program logic to make sure that all array references are within array bounds. This error can also be caused by loading non BASIC object modules in the VAX BASIC Environment.

COUONLALO, COUNT clause only allowed with array LIST clause
Explanation: ERROR---A COUNT clause was found on a SET INITIAL CHOICE statement that contains a LIST clause that does not contain a string array.
User Action: Remove the COUNT clause or use the array form of the LIST clause.

COUVALCAN, COUNT value cannot be greater than array size
Explanation: ERROR---In the COUNT clause, you specified a count that is larger than the size of the array that you supplied.
User Action: Change either the COUNT value or the size of the array so that COUNT is less than or equal to the number of elements in the array.

DATTYPEXP, data type required for variable <name> with /EXPLICIT
Explanation: ERROR---A program compiled with the /TYPE=EXPLICIT qualifier declares a variable without specifying a data type.
User Action: Supply a data-type keyword for the variable or compile the program without the /TYPE=EXPLICIT qualifier.

DATTYPNOT, data type keyword not allowed in SUB statement
Explanation: ERROR---A SUB statement contains a data-type keyword between the subprogram name and the parameter list.
User Action: Remove the data-type keyword. In a SUB statement, data-type keywords can appear only within the parameter list.

DATTYPREQ, data type required in EXTERNAL CONSTANT declaration
Explanation: ERROR---An EXTERNAL CONSTANT statement has no data-type keyword.
User Action: Supply a data-type keyword to specify the data type of the external constant.

DECIMERR, DECIMAL overflow
Explanation: WARNING---The program contains a DECIMAL expression whose value is outside the valid range.
User Action: Reduce the value of the DECIMAL expression.

DECLEXSYN, DECLARED lexical function syntax error
Explanation: ERROR---The syntax of the %DECLARED lexical function is specified incorrectly.
User Action: Supply the correct syntax.

DECPREOUT, DECIMAL precision specification out of range
Explanation: ERROR---In the declaration for a packed decimal variable or constant, the number of digits to the right of the decimal point is greater than the total number of digits specified, or greater than 31.
User Action: Change the declaration so that the total number of digits specified is less than 31, and the number of digits to the right of the decimal point is less than or equal to the total number of digits.

DECSIZOUT, DECIMAL size specification out of range
Explanation: ERROR---The declaration for a packed decimal variable or variable specifies more than 31 digits.
User Action: Change the declaration to specify 31 or fewer digits.

DEFEXPCOM, expression with DEF* too complex, moving <name> invocation
Explanation: WARNING---A DEF* is being invoked from within a complex expression. To simplify the expression, the compiler will evaluate the DEF*(s) first. (Alpha BASIC only.)
User Action: Rewrite statement into simpler expressions.

DEFINVNOT, DEF invocation not allowed in assignment context
Explanation: ERROR---A DEF function invocation (including a parameter list) appears on the left side of an assignment statement.
User Action: Remove the assignment statement. You cannot assign values to a function invocation.

DEFMODNOT, DEF <name> mode not as declared
Explanation: ERROR---The specified data type in a function declaration disagrees with the data type specified in the function definition.
User Action: Make the data-type specifications match in both the function declaration and the function definition.

DEFNOTDEF, DEF <name> not defined
Explanation: ERROR---The program contains a reference to a nonexistent user-defined function.
User Action: Define the function in a DEF statement.

DEFNOTWHE, DEF not allowed in WHEN block or handler
Explanation: ERROR---A DEF function definition is not allowed in a WHEN block or its associated handler.
User Action: Remove the DEF function definition from within the WHEN block or handler.

DEFRESREF, DEF <name> result reference illegal in this context
Explanation: ERROR---The program attempts to assign a value to a DEF name outside the DEF block.
User Action: Remove the assignment statement. You cannot assign a value to a DEF outside of the DEF block.

DEFSIZNOT, DEF <name> decimal size not as declared
Explanation: ERROR---The DECIMAL(d,s) size specified in the DEF statement does not match the DECIMAL(d,s) used in the associated DECLARE DEF statement.
User Action: Make the DECIMAL size specification agree in both the DECLARE DEF and DEF statements.

DEFSTAPAR, DEF* formal <formal-name> inconsistent with usage outside DEF*
Explanation: ERROR---A DEF* formal parameter has the same name as a program variable, but different attributes.
User Action: You should not use the same names for DEF* parameters or program variables. If you do, you must ensure that they have the same data type and size.

DEFSTRPAR, DEF string parameter is illegal in MAP DYNAMIC or REMAP
Explanation: ERROR---You cannot use a static string that is a parameter declared in a DEF or DEF* function as the storage area in a MAP DYNAMIC or REMAP statement.
User Action: Change the storage area specification in the MAP DYNAMIC or REMAP statement to use either a MAP name or a static string variable that is not a parameter to the DEF or DEF* function.

DELETE, ignoring <item>
Explanation: ERROR---The program contains a syntax error. The compiler tries to recover from the error by ignoring an operator or separator in the source line. For example, DIM A(3, ) is a syntax error, but BASIC continues the compilation by ignoring the comma. The compilation continues only in order to discover other errors; no object module is produced.
User Action: Correct the syntax error in the displayed line.

DEPNOTANS, /DEPENDENCY_DATA qualifier not allowed with /ANSI
Explanation: ERROR---The /DEPENDENCY_DATA qualifier conflicts with the /ANSI_STANDARD qualifier.
User Action: Specify either the /DEPENDENCY_DATA qualifier or the /ANSI_STANDARD qualifier, but not both.

DESCOMABORT, /DESIGN=COMMENT processing has been aborted due to an internal error---please submit an SPR
Explanation: INFORMATION---The compiler was unable to process comment information due to an internal error.
User Action: Please submit a software problem report (SPR) with the source code of a small program that produces the error.

DESCOMERR, error in processing design information
Explanation: WARNING---The design information was syntactically incorrect.
User Action: You should respecify the design information and compile the program again.

DESIGNTOOOLD, /DESIGN=COMMENT processing routines are too old for the compiler
Explanation: WARNING---The compiler encountered obsolete routines.
User Action: Install a new version of Compaq Language Sensitive Editor for OpenVMS.

DESOUTRAN, destination out of range
Explanation: FATAL---The branch destination in an ON GOSUB statement is greater than 32,767 bytes away from the statement.
User Action: Reduce the distance between the destination and the statement.

DIMOUTRAN, dimension is out of range
Explanation: ERROR---The program contains the declaration of an array that specifies a negative number as a dimension.
User Action: Change the dimension to a positive number.

DIMLSSZERO, dimension must be greater than zero
Explanation: ERROR---The number specified for a dimension must be greater than zero.
User Action: Change the number to be greater than zero.

DIMTOOBIG, dimension for array <name> must be between 1 and <number>
Explanation: ERROR---The number of the dimension specified is greater than the number of dimensions in the array.
User Action: Change the dimension number to be less than or equal to the number of dimensions in the array.

DIRMUSTBE, directive must be only item on line
Explanation: ERROR---The program contains a compiler directive that is not the only item on the line.
User Action: Place the directive on its own line.

DIRNOTIMM, directive not valid in immediate mode
Explanation: ERROR---A compiler directive was typed in the VAX BASIC Environment.
User Action: None. Compiler directives are invalid in immediate mode.

DIVBY_ZER, division by zero
Explanation: WARNING---The value of a number divided by zero is indeterminate.
User Action: Change the expression so that no expression is divided by the constant zero.

DRAWITREQ, DRAW WITH clause requires 4X4 matrix
Explanation: ERROR---A user matrix is specified in a DRAW statement WITH clause where a two-dimensional matrix with lower bounds 0 and upper bounds 4 in both dimensions is required.
User Action: Declare the matrix to be a two-dimensional matrix with lower bounds 0 and upper bounds 4 in both dimensions.

DUPCLASPE, duplicate clause specified
Explanation: ERROR---A duplicate clause was found on a SET INITIAL statement or a graphics input statement.
User Action: Remove the duplicate clause.

DUPLINNOT, duplicate line numbers not ANSI
Explanation: ERROR---A program compiled with the /ANSI_STANDARD qualifier from the DCL command level, or called into the VAX BASIC Environment with the OLD command while the /ANSI_STANDARD qualifier is in effect, contains two identical line numbers.
User Action: Remove one instance of the duplicate line number. Even if you compile the program without the /ANSI_STANDARD, BASIC will ignore all statements connected with the first instance of the duplicate line number before compiling the program.

DUPLNFND, duplicate line number <number> found
Explanation: INFORMATION or WARNING
Explanation: INFORMATION---A line number in an include file is the same as a line number in the main source file.
Explanation: WARNING---There are two lines in the main source file with the same line number. BASIC keeps the second occurrence of the line number.
User Action: Correct the source by changing one of the line numbers to an unused number.

DYNATTONL, DYNAMIC attribute only valid for MAP areas
Explanation: ERROR---A COMMON keyword is followed by the DYNAMIC keyword.
User Action: Remove the DYNAMIC keyword. The DYNAMIC attribute is valid only for MAP areas.

DYNSTRINH, dynamic string variable <name> inhibits optimization
Explanation: INFORMATION---This error is reported only when the /NOSETUP qualifier is in effect. The program contains a dynamic string variable. This prevents optimization of the compiler-generated code.
User Action: Place the string variable in a COMMON keyword or MAP area.

ELENOALGN, Elements within array <array-name> are not naturally aligned.
Explanation: WARNING---Identifies record arrays that may not be naturally aligned because the size of each record element is not a multiple of the record's natural alignment. This error is reported only when the /WARNING=ALIGNMENT qualifier is in effect.
User Action: Modify the size of the record to be a multiple of the record's natural alignment.

ELSIMPCON, ELSE appears in improper context, ignored
Explanation: ERROR---The program contains an ELSE clause that either is not preceded by an IF statement or that appears after an IF has been terminated with a line number or END IF.
User Action: Remove either the ELSE clause or the terminating line number or END IF.

EMPTYOBJ, Empty object file due to error
Explanation: INFORMATION---The compiler has detected errors and therefore did not produce an object file.
User Action: The errors must be corrected before the compiler will produce an object file.

ENDIMPCON, END IF appears in improper context, ignored
Explanation: ERROR---The program contains an END IF statement that either is not preceded by an IF statement or occurs after an IF has been terminated by a line number.
User Action: Supply an IF statement or remove the terminating line number.

ENDSTAREQ, END statement required in ANSI
Explanation: INFORMATION---A program compiled with the /ANSI_STANDARD qualifier does not contain an END statement.
User Action: Include an END statement as the last statement in the program. ANSI Minimal BASIC requires an END statement.

ENTARRFIE, entire array field of virtual record cannot be passed
Explanation: ERROR---The program attempts to pass an entire array as a parameter to a subprogram when:

- The array is an item in a record
- The record is itself dimensioned as a virtual array

User Action: Assign the values of the array to another array that is of the same data type and dimension but that is not a field of a virtual array record, and pass the second array as the parameter.

ENTARRNOT, entire array not allowed in this context
Explanation: ERROR---The program specifies an entire array in a context that permits only array elements, for example, in a PRINT statement.
User Action: Remove the reference to the entire array.

ENTGRONOT, entire GROUP or RECORD not allowed in this context
Explanation: ERROR---The program specifies an entire GROUP or RECORD in a context that permits only GROUP or RECORD components, for example, PRINT ABC::XYZ where XYZ is a GROUP.
User Action: Remove the reference to the entire GROUP or RECORD.

ENTVIRARR, entire virtual array cannot be a parameter
Explanation: ERROR---The program attempts to pass an entire virtual array as a parameter.
User Action: None. You cannot pass an entire virtual array as a parameter.

EOLNOTTER, End of line does not terminate IFs due to active blocks
Explanation: ERROR---A THEN or ELSE clause contains a loop block, and a line number terminates the if-then-else before the end of the loop block.
User Action: Make sure that any loop is entirely contained in the THEN or ELSE clause.

ERLNOTALL, ERL statement not allowed in programs without line numbers
Explanation: ERROR---An ERL statement has been found in a program without line numbers.
User Action: Remove the ERL statement.

ERRACCLIB, error accessing module <mod-name> in text library <text-lib-name>
Explanation: ERROR---BASIC found an unexpected LIBRARIAN error while trying to %INCLUDE a text library module. This error message is followed by a specific LIBRARIAN (LBR) message.
User Action: Take appropriate action based on the associated LBR message.

ERRCLOLIB, error closing text library <text-lib-name>
Explanation: ERROR---The text library specified in a %INCLUDE directive could not be closed. This error message is followed by the specific LIBRARIAN (LBR) error.
User Action: Take appropriate action based on the associated LBR message.

ERROPEFIL, error opening file
Explanation: ERROR---The file specified in a %INCLUDE directive could not be opened. This error message is followed by the specific RMS error.
User Action: Take appropriate action based on the associated RMS error.

ERROPELIB, error opening text library <text-lib-name>
Explanation: ERROR---The text library specified in a %INCLUDE directive could not be opened. This error message is followed by the specific LIBRARIAN (LBR) error.
User Action: Take appropriate action based on the associated LBR message.

ERRREADFIL, error reading file <file_name>
Explanation: ERROR---the compiler encountered problems while reading either a BASIC source file or a CDD audit file (as specified using the /AUDIT qualifier).
User Action: Examine the secondary message that follows this message to find out what went wrong, then take the appropriate action.

ERRRECCOM, erroneous RECORD component
Explanation: ERROR---The program contains an erroneous record component, for example, specifying A::B when RECORD A has no component named B.
User Action: Remove the erroneous reference.

EXEDIMILL, executable DIMENSION illegal for static array
Explanation: ERROR---A DIMENSION statement names an array already declared with a DECLARE, COMMON, MAP, or RECORD statement, or one that was declared statically in a previous DIMENSION statement.
User Action: Remove the executable DIMENSION statement or originally declare the array as executable in a DIMENSION statement.

EXPDECREQ, explicit declaration of <name> required
Explanation: ERROR---The program is compiled with the /TYPE:EXPLICIT qualifier in effect, and the program references a variable, constant, function, or subprogram name that is not explicitly declared.
User Action: Explicitly declare the variable, constant, function, or subprogram.

EXPIFDIR, expecting IF directive
Explanation: ERROR---The program contains a %END that is not immediately followed by a %IF.
User Action: Supply a %IF immediately following the %END.

EXPNOTALL, expression not allowed in this context
Explanation: ERROR---The program contains an expression in a context that allows only simple variables, array elements, or entire arrays, for example, in FIELD and MOVE statements.
User Action: Remove the expression.

EXPNOTRES, expression does not contribute to result of string concatenation
Explanation: INFORMATION---The compiler has detected an expression that is not needed in determining a result.
User Action: Review the program to determine if the expression can be eliminated. You may want to remove the expression if it is determined to be unnecessary.

EXPTOOCOM, expression too complicated
Explanation: ERROR---The program contains an expression or statement too complicated to compile. This message can occur whenever BASIC is unable to allocate sufficient registers.
User Action: Recode as required; for example, rewrite the statement as two or more less complicated statements.

EXPUNAOPE, expecting unary operator or legal lexical operand
Explanation: ERROR---A compiler directive contains an invalid lexical expression, for example, %IF *3% %THEN.
User Action: Correct the lexical expression.

EXTELSFOU, extra ELSE directive found
Explanation: ERROR---The program contains a %ELSE directive that is not matched with a %IF directive.
User Action: Make sure that each %ELSE is preceded by a %IF, and that each %IF contains no more than one %ELSE clause.

EXTENDIF, extra END IF directive found
Explanation: ERROR---A program unit contains a %END %IF without a preceding %IF directive.
User Action: Supply a %IF for the %END %IF.

EXTLEFPAR, extra left parenthesis in expression
Explanation: ERROR---A compiler directive contains a lexical expression with an extra left parenthesis.
User Action: Remove the extra parenthesis.

EXTNAMTOO, EXTERNAL name too long, truncating to <new--name>
Explanation: WARNING---An EXTERNAL statement names a symbol longer than 31 characters.
User Action: Shorten the symbol name to 31 characters or less.

EXTRIGPAR, extra right parenthesis in expression.
Explanation: ERROR---A compiler directive contains a lexical expression with an extra right parenthesis.
User Action: Remove the extra parenthesis.

EXTSTRVAR, EXTERNAL STRING variables not supported
Explanation: ERROR---The program contains an EXTERNAL statement that specifies an external string variable.
User Action: Remove or change the EXTERNAL statement. BASIC does not support external string variables.

FEANOTANS, language feature not ANSI
Explanation: INFORMATION---A program compiled with the /ANSI_STANDARD qualifier contains a BASIC feature (such as a long variable name or a string array) that does not conform to the ANSI Minimal BASIC Standard. (See Chapter 6 for more information about the ANSI Minimal Standard.)
User Action: Although BASIC allows you to run programs with non-ANSI language features, you must remove these features if you want your program to be transportable to other ANSI Minimal BASIC compilers.

FEANOTAVA, language feature not available in Alpha BASIC
Explanation: Feature is not currently available in Alpha BASIC.
User Action: Rewrite code to work around unavailable feature.

FIEVALONL, FIELD valid only for dynamic string variables
Explanation: ERROR---A FIELD statement contains a numeric or fixed-length string variable.
User Action: Remove the numeric or fixed-length string variable. Only dynamic string variables are valid in FIELD statements.

FILACCERR, file access error for INCLUDE directive <file-name>
Explanation: ERROR---The file named in the %INCLUDE directive was correctly opened but could not be read for some reason, for example, the disk drive was switched off line.
User Action: Take action based on the associated RMS error messages.

FILEWRITE, <prog--name> written to file: <file-name>
Explanation: INFORMATION---The specified program name has been saved in file-name.
User Action: None.

FILNOTALL, FILL not allowed in MAP DYNAMIC
Explanation: ERROR---A MAP DYNAMIC statement contains a FILL item.
User Action: Remove the FILL item.

FILNOTDEL, error deleting <file-name>
Explanation: ERROR---An error was detected in attempting to delete a file.
User Action: Supply a valid file specification, or take corrective action based on the associated message.

FILTOOBIG, FILL number <n> in overlay <m> of MAP <name> too big
Explanation: ERROR---A FILL string length or repeat count caused the compiler to try to allocate more than 2^31 longwords of storage.
User Action: Check the specified MAP statement and change the FILL string length or repeat count.

FLDNOALGN, FIELD <field-name> within RECORD <record_name> is not naturally aligned.
Explanation: WARNING---Identifies a field within a record that was found not to be naturally aligned. This error is reported only when the /WARNING=ALIGNMENT qualifier is in effect.
User Action: Modify the record so that all fields are naturally aligned.

FLOCVTILL, floating CVT valid only for SINGLE and DOUBLE
Explanation: ERROR---A CVTF$ or CVT$F function names a GFLOAT, HFLOAT, SFLOAT, TFLOAT, or XFLOAT value as an argument, or the default real size is one of these.
User Action: Use a SINGLE argument rather than SFLOAT. Use a DOUBLE argument rather than GFLOAT, TFLOAT, HFLOAT, or XFLOAT.

FLOPOIERR, floating point error or overflow
Explanation: WARNING---The program contains a numeric expression whose value is outside the valid range for the default floating-point data type.
User Action: Modify the expression so that its value is within the allowable range or select as the default REAL size a floating-point data type that has a greater range.

FNEWHINOT, exit from DEF while not in DEF
Explanation: ERROR---An FNEXIT or EXIT DEF statement has no preceding DEF statement.
User Action: Define the function before inserting an FNEXIT or EXIT DEF statement.

FNEWITDEF, end of DEF seen while not in DEF
Explanation: ERROR---An FNEND or END DEF statement has no preceding DEF statement.
User Action: Define the function before inserting an FNEND statement or delete the FNEND statement.

FORFEEMUS, FORM FEED must appear at end of line
Explanation: INFORMATION---A form-feed character is followed by other characters in the same line.
User Action: Remove the characters following the form feed. A form feed must be the last or only character on a line.

FORPARMUS, formal parameter must be supplied for <name>
Explanation: ERROR---The declaration of a DEF, SUB, or FUNCTION routine contains the parentheses for a parameter list but no parameters.
User Action: Supply a parameter list or remove the parentheses.

FORSTRPAR, formal string parameters may not be FIELDed
Explanation: ERROR---A variable name appears both in a subprogram formal parameter list and a FIELD statement in the subprogram.
User Action: Remove the variable from the FIELD statement or the parameter list.

FOUENDWIT, found end of <block> without matching <item>
Explanation: ERROR---The program contains an END SELECT, END DEF, END FUNCTION, FUNCTIONEND, SUBEND, END SUB, or END IF without a matching SELECT, DEF, SUB, FUNCTION, or IF.
User Action: Supply a SELECT, DEF, FUNCTION, SUB, or IF to match the END <block> statement, or remove the erroneous END statement.

FOUND, found <item> when expecting <item>
Explanation: ERROR---The program contains a syntax error. BASIC displays the item where the error was detected, then displays one or more items that make more sense in that context. The compilation continues so that other errors can be detected. The actual program line remains unchanged and no object file is produced.
User Action: Examine the line carefully to discover the error. Change the program line to correct the syntax error.

FOUNXTWIT, found NEXT without matching WHILE or UNTIL
Explanation: ERROR---The program contains a NEXT statement without a corresponding WHILE or UNTIL statement.
User Action: Supply a WHILE or UNTIL statement or remove the erroneous NEXT statement.

FOUWITMAT, found NEXT without matching FOR
Explanation: ERROR---The program contains a NEXT <control--variable> statement without a matching FOR <control--variable> statement.
User Action: Supply a FOR statement or remove the erroneous NEXT statement.

FUNINVNOT, function invocation not allowed in assignment context
Explanation: ERROR---An external function invocation (including a parameter list) appears on the left side of an assignment statement.
User Action: Remove the assignment statement. You cannot assign values to a function invocation.

FUNNESTOO, function nested too deep
Explanation: ERROR---The program contains too many levels of function definitions within function definitions.
User Action: Reduce the number of nested functions.

FUNWHINOT, exit from FUNCTION while not in FUNCTION
Explanation: ERROR---An EXIT FUNCTION or FUNCTIONEXIT statement was found in a module that is not a FUNCTION subprogram.
User Action: Remove the EXIT FUNCTION or FUNCTIONEXIT statement.

GRAARRMUS, graphics array must be integer or real
Explanation: ERROR---The specified array has a data type other than an integer or real data type.
User Action: Declare the array with an integer or real data type.

HANNOTDEF, HANDLER not allowed in DEF
Explanation: ERROR---A HANDLER definition has been found within a DEF function definition.
User Action: Remove the HANDLER definition from inside the DEF function definition.

HANNOTFOU, error handler <name> not found
Explanation: ERROR---You did not define the HANDLER you referenced in a WHEN statement.
User Action: Define the HANDLER you reference in the WHEN statement.

HANNOTWHE, HANDLER not allowed in a WHEN block or handler
Explanation: ERROR---A detached HANDLER definition was found in a WHEN block protected region or associated handler.
User Action: Remove the HANDLER definition from within all WHEN block protected regions and associated handlers.

HANWHINOT, exit from HANDLER while not in HANDLER
Explanation: ERROR---An EXIT HANDLER statement was found while not in a HANDLER block.
User Action: Remove the EXIT HANDLER statement.

HFLOATNOTS, HFLOAT is not supported
Explanation: ERROR---HFLOAT floating-point data type is not supported by Alpha BASIC.
User Action: Remove the use of HFLOAT floating-point data type, substituting either GFLOAT, TFLOAT, or XFLOAT as appropriate.

HORJUSMUS, horizontal justification must be "LEFT", "CENTER", "RIGHT" or "NORMAL"
Explanation: ERROR---You specified an invalid value for the horizontal component of the SET TEXT JUSTIFY statement.
User Action: Specify one of the values listed in the message.

IDEMAYAPP, IDENT directive may appear only once per module
Explanation: WARNING---The program contains more than one %IDENT compiler directive.
User Action: Remove all but one %IDENT directive.

IDENAMTOO, IDENT directive name is too long
Explanation: WARNING---The quoted string in a %IDENT directive is too long.
User Action: Reduce the length of the string. The maximum length is 31 characters.

IF_EXPMUS, IF directive expression must be terminated by THEN directive
Explanation: ERROR---A %IF directive contains a %ELSE clause with no intervening %THEN clause.
User Action: Insert a %THEN clause.

IF_IN_INC, IF directive in INCLUDE directive needs END IF directive in same file
Explanation: ERROR---A %INCLUDE file contains a %IF but no %END %IF.
User Action: Supply a %END %IF for the %INCLUDE file.

IF_NOTTER, IF statement not terminated
Explanation: ERROR---The program contains an if-then-else statement within a block (for example, a FOR-NEXT, SELECT-CASE, or WHILE block) and the end of the block was reached before the if-then-else statement was terminated.
User Action: Check program logic to be sure if-then-else statements are terminated with a line number or an END IF statement before the end of the block is reached.

ILLALLCLA, illegal ALLOW clause <clause>
Explanation: ERROR---The program contains an ALLOW clause on a GET statement, and the file was not opened with the UNLOCK EXPLICIT clause.
User Action: Either remove the ALLOW clause from the GET statement or use the UNLOCK EXPLICIT clause in the OPEN statement.

ILLARGBP2, illegal argument count for BASIC-PLUS-2
Explanation: INFORMATION---The program contains a SUB, DEF, or EXTERNAL FUNCTION reference with more than 32 parameters. This error is reported only when the /FLAG:BP2COMPATIBILITY qualifier is in effect.
User Action: If the program must run under both BASIC and PDP--11 BASIC-PLUS-2, the function must have 32 or fewer parameters.

ILLARGPAS, illegal argument passing mechanism
Explanation: ERROR---The program specifies an invalid argument-passing mechanism, for example, passing strings or arrays BY VALUE, or passing an entire virtual array.
User Action: Check all elements for the proper parameter-passing mechanism.

ILLCALFUN, illegal CALL of a DECIMAL, HFLOAT or STRING function
Explanation: ERROR---You attempted to use the CALL statement to invoke either a DECIMAL, HFLOAT, or STRING function.
User Action: Invoke the function not using the CALL statement.

ILLCHA, illegal character <ASCII code>
Explanation: WARNING---The program contains illegal or incorrect characters.
User Action: Examine the program for correct usage of the BASIC character set and possibly delete the character.

ILLCHAEXT, illegal character <ASCII code> in external name
Explanation: ERROR---The external symbol in an EXTERNAL FUNCTION or CONSTANT declaration contains an invalid character.
User Action: Remove the invalid character. External names can use only printable ASCII characters: ASCII values in the range 32 to 126, inclusive.

ILLCHAIDE, illegal character <ASCII value> in IDENT directive
Explanation: WARNING---A %IDENT directive contains an illegal character with the reported ASCII value.
User Action: Remove the illegal character.

ILLCONTYP, illegal constant type
Explanation: ERROR---The program contains an invalid declaration, for example, DECLARE RFA CONSTANT.
User Action: Remove the invalid data type. You cannot declare constants of the RFA data type.

ILLEXTPDP, <name> is illegal as a PDP--11 external name
Explanation: INFORMATION---This error is reported only when the /FLAG=BP2COMPATIBILITY qualifier is in effect. The external name is longer than six characters or contains a non-RAD50 character.
User Action: Reduce the length of the name or remove the non-RAD50 character.

ILLFRMNAM, illegally formed name
Explanation: ERROR---The program contains an invalid user identifier (such as a variable, constant, or function name).
User Action: Change the name to comply with the rules for naming user identifiers. See the Compaq BASIC for OpenVMS Alpha and VAX Systems Reference Manual for more information.

ILLFRMNUM, illegally formed numeric constant
Explanation: ERROR---The program contains either: 1) an invalid E-format expression, or 2) a numeric constant with a digit that is invalid in the specified radix, for example, a decimal constant containing a hexadecimal digit.
User Action: Supply a valid E-format expression or a constant that is valid in the specified radix.

ILLGOTO, can't GOTO outside current procedure
Explanation: WARNING---The target line number of an immediate mode GOTO statement is outside of the currently compiled procedure.
User Action: None. If you RUN a source file containing more than one program unit, the currently compiled program is the last program unit in the source file. If you use the OLD command to read a program into memory and load one or more object modules, then type RUN, the currently compiled procedure is the program you read into memory with OLD.

ILLIDEPDP, illegal %IDENT string for PDP--11
Explanation: INFORMATION---A %IDENT compiler directive contains a string that is invalid for PDP--11 systems. This error is issued only when the BP2 compatibility flagger is enabled.
User Action: Change the %IDENT string. The string must be from 1 to 6 characters, and must contain only RAD-50 characters.

ILLIO_CHA, illegal I/O channel
Explanation: ERROR---A constant channel expression is greater than 99, or a variable channel expression is greater than 119.
User Action: If the channel expression is a constant, change to be less than or equal to 99. A variable channel expression can be less than or equal to 119; however, channels in the range 100 to 119 are reserved for programs using LIB$GET_LUN.

ILLLINNUM, illegal line number in CHAIN
Explanation: ERROR---A CHAIN with LINE statement specifies an invalid line number. Either the number is outside the valid range, or a string expression follows the LINE keyword.
User Action: Supply an integer line number from 1 to 32,767, inclusive.

ILLLOCARG, illegal LOC argument
Explanation: ERROR---An argument to the LOC function is a constant, virtual array element, or expression.
User Action: Change the argument to the LOC function.

ILLLOONES, illegal loop nesting, expecting NEXT <VARIABLE>
Explanation: ERROR---The program contains overlapping loops.
User Action: Examine the program logic to make sure that the FOR and NEXT statements for the inside loop lie entirely within the outside loop.

ILLMATOPE, illegal matrix operation
Explanation: ERROR---The program attempts matrix division. The operation is treated as a MAT multiply, and the compilation continues.
User Action: Remove the attempted matrix division. BASIC does not support this operation.

ILLMCHPDP, illegal passing mechanism on PDP--11s
Explanation: INFORMATION---This error is reported only when the /FLAG=BP2COMPATIBILITY qualifier is in effect. A parameter list contains a BY clause that is invalid in PDP--11 BASIC-PLUS-2, for example, specifying BY DESC for parameters that are not entire arrays or strings.
User Action: See the Compaq BASIC for OpenVMS Alpha and VAX Systems Reference Manual for allowable BASIC-PLUS-2 parameter-passing mechanisms.

ILLMIDLEN, illegal MID assignment length
Explanation: ERROR---The value of the length in the MID statement is either greater than the length of the string or less than or equal to zero.
User Action: Correct the length to be between 1 and the length of the string.

ILLMIDSTRT, illegal MID starting value
Explanation: ERROR---The starting value in the MID statement is less than or equal to zero.
User Action: Correct the starting value to be greater than or equal to one.

ILLMODMIX, illegal mode mixing
Explanation: ERROR---The program contains string and numeric operands in the same operation.
User Action: Change the expression so that it contains either string or numeric operands, but not both.

ILLMULDEF, illegal multiple definition of name <name>
Explanation: ERROR---The program uses the same name for:

- More than one variable
- A variable and a MAP
- A variable and a COMMON
- A MAP and COMMON

User Action: Use unique names for variables, COMMONs, and MAPs.

ILLMULOPT, OPTIONAL cannot be specified more than once
Explanation: ERROR---The OPTIONAL clause was specified more than once in the EXTERNAL statement for a single SUB or FUNCTION. This is not allowed because OPTIONAL implies that all parameters following it are optional.
User Action: Fix the EXTERNAL statement so that it has at most one OPTIONAL clause per SUB or FUNCTION.

ILLNESDEF, illegally nested DEFs
Explanation: ERROR---The program contains a DEF function block within another DEF function block.
User Action: Remove the inner DEF block. A DEF cannot contain another DEF.

ILLOPEARG, illegal operation for argument
Explanation: ERROR---The program performs an operation that is inconsistent with the data type of the arguments, for example, an arithmetic operation on variables of the RFA data type.
User Action: Remove the operation or change the data type of the arguments.

ILLOPTBAS, illegal OPTION BASE value
Explanation: INFORMATION---A program compiled with the /ANSI_STANDARD qualifier contains an OPTION BASE statement that specifies a value other than 0 or 1.
User Action: Change the OPTION BASE statement to specify either 0 or 1.

ILLQUACOM, illegal qualifier combination
Explanation: ERROR---In the VAX BASIC Environment, you specified an illegal combination of qualifiers, such as COMPILE/NOSHOW=CDD.
User Action: Issue the command again, using a valid combination of qualifiers.

ILLSTROPE, illegal string operator
Explanation: ERROR---The program specifies an invalid string operation, for example, A$ = B$ -- C$.
User Action: Replace the invalid operator.

ILLUSAFIE, illegal usage of FIELDed variable
Explanation: ERROR---A MAT statement operates on an element of a string array that appears in a FIELD statement.
User Action: Remove the array from the MAT statement.

ILLUSEUNA, illegal use of unary operator
Explanation: ERROR---A compiler directive contains an invalid lexical expression, for example, %IF 1 NOT 2.
User Action: Correct the invalid lexical expression.

ILLWAIVAL, WAIT value must be in the range 0 to 255, inclusive
Explanation: ERROR---An integer expression was specified on a WAIT clause that is less than 0 or greater than 255.
User Action: Specify an integer expression from 0 to 255.

IMMMODOPE, immediate mode operation requires storage allocation
Explanation: ERROR---An immediate mode statement attempted to allocate storage, for example, to create a new variable.
User Action: None. You cannot create new storage in immediate mode.

IMMNOTANS, immediate mode not valid when ANSI
Explanation: ERROR---An immediate mode statement was typed when in ANSI mode.
User Action: None.

IMPCNTNOT, implied continuation not allowed
Explanation: ERROR---The program contains an implied continuation line after a statement that does not allow implicit continuation, for example, a DATA statement.
User Action: Use an ampersand (&) to continue the statement.

IMPDECILL, implicit declaration of <name> illegal in immediate mode
Explanation: ERROR---A new variable was named in an immediate mode statement after a STOP, for example, PRINT B after a STOP in a program that has no variable named B.
User Action: None. You cannot create new variables in immediate mode after a STOP statement.

IMPDECNOT implied declaration not allowed for <name> with /EXPLICIT
Explanation: ERROR---A program compiled with the /TYPE=EXPLICIT qualifier contains an implicitly declared variable.
User Action: Declare the variable explicitly or compile the program without the /TYPE=EXPLICIT qualifier.

INACODFOL, inaccessible code follows line <n> statement <m>
Explanation: WARNING---The compiler has detected code that will never be executed, for example, a multistatement line whose first statement is a GOTO, EXIT, ITERATE, RESUME, or RETURN. (VAX BASIC only)
User Action: Review the program to determine if the code should be executed. If you determine the code should be executed, then you should revise the program flow logic accordingly. Otherwise, the code is unnecessary and you may want to remove it. In the case of the GOTO, EXIT, ITERATE, RESUME, or RETURN statements, make sure that these statements are the only statements on the line, or the last statement on a multistatement line.

INCDIRSYN, INCLUDE directive syntax error
Explanation: ERROR---A %INCLUDE directive either is not followed by a quoted string or incorrectly uses the %FROM %CDD or %FROM %LIBRARY clause.
User Action: Supply either a quoted string or the correct syntax for the %FROM %CDD or %FROM %LIBRARY clause.

INCFUNUSA, inconsistent function usage for function <name>
Explanation: ERROR---The parameter list in a DEF function invocation contains a string where the function expected a number, or vice versa. This message is issued only when the invocation occurs before the DEF statement in the program.
User Action: Supply a correct parameter in the function invocation or correct the parameter list in the DEF.

INCRMSERR, INCLUDE directive RMS error number <number>
Explanation: ERROR---A %INCLUDE directive caused an RMS error when accessing the specified file.
User Action: Take action based on the reported RMS error number.

INCSUBUSE, inconsistent subscript use for <array-name>
Explanation: ERROR---The number of subscripts in an array reference does not match the number of subscripts specified when the array was created.
User Action: Specify the same number of subscripts.

INIOUTRAN, initial value must be within the specified range
Explanation: ERROR---The specified initial value is not within the range specified in the RANGE clause.
User Action: Change either the initial value or the range values so that the initial value falls within the range.

INPPROMUS, input prompt must be a string constant
Explanation: ERROR---An INPUT, LINPUT, or INPUT LINE statement list contains a numeric constant immediately following the statement.
User Action: Remove the numeric constant. You can specify only a string constant immediately after an INPUT, LINPUT, or INPUT LINE statement.

INSERTB, assuming <keyword> before <keyword>
Explanation: ERROR---The program contains a syntax error. BASIC assumes a keyword is missing and continues compilation under that assumption so that other errors can be detected. The actual program line remains unchanged and no object file is produced.
User Action: Examine the line carefully to discover the error. Change the program line to correct the syntax error.

INSERTM, assuming <keyword> to match <keyword>
Explanation: ERROR---The program contains a syntax error. BASIC assumes a keyword is misspelled and continues compilation under that assumption so that other errors can be detected. The actual program line remains unchanged and no object file is produced.
User Action: Examine the line carefully to discover the error. Change the program line to correct the syntax error.

INSSPADYN, insufficient space for MAP DYNAMIC variable in MAP <name>
Explanation: ERROR---A variable named in a MAP DYNAMIC statement is larger than the MAP, for example, an HFLOAT variable in a MAP that is only four bytes long.
User Action: Increase the size of the MAP so that it is large enough to hold the largest member.

INTCODERR, an internal coding error has been detected. Submit an SPR.
Explanation: ERROR---An error has been detected in the BASIC compiler.
User Action: Please submit a software problem report (SPR) with the source code of a small program that produces this error.

INTCONEXC, integer constant exceeds machine integer size
Explanation: ERROR---The value specified in a DECLARE CONSTANT statement exceeds the largest allowable value for an integer. The maximum is 2,147,483,647.
User Action: Supply a value in the valid range.

INTCONREQ, integer constant required
Explanation: ERROR---The program contains a noninteger named constant in a context that requires an integer. For example:

Previous | Next | Contents | Index