Allocates space for an SQL descriptor area (SQLDA).
ALLOCATE DESCRIPTOR descriptor-name … [ WITH MAX { integer | host-variable } ]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
EXEC SQL INCLUDE SQLCA;
#include <sqldef.h>
EXEC SQL BEGIN DECLARE SECTION;
int        x;
short      type;
int        numcols;
char       string[100];
a_sql_statement_number  stmt = 0; 
EXEC SQL END DECLARE SECTION;    
int main(int argc, char * argv[])
{
  struct sqlda *      sqlda1;
  if( !db_init( &sqlca ) ) {
      return 1;
  }
	db_string_connect(&sqlca, "UID=dba;PWD=sql;DBF=d:\\IQ-16_0\\sample.db");
  EXEC SQL ALLOCATE DESCRIPTOR sqlda1 WITH MAX 25;
  EXEC SQL PREPARE :stmt FROM 
        'select * from Employees';
  EXEC SQL DECLARE curs CURSOR FOR :stmt;
  EXEC SQL OPEN curs;
  EXEC SQL DESCRIBE :stmt into sqlda1; 
  EXEC SQL GET DESCRIPTOR sqlda1 :numcols=COUNT; 
      // how many columns?
  if( numcols > 25 ) { 
      // reallocate if necessary
      EXEC SQL DEALLOCATE DESCRIPTOR sqlda1;
      EXEC SQL ALLOCATE DESCRIPTOR sqlda1 
          WITH MAX :numcols;
  }
  type = DT_STRING;   // change the type to string 
  EXEC SQL SET DESCRIPTOR sqlda1 VALUE 2 TYPE = :type;
  fill_sqlda( sqlda1 );  // allocate space for the variables
  EXEC SQL FETCH ABSOLUTE 1 curs USING DESCRIPTOR sqlda1;  
  EXEC SQL GET DESCRIPTOR sqlda1 VALUE 2 :string = DATA;
  printf("name = %s", string );
  EXEC SQL DEALLOCATE DESCRIPTOR sqlda1;
  EXEC SQL CLOSE curs;
  EXEC SQL DROP STATEMENT :stmt;
  db_string_disconnect( &sqlca, "" );
  db_fini( &sqlca );
  return 0;
}
            You must declare the following in your C code prior to using this statement:
struct sqlda * descriptor_name
You must still call fill_sqlda to allocate space for the actual data items before doing a fetch or any statement that accesses the data within a descriptor area.