NetBase SQL Shadowing Handbook

User Exits NetBase SQL
____________________________________________________________
3-14 QUEST Software, Inc. ver A0195
typedef struct {
char DBEname [26];
char owner_name [20];
char table_name [20];
char user_name [20];
char commit_time [24];
short record_type;
short num_columns;
short upd_columns;
col_rec column_array [256];
upd_rec update_array [256];
} header_rec;
#pragma list on
void export_sql_exit (sqlca_type sqlca, comarea_rec *comarea,
header_rec *header, char *data, char *upd_data)
{
int rec,upd = 0;
int upd_offset = 0;
int rec_offset = 0;
char msg[130];
comarea->action = 0; /* default to no action */
if (comarea->shadnode == 0) {
/* THIS BLOCK HANDLES THE PSEUDO-NODE PROCESS */
/* IT IS IMPORTANT TO KNOW WHEN THE COLUMN "CUST_NUM" IN THE */
/* "CUSTOMERS" TABLE IS MODIFIED. PRINT TO THE CONSOLE IF IT IS. */
/* CUST_NUM IS THE FOURTH COLUMN IN TABLE "CUSTOMERS". */
if (header->record_type == 26 && /* UPDATE */
strncmp (header->table_name, "CUSTOMERS ", 10) == 0) {
while (upd < header->upd_columns &&
header->update_array[upd].upd_col_num != 4) {
upd++;
upd_offset += header->update_array[upd].upd_col_length;
}
if (upd < header->upd_columns) {
for (rec = 0;rec < 3; rec++)
rec_offset += header->column_array[rec].column_length;
strcpy (msg, "USEREXIT CUSTDBE : CUST_NUM.CUSTOMERS modified at ");
memcpy (msg+strlen(msg), header->commit_time, 24);
PRINTOP (msg, -strlen(msg), 0);
strcpy (msg, "USEREXIT CUSTDBE : Pre-update ");
memcpy (msg+30, data+rec_offset, 6);
strcpy (msg+36, " Post-update: ");
memcpy (msg+50, upd_data+upd_offset, 6);
PRINTOP (msg, -56, 0);
}
}
return; /* This ends pseudo-node processing */