RPG

286. 国際言語対応の開発 (2)

グローバル社会の現在ではインターフェースにも中国語対応が必要となってきている。
ここでは国際言語への対応の方法として中国語(簡体字)を例として
開発の方法を紹介する。

最初に中国語とは北京を中心として使用されている簡体字 (CCSID 935) と
台湾、香港で使用されている繁体字 (CCSID 937) があるが
現在、日本国内の法人が中国語のサポートの必要性を迫られている理由の多くは
中国に自社や関連する工場や取引先がある、という理由なので
簡体字 (CCSID 935) を前提として考えていく。

またこのシリーズで紹介する国際言語対応とはあくまでインターフェースだけを
どのようにして国際言語化するかという条件に限定する。
データそのものを国際言語化するということは別の機会に紹介したい。

最初に紹介するのは MSGCON キー・ワードによる DSPF の対応である。
DSPF の MSGCON キー・ワードとはメッセージ・ファイル (*MSGF) の
メッセージを定数値 (CONSTANCE) として出力する機能である。

【例】MSGCON を使った固定情報の出力
  A*                                 1 27' 部課マスターの登録 '
  A                                  1 27MSGCON(20 MSG0001 *LIBL/USRMSG)
【解説】

(1, 27) の位置に「部課マスターの登録」と固定情報で出力する代わりに
ユーザー・メッセージ・ファイル USRMSG に
メッセージ識別 MSG0001 を

ADDMSGD MSGID(MSG0001) MSGF(QTROBJ/USRMSG) MSG('部課マスターの登録 ')

によって日本語のテキストを登録しておく。
もちろん事前に

CRTMSGF MSGF(QTROBJ/USRMSG) AUT(*ALL)

のようにしてメッセージ・ファイル : USRMSG を作成しておく。

次に中国語用のライブラリー : CHINALIB に対して

CRTMSGF MSGF(CHINALIB/USRMSG) AUT(*ALL) CCSID(935)

で中国語用のメッセージ・ファイルを同じ名前で作成しておいて
( 中国簡体字の CCSID は 935, 繁体字は 937
   CCSID は指定しなくても良いがすべての必要な簡体字を
   登録するのであれば CCSID を指定すること )

ADDMSGD MSGID(MSG0001) MSGF(CHINALIB/USRMSG) MSG('部課主文件注册')

のようにして中国語のメッセージを登録する。

この状態で

CRTDSPF FILE(QTROBJ/PGM109FM) SRCFILE(QTRSRC/QDSPSRC) LVLCHK(*NO) AUT(*ALL)

のように DSPF を日本語ライブラリー QTROBJ に作成する。

次に中国語ライブラリー : CHINALIB を
ADDLIBLE でライブラリー・リストの先頭に配置させてから

CRTDSPF FILE(CHINALIB/PGM109FM) SRCFILE(QTRSRC/QDSPSRC) LVLCHK(*NO) AUT(*ALL)

のようにして中国語ライブラリー : CHINALIB に DSPF を作成する。

MSGCON を利用する関連図

  • 2つの DSPF オブジェクトを交互に切替えて利用する。
  • ソースはひとつで済むが2つのオブジェクトの管理が必要となる。

結果として

  • 日本語用の DSPF (QTROBJ/PGM109FM)
  • 中国語用の DSPF (CHINALIB/PGM109FM)

の二つのインターフェースの言語だけが異なる DSPF オブジェクトが作成されたので
この二つの DSPF を OVRDSPF コマンドまたは
ライブラリー・リストの切り替えによって
日本語を表示するか中国語を表示するか切替えるようにすればよい。

このように MSGCON キー・ワードを使えば、

ひとつの DSPF ソースから
言語の異なる二つの DSPF オブジェクトを
作成することができる。