Microsoft KB Archive/85302

= FIX: INDEX Function w/ Concatenation Yields Errors =

Article ID: 85302

Article Last Modified on 12/1/2003

-

APPLIES TO


 * Microsoft FORTRAN Compiler 4.0
 * Microsoft FORTRAN Compiler 4.01
 * Microsoft FORTRAN Compiler 4.1
 * Microsoft FORTRAN Compiler 5.0
 * Microsoft FORTRAN Compiler 5.1
 * Microsoft FORTRAN Compiler 4.1
 * Microsoft FORTRAN Compiler 5.0
 * Microsoft FORTRAN Compiler 5.1

-



This article was previously published under Q85302



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.



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: kbfix KB85302

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.