C C C ********************************************* C * * C * TORPEDO AUTO-FIRE CONTROL SUBROUITINE * C * * C ********************************************* C SUBROUTINE AUTOFI COMMON QUAD(8,8),SECT(10,10),NGAL(8,8),K(7,5),STATUS(13),R1,C1,R,C &,H1,POW,SHLD(5),NTORP,A,B,H(7),N1,N2,N3,N4,N5,N6,II,JJ,RANK,ITR(4) COMMON/TESTS1/TROM1,TROM2,TDISAB,TDEST,TWON,TLOST,TRESC,TALTOW, &TBOFF,TALERT,TLOOS,TBALEN,TALSD,TINTRD COMMON/TRPS/IFANGL(7),FANGL(7),M(7),N(7),IG(7),L(7),IH(7),NTARG,NT &,NS,IT2,ID3,IG3,IG4,IG6,IG7,IG8,IG9,IR5,TABORT,TAUTOF DIMENSION TANG(7) INTEGER SECT,QUAD,R1,C1,R,C,H1,POW,SHLD,A,B,H LOGICAL TROM1,TROM2,TDISAB,TDEST,TWON,TLOST,TRESC,TALTOW,TBOFF, &TALERT,TLOOS,TBALEN,TALSD,TINTRD,TABORT,TAUTOF LOGICAL*1 EE,ENDB,ENDS DATA ENDB,ENDS/1H ,1Hs/,TANG/7*0.0/ C IF(NT.EQ.2)GOTO 6 10 TYPE 11 11 FORMAT(/1X,'AUTO-FIRE ENGAGED') WRITE(3,11) DO 1 I=1,7 N(I)=0 IG(I)=0 IH(I)=0 L(I)=0 1 CONTINUE NTARG=0 IZ=0 NS=0 DO 2 J=1,7 IF(K(J,1).EQ.0 .OR. K(J,4).EQ.1)GOTO 2 IF(J.EQ.7 .AND. .NOT.TROM2)GOTO 2 NS=NS+1 IH(J)=SIZHIT(K(J,1),K(J,2),K(J,3),A,B) 4 IF(J.EQ.1)GOTO 2 I1=0 5 IF(IH(J-I1).LE.IH(J-I1-1))GOTO 2 IZ=IH(J-I1-1) IH(J-I1-1)=IH(J-I1) IH(J-I1)=IZ Z=FANGL(J-I1-1) FANGL(J-I1-1)=FANGL(J-I1) FANGL(J-I1)=Z I1=I1+1 IF(J-I1-1.NE.0)GOTO 5 2 CONTINUE RETURN 6 IF(NTARG.NE.0)GOTO 7 20 TYPE 21 21 FORMAT(1X,'*** NO LOCK-ON ACHIEVED - FIRING ABORTED ***'/) WRITE(3,21) 13 TABORT=.TRUE. RETURN 7 DO 8 I=1,NTARG DO 9 J=1,NTARG IF(N(J).EQ.1)GOTO 9 DO 12 I1=0,NS-J-1 FANGL(J+I1)=FANGL(J+I1+1) IH(J+I1)=IH(J+I1+1) N(J+I1)=N(J+I1+1) 12 CONTINUE IH(NS+1-I)=0 N(NS+1-I)=0 GOTO 8 9 CONTINUE 8 CONTINUE EE=ENDS IF(NTARG.EQ.1)EE=ENDB 30 TYPE 31,NTARG,EE 31 FORMAT(1X,I3,' target',A1,' selected') WRITE(3,31)NTARG,EE 60 TYPE 61,NTORP 61 FORMAT(1X,'NUMBER OF PHOTON TORPEDOES AVAILABLE:',I3/ +1X,'NUMBER OF TORPEDOES ALLOCATED? ',$) 40 READ(5,41,ERR=60)IT2 41 FORMAT(I3) 50 TYPE 51 51 FORMAT(1X) IF(IT2.LE.0)GOTO 13 IF(IT2.GT.5)TYPE 71 71 FORMAT(1X,'MAXIMUM NUMBER PER SALVO IS 5') IF(IT2.GT.5)IT2=5 IF(IT2.GT.NTORP)IT2=NTORP NTORP=NTORP-IT2 DO 14 I=1,7 TANG(I)=FANGL(I) 14 CONTINUE I1=0 I2=0 I3=0 J1=0 DO 15 I=1,NTARG IF(N(I).EQ.0)IH(I)=0 IF(IH(I).LT.400)GOTO 16 I1=I1+1 GOTO 15 16 IF(IH(I).GE.300)I2=I2+1 15 CONTINUE IF(I1+I2.GE.IT2)RETURN IF(I1.EQ.0)GOTO 18 DO 19 I=1,I1 IF(J1+1.GT.IT2)GOTO 22 J1=J1+1 TANG(J1)=FANGL(I) IF(J1+1.GT.IT2)GOTO 22 J1=J1+1 TANG(J1)=FANGL(I) 19 CONTINUE 22 IF(J1.EQ.IT2)GOTO 23 18 DO 24 I=1,7 L(I)=IH(I) M(I)=0 24 CONTINUE J2=0 DO 25 J=1,NTARG-1 IF(M(J).EQ.-1)GOTO 25 DO 26 I=1,NTARG-J IF(FANGL(J).NE.FANGL(J+I))GOTO 26 J2=J2+1 M(J)=M(J)+1 M(J+I)=-1 L(J)=L(J)+IH(J+I) 26 CONTINUE 25 CONTINUE IF(J2.EQ.0)GOTO 27 J3=0 I5=0 DO 28 I=1,NTARG-1 IF(M(I).EQ.-1)GOTO 28 IF(L(I).LT.J3)GOTO 28 IF(L(I).EQ.J3)GOTO 29 32 J3=L(I) I5=I GOTO 28 29 IF(M(I)+1.GT.IT2)GOTO 28 IF(M(I).LT.M(I5))GOTO 28 GOTO 32 28 CONTINUE DO 33 I=1,M(I5)+1 IF(J1+I.GT.IT2)GOTO 34 IF(IH(I5).GE.400)GOTO 35 TANG(J1+I)=FANGL(I5) 33 CONTINUE IF(J1+I.GT.IT2)GOTO 23 TANG(J1+I)=FANGL(I5) GOTO 36 34 I=I-1 36 J1=J1+I GOTO 35 27 IF(J1.EQ.0)J1=NTARG 35 DO 37 J=1,IT2 IF(J1+1.GT.IT2)GOTO 23 IF(N(J).NE.0)GOTO 38 I3=I3+1 IF(N(I3).EQ.0)I3=1 TANG(J1+1)=FANGL(I3) GOTO 39 38 DO 42 I=1,J1 IF(TANG(I).EQ.FANGL(J))GOTO 37 42 CONTINUE TANG(J1+1)=FANGL(J) 39 J1=J1+1 37 CONTINUE 23 DO 43 I=1,5 FANGL(I)=TANG(I) 43 CONTINUE RETURN END