5 * Revision 1.2 1996/04/18 16:12:10 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 MZWORK (IXSTOR,DFIRST,DLAST,IFLAGP)
15 C- Allocate working space, user called
17 C- IFLAG = -1 reset wsp empty
19 C- 1 vary both limits, keep common links
20 C- 2 vary only DLAST limit, keep links and common data
21 C- 3 reset only DFIRST limit, zero all links
22 C- 4 vary only DFIRST limit, keep common links
24 #include "zebra/zmach.inc"
25 #include "zebra/zstate.inc"
26 #include "zebra/zunit.inc"
27 #include "zebra/zvfaut.inc"
28 #include "zebra/mqsys.inc"
29 C-------------- End CDE --------------
30 INTEGER DFIRST(9), DLAST(9), IFLAGP(9)
31 #if (defined(CERNLIB_QTRHOLL))&&(!defined(CERNLIB_A6M))
33 DATA NAMESR / 4HMZWO, 4HRK /
35 #if (defined(CERNLIB_QTRHOLL))&&(defined(CERNLIB_A6M))
36 DATA NAMESR / 6HMZWORK /
38 #if !defined(CERNLIB_QTRHOLL)
40 PARAMETER (NAMESR = 'MZWORK ')
43 #include "zebra/q_jbit.inc"
44 #include "zebra/q_jbyt.inc"
45 #include "zebra/q_locf.inc"
49 #include "zebra/qtrace.inc"
51 #include "zebra/qstore.inc"
52 #if defined(CERNLIB_QDEBUG)
53 IF (IQVSTA.NE.0) CALL ZVAUTX
56 IF (IFLAG.LT.0) GO TO 61
58 NEWL = LOCF (DFIRST(1)) - (LQSTOR+1)
59 NEWD = LOCF (DLAST(1)) - LQSTOR
60 #if defined(CERNLIB_APOLLO)
61 NEWL = RSHFT (IADDR(DFIRST(1)),2) - (LQSTOR+1)
62 NEWD = RSHFT (IADDR(DLAST(1)),2) - LQSTOR
64 IF (IFLAG.GE.5) GO TO 91
65 IF (IFLAG.GE.3) NEWD = LQSTA(1) - 1
66 IF (IFLAG.EQ.2) NEWL = NQLINK
68 C---- Check valid parameters
70 IF (NEWL.LT.NQREF) GO TO 92
71 IF (NEWD.LT.NEWL) GO TO 93
72 IF (IFLAG.GE.3) GO TO 31
73 IF (NEWD.GE.LQEND(KQT+2)) GO TO 94
75 C-- Check garbage collection
77 NQRESV = LQSTA(KQT+2) - NQMINR - NEWD
78 IF (NQRESV.GT.0) GO TO 31
79 LQEND(KQT+1) = LQSTA(KQT+1)
82 NQRESV = LQSTA(KQT+2) - NQMINR - NEWD
88 IF (IFLAG.EQ.1) LA = NQLINK
89 IF (IFLAG.EQ.2) LA = NQLINK
90 IF (IFLAG.EQ.4) LA = NQLINK
92 IF (N.GT.0) CALL VZERO (LQ(KQS+LA+1),N)
94 C-- Clear new data words
96 #if defined(CERNLIB_QDEBUG)
97 IF (IFLAG.GE.3) GO TO 71
98 IF (JBYT(IQDBUG,4,2).EQ.0) GO TO 71
106 IF (JBIT(IQDBUG,5).NE.0) LE=LQSTA(KQT+2) - 1
107 IF (LE.LT.LA) GO TO 71
110 38 LQ(KQS+L) = IQNIL + L
114 C---- Reset empty working space
118 #if defined(CERNLIB_QDEBUG)
119 IF (IFLAG.LT.-1) GO TO 91
125 IQTABV(KQT+5) = NQLINK
127 LQSTA(KQT+1) = NEWD + 1
128 LQEND(KQT+1) = NEWD + 1
130 #if defined(CERNLIB_QDEBPRI)
132 + WRITE (IQLOG,9071) JQSTOR,IFLAG,NQLINK,NEWD
133 9071 FORMAT (' MZWORK- Store',I3,' Flag=',I2,' Last Link/Data',2I7)
135 #include "zebra/qtrace99.inc"
138 C------ Error conditions
141 93 NQCASE = NQCASE + 1
142 92 NQCASE = NQCASE + 1
143 91 NQCASE = NQCASE + 1
149 #include "zebra/qtofatal.inc"
151 * ==================================================
152 #include "zebra/qcardl.inc"