FIX: Nested $IF Statements With $ELSE Fail

ID: Q84164


The information in this article applies to:
  • Microsoft FORTRAN for MS-DOS, version 5.1
  • Microsoft FORTRAN for OS/2, version 5.1
  • Microsoft FORTRAN PowerStation for MS-DOS, versions 1.0, 1.0a
  • Microsoft Fortran Powerstation 32 for Windows NT, version 1.0


SYMPTOMS

Compiling code that contains nested $IF compiler conditions with $ELSE clauses fails to produce the expected result. The compiler issues error:

error F2830: END missing
This error is generated because all of the source code following the $ELSE condition fails to be compiled.


CAUSE

When there is a $ELSE following a $ENDIF and the outer $IF condition is met making the $ELSE condition false the compiler fails to parse for any metacommands following the $ELSE including the $ENDIF that terminates the outer $IF block.


RESOLUTION

Do not use nested $IF metacommands with $ELSE clauses.


STATUS

Microsoft has confirmed this to be a problem in the products listed above. This problem was corrected in Microsoft FORTRAN PowerStation 32, version 4.0.


MORE INFORMATION

The following code reproduces the problem:

Sample code


$define first
      subroutine test
$if defined (first)
$if defined (second)
$endif
$else
$endif
      return
      end 

Additional query words: 5.10 1.00 1.00a

Keywords : kberrmsg kbLangFortran
Version : :1.0,1.0a,5.1
Platform : MS-DOS NT OS/2 WINDOWS
Issue type :


Last Reviewed: November 2, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.