[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference azur::mcc

Title:DECmcc user notes file. Does not replace IPMT.
Notice:Use IPMT for problems. Newsletter location in note 6187
Moderator:TAEC::BEROUD
Created:Mon Aug 21 1989
Last Modified:Wed Jun 04 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:6497
Total number of notes:27359

3877.0. "Several problems in : REPORTS(Graph) /TSAM /IMPM/E" by TIMABC::JOSEI () Thu Oct 08 1992 12:01

	Hello,

	I've been working 2 months in a network management project for
	an university here in Spain. We have used DECmcc V1.2 (SSB),
	TSAM, ELM AM, ELM FM, VCS, DCM, LTMreports. I've found several
	problems, some of them reported in this conference but without
	solution or without date for the solution. 
	
	I must say that the customer at the end of the service is happy 
	with our solution for integrated network and system management, 
	but He expect more integration in the new versions ...(ie.: VCS,
	LTMreports,...) The most important need for them is obtain the
	graphs (from IMPM) with a command, to have the possibility to send
	regularly to batch without operator intervention.

	BTW, is there any note for patches and workarounds for version 1.2?
	(like for V1.1)

	Thanks in avance by your help,

	Jose Ignacio.

--------------------------------------------------------------------------


	PROBLEMS
	--------

	Reports
	-------

	As reported in note 3587 the TCP/IP Interface Reports fails
	and the LOG give the following output:

$define cdd$default cdd$top.ehu
$!***************************************************************************
$! This procedure is submitted by MCC_RPTS_TCPIP_INT_DAILY_GRAPH.COM
$!***************************************************************************
$ THIS_PROCESS = ""
$ PID = F$PID(THIS_PROCESS)
$ show sym p1
  P1 = "SI3101"
$ show sym p2
  P2 = "999"
$ show sym p3
  P3 = "1-SEP-1992 00:00:00.00"
$ show sym p4
  P4 = " 8-OCT-1992 23:00:00.00"
$! show sym PID
$ TIME = F$TIME()
$ DAY = F$CVTIME(TIME,,"DAY")
$ MONTH= F$CVTIME(TIME,,"MONTH")
$ YEAR = F$CVTIME(TIME,,"YEAR")
$ HOUR = F$CVTIME(TIME,,"HOUR")
$ MIN = F$CVTIME(TIME,,"Minute")
$ SEC = F$CVTIME(TIME,,"second")
$ HUNDREDTH = F$CVTIME(TIME,,"HUNDREDTH")
$ space1 = " "
$ 
$ define interface_id_file int_id_tmp.d00000081081503
$ define int_graph_temp1 int_graph.d00000081081503
$ create  NODE_HOLD_d00000081081503.grm   
$!* The following line is intentionally kept blank.

$ define mcc$node1 "SI3101"
$ define mcc$INTERFACE_ID1 "999"
$ define mcc$date1 "1-SEP-1992 00:00:00.00"
$ define mcc$date2 " 8-OCT-1992 23:00:00.00"
$ define mcc$report_file "INTERFAC.GRM"
$!
$! Enter datatrieve and store data and interfaces.
$!
$ datatrieve/interface=character_cell
VAX DATATRIEVE V5.1
Digital Query and Report System
Type HELP for help
 
 set verify
!
! Ready database.
!
 Ready MCC_EXPORT shared read

 DECLARE NODE_HOLD PIC X(255).
 DECLARE INTERFACE_ID_HOLD PIC X(16).
 DECLARE DATE1_HOLD USAGE DATE.
 DECLARE DATE2_HOLD USAGE DATE.
 DECLARE NODE_HOLD1 COMPUTED BY FN$UPCASE(snmp)
 NODE_HOLD = FN$TRANS_LOG("MCC$NODE1")
DECLARE NODE_HOLD1 COMPUTED BY FN$UPCASE ( SNMP )  
NODE_HOLD = FN$TRANS_LOG("MCC$NODE1") 
^ 
Expected field option or period, encountered "NODE_HOLD". 
 INTERFACE_ID_HOLD = FN$TRANS_LOG("MCC$INTERFACE_ID1")
 DATE1_HOLD = FN$DATE(FN$TRANS_LOG("MCC$DATE1"))
 DATE2_HOLD = FN$DATE(FN$TRANS_LOG("MCC$DATE2"))
!
! Find data
!
 Find  MCC_SNMP_INTERFACE with NODE_HOLD1 CONTAINING NODE_HOLD
"NODE_HOLD1" is undefined or used out of context. 
 if INTERFACE_ID_HOLD NE "999" THEN Find current with INTERFACE = INTERFACE_ID_HOLD
"CURRENT" is not a readied source, collection, or list. 
 Find current with time_STAMP between DATE1_HOLD and DATE2_HOLD
"CURRENT" is not a readied source, collection, or list. 
 Find current with exp_cvr_statistics = 1
"CURRENT" is not a readied source, collection, or list. 
!
! Define file to hold data.
!
 define file for int_graph_temp
 ready  int_graph_temp write
 int_graph_temp = current
"INT_GRAPH_TEMP" is undefined or used out of context. 

!
! Write interfaces we are reporting on to a file.
!
 reduce current to interface
REDUCE CURRENT TO INTERFACE 
               ^ 
Expected end of statement, encountered "TO". 

 on interface_id_file
[Looking for statement] 
 for a in current
[Looking for statement] 
 print a.interface (-)
"CURRENT" is not a readied source, collection, or list. 

!
! Done. Exit DTR
!
 EXIT
$
$open/read/error=file_open_error infile int_id_tmp.d00000081081503
$file_open_error:
$ write sys$output "Error opening file for circuit_id_tmp"
Error opening file for circuit_id_tmp
$ EXIT
  SISGESTI     job terminated at  8-OCT-1992 15:04:06.16

  Accounting information:
  Buffered I/O count:             248         Peak working set size:    4687
  Direct I/O count:               781         Peak page file size:     12171
  Page faults:                   2973         Mounted volumes:             0
  Charged CPU time:           0 00:00:04.46   Elapsed time:     0 00:00:21.86


------------------------------------------------------------------------------


	Iconic Map- Motif
	-----------------

	(I don't know too much about Motif but ...)
	The Motif option CLOSE from the window kills DECmcc process.
	I've read the Release Notes and created a file called
	DECW$USER_DEFAULTS:DECW$DEFAULTS.DAT with the contents:
	(DECW$USER_DEFAULT points to SYS$LOGIN)

Mwm*MCCclass*clientFunctions:		        - Close
Mwm*shell_class*clientFunctions:                - Close
Mwm*mcc_graph_resource*clientFunctions:         - Close


	but I still kill my MCC process if I close the Notification
	window.


------------------------------------------------------------------------------


	Terminal Server AM
	------------------

	1-We have 3 alarms for all T.Servers running each 5' looking
	accesibility and resources (CPU & Memory). There is 15 TS.
	The syntax of the alamrs is always for example: 
		Terminal Server * current CPU usage > 90
	If I run a procedure to clear all the alarms and recreate 
	again, my process hangs in RWMBX. (As reported in note 3782)
	There is a solution for this problem or where can I find the
	status for it?

	2-SHO TERMINAL_SERVER si6111 INTERNER NAMESERVER * ALL ATTRIB
	gives the following output, where the server name is truncated
	The real name is shown at the end giving the output from UCX
	(SHOW NAME_SERVER). The names are truncated as follows:

		SISA00 			->  SISA
		SISB00 			->  SISB
		...
		sun.iris-dcp.es		-> sun.iris		

Terminal_Server SIVX01_NS:.si6111 Internet Nameserver SISA 
AT  6-OCT-1992 16:19:29 All Attributes

                                   Name = SISA
                                Address = 158.227.112.50
                                   Root = False
                        Initial Address = 158.227.112.50
                           Initial Root = False

Terminal_Server SIVX01_NS:.si6111 Internet Nameserver SISB 
AT  6-OCT-1992 16:19:42 All Attributes

                                   Name = SISB
                                Address = 158.227.112.40
                                   Root = False
                        Initial Address = 158.227.112.40
                           Initial Root = False

Terminal_Server SIVX01_NS:.si6111 Internet Nameserver SQDX 
AT  6-OCT-1992 16:19:48 All Attributes

                                   Name = SQDX
                                Address = 158.227.108.30
                                   Root = False
                        Initial Address = 158.227.108.30
                           Initial Root = False

Terminal_Server SIVX01_NS:.si6111 Internet Nameserver SUN.IRIS 
AT  6-OCT-1992 16:19:55 All Attributes

                                   Name = SUN.IRIS
                                Address = 130.206.1.2
                                   Root = False
                        Initial Address = 130.206.1.2
                           Initial Root = False
UCX> sho name_serv

BIND Resolver Parameters

 System

  State:     Started, En led

  Transport: UDP
  Domain:    si.ehu.es
  Retry:     4
  Timeout:   4
  S vers:   SISB00, SISA00, sun.iris-dcp.es

 Process

  State:     Enabled

  Tra port:
  Domain:
  Retry:
  Timeout:
  Servers:


------------------------------------------------------------------------------

	ELM AM
	------

	Showing the attributes of a DECbridge 520 I get an error for STATUS
	partition.
MCC> sho bridge sq1101 all attr

Bridge SIVX01_NS:.sq1101
AT  8-OCT-1992 13:12:03 All Attributes

                                   Name = SIVX01_NS:.sq1101
                                Address = { 08-00-2B-28-6A-46,
                                            08-00-2B-68-6A-46 }
The requested operation cannot be completed
                      MCC Routine Error = %MCC-W-ILVINVVAL, ILV detected
                                          invalid value
                  Counter Creation Time =  1-OCT-1992 11:01:52.79
                      Seconds Operating = 612611 Seconds
                      Management Resets = 0
                               Powerups = 18
                     Device Frames Lost = 7730954240 Frames
             Spanning Tree Mode Changes = 0
                      Invalid Passwords = 0
                     Unsolicited Resets = 0
                                     ID = %X08002B286A46
                          Hardware Type = DEFEB DECbridge 520
                       Software Version = "V1.1"
                            ROM Version = V2.9.0
                             Port Count = 2
                          Root Priority = 128
                        Bad Hello Limit = 15
               Bad Hello Reset Interval = 5
             Port Test Passed Threshold = 10
                     Port Test Interval = 60 Seconds
                      No Frame Interval = 300 Seconds
                         Hello Interval = 1 Seconds
                            Listen Time = 15 Seconds
                       Forwarding Delay = 30 Seconds
                         Last Load Host = 00-00-00-00-00-00
                  Reset Defaults Switch = False
      LB100 Spanning Tree Compatibility = Auto-Select
            LB100 Spanning Tree Version = V0.2.0
                        LB100 Poll Time = 300 Seconds
                 LB100 Response Timeout = 15 Seconds
          IEEE802 Spanning Tree Version = V0.0.0
                          Update Switch = False
                IP Fragmentation Switch = True
                              NTP Table = { 80-F3 }
                   Device Configuration = ( (
                                   FRU Type = AP Card,
                                  FRU State = Working,
                                     FRU ID = N/A,
                               FRU Revision = Revision 8 ),
                                            (
                                   FRU Type = Single NI Card,
                                  FRU State = Working,
                                     FRU ID = N/A,
                               FRU Revision = Revision 0 ),
                                            (
                                   FRU Type = FI Card,
                                  FRU State = Working,
                                     FRU ID = N/A,
                               FRU Revision = Revision 8 ),
                                            (
                                   FRU Type = QM Card,
                                  FRU State = Working,
                                     FRU ID = N/A,
                               FRU Revision = Revision 0 ),
                                            (
                                   FRU Type = Fan,
                                  FRU State = Working,
                                     FRU ID = N/A,
                               FRU Revision = Revision 0 ) )
   Device Configuration Error Condition = False
                               Location = -- Attribute Not Available
                    Implementation Desc = -- Attribute Not Available
                     Responsible Person = -- Attribute Not Available
                           Phone Number = -- Attribute Not Available
                           MAIL Account = -- Attribute Not Available
                                Remarks = -- Attribute Not Available
                              Text File = -- Attribute Not Available




T.RTitleUserPersonal
Name
DateLines
3877.1See note 3866 and note 7TOOK::MINTZLKG2-2 near pole X3, cube 6072, dtn 226-5033Thu Oct 08 1992 14:1912
I am glad to hear that your customer is happy!

As discussed in note 3866, a new corporate policy has changed
the patch strategy.  So there are no patches available at this time.

Note 7 has new instructions for filing bug reports through the QAR system.
I have forwarded this not to the responsible supervisor, but to make
sure problems are tracked, you sure enter them as QARs, not notes.

Thanks for the feedback,

-- Erik
3877.2update to QAR3372 ??CTHQ::WOODCOCKMon Oct 12 1992 15:577
With regards to the TCP/IP reports problem is there any update or timeframes
available??? I have a customer who still calls with regards to this problem
and feels if it's in the SSB kit, it should work. This was originally reported
in note 3587 and is QAR #3372.

what's the good word,
brad...
3877.3Sorry, no answer yetTOOK::MINTZLKG2-2 near pole X3, cube 6072, dtn 226-5033Mon Oct 12 1992 17:0210
This QAR is still active in our internal (to developers) QAR database,
and has not yet been answered:

03372 OP  M  Yes     QD_MERRIFIEL PA         M QD_MINTZ     19-AUG-1992
INTERFACE HOURLY GRAPHS REPORT FAILS

In general, as QARs that have been transferred from notes are answered,
I post the answer in the originating note (new problems should be entered
directly through the QAR system; see note 7 for directions).

3877.4syntax errors solvedMLNCSC::BARILAROThu Nov 12 1992 08:18295
Hi,

	I had the same problem for TCP graph reports list on topics 3587,
	3877, and entered as QAR 3372. 

	Finally yesterday, having some time, I was able to make it works.
	What I did is only to solve the syntax error inside the DCL command
	files and the DTR procedures. I didn't check if there are also 
	"logical" error, I mean I didn't check the algorithms, I presume
	that the reports produce what they say.

	I'm not a programmer and the last time that I used DTR was 4 years
	ago, so it's possible that I miss something.

	The errors for DAILY and HOURLY graph reports was the same so I 
	include only the DAILY reports, correct the same errors on the 
	HOURLY.

	A little description, these reports are composed in two parts, the 
	first one is some DTR commands write inside the DCL procedure that
	read the RDB relation and produce a temporary file that's contains
	the records that match the selection made (SNMP, interface, date ),
	the second part run a DTR procedure thats read the temporary file
	and produce a GRL file for DECGRAPH.

	There is a syntax error on the first part (the DCL procedure) and 
	another two on the second (the DTR procedure), I'll include these
	files, I'll put a sign like "<<<<" near the corrections.

	
The DCL procedure MCC_RPTS_TCPIP_INT_DAILY_GRAPH_DTR.COM:
=========================================================

$!MCC_RPTS_TCPIP_INT_DAILY_GRAPH_DTR.COM
$!************************************************************
$!  Copyright (c) Digital Equipment Corporation, 1990
$!  All Rights Reserved.  Unpublished rights reserved
$!  under the copyright laws of the United States.
$!  
$!  The software contained on this media is proprietary
$!  to and embodies the confidential technology of 
$!  Digital Equipment Corporation.  Possession, use,
$!  duplication or dissemination of the software and
$!  media is authorized only pursuant to a valid written
$!  license from Digital Equipment Corporation.
$!
$!  RESTRICTED RIGHTS LEGEND   Use, duplication, or 
$!  disclosure by the U.S. Government is subject to
$!  restrictions as set forth in Subparagraph (c)(1)(ii)
$!  of DFARS 252.227-7013, or in FAR 52.227-19, as
$!  applicable.
$!************************************************************
$!***************************************************************************
$! This procedure is submitted by MCC_RPTS_TCPIP_INT_DAILY_GRAPH.COM
$!***************************************************************************
$ THIS_PROCESS = ""
$ PID = F$PID(THIS_PROCESS)
$ show sym p1
$ show sym p2
$ show sym p3
$ show sym p4
$! show sym PID
$ TIME = F$TIME()
$ DAY = F$CVTIME(TIME,,"DAY")
$ MONTH= F$CVTIME(TIME,,"MONTH")
$ YEAR = F$CVTIME(TIME,,"YEAR")
$ HOUR = F$CVTIME(TIME,,"HOUR")
$ MIN = F$CVTIME(TIME,,"Minute")
$ SEC = F$CVTIME(TIME,,"second")
$ HUNDREDTH = F$CVTIME(TIME,,"HUNDREDTH")
$ space1 = " "
$ 
$ define interface_id_file int_id_tmp.d'PID''DAY''HOUR''min''hundreth'
$ define int_graph_temp1 int_graph.d'PID''DAY''HOUR''min''hundreth'
$ create  NODE_HOLD_d'PID''DAY''HOUR''min''hundreth'.grm   
$!* The following line is intentionally kept blank.

$ define mcc$node1 "''p1'"
$ define mcc$INTERFACE_ID1 "''p2'"
$ define mcc$date1 "''p3'"
$ define mcc$date2 "''p4'"
$ define mcc$report_file "''p5'"
$!
$!
$! Enter datatrieve and store data and interfaces.
$!
$ datatrieve/interface=character_cell
 set verify
!
! Ready database.
!
 Ready MCC_EXPORT shared read

 DECLARE NODE_HOLD PIC X(255).
 DECLARE INTERFACE_ID_HOLD PIC X(16).
 DECLARE DATE1_HOLD USAGE DATE.
 DECLARE DATE2_HOLD USAGE DATE.
!*******************************************************************
! DECLARE NODE_HOLD1 COMPUTED BY FN$UPCASE(snmp) <<< 
! on the original procedure miss the ".", on DTR all the DECLARE command
! MUST terminate with a ".", so the correct one is:
 DECLARE NODE_HOLD1 COMPUTED BY FN$UPCASE(snmp) . 
!*******************************************************************
 NODE_HOLD = FN$TRANS_LOG("MCC$NODE1")
 INTERFACE_ID_HOLD = FN$TRANS_LOG("MCC$INTERFACE_ID1")
 DATE1_HOLD = FN$DATE(FN$TRANS_LOG("MCC$DATE1"))
 DATE2_HOLD = FN$DATE(FN$TRANS_LOG("MCC$DATE2"))
!
! Find data
!
 Find  MCC_SNMP_INTERFACE with NODE_HOLD1 CONTAINING NODE_HOLD
 if INTERFACE_ID_HOLD NE "999" THEN Find current with INTERFACE = INTERFACE_ID_HOLD
 Find current with time_STAMP between DATE1_HOLD and DATE2_HOLD
 Find current with exp_cvr_statistics = 1
!
! Define file to hold data.
!
 define file for int_graph_temp
 ready  int_graph_temp write
 int_graph_temp = current

!
! Write interfaces we are reporting on to a file.
!
 reduce current to interface

 on interface_id_file
 for a in current
 print a.interface (-)

!
! Done. Exit DTR
!
 EXIT
$
$open/read/error=file_open_error infile int_id_tmp.d'PID''DAY''HOUR''min''hundreth'
$ read/end_of_file=normal_exit  infile interface_id_rec
$ count_hold = 0
$ loop_read_process_int_id:
$	count_hold = count_hold + 1
$	interface = F$EDIT(interface_id_rec,"COLLAPSE")
$	define hold$interface 'interface'
$	Define MCC$INT_GRAPH_FILE int_id_d'PID''DAY''HOUR''min''hundreth'.grl
$	datatrieve/interface=character_cell
		:TCPIP_INT_DAILY_GRAPH_RPT
		EXIT
$!
$! Do the graph.
$!
$	graph/load/nointeractive/monochrome=int_id_d'PID''DAY''HOUR''min''hundreth' int_id_d'PID''DAY''HOUR''min''hundreth'  mcc_reports_files:mcc_rpts_lgraph
$	append int_id_d'PID''DAY''HOUR''min''hundreth'.grm node_hold_d'PID''DAY''HOUR''min''hundreth'.grm
$	delete/nocon int_id_d'PID''DAY''HOUR''min''hundreth'.grl.*
$	delete/nocon int_id_d'PID''DAY''HOUR''min''hundreth'.grm.*
$	delete/nocon int_id_d'PID''DAY''HOUR''min''hundreth'.grd.*
$	delete/nocon int_id_d'PID''DAY''HOUR''min''hundreth'.gri.*
$	read/end_of_file=normal_exit  infile interface_id_rec
$ goto loop_read_process_int_id
$ normal_exit:
$!
$ rename node_hold_d'PID''DAY''HOUR''min''hundreth'.grm   'P5' 
$ delete/nocon int_id_tmp.d'PID''DAY''HOUR''min''hundreth'.*
$ delete/nocon int_graph.d'PID''DAY''HOUR''min''hundreth'.*
$ exit
$file_open_error:
$ write sys$output "Error opening file for circuit_id_tmp"
$ EXIT



The DTR procedure TCPIP_INT_DAILY_GRAPH_RPT.DTR :
=================================================

DELETE TCPIP_INT_DAILY_GRAPH_RPT;
REDEFINE PROCEDURE TCPIP_INT_DAILY_GRAPH_RPT
!
DECLARE HOLD_DAY	PIC XX.
DECLARE DATE1_HOLD	USAGE DATE.
DECLARE DATE2_HOLD	USAGE DATE.
DECLARE START_DATE	USAGE DATE.
DECLARE END_DATE	USAGE DATE.
DECLARE TODAY_HOLD	USAGE DATE DEFAULT "TODAY".
DECLARE AVE_UTILIZATION USAGE DOUBLE.
DECLARE IN_UTILIZATION  USAGE DOUBLE.
DECLARE OUT_UTILIZATION USAGE DOUBLE.
DECLARE NODE_HOLD	PIC X(255).
DECLARE INT_ID_HOLD	USAGE QUAD.
!
! Translate Logical Names.
!
NODE_HOLD = FN$TRANS_LOG("MCC$NODE1")
INT_ID_HOLD = FN$TRANS_LOG("HOLD$INTERFACE")
DATE1_HOLD = FN$DATE(FN$TRANS_LOG("MCC$DATE1"))
DATE2_HOLD = FN$DATE(FN$TRANS_LOG("MCC$DATE2"))
!
! Initialize
!
HOLD_DAY = "**"
!
! Ready databases
!
READY INT_GRAPH_TEMP SHARED READ
!
! Find data
!**********************************************************************
!FIND INT_GRAPH_TEMP WITH SNMP = NODE_HOLD <<<
! Here DTR open the temporary file, try to produce a collection of records that
! match the SNMP name, BUT if the name on the field is in lowercase you have no
! match..so no records selected and no reports
! If you substitute the  "SNMP = NODE_HOLD" with  "SNMP cont NODE_HOLD" doesn't
! check if it's in up or lower case.
!
! BTW I don't understand why the programmer that write this procedure want make
! another selection, I mean this DTR procedure is called only after that on the
! DCL procedure with DTR command has already selected on the RDB relation the
! records  we're interested on, and write it on a temporary file.
!
! In my opinion it is enough only the selection based on the interface
!
! Anyway using the "cont" relational operator instead of "=" it's work, so:
!**********************************************************************
FIND INT_GRAPH_TEMP WITH SNMP cont NODE_HOLD 
FIND CURRENT WITH INTERFACE = INT_ID_HOLD
FIND CURRENT WITH TIME_STAMP BETWEEN DATE1_HOLD AND DATE2_HOLD SORTED BY TIME_STAMP
!
! Get actual start and end dates.
!
SELECT FIRST
    START_DATE = TIME_STAMP
SELECT LAST
    END_DATE = TIME_STAMP
!
! Write data to file.
!
ON MCC$INT_GRAPH_FILE
BEGIN
    PRINT "TITLE Host:", NODE_HOLD(-) USING X(7), " - ", "Interface id:", INT_ID_HOLD (-) USING Z(4)9
    PRINT "SUBTITLE", START_DATE (-) USING X(12), "-", END_DATE (-) USING X(12)
    PRINT "HORIZONTAL_LABEL DAY"
    PRINT "VERTICAL_LABEL UTILIZATION"
    PRINT "X_DATA_TYPE TEXT"
    PRINT "Y_LEGEND IN_UTIL"
    PRINT "Y_LEGEND OUT_UTIL"
    PRINT "Y_LEGEND AVE_UTIL"
    FOR A IN CURRENT SORTED BY TIME_STAMP
    BEGIN
	IF HOLD_DAY = "**" THEN
	BEGIN
	    HOLD_DAY = A.DAY1
	    AVE_UTILIZATION = A.TOTAL_UTILIZATION
!****************************************************************************
!	    IN_UTILIZATION = A.INBOUND_UTILIZATION <<<
!	    OUT_UTILIZATION = A.OUTBOUND_UTILIZATION <<<
! Another syntax error, on the temporary file doesn't exist the 
! INBOUND_UTILIZATION and OUTBOUND_UTILIZATION fields, but the 
! IN_UTILIZATION and OUT_UTILIZATION, so you've to substitute all this
! fields.
!****************************************************************************
	    IN_UTILIZATION = A.IN_UTILIZATION
	    OUT_UTILIZATION = A.OUT_UTILIZATION
	END ELSE
	BEGIN
	    IF HOLD_DAY NOT EQ A.DAY1 THEN
	    BEGIN
		PRINT '"', HOLD_DAY(-) USING Z9, '"', " ",
		      IN_UTILIZATION(-) USING Z9.99, " ",
		      OUT_UTILIZATION(-) USING Z9.99, " ",
		      AVE_UTILIZATION(-) USING Z9.99
		AVE_UTILIZATION = A.TOTAL_UTILIZATION
		IN_UTILIZATION = A.IN_UTILIZATION
		OUT_UTILIZATION = A.OUT_UTILIZATION
		HOLD_DAY = A.DAY1
	    END ELSE
	    BEGIN
		AVE_UTILIZATION = (AVE_UTILIZATION + A.TOTAL_UTILIZATION)/2
		IN_UTILIZATION = (IN_UTILIZATION + A.TOTAL_UTILIZATION)/2
		OUT_UTILIZATION = (OUT_UTILIZATION + A.TOTAL_UTILIZATION)/2
	    END
	END
    END
    !
    ! Print last record
    !
    IF HOLD_DAY NE "**" THEN
	PRINT '"', HOLD_DAY(-) USING Z9, '"', " ",
	      IN_UTILIZATION(-) USING Z9.99, " ",
	      OUT_UTILIZATION(-) USING Z9.99, " ",
	      AVE_UTILIZATION(-) USING Z9.99
END
FINISH ALL
END_PROCEDURE