よくある質問

このドキュメントでは、次のトピックについて説明します。


起動エラー「Invalid code page specified」が表示されるのはなぜですか。

プロファイルパラメータ CP で定義したコードページが、存在しないか(有効な ICU コードページについては http://demo.icu-project.org/icu-bin/convexp、適切な IANA 名については http://www.iana.org/assignments/character-sets を参照)、またはプラットフォームで無効なデフォルトコードページです(例えば、EBCDIC コードページは Windows、UNIX、または OpenVMS プラットフォームでは使用できません)。

"デフォルトコードページ" とは何ですか。

デフォルトコードページとは、プロファイルパラメータ CP の評価の結果のコードページです。CP が入力されていない場合、現在のオペレーティングシステムコードページがデフォルトコードページとなります。

Natural for UNIX によってサポートされているプラットフォームでは、必ず CP パラメータを定義する必要があります。これは、ICU のデフォルトが UNIX プラットフォームごとに異なって定義されている場合があり、この定義も、新しい ICU バージョンを持つ特定のプラットフォームで変わる場合があるためです。

どのデフォルトコードページが使用されていますか。

コードページから Unicode への変換、およびその逆の変換のために Natural によって使用されているデフォルトコードページは、システム変数 *CODEPAGE の内容を表示することによって知ることができます。

すべての Natural ソースを UTF-8 フォーマットで保存する必要がありますか。

使用する文字およびソースを保存するプラットフォームによります。Unicode 定数を使用する場合、文字のすべての組み合わせを保存できるのは UTF-8 のみです。ただし、16 進 UH 定数を定義して、それをコードページソースに保存することもできます。16 進定数の短所は、定数のすべての文字の UTF-16 エンコードを知る必要があることです。メインフレームでは、ソースの UTF-8 フォーマットは使用できません。UNIX および OpenVMS では、UTF-8 ソースは SPoD 経由でのみ処理できます。UNIX または OpenVMS 上でローカルに処理することはできません。

どうすれば Natural コードで UTF-8 エンコードを処理できますか。

UTF-8 から UTF-16 への変換のために MOVE ENCODED ステートメントを使用します。A フォーマット変数に対してコードページ "UTF-8" を使用する必要があります。

一部の文字が正しく表示されないのはなぜですか。

正しいコードページを使用しているかどうかを確認してください。コードページが正しい場合は、選択したフォントによって、表示する文字がサポートされているかどうかを確認してください。

Natural ソースを編集するときにエラーが発生するのはなぜですか。

ソースに対して定義されているコードページが正しくありません。ソースの内容を Unicode に変換するときに、変換エラーが発生します。Unicode に正常に変換されるように、ソースのエンコードを変更してください。

Natural ソースを保存するときにエラーが発生するのはなぜですか。

ソースの読み取りに使用されたコードページに変換されない文字をソースに入力しました。これらの文字を誤って入力したか、本当にソースに保存するかを確認してください。最初の場合には、誤った文字を削除してソースを保存します。2 つ目の場合には、ソースを UTF-8 フォーマットで保存するか、または文字が U 定数に含まれている場合は、代わりに UH 定数を使用します。

ソースのコードページに含まれていない文字を入力していない場合は、プロファイルパラメータ SRETAINOFF に設定されているかどうかを確認します。この設定の場合、ソースはデフォルトコードページで保存されます。当該のソースが以前に別のコードページで保存された場合は、変換エラーが発生する場合があります。

Natural ソースのエンコードはどうすればわかりますか。

Natural スタジオでは、ソースノードの[Properties]ダイアログボックスを呼び出します。[General]ページに、ソースのエンコードが表示されます。[Encoding]テキストボックスが空の場合、ソースに対して特定のエンコードは保存されていません。つまり、ソースを読み取るときにデフォルトのエンコードが使用されます。

Natural スタジオのリストビューウィンドウにも、リストされているすべてのオブジェクトのエンコードが表示されます。

Natural ソースのエンコードはどうすれば変更できますか。

Natural スタジオでは、ソースノードの[Properties]ダイアログボックスを呼び出します。[General]ページに、ソースのエンコードが表示されます。これが正しいエンコードではない場合は、[Change]ボタンを選択して変更できます。使用できるコードページのリストが表示され、ソースに対して正しいエンコードを選択できます。

どうすれば既存の Natural ソースを UTF-8 フォーマットに変換できますか。

正しいコードページを使用して Natural エディタでソースを開きます。[Save As]でソースを保存し、[Save As]ダイアログボックスでエンコードとして UTF-8 を選択します。

文字を変換できない場合、どの置換文字が使用されますか。

変換の方向によって異なります。コードページの文字を Unicode に変換できない場合は、Unicode 置換文字 "U+FFFD" が使用されます。Unicode の文字をコードページに変換できない場合は、このコードページに対して ICU によって定義されている置換文字が使用されます。

Unicode からデフォルトコードページへの変換の場合、プロファイルパラメータ SUBCHAR を設定することによって、置換文字を変更できます。

以前の Natural バージョンで UTF-8 ソースを使用できますか。

いいえ。以前の Natural バージョンでは、コードページ情報は認識されません。UTF-8 ソースは、現在のシステムコードページとして解釈されます。

UTF-8 フォーマットのソースをカタログするときに変換エラーが発生するのはなぜですか。

コードポイントを変換できないため、UTF-8 フォーマットの Natural ソースはカタログできません。

UTF-8 フォーマットのソース内のすべての A 定数は、生成されるプログラムに保存するときに、デフォルトコードページに変換されます。デフォルトコードページに含まれない文字を A 定数から削除するか、A 定数の代わりに U 定数を使用してください。

端末エミュレーションを経由して U フォーマットを表示するときに、UNIX または OpenVMS でガーベッジが表示されるのはなぜですか。

端末エミュレーションに出力が表示される前に、デフォルトコードページに含まれないすべての文字は、コードページの置換文字で置き換えられます。ASCII コードページの場合、ICU 変換テーブルによって定義される置換文字が "0x1A" である場合があります。これは、UNIX または OpenVMS 端末で制御文字である場合があります。I/O ステートメントで U フォーマットを使用する場合は、Natural Web I/O インターフェイスを使用することを強くお勧めします。端末エミュレーションの使用が不可欠な場合は、置換文字(SUBCHAR)を出力可能な文字("?" など)に変更できます。

現在の SPoD クライアントと古い SPoD サーバーを使用できますか。

はい。ただし、SPoD クライアントのコードページをサーバーソースのコードページに設定する必要があります。

http://documentation.softwareag.com/natural/spod_prereq/prereq.htm の「Prerequisites for Natural Single Point of Development」(Empower のログインが必要です)も参照してください。

現在の SPoD サーバーと古い SPoD クライアントを使用できますか。

はい。ただし、ソースのエンコードを定義している場合は、お勧めしません。

http://documentation.softwareag.com/natural/spod_prereq/prereq.htm の「Prerequisites for Natural Single Point of Development」(Empower のログインが必要です)も参照してください。