 
      SUBROUTINE LINK(MM, M, N, A, P, IWORK, WORK, OUNIT)
C
C<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
C
C   PURPOSE
C   -------
C
C      CONSTRUCTS AND PRINTS TREE OF CLUSTERS OBTAINED BY ADDING CASES
C      IN SUCCESSION TO MINIMIZE THE SUM OF THE LINKING DISTANCES
C
C   DESCRIPTION
C   -----------
C
C   1.  THE TREE CONSTRUCTED IS A SET OF NODES WITH THE LINK TO EACH
C       NODE'S ANCESTOR.  THE TREE STARTS WITH ONE OBJECT AND OTHER
C       OBJECTS ARE ADDED BY MINIMIZING THE SUM OF THE TOTAL LINK
C       DISTANCES.  THE OUTPUT IS WRITTEN ON FORTRAN UNIT OUNIT AND IS
C       TWO COLUMNS OF NUMBERS, THE FIRST IS THE NODES AND THE SECOND
C       IS THE NODE THAT IS ITS DIRECT ANCESTOR.  THE TREE CAN BE
C       RECOVERED BY CONNECTING EACH NODE TO ITS ANCESTOR NODE,
C       REMEMBERING THAT THE FIRST M NODES ARE THE CASES.
C
C   2.  THREE AMALGAMATION AND DISTANCE MEASURES ARE AVAILABLE AND
C       SPECIFIED BY THE PARAMETER P.  SETTING P=0 AMALGAMATES THREE
C       CLUSTERS BY GIVING THE RESULTANT CLUSTER THE VALUES
C       CORRESPONDING TO THE MEDIAN OF THE THREE.  THE DISTANCE BETWEEN
C       THE CLUSTERS IS THE PROPORTION OF THE NON- MATCHING VALUES OF
C       THE CLUSTERS.  SETTING P=1 AMALGAMATES CLUSTERS TO THE MEDIAN
C       OF THE THREE, BUT USES THE ABSOLUTE VALUE OF THE DIFFERENCES OF
C       THE VALUES FOR THE DISTANCE.  SETTING P=2 GIVES THE RESULTING
C       CLUSTER THE MEAN VALUES OF THE AMALGAMATED CLUSTERS.  IT USES
C       THE EUCLIDEAN DISTANCES AS THE DISTANCE FUNCTION.
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 2*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 (DESTROYED DURING EXECUTION).
C         THE MATRIX OF DATA VALUES ARE STORED IN THE FIRST M ROWS AND
C            THE SECOND M ROWS ARE USED AS WORK SPACE.
C
C   P     INTEGER SCALAR (UNCHANGED ON OUTPUT).
C         PARAMETER SPECIFYING TYPE OF AMALGAMATION AND METHOD FOR
C            DETERMINING DISTANCES BETWEEN CLUSTERS.
C
C         P = 2  NEW CLUSTERS WILL BE FORMED BY THE MEANS OF THE
C                   AMALGAMATED CLUSTERS AND WILL USE EUCLIDEAN
C                   DISTANCES BETWEEN CLUSTERS
C         P = 1  NEW CLUSTERS WILL BE FORMED BY THE MEDIANS OF THE
C                   AMALGAMATED CLUSTERS AND WILL USE THE ABSOLUTE
C                   LINEAR DISTANCE BETWEEN CLUSTERS.
C         P = 0  NEW CLUSTERS WILL BE FORMED BY THE MEDIANS OF THE
C                   AMALGAMATED CLUSTERS AND THE DISTANCE BETWEEN
C                   CLUSTERS WILL BE THE PROPORTION OF NON-MATCHING
C                   VALUES.
C
C   IWORK INTEGER VECTOR DIMENSIONED AT LEAST 2*M.
C         WORK VECTOR.
C
C   WORK  REAL VECTOR DIMENSIONED AT LEAST 2*M.
C         WORK VECTOR.
C
C   OUNIT INTEGER SCALAR (UNCHANGED ON OUTPUT).
C         UNIT NUMBER FOR OUTPUT.
C
C   REFERENCE
C   ---------
C
C     HARTIGAN, J. A. (1975).  CLUSTERING ALGORITHMS, JOHN WILEY &
C        SONS, INC., NEW YORK.  PAGES 233-248.
C
C<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
C
 
 
