ECO NUMBER: VAXVMSI18N01_071 ----------- PRODUCT: OpenVMS VAX Operating System -------- UPDATED PRODUCT: OpenVMS VAX Operating System 7.1 ---------------- APPRX BLCK SIZE: 1890 ---------------- COVER LETTER 1 KIT NAME: VAXVMSI18N01_071 2 KITS SUPERSEDED BY THIS KIT: None 3 KIT DEPENDENCIES: 3.1 The following remedial kit(s) must be installed BEFORE installation of this, or any required kit: None 3.2 In order to receive all the corrections listed in this kit, the following remedial kits should also be installed: None 4 KIT DESCRIPTION: 4.1 Version(s) of OpenVMS to which this kit may be applied: OpenVMS VAX V7.1 4.2 Files Provided o [SYS$I18N_LOCALE]DA_DK_ISO8859-1-EURO (Danish Euro) o [SYS$I18N_LOCALE]DE_CH_ISO8859-1-EURO (Swiss German Euro) o [SYS$I18N_LOCALE]DE_DE_ISO8859-1-EURO (German Euro) o [SYS$I18N_LOCALE]EN_GB_ISO8859-1-EURO (Great Britain Euro) o [SYS$I18N_LOCALE]EN_US_ISO8859-1-EURO (U.S.A Euro) o [SYS$I18N_LOCALE]ES_ES_ISO8859-1-EURO (Spanish Euro) o [SYS$I18N_LOCALE]FI_FI_ISO8859-1-EURO (Finnish Euro) o [SYS$I18N_LOCALE]FR_BE_ISO8859-1-EURO (Belgian French Euro) o [SYS$I18N_LOCALE]FR_CA_ISO8859-1-EURO (Canadian French Euro) -- COVER LETTER -- Page 2 21 December 1998 o [SYS$I18N_LOCALE]FR_CH_ISO8859-1-EURO (Swiss French Euro) o [SYS$I18N_LOCALE]FR_FR_ISO8859-1-EURO (French Euro) o [SYS$I18N_LOCALE]IS_IS_ISO8859-1-EURO (Icelandic Euro) o [SYS$I18N_LOCALE]IT_IT_ISO8859-1-EURO (Italian Euro) o [SYS$I18N_LOCALE]NL_BE_ISO8859-1-EURO (Belgian Dutch Euro) o [SYS$I18N_LOCALE]NL_NL_ISO8859-1-EURO (Dutch Euro) o [SYS$I18N_LOCALE]NO_NO_ISO8859-1-EURO (Norwegian Euro) o [SYS$I18N_LOCALE]PT_PT_ISO8859-1-EURO (Portuguese Euro) o [SYS$I18N_LOCALE]SV_SE_ISO8859-1-EURO (Swedish Euro) o [SYS$I18N_ICONV]ISO8859-1-EURO_UCS-2.ICONV (ISO8859-1-EURO TO UCS-2) o [SYS$I18N_ICONV]ISO8859-1-EURO_UCS-4.ICONV (ISO8859-1-EURO TO UCS-4) o [SYS$I18N_ICONV]ISO8859-1-EURO_UTF-8.ICONV (ISO8859-1-EURO UTF-8) o [SYS$I18N_ICONV]UCS-2_ISO8859-1-EURO.ICONV (UCS-2 TO ISO8859-1-EURO) o [SYS$I18N_ICONV]UCS-4_ISO8859-1-EURO.ICONV (UCS-4 TO ISO8859-1-EURO) o [SYS$I18N_ICONV]UTF-8_ISO8859-1-EURO.ICONV (UTF-8 TO ISO8859-1-EURO) o [SYS$I18N_ICONV]ISO8859-15_UCS-2.ICONV (ISO8859-15 TO UCS-2) o [SYS$I18N_ICONV]ISO8859-15_UCS-4.ICONV (ISO8859-15 TO UCS-4) o [SYS$I18N_ICONV]ISO8859-15_UTF-8.ICONV (ISO8859-15 TO UTF-8) o [SYS$I18N_ICONV]UCS-2_ISO8859-15.ICONV (UCS-2 TO ISO8859-15) o [SYS$I18N_ICONV]UCS-4_ISO8859-15.ICONV (UCS-4 TO ISO8859-15) o [SYS$I18N_ICONV]UTF-8_ISO8859-15.ICONV (UTF-8 TO ISO8859-15) -- COVER LETTER -- Page 3 21 December 1998 5 NEW FUNCTIONALITY ADDRESSED IN THE VAXVMSI18N01_071 KIT o For OpenVMS V7.2, Euro I18N Components are shipped with VMSI18N072 kit. The VAXVMSI18N01_071 kit brings the I18N Euro support to OpenVMS V7.1. Euro I18N Components from the current kit are aimed at applications based on X/Open internationalization model according to which currency and international currency symbols are retrieved at run-time from the current program's locale using the C Run-Time Library functions. The primary objective of this kit is to ease the conversion to the Euro currency sign, for those applications which are currently using locales based on the ISO8859-1 (Latin-1) character set. This is because ISO8859-1 is the character set used by most (if not all) countries affected by Euro. 5.1 ISO8859-1-Euro Character Set There are two standard character sets which include Euro sign: o ISO8859-15 (Latin 1) o Unicode. ISO8859-15 is similar to ISO8859-1, but not identical. The problem with the ISO8859-15 character set is that it redefines not only the 0xa4 codepoint, which is defined as CURRENCY SIGN in ISO8859-1 and as EURO SIGN in ISO8859-15, but also a number of other characters. If an ISO8859-1 - based application switches to ISO8859-15, it can result in different behavior (output, strings collation, etc.) not only for the currency symbol, which is expected, but also for those characters which are defined differently in ISO8859-1 and ISO8859-15. To address this compatibility problem, COMPAQ introduced a proprietary character set: ISO8859-1-Euro which is the same as ISO8859-1 except for the 0xa4 codepoint which is defined as EURO SIGN in ISO8859-1-Euro, the same definition as that in ISO8859-15. Since ISO8859-1-Euro and ISO8859-1 differ only by the 0xa4 codepoint, for a ISO8859-1 - based application, a switch to the ISO8859-1-Euro character set means a change in the currency symbol, and nothing else. -- COVER LETTER -- Page 4 21 December 1998 5.2 Euro Locales Applications following the X/Open internationalization model select character sets through locales. Each locale is based on a particular character set. By setting a current programs locale via a call to the setlocale() C Run-Time Library function, the application sets its execution character set to that the locale is based on. Beginning with OpenVMS V6.2, OpenVMS provides the following set of locales based on the ISO8859-1character set: DA_DK_ISO8859-1 (Danish) DE_CH_ISO8859-1 (Swiss German) DE_DE_ISO8859-1 (German) EN_GB_ISO8859-1 (Great Britain) EN_US_ISO8859-1 (U.S.A) ES_ES_ISO8859-1 (Spanish) FI_FI_ISO8859-1 (Finnish) FR_BE_ISO8859-1 (Belgian French) FR_CA_ISO8859-1 (Canadian French) FR_CH_ISO8859-1 (Swiss French) FR_FR_ISO8859-1 (French) IS_IS_ISO8859-1 (Icelandic) IT_IT_ISO8859-1 (Italian) NL_BE_ISO8859-1 (Belgian Dutch) NL_NL_ISO8859-1 (Dutch) NO_NO_ISO8859-1 (Norwegian) PT_PT_ISO8859-1 (Portuguese) SV_SE_ISO8859-1 (Swedish) The locales above are shipped in the VMSI18N0nn kit where nn indicates the version of OpenVMS. For example, VMSI18N071 is for OpenVMS V7.1. What the Euro I18N Components kit adds to the OpenVMS I18N infrastructure is a "shadow" set of locales based on the ISO8859-1-Euro character set. Throughout this document, locales based on the ISO8859-1-Euro character set are referred to as Euro locales. For each ISO8859-1 based locale, the present kit adds a corresponding Euro locale. The difference between a "non-Euro" locale and its Euro counterpart is not only the character set the locale is based on; the locales also provide different definitions for the currency_symbol and int_curr_symbol items from the LC_MONETARY category. While a "non-Euro" locale defines currency and international currency symbols in a country-specific manner, all Euro locales define the currency symbol to be the Euro sign and the international currency symbol as a "EUR" string. For example, the EN_GB_ISO8859-1 locale contains the following definitions: -- COVER LETTER -- Page 5 21 December 1998 ############## LC_MONETARY ############## int_curr_symbol "GBP" currency_symbol "£" while its EN_GB_ISO8859-1-EURO counterpart has the following: ############## LC_MONETARY ############## int_curr_symbol "EUR" currency_symbol "" The only thing the application using the strfmon() C Run-Time Library function for monetary values needs to do, in order to switch to Euro, is to set the Euro locale. This is shown in the following example: TEST.C ====== #include #include #include main() { char buffer[80]; ssize_t res; double amount = 1.0; /* one Euro */ /* ** set locale according to the setting ** of the environment variables */ if ( setlocale(LC_ALL,"" ) == NULL ) perror("cannot set locale"); */ ** call strfmon using the %i format specifier ** to get international currency symbol */ res = strfmon(buffer, sizeof(buffer), "%i", amount); if ( res == -1 ) perror("strfmon failed"); else printf("output from strfmon: '%s'\n", buffer); } $ define/nolog lang EN_GB_ISO8859-1 $ r test output from strfmon: '+GBP 1.00' $ define/nolog lang EN_GB_ISO8859-1-EURO $ r test output from strfmon: '+EUR 1.00' $ -- COVER LETTER -- Page 6 21 December 1998 Note that strfmon() is not the only function which retrieves a currency symbol from the current program's locale; nl_langinfo(CRNCYSTR) can also be used to get a locale-specific currency symbol. The LOCALE SHOW utility can be used to display information about a particular locale. For example: $ define/nolog lang FR_FR_ISO8859-1 $ locale show value int_curr_symbol "FRF" $ define/nolog lang FR_FR_ISO8859-1-EURO $ locale show value int_curr_symbol "EUR" $ The VAXVMSI18N01_071 kit provides the following set of Euro locales: a Euro locale for each ISO8859-1 - based locale: DA_DK_ISO8859-1-EURO (Danish Euro) DE_CH_ISO8859-1-EURO (Swiss German Euro) DE_DE_ISO8859-1-EURO (German Euro) EN_GB_ISO8859-1-EURO (Great Britain Euro) EN_US_ISO8859-1-EURO (U.S.A Euro) ES_ES_ISO8859-1-EURO (Spanish Euro) FI_FI_ISO8859-1-EURO (Finnish Euro) FR_BE_ISO8859-1-EURO (Belgian French Euro) FR_CA_ISO8859-1-EURO (Canadian French Euro) FR_CH_ISO8859-1-EURO (Swiss French Euro) FR_FR_ISO8859-1-EURO (French Euro) IS_IS_ISO8859-1-EURO (Icelandic Euro) IT_IT_ISO8859-1-EURO (Italian Euro) NL_BE_ISO8859-1-EURO (Belgian Dutch Euro) NL_NL_ISO8859-1-EURO (Dutch Euro) NO_NO_ISO8859-1-EURO (Norwegian Euro) PT_PT_ISO8859-1-EURO (Portuguese Euro) SV_SE_ISO8859-1-EURO (Swedish Euro) The VAXVMSI18N01_071 kit provides binary locale files along with locale source files and a ISO8859-1-EURO.CMAP character set description file (a.k.a cmap file). If a Euro locale needs to be customized, the locale source file can be modified and the new binary locale file can be created using the LOCALE COMPILE utility. See the DEC C Run-Time Library Utilities Reference Manual for format of the locale source file and the description of the LOCALE COMPILE utility. In the future, COMPAQ is planning to add Unicode-based Euro locales and locales based on the ISO8859-15 character set. -- COVER LETTER -- Page 7 21 December 1998 5.3 New Codeset Converters The VAXVMSI18N01_071 kit provides Unicode codeset converters for both the proprietary ISO8859-1-EURO character set and the standard ISO8859-15 character set. These codeset converters facilitate data exchange between OpenVMS systems and systems using Unicode based and ISO8859-15 based solutions for Euro. The codeset converters convert data coded in ISO8859-1-EURO and ISO8859-15 character sets to/from any flavor of Unicode encoding supported by OpenVMS, as follows: ICONV files and corresponding codeset conversions ------------------------------------------------- ICONV file codeset conversion --------------- ----------------------- ISO8859-1-EURO_UCS-2.ICONV from ISO8859-1-EURO to UCS-2 ISO8859-1-EURO_UCS-4.ICONV from ISO8859-1-EURO to UCS-4 ISO8859-1-EURO_UTF-8.ICONV from ISO8859-1-EURO to UTF-8 UCS-2_ISO8859-1-EURO.ICONV from UCS-2 to ISO8859-1-EURO UCS-4_ISO8859-1-EURO.ICONV from UCS-4 to ISO8859-1-EURO UTF-8_ISO8859-1-EURO.ICONV from UTF-8 to ISO8859-1-EURO ISO8859-15_UCS-2.ICONV from ISO8859-15 to UCS-2 ISO8859-15_UCS-4.ICONV from ISO8859-15 to UCS-4 ISO8859-15_UTF-8.ICONV from ISO8859-15 to UTF-8 UCS-2_ISO8859-15.ICONV from UCS-2 to ISO8859-15 UCS-4_ISO8859-15.ICONV from UCS-4 to ISO8859-15 UTF-8_ISO8859-15.ICONV from UTF-8 to ISO8859-15 The codeset converters can be used by DEC C Run-Time Library functions from the iconv family of functions or by ICONV CONVERT utility. See the DEC C Run-Time Library Utilities Reference Manual for the description of the ICONV CONVERT utility. 6 KIT INSTALLATION RATING: The following kit installation rating, based upon current CLD information, is provided to serve as a guide to which customers should apply this remedial kit. (Reference attached Disclaimer of Warranty and Limitation of Liability Statement) INSTALLATION RATING: 2 : To be installed by all customers using the following feature(s): Euro currency sign -- COVER LETTER -- Page 8 21 December 1998 7 INSTALLATION INSTRUCTIONS: Install this kit with the VMSINSTAL utility by logging into the SYSTEM account, and typing the following at the DCL prompt: @SYS$UPDATE:VMSINSTAL VAXVMSI18N01_071 [location of the saveset] The saveset location may be a tape drive, CD, or a disk directory that contains the kit saveset. No reboot is necessary after successful installation of the kit. Copyright (c) COMPAQ Computer Corporation, 1998 All Rights Reserved. Unpublished rights reserved under the copyright laws of the United States. The software contained on this media is proprietary to and embodies the confidential technology of COMPAQ Computer Corporation. Possession, use, or dissemination of the software and media is authorized only pursuant to a valid written license from COMPAQ Computer Corporation. DISCLAIMER OF WARRANTY AND LIMITATION OF LIABILITY THIS PATCH IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR PARTICULAR PURPOSE, OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED TO THE EXTENT PERMITTED BY APPLICABLE LAW. IN NO EVENT WILL COMPAQ BE LIABLE FOR ANY LOST REVENUE OR PROFIT, OR FOR SPECIAL, INDIRECT, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, WITH RESPECT TO ANY PATCH MADE AVAILABLE HERE OR TO THE USE OF SUCH PATCH.