SUBROUTINE HISSAV COMMON /SCRAT/ IA(100) CALL ASSIGN(4,'SY:HISSAV.BDT') CALL HSTAT(0,IX,IHMAX) DO 100 IH = 0,IHMAX CALL HSTAT(IH,IX,IY,IXS,IX0,IYS,IY0,ITYPE) IF(IH .EQ. 0) GO TO 20 IF(IX .LE. 0) GO TO 100 ISIZE = IX IF(IY .GT. 0) ISIZE = ISIZE*IY IF(IAND(ITYPE,3) .NE. 1) ISIZE = ISIZE*2 20 CALL GTITL(IH,IA,5) !GET HIST LABLE WRITE(4)IH,IX,IY,IXS,IX0,IYS,IY0,ITYPE,(IA(J),J = 1,57) IF(IH .EQ. 0) GO TO 100 DO 90 I = 1,ISIZE,64 IMAX = ISIZE - I + 1 IF(IMAX .GT. 64) IMAX = 64 CALL HGET(IH,IA,I,IMAX,ISTAT) WRITE(4)IH,(IA(J),J = 1,IMAX) 90 CONTINUE 100 CONTINUE CALL GTITL(IH,IA,5) IH = -1 !NOW PUT OUT CUTS IX = 96 WRITE(4)IH,IX,IA(J),(IA(J),J=1,63) DO 200 I = 1,96 CALL MGETA(I,IX,VALUE) WRITE(4)IH,I,IX,VALUE 200 CONTINUE CALL CLOSE(4) END SUBROUTINE HISGET COMMON /SCRAT/ IA(100) CALL ASSIGN(4,'SY:HISSAV.BDT') 1 READ(4,END=900,ERR=900) IH,IX,IY,IXS,IX0,IYS,IY0,ITYPE,(IA(J),J=1,5) IF(IH .EQ. -1) GO TO 200 IF(IH .EQ. 0) CALL HIEXT(IY,0) IF(IH .GT. 0) CALL HISET(IH,IX,IY,ITYPE) !SET HIST SIZE CALL SCALH(IH,IXS,IX0,IYS,IY0) !SET HIST SCALE CALL LABLH(IH,IA) !SET HIST LABLE IF(IH .LE. 0) GO TO 1 CALL ZHIST(IH) ISIZE = IX IF(IY .GT. 0) ISIZE = ISIZE*IY IF(IAND(ITYPE,3) .NE. 1) ISIZE = ISIZE * 2 DO 90 I = 1,ISIZE,64 IMAX = ISIZE - I + 1 IF(IMAX .GT. 64) IMAX = 64 READ(4,END=900,ERR=900) ISTS,(IA(J),J = 1,IMAX) CALL HPUT(IH,IA,I,IMAX,ISTAT) 90 CONTINUE GO TO 1 200 CONTINUE DO 210 I = 1,IX READ(4,END=900,ERR=900) ITEST,IMARK,IH,VALUE CALL MARKA(IMARK,IH,VALUE) 210 CONTINUE GO TO 1 900 CONTINUE CALL CLOSE(4) END