diff options
Diffstat (limited to 'pkg/tbtables/fitsio/ftprsv.f')
-rw-r--r-- | pkg/tbtables/fitsio/ftprsv.f | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/pkg/tbtables/fitsio/ftprsv.f b/pkg/tbtables/fitsio/ftprsv.f new file mode 100644 index 00000000..ba87cde1 --- /dev/null +++ b/pkg/tbtables/fitsio/ftprsv.f @@ -0,0 +1,82 @@ +C-------------------------------------------------------------------------- + subroutine ftprsv(keyrec,lenval,status) + +C find the total length of the keyword+value string in a keyword record + +C keyrec c 80 column header record +C OUTPUT PARAMETERS: +C lenval i output length of keyword+value string +C status i returned error status (0=ok) +C +C written by Wm Pence, HEASARC/GSFC, June 1991 + + character*80 keyrec + integer lenval,status,j,c1 + + if (status .gt. 0)return + + if (keyrec(1:8) .eq.'COMMENT ' .or. keyrec(1:8).eq.'HISTORY ' + & .or. keyrec(1:8).eq.'END ' .or. keyrec(1:8).eq.' ') + & then +C this is a COMMENT or HISTORY record, with no value + lenval=8 + else if (keyrec(9:10) .eq. '= ')then +C this keyword has a value field; now find the first character: + do 10 j=10,80 + if (keyrec(j:j) .ne. ' ')then + c1=j + go to 15 + end if +10 continue +C error: value is blank + status=204 + call ftpmsg('The keyword '//keyrec(1:8)// + & ' has no value string after the equal sign:') + call ftpmsg(keyrec) + return + +15 if (keyrec(c1:c1) .eq. '''')then +C This is a string value. +C Work forward to find a single quote. Two single quotes +C in succession is to be interpreted as a literal single +C quote character as part of the character string, not as +C the end of the character string. Everything to the right +C of the closing quote is assumed to be the comment. + do 20 j=c1+1,80 + if (keyrec(j:j) .eq. '''')then + if (j.lt.80 .and. keyrec(j+1:j+1).eq.'''')then +C found 2 successive quote characters; this is +C interpreted as a literal quote character + else + lenval=max(30,j) + go to 30 + end if + end if +20 continue +C error: no closing quote character + status=205 + call ftpmsg('The following Keyword value string has '// + & 'no closing quote:') + call ftpmsg(keyrec) + return + else +C This is either an integer, floating point, or logical value. +C Extract the first token as the value; remainder = comment + do 25 j=c1,80 + if (keyrec(j:j) .eq. ' ')then + lenval=j-1 + go to 30 + end if +25 continue +C the first token went all the way to column 80: + lenval=80 + end if + else +C illegal keyword record format; must have '= ' in columns 9-10 +C status=210 +C Modified July 1993: this is actually not an error. The +C keyword should simply be interpreted as a comment. + lenval=8 + end if +30 continue + end |