      SUBROUTINE VARCO(MM, M, N, A, CLAB, RLAB, TITLE, JP, KT, TH,
     *                 DMIWRK, IWORK1, IWORK2, DMWORK, WORK1, WORK2,
     *                 CWORK, IERR, OUNIT)
C
C<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
C
C   PURPOSE
C   -------
C
C     SETS UP A TREE OF CLUSTERS OF CASES AND USES THE VARIANCE
C     COMPONENTS ALGORITHM TO PREDICT THE VALUE OF THE MEAN AND
C     VARIANCE FOR A PREDICTOR VARIABLE FOR EACH NODE IN THE TREE,
C     WHICH CAN BE USED AS APPROXIMATIONS FOR A NEW CASE
C
C   DESCRIPTION
C   -----------
C
C   1.  THE VARIABLES MUST BE SCALED SIMILARLY (CLUSTER SUBROUTINE
C       STAND CAN BE USED TO STANDARDIZE THE VARIABLES.)
C
C   2.  THE ROUTINE FORMS A TREE OF CLUSTERS BY THE JOINING ALGORITHM
C       (SEE SUBROUTINE JOIN) AND TRANSFORMS THE RETURNED TREE TO
C       POINTER FORM.  THEN THE VARIANCE COMPONENTS ALGORITHM IS USED
C       TO FIND THE MEANS AND VARIANCES FOR THE PREDICTED VARIABLE FOR
C       EACH CLUSTER.
C
C   3.  THE VARIANCE COMPONENTS ALGORITHM COMPUTES THE VALUE OF THE
C       MEAN OF EACH CLUSTER WHICH MAXIMIZES THE LOG POSTERIOR DENSITY.
C       THEN THE VARIANCES FOR EACH CLUSTER AND THE LOG POSTERIOR
C       DENSITY IS COMPUTED.  IF THE INCREASE IN THE DENSITY IS GREATER
C       THAN .00001 AND LESS THAN TWENTY ITERATIONS HAVE BEEN
C       COMPLETED, THE ROUTINES RECOMPUTES THE MEANS, VARIANCES, AND
C       LOG AND INCREMENTS THE NUMBER OF ITERATIONS.
C
C   4.  AFTER TWENTY ITERATIONS OR AFTER NO SIGNIFICANT INCREASE IN THE
C       DENSITY HAS TAKEN PLACE, THE VARIANCE OF EACH CLUSTER IS
C       COMPARED WITH THE THRESHOLD GIVEN BY THE USER.  IF THE VARIANCE
C       IS LESS THAN THE THRESHHOLD, THE CLUSTER IS AMALGAMATED WITH
C       THE NEXT NEAREST ONE AND THE TREE OF ANCESTORS IS UPDATED.  IF
C       NO DELETIONS OF CLUSTER TAKES PLACE, THE ROUTINE STOPS;
C       OTHERWISE, THE VARIANCE COMPONENTS ALGORITHM IS REPEATED ON THE
C       SMALLER GROUP OF CLUSTERS.
C
C   5.  THE OUTPUT IS WRITTEN ON FORTRAN UNIT OUNIT AND BEGINS WITH THE
C       DISPLAY OF THE TREE OF CLUSTERS FROM JOIN.  IT LISTS THE CASES
C       VERTICALLY AND HAS HORIZONTAL LINES EMANATING FROM EACH CASE.
C       EACH CLUSTER WILL CORRESPOND TO A VERTICAL LINE BETWEEN TWO
C       HORIZONTAL LINES.  THE CASES BETWEEN AND INCLUDED IN THE
C       HORIZONTAL LINES ARE THE MEMBERS OF THE CLUSTER.  THE DISTANCE
C       FROM THE CASE NAMES TO THE VERTICAL LINES CORRESPOND TO THE
C       CLUSTER DIAMETER OR THE DISTANCE BETWEEN THE FIRST AND LAST
C       CASES.
C
C   6.  THEN A LIST OF EACH CASE AND ITS CORRESPONDING ANCESTOR IN THE
C       TREE AND THE VALUE OF THE CASE FOR THE PREDICTED VARIABLE IS
C       PRINTED.  THE LOG POSTERIOR LIKELIHOOD IS PRINTED FOLLOWED BY A
C       TABLE WHERE EACH ROW CORRESPONDS TO A NODE IN THE TREE.  THE
C       NODE NUMBER, ITS ANCESTOR NODE, AND THE NUMBER OF DECENDENT
C       NODES IN THE TREE, FOLLOWED BY THE MEAN AND VARIANCE FOR EACH
C       NODE ARE PRINTED OUT FOR EACH ITERATION OF THE VARIANCE
C       COMPONENTS ALGORITHM.  IF CASES ARE DELETED, AND THE VARIANCE
C       COMPONENTS ALGORITHM IS CALLED AGAIN, THE TREE WITHOUT THE
C       DELETED NODES IS PRINTED IN AN ARRAY FORM.  THEN THE VARIANCE
C       COMPONENTS ALGORITHM IS REPEATED, AS IS THE OUTPUT AT THE
C       BEGINNING OF THIS PARAGRAPH.
C
C   7.  TO INTERPRET THE ARRAY FORM OF THE TREE, EACH COLUMN
C       CORRESPONDS TO THE CASE NAMED AT THE TOP OF THE COLUMN.  THE
C       SECOND NUMBER IN EACH COLUMN IS THE NODE NUMBER OF THE CASE,
C       THE THIRD NUMBER IS THE ANCESTOR NODE OF THE SECOND NUMBER, THE
C       FOURTH NUMBER IS THE THE ANCESTOR NODE OF THE THIRD NUMBER,
C       ETC.  THE FINAL TREE CAN BE RECOVERED BY CONNECTING EACH NODE
C       TO ITS ANCESTOR AND LINKING THE ANCESTORS TO THEIR ANCESTORS
C       UNTIL ONLY ONE NODE IS LEFT.
C
C   8.  TO PREDICT THE VALUE FOR THE VARIABLE FOR AN EXISTING CASE,
C       FIND THE NODE IN THE TREE MOST SIMILAR TO THE CASE FOR THE
C       KNOWN VARIABLES.  THE PREDICTED VALUE WILL BE THE MEAN FOR THAT
C       NODE FROM THE TABLE FROM THE LAST ITERATION OF THE VARIABLE
C       COMPONENTS ALGORITHM AND WILL HAVE THE CORRESPONDING VARIANCE.
C
C   INPUT PARAMETERS
C   ----------------
C
C   MM    INTEGER SCALAR (UNCHANGED ON OUTPUT).
C         THE FIRST DIMENSION OF THE MATRIX A.  MUST BE AT LEAST M.
C
C   M     INTEGER SCALAR (UNCHANGED ON OUTPUT).
C         THE NUMBER OF CASES.
C
C   N     INTEGER SCALAR (UNCHANGED ON OUTPUT).
C         THE NUMBER OF VARIABLES.
C
C   A     REAL MATRIX WHOSE FIRST DIMENSION MUST BE MM AND WHOSE SECOND
C            DIMENSION MUST BE AT LEAST N (CHANGED ON OUTPUT).
C         THE MATRIX OF DATA VALUES.
C
C         A(I,J) IS THE VALUE FOR THE J-TH VARIABLE FOR THE I-TH CASE.
C
C   CLAB  VECTOR OF 4-CHARACTER VARIABLES DIMENSIONED AT LEAST M.
C            (CHANGED ON OUTPUT).
C         THE LABELS OF THE VARIABLES.
C
C   RLAB  VECTOR OF 4-CHARACTER VARIABLES DIMENSIONED AT LEAST N.
C            (CHANGED ON OUTPUT).
C         THE LABELS OF THE CASES.
C
C   TITLE 10-CHARACTER VARIABLE (UNCHANGED ON OUTPUT).
C         THE TITLE OF THE DATA SET.
C
C   JP    INTEGER SCALAR (UNCHANGED ON OUTPUT).
C         THE NUMBER OF THE VARIABLE TO BE PREDICTED.  JP MUST BE
C            BETWEEN 1 AND N.
C
C   KT    INTEGER SCALAR (UNCHANGED ON OUTPUT).
C         THE MAXIMUM NUMBER OF NODES IN TREE.  TRY 2*M-1.
C
C   TH    INTEGER SCALAR (UNCHANGED ON OUTPUT).
C         THE LARGEST BETWEEN CLUSTER VARIANCE SUCH THAT TWO CLUSTERS
C            ARE CONSIDERED UNEQUAL.
C
C   DMIWRK INTEGER SCALAR (UNCHANGED ON OUTPUT).
C         THE FIRST DIMENSION OF THE MATRIX IWORK1.  MUST BE AT LEAST 3.
C
C   IWORK1 INTEGER MATRIX WHOSE FIRST DIMENSION MUST BE DMIWRK AND
C            SECOND DIMENSION MUST BE AT LEAST KT.
C         WORK MATRIX.
C
C   IWORK2 INTEGER VECTOR DIMENSIONED AT LEAST 2*KT.
C         WORK VECTOR.
C
C   DMWORK INTEGER SCALAR (UNCHANGED ON OUTPUT).
C         THE FIRST DIMENSION OF THE MATRIX WORK1.  MUST BE AT LEAST
C            M+1.
C
C   WORK1 REAL MATRIX WHOSE FIRST DIMENSION MUST BE DMWORK AND SECOND
C            DIMENSION MUST BE AT LEAST N.
C         WORK MATRIX.
C
C   WORK2 REAL VECTOR DIMENSIONED AT LEAST 4*KT.
C         WORK VECTOR.
C
C   CWORK VECTOR OF 4-CHARACTER VARIABLES DIMENSIONED AT LEAST
C            2*M + N + 1.
C         WORK VECTOR.
C
C   OUNIT INTEGER SCALAR (UNCHANGED ON OUTPUT).
C         UNIT NUMBER FOR OUTPUT.
C
C   OUTPUT PARAMETER
C   ----------------
C
C   IERR  INTEGER SCALAR.
C         ERROR FLAG.
C
C         IERR = 0, NO ERRORS WERE DETECTED DURING EXECUTION
C
C         IERR = 1, EITHER THE FIRST AND LAST CASES OR THE CLUSTER
C                   DIAMETER FOR A CLUSTER IS OUT OF BOUNDS.  THE
C                   CLUSTER AND ITS VALUES ARE PRINTED ON UNIT OUNIT.
C                   EXECUTION WILL CONTINUE WITH QUESTIONABLE RESULTS
C                   FOR THAT CLUSTER.  ERROR FLAG IS SET IN THE JOINING
C                   SUBROUTINE.
C
C         IERR = 2, A CLUSTER BOUNDARY IS ILLEGAL.  THE CLUSTER AND THE
C                   BOUNDARY ARE PRINTED ON UNIT OUNIT.  EXECUTION WILL
C                   CONTINUE WITH QUESTIONABLE RESULTS FOR THAT CLUSTER.
C                   ERROR WAS ENCOUNTERED IN CONVERSION TO POINTER FORM
C                   OF THE TREE.
C
C         IERR = 3, TWO CLUSTERS OVERLAP.  THE NUMBERS OF THE TWO
C                   CLUSTERS ARE PRINTED ON UNIT OUNIT.  EXECUTION WILL
C                   CONTINUE WITH QUESTIONABLE RESULTS FOR THAT CLUSTER.
C                   ERROR WAS ENCOUNTERED IN CONVERSION TO POINTER FORM
C                   OF THE TREE.
C
C   REFERENCES
C   ----------
C
C     HARTIGAN, J. A. (1975).  CLUSTERING ALGORITHMS, JOHN WILEY &
C        SONS, INC., NEW YORK.  PAGES 330-343.
C
C     HARTIGAN, J. A. (1975) PRINTER GRAPHICS FOR CLUSTERING. JOURNAL OF
C        STATISTICAL COMPUTATION AND SIMULATION. VOLUME 4,PAGES 187-213.
C
C<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
