ホスト変数は、SQL ステートメント内で参照される 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 / -'
数値ホスト変数に関する考慮事項:
FORTRAN における文字変数の構文: 固定長は、文字ホスト変数の構文を示します。
FORTRAN における文字変数の構文: 固定長 .-,-----------------------------------. V | >>-CHARACTER--+----+-----varname--+---------------------+---+-->< '-*n-' '- / initial-value / -'
可変長
.-,----------. V | >>-SQL TYPE IS VARCHAR--(length)-----varname---+---------------><
文字ホスト変数に関する考慮事項:
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 |
標識変数は、INTEGER*2 データ・タイプとして宣言します。
FORTRAN におけるラージ・オブジェクト (LOB) ホスト変数の構文は、FORTRAN におけるラージ・オブジェクト (LOB) ホスト変数の構文を示します。
FORTRAN におけるラージ・オブジェクト (LOB) ホスト変数の構文 .-,----------------. V | >>-SQL TYPE IS--+-BLOB-+---(length-+---+--)------variable-name---+-> '-CLOB-' +-K-+ +-M-+ '-G-' >--------------------------------------------------------------><
LOB ホスト変数に関する考慮事項:
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) ロケーター・ホスト変数の構文 .-,----------------. V | >>-SQL TYPE IS--+-BLOB_LOCATOR-+------variable-name---+-------->< '-CLOB_LOCATOR-'
LOB ロケーター・ホスト変数に関する考慮事項:
CLOB ロケーターの例 (BLOB ロケーターと同様):
宣言:
SQL TYPE IS CLOB_LOCATOR my_locator
この結果、以下の宣言が生成されます。
integer*4 my_locator
FORTRAN におけるファイル参照ホスト変数の構文は、FORTRAN におけるファイル参照ホスト変数の宣言の構文を示します。
FORTRAN におけるファイル参照ホスト変数の構文 .-,----------------. V | >>-SQL TYPE IS--+-BLOB_FILE-+------variable-name---+----------->< '-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 )