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)










