File HIST.FT (FORTRAN source file)

Directory of image this file is from
This file as a plain text file

C
C     ..................................................................
C
C        SUBROUTINE HIST
C
C        PURPOSE
C           PRINT A HISTOGRAM OF FREQUENCIES VERSUS INTERVALS
C
C        USAGE
C           CALL HIST(NU,FREQ,IN)
C
C        DESCRIPTION OF PARAMETERS
C           NU   - HISTOGRAM NUMBER (3 DIGITS MAXIMUM)
C           FREQ - VECTOR OF FREQUENCIES
C           IN   - NUMBER OF INTERVALS AND LENGTH OF FREQ (MAX IS 20)
C                  NORMALLY, FREQ(1) CONTAINS THE FREQUENCY SMALLER THAN
C                  THE LOWER BOUND AND FREQ(IN) CONTAINS THE FREQUENCY
C                  LARGER THAN THE UPPER BOUND
C
C        REMARKS
C           FREQUENCIES MUST BE POSITIVE NUMBERS
C
C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
C           NONE
C
C        METHOD
C           THE LARGEST FREQUENCY IS DETERMINED AND SCALING IS USED
C           IF REQUIRED
C
C     ..................................................................
C
      SUBROUTINE HIST(NU,FREQ,IN)
      DIMENSION JOUT(20),FREQ(20)
C
    1 FORMAT(6H EACH ,A1,8H EQUALS ,I2,7H POINTS,/)
    2 FORMAT(I6,4X,20(4X,A1))
    3 FORMAT(9H0INTERVAL,4X,19(I2,3X),I2)
    4 FORMAT(1H1,47X,11H HISTOGRAM ,I3)
    5 FORMAT(10H0FREQUENCY,20I5)
    6 FORMAT(6H CLASS)
    7 FORMAT(113H   ----------------------------------------------------
     1----------------------------------------------------------)
    8 FORMAT(1H )
    9 FORMAT(A1)
   10 FORMAT(1H*)
C
      REWIND 13
      WRITE(13,10)
      REWIND 13
      READ(13,9) K
      REWIND 13
      WRITE(13,8)
      REWIND 13
      READ(13,9) NOTH
      REWIND 13
C
C        PRINT TITLE AND FREQUENCY VECTOR
C
      WRITE(6,4) NU
      DO 12 I=1,IN
   12 JOUT(I)=FREQ(I)
      WRITE(6,5)(JOUT(I),I=1,IN)
      WRITE(6,7)
C
C        FIND LARGEST FREQUENCY
C
      FMAX=0.0
      DO 20 I=1,IN
      IF(FREQ(I)-FMAX) 20,20,15
   15 FMAX=FREQ(I)
   20 CONTINUE
C
C        SCALE IF NECESSARY
C
      JSCAL=1
      IF(FMAX-50.0) 40,40,30
   30 JSCAL=(FMAX+49.0)/50.0
      WRITE(6,1)K,JSCAL
C
C        CLEAR OUTPUT AREA TO BLANKS
C
   40 DO 50 I=1,IN
   50 JOUT(I)=NOTH
C
C        LOCATE FREQUENCIES IN EACH INTERVAL
C
      MAX=FMAX/FLOAT(JSCAL)
      DO 80 I=1,MAX
      X=MAX-(I-1)
      DO 70 J=1,IN
      IF(FREQ(J)/FLOAT(JSCAL)-X) 70,60,60
   60 JOUT(J)=K
   70 CONTINUE
      IX=X*FLOAT(JSCAL)
C
C        PRINT LINE OF FREQUENCIES
C
   80 WRITE(6,2)IX,(JOUT(J),J=1,IN)
C
C        GENERATE CONSTANTS
C
      DO 90 I=1,IN
   90 JOUT(I)=I
C
C        PRINT INTERVAL NUMBERS
C
      WRITE(6,7)
      WRITE(6,3)(JOUT(J),J=1,IN)
      WRITE(6,6)
      RETURN
      END



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search