Title: J. D. Edwards Oneworld Double Byte Implementation

Title: J. D. Edwards Oneworld Double Byte Implementation

Title: J. D. Edwards OneWorld® Double Byte Implementation

Abstract: In depth white paper on OneWorld Double Byte Implementation

Table of Contents

1. NLS Terminology

2. Microsoft Windows Codepages and SQL Codepages

3. Double Byte Database Codepages

4. Windows and UNIX Considerations for Double Byte Setup
5. AS/400 Considerations for Double Byte Setup
6. Appendix 1: How to Setup Windows 2000 SystemLocale (codepage) Settings
7. Appendix 2: How toSetup NLS_LANG Variables for Oracle Clients

NLS Terminology

Character set and Codepage for languages

A Character set is a collection of elements used to represent textual information. A codepage is a coded character set. Foreign (Non-English) codepages typically contains all English language characters (ASCII/ANSI Standard), in conjunction with the foreign characters for the given foreign language. Also note that a codepage sometimes may or may not contain the characters for 2 or more foreign (Non-English) languages. For example, a codepage ISO8859-1 contains variety of characters for Western European languages, while a Shift JIS codepage only contains characters for Japanese and English. Double byte code pages only contain English character set and the specified double byte language characters.

Chart 1: An example of a codepage

Double Byte code pages

7-bit codepages and 8-bit codepage schemes

There are two common types of codepages used for double byte languages. 7-bit codepages only assign 7 bit (127 code points) to textual information. A common example of a 7-bit codepage is the ASCII character set. 8-bit codepages assign all 8 bit (255 code points) of a byte for characters. Double byte codepages use up to 2 bytes to represent textual information, hence the name ‘double byte.’ A double byte codepage can be of either 7-bit codepage or an 8-bit codepage.

Back to Top

Microsoft® Windows codepages and SQL codepages

Windows Code pages

Software vendors and organizations defining industry standards, such as Microsoft, IBM, Oracle, ISO, ANSI, and Unicode Consortiums define their own system codepages. In a OneWorld implementation, data and tables are primarily delivered from a Microsoft® Access database, hence it is stored in a codepage defined by Microsoft.

Chart 2: J.D.Edwards Languages and Microsoft Codepages

J.D.Edwards
Language Tier / Language / Microsoft
NLS Codepage / Microsoft
Display name
Tier1 / English / 1252 / ANSI - Latin I
French
German
Italian
Portuguese
Spanish
Japanese / 932 / ANSI/OEM –
Japanese Shift JIS
Tier2 / Danish / 1252 / ANSI - Latin I
Dutch
Finnish
Norwegian
Swedish
Korean / 949 / ANSI/OEM - Korean
Simplified Chinese / 936 / ANSI/OEM –
Simplified Chinese GBK
Traditional Chinese / 950 / ANSI/OEM –
Traditional Chinese Big5
Tier3 / Czech / 1250 / ANSI - Central Europe
Hungarian
Polish
Arabic / 1256 / ANSI - Arabic
Greek / 1253 / ANSI - Greek
Russian / 1251 / ANSI - Cyrillic
Turkish / 1254 / ANSI - Turkish

Windows Locale (Codepage setting)

The system locale (sometimes referred to as the system default locale) for Windows OS versions, determines which codepage(s) and associated font(s) are to be used as the default for the system. These codepages and fonts enable non-Unicode applications to run as they would on a system localized to run language set by the system locale.In OneWorld®, all Windows clients and servers need to have appropriate system locale settings.

Windows 95/98

The system locale for Windows 95/98 is set based on the language version installed and cannot be changed once installed.

Windows NT4.0 variants (Including TSE server)

The system locale of this OS is pre-selected by the language version, but can later be modified and selected in the Regional Settings Control Panel. Proper setting of the codepage(s) and font(s) on NT4.0 is somewhat complicated and has been found to cause character display problems on OneWorld®. For this reason, it is not recommend modifying these setting on NT4.0 once a specific language version has been installed and selected.

Windows 2000 variants (Including TSE server)

Similar to NT4.0, system locale of this OS is pre-selected by the language version, but can later be modified in the Regional Settings Control Panel. Given this release’s new language support architecture, Windows 2000 supports multiple system locales for any supported locale on all language versions. Changing system locale is simple and easy, while maintaining system integrity. When the system locale is changed in Windows 2000, the appearance of the OS such as menus, file names, etc. will remain the same, but will allow OneWorld to use language(s) set in the system locale. For example, a workstation or server with base English Windows 2000 installed is able to handle several Western European languages with OneWorld. (see chart 1) The reason for this is that the English language characters resides in codepage 1252 used for Western European. Consequently, if the system locale of the machine is changed to Japanese, then the user can only use Japanese and English (Double byte Japanese codepage contain the character set for English language (ASCII), as most other codepages contain). In either case, the visual appearance of Windows 2000 menus, existing filenames, etc. will be in English regardless of the system locale or language used in OneWorld.
See appendix 1 for how to setup system locale.

Back to Top

Double Byte Database Codepages

Microsoft® SQL and Oracle Settings

SQL Server and Oracle has codepage setting for each database. If the codepage used on a client machine and the database codepage differs, a database character conversion occurs between the client and the database. It is not recommended to use this functionality in MS SQL Server or Oracle using conventional (non-web) OneWorld architecture. Make sure ODBC settings for ‘Perform translate Characters’ for SQL server are un-checked, and NLS_LANG setting for Oracle clients and servers should be matched to eliminate any database conversions at runtime.
See appendix 2 for how to configure Oracle NLS_LANG setting.

Back to Top

Windows and UNIX® Considerations for Double Byte Setup

Windows

Deployment Server

System locale of a deployment server needs to be the same language (codepage) as the one being installed. For example, the system locale of the machine needs to be Japanese to install Japanese onto OneWorld. Note that the language version of Windows 2000 does not affect/effect any of the language installation processes.

Client machines/ TSE Servers

System locale setting for a client machine needs to be the same codepage as the language being used for OneWorld on that particular machine. User can only use the language, which resides in OS’s default codepage (system locale).
For example, if an environment has Japanese and Spanish installed, then Japanese client (Japanese NT, 98,95 and any windows2000 with system language set to Japanese) can only handle Japanese. If users try to use Spanish on the machine, then they will get garbage font characters, and vice versa

Windows and UNIX

Enterprise Server

Windows servers and UNIX machines do not need to be configured at the OS level to use languages installed for OneWorld. English OS setting can be used on the Enterprise server for OneWorld with languages installed.

Back to Top

AS/400® Considerations for Double Byte Setup

With OneWorld® on an AS/400® platform that is being configured for any double byte language requires special configuration steps throughout the implementation. In particular, double byte implementations with the AS/400® requires several manual procedures for the installation of Data Dictionary tables, installation of Central Objects, Client Access setup, host code loading, ODBC modifications, JDE.INI modifications, and package build considerations.

Installing Data Dictionary on AS/400® DB2®

§ Double-byte Data Dictionary tables

When installing the Data Dictionary tables, you must specify *YES in the Double Byte option field in the Install Data Dictionary screen. This will ensure that the Data Dictionary tables are restored with the necessary Double Byte Data Type “O” (DBCS-Open Data).

Installing the Central Objects on AS/400® DB

Re-create the Processing Option Text file (F98306) for Double-byte languages on DB2/400

Before running the Installation Workbench, double-byte customers must re-create F98306 with the appropriate CCSID using the Copy Table (CPYTBL). During the original installation of the Central Objects tables, the table is restored and created with a CCSID of “37”. Since this table contains PO Text (Processing Option text), we need to convert the CCSID of this table to the specific Double Byte language being utilized.

If the table is not re-create accordingly, the PO text will be corrupted without any errors or indication during the Specification Table Merge.

Installation Workbench

Access Database

You must have an appropriate Access 97 language version or Access 2000 on your deployment server when you run the Installation Workbench. Access 2000 can recognize the data in other languages but Access 97 can’t recognize it. If you don’t use the Access 97 language version or Access 2000, Access will fail to open a language MDB file during the Control Table Merge and Specification Table Merge

Client Access Properties on the Deployment Server

If you are running the Installation Workbench on the English Windows NT or Windows 2000 in which the System locale isn’t set to an appropriate language. You must change the ANSI code page in the Client Access Properties before running the Installation Workbench.
If you are running it on the Windows NT language version or Windows 2000 with the appropriate system locale, you don’t need to change this option.

ANSI code pages for Double–byte languages
Language / Code Page
Korean / 949
Japanese / 932
Simplified Chinese / 936
Traditional Chinese / 950
CCSID of User ID "JDE"

Before running the Installation Workbench, you must change the CCSID of user ID “JDE” to an appropriate CCSID for the Double-byte languages listed below, because the tables are created based on the CCSID of user ID “JDE”.
CCSID values for Double-byte languages

Language / CCSID
Korean / 933
Japanese / 939
Simplified Chinese / 935
Traditional Chinese / 937
Registry Setting for ODBC Data Sources "JDE"

To load a double-byte data correctly via ODBC, you need to edit the following registry setting in: My Computer\HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\odbc.ini

Value Name: DBCSNoTruncErr
Value Data: 1

If your ODBC Data Sources don’t have this registry value, some records will fail to be insterted into tables with an “Insert Record Failed” errors appearing. The following errors will be logged in the JDE.LOG during the Control Table Merge and Specification Table Merge.

1284/524 Mon Mar 05 11:32:28 2001 JDBODBC2031
ODB0000183 - SQLExecute failed
1284/524 Mon Mar 05 11:32:28 2001 JDBODBC2031
[IBM][Client Access Express ODBC Driver (32-bit)][DB2/400 SQL] Data truncated. - SQLSTATE: 01004
1284/524 Mon Mar 05 11:32:28 2001 jdb_drvm887
JDB9900401 - Failed to execute db request
1284/524 Mon Mar 05 11:32:28 2001 jdb_exet4411
JDB3400009 - Failed to perform Insert for F0005D
1284/524 Mon Mar 05 11:32:28 2001 tcrun391
TCE009143 - Insert Row failed for table F0005D.
Edit Translation Table in the Client Access (For Simplified Chinese ONLY)

Before running the Installation Workbench, you need to edit the translation tables (03A7056A.TBL and 056A03A7.TBL) in IBM’s Client Access to create tables and load translated UDC and Data Dictionary correctly.
Please refer to Appendix 3 for more details about this issue.

"mso-fareast-font-family: Arial Unicode MS; Installing: " MS"? Unicode "Arial mso-fareast-font-family:> Installing OneWorld on the Enterprise Server

INI Settings (\\deployment server\HOSTS\AS400\enterprise server)

1. LocalCodeSet value for Double-byte languages
The following table shows the LocalCodeSet Value for the Double-byte languages.

Language / Workstation / Enterprise Server (AS/400)
Korean / KO_KSC / KO_EBCDIC
Japanese / JA_SJIS / JA_EBCDIC
Simplified Chinese / SC_GB / SC_EBCDIC
Traditional Chinese / TC_BIG5 / TC_EBCDIC

[INSTALL]
LocalCodeSet=JA_EBCDIC (Example for Japanese)

CCSID of QSECOFR (Simplified Chinese and Korean Only)

If you log onto AS/400 as QSECOFR with CCSID “933” or “935” and try to install the host CDs, FTP will fail and the following errors will be logged in JDEOW/FTPOUTPUT. To avoid this problem, you need to change the CCSID of QSECOFR to other than 933 or 935, such as 37.

OUTPUT REDIRECTED TO A FILE.
INPUT READ FROM SPECIFIED OVERRIDE FILE.
CONNECTING TO HOST NOBUNAGA AT ADDRESS 10.74.99.154 USING PORT 21.
220 nobunaga Microsoft FTP Service (Version 5.0).
ENTER LOGIN ID (QSECOFR):
331 Password required for JDE.
230 User JDE logged in.
Windows_NT version 5.0
ENTER AN FTP SUBCOMMAND.
> cd c:$JDEdwardsOneWorld$B7333$HOSTS$AS400$J400E
550 c:$JDEdwardsOneWorld$B7333$HOSTS$AS400$J400E: The system cannot find the file specified.

CCSID of PRINTQUEUE

You need to change CCSID of PRINTQUEUE to 65535 from37 after the installation is finished. If you don’t change the CCSID value, you will get the following error message when you open the PDF.

Also the following message will be logged in JOBLOG on AS/400.

MESSAGE..: SUBSTITUTION CHARACTERS MAY BE USED IN DATA
CONVERSION.
CAUSE . . : WHEN CONVERTING DATA FROM CODED CHARACTER SET
ID (CCSID) 1027 TO CCSID 37 SUBSTITUTION CHARACTERS
MAY BE USED. DATA IN MEMBER F226, FILE PRINTQUEUE IN
LIBRARY B7332SYS MAY BE AFFECTED.

CCSID of INI

You need to change the CCSID of PRINTQUEUE to 65535 from37 after the installation is finished. If you don’t change it, you will get the following error message in JDENET_K.

MESSAGE..: SUBSTITUTION CHARACTERS MAY BE USED IN DATA
CONVERSION.
CAUSE . . : WHEN CONVERTING DATA FROM CODED CHARACTER SET
ID (CCSID) 37 TO CCSID 1027 SUBSTITUTION CHARACTERS
MAY BE USED. DATA IN MEMBER JDE, FILE INI IN LIBRARY
B7333SYS MAY BE AFFECTED.

Correct CCSID values for tables on AS/400®

The following table shows the correct CCSID values for each table.

Table / CCSID
Data Dictionary / 65535
Central Object (F98306 Only) / Appropriate CCSID
Central Object (Others) / 37
Other tables / Appropriate CCSID
INI / 65535
PRINTQUEUE / 65535

Installing OneWorld® on the Workstations

Modifying the ODBCDataSource.inf on the Deployment Sever

Need to add the following value to all ODBC Data Sources.
DBCSNoTruncErr=1
If the ODBC Data Sources don’t have this registry value on the Workstations, some records will fail to be inserted into tables with an “Insert Record Failed” errors appearing. The following errors will be logged in the JDE.LOG.

1284/524 Mon Mar 05 11:32:28 2001 JDBODBC2031
ODB0000183 - SQLExecute failed
1284/524 Mon Mar 05 11:32:28 2001 JDBODBC2031
[IBM][Client Access Express ODBC Driver (32-bit)][DB2/400 SQL] Data truncated. - SQLSTATE: 01004
1284/524 Mon Mar 05 11:32:28 2001 jdb_drvm887
JDB9900401 - Failed to execute db request
1284/524 Mon Mar 05 11:32:28 2001 jdb_exet4411
JDB3400009 - Failed to perform Insert for F0005D
1284/524 Mon Mar 05 11:32:28 2001 tcrun391
TCE009143 - Insert Row failed for table F0005D.

AS/400® Package Build Considerations

Client Package

When you are buildingthe client package with translated PO text, you should run it from the Windows NT language version or Windows 2000 in which the system locale is set to an appropriate language. If the system locale on the OS doesn’t match the language, the translated text in POTEXT will be corrupted.

Server Package

When you build the server package, you should run it from the OneWorld client with appropriate LocalCodeSet value which matches the one in INI on server. If the LocalCodeSet value on local is different from the one in the server, the server package build will fail and the following errors will be logged in jde.log on the server.

1608 Fri Jan 5 17:25:13 2001 JDEKRNL_1/C/CNVTCHRA1431 iconv_open failed To:IBMCCSID00935, From: IBMCCSID012520000000 1608 Fri Jan 5 17:25:13 2001 JDEKRNL_1/C/CNVTCHRA1441 iconv failed 1608 Fri Jan 5 17:25:13 2001 JDEKRNL_1/C/CNVTCHRA1441 iconv failed 1608 Fri Jan 5 17:25:13 2001JDEKRNL_1/C/CNVTCHRA1441 iconv failed 1608 Fri Jan 5 17:25:13 2001 JDEKRNL_1/C/CNVTCHRA1441 iconv failed 1608 Fri Jan 5 17:25:13 2001 JDEKRNL_1/C/CNVTCHRA1441 iconv failed 1608 Fri Jan 5 17:25:13 2001 JDEKRNL_1/C/CNVTCHRA1441 iconv failed 1608 Fri Jan 5 17:25:13 2001JDEKRNL_1/C/CNVTCHRA1441 iconv failed 1608 Fri Jan 5
Back to Top

Appendix 1: How to Setup Windows 2000 System Locale (codepage) Settings

Windows 2000 variations have system locale settings. This setting needs to be set correctly for the OneWorld language environments.

System language is set by regional settings in control panel.

You will see that selected language for the system is grayed out and marked as 'Default'. Selecting system language is done by selecting the System locale in the window which appears when you press 'set default' button. Rebooting is required for the change to take effect.

You can find out more about system locale and other information about windows 2000's functions for globalizations on Microsoft's web site.

Back to Top

Appendix 2: How to Setup NLS_LANG Variables for Oracle Clients

Oracle database has the functions to translate codepages. In order for the OneWorld language environments to work properly, the NLS_LANG parameter of the Oracle client needs to be set correctly. This document shows how to configure these settings on UNIX and windows environments. These settings need to be done for both servers and clients.

Windows

A system variable needs to be added for Windows clients. This can be added/edited using ‘system’ control panel. For NT, setting can be found on ‘Environments’ tab. For windows 2000, it is under ‘Environment variable’ window accessed by pressing a button on ‘advanced’ tab. Below is a screen shot form Windows 2000.

The value after a period, in this case ZHT32EUC, represents the codepage setting of Oracle client, and should be matched to the setting of the database. If for some reason you need to use different codepage for the client and server, make sure these codepages are fully compatible each other. A period must be in front of the codepage name.

You can check the codepage settings of the oracle database by executing a query below on Oracle client such as SQL Plus.
SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET'

UNIX

If the enterprise server is a UNIX machine, NLS_LANG settings is set for the OneWorld user on the OS user profile (typically jdebxxx). To add the correct settings to the UNIX user, user’s .profile file needs to be modified.