TITLE: OpenVMS VAXVMSI18N01_062 VAX V6.2 European Currency Symbols CRTL ECO Summary
Modification Date: 24-DEC-98
Modification Type: New Kit
NOTE: An OpenVMS saveset or PCSI installation file is stored
on the Internet in a self-expanding compressed file.
The name of the compressed file will be kit_name-dcx_vaxexe
for OpenVMS VAX or kit_name-dcx_axpexe for OpenVMS Alpha.
Once the file is copied to your system, it can be expanded
by typing RUN compressed_file. The resultant file will
be the OpenVMS saveset or PCSI installation file which
can be used to install the ECO.
Copyright (c) Compaq Computer Corporation 1998. All rights reserved.
OP/SYS: DIGITAL OpenVMS VAX
COMPONENT: Euro I18N Components
DEC C RTL
SOURCE: Compaq Computer Corporation
ECO INFORMATION:
ECO Kit Name: VAXVMSI18N01_062
ECO Kits Superseded by This ECO Kit: None
ECO Kit Approximate Size: 3150 Blocks
Kit Applies To: OpenVMS VAX V6.2
System/Cluster Reboot Necessary: No
Rolling Re-boot Supported: Not Applicable
Installation Rating: INSTALL_2
2 - To be installed on all systems running
the listed version(s) of OpenVMS and
using the following feature(s):
Euro currency sign
Kit Dependencies:
The following remedial kit(s) must be installed BEFORE
installation of this kit:
None
In order to receive all the corrections listed in this
kit, the following remedial kits should also be installed:
None
ECO KIT SUMMARY:
An ECO kit exists for the Euro I18N Components in the DEC C RTL on
OpenVMS VAX V6.2. This kit addresses the following problems:
o For OpenVMS V7.2, Euro I18N Components are shipped with
VMSI18N072 kit. The VAXVMSI18N01_062 kit brings the I18N Euro
support to OpenVMS V6.2.
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.
o There are two standard character sets which include Euro
sign:
+ ISO8859-15 (Latin 1)
+ 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.
o 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, VMSI18N062 is
for OpenVMS V6.2.
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:
##############
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'
$
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_062 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_062 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.
o The VAXVMSI18N01_062 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.
INSTALLATION NOTES:
The system does not need to be rebooted after this kit is installed.
All trademarks are the property of their respective owners.
This patch can be found at any of these sites:
Colorado Site
Georgia Site
European Site
Files on this server are as follows:
vaxvmsi18n01_062.README
vaxvmsi18n01_062.CHKSUM
vaxvmsi18n01_062.CVRLET_TXT
vaxvmsi18n01_062.a-dcx_vaxexe
|