# END # END # END # END # END # END # END # END # END # END # END # END #
# Copyright 1990 Performance Systems International Inc.
# Copyright 1988,1989 NYSERNet Inc.
# Copyright 1990 Sony Corp.
# All Rights Reserved.
END {
  # initialisations
  hOutOctets = 0;			# hourly output byte total
  dOutOctets = 0;			# hourly output byte total
  hInOctets = 0;			# daily input byte total
  dInOctets = 0;			# daily input byte total
  errhrs = 0;			# error hours
  errh10 = 0;			# error hours w/ errors > 10
  errh100 = 0;			# error hours w/ errors > 100


  # print out the header for the report

  printf "\n%s Link\t\tSNMP Hourly Status Report for %s %s %s %s\n\n", FILENAME,RDay, RMon, RDate, RYear;
  printf " Time   ________Input_________  ________Output________  _Failures_ Thruput\n";
  printf " Hour   Kbytes Packets	Errors  Kbytes Packets	Errors  Maint Self Kbytes\n";

  totInOctets = totOutOctets = totInUcastPkts = totOutUcastPkts = totrerrs = totserrs = totmf = totsf = 0.00;

#
  for(i=1; i < 25; i++) {
# reset to 0
   hOutOctets = 0
   hInOctets = 0
#  input bytes
   if(InOctetsnr[i] != 0)
   {
      hInOctets = (InOctetssum[i])/1024;
      printf "  %2d\t%5d",(i-1),hInOctets;
      totInOctets += hInOctets
   }
   else
    printf "  %2d\t    0",(i-1)
#  input packets
   if(InUcastPktsnr[i] != 0)
    { printf " %7d",InUcastPktssum[i];
      totInUcastPkts += InUcastPktssum[i];
    }
   else
    printf "       0"
#  receive errors
   rerrs = 0.00;			# no errors yet
   if(recvframingnr[i] != 0)
     rerrs += recvframingsum[i]; 
   if(recvoverrunsnr[i] != 0)
     rerrs += recvoverrunssum[i]; 
   if(recvabortsnr[i] != 0)
     rerrs += recvabortssum[i]; 
   if(recvcrcnr[i] != 0)
     rerrs += recvcrcsum[i]; 

########## Cisco Variables ###############
   if (Runtsnr[i] != 0)
     rerrs += Runtssum[i];
   if (Giantsnr[i] != 0)
     rerrs += Giantssum[i];
   if (CRCnr[i] != 0)
     rerrs += CRCsum[i];
   if (Framenr[i] != 0)
     rerrs += Framesum[i];
   if (Overrunnr[i] != 0)
     rerrs += Overrunsum[i];
   if (Ignorednr[i] != 0)
     rerrs += Ignoredsum[i];
   if (Abortnr[i] != 0)
     rerrs += Abortsum[i];
#
   totrerrs += rerrs;
   printf " %7d ",rerrs
#  output bytes
   if(OutOctetsnr[i] != 0)
   {
      hOutOctets = (OutOctetssum[i])/1024;
      printf "\t%5d",hOutOctets;
      totOutOctets += hOutOctets;
   }
   else
     printf "\t    0"
# output packets
   if(OutUcastPktsnr[i] != 0)
   { printf " %7d",OutUcastPktssum[i];
      totOutUcastPkts += OutUcastPktssum[i];
   }
   else
     printf "       0"
#
# send errors
#
   serrs = 0.00				# no errors yet
   if(xmitframingnr[i] != 0)
     serrs += xmitframingsum[i];
   if(xmitunderrunsnr[i] != 0)
     serrs += xmitunderrunssum[i];
   if(xmitnodcdnr[i] != 0)
     serrs += xmitnodcdsum[i];
   if(xmitnoctsnr[i] != 0)
     serrs += xmitnoctssum[i];
   if(xmitnodsrnr[i] != 0)
     serrs += xmitnodsrsum[i];

########### Cisco Variable ###################
   if (Resetsnr[i] != 0)
     serrs += Resetssum[i];

   totserrs += serrs;
   printf " %7d ",serrs
#
#  maintenance failures
#
   if (maintfailednr[i] != 0)
   { printf "\t%3d  ",maintfailedsum[i];
      totmf += maintfailedsum[i];
   }
   else
     printf "\t  0  "
#
#  self-test failures
#
   if(selftestfailednr[i] != 0)
   { printf " %4d",selftestfailedsum[i];
      totsf += selftestfailedsum[i];
   }
   else
     printf "    0"
#
#  total number of bytes passed
#
   printf " %5d\n", hOutOctets+hInOctets;
   if ( serrs+rerrs != 0)
	errhrs += 1;
   if ( serrs+rerrs > 10)
	errh10 += 1;
   if ( serrs+rerrs > 100)
	errh100 += 1;
  }
  printf " Total\t%5d %7d %7d",totInOctets,totInUcastPkts,totrerrs;	# input
  printf "\t%5d %7d %7d",totOutOctets,totOutUcastPkts,totserrs;		# output
  printf "\t%3d   %4d  %5d",totmf,totsf,totInOctets+totOutOctets;	# maint,self, total KB
  printf "\t%2d %2d %2d\t< %s >\n",errhrs,errh10,errh100, FILENAME;	# error hours
}
