 
      SUBROUTINE SLINK(M, DMD, D, DRLAB, DTITLE, DMIWRK, IWORK, WORK,
     *                 TLAB, IOUT, IERR, OUNIT)
C
C<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
C
C   PURPOSE
C   -------
C
C      UTILIZES THE SINGLE-LINKAGE CLUSTERING ALGORITHM TO CONSTRUCT
C      A TREE FROM A USER-SPECIFIED DISTANCE MATRIX
C
C   DESCRIPTION
C   -----------
C
C   1.  THE ALGORITHM TO COMPUTE SINGLE-LINKAGE TREES IS FOUND ON PAGES
C       191-195 OF THE REFERENCE.  THE DATA MATRIX ARE THE DISTANCES
C       BETWEEN THE CASES.  THE DISTANCES SHOULD BE CALCULATED ON
C       SCALED DATA (CLUSTER SUBROUTINE STAND CAN BE USED TO
C       STANDARDIZE THE VARIABLES).  THE OUTPUT CAN BE THE REGULAR
C       REGULAR TREE OUTPUT OR THE BLOCK REPRESENTATION OF THE TREE AND
C       IS WRITTEN ON FORTRAN UNIT OUNIT.
C
C   2.  THE REGULAR TREE LISTS THE CASES VERTICALLY AND HAS HORIZONTAL
C       LINES EMANATING FROM EACH CASE.  EACH CLUSTER WILL CORRESPOND
C       TO A VERTICAL LINE BETWEEN TWO HORIZONTAL LINES.  THE CASES
C       BETWEEN AND INCLUDED IN THE HORIZONTAL LINES ARE THE MEMBERS OF
C       THE CLUSTER.  THE DISTANCE FROM THE CASE NAMES TO THE VERTICAL
C       LINES CORRESPOND TO THE CLUSTER DIAMETER OR THE DISTANCE
C       BETWEEN THE FIRST AND LAST CASES.
C
C   3.  THE BLOCK DIAGRAM PRINTS THE DISTANCE MATRIX WITH THE CASES
C       LABELING BOTH HORIZONTAL AND VERTICAL AXES.  THE DISTANCES HAVE
C       BEEN MULTIPLIED BY 10.  THE HORIZONTAL BOUNDARIES OF THE BLOCKS
C       ARE REPRESENTED BY DASHES AND THE VERTICAL BOUNDARIES BY QUOTE
C       MARKS.  COMMAS REPRESENT THE CORNERS OF THE BLOCKS.
C
C   INPUT PARAMETERS
C   ----------------
C
C   M     INTEGER SCALAR (UNCHANGED ON OUTPUT).
C         THE NUMBER OF OBJECTS.
C
C   DMD   INTEGER SCALAR (UNCHANGED ON OUTPUT).
C         THE LEADING DIMENSION OF MATRIX D.  MUST BE AT LEAST M.
C
C   D     REAL MATRIX WHOSE FIRST DIMENSION MUST BE DMD AND SECOND
C            DIMENSION MUST BE AT LEAST M (CHANGED ON OUTPUT).
C         THE MATRIX OF DISTANCES.  ORDERED ON OUTPUT SUCH THAT ALL
C            CLUSTERS ARE CONTIGUOUS IN THE ORDER.
C
C         D(I,J) = DISTANCE FROM CASE I TO CASE J
C
C   DRLAB VECTOR OF 4-CHARACTER VARIABLES DIMENSIONED AT LEAST M
C            (CHANGED ON OUTPUT).
C         LABELS OF THE CASES.  ORDERED ON OUTPUT.
C
C   DTITLE 10-CHARACTER VARIABLE (UNCHANGED ON OUTPUT).
C         TITLE OF THE DATA SET.
C
C   DMIWRK INTEGER SCALAR (UNCHANGED ON OUTPUT).
C         THE LEADING DIMENSION OF MATRIX IWORK.  MUST BE AT LEAST 4.
C
C   IWORK INTEGER VECTOR WHOSE FIRST DIMENSION MUST BE AT DMIWRK AND
C            WHOSE SECOND DIMENSION MUST BE AT LEAST M+1.
C         WORK VECTOR.
C
C   WORK  REAL VECTOR DIMENSIONED AT LEAST M+1.
C         WORK VECTOR.
C
C   TLAB  VECTOR OF 4-CHARACTER VARIABLES DIMENSIONED AT LEAST M+1
C         WORK VECTOR.
C
C         IF THE REGULAR TREE DIAGRAM IS NOT CHOSEN, TLAB CAN HAVE
C            LENGTH 1.
C
C   IOUT  INTEGER SCALAR (UNCHANGED ON OUTPUT).
C         OPTION FOR CHOOSING FORM OF OUTPUT.  IOUT HAS THE DECIMAL
C           EXPANSION AB SUCH THAT IF
C
C              A .NE. 0  THE REGULAR TREE WILL BE PRINTED
C              B .NE. 0  THE BLOCKED TREE WILL BE PRINTED
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 SET IN THE REGULAR
C                   TREE OUTPUT ROUTINE.
C
C         IERR = 2, EITHER THE FIRST AND LAST CASES OR THE CLUSTER
C                   DIAMETER FOR A CLUSTER IS OUT OF BOUNDS.  THE
C                   CLUSTER AND ITS BOUNDARIES ARE PRINTED ON UNIT
C                   OUNIT.  EXECUTION WILL CONTINUE WITH QUESTIONABLE
C                   RESULTS FOR THAT CLUSTER.  ERROR FLAG SET IN THE
C                   BLOCK TREE OUTPUT ROUTINE.
C
C   REFERENCES
C   ----------
C
C     HARTIGAN, J. A. (1975).  CLUSTERING ALGORITHMS, JOHN WILEY &
C        SONS, INC., NEW YORK.  PAGES 191-215.
C
C     HARTIGAN, J. A. (1975) PRINTER GRAPHICS FOR CLUSTERING. JOURNAL OF
C        STATISTICAL COMPUTATION AND SIMULATION. VOLUME 4,PAGES 187-213.
C
C<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
C
 
 
