5 * Revision 1.1.1.1 1996/03/06 10:47:27 mclareni
9 #include "zebra/pilot.h"
10 SUBROUTINE RZUSED(N,IUSED)
12 ************************************************************************
14 * To mark used records
16 * N Number of consecutive records used
17 * IUSED First of the N records used
19 * Called by RZCOP1,RZEXPD,RZMDIR,RZOUT,RZVOUT
21 * Author : R.Brun DD/US/PD
25 ************************************************************************
26 #include "zebra/rzcl.inc"
28 *-----------------------------------------------------------------------
30 * First. Remove used records from the list of available records
32 NFREE=IQ(KQSP+LFREE+1)
33 IF(NFREE.EQ.0)GO TO 99
45 IQ(KQSP+LFREE+1)=NFREE
47 CALL UCOPY2(IQ(KQSP+L1+2),IQ(KQSP+L1),2*(NFREE-I+1))
56 * Second. Mark used records in list of used records
58 20 NUSED=IQ(KQSP+LUSED+1)
63 IQ(KQSP+LUSED+IUS)=IUSED
64 IQ(KQSP+LUSED+IUS+1)=IUSEL
67 30 IF(IUSEL.LT.IQ(KQSP+LUSED+IUS))THEN
68 IF(IUSEL.EQ.IQ(KQSP+LUSED+IUS)-1)THEN
69 IQ(KQSP+LUSED+IUS)=IUSED
71 IF(IUS.GT.2.AND.IUSEL.LE.IQ(KQSP+LUSED+IUS-1))GO TO 99
72 NDATA=IQ(KQSP+LUSED-1)
73 IF(NDATA.LT.2*NUSED+3)THEN
74 CALL MZPUSH(JQPDVS,LUSED,0,10,'I')
78 CALL UCOPY2(IQ(KQSP+LUSED+IUS),
79 + IQ(KQSP+LUSED+IUS+2),NLEFT)
82 IQ(KQSP+LUSED+1)=NUSED
83 IQ(KQSP+LUSED+IUS)=IUSED
84 IQ(KQSP+LUSED+IUS+1)=IUSEL
89 IF(IUSED.EQ.IQ(KQSP+LUSED+IUS+1)+1)THEN
90 IQ(KQSP+LUSED+IUS+1)=IUSEL
91 IF(IUS+2.LT.2*NUSED)THEN
92 IF(IQ(KQSP+LUSED+IUS+1).EQ.IQ(KQSP+LUSED+IUS+2))THEN
93 IQ(KQSP+LUSED+IUS+1)=IQ(KQSP+LUSED+IUS+3)
96 CALL UCOPY2(IQ(KQSP+LUSED+IUS+4),
97 + IQ(KQSP+LUSED+IUS+2),NLEFT)
100 IQ(KQSP+LUSED+1)=NUSED
107 IF(IUS.LE.2*NUSED)GO TO 30
109 NDATA=IQ(KQSP+LUSED-1)
110 IF(NDATA.LT.2*NUSED+3)THEN
111 CALL MZPUSH(JQPDVS,LUSED,0,10,'I')
113 IQ(KQSP+LUSED+IUS)=IUSED
114 IQ(KQSP+LUSED+IUS+1)=IUSEL
116 IQ(KQSP+LUSED+1)=NUSED