Q58924: RUN Inside ON ERROR Handler Causes "Press Any Key" in EXE
Article: Q58924 Product(s): See article Version(s): 4.00 4.00b 4.50 Operating System(s): MS-DOS Keyword(s): ENDUSER | SR# S900201-75 buglist4.00 buglist4.00b buglist4.50 | mspl13_basic Last Modified: 26-FEB-1990 Using a RUN statement to run a file from inside an error-handling routine causes the message "press any key to return to system" to be displayed before passing control to the new program. This problem occurs in compiled EXE files only; the QuickBASIC QB.EXE environment transfers control without any message. Use one of the following to work around the problem: 1. Use CHAIN instead of RUN. 2. To restart the same program, use RUN without a filename. 3. RESUME to a line that executes the RUN statement. Microsoft has confirmed this to be a problem in Microsoft QuickBASIC Versions 4.00, 4.00b, and 4.50, and in Microsoft BASIC Compiler Versions 6.00 and 6.00b for MS-DOS and MS OS/2 (buglist6.00, buglist6.00b). This problem was corrected in Microsoft BASIC Professional Development System (PDS) Version 7.00 (fixlist7.00). The following code example displays the "press any key..." message when run in EXE form. The three workarounds mentioned above are each listed in comments. 'A.BAS compile and link commands: ' BC /E A; ' LINK A; ON ERROR GOTO handle: PRINT "Before error" IF INKEY$ <> CHR$(27) THEN ERROR 100 END handle: PRINT "In error" 'CHAIN "a" 'Workaround #1 'RUN 'Workaround #2 'RESUME 110 'Workaround #3 110 RUN "a"
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.