Symfoware Parallel Server RDBユーザーズガイド 応用プログラム開発編
目次 索引 前ページ次ページ

第2章 データベースを処理する応用プログラムの開発の概要> 2.1 SQL埋込みCプログラムの作成方法

2.1.5 日本語文字の使用方法

ここでは、文字コード系としてEUCコーを使用した応用プログラム中に、日本語文字を使用する方法について説明します。

■プログラム設計での日本語文字コードの考

C言語で記述した応用プログラム中の日本語文字は、EUCコードで表現されます。Symfoware/RDBのデータベース中では日本語文字は、COBOL_EUCコードで表現されます。このように、応用プログラムとSymfoware/RDBのデータベースとでは、日本語文字コード体系に違いがあります。

このため、Symfoware/RDBでは、応用プログラムが、EUCコードまたはCOBOL_EUCコードのどちらかの日本語文字コードを選択して、Symfoware/RDBのデータベースにアクセスが行えるようにしています。

応用プログラムで選択できる日本語文字コードとして、EUCコードとCOBOL_EUCコードの違いを表:応用プログラムで選択できる日本語文字コードに示します。

[表:応用プログラムで選択できる日本語文字コード]

日本語文字コード

意味と特長

動作環境ファイルでの 実行パラメタの指定

EUCコード

EUCコードは、UNIXシステムの標準文字コード 体系です。 拡張漢字および利用者定義文字は、3バイトで 表現されます。その他の日本語文字は、2バイトで表現されます。

NCHAR_CODE=EUC

COBOL_EUCコード

Symfoware/RDBのデータベース中の各国語文字 列型のデータのコード体系です。このコード体系は、COBOLの内部表現形式である16ビットワイド キャラクタ表現に準拠しています。 拡張漢字および利用者定義文字を含むすべての日本語文字は、2バイトで表現されます。

NCHAR_CODE=COBOL_EUC

日本語文字コード体系を選択することにより、応用プログラム中の日本語文字に対する処理が異なります。たとえば、SQL文に指定する日本語文字列型のホスト変数には、選択した日本語文字コードのデータを設定または参照してデータベースアクセスを行います。

このため、応用プログラムの設計時には、実行時にどちらの日本語文字コード体系を選択するかを決定しておく必要があります。

応用プログラムの実行時には、動作環境ファイルの実行パラメタ“NCHAR_CODE”に選択した日本語文字コード体系を表:応用プログラムで選択できる日本語文字コードのように指定してください。この指定を省略した場合は、EUCコードとみなされます。指定方法の詳細については、“動作環境ファイルの作成”を参照してください。

■プログラミングでの日本語文字コードの留意

ここでは、選択したそれぞれの日本語文字コードでプログラミングする場合の留意点について説明します。

◆EUCコードの日本語文字を使用した場合の留意

ホスト変数の長

各国語文字列型のデータをデータベースから取得、またはデータベースに格納する場合は、日本語文字に3バイトの拡張漢字または利用者定義文字を含む可能性があります。このため、ホスト変数の長さは、格納に十分な大きさを考慮して以下のように算出してください。

ホスト変数の長さ = 日本語文字数 × 3バイト + 1 

SQL記述子域のオクテット

動的SQLを使用して、各国語文字列型のデータをデータベースから取得する場合、取得するデータが2バイト表現の日本語文字か3バイト表現の日本語文字かにかかわらず、SQL記述子域のオクテット長(バイト数)は、1文字を3バイトに換算した値となります。

◆COBOL_EUCコードの日本語文字を使用した場合の留意

ホスト変数の長

各国語文字列型のデータをデータベースから取得、またはデータベースに格納する場合、日本語文字コードは2バイトとなります。このため、ホスト変数の長さは、以下のように算出してください。

ホスト変数の長さ = 日本語文字数 × 2バイト + 1 

SQL記述子域のオクテット

動的SQLを使用して、各国語文字列型のデータをデータベースから取得する場合、SQL記述子域のオクテット長(バイト数)は、1文字を2バイトに換算した値となります。

◆切捨ておよび補正

EUCコードの日本語文字を使用する場合、データベース中の日本語文字の長さは2バイトです。これに対してホスト変数の長さは3バイトです。このため、ホスト変数に日本語文字を設定する、または設定される場合は、日本語文字列の切捨ておよび補が行われます。

ホスト変数へのEUCコードの日本語文字の設

ホスト変数からデータベースにデータを格納する場合、ホスト変数に設定する日本語文字列の長さがホスト変数の長さよりも短い場合は、有効文字列以外の領域には、英数字の空白を設定してください。なお、日本語の空白は、有効な文字列とみなします。

ホスト変数に設定されるEUCコードの日本語文

データベースからホスト変数にデータを格納する場合、ホスト変数に設定されるEUCコードの日本語文字の長さが、ホスト変数の長さよりも短い場合は、有効な文字列以外の領域には英数字の空白が設定されます。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2006