FIX: Errors F1002, F1901, R6000 Using Large Namelists
ID: Q65047
 
  | 
The information in this article applies to:
- 
Microsoft FORTRAN for MS-DOS, versions  5.0, 5.1
 
- 
Microsoft FORTRAN for OS/2, versions  5.0, 5.1
 
SYMPTOMS
In the code sample below, errors are produced when a READ operation is
performed on a namelist that contains more than 99 variables.
With FORTRAN version 5.0,
If the namelist contains         the following errors are produced
   100 - 106 variables           F10002: out of heap space
                                 R6000 - stack overflow
   107 - 117 variables           machine hangs in DOS during compile
                                 or protection violation under OS/2.
   118 + variables               F1901: program too large for memory 
If the READ in the code below is changed to a WRITE, the errors are
the same, except when the namelist contains 104 - 106 variables under
OS/2. In this case, the screen group running the compiler will hang.
With FORTRAN version 5.1
If the namelist contains         the following errors are produced
   108 - 115 variables           F1002: out of heap space
                                 R6000 - stack overflow
   116 - 118 variables           R6000 - stack overflow
   119 + variables               F1901: program too large for memory 
RESOLUTION
The workaround to this problem is to reduce the size of the namelist.
This can be accomplished by either splitting the namelist into
multiple smaller namelists or by grouping variables of similar type
together using arrays.
STATUS
Microsoft has confirmed this to be a problem in FORTRAN versions 5.0 and
5.1. This problem was corrected in FORTRAN PowerStation.
MORE INFORMATION
The following code will produce the errors:
        NAMELIST /test/ 
     * a001,a002,a003,a004,a005,a006,a007,a008,a009,a010
     *,a011,a012,a013,a014,a015,a016,a017,a018,a019,a020
     *,a021,a022,a023,a024,a025,a026,a027,a028,a029,a030
     *,a031,a032,a033,a034,a035,a036,a037,a038,a039,a040
     *,a041,a042,a043,a044,a045,a046,a047,a048,a049,a050
     *,a051,a052,a053,a054,a055,a056,a057,a058,a059,a060
     *,a061,a062,a063,a064,a065,a066,a067,a068,a069,a070
     *,a071,a072,a073,a074,a075,a076,a077,a078,a079,a080
     *,a081,a082,a083,a084,a085,a086,a087,a088,a089,a090
     *,a091,a092,a093,a094,a095,a096,a097,a098,a099,a100
     *,a101,a102,a103,a104,a105,a106,a107,a108,a109,a110
     *,a111,a112,a113,a114,a115,a116,a117,a118,a119,a120
      READ (*,test)
      END 
The following code uses an array instead of individual variables:
      real a(120)
      namelist/test/ a
      read (*,test)
      end 
Additional query words: 
5.00 5.10 
Keywords          : 
Version           : :5.0,5.1
Platform          : 
Issue type        :