SUBROUTINE HISTDF( IHIS2, IH1 ) C SUBROUTINE TO TAKE THE DIFFERENCE BETWEEN 2 HISTOGRAMS C THE RESULT IS PRINTED ON THE LINE PRINTER COMMON /SCRAT/IA(70) INTEGER ISIZ(5) INTEGER ISTP(5) DATA ISTP/6,4,3,2,2/ DATA ISIZ/60,40,30,20,20/ IH2 = IABS(IHIS2) CALL HSTAT(IH2,IX,IY,IXS,IX0,IYS,IY0) IF(IX .LE. 5) RETURN IF(IY .LE. 0) IY = 1 MINX = IX MAXX = 0 MINY = IY MAXY = 0 MAX = 0 DO 100 I = 1,IX DO 100 J = 1,IY K = I + (J-1)*IX CALL HGET(IH1,IJ1,K,1,LERR) IF(IHIS2 .LT. 0) IJ1 = IH1 CALL HGET(IH2,IJ2,K,1,LERR) IJ2 = IJ2 - IJ1 CALL HPUT(IH2,IJ2,K,1,LERR) IF(IJ2 .EQ. 0) GO TO 100 MAXX = I IF(MINX .GT. I)MINX = I IF(MINY .GT. J)MINY = J IF(MAXY .LT. J)MAXY = J IJ = IABS(IJ2) IF(MAX .LT. IJ)MAX = IJ 100 CONTINUE CALL GTITL(IH2,IA,5) CALL GTITL(IH1,IA(6),5) IF(IHIS2 .GT. 0) 1WRITE(6,1000) IH2,IH1,(IA(K),K=1,10) IF(IHIS2 .LT. 0) WRITE(6,1009) IH2,IH1,(IA(K),K=1,5) IF(MAX .EQ. 0) GO TO 190 DO 110 I = 1,4 IF(MAX .NE. 0) IDIGIT = I 110 MAX = MAX / 10 ISIZE = ISIZ(IDIGIT) DO 160 I = MINX,MAXX,ISIZE MIN = I MAX = MIN + ISIZE - 1 IF(MAX .GT. MAXX)MAX = MAXX IPTS = MAX - MIN + 1 DO 140 K = 1,10 140 IA(K) = IX0 + IXS * ( MIN-2 + K*ISTP(IDIGIT) ) WRITE(6,1010)(IA(K),K=1,10) DO 160 JJ= MINY,MAXY J = MAXY - (JJ-MINY) IYN = IY0 + (J-1)*IYS ICHAN = I + (J-1)*IX CALL HGET(IH2,IA,ICHAN,ISIZE,LERR) GO TO (151,152,153,154,155),IDIGIT 151 CONTINUE WRITE(6,1001) IYN,(IA(K),K=1,IPTS) GO TO 160 152 CONTINUE WRITE(6,1002) IYN,(IA(K),K=1,IPTS) GO TO 160 153 CONTINUE WRITE(6,1003) IYN,(IA(K),K=1,IPTS) GO TO 160 154 CONTINUE 155 CONTINUE WRITE(6,1005) IYN,(IA(K),K=1,IPTS) 160 CONTINUE 190 CONTINUE DO 200 I = 1,IX DO 200 J = 1,IY K = I + (J-1)*IX CALL HGET(IH1,IJ1,K,1,LERR) IF(IHIS2 .LT. 0) IJ1 = IH1 CALL HGET(IH2,IJ2,K,1,LERR) IJ2 = IJ2 + IJ1 CALL HPUT(IH2,IJ2,K,1,LERR) 200 CONTINUE RETURN 1000 FORMAT(/10X,'HIST #'I3 ' - HIST #'I3 ' (' 5A2 ') - (' 5A2')' ) 1001 FORMAT(I10 '*'60I2) 1002 FORMAT(I10 '*'60I3) 1003 FORMAT(I10 '*'60I4) 1005 FORMAT(I10 '*'60I6) 1009 FORMAT( /10X,'HIST#' I7 ' - 'I7 ,10X, 5A2) 1010 FORMAT(10X '*' 10(I11'$')) END