PROGRAM READFITS C---------------------------------------------------------------------- C This VAX FORTRAN-77 program reads the header of a FITS file and C extracts text files which were packed into the header by C PACKFITS. Input is taken from the logical file INFIL, and output C is written to filenames specified by the value fields of TEXTFILE C cards. Unit 3 is used as a scratch file. C DCW, 07Jan82. C---------------------------------------------------------------------- CHARACTER B*2880, CARD*80, KEY*8, VAL*72, OUTNAM*30 LOGICAL COPY C C OPEN (UNIT=1, FILE='INFIL', STATUS='OLD', READONLY) OPEN (UNIT=3, STATUS='NEW', ACCESS='SEQUENTIAL', * FORM='FORMATTED', CARRIAGECONTROL='NONE', * DISPOSE='DELETE') NF = 1 COPY = .FALSE. C Read until END is seen: 10 CONTINUE READ (1, 1010, END=90) B DO 40 K = 1, 36 K1 = (K - 1) * 80 + 1 CARD = B(K1:K1+79) KEY = CARD(1:8) VAL = CARD(11:80) C IF (KEY.EQ.'END') GO TO 60 C Watch for 'TEXTFILE': IF (KEY.NE.'TEXTFILE') GO TO 20 IF (COPY) CLOSE (UNIT=2) C List-directed read for value: REWIND 3 WRITE (3, 1015) VAL REWIND 3 READ (3, *) OUTNAM OPEN (UNIT=2, FILE=OUTNAM, STATUS='NEW', * ACCESS='SEQUENTIAL', FORM='FORMATTED', * RECORDTYPE='FIXED', * RECL=72, CARRIAGECONTROL='LIST') TYPE *, 'Copying to file:', OUTNAM COPY = .TRUE. GO TO 30 20 CONTINUE IF (COPY) WRITE (2, 1020) CARD(9:80) 30 CONTINUE C 40 CONTINUE GO TO 10 C 60 CONTINUE IF (COPY) CLOSE (UNIT=2) COPY = .FALSE. C Skip binary & special records: 70 CONTINUE READ (1, 1010, END=80) GO TO 70 C Tapemark was seen: 80 CONTINUE TYPE *, 'FITS file', NF, ' has been processed.' NF = NF + 1 GO TO 10 C 90 CONTINUE TYPE *, 'Double tapemark = EOI.' STOP C---------------------------------------------------------------------- 1010 FORMAT (A2880) 1015 FORMAT (A72) 1020 FORMAT (A72) END