SUBROUTINE DIS2BR(IHIS,IZMIN,IZMAX,IXMIN,IXMAX,IYMIN,IYMAX) C C SUBROUTINE TO PLOT HISTOGRAMS ON THE ADM3A DUMB TERMINAL C IHIS = HIST # C C IZMIN,IZMAX = SCALE FOR 1 OR 2 DIM HISTS C 0 = AUTO SCALE C IZMIN = ANY CONTOUR # FOR 2 DIM PLOT C BYTE IB(80) INTEGER*4 IN2,IXMIN,IXMAX,IYMIN,IYMAX,IZMIN,IZMAX,JZMIN,JZMAX COMMON /MSCAL/XORG,XSC,YORG,YSC COMMON /D2SAVE/IHS,IXSIZ,IYSIZ,IXS,IX0,IYS,IY0,ITYPE, 1 IJUMP,JXMIN,JXMAX,JYMIN,JYMAX,JZMIN,JZMAX,IX,IY, 2 ITIME(5) COMMON /SCRAT/IA(70),IB IHS = IHIS IF(IHS .GT. 0) GO TO 15 MIN = -20*IHS + 1 MAX = MIN + 20 DO 10 I = MIN,MAX CALL GTITL(I,IB,5) ! GET 5 WORD TITLE CALL HSTAT(I,IXSIZ,IYSIZ,IXS,IX0,IYS,IY0,ITYPE) ! GET SIZES,SCALES IF(IXSIZ .LE. 0) GO TO 10 ! none WRITE(5,1001) I,(IB(J),J=1,10) ! Write number,title 10 CONTINUE RETURN 15 DO 20 J = 1,45 20 IB(J) = ' ' CALL GTITL(IHS,IB,5) ! GET 5 WORD TITLE CALL GTITL(0,IB(13),5) CALL TIME(IB(25)) ! GET TIME CALL DATE(IB(37)) ! GET DATE INTO ARRAY WRITE(5,1001) IHIS, (IB(J),J=1,45) CALL HSTAT(IHS,IXSIZ,IYSIZ,IXS,IX0,IYS,IY0,ITYPE) ! GET SIZES,SCALES ITYPE = IAND("3,ITYPE) IJUMP = 2 IF(ITYPE .EQ. 1) IJUMP = 1 IF(IXSIZ .LE. 0) RETURN ! No hist to plot C C SECTION TO DETERMINE SCALES + RANGES C JXMIN = (IXMIN-IX0)/IXS ! Minimum x index JXMAX = (IXMAX-IX0)/IXS ! Max x index JYMIN = (IYMIN-IY0)/IYS ! Same for y JYMAX = (IYMAX-IY0)/IYS IF(IYMIN .EQ. 0 .AND. IYMAX .EQ. 0) JYMIN = IYSIZ ! Do whole y? IF(JXMIN .LT. 0)JXMIN = 0 ! Min index too small? IF(JYMIN .LT. 0)JYMIN = 0 IF(JXMAX .GE. IXSIZ)JXMAX = IXSIZ-1 ! Max index too big? IF(JYMAX .GE. IYSIZ)JYMAX = IYSIZ-1 IF(JXMIN+5 .LT. JXMAX) GO TO 25 JXMIN = 0 ! Do whole x axis JXMAX = IXSIZ-1 25 IF(JYMAX .GE. JYMIN) GO TO 30 JYMIN = 0 JYMAX = IYSIZ-1 30 CONTINUE IY = JYMAX-JYMIN ! NUMBER OF SWEEPS IX = JXMAX-JXMIN JZMIN = IZMIN JZMAX = IZMAX IF(JZMIN .LT. JZMAX) GO TO 40 IF(JZMIN .GT. 0 .AND. IY .GT. 0) GO TO 400 ! 2 dim hist? JZMIN = 30000 JZMAX = 0 IN2 = 0 K = 1 ! IF 2 D IGNORE OVERFLOW IF(IY .LE. 0) K = 0 ! 1D SO NO 2D OVERFLOW DO 35 I = JYMIN+K,JYMAX-K DO 35 J = JXMIN+1,JXMAX-1 CALL HGET(IHS,IN2,IJUMP*(I*IXSIZ+J)+1,IJUMP,ISZ) IF(JZMIN .LE. JZMAX) GO TO 33 JZMIN = IN2 JZMAX = IN2 33 IF(IN2 .LT. JZMIN) JZMIN = IN2 IF(IN2 .GT. JZMAX) JZMAX = IN2 35 CONTINUE 40 IF(IY .GT. 0) JZMIN = JZMAX/2 IF(IY .GT. 0) GO TO 400 ! DO 2 DIM HIST C C DO 1 DIMENSIONAL HIST C IN2 = 0 ! START WITH ZERO JXSTEP = (JXMAX-JXMIN+68)/70 ! Points to average IF(JXSTEP .LE. 0) JXSTEP = 1 ! Limit it JZSTEP = (JZMAX-JZMIN + 19)/20 ! Z step IF(JZSTEP .LE. 0) JZSTEP = 1 INDEX = 0 ICHAN = JXMIN * IJUMP + 1 ! First chan number DO 60 I = JXMIN,JXMAX,JXSTEP INDEX = INDEX + 1 AVERAG = 0. DO 50 J = 1,JXSTEP CALL HGET(IHS,IN2,ICHAN,IJUMP,ISZ) ! GET VALUES DESIRED ICHAN = ICHAN + IJUMP 50 AVERAG = AVERAG + IN2 AVERAG = AVERAG / JXSTEP IF(AVERAG .GT. JZMAX) AVERAG = JZMAX AVERAG = AVERAG - JZMIN AVERAG = AVERAG / JZSTEP IF(AVERAG .LT. 0.) AVERAG = 0. 60 IA(INDEX) = AVERAG ! Save vertical chan to plot DO 80 K = 20,0,-1 DO 70 I = 1,INDEX IB(I) = ' ' IF(IA(I) .GE. K) IB(I) = '*' 70 CONTINUE NUMBER = JZMIN + K*JZSTEP 80 WRITE(5,1001) NUMBER, (IB(I),I = 1,INDEX) 1001 FORMAT(1X,I7,1X,70A1) GO TO 600 C C DO 2 DIMENSIONAL HISTS HERE C 400 CONTINUE IF(JZMIN .LE. 0) JZMIN = 1 ! Minimum countour JXSTEP = 1 401 IYSTEP = 10 IF(IX .GT. 69) IX = 69 IF(IY .GT. 20) IY = 20 DO 500 IYP = IY,0,-1 MAX = 0 MIN = 0 DO 490 IXP = 1,IX+1 I = JXMIN + IXP + (JYMIN + IYP)*IXSIZ I = IJUMP*(I-1) + 1 CALL HGET(IHS,IN2,I,IJUMP,ISZ) IB(IXP) = ' ' ! DEFALUT PLOT BLANK IF(IN2 .LT. JZMIN) GO TO 490 IB(IXP) = '*' ! POINT TO DISPLAY MAX = IXP ! MAX POINT TO DISPLAY IF(MIN .EQ. 0) MIN = MAX ! MIN POINT TO DISPLAY 490 CONTINUE IXP = (MIN - 1)*14 I = IYP*14 + IBASE MAX = MAX - MIN + 1 NUMBER = IY0 + IYS*IYP WRITE(5,1001) NUMBER, (IB(J),J=1,MAX) ! Plot 1 line 500 CONTINUE C C NOW PUT UP THE X SCALE C 600 CONTINUE DO 610 J = 1,7 610 IA(J) = IX0 + IXS*( JXMIN + (J-1)*10*JXSTEP ) WRITE(5,1010) (IA(J),J=1,7) 1010 FORMAT(7(I8,' $') ) C C HERE THE PLOTTING IS TERMINATED C 900 CONTINUE END !EXIT FROM PROGRAM