]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MINICERN/packlib/zebra/mqg/mztabh.F
Added protection. In case IROT=0 the address Q(LQ(JROTM-IROT)) should not
[u/mrichter/AliRoot.git] / MINICERN / packlib / zebra / mqg / mztabh.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.2 1996/04/18 16:12:46 mclareni
6* Incorporate changes from J.Zoll for version 3.77
7*
8* Revision 1.1.1.1 1996/03/06 10:47:20 mclareni
9* Zebra
10*
11*
12#include "zebra/pilot.h"
13 SUBROUTINE MZTABH
14
15C- Help : the standard table working space is too small;
16C- shift tables to free gaps of reserve areas in dynamic stores
17
18#include "zebra/zstate.inc"
19#include "zebra/zunit.inc"
20#include "zebra/mqsys.inc"
21#include "zebra/mzct.inc"
22C-------------- End CDE --------------
23#if (defined(CERNLIB_QTRHOLL))&&(!defined(CERNLIB_A6M))
24 DIMENSION NAMESR(2)
25 DATA NAMESR / 4HMZTA, 4HBH /
26#endif
27#if (defined(CERNLIB_QTRHOLL))&&(defined(CERNLIB_A6M))
28 DATA NAMESR / 6HMZTABH /
29#endif
30#if !defined(CERNLIB_QTRHOLL)
31 CHARACTER NAMESR*8
32 PARAMETER (NAMESR = 'MZTABH ')
33#endif
34
35
36#include "zebra/qtrace.inc"
37
38 IF (JQGAPM.NE.0) GO TO 41
39
40C---- On first entry : move Memory Occupation table
41
42 CALL MZFGAP
43 NW = LQMTE+1 - LQMTA
44 JQGAPM = NQGAPN
45 IF (JQGAPM.LT.2) GO TO 26
46 23 LNEW = IQGAP(2,JQGAPM)
47 NSH = LNEW - LQMTA
48 CALL UCOPY (LQ(LQMTA),LQ(LNEW),NW)
49
50 LQMTA = LNEW
51 LQMTB = LQMTB + NSH
52 LQMTE = LQMTE + NSH
53
54 LQTC2 = LQTC2 + 161
55 LQRTE = LQRTE + 161
56 IQGAP(1,JQGAPM) = IQGAP(1,JQGAPM) - NW
57 IQGAP(2,JQGAPM) = IQGAP(2,JQGAPM) + NW
58
59#if defined(CERNLIB_QDEVZE)
60 IF (NQDEVZ.GE.11) THEN
61 JDIV = IQGAP(3,JQGAPM)
62 JSTO = IQGAP(4,JQGAPM)
63 WRITE (IQLOG,9824) JQGAPM,JDIV,JSTO,NQOFFS(JSTO+1)
64 +, LQMTA,LQMTB,LQMTE,LQRTA,LQTC1,LQTC2,LQRTE
65 ENDIF
66 9824 FORMAT (1X/' DEVZE MZTABH, Gap,Div,Store,Off-set =',3I4,I10
67 F/16X,'LQMTA,LQMTB,LQMTE = ',3I10
68 F/16X,'LQRTA,LQTC1,LQTC2,LQRTE=',5I10)
69#endif
70#include "zebra/qtrace99.inc"
71 RETURN
72
73C-- Less than 2 gaps available
74
75 26 IF (IQTNMV.EQ.0) JQGAPM=NQGAP
76 IF (JQGAPM.NE.0) GO TO 23
77 IF (IQTNMV.LT.0) GO TO 31
78 29 IQPART = 7
79#if defined(CERNLIB_QDEVZE)
80 IF (NQDEVZ.GE.11) WRITE (IQLOG,9828)
81 9828 FORMAT (1X/' DEVZE MZTABH, no space.')
82#endif
83 GO TO 999
84
85C---- Move table to forbidden gap, if IQTNMV < 0
86
87 31 JQGAPM = NQGAP
88 IF (JQGAPM.EQ.0) GO TO 29
89 IQPART = -7
90 GO TO 23
91
92 36 IF (IQTNMV.GE.0) GO TO 29
93 IF (JQGAPR.GT.NQGAPN) GO TO 29
94 JQGAPR = NQGAP
95 IF (JQGAPR.EQ.0) GO TO 29
96 IF (IQGAP(1,NQGAP-1).GT.IQGAP(1,NQGAP)) JQGAPR=NQGAP-1
97 NNEW = IQGAP(1,JQGAPR) - (LQRTE-LQRTA) - 10
98 IF (NNEW.LT.16) GO TO 29
99 IQPART = -7
100 GO TO 44
101
102C---- Re-entry : move the Link Relocation table
103
104 41 IF (JQGAPR.NE.0) GO TO 36
105 IF (NQGAPN.EQ.0) GO TO 36
106 NNEW = IQGAP(1,1) - NQWKTB
107 IF (NNEW.LT.16) GO TO 36
108 JQGAPR = 1
109
110 44 LNEW = IQGAP(2,JQGAPR)
111 NSH = LNEW - LQRTA
112 NW = LQTE+4 - LQRTA
113 CALL UCOPY (LQ(LQRTA),LQ(LNEW),NW)
114
115#if defined(CERNLIB_QDEVZE)
116 IF (NQDEVZ.GE.11) WRITE (IQLOG,9842) LQRTA,LQTE,LQTC2,LQRTE
117 9842 FORMAT (1X/' DEVZE MZTABH, LQRTA,LQTE,LQTC2,LQRTE=',4I10)
118#endif
119 LQTA = LQTA + NSH
120 LQTE = LQTE + NSH
121 LQTC1 = LQTC1 + NSH
122 LQTC2 = LNEW + (LQTC2-LQRTA) + NNEW
123 LQRTE = LNEW + (LQRTE-LQRTA) + NNEW
124 LQRTA = LNEW
125
126#if defined(CERNLIB_QDEVZE)
127 IF (NQDEVZ.GE.11)
128 + WRITE (IQLOG,9844) LQRTA,LQTE,LQTC2,LQRTE,NNEW
129 9844 FORMAT (16X,'LQRTA,LQTE,LQTC2,LQRTE=',4I10,' NEW=',I10)
130#endif
131 GO TO 999
132 END
133* ==================================================
134#include "zebra/qcardl.inc"