Microsoft KB Archive/39239
Article ID: 39239
Article Last Modified on 11/21/2006
This article was previously published under Q39239
When the program below concatenates more than 19 string variables together in one equation, the BC.EXE compiler can give a misleading error message at compile time.
To work around this problem, split up the concatenation line so that the program does two concatenations on separate lines.
Microsoft has confirmed this to be a bug in Microsoft QuickBasic versions 4.00, 4.00b, and 4.50 for MS-DOS; in Microsoft Basic Compiler versions 6.00 and 6.00b (buglist6.00, buglist6.00b) for MS-DOS and MS OS/2; and in Microsoft Basic Professional Development System (PDS) versions 7.00 and 7.10 (buglist7.00, buglist7.10) for MS-DOS and MS OS/2. We are researching this problem and will post new information here as it becomes available.
In QuickBasic versions 4.00 and 4.50 and Basic PDS 7.00, BC.EXE gives the following correct error message, but the message misleadingly points to the bottom of the next structure (IF..ENDIF, WHILE..WEND, or SELECT CASE) in the source file after the concatenation:
BC.EXE should point to the concatenation instead of to the end of the structure.
In QuickBasic version 4.00b and Microsoft Basic Compiler versions 6.00 and 6.00b for MS-DOS and OS/2, BC.EXE displays the following error message in a continuous stream; you must press CTRL+C or CTRL+BREAK to stop the compiler:
The following program will cause problems:
REM The line continuation character (_) is for display purposes REM only and should be removed when typing in the program. WHILE a$ = "" b$ = INKEY$ a$ = b$ + c$ + d$ + e$ + f$ + g$ + h$ + i$ + j$ + k$ + l$ _ + m$ + n$ + o$ + p$ + q$ + r$ + s$ + t$ + u$ WEND
The program can be changed as follows to correct the problem:
WHILE a$ = "" b$ = INKEY$ a$ = b$ + c$ + d$ + e$ + f$ + g$ + h$ + i$ + j$ + k$ + l$ a$ = a$ + m$ + n$ + o$ + p$ + q$ + r$ + s$ + t$ + u$ WEND
Additional query words: QuickBas BasicCom buglist4.00 buglist4.00b buglist4.50