#include #include #include #include #include #include #include #include #include #include #include #define min(x,y) ((x > y)?y:x) #define max(x,y) ((x < y)?y:x) struct FAB afab; struct RAB arab; static rad_acc_file = 0; char rad_acc [] = "BADACC.DAT"; void main (void) { long status; struct acrdef *head; struct acrdef1 *head1; struct acrdef2 *id; struct acrdef3 *res; short len; char acr_buf [2048]; long count = 0; $DESCRIPTOR(dsc$fao,"!8ZL !12AC Logoff time:!%D , Login time:!%D"); $DESCRIPTOR(dsc$buf," "); afab = cc$rms_fab; afab.fab$b_fac = FAB$M_GET; afab.fab$l_fna = rad_acc; afab.fab$b_fns = sizeof(rad_acc)-1; arab = cc$rms_rab; arab.rab$l_fab = &afab; status = sys$open(&afab); if (!$VMS_STATUS_SUCCESS(status)) lib$signal(status); status = sys$connect(&arab); if (!$VMS_STATUS_SUCCESS(status)) lib$signal(status); arab.rab$l_ubf = acr_buf; arab.rab$w_usz = sizeof(acr_buf); head1 = (struct acrdef1 *) acr_buf; while ( 1 & (status = sys$get(&arab)) ) { count++; head = (struct acrdef *) (acr_buf + ACR$K_HDRLEN); id = (struct acrdef2 *) head; head = (struct acrdef *) ((char *)id + head->acr$w_length); res = (struct acrdef3 *) (head); status = sys$fao(&dsc$fao,&dsc$buf.dsc$w_length,&dsc$buf, count,(char *)id + id->acr$w_username, head1->acr$q_systime,res->acr$q_login); if ( !$VMS_STATUS_SUCCESS(status) ) lib$signal(status); status = lib$put_output(&dsc$buf); if ( !$VMS_STATUS_SUCCESS(status) ) lib$signal(status); } if ( !$VMS_STATUS_SUCCESS(status) ) lib$signal(status); status = sys$close(&afab); if ( !$VMS_STATUS_SUCCESS(status) ) lib$signal(status); }