C
C     ..................................................................
C
C	 SUBROUTINE TAB1
C
C	 PURPOSE
C	    TABULATE FOR ONE VARIABLE IN AN OBSERVATION MATRIX (OR A
C	    MATRIX SUBSET), THE FREQUENCY AND PERCENT FREQUENCY OVER
C	    GIVEN CLASS INTERVALS. IN ADDITION, CALCULATE FOR THE SAME
C	    VARIABLE THE TOTAL, AVERAGE, STANDARD DEVIATION, MINIMUM,
C	    AND MAXIMUM.
C
C	 USAGE
C	    CALL TAB1(A,S,NOVAR,UBO,FREQ,PCT,STATS,NO,NV)
C
C	 DESCRIPTION OF PARAMETERS
C	    A	  - OBSERVATION MATRIX, NO BY NV
C	    S	  - INPUT VECTOR GIVING SUBSET OF A. ONLY THOSE
C		    OBSERVATIONS WITH A CORRESPONDING NON-ZERO S(J) ARE
C		    CONSIDERED. VECTOR LENGTH IS NO.
C	    NOVAR - THE VARIABLE TO BE TABULATED. NOVAR MUST BE GREATER
C		    THAN OR EQUAL TO 1 AND LESS THAN OR EQUAL TO NV.
C		    AND UPPER LIMIT OF VARIABLE TO BE TABULATED
C		    IN UBO(1), UBO(2) AND UBO(3) RESPECTIVELY. IF
C		    LOWER LIMIT IS EQUAL TO UPPER LIMIT, THE PROGRAM
C		    USES THE MINIMUM AND MAXIMUM VALUES OF THE VARIABLE.
C		    NUMBER OF INTERVALS, UBO(2), MUST INCLUDE TWO CELLS
C		    FOR VALUES UNDER AND ABOVE LIMITS. VECTOR LENGTH
C		    IS 3.
C	    FREQ  - OUTPUT VECTOR OF FREQUENCIES. VECTOR LENGTH IS
C		    UBO(2).
C	    PCT   - OUTPUT VECTOR OF RELATIVE FREQUENCIES. VECTOR
C		    LENGTH IS UBO(2).
C	    STATS - OUTPUT VECTOR OF SUMMARY STATISTICS, I.E., TOTAL,
C		    AVERAGE, STANDARD DEVIATION, MINIMUM AND MAXIMUM.
C		    VECTOR LENGTH IS 5. IF S IS NULL, THEN TOTAL,AVERAGE
C		    AND STANDARD DEVIATION = 0, MIN=1.E75 AND MAX=-1.E75
C	    NO	  - NUMBER OF OBSERVATIONS. NO MUST BE > OR = TO 1
C	    NV	  - NUMBER OF VARIABLES FOR EACH OBSERVATION. NV MUST
C		    BE GREATER THAN OR EQUAL TO 1.
C
C	 REMARKS
C	    NONE
C
C	 SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
C	    NONE
C
C	 METHOD
C	    THE INTERVAL SIZE IS CALCULATED FROM THE GIVEN INFORMATION
C	    OR OPTIONALLY FROM THE MINIMUM AND MAXIMUM VALUES FOR
C	    VARIABLE NOVAR. THE FREQUENCIES AND PERCENT FREQUENCIES ARE
C	    THEN CALCULATED ALONG WITH SUMMARY STATISTICS.
C	    THE DIVISOR FOR STANDARD DEVIATION IS ONE LESS THAN THE
C	    NUMBER OF OBSERVATIONS USED.
C
C     ..................................................................
C
      SUBROUTINE TAB1(A,S,NOVAR,UBO,FREQ,PCT,STATS,NO,NV)
      DIMENSION A(1),S(1),UBO(1),FREQ(1),PCT(1),STATS(1)
      DIMENSION WBO(3)
      DO 5 I=1,3
    5 WBO(I)=UBO(I)
C
C	 CALCULATE MIN AND MAX
C
      VMIN=1.0E38
      VMAX=-1.0E38
      IJ=NO*(NOVAR-1)
      DO 30 J=1,NO
      IJ=IJ+1
      IF(S(J)) 10,30,10
   10 IF(A(IJ)-VMIN) 15,20,20
   15 VMIN=A(IJ)
   20 IF(A(IJ)-VMAX) 30,30,25
   25 VMAX=A(IJ)
   30 CONTINUE
      STATS(4)=VMIN
      STATS(5)=VMAX
C
C        DETERMINE LIMITS
C
      IF(UBO(1)-UBO(3)) 40,35,40
   35 UBO(1)=VMIN
      UBO(3)=VMAX
   40 INN=UBO(2)
C
C        CLEAR OUTPUT AREAS
C
      DO 45 I=1,INN
      FREQ(I)=0.0
   45 PCT(I)=0.0
      DO 50 I=1,3
   50 STATS(I)=0.0
C
C        CALCULATE INTERVAL SIZE
C
      SINT=ABS((UBO(3)-UBO(1))/(UBO(2)-2.0))
C
C        TEST SUBSET VECTOR
C
      SCNT=0.0
      IJ=NO*(NOVAR-1)
      DO 75 J=1,NO
      IJ=IJ+1
      IF(S(J)) 55,75,55
   55 SCNT=SCNT+1.0
C
C        DEVELOP TOTAL AND FREQUENCIES
C
      STATS(1)=STATS(1)+A(IJ)
      STATS(3)=STATS(3)+A(IJ)*A(IJ)
      TEMP=UBO(1)-SINT
      INTX=INN-1
      DO 60 I=1,INTX
      TEMP=TEMP+SINT
      IF(A(IJ)-TEMP) 70,60,60
   60 CONTINUE
      IF(A(IJ)-TEMP) 75,65,65
   65 FREQ(INN)=FREQ(INN)+1.0
      GO TO 75
   70 FREQ(I)=FREQ(I)+1.0
   75 CONTINUE
      IF (SCNT)79,105,79
C
C        CALCULATE RELATIVE FREQUENCIES
C
   79 DO 80 I=1,INN
   80 PCT(I)=FREQ(I)*100.0/SCNT
C
C        CALCULATE MEAN AND STANDARD DEVIATION
C
      IF(SCNT-1.0) 85,85,90
   85 STATS(2)=STATS(1)
      STATS(3)=0.0
      GO TO 95
   90 STATS(2)=STATS(1)/SCNT
      STATS(3)=SQRT(ABS((STATS(3)-STATS(1)*STATS(1)/SCNT)/(SCNT-1.0)))
   95 DO 100 I=1,3
  100 UBO(I)=WBO(I)
  105 RETURN
      END
E RELATIVE FREQUENCIES
