]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MINICERN/packlib/zebra/rz/rzpurf.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / MINICERN / packlib / zebra / rz / rzpurf.F
CommitLineData
fe4da5cc 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 RZPURF(N,KPURG)
11*
12************************************************************************
13*
14* Update list of purged records
15* Input:
16* N Number of consecutive records purged
17* KPURG First of the N records purged
18*
19* Called by RZPURG
20*
21* Author : R.Brun DD/US/PD
22* Written : 06.04.86
23* Last mod: 22.08.90
24*
25************************************************************************
26*
27#include "zebra/rzcl.inc"
28#include "zebra/rzclun.inc"
29#include "zebra/rzk.inc"
30*
31*-----------------------------------------------------------------------
32*
33 IF(LQ(KQSP+LTOP-5).EQ.0)THEN
34 CALL MZBOOK(JQPDVS,LPURG,LTOP,-5,'RZPU',0,0,21,2,0)
35 IQ(KQSP+LPURG-5)=LUN
36 ENDIF
37*
38 IF(KPURG.EQ.0)GO TO 99
39 IPURG=KPURG
40 IPURL=IPURG+N-1
41 DO 2 I=IPURG,IPURL
42 IF(I.EQ.IQ(KQSP+LCDIR+KRLOUT))THEN
43 IQ(KQSP+LCDIR+KRLOUT)=0
44 IQ(KQSP+LCDIR+KIP1)=1
45 ENDIF
46 2 CONTINUE
47 NPURG=IQ(KQSP+LPURG+1)
48 IF(NPURG.EQ.0)THEN
49 IQ(KQSP+LPURG+1)=1
50 IQ(KQSP+LPURG+2)=IPURG
51 IQ(KQSP+LPURG+3)=IPURL
52 GO TO 99
53 ENDIF
54*
55 DO 5 I=1,NPURG
56 IRF=IQ(KQSP+LPURG+2*I)
57 IRL=IQ(KQSP+LPURG+2*I+1)
58 IF(IPURG.GE.IRF.AND.IPURG.LE.IRL)IPURG=IRL+1
59 IF(IPURL.GE.IRF.AND.IPURL.LE.IRL)IPURL=IRF-1
60 IF(IPURG.GT.IPURL)GO TO 99
61 5 CONTINUE
62*
63 IPU=2
64 10 IF(IPURL.LT.IQ(KQSP+LPURG+IPU))THEN
65 IF(IPURL.EQ.IQ(KQSP+LPURG+IPU)-1)THEN
66 IQ(KQSP+LPURG+IPU)=IPURG
67 ELSE
68 IF(IPU.GT.2.AND.IPURG.LE.IQ(KQSP+LPURG+IPU-1))GO TO 99
69 NDATA=IQ(KQSP+LPURG-1)
70 IF(NDATA.LT.2*NPURG+3)THEN
71 CALL MZPUSH(JQPDVS,LPURG,0,10,'I')
72 ENDIF
73 NLEFT=2*NPURG-IPU+2
74 IF(NLEFT.GT.0)THEN
75 CALL UCOPY2(IQ(KQSP+LPURG+IPU),
76 + IQ(KQSP+LPURG+IPU+2),NLEFT)
77 ENDIF
78 NPURG=NPURG+1
79 IQ(KQSP+LPURG+1)=NPURG
80 IQ(KQSP+LPURG+IPU)=IPURG
81 IQ(KQSP+LPURG+IPU+1)=IPURL
82 ENDIF
83 GO TO 99
84 ENDIF
85*
86 IF(IPURG.EQ.IQ(KQSP+LPURG+IPU+1)+1)THEN
87 IQ(KQSP+LPURG+IPU+1)=IPURL
88 IF(IPU+2.LT.2*NPURG)THEN
89 IF(IQ(KQSP+LPURG+IPU+1).EQ.IQ(KQSP+LPURG+IPU+2))THEN
90 IQ(KQSP+LPURG+IPU+1)=IQ(KQSP+LPURG+IPU+3)
91 NLEFT=2*NPURG-IPU-2
92 IF(NLEFT.GT.0)THEN
93 CALL UCOPY2(IQ(KQSP+LPURG+IPU+4),
94 + IQ(KQSP+LPURG+IPU+2),NLEFT)
95 ENDIF
96 NPURG=NPURG-1
97 IQ(KQSP+LPURG+1)=NPURG
98 ENDIF
99 ENDIF
100 GO TO 99
101 ENDIF
102*
103 IPU=IPU+2
104 IF(IPU.LE.2*NPURG)GO TO 10
105*
106 NDATA=IQ(KQSP+LPURG-1)
107 IF(NDATA.LT.2*NPURG+3)THEN
108 CALL MZPUSH(JQPDVS,LPURG,0,2,'I')
109 ENDIF
110 IQ(KQSP+LPURG+IPU)=IPURG
111 IQ(KQSP+LPURG+IPU+1)=IPURL
112 NPURG=NPURG+1
113 IQ(KQSP+LPURG+1)=NPURG
114*
115 99 RETURN
116 END