SUBROUTINE INPT(TITLE,MODAX) C C - SUMMARIZE CAPTURE RECORDS BY C 1) # MARKED ADULTS - M(I) C 2) # CAUGHT - N(I),NY(I) C 3) # CAUGHT IN PERIOD I, & CAUGHT LATER - R(I),RY(I) C 4) # CAUGHT BEFORE & AFTER BUT NOT IN PERIOD I- B(I) C IMPLICIT DOUBLE PRECISION (A-H,O-Z) INTEGER IDIM PARAMETER (IDIM=50,IDIM2=IDIM*2) INTEGER S,CAP(IDIM2),AGE,FRST,OLDNEW,YR,FLAGAX CHARACTER*4 KEYWD(20),ACODE*1,YCODE*1,CAGE*1 CHARACTER*80 FMT,LINE,TITLE*128 CHARACTER*16 CTYPE(3) DOUBLE PRECISION M,N,NS COMMON /BLK1/M(IDIM),N(IDIM,2),B(IDIM),R(IDIM,2),NS(IDIM,2), , YR(IDIM) COMMON /BLK2/CA(IDIM,2,2),CM(IDIM,2,2),CN(IDIM,2,2),Z(IDIM,2,2) COMMON /BLK3/LAST,FIMA,FIMD,FYMA,FYMD,EPSLON,MAXITR,IPRNT DATA NREAD,NUSED/0,0/ DATA KEYWD/'titl','TITL','FORM','form','PERI','peri','TYPE', ,'type','ADUL','adul','youn','YOUN','FIRS','firs','ITER', ,'iter','conv','CONV','comm','COMM'/ DATA ACODE,YCODE/'A','Y'/ DATA CTYPE/'CAPTURE-HISTORY','CAP/REL-HISTORY','SUMMARY'/ C FLAGAX=0 IYR1=1 INFMT=1 DO 40 I=1,IDIM CAP(I)=0 M(I)=.0D0 B(I)=.0D0 DO 40 J=1,2 N(I,J)=.0D0 R(I,J)=.0D0 NS(I,J)=.0D0 DO 40 K=1,2 CA(I,J,K)=.0D0 CM(I,J,K)=.0D0 CN(I,J,K)=.0D0 40 Z(I,J,K)=.0D0 C 42 READ(1,41)LINE 41 FORMAT(A80) WRITE(7,43)LINE 43 FORMAT(' INPUT==>',A80) KW=0 DO 45 I=1,20 IF(INDEX(LINE,KEYWD(I)).GE.1.AND.KW.EQ.0)KW=I 45 LEQ=INDEX(LINE,'=')+1 GO TO (1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,42,42),KW+1 1 BACKSPACE 1 WRITE(7,*)'1st DATA RECORD:',LINE GO TO 79 2 TITLE(25:104)=LINE(LEQ:80) WRITE(7,*)'CONTROL RECORD: TITLE=',TITLE(25:104) GO TO 42 3 FMT=LINE(LEQ:80) WRITE(7,*)'CONTROL RECORD: FORMAT=',FMT GO TO 42 4 LAST=INUM(LINE(LEQ:80)) WRITE(7,*)'CONTROL RECORD: PERIODS=',LAST GO TO 42 5 INFMT=1 IF(INDEX(LINE,'TOTALS')+INDEX(LINE,'totals').GT.0)INFMT=3 IF(INDEX(LINE,'REL')+INDEX(LINE,'rel').GT.0)INFMT=2 WRITE(7,*)'CONTROL RECORD: DATA TYPE=',CTYPE(INFMT) GO TO 42 6 ACODE=LINE(LEQ:LEQ) WRITE(7,*)'CONTROL RECORD: ADULT=',ACODE GO TO 42 7 YCODE=LINE(LEQ:LEQ) WRITE(7,*)'CONTROL RECORD: YOUNG=',YCODE GO TO 42 8 IYR1=INUM(LINE(LEQ:80)) WRITE(7,*)'CONTROL RECORD: FIRST=',IYR1 GO TO 42 9 MAXITR=INUM(LINE(LEQ:80)) WRITE(7,*)'CONTROL RECORD: ITERATIONS=',MAXITR GO TO 42 10 EPSLON=.1D2**(-INUM(LINE(LEQ:80))) WRITE(7,*)'CONTROL RECORD: CONVERG=',EPSLON GO TO 42 79 WRITE(7,78) WRITE(7,78)TITLE 78 FORMAT(A128) WRITE(7,70)LAST,CTYPE(INFMT),FMT,MAXITR,EPSLON 70 FORMAT(/' NUMBER OF TRAPPING PERIODS = ',I5/ / ' DATA TYPE = ',A16,' RECORDS'/ / ' INPUT FORMAT = ',A70/ / ' MAX ITERATIONS = ',I6/ / ' CONVERGENCE CRITERION = ',E10.4) IF(INFMT.EQ.3)GO TO 230 80 CONTINUE IF(FMT(1:1).NE.'(')THEN READ(1,*,END=250,ERR=800)CAGE,(CAP(I),I=1,LAST*INFMT),NCNT ELSE READ(1,FMT,END=250,ERR=800)CAGE,(CAP(I),I=1,LAST*INFMT),NCNT ENDIF IF(INFMT.EQ.2)THEN DO 44 I=1,2*LAST,2 CAP(I/2+1)=CAP(I) 44 IF(CAP(I).EQ.1.AND.CAP(I+1).EQ.0)CAP(I/2+1)=2 ENDIF NREAD=NREAD+1 AGE=0 IF(CAGE.EQ.ACODE)AGE=1 IF(CAGE.EQ.YCODE)AGE=2 IF (AGE.EQ.0) GO TO 80 IF(NCNT.LE.0)NCNT=1 NUSED=NUSED+1 LCAP=-1 C AGE=1 - ADULT .... AGE=2 - YOUNG C C *** PART OF SUBROUTINE WHICH COMPUTES STATS C *** NEEDED TO COMPUTE CONTINGENCY TABLES C LCAP=-1 FRST=999 DO 100 I=1,LAST IF(CAP(I).GE.3)FLAGAX=1 IF(MODAX.EQ.0.AND.CAP(I).GT.2)CAP(I)=CAP(I)-3 IF(CAP(I).LE.0)GO TO 100 IF(I.LT.FRST.AND.CAP(I).NE.3)FRST=I LCAP=I IF(CAP(I).GE.3)LCAP=I+1 100 CONTINUE C DO 160 I=1,LAST IF(CAP(I).NE.0.AND.CAP(I).NE.3)THEN C captured in I IF(I.LE.FRST)THEN c captured for the first time in I N(I,AGE)=N(I,AGE)+NCNT IF(CAP(I).NE.2)NS(I,AGE)=NS(I,AGE)+NCNT IF(I.LT.LCAP)R(I,AGE)=R(I,AGE)+NCNT IF(AGE.EQ.1)THEN IF(I.LT.LCAP)CA(I,1,2)=CA(I,1,2)+NCNT IF(I.GE.LCAP.AND.CAP(I).LE.2)CN(I,1,2)=CN(I,1,2)+NCNT ENDIF ELSE c captured after the first time in I N(I,1)=N(I,1)+NCNT IF(CAP(I).NE.2)NS(I,1)=NS(I,1)+NCNT M(I)=M(I)+NCNT IF(I.LT.LCAP)THEN CA(I,AGE,1)=CA(I,AGE,1)+NCNT R(I,1)=R(I,1)+NCNT ELSE IF(CAP(I).LE.2)CN(I,AGE,1)=CN(I,AGE,1)+NCNT ENDIF OLDNEW=2 IF(I.GT.(FRST+1))OLDNEW=1 CM(I,AGE,OLDNEW)=CM(I,AGE,OLDNEW)+NCNT ENDIF ELSE c not captured in I IF(I.GT.FRST.AND.I.LT.LCAP)THEN B(I)=B(I)+NCNT OLDNEW=2 IF(I.GT.(FRST+1))OLDNEW=1 Z(I,AGE,OLDNEW)=Z(I,AGE,OLDNEW)+NCNT ENDIF ENDIF 160 CONTINUE C GO TO 80 CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX C C READ SUMMARY TotalS C 230 DO 240 I=1,LAST READ(1,FMT,END=250)M(I),(N(I,J),J=1,2),(NS(I,J),J=1,2), , (R(I,J),J=1,2),B(I) NREAD=NREAD+1 240 NUSED=NUSED+1 C C ----- WRITE SUMMARY OF DATA. C 250 IF(MODAX.EQ.0.AND.FLAGAX.EQ.1)WRITE(7,227) 227 FORMAT(/' *** DATA CONTAIN BETWEEN PERIOD RESIGHTING CODES ', / 'WHICH WILL BE IGNORED ***'/ / ' *** TO USE THESE DATA, SELECT MODEL A2X ', / ' ***'/) WRITE(7,260) 260 FORMAT(//' SUMMARY OF DATA:'/ / /' Time # Marked # Caught # Released # Caught & seen', ,' later # Not caught &'/ / ' Period Adlt Adlt Yng Adlt Yng Adlt Yng ', ,' seen later'/1X,90('-')) DO 280 I = 1,LAST YR(I)=IYR1+I-1 WRITE(7,270)YR(I),INT(M(I)),(INT(N(I,J)),J=1,2), , (INT(NS(I,J)),J=1,2),(INT(R(I,J)),J=1,2),INT(B(I)) 270 FORMAT(I6,I9,I8,I5,I7,I5,I12,I5,I16) IF(MOD(YR(I),5).EQ.0)WRITE(7,270) 280 CONTINUE WRITE(7,290) NREAD,NUSED 290 FORMAT(/1X,I8,' Input records read'/1X,I8,' Records used'/) 300 RETURN C 800 NREAD=NREAD+1 WRITE(*,801)NREAD WRITE(7,801)NREAD 801 FORMAT(' Error reading record ',I4,' from input file.') IF(NREAD.GE.10)STOP GO TO 80 END