5 * Revision 1.1.1.1 1996/03/06 10:47:27 mclareni
9 #include "zebra/pilot.h"
10 SUBROUTINE RZWRT(V,N,IOPTB,IEVENT)
12 ************************************************************************
14 * To write array V of length N into the CWD
15 * RZ internal routine called by RZVOUT,RZOHN,RZOBKN
17 * Called by RZOBKN,RZOHN,RZVOUT
19 * Author : R.Brun, B.Holl
21 * Last mod: 14.04.94 JDS. Correct(?) handling of end of records
22 * 29.07.94 JDS. In case of termination on EOR, last
23 * fragment of buffer was converted/copied twice
25 ************************************************************************
26 #if !defined(CERNLIB_FQXISN)
27 #include "zebra/zunit.inc"
29 #include "zebra/rzcl.inc"
30 #include "zebra/rzclun.inc"
31 #include "zebra/rzcout.inc"
32 #include "zebra/rzk.inc"
33 #include "zebra/mzioc.inc"
36 *-----------------------------------------------------------------------
41 IF(IEVENT.EQ.1.AND.IP1.GT.LREC) THEN
59 #if !defined(CERNLIB_FQXISN)
60 IF(IMODEX.GT.0.AND.IOPTB.NE.1)THEN
64 CALL FZOCV(V,IQ(KQSP+LROUT+IP1))
65 IF(NWFOAV.GT.0.OR.IFOCON(1).LT.0)GO TO 95
69 CALL UCOPY(V,IQ(KQSP+LROUT+IP1),NP1)
70 #if !defined(CERNLIB_FQXISN)
78 CALL RZIODO(LUN,LREC,IRLOUT,IQ(KQSP+LROUT+1),2)
79 IF(IQUEST(1).NE.0)GO TO 99
81 IF(IQ(KQSP+LTOP+KIRIN).EQ.IRLOUT)THEN
95 IF(NW.LT.LREC.AND.IOPTRR.NE.0)THEN
96 CALL RZIODO(LUN,LREC,IR,IQ(KQSP+LROUT+1),1)
97 IF(IQUEST(1).NE.0)GO TO 99
99 #if !defined(CERNLIB_FQXISN)
100 IF(IMODEX.GT.0.AND.IOPTB.NE.1)THEN
104 * Case when output buffer overflowed (double precision conversion)
107 IQ(KQSP+LROUT+1)=IQ(KQSP+LROUT+LREC+1)
108 CALL FZOCV(V,IQ(KQSP+LROUT+2))
114 CALL FZOCV(V,IQ(KQSP+LROUT+1))
117 IF(NWFOAV.GT.0.OR.IFOCON(1).LT.0)GO TO 95
120 CALL RZIODO(LUN,NW,IR,IQ(KQSP+LROUT+1),2)
121 IF(IQUEST(1).NE.0)GO TO 99
126 CALL RZIODO(LUN,NW,IR,V(NP1+1),2)
127 IF(IQUEST(1).NE.0)GO TO 99
129 CALL UCOPY(V(NP1+1),IQ(KQSP+LROUT+IP1),NW)
131 #if !defined(CERNLIB_FQXISN)
141 * IF(NP1.GE.N) GOTO 99
145 * All data written - fill output buffer if on a record boundary
148 IF(MOD(NREC,LREC).EQ.0)THEN
149 #if !defined(CERNLIB_FQXISN)
150 IF(IMODEX.GT.0.AND.IOPTB.NE.1)THEN
152 * IF(NWFOAV.LT.0)THEN
154 * IQ(KQSP+LROUT+IP1-NW)=IQ(KQSP+LROUT+LREC+1)
155 * CALL FZOCV(V,IQ(KQSP+LROUT+IP1-NW+1))
158 * CALL FZOCV(V,IQ(KQSP+LROUT+IP1-NW))
160 * IF(NWFOAV.GT.0.OR.IFOCON(1).LT.0)GO TO 95
165 * Fill output buffer for the case when vector ends on
166 * a record boundary (already filled if data conversion
169 CALL UCOPY(V(NP1-NW+1),IQ(KQSP+LROUT+IP1-NW),NW)
170 #if !defined(CERNLIB_FQXISN)
179 #if !defined(CERNLIB_FQXISN)
189 IF(JBYT(IQ(KQSP+LTOP),15,3)-3.GE.-2) WRITE(IQLOG,1000)
190 1000 FORMAT(' RZOUT/RZVOUT. Error during conversion into',
191 + ' exchange format detected by RZWRT')
192 *1000 FORMAT(' RZWRT. Error during conversion into exchange format')