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 という名前の表構造を宣言します。
struct tbl_struct
{
  char  colname[20];
  small int colno;
  small int coltype;
  small int collen;
};
次のコード例では、構造 tbl_struct へのポインターを宣言します。 ストレージは、n 行まで動的に割り振られます。
struct tbl_struct *ptr_tbl_struct =
 (struct tbl_struct *) malloc (sizeof (struct tbl_struct) * n);