このドキュメントでは、次のトピックについて説明します。
どうすれば既存の Natural ソースを UTF-8 フォーマットに変換できますか(Windows、UNIX、および OpenVMS のみ)。
端末エミュレーションを経由して U フォーマットを表示するときに、UNIX または OpenVMS でガーベッジが表示されるのはなぜですか。
プロファイルパラメータ CP
で定義したコードページが、存在しないか(有効な ICU コードページについては http://demo.icu-project.org/icu-bin/convexp、適切な IANA 名については http://www.iana.org/assignments/character-sets を参照)、またはプラットフォームで無効なデフォルトコードページです(例えば、EBCDIC コードページは Windows、UNIX、または OpenVMS プラットフォームでは使用できません)。
メインフレームプラットフォームでは、コードページは NTCPAGE
によって Natural コンフィグレーションファイルに指定されている必要があります(「NTCPAGE マクロ」も参照)。 ここに入力されていないコードページは、ICU 実装で使用可能であっても、無効として拒否されます。 NATCONFG
で指定されているのと同じ IANA 名、CCSID/CCSN、またはエイリアス名が使用されているかどうかを確認してください。
デフォルトコードページとは、プロファイルパラメータ CP
の評価の結果のコードページです。 CP
が入力されていない場合(Windows、UNIX、および OpenVMS)、現在のオペレーティングシステムコードページがデフォルトコードページとなります。
コードページから Unicode への変換、およびその逆の変換のために Natural によって使用されているデフォルトコードページは、システム変数 *CODEPAGE
の内容を表示することによって知ることができます。
使用する文字およびソースを保存するプラットフォームによります。 Unicode 定数を使用する場合、文字のすべての組み合わせを保存できるのは UTF-8 のみです。 ただし、16 進 UH 定数を定義して、それをコードページソースに保存することもできます。 16 進定数の短所は、定数のすべての文字の UTF-16 エンコードを知る必要があることです。 メインフレームでは、ソースの UTF-8 フォーマットは使用できません。 UNIX および OpenVMS では、UTF-8 ソースは SPoD 経由でのみ処理できます。UNIX または OpenVMS 上でローカルに処理することはできません。
UTF-8 から UTF-16 への変換のために MOVE ENCODED
ステートメントを使用します。A フォーマット変数に対してコードページ "UTF-8" を使用する必要があります。
正しいコードページを使用しているかどうかを確認してください。 コードページが正しい場合は、選択したフォントによって、表示する文字がサポートされているかどうかを確認してください。
ソースに対して定義されているコードページが正しくありません。 ソースの内容を Unicode に変換するときに、変換エラーが発生します。 Unicode に正常に変換されるように、ソースのエンコードを変更してください。
メインフレームプラットフォームでは、ソースは作成時のコードページで保存されます。 保存されたソースのコードページから現在の Natural セッションのコードページにソースが変換されなかった場合、変換エラーが発生します。 変換を避けるために、ソースのコードページを使用して Natural を開始できます。または、エディタが開始されたときに表示されるウィンドウで、変換不可能な文字を調整できます。
ソースの読み取りに使用されたコードページに変換されない文字をソースに入力しました。 これらの文字を誤って入力したか、本当にソースに保存するかを確認してください。 最初の場合には、誤った文字を削除してソースを保存します。 2 つ目の場合には、ソースを UTF-8 フォーマットで保存するか、または文字が U 定数に含まれている場合は、代わりに UH 定数を使用します。
ソースのコードページに含まれていない文字を入力していない場合は、プロファイルパラメータ SRETAIN
が "OFF" に設定されているかどうかを確認します。 この設定の場合、ソースはデフォルトコードページで保存されます。 当該のソースが以前に別のコードページで保存された場合は、変換エラーが発生する場合があります。
SPoD 経由でメインフレーム環境に接続している場合、メインフレームのソースは、SPoD 環境では変換されて Unicode で編集されます。 保存される場合は、Natural サーバーのコードページに変換される必要があります。 Unicode 文字が Natural サーバーセッションのコードページでマップされない場合は、変換エラーが発生する場合があります。
SPoD を使用しないネイティブ Natural for Mainframes 環境の場合、変換は実行されないため、ソースを保存するときにエラーは発生しません。 ソースは、現在の Natural セッションのコードページ情報を使用して保存されます。
Natural スタジオでは、ソースノードの[プロパティ]ダイアログボックスを呼び出します。 [一般]ページに、ソースのエンコードが表示されます。 [エンコード]テキストボックスが空の場合、ソースに対して特定のエンコードは保存されていません。 つまり、ソースを読み取るときにデフォルトのエンコードが使用されます。
Natural スタジオのリストビューウィンドウにも、リストされているすべてのオブジェクトのエンコードが表示されます。
メインフレームプラットフォームでは、コードページ情報は Natural ソースディレクトリの一部です。 Natural for Mainframes で LIST DIR
コマンドを使用して、ディレクトリを表示します。
Natural スタジオでは、ソースノードの[プロパティ]ダイアログボックスを呼び出します。 [一般]ページに、ソースのエンコードが表示されます。 これが正しいエンコードではない場合は、 ボタンを選択して変更できます。使用できるコードページのリストが表示され、ソースに対して正しいエンコードを選択できます。
メインフレームプラットフォームでは、CP
パラメータを使用して、目的のコードページで Natural セッションを開始する必要があります。 パラメータ SRETAIN
を "OFF" に設定し、ソースを編集して保存します。 これで、ソースのコードページ情報は変更されます。 または、SYSCP
ユーティリティを使用して、ソースのコードページ割り当てを確認または変更することもできます。
正しいコードページを使用して Natural エディタでソースを開きます。 [名前をつけて保存]ダイアログボックスでエンコードとして UTF-8 を選択します。
でソースを保存し、変換の方向によって異なります。コードページの文字を Unicode に変換できない場合は、Unicode 置換文字 "U+FFFD" が使用されます。 Unicode の文字をコードページに変換できない場合は、このコードページに対して ICU によって定義されている置換文字が使用されます。
Natural for Mainframes では、コードページの置換文字または、コンフィグレーションファイルで指定されている場合は、プレースホルダ文字が使用されます。
Unicode からデフォルトコードページへの変換の場合、Windows、UNIX、および OpenVMS プラットフォームでは、プロファイルパラメータ SUBCHAR
を設定することによって、置換文字を変更できます。
Natural for Mainframes では、以前の Natural バージョンで Natural 4.2 ソースを使用できます。 ソースのレイアウトは変更されておらず、以前のバージョンでソースにアクセスした場合、Natural 4.2 ソースの追加のコードページ情報は単純に無視されます。
できません。 以前の Natural バージョンでは、コードページ情報は認識されません。UTF-8 ソースは、現在のシステムコードページとして解釈されます。
コードポイントを変換できないため、UTF-8 フォーマットの Natural ソースはカタログできません(Windows、UNIX、および OpenVMS のみ)。
UTF-8 フォーマットのソース内のすべての A 定数は、生成されるプログラムに保存するときに、デフォルトコードページに変換されます。 デフォルトコードページに含まれない文字を A 定数から削除するか、A 定数の代わりに U 定数を使用してください。
端末エミュレーションに出力が表示される前に、デフォルトコードページに含まれないすべての文字は、コードページの置換文字で置き換えられます。 ASCII コードページの場合、ICU 変換テーブルによって定義される置換文字が "0x1A" である場合があります。これは、UNIX または OpenVMS 端末で制御文字である場合があります。 I/O ステートメントで U フォーマットを使用する場合は、Natural Web I/O インターフェイスを使用することを強くお勧めします。
端末エミュレーションの使用が不可欠な場合は、置換文字(SUBCHAR
)を出力可能な文字("?" など)に変更できます。
メインフレームプラットフォームでは、端末エミュレーションを使用できます。NTCPAGE
マクロで、表示可能なプレースホルダ文字によって置換文字を置き換えることができるためです。 プレースホルダ文字によって、変換不可能な文字があった場合にガーベッジを回避できます。
はい。ただし、SPoD クライアントのコードページをサーバーソースのコードページに設定する必要があります。
「Prerequisites for Natural Single Point of Development」(http://documentation.softwareag.com/natural/spod_prereq/prereq.htm)を参照してください。
はい。ただし、ソースのエンコードを定義している場合は、お勧めしません。
「Prerequisites for Natural Single Point of Development」(http://documentation.softwareag.com/natural/spod_prereq/prereq.htm)を参照してください。