]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MINICERN/packlib/zebra/rz/rzstat.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / MINICERN / packlib / zebra / rz / rzstat.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.1.1.1  1996/03/06 10:47:26  mclareni
6 * Zebra
7 *
8 *
9 #include "zebra/pilot.h"
10       SUBROUTINE RZSTAT(CHPATH,NLEVEL,CHOPT)
11 *
12 ************************************************************************
13 *
14 *        To print statistics for tree CHPATH
15 * Input:
16 *   CHPATH  The pathname of the directory  about which information has to
17 *           be provided.
18 *   NLEVEL  Number of levels  below CHPATH about which  space information
19 *           has to be accumulated.
20 *   CHOPT   Character variable specifying the options desired
21 *           default
22 *                 Print the statistics
23 *            'Q'  Return the statistics in  the user communication vector
24 *                 IQUEST
25 *
26 * Called by <USER>
27 *
28 *  Author  : R.Brun DD/US/PD
29 *  Written : 16.05.86
30 *  Last mod: 24.06.92 JDS - protect against RZPAFF problems
31 *          : 02.05.95 JMM - set iquest(13-14)
32 *
33 ************************************************************************
34 #include "zebra/zunit.inc"
35 #include "zebra/rzcl.inc"
36 #include "zebra/rzdir.inc"
37 #include "zebra/rzch.inc"
38 #include "zebra/rzk.inc"
39       CHARACTER*(*) CHPATH,CHOPT
40       DIMENSION ISD(NLPATM),NSD(NLPATM),IHDIR(4)
41       DIMENSION NRUSED(NLPATM),NWUSED(NLPATM)
42       DIMENSION    IOPTV(2)
43       EQUIVALENCE (IOPTQ,IOPTV(1)), (IOPTX,IOPTV(2))
44 *
45 *-----------------------------------------------------------------------
46 *
47 *
48       IQUEST(1)=0
49       IRUSED    = 0
50       IWUSED    = 0
51       CALL UOPTC(CHOPT,'Q',IOPTV)
52       IF(LQRS.EQ.0)GO TO 99
53 *
54       ITIME=0
55       NLEV=NLEVEL
56       IF(NLEV.LE.0)NLEV=99
57       CALL RZCDIR(CHWOLD,'R')
58       IF(IOPTQ.EQ.0)WRITE(IQPRNT,1000)
59  1000 FORMAT(//'      NREC    NWORDS    QUOTA(%)  FILE(%)   DIR. NAME')
60 *
61 *            Set CWD to the current level
62 *
63    10 CONTINUE
64       IF(ITIME.NE.0)THEN
65          CALL RZPAFF(CHPAT,NLPAT,CHL)
66          IF(IQUEST(1).NE.0)THEN
67             NLPAT=NLPAT-1
68             GO TO 20
69          ENDIF
70          CALL RZCDIR(CHL,' ')
71       ELSE
72          CALL RZCDIR(CHPATH,' ')
73          IF(IQUEST(1).NE.0)GO TO 99
74          NLPAT0=NLPAT
75          CALL VZERO(NRUSED,NLPATM)
76          CALL VZERO(NWUSED,NLPATM)
77       ENDIF
78       IF(IQUEST(1).NE.0)THEN
79          NLPAT=NLPAT-1
80          GO TO 20
81       ENDIF
82       ISD(NLPAT)=0
83       NSD(NLPAT)=IQ(KQSP+LCDIR+KNSD)
84 *
85 *            Process possible down directories
86 *
87    20 ISD(NLPAT)=ISD(NLPAT)+1
88       IF(ISD(NLPAT).LE.NSD(NLPAT))THEN
89          NLPAT=NLPAT+1
90          LS=IQ(KQSP+LCDIR+KLS)
91          IH=LS+7*(ISD(NLPAT-1)-1)
92          CALL ZITOH(IQ(KQSP+LCDIR+IH),IHDIR,4)
93          CALL UHTOC(IHDIR,4,CHPAT(NLPAT),16)
94          ITIME=ITIME+1
95          GO TO 10
96       ELSE
97 *
98 *            Write information on current directory
99 *
100          CALL RZPAFF(CHPAT,NLPAT,CHL)
101          DO 30 I=100,1,-1
102             IF(CHL(I:I).NE.' ')GO TO 40
103    30    CONTINUE
104    40    CONTINUE
105          DO 50 K=NLPAT0,NLPAT
106             NRUSED(K)=NRUSED(K)+IQ(KQSP+LCDIR+KRUSED)
107             NWUSED(K)=NWUSED(K)+IQ(KQSP+LCDIR+KWUSED)
108      +                         +1000000*IQ(KQSP+LCDIR+KMEGA)
109    50    CONTINUE
110          PERD=100.*FLOAT(NRUSED(NLPAT))/FLOAT(IQ(KQSP+LCDIR+KQUOTA))
111          PERF=100.*FLOAT(NRUSED(NLPAT))/FLOAT(IQ(KQSP+LTOP +KQUOTA))
112          IF(NLPAT.LE.(NLPAT0+NLEV))THEN
113             IF(IOPTQ.EQ.0) WRITE(IQPRNT,2000)NRUSED(NLPAT),
114      +                     NWUSED(NLPAT),PERD,PERF,CHL(1:I)
115             IRUSED=NRUSED(NLPAT)
116             IWUSED=NWUSED(NLPAT)
117          ENDIF
118  2000    FORMAT(I9,I11,2X,F8.2,1X,F8.2,3X,A)
119          NRUSED(NLPAT)=0
120          NWUSED(NLPAT)=0
121          NLPAT=NLPAT-1
122          IF(NLPAT.GE.NLPAT0)THEN
123             LUP=LQ(KQSP+LCDIR+1)
124             CALL MZDROP(JQPDVS,LCDIR,' ')
125             LCDIR=LUP
126             GO TO 20
127          ENDIF
128       ENDIF
129 *
130 *            Reset CWD
131 *
132    90 CALL RZCDIR(CHWOLD,' ')
133 *
134    99 CONTINUE
135       IQUEST(11)=IRUSED
136       IQUEST(12)=IWUSED
137 *--------- Next two lines added    JMM  2 May 1995 ---------------------------
138       iquest(13)=iq(kqsp+lcdir+kquota)
139       iquest(14)=iq(kqsp+ltop +kquota)
140 *-----------------------------------------------------------------------------
141       RETURN
142       END