FIX: Nested $IF Statements With $ELSE Fail

ID: Q84164

5.10 1.00 1.00a | 5.10 | 1.00 4.00

MS-DOS          | OS/2 | WINDOWS NT

The information in this article applies to:

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 reference words: 5.10 1.00 1.00a KBCategory: KBSubcategory: FLIss
Keywords          : kberrmsg kbLangFortran 
Version           : 5.10 1.00 1.00a | 5.10 | 1.00 4.
Platform          : MS-DOS NT OS/2 WINDOWS
Solution Type     : kbfix

Last Reviewed: May 23, 1998