SQL/MX Programming Manual for C and COBOL (G06.24+, H06.03+)
C Sample Programs
HP NonStop SQL/MX Programming Manual for C and COBOL—523627-004
A-10
Using SQL Descriptor Areas With DESCRIBE
/* Get the count of the number of output values. */
EXEC SQL GET DESCRIPTOR 'out_sqlda' :hv_num = COUNT;
/* Get the ith output value in NAME field and save */
/* in the correct host variable by testing on NAME. */
for (i = 1; i <= hv_num; i++) { 
 memset(sqlda_name,'\0',sizeof(sqlda_name));
 EXEC SQL GET DESCRIPTOR 'out_sqlda' VALUE :i
 :sqlda_name = NAME;
 sqlda_name[128]='\0';
 if (strncmp(sqlda_name,"EMPNUM",strlen("EMPNUM"))==0) {
 EXEC SQL GET DESCRIPTOR 'out_sqlda' VALUE :i
 :hv_empnum = VARIABLE_DATA;
 printf("\nEmpnum is: %hu", hv_empnum);
 }
 else
 if (strncmp(sqlda_name,"FIRST_NAME",strlen("FIRST_NAME"))==0){
 EXEC SQL GET DESCRIPTOR 'out_sqlda' VALUE :i
 :hv_first_name = VARIABLE_DATA;
 hv_first_name[15]='\0';
 printf("\nFirst name is: %s", hv_first_name);
 }
 else
 if (strncmp(sqlda_name,"LAST_NAME",strlen("LAST_NAME"))==0) {
 EXEC SQL GET DESCRIPTOR 'out_sqlda' VALUE :i
 :hv_last_name = VARIABLE_DATA;
 hv_last_name[20]='\0';
 printf("\nLast name is: %s", hv_last_name);
 }
 else
 if (strncmp(sqlda_name,"DEPTNUM",strlen("DEPTNUM"))==0) {
 EXEC SQL GET DESCRIPTOR 'out_sqlda' VALUE :i
 :hv_deptnum = VARIABLE_DATA;
 printf("\nDeptnum is: %hu", hv_deptnum);
 }
 else
 if (strncmp(sqlda_name,"JOBCODE",strlen("JOBCODE"))==0) {
 EXEC SQL GET DESCRIPTOR 'out_sqlda' VALUE :i
 :hv_jobcode = VARIABLE_DATA, 
 :hv_jobcode_i = INDICATOR_DATA;
 if (hv_jobcode_i < 0) 
 printf("\nJobcode is unknown");
 else 
 printf("\nJobcode is: %hu", hv_jobcode); 
 } 
Example A-4. Using SQL Descriptor Areas With DESCRIBE (page 3 of 4)










