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



The information in this article applies to:

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

This article was previously published under Q86062

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
				

Modification Type:MajorLast Reviewed:12/1/2003
Keywords:kbfix KB86062