C プログラムでのポインター・ホスト変数の宣言
Db2 コプロセッサーを使用する場合は、静的または動的に割り振られたストレージを使用してポインター・ホスト変数を使用できます。 これらのポインター・ホスト変数は、数値データ、非数値データ、または構造をポイントできます。
このタスクについて
次のタイプのポインター・ホスト変数を宣言できます。
- スカラー・ポインター・ホスト変数
- 数値または非数値のスカラー・データをポイントするホスト変数。
- 配列ポインター・ホスト変数
- ポインターの配列からなるホスト変数です。
- 構造配列ホスト変数
- 構造をポイントするホスト変数。
プロシージャー
C および C++ プログラムでポインター・ホスト変数を宣言するには、次の手順で行います。
アスタリスク (*) を各変数宣言に組み込んで、変数がポインターであることを指示します。
制約事項:
- 不明な長さの文字データをポイントするポインター・ホスト変数は使用できません。 例えば、
char * hvcharpuのような宣言は指定しないでください。 代わりに、境界付き文字ポインター・ホスト変数を使用してデータの長さを指定します。 境界付き文字ポインター・ホスト変数 は、次のエレメントからなる構造として宣言されるホスト変数です。- ストレージ域の長さを含む 4 バイトのフィールド。
- 非数値の動的ストレージ域へのポインター。
- タイプなしポインターは使用できません。 例えば、
void * untypedprtのような宣言は指定しないでください。
例
- 例: スカラー・ポインター・ホスト変数宣言
表 1. スカラー・ポインター・ホスト変数の宣言の例 宣言 説明 short *hvshortp;hvshortp は、2 バイトのストレージをポイントするポインター・ホスト変数です。 double *hvdoubp;hvdoubp は、8 バイトのストレージをポイントするポインター・ホスト変数です。 char (*hvcharpn) [20];hvcharpn は、最大 20 バイトの NUL 終止符文字配列をポイントするポインター・ホスト変数です。 - 例: 文字ポインター・ホスト変数宣言のボーダー設定
- 次のコード例では、hvbcharp という名前の境界付き文字ポインター・ホスト変数を宣言します。これは、len と data の 2 つのエレメントを含んでいます。
struct { unsigned long len; char * data; } hvbcharp; - 例: 配列ポインター・ホスト変数宣言
表 2. 配列ポインター・ホスト変数の宣言の例 宣言 説明 short * hvarrpl[6]hvarrp1 は、それぞれ 2 バイトのストレージを参照する、6 つのポインターからなる配列です。 double * hvarrp2[3]hvarrp2 は、それぞれ 8 バイトのストレージを参照する、3 つのポインターからなる配列です。 struct { unsigned long len; char * data; } hvbarrp3[5];hvbarrp3 は 5 つの境界付き文字ポインターからなる配列です。 - 例: 構造配列ホスト変数宣言
- 次のコード例では、tbl_struct という名前の表構造を宣言します。
次のコード例では、構造 tbl_struct へのポインターを宣言します。 ストレージは、n 行まで動的に割り振られます。struct tbl_struct { char colname[20]; small int colno; small int coltype; small int collen; };struct tbl_struct *ptr_tbl_struct = (struct tbl_struct *) malloc (sizeof (struct tbl_struct) * n);