使用者の手引き

SQLCODE マッピングの調整

省略時には、 DB2 コネクトは SQLCODE およびトークンを各 IBM ホストまたは AS/400 サーバーから該当する DB2 UDB SQLCODE のシステムへマッピングします。 以下のファイルは、省略時の SQLCODE マッピングのコピーです。

dcs1dsn.map
DB2 (MVS/ESA 版) および DB2 UDB (OS/390 版) の SQLCODE をマップします。

dcs1ari.map
DB2 (VSE および VM 版) の SQLCODE をマップします。

dcs1qsq.map
DB2 UDB (AS/400 版) の SQLCODE をマップします。

OS/2 および UNIX ベースの DB2 システムについては、マッピングは必要ありません。

省略時の SQLCODE マッピングを上書きしたい場合、 または SQLCODE マッピングを持たないホストまたは AS/400 データベース・サーバー (非 IBM データベース・サーバー) を使用している場合は、 これらのファイルの 1 つをコピーして、 それを新規の SQLCODE マッピング・ファイルの基礎として使用することができます。 そのファイルを直接編集するよりは、むしろそれをコピーすることによって、 必要な場合いつでも元の SQLCODE を確実に参照できます。

DCS ディレクトリーまたは DCE 経路指定情報のパラメーター・ストリングに、 新規の SQLCODE マッピング・ファイルのファイル名を指定します。 DCS ディレクトリーの更新の情報については、データベース・ディレクトリーの更新を参照してください。 DCEの使用に関する情報については、付録 D, DCE ディレクトリー・サービスの使用を参照してください。

各マッピング・ファイルは、ASCII エディターを使用して作成、編集できる ASCIIファイルです。 初期インストールでは、 ファイルはインストール・パス内の map ディレクトリーに保管されます。

ファイルには、以下の特殊タイプの行を含めることができます。

&&
理論的なファイルの開始。&& が最初に現れるよりも前の行はすべて、自由形式のコメントとみなされて無視されます。ファイルが && の後に何も含んでいない場合は、SQLCODE マッピングは実行されません。また、前に説明したように、 NOMAP パラメーターを使用することにより SQLCODE マッピングをオフにすることもできます。

*
行の最初の文字として、コメントを示します。

W
行にある唯一の文字として、警告フラグが再マップされるべきことを示します。 省略時には、オリジナルの警告フラグが渡されます。W は大文字でなければなりません。

&& 後のその他のすべての行は、ブランクか、 または以下の書式のマッピング・ステートメントのいずれかです。

input_code [, output_code [, token_list]]

input_code は、以下のいずれかを表します。

sqlcode
ホストまたは AS/400 データベース・サーバーからの SQLCODE

U
すべての未定義の負の数の SQLCODE (このファイルにはリストされていないもの) は、 指定された output_code にマップされます。output_code がこの行で指定されなかった場合は、元の SQLCODE が使用されます。この文字は必ず大文字です。

P
すべての未定義の正の数の SQLCODE (このファイルにはリストされていないもの) は、 指定された output_code にマップされます。output_code がこの行で指定されなかった場合は、元の SQLCODE が使用されます。この文字は必ず大文字です。

ccnn
ホストまたは AS/400 データベース・サーバーから得られる SQLSTATE クラス・コード。nn は以下のいずれかです。

00
非修飾の正常終了

01
警告

02
データなし

21
カーディナリティー違反

22
データ例外

23
制約違反

24
無効なカーソル状態

26
無効な SQL ステートメント識別子

40
トランザクション・ロールバック

42
アクセス違反

51
無効なアプリケーション状態

55
前提条件の状態にないオブジェクト

56
その他の SQL または製品エラー

57
利用不能なリソースまたは操作員介入

58
システム・エラー

マッピング・ファイル内で明示的に指定されていないこのクラス・コードを伴うすべての SQLCODE に対して、 指定の output_code が使用されます。 この行で output_codeが指定されない場合は、元の SQLCODE が、 コピーされたトークンなしでそれ自体へマップされます。

cc の文字は必ず小文字です。

同じ input_code が 2 回以上マッピング・ファイルに現れた場合は、 最初に現れたものが使用されます。

output_code は、出力 SQLCODE を表します。値が指定されていない場合は、元の SQLCODE が使用されます。

また、出力コードを指定する場合は、以下のいずれかを指定することもできます。

(s)
入力 SQLCODE プラス 製品 ID (ARI、DSN または QSQ) が、 SQLCA メッセージ・トークン・フィールドに入れられます。

元の SQLCODE は、唯一のトークンとして戻されます。 このオプションは、+965と -969 の例外を除き、 未定義の SQLCODE を扱うように設計されています。 +965 または -969 が output_code である場合、 SQLCA の SQLERRMC フィールドに戻されるトークン・リストには、 元の SQLCODE、次に製品識別子、続いて元のトークン・リストが含まれます。

s の文字は必ず小文字です。

(トークン・リスト)
トークンのリストで、コンマで分離します。 特定のトークンをスキップするには、コンマだけで指定します。 たとえば、書式 (,t2,,t4) は、 1 番目と 3 番目の出力トークンは空白値であることを意味します。

各トークンは、番号の書式 (n) を持っており、 オプションとしてその前に c、 その後に c または i を付けます。 それは、次のように解釈されます。

c
この位置にあるトークンのデータ・タイプは CHAR (省略時値) です。 cn の前にある場合は、入力トークンを示します。 cn の後にある場合は、出力トークンを示します。 c の文字は必ず小文字です。

i
この位置にあるトークンのデータ・タイプは INTEGER です。in の後にある場合は、 出力トークンを示します。in の前には来ません。 というのは、IBM ホストまたは AS/400 データベース・サーバー製品は、 CHAR トークンだけをサポートするからです。i の文字は必ず小文字です。

n
どのホストまたは AS/400 データベース・サーバーのトークンが使用されているかを示す数字です。それらの数字は、出力 SQLCA 内で配置要求される順序で配置されています。 その数字は、ホストまたは AS/400 データベース・サーバーのトークンを示しています。 その配置は、トークンが SQLCA 内で並べられる順序を示しています。

たとえば、ホストまたは AS/400 データベース・サーバーが 2 つのトークン、1 および 2 を戻すとします。 トークン 2 を出力 SQLCA の中でトークン 1 の前に表示したい場合は、 (2,1) と指定します。

複数のトークン数字は、それらをピリオドで接続することによって、 1 つの CHAR 出力トークンを形成するよう結合させることができます。

コンマは、出力トークンを分離するために使用します。 コンマの前にトークンが指定されていない場合、 その位置では SQLCA 内に出力トークンは組み込まれません。 最後に指定されたトークンに続いて出力 SQLCA に出現するトークンはすべて、 ヌル・トークンへマップされます。

図 6 は、SQLCODE マッピング・ファイルのサンプルを示します。

図 6. SQLCODE マッピング・ファイル

&&
  -007    ,   -007   ,   (1)
  -010
  -060    ,   -171   ,   (2)
...
  -204    ,   -204   ,   (c1.2c)
...
  -633    ,   -206   ,   (,c1i)
 
  -30021  ,   -30021 ,   (c1c,c2c)
 
  cc00    ,   +000
...
  U       ,   -969   ,   (s)
  P       ,   +965   ,   (s)

ファイル内の各マッピング・ステートメントの説明は以下のとおりです。

  1. SQLCODE は -007 から -007 へマップされます。 ホストまたは AS/400 データベース・サーバーから受信する 1 番目のトークンは、 1 番目の出力トークンとして使用され、省略時の設定である CHAR になります。 他のトークンは、転送されません。
  2. SQLCODE は、-010 から -010 へとマップされます (出力 SQLCODE が指定されていないので) 。 トークンは、出力 SQLCA に配置されません。
  3. SQLCODE は -060 から -171 へマップされます。 ホストまたは AS/400 データベース・サーバーから受け取った 1 番目の入力トークンは、破棄されます。 2 番目のトークンは、出力 SQLCA で 1 番目のトークンとして使用されます。 それは CHAR です。出力 SQLCA に 2 番目のトークンはありません。
  4. SQLCODE は -204 から -204 へマップされます。ホストまたは AS/400 データベース・サーバーから受け取る 1 番目と 2 番目のトークンは CHAR です。この 2つの入力トークンは結合され、 SQLCA で 1 番目の出力トークンになる 1 つの CHAR 出力トークンを形成します。
  5. SQLCODE は -633 から -206 へマップされます。ホストまたは AS/400 データベース・サーバーから受け取られた 1 番目の入力トークンは CHAR です。それは INTEGER へ変換され、出力 SQLCA で 2 番目のトークンとして使用されます。出力 SQLCA の 1 番目のトークンは、コンマで示されているように、ヌルです。
  6. SQLCODE は -30021 から -30021 へマップされます。ホストまたは AS/400 データベース・サーバーから受け取る 1 番目および 2 番目の入力トークンは CHAR です。 それらは、 出力 SQLCA 内で 1 番目および 2 番目のトークンとして使用されます。
  7. 00 クラスの SQLSTATE を指定した SQLCA 内の SQLCODE はすべて、 SQLCODE +000 へマップされます。
  8. 未定義の SQLCODE はすべて -969 へマップされます。 まったく同一なものやマッピングが必要でないものも含め、 マップ可能なコードのすべてがリストされている場合に限り、 このオプションを使用してください。(s) オプションは、 SQLCA の SQLERRMC フィールドに戻されるトークン・リストに、 元の SQLCODE、次に、エラーが発生した製品、 続いて元のトークン・リストが含まれることを示します。 U 項目が組み込まれていない場合、 リストされていないコードはすべて、マッピングされずに渡されます。
  9. 未定義で正の SQLCODE はすべて、+965 へマップされます。 まったく同一なものやマッピングが必要でないものも含め、 マップ可能なコードのすべてがリストされている場合に限り、 このオプションを使用してください。(s) オプションは、 SQLCA の SQLERRMC フィールドに戻されるトークン・リストに、 元の SQLCODE、次に、警告が発生した製品、 続いて元のトークン・リストが含まれることを示します。 P 項目が組み込まれていない場合、 リストされていない正のコードはすべて、マッピングされずに渡されます。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]