FIX: INDEX Function w/ Concatenation Yields Errors

ID: Q85302


The information in this article applies to:
  • Microsoft FORTRAN for MS-DOS, versions 4.0, 4.01, 4.1, 5.0, 5.1
  • Microsoft FORTRAN for OS/2, versions 4.1, 5.0, 5.1


SYMPTOMS

A program compiled with Microsoft FORTRAN version 4.0, 4.01, 4.1, 5.0, or 5.1 that contains the INDEX intrinsic function can generate incorrect results or hang the machine while running under MS-DOS. Under similar circumstances, the program may produce a protection violation while running under OS/2. This problem may occur when one of the parameters to the INDEX intrinsic function contains a string concatenation with a substring that is indexed with a variable. Changing the compiler options has no effect.


RESOLUTION

To resolve the problem, use a temporary string variable for the string concatenation prior to the INDEX call.


STATUS

Microsoft has confirmed this to be a problem in Microsoft FORTRAN versions 4.0, 4.01, 4.1, 5.0, and 5.1. This problem was corrected in FORTRAN PowerStation, version 1.9.


MORE INFORMATION

Sample Code 1

The following code reproduces the problem:

      character*1  a,  b
      a = '1'
      b = 'b'
      L = 1
      j = index('ab'//a(1:L),b)  !variable substring concatenation
      print*, j
      end 

Sample Code 2

The following code does not cause the problem:

      character*1  a, b
      character*10 c

      a = '1'
      b = 'b'
      L = 1
      c = 'ab'//a(1:L)  !variable stores substring concatenation.
      j = index(c,b)    !variable used in INDEX statement.
      print*, j
      end 

Additional query words: 4.00 4.10 5.00 5.10 buglist4.00 buglist4.01 buglist4.10 buglist5.00 buglist5.10 fixlist1.00

Keywords :
Version : :4.0,4.01,4.1,5.0,5.1
Platform :
Issue type :


Last Reviewed: November 3, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.