KnowledgeBase Archive

An Archive of Early Microsoft KnowledgeBase Articles

View on GitHub

Q31301: Subscript Out of Range Can Hang .EXE without /d Debug Option

Article: Q31301
Product(s): See article
Version(s): 4.00 4.00b 4.50
Operating System(s): MS-DOS
Keyword(s): ENDUSER | | mspl13_basic
Last Modified: 28-DEC-1989

In an .EXE program compiled without the debug option (BC /d), a
reference to an out-of-range array element can hang the machine. This
occurs only in a compiled .EXE program.

The QB.EXE editor correctly reports the "subscript out of range" error
because the debug option is automatically active by default.

This information applies to QuickBASIC Versions 4.00, 4.00b, and 4.50,
to Microsoft BASIC Compiler Versions 6.00 and 6.00b for MS-DOS and
OS/2, and to Microsoft BASIC PDS Version 7.00 for MS-DOS and MS OS/2.

The "subscript out of range" error message is documented on Page 501
of the "Microsoft QuickBASIC: BASIC Language Reference."  The /d
(debug) option is documented on Page 210 of "Microsoft QuickBASIC:
Learning to Use."

When a program is compiled with the BC /d (debug) option, the error
will be reported at run time.

If the following program is compiled to an .EXE file without the BC /d
option, it will hang the machine at run time:

DIM x$(3)
OPEN "junk" FOR RANDOM AS 1 LEN = 200

FOR i% = 0 TO 10
FIELD 1, i% * 10 AS pad$, 10 AS x$(i%)
NEXT i%

FOR i% = 0 TO 10
LSET x$(i%) = "fld " + STR$(i%): PRINT x$(i%)
NEXT i%

THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Copyright Microsoft Corporation 1986-2002.