アプリケーション開発の手引き


FORTRAN のホスト変数

ホスト変数は、SQL ステートメント内で参照される FORTRAN 言語変数となります。これにより、アプリケーションは入力データをデータベース・マネージャーに渡し、またデータベース・マネージャーから出力データを受け取ることができます。アプリケーションがコンパイルされると、コンパイラーはホスト変数を他の FORTRAN 変数として使用します。ホスト変数は以下の指示に従って命名、宣言、および使用してください。

FORTRAN でのホスト変数の命名

SQL プリコンパイラーは、宣言された名前によってホスト変数を識別します。この場合、以下の規則が適用されます。

ホスト変数の宣言

ホスト変数宣言の識別には、SQL の宣言セクションを使用しなければなりません。これは、それ以降の SQL ステートメントで参照が可能なホスト変数をプリコンパイラーに知らせます。

FORTRAN プリコンパイラーは、有効な FORTRAN 宣言のサブセットのみを有効な変数宣言として認識します。これらの宣言は、数値変数または文字変数のいずれかを宣言します。数値ホスト変数は、数値の SQL 入出力値に対する入出力値として使用することができます。文字ホスト変数は任意の文字、日付、時間またはタイム・スタンプの SQL 入出力値に対する入出力値として使用できます。プログラマーは、出力変数が受け取る値を含めることのできる長さを持つようにコーディングしなければなりません。 FORTRAN における数値ホスト変数の構文は、数値ホスト変数の構文を示します。

構造型にホスト変数を宣言する方法について詳しくは、 構造型ホスト変数の宣言を参照してください。

FORTRAN における数値ホスト変数の構文
 
>>-+-INTEGER*2--------+----------------------------------------->
   +-INTEGER*4--------+
   +-REAL*4-----------+
   +-REAL *8----------+
   '-DOUBLE PRECISION-'
 
      .-,-----------------------------------.
      V                                     |
>--------varname--+---------------------+---+------------------><
                  '- / initial-value / -'
 

数値ホスト変数に関する考慮事項:

  1. REAL*8 と DOUBLE PRECISION は同値である。

  2. REAL*8 定数のインディケーターには、D ではなく E を使用する。

FORTRAN における文字変数の構文: 固定長は、文字ホスト変数の構文を示します。

FORTRAN における文字変数の構文: 固定長
 
                      .-,-----------------------------------.
                      V                                     |
>>-CHARACTER--+----+-----varname--+---------------------+---+--><
              '-*n-'              '- / initial-value / -'
 

可変長

                                  .-,----------.
                                  V            |
>>-SQL TYPE IS VARCHAR--(length)-----varname---+---------------><
 

文字ホスト変数に関する考慮事項:

  1. *n の最大値は 254。

  2. 長さ (length) が 1 と 32 672 の間である場合、ホスト変数のタイプは VARCHAR(448)。

  3. 長さ (length) が 32 673 と 32 700 の間である場合、ホスト変数のタイプは LONG VARCHAR(SQLTYPE 456)。

  4. 宣言内で VARCHAR ホスト変数および LONG VARCHAR ホスト変数を初期設定することは許可されていない。

VARCHAR の例:

宣言:

     sql type is varchar(1000) my_varchar

この結果、以下の構造が生成されます。

      character    my_varchar(1000+2)
      integer*2    my_varchar_length
      character    my_varchar_data(1000)
      equivalence( my_varchar(1),
     +             my_varchar_length )
      equivalence( my_varchar(3),
     +             my_varchar_data )

アプリケーションは、たとえば、ホスト変数の内容の設定や検査のために、 my_varchar_length および my_varchar_data の両方を処理できます。 SQL ステートメントでベース名 (ここでは、my_varchar) を使用して、 VARCHAR 全体を参照します。

LONG VARCHAR の例:

宣言:

     sql type is varchar(10000) my_lvarchar

この結果、以下の構造が生成されます。

      character    my_lvarchar(10000+2)
      integer*2    my_lvarchar_length
      character    my_lvarchar_data(10000)
      equivalence( my_lvarchar(1),
     +             my_lvarchar_length )
      equivalence( my_lvarchar(3),
     +             my_lvarchar_data )

アプリケーションは、たとえば、ホスト変数の内容の設定や検査のために、 my_lvarchar_length および my_lvarchar_data の両方を処理できます。 SQL ステートメントでベース名 (ここでは、my_lvarchar) を使用して、 LONG VARCHAR 全体を参照します。
注:以下の例に示すような CONNECT ステートメントでは、 FORTRAN 文字ストリング・ホスト変数 dbname および userid の後続ブランクは、処理前に削除されます。

     EXEC SQL CONNECT TO :dbname USER :userid USING :passwd 
しかし、パスワードにはブランクも有効であるため、パスワードのホスト変数を VARCHAR として宣言し、実際のパスワードの長さを反映するように長さ (length) フィールドを設定しなければなりません。

     EXEC SQL BEGIN DECLARE SECTION
       character*8 dbname, userid
       sql type is varchar(18) passwd
     EXEC SQL END DECLARE SECTION
     character*18 passwd_string
     equivalence(passwd_data,passwd_string)
     dbname = 'sample'
     userid = 'userid'
     passwd_length= 8
     passwd_string = 'password'
     EXEC SQL CONNECT TO :dbname USER :userid USING :passwd

FORTRAN の標識変数

標識変数は、INTEGER*2 データ・タイプとして宣言します。

FORTRAN における LOB 宣言

FORTRAN におけるラージ・オブジェクト (LOB) ホスト変数の構文は、FORTRAN におけるラージ・オブジェクト (LOB) ホスト変数の構文を示します。

FORTRAN におけるラージ・オブジェクト (LOB) ホスト変数の構文
 
                                              .-,----------------.
                                              V                  |
>>-SQL TYPE IS--+-BLOB-+---(length-+---+--)------variable-name---+->
                '-CLOB-'           +-K-+
                                   +-M-+
                                   '-G-'
 
>--------------------------------------------------------------><
 

LOB ホスト変数に関する考慮事項:

  1. GRAPHIC タイプは、FORTRAN ではサポートされていない。

  2. SQL TYPE IS、BLOB、CLOB、K、M、G は、大文字、小文字、またはその混合のいずれでもかまわない。

  3. BLOB および CLOB の場合は、 1 <= lob-length <= 2 147 483 647 である。

  4. LOB 宣言内での LOB の初期化はできない。

  5. ホスト変数名には、プリコンパイラー生成コードにおいて 'length' と 'data' という接頭語がある。

BLOB の例:

宣言:

     sql type is blob(2m) my_blob 

この結果、以下の構造が生成されます。

      character    my_blob(2097152+4) 
      integer*4    my_blob_length 
      character    my_blob_data(2097152) 
      equivalence( my_blob(1), 
     +             my_blob_length ) 
      equivalence( my_blob(5), 
     +             my_blob_data ) 

CLOB の例:

宣言:

     sql type is clob(125m) my_clob 

この結果、以下の構造が生成されます。

      character    my_clob(131072000+4) 
      integer*4    my_clob_length 
      character    my_clob_data(131072000) 
      equivalence( my_clob(1), 
     +             my_clob_length ) 
      equivalence( my_clob(5), 
     +             my_clob_data ) 

FORTRAN における LOB ロケーター宣言

FORTRAN におけるラージ・オブジェクト (LOB) ロケーター・ホスト変数の構文は、FORTRAN におけるラージ・オブジェクト (LOB) ロケーター・ホスト変数の宣言の構文を示します。

FORTRAN におけるラージ・オブジェクト (LOB) ロケーター・ホスト変数の構文
 
                                   .-,----------------.
                                   V                  |
>>-SQL TYPE IS--+-BLOB_LOCATOR-+------variable-name---+--------><
                '-CLOB_LOCATOR-'
 

LOB ロケーター・ホスト変数に関する考慮事項:

  1. GRAPHIC タイプは、FORTRAN ではサポートされていない。

  2. SQL TYPE IS、BLOB_LOCATOR、CLOB_LOCATOR は、大文字、小文字、またはその混合のいずれでもかまわない。

  3. ロケーターの初期化はできない。

CLOB ロケーターの例 (BLOB ロケーターと同様):

宣言:

     SQL TYPE IS CLOB_LOCATOR my_locator 

この結果、以下の宣言が生成されます。

      integer*4 my_locator 

FORTRAN におけるファイル参照宣言

FORTRAN におけるファイル参照ホスト変数の構文は、FORTRAN におけるファイル参照ホスト変数の宣言の構文を示します。

FORTRAN におけるファイル参照ホスト変数の構文
 
                                .-,----------------.
                                V                  |
>>-SQL TYPE IS--+-BLOB_FILE-+------variable-name---+-----------><
                '-CLOB_FILE-'
 

ファイル参照ホスト変数に関する考慮事項:

  1. Graphic タイプは、FORTRAN ではサポートされていない。

  2. SQL TYPE IS、BLOB_FILE、CLOB_FILE は、大文字、小文字、またはその混合のいずれでもかまわない。

BLOB ファイル参照変数の例 (CLOB ファイル参照変数と同様):

     SQL TYPE IS BLOB_FILE my_file 

この結果、以下の宣言が生成されます。

      character     my_file(267) 
      integer*4     my_file_name_length 
      integer*4     my_file_data_length 
      integer*4     my_file_file_options 
      character*255 my_file_name 
      equivalence(  my_file(1), 
     +              my_file_name_length ) 
      equivalence(  my_file(5), 
     +              my_file_data_length ) 
      equivalence(  my_file(9), 
     +              my_file_file_options ) 
      equivalence(  my_file(13), 
     +              my_file_name ) 


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