DBFIRQ - Call-Level Interface Version 2

Teradata® Call-Level Interfaceバージョン2 リファレンス - ワークステーション接続システム - 17.20

Product
Call-Level Interface Version 2
Release Number
17.20
Published
2022年10月10日
Language
日本語
Last Update
2022-11-21
dita:mapPath
ja-JP/zws1641280432166.ditamap
dita:ditavalPath
ja-JP/obe1474387269547.ditaval
dita:id
B035-2418
Product Category
Teradata Tools and Utilities

DBFIRQは、DBCHCLのInitiate Request関数であり、データベースに処理すべきリクエストを送信します。

どのように機能するか

DBFIRQは、次の機能を実行します。
  • セッションが活動状態であれば、活動状態のリクエストが完了するまで待ちます。
  • 活動状態のリクエストがIRQであれば、そのリクエストの最終状態を内部的に保存します。
  • 前のリクエストがCONで、その処理が成功していない場合は、戻りエラー「unable to initiate because session is not logged on(セッションにログオンしていないため、開始できません)」が表示される。
  • リクエスト バッファの大きさが十分なことを確かめる。
  • 次のように、リクエスト バッファ内にリクエストを作成します。
    • 応答は、Response Modeフィールドの設定値に基づいてレコード モード、フィールド モード、標識モード、またはマルチパート モードのいずれかでなければなりません。
    • 入力データは、Use Presence Bitsフィールドの設定値に基づいてレコード モードまたは標識モードのいずれかであるか、または、Using Data Lengthフィールドの設定値に基づいていずれのモードでもないか、のどちらかでなければなりません。
  • Keep Responseフィールドの設定値に基づいて、SETPOSITION Positionパーセル、RespまたはKeepRespパーセルを順に追加します。 keep_respが'P'に設定されている場合、SETPOSITIONパーセルはKeepRespパーセルと共に追加されます。
  • セッションがTeradata SQLでなかった(バイパス フラグがYに設定された)場合には、SQLバッファのポインタを無視し、パーセルを追加せずにリクエスト バッファを生成した場合のように、using dataバッファを使用します。
  • リクエストをMTDPに送ります。
  • 処理に成功しなければ、クリーンアップして、アプリケーションに戻ります。
  • Open Requestなどを設定して、呼び出し側に戻ります。

リクエストの開始

リクエストを実行するためには、以下の順序で操作します。
  1. DBFIRQ関数のDBCHCLを呼び出します。
  2. その戻りコードがゼロであることを確認します。

ゼロの戻りコードは、Teradata SQLリクエストが成功したことを意味しません。Teradata SQLリクエストがデータベースに送られたこと、つまり、初期状態が正常であることを意味します。クライアントでリクエストの処理に成功した場合には、データベースはそのリクエストを処理し、Teradata SQL応答の最初の部分(1バッファ分)をクライアントに送ります。

成功するリクエスト/応答操作

正常なリクエスト/応答処理を行なうためには、以下に示す順序で操作する必要があります。
  1. DBFIRQ関数のDBCHCLを呼び出します。
  2. その戻りコードがゼロであることを確認します。
    応答が「消費」されるまで、または不要となるまでのステップについては、DBFFETを参照してください。 巻き戻しが必要な場合は、DBFREWDBFFETを参照してください。
  3. DBFERQ関数のDBCHCLを呼び出します。
  4. その戻りコードがゼロであることを確認します。

最初にDBFCON関数のDBCHCLを呼び出さずに、DBFIRQ関数のDBCHCLを呼び出した場合には、DBCHCLは戻りコード「first do a connect(最初に接続してください)」(NO SESSION;304)を返します。

Teradata SQLリクエストにUSING修飾子が含まれる場合は、アプリケーション プログラムでUsing Data PointerとUsing Data Lengthを提供する必要があります。CLIは、Teradata SQLリクエストを解析しないので、USING修飾子およびusing dataを適切に与えることができません。同様に、Teradata SQLリクエストにUSING修飾子が含まれない場合は、アプリケーション プログラムでUsing Data Lengthをゼロに設定する必要があります。

DBFIRQ関数のDBCHCLの呼び出しによってゼロ以外の戻りコードが生じた場合には、Initiate Requestは処理に失敗しており、その戻りコードの値が理由を示します。 存在していないリクエスト用のCLI内部構造体は、DBFERQ関数のDBCHCLを呼び出すことによって割り当てを解除することができます(解除しなければなりません)。 DBFIRQ関数のOutput Request Idの値を、DBFERQ関数のInput Request Idとして与えます。

インターフェース

関数: DBFIRQ - Initiate ReQuest
目的: リクエストの実行
パラメータ: