All ESL products support the use and display of most singlebyte languages. Data can be displayed, accepted, and transmitted in all manners possible within an ESL application. There are versions of ESL that support doublebyte characters. In order to use the double-byte capabilities, you need the proper version of the operating system. Also, there are some items to be aware of and additions to the ESL syntax relating to DBCS.
ESL strings are manipulated on the basis of bytes, not characters. The ESL extract statement contains syntax to take a certain value; for example:
extract from String
take 6 NewString
where six is the value taken. Six refers to the number of bytes, not the number of characters. You will get a different number of characters from a double-byte string than from a single-byte string. The length of built-in function returns length in bytes, not characters. For example, a string with one DBCS character and one SBCS character has a length of three.
ESL will not adjust the positioning of block functions or cursor movements within a textual region. Syntax affecting text that splits the bytes of a double-byte character will ignore the bisected half of the double-byte character. This includes syntax such as:
•insert segment/block
•textual built-in function
Other functions for which ESL will not adjust the cursor position include:
•find
Syntax additions to support DBCS include:
•Entry field definitions can include one of the following:
•datatype is DBCS
•datatype is mixed
•datatype is char
•datatype is any (default)
•Regions can have a keyboard status area to present information on the input state. Specify keyboard status area in the object definition.
•Ability to query the type of byte at a specific position in a textual region. The syntax is:
type at [column] COL_NO [line] LINE_NO char of TR_NAME
type at cursor char of TR_NAME
Values returned will be either SBCS, DBCS1, or DBCS2.