PRB: L1103 From DATA Initialization Beyond End of Array (88012)



The information in this article applies to:

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

This article was previously published under Q88012

SYMPTOMS

Compiling and linking code that contains a DATA statement that uses an implied DO-loop to initialize an array in a COMMON block and that implied DO-loop initializes beyond the end of the array may cause the following linker error:
fatal error L1103: attempt to access data outside segment bounds

CAUSE

The compiler is not issuing an error message when the DATA beyond the end of the array is being allocated. This causes the object module to contain data initialized past the end of the COMMON block and crossing a segment bound.

RESOLUTION

Make sure that all DATA statement initializations of data in COMMON blocks are within the bounds of the data as declared.

This is not a problem in FORTRAN PowerStation.

MORE INFORMATION

The following code can be used to demonstrate the problem.

Sample Code

      integer*4 test(1)
      common /comtest/ test
      data (test(i),i=1,2)/7,8/ 
      end
				

Modification Type:MajorLast Reviewed:10/23/2003
Keywords:KB88012