5 * Revision 1.2 1996/04/18 16:11:38 mclareni
6 * Incorporate changes from J.Zoll for version 3.77
8 * Revision 1.1.1.1 1996/03/06 10:47:18 mclareni
12 #include "zebra/pilot.h"
13 SUBROUTINE MZLINK (IXSTOR,CHNAME,LAREA,LREF,LREFL)
15 C- Set permanent link area, user called
17 #include "zebra/zbcd.inc"
18 #include "zebra/zstate.inc"
19 #include "zebra/zunit.inc"
20 #include "zebra/zvfaut.inc"
21 #include "zebra/mqsys.inc"
22 C-------------- End CDE --------------
23 DIMENSION LAREA(9),LREF(9),LREFL(9),NAME(2)
25 #if (defined(CERNLIB_QTRHOLL))&&(!defined(CERNLIB_A6M))
27 DATA NAMESR / 4HMZLI, 4HNK /
29 #if (defined(CERNLIB_QTRHOLL))&&(defined(CERNLIB_A6M))
30 DATA NAMESR / 6HMZLINK /
32 #if !defined(CERNLIB_QTRHOLL)
34 PARAMETER (NAMESR = 'MZLINK ')
37 #include "zebra/q_jbyt.inc"
38 #include "zebra/q_locf.inc"
41 #include "zebra/qtrace.inc"
43 #include "zebra/qstore.inc"
44 #if defined(CERNLIB_QDEBUG)
45 IF (IQVSTA.NE.0) CALL ZVAUTX
48 C-- Check enough space in system link-area table
51 NWTAB = IQ(KQS+LSYS+1)
52 IF (NWTAB+5.GT.IQ(KQS+LSYS-1)) THEN
54 CALL MZPUSH (-7,LSYS,0,100,'I')
58 C-- Construct table entry
61 LOCAR = LOCF (LAREA(1)) - LQSTOR
62 LOCR = LOCF (LREF(1)) - LQSTOR
63 LOCRL = LOCF (LREFL(1)) - LQSTOR
64 #if defined(CERNLIB_APOLLO)
65 LOCAR = RSHFT (IADDR(LAREA(1)),2) - LQSTOR
66 LOCR = RSHFT (IADDR(LREF(1)),2) - LQSTOR
67 LOCRL = RSHFT (IADDR(LREFL(1)),2) - LQSTOR
81 N = MIN (8, LEN(CHNAME))
82 IF (N.NE.0) CALL UCTOH (CHNAME,NAME,4,N)
84 IQ(KQS+LSTO+1) = LOCAR
85 IQ(KQS+LSTO+2) = LOCARE
86 IQ(KQS+LSTO+3) = MODAR
87 IQ(KQS+LSTO+4) = NAME(1)
88 IQ(KQS+LSTO+5) = NAME(2)
90 C-- Range of possible values for an origin-link
92 IQTABV(KQT+13) = MIN (IQTABV(KQT+13), LOCAR)
93 IQTABV(KQT+14) = MAX (IQTABV(KQT+14), LOCARE)
95 #if defined(CERNLIB_QPRINT)
97 +WRITE (IQLOG,9039) NAME,JQSTOR,NL,NS
98 9039 FORMAT (1X/' MZLINK. Initialize Link Area ',2A4,' for Store'
102 #if defined(CERNLIB_QDEBUG)
104 C---- Check valid parameters
106 IF (LOCR .LT.LOCAR) GO TO 91
107 IF (LOCRL.LT.LOCAR) GO TO 91
108 IF (NL.LT.NS) GO TO 91
110 C------ Check overlap with existing stores
116 #if defined(CERNLIB_QDEVZE)
118 +WRITE (IQLOG,9841) 4*LQSTOR, 4*LQATAB, 4*LQBTIS, 4*KLA
119 +, LQSTOR,LQATAB, LQBTIS,KLA
120 +, LQSTOR,LQATAB, LQBTIS,KLA
121 9841 FORMAT (1X/' DEVZE MZLINK. ',17X,'LQSTOR',17X,'LQATAB',
122 F17X,'LQBTIS',20X,'KLA'
124 #if (defined(CERNLIB_QDEVZE))&&(!defined(CERNLIB_HEX))
125 F/10X,'4* OCT',4O23/13X,'OCT',4O23/13X,'DEC',4I23)
127 #if (defined(CERNLIB_QDEVZE))&&(defined(CERNLIB_HEX))
128 F/10X,'4* HEX',4Z23/13X,'HEX',4Z23/13X,'DEC',4I23)
130 #if defined(CERNLIB_QDEVZE)
131 IF (NQDEVZ.GE.7) WRITE (IQLOG,9842) KLA,KLE
132 9842 FORMAT (16X,' KLA/KLE=',2I10)
134 #if defined(CERNLIB_QDEBUG)
136 DO 47 JSTO=1,NQSTOR+1
137 IF (NQALLO(JSTO).NE.0) GO TO 47
140 JSA = JS - IQTABV(JT+2) + 1
141 JSE = JS + LQSTA(JT+21) + 1
142 JTA = JT + LQBTIS + 1
146 #if defined(CERNLIB_QDEVZE)
147 IF (NQDEVZ.GE.7) WRITE (IQLOG,9843) JTA,JTE, JSA,JSE
148 9843 FORMAT (16X,' JTA/JTE=',2I10,' JSA/JSE=',2I10)
150 #if defined(CERNLIB_QDEBUG)
152 IF (KLE.GT.JTA .AND. KLA.LT.JTE) GO TO 92
153 IF (KLE.GT.JSA .AND. KLA.LT.JSE) GO TO 93
155 C-- Check overlap with existing link areas
159 IF (N.LT.12) GO TO 47
166 #if defined(CERNLIB_QDEVZE)
167 IF (NQDEVZ.GE.7) WRITE (IQLOG,9844) JLA,JLE
168 9844 FORMAT (16X,' JLA/JLE=',2I10)
170 #if defined(CERNLIB_QDEBUG)
172 IF (KLE.GT.JLA .AND. KLA.LT.JLE) GO TO 94
177 61 IQ(KQS+LSYS+1) = NWTAB + 5
178 CALL VZERO (LAREA,NL)
179 #include "zebra/qtrace99.inc"
182 C------ Error conditions
186 IQUEST(21) = IQ(L+J+3)
187 IQUEST(22) = IQ(L+J+4)
188 IQUEST(23) = JLA + LQSTOR
190 93 NQCASE = NQCASE + 1
191 92 NQCASE = NQCASE + 1
193 IQUEST(18) = JSTO - 1
194 IQUEST(19) = NQPNAM(JT+1)
195 IQUEST(20) = NQPNAM(JT+2)
197 91 NQCASE = NQCASE + 1
201 IQUEST(13) = LOCAR + LQSTOR
202 IQUEST(14) = LOCR + LQSTOR
203 IQUEST(15) = LOCRL + LQSTOR
206 #include "zebra/qtofatal.inc"
208 * ==================================================
209 #include "zebra/qcardl.inc"