DOCUMENT:Q297133 11-MAY-2001 [foxpro] TITLE :PRB: UPPER Function Operates on High-ASCII Characters PRODUCT :Microsoft FoxPro PROD/VER::3.0,3.0b,5.0,5.0a,6.0 OPER/SYS: KEYWORDS:kbvfp kbvfp300 kbvfp300b kbvfp500 kbvfp500a kbvfp500bug kbvfp500fix kbvfp600 kbXBase kb ====================================================================== ------------------------------------------------------------------------------- The information in this article applies to: - Microsoft Visual FoxPro for Windows, versions 3.0, 3.0b, 5.0, 5.0a, 6.0 ------------------------------------------------------------------------------- SYMPTOMS ======== When you use the UPPER function on strings that include high-ASCII characters, you may see unexpected changes. CAUSE ===== Visual FoxPro makes characters uppercase that are considered alphabetic by the ISALPHA function. ISALPHA is not font-dependent, so fonts that include symbol characters appear to behave incorrectly when strings that are displayed in them are run through the UPPER function. RESOLUTION ========== If you must use symbol characters in your uppercase strings, test each character and make it uppercase individually. lcOldFontName = _SCREEN.FontName lnOldFontSize = _SCREEN.FontSize _SCREEN.FontName = "FoxFont" _SCREEN.FontSize = 9 *!* 241 is the plus/minus character. lcMixedString = "Value is 500" + CHR(241) + "0.05%" ? lcMixedString ? UPPER(lcMixedString) && Displays box character lcUpperString = "" FOR i = 1 TO LEN(lcMixedString) lcCurrChar = SUBSTR(lcMixedString, i, 1) IF BETWEEN(lcCurrChar, "a", "z") lcCurrChar = UPPER(lcCurrChar) ENDif lcUpperString = lcUpperString + lcCurrChar ENDfor ? lcUpperString _SCREEN.FontName = lcOldFontName _SCREEN.FontSize = lnOldFontSize STATUS ====== This behavior is by design. MORE INFORMATION ================ To see all characters that are affected by UPPER, run the following code: _SCREEN.FontName = "Lucida Sans Unicode" CLEAR FOR i = 1 TO 255 IF CHR(i) != UPPER(CHR(i)) ? i, CHR(i), UPPER(CHR(i)) ENDif ENDfor NOTE: Change the FontName property to "FoxFont" to see the problem that is described in the "Symptoms" section. REFERENCES ========== (c) Microsoft Corporation 2001, All Rights Reserved. Contributions by Garrett Fitzgerald, Microsoft Corporation Additional query words: ====================================================================== Keywords : kbvfp kbvfp300 kbvfp300b kbvfp500 kbvfp500a kbvfp500bug kbvfp500fix kbvfp600 kbXBase kbGrpDSFox kbDSupport Technology : kbVFPsearch kbAudDeveloper kbVFP300 kbVFP300b kbVFP500 kbVFP600 kbVFP500a Version : :3.0,3.0b,5.0,5.0a,6.0 Issue type : kbprb ============================================================================= THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY. Copyright Microsoft Corporation 2001.