コマンド

31.コマンドの国際言語化

ユーザーで作成したコマンドを国際言語化する方法を紹介する。
ユーザーで作成したコマンドが日本語環境下では日本語テキストとして
表示されて英語や中国語の環境下ではそれぞれの国際言語として
表示させる方法である。
もちろんこれは国際言語に応じて複数のコマンドを用意するというのではなく
ひとつだけのコマンドで表示させる方法である。

【例】 コマンド・パラメータ

                          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 指定はコマンドのメッセージ表記を
柔軟なものにしてくれる。
読者のアイデア次第で他の用途への応用も考えてみて欲しい。