SQL/MX Programming Manual for C and COBOL (G06.24+, H06.03+)

C Sample Programs
HP NonStop SQL/MX Programming Manual for C and COBOL523627-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)