| 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 |
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.R | Title | User | Personal Name | Date | Lines |
|---|---|---|---|---|---|
| 3877.1 | See note 3866 and note 7 | TOOK::MINTZ | LKG2-2 near pole X3, cube 6072, dtn 226-5033 | Thu Oct 08 1992 13:19 | 12 |
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.2 | update to QAR3372 ?? | CTHQ::WOODCOCK | Mon Oct 12 1992 14:57 | 7 | |
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.3 | Sorry, no answer yet | TOOK::MINTZ | LKG2-2 near pole X3, cube 6072, dtn 226-5033 | Mon Oct 12 1992 16:02 | 10 |
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.4 | syntax errors solved | MLNCSC::BARILARO | Thu Nov 12 1992 08:18 | 295 | |
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
| |||||