FIX: F1001 regMD.c, Line 338; Huge Array as Array Index

ID: Q86062


The information in this article applies to:
  • Microsoft FORTRAN for MS-DOS, versions 4.0, 4.01, 4.1, 5.0, 5.1
  • Microsoft FORTRAN for OS/2, versions 4.1, 5.0, 5.1


SYMPTOMS

Using the Microsoft FORTRAN compiler versions 4.0, 4.01, 4.1, 5.0, and 5.1 under MS-DOS and versions 4.1, 5.0, and 5.1 under OS/2 to compile programs that contain concatenations of CHARACTER arrays where the array elements are specified using an element of a huge INTEGER array can generate the following error:

fatal error F1001: Internal Compiler Error
The compiler file varies as follows:
Version 5.1: (compiler file '@(#)regMD.c:1.9', line 338)

Version 5.0: (compiler file '@(#)regMD.c:1.8', line 338)

Versions 4.01 and 4.1: (compiler file '@(#)regMD.c:1.79', line 291)

Version 4.0: (compiler file '@(#)regMD.c:1.74', line 1304)


RESOLUTION

Assign the value of the huge index array to a temporary variable and use this variable in the concatenation statement.


STATUS

Microsoft has confirmed this to be a problem in Microsoft FORTRAN versions 4.0, 4.01, 4.1, 5.0, and 5.1 for MS-DOS and 4.1, 5.0, and 5.1 for OS/2. This problem was corrected in FORTRAN PowerStation, version 1.0.


MORE INFORMATION

Sample Code 1

The following code reproduces the problem:

       character*2 c
      character*1 c1(1), c2(1)
      integer*2   index(32769,1)

      c = c1(index(i,k))//c2(index(i,k))
      end 

Sample Code 2

The following code corrects the problem:

      character*2 c
      character*1 c1(1), c2(1)
      integer*2   index(32769,1), temp

      temp = index(i,k)          ! temporary variable temp
      c = c1(temp)//c2(temp)     ! eliminates the error
      end 

Additional query words: 4.00 4.10 5.00 5.10

Keywords :
Version : :4.0,4.01,4.1,5.0,5.1
Platform :
Issue type :


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