BTEQでは、U+0000からU+10FFFFまでの範囲のすべてのUnicode文字がサポートされています。BMP以外の文字をデータベース間で送受信するには、次のステートメントを使用して"Unicode Pass Through"機能をオンにする必要があります。
SET SESSION CHARACTER SET UNICODE PASS THROUGH ON;
Unicode文字のサイズは異なる場合があることに注意してください。UTF-8文字の場合は1バイトから4バイト、UTF-16文字の場合は2バイトから4バイトになります。このため、出力またはエクスポート ファイルのサイズは、ファイルに含まれている文字数を表わすものではありません。
ユーザーの責任において、UTF-16入力ファイルのエンディアンがBTEQを実行しているプラットフォームのエンディアンと同じであることを確認する必要があります。 異なる場合、またはBOMが正しくない場合、BTEQはエラーを報告します。
ワークステーション接続システム
UTF-8またはUTF-16セッションを開始する場合、-cオプションを使用してセッション文字セット エンコードを定義し、また場合によっては-eオプション(バッチ モード)または-mオプション(対話モード)を使用してI/Oエンコードを定義することを推奨します。
BOMは、以下の入力ファイルで任意選択できます。
- stdinでリダイレクトされるファイル
- RUNコマンドで実行されるファイル
- REPORT形式のインポート ファイル
- VARTEXT形式のインポート ファイル
- SQL(内部)ストアド プロシージャ ソース ファイル
- LDOテキスト ファイル
オプションのBOMは、次の出力ファイルに書き込むことができます。
- ファイルまたはパイプにリダイレクトされているstdoutおよびstderr
- MESSAGEOUTコマンドを使用して生成されるファイル
- REPORT形式のエクスポート ファイル
- DIF形式のエクスポート ファイル
- LDOテキスト ファイル
メインフレーム接続システム
z/OS BTEQは、次の方法でUnicodeセッションをサポートしています。
- 入力データ(SYSINとして定義またはRUNコマンドによる実行用に定義)はEBCDICとして読み取る
- 出力データ(SYSOUTとして定義またはMESSAGEOUTコマンドを使用して生成)はEBCDICとして書き込む
- VARTEXT形式のインポート ファイルとLDOテキスト インポート ファイルは、セッション文字セット エンコード(UTF-8またはUTF-16)を使用する。 BOMは任意選択。
- REPORTおよびDIF形式のエクスポート ファイルおよびLDOテキスト エクスポート ファイルは、セッション文字セット エンコード(UTF-8またはUTF-16)で書き込む。
Unicodeに比べて、EBCDICで扱える文字は大幅に少なくなります。 EBCDICにはないUnicode文字をSYSOUT(またはMESSAGEOUTファイル)に表示しようとすると、変換エラーが生じます。