The B.08.30 release comes with a number of enhancements to the
Eloquence application environment:
The ENCODE$() and DECODE$() functions were added to encode a string
to or decode a string from utf-8 encoding.
For example:
DECODE$(ENCODE$("\u20ac"))
Characters not represented in the HP-Roman 8/9 character set are
decoded into the \uxxxx notation.
The ENCODING clause for the ASSIGN statement allows specifying
the encoding of sequential files.
For example:
ASSIGN #1 TO "TEST";ENCODING("utf-8")
The following encodings are supported:
- roman8
- iso-8859-1
- iso-8859-15
- utf-8
- utf-16 (utf-16le, utf-16be)
ERROR 19 is triggered if the encoding scheme is unsupported.
Any strings read from or written to the file are then decode
or encoded automatically. An utf-16 and utf-8 BOM (byte order marker)
is detected and skipped transparently.
The ENCODING clause for the PRINTER IS statement allows specifying
the encoding of printer output.
For example:
PRINTER IS "TEST",ENCODING("utf-8")
The following encodings are supported:
- roman8
- iso-8859-1
- iso-8859-15
- utf-8
ERROR 19 is triggered if the encoding scheme is unsupported.
The Eloquence screen buffer has limited support for displaying
Unicode characters, subject to limitations of the output device
and the current character set.
- A switch character 149 (0x95) changes the font encoding to Unicode
and any subsequent characters are understood as 8 bit unicode characters
(same as iso-8859-1).
- A sequence of \uxxxx (where xxxx is a 4 digit hex code) may be
used to display Unicode characters.
- A switch character 148 (0x94) changes the font back to Roman.
For example:
DISP CHR$(149)&"\u03a9"&CHR$(148)
This displays the "Greek Capital Letter Omega" (Ω) symbol.
The same methodology may be used with DLG objects that also
recognize the Unicode switch character.
It is currently not supported to enter Unicode characters outside
the HP-Roman 8/9 domain. Any unknown characters are returned as
question marks to indicate an invalid character.
The terminal handling was enhanced to support Unicode on all platforms
and allows for a more flexible way to specify the character set encoding.
On HP-UX and Linux the locale character set encoding defines the
character set encoding that is used by Eloquence. It must match the
terminal type.
Eloquence on Windows uses Unicode for the console output.
Eloquence terminal handling was enhanced to support the UTF-8 character
set encoding, in addition to HP-ROMAN8 and ISO-8859-1 and ISO-8859-15
character sets.
For some "known" terminal types the character set is fixed, for example
the HP-ROMAN8 character set is always used with 70092 terminals.
Otherwise, the character set of the locale (LANG or LC_CTYPE) is used
to define the character set encoding. This allows to use different
encodings with the same terminal type. For example, the xterm terminal
type may be used with various character sets.
The character set encoding is defined by the environment that is
referenced in the LANG and LC_CTYPE environment variable. The
locale -c charmap command may be used to output the character
set encoing for the locale.
$ LC_CTYPE=de_DE locale -c charmap
LC_CTYPE
ISO-8859-1
$ LC_CTYPE=de_DE@euro locale -c charmap
LC_CTYPE
ISO-8859-15
$ LC_CTYPE=de_DE.UTF-8 locale -c charmap
LC_CTYPE
UTF-8
This shows diffrent character set encodings used by different locales.
If the character set encoding supports the EURO symbol (utf-8 and
iso-8859-15) the "currency symbol" character is mapped to the EURO symbol.
Eloquence applications are now able to output unicode characters to
the screen or a dialog. It depends on the terminal capabilities to
what extent this is visible.
The new eloqcore
CRT configuration allows to configure terminal properties such as the
linedraw character mapping and, on Windows, the console font and colors.
The B.08.30 eqpcl utility was enhanced to support Unicode characters.
Input characters are converted to Unicode using the selected symbol set.
It depends on the selected font what glyphs are actually available.
The following symbol sets are supported as of B.08.30:
EC(# - select symbol set
8U = HP Roman-8 Symbol Set
4U = HP Roman-9 Symbol Set
10U = IBM Layout (PC-8) (code page 437) Default Symbol Set
12U = IBM Layout for Europe (PC-850) (code page 850)
18N = Unicode
8M = Math-8
19U = Windows 3.1 Latin 1
9E = Windows 3.1 Latin 2 (commonly used in Eastern Europe)
5T = Windows 3.1 Latin 5 (commonly used in Turkey)
579L = Wingdings Font
Support for the text parsing method command was added:
EC&t#P - text parsing method
0 - 1-byte
1 - 1-byte
83 - Unicode
1008 - UTF-8
Chosing the symbol set 18N implicitly sets text parsing to
UTF-8 (EC&t1008P).
Starting with Eloquence B.08.30, the Net.DLL, Odbc.DLL, RunSrv.DLL components
are linked to the eqdll shared library on all platforms.
We recommend to rebuild existing Eloquence DLLs using the Eloquence B.08.30
eqdll shared library.
HP-UX and Linux
Eloquence DLLs built with Eloquence B.08.30 are now recommended to use the
libeqdll.so shared library (libeqdll.sl for HP-UX PA-RISC).
The libeqdll.a static library is deprecated (still included for
backward compatibility but likely to be removed in a future Eloquence version).
To use the eqdll shared library in your project, use the linker
options below.
- Linux 64-bit
-Wl,-rpath,/opt/eloquence/8.3/lib64 \
-L /opt/eloquence/8.3/lib64 -leqdll
- Linux 32-bit
-Wl,-rpath,/opt/eloquence/8.3/lib \
-L /opt/eloquence/8.3/lib -leqdll
- HP-UX Itanium 64-bit
-L /opt/eloquence/8.3/lib/hpux64 -leqdll
- HP-UX Itanium 32-bit
-L /opt/eloquence/8.3/lib/hpux32 -leqdll
- HP-UX PA-RISC 2.0 64-bit
-L /opt/eloquence/8.3/lib/pa20_64 -leqdll
- HP-UX PA-RISC 2.0 32-bit
-L /opt/eloquence/8.3/lib/pa20_32 -leqdll
Windows
Eloquence DLLs built with Eloquence B.08.30 are now required to use the
eqdll.dll (32-bit) or eqdll64.dll (64-bit) shared library.
The eloqdll.lib static library is no longer available.
To use the eqdll shared library in your project, set the
-DDLLIF_SHARED compiler option and use the linker options below.
- Windows 64-bit
/link /machine:X64 (... more linker options ...) \
"C:\Program Files (x86)\Eloquence\8.3\lib64\eqdll64.lib"
- Windows 32-bit
/link /machine:IX86 (... more linker options ...) \
"C:\Program Files (x86)\Eloquence\8.3\lib\eqdll.lib"
|