CAF の TRANSLATE 機能
TRANSLATE関数は、失敗したOPENリクエストの Db2 16進数のエラー理由コードを、SQLエラーコードと印刷可能なエラーメッセージテキストに変換します。 Db2 SQLCODEとSQLSTATEのホスト変数、または呼び出し元のSQLCAの関連フィールドに情報を格納します。
変換されたDb2エラー理由コードは、レジスター 0から読み取られます。 TRANSLATE関数は、TRANSLATE要求が失敗しない限り、レジスター0および15の内容を変更しません。 その場合、レジスタ0はX'C10205 'に設定され、レジスタ15は200に設定されます。
TRANSLATE 機能を使用する場合と使用しない場合については、次に示す規則と推奨情報を考慮してください。
- TRANSLATE 機能は、FORTRAN 言語から呼び出せません。
- TRANSLATE 機能は、失敗した OPEN 要求の前に明示 CONNECT 呼び出しを使用していた場合のみ役に立ちます。 SQL 要求や IFI 要求の処理時にエラーが発生した場合、TRANSLATE 機能が自動的に実行されます。
- TRANSLATE 機能は X'00F3' で始まるコードを変換できますが、X'00C1' で始まる CAF 理由コードは変換できません。
OPEN 要求後に、エラー理由コード X'00F30040' (リソース使用不能) を 受け取った場合、TRANSLATE 機能は、使用不能データベース・オブジェクトの名前を SQLERRM フィールドの最後の 44 文字に入れて戻します。
TRANSLATE関数がエラー理由コードを認識しない場合、SQLCODE -924(SQLSTATE '58006')を返し、元のDb2関数コードと戻りおよびエラー理由コードの印刷可能なコピーをSQLERRMフィールドに入れます。
次の図は、TRANSLATE 機能 の構文です。
パラメーターは、以下の区域を指し示します。
- 機能
- TRANSLATE という語と、それに続く 3 個のブランクからなる 12 バイト域。
- エスキューエルシーエー
- プログラムの SQL 連絡域 (SQLCA)。
- リターンコード
- CAF が戻りコードを入れる 4 バイト域。
このフィールドはオプションです。 retcode を指定しない場合、CAF は戻りコードをレジスター 15 に、理由コードをレジスター 0 に入れます。
- リアスコード
- CAF が理由コードを入れる 4 バイト域。
このフィールドはオプションです。 reascode を指定しない場合、CAF は理由コードをレジスター 0 に入れます。 reascode を指定した場合には、retcode も指定する必要があります。
CAF TRANSLATE 呼び出しの例
次の表に、各言語の TRANSLATE 呼び出しを示します。
| 言語 | 呼び出しの例 |
|---|---|
| アセンブラー | |
| C1 | |
| COBOL | |
| PL/I1 | |
注:
- DSNALI はアセンブラー言語プログラムであるため、C および PL/I アプリケーションに対しては、適切なコンパイラー指示を含める必要があります。 これらのコンパイラー指示については、CAF 呼び出しの説明中に記載されています。
