iSeries – DBCS

5 pts.
AS/400 development
Hi We have an application with front-end (Java in RS/6000) and the back-end (COBOL in iSeries). Currently, the front-end browser panels send the data through MQ to iSeries. But before sending data to iSeries, the Java will do conversion from ASCII to EBCDIC programmatically for character encoding from Unicode to EBCDIC. For example, If the Java program encountered character 'A', hex value of 'A' in ASCII is 0x41 it will replace it with corresponding EBCDIC hex value which is 0xC1. All characters are replaced with single byte corresponding characters. Code page we are using is '37'. Now we have a requirement to deploy this application in Chinese environment. But Chinese and other language characters occupy more than one byte (DBCS). Hence,currently our system will not support this feature. To support multi language text , we are planing to support UTF-16 encoding. The questions I have are:
  • Is AS/400 capable of handling UTF-16 to EBCIDIC conversion?
  • If yes, what changes do we need to make at back-end? To be more specific what is the corresponding CCSID in AS/400 for UTF-16 encoding.
  • What kind of considerations do we have to take in terms of CCSID set up at User profile levels, Job levels, System levels etc?
  • I guess if we have to deploy this application, we need to make changes to the current conversion program as explained earlier to make sure that it converts the data to a different code page (other than 37) for DBCS EBCIDIC scheme?
  • What data type is appropriate for DBCS Chinese characters in iSeries (O, E, G)?
Thanks a lot!

Answer Wiki

Thanks. We'll let you know when a new response is added.

A) Absolutely. There are several ways to convert UTF-16 to/from EBCDIC. They include system APIs such as iconv(), database logical files, and even the COBOL MOVE statement.

B) The term “Chinese” is not sufficient to answer your question. Are we talking Traditional Chinese or Simplified Chinese? More important though, I believe a better design would be to change your back-end to support UTF-16 directly rather than designing to EBCDIC. With EBCDIC you are looking at different CCSIDs (and databases) for each language. Going to UTF-16 you can have one database (encoded in UTF-16) which can support Traditional Chinese, Simplified Chinese, Korean, and Japanese in addition to the traditional SBCS-based languages.

Your C, D, and E are based on an EBCDIC implementation, which I really doubt you want to do given the other options available to you. COBOL has direct support for Unicode (UCS-2 and UTF-16). Check out the NATIONAL support of ILE COBOL. You will also find excellent Unicode support in the i database, display file, printer file, message handling, etc.

Bruce Vining (who has done a lot of Unicode work, with many companies, over the years)


Hi Pmr,

I can give some answers, but not all:

The CCSID in the iSeries objects must be 935 (Simplified Chinese)
The code page in the PC for Simplified Chinese is 1388
The Data Type in the DSPF/PRTF must be O (Other)
Its not possible to copy the data for existing files if the data was entered in DBCS prior to the recompilation (as it has other CCSID)

This is what I can help.

Good Luck,

Discuss This Question: 2  Replies

There was an error processing your information. Please try again later.
Thanks. We'll let you know when a new response is added.
Send me notifications when members answer or reply to this question.
  • TomLiotta
    Those are quite a few questions that may require a lengthy dialog to answer. How about starting with Different encodings of Unicode -- UTF-16 and seeing where it goes from there? Tom
    125,585 pointsBadges:
  • InterestedDeveloper
    Hi, I am not going to answer this question as i am also trying to understand the process. I also have a similar kind of scenario where i have to work. In my case i am trying to send data from Mainframe to Unix. The data sent is a mixture of Normal English characters and Chinese characters. i.e a mixture of SBCC and DBCC characters. So when i try to send via FTP ..basically in my Mainframe program i am calling a routine E2ACONV to convert the CCSID 935 to CCSID 1381(Simplified Chinese). But for MQ i am looking for what are the options i have to send DBCC data to UNIX. So if anyone can give me some input on this one, i will be too glad.
    10 pointsBadges:

Forgot Password

No problem! Submit your e-mail address below. We'll send you an e-mail containing your password.

Your password has been sent to:

To follow this tag...

There was an error processing your information. Please try again later.

Thanks! We'll email you when relevant content is added and updated.


Share this item with your network: