一次言語を 2984 English DBCS にする
「一次言語を 2962 日本語にする (DST で日本語が化けるけど)」の一次言語ネタの続きです。
PowerVS で提供される IBM i の一次言語は「2924 SBCS英語」です。
「IBM Cloud のIBM i を日本語環境にしてみる」では Sugata
さんがその上に二次言語として「2930 日本語」を導入しています。
私も「PowerVS IBM i 日記(8): 2962 日本語を二次言語として導入する」で二次言語として「2962 日本語」を導入しています。
どちらも、一次言語は導入済みの「2924 SBCS英語」です。
前回の「PowerVS IBM i 日記(10): 一次言語を 2962 日本語にする (DST で日本語が化けるけど)」で一次言語を「2962 日本語」にしてみました。ただし快適に利用できる環境にはなりませんでした。
結局、日本語環境のためには、どの一次言語を使うのがふさわしいのでしょうか。
二次言語で 2962/2930 を使うときの一次言語は ?
IBM からは矛盾したふたつのメッセージが出ています。
ひとつめのドキュメントはこちらです。
OS/400 5.2 までは DBCS 用と SBCS 用でOSが分かれていたけど 5.3 からはコードが一つになったから「二次言語 2962」に「一次言語 2924」でも大丈夫...とあります。
Running Multinational OS/400 Using DBCS and SBCS
At R530 and later releases, it is no longer necessary that a primary DBCS language be installed to support a secondary DBCS language. Starting at V5R3, the primary installed language can be SBCS such as 2924 to support DBCS language such as 2962 - Japanese Kanji.
もう一つはこちらです。
「英語を 1 次言語として必要とする場合の 2 次言語に関する注意」
ここに示された考慮事項は、1 次言語として英語を必要とし、DBCS 2 次言語をインストールする場合に重要です。
日本語、中国語 (簡体字)、中国語 (繁体字)、または韓国語を 2 次言語として使用し、英語を 1 次言語として必要とする場合
日本語、中国語 (簡体字)、中国語 (繁体字)、または韓国語を 2 次言語として使用し、1 次言語として英語が必要な場合は、1 次言語に英語大文字および小文字 (2984) を使用してください。
その他の場合
このトピックで説明される場合以外の場合は、1 次言語として英語 (2924) を使用してください。
「二次言語 2962/2930 日本語」を使うなら一次言語は 2924 でなく 2984 にするように...とあります。
この記述が大昔からあって、最初のドキュメントが作られた時に見直し忘れのでは...という疑問を持つかもしれません。
実は 7.1 の時の記述はこうなっています。
[英語を 1 次言語として必要とする場合の 2 次言語に関する注意]こちら(https://www.ibm.com/support/knowledgecenter/ja/ssw_ibm_i_71/nls/rbagssecreq.htm)
日本語 DBCS (機能番号 5762) を 2 次言語としてインストールし、英語を 1 次言語とする場合
日本語 DBCS (機能番号 5762) を 2 次言語としてインストールし、英語を 1 次言語とする場合は、英語大文字 DBCS (2938) を 1 次言語としてインストールする必要があります。英語大文字 DBCS (2938) をインストールしなければならない理由は、ユーザー・インターフェースのテキストがすべて英語大文字で書かれているためです。日本語の以前のワークステーション・ディスプレイの中には英語小文字を表示しないものがあります。英語大文字 DBCS を使用すると、こうした日本語のディスプレイの場合でも、データを消失せずに英語のテキストを表示できます。 英語大文字 DBCS を 1 次言語としてインストールする場合は、メッセージには小文字ではなく大文字で応答することに注意してください。小文字で応答すると、エラー・メッセージが表示されます。
DBCS 向け英語大文字および小文字サポート (2984) を使用して日本語 DBCS (5762) を 2 次言語とする場合は、QKBDTYPE システム値を JUB (日本語英語) に設定してください。 QKBDTYPE として JUB を使用することにより、1 次言語のユーザーがカタカナではなく、英語で入力できます。
2962 を二次言語にするなら一次言語は 2938 だからね...。
このあたりの文が「>|」と「|<」で囲われています。これは記述の改定が入ったことをしまます。
放置したのではなく 7.1 で記述を見直したうえで、二次言語が日本語の場合の一次言語は 2924 は使わないで...。さらに 2938 の記述を削除する見直しでも 2924 は使わないで...。
Knowledge Center は見直しが入っても二次言語が日本語の場合の一次言語は 2924 は使わないで...と言っています。
一次言語を選択する
ここでふたつの選択肢があります。
ひとつめのドキュメントを信じ一次言語を 2924 のまま利用する。
一次言語を変更する手間がかからないのがメリットです。
何かあった時は、ひとつめのドキュメントをもとに IBM にクレームするか、それでもだめならその時に 2984 にするという考えです。
もう一つは最初から 2984 にしてしまうという考え方です。
構築初期に手間はかかりますが安心して運用できます。
英語 OS なので「PowerVS IBM i 日記(10): 一次言語を 2962 日本語にする (DST で日本語が化けるけど)」で発生する DST の問題も起こりません。
一次言語を 2984 English DBCS にする
ここでは、実際に一次言語を 2984 English DBCS にしてみましょう。
手順は基本的には「PowerVS IBM i 日記(10): 一次言語を 2962 日本語にする (DST で日本語が化けるけど)」と同じです。
二次言語として導入済みの言語を一次言語には変更できなので、2984 が二次言語として導入済みであれば削除します。
グループ 3 のメディアをイメージカタログにセットします。
手動モードでの起動をセットします。
再起動します。
PWRDWNSYS OPTION(*IMMED) RESTART(*YES) CONFIRM(*NO)
下記に従い一次言語を変更します。文字化けが起こらないので安心ですね。
「2. Install the operating system」
「3. Virtual device - preselected image catalog」を選択します。
Enter で確認します。
「2924」から「2984」に変更します。
Enter で確認します。
IPL が進行します。
「2=Change install options」を選択します。
「3=Restore only language objects from current media set」を選択します。
待ちます。
あっけなくサインオン画面がでました。
Enter で進みます。
Enter で進みます。
しばし待ちます、
QSYSSBSDにつながっています。
すんなり、一次言語が変更されました。
2962 に変更した時の苦労は何だったんでしょう。
起動モードを通常にします。
再起動します。
PWRDWNSYS OPTION(*IMMED) RESTART(*YES) CONFIRM(*NO)
一次言語の変更後のライセンス・プログラムのインストール
ここまでで OS のベース部分の一次言語は日本語になりましたが、ライセンス・オプションの一次言語が 2984 になっていません。
「1 次言語の変更後のライセンス・プログラムのインストール」の手順に進みます。
制限状態に、メッセージの表示を変更します。制限状態にするのは、この後 QGPL の導入があるためです。
ENDSBS SBS(*ALL) OPTION(*IMMED)
CHGMSGQ QSYSOPR *BREAK SEV(95)
「GO LICPGM」に進みます。
今回は一次言語メディアがIMGCLGにセット済みです。
「11. Install licensed programs」を選びます。
しかし、これは失敗でした。導入に使った基本メディアセットに含まれていないライセンンスオプションの二次言語は、ここからは導入できません。
最初から二次言語メディアを使いましょう。二次言語メディアからの導入は、もっと下にあります。
この画面で「F11=Display status/release」を押します。
「*NOPRIMARY」と表示されているオプションを追加で「1」で選択します。
あらかじめ「1」が入っているところは必須です。除去すると進みません。
最後まで繰り返し、Enter です。
Enter で確認します。
「3=Language objects」「2=Display software agreement」を選びます。
導入が開始されます。
正常に完了しませんでした。
導入に使用した標準メディアセットに含まれていないライセンスオプションは、二次言語も含まれているはずがなく導入されません。
結局、二次言語のメディアを使います。最初からこちらを使うべきでした。
二次言語のメディアを使う時は「1. Install all」を選択します。
「1=Installed products」「Replace if current: N」「Nonaccepted agreement: 2」「Automatic IPL: N」をセットします。
導入が開始されました。
今回も正常完了しませんでした。
いくつかは入りました。
しかし二次言語メディアにも含まれないライセンスオプションがあったようです。
一次言語の置き換えができなかったライセンスオプションを確認すると 2924 のままです。
そのようなライセンスは単独のメディアて提供されているはずです。一次言語を2984 にするにはライセンスのメディアを入手する必要があります。
しかし、2924 が利用できれば問題ないでしょう。
クロスリファレンスの言語変更
DB2 for i の各種情報がクロスリファレンスファイルとしてシステムに保管されています。クロスリファレンスファイルの CCSID は一次言語で決まります。
どの CCSID なのか、例えば QSYS/QADBXREF で確認できます。
DSPFFD FILE(QSYS/QADBXREF)
2984 の場合「28709 中国語 (繁体字)」にセットされています。
これをAPIで日本語に変更します。
Change Cross Reference CCSID (QDBCXRC) API
下記では CCSID を 1399 に変更しています。「0577」は1399の 16 進数表記です。
CALL PGM(QSYS/QDBCXRC) PARM(X'00000577' X'00000000')
もう一度確認すると「5123 日本ローマ字 (ユーロ対応)」になりました。このフィールドは SBCS なので 1399 の SBCS の部分の 5123 が表示されました。
これで作業の完了です。
一次言語を 2984 にする必然性 - APW とか
(当項 2020/10/03 追加)
日本語を利用するために一次言語を 2924 ではなく 2984 にする必然性をひとつ思いつきました。
言語コード 2924 には「5761-AP1 IBM Advanced DBCS Printer Support for iSeries」用の言語セットが用意されていないのです。
5761-AP1 は APW 用のライセンスです。
5761-AP1 用の言語セットが用意されているのは DBCS 用言語だけで、英語の場合は 2938 か 2984 になります。
一次言語が SBCS 向けの導入メディアには、5761-AP1 が含まれていません。
「メディアのラベルと内容」でも、下記のようにアジア向けの導入媒体にしか AP1 が用意されていないことが示されています
IBM Advanced DBCS Printer Support for iSeries (B_GROUP3_04 のみ)
なお別の日記で書いたように、Web ページには AP1 も Cloud のイメージに含まれると書いてありましたが、実際には導入されていませんでした。
ただしライセンスキーが正しく登録されている場合は 一次言語が 2924 でも自分で導入すれば利用できそうでした。
2020/10/30 「一次言語を 2984 にする必然性 - APW とか」を追記
当日記のIndexはこちらです。
許可の無い転載を禁じます。
この記事は筆者の個人的な責任で無保証で提供しています。
当記事に関してIBMやビジネスパートナーに問い合わせることは、固くお断りします。