Preface
Purpose
Audience
Organization
Using ABL documentation
References to ABL compiler and run-time features
References to ABL data types
Typographical conventions
Examples of syntax descriptions
Long syntax descriptions split across lines
Complex syntax descriptions with both required and optional elements
Examples of SQL syntax diagrams
Long SQL syntax descriptions split across lines
OpenEdge messages
Obtaining more information about OpenEdge messages
Developing Applications for Deployment Worldwide
The importance of internationalization and localization
Strategies for responding to a global market
Internationalized applications
Localized applications
How OpenEdge supports internationalization
Multi-byte applications
OpenEdge support for Unicode
Character processing
OpenEdge Translation Manager System
OpenEdge ABL elements
International databases
OpenEdge messages
Regional parameter files
How OpenEdge products support internationalization
Design guidelines
Understanding Code Pages
Code pages and character sets
Code pages
Character sets
Environments with multiple code pages
Code-page conversion
Streams and code-page conversion
Streams and the PROTERMCAP file
Valid and invalid code-page conversions
Sockets and code-page conversion
The undefined code page
Determining which code page an application component uses
ASCII character data
8-bit character data
OpenEdge databases
Character terminals
Windows screen and keyboard
Printers
Table dump (.d) files and other external text files
OpenEdge libraries
Understanding Character Processing Tables
The convmap.dat file and its tables
Character attribute tables
Case tables
Collations and collation tables
Code-page conversion tables
Converting to and from UTF-8
Modifying convmap.dat or a file it includes
Compiling the convmap.dat file
Providing access to the convmap.cp file
Modifying OpenEdge collation tables
Preliminary considerations
Dumping a collation table
Editing the collation table
Loading the modified collation table
Rebuilding the indexes for collation table changes
Modifying, compiling, and providing access to the CONVMAP file
Finding additional information on character processing tables other than word-break tables
Word-break tables
Why OpenEdge uses word-break tables
Creating and modifying word-break tables
Understanding word-delimiter attributes
Word-break table syntax
Compiling word-break tables
Providing access to word-break tables
Associating word-break tables with databases
Rebuilding the indexes for word-break table changes
Preparing the Code
Guidelines and methodology
Structuring source code
Processing by characters
Using variables
Coding with translation in mind
Input and output
Keyboards
Printers
Data-processing issues
Numeric formats
Measurements
Currencies
Dates
Time
Addresses
Sorting data
Local conventions
Using collation tables
ABL Comparisons
Database collation
Using case tables
Compiling translated applications
Preparing the User Interface
Screen layout and composition
Equipment differences
Monitors
Keyboards
Culturally specific issues
Abbreviations and acronyms
Address formats
Calendar, date, and time formats
Colors and sounds
Numeric formats
Currency formats
Field labels and field sizes
Financial rules
Names and titles
Phone number formats
Language issues
Graphics and icons
Text in graphics and icons
Images to avoid in graphics and icons
Images of animals
Images based on puns or word play
Images of body parts or gestures
Images biased towards a particular culture or region
References to sports
Symbols related to religion or culture
Designing with the AppBuilder
Localizing SmartObject masters
Localizing SmartObject instances
Using multiple layouts
Character-client layouts
Designing to allow for translation
Text expansion and contraction
Word length
Typefaces and point sizes
Word order
Message text
Layout
Using Databases
OpenEdge database name restrictions
Empty databases
Empty databases supplied by OpenEdge
Creating an empty database in a particular code page
Scanning databases for character conflicts
New characters
Using PROUTIL to perform the scan
Converting a database and its data to a different code page
Loading table dump files
Code-page trailers
Techniques for loading table dump files
Using an ABL program
Using the Data Dictionary utility
Using the PROUTIL utility with the BULKLOAD option
Specifying -cpinternal and -cpstream with database utilities
Using SQL
Starting database servers
Using SQL database servers
Code-page conversion in SQL applications
Using SQL clients
Java/JDBC clients
ODBC clients
Characteristics of OpenEdge SQL clients
Internal code page
Code page for displaying PROMSGS sent by the server to the client
Using SQL utilities
SQLDUMP
SQLLOAD
SQLSCHEMA
Using the SQL language
Unit of length when working with character strings
Maximum bytes required for CHAR and VARCHAR
Using Multi-byte Code Pages
Definitions of key terms
Terms for code pages
Terms for characters
Terms for bytes
OpenEdge support
Input
Using the keyboard and mouse
Data flow in single-byte applications
Data flow in double-byte applications
Using ABL
Using ABL to simulate inputting double-byte characters
Using ABL to simulate key presses and mouse clicks
Automatic input validation
Output
FORMAT phrase
Fitting multi-byte characters into the available columns
Fitting multi-byte characters around formatting characters
Allowing only single-byte formatting characters
Printing
Printing from Windows
Printing from applications with a character interface
Testing printers
Character-client color limit
Inside the multi-byte application
Distinguishing characters, bytes, and columns
Techniques for working with multi-byte characters
Choosing the appropriate unit of measure
Testing character strings for multi-byte characters
Testing for a lead-byte value
ABL support for processing multi-byte characters
Issues specific to multi-byte code pages
OpenEdge support for multi-byte code pages
About the Thai code page and collations
Additional GB18030 code page considerations
Valid and invalid code-page conversions
Determining valid code-page conversions (for non-Unicode databases)
Converting between double byte and single byte
Converting from double byte to double byte
User-defined characters
Limitations of user-defined characters
Guidelines for using user-defined characters
Collating multi-byte characters
Sort order of trail bytes
Default word-break behavior of characters in multi-byte code pages
Guidelines for using multi-byte characters
Using Unicode
Unicode overview
Why use Unicode
The limits of multiple code pages
The advantages of Unicode
Using Unicode with OpenEdge products
Using Unicode with OpenEdge databases
Converting an OpenEdge database to UTF-8 using the PROUTIL CONVCHAR utility
Converting an OpenEdge database to UTF-8 using dump and load
Compiling, storing, and applying the UTF-8 word-break rules to a database
Using Unicode with OpenEdge applications
Rules for using Unicode with the OpenEdge character client
Rules for using Unicode with the OpenEdge graphical client
Unicode application example
Guidelines for using Unicode
Unicode support for supplementary characters
Using UTF-16 in the ASC and CHR functions
Behavior of ASC and CHR functions
New and modified keywords
Limitations
ABL constructs that support Unicode filenames
Deployment and Configuration
The progress.ini file and the Windows registry
[Startup]
[fonts]
Specifying scripts
The PROTERMCAP file
The PROMSGS file
Parameter files
The conmgr.properties file
Report Builder parameters
Additional guidelines
Running applications translated using the Translation Manager
Using the UNIX character client with double-byte code pages
Specifying -cpinternal and -cpstream with database utilities
OpenEdge Resources
Files in the OpenEdge/prolang directory
Startup parameters and settings
ABL
OpenEdge SQL
SQL elements that support internationalization and localization
Format specifiers allowed with the TO_CHAR and TO_DATE functions
Utilities
Determining the code page
Character Processing Table Formats
Character attribute table
Case table
Collation table
Code-page conversion table
Convmap changes
Word-break table
Preface
Word-break table