SUBROUTINE DBPUT2(POS,IOFF,LENGTH,DATA,ECODE) PARAMETER (IPW=64) IMPLICIT INTEGER*4 (A-Z) C C WRITE THE DATA FIELD FOR A VARIABLE, STARTING AT THE C RECORD POS WITH OFFSET IOFF. C COMMON /TSPBUF/ NOTBUF(6),IREC(IPW) INTEGER*2 ECODE,IOFF DIMENSION DATA(1) C C NRECS = NUMBER OF DATA RECORDS SPANNED BY THIS VARIABLE C LOFF = IOFF + LENGTH NRECS = 1 + (LOFF-2)/IPW J = 1 C C WRITE FIRST RECORD C LEN = MIN0(LOFF,IPW+1) - IOFF IF (LEN.LT.IPW) CALL DBGET(POS,IREC,ECODE) CALL IMOV(LEN,DATA(J),IREC(IOFF)) CALL DBPUT(POS,IREC,ECODE) IF (NRECS.EQ.1) RETURN POS = POS+1 J = J+LEN IF (NRECS.EQ.2) GOTO 19 C C WRITE MIDDLE RECORDS (DIRECTLY FROM DATA() ) C DO 10 I=3,NRECS CALL DBPUT(POS,DATA(J),ECODE) POS = POS+1 J = J+IPW 10 CONTINUE IF (J.GT.LENGTH) RETURN C C WRITE THE LAST RECORD C 19 CONTINUE NLAST = LENGTH-J+1 IF (NLAST.LT.IPW) CALL DBGET(POS,IREC,ECODE) CALL IMOV(NLAST,DATA(J),IREC) CALL DBPUT(POS,IREC,ECODE) C RETURN END