KnowledgeBase Archive

An Archive of Early Microsoft KnowledgeBase Articles

View on GitHub

Q32968: "Type Mismatch" Using TAB() Between PRINT USING Variables

Article: Q32968
Product(s): See article
Version(s): 4.00 4.00b
Operating System(s): MS-DOS
Keyword(s): ENDUSER | buglist4.00 buglist4.00b fixlist4.50 B_BasicCom | mspl13_basic
Last Modified: 22-JAN-1990

When using the TAB function between variables in the following PRINT
USING and LPRINT USING statements, a "Type Mismatch" error displays in
the QB.EXE Version 4.00 or 4.00b environment:

   PRINT USING "$$##.##";x;TAB(10);z
   LPRINT USING "$$##.##";x;TAB(10);z

However, when run as an .EXE program, the above statements print
successfully. They also run correctly in QuickBASIC Version 3.00,
either in the editor or as an .EXE program.

Microsoft has confirmed this to be a problem in QuickBASIC Versions
4.00 and 4.00b and in the QuickBASIC editor provided with Microsoft
BASIC Compiler Versions 6.00 and 6.00b for MS-DOS (buglist6.00,
buglist6.00b). This problem was corrected in QB.EXE in QuickBASIC
Version 4.50 and does not occur in the QBX.EXE environment of
Microsoft BASIC Professional Development System (PDS) Version 7.00
(fixlist7.00).

Note: The documentation for PRINT USING and LPRINT USING does not say
whether TAB is legal in the PRINT USING expressionlist. TAB should be
avoided in PRINT USING statements because compatibility with future
Microsoft BASIC versions cannot be guaranteed.

The best workaround for the above problem is to avoid using the TAB
function in the PRINT USING or LPRINT USING statement, as shown in the
following examples:

1. To output at a desired column, use spaces between the desired
   format strings, instead of using the TAB function, as follows:

      x = 12.34 : z = 56.78
      PRINT USING"$$##.##         $$##.##";x;z

2. To position the cursor at a desired column, use the LOCATE
   statement before executing the PRINT USING statement, as in the
   following example:

      x = 12.34: z = 56.78
      LOCATE 2, 1
      PRINT USING "$$##.##"; x
      LOCATE 2, 10
      PRINT USING "$$##.##"; z

Note: When you type the following statement in QB.EXE Versions 4.00 or
4.00b, the editor automatically inserts the missing semicolon in front
of z:

   PRINT USING "$$##.##";x;tab(10) z

The program then usually runs correctly (without getting a "Type
Mismatch" error) in QB.EXE.

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.