Article: Q109874
Product(s): Microsoft Fortran Compiler
Version(s): 1.0,1.0a
Operating System(s):
Keyword(s): kbCompiler kbFL32 kbFortranPSkbbuglist kbfixlist
Last Modified: 24-MAR-2000
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft FORTRAN PowerStation for MS-DOS, versions 1.0, 1.0a
- Microsoft Fortran Powerstation 32 for Windows NT, version 1.0
-------------------------------------------------------------------------------
SYMPTOMS
========
A program that contains a simple arithmetic expression including constant out of
range may produce incorrect results. Using the -4Yb compiler option does not
give a run-time error on constants that are out of range even though it should.
CAUSE
=====
The constant folding algorithm (arithmetic performed at compile time) generates
0 (zero) for the variable out of range.
RESOLUTION
==========
Avoid using a simple constant expression that might be out of range. Use the
temporary variable for the intermediate results and then use this variable in
the expression. Compile the program with -4Yb and the appropriate run-time error
will be generated.
STATUS
======
Microsoft has confirmed this to be a problem in Microsoft FORTRAN PowerStation
32 for NT, version 1.0 and FORTRAN Powerstation for MS-DOS version 1.0 and 1.0a.
This is not a problem in Microsoft FORTRAN for MS-DOS, version 5.1, or FORTRAN
PowerStation 32, version 4.0.
MORE INFORMATION
================
Sample Code #1
--------------
c Compile options required: -4Yb does not affect the behavior
c The following code reproduces the problem.
i=2**50
write (*,*) i
end
Sample Code #2
--------------
c Compile options required: -4Yb
c The following code solves the problem and generates the following
c run-time error: run-time F6099: $DEBUG
c -INTEGER arithmetic overflow
j=50
i=2**j
write (*,*) i
end
Additional query words: 1.00 runtime run time
======================================================================
Keywords : kbCompiler kbFL32 kbFortranPS kbbuglist kbfixlist
Technology : kbAudDeveloper kbFortranSearch kbZNotKeyword2 kbZNotKeyword3 kbFORTRANPower32100NT kbFORTRANPower100DOS kbFORTRANPower100aDOS
Version : :1.0,1.0a
Issue type : kbbug
Solution Type : kbfix
=============================================================================