ユーザーで作成したコマンドを国際言語化する方法を紹介する。
ユーザーで作成したコマンドが日本語環境下では日本語テキストとして
表示されて英語や中国語の環境下ではそれぞれの国際言語として
表示させる方法である。
もちろんこれは国際言語に応じて複数のコマンドを用意するというのではなく
ひとつだけのコマンドで表示させる方法である。
PARM KWD(PGM) TYPE(PGM) MAX(10) + PROMPT(' プログラム ') PGM: QUAL TYPE(*NAME) LEN(10) SPCVAL((*ALL))
コマンドのパラメータのテキストは上記の 「PROMPT(' プログラム ') 」
のようにして日本語のテキストを記述しておくのが
通例であるが日本語を入れる代わりにメッセージIDを指定することもできる。
PARM KWD(PGM) TYPE(PGM) MAX(10) + PROMPT(MSG0001) PGM: QUAL TYPE(*NAME) LEN(10) SPCVAL((*ALL))
のようにしてMSGIDを指定する。
CRTCMD コマンドで コマンドを作成するときには
コマンド作成 (CRTCMD) 選択項目を入力して,実行キーを押してください。 コマンド . . . . . . . . . . . > MYCMD 名前 ライブラリー . . . . . . . . . . . > MYLIB 名前 , *CURL : プロンプト・テキスト 用 メッセージ・ファイル: メッセージ・ファイル . . . . > USRMSGF 名前 , *NONE ライブラリー . . . . . . . . . . > *LIBL 名前 , *LIBL, *CURLIB メッセージ・テキスト . . . . > *DYNAMIC *STATIC, *DYNAMIC
のようにして MSG0002 が保管されているメッセージ・ファイル:USRMSGF を
ライブラリー: *LIBL で メッセージ・テキストを *DYNAMIC として指定する。
この *DYNAMIC という指定が i5/OS Ver6.1 からできるようになった。
*DYNAMIC とは動的、つまり実行時に初めてメッセージ・ファイルが
検索されて参照される、という仕様である。
英語や中国語として保管されているメッセージ・ファイル USRMSGF が
ライブラリー・リストの先頭にあれば、その言語で表示が行われる。
*STATIC とは静的という意味なので *STATIC を指定しておくと
コンパイル時にメッセーシ・ファイルが読み込まれてコマンド・オブジェクトに
組み込まれるのでライブラリー・リストを工夫してもメッセージ表記が
変化することはない。
あくまで *DYNAMIC で作成されたコマンドのみが国際言語化として
機能できることになる。
Ver6.1 からの *DYNAMIC 指定はコマンドのメッセージ表記を
柔軟なものにしてくれる。
読者のアイデア次第で他の用途への応用も考えてみて欲しい。