SQL ステートメントを発行する Fortran アプリケーション
SQL ステートメントは、実行可能ステートメントを入れられる 個所であれば、FORTRAN プログラムの任意の場所にコーディング できます。 SQL ステートメントが IF ステートメントの内側にある場合、そのプリコンパイラーは 必要とされるどの THEN と END IF ステートメントも生成します。
FORTRAN ソース・ステートメントは、固定長の 80 バイト・レコードでなければ なりません。 Db2 プリコンパイラーは、フリー・フォーム・ソース入力をサポートしていません。
FORTRAN プログラムの各 SQL ステートメントは、EXEC SQL で開始しなければ なりません。 EXEC および SQL キーワードは 1 行に収めなければなりませんが、 ステートメントの残りの部分は、次行以降になってもかまいません。
例えば、FORTRAN プログラムに UPDATE ステートメントを、 以下のようにコーディングします。
EXEC SQL
C UPDATE DSN8C10.DEPT
C SET MGRNO = :MGRNUM
C WHERE DEPTNO = :INTDEPT
同一行で、ある SQL ステートメントの後に別 SQL ステートメントまたは FORTRAN ステートメントを コーディングできません。
FORTRAN では、ステートメント内の語を区切るためのブランクは 必要ありませんが、SQL 言語ではブランクが必要です。 組み込み SQL の規則は、SQL 構文の規則に従うので、 区切り文字として 1 つ以上のブランクを使用する必要があります。
- コメント
- Fortran のコメント行は、ブランクを使用可能な組み込み SQL ステートメント内であれば、どこにでも組み込むことができます。ただし、キーワードの EXEC と SQL の間には組み込めません。 SQL コメントは、どの組み込み SQL ステートメントにも組み込めます。 詳細は、 SQLコメントをご覧ください。
Db2 プリコンパイラーは、Fortranプログラムのコメント認識文字として感嘆符 (!) をサポートしません。
- SQL ステートメントの継続
- SQL ステートメントの行継続規則は、EXEC SQL は 1 行に収めなければならない点を除いて、Fortran ステートメントの規則と同じです。 このトピックの SQL の 例では、6 桁目に C が書かれており、 これらが EXEC SQL の継続行であることを示しています。
- Fortran での区切り文字
- Fortran プログラム内のSQLステートメントを、開始キーワードで区切ります。
EXEC SQL
そして、行の終わりまたは最後の継続行の終わり。
- 表およびビューの宣言
- Fortran プログラムにも、そのプログラムがアクセスする各表およびビューを記述する DECLARE TABLE ステートメントを組み込む必要があります。
- Fortran プログラムでの動的 SQL
- 通常、FORTRAN プログラムでは動的 SQL ステートメントの処理が容易です。 SELECT ステートメントは、データ・タイプおよび戻されるフィールド数が決まっている場合に
処理することができます。 変数リストSELECT文を使用する場合は、SQLDAを使用する必要があります。SQL記述領域(SQLDA)の定義で説明されているとおりです。
FORTRAN 文字変数は、固定長の 場合でも、PREPARE および EXECUTE IMMEDIATE ステートメント内で使用できます。
- コードの組み込み
- 区分データ・セットのメンバーから SQL ステートメントまたは FORTRAN ホスト変数宣言を組み込むには、ステートメントを組み込みたいソース・コードの中に、以下の SQL ステートメントをコーディングします。
EXEC SQL INCLUDE member-name
SQL INCLUDE ステートメントはネストできません。 FORTRAN INCLUDE コンパイラー指示は、SQL ステートメント または FORTRAN ホスト変数宣言の組み込みには使用できません。
- マージン
- 7列目から72列目までのSQLステートメントをコード化する。 指定された左マージンの前にEXECSQLが開始された場合、Db2プリコンパイラーはSQLステートメントを認識しません。
- 名称
ホスト変数には、Fortran で有効な名前であれば、どの名前でも使用できます。 'DSN' で始まる外部入り口名、または 'SQL' で始まるホスト変数名は、 使用しないでください。 これらの名前はDb2のために予約されています。
FORTRAN DEBUG パケットの定義時を除き、DEBUG という語は使用しないで ください。 変数を定義する場合に、FUNCTION、IMPLICIT、PROGRAM、 および SUBROUTINE の語は使用禁止です。
- シーケンス番号
- Db2 プリコンパイラーに生成されるソース・ステートメントには、シーケンス番号は含まれません。
- ステートメント・ラベル
- SQL ステートメントのステートメント番号は、1 桁目から5桁目までに指定できます。 ただし、プログラム準備中、ラベル付き SQL ステートメントは、 SQL ステートメントを実行するコードを生成する前に、そのラベルを持つFortranCONTINUEステートメントを生成します。 したがって、ラベル付きの SQL ステートメントは、DO ループ内の 最後のステートメントであってはなりません。 さらに、最初の実行可能 SQL ステートメントの前に現われる SQL ステートメント (INCLUDE およ び BEGIN DECLARE SECTION など) は、ラベルを付けないでください。
- WHENEVER ステートメント
- SQL WHENEVER ステートメントの GOTO 文節のターゲットは、Fortran ソース・コード内のラベルである必要があり、かつ同じサブプログラム内のステートメントを参照している必要があります。 WHENEVER ステートメントが適用されるは、同じサブプログラムの SQL ステートメントに限られます。
- Fortran に関する特殊な考慮事項
- 以下の考慮事項が、Fortran で作成されるプログラムに適用されます。
- ソース・コードに、@PROCESS ステートメントを使用することはできません。 代わりに、PARM フィールドにコンパイラー・オプションを指定してください。
- SQL INCLUDE ステートメントは、PROGRAM、SUBROUTINE、BLOCK、 FUNCTION、または IMPLICIT の各ステートメントの組み込みには使用できません。
Db2 は、以下の制約事項を持つVS Fortran のバージョン 3 リリース 1 (またはそれ以降) をサポートしています。- 並列オプションはサポートされません。 SQL ステートメントを含むアプリケーションは、FORTRAN の 並列処理を使用できません。
- バイト・データ・タイプは、組み込み SQL 内ではサポートされません。 バイトは認識可能なホスト・データ・タイプではありません。
- SQL エラー・コードの処理
- Fortran アプリケーションは、Db2からSQLエラーに関する詳細情報を請求できます。 詳細については、「CおよびC++アプリケーションでのSQLエラーコードの処理 」を参照してください。