C MAGLINE.FTN - FOR EXTRACTING LINES OF AIRMAG DATA C ASSUMES THAT THE DATA HAS BEEN PUT ONTO DISK USING COPY32 C THE DATA MAY BE RETRIEVED SELECTIVELY BY LINE NUMBER OR COMPLETELY C BY GIVING NO LINE NUMBERS. LINE NUMBER INPUT IS TERMINATED BY C NEGATIVE LINE NUMBER. C INPUT IS LU 4 C CONSOLE IS LU 5 C OUTPUT IS LU 7 INTEGER LINE(100),FLINE,FID,EAST,NORTH,RAD,BARO, . LINEFOUND(40000),NFOUND,LCOUNT(40000) CHARACTER*6 CLINE CHARACTER*12 BUFF CHARACTER*12 TTLE,ITOC CHARACTER*14 REPTIT CHARACTER*72 TXTLINE C USED TO READ A LINE OF TEXT 72 CHARS LONG LOGICAL REPEAT C LLAST=0 C TO REMEMBER LAST LINE NUMBER REPEAT=.FALSE. OPEN(UNIT=4,FILE='/cdata3/rgr/tasline.ldt', . STATUS='OLD',READONLY) C OPEN THE INPUT FILE OPEN(UNIT=8,FILE='duplicates') C USED TO NOTE DUPLICATE LINES NLINE=0 NFOUND=0 WRITE(*,890) 890 FORMAT(' ENTER LINE NUMBERS - TERMINATE BY A NEGATIVE NUMBER'/ . ' IF ALL LINES ARE NEEDED TERMINATE IMMEDIATELY') DO 10 I=1,100 READ(*,*) J IF (J .LT. 0) GOTO 6 C TERMINATE NLINE=NLINE+1 LINE(NLINE)=J 10 CONTINUE 6 CONTINUE 20 READ(4,800,END=850) TXTLINE 800 FORMAT(A72) IF (TXTLINE(1:8) .EQ. ' ') GOTO 20 C CHECK FOR BLANK LINES AT END READ(TXTLINE(1:8),*) FLINE C READ THE LINE NUMBER IF (NLINE .EQ. 0) GOTO 40 DO 21 J=1,NLINE IF (FLINE .EQ. LINE(J)) GOTO 40 21 CONTINUE GOTO 20 C NOT FOUND SO BACK ROUND C 40 CONTINUE IF (LLAST .NE. FLINE) THEN CLOSE(UNIT=7,STATUS='KEEP') C C NOW CHECK TO SEE IF HAVE HAD THIS LINE NUMBER BEFORE IF (NFOUND .NE. 0) THEN C HAVE ALREADY RAD ONE OR MORE LINES DO 41 J=1,NFOUND IF (FLINE .EQ. LINEFOUND(J)) GOTO 42 C ALREADY SEEN THIS LINE NUMBER 41 CONTINUE GOTO 45 C NEW LINE NUMBER 42 WRITE(8,803) FLINE,LCOUNT(J) 803 FORMAT(I7,' ALREADY FOUND ',I2,' TIMES ') REPEAT=.TRUE. LCOUNT(J)=LCOUNT(J)+1 C NOTE HOW MANY TIMES FOUND GOTO 46 ENDIF C C 45 NFOUND=NFOUND+1 LINEFOUND(NFOUND)=FLINE LCOUNT(NFOUND)=1 C REMEMBER HAVE SEEN THIS 46 CONTINUE TTLE(1:2)='FA' WRITE(BUFF,801) FLINE 801 FORMAT(I6) READ(BUFF,802) CLINE 802 FORMAT(A6) C CLINE=ITOC(FLINE,K) TTLE(3:8)=CLINE(1:6) TTLE(9:12)='.CRD' DO 11 I=3,8 IF (TTLE(I:I) .EQ. ' ') TTLE(I:I)='0' 11 CONTINUE IF (REPEAT) THEN REPTIT(1:12)=TTLE(1:12) REPTIT(13:13)='.' IF (LCOUNT(J) .EQ. 2) REPTIT(14:14)='2' IF (LCOUNT(J) .EQ. 3) REPTIT(14:14)='3' IF (LCOUNT(J) .EQ. 4) REPTIT(14:14)='4' IF (LCOUNT(J) .EQ. 5) REPTIT(14:14)='5' IF (LCOUNT(J) .EQ. 6) REPTIT(14:14)='6' IF (LCOUNT(J) .EQ. 7) REPTIT(14:14)='7' IF (LCOUNT(J) .EQ. 8) REPTIT(14:14)='8' IF (LCOUNT(J) .EQ. 9) REPTIT(14:14)='9' OPEN(UNIT=7,FILE=REPTIT,RECL=72) REPEAT=.FALSE. ELSE OPEN(UNIT=7,FILE=TTLE,RECL=72) ENDIF LLAST=FLINE ENDIF WRITE(7,900) TXTLINE 900 FORMAT(A72) GOTO 20 C 850 CLOSE(UNIT=4,STATUS='KEEP') CLOSE(UNIT=7,STATUS='KEEP') CALL XIT END INCLUDE '/data/pe/xit.f' C INCLUDE '/data/pe/itoc.f'