...

IBM Informix GLS ユーザーズ ガイド (日本語版) (PDF:1.6MB)

by user

on
Category: Documents
84

views

Report

Comments

Transcript

IBM Informix GLS ユーザーズ ガイド (日本語版) (PDF:1.6MB)
IBM Informix GLS
򔻐򗗠򙳰
ユーザーズ ガイド
バージョン 9.4
GB88-8629-00
(英文原典:G251-1241-00)
IBM Informix GLS
򔻐򗗠򙳰
ユーザーズ ガイド
バージョン 9.4
GB88-8629-00
(英文原典:G251-1241-00)
お願い
本書および本書で紹介する製品をご使用になる前に、169 ページの『特記事項』に記載されている情報をお読みください。
本書には、IBM の専有情報が含まれています。その情報は、使用許諾条件に基づき提供され、著作権により保護され
ています。本書に記載される情報には、いかなる製品の保証も含まれていません。また、本書で提供されるいかなる
記述も、製品保証として解釈すべきではありません。
IBM は、お客様が提供するいかなる情報も、お客様に対してなんら義務も負うことのない、自ら適切と信ずる方法
で、使用もしくは配布することができるものとします。
本マニュアルに関するご意見やご感想は、次の URL からお送りください。今後の参考にさせていただきます。
http://www.ibm.com/jp/manuals/main/mail.html
なお、日本 IBM 発行のマニュアルはインターネット経由でもご購入いただけます。詳しくは
http://www.ibm.com/jp/manuals/
の「ご注文について」をご覧ください。
(URL は、変更になる場合があります)
お客様の環境によっては、資料中の円記号がバックスラッシュと表示されたり、バックスラッシュが円記号と表示さ
れたりする場合があります。
原 典: G251-1241-00
IBM Informix GLS
User’s Guide
Version 9.4
発 行: 日本アイ・ビー・エム株式会社
担 当: ナショナル・ランゲージ・サポート
第1刷 2003.5
この文書では、平成明朝体™W3、平成明朝体™W9、平成角ゴシック体™W3、平成角ゴシック体™W5、および平成角
ゴシック体™W7を使用しています。この(書体*)は、
(財)日本規格協会と使用契約を締結し使用しているものです。
フォントとして無断複製することは禁止されています。
注* 平成明朝体™W3、平成明朝体™W9、平成角ゴシック体™W3、
平成角ゴシック体™W5、平成角ゴシック体™W7
© Copyright International Business Machines Corporation 1996, 2003. All rights reserved.
© Copyright IBM Japan 2003
目次
序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
本書について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
対象ユーザ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
ソフトウェア依存関係 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
ロケールに関する前提事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
デモンストレーション データベース. . . . . . . . . . . . . . . . . . . . . . . . . . viii
Dynamic Server の新機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
マニュアルの規則. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x
文字の表記 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x
その他の規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x
構文ダイヤグラム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
コード例の表記 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv
文字表現規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
関連マニュアル. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
参考文献 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
業界標準への対応 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
第 1 章 GLS 基本機能
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
本章の概要 . . . . . . . . . . . . . . .
GLS 機能の使用 . . . . . . . . . . . . .
IBM Informix 製品による GLS サポート . . . .
GLS ロケールの理解. . . . . . . . . . . .
文字データのコード セット . . . . . . . .
コード セットの文字クラス . . . . . . . .
文字データの照合順序 . . . . . . . . . .
エンド ユーザ フォーマット . . . . . . .
GLS ロケールの設定 . . . . . . . . . . .
クライアント/サーバ環境におけるロケール . . .
デフォルト ロケール . . . . . . . . . .
非デフォルト ロケールの設定 . . . . . . .
IBM Informix 製品での GLS ロケールの使用 . . .
非 ASCII 文字のサポート . . . . . . . .
データベース接続の確立 . . . . . . . . .
コード セット変換の実行. . . . . . . . .
メッセージ ファイルの探索 . . . . . . . .
エンド ユーザ フォーマットのカスタマイズ . . .
日時エンド ユーザ フォーマットのカスタマイズ .
通貨値のカスタマイズ . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 1
. 1
. 3
. 7
. 8
. 9
. 9
. 12
. 15
. 16
. 21
. 23
. 24
. 24
. 25
. 30
. 34
. 34
. 34
. 36
第 2 章 GLS 環境変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
本章の概要 . . . .
環境変数の設定と検索 .
GLS 関連の環境変数 .
CC8BITLEVEL . .
CLIENT_LOCALE .
DBDATE . . . .
DBLANG . . . .
DB_LOCALE . . .
DBMONEY . . .
DBNLS (IDS のみ) .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
© Copyright IBM Corp. 1996, 2003
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
37
37
38
38
39
40
40
41
43
43
iii
DBTIME (E/C のみ)
ESQLMF . . . .
GLS8BITFSYS . .
GL_DATE . . . .
GL_DATETIME . .
SERVER_LOCALE .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
44
45
45
48
53
58
第 3 章 SQL 機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
本章の概要 . . . . . . . . . . . . . . . . .
データベース オブジェクトの命名. . . . . . . . . .
識別子のルール . . . . . . . . . . . . . . .
識別子内の非 ASCII 文字 . . . . . . . . . . .
識別子内の有効な文字 . . . . . . . . . . . . .
文字データ型の使用 . . . . . . . . . . . . . .
文字データのローカライズ済み照合 . . . . . . . .
その他の文字データ型 . . . . . . . . . . . . .
文字データの処理 . . . . . . . . . . . . . . .
引用符付き文字列の指定 . . . . . . . . . . . .
コメントの指定 . . . . . . . . . . . . . . .
列サブ文字列の指定 . . . . . . . . . . . . .
TRIM 関数への引数の指定 . . . . . . . . . . .
大文字と小文字を区別しない検索関数の使用 (IDS のみ) .
文字データの照合 . . . . . . . . . . . . . .
SQL 長さ関数の使用 . . . . . . . . . . . . .
ロケールを区別するデータ型の使用 . . . . . . . . .
金額 (MONEY) 型の処理 . . . . . . . . . . . .
拡張データ型の処理 (IDS のみ) . . . . . . . . .
スマート ラージ オブジェクトの処理 (IDS のみ) . . .
データ操作文の使用 . . . . . . . . . . . . . .
WHERE 節内の条件の指定 . . . . . . . . . . .
元号ベース日付の指定 . . . . . . . . . . . . .
データのロードとアンロード . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
61
62
62
63
67
68
68
72
75
75
76
76
81
81
81
90
95
95
97
98
98
98
99
99
第 4 章 データベース サーバの機能 . . . . . . . . . . . . . . . . . . . . . . . 103
本章の概要 . . . . . . . . . . . . . . . . .
Informix データベース サーバによる GLS サポート . . .
データベース サーバ コード セット変換 . . . . . .
データベース サーバが変換するデータ . . . . . . .
ユーティリティに対するロケール特有のサポート . . . .
データベース サーバ ユーティリティの非 ASCII 文字 .
SQL ユーティリティの非 ASCII 文字 . . . . . . .
C ユーザ定義ルーチンのロケール サポート (IDS および DB
UDR の現行処理ロケール . . . . . . . . . . .
ソース コードの非 ASCII 文字 . . . . . . . . .
文字データのコピー . . . . . . . . . . . . .
IBM Informix GLS ライブラリ . . . . . . . . .
コード セット変換と DataBlade API. . . . . . . .
ロケール特有のデータ フォーマット . . . . . . .
各国対応例外メッセージ. . . . . . . . . . . .
各国対応トレース メッセージ . . . . . . . . . .
不透明 (opaque) 型でロケールを区別するデータ . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
API のみ)
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
103
103
105
105
106
107
107
108
108
109
110
110
111
113
113
117
120
第 5 章 一般的な SQL API 機能 . . . . . . . . . . . . . . . . . . . . . . . . 123
本章の概要 (E/C のみ) . . . . . . . . . . . . . . . . . .
IBM Informix クライアント アプリケーションにおける GLS のサポート .
クライアント アプリケーションのコード セット変換 . . . . . . .
iv
IBM Informix GLS: ユーザーズ ガイド
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 123
. 123
. 123
クライアント アプリケーションの国際化
国際化. . . . . . . . . . .
ローカライゼーション . . . . .
ロケール特有データの処理 . . . . .
文字の処理 . . . . . . . . .
データのフォーマット . . . . .
部分文字の回避. . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
126
126
127
129
129
130
130
第 6 章 IBM Informix ESQL/C 機能. . . . . . . . . . . . . . . . . . . . . . . 133
本章の概要 (E/C のみ) . . . . . . . . . . .
非 ASCII 文字の処理 . . . . . . . . . . . .
ホスト変数での非 ASCII 文字の使用 . . . . .
非 ASCII ファイル名の生成 . . . . . . . .
ESQL/C ソース ファイルでの非 ASCII 文字の使用.
ロケールを区別するデータの変数の定義 . . . . .
拡張 ESQL/C ライブラリ関数の使用 . . . . . .
DATE フォーマット関数 . . . . . . . . .
DATETIME フォーマット関数 . . . . . . . .
数値フォーマット関数 . . . . . . . . . .
文字列関数 . . . . . . . . . . . . . .
GLS 特有のエラー メッセージ . . . . . . .
コード セット変換の処理 . . . . . . . . . .
テキスト (TEXT) 型値の書込み . . . . . . .
DESCRIBE 文の使用 . . . . . . . . . . .
TRIM 関数の使用 . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
133
134
134
135
136
139
140
140
142
144
148
148
148
149
150
151
付録. GLS ファイルの管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
GLS ファイルへのアクセス. . . . . . . .
GLS ロケール ファイル . . . . . . . . .
ロケール カテゴリ . . . . . . . . .
ロケール ファイルの格納場所 . . . . . .
その他の GLS ファイル . . . . . . . . .
コード セット変換ファイル . . . . . .
コード セット ファイル. . . . . . . .
Informix レジストリ ファイル (Windows のみ)
未使用ファイルの削除 . . . . . . . . .
ロケール/コードセット変換ファイルの削除 .
コード セット ファイルの削除 . . . . .
glfiles ユーティリティ (UNIX のみ) . . . . .
コード セット変換ファイルのリスト . . .
GLS ロケール ファイルのリスト . . . . .
文字マッピング ファイルのリスト . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
153
154
154
158
160
160
162
163
164
164
164
165
165
166
168
特記事項. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
商標
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 172
索引 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
目次
v
vi
IBM Informix GLS: ユーザーズ ガイド
序
本書について . . . . . . . . . . . . . . vii
対象ユーザ . . . . . . . . . . . . . viii
ソフトウェア依存関係 . . . . . . . . . viii
ロケールに関する前提事項 . . . . . . . . viii
デモンストレーション データベース. . . . . viii
Dynamic Server の新機能 . . . . . . . . . . ix
マニュアルの規則. . . . . . . . . . . . . x
文字の表記 . . . . . . . . . . . . . . x
その他の規則 . . . . . . . . . . . . . x
コメント. . . . . . . . . . . . . . x
機能、製品、およびプラットフォーム . . . . xi
構文ダイヤグラム . . . . . . . . . . . xi
構文ダイヤグラムの読み方 . . . . . . . xii
キーワードと句読点 . . . . . . . . . xiii
識別子と名前 . . . . . . . . . . . xiv
コード例の表記 . . . . . . . . . . . . xiv
文字表現規則 . . . . . . . . . . . . . xv
シングルバイト文字 . . . . . . . . . xv
マルチバイト文字 . . . . . . . . . . xv
同じ文字列内のシングルバイト文字とマルチ
バイト文字 . . . . . . . . . . . . xvi
文字列内の空白文字 . . . . . . . . . xvi
後続の空白文字 . . . . . . . . . . . xvi
関連マニュアル. . . . . . . . . . . . . xvii
参考文献 . . . . . . . . . . . . . . . xix
業界標準への対応 . . . . . . . . . . . . xix
第 1 章 GLS 基本機能. . . . . . . . . . .
本章の概要 . . . . . . . . . . . . . . .
GLS 機能の使用 . . . . . . . . . . . . .
IBM Informix 製品による GLS サポート . . . .
Informix データベース サーバ . . . . . .
IBM Informix クライアント アプリケーション
およびユーティリティ . . . . . . . . .
IBM Informix GLS アプリケーション プログラ
ミング インターフェイス . . . . . . . .
サポートされるデータ型 . . . . . . . .
追加の GLS サポート . . . . . . . . .
GLS ロケールの理解. . . . . . . . . . . .
1
1
1
3
4
4
5
6
7
7
文字データのコード セット . . . . . . . . 8
コード セットの文字クラス . . . . . . . . 9
文字データの照合順序 . . . . . . . . . . 9
コード セット順序 . . . . . . . . . . 10
ローカライズ順序 . . . . . . . . . . 10
Unicode 照合 . . . . . . . . . . . . 11
照合サポート . . . . . . . . . . . . 12
エンド ユーザ フォーマット . . . . . . . 12
数値および通貨フォーマット . . . . . . 14
日付および時刻フォーマット . . . . . . 14
GLS ロケールの設定 . . . . . . . . . . . 15
クライアント/サーバ環境におけるロケール . . . 16
クライアント ロケール . . . . . . . . 17
データベース ロケール . . . . . . . . 19
サーバ ロケール. . . . . . . . . . . 21
デフォルト ロケール . . . . . . . . . . 21
デフォルト コード セット . . . . . . . 22
日付および時刻のデフォルト エンド ユーザ
フォーマット . . . . . . . . . . . . 22
数値および通貨値のデフォルト エンド ユーザ
フォーマット . . . . . . . . . . . . 23
非デフォルト ロケールの設定 . . . . . . . 23
IBM Informix 製品での GLS ロケールの使用 . . . 24
非 ASCII 文字のサポート . . . . . . . . 24
データベース接続の確立 . . . . . . . . . 25
クライアント ロケールの送信 . . . . . . 25
データベース ロケールの検証 . . . . . . 26
接続警告の検査 . . . . . . . . . . . 26
サーバ処理ロケールの決定 . . . . . . . 27
コード セット変換の実行. . . . . . . . . 30
コード セット変換の実行時期 . . . . . . 32
メッセージ ファイルの探索 . . . . . . . . 34
エンド ユーザ フォーマットのカスタマイズ . . . 34
日時エンド ユーザ フォーマットのカスタマイズ 34
元号ベースの日時フォーマット . . . . . . 35
日時の優先順位 . . . . . . . . . . . 35
通貨値のカスタマイズ . . . . . . . . . . 36
本書について
本書では、IBM Informix 製品で利用できる広域言語サポート (GLS) 機能について
説明します。 GLS 機能を使用すると、IBM Informix アプリケーション プログラ
ミング インターフェイス (API) と IBM Informix データベース サーバが、異なる
言語、文化上の慣習、およびコード セットを処理できるようになります。本書で
は、GLS に固有の、言語に関するトピックのみを説明します。
本書では、Microsoft Windows と UNIX の両方について、Informix データベース
サーバの GLS 情報を取り上げます。
© Copyright IBM Corp. 1996, 2003
vii
対象ユーザ
本書は、IBM Informix 製品を用いて各国対応データベース管理アプリケーションを
作成するために GLS 環境を使用するシステム管理者とアプリケーション開発者を
対象に書かれています。
本書は、非デフォルト ロケールで IBM Informix 製品を使用する必要のあるユーザ
を主に対象としています。ユーザは Informix データベース サーバと関連製品を使
い慣れているものと想定されています。そうでない場合は、「IBM Informix: スター
トアップ ガイド」を参照してください。
ファイル名、パス名、および他のコンテキスト内の非 ASCII 文字をサポートする、
オペレーティング システムの機能について詳しい情報が必要な場合は、オペレーテ
ィング システムのマニュアルを参照してください。
ソフトウェア依存関係
本書では、IBM Informix Dynamic Server バージョン 9.4 を、GLS ライブラリのバ
ージョン 4.0 とともにデータベース サーバとして使用することを想定しています。
(IBM Informix Extended Parallel Server バージョン 8.4 は GLS ライブラリのバー
ジョン 3.13 を使用します。後続の節 xvii ページの『関連マニュアル』で説明され
ている IBM Informix データベース サーバのリリース ノートも参照してくださ
い。)
ロケールに関する前提事項
IBM Informix 製品は、多くの言語、国/地域別環境、およびコード セットをサポー
トできます。文化的差異に基づいた情報がすべて、GLS ロケールと呼ばれる単一の
環境にまとめられています。
本書では、デフォルト ロケールとして U.S. 8859-1 英語のロケールを使用している
ものと想定しています。デフォルトは、UNIX プラットフォームでは en_us.8859-1
(ISO 8859-1) になり、Windows 環境の場合には en_us.1252 (Microsoft 1252) にな
ります。このロケールは、日付、時刻、および通貨について米国英語 (U.S. English)
フォーマットの規則をサポートし、ISO 8859-1 または Microsoft 1252 コード セッ
ト (ASCII コード セットに é、è、ñ などの多くの 8 ビット文字を加えたものを含
む) もサポートします。データまたは SQL 識別子で非デフォルト文字を使用する予
定の場合、または文字データの非デフォルト照合ルールに準拠する場合は、適切な
非デフォルト ロケールを指定する必要があります。
デモンストレーション データベース
IBM Informix データベース サーバ製品に提供された DB–Access ユーティリティに
は、次のデモンストレーション データベースが 1 つ以上含まれます。
v stores_demo データベースは、架空のスポーツ用品卸売り業者に関する情報を
備えたリレーショナル スキーマを示したものです。 IBM Informix マニュアルの
多くの例が、このデータベースを基にしています。
Extended Parallel Server
viii
IBM Informix GLS: ユーザーズ ガイド
v sales_demo データベースは、データ ウェアハウジング アプリケーションの次
元スキーマを説明しています。次元データ モデルの概念については、
「IBM Informix: Database Design and Implementation Guide」を参照してくださ
い。
Extended Parallel Server の終り
Dynamic Server
v superstores_demo データベースは、オブジェクト リレーショナル スキーマを
示したものです。このデータベースには、拡張データ型、型と表継承、およびユ
ーザ定義ルーチンの例が含まれます。
Dynamic Server の終り
デモンストレーション データベースを構築する方法の情報については、
「IBM Informix: DB-Access ユーザーズ ガイド」を参照してください。データベー
スおよびその内容の説明については、「IBM Informix: SQL ガイド: 参照」を参照し
てください。
デモンストレーション データベースをインストールするために使用するスクリプト
は、UNIX プラットフォームでは $INFORMIXDIR/bin ディレクトリに、Windows
環境では %INFORMIXDIR%¥bin ディレクトリにあります。
Dynamic Server の新機能
SET COLLATION 文を使用して、DB_LOCALE が指定するものとは異なるロケー
ルのローカライズ済み照合順序を指定できます。このローカライズ済み照合は、同
じセッションの各国語文字 (NCHAR) および各国語可変長文字 (NVARCHAR) 型の
ソート操作に適用されます。照合順序が DB_LOCALE 設定と異なる場合、各国語
文字 (NCHAR) または各国語可変長文字 (NVARCHAR) 型値をソートするデータベ
ース オブジェクトは、オブジェクトが作成されたときに有効になった照合順序を使
用します。
Dynamic Server V9.40 で提供される GLS ライブラリのバージョン 4.0 には、次の
新機能が追加されました。
v Unicode コード セット (UTF-8) の Unicode (ICU) インプリメンテーション用の
オープン ソース各国対応コンポーネント
v ICU Unicode 照合アルゴリズムを基にした Unicode 照合 (Unicode コード セット
を使用するロケール内)
v 中国語文字のための GB18030-2000 コード セットの完全サポート
(Dynamic Server V9.40 の新しい機能の包括的なリストについては、「IBM Informix:
スタートアップ ガイド」を参照してください。)
序
ix
マニュアルの規則
本節では、このマニュアルで使用している規則について説明します。これらの規則
によって、マニュアル セットのこのボリュームと他のボリュームからの情報の収集
が容易になります。
次の規則について説明します。
v 文字の表記
v その他の規則
v 構文ダイヤグラム
v コマンド行の規則
v コード例の表記
文字の表記
このマニュアルでは、新しい用語の紹介、画面表示の説明、コマンド構文の説明な
どに次の規則を使用します。
規則
意味
KEYWORD
プログラム言語の文における主要素 (キーワード) は、すべて大文字のセ
リフ フォントで表示される。
italics
italics
italics
テキストの場合、新しい用語および強調される単語はイタリックで表示さ
れる。構文およびコード例の場合、ユーザが指定する可変値はイタリック
で表示される。
boldface
boldface
プログラム エンティティ (クラス、イベント、および表など) の名前、
環境変数、ファイルおよびパスの名前、およびインターフェイス エレメ
ント (アイコン、メニュー項目、およびボタンなど) は太文字で表示され
る。
monospace
monospace
製品によって表示される情報およびユーザが入力した情報は、モノスペー
ス タイプフェースで表示される。
KEYSTROKE
ユーザが押すキーは、大文字のサンセリフ フォントで表示される。
→
この記号はメニュー項目を示す。たとえば、『「Tool」→「Options」を
選択』は、「Tools」メニューから「Options」を選択するという意味に
なる。
ヒント: 文字を「入力する」またはコマンドを「実行する」という指示がある場
合、入力した後にすぐに Enter を押してください。テキストを「入力す
る」または他のキーを「押す」という指示がある場合には、Enter を押す
必要はありません。
その他の規則
マニュアル全体を通して、いくつかの異なるタイプのマークアップで識別されるテ
キストが見つかります。
コメント
コメントは、次の例に示すように、3 つのタイプの情報を識別します。
x
IBM Informix GLS: ユーザーズ ガイド
警告: きわめて重要な指示、注意、または重要な情報が含まれるパラグラフを識
別します。
重要: 説明されている機能または操作に関する重要な情報が含まれるパラグラフ
を識別します。
ヒント: 説明されている機能に関する追加の詳細またはショートカットを提供す
るパラグラフを識別します。
機能、製品、およびプラットフォーム
機能、製品、およびプラットフォームのマークアップは、機能固有、製品固有、ま
たはプラットフォーム固有の情報が含まれるパラグラフを識別します。このマーク
アップの例として、以下があります。
Dynamic Server
IBM Informix Dynamic Server 固有の情報を識別します
Dynamic Server の終り
UNIX のみ
UNIX プラットフォーム固有の情報を識別します。
UNIX のみ の終り
Windows のみ
Windows 環境固有の情報を識別します
Windows のみ の終り
このマークアップは、1 つの節の中で 1 つ以上のパラグラフに適用できます。節全
体が特定の製品またはプラットフォームに適用される場合には、次のように、その
ことが見出しテキストの一部として示されます。
表ソート (Windows のみ)
構文ダイヤグラム
このガイドでは、文およびシステム レベルのコマンド以外のすべてのコマンドの構
文を記述するために、次のコンポーネントで構成されるダイヤグラムを使用しま
す。
注: IBM 標準に準拠するように、バージョン 9.4 から構文ダイヤグラムを改善しま
した。
SQL とコマンド行文を表す構文ダイヤグラムが、次のように変更されました。
v 文の先頭および終わりにある記号が、最後の縦線の代わりに二重矢印になりまし
た。
v 構文サブダイヤグラムの先頭および終わりにある記号が、矢印の代わりに縦線に
なりました。
序
xi
v 反復可能なループ回数を示す記号が、ゲート記号の数字の代わりにブラケットで
囲まれた数字になりました。
v 構文が複数行にわたる場合は、同じ行にループ ダウンする代わりに次の行に続行
するようになりました。
v 製品または条件に固有のパスが、アイコンの代わりに括弧内の肩文字番号でマー
クされるようになりました。
次の表に構文ダイヤグラム コンポーネントを示します。
コンポーネント
意味
文の開始。
文が次の行に続く。完全な文以外の構文要素は、この記
号で終わります。
文が前の行から続く。完全な文以外の構文要素は、この
記号で始まります。
文の終り。
必須項目。
オプションの項目。
DBA TO
CONNECT TO
SELECT ON
必須項目を選択。項目を 1 つだけ選択して指定すること
が必須です。
オプションの項目を選択。デフォルト値が存在する場合
は、太字で印刷されます。
オプションの項目。複数の項目を指定できますが、それ
ぞれの繰り返しの前にカンマが必要です。
構文フラグメントの開始。
構文フラグメントの終了。
構文ダイヤグラムの読み方
次の構文ダイヤグラムは、前の節の表にリストされているいつかの要素を使用しま
す。
変換を行わないジョブの作成
xii
IBM Informix GLS: ユーザーズ ガイド
onpladm create job
job
-n -d
-p
device -D
database
project
-t table 実行モードの設定
-S
server
-T
target
このダイヤグラムの 2 行目には、実行モードの設定と呼ばれるフラグメントがあり
ます。このフラグメントは、次のフラグメント ダイヤグラムに表示されます (ダイ
ヤグラムはフラグメントの開始および終了コンポーネントを使用します)。
実行モードの設定:
l
c
-f
d
p
a
u
n
N
コマンドを正しく構築するには、コマンドの左上から開始します。必要な要素を組
み込みながら、ダイヤグラムを右に進みます。ダイヤグラムの中の要素は、大文字
と小文字を区別します。
「変換を行わないジョブの作成」ダイヤグラムは、次の手順を示しています。
1. onpladm create job と入力し、続いてジョブの名前を入力します。
2. オプションで、-p と入力し、続いてプロジェクトの名前を入力します。
3. 次の必須要素を入力します。
v -n
v -d およびデバイスの名前
v -D およびデータベースの名前
v -t および表の名前
4. オプションで、次の要素を 1 つ以上選択して、任意の回数、反復して使用でき
ます。
v -S およびサーバ名
v -T およびターゲット サーバ名
v 実行モード。実行モードを設定するには、「実行モードの設定」ダイヤグラム
に従います。 -f と入力し、オプションで d、p、または a を入力してから、
オプションで l または u と入力します。
5. 終端記号については、ダイヤグラムに従ってください。
ダイヤグラムが完成しました。
キーワードと句読点
キーワードとは、文と、システム レベルのコマンドを除くすべてのコマンドの予約
済みの語です。構文ダイヤグラムにキーワードがある場合は、大文字で示されま
序
xiii
す。コマンド内でキーワードを使用するときには大文字でも小文字でも書くことが
できますが、構文ダイヤグラムに示されるとおりの正確なスペルにする必要があり
ます。
文およびコマンド内の句読点も、構文ダイヤグラムに示されるとおりに正確に使用
する必要があります。
識別子と名前
変数は、構文ダイヤグラムと例の中にある識別子および名前の位置指定子として働
きます。コンテキストに応じて、変数を任意の名前、識別子、またはリテラルに置
き換えることができます。変数は、追加の構文ダイヤグラムに展開された複雑な構
文要素を表すためにも使用されます。変数が構文ダイヤグラム、例、またはテキス
ト内で表される場合、小文字のイタリック で示されます。
以下の構文ダイヤグラムでは、単純な SELECT 文の一般形式を示すために、変数を
使用しています。
SELECT column_name FROM table_name
この形式の SELECT 文を書くときは、変数 column_name および table_name を特
定の列名および表名に置き換えます。
コード例の表記
本書の全体に渡って、SQL コードの例があります。特に注記がある場合を除き、コ
ードは、どの IBM Informix アプリケーション開発支援ツールにも固有なものでは
ありません。
例の中に SQL 文だけがリストされている場合、それらの文はセミコロンで区切ら
れていません。たとえば、次の例のようにコードが示されます。
CONNECT TO stores_demo
...
DELETE FROM customer
WHERE customer_num = 121
...
COMMIT WORK
DISCONNECT CURRENT
この SQL コードを特定の製品で使用するためには、その製品用の構文ルールを適
用する必要があります。たとえば、DB–Access を使用している場合には、複数の文
をセミコロンで区切る必要があります。 SQL API を使用している場合には、それ
ぞれの文の最初に EXEC SQL を使用し、文の終りにセミコロン (または他の適切
な区切り記号) を使用する必要があります。
ヒント: コード例の中の省略記号の部分は、完全なアプリケーションではさらにコ
ードが追加されるが、説明している概念を記述するためには、表示する必
要がないことを示しています。
特定のアプリケーション開発支援ツールまたは SQL API 用の SQL 文の使用に関
する詳細な指示については、その製品のマニュアルを参照してください。
xiv
IBM Informix GLS: ユーザーズ ガイド
文字表現規則
本書では、シングルバイト文字とマルチバイト文字が表示される方法を例に示しま
す。通常、マルチバイト文字は漢字 (日本語または中国語など) ですが、本書では実
際のマルチバイト文字は記述されません。その代わり、ASCII 文字を使用して、シ
ングルバイト文字とマルチバイト文字の両方を表します。本節では、本書でマルチ
バイト文字とシングルバイト文字を抽象的に表す方法を説明します。
シングルバイト文字
本書では、シングルバイト文字を一連の小文字として表します。 1 つのシングルバ
イト文字を抽象的に表すフォーマットは次のとおりです。
a
ここで a は、シングルバイト文字を表し、文字『a』自体を表すものではありませ
ん。
シングルバイト文字の文字列を表すフォーマットは、次のとおりです。
a...z
ここで a は先頭文字を表し、z は文字列の最後の文字を表します。たとえば、6 つ
のシングルバイト文字から成る文字列 Ludwig の場合、次のフォーマットがこの 6
文字の文字列を抽象的に表します。
abcdef
ヒント: 文字『s』は、シングルバイト文字の文字列を示す例には使用されません。
本書では、シングルバイト空白文字を表すために、文字『s』が記号として
予約されています。 xvi ページの『文字列内の空白文字』も参照してくだ
さい。
マルチバイト文字
本書で使用しているテキスト、例、またはダイヤグラム内のマルチバイト文字は、
実際に表示される文字とは異なります。その代わり、次の規則でマルチバイト文字
が格納される方法を抽象的に示します。
A1...An
同一の大文字が 1 つから 4 つある場合は、異なる肩文字番号が各大文字の後に続
きます。これは 1 つのマルチバイト文字を示します。肩文字は、マルチバイト文字
の最初のバイトから n 番目のバイトを示します。表示されます。n には 2 から 4
の値が入ります。たとえば、次の記号は、2 バイトから成るマルチバイト文字を表
します。
A1A2
次の表記は、4 バイト (マルチバイト文字の最大長) から成るマルチバイト文字を表
します。
A1A2A3A4
次の例は、SQL 文内のマルチバイト文字の文字列を示します。
CREATE DATABASE A1A2B1B2C1C2D1D2E1E2;
序
xv
この文は、名前が 5 つのマルチバイト文字 (それぞれが 2 バイトの長さを持つ) か
ら成るデータベースを作成します。 SQL 識別子内のマルチバイト文字の使用につ
いては、3-1 ページの『データベース オブジェクトの命名』を参照してください。
同じ文字列内のシングルバイト文字とマルチバイト文字
マルチバイト コード セットの場合は、文字列がシングルバイト文字とマルチバイ
ト文字の両方で構成されることがあります。混合文字列を表すために、本書では単
にマルチバイト文字とシングルバイト文字のフォーマットを結合します。次の例で
は、4 つの文字を持つ文字列を表します。ここで、最初と 4 番目の文字はシングル
バイト文字で、2 番目と 3 番目の文字はそれぞれ 2 バイトから成るマルチバイト
文字です。
aA1A2B1B2b
文字列内の空白文字
空白は、空白を示す 1 つ以上の文字の列です。どの文字を空白にするかは、各
GLS ロケールが定義します。
たとえば、TAB (ASCII 9) と空白 (ASCII 32) が、あるロケールで空白文字として
定義される場合があります。しかし、別のロケールでは、CTRL キーと別の文字の
組み合せが、空白文字として定義される可能性があります。
本書でシングルバイト空白文字を表す規則は、文字『s』です。次の表記が 1 つの
シングルバイト空白文字を表します。
s
ASCII コード セットでは、シングルバイト空白文字の例は、空白文字 (ASCII 32)
です。 2 つの ASCII 空白文字から成る文字列を示すために、本書では次の表記を
使用します。
ss
次の表記は、マルチバイト空白文字を表します。
s1...sn
ここで S1 は、空白文字の最初のバイトを表し、sn は、空白文字の最後のバイトを
表します。n は、2 から 4 の範囲内の数字になります。次の表記は、1 つの 4 バ
イト空白文字を表します。
s1s2s3s4
後続の空白文字
文字と空白の組み合せは、引用符付き文字列内、宣言された列長よりも少ない文字
を含む文字 (CHAR) 型列内、および他のコンテキスト内で使用される可能性があり
ます。たとえば、シングルバイト コード セット内の CHAR(5) 列に 3 文字ある場
合は、その列の長さが列長と等しくなるように 2 つの空白で文字列が埋め込まれま
す。
abcss
次の例は、5 文字の文字列 (3 つの文字データと 2 つの後続の空白文字) をマルチ
バイト コード セットで表します。ここでは、データ文字と空白文字はそれぞれ 2
バイトから成ります。
xvi
IBM Informix GLS: ユーザーズ ガイド
A1A2B1B2C1C2s1s2s1s2
ロケールによっては、文字列はシングルバイトとマルチバイト両方の空白文字を含
むことができます。たとえば、次の文字列を検討してみます。
abcss1s2sss1s2
この文字列には、3 つのシングルバイト文字 (abc)、1 つのシングルバイト空白文字
(s)、1 つのマルチバイト空白文字 (s1s2)、2 つのシングルバイト空白文字 (ss)、およ
び 1 つのマルチバイト空白文字 (s1s2) で構成されています。
関連マニュアル
データベース サーバのマニュアルはさまざまなフォーマットで提供されています。
v オンライン マニュアル。 メディア パック内のマニュアル CD から製品マニュ
アルを印刷できます。これと同じオンライン マニュアルを IBM Informix オンラ
イン マニュアル サイト
http://www-3.ibm.com/software/data/informix/pubs/library/ から取得できま
す。
v オンライン ヘルプ。 この機能は、詳細ヘルプ、エラー・メッセージ解説書、言
語構文などを提供します。
v ドキュメント ノートとリリース ノート。 マニュアルの追加と修正を含むドキュ
メント ノートと、データベース サーバを説明するリリース ノートは、製品がイ
ンストールされているディレクトリに格納されています。これらのファイルには
アプリケーションとパフォーマンスの問題に関する重大な情報が含まれているた
め、内容を確認してください。
UNIX のみ
デフォルト ロケールを使用する UNIX プラットフォーム上では、次のオンライ
ン ファイルが $INFORMIXDIR/release/en_us/0333 ディレクトリに格納されま
す。
UNIX のみ の終り
序
xvii
オンライン ファイル
説明
本書のご使用のバージョン用のドキュメント ノート
ファイルには、本書に記載されていないトピックや、
マニュアルの発行後に変更されたトピックについて記
載されています。
ids_unix_release_notes_9.40.html、リリース ノート ファイルには、以前のバージョンの
ids_unix_release_notes_9.40.txt
Dynamic Server とは異なる機能について、およびこれ
(Dynamic Server 用) または
らの相違点がご使用の製品に与える影響について記載
されています。また、このファイルには、既知の問題
xps_release_notes_8.40.html
とその次善策に関する情報も含まれています。(.txt バ
xps_release_notes_8.40.txt
ージョンは ASCII テキスト フォーマットで表示で
(Extended Parallel Server 用)
き、.html バージョンはブラウザを使用して表示でき
ます。)
ids_machine_notes_9.40.txt
マシン ノート ファイルには、ご使用のコンピュータ
(Dynamic Server 用) または
で IBM Informix 製品を構成および使用するために実
行する必要がある特殊な操作が記載されています。マ
xps_machine_notes_8.40.txt
シン ノートには、説明されている製品の名前が付けら
(Extended Parallel Server 用)
れています。
ids_gls_docnotes_9.40.html
または
xps_gls_docnotes_9.40.html
Windows のみ
次の複数の項目が「Informix」フォルダに表示されます。このフォルダを表示する
には、タスクバーから「スタート」→「プログラム」→「Informix」
→「Documentation Notes or Release Notes」を選択します。
Windows のみ の終り
プログラム グループ項目
説明
Documentation Notes
この項目には、マニュアルの追加または修正と、マニュア
ルに記載されていない機能またはマニュアルの発行後に変
更された機能についての情報が含まれています。
Release Notes
この項目には、前のバージョンの IBM Informix 製品とは
異なる機能、およびこれらの相違点が現行の製品に与える
影響が記載されています。また、このファイルには、既知
の問題とその次善策に関する情報も含まれています。
マシン ノートは Windows プラットフォームには適用されません。
v エラー メッセージ ファイル。IBM Informix ソフトウェア製品には、エラー メ
ッセージおよびその修正処置が記載された ASCII ファイルが備わっています。
UNIX のみ
UNIX でエラー メッセージを読むには、finderr コマンドを使用してエラー メッ
セージをオンラインで表示できます。
xviii
IBM Informix GLS: ユーザーズ ガイド
Windows のみ
Windows でエラー メッセージと修正処置を読むには、Informix Error
Messages ユーティリティを使用します。このユーティリティを表示するには、
タスクバーから「スタート」→「プログラム」→「Informix」を選択してくださ
い。
Windows のみ の終り
参考文献
データベース サーバとオペレーティング システム プラットフォームの概要を提供
する資料のリストについては、「IBM Informix: スタートアップ ガイド」を参照し
てください。
業界標準への対応
米国規格協会 (ANSI) では、SQL 用の 1 組の業界標準を確立しています。
IBM Informix SQL ベースの製品は、SQL-92 Entry Level (ANSI X3.135-1992 とし
て公開) に完全に準拠しています。これは ISO 9075:1992 と同一です。さらに、
Informix データベース サーバの多くの機能が、SQL-92 の Intermediate Level と
Full Level、および X/Open SQL CAE (共通アプリケーション環境) 標準に準拠して
います。
序
xix
xx
IBM Informix GLS: ユーザーズ ガイド
第 1 章 GLS 基本機能
本章の概要
広域言語サポート (GLS) 機能により、IBM Informix 製品を使用して、アジア、ア
フリカ、ヨーロッパ、ラテン アメリカ、中東の諸国のさまざまな言語、文化上の慣
習、およびコード セットを処理できます。
GLS 機能により、弁別発音記号、照合順序、選択した言語の通貨および時刻表現の
規則を使用して、データベースを作成できます。 ONCONFIG 構成パラメータは
GLS には存在しませんが、適切な環境変数を設定する必要があります。
本章では、基本概念を紹介し、GLS 機能について説明します。本章には、次の節が
あります。
v GLS 機能の使用
v GLS ロケールの理解
v GLS ロケールの設定
v IBM Informix 製品での GLS ロケールの使用
v エンド ユーザ フォーマットのカスタマイズ
GLS 機能の使用
データベース アプリケーションでは、データベース サーバとクライアント アプリ
ケーションが実行するタスクの中に、処理するデータの言語および国/地域別環境の
規則により異なるものがあります。たとえば、データベース サーバは、米国英語
(U.S. English) データを、韓国語の文字データとは別々にソートする必要がありま
す。クライアント アプリケーションは、カナダの通貨をタイの通貨とは別々に表示
する必要があります。
Informix データベース サーバまたはクライアント製品にこれらのデータ依存タスク
を実行するコードが含まれていた場合、それぞれのデータベース サーバまたはクラ
イアント製品を特別に作成して、文化的差異に基づいたデータの、異なる集合を処
理する必要があります。
GLS のサポートにより、IBM Informix 製品では、文化的差異に基づいた情報を直
接処理する方法を指定する必要がなくなりました。文化的差異に基づいた情報は、
GLS ロケールにあります。 IBM Informix 製品が文化的差異に基づいた情報を必要
とするときは、GLS ライブラリを呼び出します。ライブラリは GLS ロケールにア
クセスし、情報を IBM Informix 製品に戻します。
GLS 機能とは、文化的差異に基づいた情報をサポートするための移植可能な方法で
す。多数のオペレーティング システムで英語でないデータがサポートされています
が、通常、そのオペレーティング システムに特有の形式でサポートされます。文化
的差異に基づいた情報のフォーマットには、多数の標準は存在しません。このよう
な整合性の欠如は、あるオペレーティング システム環境から別のオペレーティング
システム環境にアプリケーションを移動する場合に、アプリケーションがオペレー
© Copyright IBM Corp. 1996, 2003
1
ティング システムから言語サポートを要求する方法を変更する必要がある場合があ
ることを意味します。最初の環境により提供された言語サポートと同一の内容が、
新しいオペレーティング システム環境では提供されないことが判明する可能性さえ
あります。
GLS 機能により、UNIX または Windows オペレーティング システム上の文化的差
異に基づいた情報にアクセスできます。 IBM Informix 製品は、その製品が移植さ
れたどのプラットフォーム上でも、ロケール情報を見つけることができます。
Windows のみ
GLS がデフォルトでないロケールをサポートするには、使用中の Windows のバー
ジョンも、そのロケールをサポートしている必要があります。すなわち、日本語ク
ライアント アプリケーションは、Windows の日本語バージョン上で実行されない
限り、Windows 上でサポートされません。
Windows のみ の終り
GLS 機能を使用する場合、実行する必要があるタスクは、あなたがシステム管理
者、データベース管理者、クライアント アプリケーションのエンド ユーザ、デー
タベース サーバ ユーティリティのエンド ユーザ、またはクライアント アプリケ
ーション開発者のいずれであるかにより異なります。次の表は、オプショナル タス
クと必須タスクをリストにしたものです。
対象読者
オプショナル タスク
必須タスク
なし
システム管理者、 v デフォルトでないロケールの場合、
データベース管理
DB_LOCALE、CLIENT_LOCALE、およ
者、またはクライ
び SERVER_LOCALE 環境変数を設定し
アント アプリケ
ます。
ーションのエンド
v エンド ユーザ フォーマットをカスタマイ
ユーザ
ズするには、GL_DATE、
GL_DATETIME、および DBMONEY 環境
変数を設定します。 ESQL/C の場合、
GL_DATETIME ではなく DBTIME を設
定できます。
2
IBM Informix GLS: ユーザーズ ガイド
対象読者
オプショナル タスク
必須タスク
v ESQL/C の GLS 環境を構成するには、
CC8BITLEVEL および ESQLMF 環境変
数を設定します。
v GLS 環境の追加構成を実行するには、
DBLANG および GLS8BITFSYS 環境変
数を設定します。
v SQL 文を発行するには、61 ページの『第
3 章 SQL 機能』と 103 ページの『第 4
章 データベース サーバの機能』のガイド
ラインに従ってください。
v GLS ファイルを削除するには、164 ペー
ジの『未使用ファイルの削除』のガイドラ
インに従ってください。
v UNIX 上の GLS ファイルに関する情報を
入手するには、165 ページの『glfiles ユー
ティリティ (UNIX のみ)』のガイドライン
に従ってください。
データベース サ
ーバ ユーティリ
ティのエンド ユ
ーザ
同上
クライアント ア v 同上
プリケーション開
v 各国対応クライアント アプリケーション
発者
を開発するには、 126 ページの『クライ
アント アプリケーションの国際化』と
「IBM Informix: GLS Programmer’s
Manual」のガイドラインに従ってくださ
い。
106 ページの『ユーティリ
ティに対するロケール特有
のサポート』のガイドライ
ンに従ってください。
v
123 ページの『第 5 章
一般的な SQL API 機
能』のガイドラインに従
ってください。
v ESQL/C アプリケーショ
ンの場合、 133 ページの
『第 6 章 IBM Informix
ESQL/C 機能』のガイド
ラインにも従ってくださ
い。
IBM Informix 製品による GLS サポート
GLS サポートは、これらの IBM Informix 製品およびユーティリティに対して提供
されます。
v Informix データベース サーバ
v IBM Informix クライアント アプリケーションおよびデータベース サーバ ユー
ティリティ
v IBM Informix GLS アプリケーション プログラム インターフェイス
これ以降の節では、GLS サポートが初めの 2 種類の IBM Informix 製品に提供す
る機能の概要について説明します。
英語以外のデータが含まれるデータベースのデータベース サーバのマイグレーショ
ン方法については、「IBM Informix: 移行ガイド」を参照してください。
第 1 章 GLS 基本機能
3
Informix データベース サーバ
GLS が、IBM Informix OnLine Dynamic Server に導入されました。以前は、アジア
言語 (マルチバイト) 文字を使用する、英語以外のデータベースには ALS 言語サポ
ートが提供され、シングルバイト文字を使用する、英語以外のデータベースには
NLS 言語サポートが提供されていました。 GLS は、単一の機能であり、英語以外
の言語のシングルバイト データとマルチバイト データをサポートします。下位方
向の互換性に関しては、GLS 製品は、すべての NLS 環境変数と、ALS 環境変数の
サブセットもサポートします。これらの変数のリストについては、「IBM Informix:
移行ガイド」を参照してください。
文化的差異に基づいた機能: GLS 機能を使用すると、Informix データベース サー
バで、次のような文化的差異に基づいた機能がサポートされます。
v 非 ASCII 文字および文字列の処理
非 ASCII 文字を使用して、表、列、ビュー、文、カーソル、および SPL ルーチ
ンのようなユーザ指定が可能なデータベース オブジェクトを命名でき、かつ、地
域の習慣に適した照合順序を使用できます。
多くのその他のコンテキストにも、非 ASCII 文字を使用できます。たとえば、非
ASCII 文字を使用して、SELECT 文の WHERE および ORDER BY 節を指定し
たり、各国語文字 (NCHAR) 型および各国語可変長文字 (NVARCHAR) 型列のデ
ータをソートしたりできます。既存のコードを変更せずに GLS 照合機能を使用
することが可能です。
v 式の評価
各国語文字 (NCHAR) 型および各国語可変長文字 (NVARCHAR) 型のデータを含
む式を比較するときに、非 ASCII 文字を使用できます。
v 日付、時刻、数値データ、および通貨データのロケール特有の値の変換
米国 (U.S) 以外の国または国/地域別環境に特有のエンド ユーザ フォーマットを
使用して、リテラル文字列中に表示されるときの日付、時刻、数値、および通貨
値を指定できます。データベース サーバは、これらのフォーマットを適切な内部
データベース フォーマットに変換できます。
v 以前は互換性がなかった文字コード セットのアクセス性
クライアント アプリケーションは変換可能なコード セット間のコード セット変
換を実行でき、それにより、コード セットの異なるデータベースとクライアント
との間でのデータへのアクセスおよびデータの共有を行うことができます。コー
ド セット変換について詳しくは、30 ページの『コード セット変換の実行』を参
照してください。
IBM Informix クライアント アプリケーションおよびユーティリティ
一般に、クライアント アプリケーションとは、ネットワーク上のワークステーショ
ンまたは PC 上で実行されるプログラムです。 GLS 機能にとっては、クライアン
ト アプリケーション は、IBM Informix SQL API 製品 (IBM Informix ESQL/C な
ど) か、または Informix データベース サーバ ユーティリティ (DB–Access、
dbexport、または onmode など) のいずれかになります。これらの IBM Informix
クライアント アプリケーションは、GLS 機能をサポートします。
v Informix データベース サーバとともに提供される DB–Access ユーティリティを
使用すると、表、列、ビュー、文、カーソル、および SPL ルーチンなど、ユー
ザが指定できるデータベース オブジェクトに非 ASCII 文字を使用したり、ロー
4
IBM Informix GLS: ユーザーズ ガイド
カライズされた照合ルールに基づいてこれらのオブジェクトをソートできます。
識別子について詳しくは、63 ページの『識別子内の非 ASCII 文字』を参照して
ください。 DB–Access の一般情報については、「IBM Informix: DB-Access ユー
ザーズ ガイド」を参照してください。
v SQL API を使用すると、表、列、ビュー、文、カーソル、SPL ルーチンなどユ
ーザが指定できるデータベース オブジェクトの名前だけでなく、ホスト変数名と
標識変数名にも非 ASCII 文字を使用できます。詳しくは、 123 ページの『第 5
章 一般的な SQL API 機能』を参照してください。
v dbexport または onmode などのデータベース サーバ ユーティリティを使用す
ると、多数のコマンド行引数に非 ASCII 文字を使用できます。詳しくは、 103 ペ
ージの『第 4 章 データベース サーバの機能』を参照してください。
v GLS は、IBM Informix Dynamic 4GL (バージョン 3.0 およびそれ以降)、
IBM Informix 4GL (バージョン 7.2 およびそれ以降)、および IBM Informix SQL
(バージョン 7.2 およびそれ以降) の機能でもあります。 GLS インプリメンテー
ションの詳細については、これらの IBM Informix 製品のマニュアルを参照して
ください。
IBM Informix GLS アプリケーション プログラミング インターフェ
イス
IBM Informix GLS とは、アプリケーション プログラム インターフェイス (API)
であり、これを使用して、DataBlade モジュールの開発者や ESQL/C プログラマー
が C 言語インターフェイスで各国対応アプリケーションを開発できます。
IBM Informix GLS のマクロおよび関数により、アプリケーション中で GLS ロケー
ルにアクセスできます。このロケールには、文化的差異に基づいた情報が含まれま
す。 IBM Informix GLS を使用して、さまざまな言語、文化上の慣習、コード セ
ットを処理するプログラムを作成 (または既存のプログラムを変更) できます。
すべての IBM Informix GLS 関数は 現行処理ロケール にアクセスします。現行処
理ロケールとは、アプリケーションで現在有効なロケールです。これは、(ESQL/C
クライアント アプリケーションとクライアント LIBMI アプリケーションの場合に
は) クライアント ロケールに、(DataBlade ユーザ定義ルーチンの場合には) サーバ
処理ロケールに基づきます。
IBM Informix GLS には、次の各国対応タスクの実行に役立つマクロおよび関数が
備わっています。
v シングルバイト文字、マルチバイト文字、およびワイド文字の処理
v シングルバイト文字列、マルチバイト文字列、およびワイド文字文字列の処理
v マルチバイト文字列およびワイド文字文字列のメモリ管理
v 日付、時刻、金額、および数値文字列をバイナリ値に変換、またはバイナリ値か
ら日付、時刻、金額、および数値文字列に変換
v マルチバイト文字の入力ストリームおよび出力ストリームの処理
IBM Informix クライアント アプリケーションは、データベース サーバと同様に
IBM Informix GLS にアクセスできます。アプリケーションの場合、アプリケーシ
ョンの IBM Informix GLS ライブラリにリンクして、ロケール関連のタスクを実行
第 1 章 GLS 基本機能
5
します。 Informix データベース サーバは、IBM Informix GLS ライブラリを自動
的にインクルードします。詳しくは、「IBM Informix: GLS Programmer’s Manual」
を参照してください。
サポートされるデータ型
GLS 機能は、次のデータ型をサポートします。
v SQL 文字データ型
– 文字 (CHAR) 型、可変長文字 (VARCHAR) 型、各国語文字 (NCHAR) 型、お
よび各国語可変長文字 (NVARCHAR) 型
Dynamic Server
– ラージ可変長文字 (LVARCHAR) 型
Dynamic Server の終り
– テキスト (TEXT) 型およびバイト (BYTE) 型
文字データ型に関する GLS の考慮事項の情報については、68 ページの『文字デ
ータ型の使用』を参照してください。
v SQL 数値と金額 (MONEY) 型
数値と金額 (MONEY) 型に関する GLS の考慮事項の情報については、14 ペー
ジの『数値および通貨フォーマット』を参照してください。
v SQL 日付 (DATE) 型と日時 (DATETIME) 型
日付 (DATE) 型および日時 (DATETIME) 型に関する GLS の考慮事項の情報に
ついては、14 ページの『日付および時刻フォーマット』を参照してください。
Dynamic Server
v ユーザ定義データ型
– 不透明 (opaque) 型
– 複合データ型
– ディスティンクト (DISTINCT) 型
v スマート ラージ オブジェクト
– バイナリ ラージ オブジェクト (BLOB) 型
– 文字ラージ オブジェクト (CLOB) 型
ユーザ定義データ型とスマート ラージ オブジェクトに関する GLS の考慮事項
については、 97 ページの『拡張データ型の処理 (IDS のみ)』を参照してくださ
い。
Dynamic Server の終り
v ESQL/C 文字データ型
– 文字 (CHAR) 型
– 固定長文字 (fixchar) 型
– 文字列 (string) 型
6
IBM Informix GLS: ユーザーズ ガイド
– 可変長文字 (VARCHAR) 型
– ラージ可変長文字 (LVARCHAR) 型
ESQL/C データ型に関する情報は、「IBM Informix: ESQL/C Programmer’s
Manual」を参照してください。
追加の GLS サポート
IBM Informix 製品には、GLS ロケール ファイルのコア セットが組み込まれてい
ます。これには、デフォルト ロケールと、英語、西ヨーロッパ、東ヨーロッパ、ア
ジア、アフリカ地域をサポートする多くのロケールが含まれています。お使いの言
語および地域をサポートするロケールが見つからない場合、各国語サプリメント
(ILS) 製品の追加のロケールを入手できます。ILS は、使用可能なすべての GLS ロ
ケールおよび変換ファイルを提供します。 ILS には、いくつかのヨーロッパ言語を
サポートするエラー メッセージも含まれています。
GLS ロケールと IBM Informix の各国語のサプリメントに関して詳しくは、販売代
理店にお問い合わせください。カスタマイズ済みメッセージ ファイルの作成方法に
ついて詳しくは、34 ページの『メッセージ ファイルの探索』を参照してくださ
い。
GLS ロケールの理解
クライアント/サーバ環境では、アプリケーション データを正しく処理するには、デ
ータベース サーバとクライアント アプリケーションの両方がデータがどの言語で
あるかを認識している必要があります。 GLS ロケールは Informix ファイルの集合
であり、これには、所定の文化、言語、または地域に特有のデータに関する情報が
まとめられています。特に、GLS ロケールは、以下を指定できます。
v アプリケーション データが使用するコード セットの名前
v コード セット中の文字の分類
v 文字データに使用する照合 (ソート) 順序
v 通貨、数値、日付、および時刻データのエンド ユーザ フォーマット
IBM Informix 製品は、次の GLS ファイルを使用して、ロケール関連の情報を取得
します。詳しくは、 153 ページの『GLS ファイルの管理』を参照してください。
GLS ファイルの
タイプ
GLS ロケール フ
ァイル
コード セット フ
ァイル
コード セット変換
ファイル
レジストリ ファイ
ル
説明
言語、地域、書字方向、およびその他の文化上の慣習を指定します。
文字セット内のそれぞれの論理的な文字を、一意のビット パターンにマ
ップする方法を指定します。
「ソース」コード セット内のそれぞれの文字を、「ターゲット」コード
セット内の対応する文字にマップする方法を指定します。
コード セット名と別名を、ロケール ファイルとコード セット変換ファ
イルのファイル名を指定するコード セット番号と関連付けます。
それぞれのデータベースのロケール数は 1 つに制限されていますが、同一のデータ
ベース サーバの異なるデータベースで異なるロケールをサポートできます。
第 1 章 GLS 基本機能
7
Unicode コード セット (UTF-8) のオープン ソース International Components for
Unicode (ICU) インプリメンテーションを使用して、さまざまな文字セットを必要と
する複数の言語からの文字データを 1 つのデータベースに保管できます。このコー
ド セットは、多数の言語および地域の GLS データベース サーバ ロケールで使用
できます。(クライアント サイドのシステムのロケールには、ICU コード セット
UTF-16 と UTF-32 に加え、ICU コード セット UTF-8 もサポートするものもあり
ます。)
Dynamic Server
Dynamic Server の SET COLLATION 文は、各国語文字 (NCHAR) 型および各国語
可変長文字 (NVARCHAR) 型文字列をソートするための、複数のローカライズされ
た照合順序をサポートします。
Dynamic Server の終り
文字データのコード セット
文字セット とは、1 つ以上の自然言語のアルファベットに、数字、句読点、発音区
別記号の記号を加えたものです。それぞれの文字セットには少なくとも 1 つのコー
ド セット があり、その文字を一意のビット パターンにマップします。これらのビ
ット パターンは、コード ポイント と呼ばれます。 ASCII、ISO8859-1、Windows
コード ページ 1252、および EBCDIC は、英語をサポートするコード セットの例
です。
言語内の一意の文字の数により、それぞれの文字がコード セット内で必要とする記
憶域の量が決定されます。シングルバイトでは 0 から 255 の範囲の値を保管でき
るため、256 文字を一意に識別できます。ほとんどの西洋の言語の文字数は 256 文
字より少ないため、これらの言語はシングルバイト文字 で構成されるコード セッ
トを持ちます。アプリケーションがそのようなコード セットのデータを処理すると
き、 1 バイトに 1 文字が保管されると想定できます。
ASCII コード セットには 128 文字が含まれます。したがって、それぞれの文字ご
とのコード ポイントには 1 バイトのうち 7 ビットが必要です。 0 から 128 の範
囲のコード ポイントのシングルバイト文字は、ASCII または 7 ビット文字 と呼ば
れることがあります。 ASCII コード セットはシングルバイトのコード セットであ
り、IBM Informix 製品がサポートするすべてのコード セットのサブセットです。
コード セットに 128 文字より多くの文字が含まれる場合、その文字のいくつかの
コード ポイントが、バイトの 8 番目のビットを設定する必要があります。これら
の非 ASCII 文字は、次の文字の種類のいずれかである場合があります。
v 8 ビット文字
8 ビット文字は、コード ポイントの範囲が 128 から 255 のシングルバイト文字
です。 ISO8859-1 コード セットまたは Windows コード ページ 1252 の例に
は、英語でない é、ñ、および ö 文字が含まれます。ソフトウェアが 8 ビット透
過 である場合に限り、これらの文字を正しく解釈できます。詳しくは、45 ペー
ジの『GLS8BITFSYS』を参照してください。
v マルチバイト文字
8
IBM Informix GLS: ユーザーズ ガイド
文字セットに 256 文字以上が含まれる場合、そのコード セットはマルチバイト
文字を含む必要があります。マルチバイト文字は、2 から 4 バイトの記憶域を必
要とする場合もあります。東アジアのロケールには、何千もの漢字を組み込むこ
とができる文字セットをサポートするものもあります。GLS は、たとえば、ほぼ
1,400 万のコード ポイントを含む統一中国語 GB18030-2000 コード セットを完
全にサポートしています。そのような言語のコード セットには、シングルバイト
文字とマルチバイト文字の両方が含まれます。これらのコード セットは、マルチ
バイト コード セットと呼ばれます。
別の例としては、日本語の SJIS コード セット内のいくつかの文字は 2 または 3
バイトです。マルチバイト コード セットのデータを処理するアプリケーション
は、1 文字が 1 バイトの記憶域を使用すると想定できません。
ヒント: 本書では、「非 ASCII 文字」という用語は、 127 より大きいコード ポイ
ントを持つすべての文字に適用されます。非 ASCII 文字には、8 ビット文
字とマルチバイト文字の両方が含まれます。
IBM Informix 製品は、シングルバイト コード セットまたはマルチバイト コード
セットをサポートできます。非 ASCII 文字をサポートする GLS ロケールの例につ
いては、24 ページの『非 ASCII 文字のサポート』を参照してください。
ヒント: 本書では、例を使用して、シングルバイト文字およびマルチバイト文字が
どのように表示されるかを示しています。マルチバイト文字は通常 (日本語
の文字または中国語の文字など) 漢字であるため、本書では実際のマルチバ
イト文字は使用しません。その代わり、ASCII 文字を使用して、シングル
バイト文字とマルチバイト文字の両方を表します。詳しくは、『序』の x
ページの『文字の表記』を参照してください。
コード セットの文字クラス
GLS ロケールは、1 つのコード セットの文字を文字クラス にグループ化します。
それぞれのクラスには、関連した目的を持つ文字が含まれます。 GLS は 12 クラ
スをサポートします。文字クラスの内容は言語特有にできます。たとえば、lower ク
ラスには、1 つのコード セットのすべての英小文字が含まれます。デフォルト ロ
ケールのコード セットは、a から z までの文字を lower クラスにグループ化しま
す。このクラスには、á、è、î、õ、ü など、その他の小文字も含まれます。
国際化するには、アプリケーションは、指定の文字クラスにどの文字が属するかを
想定してはいけません。その代わり、IBM Informix GLS ライブラリ関数を使用し
て特定の文字のクラスを識別します。使用する IBM Informix GLS 関数、文字クラ
スのリスト、それぞれのクラスに含まれる文字の情報については、「IBM Informix:
GLS Programmer’s Manual」を参照してください。
文字データの照合順序
照合とは、何らかの順序にしたがって文字列をソートするプロセスです。データベ
ース サーバまたはクライアント アプリケーションが、照合を実行できます。
照合順序は、SQL SELECT 文の次のタスクに影響します。
v WHERE 節内の論理述部
第 1 章 GLS 基本機能
9
SELECT * FROM tab1 WHERE col1 > ’bob’
SELECT * FROM tab1 WHERE site BETWEEN ’abc’ AND ’xyz’
v ORDER BY 節により作成されるソート済みデータ
SELECT * FROM tab1 ORDER BY col1
v MATCHES 節および LIKE 節での比較
SELECT * FROM tab1 WHERE col1 MATCHES ’a1*’
SELECT * FROM tab1 WHERE col1 LIKE ’dog’
SELECT * FROM tab1 WHERE col1 MATCHES ’abc[a-z]’
データベース ロケールにより SELECT 文が受ける影響について詳しくは、 83 ペ
ージの『CREATE INDEX 内の照合順序』を参照してください。
Informix データベース サーバは、次の 2 つの照合方法をサポートします。
v コード セット順序 (コード セット内の最初の文字から最後の文字へという順序)
v ローカライズ順序 (ロケールがローカライズ順序を定義する場合)
コード セット順序
コード セット順序 では、コード セット内の文字の順序が参照されます。コード
セット内のコード ポイントの順序により、照合順序が決定されます。たとえば、
ASCII コード セットでは、A=65 で B=66 です。コード ポイント 65 はコード ポ
イント 66 より小さいため、文字 A は常に B の前にソートされます。しかし、
a=97、M=77 であるため、文字列 abc は Me の後にソートされます。これは、常
に、好ましい結果であるとは限りません。
データベース サーバは、コード セット順序を使用して次のデータ型の列をソート
します。
v 文字 (CHAR) 型
Dynamic Server
v ラージ可変長文字 (LVARCHAR) 型
Dynamic Server の終り
v 可変長文字 (VARCHAR) 型
v テキスト (TEXT) 型
IBM Informix 製品がサポートするすべてのコード セットには、ASCII 文字が最初
の 127 文字として含まれます。したがって、コード セット内の他の文字のコード
ポイントは 128 以上になります。データベース サーバがこれらのデータ型をソー
トすると、ソートされた内容には、非 ASCII 文字で始まる文字列の前に、ASCII 文
字で始まる文字列が置かれます。
コード セット順序にソートされたデータの例は、84 ページの表 2 を参照してくだ
さい。
ローカライズ順序
ローカライズ順序 では、自然言語に関連する文字の順序が参照されます。ロケール
は、ローカライズ順序での文字の順序を定義します。たとえば、文字 À のコード
10
IBM Informix GLS: ユーザーズ ガイド
ポイントは 133 であっても、ローカライズ順序ではこの文字は A の後ろで、かつ
B の前 (A=65、À=133、B=66) にリストされます。この場合、文字列 ÀB は AC の前
で、BD より後ろにソートされます。
データベース サーバは、コード セット順序を使用して次のデータ型の列をソート
します。
v 各国語文字 (NCHAR) 型
v 各国語可変長文字 (NVARCHAR) 型
ローカライズ順序には等価文字 (データベースが文字を照合したときに、等価と見
なす文字) を含めることができます。たとえば、ロケールがローカライズ順序では
文字の大文字および小文字を等価であると定義する場合、文字列 Arizona、
ARIZONA、arizona という 3 つの文字列は、すべて同一文字列であるかのように一
緒に照合されます。
ヒント: ロケール ファイルの COLLATION カテゴリが存在する場合、このカテゴ
リがローカライズ順序を指定します。詳しくは、155 ページの
『COLLATION カテゴリ』を参照してください。
ローカライズ順序では、特定のタイプの照合も指定できます。たとえば、電話帳で
は次のソート順が必要です。
Mabin
McDonald
MacDonald
Madden
しかし、辞書では、同一の名前に対して次の照合順序を使用する場合があります。
Mabin
Madden
MacDonald
McDonald
GLS ロケールがローカライズ順序を定義する場合、データベース サーバは、この
ローカライズ順序で各国語文字 (NCHAR) 型列と各国語可変長文字 (NVARCHAR)
型列のデータをソートします。ローカライズ順序でソートされたデータの例につい
ては、84 ページの表 3 を参照してください。
Dynamic Server
Dynamic Server は SET COLLATION 文をサポートしています。この文によって、
DB_LOCALE の設定とは異なるローカライズ済み照合を指定できます。デフォルト
でない照合順序の有効範囲は現行セッションですが、インデックスまたはトリガな
ど、照合を実行するデータベース オブジェクトは、各国語文字 (NCHAR) 型値また
は各国語可変長文字 (NVARCHAR) 型値をソートするとき、そのデータベース オブ
ジェクトの作成時点から照合順序を使用します。
Dynamic Server の終り
Unicode 照合
Unicode コード セット (UTF-8) のオープン ソース International Components for
Unicode (ICU) インプリメンテーションは、多数の言語および地域の GLS ロケール
第 1 章 GLS 基本機能
11
で使用できます。たとえば、en_us.utf8 ロケールは Unicode コード セットをサポ
ートします。 ICU について詳しくは、ICU の Web サイト
(http://oss.software.ibm.com/icu/) を参照してください。
Unicode コード セット (UIF-8) を使用する GLS ロケールは、ICU Unicode 照合ア
ルゴリズムにより、各国語文字 (NCHAR) 型データと各国語可変長文字
(NVARCHAR) 型データの Unicode 照合をサポートします。このアルゴリズムにつ
いて詳しくは、Unicode の Web サイト
(http://www.unicode.org/unicode/reports/tr10) を参照してください。
照合サポート
Informix データベース サーバによる照合は、データベースの列のデータ型により異
なります。次の表は、照合ルールを要約したものです。
列のデータ型
照合順序
文字 (CHAR) 型、可変長文字 (VARCHAR) 型、テキス
ト (TEXT) 型
ラージ可変長文字 (LVARCHAR) 型 (IDS のみ)
各国語文字 (NCHAR) 型、各国語可変長文字
(NVARCHAR) 型
コード セット順序
コード セット順序
ローカライズ順序
照合の違いは、文字 (CHAR) 型と各国語文字 (NCHAR) 型の区別と、可変長文字
(VARCHAR) 型と各国語可変長文字 (NVARCHAR) 型の区別のみです。照合につい
て詳しくは、68 ページの『文字データ型の使用』を参照してください。ロケールが
ローカライズ順序を定義していない場合、データベース サーバは、各国語文字
(NCHAR) 型データ値と各国語可変長文字 (NVARCHAR) 型データ値をコード セッ
ト順序で照合します。
重要: 文字 (CHAR) 型、ラージ可変長文字 (LVARCHAR) 型、および可変長文字
(VCHAR) 型の値は常にコード セット順序にソートされるという一般ルール
には、例外があります。 MATCHES 演算子を定義した場合、この演算子は、
データ型に関係なく、常にローカライズ順序を使用して文字値の範囲式を評
価します。 87 ページの『MATCHES 条件』を参照してください。
エンド ユーザ フォーマット
エンド ユーザ フォーマット とは、クライアント アプリケーションで、リテラル
文字列または文字変数としてデータ値を表示または入力するフォーマットです。
エンド ユーザ フォーマットは、データベースのデータ型のフォーマットがユーザ
が使い慣れているフォーマットと異なる場合に役立ちます。データベース サーバ
は、日付 (DATE) 型、日時 (DATETIME) 型、金額 (MONEY) 型、および数値デー
タ型のデータを、圧縮内部フォーマットでデータベース内に格納します。
たとえば、データベース サーバは、日付 (DATE) 型値を 1899 年 12 月 31 日か
らの日数の整数で格納します。したがって、日付 03/19/96 は 35142 になります。
この内部フォーマットは、直感的にわかるものではありません。
クライアント アプリケーションで内部フォーマットの代わりにより直感的なフォー
ムを使用できるように、IBM Informix 製品はエンド ユーザ フォーマットをサポー
12
IBM Informix GLS: ユーザーズ ガイド
トします。リテラル文字列または文字変数を、列の値または SQL API ライブラリ
関数の引数として SQL 文で使用できます。
IBM Informix 製品は、文字列 (リテラル文字列または文字変数内の値) が見つかっ
たとき、次の状況でエンド ユーザ フォーマットを使用します。
v IBM Informix 製品が文字列を読み取るときに、エンド ユーザ フォーマットを使
用して文字列の解釈方法を決定するため、文字列を数値に変換できます。
たとえば、DB–Access で、クライアント ロケールがデフォルト (米国英語 (U.S.
English)) であるとします。次の INSERT 文のリテラルの日付は、デフォルト ロ
ケールが定義する日付のエンド ユーザ フォーマットを使用しています。
INSERT INTO mytab ( date1 ) VALUES ( ’03/19/96’ )
クライアント アプリケーションからデータを受信すると、データベース サーバ
はエンド ユーザ フォーマットを使用してこのリテラルの日付を解釈するため、
対応する内部フォーマット (35142) に変換できます。
v IBM Informix 製品が文字列を出力するときに、エンド ユーザ フォーマットを使
用して数値を文字列としてフォーマットする方法を決定します。
たとえば、ESQL/C クライアント アプリケーションのクライアント ロケールが
フランス語ロケールで、このロケールは日付を dd/mm/yy としてフォーマットす
る日付エンド ユーザ フォーマットを定義すると仮定します。次の rdatestr() 関
数は、日付のエンド ユーザ フォーマットを使用して datestr 文字変数の値を取
得します。
err = rdatestr(jdate, datestr);
rdatestr() 関数は datestr 変数に値を書き込む前に、エンド ユーザ フォーマッ
トを使用して日付ストリングとして内部フォーマット (35142) をフォーマットす
る方法を決定します。 GLS 機能が SQL API ライブラリ関数に与える影響につ
いて詳しくは、140 ページの『拡張 ESQL/C ライブラリ関数の使用』を参照して
ください。
GLS ロケールは、次のタイプのデータのエンド ユーザ フォーマットを定義しま
す。
v 通貨表記および数値のフォーマットの表現
v 日付および時刻の値の表現
指定の国または地域別環境に特有のエンド ユーザ フォーマットで、数値、通貨、
日付、および時刻の値を指定できます。
重要: 日付、時刻、数値、通貨の値のエンド ユーザ フォーマットは、データベー
ス内の対応するデータ型の内部フォーマットには影響しません。これらのフ
ォーマットは、クライアント アプリケーションによるそのデータの表示方法
と、データ入力の解釈方法のみに影響します。
次の表は、エンド ユーザ フォーマットを使用するそれぞれのデータ型ごとに、エ
ンド ユーザ フォーマットを定義する値をリストしたものです。環境変数の詳細に
ついては、 37 ページの『第 2 章 GLS 環境変数』を参照してください。ロケール
カテゴリに関する情報については、 153 ページの『GLS ファイルの管理』を参照し
てください。
第 1 章 GLS 基本機能
13
データ型
環境変数
ロケール カテゴリ
日付 (DATE) 型
日時 (DATETIME) 型
時間隔 (INTERVAL) 型
金額 (MONEY) 型
数値 (10 進数 (DEC) 型、10 進数
(DECIMAL) 型、実数 (DOUBLE
PRECISION) 型、実数 (FLOAT) 型、整数
(INT) 型、8 バイト整数 (INT8) 型、整数
(INTEGER) 型、10 進数 (NUMERIC) 型、
小桁実数 (REAL) 型、小桁実数
(SMALLFLOAT) 型、小桁整数
(SMALLINT) 型)
GL_DATE
GL_DATE
GL_DATETIME
DBMONEY
なし
TIME
TIME
MONETARY
NUMERIC
数値および通貨フォーマット
IBM Informix 製品は数値または通貨データを含む文字列を読み取るとき、エンド
ユーザ フォーマットを使用して、この文字列をデータベースの列の内部値に変換す
る方法を決定します。 IBM Informix 製品は数値または通貨データを含む文字列を
出力するとき、エンド ユーザ フォーマットを使用して、データベースの列の内部
値を文字列としてフォーマットする方法を決定します。
数字および通貨のエンド ユーザ フォーマットは、次の要素を指定します。
v 小数点記号 は、数値の整数部分を小数部分から区切ります。デフォルト ロケー
ルでは、ピリオド (.) は小数点記号 (3.01) です。フランス語などのロケールで
は、カンマが小数点記号 (3,01) です。
v 3 桁区切り記号 を、数値の整数部分の数字のグループの間に使用できます。デフ
ォルト ロケールでは、カンマが 3 桁区切り記号 (3,255) です。フランス語ロケ
ールでは、スペースが 3 桁区切り記号です (3 255)。
v 正および負の数値を示す文字
v 通貨ではない 3 桁区切り記号のそれぞれの表示の間をグループ化する桁数
たとえば、数字では 100 万の後の区切り記号を常に省略すると指定すると、
1234,345 という出力が生成されます。
この表記に加えて、通貨データでは通貨記号 も使用して、通貨単位を識別します。
この記号は、通貨値の前 ($100) または後ろ (100FF) に表示できます。本書では、
通貨記号、小数点記号、3 桁区切り記号の組み合せを通貨表記 と呼びます。
日付および時刻フォーマット
IBM Informix 製品は時刻データを含む文字列を読み取るときに、エンド ユーザ フ
ォーマットを使用して、この文字列を日時 (DATETIME) 型の列の内部整数値に変換
する方法を決定します。 IBM Informix 製品は時刻データを含む文字列を出力する
ときに、エンド ユーザ フォーマットを使用して、日時 (DATETIME) 型の列の内部
整数値を文字列としてフォーマットする方法を決定します。同様に、IBM Informix
製品は日付エンド ユーザ フォーマットを使用して日付 (DATE) 型の内部値の文字
列の読取りおよび出力を行います。
14
IBM Informix GLS: ユーザーズ ガイド
重要: エンド ユーザ フォーマットはクライアント アプリケーションがデータを表
示する方法を指定しますが、データベースに格納される日時 (DATETIME) 型
値または日付 (DATE) 型値の内部フォーマットには影響を与えません。
日時のエンド ユーザ フォーマットは、曜日と月の名前、その省略形、および一般
に使用される日付表現、時刻表現 (12 時間または 24 時間)、日時 (DATETIME) 型
値の表現を含むことができます。
エンド ユーザ フォーマットは、(日本元号の日付システムにおける) 元号名や、(ア
ラビアの太陰暦など) グレゴリオ暦でない暦の名前を含むことができます。
たとえば、台湾地域では、グレゴリオ暦の年に加えて、民国年形式を使用します。
1912 年より前の日付の場合、民国年は負の値になります。民国年の 0000 は未定義
です。この値を使用しようとすると、エラーが発生します。次の表は、いくつかの
元号ベース日付を示したものです。
グレゴリオ暦の年
民国年
注釈
1993
1912
1911
1910
1900
82
01
-01
-02
-12
1993
1912
1911
1910
1900
-
1911
1911
1912
1912
1912
=
=
=
=
=
82
01
-01
-02
-12
日本元号の日付は、日本天皇の在位期間に結び付いています。次の表は、ユリウス
暦と日本元号の日付を示したものです。この表には、日本元号形式が、日本語文字
の抽象マルチバイト文字を使用した完全な形式と、ローマ字を使用した省略形 (元
号) で示されています。元号の省略形では、日本元号の英語名の最初の文字を使用
します。たとえば、H は平成を表します。
グレゴリオ暦の日付
1868/09/08
1912/07/30
1912/07/31
1926/12/25
1926/12/26
1989/01/07
1989/01/08
1995/01/01
抽象日本元号 (完全)
1
2
1
2
A A B B 01/09/08
A1A2B1B245/07/30
A1A2B1B201/07/31
A1A2B1B215/12/25
A1A2B1B201/12/26
A1A2B1B264/01/07
A1A2B1B201/01/08
A1A2B1B207/01/01
日本元号 (元号)
M01/09/08
M45/07/30
T01/07/31
T15/12/25
S01/12/26
S64/01/07
H01/01/08
H07/01/01
ここで、A1A2 と B1B2 は、マルチバイトの日本語文字を表します。詳しくは、34
ページの『日時エンド ユーザ フォーマットのカスタマイズ』を参照してくださ
い。
GLS ロケールの設定
データベース サーバとクライアント アプリケーションが正常に通信を行うには、
ご使用の環境に適切な GLS ロケールを設定する必要があります。 GLS ロケール名
は、IBM Informix 製品で使用したい言語、地域、およびコード セットを識別しま
す。ロケール名のコンポーネントの構文については、39 ページの
『CLIENT_LOCALE』を参照してください。
第 1 章 GLS 基本機能
15
IBM Informix 製品は、ロケール名を使用して対応するロケール ファイル を検索し
ます。ロケール ファイルとは、ランタイム バージョンのロケール情報です。ロケ
ール名は、gls と呼ばれる (INFORMIXDIR が指定する) Informix インストール デ
ィレクトリのサブディレクトリの GLS ロケール ファイルと一致する必要がありま
す。 GLS ロケール ファイルについて詳しくは、 153 ページの『GLS ファイルの管
理』を参照してください。
クライアント/サーバ環境におけるロケール
クライアント/サーバ環境では、クライアント アプリケーション、データベース サ
ーバ、および 1 つ以上のデータベースが別のコンピュータ上にある場合がありま
す。 図 1 は、Informix データベース サーバを介した ESQL/C クライアント アプ
リケーションと acctng データベースとのデータベース サーバ接続例を示したもの
です。
図 1. クライアント/サーバ環境の例
これらのコンピュータは、さまざまなオペレーティング システム、またはさまざま
な言語サポートを使用する場合があります。データベース アプリケーションのこれ
らの 3 部分がロケール情報を正常に通信できるようにするために、IBM Informix
製品は次のロケールをサポートします。
v クライアント ロケール は、クライアント アプリケーションが使用するロケール
を識別します。
v データベース ロケール は、データベース内のデータのロケールを識別します。
v サーバ ロケール は、データベース サーバがサーバー特有のファイルに使用する
ロケールを識別します。
図 2 は、(16 ページの図 1 の) 例の ESQL/C アプリケーションにより設定されるク
ライアント ロケール、データベース ロケール、およびサーバ ロケールを示してい
ます。
16
IBM Informix GLS: ユーザーズ ガイド
図 2. クライアント ロケール、データベース ロケール、およびサーバ ロケール
これらのそれぞれのロケールごとに同一または互換性のある GLS ロケールを設定
すると、クライアント アプリケーションは、それぞれのコンピュータのオペレーテ
ィング システムが言語特有の機能をどのように実装するかには依存しません。
次の節では、それぞれのロケールの詳細を説明します。
クライアント ロケール
クライアント ロケール は、クライアント アプリケーションが読取りおよび書込み
(I/O) 操作を実行するために使用する言語、地域、およびコード セットを指定しま
す。クライアント アプリケーションの I/O 操作としては、キーボード入力または
データベースに送信されるデータのファイルの読取り、およびデータベース サーバ
がデータベースから取得したデータの画面、ファイル、プリンタへの書込みが挙げ
られます。さらに、SQL API クライアントは、リテラル文字列 (エンド ユーザ フ
ォーマット)、埋込み SQL (ESQL) 文、およびホスト変数についてクライアント ロ
ケールを使用します。
IBM Informix 製品では、次の目的で CLIENT_LOCALE 環境変数が使用されます。
v ESQL/C のプリプロセッサはソース ファイルを処理するとき、
CLIENT_LOCALE のコード セットで作成された C ソース コードを受け入れま
す。
使用する C コンパイラおよびオペレーティング システムには、ESQL/C プログ
ラムに関する制限が課せられる場合があります。詳しくは、135 ページの『非
ASCII ファイル名の生成』を参照してください。
v ESQL/C クライアント アプリケーションが実行されると、クライアント ロケー
ルの名前について CLIENT_LOCALE が検査されます。この環境変数は、オペレ
ーティング システムのファイル名、テキスト ファイルの内容、および日付、時
刻、数値データのフォーマットに影響を与えます。
詳しくは、134 ページの『非 ASCII 文字の処理』を参照してください。
v クライアント アプリケーションとデータベース サーバが文字データのやり取り
を行うとき、CLIENT_LOCALE 環境変数のコード セットが (クライアント コン
第 1 章 GLS 基本機能
17
ピュータ上の) DB_LOCALE のコード セットと異なる場合には、クライアント
アプリケーションはコード セット変換を実行します。
コード セット変換により、これらの 2 つのコード セットが異なるときにデータ
破損を避けることができます。詳しくは、30 ページの『コード セット変換の実
行』を参照してください。
v クライアント アプリケーションが接続を要求するとき、CLIENT_LOCALE など
の情報をデータベース サーバに送信します。
データベース サーバは、サーバ処理ロケールのクライアント アプリケーション
情報の設定方法を決定するときに CLIENT_LOCALE を使用します。詳しくは、
25 ページの『データベース接続の確立』を参照してください。
v データベース ユーティリティによりファイルが作成されるとき、ファイル名とフ
ァイル内容は、CLIENT_LOCALE が指定するコード セットになります。
v クライアント アプリケーションが製品特有のメッセージ ファイルを検索すると
き、クライアント ロケールと関連付けられたメッセージ ディレクトリを検査し
ます。
詳しくは、34 ページの『メッセージ ファイルの探索』を参照してください。
17 ページの図 2 に示した接続の例では、クライアント ロケールが Windows コー
ド ページ 1252 (de_de.1252) のドイツ語である場合、ESQL/C クライアント アプ
リケーションが使用するドイツ語ロケール特有の情報には次が含まれます。
v 有効なエンド ユーザ フォーマットは、米国英語 (U.S. English) の日付の
Tuesday, 02/11/1997 について、次のフォーマットをサポートします。
Tu., 11. Feb 1997
v 有効な通貨エンド ユーザ フォーマットは、米国英語 (U.S. English) の金額で
$354,446.02 について、次のフォーマットをサポートします。
DM354.446,02
ヒント: クライアント ロケールに関するこの情報を提供するために、ロケール フ
ァイルに次のロケール カテゴリが含まれています。 COLLATION、
CTYPE、TIME、MONETARY、および NUMERIC。詳しくは、154 ページ
の『ロケール カテゴリ』を参照してください。
クライアント ロケールを決定するために、クライアント アプリケーションはクラ
イアント コンピュータに設定された環境変数を使用します。クライアント ロケー
ルのローカライズ順序とおよびエンド ユーザ フォーマットを取得するために、ク
ライアント アプリケーションは次の優先順位を使用します。
1. 日時データのエンド ユーザ フォーマットについては、DBDATE 環境変数と
DBTIME 環境変数、および通貨データのエンド ユーザ フォーマットについて
は、DBMONEY 環境変数 (これらのうちのいずれかが設定されている場合)
2. 日時データのエンド ユーザ フォーマットについては、GL_DATE 環境変数と
GL_DATETIME 環境変数 (これらのうちのいずれかが設定されている場合)
3. クライアント ロケールが定義する情報 (設定されている場合、
CLIENT_LOCALE)
4. デフォルト ロケール (米国英語 (U.S. English))
18
IBM Informix GLS: ユーザーズ ガイド
Dynamic Server
IBM Informix Dynamic Server に基づいたクライアント アプリケーションは、前述
したリストの手順 18、3 (18 ページ)、および 4 (18 ページ) の優先順位を使用しま
す。 Dynamic Server クライアント アプリケーションについて、その他の環境変数
を設定する必要はありません。
Dynamic Server の終り
DBDATE と DBTIME がサポートされることにより、IBM Informix 製品の以前の
バージョンに基づいた、クライアント アプリケーションの下位方向の互換性が提供
されます。新しいアプリケーションには、GL_DATE と GL_DATETIME を使用す
ることをお勧めします。
データベース ロケール
データベース ロケール (DB_LOCALE 環境変数を使用して設定される) は、特定の
データベース内のロケールを区別するデータ型 (各国語文字 (NCHAR) 型と各国語
可変長文字 (NVARCHAR) 型) を正しく解釈するために、データベース サーバが必
要とする言語、地域、およびコード セットを指定します。 DB_LOCALE に指定し
たコード セットにより、任意の文字の列で有効な文字、およびデータベース、表、
列、ビューなどのデータベース オブジェクトの名前が決定されます。詳しくは、62
ページの『データベース オブジェクトの命名』を参照してください。
データベース ロケールは、文字方向 も指定します。ほとんどの言語は左から右に
書きますが、右から左に書くものや、上から下に書くものもあります。
IBM Informix 製品は、次の目的で DB_LOCALE 環境変数を使用します。
v クライアント アプリケーションとデータベース サーバが文字データのやり取り
を行うとき、 (クライアント コンピュータの) DB_LOCALE 環境変数の値が
CLIENT_LOCALE の値と異なる場合には、クライアント アプリケーションはコ
ード セット変換を実行します。
コード セット変換により、これらの 2 つのコード セットが異なるときにデータ
破損を避けることができます。詳しくは、30 ページの『コード セット変換の実
行』を参照してください。
v クライアント アプリケーションが接続を要求するとき、DB_LOCALE (設定され
ている場合) などの情報をデータベース サーバに送信します。
データベース サーバは、サーバ処理ロケールのデータベース情報の設定方法を決
定するときに DB_LOCALE を使用します。詳しくは、25 ページの『データベー
ス接続の確立』を参照してください。
v クライアント アプリケーションがデータベースをオープンしようとするとき、デ
ータベース サーバは、データベースに格納されたデータベース ロケールを使用
して、クライアント アプリケーションが渡した DB_LOCALE 環境変数の値を比
較します。
ロケールを区別するデータ型の列にデータベース サーバがアクセスするとき、デ
ータベース サーバは DB_LOCALE が指定するロケールを使用します。詳しく
は、26 ページの『データベース ロケールの検証』を参照してください。
v データベース サーバが新しいデータベースを作成するとき、データベース サー
バは、データベース ロケール (DB_LOCALE) を検査して、データベースのシス
第 1 章 GLS 基本機能
19
テム カタログへの文字情報の保管方法を決定します。この情報には、正規表現の
処理方法、文字列の比較方法、コード セットが適切に使用されることを保証する
方法などの操作が含まれます。
データベース サーバは、systables カタログ表に、データベース ロケールのコン
デンス版を保管します。
データベース サーバがデータベース ロケール情報をシステム カタログに直接格納
するとき、そのロケールはデータベースに永続的に関連付けられます。この情報
は、データベースの有効期間を通して使用されます。このようにして、データベー
ス サーバは、ロケールを区別するデータを正しく解釈するために必要なロケールを
常に決定できます。
Dynamic Server
SET COLLATION 文で、異なるロケールのローカライズ順序照合を指定して、現行
セッション内で各国語文字 (NCHAR) 型データと各国語可変長文字 (NVARCHAR)
型データをソートできます。
Dynamic Server の終り
コンデンス版のデータベース ロケールは、systables の次の 2 行に格納されま
す。systables の site 列にはコンデンス ロケール名が格納されます。
v tabid 90 の行には、データベース ロケールの COLLATION カテゴリが格納され
ます。照合順序は、コード セットの文字が照合される順序を決定します。データ
ベース ロケールが (デフォルト ロケールの米国英語 (U.S. English) のように) 照
合のコード セット順序しか定義しない場合、データベース サーバは文字
(CHAR) 型列と可変長文字 (VARCHAR) 型列を作成して文字情報を格納します。
一方、データベース ロケールが照合のローカライズ順序を定義する場合、データ
ベース サーバは各国語文字 (NCHAR) 型列と各国語可変長文字 (NVARCHAR)
型列を作成してこの文字情報を格納します。この行の表名値は GLS_COLLATE
です。
v tabid 91 の行には、データベース ロケールの CTYPE カテゴリが格納されま
す。ロケールの CTYPE カテゴリは、コード セットの文字の分類方法を決定しま
す。データベース サーバは、大文字小文字変換といくつかの正規表現の評価に文
字分類を使用します。この行の表名 値は GLS_CTYPE です。
データベース
DB_LOCALE
DB_LOCALE
DB_LOCALE
サーバは、クライアント アプリケーションから送信される
環境変数の値を使用します。ただし、クライアント コンピュータに
を設定しない場合、データベース サーバはサーバ コンピュータの
の値をデータベース ロケールとして使用します。
17 ページの図 2 に示した接続では、クライアント アプリケーションが acctng デ
ータベースにある各国語文字 (NCHAR) 型列のソート済み情報を要求するとき、デ
ータベース サーバはデータベース ロケールを参照します。このロケールが
Windows コード ページ 1252 (de_de.1252) のドイツ語である場合、データベース
サーバは、ö などのアクセント付き文字を、それと同じ文字でアクセント付きでは
ないものの後にソートするローカライズ順序を使用します。したがって、文字列
20
IBM Informix GLS: ユーザーズ ガイド
öff は ord の後で、pre の前にソートされます。データベース ロケールを設定す
る構文については、41 ページの『DB_LOCALE』を参照してください。
サーバ ロケール
サーバ ロケール (SERVER_LOCALE 環境変数を使用して設定する) は、データベ
ース サーバがサーバ コンピュータ (データベース サーバが実行されているコンピ
ュータ) に対して読取りおよび書込み (I/O) 操作を実行するために使用する言語、
地域、およびコード セットを指定します。これらの I/O 操作には、次のファイル
の読取りまたは書込みが含まれます。
v 追加の診断情報を提供するためにデータベース サーバにより生成される診断ファ
イル
v イベントを記録するためにデータベース サーバにより生成されるログ ファイル
v SQL 文 SET EXPLAIN により生成されるファイル sqexplain.out
ただし、データベース サーバは、Informix プロプラエタリ フォーマットのファイ
ル (データベースとテーブル ファイル) を書き込むために、サーバー ロケールは使
用しません。サーバ ロケールを使用してデータベース サーバが書き込むファイル
の詳細な説明については、 103 ページの『第 4 章 データベース サーバの機能』を
参照してください。
データベース サーバは、SERVER_LOCALE に指定されたロケールに関連付けられ
たメッセージ ディレクトリ内の製品特有のメッセージ ファイルを検索します。詳
しくは、34 ページの『メッセージ ファイルの探索』を参照してください。
17 ページの図 2 に示した接続例では、Informix データベース サーバは
SERVER_LOCALE に指定されたロケールを使用して、メッセージ ログ ファイル
への書込み時に使用するコード セットを決定します。サーバ ロケールを設定する
構文については、58 ページの『SERVER_LOCALE』を参照してください。
ヒント: データベース サーバは、サーバ ロケールを認識する必要がある唯一の
IBM Informix 製品です。サーバ コンピュータ上で実行されるデータベー
ス サーバ ユーティリティは、クライアント ロケールを使用してファイル
への書込みとファイルからの読取りを行います。また、(サーバ コンピュー
タの) データベース ロケールを使用して、サーバ コンピュータに設定され
たデータベースにアクセスします。
注: サーバ ロケールとサーバ処理ロケールは、2 つの異なるロケールです。サーバ
処理ロケールについて詳しくは、27 ページの『サーバ処理ロケールの決定』を
参照してください。
デフォルト ロケール
ロケールを指定できる環境変数が設定されていない場合、IBM Informix 製品は米国
英語 (U.S. English) をデフォルト ロケール として使用します。
デフォルト ロケールは次の情報を指定します。
v 米国英語 (U.S. English) および英語コード セット
v 通貨、数値、日付、および時刻データの標準米国 (U.S.) フォーマット
第 1 章 GLS 基本機能
21
データベース アプリケーションのデフォルト ロケールを使用するには、特別な手
順は不要です。ただし、カスタマイズ済みバージョンの米国英語 (U.S. English)、英
国英語、またはその言語を使用するには、ご使用の環境で適切なロケールを識別す
る必要があります。
GLS ロケールの指定方法については、23 ページの『非デフォルト ロケールの設
定』を参照してください。
デフォルト コード セット
デフォルト ロケールである米国英語 (U.S. English) のロケール名は次のとおりで
す。ここで、en は英語を、us は米国地域を、数字はデフォルト コード セットの
プラットフォーム固有の名前を示します。
デフォルト コード セット とは、デフォルト ロケールがサポートするコード セッ
トです。デフォルト ロケールを使用するとき、デフォルト コード セットは、
ASCII コード セットと 8 ビット文字のいくつかのセットの両方をサポートしま
す。 ASCII 値の図表については、「IBM Informix: SQL ガイド: 構文」の『関係演
算子』の部分を参照してください。次の表は、UNIX および Windows プラットフ
ォームのデフォルト コード セットを示したものです。
プラットフォーム
デフォルト コード セット
UNIX
Windows
ISO8859-1
Microsoft 1252
ロケール名には、コード セット名か、またはコンデンス形式のコード セット名の
いずれかとしてコード セットを指定できます。たとえば、次のロケール名はどちら
も、ISO8859-1 コード セットの米国英語 (U.S. English) ロケールを識別します。
UNIX のみ
v ロケール名 en_us.8859-1 はコード セット名を使用して ISO8859-1 コード セ
ットを識別します。
UNIX のみ の終り
Windows のみ
v ロケール名 en_us.0333 はコンデンス形式のコード セット名を使用して
ISO8859-1 コード セットを識別します。
Windows のみ の終り
コンデンス形式のコード セット名の詳細については、161 ページの『コード セッ
ト変換ファイル名』を参照してください。
日付および時刻のデフォルト エンド ユーザ フォーマット
デフォルト ロケールでは、IBM Informix 製品は、日付および時刻の値に次のエン
ド ユーザ フォーマットを使用します。
v 日付 (DATE) 型値の場合: %m/%d/%iy
22
IBM Informix GLS: ユーザーズ ガイド
v 日時 (DATETIME) 型値の場合: %iY-%m-%d %H:%M:%S
フォーマット ディレクティブに関する情報は、48 ページの『GL_DATE』と 53 ペ
ージの『GL_DATETIME』を参照してください。日時エンド ユーザ フォーマット
の概要については、14 ページの『日付および時刻フォーマット』を参照してくださ
い。これらのエンド ユーザ フォーマットのカスタマイズ方法については、34 ペー
ジの『日時エンド ユーザ フォーマットのカスタマイズ』を参照してください。
数値および通貨値のデフォルト エンド ユーザ フォーマット
デフォルト ロケールを使用するとき、IBM Informix 製品は、数値および通貨の値
に次のエンド ユーザ フォーマットを使用します。
v 3 桁区切り記号はカンマ (,) です。
v 小数点記号はピリオド (.) です。
v それぞれの 3 桁区切り記号の間に 3 つの数字が表示されます。
v 正と負の符号は、それぞれプラス (+) とマイナス (-) です。
通貨の値の場合、IBM Informix 製品は、通貨記号であるドル ($) 記号も通貨の値の
前に使用します。数値および通貨のエンド ユーザ フォーマットの概要について
は、14 ページの『数値および通貨フォーマット』を参照してください。これらのエ
ンド ユーザ フォーマットのカスタマイズ方法については、36 ページの『通貨値の
カスタマイズ』を参照してください。
非デフォルト ロケールの設定
デフォルトでは、IBM Informix 製品は米国英語 (U.S. English) ロケールを使用しま
すが、IBM Informix 製品は多数の他のロケールをサポートします。
非デフォルト ロケールを使用するには、次の環境変数を設定する必要があります。
v 適切なクライアント ロケールを指定するために、CLIENT_LOCALE 環境変数を
設定します。
CLIENT_LOCALE を設定しない場合、クライアント ロケールは、デフォルト
ロケールの米国英語 (U.S. English) です。
v クライアント コンピュータがデータベースに接続するときに使用する、クライア
ント アプリケーションのデータベース ロケールを指定するために、それぞれの
クライアント コンピュータに DB_LOCALE を設定します。
DB_LOCALE をクライアント システムに設定しない場合、クライアント アプリ
ケーションは DB_LOCALE をクライアント ロケールに設定します。このデフォ
ルト値を使用した場合、クライアント アプリケーションでコード セット変換を
実行する必要がありません。
サーバ コンピュータに DB_LOCALE を設定して、(クライアントが独自の
DB_LOCALE を指定していない場合に) データベース サーバが、データベース
の作成などの操作を実行できるようにしたい場合もあります。
v 適切なサーバ ロケールを指定するために、SERVER_LOCALE 環境変数を設定
します。
SERVER_LOCALE を設定しない場合、サーバ ロケールはデフォルト ロケール
の米国英語 (U.S. English) です。
第 1 章 GLS 基本機能
23
非デフォルト ロケールのデータベースにアクセスするには、クライアント システ
ムの CLIENT_LOCALE および DB_LOCALE 設定値がこの非デフォルト ロケー
ルをサポートする必要があります。 30 ページの『コード セット変換の実行』で説
明したように、両方のロケールが同一であるか、またはそれぞれのコード セットが
お互いに変換可能である必要があります。
たとえば、日本語の SJIS ロケールのデータベースにアクセスするには、クライア
ント システムで DB_LOCALE と CLIENT_LOCALE の両方を ja_jp.sjis に設定
します。 (DB_LOCALE を設定して、 CLIENT_LOCALE は設定しない場合、クラ
イアント アプリケーションによりエラーが戻されます。その理由は、クライアント
アプリケーションが、SJIS データベースのコード セットと、クライアント システ
ムのデフォルト ロケールのコード セットとの間でコード セット変換をセット ア
ップできないためです。
クライアント アプリケーションが接続を要求するとき、データベース サーバは、
クライアント、データベース、およびサーバ ロケールにある情報を使用してサーバ
処理ロケールを作成します。詳しくは、25 ページの『データベース接続の確立』を
参照してください。
IBM Informix 製品での GLS ロケールの使用
IBM Informix 製品は、次のタスクで GLS ロケールを使用します。
v クライアント アプリケーションが接続を要求するとき、データベース サーバ
は、クライアント ロケールとデータベース ロケールを使用してこれらのロケー
ルに互換性があるかどうかを判別します。
v クライアント アプリケーションが初めて実行を開始するとき、クライアント ロ
ケールとデータベース ロケールを比較して、コード セット変換を実行する必要
があるかどうかを判別します。
v 製品特有のメッセージを表示するすべての IBM Informix 製品は、これらのメッ
セージを検索するためにクライアント ロケールに特有のディレクトリを探索しま
す。
非 ASCII 文字のサポート
IBM Informix 製品は、その GLS ロケールからコード セットを取得します。ロケ
ールは、シングルバイトとマルチバイトのコード セットの両方で使用可能です。サ
ポートされたすべてのコード セットは、ASCII 文字を定義します。多くのコード
セットは、追加の非 ASCII 文字 (8 ビットまたはマルチバイト文字) もサポートし
ます。コード セットおよび非 ASCII 文字について詳しくは、8 ページの『文字デ
ータのコード セット』を参照してください。
次のタイプの GLS ロケールは、そのコード セットに非 ASCII 文字が含まれるロ
ケールの例です。
v デフォルト ロケールはデフォルト コード セットをサポートします。デフォルト
コード セットには、é、ñ、および ö など、非英語文字の 8 ビット文字が含まれ
ます。
デフォルト コード セットの名前は、IBM Informix 商品がインストールされてい
るプラットフォームにより異なります。デフォルト コード セットについて詳し
くは、22 ページの『デフォルト コード セット』を参照してください。
24
IBM Informix GLS: ユーザーズ ガイド
v 多くの非デフォルト ロケールで、デフォルト コード セットがサポートされてい
ます。
UNIX のみ
UNIX デフォルト コード セット ISO8859-1 をサポートする非デフォルト ロケ
ールには、英国英語 (en_gb.8859-1)、フランス語 (fr_fr.8859-1)、スペイン語
(es_es.8859-1)、およびドイツ語 (de_de.8859-1) が含まれます。
UNIX のみ の終り
v 日本語の SJIS (ja_jp.sjis)、韓国語 (ko_kr.ksc)、および中国語 (zh_cn.gb) な
ど、その他の非デフォルト ロケールには、マルチバイト コード セットが含まれ
ます。 (統一中国語コード セットは、GB18030-2000 です。)
マルチバイト文字が含まれている非 ASCII 文字を使用できるコンテキストについて
は、61 ページの『第 3 章 SQL 機能』、103 ページの『第 4 章 データベース サ
ーバの機能』、および 123 ページの『第 5 章 一般的な SQL API 機能』を参照し
てください。
ただし、非 ASCII 文字をサポートする IBM Informix 製品の場合、同一の非 ASCII
文字を持つコード セットをサポートするロケールを使用する必要があります。
データベース接続の確立
クライアント アプリケーションがデータベースへの接続を要求するとき、データベ
ース サーバは GLS ロケールを使用して次の手順を実行します。
1. クライアントから渡されたクライアント ロケール情報を検証します。
2. クライアント アプリケーションと接続を要求したデータベースとの間の接続を
確立できることを検証します。
3. サーバ処理ロケールを決定します。データベース サーバはサーバ処理ロケール
を使用して、接続に必要なロケール特有の情報を処理します。
クライアント ロケールの送信
クライアント アプリケーションは接続を要求するとき、クライアント ロケールか
らデータベース サーバに次の環境変数を送信します。
v ロケール情報
– CLIENT_LOCALE
CLIENT_LOCALE が設定されていない場合、クライアントはこれをデフォル
ト ロケールに設定します。
– DB_LOCALE
DB_LOCALE が設定されていない場合、クライアントは DB_LOCALE 値を
データベースに送信しません。
v ユーザによりカスタマイズされたエンド ユーザ フォーマット
– 日時エンド ユーザ フォーマット: GL_DATE と GL_DATETIME
– 通貨エンド ユーザ フォーマット: DBMONEY
第 1 章 GLS 基本機能
25
これらの環境変数のいずれも設定しない場合、クライアント アプリケーションは
これらの環境変数をデータベース サーバに送信せず、データベース サーバは
CLIENT_LOCALE で定義されるエンド ユーザ フォーマットを使用します。
データベース サーバはこれらの設定値を使用して次の情報を抽出します。
v 数値と通貨値のフォーマット方法
v 日付と時刻のフォーマット方法
v クライアントが予期するデータベース ロケール
データベース サーバはこの情報を使用して、データベース ロケールを検証し、サ
ーバ処理ロケールを確立します。
データベース ロケールの検証
既存のデータベースをオープンするには、クライアント アプリケーションはそのデ
ータベースのデータベース ロケールを正しく識別する必要があります。データベー
ス ロケールを検査するために、データベース サーバは次の 2 つのロケールを比較
します。
v クライアント アプリケーションから送信される、DB_LOCALE により指定され
たロケール
v クライアント アプリケーションが要求するデータベースのシステム カタログに
格納されているデータベース ロケール
詳しくは、19 ページの『データベース ロケール』を参照してください。
2 つのデータベース ロケールは、その言語、地域、コード セット、およびロケー
ル修飾子が同一である場合に一致します。これらのデータベース ロケールが一致し
ない場合、データベース サーバは次の操作を実行します。
v SQL 通信域 (SQLCA 構造体) の SQLWARN 配列の 8 番目の文字 (CHAR) 型フ
ィールドに、警告フラグとして W を設定します。 W の値は、ASCII 32 (ブラン
ク) と ASCII 87 (W) です。
v 要求されたデータベースのシステム カタログ内に格納されているデータベース
ロケールを、データベース ロケールとして使用します。
警告: クライアント アプリケーションが接続を要求した後に、SQLWARN 警告フ
ラグがあるかどうかを検査してください。 2 つのデータベース ロケールが
一致しない場合、データベースから抽出されたデータがクライアント アプリ
ケーションにより正しく解釈されなかったり、または、クライアントから抽
出されたデータがデータベース サーバにより正しく解釈されない場合があり
ます。そのような接続を続行した場合、交換されるデータのフォーマットを
理解する責任をあなたが負うことになります。
接続警告の検査
SQLWARN 配列の 8 番目の文字 (CHAR) 型フィールドを検査するために、
ESQL/C クライアント アプリケーションは sqlca.sqlwarn.sqlwarn7 フィールドを
検査できます。
sqlwarn7 フィールドの値が W である場合、データベース サーバーはクライアン
トが指定したデータベース ロケールを無視し、その代わりにデータベース内のロケ
ールをデータベース ロケールとして使用します。
26
IBM Informix GLS: ユーザーズ ガイド
ESQL プログラム内の例外の処理方法の詳細については、「IBM Informix: ESQL/C
Programmer’s Manual」を参照してください。
重要: SQLWARN 配列内の配列要素は、IBM Informix ESQL/C では 0 から順番に
番号が付けられますが、他の言語では 1 から番号が付けられます。
IBM Informix 4GL および IBM Informix Dynamic 4GL など、配列で 1 から
始まる計数方法を使用する IBM Informix GLS ツールの場合、IBM Informix
ESQL/C が sqlca.sqlwarn.sqlwarn7 を呼び出すという警告文字は、
SQLCA.SQLAWARN[8] と呼ばれます。
サーバ処理ロケールの決定
データベース サーバは、サーバ処理ロケール を使用して、独自の内部セッション
および任意の接続に関するロケール情報を取得します。データベース サーバが実行
を開始するとき、データベース サーバは、サーバ処理ロケールをデフォルト ロケ
ールに初期化します。クライアント アプリケーションが接続を要求するとき、デー
タベース サーバは、クライアント ロケールとデータベース ロケールを組み込むた
めにサーバ処理ロケールを再度決定します。データベース サーバはサーバ処理ロケ
ールを使用して、クライアント システムとデータベースとの間でデータを転送する
ときに必要なロケール情報を取得します。
Informix データベース サーバがデータベース ロケールを検査すると、Informix デ
ータベース サーバはクライアント ロケールとデータベース ロケールからの環境変
数の優先順位を使用してサーバ処理ロケールを設定します。
データベース サーバは、サーバ処理ロケールから次の情報を取得します。
v データベースのロケール情報
このデータベース情報には、ロケールを区別するデータ型 (各国語文字 (NCHAR)
型と各国語可変長文字 (NVARCHAR) 型) の列にあるデータのローカライズ順序
とコード セットが含まれます。データベース サーバは、検査したデータベース
ロケールの名前からこの情報を取得します。
v クライアント アプリケーション データのロケール情報
このクライアント アプリケーション情報により、日付、時刻、数値、および通貨
データのエンド ユーザ フォーマットが提供されます。データベース サーバは、
クライアントが接続を要求するときにクライアント アプリケーションからこの情
報を取得します。
図 3 は、クライアント ロケール、データベース ロケール、サーバ ロケール、およ
びサーバ処理ロケールの関係を示しています。
第 1 章 GLS 基本機能
27
図 3. サーバ処理ロケール
ヒント: データベース サーバは、独自のオペレーティング システム ファイルに対
する読取りおよび書込み操作に、SERVER_LOCAL 環境変数によって指定
されたサーバ ロケールを使用します。オペレーティング システム ファイ
ルの詳細については、103 ページの『Informix データベース サーバによる
GLS サポート』を参照してください。
データベースのロケール情報: データベース サーバは、ロケールを区別するデー
タ型 (各国語文字 (NCHAR) と各国語可変長文字 (NVARCHAR) 型) の列にあるデ
ータの解釈方法を認識する必要があります。このロケール特有のデータを正しく処
理するには、データベース サーバが、データの照合およびデータのコード セット
のローカライズ順序を認識しなければなりません。さらに、データベース サーバは
データベース ロケールのコード セットを、サーバ処理ロケールのコード セットと
して使用します。
データベース サーバは、サーバ処理ロケールとサーバ ロケールとの間のコード セ
ット変換を実行する必要がある場合があります。詳しくは、30 ページの『コード
セット変換の実行』を参照してください。
データベース サーバは、次の優先順位を使用してこのデータベース情報を決定しま
す。
1. サーバ処理ロケールのデータベース情報を判別するためにデータベース サーバ
が使用するロケールは、次のように、クライアント アプリケーションが接続を
要求するデータベースの状態によって異なります。
a. 既存の データベースへの接続の場合、データベース サーバは、データベー
ス ロケールの検査時に取得したデータベース ロケールからのデータベース
情報を使用します。クライアント アプリケーションが DB_LOCALE を送信
しない場合、データベース サーバは、サーバ コンピュータに設定された
DB_LOCALE を使用します。
28
IBM Informix GLS: ユーザーズ ガイド
b. 新しい データベースの場合、データベース サーバは、クライアント アプリ
ケーションから送信された DB_LOCALE を使用します。
2.
サーバ コンピュータの DB_LOCALE 環境変数が指示するロケール
3. デフォルト ロケール (米国英語 (U.S. English))
Dynamic Server
Dynamic Server は、前述したリストの手順 18、29、および 3 の優先順位を使用し
て、サーバ処理ロケールのデータベース情報を取得します。他の環境変数を設定す
る必要はありません。
Dynamic Server の終り
ヒント: 優先順位ルールは、サーバ処理ロケールの COLLATION カテゴリおよび
CTYPE カテゴリの両方をデータベース サーバが決定する方法に適用され
ます。これらのロケール カテゴリについて詳しくは、154 ページの『ロケ
ール カテゴリ』を参照してください。
データベースによるこれらの環境変数の取得方法について詳しくは、25 ページの
『クライアント ロケールの送信』を参照してください。
クライアント アプリケーションがデータベースのオープンを別に要求した場合、デ
ータベース サーバは、次のようにサーバ処理ロケールのデータベース情報を再確立
する必要があります。
1. オープンするデータベースのデータベース ロケールを、クライアント アプリケ
ーションの DB_LOCALE 環境変数の値と比較してそのデータベース ロケール
を再検査します。
2. (前の手順で) 新たに検査されたデータベース ロケールを使用してサーバ処理ロ
ケールを再設定します。
たとえば、クライアント アプリケーションの DB_LOCALE が en_us.8859-1
(ISO8859-1 コード セットの米国英語 (U.S. English)) に設定されているとします。
その場合、クライアント アプリケーションは米国英語 (U.S. English) ロケール
(en_us.8859-1) のデータベースをオープンし、データベース サーバが、データベ
ース情報を定義するロケールとして en_us.8859-1 のサーバ処理ロケールを設定し
ます。
次に、クライアント アプリケーションが米国英語 (U.S. English) のデータベースを
クローズし、フランス語ロケール (fr_fr.8859-1) のデータベースを別にオープンす
る場合、データベース サーバはサーバ処理ロケールを再設定する必要があります。
データベース サーバは、SQLWARN 配列の 8 番目の文字 (CHAR) 型フィールド
を、2 つのロケールが異なることを示す W に設定します。ただし、これらのロケー
ルの両方が ISO8859-1 コード セットをサポートするため、クライアント アプリケ
ーションがこの接続を使用することを選択する場合があります。クライアント アプ
リケーションがフランス語ロケールのデータベースではなく、日本語の SJIS ロケ
ール (ja_jp.sjis) のデータベースをオープンする場合、ロケールの違いが大きすぎ
るため、クライアント アプリケーションはおそらく接続を継続しません。
クライアント アプリケーションのロケール情報: クライアント アプリケーション
が送信する通貨、日付、または時刻データにエンド ユーザ フォーマットが表示さ
第 1 章 GLS 基本機能
29
れるとき、データベース サーバはエンド ユーザ フォーマットの解釈方法を認識す
る必要があります。また、データベース サーバは、データベースからのデータをク
ライアント アプリケーションに送信する前に、このデータを適切なエンド ユーザ
フォーマットに変換する必要もあります。エンド ユーザ フォーマットについて詳
しくは、12 ページの『エンド ユーザ フォーマット』を参照してください。
データベース サーバは、次の優先順位を使用してこのクライアント アプリケーシ
ョン情報を決定します。
1. 日時エンド ユーザ フォーマットについては、DBDATE 環境変数と DBTIME
環境変数、および通貨エンド ユーザ フォーマットについては DBMONEY 環境
変数 (これらのうちのいずれかがクライアントに設定されている場合)
DBDATE と DBTIME がサポートされることにより、前のバージョンの
IBM Informix 製品に基づいた、クライアント アプリケーションの下位方向の互
換性が提供されます。新しいアプリケーションには、GL_DATE と
GL_DATETIME を使用することをお勧めします。
2. 日時エンド ユーザ フォーマットについては GL_DATE 環境変数と
GL_DATETIME 環境変数 (これらのうちのいずれかが設定されている場合)
3. クライアント アプリケーションからの CLIENT_LOCALE 環境変数により指示
されるロケール
ヒント: 優先順位ルールは、サーバ処理ロケールの NUMERIC、MONETARY、
TIME、および MESSAGES カテゴリをデータベース サーバが決定する方
法に適用されます。これらのロケール カテゴリについて詳しくは、154 ペ
ージの『ロケール カテゴリ』を参照してください。
クライアント アプリケーションは、DBDATE、DBMONEY、DBTIME、
GL_DATE、および GL_DATETIME 環境変数 (設定されている場合) を、データベ
ース サーバに渡します。また、CLIENT_LOCALE および DB_LOCALE 環境変数
も渡します。詳しくは、25 ページの『クライアント ロケールの送信』を参照して
ください。
コード セット変換の実行
クライアント/サーバ環境では、クライアント コンピュータまたはサーバ コンピュ
ータが、異なるコード セットを使用して同一の文字を表す場合、一方のコード セ
ットから他方のコード セットへ文字データを変換する必要がある場合があります。
あるコード セット (ソース コード セット) から別のコード セット (ターゲット
コード セット) への文字データの変換は、コード セット変換 と呼ばれます。コー
ド セット変換を行わないと、(2 つのコンピュータが異なるコード セットを使用す
るときに) 一方のコンピュータは、他方のコンピュータからの文字データを正常に
処理または表示できません。
IBM Informix 製品は、GLS ロケールを使用してコード セット変換を実行します。
IBM Informix クライアント アプリケーションとデータベース サーバの両方が、コ
ード セット変換を実行する場合があります。詳しくは、105 ページの『データベー
ス サーバ コード セット変換』および 123 ページの『クライアント アプリケーシ
ョンのコード セット変換』を参照してください。
30
IBM Informix GLS: ユーザーズ ガイド
GLS ロケールの一部としてコード セットを指定します。実行時に、IBM Informix
製品は使用するコード セットを次のルールをに従って決定します。
v クライアント アプリケーションはクライアント コード セット
(CLIENT_LOCALE 環境変数によって指定されるもの) を使用して、クライアン
ト コンピュータ上のすべてのファイルの書込み、およびすべてのクライアント
I/O デバイスとのやり取りを行います。
v データベース サーバはデータベース コード セット (DB_LOCALE 環境変数に
よって指定されるもの) を使用して、データベースとの間でデータの転送を行い
ます。
v データベース サーバはサーバ コード セット (SERVER_LOCALE 環境変数によ
って指定されるもの) を使用して、(デバッグや警告ファイルなどの) ファイルを
書き込みます。
コード セット変換は次の機能を提供しません。
v コード セット変換は意味変換ではありません。
異なる言語の単語間の変換は行いません。たとえば、英語の単語の yes をフラン
ス語の単語の oui に変換しません。コード セット変換が保証するのは、そのエ
ンコード方法に関係なく、文字が処理または書き込まれたときに、それぞれの文
字の意味が保存されるということのみです。
v コード セット変換では、文字がソース コード セットにしか存在しない場合、タ
ーゲット コード セットではその文字は作成されません。
たとえば、文字 â が、コード セットにその文字が含まれていないターゲット コ
ンピュータに渡された場合、ターゲット コンピュータはその文字を正確に処理ま
たは出力できません。
ソースのコード セットのそれぞれの文字ごとに、対応する文字がターゲット コー
ド セットに存在する必要があります。しかし、ターゲット コード セットにない文
字がソース コード セットに含まれている場合、変換で、ミスマッチする文字をタ
ーゲット コード セットにマップする方法を定義する必要があります。 (ソース コ
ード セットとターゲット コード セットの文字間のマッピングが行われないこと
を、データ消失 エラーと呼ぶ場合があります。) ソース コード セット内のすべて
の文字がターゲット コード セットに存在する場合、ミスマッチ処理は適用されま
せん。
コード セット変換では、次の 4 つの方法のいずれかを使用して、ミスマッチする
文字を処理します。
v ラウンド トリップ変換
この方法では、ミスマッチするそれぞれの文字をターゲット コード セットの一
意の文字にマップします。そのため、リターン マッピングにより、元の文字にマ
ップされます。この方法では、両方向の変換結果において情報が消失しないこと
が保証されます。ただし、1 方向のみで変換されたデータが、ターゲット コンピ
ュータ上で正しく処理または出力されない場合があります。
v 置換変換
この方法では、ミスマッチするすべての文字をターゲット コード セット内の 1
文字にマップします。ターゲット コード セットはミスマッチする文字を強調表
示します。この方法では、1 方向の変換で、ミスマッチする文字が明確に示され
第 1 章 GLS 基本機能
31
ることが保証されます。しかし、両方向の変換では、ミスマッチする文字が存在
する場合、情報が消失する結果となります。
v グラフィック置換変換
この方法では、ミスマッチするそれぞれの文字を、ソースの文字に類似した、タ
ーゲット コード セット内の文字にマップします。
この方法には、1 文字の合字から等価の 2 文字へのマッピング、またその逆も含
まれ、ミスマッチするデータがターゲット コンピュータでより正確に出力されま
すが、多くの場合、ターゲット コンピュータ上でのデータ処理で混乱が生じま
す。
v 前述の 2 つまたは 3 つの変換メソッドの混用
ヒント: それぞれのコード セット変換ソース ファイル (.cv) により、関連づけら
れた変換がミスマッチする文字を処理する方法が指示されます。コード セ
ット変換ファイルの詳細については、 153 ページの『GLS ファイルの管
理』を参照してください。
コード セット変換の実行時期
アプリケーションがコード セット変換を使用する必要があるのは、 2 つのコード
セット (クライアントとサーバ処理ロケール、またはサーバ処理ロケールとサーバ)
が異なる場合のみです。次のような状態が、コード セットが異なる原因となる可能
性があります。
v さまざまなオペレーティング システムにより、同一の文字が異なる方法でエンコ
ードされる場合があります。
たとえば、Windows コード ページ 1252 の文字 â (a- 曲折アクセント記号) の
コードは、16 進数 0xE2 です。 IBM コード化文字セット ID (CCSID) 437 (共
通 IBM UNIX コード セット) では、このコードは 16 進数 0x83 です。クライ
アントで â のコードが変更されずに IBM UNIX コンピュータに送信された場
合、ギリシャ語の文字 g (ガンマ) として出力されます。この事態は、g のコード
が、IBM UNIX コンピュータ上では 16 進数の 0xE2 であるために発生します。
ヒント: IBM Informix 製品は、IBM CCSID コード セットの数字、すなわち、コー
ド化グラフィック文字表現を一意に識別する、 16 ビット数のシステムを
サポートします。詳しくは、 153 ページの『GLS ファイルの管理』を参照
してください。
v 1 つの言語が、複数のコード セットを持つことがあります。それぞれのコード
セットは、その言語のサブセットを表します。
たとえば、コード セット ccdc と big5 は両方とも、中国語のサブセットの内
部表記です。ただし、これらの 2 つのサブセットには、異なる数の中国語文字が
含まれます。
重要: GLS は統一中国語 GB18030-2000 コード セットを完全にサポートします
が、このコードには、Unicode 基本多言語面 (BMP) と拡張面のすべての文字
が含まれています。
コンピュータ A からコンピュータ B へのデータ転送でコード セット変換が必要
な場合、コンピュータ B からコンピュータ A へのデータ転送でもコード セット
変換が必要になります。クライアント/サーバ環境では、次の状況でコード セット変
換が必要になる可能性があります。
32
IBM Informix GLS: ユーザーズ ガイド
v クライアント ロケールとデータベース ロケールが、異なるコード セットを指定
している場合、コード セット変換処理を使用してサーバ コンピュータがロード
されないように、クライアント アプリケーションはコード セット変換を実行し
ます。詳しくは、123 ページの『クライアント アプリケーションのコード セッ
ト変換』を参照してください。
v サーバ ロケールとサーバ処理ロケールが異なるコード セットを指定している場
合、データベース サーバは、ログ ファイルなどのオペレーティング システム
ファイルに対する書込みおよび読取り時にコード セット変換を実行します。詳し
くは、105 ページの『データベース サーバ コード セット変換』を参照してくだ
さい。
図 4 では、黒色のピリオドは、クライアント/サーバ環境でコード セット変換が発
生する可能性がある 2 つのポイントを示します。
図 4. GLS コード セット変換のポイント
図 4 に示す接続例では、クライアント コード セットとデータベース コード セッ
トが変換可能である場合、ESQL/C クライアント アプリケーションは、データベー
ス サーバへ送信するデータとデータベース サーバから受信するデータに対して、
コード セット変換を実行します。サーバ ロケールのコード セットとサーバ処理ロ
ケールのコード セットが変換可能である場合、 Informix データベース サーバは、
メッセージ ログ ファイルへの書込みを行うときにもコード セット変換を実行しま
す。
UNIX のみ
UNIX 上の IBM Informix ゲートウェイ 製品は、GL_PATH 環境変数を使用して
GLS コード セット変換表のデフォルトの位置を上書きします。詳しくは、バージ
ョン 7.2 またはそれ以降の IBM Informix Enterprise Gateway のマニュアルを参照
第 1 章 GLS 基本機能
33
してください。
UNIX のみ の終り
メッセージ ファイルの探索
IBM Informix 製品は、GLS ロケールを使用して製品特有のメッセージ ファイルを
探します。デフォルトでは、IBM Informix 製品は、製品特有のメッセージ ファイ
ルのクライアント ロケールに関連付けられたサブディレクトリを自動的に検索しま
す。次の表は、それぞれのプラットフォームごとにサブディレクトリをリストした
ものです。
プラットフォーム
ディレクトリ
UNIX
Windows
$INFORMIXDIR/msg/lg_tr/code_set
%INFORMIXDIR%¥msg¥lg_tr¥code_set
このパスで、lg と tr はそれぞれ言語と地域で、クライアント ロケールの名前に由
来しています。 code_set は、コンデンス形式のコード セット名です。コード セ
ットのコンデンスについて詳しくは、158 ページの『ロケール ファイル サブディ
レクトリ』を参照してください。
IBM Informix 製品は、環境変数の優先順位を使用して製品特有のメッセージ ファ
イルを探します。 DBLANG 環境変数を使用すると、IBM Informix 製品が使用する
メッセージ ファイルの位置についてクライアント ロケールを上書きできます。
DBLANG を使用して、ご使用の環境がサポートするそれぞれのロケールごとに、メ
ッセージ ファイルが存在するディレクトリを指定することもできます。
エンド ユーザ フォーマットのカスタマイズ
環境変数を設定してクライアント ロケール内の次のエンド ユーザ フォーマットを
上書きできます。
v 日時 (日付 (DATE) 型、日時 (DATETIME) 型) 値のエンド ユーザ フォーマッ
ト
v 通貨 (金額 (MONEY) 型) 値のエンド ユーザ フォーマット
本節では、これらのエンド ユーザ フォーマットのカスタマイズ方法を説明しま
す。エンド ユーザ フォーマットの概要については、12 ページの『エンド ユーザ
フォーマット』を参照してください。
日時エンド ユーザ フォーマットのカスタマイズ
GLS ロケールは日時のエンド ユーザ フォーマットを定義しますが、これは、通常
は変更する必要はありません。しかし、次の環境変数を使用して、(たとえば、
10/27/97 という日付を 10-27-97 にというように) 日付 (DATE) 型値および日時
(DATETIME) 型値のエンド ユーザ フォーマットをカスタマイズできます。
34
IBM Informix GLS: ユーザーズ ガイド
環境変数
説明
GL_DATE
日付エンド ユーザ フォーマットの各国対応フォーマットについ
て、拡張フォーマット文字列をサポートします。
時刻エンド ユーザ フォーマットの各国対応フォーマットについ
て、拡張フォーマット文字列をサポートします。
日付エンド ユーザ フォーマットを指定します。(下位方向の互換
性はサポートされます。)
埋込み言語 (ESQL) ライブラリ関数の時刻エンド ユーザ フォ
ーマットを指定します。(下位方向の互換性はサポートされま
す。)
GL_DATETIME
DBDATE
DBTIME
日付または時刻エンド ユーザ フォーマット文字列は、内部の日付 (DATE) 型値ま
たは日時 (DATETIME) 型値をリテラル文字列として操作するフォーマットを指定し
ます。
ヒント: これらの環境変数を設定しても、データベース内の日付 (DATE) 型値と日
時 (DATETIME) 型値の内部フォーマットには影響しません。
GL_DATE 環境変数と GL_DATETIME 環境変数は、エンド ユーザ フォーマット
を指定できるようにするフォーマット ディレクティブをサポートします。フォーマ
ット ディレクティブの形式は、%x (x は 1 つ以上の変換文字) です。
元号ベースの日時フォーマット
GL_DATE 環境変数と GL_DATETIME 環境変数は、元号ベースの (アジア) フォ
ーマットなど、代替日付および代替時刻をサポートします。これらの代替フォーマ
ットでは、台湾民国年や日本元号などの日付をサポートします。
ヒント: DBDATE と DBTIME も、いくつかの元号ベース日付をサポートできま
す。
日付 (DATE) 型値と日時 (DATETIME) 型値に元号ベースのフォーマットを指定す
るには、次のように E 変換修飾子を使用します。
v GL_DATE または GL_DATETIME のいずれかの場合、E はいくつかのフォーマ
ット ディレクティブで使用できます。
元号の有効なフォーマット変換のリストについては、55 ページの『代替時刻フォ
ーマット』を参照してください。
v DBDATE の場合、E はフォーマット仕様し使用できます。
日時の優先順位
IBM Informix 製品は次の優先順位を使用して、内部の日付 (DATE) 型値のエンド
ユーザ フォーマットを決定します。
1. DBDATE
2. GL_DATE
3. クライアント ロケールに定義された情報 (CLIENT_LOCALE が設定されている
場合)
4. デフォルトの日付フォーマットは %m/%d/%iy です (DBDATE と GL_DATE が
設定されておらず、ロケールも指定されていない場合)
第 1 章 GLS 基本機能
35
IBM Informix 製品は次の優先順位を使用して、内部の日時 (DATETIME) 型値のエ
ンド ユーザ フォーマットを決定します。
1. DBDATE および DBTIME
2. GL_DATETIME
3. クライアント ロケールが定義する情報 (設定されている場合、
CLIENT_LOCALE)
4. デフォルトの日時 (DATETIME) 型フォーマットは %iY-%m-%d %H:%M:%S です
(CLIENT_LOCALE、DBTIME、および GL_DATETIME が設定されていない場
合)
これらのフォーマット ディレクティブについて詳しくは、 48 ページの
『GL_DATE』と 53 ページの『GL_DATETIME』を参照してください。
通貨値のカスタマイズ
GLS ロケールにはエンド ユーザ フォーマットが含まれますが、これは、通常は変
更する必要はありません。ただし、DBMONEY 環境変数を設定して、通貨表記の表
示方法をカスタマイズすることができます。 DBMONEY 環境変数の詳細について
は、「IBM Informix: SQL ガイド: 参照」を参照してください。
通貨エンド ユーザ フォーマット文字列は、内部 10 進数 (DECIMAL) 型値、実数
(FLOAT) 型値、および金額 (MONEY) 型値を通貨リテラル文字列として操作するフ
ォーマットを指定します。 IBM Informix 製品は次の優先順位を使用して、金額
(MONEY) 型値のエンド ユーザ フォーマットを決定します。
1. DBMONEY
2. クライアント ロケールにより定義される情報
CLIENT_LOCALE はクライアント ロケールを識別します。これを設定しない場
合、クライアント ロケールはデフォルト ロケールになります。
3. デフォルトの通貨表記 = $,.
DBMONEY が設定されず、かつロケールが指定されていない場合、通貨記号は
ドル記号に、3 桁区切り記号はカンマに、小数点記号はピリオドになります。
36
IBM Informix GLS: ユーザーズ ガイド
第 2 章 GLS 環境変数
本章の概要 . . . .
環境変数の設定と検索 .
GLS 関連の環境変数 .
CC8BITLEVEL . .
CLIENT_LOCALE .
DBDATE . . . .
DBLANG . . . .
DB_LOCALE . . .
DBMONEY . . .
DBNLS (IDS のみ) .
DBTIME (E/C のみ)
ESQLMF . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
37
37
38
38
39
40
40
41
43
43
44
45
GLS8BITFSYS . . . . . . . . .
非 ASCII ファイル名に関する制約事項
GL_DATE . . . . . . . . . . .
年のフォーマット ディレクティブ. .
代替日付フォーマット . . . . . .
オプションの日付フォーマット修飾子
GL_DATETIME . . . . . . . . .
代替時刻フォーマット . . . . . .
オプションの時刻フォーマット修飾子
作成日時の設定値 . . . . . . .
SERVER_LOCALE . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
45
46
48
50
50
51
53
55
55
58
58
本章の概要
IBM Informix 製品は、GLS 関連の環境変数からの情報と、データベースに保管さ
れているデータからの情報を使用してクライアント ロケール、データベース ロケ
ール、およびサーバ ロケールを設定します。本章では、GLS 関連の環境変数につ
いて説明します。環境変数について詳しくは、「IBM Informix: SQL ガイド: 参照」
を参照してください。
環境変数の設定と検索
GLS 機能によって、弁別発音記号、照合順序、およびデータベースの作成時に選択
した言語の通貨、日付、数字の規則を使用できます。 ONCONFIG 構成パラメータ
は GLS には存在しませんが、適切な環境変数を設定する必要があります。
ESQL/C
IBM Informix ESQL/C を使用すると、C の putenv( ) 関数を使用して環境変数の
修正、作成、および削除を行うことができ、C の getenv( ) 関数を使用してオペレ
ーティング システム環境から環境変数の値を検索できます。詳しくは、
「IBM Informix: ESQL/C Programmer’s Manual」を参照してください。
ESQL/C の終り
UNIX のみ
UNIX プラットフォームでは、適切なシェル コマンド (C シェルの場合、setenv
など) を使用して環境変数を設定します。詳しくは、UNIX のマニュアルを参照し
てください。
UNIX のみ の終り
© Copyright IBM Corp. 1996, 2003
37
Windows のみ
Windows では、InetLogin 構造体に環境変数を設定するか、Setnet32 ユーティリ
ティを使用してレジストリに環境変数を設定します。 InetLogin ついて詳しくは、
ご使用の SQL API の Microsoft Windows マニュアルを参照してください。
Setnet32 について詳しくは、「IBM Informix: Installation Guide」を参照してくださ
い。
Windows のみ の終り
重要: ifx_putenv() を使用する場合、アプリケーションは他の Informix ライブラリ
ルーチンを呼び出す前に、すべての環境変数を設定する必要があります。こ
れにより、GLS ルーチンの初期化、ロケールの値の凍結、および環境変数の
フォーマットを回避します。
GLS 関連の環境変数
本節では、Informix データベース サーバおよび SQL API 製品に設定できる、
GLS 関連の環境変数をリストします。
UNIX のみ
UNIX 上の IBM Informix ゲートウェイ 製品は、GL_PATH 環境変数を使用して
GLS コード セット変換表のデフォルトの位置を上書きします。詳しくは、
Enterprise Gateway のマニュアルを参照してください。
UNIX のみ の終り
CC8BITLEVEL
CC8BITLEVEL 環境変数は、ESQL/C フィルタである esqlmf が非 ASCII (8 ビッ
トおよびマルチバイト) 文字に対して実行する処理のタイプを決定します。 135 ペ
ージの『非 ASCII ファイル名の生成』も参照してください。
CC8BITLEVEL
38
0
1
2
3
要素
説明
0
esqlmf フィルタは、リテラル文字列およびコメント内のすべての
非 ASCII 文字を 8 進定数に変換します (非 ASCII 文字のこれらの
使用法をサポートしない C コンパイラ用)。
1
esqlmf フィルタは、リテラル文字列内の非 ASCII 文字を 8 進定
数に変換しますが、コメント内の非 ASCII 文字は許可します (C
コンパイラには、コメント内の非 ASCII 文字をサポートするもの
があります)。
2
esqlmf フィルタは、リテラル文字列内の非 ASCII 文字を許可し、
非 ASCII 文字のすべてのバイトに 8 番目のビット セットがある
ことを保証します (これを要件とする C コンパイラ用)。
IBM Informix GLS: ユーザーズ ガイド
3
esqlmf フィルタは、非 ASCII 文字をフィルタ処理しません (リテ
ラル文字列およびコメント内のマルチバイト文字をサポートする C
コンパイラ用)。
esql コマンドを使用して ESQL/C ファイルを処理するたびに、esqlmf を起動する
には、ESQLMF 環境変数を 1 に設定します。 CC8BITLEVEL を設定しない場
合、esql コマンドは、CC8BITLEVEL の値が 0 であると仮定します。
重要: ESQLMF を有効にするには、CC8BITLEVEL を 3 に設定してはいけませ
ん。
CLIENT_LOCALE
CLIENT_LOCALE 環境変数はクライアント ロケール を指定します。このクライア
ント ロケールは、クライアント アプリケーションが操作の読取りおよび書込み、
エンド ユーザ フォーマット、および ESQL 文の処理を行うときに使用します。
17 ページの『クライアント ロケール』も参照してください。
CLIENT_LOCALE Language
_ territory
. code_set
@modifier
要素
説明
code_set
ロケールによりサポートされるコード セットの名前。
language
特定のロケールの言語を表す 2 文字の名前。
modifier
最大で 4 文字の英数字のオプションのロケール修飾子。
territory
文化上の慣習を表す 2 文字の名前。たとえば、territory は、スイス
で話されるフランス語、ドイツ語、またはイタリア語を指定するこ
とができます。
modifier を指定することにより、language および territory の設定値によって暗黙指
定される国/地域別情報の設定値が修正されます。通常、modifier は、ロケールによ
りサポートされる特殊なローカライズ照合順序を指示します。
フランス系カナダ ロケール用の非デフォルト クライアント ロケールの例は、次の
とおりです。
CLIENT_LOCALE fr_ca.8859-1
UNIX のみ
glfiles ユーティリティを使用して、UNIX システム上で使用できる GLS ロケール
のリストを生成できます。詳しくは、165 ページの『glfiles ユーティリティ (UNIX
のみ)』を参照してください。
UNIX のみ の終り
CLIENT_LOCALE を設定しない場合、クライアント アプリケーションはデフォル
ト ロケールの米国英語 (U.S. English) をクライアント ロケールとして使用しま
す。
第 2 章 GLS 環境変数
39
Windows のみ
CLIENT_LOCALE への変更内容は、HKEY_LOCAL_MACHINE の下の Windows
レジストリ データベースにも入力されます。
Windows のみ の終り
DBDATE
IBM Informix 製品は、以前の製品との互換性を目的として DBDATE 環境変数をサ
ポートします。新しいアプリケーションで GL_DATE 環境変数を使用することをお
勧めします。
DBDATE 環境変数は、日付 (DATE) 型列の値のエンド ユーザ フォーマットを指
定します。エンド ユーザ フォーマットについては、12 ページの『エンド ユーザ
フォーマット』を参照してください。
重要: DBDATE は、システムの初期化時に評価されます。これが無効である場合、
システムの初期化は失敗します。
(1)
標準 DBDATE フォーマット
DBDATE
(2)
元号ベース DBDATE フォーマット
注:
1
SQLR を参照
2
140 ページを参照
重要: DBDATE 変数は、GL_DATE 環境変数より優先されます。同様に、
CLIENT_LOCALE が指定するデフォルトの日付 (DATE) 型のフォーマット
よりも優先されます。
DBLANG
DBLANG 環境変数は、IBM Informix 製品が使用するカスタマイズ済み言語特有メ
ッセージ ファイルが含まれる、INFORMIXDIR のサブディレクトリを指定します。
DBLANG
40
relative_path
full_path
locale_name
要素
説明
relative_path
Informix インストール ディレクトリのサブディレクトリ
(INFORMIXDIR によって指定される)。
full_path
コンパイル済みメッセージ ファイルが含まれるディレクトリの絶対
パス名。
locale_name
GLS ロケールの名前であり、そのフォーマットは lg_tr.code_set で
す。ここで、lg は特定のロケールの言語を表す 2 文字の名前、tr
は文化上の慣習を表す 2 文字の名前、code_set はそのロケールがサ
ポートするコード セットの名前です。
IBM Informix GLS: ユーザーズ ガイド
IBM Informix 製品は、製品特有のメッセージ ファイルを次の順序で探します。
1. DBLANG が full_path に設定されている場合: full_name が示すディレクトリ。
2. DBLANG が relative_path に設定されている場合:
a. UNIX 上の $INFORMIXDIR/msg/$DBLANG、または Windows 上の
%INFORMIXDIR%¥msg¥%DBLANG%。
b. UNIX 上の $INFORMIXDIR/$DBLANG、または Windows 上の
%INFORMIXDIR%¥%DBLANG%。
3. DBLANG が locale_name に設定されている場合: UNIX システム上の
$INFORMIXDIR/msg/lg_tr/code_set、または、Windows 上の
%INFORMIXDIR%¥msg¥lg_tr¥code_set にある、ロケールの msg サブディレ
クトリ。ここで、lg、tr および code_set は、それぞれ、locale_name の言
語、地域、およびコード セットです。
DBLANG の値は、データベース サーバがそのメッセージ ログに書き込むメッ
セージには影響しません。データベース サーバは、これらのメッセージのロケ
ールを SERVER_LOCALE 環境変数から取得します。
4. DBLANG が選択されていない 場合: UNIX システム上の
$INFORMIXDIR/msg/lg_tr/code_set、または、Windows 上の
%INFORMIXDIR%¥msg¥lg_tr¥code_set にある、ロケールの msg サブディレ
クトリ。ここで、lg と tr は、IBM Informix 製品に関連付けられたロケールか
ら取得される言語と地域で、code_set は、そのロケールがサポートするコード
セットのコンデンス名です。
v IBM Informix クライアント製品の場合: lg と tr はクライアント ロケールか
ら取得されます (CLIENT_LOCALE が設定されている場合には、その値から
取得されます)。
v Informix データベース サーバ製品の場合: lg と tr はサーバ ロケールから取
得されます (SERVER_LOCALE が設定されている場合には、その値から取得
されます)。
5. DBLANG、CLIENT_LOCALE、および LANG が設定されていない場合:
a. UNIX システム上の $INFORMIXDIR/msg/en_us/0333、または Windows 上
の %INFORMIXDIR%¥msg¥en_us¥0333 にある、デフォルト ロケールの内
部メッセージ ディレクトリ。
b. UNIX システム上の $INFORMIXDIR/msg、または Windows 上の
%INFORMIXDIR%¥msg にあるデフォルトの Informix メッセージ ディレク
トリ。
コンパイル済みメッセージ ファイルのファイル拡張子は、.iem です。
DB_LOCALE
DB_LOCALE 環境変数は、データベース ロケール を指定します。データベース
サーバは、このデータベース ロケールを使用して、ロケールを区別するデータを処
理します。 19 ページの『データベース ロケール』と 153 ページの『GLS ファイ
ルの管理』を参照してください。
DB_LOCALE language
_
territory
.
code_set
@modifier
第 2 章 GLS 環境変数
41
要素
説明
code_set
ロケールによりサポートされるコード セットの名前。
language
特定のロケールの言語を表す 2 文字の名前。
modifier
最大で 4 文字の英数字のオプションのロケール修飾子。
territory
文化上の慣習を表す 2 文字の名前。たとえば、territory は、スイス
で話されるフランス語、ドイツ語、またはイタリア語を指定するこ
とができます。
modifier を指定することにより、language および territory の設定値によって暗黙指
定される国/地域別情報の設定値が修正されます。 modifier は、ロケールによりサポ
ートされるローカライズ照合順序を指示できます。たとえば、@ modifier を設定し
て辞書または電話帳の照合順序を指定できます。
フランス系カナダ ロケール用の非デフォルト データベース ロケールの例は、次の
とおりです。
DB_LOCALE fr_ca.8859-1
UNIX のみ
glfiles ユーティリティを使用して、UNIX システム上で使用できる GLS ロケール
のリストを生成できます。詳しくは、165 ページの『glfiles ユーティリティ (UNIX
のみ)』を参照してください。
UNIX のみ の終り
Dynamic Server
SET COLLATION 文は、DB_LOCALE ロケールの COLLATION 設定値とは異な
るローカライズ順序の照合を、現行セッションに指定できます。この指定は、各国
語文字 (NCHAR) 型データ値と各国語可変長 (NVARCHAR) 型データ値のソート操
作に影響を及ぼします。
Dynamic Server の終り
クライアント コンピュータに DB_LOCALE を設定しない場合、クライアント ア
プリケーションは、データベース ロケールが CLIENT_LOCALE 環境変数の値を持
っていると仮定します。ただし、クライアント アプリケーションは、接続要求時
に、このデフォルト値をデータベース サーバに送信しません。
Windows のみ
DB_LOCALE への変更内容は、HKEY_LOCAL_MACHINE の下の Windows レジス
トリ データベースにも入力されます。
Windows のみ の終り
42
IBM Informix GLS: ユーザーズ ガイド
DBMONEY
DBMONEY 環境変数は、金額 (MONEY) 型列の値のエンド ユーザ フォーマット
を指定します。 12 ページの『エンド ユーザ フォーマット』も参照してくださ
い。
DBMONEY
’$’
front
.
,
back
要素
説明
front
通貨値の前に表示される通貨記号を指定します。
back
通貨値の後に指定される通貨記号を指定します。
, (カンマ)、
. (ピリオド)
通貨小数点記号。カンマまたはピリオドを指定すると、3 桁区切り
記号に他の記号を暗黙的に割り当てることになります。
この環境変数を使用して、通貨表記を指定できます。
v 通貨値の前または後に表示される通貨記号。
v 通貨小数点記号。通貨値の整数部分を、小数部分と分けます。
たとえば、「DM,」を DBMONEY 設定として使用するとします。この DBMONEY
設定は、次の通貨表記を指定します。
v 通貨記号 DM が通貨値の前に表示されます。
v 小数点記号はカンマです。
v 3 桁区切り記号は (暗黙的に) ピリオド (.) です。
クライアント ロケールが非 ASCII 文字を定義するコード セットをサポートする場
合、front または back 記号に非 ASCII 文字を使用できます。文字でない記号は、
引用符で囲む必要があります。ピリオドまたはカンマは、有効な front 記号または
back 記号ではありません。デフォルト ロケールでは、ドル ( $ ) 記号がデフォル
トの front 通貨記号、ピリオド ( . ) がデフォルトの小数点記号、およびカンマ
( , ) がデフォルトの 3 桁区切り記号です。 DBMONEY 設定は、ロケールの
MONETARY カテゴリにより定義されるどの表記よりも優先されます。 36 ページ
の『通貨値のカスタマイズ』も参照してください。
ヨーロッパの言語の多くの GLS ロケールでは、通貨値のユーロ記号を含むコード
セットがサポートされます。
DBNLS (IDS のみ)
DBNLS 環境変数は、クライアント システムの各国語文字 (NCHAR) 型データベー
ス列と各国語可変長文字 (NVARCHAR) 型データベース列との間、および文字
(CHAR) 型変数と可変長文字 (VARCHAR) 型変数との間での (それぞれの) 自動デ
ータ型変換がサポートされるかどうかを指定します。
広域言語サポート (GLS) では、DBNLS 環境変数は不要です。ただし、Dynamic
Server データベースは継続して DBNLS の既存の動作をサポートします。これによ
り、各国語文字 (NCHAR) 型列または各国語可変長文字 (NVARCHAR) 型列のある
表を操作するアプリケーションがサポートされます。
第 2 章 GLS 環境変数
43
DBNLS
’1’
’2’
C シェルを使用する UNIX システムの場合、このコマンドを使用して、
DB-Access、IBM Informix SQL、IBM Informix 4GL、IBM Informix Dynamic 4GL、
および SQL アプリケーション (たとえば ESQL/C) などのクライアント アプリケ
ーションで、クライアント アプリケーションの文字 (CHAR) 型変数と可変長文字
(VARCHAR) 型変数との間、およびデータベースの各国語文字 (NCHAR) 型列と各
国語可変長文字 (NVARCHAR) 型列との間で自動的に変換を行うことができます。
setenv DBNLS 1
また、この設定は、各国語文字 (NCHAR) 型列から抽出された値の、文字 (CHAR)
型変数への自動変換、および各国語可変長文字 (NVARCHAR) 型列の値の、可変長
文字 (VARCHAR) 型変数への自動変換もサポートします。
同様に、DBNLS = 1 のとき、文字 (CHAR) 型変数として格納された文字列を各国
語文字 (NCHAR) 型列に挿入でき、可変長文字 (VARCHAR) 型変数として格納され
た文字列を各国語可変長文字 (NVARCHAR) 型データベース列に挿入できます。
この機能をサポートするには、クライアント システム上でも DBNLS を 1 に設定
する必要があります。この設定により、クライアント システムで、日付、数値、お
よび通貨値をクライアント ロケールに指定されたフォーマットで表示することもで
きます。
逆に、DBNLS の値を指定しないと、クライアント アプリケーションの文字
(CHAR) 型変数と可変長文字 (VARCHAR) 型変数との間、およびデータベースの各
国語文字 (NCHAR) 型列と各国語可変長文字 (NVARCHAR) 型列との間での自動変
換が使用不可になります。また、Dynamic Server は、クライアント システムのロケ
ール ファイルを使用できません。
setenv DBNLS
unsetenv DBNLS
DBNLS のもう 1 つの可能な設定は 2 です。その場合、次のコマンドを使用しま
す。
setenv DBNLS 2
この設定は、(クライアント システムの DBNLS が 1 または 2 に 設定されている
場合) 各国語文字 (NCHAR) 型と文字 (CHAR) 型との間、および各国語可変長文字
(NVARCHAR) 型と可変長文字 (VARCHAR) 型との間での自動データ型変換をサポ
ートします。クライアントとデータベース サーバのロケールには、異なるロケール
を使用できます。
DBTIME (E/C のみ)
IBM Informix 製品は、以前の製品との互換性を目的として DBTIME をサポートし
ます。新しいアプリケーションで GL_DATETIME 環境変数を使用することをお勧
めします。 DBTIME 環境変数は、SQL API ルーチンの日時 (DATETIME) 型列の
値のエンド ユーザ フォーマットを指定します。 12 ページの『エンド ユーザ フ
ォーマット』も参照してください。
44
IBM Informix GLS: ユーザーズ ガイド
(1)
DBTIME
Standard DBTIME Formats
(2)
Era-Based DBTIME Formats
注:
1
SQLR を参照
2
143 ページを参照
ヒント: DBTIME は、ESQL/C 関数ライブラリ内のフォーマット ルーチンにのみ影
響を与えます。 142 ページの『DATETIME フォーマット関数』を参照し
てください。
ESQLMF
ESQLMF 環境変数には、1 または 0 の値を指定できます。
ESQLMF
0
1
要素
説明
0
esql は、非 ASCII 文字が既に変換済みであるソース コードをコ
ンパイルします。
1
esql は esqlmf を起動して、 ESQL/C ソース ファイルのプリプ
ロセス時にマルチバイト文字をフィルタ処理します。
ESQLMF 環境変数は、esql コマンドが自動的に ESQL/C マルチバイト フィルタ
esqlmf を起動するかどうかを指示します。
CC8BITLEVEL 環境変数の値は、esqlmf が実行するフィルタ処理のタイプを決定
します。 esqlmf については、135 ページの『非 ASCII ファイル名の生成』を参
照してください。
重要: ESQLMF を有効にするには、CC8BITLEVEL を 3 に設定してはいけませ
ん。
非 ASCII 文字が既に変換済みである既存のソース コードをコンパイルしたい場
合、ESQLMF を 0 に設定するか、または設定しないでください。どちらの場合
も、esql は esqlmf を起動しません。
GLS8BITFSYS
GLS8BITFSYS 環境変数を使用して、(ESQL/C プロセッサなどの) IBM Informix
製品にオペレーティング システムが 8 ビット透過であるかどうかを通知します。
この設定により、IBM Informix 製品が、生成するオペレーティング システム ファ
イルのファイル名に非 ASCII 文字を使用できるかどうかが決定されます。
GLS8BITFSYS
0
1
第 2 章 GLS 環境変数
45
要素
説明
0
IBM Informix 製品は、オペレーティング システムが 8 ビット透過
ではないと想定し、7 ビットの ASCII 文字のみを使用してファイ
ル名を生成します。
1
IBM Informix 製品は、オペレーティング システムが 8 ビット透過
であると想定し、生成するオペレーティング システム ファイルの
ファイル名に非 ASCII 文字 (8 ビットまたはマルチバイト文字) を
使用できます。
クライアント アプリケーション内で指定するファイル名に非 ASCII 文字を使用す
る場合、サーバ処理ロケールのコード セットがこれらの非 ASCII 文字をサポート
していることを確認する必要があります。 GLS8BITFSYS を設定しない場合、
Informix データベース サーバは GLS8BITFSYS が 1 に設定されているかのよう
に振る舞います。
たとえば、次の SQL 文を使用して A1A2B1B2 という名前のデータベースを作成
します。この場合、A1A2 と B1B2 はマルチバイト文字です。
CREATE DATABASE A1A2B1B2
サーバ コンピュータ上で GLS8BITFSYS が 1 である (または設定されていない)
場合、データベース サーバは、オペレーティング システムが 8 ビット透過である
と想定し、データベース ディレクトリ A1A2B1B2.dbs を生成します。
サーバ コンピュータ上で GLS8BITFSYS が 0 に設定されていて、ファイル名に
非 ASCII 文字を使用する場合、IBM Informix 製品は、内部アルゴリズムを使用し
てこれらの非 ASCII 文字を ASCII 文字に変換します。結果のファイル名は 7 ビッ
ト透過になります。
無効なバイト シーケンスのファイル名を GLS ベースの製品で使用すると、エラー
が生成されます。
dbexport などの一部のデータベース ユーティリティ、および IBM Informix
ESQL/C 製品のコンパイラのみが、ファイルを作成および使用するためにクライア
ント コンピュータ上の GLS8BITFSYS を使用します。たとえば、A1A2B1B2.ec
という名前の ESQL/C ソース ファイルをコンパイルするとします。この名前の、
A1A2 と B1B2 はマルチバイト文字です。クライアント コンピュータ上で
GLS8BITFSYS が 1 に設定されている (または設定されていない) 場合、ESQL/C
プロセッサは、A1A2B1B2.c という名前の中間 C ファイルを生成します。
GLS8BITFSYS を検査する ESQL/C ファイルのリストについては、134 ページの
『非 ASCII 文字の処理』を参照してください。
非 ASCII ファイル名に関する制約事項
ロケールが非 ASCII 文字を使用するコード セットをサポートする場合、
IBM Informix 製品により生成されるオペレーティング システム ファイルのファイ
ル名に制約事項が適用されます。あなた、または IBM Informix 製品がファイルが
作成して、ファイル名を割り当てる前に、次の質問事項を検討してください。
v オペレーティング システムが非 ASCII ファイル名をサポートするかどうか?
v IBM Informix 製品が非 ASCII ファイル名を受け入れるかどうか?
46
IBM Informix GLS: ユーザーズ ガイド
オペレーティング システムが 8 ビット透過であることの確認: ファイル名での非
ASCII 文字をサポートするには、オペレーティング システムが 8 ビット透過 であ
る必要があります。オペレーティング システムが 8 番目のビットをコード値の一
部として読み取る場合、そのオペレーティング システムは 8 ビット透過です。言
い換えると、オペレーティング システムは、8 番目のビットの値を無視したり、そ
の値に対して独自の解釈を行ってはいけません。
オペレーティング システムのマニュアルを参照したり、またはシステム管理者に問
い合わせて、オペレーティング システムが 8 ビット透過であるかどうかを判別し
てから、IBM Informix 製品が使用および生成するファイル名に非 ASCII 文字を含
める非デフォルト ロケールを使用することを決めてください。
製品により同じコード セットがサポートされていることの確認: IBM Informix 製
品によって、ファイル名に非 ASCII 文字が含まれているオペレーティング システ
ム ファイルが生成されると、そのファイル名とファイル内容は、特定のコード セ
ットで書き込まれます。 IBM Informix 製品またはクライアント アプリケーション
がそのファイルにアクセスする必要があるときは、同じコード セットをサポートす
るサーバ処理ロケールをその製品が使用していることを確認する必要があります。
サーバ コード セット: データベース サーバが、ファイル名に非 ASCII 文字が含
まれているファイルを作成するとき、サーバ ロケールがこれらの文字をサポートし
ている必要があります。データベース サーバを開始する前に、SERVER_LOCALE
環境変数を、これらの非 ASCII 文字を含むコード セットを持つロケールの名前に
設定する必要があります。
たとえば、UNIX のパス /A1A2B1B2/C1C2D1D2 を使用するメッセージ ログを使
用すると想定します。ここで、A1A2、 B1B2、C1C2、および D1D2 は、日本語
SJIS コード セットのマルチバイト文字です。データベース サーバがコンピュータ
上にこのメッセージ ログ ファイルを作成できるようにするには、次を行います。
1. ONCONFIG ファイルの MSGPATH パラメータを修正します。
UNIX の場合:
MSGPATH /A1A2B1B2/C1C2D1D2
# multibyte message-log filename
Windows の場合:
MSGPATH ¥A1A2B1B2¥C1C2D1D2
# multibyte message-log filename
2. サーバ コンピュータ上の SERVER_LOCALE 環境変数を日本語の SJIS ロケー
ル ja_jp.sjis に設定します。
3. oninit ユーティリティを使用してデータベース サーバ 開始します。
データベース サーバの初期化時に、データベース サーバは、オペレーティング シ
ステムが 8 ビット透過であると想定し、UNIX 上に /A1A2B1B2/C1C2D1D2 メッ
セージ ログを、または Windows 上に ¥A1A2B1B2¥C1C2D1D2 ファイルを作成し
ます。
クライアント コード セット: ESQL/C プロセッサが、ファイル名に非 ASCII 文
字が含まれているファイルを作成するとき、クライアント ロケールはこれらの非
ASCII 文字をサポートしている必要があります。 Informix データベース サーバを
第 2 章 GLS 環境変数
47
開始する前に、クライアント ロケールのコード セット (クライアント コード セ
ット) にこれらの文字が含まれていることを確認する必要があります。
非デフォルト ロケールを使用するときは、CLIENT_LOCALE 環境変数を、これら
の非 ASCII 文字を含むコード セットを持つロケールの名前に設定する必要があり
ます。
たとえば、パスが /A1A2B1B2/C1C2D1D2 である ESQL/C ソース ファイルを処理
したいと想定します。ここで、A1A2、B1B2、C1C2、および D1D2 は、日本語
SJIS コード セットのマルチバイト文字です。 esql コマンドでクライアント コン
ピュータ上に中間 C ソース ファイルを作成できるようにするには、次の手順を行
う必要があります。
1. クライアント コンピュータ上の CLIENT_LOCALE 環境変数を日本語の SJIS
ロケール ja_jp.sjis に設定します。
2. esql コマンドを使用して ESQL/C ソース ファイルを処理します。
ファイル名に関連付けられたコード セットと、クライアント ロケールに関連付け
られたコード セットが一致しない場合、有効なファイル名に、クライアント ロケ
ールで無効な文字が含まれる場合があります。 ESQL/C プロセッサは無効な文字を
含むファイル名を拒否し、次のエラー メッセージを表示します。
Illegal characters in filename.
GL_DATE
GL_DATE 環境変数は、日付 (DATE) 型列の値のエンド ユーザ フォーマットを指
定します。エンド ユーザ フォーマットについては、12 ページの『エンド ユーザ
フォーマット』を参照してください。
重要: GL_DATE は、設定時ではなく使用時に評価されます。無効である場合、操
作は失敗します。
GL_DATE
’string’
(1)
読取りのフォーマット修飾子
(2)
印刷のフォーマット修飾子
注:
1
51 ページの『オプションの日付フォーマット修飾子』
2
51 ページの『オプションの日付フォーマット修飾子』
要素
説明
string
GL_DATE 値のエンド ユーザ フォーマットを指定するフォーマッ
ト ディレクティブ。日付をフォーマットする任意のフォーマット
ディレクティブを使用できます。
GL_DATE のエンド ユーザ フォーマットには、次の文字を含めることができま
す。
v ロケールの CTYPE カテゴリが指定する 1 つ以上の空白文字。
v 通常の文字 (% 記号または空白文字以外)。
v フォーマット ディレクティブ。% 記号の後に、必要な置換えを指定する変換文
字が続きます。
48
IBM Informix GLS: ユーザーズ ガイド
次のリストでは、元号に基づかないフォーマット ディレクティブを説明します。
フォーマット
ディレクティブ 説明
%a
%A
%b
%B
%C
%d
%D
%e
%h
%iy
%iY
%m
%n
%t
%w
%x
%y
%Y
%%
ロケールに定義されているように曜日の省略名に置き換えられます。
ロケールに定義されているように曜日の完全名に置き換えられます。
ロケールに定義されているように月の省略名に置き換えられます。
ロケールに定義されているように月の完全名に置き換えられます。
整数 (00 から 99) として、世紀の数値 (100 で除算し、整数に切り捨てら
れた年) に置き換えられます。
整数 (01 から 31) として、日付に置き換えられます。 1 桁の数字は、その
前にゼロ (0) が付きます。
%m/%d/%y フォーマットと同一です。
数値 (1 から 31) として、日付に置き換えられます。 1 桁の数字は、その
前に空白が入ります。
%b フォーマット ディレクティブと同一です。
読取りと出力の両方で、2 桁の数値 (00 から 99) として、年に置き換えら
れます。これは、%y の Informix 特有のフォーマット ディレクティブで
す。
読取りと出力の両方で、4 桁の数値 ((0000 から 9999) として、年に置き換
えられます。これは、%y の Informix 特有のフォーマット ディレクティブ
です。
数値 (01 から 12) として、月に置き換えられます。
復帰改行文字に置き換えられます。
TAB 文字に置き換えられます。
数値 (0 から 6) として、曜日に置き換えられます。 0 は、ロケールで日曜
日と等価であることを表します。
ロケールが定義する特殊な日付表記に置き換えられます。
読取りと出力の両方で、年が 2 桁の数値 (00 から 99) である必要がありま
す。
読取りと出力の両方で、年 が 4 桁の数値 (0000 から 9999) である必要が
あります。
% に置き換えられます (フォーマット文字列で % を使用できるように)。
空白文字、またはその他の英数字以外の文字は、2 つのフォーマット ディレクティ
ブの間に表示される必要があります。たとえば、米国英語 (U.S. English) ロケール
を使用する場合、03/05/1997 の内部日付 (DATE) 型値を、 ASCII 文字列にフォー
マットしたい場合があります。その例を下に示します。
Mar 05, 1997 (Wednesday)
これを行うには、GL_DATE 環境変数を次のように設定します。
%b %d, %Y (%A)
GL_DATE フォーマットが有効なフォーマット ディレクティブに一致していない場
合、フォーマットを行おうとしたときの IBM Informix 製品の動作は未定義です。
重要: DBDATE 変数の設定は、GL_DATE 環境変数の設定より優先されます。同様
に、CLIENT_LOCALE が指定するデフォルトの日付 (DATE) 型のフォーマ
ットよりも優先されます。
第 2 章 GLS 環境変数
49
年のフォーマット ディレクティブ
GL_DATE 環境変数のエンド ユーザ フォーマットに %y、%iy、 %Y、および
%iY フォーマット ディレクティブを使用して、日付文字列の年をフォーマットで
きます。 %iy および %iY フォーマット ディレクティブにより、DBDATE 環境変
数の Y2 および Y4 の年の指定子との互換性が提供されます。
エンド ユーザ フォーマットについては、12 ページの『エンド ユーザ フォーマッ
ト』を参照してください。
IBM Informix 製品がエンド ユーザ フォーマットを使用して内部日付値を文字列と
して出力する とき、%iy および %iY ディレクティブは %y および %Y と同一の
タスクをそれぞれ実行します。これらのフォーマット ディレクティブのうちのいず
れかを使用して年を出力するために、IBM Informix 製品は次の操作を実行します。
v %iy フォーマット ディレクティブと %y フォーマット ディレクティブの両方
が、内部日付値の年を 2 桁の 10 年で出力します。
たとえば、GL_DATE を「%y %m %d」または「%iy %m %d」に設定すると、March
5, 1997 の内部日付フォーマットは「97 03 05」になります。
v %iY フォーマット ディレクティブと %Y フォーマット ディレクティブの両方
が、内部日付値の年を 4 桁の年で出力します。
たとえば、GL_DATE を「%Y %m %d」または「%iY %m %d」に設定すると、March
5, 1997 の内部日付フォーマットは「1997 03 05」になります。
IBM Informix 製品がエンド ユーザ フォーマットを使用して日付を読み取る と
き、%iy および %iY フォーマット ディレクティブの実行方法は、それぞれ %y
および %Y とは異なります。次の表は、IBM Informix 製品が年のフォーマット デ
ィレクティブを使用して日付文字列を読み取るときの、年のフォーマット ディレク
ティブの動作方法を要約したものです。
読み取る日付文字列
GL_DATE Format
%y %m %d
%iy %m %d
%Y %m %d
%iY %m %d
’1994 03 06’
エラー
1994 03 06 の内部日付
1994 03 06 の内部日付
1994 03 06 の内部日付
’94 03 06’
1994 03 06
1994 03 06
0094 03 06
1994 03 06
の内部日付
の内部日付
の内部日付
の内部日付
日付文字列の読取り時には、%iy と %y フォーマット ディレクティブは両方と
も、現行の年の最初の 2 桁を前に付けて 1 桁または 2 桁の年を拡張します。
DBCENTURY 環境変数を設定してこのデフォルトを変更できます。
代替日付フォーマット
エンド ユーザ フォーマットの代替日付フォーマットをサポートするために、
GL_DATE に次の変換修飾子 を適用します。
v E は、ロケールが定義する代替元号フォーマットの使用を指示します。
v O (文字 O) は、ロケールが定義する代替数字の使用を指示します。
50
IBM Informix GLS: ユーザーズ ガイド
これらの日付のフォーマット ディレクティブは、変換修飾子をサポートできます。
日付
フォーマ
ット
%EC
%Eg
%Ex
%Ey
%EY
%Od
%Oe
%Om
%Ow
%Oy
%OY
説明
読取りの場合、元号名の完全形または省略形を適用します。出力の場合、%EC
は、ロケールが定義する元号の基本年 (時代) の完全な名前に置き換えられます
(ロケールが元号を定義していない場合、%C と同じ)。
読取りの場合、元号名の完全形または省略形を適用します。出力の場合、%Eg
は、ロケールが定義する元号の基本年 (時代) の省略名に置き換えられます (ロ
ケールが元号を定義していない場合、%C と同一)。
ロケールが定義する元号の特殊な日付表記に置き換えられます (ロケールが元号
を定義していない場合、%x と同一)。
ロケールが定義する元号の %EC からのオフセットに置き換えられます。この日
付は、元号の年のみです (ロケールが元号を定義していない場合、%y と同一)。
ロケールが定義する完全な元号の年に置き換えられます (ロケールが元号を定義
していない場合、%Y と同一)。
ロケールが定義する代替数字の日付に置き換えられます (ロケールが代替数字を
定義していない場合、%d と同一)。
%Od (または、ロケールが代替数字を定義していない場合、%e) と同一です。
ロケールが定義する代替数字の月に置き換えられます (ロケールが代替数字を定
義していない場合、%m と同一)。
ロケールが定義する代替数字の 1 桁の数値 (0 から 6) として、曜日に置き換え
られます (ロケールが代替数字を定義していない場合、%w と同一)。ゼロ (0)
と等価であるということは、ロケールで日曜日と等価であることを表します。
ロケールが定義する代替数字の 2 桁の数値 (00 から 99) として、年に置き換え
られます (ロケールが代替数字を定義していない場合、%y と同一)。年の値のフ
ォーマット方法の情報については、%y の説明を参照してください。
%EY (または、ロケールが代替数字を定義していない場合、%Y) と同一です。
ロケールの TIME カテゴリは、次の元号情報を定義します。
v 元号の完全名と省略名
v (%Ex ディレクティブが使用する) 元号の表記
ロケールの NUMERIC カテゴリは、ロケールの代替数字を定義します (この数字
は、%Ox フォーマット ディレクティブによって使用される)。
オプションの日付フォーマット修飾子
フォーマット ディレクティブの % 記号の直後にオプションのフォーマット修飾子
を指定できます。日付フォーマット修飾子は、読取りまたは出力操作用での日付の
フィールド仕様を定義します。次の節では、読取りおよび出力操作でのフィールド
仕様の意味を説明します。エンド ユーザ フォーマットについては、12 ページの
『エンド ユーザ フォーマット』を参照してください。
ヒント: GL_DATETIME 環境変数には、55 ページの『オプションの時刻フォーマッ
ト修飾子』にリストされたものに加え、これらの日付フォーマット修飾子
も適用されます。
日付 (DATE) 型値の読取りのフィールド仕様: IBM Informix 製品がエンド ユーザ
フォーマットを使用して日付文字列を読み取るとき、フィールド仕様は入力として
予期される文字数を定義します。このフィールド仕様の構文は、次のとおりです。
第 2 章 GLS 環境変数
51
読取りのフォーマット修飾子
0
max_width
.
min_width
要素
説明
- (負符号)
フィールド値は左寄せ され、数字で始まります。この値には後続の
空白文字を含めることができます。
0 (ゼロ)
フィールド値は右寄せ されます。値の左にゼロがある場合は、ゼロ
は無効な埋込み文字です。
max_width
読み取る最大文字数を指示する整数。
min_width
読み取る最小文字数を指示する整数。
フィールド仕様の先頭文字は、フィールド値の位置合せ、または埋込みが行われる
と想定されるかどうかを指示します。先頭文字が負符号 (-) でもゼロでもない場
合、IBM Informix 製品は、そのフィールド値が右そろえ され、フィールド値の左
側のスペースは埋込み文字であると想定します。
しかし、フィールド値がゼロから始まる場合、埋込み文字は使用できません。
IBM Informix 製品は、フィールド値が数値でない場合、そのフィールド仕様を無視
します。
日付 (DATE) 型値の表示のフィールド仕様: IBM Informix 製品がエンド ユーザ
フォーマットを使用して日付文字列を出力するとき、フィールド仕様は出力として
表示される文字数を定義します。フィールド仕様の構文は、次のとおりです。
出力のフォーマット修飾子
0
width
.
precision
要素
説明
- (負符号)
フィールド値は左寄せ され、数字から始まります。値には後続の空
白を含めることができます。
0 (ゼロ)
フィールド値は右寄せ されます。左にゼロがある場合は、そのゼロ
は埋込み文字であり、無効です。
width
出力する値の最小フィールド幅を指示する整数。
precision
フィールド値に使用する精度を指示する整数。
precision の値の意味は、次の表に示すとおり、その値を使用するフォーマット ディ
レクティブにより異なります。
52
IBM Informix GLS: ユーザーズ ガイド
フォーマット
ディレクティブ
説明
precision の値は、出力する最小桁数を指定します。 precision が指定す
る桁数よりも少ない桁数を値が指定した場合、IBM Informix 製品は先行
ゼロでその値を埋め込みます。 %d、%Ey、%iy、%m、%w、および
%y フォーマット ディレクティブのデフォルトの精度は 2 です。%Y
ディレクティブにはデフォルトの精度はありません。0001 年は、0001
ではなく 1 としてフォーマットされます。
precision の値は、出力する最大文字数を指定します。 precision が指定
%a、%A、%b、
%B、%EC、%Eg、 する文字数よりも多い文字数を値が指定した場合、IBM Informix 製品は
その値を切り捨てます。
%h
%D
width と precision の値は、これらのフォーマット ディレクティブのそ
れぞれの要素に影響を与えます。たとえば、フィールド仕様が %6.4D
の場合、日付 (DATE) 型値は、フォーマットが %6.4m/%6.4d/%6.4y で
あるかのように表示されます。ここで、4 文字以上 (かつ 6 文字以下)
の文字は、月、日、および年の値をこの順で表しており、分離記号とし
て「/」を使用します。
%Ox
O 修飾子 (代替数字) を含むフォーマット ディレクティブの場合、
precision の値は、やはり、出力する最小桁数です。 width 値は、実際の
桁数ではなくフォーマットの幅を定義します。
%Ex、%EY、%n、 width および precision の値は、これらのフォーマット ディレクティブ
%t、%x、%%
には影響を与えません。
%C、%d、%e、
%Ey、%iy、
%iY、%m、
%w、%y、%Y
たとえば、次のフォーマット ディレクティブは、月を、最大フィールド幅が 4 で
ある整数として表示します。
%4m
次のフォーマット ディレクティブは、日付を、最小フィールド幅が 3 で、最大フ
ィールド幅が 4 である整数として表示します。
%4.3d
GL_DATETIME
GL_DATETIME 環境変数は、日時 (DATETIME) 型列の値のエンド ユーザ フォー
マットを指定します。エンド ユーザ フォーマットについては、12 ページの『エン
ド ユーザ フォーマット』を参照してください。
GL_DATETIME フォーマットには、次の文字を含めることができます。
v ロケールの CTYPE カテゴリが指定する 1 つ以上の空白文字。
v 通常の文字 (% 記号または空白文字以外)。
v フォーマット ディレクティブ。% 記号の後に、必要な置換えを指定する変換文
字が続きます。
GL_DATETIME
’string’
(1)
オプションの時刻フォーマット修飾子
注:
1
55 ページの『オプションの時刻フォーマット修飾子』
第 2 章 GLS 環境変数
53
要素
説明
string
GL_DATETIME 値のエンド ユーザ フォーマットを指定するフォー
マット ディレクティブを含みます。日付または時刻をフォーマット
する任意のフォーマット ディレクティブを使用できます。日付のフ
ォーマット ディレクティブのリストについては、48 ページの
『GL_DATE』を参照してください。
このリストでは、元号に基づかない時刻のフォーマット ディレクティブを説明しま
す。
フォーマット
ディレクティ
ブ
%c
%Fn
%H
%I
%M
%p
%r
%R
%S
%T
%X
%%
説明
ロケールが定義する特殊な日時表記に置き換えられます。
秒の小数部の値に置き換えられます。精度は、整数 n で指定されます。 n
のデフォルト値は 2 です。n の範囲は、0 £ n £ 5 です。この値は、% か
ら F 文字の間にある幅または精度を上書きします。詳しくは、55 ページの
『オプションの時刻フォーマット修飾子』を参照してください。
整数 (00 から 23) として、時間に置き換えられます (24 時間時計)。
整数 (00 から 12) として、時間に置き換えられます (12 時間時計)。
整数 (00 から 59) として、分に置き換えられます。
ロケールに定義されている、A.M. または P.M. に相当するものに置き換えら
れます。
ロケールに定義されている 12 時間時計フォーマット (A.M. または P.M. に
相当するものを含む) の、一般によく使用される時刻表記に置き換えられま
す。
24 時間表記の時刻 (%H:%M) に置き換えられます。
整数 (00 から 61) として、秒に置き換えられます。秒には、特別な場合のた
めのうるう秒および 2 倍のうるう秒に対応するために、59 ではなく 61 ま
で使用できます。
%H:%M:%S フォーマットの時刻に置き換えられます。
ロケールに定義されている一般によく使用される時刻表記に置き換えられま
す。
% に置き換えられます (フォーマット文字列で % を使用できるように)。
空白文字、またはその他の英数字以外の文字は、2 つのフォーマット ディレクティ
ブの間に表示される必要があります。フォーマット ディレクティブとして上記にリ
ストされているもの以外の、GL_DATETIME 設定内の文字は、リテラル文字である
と解釈されます。 GL_DATETIME フォーマットが有効なフォーマット ディレクテ
ィブに一致していない場合、フォーマットを行おうとしたときの IBM Informix 製
品の動作は未定義です。
前述の表でリストしたフォーマット ディレクティブに加えて、次の日付のフォーマ
ット ディレクティブを GL_DATETIME のエンド ユーザ フォーマットに含めるこ
とができます。
%a, %A, %b, %B, %C, %d, %D, %e, %h, %iy, %iY, %m, %n, %t, %w, %x, %y, %Y, %%
たとえば、米国英語 (U.S. English) ロケールを使用する場合、内部 DATETIME
YEAR TO SECOND 値を ASCII 文字列フォーマットに変更したい場合がありま
す。その例を下に示します。
54
IBM Informix GLS: ユーザーズ ガイド
Mar 21, 1997 at 16 h 30 m 28 s
これを行うには、次の行で示すように、GL_DATETIME 環境変数を設定します。
%b %d, %Y at %H h %M m %S s
重要: GL_DATETIME の 値は、DBTIME 環境変数が設定されていない場合、ある
ESQL/C ライブラリ関数の動作に影響を与えます。ライブラリ関数への影響
の情報については、142 ページの『DATETIME フォーマット関数』を参照し
てください。 DBTIME の値は、GL_DATETIME の値より優先されます。
代替時刻フォーマット
エンド ユーザ フォーマットの代替時刻フォーマットをサポートするために、
GL_DATETIME に、次の変換修飾子 を適用します。
v E は、ロケールが定義する代替元号フォーマットの使用を指示します。
v O (文字 O) は、代替数字の使用を指示します。この代替数字は、ロケールも定義
しています。
次の表は、変換修飾子をサポートする時刻フォーマット ディレクティブを示したも
のです。
代替時刻
フォーマット
%Ec
%EX
%OH
%OI
%OM
%OS
説明
ロケールが定義する元号の特殊な日付/時刻に置き換えられます。ロケールが
元号を定義していない場合、%c と同一です。
ロケールが定義する元号の特殊な時刻表記に置き換えられます。ロケールが
元号を定義していない場合、%X と同一です。
ロケールが定義する代替数字の時間 (24 時間時計) に置き換えられます。
(ロケールが代替数字を定義していない場合、%H と同一です)。
ロケールが定義する代替数字の時間 (12 時間時計) に置き換えられます。
(ロケールが代替数字を定義していない場合、%I と同一です)。
ロケールが定義する代替数字の分に置き換えられます。ロケールが代替数字
を定義していない場合、%M と同一です。
ロケールが定義する代替数字の秒に置き換えられます。ロケールが代替数字
を定義していない場合、%S と同一です。
ロケールの TIME カテゴリは、次の元号情報を定義します。
v 元号の完全名と省略名
v 元号の特殊な日付表記 (%Ex フォーマット ディレクティブが使用するもの)
v 元号の特殊な時刻表記 (%EX フォーマット ディレクティブが使用するもの)
v 元号の特殊な日時表記 (%Ec フォーマット ディレクティブが使用するもの)
ロケールの NUMERIC カテゴリは、ロケールの代替数字を定義します (この数字
は、%Ox フォーマット ディレクティブによって使用されます)。
オプションの時刻フォーマット修飾子
フォーマット ディレクティブの % 記号の直後に次のオプションのフォーマット修
飾子 を指定できます。時刻フォーマット修飾子は、IBM Informix 製品が読み取る
または出力する時刻 (または日時) のフィールド仕様を定義します。本節では、出力
操作におけるフィールド仕様の意味を説明します。読取り操作におけるフィールド
第 2 章 GLS 環境変数
55
仕様の意味の説明については、51 ページの『日付 (DATE) 型値の読取りのフィー
ルド仕様』を参照してください。エンド ユーザ フォーマットについては、12 ペー
ジの『エンド ユーザ フォーマット』を参照してください。
IBM Informix 製品がエンド ユーザ フォーマットを使用して内部フォーマットから
文字列を出力するとき、フィールド仕様は出力として表示される文字数を定義しま
す。このフィールド仕様の構文は、次のとおりです。
オプションの時刻フォーマット修飾子
0
width
.
precision
要素
説明
- (負符号)
IBM Informix 製品は、フィールド値を左そろえ して出力し、この
値の右側は空白で埋め込みます。
0 (ゼロ)
IBM Informix 製品は、フィールド値を右そろえ して出力しこの値
の左側はゼロで埋め込みます。
width
出力する値の最小フィールド幅を指示する整数。
precision
フィールド値に使用する精度を指示する整数。
フィールド仕様の先頭文字は、フィールド値の位置合せを行うかどうか、または埋
込みを行うかどうかを指示します。先頭文字が負符号 (-) でもゼロ (0) でもない場
合、IBM Informix 製品は、そのフィールド値を右そろえ して出力し、値の左側を
空白で埋め込みます。
precision 値の意味は、次の表に示すとおり、その値を使用する特定のフォーマット
ディレクティブにより異なります。
56
IBM Informix GLS: ユーザーズ ガイド
フォーマット
ディレクティブ 説明
%F、%H、
%I、%M、
%S
%p
%R、%T
%F
%Ox
%c、%Ec、
%EX、%X
precision の値は、出力する最小桁数を指定します。 precision が指定する桁
数よりも少ない桁数を値が指定した場合、IBM Informix 製品は先行ゼロで
その値を埋め込みます。 %H、%M、および %S フォーマット ディレクテ
ィブのデフォルトの精度は、2 です。
precision の値は、出力する最大文字数を指定します。 precision が指定する
文字数よりも多い文字数を値が指定した場合、IBM Informix 製品はその値
を切り捨てます。
width と precision の値は、これらのフォーマット ディレクティブのそれぞ
れの要素に影響を与えます。たとえば、フィールド仕様 %6.4R の場合、日
時 (DATETIME) 型値はフォーマットが %6.4H:%6.4M であるかのように表
示されます。ここで、4 文字以上 (かつ 6 文字以下) の文字は時間と分を表
します。
precision の値を、オプションの精度仕様としてこのディレクティブの後に続
けることができます。この値は、1 から 5 の範囲の値にする必要がありま
す。そうでない場合、IBM Informix 製品はエラーを生成します。この
precision 値は、% 記号とフォーマット ディレクティブとの間に指定された
precision 値を上書きします。
O 修飾子を含むフォーマット ディレクティブの場合、precision 値は、やは
り、出力する最小桁数です。 width 値は、実際の桁数ではなく、フォーマッ
トの幅を定義します。
width および precision の値は、これらのフォーマット ディレクティブには
影響を与えません。
たとえば、次のフォーマット ディレクティブは、分を、最大フィールド幅が 4 で
ある整数として表示します。
%4M
次のフォーマット ディレクティブは、時間を、最初フィールド幅が 3 で、最大フ
ィールド幅が 6 である整数として表示します。
%6.3H
指定されたフォーマットは、宣言された精度に関係なく、表示されるすべての日時
(DATETIME) 型値に適用されます。たとえば、GL_DATETIME の設定が
「%Y/%m/%d %H:%M:%S」である場合を考えます。この設定では、DATETIME YEAR
TO SECOND 列からの値は、次のように表示されます。
[2000/08/28 14:43:17]
また、プログラムが 2000 年の 8 月 28 日に実行された場合、同一の
GL_DATETIME 設定で、DATETIME HOUR TO SECOND 列からの値も次のよう
に表示されます。
[2000/08/28 14:43:17]
GL_DATETIME を設定すると、データ型を宣言したときには DATETIME 修飾子に
含まれなかった時間単位が、フォーマットに含まれている場合でも、各日時
(DATETIME) 型値は、指定されたフォーマットで表示されます。宣言された精度外
の時間単位は、システム クロック カレンダから取得されます。予期しない結果を
第 2 章 GLS 環境変数
57
防ぐため、表示する日時 (DATETIME) 型と、GL_DATETIME の精度が同じである
アプリケーションでは、GL_DATETIME のみを設定することが望ましい場合があり
ます。
作成日時の設定値
DBCENTURY、DBDATE、および GL_DATE と同様に、GL_DATETIME 変数は、
リテラル時間値を含む式の評価方法に影響を与えることがあります。以前のいくつ
かのリリースでは、環境変数をリセットすると、チェック制約、トリガ、フラグメ
ント化式、UDR、および定義に時間式が含まれるその他のデータベース オブジェク
トの動作が矛盾する場合あります。このリリースで作成されたオブジェクトは、実
行時の設定値ではなく、オブジェクト作成時に有効であった環境変数の設定値を使
用して (これらの設定値が異なる場合) 矛盾が発生しないようにします。
SERVER_LOCALE
SERVER_LOCALE 環境変数は、サーバ ロケール を指定します。データベース サ
ーバはこのサーバ ロケールを使用して、サーバ コンピュータ上のオペレーティン
グ システム ファイルが関係する読取りおよび書込み操作を実行します。サーバ ロ
ケールについて詳しくは、21 ページの『サーバ ロケール』と 103 ページの
『Informix データベース サーバによる GLS サポート』を参照してください。
SERVER_LOCALE language
_
territory
.
code_set
@modifier
要素
説明
code_set
ロケールによりサポートされるコード セットの名前。
language
特定のロケールの言語を表す 2 文字の名前。
modifier
最大で 4 文字の英数字のオプションのロケール修飾子。
territory
文化上の慣習を表す 2 文字の名前。たとえば、territory は、スイス
で話されるフランス語、ドイツ語、またはイタリア語を指定するこ
とができます。
modifier を指定することにより、language および territory の設定値によって暗黙指
定される国/地域別情報の設定値が修正されます。通常、modifier は、ロケールによ
りサポートされる特殊なタイプのローカライズ照合を指示します。たとえば、@
modifier を設定して辞書または電話帳の照合順序を指定できます
フランス系カナダ ロケール用の非デフォルト サーバ ロケールの例は、次のとおり
です。
SERVER_LOCALE fr_ca.8859-1
UNIX のみ
glfiles ユーティリティを使用して、UNIX システム上で使用できる GLS ロケール
のリストを生成できます。詳しくは、165 ページの『glfiles ユーティリティ (UNIX
のみ)』を参照してください。
UNIX のみ の終り
58
IBM Informix GLS: ユーザーズ ガイド
SERVER_LOCALE を設定しない場合、Informix データベース サーバはデフォル
ト ロケールの米国英語 (U.S.English) をサーバ ロケールとして使用します。
Windows のみ
SERVER_LOCALE への変更内容は、HKEY_LOCAL_MACHINE の下の Windows
レジストリ データベースにも入力されます。
Windows のみ の終り
第 2 章 GLS 環境変数
59
60
IBM Informix GLS: ユーザーズ ガイド
第 3 章 SQL 機能
本章の概要 . . . . . . . . . . . . . .
データベース オブジェクトの命名. . . . . . .
識別子のルール . . . . . . . . . . . .
識別子内の非 ASCII 文字 . . . . . . . .
SQL 識別子の修飾子 . . . . . . . . .
所有者名 . . . . . . . . . . . . .
パス名とファイル名 . . . . . . . . .
区切り識別子 . . . . . . . . . . . .
識別子内の有効な文字 . . . . . . . . . .
文字データ型の使用 . . . . . . . . . . .
文字データのローカライズ済み照合 . . . . .
各国語文字 (NCHAR) 型 . . . . . . . .
各国語可変長文字 (NVARCHAR) 型 . . . .
パフォーマンスの考慮 . . . . . . . . .
その他の文字データ型 . . . . . . . . . .
文字 (CHAR) 型 . . . . . . . . . . .
可変長文字 (VARCHAR) 型 . . . . . . .
ラージ可変長文字 (LVARCHAR) 型 (IDS の
み) . . . . . . . . . . . . . . .
テキスト (TEXT) 型 . . . . . . . . .
文字データの処理 . . . . . . . . . . . .
引用符付き文字列の指定 . . . . . . . . .
コメントの指定 . . . . . . . . . . . .
列サブ文字列の指定 . . . . . . . . . .
シングルバイト コード セット内の列サブ文字
列 . . . . . . . . . . . . . . .
マルチバイト コード セット内の列サブ文字列
列サブ文字列内の部分文字 . . . . . . .
部分文字に関するエラー . . . . . . . .
ORDER BY 節内の部分文字 . . . . . . .
61
62
62
63
65
65
66
66
67
68
68
68
70
72
72
72
73
74
74
75
75
76
76
77
77
78
79
79
TRIM 関数への引数の指定 . . . . . . . . 81
大文字と小文字を区別しない検索関数の使用 (IDS
のみ) . . . . . . . . . . . . . . . 81
文字データの照合 . . . . . . . . . . . 81
CREATE INDEX 内の照合順序 . . . . . . 82
CREATE INDEX 内の照合順序 . . . . . . 83
MATCHES および LIKE 条件での比較 . . . 87
SQL 長さ関数の使用 . . . . . . . . . . 90
LENGTH 関数 . . . . . . . . . . . 90
OCTET_LENGTH 関数. . . . . . . . . 92
CHAR_LENGTH 関数 . . . . . . . . . 94
ロケールを区別するデータ型の使用 . . . . . . 95
金額 (MONEY) 型の処理 . . . . . . . . . 95
scale (小数点以下桁数) パラメータ値の指定 . 96
通貨表記のフォーマット . . . . . . . . 97
拡張データ型の処理 (IDS のみ) . . . . . . 97
不透明 (opaque) 型 . . . . . . . . . . 97
複合データ型 . . . . . . . . . . . . 97
ディスティンクト (distinct) 型 . . . . . . 97
スマート ラージ オブジェクトの処理 (IDS のみ) 98
データ操作文の使用 . . . . . . . . . . . 98
WHERE 節内の条件の指定 . . . . . . . . 98
元号ベース日付の指定 . . . . . . . . . . 99
データのロードとアンロード . . . . . . . 99
データベースへのデータのロード . . . . . 99
データベースからのデータのアンロード . . 100
外部表を使用したロード (XPS のみ) . . . 101
外部表を使用したシンプル ラージ オブジェ
クトのロード (XPS のみ) . . . . . . . 101
本章の概要
本章では、GLS 機能が SQL の Informix インプリメンテーションにどのような影
響を与えるかについて説明します。次に続く節で、ロケールの選択による以下のト
ピックへの影響について説明します。
v データベース オブジェクトの命名
v 文字データ型の使用
v 文字データの処理
v ロケールを区別するデータ型の使用
v データ操作文の使用
SQL の Informix インプリメンテーションに関する 詳細については、
「IBM Informix: SQL ガイド: 構文」、 「IBM Informix: SQL ガイド: 参照」、
「IBM Informix: SQL ガイド: チュートリアル」、 および「IBM Informix: Database
Design and Implementation Guide」を参照してください。
© Copyright IBM Corp. 1996, 2003
61
データベース オブジェクトの命名
CREATE TABLE、CREATE INDEX、および RENAME COLUMN などのデータ定
義言語 (DDL) 文を使用するときには、新しいデータベース オブジェクト (場合に
よっては DB 領域などの記憶域オブジェクト) の名前を宣言する必要があります。
本節では、非デフォルト ロケールでデータベース オブジェクトの名前を宣言する
場合の考慮事項について説明します。特に、本節では、どの SQL 識別子および区
切り識別子に非 ASCII 文字を適用できるかについて説明します。
重要: 非デフォルト ロケールを使用するには、IBM Informix 製品のために、該当
するロケール環境変数を設定しなければなりません。詳しくは、23 ページの
『非デフォルト ロケールの設定』を参照してください。
識別子のルール
SQL 識別子は、表、列、インデックス、またはビューなどのデータベース オブジ
ェクトの名前を表す、文字、数字、およびアンダスコアで構成された文字列です。
非区切り SQL 識別子の先頭は、文字またはアンダスコア記号 ( _ ) でなければな
りません。識別子内の先頭以外の文字には、文字、数字、アンダスコア、または
(Dynamic Server の場合のみ) ドル記号 ( $ ) の組み合わせを使用できます。ただ
し、区切り識別子にはデータベース ロケールのコード セット内の文字を使用でき
ます。詳しくは、66 ページの『区切り識別子』を参照してください。
SQL キーワードを識別子として宣言すると、構文があいまいになったり予期しない
結果が引き起こされたりする可能性があります。補足説明については、
「IBM Informix: SQL ガイド: 構文」内の識別子に関するセグメントを参照してくだ
さい。また、63 ページの『識別子内の非 ASCII 文字』と、67 ページの『識別子内
の有効な文字』も参照してください。
SQL 識別子には、Dynamic Server の場合は 128 バイトまで、Extended Parallel
Server の場合は 18 バイトまで使用できます。識別子を宣言するときには、ご使用
のデータベース サーバのサイズ制限を超えないようにしてください。たとえば、次
の文はマルチバイト文字 8 文字のシノニム名を作成します。
CREATE SYNONYM A1A2A3B1B2C1C2C3D1D2E1E2F1F2G1G2H1H2 FOR A1A2B1B2
Extended Parallel Server
上の例で宣言されるシノニムは 18 バイトの長さ (2 バイトのマルチバイト文字が
6 文字と、3 バイトのマルチバイト文字が 2 文字) であり、Extended Parallel Server
での識別子の最大長を超えません。しかし、次の CREATE SYNONYM 文は、この
シノニム名の合計バイト数が 20 であるためにエラーを生成します。
CREATE SYNOMYM A1A2A3B1B2B3C1C2C3D1D2D3E1E2F1F2G1G2H1H2 FOR A1A2B1B2
この文は、シノニムに 3 バイト文字を 4 文字と 2 バイト文字を 4 文字指定して
います。このシノニム名に文字は 8 文字しか含まれていませんが、シノニム名内の
合計バイト数は 20 バイトであり、これは識別子の最大長を超えています。
Extended Parallel Server の終り
62
IBM Informix GLS: ユーザーズ ガイド
識別子内の非 ASCII 文字
Informix データベース サーバは、列、接続、制約、データベース、インデックス、
ロール、SPL ルーチン、シーケンス、シノニム、表、トリガ、およびビューの名前
などの多くの SQL 識別子内の、データベース ロケールのコード セットからの非
ASCII (ワイド、8 ビット、およびマルチバイト) 文字をサポートしています。
Extended Parallel Server
Extended Parallel Server では、次の識別子にはシングルバイト文字のみを使用しま
す。
v DB スライス
v ログスライス
v コサーバ
v コグループ
次の識別子には ASCII 英数字の 7 ビットの名前のみを使用します。
v チャンク名
v ファイル名
v メッセージ ログ ファイル名
v パス名
Extended Parallel Server の終り
Dynamic Server
Dynamic Server では、以下のデータベース サーバ名の作成または参照で、非
ASCII 文字 (8 ビットおよびマルチバイト文字) を使用できます。
v チャンク名
v メッセージ ログ ファイル名
v パス名
Dynamic Server の終り
データベース サーバが非 ASCII 文字を含むファイル名を生成する能力に、次の制
限が影響を与えます。
v データベース サーバは、オペレーティング システムが 8 ビット透過であるかど
うかを認識している必要があります。
v DB_LOCALE 設定によって指定されているコード セットが、これらの非 ASCII
文字をサポートしる必要があります。
コード セットがマルチバイト (または他の非 ASCII) 文字をサポートしている非デ
フォルト ロケールのデータベースでは、64 ページの表 1 にリストされているとお
りに、多くの SQL 識別子を宣言するときにそれらの非 ASCII 文字を使用できま
す。
第 3 章 SQL 機能
63
次の表の「識別子の型」列には、SQL 識別子またはオペレーティング システム識
別子を持つことができるオブジェクトのさまざまなカテゴリがリストされていま
す。「SQL セグメント」列には、識別子の構文が示されている、「IBM Informix:
SQL ガイド: 構文」内のセグメントが表示されています。「コンテキスト例」列に
は、その識別子を宣言または参照する可能性のある SQL 文がリストされていま
す。
表 1. 非 ASCII 文字をサポートする SQL 識別子
識別子の型
SQL セグメント
コンテキスト例
別名
型変換 (キャスト)
(IDS のみ)
列名
接続名
識別子
表現式
SELECT
CREATE CAST
識別子
引用符付き文字列
制約名
データベース オブジェク
ト名
識別子
CREATE TABLE
CONNECT
詳しくは、75 ページの『引用符付き文字列
の指定』を参照してください。
CREATE TABLE
カーソル名
データベース名
ディスティンクト
(distinct) 型名 (IDS
のみ)
ファイル名
関数名 (IDS のみ)
ホスト変数
インデックス名
データベース オブジェク
ト名
識別子
データ型
なし
データベース オブジェク
ト名
なし
データベース
ト名
不透明 (opaque) 型 識別子
名 (IDS のみ)
データ型
演算子クラス名
データベース
(IDS のみ)
ト名
ルーチン名 (IDS の データベース
み)
ト名
ルーチン名
データベース
ト名
ロール名 (IDS の
識別子
み)
行 (row) 型 (IDS
識別子
のみ)
シーケンス名 (IDS データベース
のみ)
ト名
SQL 文識別子
識別子
SPL ルーチン名
64
IBM Informix GLS: ユーザーズ ガイド
オブジェク
DECLARE
詳しくは、134 ページの『非 ASCII 文字の
処理』を参照してください。
CREATE DATABASE
CREATE DISTINCT
LOAD
CREATE FUNCTION
FETCH
詳しくは、134 ページの『非 ASCII 文字の
処理』を参照してください。
CREATE INDEX
CREATE OPAQUE TYPE
オブジェク
CREATE OPCLASS
オブジェク
CREATE FUNCTION
オブジェク
CREATE PROCEDURE
CREATE ROLE
CREATE ROW TYPE
オブジェク
データベース オブジェク
ト名
CREATE SEQUENCE
PREPARE (詳しくは、134 ページの『非
ASCII 文字の処理』を参照してください。)
CREATE PROCEDURE
表 1. 非 ASCII 文字をサポートする SQL 識別子 (続き)
識別子の型
SQL セグメント
コンテキスト例
SPL ルーチン変数
なし
(言語によって異なる)
データベース オブジェク
ト名
データベース オブジェク
ト名
データベース オブジェク
ト名
データベース オブジェク
ト名
データベース オブジェク
ト名
CREATE PROCEDURE FROM
シノニム
表名
トリガ相関名
トリガ名
ビュー名
CREATE SYNONYM
CREATE TABLE
CREATE TRIGGER
CREATE TRIGGER
CREATE VIEW
SQL 識別子の修飾子
64 ページの表 1 の「SQL セグメント」列は、識別子の構文の説明がある
「IBM Informix: SQL ガイド: 構文」内のセグメントを参照しています。多くの場
合、完全な構文には他の識別子を使用できます。たとえば、「データベース オブジ
ェクト名 (Database Object Name)」セグメントには、インデックス名の構文に、イ
ンデックスの非修飾名だけでなく、データベース (database) 名、データベース サー
バ (server) 名、および所有者 (owner) 名を使用できることが示されています。
データベース オブジェクトの単純非修飾名にマルチバイト文字を使用できるとして
も、そのオブジェクトの完全修飾名 (database@server:owner.index など) 内の他の識
別子にマルチバイト文字を使用できるのは、その識別子も上記の表に示されている
場合のみであることに注意してください。この例では、完全修飾インデックス名内
の database 修飾子にはマルチバイト文字を使用できますが、インデックス (index)
名を修飾しているデータベース サーバ (server) の識別子にマルチバイト文字を使用
することはできません。
所有者名
所有者名 (owner name) は、データベース オブジェクトの作成に関連付けられたユ
ーザ (または、実際のユーザのログイン名に対応しない、informix などの所有者
(owner) の場合は疑似ユーザ) の名前です。所有者名は、データベース オブジェク
トの識別子を修飾します。一般的に、所有者はそのデータベース オブジェクトを修
正または削除できます。所有者名 (owner name) という用語のシノニムは認証識別
子 (authorization identifier) です。
米国規格協会
所有者名 (owner name) の ANSI 用語はスキーマ名 (schema name) です。 ANSI
標準準拠データベースでは、所有していないデータベース オブジェクトの識別子の
修飾子として所有者 (owner) 名を指定しなければなりません。
米国規格協会 の終り
第 3 章 SQL 機能
65
オペレーティング システムがユーザ名内での非 ASCII 文字の使用をサポートして
いない限り、所有者名内のそれらの文字は有効ではありません。
UNIX のみ
データベース サーバが UNIX システム上にある場合、所有者名修飾子はデフォル
トで UNIX ログイン ID になります。ただし、UNIX の多くのバージョンでは、
UNIX ログイン ID 内でのマルチバイト文字の使用をサポートしていません。
警告: 所有者名内のマルチバイト文字の指定は、ご自身の責任で行ってください。
UNIX ログイン ID が所有者名との照合に使用された場合、照合が失敗する
可能性があります。
UNIX のみ の終り
いくつかの東アジア ロケールでは、データベース オブジェクトを作成して明示的
に所有者を指定するときに、所有者名にマルチバイト文字を使用できます。たとえ
ば、CREATE INDEX 文にインデックスの所有者を (一重引用符で囲んで) 指定する
ときに、マルチバイト文字を含む所有者名を割り当てることができます。次の文
は、マルチバイトの所有者名を持つインデックスを宣言しています。この例では、
所有者名は 2 バイト文字 3 文字で構成されています。
CREATE INDEX ’A1A2B1B2C1C2’.myidx ON mytable (mycol)
上の例では、クライアント ロケールがマルチバイト コード セットをサポートし、
2
1 2
1 2
1A 、B B 、および C C がこのコード セットで有効な文字であることが想定され
ています。
パス名とファイル名
有効なパス名とファイル名は、オペレーティング システムによって異なります。
134 ページの『非 ASCII 文字の処理』を参照してください。たとえば、ハードコー
ディングされたパス名内にマルチバイト文字が存在すると、マルチバイト ファイル
名をサポートするオペレーティング システムにしかアプリケーションを移植できな
くなります。
Extended Parallel Server
Extended Parallel Server の場合、パス名またはファイル名内では ASCII 英数字の 7
ビット文字のみが有効になります。
Extended Parallel Server の終り
区切り識別子
区切り識別子は、二重引用符で囲まれた識別子です。 DELIMIDENT 環境変数が設
定されていると、データベース サーバは二重引用符 ( ″ ) で囲まれた文字列を区切
り識別子として解釈し、一重引用符 ( ’ ) で囲まれた文字列をデータ文字列として
解釈します。この一重引用符と二重引用符の解釈は、SQL の ANSI/ISO 標準に準拠
しています。
66
IBM Informix GLS: ユーザーズ ガイド
非デフォルト ロケールでは、多くの区切り識別子内に、現行コード セットで有効
な非 ASCII 文字を指定できます。区切り識別子内での非 ASCII 文字の使用は、同
じ識別子の区切り記号なしの形式に非 ASCII 文字を使用できる場合に可能です。
たとえば、64 ページの表 1 には、インデックス名の宣言に非 ASCII 文字を指定で
きることが示されています。したがって、区切り記号なしのインデックス名、また
は次の SQL 文にあるとおりに二重引用符で囲んで区切り識別子にしたインデック
ス名に、非 ASCII 文字を使用できます。
CREATE INDEX "A1A2#B1B2" ON mytable (mycol)
区切り識別子の説明については、「IBM Informix: SQL ガイド: 構文」内の識別子に
関するセグメントを参照してください。
識別子内の有効な文字
SQL 識別子内の文字 (letter) にはロケールが定義するアルファクラス内の文字を使
用できます。アルファクラスには、英字として分類されているすべての文字がリス
トされています。文字分類に関する詳細については、155 ページの『CTYPE カテゴ
リ』を参照してください。デフォルト ロケールでは、コード セットの アルファク
ラスに、a から z までおよび A から Z までの範囲の ASCII 文字が使用されてい
ます。 SQL 識別子は、文字 が SQL 識別子内で有効な場合に、これらの ASCII
文字を使用できます。
非デフォルト ロケールでのロケールのアルファクラスにも、a から z までおよび
A から Z までの範囲の ASCII 文字が使用されています。これには、ギリシャ文字
またはキリル文字などの非ラテン アルファベットの文字、あるいは漢字などの、非
ASCII 文字が使用される可能性もあります。たとえば、日本語 UJIS コード セット
(日本語 UJIS ロケール内) のアルファクラスには、漢字文字が含まれています。
IBM Informix 製品が非デフォルト ロケールを使用するとき、SQL 識別子の構文内
で文字 が有効な場合に、SQL 識別子は非 ASCII 文字を使用できます。また、非
ASCII 文字が文字 として有効になるのは、この文字がロケールのアルファクラスに
リストされている場合です。
次の例の SQL 文は、SQL 識別子内の文字として非 ASCII 文字を使用していま
す。
CREATE DATABASE marché;
CREATE TABLE équipement
(
code NCHAR(6),
description NVARCHAR(128,10),
prix_courant MONEY(6,2)
);
CREATE VIEW çà_va AS
SELECT numéro, nom FROM abonnés;
この例で、ユーザは、フランス語ロケール (fr_fr.8859-1 など) で、名前にフランス
語の文字が含まれる次のデータベース、表、およびビューを作成します。
v CREATE DATABASE 文はデータベースの識別子 marché を宣言しています。
これには、8 ビット文字 é が使用されています。
第 3 章 SQL 機能
67
v CREATE TABLE 文は、8 ビット文字 é を含む表の識別子 équipement と、列
の識別子 code、description、および prix_courant を宣言しています。
v CREATE VIEW 文は、ビューの識別子 çà_va を宣言しています。これには、8
ビット文字 ç および à が使用されています。
v CREATE VIEW 文内の SELECT 節は、識別子 numéro と nom を射影リスト
内の列として指定し、表の識別子 abonnés を FROM 節に指定しています。
numéro と abonnés の両方に 8 ビット文字 é が使用されています。
この例のすべての識別子は、フランス語ロケールで識別子を指定する場合のルール
に準拠しています。これらの名前が有効であるためには、これらのフランス語の文
字がアルファクラスに使用されたコード セットを、データベース ロケールがサポ
ートしていなければなりません。
SQL 文の識別子の構文と使用方法の詳細については、「IBM Informix: SQL ガイド:
構文」内の識別子に関するセグメントを参照してください。
文字データ型の使用
ロケールは、組込み SQL 文字データ型の照合に影響を与えます。
v ローカライズ済み照合を使用する文字型: 各国語文字 (NCHAR) 型と各国語可変
長文字 (NVARCHAR) 型
v 照合にコード セット順序を使用する文字型:
– 文字 (CHAR) 型
Dynamic Server
– ラージ可変長文字 (LVARCHAR) 型
Dynamic Server の終り
– 可変長文字 (VARCHAR) 型
– テキスト (TEXT) 型
「IBM Informix: SQL ガイド: 参照」にこれらの型の説明があります。照合に関する
詳細については、9 ページの『コード セットの文字クラス』を参照してください。
文字データのローカライズ済み照合
次の節で説明するとおり、ロケールの選択は、各国語文字 (NCHAR) 型と各国語可
変長文字 (NVARCHAR) 型の照合順序に影響を与える可能性があります。
各国語文字 (NCHAR) 型
各国語文字 (NCHAR) 型は、文字データを、シングルバイトまたはマルチバイトの
文字、数字、およびデータベース ロケールのコード セットによってサポートされ
るその他の文字で構成される文字列として固定長フィールドに保管します。各国語
文字 (NCHAR) 型の構文は次のとおりです。
(1)
68
データ型セグメント
IBM Informix GLS: ユーザーズ ガイド
NCHAR
(
(
1 )
size
)
注:
1
SQLS を参照してください。
要素
目的
size
列内のバイト数を指定します。各国語文字 (NCHAR) 型列の全長は
32,767 バイトを超えることはできません。 size を指定しなかった
場合、デフォルトは NCHAR(1) になります。
この列は固定長であるため、データベース サーバは、各国語文字 (NCHAR) 型値を
抽出または送信するときに、厳密に size バイトのデータを転送します。文字列の長
さが size よりも短い場合、データベース サーバは空白を補って size バイトまで文
字列を拡張します。文字列が size バイトよりも長い場合、データベース サーバは
文字列を切り捨てます。
各国語文字 (NCHAR) 型データの照合: 各国語文字 (NCHAR) 型はロケールを区
別するデータ型です。各国語文字 (NCHAR) 型と文字 (CHAR) 型は、照合順序のみ
が異なります。データベース サーバは、ロケールがローカライズ済み順序を定義し
ている場合、各国語文字 (NCHAR) 型列内のデータをローカライズ済み順序でソー
トします。 (多くの操作で、データベース サーバは、ロケールがローカライズ済み
照合を定義していても、文字 (CHAR) 型列内のデータをコード セット順序で照合
します。)
ヒント: デフォルト ロケール (米国英語 (U.S. English)) は、ローカライズ済み順序
を指定していません。このため、データベース サーバは各国語文字
(NCHAR) 型データをこのロケールのコード セット順序でソートします。
デフォルト ロケールを使用するときには、文字 (CHAR) 型データと各国
語文字 (NCHAR) 型データには違いがありません。
各国語文字 (NCHAR) 型データの処理: クライアント アプリケーションは、各国
語文字 (NCHAR) 型データをクライアント システムの CLIENT_LOCALE 設定を
使用して取り扱います。 CLIENT_LOCALE が DB_LOCALE と異なり、DBNLS
が 1 に設定されている場合、クライアント アプリケーションは各国語文字
(NCHAR) 型データのコード セット変換を自動的に実行します。
各国語型 (NCHAR) でのマルチバイト文字: マルチバイト文字データを各国語文字
(NCHAR) 型列に保管するには、データベース ロケールが、同じマルチバイト文字
を含むコード セットをサポートしている必要があります。マルチバイト文字を保管
するときには、必要なバイト数を必ず計算してください。各国語文字 (NCHAR) 型
のサイズ (size) パラメータが参照しているのはデータ用に予約されている記憶域の
バイト数であり、論理的文字数ではありません。
1 つのマルチバイト文字は保管にいくつかのバイトを必要とするため、size バイト
の値は列が保持できる文字の数を示していません。列に保管できるマルチバイト文
字の合計数は、列に保管できる合計バイト数よりも少なくなります。各国語文字
(NCHAR) 型列の size 値を、必要な数の文字を保持できる値として宣言してくださ
い。
各国語文字 (NCHAR) 型値の数値としての処理: 列に保管されている数値に対して
計算を行う場合は、数値データ型 (整数 (INTEGER) 型または実数 (FLOAT) 型な
ど) をその列に割り当てます。「IBM Informix: SQL ガイド: 参照」内の文字
第 3 章 SQL 機能
69
(CHAR) 型に関する説明に、ある数値を文字 (CHAR) 型値内に保管してはならない
理由が詳しく示されています。同じ理由が、各国語文字 (NCHAR) 型値としてのあ
る数値にも当てはまります。先行ゼロを持つ数値 (郵便番号など) のみを各国語文字
(NCHAR) 型として処理してください。各国語文字 (NCHAR) 型は、数値をローカ
ライズ済み順序でソートする必要がある場合にのみ使用します。
各国語文字 (NCHAR) 型での印刷不可能文字: 各国語文字 (NCHAR) 型値には、
タブ、空白、およびその他の空白と印刷不可能文字を使用できます。印刷不可能各
国語文字 (NCHAR) 型値および文字 (CHAR) 型値は、同じように入力、表示、およ
び処理されます。
各国語可変長文字 (NVARCHAR) 型
各国語可変長文字 (NVARCHAR) 型は、文字データを可変長フィールドに保管しま
す。データには、データベース ロケールのコード セットによってサポートされ
る、シングルバイトまたはマルチバイトの文字、数字、およびその他の文字で構成
される文字列を指定できます。
各国語可変長文字 (NVARCHAR) 型の構文は次のとおりです。
(1)
データ型セグメント
NVARCHAR (
max
,
,
0
reserve
)
注:
1
SQLS を参照してください。
要素
目的
max
列に保管できるバイトの最大数を指定します。
reserve
列に保管できるバイトの最少数を指定します。
各国語可変長文字 (NVARCHAR) 型列の max を指定する必要があります。このパ
ラメータに 255 バイトを超えるサイズを指定することはできません。
各国語可変長文字 (NVARCHAR) 型列にインデックスを配置するときの最大サイズ
は 254 バイトになります。指定した値よりも短い文字列を保管することはできます
が、指定した値よりも長い文字列を保管することはできません。
reserve パラメータは、ほとんどまたは全く文字のないデータ値を持つ行を最初にこ
の列に挿入するが、後でそのデータがより長い値で更新されることが予期されると
きに指定します。この値には 0 バイトから 255 バイトまでの値を使用できます
が、値は各国語可変長文字 (NVARCHAR) 型列の max サイズよりも小さくなけれ
ばなりません。最小領域値を指定しない場合、reserve のデフォルト値は 0 になり
ます。
各国語可変長文字 (NVARCHAR) 型を使用すると表に使用される領域が節約されま
すが、インデックスのサイズには影響がありません。各国語可変長文字
(NVARCHAR) 型列を基にしたインデックスでは、各インデックス キーの長さは列
の最大サイズである max バイトと同じ長さになります。
データベース サーバは、各国語可変長文字 (NVARCHAR) 型オブジェクトから、ユ
ーザが入力した後書きの空白を取り除かず、各国語可変長文字 (NVARCHAR) 型オ
ブジェクトを列の最大長にパッドしたりもしません。ただし、最小予約領域
70
IBM Informix GLS: ユーザーズ ガイド
(reserve) が指定されており、いくつかのデータ値がその長さよりも短い場合、行の
ために予約された領域の一部は使用されないままになります。
各国語可変長文字 (NVARCHAR) 型データの照合: 各国語可変長文字
(NVARCHAR) 型はロケールを区別するデータ型です。各国語可変長文字
(NVARCHAR) 型と可変長文字 (VARCHAR) 型は、照合順序のみが異なります。デ
ータベース サーバは、ロケールがローカライズ済み順序を定義している場合、各国
語可変長文字 (NVARCHAR) 型列内のデータをローカライズ済み順序で照合しま
す。多くの操作で、データベース サーバは文字 (CHAR) 型列内のデータをコード
セット順序で照合します。
ヒント: デフォルト ロケール (米国英語 (U.S. English)) は、ローカライズ済み順序
を指定していません。このため、データベース サーバは各国語可変長文字
(NVARCHAR) 型データをコード セット順序でソートします。デフォルト
ロケールを使用するときには、可変長文字 (VARCHAR) 型データと各国語
可変長文字 (NVARCHAR) 型データには違いがありません。
各国語可変長文字 (NVARCHAR) 型データの処理: クライアント アプリケーショ
ンの内部では、各国語可変長文字 (NVARCHAR) 型データを常にそのクライアント
アプリケーションの CLIENT_LOCALE で操作します。 CLIENT_LOCALE が
DB_LOCALE と異なる場合、クライアント アプリケーションは各国語可変長文字
(NVARCHAR) 型データのコード セット変換を自動的に実行します。 (コード セッ
ト変換に関する詳細については、30 ページの『コード セット変換の実行』を参照
してください。)
各国語可変長文字 (NVARCHAR) 型のマルチバイト文字: マルチバイト文字データ
を各国語可変長文字 (NVARCHAR) 型列に保管するには、同じマルチバイト文字を
持つコード セットをデータベース ロケールがサポートしている必要があります。
マルチバイト文字を保管するときには、必要なバイト数を必ず計算してください。
各国語可変長文字 (NVARCHAR) 型の max パラメータは、列に保管できるバイト
の最大数を参照します。
1 つのマルチバイト文字は保管にいくつかのバイトを使用するため、max バイトの
値は列が保持できる論理的文字数を示していません。列に保管できるマルチバイト
文字の合計数は、列に保管できる合計バイト数よりも少なくなります。各国語可変
長文字 (NVARCHAR) 型列の max 値を、必要なマルチバイト文字を保持できる値
として宣言してください。
各国語可変長文字 (NVARCHAR) 型での印刷不可能文字: 各国語可変長文字
(NVARCHAR) 型値には、タブ、空白、および印刷不可能文字を使用できます。印刷
不可能各国語可変長文字 (NVARCHAR) 型文字は、印刷不可能可変長文字
(VARCHAR) 型文字と同じ方法で入力、表示、および処理されます。
ヒント: データベース サーバは、NULL 文字 (ASCII 0) を C NULL 終端子として
解釈します。各国語可変長文字 (NVARCHAR) 型データでは、NULL 終端
子は文字列終端記号文字として機能します。
各国語可変長文字 (NVARCHAR) 型列への数値の保管: データベース サーバが、
各国語可変長文字 (NVARCHAR) 型列内の数値を、後続の空白文字を使用して列の
最大長までパッドすることはありません。数値の各国語可変長文字 (NVARCHAR)
第 3 章 SQL 機能
71
型値の桁数は、その値を保管するために必要な文字数になります。たとえば、デー
タベース サーバは、次の SQL 文を実行するときに値 1 を mytab 表に保管しま
す。
CREATE TABLE mytab (col1 NVARCHAR(10));
INSERT INTO mytab VALUES (1);
パフォーマンスの考慮
各国語文字 (NCHAR) 型は文字 (CHAR) 型に似ており、各国語可変長文字
(NVARCHAR) 型は可変長文字 (VARCHAR) 型に似ています。これらのデータ型は
以下の 2 つの点で異なっています。
v データベース サーバは各国語文字 (NCHAR) 型列値と各国語可変長文字
(NVARCHAR) 型列値をローカライズ済み順序で照合します。
v データベース サーバは文字 (CHAR) 型列値と可変長文字 (VARCHAR) 型列値を
コード セット順序で照合します。
ローカライズ済み照合は、単にコンピュータによる文字表記 (コード ポイント) に
基づくだけでなく、ロケールが定義するソート ルールに基づいて行われます。この
違いは、データベース サーバが各国語文字 (NCHAR) 型データと各国語可変長文字
(NVARCHAR) 型データの比較と照合で複雑な処理を行う可能性があることを意味し
ています。このため、各国語文字 (NCHAR) 型データへのアクセスは、比較と照合
に関する限り、文字 (CHAR) 型データへのアクセスよりも遅くなる可能性がありま
す。同様に、各国語可変長文字 (NVARCHAR) 型列内のデータへのアクセスは、比
較と照合に関する限り、可変長文字 (VARCHAR) 型列内の同じデータへのアクセス
よりも遅くなる可能性があります。
文字データの照合と比較でローカライズ済み順序を利用する必要があるかどうかを
査定してください。コード セット順序で十分な場合は、文字 (CHAR) 型、ラージ
可変長文字 (LVARCHAR) 型、および可変長文字 (VARCHAR) 型を使用してくださ
い。
その他の文字データ型
ロケールの選択は以下の文字データ型に影響を与える可能性があります。これにつ
いて、続く節で個別に説明します。
v 文字 (CHAR) 型
v 可変長文字 (VARCHAR) 型
Dynamic Server
v ラージ可変長文字 (LVARCHAR) 型
Dynamic Server の終り
v テキスト (TEXT) 型
文字 (CHAR) 型
文字 (CHAR) 型は、文字データを固定長フィールドに保管します。データには、デ
ータベース ロケールのコード セットによってサポートされる、シングルバイトま
たはマルチバイトの文字、数字、およびその他の文字で構成される文字列を指定で
きます。
72
IBM Informix GLS: ユーザーズ ガイド
次のリストに、ロケールの選択による文字 (CHAR) 型への影響の要約を示します。
v 文字 (CHAR) 型列のサイズはバイト ベースであり、文字ベースではありませ
ん。
たとえば、文字 (CHAR) 型列を CHAR(10) と定義した場合、列は 10 バイトの
固定長になり、10 文字の固定長にはなりません。マルチバイト文字を文字
(CHAR) 型列に保管したい場合、列に保管できる文字の合計数が列に保管できる
バイトの合計数よりも少なくなる可能性があることに注意してください。文字
(CHAR) 型列のバイト サイズを、必要な数の文字を保持できる値として定義して
ください。
v 文字 (CHAR) 型列にはシングルバイトまたはマルチバイトの文字を入力できま
す。
文字 (CHAR) 型列に保管したい文字をデータベース ロケールがサポートしてい
る必要があります。
v データベース サーバは文字 (CHAR) 型列をローカライズ済み順序ではなくコー
ド セット順序でソートします。
v クライアント アプリケーションの内部では、文字 (CHAR) 型データを常にその
クライアント アプリケーションの CLIENT_LOCALE で操作します。
CLIENT_LOCALE が DB_LOCALE と異なる場合、クライアント アプリケーシ
ョンは文字 (CHAR) 型データのコード セット変換を自動的に実行します。
可変長文字 (VARCHAR) 型
可変長文字 (VARCHAR) 型は、255 バイトまでの文字列を可変長フィールドに保管
します。データは、文字、数字、および記号で構成することができます。可変長文
字 (CHARACTER VARYING) 型は、可変長文字 (VARCHAR) 型と全く同じ方法で
処理されます。次のリストに、ロケールの選択による可変長文字 (VARCHAR) 型へ
の影響の要約を示します。
v 可変長文字 (VARCHAR) 型列の最大サイズと最小予約領域はバイト ベースであ
り、文字ベースではありません。
たとえば、可変長文字 (VARCHAR) 型列を VARCHAR(10,6) と定義した場合、
列の最大長は 10 バイト、最小予約領域は 6 バイトになります。マルチバイト文
字を可変長文字 (VARCHAR) 型列に保管したい場合、列に保管できる文字の合計
数が列に保管できるバイトの合計数よりも少なくなる可能性があることに注意し
てください。可変長文字 (VARCHAR) 型列の最大バイト サイズを、必要な数の
文字を保持できる値として定義してください。
v 可変長文字 (VARCHAR) 型列にはシングルバイトまたはマルチバイトの文字を入
力できます。
可変長文字 (VARCHAR) 型列に保管したい文字をデータベース ロケールがサポ
ートしている必要があります。
v データベース サーバは可変長文字 (VARCHAR) 型列をローカライズ済み順序で
はなくコード セット順序でソートします。
v クライアント アプリケーションの内部では、可変長文字 (VARCHAR) 型データ
を常にそのクライアント アプリケーションの CLIENT_LOCALE で操作しま
す。
第 3 章 SQL 機能
73
CLIENT_LOCALE が DB_LOCALE と異なる場合、クライアント アプリケーシ
ョンは可変長文字 (VARCHAR) 型データのコード セット変換を自動的に実行し
ます。
ラージ可変長文字 (LVARCHAR) 型 (IDS のみ)
ラージ可変長文字 (LVARCHAR) 型は、32,739 バイトまでの文字列を可変長フィー
ルドに保管できます。宣言に最大サイズ (maximum size) を指定しない場合、デフォ
ルトのサイズ上限は 2048 バイトになります。データ値には、文字、数字、記号、
空白、および印刷不可能文字を使用できます。
ラージ可変長文字 (LVARCHAR) 型は、以下の点で可変長文字 (VARCHAR) 型に似
ています。
v ラージ可変長文字 (LVARCHAR) 型の文字列は、コード セット順序で照合されま
す。
v クライアント アプリケーションは、ラージ可変長文字 (LVARCHAR) 型データに
対してコード セット変換を実行します。
v ラージ可変長文字 (LVARCHAR) 型は、組込み SQL 長さ関数をサポートしま
す。 (90 ページの『SQL 長さ関数の使用』を参照してください。)
v ラージ可変長文字 (LVARCHAR) 型宣言は、最大サイズ (maximum size) を指定で
きます。
ただし、可変長文字 (VARCHAR) 型と異なり、ラージ可変長文字 (LVARCHAR) 型
には予約サイズ (reserved size) パラメータが存在せず、ラージ可変長文字
(LVARCHAR) 型列内のデータ文字列は可変長文字 (VARCHAR) 型の上限である
255 バイトよりも長い値にすることが可能です。
データベース サーバは、ラージ可変長文字 (LVARCHAR) 型を、不透明 (opaque)
型の外部フォーマットを表すためにも使用します。データベース サーバの入出力
(I/O) 操作では、ラージ可変長文字 (LVARCHAR) 型データ値のサイズには、ファイ
ル サイズ制限か、オペレーティング システムまたはハードウェア リソースの制限
以外には、上限がありません。
テキスト (TEXT) 型
テキスト (TEXT) 型は、どの種類のテキスト データも保管します。一般的に、テキ
スト (TEXT) 型列には、メモ、マニュアルの章、ビジネス ドキュメント、プログラ
ム ソース ファイル、およびその他の型のテキスト情報を保管します。次のリスト
に、ロケールの選択によるテキスト (TEXT) 型への影響の要約を示します。
v データベース サーバは、テキスト (TEXT) 型列の文字列データを、データベー
ス ロケールのコード セットで保管します。
v テキスト (TEXT) 型列にはシングルバイトまたはマルチバイトの文字を入力でき
ます。
テキスト (TEXT) 型列に保管したい文字をデータベース ロケールがサポートし
ている必要があります。ただし、テキスト (TEXT) 型列にはどの型の文字も書き
込むことができます。
v テキスト (text) 型列には、関連付けられた照合順序がありません。
データベース サーバは、テキスト (TEXT) 型列に対するインデックスを作成し
ません。このため、これらの列に対する照合タスクは実行されません。
74
IBM Informix GLS: ユーザーズ ガイド
v クライアント アプリケーションの内部では、テキスト (TEXT) 型データを常に
そのクライアント アプリケーションの CLIENT_LOCALE で操作します。
CLIENT_LOCALE が DB_LOCALE と異なる場合、クライアント アプリケーシ
ョンはテキスト (TEXT) 型データのコード セット変換を自動的に実行します。
文字データの処理
GLS 機能では、非 ASCII 文字 (マルチバイト文字を含む) を SQL 文の以下の要素
内に書き込むことができます。
v 引用符付き文字列
v コメント
v 列サブ文字列
v TRIM 関数引数
Dynamic Server
v UPPER、LOWER、および INITCAP 関数引数
Dynamic Server の終り
引用符付き文字列の指定
引用符付き文字列は、さまざまな SQL 文、特に SELECT および INSERT などの
データ操作文で使用されます。引用符付き文字列は、引用符で区切られた、連続し
た文字の列です。引用符には一重引用符または二重引用符を使用できます。ただ
し、DELIMIDENT 環境変数が設定されている場合、データベース サーバは二重引
用符で囲まれた文字列を、文字列としてではなく区切り識別子として解釈します。
区切り識別子に関する詳細については、63 ページの『識別子内の非 ASCII 文字』
を参照してください。
非デフォルト ロケールを使用するときには、引用符付き文字列に、ロケールのコー
ド セット内のどの文字も使用できます。ロケールが非 ASCII 文字を含むコード セ
ットをサポートしている場合、引用符付き文字列にそれらの文字を使用できます。
次の例で、ユーザは表 mytable に、マルチバイト文字を含む列値を挿入します。
INSERT INTO mytable
VALUES (’A1A2B1B2abcd’, ’123X1X2Y1Y2’, ’efgh’)
この例では、最初の引用符付き文字列にマルチバイト文字 A1A2 と B1B2 が使用さ
れています。 2 番目の引用符付き文字列には、マルチバイト文字 X1X2 と Y1Y2
が使用されています。 3 番目の引用符付き文字列にはシングルバイト文字しか含ま
れていません。この例では、A1A2、B1B2、X1X2、Y1Y2 という文字を持つマルチバ
イト コード セットがロケールでサポートされていることが想定されています。
引用符付き文字列の説明については、「IBM Informix: SQL ガイド: 構文」の引用符
付き文字列に関するセグメントを参照してください。
第 3 章 SQL 機能
75
コメントの指定
SQL 文の後にコメントを使用するには、コメント テキストの前に以下のコメント
標識変数のいずれかを置きます。
米国規格協会
v 2 つのハイフン (--) ANSI SQL 標準に準拠しています。
米国規格協会 の終り
Informix SQL 拡張
v ブレース ( { } ) は ANSI 標準に対する Informix の拡張機能です。
Informix SQL 拡張 の終り
非デフォルト ロケールでは、コメントに、ロケールのコード セット内のどの文字
も使用できます。ロケールが非 ASCII 文字を含むコード セットをサポートしてい
る場合、SQL コメントにそれらの文字を使用できます。
次の例で、ユーザは表 mytable に、マルチバイト文字を含む列値を挿入します。
EXEC SQL insert into mytable
values (’A1A2B1B2abcd’, ’123’)
-- A1A2 and B1B2 are multibyte characters.
この例では、SQL コメントにマルチバイト文字 A1A2 と B1B2 が使用されていま
す。この例では、A1A2 と B1B2 という文字を含むマルチバイト コード セットをロ
ケールがサポートしていることが想定されています。 SQL コメントとコメント標
識変数の詳細については、「IBM Informix: SQL ガイド: 構文」を参照してくださ
い。
列サブ文字列の指定
問合せ内 (または埋込み SELECT 文を含む SQL 文内) で、ブラケット { [ ] } を
使用して、文字データ型列内のデータのサブセットのみを抽出することを指定でき
ます。列内のデータのサブセットを示すためにブラケットが使用された列式は、列
サブ文字列 と呼ばれます。列サブ文字列の構文は次のとおりです。
(1)
式セグメント
column
[
first
, last
]
注:
1
76
SQLS を参照してください。
要素
目的
column
データベース表またはビュー内の列の識別子
first, last
抽出されるサブ文字列のそれぞれ最初と最後のバイトの位置
IBM Informix GLS: ユーザーズ ガイド
シングルバイト コード セット内の列サブ文字列
customer 表から、customer_num 列と、lname 列の 7 バイト目から 9 バイト
目までを抽出したいとします。この問合せを実行するには、以下のとおりに、
SELECT 文内で lname 列の列サブ文字列を使用します。
SELECT customer_num, lname[7,9] as lname_subset
FROM customer WHERE lname = ’Albertson’
lname 列値が Albertson である場合、問合せは次の結果を戻します。
customer_num
lname_subset
114
son
ロケールがシングルバイト コード セットをサポートしているため、上記の問合せ
は名前 Albertson の 7 番目から 9 番目までの文字を戻しているように見えます。
しかし、列サブ文字列はバイト ベースであり、問合せは名前の 7 番目から 9 番目
までのバイト を戻しています。 1 バイトは シングルバイト コード セットでの 1
文字と同じであるため、これらのコード セットでは列サブ文字列内の文字とバイト
の区別は明確ではありません。
マルチバイト コード セット内の列サブ文字列
マルチバイト コード セットの場合、列サブ文字列は指定された数の文字ではなく
指定された数のバイトを戻します。文字型列 multi_col に 2 バイト文字 3 文字の
文字列が含まれている場合、この 6 バイトの文字列を次のように表すことができま
す。
A1A2B1B2C1C2
問合せが、multi_col 列から次のサブ文字列を指定したとします。
multi_col[1,2]
問合せは次の結果を戻します。
A1A2
戻されたサブ文字列は 2 文字ではなく 2 バイト (1 文字) で構成されます。
multi_col 列から最初の 2 文字を抽出するには、first が先頭文字の先頭バイトの位
置であり、last が 2 番目の文字の最後のバイトの位置であるサブ文字列を指定して
ください。 6 バイト文字列 A1A2B1B2C1C2 の場合、次の表現式が問合せでサブ文
字列を指定します。
multi_col[1,4]
次の結果が戻されます。
A1A2B1B2
問合せが戻すサブ文字列は、列値の最初の 4 バイトで構成されています。これは、
列内の最初の論理的文字 2 文字を表しています。
第 3 章 SQL 機能
77
列サブ文字列内の部分文字
マルチバイト文字は、2、3、または 4 バイトで構成される可能性があります。 1
つ以上のバイトを失い、そのために最初に意図された文字の意味を失ったマルチバ
イト文字は、部分文字 と呼ばれます。
予防しない限り、列サブ文字列によって、マルチバイト文字が切り捨てられるか、
分解されてバイトのオリジナル シーケンスが保存されなくなることがあります。部
分文字は、マルチバイト文字を含む列に対して列サブスクリプト演算子を使用した
ときに発生する可能性があります。ユーザが multi_col 列に次の列サブ文字列を指
定し、multi_col 内の文字列の値が A1A2B1B2C1C2 であるとします。
multi_col[2,5]
ユーザは問合せでバイト A2B1B2C1 を要求しています。しかし、データベース サー
バがユーザにこの列サブ文字列を戻した場合、列の先頭と 3 番目の論理的文字は切
り捨てられます。
マルチバイト コード セットでの回避: Informix データベース サーバは部分文字
の発生を許容しません。 GLS 機能によって、指定されたバイト範囲に部分文字が
含まれると、データベース サーバはこの範囲をそのまま戻すことができなくなりま
す。データベース ロケールがマルチバイト コード セットをサポートしており、問
合せで特定の列サブ文字列を指定した場合、データベース サーバは切り捨てられた
マルチバイト文字をシングルバイトの空白文字列で置き換えます。
たとえば、multi_col 列に文字 A1A2A3A4B1B2B3B4 が含まれており、次の SELECT
文を実行するとします。
SELECT multi_col FROM tablename WHERE multi_col[2,4] = ’A8A2B1B2’
データベース サーバがサブ文字列 multi_col[2,4] (つまり文字列 A2A3A4) を 3 つ
のシングルバイトの空白 (sss) に変換するために、問合せは行を戻しません。
WHERE 節は次の検索条件を指定します。
WHERE ’sss’ = ’A1A2A3’
この条件は真にならないため、問合せはマッチングする行を抽出しません。
Informix データベース サーバは、個々のサブ文字列操作で部分文字を (それらが連
結されている場合にも) 置き換えます。
たとえば、multi_col 列に A1A2B1B2C1C2D1D2 が含まれ、WHERE 節に次の条件が
含まれるとします。
multi_col[2,4] | multi_col[6,8]
連結の結果 (A2B1B2C2D1D2) には 2 つの部分文字 A2 と C2 が含まれるため、問合
せは行を戻しません。 Informix データベース サーバはこれらの部分文字をシング
ルバイトの空白に変換して、次の WHERE 節条件を作成します。
WHERE ’sB1B2sD1D2’ = ’A1A2B1B2’
この条件も真にならないため、問合せはマッチングする行を抽出しません。
78
IBM Informix GLS: ユーザーズ ガイド
部分文字に関するエラー
サブ文字列の連結によるオリジナルの論理的文字列の再構成を妨げる可能性のある
方法でサブ文字列が処理されるかユーザに表示される可能性がある場合、部分文字
が関係モデルに違反します。
これは、マルチバイト文字に、それ自体が有効な文字であるサブ文字列が含まれる
ときに発生します。たとえば、マルチバイト コード セットに、数字 1 を表す 4
バイト文字 A1A2A3A4 と、数字 6 を表す 3 バイト文字 A2A3A4 が含まれるとしま
す。さらに、次の問合せを実行するときにロケールがこのマルチバイト コード セ
ットを使用しているとします。
SELECT multi_col FROM tablename WHERE multi_col[2,4] = ’A2A3A4’
データベース サーバは multi_col[2,4] を有効な 4 バイト文字のサブ文字列 (’sss’)
ではなく、有効な 3 バイト文字 (マルチバイトの 6) として解釈します。
このため、WHERE 節は次の条件を含みます。
WHERE ’6’ = ’6’
シングルバイト コード セットでは、それぞれの文字がそれぞれシングルバイトに
保管されるため、部分文字は発生しません。データベース ロケールがシングルバイ
ト コード セットをサポートしており、問合せ内に列サブ文字列を指定した場合、
問合せは要求されたデータ サブセットを正確に戻します。文字は空白で置き換えら
れません。
ORDER BY 節内の部分文字
部分文字は、SELECT 文の ORDER BY 節内に列サブ文字列を指定するときに問題
の原因となる可能性があります。
ORDER BY 節に列サブ文字列を指定するための構文は次のとおりです。
(1)
SELECT 文
ORDER BY
column
[ first
,
last
]
注:
1
SQLS を参照してください。
要素
目的
column
指定された表またはビュー内の列の名前。
first, last
サブ文字列のそれぞれ最初と最後のバイトの位置
問合せ結果はこの列に含まれる値によってソートされます。
Extended Parallel Server
ORDER BY 節に指定された列または表現式は、射影節の SELECT リストに明示的
または暗黙的にリストされなければなりません。
Extended Parallel Server の終り
第 3 章 SQL 機能
79
すべての文字が同じ長さであるマルチバイト コード セットをロケールがサポート
している場合、ORDER BY 節内で列サブ文字列を使用できます。ただし、より標準
的なシナリオでは、マルチバイト コード セットにさまざまな長さの文字が含まれ
ます。この場合、列サブ文字列を ORDER BY 節に 指定することが有益ではない可
能性があります。
たとえば、次の問合せを使用して、multi_data 表のすべての行を抽出し、その結果
を multi_chars 列の 4 番目から 6 番目までの文字として定義されたサブ文字列に
従ってソートしたいとします。
SELECT * FROM multi_data ORDER BY multi_chars[7,12]
文字がすべて 2 バイトの長さであるマルチバイト コード セットをロケールがサポ
ートしている場合、列内の 4 番目の文字はバイト位置 7 から始まり、列内の 6 番
目の文字はバイト位置 12 で終わることが分かります。上記の SELECT 文は部分文
字を生成しません。
しかし、マルチバイト コード セットにシングルバイト文字、2 バイト文字、およ
び 3 バイト文字が混合して含まれている場合は、サブ文字列 multi_chars[7,12] は
部分文字を作成する可能性があります。この場合、ORDER BY 節に列サブ文字列を
指定すると予期しない結果を得る可能性があります。
ORDER BY 節内のさまざまな型の文字データの照合に関する詳細については、83
ページの『ORDER BY 節』を参照してください。 ORDER BY 節の構文と使用方
法の詳細については、「IBM Informix: SQL ガイド: 構文」内の SELECT 文に関す
る説明を参照してください。
ヒント: 部分文字は、SQL API がマルチバイト データをあるバッファから別のバ
ッファにコピーするときにも生成される可能性があります。詳しくは、135
ページの『非 ASCII ファイル名の生成』を参照してください。
テキスト (TEXT) 型およびバイト (BYTE) 型列での回避: 部分文字はテキスト
(TEXT) 型またはバイト (BYTE) 型の列の列サブ文字列を指定するときには問題に
はなりません。データベース サーバは、次の方法でテキスト (TEXT) 型およびバイ
ト (BYTE) 型列内の部分文字を回避します。
v データベース サーバはバイト (BYTE) 型列を一連の文字ではなく一連のバイト
として解釈するため、列サブ文字列が指定するバイト範囲の結果としてのマルチ
バイト文字の分割は問題にはなりません。
バイト (BYTE) 型列のサブ文字列は、指定されたバイト範囲を正確に戻し、バイ
トを空白文字で置き換えません。
v データベース サーバはテキスト (TEXT) 型値を文字列として解釈します。
テキスト (TEXT) 型列からのサブ文字列は、指定されたバイト範囲を正確に戻し
ます。テキスト (TEXT) 型データ内の部分文字を解決しようとする試みはリソー
スを消耗しますが、データベース サーバはバイトを空白に置き換えません。詳し
くは、74 ページの『テキスト (TEXT) 型』を参照してください。
警告: テキスト (TEXT) 型データとバイト (BYTE) 型データの処理と解釈はクライ
アント アプリケーションの責任で行われます。クライアント アプリケーシ
ョンは、それらの操作で部分文字が発生する可能性に対処しなければなりま
せん。
80
IBM Informix GLS: ユーザーズ ガイド
TRIM 関数への引数の指定
TRIM 関数は、先行または後書きの埋込み文字を文字列から除去する組込み SQL
関数です。デフォルトでは、この埋込み文字は ASCII 32 (空白) です。別の空白文
字を定義しているコード セットをロケールがサポートしている場合、TRIM はこの
ロケール固有の空白を文字列の最初または最後から除去しません。 TRIM に
LEADING、TRAILING、または BOTH キーワードを指定する場合、別の埋込み文
字を指定できます。
ただし、非 ASCII 文字を定義しているコード セットをロケールがサポートしてい
るとしても、非 ASCII 文字を埋込み文字として指定することはできません。
Dynamic Server
ラージ可変長文字 (LVARCHAR) 型は TRIM 関数に対する引数として有効ではあり
ません。
Dynamic Server の終り
大文字と小文字を区別しない検索関数の使用 (IDS のみ)
SQL 検索関数 UPPER、LOWER、および INITCAP は、GLS をサポートします。
それらは文字型ソース文字列内のマルチバイト文字を受け入れ、操作します。戻さ
れたデータ型はソース文字列の型と同じになります。
v UPPER は文字列内のすべての文字を大文字に変換します。
v LOWER は文字列内のすべての文字を小文字に変換します。
v INITCAP は単語または一連の単語の最初の文字を大文字にします。
これらの検索関数に関する詳細については、「IBM Informix: SQL ガイド: 構文」を
参照してください。
文字データの照合
照合は、文字データ型を持つ列内のデータ値をソートするプロセスです。照合順序
に関する説明と、文字データをソートするための 2 つのメソッド (コード セット
順序とローカライズ済み順序) に関する議論については、9 ページの『コード セッ
トの文字クラス』を参照してください。
デフォルトでは、データベース サーバは DB_LOCALE 設定が暗黙指定している照
合に従って文字列をソートし、クライアント アプリケーションは
CLIENT_LOCALE 設定が DB_LOCALE 設定と異なる場合にはこれに従ってソー
トを行います。
Dynamic Server
Dynamic Server の SET COLLATION 文は、現行セッション用に、DB_LOCALE
設定とは異なるローカライズ済み照合を指定できます。
この文の構文については、「IBM Informix: SQL ガイド: 構文」を参照してくださ
い。インデックスまたはトリガなどの、文字列をソートするデータベース オブジェ
クトは、各国語文字 (NCHAR) 型値または各国語可変長文字 (NVARCHAR) 型値を
第 3 章 SQL 機能
81
ソートするときに、作成時に有効だった照合を使用します (DB_LOCALE 設定と異
なる場合)。
Dynamic Server の終り
データベース サーバの照合順序はソート操作を実行する SQL 文に影響を与えま
す。これには CREATE INDEX 文および SELECT 文が含まれます。
CREATE INDEX 内の照合順序
CREATE INDEX 文は表の 1 つ以上の列にインデックスを作成します。 CREATE
INDEX 文内の ASC および DESC キーワードは、インデックス キーが昇順と降順
のどちらで保管されるかを制御します。
非デフォルト ロケールを使用するときには、以下のロケール固有の考慮事項が
CREATE INDEX 文に適用されます。
v 以下のデータ型の列にインデックスを作成すると、インデックス キーはコード
セット順序で保管されます。
– 文字 (CHAR) 型
Dynamic Server
– ラージ可変長文字 (LVARCHAR) 型
Dynamic Server の終り
– 可変長文字 (VARCHAR) 型
たとえば、データベースがデータベース ロケールを日本語 SJIS ロケール
(ja_jp.sjis) として保管する場合、そのデータベースの表内の文字 (CHAR) 型列
のインデックス キーは、日本語 SJIS コード セット順序で保管されます。
v 各国語文字 (NCHAR) 型列または各国語可変長文字 (NVARCHAR) 型列に対して
インデックスを作成すると、インデックス キーはローカライズ済み順序で保管さ
れます。
たとえば、データベースが日本語 SJIS ロケールを使用している場合、そのデー
タベースの表内の各国語文字 (NCHAR) 型列のインデックス キーは、ja_jp.sjis
ロケールが定義するローカライズ済み順序で保管されます。
Dynamic Server
SET COLLATION 文が、DB_LOCALE 設定と異なるローカライズ済み照合を持つ
データベース ロケールを指定した場合、同じセッション内で後に作成するインデッ
クス (およびチェック制約) は、常に各国語文字 (NCHAR) 型文字列または各国語
可変長文字 (NVARCHAR) 型文字列のソートにそのローカライズ済み照合を使用し
ます。
Dynamic Server の終り
デフォルト ロケール (米国英語 (U.S. English)) を使用する場合、インデックス キ
ーは、文字型列のデータ型にかかわらず、デフォルト コード セットのコード セッ
ト順序 (昇順または降順) で保管されます。デフォルト ロケールはローカライズ済
82
IBM Informix GLS: ユーザーズ ガイド
み順序を定義していないため、このロケール (またはローカライズ済み照合順序を
定義していない別のロケール) を使用するデータベース サーバは、以下のデータ型
の列からの文字列をコード セット順序でソートします。
v 文字 (CHAR) 型
Dynamic Server
v ラージ可変長文字 (LVARCHAR) 型
Dynamic Server の終り
v 各国語文字 (NCHAR) 型
v 各国語可変長文字 (NVARCHAR) 型
v 可変長文字 (VARCHAR) 型
CREATE INDEX 内の照合順序
SELECT 文は問合せを実行します。照合順序は SELECT 文の以下の部分に影響を
与えます。
v ORDER BY 節
v WHERE 節の、関係演算子、BETWEEN 演算子、および IN 演算子
v WHERE 節の MATCHES 条件および LIKE 条件
ORDER BY 節: ORDER BY 節は、列または列セット内に含まれる値によって、
抽出された行をソートします。本節が文字型列をソートするとき、ソートの結果は
以下のとおりに列のデータ型に依存します。
v コード セット順序でソートされる列は以下のとおりです。
– 文字 (CHAR) 型
Dynamic Server
– ラージ可変長文字 (LVARCHAR) 型
Dynamic Server の終り
– 可変長文字 (VARCHAR) 型
v 各国語文字 (NCHAR) 型列と各国語可変長文字 (NVARCHAR) 型列はローカライ
ズ済み順序でソートされます。
クライアントおよびデータベース ロケールとして非デフォルト ロケールを使用し
ており、abonnés という表に対して問合せを行うと想定します。次の SELECT 文
は選択リストに文字 (CHAR) 型の numéro (従業員番号)、nom (姓)、および
prénom (名) という 3 つの列を指定しています。
SELECT numéro,nom,prénom
FROM abonnés
ORDER BY nom;
文は、問合せ結果を nom 列内に含まれる値を使用してソートします。 ORDER
BY 節に指定されている nom 列は文字 (CHAR) 型列であるため、データベース
サーバは問合せ結果をコード セット順序でソートします。
第 3 章 SQL 機能
83
この表に示されているとおり、大文字で始まる名前は小文字で始まる名前よりも前
に並べられ、アクセント付き文字で始まる名前 (Ålesund、Étaix、Ötker、および
Øverst) はリストの終わりに並べられます。
表 2. abonnés 表のコード セット順序の場合のデータ セット
numéro
nom
prénom
13612
13606
13607
13602
13604
13610
13613
13603
13611
13609
13600
13615
13601
13608
13605
13614
Azevedo
Dupré
Hammer
Hämmerle
LaForêt
LeMaître
Llanero
Montaña
Oatfield
Tiramisù
da Sousa
di Girolamo
Ålesund
Étaix
Ötker
Øverst
Edouardo Freire
Michèle Françoise
Gerhard
Greta
Jean-Noël
Héloïse
Gloria Dolores
José Antonio
Emily
Paolo Alfredo
João Lourenço Antunes
Giuseppe
Sverre
Émile
Hans-Jürgen
Per-Anders
ただし、abonnés 表の numéro、nom、および prénom 列が文字 (CHAR) 型列
ではなく各国語文字 (NCHAR) 型列として定義されている場合、問合せの結果は異
なります。
非デフォルト ロケールが、次の表に示されるとおりにデータを照合するローカライ
ズ済み順序を定義していると想定します。このローカライズ済み順序は、大文字と
小文字、および同じ文字のアクセントなしバージョンとアクセント付きバージョン
に、等価クラスを定義しています。
表 3. abonnés 表のローカライズ済み順序の場合のデータ セット
84
numéro
nom
prénom
13612
13601
13600
13615
13606
13608
13607
13602
13604
13610
13613
13603
13611
13605
13614
13609
Azevedo
Ålesund
da Sousa
di Girolamo
Dupré
Étaix
Hammer
Hämmerle
LaForêt
LeMaître
Llanero
Montaña
Oatfield
Ötker
Øverst
Tiramisù
Edouardo Freire
Sverre
João Lourenço Antunes
Giuseppe
Michèle Françoise
Émile
Gerhard
Greta
Jean-Noël
Héloïse
Gloria Dolores
José Antonio
Emily
Hans-Jürgen
Per-Anders
Paolo Alfredo
IBM Informix GLS: ユーザーズ ガイド
ORDER BY 節が指定する nom 列が各国語文字 (NCHAR) 型列であるため、同じ
SELECT 文がこの場合は問合せ結果をローカライズ済み順序で戻します。
SELECT 文は、ORDER BY 節での列サブ文字列の使用をサポートします。ただ
し、この列サブ文字列の使用が、ロケールのサポートしているコード セットで機能
するかどうかを確認する必要があります。詳しくは、78 ページの『列サブ文字列内
の部分文字』を参照してください。
WHERE 節内の論理的述部: WHERE 節は、選択したいデータに対する検索基準と
結合条件を指定します。条件内の表現式が文字データ型の列式であり、検索条件が
以下の論理的述部の 1 つであるとき、照合ルールは WHERE 節に影響を与えま
す。
v 関係演算子条件
v BETWEEN 条件
v IN 条件
v EXISTS 条件および ANY 条件
関係演算子条件: 次の SELECT 文では非デフォルト ロケールを想定しています。
より小関係演算子 (<) を使用して、abonnés 表から、nom 列内の値が Hammer よ
りも小さい行のみを抽出することを指定します。
SELECT numéro,nom,prénom
FROM abonnés
WHERE nom < ’Hammer’;
nom が文字 (CHAR) 型列である場合、データベース サーバはデフォルト コード
セットのコード セット順序を使用して、WHERE 節の指定する行を抽出します。出
力には、この SELECT 文が 2 行しか抽出しないことが示されています。
numéro
nom
prénom
13612
13606
Azevedo
Dupré
Edouardo Freire
Michèle Françoise
これらの 2 行は、84 ページの表 2 に示されている、コード セット順序で並べられ
たデータ セット内で、Hammer よりも小さな行です。
ただし、nom が各国語文字 (NCHAR) 型列である場合は、データベース サーバは
WHERE 節が指定する行をソートするためにローカライズ済み順序を使用します。
次の出力例には、この SELECT 文が 6 つの行を抽出することが示されています。
numéro
nom
prénom
13612
13601
13600
13615
13606
13608
Azevedo
Ålesund
da Sousa
di Girolamo
Dupré
Étaix
Edouardo Freire
Sverre
João Lourenço Antunes
Giuseppe
Michèle Françoise
Émile
これらの 6 行は、84 ページの表 3 に示されている、ローカライズ済み順序のデー
タ セット内で、Hammer よりも小さな行です。
第 3 章 SQL 機能
85
BETWEEN 条件: 次の SELECT 文は、非デフォルト ロケールを想定し、
BETWEEN 条件を使用して nom 列の値が BETWEEN キーワードの次にある 2 つ
の表現式値の包括的範囲内にある行のみを抽出します。
SELECT numéro,nom,prénom
FROM abonnés
WHERE nom BETWEEN ’A’ AND ’Z’;
問合せ結果は、nom が文字 (CHAR) 型列と各国語文字 (NCHAR) 型列のどちらで
あるかに依存します。 nom が文字 (CHAR) 型列である場合、データベース サー
バはデフォルト コード セットのコード セット順序を使用して、WHERE 節に指定
されている行を抽出します。次の出力例に問合せ結果を示します。
numéro
nom
prénom
13612
13606
13607
13602
13604
13610
13613
13603
13611
13609
Azevedo
Dupré
Hammer
Hämmerle
LaForêt
LeMaître
Llanero
Montaña
Oatfield
Tiramisù
Edouardo Freire
Michèle Françoise
Gerhard
Greta
Jean-Noël
Héloïse
Gloria Dolores
José Antonio
Emily
Paolo Alfredo
データベース サーバが nom 値について 84 ページの表 2 に示されているとおり
にコード セット順序を使用するため、これらの問合せ結果に以下の行は含まれませ
ん。
v nom の値が小文字で始まる行: da Sousa と di Girolamo
v アクセント付き文字で始まる行: Ålesund、Étaix、Ötker、および Øverst
ただし、nom が各国語文字 (NCHAR) 型列である場合は、データベース サーバは
行をソートするためにローカライズ済み順序を使用します。次の出力に問合せ結果
を示します。
86
numéro
nom
prénom
13612
13601
13600
13615
13606
13608
13607
13602
13604
13610
13613
13603
13611
13605
13614
13609
Azevedo
Ålesund
da Sousa
di Girolamo
Dupré
Étaix
Hammer
Hämmerle
LaForêt
LeMaître
Llanero
Montaña
Oatfield
Ötker
Øverst
Tiramisù
Edouardo Freire
Sverre
João Lourenço Antunes
Giuseppe
Michèle Françoise
Émile
Gerhard
Greta
Jean-Noël
Héloïse
Gloria Dolores
José Antonio
Emily
Hans-Jürgen
Per-Anders
Paolo Alfredo
IBM Informix GLS: ユーザーズ ガイド
データベース サーバは nom 値についてローカライズ済み順序を使用するため、こ
れらの問合せ結果には nom の値が小文字またはアクセント付き文字で始まる行が
含まれています。
IN 条件: IN 条件は、IN キーワードの左にある表現式が、キーワードの右にあ
る、括弧で囲まれた値のリストに使用されているときに適合します。この SELECT
文は、非デフォルト ロケールを想定し、IN 条件を使用して nom 列の値が
Azevedo、Llanero、または Oatfield のいずれかである行のみを抽出します。
SELECT numéro,nom,prénom
FROM abonnés
WHERE nom IN (’Azevedo’, ’Llanero’, ’Oatfield’);
問合せ結果は、nom が文字 (CHAR) 型列と各国語文字 (NCHAR) 型列のどちらで
あるかに依存します。 nom が文字 (CHAR) 型列である場合、84 ページの表 2 に
示されているとおり、データベース サーバはコード セット順序を使用します。デ
ータベース サーバは nom の値が Azevedo である行を抽出しますが、A、a、およ
び Å はコード セット順序では等しくないため、nom の値が azevedo または
Åzevedo である行は抽出しません。問合せは、nom 値が Llanero および Oatfield
である行も戻します。
ただし、nom が各国語文字 (NCHAR) 型列である場合は、84 ページの表 3 に示さ
れているように、データベース サーバは行をソートするためにローカライズ済み順
序を使用します。ロケールが A、a、および Å をローカライズ済み順序で等価文字
として定義している場合、問合せは nom の値が Azevedo、azevedo、または
Åzevedo である行を戻します。 IN キーワードの後の括弧付きリスト内のその他の
名前にも同じ選択ルールが適用されます。
MATCHES および LIKE 条件での比較
条件内の表現式が文字データ型を持つ列式であり、検索条件が以下の条件の 1 つで
あるとき、照合ルールは WHERE 節にも影響を与えます。
v MATCHES 条件
v LIKE 条件
MATCHES 条件: MATCHES 条件は、一致する文字列についてテストします。
MATCHES キーワードの左側の列の値が、MATCHES キーワードの右側に引用符付
き文字列によって指定されたパターンに一致するときに、条件は真になります (つ
まり適合します)。文字列内でワイルドカード文字を使用できます。たとえば、ブラ
ケットを使用して文字の範囲を指定できます。 MATCHES に関する詳細について
は、「IBM Informix: SQL ガイド: 構文」を参照してください。
MATCHES 表現式が文字列内の文字の範囲をリストしないときには、リテラル一致
を指定します。リテラル一致では、照合考慮事項が働くかどうかが列のデータ型に
よって以下のとおりに決定されます。
v 文字 (CHAR) 型列と可変長文字 (VARCHAR) 型列の場合、照合考慮事項は働き
ません。
v 各国語文字 (NCHAR) 型列と各国語可変長文字 (NVARCHAR) 型列の場合、これ
らのデータ型がローカライズ済み順序を使用し、ロケールが照合の等価クラスを
定義する可能性があるため、照合考慮事項が働く可能性があります。
第 3 章 SQL 機能
87
たとえば、ローカライズ済み順序は a と A が等価クラスであることを指定する
可能性があります。つまり、それらは照合順序内で同位になります。ローカライ
ズ済み順序に関する詳細については、10 ページの『ローカライズ順序』を参照し
てください。
次の表の例は、ユーザが SELECT 文内に MATCHES キーワードを範囲なしで指定
したときに文字 (CHAR) 型列と各国語文字 (NCHAR) 型列によって生成される別々
の結果を示しています。これらの例は、A と a を等価クラス内に定義している非デ
フォルト ロケールの使用を想定しています。表 mytable 内の col1 が文字
(CHAR) 型列であり、col2 が各国語文字 (NCHAR) 型列であることも想定されてい
ます。
問合せ
SELECT
WHERE
SELECT
WHERE
* FROM mytable
col1 MATCHES ’art’
* FROM mytable
col2 MATCHES ’art’
データ型
問合せ結果
文字
(CHAR) 型
NCHAR
小文字の a を使用した値 ’art’ が列 col1
に含まれるすべての行
値 ’art’ または ’Art’ が列 col2 に含まれる
すべての行
MATCHES キーワードを使用して範囲を指定すると、文字データ型のすべての列に
ついて照合考慮事項が働きます。 MATCHES キーワードの左側の列が各国語文字
(NCHAR) 型、各国語可変長文字 (NVARCHAR) 型、文字 (CHAR) 型、可変長文字
(VARCHAR) 型、または (Dynamic Server の場合のみ) ラージ可変長文字
(LVARCHAR) 型で、MATCHES キーワードの文字列オペランドにブラケット
( [ ] ) が使用されて範囲が指定されているとき、ロケールがローカライズ済み順序
を定義している場合にはソートはその順序に従います。
重要: データベース サーバは、MATCHES 演算子と共に指定される範囲内の文字を
判別するときに、DB_LOCALE または SET COLLATION によってローカラ
イズ済み順序が設定されている場合にはその順序を使用します (これには文字
(CHAR) 型列、ラージ可変長文字 (LVARCHAR) 型列、可変長文字
(VARCHAR) 型列も含まれます)。この動作は、データベース サーバは文字
(CHAR) 型列、ラージ可変長文字 (LVARCHAR) 型列、および可変長文字
(VARCHAR) 型列に対するすべての操作にコード セット順序を使用し、各国
語文字 (NCHAR) 型列と各国語可変長文字 (NVARCHAR) 型列に対するソー
ト操作にはローカライズ済み順序 (定義されている場合) を使用するというル
ールの例外です。
SELECT 文内で範囲を指定して MATCHES キーワードを使用するときに、データ
ベース サーバが各国語文字 (NCHAR) 型列、各国語可変長文字 (NVARCHAR) 型
列、ラージ可変長文字 (LVARCHAR) 型列、文字 (CHAR) 型列、および各国語文字
(VARCHAR) 型列を処理する方法を、いくつかの単純な例で示します。 abonnés
表から姓 (nom) が E から P までの範囲の文字で始まるすべての従業員の従業員番
号、名、姓を抽出したいとします。また、nom 列が各国語文字 (NCHAR) 型列であ
ることも想定します。この問合せを行うために、次の SELECT 文は WHERE 節内
で MATCHES 条件を使用します。
SELECT numéro,nom,prénom
FROM abonnés
WHERE nom MATCHES ’[E-P]*’
ORDER BY nom;
88
IBM Informix GLS: ユーザーズ ガイド
Étaix、Ötker、および Øverst の行は、ローカライズ済み順序では、84 ページの表
3 に示されているとおり、各名前のアクセント付きの最初の文字が nom 列につい
ての E から P までの MATCHES 範囲に含まれるため、問合せ結果内に示されま
す。
numéro
nom
prénom
13608
13607
13602
13604
13610
13613
13603
13611
13605
13614
Étaix
Hammer
Hämmerle
LaForêt
LeMaître
Llanero
Montaña
Oatfield
Ötker
Øverst
Émile
Gerhard
Greta
Jean-Noël
Héloïse
Gloria Dolores
José Antonio
Emily
Hans-Jürgen
Per-Anders
nom が文字 (CHAR) 型列である場合の問合せ結果は、nom が各国語文字
(NCHAR) 型列であるときと全く同じになります。列が文字 (CHAR) 型であるか各
国語文字 (NCHAR) 型であるかにかかわらず、データベース サーバは常にローカラ
イズ済み順序を使用して範囲に含まれる文字を判別します。
LIKE 条件: LIKE 条件も、一致する文字列についてテストします。 MATCHES 条
件と同様、LIKE 条件は、LIKE キーワードの左側の列の値が、LIKE キーワードの
右側に引用符付き文字列によって指定されたパターンに一致する場合に真になりま
す (つまり適合します)。引用符付き文字列では、ある記号のみをワイルドカードと
して使用できます。 LIKE に関する詳細については、「IBM Informix: SQL ガイド:
構文」を参照してください。
LIKE 条件はリテラル一致 のみを指定できます。リテラル一致では、照合考慮事項
が働くかどうかが列のデータ型によって以下のとおりに決定されます。
v 文字 (CHAR) 型列と可変長文字 (VARCHAR) 型列の場合、照合考慮事項は働き
ません。
v 各国語文字 (NCHAR) 型列と各国語可変長文字 (NVARCHAR) 型列の場合、これ
らのデータ型がローカライズ済み順序を使用し、ロケールが照合の等価クラスを
定義する可能性があるため、照合考慮事項が働く可能性があります。たとえば、
ローカライズ済み順序は a と A が等価クラスであることを指定する可能性があ
ります。
LIKE キーワードは文字の範囲をサポートしません。つまり、LIKE 条件では、ブラ
ケットで囲まれた文字を使用して範囲を指定することはできません。
LIKE および MATCHES 条件内のワイルドカード文字: IBM Informix 製品は、
MATCHES および LIKE 条件内のワイルドカード文字として以下の ASCII 文字を
サポートします。
条件
ワイルドカード文字
LIKE
MATCHES
_ %
* ? [ ] ^ -
第 3 章 SQL 機能
89
文字 (CHAR) 型データと可変長文字 (VARCHAR) 型データの場合、データベース
サーバは LIKE および MATCHES 条件内のパターン マッチングでバイト単位での
比較を行います。各国語文字 (NCHAR) 型データと各国語可変長文字
(NVARCHAR) 型データの場合、データベース サーバは LIKE および MATCHES
条件内のパターン マッチングをバイトではなく論理的文字を基にして行います。こ
のため、LIKE 節のアンダスコア ( _ ) ワイルドカードと、MATCHES 節の ? (疑
問符) ワイルドカードは、次の表に示されているとおり、シングルバイト文字 1 文
字またはマルチバイト文字 1 文字に一致します。
条件
引用符付き文字列
列値
結果
LIKE
LIKE
MATCHES
MATCHES
’ab_d’
’ab_d’
’ab?d’
’ab?d’
’abcd’
’abA1A2d’
’abcd’
’abA1A2d’
True
True
True
True
データベース サーバは、マルチバイト文字をリテラル文字として処理します。デー
タベース サーバに、ワイルドカード文字のリテラルな意味での解釈を指示するに
は、文字の前にエスケープ文字を置く必要があります。エスケープ文字にはシング
ルバイト文字を使用しなければなりません。データベース サーバはこの目的でのマ
ルチバイト文字の使用を認識しません。デフォルト エスケープ文字は円記号 (¥) で
す。
次の MATCHES 条件は、示されている列値について結果 TRUE を戻します。
条件
引用符付き文字列
列値
結果
MATCHES
’ab¥?d’
’ab?d’
True
SQL 長さ関数の使用
SQL 長さ関数は、SELECT 文とその他のデータ操作文で使用できます。長さ関数
は、列、文字列、または変数の長さをバイトまたは文字単位で戻します。
ロケールの選択は、以下の 3 つの SQL 長さ関数に影響を与えます。
v LENGTH 関数
v OCTET_LENGTH 関数
v CHAR_LENGTH (または CHARACTER_LENGTH) 関数
これらの関数の構文については、「IBM Informix: SQL ガイド: 構文」の表現式に関
するセグメントを参照してください。
LENGTH 関数
LENGTH 関数は、文字データ内のデータのバイト数を戻します。ただし、LENGTH
関数の動作はユーザが指定する引数の型によって異なります。引数には、引用符付
き文字列、テキスト (TEXT) 型以外の文字型列、テキスト (TEXT) 型列、ホスト変
数、または SPL ルーチン変数を指定できます。
次の表に、LENGTH 関数によるこれらの引数型のそれぞれに対する操作方法を示し
ます。この表の「例」列では、記号 s を使用して後書きのシングルバイトの空白文
字を表します。
90
IBM Informix GLS: ユーザーズ ガイド
この表では、すべての引数がシングルバイト文字で構成されていることが想定され
ています。
LENGTH 引数
動作
引用符付き文字列
ロケールで定義されたとおりの
後書きの空白を除いた、文字列
内のバイト数を戻します。
定義された列の長さにかかわら
文字 (CHAR) 型
ず、後書きの空白文字を除い
列、可変長文字
(VARCHAR) 型列、 た、列内のバイト数を戻しま
す。
ラージ可変長文字
(LVARCHAR) 型
列、各国語文字
(NCHAR) 型列、ま
たは各国語可変長文
字 (NVARCHAR) 型
列
テキスト (TEXT) 型 後書きの空白文字を含む、列内
列
のバイト数を戻します。
ホストまたはプロシ
ジャ変数
例
文字列が ’Ludwig’ の場合、結果は 6
になります。文字列が ’Ludwigssss’
の場合も、結果は 6 になります。
customer 表の fname 列が
CHAR(15) 列であり、この列に文字列
’Ludwig’ が含まれている場合、結果
は 6 になります。 fname 列に文字
列 ’Ludwigssss’ が含まれている場合
も、結果は 6 になります。
catalog 表の cat_descr 列がテキス
ト (TEXT) 型列であり、この列に文
字列 ’Ludwig’ が含まれている場合、
結果は 6 になります。 cat_descr
列に文字列 ’Ludwigssss’ が含まれて
いる場合、結果は 10 になります。
定義された変数の長さにかかわ プロシジャ変数 f_name が
らず、後書きの空白を除いた、 CHAR(15) として定義されており、こ
変数に含まれるバイト数を戻し の変数に文字列 ’Ludwig’ が含まれて
いる場合、結果は 6 になります。
ます。
f_name 変数に文字列 ’Ludwigssss’
が含まれている場合も、結果は 6 に
なります。
デフォルト ロケールまたはシングルバイト コード セットを持つロケールを使用し
ているとき、LENGTH 関数は列内の文字数を戻しているように見えます。 次の例
で、customer 表を含む stores_demo データベースは、米国英語 (U.S. English)
ロケール用のデフォルト コード セットを使用しています。ユーザが LENGTH 関
数を伴う SELECT 文を入力して、顧客番号が 106 よりも小さい行の姓、姓の長
さ、および顧客番号を表示するとします。
SELECT lname AS cust_name,
length (fname) AS length, customer_num AS cust_num
FROM customer WHERE customer_num < 106
次の出力例に問合せの結果を示します。抽出された各行について、length 列に
lname (cust_name) 列内の文字数が示されているように見えます。しかし、実際は
length 列には lname 列内のバイト数が表示されています。
デフォルト コード セットでは、1 バイトに 1 文字が保管されます。デフォルト
コード セットに関する詳細については、21 ページの『デフォルト ロケール』を参
照してください。
第 3 章 SQL 機能
91
cust_name
length
cust_num
Ludwig
Carole
Philip
Anthony
Raymond
6
6
6
7
7
101
102
103
104
105
日本語 SJIS コード セットなどのマルチバイト コード セットをサポートするロケ
ールで LENGTH 関数を使用するときには、文字とバイトの区別が意味を持ちま
す。 LENGTH は引数内のバイト数を戻します。この結果は、文字数と異なる可能
性があります。
次の例では、customer_multi 表を含むデータベースのロケールが、マルチバイト
コード セットを持つことが想定されています。 LENGTH 関数を伴う SELECT 文
をユーザが入力して、番号が 199 である顧客の lname、その長さ、および
customer_num を表示するとします。
SELECT lname AS cust_name,
length (fname) AS length, customer_num AS cust_num
FROM customer_multi WHERE customer_num = 199
顧客 199 の lname が 4 文字で構成されているとします。
aA1A2bB1B2
この表現の最初の文字 (記号 a) はシングルバイト文字です。 2 番目の文字 (記号
A1A2) は 2 バイト文字です。 3 番目の文字 (記号 b) はシングルバイト文字です。
4 番目の文字 (記号 B1B2) は 2 バイト文字です。
次の出力例に問合せの結果を示します。顧客の名が 4 文字で構成されていても、
「length」列にはこの名前の合計バイト数が 6 であることが示されています。
cust_name
1
2
1
aA A bB B
2
length
cust_num
6
199
OCTET_LENGTH 関数
OCTET_LENGTH 関数はバイト数を戻し、一般に後書きの空白文字をバイト カウン
トに入れます。この SQL 長さ関数は、ロケールが定義する空白の定義を使用しま
す。 OCTET_LENGTH は、文字型列、引用符付き文字列、ホスト変数、または
SPL 変数内のバイト数を戻します。 OCTET_LENGTH の実際の動作はユーザが指
定する引数の型によって異なります。
次の表に、各引数型に対する OCTET_LENGTH 関数の操作方法を示します。この表
の「例」列では、記号 s を使用して後書きのシングルバイトの空白文字を表しま
す。また、わかりやすくするために、「例」列では例の文字列がシングルバイト文
字で構成されていることも想定されています。
92
IBM Informix GLS: ユーザーズ ガイド
OCTET_LENGTH
引数
動作
引用符付き文字列
後書きの空白文字を含む、文
字列内のバイト数を戻しま
す。
文字 (CHAR) 型列ま 後書きの空白文字を含む、文
字列内のバイト数を戻しま
たは
各国語文字 (NCHAR) す。この値は、列の定義済み
の長さ (バイト単位) です。
型列
可変長文字
(VARCHAR) 型列ま
たは
各国語可変長文字
(NVARCHAR) 型列
後書きの空白を含む、文字列
内のバイト数を戻します。値
は宣言された最大列サイズで
はなく、文字列の実際の長さ
(バイト単位) になります。
テキスト (TEXT) 型
列
後書きの空白文字を含む、列
内のバイト数を戻します。
ホストまたはプロシ
ジャ変数
定義された変数の長さにかか
わらず、後書きの空白を含
む、変数に含まれるバイト数
を戻します。
例
文字列が ’Ludwig’ の場合、結果は 6
になります。文字列が ’Ludwigssss’
の場合、結果は 10 になります。
customer 表の fname 列が
CHAR(15) 列であり、この列に文字列
’Ludwig’ が含まれている場合、結果
は 15 になります。 fname 列に文字
列 ’Ludwigsss’ が含まれている場合
も、結果は 15 になります。
catalog 表の cat_advert 列が
VARCHAR(255, 65) 列であり、この
列に文字列 ″Ludwig″ が含まれている
場合、結果は 6 になります。列に文
字列 ’Ludwigssss’ が含まれている場
合、結果は 10 になります。
catalog 表の cat_descr 列がテキス
ト (TEXT) 型列であり、この列に文
字列 ’Ludwig’ が含まれている場合、
結果は 6 になります。 cat_descr
列に文字列 ’Ludwigssss’ が含まれて
いる場合、結果は 10 になります。
プロシジャ変数 f_name が
CHAR(15) として定義されており、こ
の変数に文字列 ’Ludwig’ が含まれて
いる場合、結果は 6 になります。
f_name 変数に文字列 ’Ludwigssss’
が含まれている場合、結果は 10 にな
ります。
LENGTH 関数と OCTET_LENGTH 関数の違いは、OCTET_LENGTH が一般にバイ
ト カウント内に後書きの空白を入れるのに対して、LENGTH は一般にバイト カウ
ントから後書きの空白を除外するところにあります。
LENGTH 関数と比較しての OCTET_LENGTH 関数の利点は、LENGTH 関数が列値
をトリムして、トリムされた文字列の長さを戻すのに対して、OCTET_LENGTH 関
数は実際の列サイズを提供するところにあります。 OCTET_LENGTH 関数のこの利
点は、ISO8859-1 などのシングルバイト コード セットと、日本語 SJIS コード セ
ットなどのマルチバイト コード セットの両方に当てはまります。
次の表に、OCTET_LENGTH 関数が生成する可能性のあるいくつかの結果を示しま
す。
第 3 章 SQL 機能
93
OCTET_LENGTH
入力文字列
’abc ’
’A1A2B1B2’
’aA1A2bB1B2’
説明
結果
シングルバイト文字 4 文字 (文字 abc と、後続の空白 1
つ) の引用符付き文字列
マルチバイト文字 2 文字の引用符付き文字列
シングルバイト文字 2 文字とマルチバイト文字 2 文字の
引用符付き文字列
4
4
6
CHAR_LENGTH 関数
CHAR_LENGTH 関数 (CHARACTER_LENGTH 関数とも呼ばれる) は、引用符付き
文字列、文字データ型の列、ホスト変数、またはプロシジャ変数内の文字数を戻し
ます。ただし、この関数の実際の動作は、ユーザが指定する引数の型によって異な
ります。
次の表に、CHAR_LENGTH 関数による各引数型に対する操作方法を示します。この
表の「例」列では、記号 s を使用して後書きのシングルバイトの空白を表します。
わかりやすくするために、「例」列では文字列がシングルバイト文字で構成されて
いると想定します。
CHAR_LENGTH
引数
動作
例
文字 (CHAR) 型列
または
各国語文字
(NCHAR) 型列
ロケールで定義されたとおりの
後書きの空白を含む、文字列内
の文字数を戻します。
後書きの空白文字を含む、文字
列内の文字数を戻します。この
値は、列の定義済みの長さ (バ
イト単位) です。
可変長文字
(VARCHAR) 型列ま
たは
各国語可変長文字
(NVARCHAR) 型列
空白文字を含む、文字列内の文
字数を戻します。値は宣言され
た最大列サイズではなく、文字
列の実際の長さ (バイト単位)
になります。
文字列が ’Ludwig’ の場合、結果は 6
になります。文字列が ’Ludwigssss’
の場合、結果は 10 になります。
customer 表の fname 列が
CHAR(15) 列であり、この列に文字列
’Ludwig’ が含まれている場合、結果
は 15 になります。 fname 列に文字
列 ’Ludwigssss’ が含まれている場
合、結果は 15 になります。
catalog 表の cat_advert 列が
VARCHAR(255, 65) であり、この列
に文字列 ″Ludwig″ が含まれている場
合、結果は 6 になります。列に文字
列 ’Ludwigssss’ が含まれている場
合、結果は 10 になります。
catalog 表の cat_descr 列がテキス
ト (TEXT) 型列であり、この列に文
字列 ’Ludwig’ が含まれている場合、
結果は 6 になります。 cat_descr
列に文字列 ’Ludwigssss’ が含まれて
いる場合、結果は 10 になります。
プロシジャ変数 f_name が
CHAR(15) として定義されており、こ
の変数に文字列 ’Ludwig’ が含まれて
いる場合、結果は 6 になります。
f_name 変数に文字列 ’Ludwigssss’
が含まれている場合、結果は 10 にな
ります。
引用符付き文字列
テキスト (TEXT) 型 後書きの空白文字を含む、列内
列
の文字数を戻します。
ホストまたはプロシ
ジャ変数
94
IBM Informix GLS: ユーザーズ ガイド
宣言された変数の長さにかかわ
らず、後書きの空白を含む、変
数に含まれる文字数を戻しま
す。
CHAR_LENGTH 関数はマルチバイト コード セットを使用する場合に特に便利で
す。引用符付き文字列にマルチバイト文字が含まれている場合、文字列内の文字数
は、文字列内のバイト数と異なります。 CHAR_LENGTH 関数を使用して、引用符
付き文字列内の文字数を判別できます。
ただし、CHAR_LENGTH 関数は、シングルバイト コード セットでも便利に使用で
きます。これらのコード セットでは、列内のバイト数が列内の文字数に等しくなり
ます。 LENGTH 関数を使用して列内のバイト数 (この場合、文字数に等しい) を判
別する場合、LENGTH は列値をトリムし、トリムされた文字列の長さを戻します。
対照的に、CHAR_LENGTH は列値をトリムせず、宣言された列サイズを戻します。
次の表に、CHAR_LENGTH 関数が引用符付き文字列について生成する可能性のある
いくつかの結果を示します。
CHAR_LENGTH
入力文字列
’abc ’
’A1A2B1B2’
’aA1A2B1B2’
説明
シングルバイト文字
と、後続の空白文字
マルチバイト文字 2
シングルバイト文字
引用符付き文字列
結果
4 文字の引用符付き文字列 (文字 abc
1 文字)
文字の引用符付き文字列
2 文字とマルチバイト文字 2 文字の
4
2
4
ロケールを区別するデータ型の使用
前の節では、各国語文字 (NCHAR) 型と各国語可変長文字 (NVARCHAR) 型をロー
カライズ済み順序 (ロケールによって定義されている場合) でソートする方法につい
て説明しました。本節では、データベース サーバが金額 (MONEY) 型、拡張デー
タ型、およびスマート ラージ オブジェクト (文字ラージ オブジェクト(CLOB) 型
とバイナリ ラージ オブジェクト (BLOB) 型) を扱う方法へのロケールの影響につ
いて説明します。
これらのデータ型の構文については、「IBM Informix: SQL ガイド: 構文」を参照し
てください。これらのデータ型の説明については、「IBM Informix: SQL ガイド: 参
照」を参照してください。
金額 (MONEY) 型の処理
金額 (MONEY) 型は、通貨量を保管します。このデータ型は、最大 32 の有効桁ま
での固定小数点 10 進数を保管します。金額 (MONEY) 型列は、CREATE TABLE
および ALTER TABLE などのデータ定義文内に指定できます。
ロケールの選択は、以下の方法で通貨データに影響を与えます。
v 金額 (MONEY) 型列の宣言内の scale (小数点以下桁数) のデフォルト値
v クライアント アプリケーションが使用する通貨表記
ロケールは、デフォルトの小数点以下桁数と通貨表記を、ロケール ファイルの
MONETARY カテゴリーに定義します。ロケール ファイルの MONETARY カテゴ
リーに関する詳細については、157 ページの『MONETARY カテゴリ』を参照して
ください。
第 3 章 SQL 機能
95
scale (小数点以下桁数) パラメータ値の指定
金額 (MONEY) 型列は次の構文で定義します。
(1)
データ型
MONEY
(
16
precision
2
,
scale
)
注:
1
SQLS を参照してください。
要素
目的
precision
10 進数 (DECIMAL) 型または金額 (MONEY) 型の有効桁の合計数
1 から 32 までの整数を指定する必要があります。 デフォルト
precision は 16 です。
scale
小数点の右側の桁数
scale は、1 から precision までの整数でなければなりません。 scale を省略した場
合、データベース サーバはデータベース ロケールが定義しているデフォルトの小
数点以下桁数 (scale) を提供します。デフォルト ロケール (米国英語 (U.S.
English)) の場合、ダイヤグラムに示されているとおり、デフォルトは 2 です。
内部的には、データベース サーバは金額 (MONEY) 型値を 10 進数 (DECIMAL)
型値として保管します。 precision パラメータは合計有効桁数を定義し、scale パラ
メータは小数点記号の右側の合計桁数を定義します。たとえば、列を MONEY(8,3)
として定義した場合、列に最大 8 桁を含めることが可能であり、それらの桁数のう
ち 3 桁は小数点記号の右側の桁になります。列内のデータ値の例として、
12345.678 を挙げることができます。
金額 (MONEY) 型列の宣言から scale パラメータを省略した場合、データベース
サーバはロケールが定義している小数点以下桁数を提供します。デフォルト ロケー
ル (米国英語 (U.S. English)) の場合、データベース サーバはデフォルト小数点以下
桁数 2 を使用します。データ型 MONEY(precision) は、データ型
DECIMAL(precision,2) と同じ内部フォーマットで保管されます。たとえば、列を
MONEY(10) として定義した場合、データベース サーバはデータ型
DECIMAL(10,2) と同じフォーマットで列を作成します。この列内のデータ値の例と
して 12345678.90 を挙げることができます。
非デフォルト ロケールで金額 (MONEY) 型列を宣言するときに scale を省略した
場合、データベース サーバはロケール固有のデフォルト小数点以下桁数を指定する
10 進数 (DECIMAL) 型と同じ内部フォーマットで列を宣言します。たとえば、列を
MONEY(10) として定義し、ロケールがデフォルト小数点以下桁数を 4 として定義
している場合、データベース サーバは列のデータ型を DECIMAL(10,4) と同じフォ
ーマットで保管します。この列内のデータ値の例として 123456.7890 を挙げること
ができます。
多くの欧州言語の GLS コード セットは、通貨値内のユーロ記号をサポートできま
す。金額 (MONEY) 型の完全な構文については、「IBM Informix: SQL ガイド: 構
文」を参照してください。金額 (MONEY) 型の詳細については、「IBM Informix:
SQL ガイド: 参照」を参照してください。
96
IBM Informix GLS: ユーザーズ ガイド
通貨表記のフォーマット
クライアント アプリケーションは、金額 (MONEY) 型列内の値を、ロケールが定
義している通貨表記に書式設定します。この表記は、通貨記号、3 桁区切り記号、
および小数点記号を指定します。通貨表記に関する詳細については、14 ページの
『数値および通貨フォーマット』を参照してください。
デフォルト ロケールでは、デフォルト通貨記号はドル記号 ($)、デフォルト 3 桁区
切り記号はカンマ ( , )、デフォルト小数点記号はピリオド記号 ( . ) です。非デフ
ォルト ロケールでは、通貨値用の文化的差異に基づいた該当する通貨表記をロケー
ルが定義します。また、DBMONEY 環境変数を使用して、通貨値用の通貨記号と小
数点記号をカスタマイズできます。詳しくは、36 ページの『通貨値のカスタマイ
ズ』を参照してください。
拡張データ型の処理 (IDS のみ)
ユーザは、Dynamic Server の拡張可能データ型システムを使用して、新しいデータ
型と、データベース サーバに対するそれらの新しいデータ型の動作を定義すること
ができます。本節では、GLS 処理でこれらの型がどのように扱われるかを説明しま
す。「IBM Informix: ユーザ定義ルーチンおよびデータ タイプ 開発者ガイド」も参
照してください。
不透明 (opaque) 型
不透明 (opaque) 型はクライアント アプリケーションに完全にカプセル化されてい
ます。つまり、その内部構造はデータベース サーバから認識されません。このた
め、データベース サーバはコード セット変換などのロケール固有タスクを不透明
(opaque) 型について自動的に実行することはできません。すべての GLS 処理 (コー
ド セット変換、ローカライズ済み照合順序、エンド ユーザ フォーマットなど)
は、不透明 (opaque) 型サポート関数内で実行する必要があります。
不透明 (opaque) 型を作成するとき、ロケールを区別するデータを処理できる C
UDR としてサポート関数を作成できます。詳しくは、120 ページの『不透明
(opaque) 型でロケールを区別するデータ』を参照してください。
複合データ型
Dynamic Server は、以下の複合データ型もサポートします。
v コレクション (collection) 型: セット (SET) 型、マルチセット (MULTISET) 型、
およびリスト (LIST) 型
v 行 (row) 型: 名前付き行 (ROW) 型と名前なし行 (ROW) 型
これらのデータ型は、文字、時刻、または数値データ型のメンバを持つことができ
ます。データベース サーバは、これらのデータ型が複合データ型の一部であるとき
にも、これらのデータ型の GLS 処理を行うことができます。
ディスティンクト (distinct) 型
ディスティンクト (distinct) 型の内部記憶域表現はそのソース型と同じですが、名前
は異なります。ソース型として、不透明 (opaque) 型または組込み型、名前付き行
(ROW) 型、あるいは別のディスティンクト (distinct) 型を使用できます。 Dynamic
Server は、ディスティンクト (distinct) 型の GLS 考慮事項を、そのソース型と同じ
方法で処理します。
第 3 章 SQL 機能
97
スマート ラージ オブジェクトの処理 (IDS のみ)
スマート ラージ オブジェクトは、テキストまたはイメージを保管できます。スマ
ート ラージ オブジェクトは、細かく分割されて保管および抽出され、復旧および
トランザクション ロール バックなどのデータベース プロパティを持っています。
Dynamic Server は以下の 2 つのスマート ラージ オブジェクト型をサポートしてい
ます。
v バイナリ ラージ オブジェクト (BLOB) 型は、イメージとビデオ クリップを含
む、どの型のバイナリ形式データも保管します。
v 文字ラージ オブジェクト (CLOB) 型は、PostScript または HTML ファイルなど
のテキストを保管します。
スマート ラージ オブジェクトはバイト単位でシークすることができますが、文字
単位でシークすることはできません。このため、スマート ラージ オブジェクト内
の情報を検索するときには、マルチバイト文字のバイト オフセットを管理しなけれ
ばなりません。 GLS ライブラリの関数は、このタスクの実行を支援します。詳し
くは、「IBM Informix: GLS Programmer’s Manual」を参照してください。
クライアント アプリケーションを通してスマート ラージ オブジェクトにアクセス
するには、ESQL/C または DataBlade API などの API を使用しなければなりませ
ん。 GLS は SQL を介したスマート ラージ オブジェクト データへの直接アクセ
スをサポートしていないため、GLS はデータを自動的に処理しません (つまり、自
動コード セット変換、ローカライズ済み照合順序、エンド ユーザ フォーマットな
どを行いません)。すべてのサポートは API 内で行われなければなりません。
ファイルから文字ラージ オブジェクト (CLOB) 型データをコピーするときには、
必要な文字セット変換が Dynamic Server によって実行されます。クライアントまた
はサーバ ロケール (それぞれクライアントおよびサーバ ファイルからのコピー時)
がデータベース ロケールと異なる場合、Dynamic Server はデータベース ロケール
への変換を行うためのルーチンを呼び出します。
データ操作文の使用
ロケールの選択は、以下の SQL データ操作文に影響を与える可能性があります。
v DELETE
v INSERT
v LOAD
v UNLOAD
v UPDATE
これらの SQL 文の GLS に関する性質については、節で説明されています。これら
の文の詳細については、「IBM Informix: SQL ガイド: 構文」を参照してください。
WHERE 節内の条件の指定
以下の文に WHERE 節を指定して操作対象の行を指定できます。
v DELETE 文の場合、WHERE 節は削除する行を指定します。
v 埋込み SELECT を伴う INSERT 文の場合、WHERE 節は別の表から挿入する行
を指定します。
98
IBM Informix GLS: ユーザーズ ガイド
v UPDATE 文の場合、WHERE 節は更新する行を指定します。さらに、SET 節に
は、別の行に割り当てられる値を持つ行を WHERE 節によって識別する埋込み
SELECT 文を指定できます。
v UNLOAD 文の場合、埋込み SELECT の WHERE 節はアンロードする行を指定
します。
ロケールの選択は、これらの WHERE 節の使用に、SELECT の WHERE 節への影
響と同じ方法で影響を与えます。詳しくは、85 ページの『WHERE 節内の論理的述
部』と 87 ページの『MATCHES および LIKE 条件での比較』を参照してくださ
い。
元号ベース日付の指定
以下の SQL 文は、日付 (DATE) 型列値および日時 (DATETIME) 型列値を指定す
る可能性があります。
v DELETE 文の WHERE 節
v INSERT 文の VALUES 節
v UPDATE 文の SET 節
日付 (DATE) 型列値を上記の SQL 文のいずれかに指定すると、データベース サー
バは GL_DATE (または DBDATE) 環境変数を使用して日付表現式を以下のとおり
に解釈します。
v GL_DATE (または DBDATE) を元号ベース (アジア) 日付書式として設定した場
合、日付表現式に元号ベース日付書式を使用できます。
v GL_DATE (または DBDATE) 環境変数を元号ベース日付書式として設定してい
ない場合、サーバ処理ロケールが元号ベース日付をサポートしている場合にの
み、日付表現式に元号ベース日付書式を使用できます。サーバ処理ロケールの詳
細については、27 ページの『サーバ処理ロケールの決定』を参照してください。
v ロケールが元号ベース日付をサポートしていない場合、日付表現式に元号ベース
日付書式を使用できません。この場合、元号ベース日付書式を指定しようとする
と SQL 文は失敗します。
日時 (DATETIME) 型列値を指定すると、データベース サーバは GL_DATE (また
は DBDATE) 環境変数ではなく GL_DATETIME (または DBTIME) 環境変数を使
用して、表現式を解釈します。
詳しくは、35 ページの『元号ベースの日時フォーマット』を参照してください。
データのロードとアンロード
LOAD 文と UNLOAD 文を使用すると、オペレーティング システム テキスト フ
ァイルによって、データベースから、およびデータベースにデータを転送できま
す。以下の節で、LOAD 文と UNLOAD 文の、GLS に関する性質について説明し
ます。これらの文の使用法と構文の詳細については、「IBM Informix: SQL ガイド:
構文」を参照してください。
データベースへのデータのロード
LOAD 文は、オペレーティング システム ファイルから既存の表またはビューにデ
ータを挿入します。このオペレーティング システム ファイルは LOAD FROM フ
第 3 章 SQL 機能
99
ァイルと呼ばれます。このファイル内のデータには、クライアント コード セット
が定義するどの文字も含めることができます。クライアント ロケールがマルチバイ
ト コード セットをサポートしている場合、データにマルチバイト文字を含めるこ
とができます。クライアント コード セットと異なるがクライアント コード セッ
トに変換可能なコード セットをデータベース ロケールがサポートしている場合、
クライアントはデータをデータベース サーバに送信する前にそのデータに対してコ
ード セット変換を実行します。詳しくは、30 ページの『コード セット変換の実
行』を参照してください。
ロケールは、日付、時刻、数値、および通貨データのフォーマットも定義します。
LOAD FROM ファイル内の列値には、クライアント ロケールのサポートするどの
フォーマットも適用できます。たとえば、あるフランス語ロケールで、3 桁区切り
記号として空白を使用し、小数点記号としてカンマを使用する通貨値を定義してい
る可能性があります。このロケールを使用するときには、金額 (MONEY) 型列の次
のリテラル値が LOAD FROM ファイル内で有効になります。
3 411,99
日付および通貨データには代替フォーマットを指定できます。該当する環境変数を
設定する場合、LOAD FROM ファイルは日付 (DATE) 型列値、日時 (DATETIME)
型列値、および金額 (MONEY) 型列値の代替エンド ユーザ フォーマットを使用で
きます。詳しくは、34 ページの『日時エンド ユーザ フォーマットのカスタマイ
ズ』と 36 ページの『通貨値のカスタマイズ』を参照してください。
データベースからのデータのアンロード
UNLOAD 文は、SELECT 文が抽出した行をオペレーティング システム ファイル
に書き込みます。このオペレーティング システム ファイルは UNLOAD TO ファ
イルと呼ばれます。このファイル内のデータ値には、クライアント コード セット
が定義する文字が含まれます。クライアント ロケールがマルチバイト コード セッ
トをサポートしている場合、コード セットからのマルチバイト文字をデータに入れ
ることができます。
クライアント コード セットと異なるがクライアント コード セットに変換可能な
コード セットをデータベース ロケールがサポートしている場合、クライアントは
データを UNLOAD TO ファイルに書き込む前にそのデータに対してコード セット
変換を実行します。 (詳しくは、30 ページの『コード セット変換の実行』を参照
してください。)
あるデータ型の UNLOAD TO ファイル内の出力フォーマットは、クライアント ロ
ケールおよび環境変数によって決定されます。これらのデータ型には、日付
(DATE) 型値、金額 (MONEY) 型値、数値データ型の値、および日時 (DATETIME)
型値が含まれます。詳しくは、12 ページの『エンド ユーザ フォーマット』と 34
ページの『エンド ユーザ フォーマットのカスタマイズ』を参照してください。
重要: UNLOAD 文が生成した UNLOAD TO ファイルを、別の表またはデータベー
スをロードする LOAD 文の入力ファイル (LOAD FROM ファイル) として
使用できます。 UNLOAD TO ファイルをこの方法で使用するときには、
LOAD を実行するときのすべての環境変数とクライアント ロケールの値が、
UNLOAD を実行したときと同じであることを確認してください。
100
IBM Informix GLS: ユーザーズ ガイド
外部表を使用したロード (XPS のみ)
Extended Parallel Server のハイパフォーマンス並列ロードおよびアンロードでは、
外部表 を使用します。 DB–Access で発行できるか、ESQL/C に埋め込むことがで
きる、一連の拡張 SQL 文が使用されます。
ハイパフォーマンス ローダ (HPL) は、さまざまなソースから表をロードするため
の拡張サポートを提供し、さまざまなデータ形式変換を実行します。フィールドお
よびレコード区切り記号内の非 ASCII 文字もサポートされます。ハイパフォーマン
ス ロードは、非 ASCII 文字のサポートを必要とする可能性のある以下のような操
作を実行します。
v Informix データ形式を使用してデータ ファイルをプラットフォーム間で転送しま
す
v メインフレームからデータ ウェアハウスに操作データを転送します
v データベース サーバを使用して、区切り記号付き ASCII、固定 ASCII、
EBCDIC、および Informix 内部 (ロウ) 表現の間でデータを変換します。
v SQL の INSERT 文と SELECT 文を使用して、データベース表内の新しい列への
データのマッピングを指定します
非デフォルト ロケールの場合、CREATE EXTERNAL TABLE...USING、INSERT
INTO...SELECT、および SELECT...INTO EXTERNAL table-name USING などの、
ローダ用の拡張 SQL 文は、非 ASCII 文字を使用できる識別子をサポートしていま
す。 Extended Parallel Server の識別子に関する詳細については、63 ページの『識
別子内の非 ASCII 文字』を参照してください。
外部表を使用したシンプル ラージ オブジェクトのロード (XPS の
み)
Extended Parallel Server は、シンプル ラージ オブジェクトをロードおよびアンロ
ードするための外部表をサポートしています。シンプル ラージ オブジェクト (テ
キスト (TEXT) 型列またはバイト (BYTE) 型列) は、区切りおよび INFORMIX フ
ォーマット外部表によってのみサポートされます。区切りフォーマットでは、シン
プル ラージ オブジェクト列はテキストまたは 16 進エンコードのどちらかで表す
ことができます。テキスト エンコードでは、シンプル ラージ オブジェクトは現状
のままデータ ファイルに書き込まれます。円記号と区切り記号はエスケープされま
す。 16 進エンコードでは、シンプル ラージ オブジェクト内の各データ バイトが
2 つの 16 進数字 (0 から 9 まで、A から F まで、およびすべての標準 ASCII 文
字) によって表現されます。シンプル ラージ オブジェクト内の印刷不可能文字
は、変更されずにデータ ファイル内に入れられます。
シンプル ラージ オブジェクト列を外部表に定義する方法に関する詳細について
は、「IBM Informix: SQL ガイド: 構文」内の CREATE EXTERNAL TABLE 文の
説明を参照してください。外部表を使用したロードについてのステップバイステッ
プの手順と、ファイル形式およびパフォーマンスに関する考慮事項の詳細について
は、「IBM Informix: Administrator’s Reference」を参照してください。
エスケープ文字の指定: エスケープ文字を指定して、シンプル ラージ オブジェク
ト内の不完全または無効なマルチバイト文字データの認識をデータベース サーバに
第 3 章 SQL 機能
101
指示できます。エスケープ文字を指定しない場合、データベース サーバはロード中
に埋込み特殊文字についてテキスト ベース データ ファイル内の文字フィールドを
検査しません。
エスケープ文字を指定すると、そうでない場合に文字がロードおよびアンロード プ
ロセスにとって特別な意味を持つかどうかにかかわらず、円記号 (¥) がそれぞれの
文字の前に置かれて実際の文字のオカレンスを示します。たとえば、「¥|」は列分離
記号ではなくリテラルな「|」文字として解釈されます。
アンロードでは、データベース サーバは区切り記号と円記号 (¥) をエスケープしま
す。ロードでは、円記号の直後の文字は表示されたとおりの文字として解釈されま
す。テキスト (TEXT) 型列値の場合、印刷不可能文字はデータ ファイル内に直接埋
め込まれます。
区切り記号の定義: シンプル ラージ オブジェクト データ値は、フィールド区切
り記号の間の、テキスト (TEXT) 型列またはバイト (Byte) 型列が定義されているポ
イントのレコードに直接挿入されます。
ユーザ定義区切り記号はそれぞれ 1 バイトに限定されています。このため、マルチ
バイト ロケールでは、厳密に 1 バイトの長さの文字のみを区切り記号として定義
できます。シングルバイト ロケールとマルチバイト ロケールの両方で、シンプル
ラージ オブジェクトは常にバイト単位でトラバースされます。バイトが区切り記号
の 1 つまたは円記号に一致した場合、それはアンロードでエスケープされます。ロ
ードでは、円記号の直後のバイトのみがエスケープされ、その円記号の後の (マル
チバイトの可能性のある) 文字はエスケープされません。
区切り記号付きシンプル ラージ オブジェクト データのトラバースはすべてのロケ
ールでバイト単位で実行されます。シンプル ラージ オブジェクトには常に有効な
テキストが含まれているとは限らず、不完全または無効なマルチバイト文字が含ま
れている可能性があるため、シンプル ラージ オブジェクトは (マルチバイトの可
能性のある) 文字単位ではトラバースされません。文字型列とは異なり、シンプル
ラージ オブジェクトでの空白の埋込みまたは切捨ては、無効なマルチバイト文字の
ためのオプションではありません。シンプル ラージ オブジェクト内のデータへの
ランダム アクセスは不可能であり、シンプル ラージ オブジェクトはどのような方
法によっても変更できません。
重要: データベース サーバは、ロードまたはアンロード プロセスでシンプル ラー
ジ オブジェクト データ内の不完全または無効なマルチバイト文字を検出し
ません。マルチバイト データを文字型列にロードする前に、そのデータが一
貫しており正確であることを確認する必要があります。
102
IBM Informix GLS: ユーザーズ ガイド
第 4 章 データベース サーバの機能
本章の概要 . . . . . . . . . . . . .
Informix データベース サーバによる GLS サポー
ト . . . . . . . . . . . . . . . .
データベース サーバ コード セット変換 . .
データベース サーバが変換するデータ . . .
ユーティリティに対するロケール特有のサポート
データベース サーバ ユーティリティの非
ASCII 文字 . . . . . . . . . . . .
SQL ユーティリティの非 ASCII 文字 . . .
C ユーザ定義ルーチンのロケール サポート (IDS
および DB API のみ) . . . . . . . . .
UDR の現行処理ロケール . . . . . . .
ソース コードの非 ASCII 文字 . . . . .
C 言語文では . . . . . . . . . .
SQL 文では . . . . . . . . . . .
文字データのコピー . . . . . . . . .
IBM Informix GLS ライブラリ . . . . .
IBM Informix GLS による文字処理 . . .
ワイド文字データ型の互換性 . . . . .
. 103
. 103
. 105
. 105
106
. 107
. 107
.
.
.
.
.
.
.
.
.
108
108
109
109
109
110
110
110
111
コード セット変換と DataBlade API. . . . .
UDR 内の文字列 . . . . . . . . . .
不透明 (OPAQUE) 型サポート関数の文字列
ロケール特有のデータ フォーマット . . . .
各国対応例外メッセージ. . . . . . . . .
カスタマイズされた例外メッセージの挿入
C UDR からのローカライズされた例外メッ
セージの挿入 . . . . . . . . . . .
カスタマイズされたメッセージの検索 . . .
パラメータ マーカの指定 . . . . . . .
各国対応トレース メッセージ . . . . . . .
systracemsgs システム カタログ表へのメッセ
ージの挿入 . . . . . . . . . . . .
コードへの各国対応トレース メッセージの書
き込み. . . . . . . . . . . . . .
トレース メッセージの検索 . . . . . .
不透明 (opaque) 型でロケールを区別するデータ
各国対応入出力サポート関数 . . . . . .
各国対応送受信サポート関数 . . . . . .
111
111
112
113
113
114
115
116
117
117
117
118
120
120
120
121
本章の概要
本章では、GLS 機能がデータベース サーバにどのような影響を及ぼすかについて
説明します。本章では、主に次のトピックについて説明します。
v データベース サーバがアクセスできるオペレーティング システム ファイル
v データベース サーバがコード セット変換を使用する場合
v GLS 機能をサポートするデータベース サーバ ユーティリティ
これらのデータベース サーバ機能について詳しくは、「IBM Informix:
Administrator’s Guide」を参照してください。データベース サーバ ユーティリティ
について詳しくは、「IBM Informix: Administrator’s Reference」を参照してくださ
い。異なる Informix データベース サーバへのマイグレーションについては、
「IBM Informix: 移行ガイド」を参照してください。
Informix データベース サーバによる GLS サポート
データベース サーバは、次のオペレーティング システム ファイルに対して読取り
および書込み操作を実行できます。
v 診断ファイル
診断ファイルには次のファイルが含まれます。
– af.xxx
– shmem.xxx
UNIX のみ
© Copyright IBM Corp. 1996, 2003
103
– gcore.xxx
UNIX のみ の終り
– コア
次の構成パラメータを 1 つ以上設定すると、データベース サーバが診断ファイ
ルを生成します。
UNIX のみ
– DUMPDIR
– DUMPSHMEM
– DUMPCNT
– DUMPCORE
– DUMPGCORE
UNIX のみ の終り
v メッセージ ログ ファイル
MSGPATH 構成パラメータを設定すると、データベース サーバがユーザ指定の
メッセージ ログ ファイルを生成します。
これらのオペレーティング システム ファイルは、データベース サーバのあるサー
バ コンピュータにあります。データベース サーバがこれらのファイルに対して読
取りまたは書込みを行うときは、サーバ コンピュータがサポートするコード セッ
トを使用する必要があります。データベース サーバは、このコード セットをサー
バ ロケールから取得します。
SERVER_LOCALE 環境変数を使用してサーバ ロケールを設定します。
SERVER_LOCALE を設定しない場合、データベース サーバはサーバ ロケールと
してデフォルト ロケールを使用します。詳細については、58 ページの
『SERVER_LOCALE』を参照してください。
Extended Parallel Server
Extended Parallel Server に関しては、すべてのコサーバが同一の GLS オペレーテ
ィング システム環境を使用している必要があります。
Extended Parallel Server の終り
コード セット変換を実行して、オペレーティング システム ファイルに対する読取
りおよび書込み操作に関連する非 ASCII 文字を処理するために、データベース サ
ーバはデータベース サーバ コード セット (データベース サーバ ロケールがサポ
ートするコード セット) を判別します。非 ASCII 文字の使用の詳細については、
63 ページの『識別子内の非 ASCII 文字』を参照してください。
104
IBM Informix GLS: ユーザーズ ガイド
データベース サーバ コード セット変換
本節では、データベース サーバが実行するコード セット変換について要約しま
す。コード セット変換に関する一般情報については、30 ページの『コード セット
変換の実行』を参照してください。
Informix データベース サーバは次の条件が真のとき、サーバ処理ロケールとサーバ
ロケール間で自動的にコード セット変換を実行します。
v CLIENT_LOCALE、DB_LOCALE、および SERVER_LOCALE 環境変数が、サ
ーバ処理ロケールとサーバ ロケールのコード セットが異なるように設定されて
いる。
v サーバ処理ロケールとサーバ ロケールのコード セット間に有効なコード セット
変換が存在する。
Informix データベース サーバがコード セット変換を実行するファイルのリストに
ついては、103 ページの『Informix データベース サーバによる GLS サポート』を
参照してください。 GLS コード セット変換ファイルについては、160 ページの
『コード セット変換ファイル』を参照してください。
データベース サーバがオペレーティング システム ファイルを作成すると、サーバ
ロケール (サーバ コード セット) のコード セットでファイル名と書込みファイル
の内容が生成されます。このファイルにアクセスする必要のある IBM Informix 製
品またはクライアント アプリケーションは、この同じサーバ コード セットをサポ
ートするサーバ処理ロケールを持っている必要があります。サーバ処理ロケールが
これらの非 ASCII 文字を持つコード セットをサポートするように、適切な
CLIENT_LOCALE、DB_LOCALE、および SERVER_LOCALE 環境変数を設定す
る必要があります。サーバ処理ロケールについて詳しくは、27 ページの『サーバ処
理ロケールの決定』を参照してください。
データベース サーバは、ファイル名を参照する前にサーバ処理ロケールに関してフ
ァイル名の妥当性を検査します。
Extended Parallel Server
Extended Parallel Server は、非 ASCII 英数字 7 ビットでない文字を含むファイル
名を拒否します。
Extended Parallel Server の終り
データベース サーバが変換するデータ
データベース サーバがデータをそのオペレーティング システム ファイルとの間で
相互に転送するとき、データベース サーバはサーバ処理ロケールとサーバ ロケー
ルのコード セットの相違を次のように処理します。
v これらの 2 つのコード セットが同一の場合、データベース サーバは、サーバ
ロケールのコード セットのオペレーティング システム ファイルを読み取るか、
またはそこに書き込みます。
第 4 章 データベース サーバの機能
105
v これらの 2 つのコード セットが異なり、それらの間に Informix コード セット
変換が存在する場合、データベース サーバは、そのオペレーティング システム
ファイルの読取り、または書込みを行うときに自動的にコード セット変換を実行
します。
コード セットの相違を解決するコード セット変換では、サーバ ロケールは、デ
ータベース サーバがファイルを作成するために使用した実際のコード セットを
サポートする必要があります。詳しくは、47 ページの『製品により同じコード
セットがサポートされていることの確認』を参照してください。
v これらの 2 つのコード セットが異なるが、Informix コード セット変換が存在し
ない場合、データベース サーバはコード セット変換を実行できません。
データベース サーバがコード セット変換が存在しないオペレーティング システ
ム ファイルの書込みまたは読取りを行う場合、データベース サーバはサーバ処
理ロケールのコード セットを使用して読取りまたは書込み操作を実行します。
ユーティリティに対するロケール特有のサポート
本節では、GLS 機能の使用に特有の情報についてデータベース サーバ ユーティリ
ティごとに説明します。ユーティリティの詳細な説明については、「IBM Informix:
Administrator’s Reference」を参照してください。
監査用のデータベース サーバ ユーティリティについては、「IBM Informix: Trusted
Facility Guide」を参照してください。
データベース サーバ ユーティリティと SQL ユーティリティは、データ ベース
サーバのインスタンスからの情報を要求するクライアント アプリケーションです。
このため、これらのユーティリティは、CLIENT_LOCALE、DB_LOCALE、および
SERVER_LOCALE 環境変数を使用して、次のように非デフォルトのロケールの名
前を取得します。
v データベース ユーティリティが非デフォルト コード セットを使用して入力 (コ
マンド行引数を含む) を受け入れる、または出力を生成する場合、
CLIENT_LOCALE 環境変数を設定する必要があります。
v データベース ユーティリティが非デフォルト ロケールを持つデータベースにア
クセスする場合、DB_LOCALE 環境変数を設定する必要があります。
v データベース ユーティリティにより、データベース サーバが非デフォルト コー
ド セットを持つサーバ コンピュータにデータを書き込む場合、
SERVER_LOCALE 環境変数を設定する必要があります。
また、データベースおよびクライアント ロケールが互換性のあるコード セットを
サポートする場合、これらのユーティリティはコード セット変換を実行します。コ
ード セット変換について詳しくは、30 ページの『コード セット変換の実行』を参
照してください。
Windows のみ
ロケール環境変数の変更は、HKEY_LOCAL_MACHINE の下の Windows レジスト
リ データベースにも反映されなければなりません。
Windows のみ の終り
106
IBM Informix GLS: ユーザーズ ガイド
データベース サーバ ユーティリティの非 ASCII 文字
多くのデータベース サーバ ユーティリティは、コマンド行引数の非 ASCII 文字を
サポートします。これらのユーティリティはクライアント コード セット
(CLIENT_LOCALE で定義する) のすべてのコマンド行引数を解釈します。
次の表は、コマンド行引数の非 ASCII 文字を受け入れるユーティリティ、または非
ASCII 出力を生成するユーティリティを示します。
ユーティリティ名
コマンド行引数の非 ASCII 文字
非 ASCII
出力
onaudit (IDS)
-f input_file
あり
oncheck
(IDS)
-cc -pc database-ci -cI -pk -pK -pl -pL
database:table#index_name-ci -cI -pk -pK -pl -pL -cd -cD
-pB -pt -pT -pd -pD -pp database:table
あり
onload
(IDS)
database:table-i old_index new_index-t tape_device
あり
onlog (IDS)
-d tape_device
onpload
(IDS)
-d source-j jobname-p projectname
あり
onshowaudit
-f input_file -s server_name
あり
onspaces
(IDS)
-p pathname-f filename
onstat
-o filename -dest (IDS)filename_source (IDS)None (XPS)
あり
onunload
(IDS)
database:table-t tape_device
あり
onutil
(XPS)
CHECK TABLE DATA database:owner:tableCHECK TABLE あり
INFO database:owner:table
Extended Parallel Server
Extended Parallel Server コントロール ユーティリティ xctl を使用して、onstat な
ど、その他のデータベース サーバ ユーティリティを実行できます。
Extended Parallel Server の終り
SQL ユーティリティの非 ASCII 文字
次の SQL ユーティリティも、コマンド行引数の非 ASCII 文字を受け入れ、クライ
アント コード セットの出力を生成します。
v chkenv
v dbexport
v dbimport
v dbload
v dbschema
第 4 章 データベース サーバの機能
107
chkenv ユーティリティの説明については、「IBM Informix: SQL ガイド: 参照」を
参照してください。 dbload、dbschema、dbexport、および dbimport ユーティ
リティの説明については、「IBM Informix: 移行ガイド」を参照してください。
DB–Access については、「IBM Informix: DB-Access ユーザーズ ガイド」を参照し
てください。
DB–Access ユーティリティは、クライアント ロケールのコード セットでラベルと
メッセージを生成します。
Extended Parallel Server
Extended Parallel Server の場合、DB–Access は、database と script_file のマルチバ
イト コマンド行引数を受け入れます。
Extended Parallel Server の終り
C ユーザ定義ルーチンのロケール サポート (IDS および DB API のみ)
Dynamic Server を使用すると、C プログラミング言語で書かれたユーザ定義ルーチ
ン (UDR) を作成できます。これらの C UDR は、DataBlade API を使用してデー
タベース サーバと通信します。 DataBlade API の詳細な説明については、
「IBM Informix: DataBlade API Programmer’s Guide」を参照してください。本節で
は、C UDR の国際化 の方法について説明します。
国際化とは、さまざまな言語、地域、およびコード セットをそのコードを変更した
り再コンパイルしたりせずにサポートできるユーザ定義ルーチン (UDR) を作成する
プロセスです。国際化の詳細な説明については、「IBM Informix: GLS Programmer’s
Manual」を参照してください。
各国対応の C UDR は、次の GLS 考慮事項を処理する必要があります。
v UDR がソース コード内で非 ASCII 文字を使用できる場所。
v 文字データをコピーするときに、C UDR が実行する必要のある手順。
v UDR が GLS ロケールにアクセスする方法。
v UDR がコード セット変換を行う方法。
v UDR がロケール特有のエンド ユーザ フォーマットを処理する方法。
v UDR が各国対応例外メッセージにアクセスする方法。
v UDR が各国対応トレース メッセージにアクセスする方法。
v 不透明 (OPAQUE) 型サポート関数が、ロケールを区別するデータを処理する方
法。
UDR の現行処理ロケール
データベースにアクセスするために、クライアント アプリケーションはまずデータ
ベース サーバへの接続を要求します。データベース サーバは指定されたデータベ
ースにそのクライアント アプリケーションがアクセスできるかどうかを検証し、ク
ライアントとデータベースとの間の接続を確立しなければなりません。このプロセ
スで、データベース サーバはサーバ処理ロケールを確立して接続の期間を使用しま
す。クライアント アプリケーションが UDR を実行するとき、この UDR は、サー
108
IBM Informix GLS: ユーザーズ ガイド
バ処理ロケールに関連してそのサーバ コンピュータで実行されます。このロケール
は、現行処理ロケール と呼ばれることがあります。
多くのユーザ定義ルーチンは本来 ASCII データ用に書かれたものでも、非 ASCII
データを正しく処理します。ただし、実行に異常をきたすルーチンもあります。ご
使用の C UDR を国際化するには、ご使用の UDR が任意の GLS 関連操作でサー
バ処理ロケールを処理することを確認する必要があります。 UDR がサーバ処理ロ
ケールを正しくサポートしない場合、ルーチンは予期しない結果またはエラー メッ
セージを戻す場合があります。
ソース コードの非 ASCII 文字
非 ASCII 文字は、C-UDR ソース ファイルの次のコンテキストにある場合がありま
す。
v C 言語文の、変数宣言や if 文など
v mi_exec( ) または mi_exec_prepared_statement( ) 関数によってサーバに送
信される SQL 文
C 言語文では
C コンパイラは、ご使用の C 言語文で使用するコード セットを認識する必要があ
ります。ご使用の C コンパイラの機能によって、UDR ソース ファイルの C 言語
文内で非 ASCII 文字を使用できる程度が制限されます。たとえば、リテラルまたは
コメント内でしかマルチバイト文字をサポートしない C 言語コンパイラもありま
す。
C コンパイラが非 ASCII 文字を完全にはサポートしない場合、これらの文字を含む
UDR を正常にコンパイルできない場合があります。特に、次の状態では UDR のコ
ンパイルに影響がある場合があります。
v マルチバイト文字が C 言語トークンを含む可能性がある。
マルチバイト文字のコンポーネントが、パーセント (%)、カンマ、円記号 (¥)、お
よび二重引用符 (″) のようなシングルバイト文字と区別できない場合がありま
す。引用符付き文字列にそのような文字が存在する場合、C コンパイラはそれら
の文字を C 言語トークンとして解釈します。これは、コンパイル エラーまたは
文字を失う結果になる可能性があります。
v C コンパイラが 8 ビット透過でない可能性がある。
コード セットが非 ASCII 文字 (コード値が 127 より大きい) を含む場合、C コ
ンパイラは文字を解釈するために 8 ビット透過でなければなりません。 8 ビッ
ト透過になるには、コンパイラはコード値の一部として 8 ビットを読み取る必要
があります。すなわち、この 8 ビットの意味を無視したり、これについて独自の
解釈を行ってはいけません。
ヒント: C コンパイラは、ご使用の C UDR 内の DataBlade API 関数の名前を解釈
できるように設定された ASCII コードも認識する必要があります。
SQL 文では
C UDR で、SQL 文は mi_exec( ) および mi_prepare( ) 関数に対するリテラル
文字列として使用されます。 C コンパイラはこれらのリテラル文字列を構文解析し
ません。そのため、これらの SQL 文にある文字のコード セットを認識する必要が
ありません。
第 4 章 データベース サーバの機能
109
C ソース ファイル内では、次のオブジェクトについて SQL 文の中で非 ASCII 文
字を使用できます。
v データベース、表、列、ビュー、制約、PREPARE 文で処理された文、およびカ
ーソルなど、SQL 識別子の名前
詳しくは、62 ページの『データベース オブジェクトの命名』を参照してくださ
い。
v リテラル文字列
たとえば、UDR では、マルチバイト文字を次のように使用できます。
mi_exec(conn,
"insert into tbl1 (nchr1) values ’A1A2B1B2’", 0);
v ファイル名とパス名。ただし、ご使用のオペレーティング システムがファイル名
およびパス名のマルチバイト文字をサポートする場合。
重要: SQL 文で非 ASCII 文字を使用するには、サーバ処理ロケールに、これらの
文字をサポートするコード セット、または文字コード セットと互換性のあ
るコード セットが含まれている必要があります。コード セット変換の実行
方法については、111 ページの『UDR 内の文字列』を参照してください。
文字データのコピー
データをコピーするとき、バッファのサイズがデータを保持するために十分である
ことを確認する必要があります。デスティネーション バッファのサイズがソース
バッファ内のマルチバイト データ用として不十分な場合、データがコピー中に切り
捨てられる可能性があります。たとえば、次の C コード フラグメントはマルチバ
イト データ A1A2A3B1B2B3 を、buf1 から buf2 にコピーします。
char buf1[20], buf2[5];
...
stcopy("A1A2A3B1B2B3", buf1);
...
stcopy(buf1, buf2);
buf2 はマルチバイト文字列を保持するのに十分な大きさがないため、コピーでは文
字列が A1A2A3B1B2 に切り捨てられます。この状態を回避するために、DataBlade
API モジュールがコピーを実行する前にマルチバイト文字列がバッファに収まるこ
とを確認してください。
IBM Informix GLS ライブラリ
IBM Informix GLS ライブラリはアプリケーション プログラム インターフェイス
(API) で、これによりユーザ定義ルーチンおよび DataBlade モジュールの開発者は
各国対応アプリケーションを作成できます。
IBM Informix GLS による文字処理
IBM Informix GLS のマクロおよび関数は、DataBlade API モジュール内で、文化的
差異に基づいた情報に関して GLS ロケールにアクセスできるようにします。この
ライブラリには、次の機能を持つ関数が含まれます。
v シングルバイトおよびマルチバイト文字の処理
v 日付、時刻、および数値データのロケール特有の形式へのフォーマット
110
IBM Informix GLS: ユーザーズ ガイド
IBM Informix GLS ライブラリと、それを DataBlade API モジュールで使用する方
法について詳しくは、「IBM Informix: GLS Programmer’s Manual」を参照してくだ
さい。ペーパー マニュアルをお持ちでない場合、
http://www-3.ibm.com/software/data/informix/pubs/library/ でオンライン マニュ
アルを表示できます。
ワイド文字データ型の互換性
ワイド文字 データ型は、マルチバイト文字を処理するための代替フォームです。コ
ード セットのワイド文字フォームでは、各マルチバイト文字のサイズが正規化され
るため、それぞれの文字のサイズは同じです。レガシー DataBlade API モジュール
は、次データ型のうち任意のものを使用してワイド文字を保持する場合がありま
す。
ワイド文字
データ型
mi_wchar
wchar_t
説明
欠点
現在、すべてのシステムで符号な
し short 型として定義されている
レガシー DataBlade API データ型
プラットフォーム固有のオペレー
ティング システム データ型
DataBlade API は、mi_wchar 値を操
作するワイド文字関数を提供しませ
ん。
オペレーティング システムは、
wchar_t 値を操作するワイド文字関
数を提供します。これらの関数の使用
法は、プラットフォーム固有です。
IBM Informix GLS ライブラリは、ワイド文字のサポート用に gl_wchar_t データ
型を提供します。また、IBM Informix GLS は、gl_wchar_t を操作するワイド文字
関数の独自のセットも提供します。 IBM Informix GLS ワイド文字関数を使用する
と、アプリケーションがプラットフォームに依存しなくなり、ご使用の DataBlade
API モジュール内で IBM Informix GLS ロケールへアクセスできるようになりま
す。
IBM Informix GLS ライブラリは、gl_wchar_t と mi_wchar との間、または
gl_wchar_t と wchar_t との間の変換を行う関数を提供しません。 DataBlade API
モジュールが mi_wchar または wchar_t を使用し続け、さらに IBM Informix
GLS ワイド文字処理も使用する必要がある場合、必要な変換を実行するコードを書
かなければなりません。
コード セット変換と DataBlade API
UDR 内では DataBlade API はコード セット変換を自動的に実行することはありま
せん。 C UDR は、次の状態でコード セット変換を実行する必要がある場合があり
ます。
v SQL 文を含む文字列内
v 文字データを含む不透明 (OPAQUE) 型用の不透明 (OPAQUE) 型サポート関数
UDR 内の文字列
ご使用の C UDR にデータベース サーバに送信される文字列が含まれているとき
は、これらの文字列に対して必須のコード セット変換を実行する必要があります。
このコード セット変換は、この文字列のコード セットと UDR が実行されるサー
バ処理ロケールのコード セットとの差を処理しなければなりません。
第 4 章 データベース サーバの機能
111
たとえば、次の SELECT 文で、DataBlade API はマルチバイト表名 A1A2A3B1B2
に対するコード セット変換を実行しません。
mi_exec(conn, "SELECT * from A1A2A3B1B2", 0);
UDR が、SQL 文の文字をサポートするコード セットを含まないサーバ処理ロケー
ルで実行される場合、UDR は、サーバ処理ロケールと指定されたロケールのコード
セット間で明示的にコード セット変換を実行できます。
DataBlade API は、このコード セット変換を支援する次の関数を提供します。
文字列に対するコード セット変換
DataBlade API 関数
指定された文字列に対して、指定されたロケールか
らサーバ処理ロケールへのコード セット変換を実行
する
指定された文字列に対して、サーバ処理ロケールか
ら指定されたロケールへのコード セット変換を実行
する
mi_convert_from_codeset( )
mi_convert_to_codeset( )
これらの DataBlade API 関数について詳しくは、「IBM Informix: DataBlade API
Programmer’s Guide」の関数参照で確認してください。
不透明 (OPAQUE) 型サポート関数の文字列
クライアント アプリケーションは、クライアントとの間で相互に転送される非不透
明型データのコード セット変換を実行しますが、データベース サーバは不透明
(opaque) 型の内部フォーマットを認識しません。このため、不透明 (opaque) 型につ
いては、サーバ処理ロケールのコード セットにない文字列を明示的に変換する責任
は、サポート関数にあります。
次の不透明 (OPAQUE) 型サポート関数では、コード セット変換を実行する必要が
ある場合があります。
v 入出力サポート関数。クライアント ロケールとサーバ処理ロケールのコード セ
ット間で、不透明 (OPAQUE) 型の外部フォーマットを変換します。
v 送受信サポート関数。不透明 (OPAQUE) 型の内部構造で任意の文字フィールド
を変換します。
ヒント: DataBlade Developer's Kit (DBDK) が不透明 (OPAQUE) 型入出力サポート
関数用に生成するコードは、非デフォルト ロケールの外部フォーマットを
処理します。
DataBlade API には、不透明 (opaque) 型のサポート関数でコード変換を行う次の関
数があります。
不透明 (opaque) 型のコード セット変換
DataBlade API 関数
文字列引数に対して、サーバ処理ロケールのコード セットか mi_put_string( )
らクライアント ロケールのコード セットへのコード セット
変換を実行する
文字列に対して、クライアント ロケールのコード セットから mi_get_string( )
サーバ処理ロケールのコード セットへのコード セット変換を
実行する
112
IBM Informix GLS: ユーザーズ ガイド
これらの DataBlade API 関数の構文について詳しくは、「IBM Informix: DataBlade
API Programmer’s Guide」の関数参照で確認してください。
ロケール特有のデータ フォーマット
C UDR が日付、時刻、数値、または通貨データのエンド ユーザ フォーマットを含
む文字列を処理するとき、これらのエンド ユーザ フォーマットのロケール特有の
フォーマットを処理するように UDR を作成する必要があります。 DataBlade API
には、複数のデータ型の内部表現とそのエンド ユーザ フォーマットとの間での変
換を行う関数が備わっています。
次の DataBlade API 関数は、内部のデータベース値を、ロケール特有のエンド ユ
ーザ フォーマットを使用する文字列に変換します。
DataBlade API 関数
説明
mi_date_to_string( )
ロケール特有のエンド ユーザ日付フォーマットを使用して
内部の日付 (DATE) 型値を同等の文字列に変換します。
ロケール特有のエンド ユーザ通貨フォーマットを使用して
内部の金額 (MONEY) 型値を同等の文字列に変換します。
ロケール特有のエンド ユーザ数値フォーマットを使用して
内部の 10 進数 (DECIMAL) 型値を同等の文字列に変換し
ます。
mi_money_to_string( )
mi_decimal_to_string( )
重要: mi_datetime_to_string( ) および mi_interval_to_string( ) 関数は、現行処
理ロケールの日付および時刻フォーマットの文字列をフォーマットしませ
ん。ただし、それらの関数は、日付、時刻、または間隔文字列を、固定され
た ANSI SQL フォーマットで作成します。
次の DataBlade API 関数はロケール特有のエンド ユーザ フォーマットの文字列を
解釈し、それを内部のデータベース値に変換します。
DataBlade API 関数
説明
mi_string_to_date( )
ロケール特有の日付エンド ユーザ フォーマットをその内
部日付 (DATE) 型フォーマットに変換します。
ロケール特有の通貨エンド ユーザ フォーマットをその内
部金額 (MONEY) 型フォーマットに変換します。
ロケール特有の数値エンド ユーザ フォーマットをその内
部 10 進数 (DECIMAL) 型フォーマットに変換します。
mi_string_to_money( )
mi_string_to_decimal( )
重要: mi_string_to_datetime( ) および mi_string_to_interval( ) 関数は、現行処
理ロケールの日付および時刻フォーマットを解釈しません。ただし、それら
の関数は、固定された ANSI SQL フォーマットの日付、時刻、または間隔文
字列を解釈します。
各国対応例外メッセージ
DataBlade API 関数 mi_db_error_raise( ) は例外コールバックに例外メッセージを
送信します。このメッセージは次のいずれかです。
v リテラル メッセージ。mi_db_error_raise( ) への 3 番目の引数として指定する
もの。
第 4 章 データベース サーバの機能
113
v SQLSTATE の値に関連付けられているカスタマイズされたメッセージ。
mi_db_error_raise( ) への 3 番目の引数として指定するもの。
mi_db_error_raise( ) 関数は、カスタマイズされたメッセージを含む例外を発生
させることがあります。DataBlade モジュールと UDR は、このメッセージを
syserrors システム カタログ表に保管できます。 syserrors 表はこれらのメッ
セージを 5 文字の SQLSTATE 値にマップします。 syserrors 表では、カスタ
マイズされたメッセージのテキストとロケールを関連付けることができます。
mi_db_error_raise( ) のリテラル メッセージを指定する方法と、
mi_db_error_raise( ) のカスタマイズされたメッセージを指定する方法の一般情報
については、「IBM Informix: DataBlade API Programmer’s Guide」の例外およびイ
ベントの処理方法に関する章を参照してください。
本節では、ロケール特有の例外メッセージの使用方法に関する次のタスクについて
説明します。
v ロケール特定の例外メッセージを syserrors システム カタログ表に追加する方
法
v カスタマイズされたメッセージのロケールの選択により、カスタマイズされたメ
ッセージを mi_db_error_raise( ) が検索する方法にどのような影響が与えられ
るか
v 非 ASCII 文字を含むパラメータ マーカの指定方法
カスタマイズされた例外メッセージの挿入
カスタマイズされた状態コードとそれに関連するメッセージを syserrors システム
カタログ表に保管できます。カスタマイズされた例外メッセージを作成するには、
syserrors 表に行を直接挿入します。 syserrors 表には、各国対応例外メッセージ
用に次の列があります。
列名
説明
sqlstate
例外に関連付けられた SQLSTATE 値。次の問合せを使用して
syserrors にある SQLSTATE メッセージ文字列の現行リスト
を判別できます。
SELECT sqlstate, locale, message
FROM syserrors
ORDER BY sqlstate, locale
message
locale
114
IBM Informix GLS: ユーザーズ ガイド
SQLSTATE 値の決定方法について詳しくは、「IBM Informix:
DataBlade API Programmer’s Guide」を参照してください。
ターゲット ロケールのコード セットの文字を含む例外メッセー
ジのテキスト。規則により、メッセージに改行文字を組み込んで
はいけません。
例外メッセージが使用されるロケール。locale 列は、エラーおよ
び警告メッセージの国際化で使用される言語およびコード セッ
トを識別します。この名前は、メッセージ テキストのターゲッ
ト ロケールの名前です。
syserrors システム カタログ表の詳細について詳しくは、「IBM Informix: SQL ガ
イド: 参照」のシステム カタログについて説明した章を参照してください。
syserrors にテキストを挿入するときは、コード セット変換を有効にしないでくだ
さい。
クライアント ロケールとデータベース ロケールのコード セットが異なる場合、ク
ライアント環境の CLIENT_LOCALE 変数と DB_LOCALE 環境変数の両方を一時
的にデータベース ロケールの名前に設定します。この予備手段により、クライアン
ト アプリケーションはコード セット変換を実行しません。
メッセージ テキストにパラメータを指定する場合、パラメータ名がすべての ロケ
ールで同じになるように、パラメータ名には ASCII 文字のみを使用してください。
多くのコード セットは ASCII 文字を含みます。たとえば、次の INSERT 文は、
SQLSTATE 値が ″03I01″ の syserrors に新しいメッセージを挿入します。
INSERT INTO syserrors VALUES ("03I01", "en_us.8859-1", 0, 1,
"Operation Interrupted.")
INSERT INTO syserrors VALUES ("03I01", "fr_ca.8859-1", 0, 1,
"Traitement Interrompu.")
これで、’03I01’ SQLSTATE 値は 2 つのロケール特有メッセージを持ちます。デ
ータベース サーバは、実行するときに UDR のサーバ処理ロケールに基づいて適切
なメッセージを選択します。 mi_db_error_raise( ) が例外メッセージを見つける
方法について詳しくは、116 ページの『カスタマイズされたメッセージの検索』を
参照してください。
C UDR からのローカライズされた例外メッセージの挿入
前の節で説明したように、ユーザ定義ルーチン (UDR) 内で発生する例外に対するメ
ッセージを mi_db_error_raise( ) によって作成するとき、メッセージ テキストの
ロケールはサーバ処理ロケールと一致している必要があります。これらのロケール
が異なる場合、SQL スクリプトまたは mi_exec( ) 関数を呼び出す C UDR を使用
してメッセージを挿入することは確実ではありません。なぜなら、SQL パーサが、
認識しない文字を見つけたときに例外を発行するためです。この制約を回避するた
めに、INSERT 文 (mi_prepare( ) を指定した) を PREPARE 文で処理してエラー
メッセージをロードする UDR を使用できます。
v SQLSTATE 値とエラー メッセージ テキストで位置指定子 (「?」記号) を使用
します。これらの値は、syserrors システム カタログ表の最初と最後の列 (それ
ぞれ sqlstate と message) にあります。
v メッセージ テキストが使用するロケールの名前をハードコーディングします。ロ
ケール名は、syserrors の第 2 列 (locale) にあります。
たとえば、次の行は UNIX システムで、デフォルト ロケール (en_us) のメッセー
ジの INSERT 文を PREPARE 文で処理します。
stmt = mi_prepare(conn,
"insert into syserrors (?, ’en_us.8859-1’, 0, 1, ?)", NULL);
この文を実行するとき、位置指定子 (sqlstate と message) に値を指定し、次に
mi_exec_prepared_statement( ) 関数を使用して PREPARE 文で処理された
INSERT 文をデータベース サーバに送信する必要があります。
第 4 章 データベース サーバの機能
115
次の UDR コードは、SQLSTATE 値とそれに関連するメッセージ テキストを保持
するために、メッセージ配列 (enus_msg) を使用しています。このコードは、この
メッセージ配列の各要素に関する情報を、mi_exec_prepared_statement( ) 関数の
適切な位置指定子配列 (args、lens、nulls、および types) に書き込みます。
#include <stdio.h>
#include <string.h>
#include "mi.h"
#define MAX_MSG 3
char *enus_msg[MAX_MSG][2] = {
"XT010", "First error message for insertion",
"XT020", "Second error message for insertion",
"XT030", "Third error message for insertion"
};
/*
* Title: gls_insert_enus
* Purpose: Add localized messages to ’syserrors’ system error table
*
for given locale, independent of session locale setting.
*/
mi_integer
gls_insert_enus()
{
MI_DATUM
args[2];
/* pointers to column values */
mi_integer
lens[2];
/* lengths of column values */
mi_integer
nulls[2];
/* null capability of columns */
mi_string
*types[2];
/* types of columns */
mi_integer
i;
MI_STATEMENT *stmt;
MI_CONNECTION *conn = mi_open(NULL, NULL, NULL);
/*
* Prepare statement using placeholder values for sqlstate and message
* columns and fixed values for locale, level, and seqno columns.
*/
stmt = mi_prepare(conn,
"insert into syserrors values(?,’en_us.8859-1’,0,1,?)", NULL);
for (i=0; i<MAX_MSG; i++)
/* Loop through message array */
{
args[0] = (MI_DATUM)enus_msg[i][0];
/* Set pointer to sqlstate string */
lens[0] = strlen(args[0]);
/* Set length of sqlstate string */
nulls[0] = MI_FALSE;
/* Set null handling capability */
types[0] = "char(5)";
/* Set sqlstate column type */
args[1] = (MI_DATUM)enus_msg[i][1];
/* Set pointer to message string */
lens[1] = strlen(args[1]);
/* Set length of message string */
nulls[1] = MI_FALSE;
/* Set null handling capability */
types[1] = "varchar(255)";
/* Set message column type */
mi_exec_prepared_statement(stmt,0,0,2,args,lens,nulls,types,NULL,NULL);
}
mi_close(conn);
return 0;
}
PREPARE 文で処理された文の実行と、syserrors システム カタログ表へのカスタ
マイズされたメッセージの追加方法については、「IBM Informix: DataBlade API
Programmer’s Guide」を参照してください。
カスタマイズされたメッセージの検索
mi_db_error_raise( ) 関数は syserrors システム カタログ表の検索を開始する
と、ロケールのすべてのコンポーネント (言語、地域、コード セット、およびオプ
ションの修飾子) が現行処理ロケール内と syserrors の locale 列で同一であるメ
ッセージを要求します。
116
IBM Informix GLS: ユーザーズ ガイド
デフォルト ロケールを使用する C UDR では、現行処理ロケールは U.S. English
(en_us) です。現行処理ロケールが U.S. English のとき、mi_db_error_raise( ) は
U.S. English ロケールを使用するメッセージのみ を検索します。ただし、デフォル
トでないロケールを使用する C UDR では、現行処理ロケールはサーバ処理ロケー
ルです。
mi_db_error_raise( ) が syserrors システム カタログ表のメッセージを検索する
方法については、「IBM Informix: DataBlade API Programmer’s Guide」の例外に関
する章を参照してください。
パラメータ マーカの指定
syserrors システム カタログ表のカスタマイズされたメッセージは、パラメータ
マーカ を含むことができます。これらのパラメータ マーカは、(たとえば
%TOKEN% のように) 両端を 1 つのパーセント (%) 記号で囲んだ文字列です。パ
ラメータ マーカは、mi_db_error_raise( ) 関数が値を提供できる変数として扱わ
れます。 mi_db_error_raise( ) 関数は、ユーザが指定したメッセージ テキストま
たはメッセージ パラメータ文字列がサーバ処理ロケールにあると仮定します。カス
タマイズされたメッセージにパラメータ マーカを指定する方法の詳細な説明につい
ては、「IBM Informix: DataBlade API Programmer’s Guide」を参照してください。
各国対応トレース メッセージ
API は特定のロケールに対応するトレース メッセージをサポートします。現行のデ
ータベース ロケールが、トレース メッセージが使用するコード セットを決定しま
す。現行のデータベース ロケールに基づいて、指定されたトレースポイントは各国
対応トレース メッセージを作成できます。各国対応トレースを使用して、同じコー
ドを多くのさまざまなロケールで開発およびテストできます。
各国対応トレース サポートを提供するために、API は次の機能を備えています。
v systracemsgs システム カタログ表は、各国対応トレース メッセージを保管し
ます。
v 2 つの各国対応トレース関数 gl_dprintf( ) と gl_tprintf( ) は、各国対応トレー
ス メッセージをフォーマットします。
systracemsgs システム カタログ表へのメッセージの挿入
systracemsgs システム カタログ表は、C UDR のデバッグに使用できる各国対応
トレース メッセージを保管します。各国対応トレース メッセージを作成するに
は、行を systracemsgs 表に直接挿入します。
systracemsgs 表は、それぞれの各国対応トレース メッセージについて説明しま
す。
列名
説明
name
locale
message
トレース メッセージの名前
トレース メッセージが使用されるロケール
トレース メッセージのテキスト
メッセージ名とロケールの組み合せは、表内で一意でなければなりません。新しい
トレース クラスが systracemsgs に挿入されると、データベース サーバはそのト
第 4 章 データベース サーバの機能
117
レース クラスにトレース メッセージ ID と呼ばれる固有 ID を割り当てます。デ
ータベース サーバは、トレース クラス ID を systracemsgs の msgid 列に保管
します。トレース メッセージが systracemsgs 表に存在すれば、名前またはトレ
ース メッセージ ID のいずれかを使用してメッセージを API トレース関数に指定
できます。
トレース メッセージ テキストは、ロケールに対して適切な言語とコード セットの
テキスト文字列であり、テキストのどの部分を置換するかを示したトークン を含め
ることができます。トークン名はパーセント (%) 記号で区切られます。次の
INSERT 文は、qp1_exit と呼ばれる新しいメッセージを systracemsgs 表に書き
込みます。
INSERT INTO informix.systracemsgs(name, locale, message)
VALUES (’qp1_exit’, ’en_us.8859-1’,
’Exiting msg number was %ident%; the input is still %i%’)
このメッセージ テキストは英語です。そのため、systracemsgs 行はデフォルト
ロケール U.S. 英語を指定しています。
この 2 番目のメッセージは qp1_exit メッセージのフランス語版です。そのため、
systracemsgs 行は、UNIX システムのフランス語ロケール (fr_fr.8859-1) を指定
しています。
INSERT INTO informix.systracemsgs(name, locale, message)
VALUES (’qp1_exit’, ’fr_fr.8859-1’,
’Le numéro de message en sortie était %ident%; ¥
l’entrée est toujours %i%’)
サーバ コード セットで使用できる任意の文字を使用して、メッセージ テキストを
サーバ ロケールの言語で入力してください。変数を挿入するには、変数名の両端を
1 つのパーセント記号で囲みます (たとえば %a%)。データベース サーバは出力用
のトレース メッセージを準備するとき、各変数を実際の値で置き換えます。
コードへの各国対応トレース メッセージの書き込み
DataBlade API には、UDR コードに各国対応トレースポイントを挿入するトレース
関数があります。
v GL_DPRINTF マクロは各国対応トレース メッセージをフォーマットし、トレー
スポイントにしきい値を指定します。 GL_DPRINTF の構文は次のとおりです。
GL_DPRINTF(trace_class, threshold,
(message_name [,toktype, val]...,MI_LIST_END));
v gl_tprintf( ) 関数は各国対応トレース メッセージをフォーマットしますが、トレ
ースポイントしきい値は指定しません。
gl_tprintf( ) 関数はトレース ブロック内で使用されます。これは、tf( ) 関数を
使用して、指定されたしきい値を現行のトレース レベルと比較します。
gl_tprintf( ) の構文は次のとおりです。
gl_tprintf(message_name [,toktype ,val]...,
MI_LIST_END);
GL_DPRINTF と gl_tprintf( ) の構文要素には次の値があります。
118
trace_class
トレース クラス名または文字列として示されるトレース クラス ID
整数値のいずれかです。
threshold
実行用のトレースポイントしきい値を設定する負でない整数です。
IBM Informix GLS: ユーザーズ ガイド
message_name
データベースの systracemsgs システム カタログ表に保管された
各国対応メッセージの ID です。
toktype
トークン名を構成する文字列で、この後に 1 つのパーセント (%)
記号が続き、さらに printf フォーマットで使用される 1 文字の出
力指定子が続きます。
val
出力になる値式で、先行するトークンの出力指定子のタイプと一致
する必要があります。
MI_LIST_END 可変長リストを終了させるマクロ定数です。
重要: MI_LIST_END 定数は可変長リストの終わりをマークしま
す。 MI_LIST_END を組み込まない場合、ユーザ定義ルーチ
ンが失敗する可能性があります。
次の各国対応トレース文は GL_DPRINTF マクロを使用しています。
i = 6;
/* If the current trace level of the funcEntry class is greater
* than or equal to 20, find the version of the qp1_entry
* message whose locale matches the current database locale
*/
GL_DPRINTF("funcEntry", 20,
("qp1_entry",
"ident%s", "one",
"i%d", i,
MI_LIST_END));
デフォルト ロケールで、funcEntry クラスの現行のトレース レベルが 20 以上の
場合、このトレースポイントは次のトレース メッセージを生成します。
13:21:51
Exiting msg number was one; the input is still 6
次の各国対応トレース ブロックは、gl_tprinf() 関数を使用しています。
i = 6;
/* Compare current trace level of "funcEnd" class and
* with a tracepoint threshold of 25. Continue execution of
* trace block if trace level >= 25
*/
if ( tf("funcEnd", 25) )
{
i = doSomething();
/* Generate an internationalized trace message (based
* on current database locale) */
gl_tprintf("qp1_exit", "ident%s", "deux", "i%d", i,
MI_LIST_END);
}
ロケールがフランス語で、funcEntry クラスの現行トレース レベルが 25 以上の場
合、トレースポイントは次のトレース メッセージを生成します。
13:21:53 Le numéro de message en sortie était deux; l’entrée est toujours 6
データベース サーバは、トレース メッセージをメッセージに関連付けられたロケ
ールのコード セットでトレース出力ファイルに書き込みます。トレース メッセー
ジが systracemsgs システム カタログ表から出されている場合、その文字は、表
の systracemsgs エントリの locale 列で指定されたロケールのコード セットで
す。 UDR ソースのコード セットがサーバ処理ロケールのコード セットと異なる
第 4 章 データベース サーバの機能
119
(ただし、互換性はある) 場合、データベース サーバによってこれらのトレース メ
ッセージにコード セット変換が実行されている可能性があります。
トレース メッセージの検索
各国対応トレース メッセージをトレース出力ファイルに書き込むために、データベ
ース サーバは、locale 列が UDR のサーバ処理ロケールと一致する (または互換性
がある) systracemsgs システム カタログ表で行を見つける必要があります。その
ため、トレース出力ファイルで特定のトレース メッセージを参照するには、データ
ベース サーバが systracemsgs システム カタログ表のエントリと一致するサーバ
処理ロケールを生成するように、ロケールを指定する環境変数
(CLIENT_LOCALE、DB_LOCALE、および SERVER_LOCALE) を設定する必要
があります。
データベース サーバは、systracemsgs 表で、トレースポイントと同じ名前のエン
トリ、および現行処理ロケールと systracemsgs の locale 列でロケールのすべて
のコンポーネント (言語、地域、およびコード セット) が同じロケールを検索しま
す。言語と地域だけが一致する場合、データベース サーバはコード セットを変換
します。言語と地域が一致するメッセージがない場合、正しい言語のメッセージで
最初に使用可能なものを使用します。適切な言語のメッセージがない場合、デフォ
ルト言語 en_us のメッセージを使用します。
不透明 (opaque) 型でロケールを区別するデータ
不透明 (opaque) 型は完全にカプセル化されています。データベース サーバにとっ
て、その内部構造は不明です。データベース サーバは、文字データのコード セッ
ト変換や日付、数値、通貨データのロケール特有のフォーマットなど、ロケール特
有のタスクを自動的に実行することはありません。不透明 (opaque) 型を作成すると
き、ロケールを区別するデータを処理するように透明 (opaque) 型のサポート関数を
書く必要があります。
特に、次のサポート関数を書くときはロケールを区別するデータの処理方法を考慮
してください。
v input( ) および output( ) サポート関数
v receive( ) および send( ) サポート関数
DataBlade API および IBM Informix GLS は、C で書かれた不透明 (OPAQUE) 型
サポート関数に対して、GLS サポートを提供します。次の節では、これらのサポー
ト関数に関する GLS の考慮事項を要約します。不透明 (opaque) 型のサポート関数
に関する一般情報については、「IBM Informix: ユーザ定義ルーチンおよびデータ
タイプ 開発者ガイド」を参照してください。
各国対応入出力サポート関数
不透明 (opaque) 型の内部表現は、不透明 (OPAQUE) 型データを保管する C 構造
体です。また、各不透明 (OPAQUE) 型には、外部表現 としての文字ベース フォー
マットがあり、これはデータベース サーバによりラージ可変長文字 (LVARCHAR)
型値として受信されます。これは、クライアント アプリケーションのロケールに応
じて、シングルバイト (ASCII および非 ASCII) およびマルチバイト文字列を保持
できます。(ラージ可変長文字 (LVARCHAR) 型外部表現のデータ長は、Dynamic
120
IBM Informix GLS: ユーザーズ ガイド
Server データベースのラージ可変長文字 (LVARCHAR) 型列の最大サイズ 32,739
バイトではなく、オペレーティング システムのみによって制限されます。)
クライアント アプリケーションは、ラージ可変長文字 (LVARCHAR) 型に対してコ
ード セット変換を実行します。ただし、データをクライアント アプリケーション
とデータベース サーバ間で相互に転送する機能は、ロケールを区別する不透明
(OPAQUE) 型のデータをサポートするには不十分です。データ値がデスティネーシ
ョンで正確に取り扱われるかどうかは定かではありません。
input( ) および output( ) サポート関数は、次のように不透明 (opaque) 型を内部
表現から外部表現に、またはその逆に変換します。
v input( ) 関数は、データ型の外部表現を内部表現に変換します。
v output( ) 関数は、データ型の内部表現を外部表現に変換します。
C UDR として書かれた不透明 (OPAQUE) 型サポート関数は、これらの関数がロケ
ールを区別するデータ (次のタスクを含む) を正確に処理する必要があります。
ロケールを区別するタスク
詳細情報
文字データのコード セット変換
111 ページの『コード セット変換と
DataBlade API』
文字データのマルチバイトまたはワイド文字の処 110 ページの『IBM Informix GLS ライブ
理
ラリ』
ロケール特有の日付、数値、または通貨データの 113 ページの『ロケール特有のデータ フ
フォーマット
ォーマット』
各国対応送受信サポート関数
send( ) および receive( ) 関数は、不透明 (opaque) 型のバイナリ転送をサポート
します。すなわち、これらの関数は、次のように不透明 (opaque) 型をクライアント
コンピュータの内部表現からサーバ コンピュータ (これが格納されている) の内部
表現に変換します。
v receive( ) 関数は、クライアント コンピュータの不透明 (opaque) 型の内部表現
をサーバ コンピュータの内部表現に変換します。
v send( ) 関数は、クライアント コンピュータの不透明 (opaque) 型の内部表現を
サーバ コンピュータの内部表現に変換します。
内部表現に文字データが含まれている場合、クライアント アプリケーションは次の
タスクも含めてロケール特有の変換を実行できません。
ロケールを区別するタスク
詳細情報
文字データのコード セット変換
112 ページの『不透明 (OPAQUE) 型サポー
ト関数の文字列』
110 ページの『IBM Informix GLS ライブラ
リ』
文字データのマルチバイトまたはワイド文字
の処理
receive( ) および send( ) サポート関数を C UDR として作成するときは、これ
らの関数が上記のロケールを区別するタスクを正確に処理することを確認する必要
があります。
第 4 章 データベース サーバの機能
121
122
IBM Informix GLS: ユーザーズ ガイド
第 5 章 一般的な SQL API 機能
本章の概要 (E/C のみ) . . . . . . . . . .
IBM Informix クライアント アプリケーションにお
ける GLS のサポート . . . . . . . . . .
クライアント アプリケーションのコード セット
変換 . . . . . . . . . . . . . . .
クライアント アプリケーションが変換するデ
ータ . . . . . . . . . . . . . .
クライアント アプリケーションの国際化 . . . .
国際化. . . . . . . . . . . . . . .
123
123
123
125
126
126
ローカライゼーション . .
GLS ロケールの選択 . .
メッセージの翻訳 . . .
ロケール特有データの処理 . .
文字の処理 . . . . . .
データのフォーマット . .
部分文字の回避. . . . .
文字データのコピー . .
コード セット変換の使用
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
127
128
128
129
129
130
130
131
131
本章の概要 (E/C のみ)
本章では、IBM Informix Client Software Developer's Kit で開発するアプリケーショ
ンに GLS 機能が与える影響について説明します。本章には、次の節があります。
v IBM Informix クライアント アプリケーションにおける GLS のサポート
v クライアント アプリケーションの国際化
v ロケール特有データの処理
IBM Informix クライアント アプリケーションにおける GLS のサポート
データベースに接続するために、ESQL/C クライアント アプリケーションはデータ
ベース サーバから接続を要求します。データベース サーバは、クライアント アプ
リケーションがデータベースにアクセスできるかどうかを検査して、クライアント
とデータベースとの間の接続を確立する必要があります。クライアント アプリケー
ションは次のタスクを実行します。
v クライアントおよびデータベース ロケール情報をデータベース サーバに送信す
る
ESQL/C プログラムは、クライアント アプリケーションが接続を要求すると、こ
の手順を自動的に実行します。
v データベース サーバが生成する接続警告を検査する
この手順を実行するには、ESQL/C プログラムにコードを組み込む必要がありま
す。
クライアント アプリケーションのコード セット変換
本節では、クライアント製品が実行するコード セット変換について要約します。コ
ード セット変換に関する一般情報については、30 ページの『コード セット変換の
実行』を参照してください。
以下の条件がいずれも真の場合、クライアント アプリケーションはクライアントと
データベース コード セット間のコード セット変換を自動的に実行します。
v クライアントのコード セットとデータベース ロケールのコード セットが一致し
ない。
v クライアント コード セットとデータベース コード セット間の変換に、有効な
オブジェクト コード セット変換が存在する。
© Copyright IBM Corp. 1996, 2003
123
クライアント アプリケーションの実行が開始されると、クライアント アプリケー
ションはクライアントとデータベース ロケールの名前を比較して、コード セット
変換を実行するかどうかを決定します。 CLIENT_LOCALE および DB_LOCALE
環境変数が設定されている場合、クライアント アプリケーションは、これらのロケ
ール名を使用してクライアントおよびデータベースのコード セットをそれぞれ決定
します。 CLIENT_LOCALE が設定されていない (また DBNLS が設定されていな
い) 場合、クライアント アプリケーションは、クライアント ロケールがデフォル
ト ロケールであると想定します。 DB_LOCALE が設定されていない (また
DBNLS が設定されていない) 場合、クライアント アプリケーションは、データベ
ース ロケールがクライアント ロケールと同じである (CLIENT_LOCALE 設定の
値) と想定します。
クライアントとデータベースのコード セットが同じである場合、コード セット変
換は不要です。ただし、コード セットが一致しない場合、クライアント アプリケ
ーションは 2 つのコード セットが変換可能 かどうかを判別する必要があります。
クライアントが、関連するコード セット変換ファイルを見つけることができる場
合、2 つのコード セットは変換可能です。これらのコード セット変換ファイル
は、クライアント コンピュータ上になければなりません。
UNIX では、glfiles ユーティリティを使用して、ご使用の IBM Informix 製品がサ
ポートするコード セット変換のリストを取得できます。詳しくは、165 ページの
『glfiles ユーティリティ (UNIX のみ)』を参照してください。 Windows では、デ
ィレクトリ %INFORMIXDIR%¥gls¥cvY を調べて、ご使用の IBM Informix 製品が
サポートする GLS コード セット変換を判別できます。このディレクトリについて
詳しくは、160 ページの『コード セット変換ファイル』を参照してください。
コード セット変換ファイルが存在しない場合、クライアント アプリケーションは
起動時に実行時エラーを生成して互換性のないコード セットであることを示しま
す。コード セット変換ファイルが存在する場合、クライアント アプリケーション
はデータベース サーバとの間でデータを送受信するとき、自動的にコード セット
変換を実行します。
クライアント アプリケーションはコード セット変換を実行するとき、次のように
想定します。
v 処理されるすべてのデータ値はクライアント コード セットで処理される。
v 単一データベース サーバでクライアント アプリケーションがアクセスするすべ
てのデータベースが、同じデータベース ロケール、地域、およびコード セット
を使用する。クライアント アプリケーションは異なるデータベースをオープンす
るとき、データ ベース ロケールを再検査してコード セットが変更されているか
どうかを判別することはありません。
警告: 各接続要求の後、SQLWARN 配列の 8 番目の文字フィールドで、警告フラ
グを検査します。 2 つのデータベース ロケールが一致しない場合、クライ
アント アプリケーションは不正なコード セット変換を実行する場合があり
ます。クライアント アプリケーションは、DB_LOCALE がサポートするコ
ード セットに基づいたコード セット変換の実行を続けます。そのような接
続を続行した場合、交換されるデータのフォーマットを理解する責任をあな
たが負うことになります。
124
IBM Informix GLS: ユーザーズ ガイド
たとえば、ご使用のクライアント アプリケーションが CLIENT_LOCALE を
en_us.1252 に、DB_LOCALE を en_us.8859-1 に設定していると仮定します。ク
ライアント アプリケーションは、Windows コード ページ 1252 (クライアント ロ
ケール) と ISO8859-1 コード セット (データベース ロケール) 間のコード セット
変換を実行する必要があると判別します。次に、クライアント アプリケーション
は、フランス語 fr_fr.8859-1 ロケールでデータベースをオープンします。 2 つの
ロケールの言語および地域が異なるため、データベース サーバは SQLWARN 配列
の 8 番目の文字フィールドを W に設定します。この結果、データベース サーバは
データのローカライズ順序について、データベースのロケール (fr_fr.8859-1) を使
用します。
ただし、ご使用のアプリケーションがこの接続を使用する可能性はあります。フラ
ンス語ローカライズ順序でソートされた各国語文字 (NCHAR) および各国語可変長
文字 (NVARCHAR) 型を、アプリケーションが受信することが許容される場合があ
ります。どちらのデータベース ロケールも、デフォルトの ISO8859-1 コード セッ
トをサポートするため、クライアント アプリケーションが実行するコード セット
変換は依然として有効です。
ただし、アプリケーションが日本語 SJIS (ja_jp.sjis) ロケールのデータベースをオ
ープンする場合、言語、地域、および コード セットが異なるため、データベース
サーバは SQLWARN 警告フラグを設定します。この結果、データベース サーバは
データのローカライズ順序について、ja_jp.sjis ロケールを使用します。
アプリケーションがこの接続を継続しない可能性があります。クライアント アプリ
ケーションは、開始されたとき、Windows コード ページ 1252 と ISO8859-1 コー
ド セットの間でコード セット変換が必要であることを判別しました。クライアン
ト アプリケーションは、このコード セット変換をアプリケーションの終了まで実
行します。
ja_jp.sjis のデータベースをオープンするときは、コード セットが異なるため、ク
ライアント アプリケーションはコード セット変換を正しく実行しません。クライ
アント アプリケーションは、Windows コード ページ 1252 と日本語 SJIS の間で
はなく、Windows コード ページ 1252 と ISO8859-1 間での変換を続けます。この
状態は、データの破損につながる可能性があります。
ヒント: ご使用の ESQL/C クライアント アプリケーションがコード セット変換を
使用する場合、特殊なプログラミング手順が必要な場合があります。詳し
くは、148 ページの『コード セット変換の処理』を参照してください。
クライアント アプリケーションが変換するデータ
2 つのロケールのコード セットが異なるとき、IBM Informix クライアント製品
は、文字データのデータ破損を回避するためにコード セット変換を使用する必要が
あります。コード セット変換は、次の文字データ要素を変換します。
v SQL データ型の値
– 文字 (CHAR) 型、可変長文字 (VARCHAR) 型、各国語文字 (NCHAR) 型、お
よび各国語可変長文字 (NVARCHAR) 型
第 5 章 一般的な SQL API 機能
125
– テキスト (TEXT) 型 (バイト (BYTE) 型は変換されません )
Dynamic Server
– LVARCHAR
– 不透明 (opaque) 型の文字データ (そのサポート関数がコード セット変換を実
行する場合)
Dynamic Server の終り
v ESQL/C 文字型の値 (文字 (char) 型、固定長文字 (fixchar) 型、文字列 (string)
型、および可変長文字 (varchar) 型)
v SQL 文、静的と動的の両方
v SQL 識別子これには、列、表、ビュー、PREPARE 文で処理された文、カーソ
ル、制約、インデックス、トリガ、およびその他のデータベース オブジェクトの
名前が含まれます。識別子に非 ASCII 文字を使用できる SQL オブジェクトのリ
ストについては、63 ページの『識別子内の非 ASCII 文字』を参照してくださ
い。
v SPL テキスト
v コマンド テキスト
v sqlca.sqlerrm フィールドのエラー メッセージ テキスト
クライアント アプリケーションの国際化
クライアント アプリケーションを国際化またはローカライズするために、C 言語イ
ンターフェイスを使用するアプリケーション用のアプリケーション プログラム イ
ンターフェイス (API) である IBM Informix GLS を使用します。詳しくは、3 ペー
ジの『IBM Informix 製品による GLS サポート』 および「IBM Informix: GLS
Programmer’s Manual」を参照してください。
国際化
国際化 はアプリケーションの作成または修正のプロセスで、これにより、コードを
変更または再コンパイルせずに、アプリケーションは正しい GLS ロケールを使用
してさまざまな言語、地域、およびコード セットをサポートできるようになりま
す。
このプロセスにより、IBM Informix データベース アプリケーションは任意の国/地
域別環境および言語に容易に適用できるようになります。データベース アプリケー
ションの国際化は、データベースに対してではなく、データベースにアクセスする
アプリケーションに対して実行します。アプリケーションがアクセスするデータベ
ースのデータは、すでに、エンド ユーザが理解できる言語になっているはずです。
データベース アプリケーションを国際化するには、実行時にアプリケーションが使
用する言語、地域、およびコード セットに関して、次の表にあるタスクが前提事項
を設けないようにアプリケーションを設計します。
126
IBM Informix GLS: ユーザーズ ガイド
アプリケーション
タスク
説明
ユーザ インターフ エンド ユーザに対して表示するテキストをインクルードします。これに
ェイス
は、メニュー、ボタン、プロンプト、ヘルプ テキスト、状況メッセー
ジ、エラー メッセージ、およびグラフィックスが含まれます。
文字
次の処理タスクをインクルードします。
処理
v 文字分類
v 文字ケース変換
v 照合とソート
v 文字対バイトの処理
v 文字列の走査
データ
フォーマット
マニュアル
トレースによる
デバッグ
(IDS、DB API)
v コード セット変換
数値、通貨、日付、および時刻値の、文化的差異に基づいたフォーマッ
トをインクルードします。
ペーパー マニュアル、オンライン マニュアル、および README ファ
イルなどの説明資料をインクルードします。
DataBlade API を使用すると、アプリケーションまたは DataBlade 開発
者は、各国対応トレース メッセージを使用できます。この機能は、シス
テム カタログ表 systracemsgs および systraceclasses を操作する
インライン コードを使用します。詳しくは、「IBM Informix: DataBlade
API Programmer’s Guide」を参照してください。
各国対応アプリケーションは、これらのアプリケーション タスクに関する言語特有
の情報を動的に取得します。そのため、アプリケーションごとに 1 つの実行可能フ
ァイルで複数の言語をサポートできます。
ローカライゼーション
ローカライゼーション とは、製品を特定の国/地域別環境に適応させるプロセスで
す。この処理には、通常、次のタスクが含まれます。
v 文化的差異に基づいたリソース ファイルの作成
v メッセージまたはリソース ファイルの翻訳
v 日付、時刻、および通貨フォーマットの設定
v 製品のユーザ インターフェイスの翻訳
ローカライゼーションには、エンド ユーザ マニュアル、パッケージ、および付随
資料の翻訳と作成が含まれる場合もあります。
データベース アプリケーションをローカライズするには、特定の言語、地域、およ
びコード セット用のデータベース アプリケーションを作成します。ローカライゼ
ーションには、次のタスクが含まれます。
v 目的の言語、地域、およびコード セット用の GLS ロケールが存在することを確
認
v アプリケーションが使用する外部リソースまたはメッセージ ファイルの文字列を
翻訳
重要: 各国対応アプリケーションは、非各国対応アプリケーションよりもかなり容
易にローカライズできます。
第 5 章 一般的な SQL API 機能
127
GLS ロケールの選択
アプリケーションをローカライズするには、アプリケーションがサポートする言
語、地域、およびコード セットの、文化的差異に基づいた情報を提供するロケール
を選択します。ロケールの情報については、15 ページの『GLS ロケールの設定』
を参照してください。
各国対応アプリケーションは、実行時にロケールがどのように設定されるかについ
て想定を行いません。アプリケーション環境が使用するロケールを指定すると、ア
プリケーションはロケール特有の情報について、適切な GLS ロケール ファイルに
アクセスできます。特定の言語、地域、およびコード セットをサポートする GLS
ロケールがある限り、アプリケーションはロケール特有の情報を動的に取得できま
す。
現行処理ロケール (単に現行ロケール と呼ばれることもあります) はアプリケーシ
ョンで現在有効なロケールです。現行処理ロケールは、次のいずれかの環境に基づ
いています。
v クライアント環境
ESQL/C はクライアント アプリケーションを作成します。このため、ESQL/C ア
プリケーションの現行処理ロケールはクライアント ロケールです。
v データベース サーバが現在アクセスしているデータベース
DataBlade API
DataBlade クライアント アプリケーションの現行処理ロケールは、クライアント ロ
ケールです。 DataBlade UDR の現行処理ロケールは、サーバ処理ロケールです。
これは、データベース サーバがクライアント、データベース、およびサーバ ロケ
ールから決定したものです。
DataBlade API の終り
メッセージの翻訳
各国対応アプリケーションは、アプリケーション コード内に言語特有のテキストを
持つべきではありません。言語特有のテキストには、次の種類の文字列がありま
す。
v アプリケーションが表示する、または書き込む文字列
例としては、エラー メッセージ、情報メッセージ、メニュー項目、およびボタン
ラベルがあります。
v アプリケーションが内部的に使用する文字列
例としては、定数、ファイル名、およびリテラル文字または文字列があります。
v エンド ユーザによって入力される文字列
例としては、yes および no による応答があります。
ヒント: メッセージ ファイルに SQL キーワード (SELECT、WHERE、INSERT、
および CREATE) を書き込む必要はありません。さらに、言語キーワード
(if、switch、for、および char など) もメッセージ ファイルに書き込む必
要はありません。
128
IBM Informix GLS: ユーザーズ ガイド
各国対応アプリケーションでは、これらの文字列はリソース ファイル またはメッ
セージ ファイル と呼ばれる外部ファイルへの参照となります。データベース アプ
リケーションのこれらの文字列をローカライズするには、次のタスクを実行する必
要があります。
v 外部ファイル内のすべての文字列を翻訳する。
新しい外部ファイルは、アプリケーションが使用する文字列の翻訳済みバージョ
ンを含みます。
v DBLANG 環境変数を、IBM Informix 製品が使用する翻訳済みメッセージ ファ
イルのある INFORMIXDIR 内のサブディレクトリに設定する。
INFORMIXDIR 環境変数は、IBM Informix 製品がインストールされている場所を
示します。 rgetmsg( ) および rgetlmsg( ) 関数を使用して IBM Informix 製品
のメッセージを取得できます。これらの関数について詳しくは、「IBM Informix:
ESQL/C Programmer’s Manual」を参照してください。
ロケール特有データの処理
各 IBM Informix SQL API 製品には、埋込み SQL 文およびプリプロセッサ文を持
つ ESQL/C ソース ファイルを処理するプロセッサがあります。 ESQL/C プロセッ
サである esql は、C ソース ファイルを処理します。
ESQL/C 製品のプロセッサは、次の状態のオペレーティング システム ファイルを
使用します。
v これらのプロセッサは、ESQL/C ソース ファイルを処理するとき、言語特有のソ
ース ファイル (.c) を作成します。
ESQL/C プロセッサは、クライアント コード セット (クライアント ロケールが
指定するもの) を使用して、これらの言語特有ファイルのファイル名を生成しま
す。
v これらのプロセッサは、ユーザが作成する ESQL/C ソース ファイル (.ec) を読
み取ります。
ESQL/C プロセッサはクライアント コードを使用して、これらの ESQL/C ソー
ス ファイルの内容を解釈します。
CLIENT_LOCALE 環境変数を使用してクライアント ロケールを指定します。
文字の処理
GLS ロケールは、シングルバイト文字とマルチバイト文字を含むことができる特定
のコード セットをサポートします。ご使用のアプリケーションは、シングルバイト
文字しか処理しないとき、バッファ内のバイト数はバッファが保持できる文字数に
等しいという前提で、文字列処理タスクを実行できます。シングルバイト コード
セットについては、C コンパイラが提供する、配列割当てとアクセス権に関する組
込みスケーリングに依存できます。
ただし、アプリケーションがマルチバイト文字を処理する場合、バッファ内のバイ
ト数とバッファ内の文字数が等しいと想定することはできません。各文字のバイト
数が変わる可能性があるため、C コンパイラに依存して文字処理タスク (マルチバ
イト文字列をトラバースしたり、マルチバイト文字列用にメモリ内に十分な領域を
割り当てる、など) を実行することができなくなります。
第 5 章 一般的な SQL API 機能
129
IBM Informix GLS ライブラリの関数を使用して、文字処理タスクの国際化の実行
法をアプリケーションと通信できます。
文字処理タスクには次のものがあります。
v 文字列の走査
v 文字列処理
v 文字分類
v 大文字小文字変換
v 文字の比較およびソート
これらの関数の情報および構文について詳しくは、「IBM Informix: GLS
Programmer’s Manual」を参照してください。
データのフォーマット
アプリケーションを国際化するときは、ロケール特有データのフォーマットの処理
方法を考慮します。エンド ユーザに表示される数値、通貨、および日時データのフ
ォーマットは、ロケール特有です。 GLS ロケール ファイルは、次の表が示すよう
に、以下のデータ型について、それぞれロケール特有のフォーマットを定義しま
す。
データの型
ロケール ファイルのカテゴリ
10 進数 (NUMERIC) 型
通貨 (MONETARY) 型
日付 (DATE) 型および時刻 (TIME) 型
NUMERIC
MONETARY
TIME
IBM Informix GLS ライブラリには、ロケール特有データに対して次のタスクを実
行できるようにする関数があります。
v 変換 は、ロケール特有のフォーマットを含む文字列をその値の内部表記に変更し
ます。
通常は、ロケール特有文字列に対して変換を実行して、それをプログラム変数ま
たはデータベース列に格納するための準備を行います。
v フォーマット は、値の内部表記をロケール特有文字列に変更します。
通常は、ロケール特有文字列に対してフォーマットを実行して、値の内部表記を
エンド ユーザに表示するために準備します。
これらの関数の情報および構文について詳しくは、「IBM Informix: GLS
Programmer’s Manual」を参照してください。
部分文字の回避
マルチバイト コード セットをサポートするロケールを使用するとき、部分文字が
生成されないようにするためにバッファを十分な大きさに定義する必要がありま
す。次の場合に、考慮が必要です。
v あるバッファから別のバッファにデータをコピーするとき
v コード セット変換が行われる可能性のある文字データがあるとき
130
IBM Informix GLS: ユーザーズ ガイド
部分文字の詳細な例については、78 ページの『列サブ文字列内の部分文字』を参照
してください。
文字データのコピー
データをコピーするとき、バッファのサイズがデータを保持するために十分である
ことを確認する必要があります。デスティネーション バッファのサイズがソース
バッファ内のマルチバイト データ用として不十分な場合、データがコピー中に切り
捨てられる可能性があります。
たとえば、ESQL/C コードがマルチバイト データ A1A2A3B1B2B3 を buf1 から
buf2 にコピーする場合は、次のようにします。
char buf1[20], buf2[5];
...
stcopy("A1A2A3B1B2B3", buf1);
...
stcopy(buf1, buf2);
buf2 はマルチバイト文字列を保持するのに十分な大きさがないため、コピーでは文
字列が A1A2A3B1B2 に切り捨てられます。この状態を回避するには、ESQL/C プ
ログラムがコピーを実行する前に、マルチバイト文字列がバッファーに合っている
ことを確認してください。
コード セット変換の使用
データベースからの文字データを保持するための文字バッファがある場合、このバ
ッファが十分に大きく、アプリケーションがコード セット変換を使用する場合に行
われる可能性がある拡張に対応できることを確認する必要があります。クライアン
トとデータベースのロケールが異なっていて、かつ変換可能な場合、アプリケーシ
ョンはこの値を拡張する必要がある場合があります。詳しくは、30 ページの『コー
ド セット変換の実行』を参照してください。
たとえば、fname 列が CHAR(8) と定義されている場合、次の ESQL/C コードは
8 バイトの文字値を選択して 10 バイトの buf1 ホスト変数に入れます。
char buf1[10];
...
EXEC SQL select fname into :buf1 from tab1
where cust_num = 29;
データベースからの 8 バイトの文字値を保持できるように 10 バイトのバッファが
適当と考えるかもしれません。ところが、クライアント アプリケーションがこの値
を 12 バイトに拡張する場合、値は buf1 バッファに適合しなくなります。 fname
値は buf1 に合わせて切り捨てられ、fname にマルチバイト文字が含まれる場合は
部分文字が作成される可能性があります。詳しくは、78 ページの『列サブ文字列内
の部分文字』を参照してください。
この状態を回避するには、クライアントとデータベース間のコード セットの変換で
最大文字拡張 (4 バイト) を処理できるようにバッファを定義します。
第 5 章 一般的な SQL API 機能
131
132
IBM Informix GLS: ユーザーズ ガイド
第 6 章 IBM Informix ESQL/C 機能
本章の概要 (E/C のみ) . . . . . . . . .
非 ASCII 文字の処理 . . . . . . . . . .
ホスト変数での非 ASCII 文字の使用 . . .
非 ASCII ファイル名の生成 . . . . . .
ESQL/C ソース ファイルでの非 ASCII 文字の
使用 . . . . . . . . . . . . . .
非 ASCII 文字のフィルタ処理 . . . . .
ESQL/C フィルタの起動 . . . . . . .
ロケールを区別するデータの変数の定義 . . .
拡張 ESQL/C ライブラリ関数の使用 . . . .
DATE フォーマット関数 . . . . . . .
GL_DATE サポート . . . . . . . .
DBDATE 拡張機能 . . . . . . . .
拡張 DATE フォーマット文字列 . . . .
日付エンド ユーザ フォーマットの優先順位
DATETIME フォーマット関数 . . . . . .
GL_DATETIME サポート . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
133
134
134
135
136
136
137
139
140
140
140
140
141
142
. 142
. 143
DBTIME サポート. . . . . . . . . .
拡張 DATETIME フォーマット文字列 . . .
DATETIME エンド ユーザ フォーマットの優
先順位. . . . . . . . . . . . . .
数値フォーマット関数 . . . . . . . . .
マルチバイト文字のサポート . . . . . .
ロケール特有の数値フォーマット. . . . .
通貨記号フォーマット . . . . . . . .
DBMONEY 拡張機能 . . . . . . . . .
文字列関数 . . . . . . . . . . . . .
GLS 特有のエラー メッセージ . . . . . .
コード セット変換の処理 . . . . . . . . .
テキスト (TEXT) 型値の書込み . . . . . .
DESCRIBE 文の使用 . . . . . . . . . .
sqldata フィールド. . . . . . . . . .
sqlname フィールド . . . . . . . . .
TRIM 関数の使用 . . . . . . . . . . . .
143
143
143
144
144
144
146
147
148
148
148
149
150
150
151
151
本章の概要 (E/C のみ)
本章では、GLS 機能が SQL アプリケーション プログラム インターフェイス
(API) である ESQL/C にどのように影響を及ぼすかについて説明します。本章に
は、次の節があります。
v 134 ページの『非 ASCII 文字の処理』
v 139 ページの『ロケールを区別するデータの変数の定義』
v 140 ページの『拡張 ESQL/C ライブラリ関数の使用』
v 148 ページの『コード セット変換の処理』
v 151 ページの『TRIM 関数の使用』
本章では、ESQL/C に特定の GLS 情報を取り上げています。 ESQL/C の GLS 補
足説明については、 123 ページの『第 5 章 一般的な SQL API 機能』を参照して
ください。
ヒント: GLS 機能に固有でない機能については、「IBM Informix: ESQL/C
Programmer’s Manual」を参照してください。IBM Informix GLS ライブラ
リ、すなわち各国対応アプリケーションの開発を可能にする、C 言語関
数、プロシジャ、およびマクロの集合の説明については、「IBM Informix:
GLS Programmer’s Manual」を参照してください。Dynamic Server と共に
提供される C 言語 API である DataBlade API の情報については、
「IBM Informix: DataBlade API Programmer’s Guide」を参照してくださ
い。
© Copyright IBM Corp. 1996, 2003
133
非 ASCII 文字の処理
ESQL/C プロセッサは、ESQL/C ソース ファイルで使用するために、クライアント
ロケールからコード セットを取得します。 ESQL/C ソース ファイル内では、次の
プログラム オブジェクトのために非 ASCII 文字を使用できます。
v ESQL/C コメント
v データベース、表、列、ビュー、制約、PREPARE 文で処理された文、およびカ
ーソルなど、SQL 識別子の名前
詳しくは、62 ページの『データベース オブジェクトの命名』を参照してくださ
い。
v ESQL/C ホスト変数および標識変数名
たとえば、ESQL/C プログラムでは、マルチバイト文字を次のように使用できま
す。
char A1A2[20], B1B2[20];
...
EXEC SQL select col1, col2 into :A1A2 :B1B2;
ESQL/C ホスト変数について詳しくは、134 ページの『ホスト変数での非 ASCII
文字の使用』を参照してください。
v リテラル文字列
たとえば、ESQL/C プログラムでは、マルチバイト文字を次のように使用できま
す。
EXEC SQL insert into tbl1 (nchr1) values ’A1A2B1B2’;
Dynamic Server
v ファイル名とパス名 (ご使用のオペレーティング システムがファイル名とパス名
にマルチバイト文字をサポートする場合)。
Dynamic Server の終り
ヒント: C 言語コンパイラによっては、マルチバイト文字を、リテラルまたはコメ
ントのみでサポートします。このようなコンパイラでは、ESQL/C プロセ
ッサがマルチバイト フィルタを呼び出せるように、ESQLMF および
CC8BITLEVEL 環境変数を設定しなければならない場合があります。詳し
くは、135 ページの『非 ASCII ファイル名の生成』を参照してください。
ESQL/C ソース ファイルで非 ASCII 文字を使用するには、クライアント ロケール
がそれらの文字をサポートする必要があります。非 ASCII 文字の使用の詳細につい
ては、63 ページの『識別子内の非 ASCII 文字』を参照してください。
ホスト変数での非 ASCII 文字の使用
ESQL/C を使用すると、次の条件が真のとき、非 ASCII 文字をホスト変数内で使用
できます。
v クライアント ロケールは、ホスト変数名に非 ASCII 文字が使用されているコー
ド セットをサポートします。 ESQL/C プログラムをプリプロセッサにかけた
134
IBM Informix GLS: ユーザーズ ガイド
り、コンパイルする前に、クライアント ロケールを正しく設定する必要がありま
す。詳しくは、15 ページの『GLS ロケールの設定』を参照してください。
v C コンパイラは、ソース コードと同じ非 ASCII 文字のコンパイルをサポートし
ます。
C ソース コードでの非 ASCII 文字の使用を、 C コンパイラがサポートするこ
とを確認する必要があります。ご使用の C コンパイラが非 ASCII 文字に提供す
るサポートを示す方法については、137 ページの『ESQL/C フィルタの起動』を
参照してください。
さらに ESQL/C アプリケーションは、コメントと SQL 識別子内の非 ASCII 文字
もサポートします。詳しくは、63 ページの『識別子内の非 ASCII 文字』を参照し
てください。
次のコードは、ホスト変数名内に非 ASCII 文字を含む整数ホスト変数を宣言してか
ら、シリアル値をこの値に選択します。
/*
This code fragment declares an integer host variable
"hôte_ent", which contains a non-ASCII character in the
name, and selects a serial value (code number in the
"numéro" column of the "abonnés" table) into it.
*/
EXEC SQL BEGIN DECLARE SECTION;
int hôte_ent;
...
EXEC SQL END DECLARE SECTION;
...
EXEC SQL select numéro into :hôte_ent from abonnés
where nom = ’Ötker’;
クライアント ロケールが非 ASCII 文字をサポートする場合は、これらの文字を使
用して標識変数を次の例のように定義できます。
EXEC SQL
char
short
EXEC SQL
BEGIN DECLARE SECTION;
hôtevar[30];
ind_de_hôtevar;
END DECLARE SECTION;
その結果、次の例に示すように、これらの非 ASCII 名を持つ標識変数にアクセスで
きます。
:hôtevar INDICATOR :hôtevarind
:hôtevar
$hôtevar
:hôtevar
$hôtevar
ind
ind
非 ASCII ファイル名の生成
ESQL/C ソース ファイルが処理されると、ESQL/C プロセッサは、ソース ファイ
ルに対応する中間ファイルを生成します。非 ASCII 文字 (8 バイトおよびマルチバ
イト文字) をこれらのソース ファイル名に使用する場合、非 ASCII 文字を含むフ
ァイル名を生成するための、ESQL/C プロセッサの能力に次の制限が影響を及ぼし
ます。
第 6 章 IBM Informix ESQL/C 機能
135
v ESQL/C プロセッサは、オペレーティング システムが 8 ビット透過かどうかを
認識している必要があります。
詳しくは、45 ページの『GLS8BITFSYS』を参照してください。
v クライアント ロケールのコード セット (クライアント コード セット) は、
ESQL/C ソース ファイル名に使用される非 ASCII 文字をサポートする必要があ
ります。
v ご使用の C コンパイラは、ESQL/C ソース ファイルのファイル名が使用する非
ASCII 文字をサポートします。
ご使用の C コンパイラが非 ASCII 文字をサポートしない場合は、
CC8BITLEVEL 環境変数を、ソース ファイルにマルチバイト文字が含まれると
きの予備手段として使用できます。詳しくは、135 ページの『非 ASCII ファイル
名の生成』を参照してください。
ESQL/C ソース ファイルでの非 ASCII 文字の使用
ESQL/C プロセッサの esql は、クライアント コード セット (クライアント ロケ
ールのコード セット) で書き込まれた C ソース プログラムを受け入れます。
ESQL/C プリプロセッサ esqlc は、クライアント コード セットが非 ASCII 文字
を定義している限り、ESQL/C ソース コード内の非 ASCII 文字 (8 バイトおよび
マルチバイト) を適用します。
ただし、ご使用の C コンパイラの機能によって、非 ASCII 文字を ESQL/C ソース
ファイル内で使用する能力が制限される可能性があります。 C コンパイラが非
ASCII 文字を完全にサポートしない場合は、これらの文字を含む ESQL/C プログラ
ムを正常にコンパイルできない可能性があります。 C コンパイラの共通の非 ASCII
制限のサポートを提供するために、ESQL/C は、esqlmf と呼ばれる ESQL/C フィ
ルタを提供します。
本節では、ESQL/C フィルタについて次の情報を提供します。
v ESQL/C フィルタが非 ASCII 文字を処理する方法
v ESQL/C フィルタを起動する方法
非 ASCII 文字のフィルタ処理
ESQL/C ソース プログラムのコンパイル プロセスの一部として、ESQL/C プロセ
ッサは C コンパイラを呼び出します。非 ASCII 文字を含む ESQL/C ソース コー
ドを開発する場合は、C コンパイラによるこのような文字の処理方法が、コンパイ
ル プロセスの正常終了に影響を及ぼす可能性があります。特に、次の状態が
ESQL/C プログラムのコンパイルに影響を及ぼす可能性があります。
v マルチバイト文字が C 言語トークンを含む可能性がある。
マルチバイト文字のコンポーネントが、パーセント ( % )、カンマ ( , )、円記号
( ¥ )、および二重引用符 ( ″ ) 文字などのいくつかのシングルバイト文字と区別
されない可能性があります。このような文字が引用符付きストリングに含まれて
いる場合、C コンパイラはそれらを C 言語トークンと解釈します。これは、コ
ンパイル エラーまたは文字の脱落の原因となる可能性があります。
v C コンパイラが 8 ビット透過でない可能性がある。
コード セットが非 ASCII 文字 (コード値が 127 より大きい) を含む場合、C コ
ンパイラは文字を解釈するために 8 ビット透過でなければなりません。 8 ビッ
136
IBM Informix GLS: ユーザーズ ガイド
ト透過になるには、コンパイラはコード値の一部として 8 ビットを読み取る必要
があります。すなわち、この 8 ビットの意味を無視したり、これについて独自の
解釈を行ってはいけません。
非 ASCII 文字をフィルタ処理するために、ESQL/C フィルタは文字の各バイトを 8
進数等価に変換します。たとえば、マルチバイト文字 A1A2A3 の 8 進数表記が
¥160¥042¥244 で、stcopy() 呼出しに使用されているとします。
stcopy("A1A2A3", dest);
esqlmf が ESQL/C ソース ファイルをフィルタ処理した後は、C コンパイラでは
この行が次のように見えます。
stcopy("¥160¥042¥244", dest); /* correct interpretation */
C 言語トークン状態を処理するために、 C コンパイラが A2 バイト (8 進数 ¥042)
を ASCII 二重引用符として解釈すること、および、次のように行が間違って構文解
析されることをフィルタによって防ぎます。
stcopy("A1"A3, dest); /* incorrect interpretation of A2 */
C コンパイラは、前述の行に対してエラーを生成します。これは、行の文字列引数
が誤って終了しているためです。さらに、esqlmf ユーティリティは A3 バイトの
8 番目のビットが C コンパイラによって無視されることを防ぐため、8 ビット透過
状態も処理します。コンパイラが 8 番目のビットを無視する場合は、A3 (8 進数
¥244) を誤って 8 進数 ¥044 と解釈します。
ESQL/C フィルタの起動
図 5 は、非 ASCII 文字を含む ESQL/C プログラムがどのように実行可能プログラ
ムになるかを示します。
図 5. 非 ASCII ソース プログラムからの ESQL/C 実行可能プログラムの作成
esql コマンドは、自動的に ESQL/C フィルタ、esqlmf を呼び出して非 ASCII 文
字を処理できます。次の環境変数を設定するとき、esqlmf を起動する方法を esql
に次のように指示します。
v ESQLMF 環境変数は、esql が ESQL/C フィルタを自動的に呼び出すかどうかを
指示します。
第 6 章 IBM Informix ESQL/C 機能
137
ESQLMF を 1 に設定するすると、esql は esqlmf を、ESQL/C プリプロセッ
サの後、C コンパイラの前に自動的に呼び出します。
v CC8BITLEVEL 環境変数は、esqlmf がフィルタ処理する、ESQL/C ソース ファ
イル内の非 ASCII 文字を指示します。
非 ASCII 文字を処理するための、C コンパイラの能力を指示するように
CC8BITLEVEL を設定します。
esqlmf フィルタが ESQL/C ソース ファイルをフィルタ処理する方法は、
CC8BITLEVEL 環境変数の値に応じて異なります。 CC8BITLEVEL のそれぞれの
値について、次の表に、ESQL/C プロセッサを ESQL/C ソース ファイル上で起動
する esqlmf コマンドを示します。
CC8BITLEVEL
esqlmf アクション
0
リテラル文字列とコメント 内のすべての非 ASCII 文字を 8 進定数に変換
します。
リテラル文字列内の非 ASCII 文字を 8 進定数に変換します。ただし、コ
メント内の非 ASCII は変換されません。
リテラル文字列内の非 ASCII 文字を 8 進定数に変換し、非 ASCII 文字内
のすべてのバイトに、8 番目のビット セットがあるようにします。
esqlmf を起動しません。
1
2
3
重要: CC8BITLEVEL が指定できる esqlmf コマンドを起動するには、ESQLMF 環
境変数を 1 に設定する必要があります。
CC8BITLEVEL を 0、1、または 2 に設定すると、ESQL/C プロセッサは次の手順
を実行します。
1. ESQL/C プリプロセッサを使用して、埋込み言語文 (source.ec) を C 言語ソー
ス コード (source.c) に変換します。
2. プリプロセス ファイル (source.c 内の非 ASCII 文字を、ESQL/C フィルタ
esqlmf (ESQLMF 環境変数が 1 の場合) を使用してフィルタ処理します。
esqlmf はフィルタ処理を開始する前に、.c_ ファイル拡張子 (source.c_) を持
つ C ソース ファイル (source.c) のコピーを作成します。
3. フィルタ済み C ソース ファイル (source.c) を C コンパイラを使用してコン
パイルし、オブジェクト ファイル (source.o) を作成します。
4. オブジェクト ファイルを ESQL/C ライブラリと独自のライブラリにリンクして
実行可能プログラムを作成します。
CC8BITLEVEL を 3 に設定すると、ESQL/C プロセッサは前述のリストの手順 2
を省略します。
CC8BITLEVEL を設定しない場合、esql はリテラル文字列とコマンド内の非
ASCII 文字を変換します。 CC8BITLEVEL の値を修正して C コンパイラの機能を
反映することができます。
138
IBM Informix GLS: ユーザーズ ガイド
ロケールを区別するデータの変数の定義
SQL データ型の各国語文字 (NCHAR) 型および各国語可変長文字 (NVARCHAR)
型は、ロケール特有のデータをサポートします。これは、データベース サーバがこ
れらの型のデータ文字列をソートする場合に、コード セット順序ではなく、(ロケ
ールがローカライズ照合を定義する場合) ローカライズ照合を使用するという意味
からです。各国語文字 (NCHAR) 型と各国語可変長文字 (NVARCHAR) 型について
詳しくは、68 ページの『文字データ型の使用』を参照してください。
ESQL/C は、文字データを含むホスト変数用に、事前定義データ型の文字列
(string) 型、固定長文字 (fixchar) 型、および可変長文字 (varchar) 型をサポート
します。それに加えて、C 文字 (char) 型をホスト変数に使用できます。これらの
4 つのホスト変数データ型を各国語文字 (NCHAR) 型データと各国語可変長文字
(NVARCHAR) 型データに使用できます。
ESQL/C プログラムが文字ホスト変数への選択、または文字ホスト変数からの読取
りを行うとき、このプログラムは各国語文字 (NCHAR) 型と各国語可変長文字
(NVARCHAR) 型の列にアクセスできます。次のコードは、char ホスト変数の
hôte を宣言し、次に各国語文字 (NCHAR) 型データを hôte 変数に選択します。
/*
This code fragment declares a char host variable "hôte",
which contains a non-ASCII character in the name, and
selects NCHAR data (non-ASCII names in the "nom" column
of the "abonnés" table) into it.
*/
EXEC SQL BEGIN DECLARE SECTION;
char hôte[10];
...
EXEC SQL END DECLARE SECTION;
...
EXEC SQL select nom into :hôte from abonnés
where numéro > 13601;
各国語文字 (NCHAR) 型と各国語可変長文字 (NVARCHAR) 型の ESQL/C ホスト
変数を宣言するときは、次のように、宣言される変数のサイズと保持できる文字デ
ータの量の関係に注意してください。
v ご使用のロケールがシングルバイト コード セットをサポートする場合、各国語
文字 (NCHAR) 型と各国語可変長文字 (NVARCHAR) 型の変数のサイズによっ
て、ロケールが保持できる文字数が決定されます。
v ご使用のロケールがマルチバイト コード セットをサポートする場合、1 文字に
つき 1 バイトの関係を想定できなくなります。
この場合は、ESQL/C ホスト変数を、データベースから受信すると予想される文
字数を供給できるだけ十分な大きさに宣言する必要があります。
詳しくは、68 ページの『各国語文字 (NCHAR) 型』と 70 ページの『各国語可変長
文字 (NVARCHAR) 型』を参照してください。
文字ホスト変数 (文字型 (char) 型、固定長文字 (fixchar) 型、文字列 (string)
型、または可変長文字 (varchar) 型) が保持する値を、各国語文字 (NCHAR) 型ま
たは各国語可変長文字 (NVARCHAR) 型の列に挿入できます。
第 6 章 IBM Informix ESQL/C 機能
139
拡張 ESQL/C ライブラリ関数の使用
IBM Informix SQL API 製品は、ESQL/C ライブラリ関数に対するロケール特有の
エンハンスメントをサポートします。これらの ESQL/C ライブラリ関数は、次のカ
テゴリに分かれます。
v DATE フォーマット関数
v DATETIME フォーマット関数
v 数値フォーマット関数
v 文字列関数
それに加え、本節では、これらの ESQL/C 関数が作成する可能性のある GLS 関連
エラー メッセージについて説明します。
DATE フォーマット関数
ESQL/C DATE フォーマット関数は、次のとおりです。
v rdatestr( )
v rstrdate( )
v rdefmtdate( )
v rfmtdate( )
これらの関数は、元号ベース日付 (DATE) 型値をフォーマットするための次の拡張
機能をサポートします。
v GL_DATE 環境変数のサポート
v DBDATE 環境変数の元号ベース日付フォーマット
v ESQL/CDATE フォーマット関数用の日付フォーマット文字列に対する拡張機能
v 日付エンド ユーザ フォーマットの優先順位のサポート
本節では、ESQL/C DATE フォーマット関数の、ロケール特有の動作について説明
します。詳しくは、「IBM Informix: ESQL/C Programmer’s Manual」を参照してく
ださい。
GL_DATE サポート
GL_DATE 設定は、上記の ESQL/C DATE フォーマット関数が生成する結果に影響
を与えることができます。 GL_DATE が指定するエンド ユーザ フォーマットは、
クライアント ロケールが定義するデータ エンド ユーザ フォーマットを上書きし
ます。詳しくは、142 ページの『日付エンド ユーザ フォーマットの優先順位』を
参照してください。
DBDATE 拡張機能
DBDATE 環境変数用の拡張元号ベース日付構文をサポートする ESQL/C DATE フ
ォーマット関数は、次のとおりです。
v rdatestr( )
v rstrdate( )
140
IBM Informix GLS: ユーザーズ ガイド
DBDATE を元号ベースのフォーマットのいずれかに設定すると、これらの関数は、
元号ベース日付を使用して日付文字列と内部日付 (DATE) 型値との間で変換を行い
ます。次の ESQL/C の例では、rdatestr() ライブラリ関数の呼出しを示します。
char str[100];
long jdate;
...
rdatestr(jdate, str);
printf("%s¥n", str);
DBDATE を GY2MD/ に設定し、CLIENT_LOCALE を日本語 SJIS ロケール
(ja_jp.sjis) に設定した場合、前述のコードは日付 08/18/1990 として次の値を出力
します。
H02/08/18
重要: IBM Informix 製品は、英字元号仕様の未定義文字をエラーとして扱います。
DBDATE を元号ベース日付フォーマット (中国語と日本語ロケールに固有) に設定
する場合は、CLIENT_LOCALE 環境変数を、元号ベース日付をサポートするロケー
ルに設定するようにしてください。
拡張 DATE フォーマット文字列
拡張 DATE フォーマット文字列をサポートする、ESQL/C DATE フォーマット関数
は、次のとおりです。
v rdefmtdate( )
v rfmtdate( )
次の表に、上記の ESQL/C 関数が GLS ロケールを使用してサポートする、拡張フ
ォーマット文字列を示します。これらの拡張フォーマット文字列は、元号を 2 桁の
年オフセットでフォーマットします。
元号
フォーマット 使用される元号
完全な元号: 2 桁の年オフセットが続く基 eyy
本年 (期間) の完全名。 ″%EC%02.2Ey″ の
GL_DATE エンド ユーザ フォーマットと
同様。
(CLIENT_LOCALE が指示する)
クライアント ロケールが定義す
る元号
省略元号: 2 桁の年オフセットが続く基本 gyy
年 (期間) の省略名 ″%Eg%02.2Ey″ の
GL_DATE エンド ユーザ フォーマットと
同様。
(CLIENT_LOCALE が指示する)
クライアント ロケールが定義す
る元号
次の表に、元号ベース日付の拡張フォーマット文字列を示します。下の例は、クラ
イアント ロケールが日本語 SJIS (ja_jp.sjis) であると想定しています。
説明
フォーマット例
1990 年 10 月 5 日の出力例:
省略元号
gyymmdd
gyy.mm.dd
eyymmdd
eyy-mm-dd
eyyB1B2mmB1B2ddB1B2
H021005
H02.10.05
A1A2021005
A1A202-10-05
A1A202B1B210B1B205B1B2
完全な元号
第 6 章 IBM Informix ESQL/C 機能
141
次の ESQL/C コードには、rdefmtdate() ライブラリ関数の呼出しが含まれていま
す。
char fmt_str[100];
char in_str[100];
long jdate;
...
rdatestr("10/05/95", &jdate);
stcopy("gyy/mm/dd", fmt_str);
rdefmtdate(&jdate, fmt_str, in_str);
printf("Abbreviated Era Year: %s¥n", in_str);
stcopy("eyymmdd", fmt_str);
rdefmtdate(&jdate, fmt_str, in_str);
printf("Full Era Year: %s¥n", in_str);
CLIENT_LOCALE が日本語 SJIS (ja_jp.sjis) ロケールを指定すると、コードは次
の出力を表示します。
Abbreviated Era Year: H07/10/05
Full Era Year: H021005
日付エンド ユーザ フォーマットの優先順位
ESQL/C DATE フォーマット関数は、次の優先順位を使用して日付 (DATE) 型列に
ある値のエンド ユーザ フォーマットを決定します。
1. DBDATE が指定するエンド ユーザ フォーマット (DBDATE が設定されている
場合)
2. GL_DATE が指定するエンド ユーザ フォーマット (GL_DATE が設定されてい
る場合)
3. クライアント ロケールが指定するエンド ユーザ日付フォーマット
(CLIENT_LOCALE が設定されている場合)
4. デフォルト ロケールからのエンド ユーザ日付フォーマット: %m %d %iY
DBDATE、GL_DATE、および CLIENT_LOCALE の優先順位について詳しくは、
35 ページの『日時の優先順位』を参照してください。
ヒント: IBM Informix 製品は、以前の製品との互換性を目的として DBDATE をサ
ポートします。新しいクライアント アプリケーション用には、GL_DATE
環境変数を使用することをお勧めします。
DATETIME フォーマット関数
ESQL/C DATETIME フォーマット関数は、次のとおりです。
v dtcvfmtasc( )
v dttofmtasc( )
これらの関数は、元号ベースの日時 (DATETIME) 型値をフォーマットするための次
の拡張機能をサポートします。
v GL_DATETIME 環境変数のサポート
v DBTIME 環境変数を元号ベースの日時でサポート
v ESQL/C DATETIME フォーマット関数用の日時フォーマット文字列に対する拡張
機能
v DATETIME エンド ユーザ フォーマットの優先順位のサポート
142
IBM Informix GLS: ユーザーズ ガイド
本節では、ESQL/C DATETIME フォーマット関数のロケール特有の動作について説
明します。 ESQL/C DATETIME フォーマット関数の一般情報については、
「IBM Informix: ESQL/C Programmer’s Manual」を参照してください。
GL_DATETIME サポート
GL_DATETIME 設定は、上記の ESQL/C DATETIME フォーマット関数が生成する
結果に影響を及ぼすことができます。 GL_DATETIME が指定するエンド ユーザ
フォーマットは、クライアント ロケールが定義する日時フォーマットを上書きしま
す。詳しくは、143 ページの『DATETIME エンド ユーザ フォーマットの優先順
位』を参照してください。
DBTIME サポート
ESQL/C DATETIME フォーマット関数は、DBTIME 環境変数用の拡張元号ベース
日時フォーマット文字列をサポートします。 DBTIME を元号ベースのフォーマッ
トに設定すると、これらの関数はリテラル日時 (DATETIME) 型文字列と内部日時
(DATETIME) 型値との間で変換を行います。
ヒント: IBM Informix 製品は、以前の製品との互換性を目的として DBTIME をサ
ポートします。新しいアプリケーション用には、GL_DATETIME 環境変数
を使用することをお勧めします。
DBTIME を元号ベースの DATETIME フォーマット (中国語と日本語ロケールに固
有) に設定する場合は、CLIENT_LOCALE 環境変数を、元号ベースの日時をサポー
トするロケールに設定するようにしてください。
拡張 DATETIME フォーマット文字列
次の表に、ESQL/C DATETIME フォーマット関数がサポートする拡張フォーマット
文字列を示します。
フォーマット
説明
1991 年 12 月 27 日の出力
%y %m %dc1
%Y %m %dc1
%y %m %dj1
%Y %m %dj1
%y %m %dj2
%Y %m %dj2
台湾の民国日付
台湾の民国日付
省略元号記号を使用した日本元号
省略元号記号を使用した日本元号
完全な元号記号を使用した日本元号
完全な元号記号を使用した日本元号
80 12 27
0080 12 27
H03 12 27
H0003 12 27
A1A2B1B203 12 27
A1A2B1B20003 12 27
前述の表のフォーマットに加え、これらの ESQL/C DATETIME フォーマット関数
は、GLS 日時指定子をサポートします。これらの指定子のリストについては、48
ページの『GL_DATE』と 53 ページの『GL_DATETIME』を参照してください。
DATETIME エンド ユーザ フォーマットの優先順位
ESQL/CDATETIME フォーマット関数は、次の優先順位を使用して日時
(DATETIME) 型列にある値のエンド ユーザ フォーマットを決定します。
1. DBTIME が指定するエンド ユーザ フォーマット (DBTIME が設定されている
場合)
2. GL_DATETIME が指定するエンド ユーザ フォーマット (GL_DATETIME が設
定されている場合)
第 6 章 IBM Informix ESQL/C 機能
143
3. クライアント ロケールが指定する日時エンド ユーザ フォーマット
(CLIENT_LOCALE が設定されている場合)
4. デフォルト ロケールからの日時エンド ユーザ フォーマット: %iY-%m-%d
%H:%M:%S
DBDATE、GL_DATE、および CLIENT_LOCALE の優先順位について詳しくは、
35 ページの『日時の優先順位』を参照してください。
数値フォーマット関数
ESQL/C 数値フォーマット関数は、次のとおりです。
v rfmtdec( )
v rfmtdouble( )
v rfmtlong( )
これらの関数は、次の拡張機能を数値フォーマット用にサポートします。
v フォーマット文字列内のマルチバイト文字のサポート
v 数値に対するロケール特有のフォーマット
v 通貨記号の書式制御文字
v DBMONEY 環境変数のサポート
本節では、ESQL/C 数値フォーマット関数のロケール特有の動作について説明しま
す。 ESQL/C 数値フォーマット関数の一般情報については、「IBM Informix:
ESQL/C Programmer’s Manual」を参照してください。
ヒント: これらの ESQL/C 数値フォーマット関数が戻す可能性のあるエラーのリス
トについては、148 ページの『GLS 特有のエラー メッセージ』を参照して
ください。
マルチバイト文字のサポート
該当するマルチバイト文字を定義するマルチバイト コード セットを、クライアン
ト ロケールがサポートする場合、ESQL/C 数値フォーマット関数は、フォーマット
文字列内にあるのこれらのマルチバイト文字をサポートします。ただし、これらの
ESQL/C 関数およびルーチンは、マルチバイト文字をリテラル文字として解釈しま
す。 ASCII 書式制御文字のマルチバイト等価は使用できません。
たとえば、次の ESQL/C コードは、フォーマット文字列のマルチバイト文字 A1A2
を使用した rfmtlong( ) 関数の呼出しを示します。
stcopy("A1A2***,***", fmtbuf);
rfmtlong(78941, fmtbuf, outbuf);
printf("Formatted value: %s¥n", outbuf);
このコードは、次の出力を生成します (クライアント コード セットに A1A2 文字
が含まれる場合)。
Formatting value: A1A2*78,941
ロケール特有の数値フォーマット
ESQL/C 数値フォーマット関数では、引数としてフォーマット文字列が必要です。
このフォーマット文字列は、数値フォーマット関数が数値をフォーマットする方法
144
IBM Informix GLS: ユーザーズ ガイド
を決定します。フォーマット文字列は、一連の書式制御文字と次の通貨表記で構成
されます。
書式制御文字
機能
ドル記号 ($)
カンマ (,)
ピリオド (.)
通貨記号
3 桁区切り記号
小数点記号
通貨記号、小数点記号、および 3 桁区切り記号を配置する場所を識別するには、使
用するクライアント ロケールに関係なく、前述の ASCII 記号をフォーマット文字
列で使用する必要があります。数値フォーマット関数は、次の優先順位を使用して
これらの記号をロケール特有の等価に変換します。
1. DBMONEY が示す記号 (DBMONEY が設定されている場合)
DBMONEY のロケール特有の動作については、147 ページの『DBMONEY 拡張
機能』を参照してください。
2. クライアント ロケールの適切なロケール カテゴリが指定する記号
(CLIENT_LOCALE が設定されている場合)
フォーマット文字列に $ または @ 書式制御文字が含まれている場合、数値フ
ォーマット関数は値が通貨値だと想定し、クライアント ロケールの
MONETARY カテゴリを参照します。これら 2 つの記号がフォーマット文字列
内にない場合、数値フォーマット関数はクライアント ロケールの NUMERIC カ
テゴリを参照します。
$ および @ 書式制御文字の使用について詳しくは、146 ページの『通貨記号フ
ォーマット』を参照してください。 MONETARY および NUMERIC ロケール
カテゴリについて詳しくは、154 ページの『ロケール カテゴリ』を参照してく
ださい。
3. フォーマット文字列に表示される実際の記号 ($、カンマ、またはピリオド)
これらの数値フォーマット関数は、フォーマット文字列内のドル記号を、
DBMONEY が指定する通貨記号 (設定されている場合)、またはクライアント ロケ
ールが指定する通貨記号 (DBMONEY が設定されていない場合) に置き換えます。
同じことが、小数点記号と 3 桁区切り記号にも当てはまります。たとえば、次の
ESQL/C コードは rfmtlong() 関数の呼出しを示します。
stcopy("$***,***.&&", fmtbuf);
rfmtlong(78941, fmtbuf, outbuf);
printf("Formatted value: %s¥n", outbuf);
デフォルト、ドイツ語、およびスペイン語のロケールでは、このコードは、
78941.00 という論理金額 (MONEY) 型の値で、次の結果を生成します (DBMONEY
が設定されていない場合)。
フォーマット文字列
クライアント ロケール
フォーマット済みの値
$***,***.&&
デフォルト ロケール (en_us.8859-1)
ドイツ語ロケール (de_de.8859-1)
スペイン語ロケール (es_es.8859-1)
$*78,941.00
DM*78.941,00
Pts*78.941,00
第 6 章 IBM Informix ESQL/C 機能
145
通貨記号フォーマット
ESQL/C 数値フォーマット関数は、「IBM Informix: ESQL/C Programmer’s
Manual」で説明されているすべての書式制御文字をサポートします。それに加え、
次の書式制御文字を使用してフォーマット済み出力に通貨記号を入れる場所を指示
できます。
書式制御文字
機能
$
この文字は、ロケールで定義されている場合は、前置 通貨記号に置き換え
られます。 ロケールの MONETARY カテゴリが、前置 通貨記号を定義し
ます。これは通貨値の前に表示される記号です。いくつかのドル記号を列に
グループ化すると、単一通貨記号は、数字に干渉せずに置くことができる右
端に移動します。
この文字は、ロケールで定義されている場合は、後置 通貨記号に置き換え
られます。ロケールの MONETARY カテゴリが、後置 通貨記号を定義しま
す。これは通貨の値の後に表示される記号です。
@
詳しくは、157 ページの『MONETARY カテゴリ』を参照してください。
両方の書式制御文字をフォーマット文字列内に使用できます。次のように、ロケー
ルは、通貨記号を通貨値の前と後のどちらに表示するかを定義します。
v ロケールが通貨記号を値の前に表示するように指定して通貨値をフォーマットす
る場合は、ロケールは通貨記号を 前置 通貨記号に設定し、後置 通貨記号をブラ
ンク文字に設定します。
v ロケールが通貨記号を値の後に表示するように指定して通貨値をフォーマットす
る場合は、ロケールは通貨記号を 後置 通貨記号に設定し、前置 通貨記号をブラ
ンク文字に設定します。
デフォルト ロケールは、通貨記号を 前置 通貨記号として定義します。この通貨記
号はドル記号 ($) として表示されます。デフォルト ロケールでは、後置 通貨記号
は空白で表示されます。デフォルト、ドイツ語、およびフランス語ロケールでは、
数値フォーマット関数は、1.00 の内部金額 (MONEY) 型値の結果として次を生成
します。
146
IBM Informix GLS: ユーザーズ ガイド
フォーマット文字列
クライアント ロケール
フォーマット結果
$***,***
デフォルト ロケール (en_us.8859-1)
ドイツ語ロケール (de_de.8859-1)
フランス語ロケール (fr_fr.8859-1)
$******1
DM******1
s******1
$***,***@
デフォルト ロケール (en_us.8859-1)
ドイツ語ロケール (de_de.8859-1)
フランス語ロケール (fr_fr.8859-1)
$******1s
DM******1s
s******1FF
$$,$$$.$$
デフォルト ロケール (en_us.8859-1)
ドイツ語ロケール (de_de.8859-1)
フランス語ロケール (fr_fr.8859-1)
ssss$1.00
ssssDM1,00
sssss1FF
***,***@
デフォルト ロケール (en_us.8859-1)
ドイツ語ロケール (de_de.8859-1)
フランス語ロケール (fr_fr.8859-1)
******1s
******1s
******1FF
@***,***
デフォルト ロケール (en_us.8859-1)
ドイツ語ロケール (de_de.8859-1)
フランス語ロケール (fr_fr.8859-1)
s******1
s******1
FF******1
前述の表では、文字 s は空白またはスペースを表し、FF はフランスの通貨記号の
フランス フラン、さらに DM はドイツの通貨記号のドイツ マルクです。
また、DBMONEY 環境変数は、前置通貨記号と後置通貨記号を設定できます。 43
ページの『DBMONEY』の構文ダイヤグラムでは、これらの記号はそれぞれ front
および back で示されます。 DBMONEY 設定が指定されている場合は、この設定
は、ロケールの MONETARY カテゴリが定義する記号よりも優先されます。
DBMONEY 拡張機能
通貨記号と小数点記号を、DBMONEY 環境変数を使用して指定できます。これらの
設定値は、クライアント ロケールが指定する通貨表記を上書きします。
クライアント コード セットによってサポートされれば、これらの記号にマルチバ
イト文字を使用できます。たとえば、次の表は、マルチバイト文字がどのように出
力例に表示されるかを示します。
フォーマット文字列
フォーマット
される数値
DBMONEY
出力
″$$,$$$.$$″
″$$,$$$.$$″
″$$,$$$.$$″
″$$,$$$.$$″
″&&,&&&.&&@″
″$&&,&&&.&&@″
″$&&,&&&.&&@″
″@&&,&&&.&&″
1234
1234
1234
1234
1234
1234
1234
1234
’$’.
DM,
A1A2.
.A1A2
.A1A2
A1A2.
.A1A2
.A1A2
$1,234.00
DM1.234,00
A1A21,234.00
s1,234.00
s1,234.00A1A2
A1A2s1,234.00
s1,234.00A1A2
A1A2s1,234.00
前述の表では、文字 s は空白またはスペースを表します。
第 6 章 IBM Informix ESQL/C 機能
147
文字列関数
次の ESQL/C 文字列関数は、ロケール特有のシフト文字をサポートします。
v rdownshift( )
v rupshift ( )
これらの文字列関数は、クライアント ロケールの CTYPE カテゴリの情報を使用し
て、シフトされたコード ポイントを判別します。クライアント ロケールがマルチ
バイト コード セットを指定する場合、これらの関数はマルチバイト文字列を操作
できます。
重要: マルチバイト文字列を使用すると、シフトされた文字列はシフト操作後に、
シフト操作前よりも多くのメモリを使用する可能性があります。これらの
ESQL/C シフト関数に渡すバッファに、この拡張を供給するために十分な容
量があることを確認してください。
GLS 特有のエラー メッセージ
次の ESQL/C 関数は、GLS に特定のエラー メッセージを生成する可能性がありま
す。
v DATE フォーマット関数
v DATETIME フォーマット関数
v 数値フォーマット関数
GLS 特定のエラー メッセージについて詳しくは、UNIX の finderr ユーティリテ
ィ、または Windows の Informix エラー メッセージユーティリティを使用してく
ださい。
コード セット変換の処理
クライアントとデータベース コード セットが異なる場合は、ESQL/C クライアン
ト アプリケーションは文字データのコード セット変換を実行します。詳しくは、
30 ページの『コード セット変換の実行』を参照してください。ご使用の ESQL/C
アプリケーションが、コード セット変換が行われる可能性のある環境で実行されて
いる場合は、アプリケーションが次の状態を正しく処理できることを確認してくだ
さい。
v アプリケーションがシンプル ラージ オブジェクト (テキスト (TEXT) 型または
バイト (BYTE) 型データ) をデータベースに書き込むときは、アプリケーション
は、書き込む必要のあるシンプル ラージ オブジェクトの型を指示するようにロ
ケータ構造体 loc_t 内の loc_type フィールドを設定する必要があります。
Dynamic Server
v アプリケーションがスマート ラージ オブジェクト (CLOB または BLOB デー
タ) をデータベースに書き込むときは、さまざまなラージ オブジェクト ファイ
ル記述子を使用します。
Dynamic Server の終り
148
IBM Informix GLS: ユーザーズ ガイド
v アプリケーションが sqlda 構造体を使用して動的 SQL 文を記述するときは、ア
プリケーションは文字データの考えられるサイズの差を計算に入れる必要があり
ます。
v コード セット変換が行われる可能性がある文字データがアプリケーションにある
場合は、データを保持できる文字バッファを宣言する必要があります。
詳しくは、130 ページの『部分文字の回避』を参照してください。
テキスト (TEXT) 型値の書込み
ESQL/C は loc_t ロケータ構造体を使用してデータベース サーバからのシンプル
ラージ オブジェクトの読取り、およびデータベース サーバへのシンプル ラージ
オブジェクトの書込みを行います。この構造体の loc_type フィールドは、構造体
が記述するシンプル ラージ オブジェクトのデータ型を指示します。クライアント
とデータベースのコード セットが同じである場合 (コード セット変換はなし)、ク
ライアント アプリケーションは loc_type フィールドを明示的に設定する必要はあ
りません。これはデータベース サーバがシンプル ラージ オブジェクトのデータ型
を暗黙的に決定できるためです。データベース サーバは、テキスト (TEXT) 型の文
字データと、バイト (BYTE) 型の非文字データを判断します。
ただし、クライアントとデータベースのコード セットが異なり、かつ変換可能な場
合は、クライアント アプリケーションは、データのコード セット変換を実行する
かどうかを決定するために、シンプル ラージ オブジェクトのデータ型を認識して
いる必要があります。
ESQL/C クライアント アプリケーションは、シンプル ラージ オブジェクトをデー
タベースに挿入する前に、明示的にシンプル ラージ オブジェクトの loc_type フ
ィールドを設定する必要があります。
v テキスト (TEXT) 型値については、ESQL/C クライアント アプリケーションは、
loc_type フィールドを INSERT 文の前の SQLTEXT に設定する必要がありま
す。クライアントは、挿入するためにテキスト (TEXT) 型データをデータベース
へ送信する前に、このデータのコード セット変換を行います。
v バイト (BYTE) 型値については、ESQL/C クライアント アプリケーションは、
loc_type フィールドを INSERT 文の前の SQLBYTES に設定する必要がありま
す。クライアントは、挿入するためにバイト (BYTE) 型データをデータベースへ
送信する前に、このデータのコード セット変換を行いません。
重要: sqltypes.h ヘッダ ファイルは、データ型定数 SQLTEXT および
SQLBYTES を定義します。これらの定数を使用するには、このヘッダ ファ
イルを ESQL/C ソース ファイルにインクルードする必要があります。
ESQL/C ソース コードは、シンプル ラージ オブジェクトをデータベースから読み
取る前に、loc_type を設定する必要はありません。データベース サーバは、デー
タベースからシンプル ラージ オブジェクトのデータ型を取得し、このデータ型を
データと一緒にクライアントに送信します。
loc_bufsize を -1 に設定した場合、ESQL/C は単一シンプル ラージ オブジェク
トを保持するようにメモリを割り当てます。これは、loc_t 構造体の loc_buffer フ
ィールドにあるこのメモリ バッファのアドレスを格納します。クライアント アプ
第 6 章 IBM Informix ESQL/C 機能
149
リケーションが、データベース サーバが抽出するテキスト (TEXT) 型データのコー
ド セット変換を実行する場合、ESQL/C は可能なデータ拡張を次のように処理しま
す。
1. loc_buffer フィールドが参照する既存のメモリを解放します。
2. 拡張されたテキスト (TEXT) 型データを保管するために十分な容量のあるメモリ
バッファを再割り当てします。
3. この新しいバッファのアドレスを loc_buffer フィールドに割り当てます。
4. 新しいメモリ バッファのサイズを loc_bufsize フィールドに割り当てます。
この再割当てが行われる場合、ESQL/C はテキスト (TEXT) 型データを保管するメ
モリ アドレスを変更します。ご使用の ESQL/C プログラムがこのアドレスを参照
する場合、プログラムはアドレス変更を計算に入れる必要があります。
コード セット変換でテキスト (TEXT) 型データが拡張されない場合、またはデータ
が圧縮される場合、ESQL/C はテキスト (TEXT) 型データのメモリの再割当てを行
う必要はありません。いずれの場合でも、loc_buffer フィールドは未変更のまま
で、loc_bufsize フィールドには、loc_buffer フィールドが参照するバッファのサ
イズが含まれます。
DESCRIBE 文の使用
sqlda 構造体とは、動的 SQL 文内の列に関する情報を含む動的管理構造体です。
DESCRIBE...INTO 文は、sqlda 構造体を使用して、SELECT 文の投影節の選択リス
トにある列に関する情報を戻します。これにより、sqlda 構造体の sqlvar フィー
ルドは、部分的に埋められた sqlvar_struct 構造体のシーケンスを指すように設定
されます。各構造体は、単一選択リスト列を記述します。
各 sqlvar_struct 構造体には、列名および列データについての文字データが含まれ
ます。 ESQL/C クライアント アプリケーションがこの構造体を埋めるとき、列名
と列データはクライアント コード セットにあります。データベース サーバがこの
構造体を埋め、DESCRIBE...INTO 文を実行するとき、この文字データはデータベー
ス コード セットにあります。
クライアント アプリケーションが、クライアントとデータベースのコード セット
間でコード セット変換を実行すると、列名と列データをクライアント コード セッ
トに保管するために必要なバイト数が、この同じ情報をデータベース コード セッ
トに保存するために必要なバイト数と等しくならない可能性があります。そのた
め、sqlvar_struct の文字データのサイズは、コード セット変換中に増減する可能
性があります。このサイズの違いを処理するために、クライアント アプリケーショ
ンは、sqlvar_struct 構造体内の文字データを正しく処理する必要があります。
sqldata フィールド
列データを保持するために、クライアント アプリケーションはバッファを割り当
て、sqldata をこのバッファを指すように設定する必要があります。クライアント
アプリケーションがコード セット変換を実行する可能性がある場合、クライアント
アプリケーションは、起こる可能性のある列データ サイズの増加を処理するために
十分な記憶域を割り当てる必要があります。
150
IBM Informix GLS: ユーザーズ ガイド
DESCRIBE ... INTO 文が sqllen フィールドを設定するとき、sqllen 値がデータベ
ース コード セットの列データの長さを指示します。そのため、DESCRIBE ...
INTO 文が抽出する sqllen の値を使用する場合、クライアント コード セットにあ
るときのデータ値用に十分な容量のバッファが割り当てられない可能性がありま
す。
たとえば、次のコードは、malloc( ) システム呼出しを使用して sqldata バッファ
を割り当てます。
EXEC SQL include sqlda;
...
struct sqlda *q_desc;
...
EXEC SQL describe sqlstmt_id into q_desc;
...
q_desc->sqlvar[0].sqldata =
(char *)malloc(q_desc->sqlvar[0].sqllen);
前述のコードでは、クライアント アプリケーションが sqllen 値を使用してバッフ
ァ サイズを決定するため、変換する文字を切り捨てる可能性があります。その代わ
りに、バッファを割り当てるときに、次のコードが示すとおり、バッファのサイズ
を元のサイズの 4 倍に増やします。
EXEC SQL include sqlda;
EXEC SQL define BUFSIZE_FACT 4;
...
struct sqlda *q_desc;
...
q_desc->sqlvar[0].sqllen =
q_desc->sqlvar[0].sqllen * BUFSIZE_FACT + 1;
q_desc->sqlvar[0].sqldata =
(char *)malloc(q_desc->sqlvar[0].sqllen);
バッファ サイズ ファクタ (BUFSIZE_FACT) は 4 をお勧めします。これは、マル
チバイト文字の最大サイズが 4 バイトのためです。
sqlname フィールド
sqlname フィールドには、列の名前が含まれます。クライアント アプリケーショ
ンがコード セット変換を実行するとき、アプリケーションが列名をデータベース
コード セットからクライアント コード セットに変換する場合、この列名も拡張さ
れる可能性があります。 ESQL/C アプリケーションは、sqlname データのバッフ
ァを内部の作業域に格納するため、ESQL/C ソース コードは、起こる可能性のある
バッファ サイズの増加を処理する必要はありません。ご使用のコードは、クライア
ント コード セットにある sqlname の内容を処理します。
TRIM 関数の使用
SELECT 文を動的に実行すると、DESCRIBE 文は、実行時に Projection 節の選択リ
ストにある列に関する情報を戻すことができます。 DESCRIBE は、選択リスト列
のデータ型を、使用している動的管理構造体の適切なフィールドに戻します。
DESCRIBE 文を、PREPARE 文で処理された SELECT 文に対して選択リスト内の
TRIM 関数で使用するとき、DESCRIBE が戻すトリムされた列のデータ型は、使用
するデータベース サーバ、およびトリムされる列のデータ型 (ソース文字値式) に
第 6 章 IBM Informix ESQL/C 機能
151
よって異なります。ソース文字値式について詳しくは、「IBM Informix: SQL ガイ
ド: 構文」の TRIM 関数の説明を参照してください。
DESCRIBE 文が戻すデータ型は、次のようにソース文字値式のデータ型によって異
なります。
v ソース文字値式が文字 (CHAR) 型または可変長文字 (VARCHAR) 型の場合、
DESCRIBE はトリムされた列のデータ型を SQLVCHAR として戻します。
v ソース文字値式が各国語文字 (NCHAR) 型または各国語可変長文字
(NVARCHAR) 型の場合、DESCRIBE はトリムされた列のデータ型を
SQLNVCHAR として戻します。
Dynamic Server
TRIM は、ラージ可変長文字 (LVARCHAR) 型をサポートしません。
Dynamic Server の終り
次の SELECT 文には、文字 (CHAR) 型として定義される manu_code 列と、可変
長文字 (VARCHAR) 型列として定義される cat_advert 列が含まれています。次の
SELECT 文の記述に TRIM 関数を使用すると、DESCRIBE は、データ型
SQLVCHAR を、両方のトリムされた列用に戻します。
SELECT TRIM(manu_code), TRIM(cat_advert) FROM catalog;
そうではなく、manu_code 列が各国語文字 (NCHAR) 型として定義される場合、
DESCRIBE は、このトリムされた列用にデータ型 SQLNVCHAR を戻します。
重要: sqltypes.h ヘッダ ファイルは、データ型定数 SQLCHAR、SQLVCHAR、お
よび SQLNVCHAR を定義します。これらの定数を使用するには、このヘッ
ダ ファイルを ESQL/C ソース ファイルにインクルードします。
152
IBM Informix GLS: ユーザーズ ガイド
付録. GLS ファイルの管理
この付録では、GLS のために提供されるファイルについて説明します。これらは実
行可能ファイルのみです。次の節では、GLS ファイルを管理する方法について説明
します。
v GLS ファイルへのアクセス
v GLS ロケール ファイル
v その他の GLS ファイル
v 未使用ファイルの削除
UNIX のみ
v glfiles ユーティリティ (UNIX のみ)
UNIX のみ の終り
GLS ファイルへのアクセス
IBM Informix 製品は、次の GLS ファイルにアクセスしてロケール関連の情報を取
得します。これらのファイルが提供する情報の種類の概要については、7 ページの
『GLS ロケールの理解』を参照してください。
GLS ファイル
参照
GLS ロケール ファイル
コード セット変換ファイル
コード セット ファイル
レジストリ ファイル
154
160
162
163
ページ
ページ
ページ
ページ
一般に、GLS ファイルを検証する必要はありません。ただし、これらのファイルを
調べて、次のロケール固有の情報を判別することができます。
ロケール固有の情報
照合順序:
完全なローカライズ順序
完全なコード セット照合順序
検証する GLS ファイル
参照
ソース ロケール ファイル (*.lc):
COLLATION カテゴリ
ソース コード セット ファイル
(*.cm)
155 ページ
文字マッピング:
大文字と小文字間のロケール固有のマッ ソース ロケール ファイル (*.lc):
ピング
CTYPE カテゴリ
ロケール固有の文字の分類
ソース ロケール ファイル (*.lc):
CTYPE カテゴリ
コード セット固有の文字マッピング
ソース コード セット ファイル
(*.cm)
ソースとターゲットのコード セット間 ソース コード セット変換ファイル
の文字のマッピング
(*.cv)
© Copyright IBM Corp. 1996, 2003
162 ページ
155 ページ
155 ページ
162 ページ
160 ページ
153
ロケール固有の情報
検証する GLS ファイル
コード セット変換中に文字ミスマッチ
場合のメソッド
文字のコード ポイント
ソース コード セット変換ファイル 160 ページ
(*.cv)
ソース コード セット ファイル
162 ページ
(*.cm)
エンド ユーザ フォーマット:
数値 (通貨以外) データ
通貨データ
日付データ
時刻データ
ソース ロケール ファイル
NUMERIC カテゴリ
ソース ロケール ファイル
MONETARY 型カテゴリ
ソース ロケール ファイル
TIME カテゴリ
ソース ロケール ファイル
TIME カテゴリ
参照
(*.lc):
156 ページ
(*.lc):
157 ページ
(*.lc):
157 ページ
(*.lc):
157 ページ
GLS ロケール ファイル
ロケール ファイル は GLS ロケールを定義します。ロケール ファイルは、特定の
言語および地域のデータ処理に関連した基本的な言語と文化上の慣習を記述しま
す。本節では、ロケール カテゴリとロケール ファイルの格納場所について説明し
ます。
ロケール カテゴリ
ロケール ファイルは、ロケール カテゴリの動作を指定します。 CTYPE および
COLLATION カテゴリは、データベース サーバがデータベース内の文字データを格
納および抽出する方法に主に影響を及ぼします。 NUMERIC、MONETARY、および
TIME カテゴリは、クライアント アプリケーションが関連 SQL データ型の内部値
をフォーマットする方法に影響を及ぼします。エンド ユーザ フォーマットについ
て詳しくは、12 ページの『エンド ユーザ フォーマット』と 34 ページの『エンド
ユーザ フォーマットのカスタマイズ』を参照してください。次の表は、デフォルト
ロケール (米国英語 (U.S. English) のロケール カテゴリと動作を説明しています。
ロケール
カテゴリ
CTYPE
COLLATION
154
説明
デフォルト ロケール
(米国英語 (U.S. English)) 内
文字分類および大文字小文字 デフォルト コード セットは文字を分類しま
変換の動作を制御します。
す。 UNIX では、デフォルト コード セット
は ISO8859-1 です。 Windows では、デフォ
ルト コード セットは Windows コード ペー
ジ 1252 です。
文字列比較の動作を制御しま デフォルト ロケールは、ローカライズ順序を
す。
定義しません。そのため、データベース サー
バは各国語文字 (NCHAR) 型と各国語可変長
文字 (NVARCHAR) 型データをコード セッ
ト順序で照合します (SET COLLATION でロ
ーカライズ順序の一部を指定している場合を
除く)。
IBM Informix GLS: ユーザーズ ガイド
ロケール
カテゴリ
NUMERIC
説明
通貨以外の数値エンド ユー
ザ フォーマットの動作を制
御します。
デフォルト ロケール
(米国英語 (U.S. English)) 内
数値エンド ユーザ フォーマットで使用する
数値表記は次のとおりです。
v 3 桁区切り記号: カンマ (,)
v 小数点記号: ピリオド (.)
v 3 桁区切り記号間の桁数: 3
v 正の数の記号: プラス記号 (+)
v 負の数値の記号: マイナス記号 (-)
MONETARY
v 元号ベース日付に代わる数字はなし
通貨エンド ユーザ フォーマ 通貨エンド ユーザ フォーマットで使用する
ットの動作を制御します。
通貨表記は次のとおりです。
v 通貨記号: ドル記号 ($) は、通貨の値の前
に前置 記号として表示されます。
v 後置 の通貨記号は定義されません。
v 3 桁区切り記号: カンマ (,)
v 小数点記号: ピリオド (.)
v 3 桁区切り記号間の桁数: 3
v 正の数の記号: プラス記号 (+)
v 負の数値の記号: マイナス記号 (-)
TIME
金額 (MONEY) 型列のデフォルト小数点以下
桁数: 2
日時エンド ユーザ フォーマ 日時エンド ユーザ フォーマットは次のとお
ットの動作を制御します。
りです。
v 日付 (DATE) 型値: %m/%d/%iy
v 日時 (DATETIME) 型値: %iY-%m-%d
%H:%M:%S
MESSAGES
元号ベース日付の定義はなし
メッセージに対する肯定およ なし
び否定応答の定義を制御しま
す。
CTYPE カテゴリ
CTYPE カテゴリは、ロケールがサポートするコード セットの文字を分類する方法
を定義します。このカテゴリには、ロケールが領域、空白、制御文字、桁数、大文
字、小文字、および句読点記号として分類する文字の仕様が含まれます。
さらに、このカテゴリには、大文字と小文字間のマッピングが含まれる場合があり
ます。 IBM Informix 製品は、識別名の妥当性の判断、文字の大文字小文字のシフ
ト、または文字の比較を行う必要があるときにこのカテゴリにアクセスします。
COLLATION カテゴリ
COLLATION カテゴリは、ローカライズ順序を定義できます。 IBM Informix 製品
は 2 つの文字列を比較する必要があるとき、最初に文字列を照合要素の系列に区切
ります。データベース サーバは、照合要素の各ペアを各要素の照合重量に基づいて
比較します。 COLLATION カテゴリは、次の機能をサポートします。
付録. GLS ファイルの管理
155
v 複数文字照合要素は、データベース サーバが単一単位として照合する必要のある
文字のセットを定義します。たとえば、ローカライズ照合順序は、スペイン語で
L が 2 つ続く場合 (ll)、l を 2 つではなく、単一の照合要素として扱う場合が
あります。
v 等価クラスは、同じ照合重量を別の要素に割り当てます。たとえば、ローカライ
ズ順序は、a と A が等価クラスであることを指定できます (a と A は等価文
字)。
照合順序の違いは、文字 (CHAR) 型と各国語文字 (NCHAR) 型、および、可変長文
字 (VARCHAR) 型と各国語可変長文字 (NVARCHAR) 型の区別のみです。詳しく
は、68 ページの『文字データ型の使用』を参照してください。
ロケールに COLLATION カテゴリが含まれない場合は、IBM Informix 製品は、す
べての文字のデータ型の照合にコード セット順序を使用します。
v 文字 (CHAR) 型
Dynamic Server
v ラージ可変長文字 (LVARCHAR) 型
Dynamic Server の終り
v 各国語文字 (NCHAR) 型
v 各国語可変長文字 (NVARCHAR) 型
v テキスト (TEXT) 型
v 可変長文字 (VARCHAR) 型
Dynamic Server
SET COLLATION 文は、DB_LOCALE が指定するロケールの COLLATION 設定
とは異なるローカライズ照合を指定できます。 SET COLLATION が指定する照合
順序の範囲は現行セッションです。ただし、制約、インデックス、UDR、およびト
リガなどの文字列をソートできるデータベース オブジェクトは、各国語文字
(NCHAR) 型または各国語可変長文字 (NVARCHAR) 型値をソートするときに、作
成時の照合順序を常に使用します。
Dynamic Server の終り
NUMERIC カテゴリ
NUMERIC カテゴリは、通貨以外の数値のエンド ユーザ フォーマット用に次の数
値表記を定義します。
v 数値の小数点記号
v 数値の 3 桁区切り記号
v 3 桁区切り記号を挿入する前にグループ化される桁数
v 正および負の数値を示す文字
156
IBM Informix GLS: ユーザーズ ガイド
この数値表記は、クライアント アプリケーション内にある数値 (10 進数
(DECIMAL) 型、整数 (INTEGER) 型、小桁整数 (SMALLINT) 型、実数 (FLOAT)
型、小桁実数 (SMALLFLOAT) 型) 列のデータのエンド ユーザ フォーマットに適
用されます。
重要: NUMERIC カテゴリ内の情報は、データベースにある数値データ型の内部の
フォーマットには影響を及ぼしません。
また、NUMERIC カテゴリは、元号ベースの日時に使用する代替数字を定義しま
す。代替数字についての詳細は、50 ページの『代替日付フォーマット』と 55 ペー
ジの『代替時刻フォーマット』を参照してください。
MONETARY カテゴリ
MONETARY カテゴリは、通貨値のエンド ユーザ フォーマット用に次の通貨表記
を定義します。
v 通貨記号、および通貨記号を通貨値の前と後のどちらに表示させるか
v 通貨の小数点記号
v 通貨の 3 桁区切り記号
v 通貨のそれぞれの 3 桁区切り記号間でグループ化される桁数
v 正および負の通貨値を示す文字、およびこれらの文字の位置 (前または後)
v 表示する小数点以下桁数 (小数点の右側の小数桁数)
この通貨表記は、クライアント アプリケーション内の金額 (MONEY) 型列データ
のエンド ユーザ フォーマットに適用されます。
重要: MONETARY カテゴリ内の情報は、データベースにある金額 (MONEY) 型の
内部フォーマットには影響を及ぼしません。
さらに、MONETARY カテゴリは、金額 (MONEY) 型列のために、デフォルトの小
数点以下桁数を定義します。デフォルト ロケール (米国英語 (U.S. English)) の場
合、データベース サーバは、金額(precision)(MONEY(precision) 型の値を、10 進数
(precision,2)(DECIMAL(precision,2) 型と同じ内部フォーマットで格納します。非デフ
ォルト ロケールの場合は、別のデフォルト小数点以下桁数を定義できます。デフォ
ルト小数点以下桁数について詳しくは、96 ページの『scale (小数点以下桁数) パラ
メータ値の指定』を参照してください。
TIME カテゴリ
TIME カテゴリは、日時値をフォーマットする文字および記号をリストします。こ
の情報には、曜日と月の名前およびその省略形が含まれます。また、日付、時間
(12 時間と 24 時間)、および日時 (DATETIME) 型値の特殊な表記が含まれます。
これらの表記には、元号名 (日本元号のシステムにあるようなもの) および非グレゴ
リオ暦 (アラビアの太陰暦など) を含むことができます。ロケールは、月、日、また
は年の読取りまたは出力のために、カレンダ (グレゴリオ歴、ユダヤ暦、アラビア
暦、日本元号など) を指定します。
付録. GLS ファイルの管理
157
ロケールが元号ベースの日時をサポートする場合、TIME カテゴリは、完全な元号
名と省略元号名、および特殊な日時表記を定義します。詳しくは、50 ページの『代
替日付フォーマット』と 55 ページの『代替時刻フォーマット』を参照してくださ
い。
この日時情報は、クライアント アプリケーション内の日付 (DATE) 型と日時
(DATETIME) 型列のデータのエンド ユーザ フォーマットに適用されます。
重要: TIME カテゴリの情報は、データベース内の日付 (DATE) 型および日時
(DATETIME) 型の内部フォーマットには影響を及ぼしません。
MESSAGES カテゴリ
MESSAGES カテゴリは、肯定および否定応答のフォーマットを定義します。このカ
テゴリはオプションです。 IBM Informix 製品は、MESSAGES カテゴリが定義する
文字列を使用しません。
クライアント ロケールの MESSAGES カテゴリのロケール名を取得するために、ク
ライアント アプリケーションは CLIENT_LOCALE が指示するロケールを使用しま
す。 CLIENT_LOCALE が設定されていない場合は、クライアントはカテゴリをデ
フォルト ロケールに設定します。
ロケール ファイルの格納場所
IBM Informix 製品はロケール特有の情報を取得する必要があるとき、次の表にある
GLS ロケール ファイルのいずれかにアクセスします。
プラットフォーム
ロケール ファイル
UNIX
Windows
$INFORMIXDIR/gls/lcX/lg_tr/codemodf.lco
%INFORMIXDIR%¥gls¥lcX¥lg_tr¥codemodf.lco
これらのパスでは、INFORMIXDIR は IBM Informix 製品をインストールするディ
レクトリを指定する環境変数であり、gls は GLS ファイルを含むサブディレクト
リです。本節の残りでは、GLS ロケール ファイルのパス名の残りの要素について
説明します。
ロケール ファイル サブディレクトリ
lcX サブディレクトリのサブディレクトリ (X はロケール オブジェクト ファイル
フォーマットのバージョン番号を表します) には GLS ロケール ファイルが含まれ
ます。これらのサブディレクトリには、フォーム lg_tr の名前があります。ここ
で、lg は 2 文字の言語名で、tr はロケールがサポートする 2 文字の地域名です。
次の表に、IBM Informix 製品がサポートできるいくつかの言語と地域、および関連
するロケール ファイル サブディレクトリ名を示します。
158
IBM Informix GLS: ユーザーズ ガイド
言語
地域
ロケール ファイル サブディレクトリ
英語
オーストラリア
アメリカ合衆国
英国
ドイツ
オーストリア
スイス
ベルギー
カナダ
スイス
フランス
en_au
en_us
en_gb
de_de
de_at
de_ch
fr_be
fr_ca
fr_ch
fr_fr
ドイツ語
フランス語
ロケール ソースとオブジェクト ファイル
各ロケール ファイルには、次の 2 つのフォームがあります。
v ロケール ソース ファイルは、ロケールのロケール カテゴリを定義する ASCII
ファイルです。
このファイルは、.lc ファイル拡張子を持ち、対応するオブジェクト ファイルの
マニュアルとして使用できます。
v ロケール オブジェクト ファイルは、ロケール情報のコンパイル済みフォームで
す。
IBM Informix 製品は、オブジェクト ファイルを使用してロケール情報を迅速に
取得します。ロケール オブジェクト ファイルの拡張子は、.lco です。
ロケール ソース ファイル (.lc) のヘッダには、ロケールの言語、地域、コード セ
ット、およびオプションのロケール修飾子がリストされます。次の表に示すとお
り、ロケール ソース ファイルのセクションは、カテゴリが空の場合を除き、それ
ぞれのロケール カテゴリをサポートします。
ロケール カテゴリ
参照
ロケール カテゴリ
参照
CTYPE
COLLATION
NUMERIC
155 ページ
155 ページ
156 ページ
MONETARY
TIME
MESSAGES
157 ページ
157 ページ
158 ページ
ロケール ファイル名
DOS システムで有効なファイル名とファイル拡張子の最大文字数について 8.3
filename.ext 制限に準拠するために、GLS ロケール ファイルは、そのファイル名に
コード セット名 codemodf のコンデンス フォームを使用します。各ロケール ファ
イルの 4 文字のコード 名は、ロケールがサポートするコード セットのコード セ
ット番号の 16 進数表現です。 4 文字の modf 名は、オプションのロケール修飾子
です。
たとえば、ISO8859-1 コード セットには、10 進数で 819 で、16 進数で 0333 の
IBM CCSID 番号があります。そのため、ISO8859-1 コード セットをサポートする
4 文字のロケール ソース ファイル名は、0333.lc です。
次の表に、IBM Informix 製品がサポートできるいくつかのコード セットおよびロ
ケール修飾子を、それと関連したロケール ソース ファイル名とともに示します。
付録. GLS ファイルの管理
159
コード セット
ロケール修飾子
ISO8859-1 (IBM CCSID 819)
NoneDictionary
Windows コード ページ 1252 (西ヨーロ NoneDictionary
ッパ)
IBM CCSID 850
NoneDictionary
ロケール ソース
ファイル
0333.lc0333dict.lc
04e4.lc04e4dict.lc
0352.lc0352dict.lc
ISO8859-1 コード セットをサポートするフランス語ロケールは、0333.lc ファイル
と呼ばれる GLS ロケールを、fr_fr ロケール ファイル サブディレクトリ内に持っ
ています。デフォルト ロケールの米国英語 (U.S. English) も、ISO8859-1 コード
セット (UNIX プラットフォーム上) を使用します。また、0333.lc と呼ばれるロケ
ール ファイルも en_us ロケール ファイル サブディレクトリに含まれます。フラ
ンス語ロケールと米国英語 (U.S. English) ロケールの両方が Windows コード ペー
ジ 1252 をサポートするため、fr_fr と en_us ロケール ファイル サブディレクト
リの両方に 04e4.lc ロケール ファイルが含まれます。
その他の GLS ファイル
GLS ロケール ファイルに加えて、IBM Informix 製品は、次の GLS ファイルを使
用することもできます。
v コード セット変換ファイルは、あるコード セットを別のコード セットにマップ
します。
v コード セット ファイルは、コード セットのコード ポイント値を定義します。
Windows のみ
v レジストリ ファイルは、ロケールの別名を有効なロケール ファイル名に変換し
ます。
Windows のみ の終り
コード セット変換ファイル
コード セット変換ファイル は、特定のソース コード セットの各文字を、特定の
ターゲット コード セットの文字にマップする方法を記述します。 2 つのコード
セット間のマッピングを記述するためにコード セット変換ファイルが存在している
場合は、IBM Informix 製品は特定のコード セット変換を実行できます。
重要: クライアント アプリケーションは、実行を開始すると、クライアントとデー
タベース ロケールがサポートするコード セットを検査します。コード セッ
トが異なり、コード セット変換ファイルが存在しない場合は、クライアント
アプリケーションはエラーを生成します。詳しくは、25 ページの『データベ
ース接続の確立』 を参照してください。
IBM Informix 製品がコード セット変換情報を取得する必要がある場合は、次の表
にあるいずれかの GLS コード セット変換ファイルにアクセスします。
160
IBM Informix GLS: ユーザーズ ガイド
プラットフォーム
コード セット変換ファイル
UNIX
Windows
$INFORMIXDIR/gls/cvY/code1code2.cvo
%INFORMIXDIR%¥gls¥cvY¥code1code2.cvo
これらのパスでは、INFORMIXDIR は IBM Informix 製品をインストールするディ
レクトリを指定する環境変数であり、gls は GLS ファイルを含むサブディレクト
リです。さらに Y は、コード セット変換オブジェクト ファイル フォーマットの
バージョン番号を表します。
本節の残りでは、GLS コード セット変換ファイルのパス名にある残りの要素につ
いて説明します。
コード セット変換ソースとオブジェクト ファイル
各コード セット変換ファイルには、次の 2 つのフォームがあります。
v コード セット変換ソース ファイルは ASCII ファイルです。このファイルは、1
方向のコード セット変換に使用するマッピングを記述します。
このファイルは、.cv 拡張子を持ち、対応するオブジェクト ファイルのマニュア
ルとして使用できます。
v コード セット変換オブジェクト ファイルは、コード セット変換情報のコンパイ
ル済みフォームです。
IBM Informix 製品は、オブジェクト ファイルを使用してコード セット変換情報
を迅速に取得します。オブジェクト コード セット変換ファイルの拡張子
は、.cvo です。
コード セット変換ソース ファイル (.cv) のヘッダは、変換する 2 つのコード セ
ットと変換の方向をリストします。
コード セット変換ファイル名
DOS 8.3 命名規則に準拠するために、GLS コード セット変換ファイルは、コード
セット名 code1code2 のコンデンス フォームをファイル名に使用します。各コー
ド セット変換ファイルの 8 文字の名前は、ソース コード セット (code1) および
ターゲット コード セット (code2) のコード セット番号の 16 進表記から作成され
ます。
たとえば、ISO8859-1 コード セットには、10 進数で 819 で、16 進数で 0333 の
IBM CCSID 番号があります。 IBM CCSID 437 コード セット、共通 IBM UNIX
コード セットには、16 進値の 01b5 があります。そのため、033301b5.cv コード
セット変換ファイルは、CCSID 819 コード セットから CCSID 437 コード セット
への変換を記述します。
コード セット変換の必要条件
IBM Informix 製品は、コード セット名マッピング ファイルを使用してコード セ
ット名とさらにコンパクトなコード セット番号との間の変換を行います。レジスト
リ ファイルを使用して、コード セット名またはコード セット番号に対応する 16
進値を検索できます。
多くのコード セット変換は、2 つ のコード セット変換ファイルを必要とします。
一方のファイルがコード セット A 内の文字から、コード セット B 内の対応する
付録. GLS ファイルの管理
161
文字への変換をサポートします。もう一方のファイルが逆方向の変換 (B から A)
をサポートします。このような変換は、両方向 コード セット変換と呼ばれます。
たとえば、CCSID 437 コード セット (16 進数 01b5 コード番号) と CCSID 819
コード セット (または 16 進数 0333 コード番号を持つ ISO8859-1 ) との間のコー
ド セット変換では、次の 2 つのコード セット変換ファイルが必要です。
v 01b50333.cv ファイルには、IBM Informix 製品が CCSID 437 コード セット内
の文字を ISO8859-1 コード セット内の文字に変換するときに使用するマッピン
グが記述されています。
v 033301b5.cv ファイルには、IBM Informix 製品が ISO8859-1 コード セット内
の文字を CCSID 437 コード セット内の文字に変換するときに使用するマッピン
グが記述されています。
これらの 2 つのコード セット間での変換を可能にするには、IBM Informix 製品
が、上記の両方の コード セット変換オブジェクト ファイルを見つけることができ
る必要があります。 1 方向のみで変換を実行すると、文字がミスマッチする場合が
あります。ミスマッチする文字について詳しくは、30 ページの『コード セット変
換の実行』を参照してください。
次の表に、IBM Informix 製品がサポートできるいくつかのコード セット変換を、
それに関連したコード セット変換ソース ファイル名と共に示します。
コード セット変換ソース
ファイル
ソース コード セット
ターゲット コード セット
ISO8859-1
Windows コード ページ
1252
ISO8859-1
033304e4.cvo
IBM CCSID 850
ISO8859-1
IBM CCSID 850
03330352.cvo
03520333.cvo
04e40352.cvo
Windows コード ページ
1252
035204e4.cvo
Windows コード ページ
1252
ISO8859-1
IBM CCSID 850
Windows コード ページ
1252
IBM CCSID 850
04e40333.cvo
コード セット ファイル
コード セット ファイル (文字マッピングまたは charmap ファイルとも呼ばれる)
は、ロケールおよびコード セット変換ファイルが後で使用するコード セットを定
義します。 GLS ロケールは、サポートするコード セットのために、適切なコード
セット ファイルをインクルードします。さらに、IBM Informix 製品は、コード セ
ット ファイルを持つコード セット間で、コード セット変換を実行できます。
IBM Informix 製品がコード セット情報を取得する必要があるときは、次の表にあ
るいずれかの GLS コード セット ファイルにアクセスします。
162
プラットフォーム
コード セット ファイル
UNIX
Windows
$INFORMIXDIR/gls/cmZ/code.cmo
%INFORMIXDIR%¥gls¥cmZ¥code.cmo
IBM Informix GLS: ユーザーズ ガイド
これらのパスでは、INFORMIXDIR は IBM Informix 製品をインストールするディ
レクトリを指定する環境変数であり、gls は GLS ファイルを含むサブディレクト
リです。また、Z は、コード セット オブジェクト ファイル フォーマットのバー
ジョン番号を表します。
各コード セット ファイルには、次の 2 つのフォームがあります。
v コード セット ソース ファイルは、文字セットの文字を記述する ASCII ファイ
ルです。
このファイルは、.cm 拡張子を持ち、対応するオブジェクト ファイルのマニュ
アルとして使用できます。
v コード セット オブジェクト ファイルは、コード セット情報のコンパイル済み
フォームです。
このオブジェクト ファイルは、ロケール オブジェクト ファイルを作成するため
に使用されます。オブジェクト コード セット ファイルの拡張子は、.cmo で
す。
Informix レジストリ ファイル (Windows のみ)
コード セット名マッピング ファイル (レジストリと呼ばれる) とは、コード セッ
ト名と別名をそのコード セット番号に関連付ける ASCII ファイルです。コード セ
ット番号は、IBM CCSID 番号付けスキーマに基づいています。 IBM Informix 製品
は、コード セット番号を使用してロケール/コードセット変換ファイルのファイル名
を判別します。
たとえば、ISO8859-1 コード セットをサポートするフランス語ロケールを、ロケー
ルの別名として次のロケール名を使用して指定できます。
v 完全なコード セット名
fr_fr.8859-1
v IBM CCSID 番号の 10 進数値
fr_fr.819
v IBM CCSID 番号の 16 進値
fr_fr.0333
最初の 2 つのフォームのいずれかでロケール名を指定するときは、IBM Informix
製品は、コード セット名マッピング ファイルを使用してコード セット名 (8859-1)
またはコード セット番号 (819) をコンデンス コード セット名 (0333) に変換しま
す。 IBM Informix 製品がコード セット名をコード セット番号に変更するために
使用する、ファイル形式と検索アルゴリズムについては、レジストリ ファイルの先
頭にあるコメントを参照してください。
IBM Informix 製品がロケールの別名についての情報を取得する必要があるときは、
次のパスにある GLS コード セット ファイルにアクセスします。
%INFORMIXDIR%¥gls¥cmZ¥registry
これらのパスでは、INFORMIXDIR は IBM Informix 製品をインストールするディ
レクトリを指定する環境変数であり、gls は GLS ファイルを含むサブディレクト
リです。また、Z は、コード セット オブジェクト ファイル フォーマットのバー
ジョン番号を表します。
付録. GLS ファイルの管理
163
警告: コード セット名マッピング ファイル、レジストリを Informix ディレクトリ
から削除しないでください。このファイルを修正しないでください。
IBM Informix 製品は、このファイルをすべてのロケールの言語処理のために
使用します。
未使用ファイルの削除
IBM Informix 製品には、次の GLS ファイルが含まれます。
v ロケール ファイル: ソース (*.lc) とオブジェクト (*.lco)
v コード セット変換ファイル: ソース (*.cv) とオブジェクト (*.cvo)
v コード セット ファイル: ソースのみ (*.cm)
ロケール/コードセット変換ファイルの削除
ディスク領域を節約するために、使用する予定のあるファイルのみを保持すること
ができます。本節では、Informix インストールから安全に削除できるファイルにつ
いて説明します。次の GLS ファイルを Informix インストールから安全に削除でき
ます。
v 使用する予定がないロケールについては 、そのロケール ソースとオブジェクト
ファイル (.lc と .lco) を Informix インストールの lcX サブディレクトリのサブ
ディレクトリから削除できます。
lcX パス名について詳しくは、158 ページの『ロケール ファイル サブディレク
トリ』を参照してください。
v 使用する予定がないコード セット変換については 、そのコード セット変換ソー
スとオブジェクト ファイル (.cv と .cvo) を Informix インストールの cvY サ
ブディレクトリのサブディレクトリから削除できます。
cvY パス名について詳しくは、161 ページの『コード セット変換ファイル名』を
参照してください。
警告: U.S. 8859-1 英語ロケールのロケール オブジェクト ファイル (en_us ロケー
ル ファイル サブディレクトリにある 0333.lco) は 削除しないでください。
その他に、コード セット名マッピング ファイル (レジストリ) を削除しない
でください。 IBM Informix 製品は、これらのファイルをすべてのロケールの
言語処理で使用します。
IBM Informix 製品はロケールおよびコード セット変換ファイルのソース バージョ
ンにはアクセスしないため、これらのファイルを安全に削除することができます。
ただし、これらのファイルは、サポートされているロケールおよびコード セット変
換のための、便利なオンライン マニュアルを提供します。十分なディスク領域があ
る場合は、Informix インストールがサポートする GLS ロケール (*.lc) およびコー
ド セット変換 (*.cv) のソース ファイルを保持しておくことをお勧めします。
コード セット ファイルの削除
コード セット ファイルのソース バージョン (.cm) は、そのコード セット ファ
イルを使用するロケールおよびコード セット変換のオンライン マニュアルとして
提供されています。 IBM Informix 製品はソース コード セット ファイルにアクセ
スしないため、これらのファイルを安全に削除することができます。ただし、十分
164
IBM Informix GLS: ユーザーズ ガイド
なディスク領域がある場合は、Informix インストールがサポートする GLS ロケー
ルおよびコード セット変換のソース ファイルを保持しておくことをお勧めしま
す。
glfiles ユーティリティ (UNIX のみ)
ファイル名が MS-DOS 8.3 レガシー フォーマットに準拠するように、
IBM Informix 製品はコンデンス ファイル名を使用して GLS ロケールとコード セ
ット変換ファイルを保管します。これらのファイル名は、エンド ユーザが使用する
ロケール名およびコード セット名とは一致しません。 glfiles ユーティリティを使
用して次の GLS 関連ファイルのリストを生成できます。
v ご使用のシステムで利用できる GLS ロケール
v ご使用のシステムで利用できる IBM Informix コード セット変換ファイル
v ご使用のシステムで利用できる IBM Informix コード セット ファイル
glfiles を実行する前に、次の手順を行ってください。
v INFORMIXDIR 環境変数 を、 IBM Informix 製品をインストールするディレクト
リに設定します。
INFORMIXDIR を設定しない場合は、glfiles は /usr/informix ディレクトリに
GLS ファイルがあるかどうかを調べます。
v glfiles によって生成されるファイルを入れたいディレクトリに移動します。
ユーティリティは、GLS ファイル リストをカレント ディレクトリに作成しま
す。
次のダイヤグラムは、glfiles ユーティリティの構文を示します。
glfiles
-lc
-cv
-cm
要素
目的
-cv
glfiles ユーティリティは、利用できるコード セット変換ファイル
をリストするファイルを作成します。
-lc
glfiles ユーティリティは、利用できる GLS ロケールをリストする
ファイルを作成します。
-cm
glfiles ユーティリティは、利用できる文字マッピング (charmap) フ
ァイルをリストするファイルを作成します。
コード セット変換ファイルのリスト
-cv コマンド行オプションを指定すると、glfiles ユーティリティは、利用できるコ
ード セット変換ファイルをリストするファイルを作成します。
$INFORMIXDIR/gls 内の各 cvY サブディレクトリごとに、glfiles は、cvY.txt と
いう名前のファイルをカレント ディレクトリに作成します。ここで Y はコード セ
ット変換ファイル フォーマットのバージョン番号です。 cvY.txt ファイルは、オブ
ジェクト コード セット変換ファイルの名前でソートされたコード セット変換をア
ルファベット順にリストします。
付録. GLS ファイルの管理
165
両方向コード セット変換の場合は、$INFORMIXDIR/gls/cvY ディレクトリに、2
つのコード セット変換ファイルが含まれます。一方のファイルがコード セット A
内の文字から、コード セット B 内のマッピングへの変換をサポートし、もう一方
のファイルが逆方向の変換 (コード セット B からコード セット A) をサポートし
ます。両方向コード セット変換について詳しくは、160 を参照してください。
図 6 は、利用できるコード セット変換をリストするファイル cv9.txt を示しま
す。
Filenames: cv9/002501b5.cvo and cv9/01b50025.cvo
Between Code Set: Greek
and Code Set: IBM CCSID 437
Filenames: cv9/00250333.cvo and cv9/03330025.cvo
Between Code Set: Greek
and Code Set: ISO8859-1
Filenames: cv9/033304e4.cvo and cv9/004e40333.cvo
Between Code Set: 8859-1
and Code Set: 1252
図 6. Informix コード セット変換ファイルのサンプル glfiles ファイル
cvY.txt ファイルを調べて、ご使用のシステム上の $INFORMIXDIR/gls/cvY ディレ
クトリがサポートするコード セット変換を判別します。
GLS ロケール ファイルのリスト
glfiles ユーティリティは、使用可能な GLS ロケールをリストするファイルを次の
方法で作成できます。
v -lc コマンド行オプションを指定する場合
v すべてのコマンド行オプションを省略する場合
INFORMIXDIR 内に指定された gls ディレクトリ内の各 lcX サブディレクトリご
とに、glfiles は、lcX.txt という名前のファイルをカレント ディレクトリに作成し
ます。ここで X はロケール オブジェクト ファイル フォーマットのバージョン番
号です。 lcX.txt ファイルは、GLS ロケール オブジェクト ファイルの名前でソー
トされたロケールをアルファベット順にリストします。
図 7 は、利用できる GLS ロケールを含むサンプル ファイル lc11.txt を示しま
す。
166
IBM Informix GLS: ユーザーズ ガイド
Filename: lc11/ar_ae/0441.lco
Language: Arabic
Territory: United Arabic Emirates
Modifier: greg
Code Set: 8859-6
Locale Name: ar_ae.8859-6
Filename: lc11/ar_ae/0441greg.lco
Language: Arabic
Territory: United Arabic Emirates
Modifier: greg
Code Set: 8859-6
Locale Name: ar_ae.8859-6
. . .
Filename: lc11/en_us/0333.lco
Language: English
Territory: United States
Code Set: 8859-1
Locale Name: en_us.8859-1
Filename: lc11/en_us/0333dict.lco
Language: English
Territory: United States
Modifier: dict
Code Set: 8859-1
Locale Name: en_us.8859-1
Filename: lc11/en_us/0352.lco
Language: English
Territory: United States
Code Set: PC-Latin-1
Locale Name: en_us.PC-Latin-1
Filename: lc11/en_us/04e4.lco
Language: English
Territory: United States
Code Set: CP1252
Locale Name: en_us.CP1252
. . .
図 7. GLS ロケールのサンプル glfiles ファイル
lcX.txt ファイルを調べて、ご使用のシステム上の $INFORMIXDIR/gls/lcX ディレ
クトリがサポートする GLS ロケールを判別します。
Windows のみ
Windows システムで利用できる GLS ロケールを見つけるには、GLS システム デ
ィレクトリ内を検索する必要があります。 GLS ロケールは、次のファイルにあり
ます。
%INFORMIXDIR%¥gls¥lcX¥lg_tr¥codemodf.lco
このパスでは、INFORMIXDIR は、IBM Informix 製品をインストールするディレク
トリを指定する環境変数で、gls は GLS システム ファイルを含むサブディレクト
リです。X はロケール ファイル フォーマットのバージョン番号を表します。lg は
2 文字の言語名で、tr はロケールがサポートする 2 文字の地域名で、さらに
付録. GLS ファイルの管理
167
codemodf はコンデンス ロケール名です。
Windows のみ の終り
文字マッピング ファイルのリスト
-cm コマンド行オプションを指定すると、glfiles ユーティリティは、利用できる文
字マッピング (charmap) ファイルをリストするファイルを作成します。
$INFORMIXDIR/gls 内の各 cmZ サブディレクトリごとに、glfiles は、cmZ.txt と
いう名前のファイルをカレント ディレクトリに作成します。ここで Z は charmap
オブジェクト ファイル フォーマットのバージョン番号です。 cmZ.txt ファイル
は、GLS オブジェクト charmap ファイルの名前でソートされた文字マッピングを
アルファベット順にリストします。
図 8 は、利用できる文字マッピングを含むサンプル ファイル cm3.txt を示しま
す。
Filename: cm3/032d.cm
Code Set: 8859-7
Filename: cm3/0333.cm
Code Set: 8859-1
Filename: cm3/0352.cm
Code Set: PC-Latin-1
Filename: cm3/04e4.cm
Code Set: CP1252
図 8. Informix 文字マッピング ファイルのサンプル glfiles ファイル
cmZ.txt ファイルを調べて、ご使用のシステム上の $INFORMIXDIR/ gls/cmZ ディ
レクトリがサポートする文字マッピングを判別します。
168
IBM Informix GLS: ユーザーズ ガイド
特記事項
本書に記載の製品、サービス、または機能が日本においては提供されていない場合
があります。日本で利用可能な製品、サービス、および機能については、日本 IBM
の営業担当員にお尋ねください。本書で IBM 製品、プログラム、またはサービス
に言及していても、その IBM 製品、プログラム、またはサービスのみが使用可能
であることを意味するものではありません。これらに代えて、IBM の知的所有権を
侵害することのない、機能的に同等の製品、プログラム、またはサービスを使用す
ることができます。ただし、IBM 以外の製品とプログラムの操作またはサービスの
評価および検証は、お客様の責任で行っていただきます。
IBM は、本書に記載されている内容に関して特許権 (特許出願中のものを含む) を
保有している場合があります。本書の提供は、お客様にこれらの特許権について実
施権を許諾することを意味するものではありません。実施権についてのお問い合わ
せは、書面にて下記宛先にお送りください。
〒106-0032
東京都港区六本木 3-2-31
IBM World Trade Asia Corporation
Licensing
以下の保証は、国または地域の法律に沿わない場合は、適用されません。IBM およ
びその直接または間接の子会社は、本書を特定物として現存するままの状態で提供
し、商品性の保証、特定目的適合性の保証および法律上の瑕疵担保責任を含むすべ
ての明示もしくは黙示の保証責任を負わないものとします。国または地域によって
は、法律の強行規定により、保証責任の制限が禁じられる場合、強行規定の制限を
受けるものとします。
この情報には、技術的に不適切な記述や誤植を含む場合があります。本書は定期的
に見直され、必要な変更は本書の次版に組み込まれます。 IBM は予告なしに、随
時、この文書に記載されている製品またはプログラムに対して、改良または変更を
行うことがあります。
本書において IBM 以外の Web サイトに言及している場合がありますが、便宜のた
め記載しただけであり、決してそれらの Web サイトを推奨するものではありませ
ん。それらの Web サイトにある資料は、この IBM 製品の資料の一部ではありませ
ん。それらの Web サイトは、お客様の責任でご使用ください。
IBM は、お客様が提供するいかなる情報も、お客様に対してなんら義務も負うこと
のない、自ら適切と信ずる方法で、使用もしくは配布することができるものとしま
す。
本プログラムのライセンス保持者で、(i) 独自に作成したプログラムとその他のプロ
グラム(本プログラムを含む)との間での情報交換、および (ii) 交換された情報の
相互利用を可能にすることを目的として、本プログラムに関する情報を必要とする
方は、下記に連絡してください。
IBM Corporation
© Copyright IBM Corp. 1996, 2003
169
J46A/G4
555 Bailey Avenue
San Jose, CA 95141-1003
U.S.A.
本プログラムに関する上記の情報は、適切な使用条件の下で使用することができま
すが、有償の場合もあります。
本書で説明されているライセンス・プログラムまたはその他のライセンス資料は、
IBM 所定のプログラム契約の契約条項、IBM プログラムのご使用条件、またはそれ
と同等の条項に基づいて、 IBM より提供されます。
この文書に含まれるいかなるパフォーマンス・データも、管理環境下で決定された
ものです。そのため、他の操作環境で得られた結果は、異なる可能性があります。
一部の測定が、開発レベルのシステムで行われた可能性がありますが、その測定値
が、一般に利用可能なシステムのものと同じである保証はありません。さらに、一
部の測定値が、推定値である可能性があります。実際の結果は、異なる可能性があ
ります。お客様は、お客様の特定の環境に適したデータを確かめる必要がありま
す。
IBM 以外の製品に関する情報は、その製品の供給者、出版物、もしくはその他の公
に利用可能なソースから入手したものです。IBM は、それらの製品のテストは行っ
ておりません。したがって、他社製品に関する実行性、互換性、またはその他の要
求については確証できません。 IBM 以外の製品の性能に関する質問は、それらの
製品の供給者にお願いします。
IBM の将来の方向または意向に関する記述については、予告なしに変更または撤回
される場合があり、単に目標を示しているものです。
表示されている IBM の価格は IBM が小売り価格として提示しているもので、現行
価格であり、通知なしに変更されるものです。卸価格は、異なる場合があります。
本書には、日常の業務処理で用いられるデータや報告書の例が含まれています。よ
り具体性を与えるために、それらの例には、個人、企業、ブランド、あるいは製品
などの名前が含まれている場合があります。これらの名称はすべて架空のものであ
り、名称や住所が類似する企業が実在しているとしても、それは偶然にすぎませ
ん。
著作権使用許諾:
本書には、様々なオペレーティング・プラットフォームでのプログラミング手法を
例示するサンプル・アプリケーション・プログラムがソース言語で掲載されていま
す。お客様は、サンプル・プログラムが書かれているオペレーティング・プラット
フォームのアプリケーション・プログラミング・インターフェースに準拠したアプ
リケーション・プログラムの開発、使用、販売、配布を目的として、いかなる形式
においても、IBM に対価を支払うことなくこれを複製し、改変し、配布することが
できます。このサンプル・プログラムは、あらゆる条件下における完全なテストを
経ていません。従って IBM は、これらのサンプル・プログラムについて信頼性、
利便性もしくは機能性があることをほのめかしたり、保証することはできません。
お客様は、IBM のアプリケーション・プログラミング・インターフェースに準拠し
170
IBM Informix GLS: ユーザーズ ガイド
たアプリケーション・プログラムの開発、使用、販売、配布を目的として、いかな
る形式においても、IBM に対価を支払うことなくこれを複製し、改変し、配布する
ことができます。
それぞれの複製物、サンプル・プログラムのいかなる部分、またはすべての派生的
創作物にも、次のように、著作権表示を入れていただく必要があります。
© (お客様の会社名) (西暦年). このコードの一部は、IBM Corp. のサンプル・プ
ログラムから取られています。 © Copyright IBM Corp. (西暦年 (複数可)).All
rights reserved.
この情報をソフトコピーでご覧になっている場合は、写真やカラーの図表は表示さ
れない場合があります。
特記事項
171
商標
AIX; DB2; DB2 Universal Database; Distributed Relational Database Architecture;
NUMA-Q; OS/2、OS/390、および OS/400; IBM Informix®; C-ISAM®;
Foundation.2000™; IBM Informix® 4GL; IBM Informix®DataBlade®Module; Client
SDK™; Cloudscape™; Cloudsync™; IBM Informix®Connect; IBM Informix®Driver for
JDBC; Dynamic Connect™; IBM Informix®Dynamic Scalable Architecture™(DSA);
IBM Informix®Dynamic Server™; IBM Informix®Enterprise Gateway Manager
(Enterprise Gateway Manager); IBM Informix®Extended Parallel Server™; i.Financial
Services™; J/Foundation™; MaxConnect™; Object Translator™; Red Brick™; IBM
Informix® SE; IBM Informix® SQL; InformiXML™; RedBack®; SystemBuilder™; U2™;
UniData®; UniVerse®; wintegrate® は IBM Corporation の商標です。
Java およびすべての Java 関連の商標およびロゴは、Sun Microsystems, Inc. の米国
およびその他の国における商標または登録商標です。
Windows、Windows NT および Excel は、Microsoft Corporation の米国およびその
他の国における商標です。
UNIX は、The Open Group がライセンスしている米国およびその他の国における登
録商標です。
本書で言及しているその他の会社名、製品名およびサービス名はそれぞれ各社の商
標または登録商標です。
172
IBM Informix GLS: ユーザーズ ガイド
索引
日本語, 数字, 英字, 特殊文字の
順に配列されています。なお, 濁
音と半濁音は清音と同等に扱われ
ています。
重要
xi
定義
25, 29
22, 23
14, 22, 34, 48, 54, 113,
制限
アスタリスク記号 ( * ), MATCHES 演算
子 89
アルファクラス 67
アンロード ファイル 100
依存関係、ソフトウェア viii
一重引用符 ( ’ ) 66
102
引用符付き文字列 66, 75
上から下への文字方向 19
埋込み特殊文字 102
英字 9, 67
英語ロケール 25, 159
エスケープ文字 90, 102
エラー メッセージ
コード セット変換
126
国際化 113
数値フォーマット 148
DATE フォーマット 148
DATETIME フォーマット 148
GLS 特有の 148
エラー メッセージ ファイル 128
エラー メッセージ用メッセージ ファイル
xviii
演算子クラス 64
エンド ユーザ フォーマット
拡張 DATE フォーマット文字列 141
拡張 DATETIME フォーマット文字列
143
カスタマイズ 34
環境変数 14
時刻データ 14, 23, 34, 53, 158
時刻フォーマット修飾子 55
出力 14, 52, 56
数値データ 14, 23, 113, 157
走査 14, 56
© Copyright IBM Corp. 1996, 2003
71
コード セット変換
14
オペレーティング システム
コード セット変換の必要性
4
139
および GLS 6
各国語可変長文字 (NVARCHAR) 型と
の違い
ロケール カテゴリ
xi
ESQL/C プログラム
69
44
各国語可変長文字 (NVARCHAR) 型へ
の変換 44
51
大文字小文字についての SQL 関数
アジア言語サポート (ALS)
文字 (CHAR) 型との違い
文字 (CHAR) 型への変換
可変長文字 (VARCHAR) 型
12, 35, 36
日付フォーマット修飾子
変換修飾子 50, 55
製品 xi
ヒント xi
プラットフォーム
印刷不可能文字
データベース サーバに送信
158
アイコン
xi
xi
各国語文字 (NCHAR) 型 (続き)
通貨データ 14, 23, 36, 43, 113, 157
データのフォーマット 113, 130
デフォルト
日付データ
[ア行]
機能
警告
エンド ユーザ フォーマット (続き)
81
33
照合順序
125
12
GLS に関する性質
環境変数
73
エンド ユーザ フォーマットの
136
ディスク領域の節約 164
文字エンコード 32
8 ビット透過 8, 47
14
クライアント ロケールの優先順位 18
サーバ処理ロケールの優先順位 28,
30
オンライン ヘルプ xvii
オンライン マニュアル xvii
通貨データの優先順位 36, 145
日時 (DATETIME) 型データの優先順
位 35, 143
[カ行]
日付 (DATE) 型データの優先順位
35, 142
カーソル 4, 5, 64, 110, 126, 134
外部表 101
ロケール 106
ロケール関連 23
型が不明なデータの外部表現
型変換 (キャスト) 64
CC8BITLEVEL 38, 138
CLIENT_LOCALE 23, 39
DBCENTURY 50
121
各国語可変長文字 (NVARCHAR) 型
印刷不可能文字 71
可変長文字 (VARCHAR) 型との違い
71
可変長文字 (VARCHAR) 型への変換
44
コード セット変換 6, 125
照合順序 12, 71
正規表現内 4
説明 70
データベースへの挿入 139
マルチバイト文字 71
ESQL/C プログラム 139
各国語サプリメント (ILS) 7
各国語サポート (NLS) 4
各国語文字 (NCHAR) 型
印刷不可能文字 70
コード セット変換 6, 125
照合順序 12, 69
数値 69, 70
正規表現内 4
説明 68
データベースへの挿入 139
マルチバイト文字 69
DBDATE 40
DBLANG 40, 129
DBMONEY 43
DBNLS 43, 124
DBTIME 44
DB_LOCALE 23, 41
DELIMIDENT 66, 75
ESQLMF 45, 138
GLS 関連 38
GLS8BITFSYS 45
GL_DATE 48
GL_DATETIME 53
GL_PATH 34
INFORMIXDIR 129
SERVER_LOCALE 23, 58
関係演算子条件 85
韓国語ロケール 25
漢字文字 67
関数、大文字と小文字を区別する
キーワード
構文ダイヤグラムの xiii
疑似ユーザ 65
81
173
クライアント ロケール (続き)
規則
構文記法 xi
構文ダイヤグラム
マニュアル
機能アイコン
NUMERIC カテゴリ
TIME カテゴリ 18
xi
環境変数の設定
89
64
業界標準、準拠 xix
ギリシャ アルファベット
キリル アルファベット
定義
67
格納場所
クライアント ロケール 17, 25
コード セット変換 30, 33
削除
説明
サーバ ロケール
ソース
21
ロケール
43
ゲートウェイと GLS
48,
49, 53
ロケール内 48, 155
区切り記号、バイト (BYTE) 型およびテ
163
15
115
クライアント アプリケーションによる
34
123
カスタム 114
警告アイコン xi
実行 32, 105, 125
シンプル ラージ オブジェクトの
結合条件 85
言語
クライアント アプリケーションの
126, 149
制限 31
データ消失エラー
キスト (TEXT) 型データ 102
クライアント アプリケーション
コード セット 32
データベース サーバの
エンド ユーザ フォーマット 12
クライアント ロケールの使用 17
126
カーソル名の 126
各国対応エラー メッセージおよび
警告 26, 29, 125
14, 36, 96
空白
フォーマット ディレクティブ内
164
7, 162
エラー メッセージ テキストの
32
グレゴリオ暦でない暦
36, 145
163
163
リスト 168
コード セット変換
7, 16
グラフィック置換変換
グレゴリオ暦 15
95
内部フォーマット
オブジェクト
23
サーバ処理ロケール 27
データベース ロケール 19
67
金額 (MONEY) 型
エンド ユーザ フォーマット
環境変数の優先順位
UTF-8 12
コード セット ファイル
クライアント/サーバ環境
x
xi
基本多言語面 (BMP) 32
疑問符 ( ? ) ワイルドカード
行 (row) 型
コード セット (続き)
18
データベースの
デフォルト 22
17
31
データベース サーバによる
テーブル名の 126
21
定義 30
不透明 (OPAQUE) 型の
19
105
112
クライアント ロケールをサーバに送信
25, 30
コード セット変換 123, 124
ロケール名 26, 42, 58, 158
現行処理ロケール 108, 117
検索関数 81
文 ID の 126
変換されたデータ 125
ミスマッチする文字 31, 162
接続の確立
接続の検査
123
26, 29, 125
コード セット
クライアント アプリケーションの
ミスマッチする文字の処理 31
ラージ可変長文字 (LVARCHAR) 型の
接続の要求
定義 4
19, 25
別のデータベースのオープン
ロケールの検証 124
ロケールのサポート 4, 7
31, 123
クライアント コード セット
29, 125
決定 24, 31
コード ポイント
互換性 4
31
8, 72
ロケールの設定 7, 18, 23
クライアント コード セット 31, 123,
互換性がない
コンデンス名
124
クライアント コンピュータ
クライアント コード セット 30
コード セット変換ファイル 124
CLIENT_LOCALE の設定 23
DB_LOCALE の設定 23
クライアント ロケール
カスタマイズ 34
決定 18
コード セット 31, 123
サンプル 18
設定 23
データベース サーバに送信 25
定義 17
COLLATION カテゴリ 18
CTYPE カテゴリ 18
ESQL/C ソース ファイル 134
MESSAGES カテゴリ 158
MONETARY カテゴリ 18
サーバ コード セット 31
シングルバイト 8, 77, 79, 91
ソース 30, 31
ターゲット 30, 31
データベース コード セット 31
データベース サーバの 31, 123
データベースの 31, 123
定義 8
デフォルト 9, 22, 24
ファイル名への影響 47
変換可能 24, 124, 125
マルチバイト 9, 77, 78, 92, 130
文字クラス 9
ロケール名 22, 26, 42, 58
ワイド文字フォーム 111
1252 8
8859-1 8, 22, 159
ASCII 8, 22
GB18030-2000 9
174
IBM Informix GLS: ユーザーズ ガイド
124
20, 22, 34, 159
126
両方向 162
列名の 126
レジストリ ファイル 163, 164
CLIENT_LOCALE のロール 105, 124
DataBlade API による 111
DB_LOCALE のロール 105, 124
ESQL/C プログラム 148
SERVER_LOCALE のロール
SQL データ型の 125
SQL 文の 126
コード セット変換ファイル
オブジェクト 161, 164
格納場所 161
削除、未使用の 164
説明 7, 160
ソース 32, 161, 164
リスト 124, 165
コード ポイント 8, 10, 72
コード、サンプル、規則 xiv
コード例の表記 xiv
広域言語サポート (GLS) 43
構成パラメータ 104
構文ダイヤグラム
キーワード xiii
規則 xi
105
構文ダイヤグラム (続き)
変数
国際化
時刻データ
エンド ユーザ フォーマット
xiv
34, 158
エラー メッセージ
113, 130
定義 126
トレース メッセージの
文字の処理
環境変数の優先順位
113
データのフォーマット
117
ロケール特有の
システム要件
引数 107
コマンド行の規則
実数 (FLOAT) 型
シノニム 65
読み方
34
コメント アイコン
x
制約
viii
コメント標識変数
76
業界標準への
サーバ コード セット
サーバ コンピュータ
31
サーバ コード セット 30
DB_LOCALE の設定 23
SERVER_LOCALE の設定 23
サーバ ロケール
31
xi
環境変数の優先順位
決定 27
コード セット変換
時刻データ 29
118
28, 30
105
初期化 27
数値データ 29
通貨データ 29
定義 27
日付データ 29
ファイル名検査 105
例外メッセージの 117
ローカライズ順の照合 28
COLLATION カテゴリ 29
CTYPE カテゴリ 29
MESSAGES カテゴリ 30
MONETARY カテゴリ 30
NUMERIC カテゴリ 30
TIME カテゴリ 30
UDR および 109
サブ文字列 76, 80
シーケンス 64
識別子
区切り記号付き 63
非 ASCII 文字 63
64, 110, 134
viii
[タ行]
代替フォーマット
xix
時刻
日付
55, 143
50, 141
台湾における日付
15, 35
関係演算子 85
BETWEEN 86
地域 22, 26, 39, 42, 58, 158
置換変換 31
チャンク 63
IN 87
LIKE 89
中国語ロケール
MATCHES 87
照合
各国語可変長文字 (NVARCHAR) 型
71
各国語文字 (NCHAR) 型
定義 21
トレース メッセージの
サーバ処理ロケール
157
ソフトウェア依存関係
36, 157
小桁実数 (SMALLFLOAT) 型 157
小桁整数 (SMALLINT) 型 157
条件
[サ行]
25
4, 20
整数 (INTEGER) 型
製品アイコン xi
20
重要パラグラフのアイコン
準拠
70
14
スキーマ名 65
スペイン語ロケール
正規表現
射影節 79
xii
38, 39, 76, 134
コード セット
使用 103
設定 23
数値表記
4, 13
システム カタログ
コマンド行
3 桁区切り記号 14, 23, 145, 156
ESQL 関数 144
数値内のゼロ
36, 143
フォーマット 157
フォーマットのカスタマイズ
DBTIME 44
GL_DATE 53
110, 129
C UDR および 108
UDR および 108
コメント
数値データ (続き)
23, 29,
重量
定義
69
155
9
等価クラス 11, 84, 87, 89, 156
文字データ 81
Unicode 照合 12
照合順序
影響を受けるタスク 9
コード セット 10, 12, 72
タイプ 10
ローカライズ済み 4, 10, 12, 28, 39,
42, 58, 72
小数点記号 14, 23, 97, 145, 155, 156,
157
省略形 15
所有者名 65
シングルバイト文字 8, 77, 79
診断ファイル 21, 103
シンプル ラージ オブジェクト 101
数値データ
エンド ユーザ フォーマット 13, 23,
29, 157
小数点記号 14, 23, 145, 156
正 14, 23, 156
通貨表記 144
負 14, 23, 156
フォーマット 156
ロケール特有の 4
25
通貨記号 14, 23, 97, 145, 157
通貨データ
エンド ユーザ フォーマット
23, 29,
36, 157
環境変数の優先順位 36, 145
小数点記号 14, 23, 97, 145, 157
正
14, 23, 157
通貨記号 14, 23, 97, 145, 157
通貨表記 13, 97, 157
デフォルト小数点以下桁数 96
負 14, 23, 157
フォーマット 157
ロケール特有の 4
3 桁区切り記号
14, 23, 97, 145, 157
通貨表記 14, 36, 43
データ
転送 27
破損 18, 19
変換 125
文字 68
データ型
各国語可変長文字 (NVARCHAR) 型
6, 70, 125, 139
各国語文字 (NCHAR) 型 6, 68, 125,
139
可変長文字 (VARCHAR) 型 73, 125
コード セット変換 125
実数 (FLOAT) 型 157
小桁実数 (SMALLFLOAT) 型 157
小桁整数 (SMALLINT) 型 157
照合順序 12
数値 157
整数 (INTEGER) 型 157
索引
175
データ型 (続き)
データベース サーバ (続き)
ディスティンクト 97
テキスト (TEXT) 型 74, 126
メッセージ ログ ファイル
文字データの解釈 19
内部フォーマット
ユーティリティ
12
104
[ナ行]
二重引用符 ( ″ )
66
日時 (DATETIME) 型
エンド ユーザ フォーマット
4, 106
日時 (DATETIME) 型 158
ログ ファイル名
バイト (BYTE) 型 126
バイナリ ラージ オブジェクト
ロケールのサポート 4, 7
ロケールの設定 7, 23
拡張フォーマット文字列
DB_LOCALE の使用
環境変数の優先順位 36, 143
内部フォーマット 15
(BLOB) 型
98
日付 (DATE) 型
複合 97
不透明
警告
検証
文字ラージ オブジェクト (CLOB) 型
サンプル
ラージ可変長文字 (LVARCHAR) 型
命名
ロケールを区別する 19, 28, 68, 95,
139
10 進数 (DECIMAL) 型 157
データベース
アンロード
62
照合順序
部分文字
命名 62
データベース コード セット
20, 26
31, 123,
124
データベース サーバ
エンド ユーザ フォーマット 13
オペレーティング システム ファイル
103
クライアント ロケールの使用 25, 26
コード セット変換 33, 105
サーバ ロケールの使用 21, 103
サーバ処理ロケールの決定 25, 27
サンプルの接続 16
識別子 63
照合 12
診断ファイル 103
接続の検査 25, 123
チャンク名 63
データベース ロケールの検証 26, 29
内部フォーマット 12
マルチバイト ファイル名 63
マルチバイト文字 106
117
12
80
15, 35
118
126, 148
バイナリ ラージ オブジェクト (BLOB)
型、検索 98
ハイパフォーマンス ローダ (HPL)
パス名 63, 66
パラメータ マーカ 117
範囲一致 88
非 ASCII 文字
インデックス名内
引用符付き文字列内
101
64
75
クライアント アプリケーションの 23
データベース サーバの 23
デフォルト コード セット 22, 24,
演算子クラス名内 64
カーソル名内 4, 5, 64, 110, 134
型変換 (キャスト) 名内 64
160
必須 164
行 (ROW) 型名内 64
区切り識別子内 63
コメント内 38, 39, 134
サポート 25
シーケンス名内 64
シノニム名内 65
処理 38, 137
所有者名内 65
制約名内 64, 110, 134
接続名内 64
データベース名内 64, 110, 134
定義 8
ディスティンクト (distinct) 型名内
64
トリガ内 65
トリガ名内 65
ビュー名内 4, 5, 65, 110, 134
標識変数内 5, 134
表名内 4, 5, 65, 110, 134
ファイル名内 46, 64, 110, 134
フィルタ処理 136
ロケール名 22
デモンストレーション データベース viii
トークン名 118
ドイツ語ロケール 18, 21, 25, 159
統一中国語コード セット (GB18030) 9,
32
ドキュメント ノート xviii
トリガ 65
ドル記号 ($)
識別子内 62
書式制御文字 146
通貨記号 155
トレース
トレース ブロック 118
トレース メッセージ 120
GL_DPRINTF マクロ 118
gl_tprintf() 関数 118
トレース ブロック 118
トレース メッセージ 117
IBM Informix GLS: ユーザーズ ガイド
24, 25, 29, 125
日本元号の日付
認証識別子 65
コード セット変換
部分文字 80
GLS に関する性質 74
デフォルト ロケール viii
ロケール情報の保存 20
データベース オブジェクト
および DB-Access 5
142
67
日本語ロケール
パーセント (%) 記号
バイト (BYTE) 型
定義 19
UDR トレース メッセージの
100
54
[ハ行]
ディスティンクト (distinct) 型 64
テキスト (TEXT) 型
コード セット変換 126, 148
命名 64, 110, 134
ロード 99
176
64
システム カタログ内
設定 23
可変長文字 (NVARCHAR) 型 44
文字 (CHAR) 型と各国語文字
(NCHAR) 型 44
データ消失エラー 31
データ定義言語 (DDL)
18
18
検証 19, 26, 29
コード セット 31, 123
互換性がない 26
データ型の変換
可変長文字 (VARCHAR) 型と各国語
元号ベース日付 35
ESQL ライブラリ関数
日本語 UJIS ロケール
例 21
データベース ロケール
148
143
フォーマット ディレクティブ
25
26
25, 26, 29, 123
サーバ処理ロケール
98
74, 121
ロケータ構造体
20
クライアント ロケール情報
72, 125
23, 34,
44, 53, 158
データベース サーバ接続
確立 25, 123
158
97, 112, 120
文字 68
文字 (CHAR) 型
63
非 ASCII 文字 (続き)
ファイル (続き)
不透明 (opaque) 型名内 64
文識別子内 4, 5, 64, 110, 134
ホスト変数内
5, 64, 134
リテラル文字列内
列名内
例 24
UNLOAD TO
ファイル拡張子
.c
38, 39, 110, 134
4, 5, 64, 110, 134
ロール名内
100
マイナス記号 (-)
単項演算子
マシン ノート
129, 138
.cm
163, 165
.cvo
.c_ 138
.ec 129, 138
GLS8BITFSYS 環境変数
.iem
46
大文字小文字の切り替え
SQL コメント内
.o
UNLOAD TO ファイル内
左から右への文字方向
日付 (DATE) 型
生成
100
内
エンド ユーザ フォーマット 22, 34,
40, 48, 158
拡張フォーマット文字列 141
環境変数の優先順位 35, 142
内部フォーマット 12, 15
46, 135
日付データ
エンド ユーザ フォーマット
34, 158
空白 49
フィールド仕様
22, 29,
環境変数の優先順位 35, 142
代替フォーマット 50
フォーマット 157
フォーマットのカスタマイズ
無効な文字 46
7 ビット透過 46
8 ビット透過 8
フォーマット 130
フォーマット ディレクティブ
140
複数文字照合要素
符号なし short 型
34
51, 52, 56
フィールドの精度 52, 56
フィールドの幅 52, 56
変換修飾子 35, 51
GL_DATE 49
GL_DATETIME
54
156
111
ロケール特有の 4, 13
GL_DATE の設定 48
ビュー 4, 5, 65, 110, 134
不透明 (opaque) 型
識別子 64
太文字 x
表 (データベース)
外部 101
部分文字 78, 130
ブラケット { }
コード セット変換 126
命名 4, 5, 65, 110, 134
標識変数 5, 134, 135
非ラテン アルファベット 67
ヒント アイコン xi
ファイル
診断 21, 103
テキスト 99
メッセージ 21, 33, 34, 40
レジストリ 7, 163, 164
ログ 21, 104
ロケール オブジェクト ファイル
ロケール ソース ファイル 159
cmZ.txt 168
cvY.txt 165
Informix プロプラエタリ 21
lcX.txt 166
LOAD FROM 100
sqexplain.out 21
サブ文字列演算子 76
MATCHES 演算子での範囲 88
プラットフォーム アイコン xi
フランス語ロケール 13, 14, 25, 29, 39,
42, 58, 67, 125, 159
プログラム グループ xviii
文識別子 4, 5, 64, 110, 126, 134
平成 15
別名 7, 64
ヘルプ xvii
変換関数 130
変換修飾子 35, 50, 55
変数、構文ダイヤグラム内の xiv
ホスト変数
エンド ユーザ フォーマット 12
命名 5, 64, 134
ESQL/C 例 134, 135
159
71
各国語文字 (NCHAR) 型列内
関数名内 64
妥当性検査 105
非 ASCII 46, 63, 64, 110, 134, 135
19
元号ベース日付 35
ESQL ライブラリ関数
各国語可変長文字 (NVARCHAR) 型列
138
ファイル名
109
148
カーソル名内 4, 5, 64, 110, 134
型変換 (キャスト) 名内 64
41
.lc 159, 161, 164
.lco 159, 164
UDR ソース ファイル内
64
引用符付き文字列内 75
演算子クラス名内 64
LOAD FROM ファイル内 100
SPL ルーチン内 5, 64, 65
76
111
インデックス名内
161, 164
CC8BITLEVEL 環境変数 38
ESQL ファイル名内 135
155
xviii
マルチバイト文字
.cmo 163
.cv 32, 161, 164
64
[マ行]
64, 97, 112, 120
行 (ROW) 型名内
69
64
区切り識別子内 63
コメント内 38, 39, 134
サポート 25
シーケンス名内 64
シノニム名内 65
処理 38, 129, 137
所有者名内 65
数値フォーマットの
制約名内
接続名内
144
64, 110, 134
64
データ型名内 64
データベース サーバ ファイル名内
63
データベース サーバ ユーティリティ
における 106
データベース名内
定義 8
64, 110, 134
トリガ内 65
トリガ名内 65
ビュー名内 4, 5, 65, 110, 134
標識変数内 5, 134
表の別名内 64
表名内 4, 5, 65, 110, 134
ファイル名内 25, 46, 64, 110, 134
フィルタ処理 136
不透明 (opaque) 型名内 64
部分文字 78, 130
プロシジャ名内 64
文識別子内 4, 5, 64, 110, 134
ホスト変数内 5, 64, 134
リテラル文字列内 38, 39, 110, 134
ルーチン名内 64
列サブ文字列 77
列名内 4, 5, 64, 110, 134
ロール名内 64
C コンパイラによるサポート 109,
136
CC8BITLEVEL 環境変数 38
ESQL ファイル名内 135
索引
177
マルチバイト文字 (続き)
DBTIME フォーマット
DELETE 文内 99
SPL ルーチン内
5, 64, 65
GL_DATE フォーマット
SQL コメント内
76
GL_DATETIME フォーマット
UNLOAD TO ファイル内
右から左への文字方向 19
民国年形式
100
15, 35
メッセージ ファイル
格納場所の指定 34, 40
言語特有
34
およびコード セット変換
非 ASCII 文字 47
GLS に関する性質 74
TRIM サポートなし 152
文字の大文字小文字のシフト
7 ビット 8
ラウンド トリップ変換
リソース ファイル
リテラル一致
117
IBM Informix GLS API
および GLS 6
各国語文字 (NCHAR) 型との違い
各国語文字 (NCHAR) 型への変換
コード セット変換 125
69
44
72
文字データ
解釈 19, 28
照合 28, 81, 155
データ型 68
等価文字 11, 84, 87, 156
破損の回避 125
変換 30, 125
マッピング 153
ロケールを使用した処理 4
ESQL 関数 148
文字方向 19
文字マッピング ファイル 168
元号年形式 15
元号ベース日付
拡張フォーマット文字列 141, 143
サンプル 15
定義 15
ロケールに定義済み 157
DATE フォーマット関数 140
DATETIME フォーマット関数 142
DBDATE フォーマット 140
IBM Informix GLS: ユーザーズ ガイド
128
87, 89
列 (データベース)
109
リテラル文字列 110
例外メッセージ 113
ロケール サポート 108
SQL 識別子名 110
ユーティリティ
データベース サーバ
31
リテラル文字列 12, 38, 39, 110, 134
リリース ノート xviii
108
非 ASCII ソース コード
ファイル名 110
文字列 110, 111
8 ビット 8
ASCII 8
文字 (CHAR) 型
121
ランタイム エラー、カスタム メッセージ
114
64
トレース メッセージ
148
12
不透明 (OPAQUE) 型の表記
99
現行処理ロケール 108
コード セット変換 111
部分 78, 130
ミスマッチ 31, 162
126
UPDATE 文内
各国対応
33
および GLS 6
コード セット変換
照合順序
ユーザ定義ルーチン (UDR)
文字
印刷不可能 70, 71
シングルバイト 8, 77
178
35
ユーザ定義プロシジャ 64
ユーザ定義ルーチン 64
メッセージ ログ
照合順序 12
GLS に関する性質
文字セット 8, 163
ラージ可変長文字 (LVARCHAR) 型
35, 50
INSERT 文内 99
SQL 文内 99
ユーザ定義関数
128
ローカライズ済み
143
[ヤ行]
40
コンパイル済み 41
実行時に探索 41
要件
[ラ行]
元号ベース日付 (続き)
GLS8BITFSYS 環境変数 46
LOAD FROM ファイル内 100
コード セット変換 126
サブ文字列 76, 80
表現式 76
命名 4, 5, 64, 110, 134
レジストリ ファイル 7, 163, 164
ローカライゼーション 127
ローダ、非 ASCII 文字のサポート
ロード ファイル 100
110
4
データベース サーバ ユーティリティ
106
マルチバイト文字のサポート 106
chkenv 107
dbexport 5, 107, 108
dbimport 107, 108
dbload 107
dbschema 107
DB-Access 5, 108
glfiles 39, 42, 58, 124, 165
onaudit 107
oncheck 107
onload 107
onlog 107
onmode 5
onpload 107
onshowaudit 107
onspaces 107
onstat 107
onunload 107
onutil 107
SQL ユーティリティ 107
ロール 64
ログ ファイル
101
21, 104
ログ ファイル名、非 ASCII 文字
ロケータ構造体 149
ロケール
アルファクラス 67
カスタム メッセージの
116
環境変数 23
現行 128
現行処理 108, 117
検証 26, 29
設定 15, 23
選択 128
データベース サーバ接続の 25
定義 7
デフォルト viii
トレース メッセージの 120
非 ASCII 文字 24
ファイル名 158, 159
文字クラス 9
リスト 39, 42, 58, 165
ロケール カテゴリ 14, 154
en_us.8859-1 viii
ロケール ファイル
オブジェクト 159, 164
格納場所 16, 158
削除、未使用の 164
説明 7, 16, 154
ソース 159, 164
必須 164
リスト 39, 42, 58, 165, 166
63
ロケール環境変数
ロケール修飾子
ロケール名
言語名
CLIENT_LOCALE 環境変数 (続き)
106
26, 39, 42, 58, 159
構文
26, 39, 42, 58, 158
コード セット名
コード セット変換でのロール
124
D
105,
DataBlade Developers Kit (DBDK)
DBCENTURY 環境変数
DBDATE 環境変数
39
コマンド行引数を解釈する
107
地域名 26, 39, 42, 58, 158
例 39, 42, 58
設定 23
データベース サーバに送信
構文
40
25
設定
35
ロケール修飾子名
テキスト (TEXT) 型データ
69, 71,
元号ベース日付 35, 99
優先順位 18, 30, 35, 142
22, 26, 39, 42, 58
26, 39, 42, 58, 159
ロケールを区別するデータ型
27
111
89
[数字]
0000 年 15
1 から始まる計数方法
27
16 進数字 101
3 桁区切り記号 14, 23, 97, 145, 156,
157
8, 45, 136
DBMONEY 環境変数
構文 43
設定 36
CREATE EXTERNAL TABLE 文
CREATE FUNCTION 文 64
ALTER TABLE 文 95
ANSI 標準準拠
dbschema ユーティリティ
DBTIME 環境変数 2
構文 44
設定 35
元号ベース日付
101
ASCII 文字 (a - z、A - Z)
67
B
86
C
C コンパイラ
制限 109, 136
非 ASCII ソース コード 109, 136
非 ASCII ファイル名 136
マルチバイト文字 109, 136
8 ビット透過 109, 136
CC8BITLEVEL 環境変数 3, 38, 136, 138
CHARACTER_LENGTH 関数 90
CHAR_LENGTH 関数 94
chkenv ユーティリティ 107
CLIENT_LOCALE 環境変数 2
CREATE ROW TYPE 文 64
CREATE SEQUENCE 文 64
CREATE SYNONYM 文 65
CREATE TABLE 文 68
金額 (MONEY) 型列 95
制約名 64
データベース オブジェクトの名前
表名 65
列名 64
CREATE TRIGGER 文 65
CREATE VIEW 文 65, 68
CTYPE ロケール カテゴリ
空白文字 48, 53
クライアント ロケールの 18
サーバ処理ロケールの 29
説明 154, 155
文字ケース 148
ロケール ソース ファイル内 159
cvY.txt ファイル 165
99
DB-Access ユーティリティ
DB_LOCALE 環境変数 2
CREATE OPCLASS 文 64
CREATE PROCEDURE 文 64, 65
CREATE ROLE 文 64
76
107
優先順位 18, 30, 36, 143
ESQL ライブラリ関数 143
CREATE INDEX 文 62, 64, 82
CREATE OPAQUE TYPE 文 64
所有者名の指定 65
レベル xix
ASCII コード セット 8, 22
25
ESQL ライブラリ関数 145, 147
DBNLS 環境変数 43, 69, 124
159
CREATE CAST 文 64
CREATE DATABASE 文 64, 67
CREATE DISTINCT TYPE 文 64
A
107
2
通貨記号の定義 147
データベース サーバに送信
優先順位 18, 30, 36, 145
29
ロケール ソース ファイル内
CONNECT 文 64
41
dbload ユーティリティ
cmZ.txt ファイル 168
COLLATION ロケール カテゴリ
クライアント ロケールの 18
サーバ処理ロケールの
説明 154, 155
3, 129
40
設定 34
優先順位
115
39
ESQL ソース コード 129
ESQL ファイル名 129
10 進数 (DECIMAL) 型 36, 157
16 進エンコード 101
引用符 66
コメント標識変数
構文
例外メッセージでのロール
140
dbexport ユーティリティ 5, 46, 107, 108
dbimport ユーティリティ 107, 108
DBLANG 環境変数
144, 145
ロケール名の例
BETWEEN 条件
41
ユーティリティ 106
優先順位 18, 30, 35, 36, 41, 142,
ワイルドカード文字
8 ビット透過
ESQL ライブラリ関数
23
メッセージ ファイルの格納場所
[ワ行]
ワイド文字
73, 75
デフォルト値
112
50
62
viii, 5, 108
決定する情報 19, 21
コード セット変換でのロール 105,
124
構文 41
設定 23
データベース ロケールの検証 26
デフォルト値 23
ユーティリティ 106
優先順位 28
例外メッセージでのロール 115
ロケール名の例 42
DECLARE 文 64
DELETE 文
元号ベース日付 99
GLS 考慮事項 98
WHERE 節条件 98, 99
DELIMIDENT 環境変数 66, 75
DESCRIBE 文 150
dtcvfmasc() ライブラリ関数 142
dttofmtasc() ライブラリ関数 142
DUMP* 構成パラメータ 104
索引
179
ESQL/C プロセッサ
E
en_us.8859-1 ロケール
viii
ESQL ライブラリ関数
数値フォーマット関数
通貨表記
文字列関数
オペレーティング システム ファイル
129
144
145, 146
148
GLS エンハンスメント
金額 (MONEY) 型データの優先順位
145
日時 (DATETIME) 型データの優先順
位 143
日付 (DATE) 型データの優先順位
142
dtcvfmtasc() 142
dttofmtasc() 142
148
6, 126, 139
非 ASCII 文字 137
CC8BITLEVEL 138
CC8BITLEVEL 環境変数 38
ESQLMF 45, 137
ESQL/C プリプロセッサ 17, 136
ESQL/C プログラム
各国語可変長文字 (NVARCHAR) 型へ
のアクセス 139
各国語文字 (NCHAR) 型データへのア
クセス 139
コード セット変換の処理 148
コメント 38, 39, 134
コンパイル 137, 138
データ型定数 149, 152
データベース接続の検査 26
データベースへのシンプル ラージ オ
ブジェクトの書込み 148
標識変数 134
ファイル名 134
ホスト変数 17, 134
リテラル文字列 13, 17, 38, 39, 134
39, 137
GL_DATETIME 環境変数
構文
21
2
53
設定 35
データベース サーバに送信
25
フォーマット ディレクティブ
FETCH 文
xviii, 148
GB18030-2000 コード セット
glfiles ユーティリティ
優先順位
18, 30, 36, 143
ESQL ライブラリ関数
gl_dprintf() 関数 117
9, 32
コード セット ファイル 168
コード セット変換ファイル 124, 165
構文 165
出力例 166, 167, 168
ロケール ファイル 39, 42, 58, 166
charmap ファイル 168
-cm オプション 168
-cv オプション 165
-lc オプション 166
GLS 機能
各国語可変長文字 (NVARCHAR) 型
70
各国語文字 (NCHAR) 型 68
可変長文字 (VARCHAR) 型 73
環境変数 38
基本機能 1
クライアント/サーバ環境 7, 16
ゲートウェイ 34
使用可能なロケール 39, 42, 58
説明 1
テキスト (TEXT) 型 74
ホスト変数の文字データ型 139
文字 (CHAR) 型 72
文字データ型の使用 68
リストされた機能 3
DataBlade モジュール 5
ESQL ライブラリ関数 140
GLS ファイル 158, 161, 163
GLS ファイルの管理 153
GLS ライブラリ 1
SQL 61
GLS ロケール ファイル 7
GLS8BITFSYS 環境変数 3, 45
GLS_COLLATE 表名 20
54
元号ベースの日時 35
元号ベース日付 99
64
finderr ユーティリティ
IBM Informix GLS: ユーザーズ ガイド
48
優先順位 18, 30, 35, 142
ESQL ライブラリ関数 140
39
F
137
136
25
フォーマット ディレクティブ
元号ベース日付 35, 99
46, 135
G
rfmtlong() 144, 145
rstrdate() 140
rupshift() 148
180
データベース サーバに送信
Explain ファイル
rfmtdec() 144
rfmtdouble() 144
起動
説明
35
非 ASCII ソース コード 137
非 ASCII ファイル名 46, 135
ESQLMF 45, 137
ESQL/C フィルタの起動
rdownshift() 148
rfmtdate() 140, 141
ESQL/C データ型
ESQL/C フィルタ
48
設定
CC8BITLEVEL
140
ESQLMF 環境変数 3, 45, 137
ESQL/C 関数ライブラリ
GLS エラー メッセージ
rdatestr() 140
rdefmtdate() 140, 141
構文
定義 129
マルチバイト文字
DATE フォーマット関数 140
DATETIME フォーマット関数 142
GLS_CTYPE 表名 20
GL_DATE 環境変数 2
143
GL_DPRINTF() トレース関数
GL_PATH 環境変数 34
118
gl_tprintf( ) 関数 117
gl_tprintf() トレース関数 118
gl_wchar_t データ型 111
H
HKEY_LOCAL_MACHINE レジストリ設
定 59, 106
I
IBM CCSID コード セット
定義 32
437
819
32, 161
159, 160, 161, 162, 163
IBM Informix Client Software Developer’s
Kit 123
IBM Informix Dynamic Server, パス名 63
IBM Informix Extended Parallel Server
ハイパフォーマンス ロード 101
パス名 63
IBM Informix GLS API 5, 110
IN 条件 87
Index 64
INFORMIXDIR 環境変数 129
コード セット ファイルの格納場所
163, 168
コード セット変換ファイルの格納場所
161, 165
メッセージ ファイルの格納場所 40,
41
レジストリ ファイルの格納場所 163
ロケール ファイルの格納場所 16,
158, 166
INFORMIXDIR 環境変数 (続き)
charmap ファイルの格納場所
glfiles 165
INFORMIXDIR/bin ディレクトリ
INITCAP 関数
mi_exec_prepared_statement() 関数
mi_get_string() DataBlade API 関数
ix
MI_LIST_END トレース定数
mi_interval_to_string() 関数
埋込み SELECT
75
GLS 考慮事項
13
8
ISO 8859-1 コード セット
viii
112
113
mi_string_to_date() DataBlade API 関数
L
loc_buffer フィールド
150
loc_t データ型 148, 149
loc_type フィールド 149
LOWER 関数 75, 81
lower クラス
111
9
M
malloc( ) システム呼出し 151
MATCHES 関係演算子 10, 87
MESSAGES ロケール カテゴリ
サーバ処理ロケールの 30
説明 155, 158
ロケール ソース ファイル内 159
mi_convert_from_codeset() DataBlade API
関数 112
mi_convert_to_codeset() DataBlade API 関
数 112
mi_datetime_to_string( ) 関数 113
mi_date_to_string() DataBlade API 関数
113
mi_db_error_raise() 関数 113, 115
mi_decimal_to_string() DataBlade API 関数
113
mi_exec( ) 関数 115
mi_exec() 関数 109
62
rfmtdouble() ライブラリ関数
rgetmsg( ) ライブラリ関数
129
rstrdate() ライブラリ関数 140
rupshift() ライブラリ関数 148
S
sales_demo データベース
SELECT 文
N
NUMERIC ロケール カテゴリ
エンド ユーザ フォーマット
156
クライアント ロケールの 18
サーバ処理ロケールの 30
O
OCTET_LENGTH 関数 92
onaudit ユーティリティ 107
oncheck ユーティリティ 107
ONCONFIG 構成パラメータ 1
onload ユーティリティ 107
onlog ユーティリティ 107
onmode ユーティリティ 5
onpload ユーティリティ 107
onshowaudit ユーティリティ 107
onspaces ユーティリティ 107
onstat ユーティリティ 107
onunload ユーティリティ 107
onutil ユーティリティ 107
ORDER BY 節 (SELECT) 10, 83
75
150
長さ関数の使用 90
範囲を使用した一致の指定
文字データの照合 82, 83
88
リテラル一致の指定 87, 89
LIKE キーワード 89
MATCHES 関係演算子 87
145
ロケール ソース ファイル内
ix
引用符付き文字列の指定
埋込み 98, 99
照合順序 9
選択リスト列
数値フォーマット関数
説明 155, 156
代替数字 51, 55, 157
144
18
30
145
通貨記号 146
ロケール ソース ファイル内 159
MSGPATH 構成パラメータ 47, 104
LIBMI アプリケーション 5
LIKE 関係演算子 10, 89
LOAD 文 64, 98, 100
121
rfmtlong() ライブラリ関数 144, 145
rgetlmsg( ) ライブラリ関数 129
サーバ処理ロケールの
数値フォーマット関数
説明 155, 157
lcX.txt ファイル 166
LENGTH 関数 90
receive( ) 関数
mi_string_to_money() DataBlade API 関数
クライアント ロケールの
LANG 環境変数
優先順位 41
13, 140
rdefmtdate() ライブラリ関数 140, 141
rdownshift() ライブラリ関数 148
rfmtdate() ライブラリ関数 140, 141
rfmtdec() ライブラリ関数 144
MONETARY ロケール カテゴリ
エンド ユーザ フォーマット 157
141
rdatestr() ライブラリ関数
RENAME COLUMN 文
113
ja_jp.sjis ロケール
R
mi_string_to_decimal() DataBlade API 関数
113
mi_string_to_interval() 関数 113
mi_wchar データ型
J
64
119
113
98
VALUES 節 99
International Components for Unicode
(ICU)
mi_string_to_datetime() 関数
P
PREPARE 文
113
mi_put_string() DataBlade API 関数
98
エンド ユーザ フォーマット
元号ベース日付 99
112
mi_money_to_string() DataBlade API 関数
113
mi_prepare() 関数 109
75, 81
INSERT 文
引用符付き文字列の指定
109
168
ORDER BY 節
159
10, 83
TRIM の使用 81, 151
WHERE 節 9, 85
send( ) 関数 121
SERVER_LOCALE 環境変数 2, 58
コード セット変換でのロール 105
構文 58
設定 23
データベース サーバ ファイル名 104
デフォルト値 23
メッセージ ファイルの格納場所 41
ユーティリティ 106
優先順位 41
ロケール名の例 58
SET COLLATION 文 11, 42, 81, 88, 156
SET EXPLAIN 文 21
SPL ルーチン 4, 5, 65
SQL API 製品
コメント 134
ファイル名 134
ホスト変数 134
リテラル文字列 134
索引
181
SQL API 製品 (続き)
UNIX 環境 (続き)
sqlca 構造体
ESQL ライブラリ エンハンスメント
140
警告文字 26
接続の警告 26
GLS8BITFSYS の使用 46
sqlerrm
SQL 識別子名
SQLWARN 配列
SQL コード
SQL 識別子
134
xiv
所有者名 65
非 ASCII 文字
sqlda 構造体
63
110, 134
62
例 67
SQL セグメント
埋込み SELECT
26, 29
65
SET 節
sqlda.sqlvar.sqlname フィールド
UTF-8 コード セット
SQLTEXT データ型定数
分類
90
sqlvar_struct 構造体
説明 150
列データの保管
94
コード セット変換
データ操作 98
64
CREATE DISTINCT TYPE 64
CREATE EXTERNAL TABLE 101
CREATE FUNCTION 64
CREATE INDEX 62, 64, 82
CREATE OPAQUE TYPE 64
150, 151
syserrors システム カタログ表 114, 116
systables システム カタログ表 20
systracemsgs システム カタログ表 117,
119, 120
85
DELETE 文内
86
98
IN 条件 87
INSERT 文内 98
UNLOAD 文内 99
UPDATE 文内 99
Windows
デフォルト ロケール
viii
Windows 環境
サポートされるコード セット変換
124
デフォルト ロケール 22
TIME ロケール カテゴリ
エンド ユーザ フォーマット
158
クライアント ロケールの 18
サーバ処理ロケールの 30
説明 155, 157
元号情報 51, 55, 157
ロケール ソース ファイル内
TRIM 関数 75, 81, 151
X
xctl ユーティリティ 107
X/Open 準拠レベル xix
159
U
Unicode
基本多言語面 (BMP) 32
照合アルゴリズム 12
UTF-8、UTF-16、および UTF-32 コー
ド セット 8
UNIX オペレーティング システム
デフォルト ロケール viii
UNIX 環境
サポートされるコード セット変換
124
サポートされるロケール 39, 42, 58
デフォルト ロケール 22
IBM Informix GLS: ユーザーズ ガイド
111
照合順序 9
論理的述部 85
BETWEEN 条件
stores_demo データベース viii
superstores_demo データベース ix
T
182
26
関係演算子条件
SQLVCHAR データ型定数 152
SQLWARN 警告フラグ 26, 29, 125
CREATE ROLE 64
CREATE ROW TYPE 64
CREATE SEQUENCE 64
CREATE VIEW 65
DECLARE 64
DELETE 98
DESCRIBE 150
FETCH 64
LOAD 64, 98, 100
PREPARE 64
RENAME COLUMN 62
SELECT 79
SET COLLATION 81, 88, 156
SET EXPLAIN 21
UDR 内 109
UNLOAD 98, 100
UPDATE 98
SQL ユーティリティ 107
SQLBYTES データ型定数 149
SQLCA 構造体
SQLWARN 配列 125
W 警告文字
wchar_t データ型
WHERE 節
CREATE OPCLASS 64
CREATE PROCEDURE 64, 65
CREATE SYNONYM 65
CREATE TRIGGER 65
8
W
149, 152
sqldata フィールド 150
sqllen フィールド 151
sqlname フィールド 151
13
109, 126
151
152
149
sqltypes.h ヘッダ ファイル
OCTET_LENGTH 92
SQL 文
エンド ユーザ フォーマット
99
WHERE 節条件 99
UPPER 関数 75, 81
90
CONNECT 64
CREATE CAST
26
sqlda.sqlvar.sqldata フィールド 150
sqlda.sqlvar.sqllen フィールド 151
使用
CHAR_LENGTH
LENGTH 90
99
元号ベース日付 99
GLS 考慮事項 98
148, 149, 150
SQLNVCHAR データ型定数
SQLSTATE 状態値 114
SQL 長さ関数
39, 42, 58
UPDATE 文
126
sqlwarn.sqlwarn7 26
sqlca.sqlwarn.sqlwarn7 フラグ
区切り記号付き
ルール
glfiles ユーティリティ
UNLOAD 文 98, 100
[特殊文字]
(ブラケット)
サブ文字列演算子 76
MATCHES 演算子での範囲 88, 89
* (アスタリスク), MATCHES 演算子のワ
イルドカード 89
- (マイナス記号), MATCHES 節内のワイ
ルドカード 89
.c ファイル拡張子 129, 138
.cm ファイル拡張子 163, 165
.cmo ファイル拡張子 163
.cv ファイル拡張子 32, 161, 164
.cvo ファイル拡張子 161, 164
.c_ ファイル拡張子 138
.ec ファイル拡張子 129, 138
.iem ファイル拡張子 41
.lc ファイル拡張子
159, 161, 164
.lco ファイル拡張子 159, 164
.o ファイル拡張子 138
? (疑問符), MATCHES 演算子のワイルド
カード
89
% (パーセント)
トレース メッセージの
パラメータ マーカーの
118, 119
117
フォーマット ディレクティブ
155
48,
LIKE 演算子のワイルドカード
89
@ (アットマーク)
書式制御文字 146
_ (アンダスコア), LIKE 演算子のワイル
ドカード
89
^ (キャレット), MATCHES 節内のワイル
ドカード
89
索引
183
184
IBM Informix GLS: ユーザーズ ガイド
򔻐򗗠򙳰
Printed in Japan
GB88-8629-00
Fly UP