[fitsbits] Start of the CONTINUE keyword Public Comment Period

William Pence pence at milkyway.gsfc.nasa.gov
Thu Jul 19 15:00:37 EDT 2007


Hi Mark,

Mark Calabretta wrote:
> On Tue 2007/07/17 16:17:06 -0400, William Pence wrote
> in a message to: FITSBITS <fitsbits at nrao.edu>
> 
>> Mark Calabretta wrote:
>>>   1) The continuation character, '&', is redundant syntax.  As described
>>>      in the prologue of fitshdr.h (from WCSLIB, as appended), it only
>>>      indicates continuation if the following card is CONTINUE otherwise
>>>      it must be interpreted literally.
>> The redundancy is intentional in this case, and helps to avoid any
>> possible confusion over whether the FITS writer really intended this
>> convention to be used or not.
> 
> Bill,
> 
> The CONTINUE convention differs significantly from the others offered
> for the registry because it defines basic functionality that people are
> likely to want to use.  It will almost inevitably become a de facto
> standard, if it hasn't already, or at least strongly influence the way
> that continuation syntax might be standardised.  Consequently, I think
> it is worth devoting some effort to settling on a syntax that we all
> feel comfortable with.

Since this convention has been in use for ~13 years, and is in current 
use for at least 2 active missions (RXTE and Chandra), I'm assuming 
there should be no objection to documenting the current syntax of this 
convention in the Registry, once any remaining issues about the 
completeness or clarity of the documentation are resolved.

Further discussion about whether some sort of continuation functionality 
should be incorporated into the FITS Standard is certainly welcome as 
far as I am concerned, but there is another somewhat related issue that 
should probably be considered at the same time: the 8-character limit on 
keyword names.  These 2 limits (the keyword name length, and the length 
of character string keyword values) are arguably the 2 limitations of 
FITS that most affect (and irritate) data providers.   Since both of 
these issues have to do with how to encode the required information into 
the 80-character header records, it seems to me these 2 issues should be 
considered together.  In the near future (probably in September) the 
existing ESO HIERARCH keyword convention (which effectively allows 
longer keyword names) will be submitted to the Registry.  That may 
provide a catalyst for wider discussion.

In the meantime, here are a few comments on your previous comments:
> 
> My only concern with the convention as currently described is with the
> use of the '&' character, which, to reiterate, is redundant syntax.
> However, I don't advocate eliminating it.  Instead I suggest making it
> optional in precisely the way described in the prologue of fitshdr.h
> (previously appended).  In practice it can still serve the useful
> function of "guarding" trailing blanks that are to be preserved in a
> string value.  The prologue of fitshdr.h describes how this form of
> CONTINUE-based continuation works in a parser that has been implemented.

The '&' character serves 3 important functions, so I'm uneasy with 
making it optional:

1.  The redundancy of requiring both the '&' at the end of the string 
followed by a CONTINUE keyword serves to prevent misinterpretation of 
the header values.  To illustrate, consider the following keywords taken 
from an actual RXTE file:

1CTYP12 = 'CHANNEL '
1CPIX12 = '(S[msLimit1]~S[msLimit2]),((S[msLimit2]+1)~S[msLimit&'
CONTINUE  '3]+1)~S[msLimit4]),((S[msLimit4]+1)~S[msLimit5])'

If the 1CPIX12 keyword is now deleted without also deleting the 
following CONTINUE keyword (as could easily happen if the software does 
not support this convention) then you are left with this:

1CTYP12 = 'CHANNEL '
CONTINUE  '3]+1)~S[msLimit4]),((S[msLimit4]+1)~S[msLimit5])'

This will cause the 1CTYP12 keyword value to be misinterpreted if one 
does not require the '&' as part of this convention.  Requiring that the 
first string end with an '&' makes is much less likely that an orphaned 
or misplaced CONTINUE keyword will cause any damage; it will simply be 
treated in the same way as a harmless COMMENT keyword.

2. The '&' also serves as an aid to FITS reading programs by providing 
an explicit indication that the keyword may be continued.  Without this 
indicator, the reading program would always have to check the next 
keyword to see if it is a continuation, which could add more overhead. 
  This may not be a particular issue for software like your wcslib 
parser, which passes through the whole header once, to populate an 
internal structure, but it is a significant issue for other software, 
like my CFITSIO library, which reads the keywords from the header on demand.

3.  The third function of the '&', as you mentioned, is to allow 
trailing blanks to be included as a significant part of the string.

Taken together, these 3 reasons seem compelling enough to me to require 
that the '&' be used as part of this convention.

> Tying continuation to a particular data type, apart from being
> unnecessary, must be unique amongst computer-based syntaxes.  The
> argument that only string values are likely to be continued ignores
> possible future syntaxes.  For example, record-valued keywords currently
> proposed by/for WCS Paper IV might be better implemented by extending
> the keyword syntax.  They could easily be long enough to require
> continuation, and the continued portion could be a floating point value
> or something else.

As currently defined, the record-valued keywords all have string values, 
so there shouldn't be any problem with using this continuation 
convention with them, if desired.   I guess your point is that some 
other syntax might be invented in the future in which the keyword values 
are not strings.  That may be, but without concrete examples, it is hard 
to see why the current convention is not adequate.

Bill Pence
-- 
____________________________________________________________________
Dr. William Pence                       pence at milkyway.gsfc.nasa.gov
NASA/GSFC Code 662       HEASARC        +1-301-286-4599 (voice)
Greenbelt MD 20771                      +1-301-286-1684 (fax)





More information about the fitsbits mailing list