# Copyright 1990 Performance Systems International Inc.
# Copyright 1988,1989 NYSERNet Inc.
# Copyright 1990 Sony Corp.
# All Rights Reserved.
/VARIABLE/{
  # the manipulations below are to calculate the number of hours since
  # 00:00:00 Jan 1 1985. The calculations don't take into account leap
  # years etc., but we're concerned with differences in time, not
  # absolute time, so it doesn't matter

  split($DateO,date," ");		# split the date up
  tstr	= date[DTime];
  split(date[DTime],tm,":");		# split up hh:mm:ss time
  time	= (date[DYear] - "1985") * 8760; # years
  time	+= month[date[DMon]] * 24;	# months
  time	+= date[DDate] * 24;		# days
  time	+= tm[THour];			# hours

  # Having got the time, now calculate difference

  if(first[VARNAME] == 0)		# if this is not the first time
  {
    var_not_reset = 1;
    dif	= $ValO - val[VARNAME];	# get the difference
    if(dif < 0)				#   counter was reset
    {
      var_not_reset = 0;
      dif = $ValO;			#     use current value
      printf "%s:\tVARIABLE\tReset at %s\n", FILENAME, tstr;
    }

    deltahours	= time - last[VARNAME];
    if(deltahours)			#   is it a new hour
    {
      if (deltahours > 1 && var_not_reset && dif )
      {
	currenthour	= tm[THour] -1;
	firsthour	= tm[THour] - deltahours;
	printf "%s:\tVARIABLE\taverage of %d for hours %d to %d.\n", FILENAME, (dif/deltahours), firsthour, currenthour;
      }
      x		= tm[THour] + 0;	#   force conversion to int
      VARNAMEnr[x]	+=1;			#   records
      VARNAMEsum[x]	+= dif;			#   value
      last[VARNAME]	= time;			#   save oldtime
      val[VARNAME]	= $ValO;		#   save old value
    }
    else if ( tm[THour] == 23 )		#   if not new hour, is it 23rd hr
    {
	VARNAMEnr[24]	+= 1;
        VARNAMEsum[24]	+= dif;
        val[VARNAME]	= $ValO;
	RDay	= date[DDay];		# for report header
	RMon	= date[DMon];
	RDate	= date[DDate];
	RYear	= date[DYear];
    }
    
  }
  else
  {
    first[VARNAME]	= 0;			# not the first time anymore
    last[VARNAME]	= time;			# save oldtime
    val[VARNAME]	= $ValO;		# save old value
  }
}
