KnowledgeBase Archive

An Archive of Early Microsoft KnowledgeBase Articles

View on GitHub

Q37481: PRINT USING Statement Fails to Use Print Zones

Article: Q37481
Product(s): See article
Version(s): 4.00 4.00b 4.50
Operating System(s): MS-DOS
Keyword(s): ENDUSER | docerr B_BasicCom | mspl13_basic
Last Modified: 12-JAN-1990

The PRINT USING statement is not designed to print the values of an
expression list in the 14-character print zones. Instead, it ignores
the comma and treats it like a semicolon. In QuickBASIC Version 4.50,
the syntax checker correctly changes the comma to a semicolon.
However, several manuals (listed below) and the online help system
incorrectly state that the comma is syntactically legal.

The incorrect syntax for the PRINT USING statement is as follows:

   PRINT USING formatstring; expressionlist [{,|;}]

The incorrect definition for the PRINT USING statement is as follows:

   The position of each printed item is determined by the punctuation
   used to separate the items in the list. BASIC divides the line into
   print zones of 14 spaces each. In the expression list, a comma
   makes the next value print at the start of the next zone. A
   semicolon makes the next value print immediately after the last
   value.

This incorrect syntax or definition is given in each of the following
references:

1. Page 275 of the "Microsoft BASIC 7.0: BASIC Language Reference" for
   Microsoft BASIC PDS Version 7.00

2. Page 335 of the "Microsoft QuickBASIC 4.0: BASIC Language
   Reference" for QuickBASIC 4.00 and 4.00b

3. Page 287 of the "Microsoft QuickBASIC: BASIC Language Reference"
   for QuickBASIC 4.50

4. Page 335 of the "Microsoft BASIC Compiler 6.0: BASIC Language
   Reference" for Microsoft BASIC Compiler Versions 6.00 and 6.00b

5. The online help system for Microsoft QuickBASIC 4.50 under the
   entry for PRINT USING statement

6. The online help system for BASIC PDS 7.00 under the entry for the
   PRINT USING statement

The following is a code example that demonstrates that PRINT USING
treats commas as if they were semicolons. When run in the environment,
the code example will correctly substitute a semicolon between the
variables "a" and "b" for the comma:

   a=3.45
   b=5.23
   PRINT USING "##.##";a,b

The output is as follows:

   3.45 5.23

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.