Microsoft KB Archive/86715

= FIX: SELECT on Characters Greater Than ASCII 127 Fails =

Article ID: 86715

Article Last Modified on 10/23/2003

-

APPLIES TO


 * Microsoft FORTRAN Compiler 5.1
 * Microsoft FORTRAN Compiler 5.1

-



This article was previously published under Q86715



SYMPTOMS
Code compiled that contains a SELECT CASE block which compares a CHARACTER test expression against a case which is higher than 127 in the ASCII table may produce incorrect results.



CAUSE
When the compiler generates the code for the comparison of the CHARACTER test expression against the high ASCII constant it produces an incorrect comparison against a negative number which will always fail.



RESOLUTION
When comparing against ASCII values greater than 128, use integers for the comparison and convert the test expression from CHARACTER to INTEGER using the ICHAR intrinsic function.



STATUS
Microsoft has confirmed this to be a problem in FORTRAN version 5.1. This problem was corrected in FORTRAN PowerStation, version 1.0.



MORE INFORMATION
The following code can be used to reproduce the problem:

Sample Code #1
CHARACTER A     A = char(128) SELECT CASE (A) CASE (' ') ! insert ASCII 128 in the quotes using ALT+KEYPAD 128 WRITE (*,*) 'High ASCII (128)' CASE DEFAULT WRITE (*,*) 'Failed Test' END SELECT END The following code demostrates the solution:

Sample Code #2
CHARACTER A     A = char(128) SELECT CASE (Ichar(A)) CASE (128) WRITE (*,*) 'High ASCII (128)' CASE DEFAULT WRITE (*,*) 'Failed Test' END SELECT END

Additional query words: 5.10 buglist5.10 fixlist1.00

Keywords: kbfix KB86715

-

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

© Microsoft Corporation. All rights reserved.