]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MINICERN/packlib/zebra/dzebra/zdvcop.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / MINICERN / packlib / zebra / dzebra / zdvcop.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1996/03/06 10:47:07 mclareni
6* Zebra
7*
8*
9*-----------------------------------------------------------
10#include "zebra/pilot.h"
11#if (defined(CERNLIB_DEBUGON))&&(defined(CERNLIB_VFORT))
12#include "zebra/debugvf1.inc"
13#endif
14 SUBROUTINE ZDVCOP (IXDVFR,LIN,IXDVTO,LOUT,*)
15#include "zebra/mqsys.inc"
16#include "zebra/qequ.inc"
17#include "zebra/mzct.inc"
18#include "zebra/zstate.inc"
19#include "zebra/zunit.inc"
20#include "zebra/dzc1.inc"
21#include "zebra/bankparq.inc"
22#include "zebra/divparq.inc"
23#include "zebra/storparq.inc"
24 CHARACTER CHROUT*(*)
25 PARAMETER (CHROUT = 'ZDVCOP')
26#include "zebra/q_jbit.inc"
27
28#if (defined(CERNLIB_DEBUGON))&&(defined(CERNLIB_VFORT))
29#include "zebra/debugvf2.inc"
30#endif
31
32 CALL MZSDIV(IXDVFR,1)
33 JSTOR1 = JQSTOR
34 JDIV1 = JQDIVI
35 CALL MZSDIV(IXDVTO,1)
36 JSTOR2 = JQSTOR
37 JDIV2 = JQDIVI
38 IF (JSTOR1.NE.JSTOR2) THEN
39 WRITE(IQPRNT,'('' ZDVCOP -- Stores different '',2I5)')
40 W JSTOR1,JSTOR2
41 GO TO 998
42 ENDIF
43
44 IF (JDIV1.EQ.JDIV2) GO TO 999
45
46 IF (JDIV1.GT.JQDVLL.AND.JDIV1.LT.JQDVSY) THEN
47 WRITE(IQPRNT,'('' ZDVCOP -- Division 1 ID invalid '',I5)')
48 W JDIV1
49 GO TO 998
50 ENDIF
51 IF (JDIV2.GT.JQDVLL.AND.JDIV2.LT.JQDVSY) THEN
52 WRITE(IQPRNT,'('' ZDVCOP -- Division 2 ID invalid '',I5)')
53 W JDIV2
54 GO TO 998
55
56 ENDIF
57 CALL MZGARB(IXDVFR,IXDVTO)
58 JQDVM1 = 0
59 JQDVM2 = 0
60 NQDVMV = 0
61
62 NWORDS = LQEND(KQT+JDIV1)-LQSTA(KQT+JDIV1)
63
64 IF (JBIT(IQMODE(KQT+JDIV2),JDVBFQ).EQ.IDVFWQ) THEN
65
66
67 IF (JDIV2.EQ.JQDVLL) THEN
68 JNEXT = JQDVSY
69 ELSE
70 JNEXT = JDIV2 + 1
71 ENDIF
72 IF (NWORDS.GT.LQSTA(KQT+JNEXT)-LQSTA(KQT+JDIV2)) THEN
73 WRITE(IQPRNT,'('' ZDVCOP -- TARGET DIVISION TOO SMALL'')')
74 GO TO 998
75 ENDIF
76 CALL UCOPY
77 U (LQ(KQS+LQSTA(KQT+JDIV1)),LQ(KQS+LQSTA(KQT+JDIV2)),NWORDS)
78 LQEND(KQT+JDIV2) = LQSTA(KQT+JDIV2)+NWORDS
79 NMOVE = LQSTA(KQT+JDIV2)-LQSTA(KQT+JDIV1)
80 ELSE
81
82
83 IF (NWORDS.GT.LQEND(KQT+JDIV2)-LQEND(KQT+JDIV2-1)) THEN
84 WRITE(IQPRNT,'('' ZDVCOP -- TARGET DIVISION TOO SMALL'')')
85 GO TO 998
86 ENDIF
87 CALL UCOPY
88 U (LQ(KQS+LQSTA(KQT+JDIV1)),LQ(KQS+LQEND(KQT+JDIV2)-NWORDS)
89 U ,NWORDS )
90 LQSTA(KQT+JDIV2) = LQEND(KQT+JDIV2)-NWORDS
91 NMOVE = LQEND(KQT+JDIV2)-LQSTA(KQT+JDIV1)-NWORDS
92 ENDIF
93
94 LQMTA = NQOFFS(1) + LQEND(1)
95 MQDVGA = 0
96 MQDVWI = 0
97 CALL SBIT1(MQDVGA,JDIV2)
98 CALL MZTABM
99 LQMTE = LQMTA + JDIV2*8
100 DO 300 L=LQMTA,LQMTE-1,8
101 IF(LQ(L).EQ.JDIV2) THEN
102 LQ(L+1) = 1
103 ELSE
104 LQ(L+1) = -1
105 ENDIF
106 300 CONTINUE
107 LQRTA = LQMTE
108 LQTA = LQRTA + 2
109 LQ(LQTA-1) = LQSTA(KQT+JDIV1)
110 LQ(LQTA ) = LQSTA(KQT+JDIV1)
111 LQ(LQTA+1) = LQEND(KQT+JDIV1)
112 LQ(LQTA+2) = NMOVE
113 LQ(LQTA+3) = 0
114 LQTE = LQTA + 4
115 LQ(LQTE ) = LQEND(KQT+JDIV1)
116 LSUP = LQLORG(KQS+LIN)
117 IF (LSUP.NE.0) THEN
118 LQLORG(KQS+LIN+NMOVE) = LSUP+LOCF(LOUT)-LOCF(LIN)
119 ELSE
120 LQLORG(KQS+LIN+NMOVE) = 0
121 ENDIF
122#if defined(CERNLIB_QDEVZE)
123 IF(NQDEVZ.NE.0) CALL CQDTAB (0)
124#endif
125 CALL MZRELB
126 LOUT = LIN + NMOVE
127
128 GO TO 999
129
130 998 RETURN 1
131 999 RETURN
132 END