FIX: F1901 or Hang Compiling, NAMELIST Listed in Internal READ (69071)



The information in this article applies to:

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

This article was previously published under Q69071

SYMPTOMS

An attempt to compile an application in the MS-DOS operating system fails and the compiler generates the following message:
F1901: Program too large for memory
An attempt to compile the application in the OS/2 operating system fails and a protection violation occurs.

An attempt to compile the application with the High-Capacity Compiler, F1L.EXE, in the MS-DOS operating system fails and the computer hangs. An attempt to compile the application with the patched versions of F1.EXE and F1L.EXE fails with the same results as the unpatched version of each file.

CAUSE

The application contains an internal READ from a character variable into a NAMELIST.

RESOLUTION

To work around this problem, modify the source code to use an external READ to place character data into a NAMELIST. If necessary, store date from the application into a scratch file and read the data from the file into the NAMELIST.

STATUS

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

MORE INFORMATION

The following code example demonstrates this problem.

Sample Code #1

C Compile options needed: None

      CHARACTER*21 TEST /' &IN X=1 Y=5 Z=10 /'/ 
       NAMELIST /IN/ X, Y, Z
       READ(TEST, IN)
      END
				
The following code example demonstrates one method to work around this problem.

Sample Code #2

C Compile options needed: None

       OPEN(8, FILE = 'TEST.DAT')
       NAMELIST /IN/ X, Y, Z
       READ(8, IN)
       WRITE(*, IN)
       CLOSE(8)
       END
				

Date File TEST.DAT

&in
x=1
y=5
z=10
/ 
				
The following code example demonstrates another method to work around this problem.

Sample Code #3

C Compile options needed: None

       CHARACTER*21 TEST /' &IN X=1 Y=5 Z=10 /'/ 
       NAMELIST /IN/ X, Y, Z
       OPEN(8)
       WRITE(8, *) TEST
       REWIND(8)
       READ(8, IN)
       WRITE(*, IN)
       CLOSE(8)
       END
				

Modification Type:MajorLast Reviewed:10/23/2003
Keywords:kbfix KB69071