FIX: Incorrect F2128 Huge Segment Boundary Error (80101)



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 Q80101

SYMPTOMS

An attempt to compile an application in the OS/2 operating system fails and the compiler generates a protection violation. An attempt to compile the application in the MS-DOS operating system fails and the second pass of the compiler generates the following message:
error F2128: ~k.~~~ : huge array cannot be aligned to segment boundary
The "~" and "~~~" characters represent symbol characters high in the ASCII table.

CAUSE

The application contains a complicated combination of DATA statements, EQUIVALENCE statements, I/O statements, or array declarations.

RESOLUTION

Many minor code changes eliminate this error. In the code example, reducing the size of the I array below 131,072 bytes or removing the DATA statement, EQUIVALENCE statement, or an executable statement eliminates the error.

STATUS

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

MORE INFORMATION

Sample Code

C Compile options needed: None

      CHARACTER*12 NAME1
      INTEGER I(32769)
      INTEGER J

      EQUIVALENCE (I, J)
      DATA NAME1 /'OFFSET.DAT'/ 

1     FORMAT()
      WRITE (*, 1)
      WRITE (*, 1)
      OPEN (1, FILE = NAME1, ERR = 9999)
      READ (1, *, END = 9999, ERR = 9999)
      OPEN (1, FILE = NAME1, ERR = 9999)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
      WRITE (*, 1)
9999  END
				

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