Unicode サポートのカスタマイズ
Db2 でUnicodeデータを使用するには、 z/OS® のUnicodeサポートをカスタマイズする必要があります。
始める前に
プロシージャー
Unicode サポートをカスタマイズするには、次のようにします。
- ジョブ・カードをカスタマイズする。IBM® によって出荷された hlq.SCUNJCL のジョブには、JOB 文の値としてプレースホルダが設定されています。例えば、以下の例のようなものです
これらの値をカスタマイズするには、hlq.SCUNREXX内の REXX EXEC CUNRUCSTを使用します。 REXX EXEC CUNRUALLを実行すると、指定した値がすべてのJCLイメージに供給されます。 変更された日付/時刻フォーマットを使用した日本語メッセージまたは英語メッセージを表示することにより、ご使用の システムをカスタマイズするように選択できます。 メッセージサービスを設定して、 z/OS メッセージサービスを設定して、メッセージの表示方法を指定することができます。//$JOBPREF$$JOBNAME$ JOB ($ACCOUNT$), '$USER$', // NOTIFY=$NOTIFY$,MSGCLASS=$MC$,MSGLEVEL=$ML$, // TIME=$TI$,CLASS=$CL$,REGION=$REGION0M$ - 変換イメージをセットアップする。 以下の例は、hlq.SCUNJCL (CUNJIUTL) の中の JCL メン バーのサンプルです。
//CUNMIUTL EXEC PGM=CUNMIUTL //SYSPRINT DD SYSOUT=* //TABIN DD DISP=SHR.DSN=hlq.SCUNTBL //SYSIMG DD DSN=hlq.IMAGES(CUNIMG00),DISP=SHR //SYSIN DD * /******************************************** * INPUT STATEMENTS FOR THE IMAGE GENERATOR * ********************************************/ CASE NORMAL; /* ENABLE TOUPPER AND TOLOWER */ CONVERSION 1047,850; /* EBCDIC -> ASCII */ CONVERSION 850,1047; /* ASCII -> EBCDIC */ /*上記の例では、2 つの CONVERSION ステートメントにより EBCDIC コード・ ページ 1047 と ASCII コード・ページ 850 の間で両方向の変換が行われます。
CUNMIUTL に渡される DD 名について、以下に説明します。- SYSPRINT
- 処理済みのセットアップおよびエラー・メッセージ (該当する場合) を示すリス ト。
- TABIN
- 文字変換用および上段/下段変換用の変換テーブル。 これらは IBM から提供されています。この例では、データセット hlq.SCUNTBL に含まれています。 イメージは変換テーブルを内部形式にトランスフォームし、それらを変換イメージ に保管します。
- SYSIMG
- 出力は、変換環境全体の単一のイメージです。 変換イメージは、SYSIN DD 名の中の指定に従って作成されます。 変換イメージは、順次データ・セットの中、または固定ブロック 80 バイト形式の区分 データ・セットのメンバーの中に入っています。 この例では、イメージは、区分データ・セット・ メンバー hlq.IMAGES(CUNIMG00) の中に入っています。
- sysin
- この DD ステートメントで 2 つのタイプのステートメント、すなわち、上段/下段変換
と文字変換のステートメントが認識されています。上段/下段変換
は CASE 制御ステートメントで指定されており、文字変換は CONVERSION 制御ステートメントで指定されています。
- CASE 制御ステートメント:
- 上段/下段変換は、Unicode 文字 (例えば、UTF-8) を上段シフトの同等文字または下段シフトの 同等文字に変換することとして定義されています。 上記の例では CASE NORMAL が指定されており、これは、上段/下段の基本変換が提供されることを意味します。 この基本上段/下段変換は、Unicode コンソーシアムによって提供される UnicodeData.txt ファイルに基づいています。 この変換には、Unicode コンソーシアムの提供する SpecialCasing.txt ファイルで説明されているように、特殊な上段シフト/下段シフト文字は含まれていません。 特殊な上段/下段文字とは、一般的には、上段シフトと下段シフトの表示に重大な違い がある文字のことです。 例えば、扁平な B のように見えるドイツ語の「エスツェット」は、上段シフトのドイツ語テキストでは「SS」として表示されます。 Db2は大/小文字変換サービスを使用しないため、変換を指定する必要はありません。
- CONVERSION 制御ステートメント:
- 文字変換は、指定された CCSID 間の変換とも呼ばれます。 Db2が、指定されたコード・ページ間で文字を変換する CUNLCNV 関数を呼び出すなどのアプリケーションが起動します。 ユーザーは、CONVERSION 制御ステートメント上で可能な変換を指定する必要があります。重要: 次のようにDb2のCONVERSIONステートメントを指定します。
CONVERSION xxx,yyy,ER; CONVERSION yyy,xxx,ER;多数のコード・ページ変換が可能です。 ただし、Db2が使用する変換を識別する場合は、使用する各国語の変換、およびこれらのコード・ページからすべての Unicode CCSID への変換を行う場合にのみ考慮する必要があります。
例: EBCDIC CCSID の 37 と ASCII CCSID の 819 を使用する場合 は、以下の変換を使用する必要があります。CONVERSION 37,367,ER; CONVERSION 37,1208,ER; CONVERSION 37,1200,ER; CONVERSION 367,37,ER; CONVERSION 1208,37,ER; CONVERSION 1200,37,ER; CONVERSION 819,367,ER; CONVERSION 819,1208,ER; CONVERSION 819,1200,ER; CONVERSION 367,819,ER; CONVERSION 1208,819,ER; CONVERSION 1200,819,ER;1 つの CCSID を別の CCSID に変換するために複数の変換テーブル を使用できる場合があります。 Technique Search Order を使用して 、どのテーブルを使用すべきかを指定できます。 Technique Search Order は、最大 8 つの Technique Character からなっています。 複数の Technique Character を指定すると、イメージ生成機能は、Technique Search Order の左端の Technique Character と一致するテーブルを見つけようとします。 それが見つからないと、検索は 2 番目、さらに次へと進みます。 特に、混合変換の場合は複数の Technique Character を使用してください。その理由は、副変換の 1 つが往復モードにのみ 存在し、その副変換が強制サブセットにのみ存在する可能性があるからです。 その場合は、「RE」または「ER」の Technique Search Order が必要になります。 Technique Search Order は、オプションです。 Technique Search Order を指定しなかった場合は、RECLM が使用されます。
Enterprise Cobol などの言語製品は、RECLM 技法の検索順序を使用する場合がありますが、Db2は ER 技法検索順序を使用します。 よって、以下のような RECLM 変換を追加することも必要です。CONVERSION 1047,850,RECLM; /* EBCDIC -> ASCII */ CONVERSION 850,1047,RECLM; /* ASCII -> EBCDIC */Db2には、E (強制サブセット) と R (往復) の重要な技法文字があります。 強制サブセット変換は、対応する文字が 2 番目の CCSID に入っている文字だけ を一方の CCSID から他方の CCSID にマップします。 他の文字はすべて、置換文字で置き換えられます。 2 つの CCSID 間の往復変換は、「往復」するすべての文字が 当初の形で到達することを保証し、それは、受信側の CCSID が所定の文字をサポートしていない場合でも同様です。 往復変換は、CCSID A から CCSID B へ変換され、再び CCSID A へ変換されるコード・ポイントが保存されること を保証し、それは、CCSID B でそれらのコード・ポイントを表すことができない場合でも同様です。
- CUNJIUTL メンバー内のバッチ・ジョブを実行依頼してください。 完了時に、バッチ・ジョブは出力を SYSPRINT DD (つまり、この例では SYSOUT) に書き込み ます。 CUNJIUTL プログラムからの戻りコードがゼロであることを想定します。戻りコード・ゼロ以外のものを受け取った場合は、戻りコードの意味を参照してください。 その情報は、発生する可能性のある環境エラー、構文エラー、および意味エラーの訂正に役立ちます。
- 変換イメージを生成したら、それを SYS1.PARMLIB にコピーするか、論理 PARMLIB 連結内にあるそれ以外のデータ・セットにコピーする。 この例では、hlq.IMAGES(CUNIMG00) を SYS1.PARMLIB(CUNIMG00) へコピーします。
- 変換イメージに必要なストレージを計算する。ディスク上に変換イメージが作成されたら、そのイメージが占める仮想ストレージの量を判別 する必要があります。 この数値を、次のステップで作成する CUNUNIxx PARMLIB メンバーの REALSTORAGE パラメーターに ページ数として指定します。 REALSTORAGE パラメーターを使用すると、使用可能なストレージ量を超える 変換イメージのロードが原因で発生する主ストレージ不足からシステムを保護します。 REALSTORAGE パラメーターの最小値は、そのイメージを活動化する方法によ って異なります。
- イメージを IPL 時に活動化する場合、必要となるストレージ・サイズは、イメージに 1 ページを加算した サイズです。
- SET UNI コマンド (キーワード IMAGE を指定した PARMLIB メンバー) を使用してイメージを活動化する場合 、必要なストレージのサイズは、現在アクティブなイメージに新しい変換イメージのサイズを加算したサイズです。
システムはアクティブ・ページの数を表示します。D UNI,STORAGE新しい変換イメージが占めるストレージを判別するには、前のステップで作成された SYSPRINT ログ内 の CUN1017I メッセージを見つけてください。 このメッセージは、新しい変換イメージに必要なページ数を示しています。 以下に例を示します。CUN1017I GENERATED IMAGE SIZE 291 PAGES........あるいは、REALSTORAGE 値にゼロを指定します。これは、使用可能なストレージが無制限 であることを意味します。 この場合、値として 524 287 ページが使用されます。
- PARMLIBメンバ CUNUNIxx (変換環境を起動するためのPARMLIBメンバ)を作成します。通常、このメンバーは SYS1.PARMLIB の中に作成されますが、この例では、論理 PARMLIB 連結内の別のデータ・ セット内に作成します。 この例では、SYS1.PARMLIB を使用します。xx には、任意の 2 文字の英数字、または特殊文字の @、#、または $ を使用できます。この例では 00 を使用します。 以下は、SYS1.PARMLIB(CUNUNI00) に指定されたサンプルの PARMLIB メンバーです。
REALSTORAGE 292; IMAGE CUNIMG00;CUNMIUTL は 291 ページを必要とし、IPL 時に追加の 1 ページが必要になるので 、REALSTORAGE ステートメントは、292 ページの実ストレージが必要であることを示しています。
IMAGE パラメーターは、SYS1.PARMLIB (または論理連結の中のデータ・セット) の メンバー CUNIMG00 の中で変換イメージを検索することを表しています。
PARMLIB メンバーを作成して現行の変換環境を削除することもできます。
- 以下のアクションのいずれかを行います。
- IEASYSxx を編集する。
このパラメーターは、変換環境を構成するキーワードが入った 1 つ以上 の CUNUNIxx PARMLIB メンバーを指定します。 それぞれの接尾部 xx は、PARMLIB 連結内の 1 つの CUNUNIxx メンバーを指定します。 複数の PARMLIB メンバーが指定された場合、それらのメンバーは指定された順序で連結されます。 連結された内容は、内部的には単一メンバーとして扱われます。 つまり、各行には連続番号が付けられ、構文エラーに関するエラー・メッセージは連 結されたテキストを参照します。 キーワードの制限は、連結されたテキスト全体に適用されます。
- IEASYSxx 内のパラメーター MAXCAD を検査する。 このパラメーターはシステム内の共通データ・スペースの量を制限します。 MAXCADが指定されている場合、 z/OS Unicodeのサポートにより、最大2つの共通データスペースが作成されることを考慮してください。
- IEASYSxx を編集する。
- 変換環境を IPL で初期化する。
- システムが初期化された後、DISPLAY UNI システムコマンドを使用して現在の z/OS Unicodeステータスを表示したり、SET UNI システムコマンドを使用して変換環境を変更したりすることができます。