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-11
Using SQL Descriptor Areas With DESCRIBE
else
if (strncmp(sqlda_name,"SALARY",strlen("SALARY"))==0) {
EXEC SQL GET DESCRIPTOR 'out_sqlda' VALUE :i
:hv_salary = VARIABLE_DATA,
:hv_salary_i = INDICATOR_DATA;
if (hv_salary_i < 0)
printf("\nSalary is unknown");
else
printf("\nSalary is: %.2f", hv_salary/100.0);
}
else
printf("\nSqlda_name is: %s", sqlda_name);
} /* end if */
/* Deallocate the prepared statement and */
/* the SQL descriptor areas. */
EXEC SQL DEALLOCATE PREPARE sqlstmt;
EXEC SQL DEALLOCATE DESCRIPTOR 'in_sqlda';
EXEC SQL DEALLOCATE DESCRIPTOR 'out_sqlda';
end_prog:
EXEC SQL WHENEVER SQLERROR CONTINUE;
if (strcmp(SQLSTATE, SQLSTATE_OK) == 0)
printf("\nThe program completed successfully. \n\n");
else {
EXEC SQL GET DIAGNOSTICS
:hv_num = NUMBER;
for (i = 1; i <= hv_num; i++) {
EXEC SQL GET DIAGNOSTICS EXCEPTION :i
:hv_tabname = TABLE_NAME,
:hv_colname = COLUMN_NAME,
:hv_sqlstate = RETURNED_SQLSTATE,
:hv_msgtxt = MESSAGE_TEXT;
hv_tabname[128]='\0'; hv_colname[128]='\0';
hv_sqlstate[5]='\0'; hv_msgtxt[128]='\0';
printf("Table : %s\n", hv_tabname);
printf("Column : %s\n", hv_colname);
printf("SQLSTATE: %s\n", hv_sqlstate);
printf("Message : %s\n", hv_msgtxt);
} /* end for */
} /* end if */
return 0;
} /* end main */
Example A-4. Using SQL Descriptor Areas With DESCRIBE (page 4 of 4)