Q37339: A Single-Precision Number as a File Number Causes "Overflow"
Article: Q37339
Product(s): See article
Version(s): 6.00 6.00b | 6.00 6.00b
Operating System(s): MS-DOS | OS/2
Keyword(s): ENDUSER | B_QuickBas | mspl13_basic
Last Modified: 2-FEB-1990
A program compiled with Microsoft BASIC Compiler Version 6.00 or
6.00b, or QuickBASIC Version 4.00 or 4.00b, generates an "Overflow"
error message if you are using a single-precision variable as the
number of a file to be opened.
This behavior does not occur in Microsoft QuickBASIC Version 4.50 for
MS-DOS or Microsoft BASIC Professional Development System (PDS)
Version 7.00 for MS-DOS and MS OS/2.
The following sample code demonstrates the problem. If the file number
"F" is redefined as an integer, the program works correctly. The
program also can be forced to work correctly using any of the
following alternatives:
1. By compiling with the /o, /d, /v, or /x compiler-option switches
2. By putting line numbers on affected lines
3. By deleting a few lines of code in the subroutine
Earlier versions of Microsoft QuickBASIC do not have this problem.
The following is an example:
DIM SHARED f9$(22, 9), id$(9), size%(9), fdr$(9)
CLS
f = 1
fi$ = "FILENAME.DAT"
CALL OPEN.ISAM(f, fi$)
END
SUB OPEN.ISAM (f, fid$) STATIC
OPEN "r", f, fid$, 256
FIELD #f, 256 AS f9$
fdr$(f) = SPACE$(256)
size%(f) = LOF(f) / 256
id$(f) = fid$
END SUB
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.