NetBase SQL Shadowing Handbook

NetBase SQL User Exits
____________________________________________________________
ver A0195 QUEST Software, Inc. 3-29
char fname[40];
short err;
char msg[80];
char *logp = (char *)&log_data;
comarea->action = 0; /* Default to no action */
/* PROCESS ONLY IF STATUS TABLE AND INSERT OR DELETE RECORD */
if (memcmp (header->table_name, "STATUS ", 8) != 0 ||
(header->record_type != INSERT && /* Check the status record */
header->record_type != UPDATE))
return;
/* GET THE NEW STATUS RECORD */
memcpy (logp, data, sizeof(log_data));
if (header->record_type == UPDATE) { /* Move in the updated cols */
l = i = upd_offset = log_offset = 0;
for (; l < header->upd_columns; l++) {
unum = header->update_array[l].upd_col_num;
for (; i < unum-1; i++)
log_offset += header->column_array[i].column_length;
memcpy (logp+log_offset, upd_data+upd_offset,
header->update_array[l].upd_col_length);
upd_offset += header->update_array[l].upd_col_length;
}
}
/* READ THE STATUS RECORD FROM THE DBE */
memcpy (log_status_name, log_data.status_name, 20);
memcpy (log_source, log_data.source, 4);
EXEC SQL SELECT SOURCE_DESC,
BUSINESS_DATE,
START_TIME,
FINISH_TIME
INTO :source_desc,
:business_date,
:start_time,
:finish_time
FROM STATUS
WHERE STATUS_NAME = :log_status_name
AND SOURCE = :log_source;
if (sqlca.sqlcode == 0 &&
memcmp (source_desc, log_data.source_desc, 16) == 0 &&
strcmp (business_date,
uexit_datetime_convert(log_data.business_date,DATE)) == 0 &&
strcmp (start_time,
uexit_datetime_convert(log_data.start_time,DATETIME)) == 0 &&
strcmp (finish_time,
uexit_datetime_convert(log_data.finish_time,DATETIME)) == 0) {