DOCERR: Code in Manual Incorrect: COMMON and EQUIVALENCE (87886)



The information in this article applies to:

  • Microsoft FORTRAN Compiler for MS-DOS 5.0
  • Microsoft FORTRAN Compiler for MS-DOS 5.1
  • Microsoft FORTRAN compiler for OS/2 5.0
  • Microsoft FORTRAN compiler for OS/2 5.1

This article was previously published under Q87886

SYMPTOMS

When compiled with Microsoft FORTRAN version 5.0 or 5.1 under MS-DOS or OS/2, the sample program given on page 132 of the "Microsoft FORTRAN Advanced Topics" version 5.0 manual and page 105 of the "Microsoft FORTRAN Advanced Topics" version 5.1 manual generates the following error:
error F2318: A, B : EQUIVALENCE: in different common blocks

CAUSE

The version 5.1 FORTRAN "Reference Manual" states:

An EQUIVALENCE statement cannot share memory between two different common blocks or between elements of the same common block.

The error F2318 is generated in this case because the sample code attempts to EQUIVALENCE the arrays A and B that belong to two different COMMON blocks.

RESOLUTION

To avoid this error, compile the code after removing either A or B or both the arrays from COMMON blocks.

MORE INFORMATION

The following code, which is incorrect, is from the "Microsoft FORTRAN Advanced Topics" manual:
      integer a(10,20), b(20,30)
      common /cba/a, /cbb/b
      equivalence (a(10,20), b(1,1))
      end
				
The following code illustrates the correct usage of EQUIVALENCE statement and common blocks:
      integer a(10,20), b(20,30)
      common /cba/ a
      equivalence (a(10,20), b(1,1))
      end
				

Modification Type:MajorLast Reviewed:12/1/2003
Keywords:KB87886