C**********************************************************************
C     THIS SUBROUTINE PROCESSES THE CONTROL CARDS AND SETS A VARIETY OF
C     LOGICAL VARIABLES AND STORES THE NUMERIC VALUES INPUT ON THE
C     CONTROL CARDS.  IT OUTPUTS A PAGE WHICH GIVES THE INTERPRETATION
C     OF THE CONTROL CARDS AND ANY ERRORS IN THE CONTROL CARDS.
C
C     SUBROUTINES CALLED: FREE,SKIP,HEADER,KEYWRD,SORT
C**********************************************************************
      SUBROUTINE CNTRL
C***********************************************************************
C     DECLARATIONS
C***********************************************************************
      INCLUDE 'PARMTR.INC'
      LOGICAL GRP, POOL, DEF, PEST, SEST, DESC, TRUNC, LIST, PLOTS, HST,
     1 CDFPLT
      LOGICAL LOGC(3), LOGO(8), LOGD(4), ONE, OK, EF, CUTP, LOG(10)
      LOGICAL LOGS(3), PDATA, SDATA, ADATA, BOTHD, SK, WARN, STRT, SET,
     1 HELP
      REAL XN(MAXLIN), OPT(5), START(MAXPAR), RSDEST(3)
      INTEGER SYSIN, CNT, STATUS, FILPOS
      CHARACTER*1 ALPH(80), EKEY(4,2), SKEY(4,3),
     1   UL, HEAD, LABEL, BLK, IPER,
     2 OPTKEY(4,8), DESKEY(4,4), PDKEY(4,5), SDKEY(4,3), CKEY(4,3)
      INTEGER PDEST, SDEST
C**********************************************************************
C     COMMON STATEMENTS
C**********************************************************************
      COMMON /NUM/ XL(MAXLIN), WIDTH, N, CNT, CONV(3), VARN, IDF, WARN
      COMMON /INTER/ KCUT, CUT(MAXCEL), FREQ(MAXCEL), NCUT, NKC(5),
     1    NK(5), RFREQ(5,MAXCEL), CCUT(5,MAXCEL)
      COMMON /PDOPT/ STRT, SET, PSTRT(10,MAXPAR), NPSET(10)
      COMMON /ESTM/ PDEST(10), SDEST(3), NSD, NPD
      COMMON /FILE/ SYSIN, SK, FILPOS
      COMMON /IND/ IC, II, IREP, STATUS
      COMMON /LINE/ SXL
      COMMON /OPTION/ GRP, POOL, PEST, SEST, DESC, DEF, CUTP, TRUNC,
     1 HELP
      COMMON /DESOPT/ LIST, PLOTS, HST, CDFPLT
      COMMON /ALPHA/ LABEL(80), HEAD(30), UL(3,25)
      COMMON /PAGE/ IPAGE
C**********************************************************************
C     DATA AND EQUIVALENCE STATEMENTS
C**********************************************************************
      EQUIVALENCE (GRP,LOGO(1)), (LIST,LOGD(1))
      DATA EKEY /'S','T','R','T','M','S','E','T'/,IPER /'.'/
      DATA SKEY /'P','E','R','P','S','I','G','H','A','N','G','L'/
      DATA CKEY /'D','I','S','T','L','E','N','G','A','R','E','A'/
      DATA OPTKEY /'G','R','P','D','N','P','O','L','P','E','S','T','S',
     1 'E','S','T','D','E','S','C','D','E','F','T','C','U','T','P','H',
     2 'E','L','P'/, BLK/' '/
      DATA DESKEY /'L','I','S','T','C','P','L','T','H','I','S','T','C',
     1 'D','F','P'/
      DATA PDKEY /'F','S','E','R','E','X','P','S','E','X','P','L','N',
     1 'E','X','P','H','N','O','R'/
      DATA SDKEY /'G','H','Y','N','M','H','Y','N','H','A','Y','N'/
C***********************************************************************
C     INITIALIZE VARIABLES - FOR EACH SET OF CONTROL CARDS
C***********************************************************************
      NP=MAXPAR
      NDES=4
      NOPT=8
      NPEST=5
      NSEST=3
      SK=.FALSE.
      DO 10 I=1,NOPT
   10 LOGO(I)=.FALSE.
      DO 20 I=1,NDES
   20 LOGD(I)=.FALSE.
      DO 30 I=1,3
   30 CONV(I)=0.0
      CALL HEADER (1)
C***********************************************************************
C     READ CONTROL CARD FOR THE GENERAL LABEL AND DATA INPUT FILE NUMBER
C***********************************************************************
      WRITE (6,750)
      SYSIN=5
      CALL FREE (MAXLIN,LABEL,XL,SYSIN,NU,NALPHA,OK,EF)
      IF (.NOT.OK) WRITE (6,640) 'Label control card.'
      IF (NALPHA.EQ.0) WRITE (6,710)
      IF (EF) GO TO 635
      SYSIN=5
      IF (NU.EQ.0) GO TO 50
      SYSIN=IFIX(XL(1))
   50 WRITE (6,760) LABEL,SYSIN
      XL(1)=0.0
C***********************************************************************
C     READ IN THE CONVERSION FACTORS FOR DISTANCE,LENGTH AND AREA.  THE
C     UNITS FOR EACH ARE DELIMITED BY PERIODS IN THE LABEL.
C***********************************************************************
      ONE=.TRUE.
      WRITE (6,770)
      I=1
      DO 60 K=1,3
      DO 60 J=1,25
   60 UL(K,J)=BLK
   70 CALL FREE (MAXLIN,ALPH,XL,SYSIN,NU,NALPHA,OK,EF)
      IF (.NOT.OK) WRITE (6,640) 'Conversion factor control card.'
      IF (EF) GO TO 635
C***********************************************************************
C     DETERMINE WHICH CONVERSION FACTOR IS BEING READ.
C***********************************************************************
      CALL KEYWRD (CKEY,LOGC,3,NALPHA,ALPH,ONE)
      DO 90 J=1,3
      IF (.NOT.LOGC(J)) GO TO 90
      IF (XL(1).EQ.0.0) XL(1)=1.0
      CONV(J)=XL(1)
      GO TO 100
   90 CONTINUE
      WRITE (6,790)
      CALL SKIP
      RETURN
  100 I=I+1
      WRITE (6,800) (ALPH(K),K=1,NALPHA)
      WRITE (6,801) XL(1)
      XL(1)=0.0
C***********************************************************************
C     EXTRACT LABEL UNITS.
C***********************************************************************
      DO 110 L=1,NALPHA
      IF (ALPH(L).EQ.IPER) GO TO 120
  110 CONTINUE
      GO TO 140
  120 DO 130 K=1,25
      LK=L+K
      IF (LK.GT.NALPHA) GO TO 140
      IF (ALPH(LK).EQ.IPER) GO TO 140
  130 UL(J,K)=ALPH(LK)
  140 IF (I.LE.3) GO TO 70
C***********************************************************************
C     CHECK TO SEE IF ALL THREE CONVERSION FACTORS WERE FOUND.
C***********************************************************************
      DO 150 I=1,3
      IF (CONV(I).NE.0.0) GO TO 150
      WRITE (6,820)
      CALL SKIP
      RETURN
  150 CONTINUE
      WRITE (6,830)
C***********************************************************************
C   READ THE LINE LENGTHS, THIS IMPLICITLY SUPPLIES THE VALUE OF IREP.
C***********************************************************************
      CALL FREE (MAXLIN,ALPH,XL,SYSIN,IREP,NALPHA,OK,EF)
      IF (.NOT.OK) WRITE (6,640) 'Line length control card.'
      IF (IREP.EQ.0) THEN
         WRITE (6,840)
         CALL SKIP
         RETURN
      ENDIF
      IF (IREP.GT.MAXLIN) THEN
         WRITE (6,845) IREP,MAXLIN
         CALL SKIP
         RETURN
      ENDIF
      IF (EF) GO TO 635
      DO 180 I=1,IREP
  180 XL(I)=XL(I)*CONV(2)
      WRITE (6,850) (XL(I),I=1,IREP)
C***********************************************************************
C     READ IN THE SAMPLE SIZES WHICH IMPLICITLY ASSUMES THE VALUE OF
C     NREP CHECK TO SEE IF NREP=IREP.  CALCULATE THE VARIANCE OF THE
C     SAMPLE SIZE IF NREP.GT. 1.
C***********************************************************************
      WRITE (6,860)
      CALL FREE (MAXLIN,ALPH,XN,SYSIN,NREP,NALPHA,OK,EF)
      IF (.NOT.OK) WRITE (6,640) 'Sample size control card.'
      IF (EF) GO TO 635
      WRITE (6,870) (INT(XN(I)),I=1,NREP)
      IF (NREP.EQ.IREP) GO TO 200
      WRITE (6,740)
      CALL SKIP
      RETURN
C***********************************************************************
C     IF THERE IS ONLY ONE REPLICATION THEN SET LOGICAL VARIABLE FOR
C     POISSON ASSUMPTION. OTHERWISE CALCULATE VAR(N).
C***********************************************************************
  200 VARN=0.0
      WARN=.TRUE.
      IF (NREP.EQ.1) GO TO 230
      WARN=.FALSE.
      IDF=NREP-1
      SXL=0.0
      SXN=0.0
      DO 210 I=1,NREP
      SXN=SXN+XN(I)
  210 SXL=SXL+XL(I)
      XBAR=SXN/SXL
      DO 220 I=1,NREP
  220 VARN=VARN+XL(I)*SXL*((XN(I)/XL(I)-XBAR)**2)
      VARN=VARN/FLOAT(NREP-1)
C***********************************************************************
C     READ OPTION CONTROL CARD.  DETERMINE THE FOLLOWING:
C          1) ARE THE DATA
C                A) TRUNCATED
C                B) GROUPED
C          2) WHAT ARE THE COMMANDS
C                A) WHICH TYPE OF ESTIMATION
C                B) DESCRIPTION
C                C) POOLING
C          3) ARE THERE CUT POINTS FOR PERPENDICULAR DISTANCES
C***********************************************************************
  230 DO 235 JJ=1,80
  235 ALPH(JJ)=BLK
      MAXDIM=5
      CALL FREE (MAXDIM,ALPH,OPT,SYSIN,IDUM,NALPHA,OK,EF)
      WRITE (6,880)
      IF (.NOT.OK) WRITE (6,640) 'Option control card.'
      IF (EF) GO TO 635
      ONE=.FALSE.
C***********************************************************************
C     INTERPRET THE SET OF COMMANDS THROUGH KEYWORDS AND SET APPROPRIATE
C     LOGICAL VARIABLES.
C***********************************************************************
      CALL KEYWRD (OPTKEY,LOG,NOPT,NALPHA,ALPH,ONE)
      DO 250 I=1,NOPT
  250 LOGO(I)=LOG(I)
      HELP=LOG(NOPT)
      TRUNC=.FALSE.
      IF (IDUM.NE.1) GO TO 260
      TRUNC=.TRUE.
      WIDTH=OPT(1)*CONV(1)
      WRITE (6,890) WIDTH
      GO TO 270
  260 WRITE (6,900)
  270 IF (GRP) WRITE (6,910)
      IF (.NOT.GRP) WRITE (6,920)
      POOL=.NOT.POOL
      IF (.NOT.POOL) GO TO 280
      WRITE (6,930)
C***********************************************************************
C     IF THE DATA ARE TO BE POOLED THEN SET THE NUMBER OF REPLICATIONS
C     TO 1 AND SET THE LINE LENGTH TO THE SUM OF THE LINE LENGTHS,UNLESS
C     THERE IS ONLY 1 REPLICATION.
C***********************************************************************
      IF (IREP.EQ.1) GO TO 300
      IREP=1
      XL(1)=SXL
      GO TO 300
C***********************************************************************
C     IF THE REPLICATIONS ARE TO BE ANALYZED SEPARATELY THEN SET LOGICAL
C     VARIABLE FOR POISSON ASSUMPTION.  ALSO DETERMINE THE NUMBER OF
C     REPLICATIONS WHICH HAVE A NON-ZERO SAMPLE SIZE.  THIS IS STORED IN
C     IREP.  THE VARIABLE IDF CONTAINS THE ORIGINAL NUMBER OF REPLICA-
C     TIONS-1(ALL REPS REGARDLESS OF THE SAMPLE SIZE).  IT IS USED LATER
C     ON IN SUBROUTINE SUMARY.
C***********************************************************************
  280 WRITE (6,940)
      VARN=0.0
      WARN=.TRUE.
      IREP=0
      DO 290 I=1,NREP
      IF (XN(I).EQ.0) GO TO 290
      IREP=IREP+1
      IF (I.EQ.IREP) GO TO 290
      XL(IREP)=XL(I)
  290 CONTINUE
C***********************************************************************
C     READ IN THE TYPE OF DATA COLLECTED (I.E.,PERPENDICULAR DISTANCE,
C     SIGHTING DISTANCE, SIGHTING ANGLE).  THIS DETERMINES THE STATUS.
C***********************************************************************
  300 STATUS=0
      BOTHD=.FALSE.
      IF (GRP) GO TO 350
      DO 305 JJ=1,80
  305 ALPH(JJ)=BLK
      CALL FREE (MAXDIM,ALPH,OPT,SYSIN,NU,NALPHA,OK,EF)
      IF (.NOT.OK) WRITE (6,640) 'Data measurement control card.'
      IF (EF) GO TO 635
      ONE=.FALSE.
      CALL KEYWRD (SKEY,LOGS,3,NALPHA,ALPH,ONE)
C***********************************************************************
C   NOW WE CAN CHECK TO SEE WHAT ACTUAL DATA WERE TAKEN(I. E. DETERMINE
C     STATUS).
C
C   STATUS    DATA RECORDED
C   VALUE     PD   SD   MESANG
C   1         X    X
C   2              X
C   3         X
C   4         X    X    X
C   5              X    X
C   6         X         X
C   7                   X
C***********************************************************************
      PDATA=LOGS(1)
      SDATA=LOGS(2)
      ADATA=LOGS(3)
      IF (PDATA.OR.SDATA.OR.ADATA) GO TO 320
      WRITE (6,1110)
      CALL SKIP
      RETURN
  320 IF (.NOT.ADATA) GO TO 330
      STATUS=7
      IF (PDATA.AND.SDATA) STATUS=4
      IF ((.NOT.PDATA).AND.SDATA) STATUS=5
      IF ((.NOT.SDATA).AND.PDATA) STATUS=6
      GO TO 340
  330 STATUS=3
      IF (PDATA.AND.SDATA) STATUS=1
      IF (.NOT.PDATA) STATUS=2
  340 IF ((STATUS.EQ.1).OR.(STATUS.EQ.4).OR.(STATUS.EQ.5)) BOTHD=.TRUE.
      WRITE (6,1120)
      IF (STATUS.EQ.1) WRITE (6,1130)
      IF (STATUS.EQ.2) WRITE (6,1140)
      IF (STATUS.EQ.3) WRITE (6,1150)
      IF (STATUS.EQ.4) WRITE (6,1160)
      IF (STATUS.EQ.5) WRITE (6,1170)
      IF (STATUS.EQ.6) WRITE (6,1180)
      IF (STATUS.EQ.7) WRITE (6,1190)
C***********************************************************************
C     SET OPTIONS IF THE USER HAS ASKED FOR THE DEFAULT MODE.
C***********************************************************************
  350 WRITE (6,950)
      IF (.NOT.DEF) GO TO 360
      WRITE (6,960)
      SET=.FALSE.
      STRT=.FALSE.
      HELP=.TRUE.
      DESC=.TRUE.
      PEST=.TRUE.
      NPD=1
      PDEST(1)=1
      LIST=.TRUE.
      HST=.TRUE.
      PLOTS=.TRUE.
      IF (.NOT.BOTHD) PLOTS=.FALSE.
      IF ((STATUS.EQ.2).OR.(STATUS.EQ.7)) PEST=.FALSE.
      IF (PEST) WRITE (6,970) 'Perpendicular Distance.'
      IF (STATUS.NE.2) RETURN
      SEST=.TRUE.
      SDEST(1)=3
      NSD=1
      WRITE (6,970) 'Sighting Distance and Angle.'
      RETURN
C***********************************************************************
C     IF THE DESCRIPTION OPTION IS CHOSEN AND THE DATA ARE NOT GROUPED
C     THEN READ THE CONTROL CARD TO DETERMINE WHICH OF THE FOLLOWING
C     HAS BEEN CHOSEN:
C          1)DATA LISTING AND SUMMARY STATISTICS
C          2) CROSSPLOTS
C          3) HISTOGRAMS
C          4) CDF PLOTS
C***********************************************************************
  360 IF ((.NOT.DESC).AND.(.NOT.GRP)) GO TO 390
      WRITE (6,990)
      IF (GRP) GO TO 390
      DO 365 JJ=1,80
  365 ALPH(JJ)=BLK
      CALL FREE (MAXDIM,ALPH,OPT,SYSIN,IDUM,NALPHA,OK,EF)
      IF (.NOT.OK) WRITE (6,640) 'Description control card.'
      IF (EF) GO TO 635
      CALL KEYWRD (DESKEY,LOG,NDES,NALPHA,ALPH,ONE)
      DO 380 I=1,NDES
  380 LOGD(I)=LOG(I)
C***********************************************************************
C     ONLY CERTAIN STATUSES WILL HAVE PLOTS; OUTPUT AN ERROR MESSAGE
C     IF THIS IS NOT THE CORRECT STATUS.
C***********************************************************************
      IF ((.NOT.PLOTS).OR.BOTHD) GO TO 390
      PLOTS=.FALSE.
      WRITE (6,1060)
C***********************************************************************
C     IF ESTIMATION IS TO BE PERFORMED THEN DETERMINE WHICH ESTIMATORS
C     ARE TO BE USED FOR BOTH PD AND SD ESTIMATION
C***********************************************************************
  390 IF ((.NOT.PEST).AND.(.NOT.SEST)) GO TO 550
      NSD=0
      NPD=0
C***********************************************************************
C     PERPENDICULAR DISTANCE ESTIMATORS
C***********************************************************************
      IF (.NOT.PEST) GO TO 490
      WRITE (6,1000) 'perpendicular distances.'
C***********************************************************************
C      PERPENDICULAR DISTANCE ESTIMATION CANNOT BE PERFORMED FOR STATUS
C      2 OR 7
C***********************************************************************
      IF ((STATUS.NE.2).AND.(STATUS.NE.7)) GO TO 400
      WRITE (6,1070)
      PEST=.FALSE.
      GO TO 490
C***********************************************************************
C     READ IN THE NUMBER OF PERPENDICULAR DISTANCE ESTIMATORS TO BE READ
C     AND WHETHER THE STARTING VALUES OR THE NUMBER OF PARAMETERS TO BE
C     WILL BE SPECIFIED. THEY NEED NOT BE SPECIFIED FOR ALL ESTIMATORS
C     BUT THE SPECIFICATION IS THE SAME FOR ALL,I.E.,ALL SETTING PARA-
C     METERS OR ALL SETTING STARTING VALUES.
C***********************************************************************
  400 CALL FREE (MAXDIM,ALPH,OPT,SYSIN,NU,NALPHA,OK,EF)
      IF (.NOT.OK) WRITE (6,640)
     1 'Perpendicular distance estimator control card.'
      IF(NU.EQ.1) GO TO 405
      WRITE(6,1220)
      CALL SKIP
      RETURN
 405  IF (EF) GO TO 635
      ONE=.FALSE.
      CALL KEYWRD (EKEY,LOG,2,NALPHA,ALPH,ONE)
      STRT=LOG(1)
      SET=LOG(2)
      IF (STRT) SET=.TRUE.
      NPD=IFIX(OPT(1))
      ONE=.TRUE.
C***********************************************************************
C     READ IN THE ESTIMATOR AND ANY VALUES BEING SPECIFIED FOR NPD ESTIM
C     ATORS.
C***********************************************************************
      DO 480 J=1,NPD
      DO 420 JJ=1,NP
  420 START(JJ)=0.0
      DO 425 JJ=1,80
 425  ALPH(JJ)=BLK
      CALL FREE (MAXPAR,ALPH,START,SYSIN,NU,NALPHA,OK,EF)
      IF (.NOT.OK) WRITE (6,640)
     1   'Perpendicular distance estimator control card.'
      IF (EF) GO TO 635
      CALL KEYWRD (PDKEY,LOG,NPEST,NALPHA,ALPH,ONE)
      DO 440 I=1,NPEST
      IF (.NOT.LOG(I)) GO TO 440
      PDEST(J)=I
      GO TO 450
  440 CONTINUE
      WRITE (6,1220)
      CALL SKIP
      RETURN
  450 IF (.NOT.STRT) GO TO 470
      NPSET(J)=NU
      DO 460 I=1,NU
  460 PSTRT(J,I)=START(I)
      GO TO 480
  470 IF (.NOT.SET) GO TO 480
      NPSET(J)=IFIX(START(1))
  480 CONTINUE
C***********************************************************************
C     SIGHTING DISTANCE ESTIMATORS
C***********************************************************************
  490 IF (.NOT.SEST) GO TO 550
      WRITE (6,1000) 'sighting distances and angles.'
      ONE=.FALSE.
C***********************************************************************
C     SIGHTING DISTANCE-ANGLE ESTIMATION CANNOT BE PERFORMED FOR GROUPED
C     DATA.
C***********************************************************************
      IF (.NOT.GRP) GO TO 500
      WRITE (6,1030)
      SEST=.FALSE.
      RETURN
C***********************************************************************
C     SIGHTING DISTANCE-ANGLE ESTIMATION CANNOT BE PERFORMED FOR STATUS
C     3,6, OR 7.
C***********************************************************************
  500 IF (BOTHD.OR.(STATUS.EQ.2)) GO TO 510
      WRITE (6,1080)
      SEST=.FALSE.
      GO TO 550
C***********************************************************************
C     READ IN THE SIGHTING DISTANCE ESTIMATOR KEYWORDS AND INTERPRET
C     THEM.
C***********************************************************************
  510 DO 515 JJ=1,80
  515 ALPH(JJ)=BLK
      MAXDIM=3
      CALL FREE (MAXDIM,ALPH,RSDEST,SYSIN,NU,NALPHA,OK,EF)
      IF (.NOT.OK) WRITE (6,640)
     1   'Sighting distance estimator control card.'
      IF (EF) GO TO 635
      CALL KEYWRD (SDKEY,LOG,NSEST,NALPHA,ALPH,ONE)
      DO 530 I=1,NSEST
      IF (.NOT.LOG(I)) GO TO 530
      NSD=NSD+1
      SDEST(NSD)=I
  530 CONTINUE
      IF (NSD.NE.0) GO TO 540
      WRITE (6,1230)
      CALL SKIP
      RETURN
C***********************************************************************
C     IF ONLY SIGHTING DISTANCE WAS COLLECTED THEN ONLY ALLOW THE HAYNE
C     ESTIMATOR TO BE USED.
C***********************************************************************
  540 IF (STATUS.NE.2) GO TO 550
      IF ((NSD.EQ.1).AND.(SDEST(1).EQ.3)) GO TO 550
      WRITE (6,1090)
      NSD=1
      SDEST(1)=3
C***********************************************************************
C     IF CUT POINTS ARE DESIRED THEN FIRST READ A CONTROL CARD TO DETER-
C     MINE THE NUMBER OF SETS TO BE GIVEN(NCUT).  THEN READ IN THE CUT
C     POINTS FOR EACH SET
C***********************************************************************
  550 IF ((.NOT.CUTP).OR.GRP) RETURN
      CALL FREE (MAXCEL,ALPH,CUT,SYSIN,KCUT,NALPHA,OK,EF)
      IF (.NOT.OK) WRITE (6,640)
     1   'Sighting distance estimator control card.'
      IF (KCUT.EQ.0) WRITE (6,640)
     1 'Cut point control card expected.  Numeric data was not found.'
      IF (EF) GO TO 635
      NCUT=IFIX(CUT(1))
      WRITE (6,1200) NCUT
      DO 630 I=1,NCUT
C***********************************************************************
C     FOR EACH SET OF CUT POINTS READ THEM IN AND CONVERT THEM.
C***********************************************************************
      CALL FREE (MAXCEL,HEAD,CUT,SYSIN,KCUT,NALPHA,OK,EF)
      IF (.NOT.OK) WRITE (6,640) 'Cut point control card.'
      IF (EF) GO TO 635
      DO 580 J=1,KCUT
  580 CUT(J)=CUT(J)*CONV(1)
C***********************************************************************
C     NEXT CHECK IF THEY ARE IN ORDER, IF NOT SORT THEM
C***********************************************************************
      HOLD=0.0
      DO 590 J=1,KCUT
      IF (CUT(J).LT.HOLD) GO TO 600
      HOLD=CUT(J)
  590 CCUT(I,J)=CUT(J)
      GO TO 620
  600 CALL SORT (CUT,KCUT)
      WRITE (6,1240)
      DO 610 J=1,KCUT
  610 CCUT(I,J)=CUT(J)
C***********************************************************************
C     WRITE OUT THE CUT POINTS IN THE SET AND STORE THE NUMBER OF CUT
C     POINTS IN THE SET IN BOTH NKC AND NK.  THE ONES IN NKC ARE MOD-
C     IFIED FOR EACH REPLICATION DEPENDING ON THE WIDTH(LARGEST MEASURE-
C     MENT) IF IT IS NOT SPECIFIED.  THE UNMODIFIED ONES ARE IN NK.
C***********************************************************************
  620 WRITE (6,1210) (CUT(J),J=1,KCUT)
      NKC(I)=KCUT
      NK(I)=KCUT
  630 CONTINUE
      RETURN
C***********************************************************************
C     END OF FILE WAS ENCOUNTERED ON INPUT FILE
C***********************************************************************
 635  WRITE (6,720)
      STOP 'TRANSECT Aborted.'
C***********************************************************************
C     FORMAT STATEMENTS
C***********************************************************************
  640 FORMAT (/' *** ERROR - ',A/' Will attempt processing.')
  710 FORMAT (/' *** ERROR - Label card was expected but not found'/
     1' Because no label may have been given,',
     2' processing will be attempted.')
  720 FORMAT (/' *** TERMINAL ERROR - End of file encountered while',
     1' processing control cards.')
  740 FORMAT (/' *** TERMINAL ERROR - Number of line lengths and',
     1' sample sizes do not agree.')
  750 FORMAT (//10X,60('*')/10X,'*',58X,'*'/10X,'*',14X,
     1'Interpretation of Control Cards',13X,'*'/10X,'*',58X,'*'/
     2 10X,60('*'))
  760 FORMAT (/' General Label  ',80A1/1X,13('-')/
     1/' Data Input File  ',I2/1X,15('-'))
  770 FORMAT (/' Conversion Factors'/1X,18('-'))
  790 FORMAT (/' *** TERMINAL ERROR - A conversion factor keyword was',
     1' expected and not found.'/
     2 22X,' Check order of control cards and spelling.')
  800 FORMAT (1X,80A1)
  801 FORMAT (' Original Data X ',G14.8,' = Converted Data.')
  820 FORMAT (/' *** TERMINAL ERROR - Missing a conversion factor',
     1' or set to zero.'/
     2 22X,' Check keywords on control cards.')
  830 FORMAT (/' Line Lengths L(I)  (Converted measurements)'/
     1 1X,43('-'))
  840 FORMAT (/' *** TERMINAL ERROR - No line lengths were read.'/
     1 22X,' Check order of control cards.')
  845 FORMAT (/' *** TERMINAL ERROR - Too many lines were read.'/
     1 22X,' Number read was',I4,' but maximum is',I4,'.'/
     2 22X,' Re-dimension the variable MAXLIN in PARMTR.INC',
     3 ' and recompile.')
  850 FORMAT (1X,7G11.5)
  860 FORMAT (/' Sample Sizes for Individual Lines L(I)'/
     1 1X,38('-'))
  870 FORMAT (1X,11I5)
  880 FORMAT (/' Data Features'/1X,13('-'))
  890 FORMAT (' TRUNCATED - The data are truncated at a width of ',
     1 G12.6/ 13X,'(Converted Measurement).')
  900 FORMAT (' UNTRUNCATED - The data are untruncated with an',
     1' infinite width.')
  910 FORMAT (' GROUPED (GRPD) - The data have been collected or',
     1' grouped into intervals.')
  920 FORMAT (' UNGROUPED - Individual measurements of distance'/
     1                 13X,'and/or angle have been collected.')
  930 FORMAT (' POOLED - The data will be pooled for analysis.')
  940 FORMAT (' NOT POOLED (NPOL) - The data for this set of control',
     1' cards will be'/
     2 21X,'treated as separate replications for analysis.' )
  950 FORMAT (/' Program Analysis'/1X,16('-'))
  960 FORMAT (' Data Description (Default options)')
  970 FORMAT (' Density Estimation (Default Estimators) based on ',A)
  990 FORMAT (' Data Description')
 1000 FORMAT (' Density estimation based on ',A)
 1030 FORMAT (/' *** ERROR - Estimation based on sighting distance'/
     1 13X,'and angle cannot be performed on grouped data.')
 1060 FORMAT (/' *** ERROR - No crossplots are given for STATUS',
     1' 2, 3, 6, or 7.')
 1070 FORMAT (/' *** ERROR - Perpendicular estimation is not performed',
     1' for STATUS 2 or 7.')
 1080 FORMAT (/' *** ERROR - Sighting distance estimation is not',
     1' performed for STATUS 3, 6 or 7.')
 1090 FORMAT (/' *** ERROR - Sighting distance estimators other than',
     1' the HAYNE estimator'/
     2' have been requested for STATUS 2.  Only the HAYNE estimator',
     2' will be calculated.')
 1110 FORMAT (/' *** TERMINAL ERROR - Either control cards are out of',
     1' order or the'/23X,
     2'keywords are mispelled on the data measurement control card.')
 1120 FORMAT (/' Data Measured (STATUS)'/1X,22('-'))
 1130 FORMAT (' STATUS 1 - Perpendicular and sighting distances',
     1' collected'/
     2 12X,'Sighting angle will be computed.')
 1140 FORMAT (' STATUS 2 - Only sighting distacne collected.')
 1150 FORMAT (' STATUS 3 - Only perpendicular distance collected.')
 1160 FORMAT (' STATUS 4 - Perpendicular and sighting distance and',
     1' sighting angle collected.'/
     2 12X,'The computed sighting angle will be calculated.')
 1170 FORMAT (' STATUS 5 - Sighting distance and sighting angle',
     1' collected.'/12X,'Perpendicular distance will be computed.')
 1180 FORMAT (' STATUS 6 - Perpendicular distance and sighting angle',
     1' collected.'/
     2 12X,'Sighting distance cannot be calculated due to the',
     2 12X,'possibility of a zero perpendicular distance.')
 1190 FORMAT (' STATUS 7 - Only sighting angle calculated.')
 1200 FORMAT (/' Cut Points for Perpendicular Distances',
     1' (Converted Measurements)'/1X,63('-')/
     21X,I2,' Set(s) of cut points.')
 1210 FORMAT (/1X,7G11.4/1X,7G11.4/1X,7G11.4)
 1220 FORMAT (' *** ERROR - A perpendicular distance estimator control',
     1' card was not found.'/
     2 13X,'Check order of cards and spelling.')
 1230 FORMAT (' *** ERROR - A sighting distance -- angle estimator',
     1' control card was not found.'/
     2 13X,'Check order of cards and spelling.')
 1240 FORMAT (/' *** WARNING - Cut points were out of order.',
     1'  They have been rearranged.')
      END
