(This Appendix is not part of the NOST FITS standard but is included for convenient reference.)
The following notation is used in defining the formal syntax.
| := | means "is defined to be'' |
| X | Y | means one of X or Y (no ordering relation is implied) |
[X] |
means that X is optional |
| X |
means X is repeated 1 or more times |
| "B'' | means the ASCII character B |
| "A''-"Z'' | means one of the ASCII characters A through Z |
\0xnn |
means the ASCII character associated with the hexadecimal code nn |
| { |
expresses a constraint or a comment (it immediately follows the syntax rule). |
The following statements define the formal syntax used in
FITS free format card images.
FITS_card_image :=
FITS_commentary_card_image | FITS_value_card_image
FITS_commentary_card_image :=
COMMENT_keyword [ascii_text_char...] |
HISTORY_keyword [ascii_text_char...] |
BLANKFIELD_keyword [ascii_text_char...] |
keyword_field anychar_but_equal [ascii_text_char...] |
keyword_field `=' anychar_but_space [ascii_text_char...]
{Constraint: The total number of characters in a
FITS_commentary_card_image must be exactly equal to 80.}
FITS_value_card_image :=
keyword_field value_indicator [space...] [value] [space...]
[comment]
{Constraint: The total number of characters in a FITS_value_card_image
must be exactly equal to 80.}
{Comment: if the value field is not present, the value of the
FITS keyword is not defined.}
keyword_field :=
[keyword_char...] [space...]
{Constraint: The total number of characters in the keyword_field must
be exactly equal to 8.}
keyword_char :=
`A'-`Z' | `0'-`9' | `_' | `-'
COMMENT_keyword :=
`C' `O' `M' `M' `E' `N' `T' space
HISTORY_keyword :=
`H' `I' `S' `T' `O' `R' `Y' space
BLANKFIELD_keyword :=
space space space space space space space space
value_indicator :=
`=' space
space :=
` '
comment :=
`/' [ascii_text_char...]
ascii_text_char :=
space-`~'
anychar_but_equal :=
space-`<' | `>'-`~'
anychar_but_space :=
`!'-`~'
value :=
character_string_value | logical_value | integer_value |
floating_value | complex_integer_value |
7 complex_floating_value
character_string_value :=
begin_quote [string_text_char...] end_quote
{Constraint: The begin_quote and end_quote are not part of the
character string value but only serve as delimiters. Leading spaces are
significant; trailing spaces are not.}
begin_quote :=
quote
end_quote :=
quote
{Constraint: The ending quote must not be immediately followed by a
second quote.}
quote :=
\0x27
string_text_char :=
ascii_text_char
{Constraint: A string_text_char is identical to an ascii_text_char
except for the quote char; a quote char is represented by two successive
quote chars.}
logical_value :=
`T' | `F'
integer_value :=
[sign] digit [digit...]
{Comment: Such an integer value is interpreted as a signed decimal
number. It may contain leading zeros.}
sign :=
`-' | `+'
digit :=
`0'-`9'
floating_value :=
decimal_number [exponent]
decimal_number :=
[sign] [integer_part] [`.' [fraction_part]]
{Constraint: At least one of the integer_part and fraction_part must be
present.}
integer_part :=
digit | [digit...]
fraction_part :=
digit | [digit...]
exponent :=
exponent_letter [sign] digit [digit...]
exponent_letter :=
`E' | `D'
complex_integer_value :=
`(' [space...] real_integer_part [space...] `,'
[space...]
imaginary_integer_part [space...] `)'
real_integer_part :=
integer_value
imaginary_integer_part :=
integer_value
complex_floating_value :=
`(' [space...] real_floating_part [space...] `,'
[space...]
imaginary_floating_part [space...] `)'
real_floating_part :=
floating_value
imaginary_floating_part :=
floating_value
One of the most attractive features of binary tables is that any field of the table can be an array. In the standard case this is a fixed size array, i.e., a fixed amount of storage is allocated in each record for the array data - whether it is used or not. This is fine so long as the arrays are small or a fixed amount of array data will be stored in each record, but if the stored array length varies for different records, it is necessary to impose a fixed upper limit on the size of the array that can be stored. If this upper limit is made too large excessive wasted space can result and the binary table mechanism becomes seriously inefficient. If the limit is set too low then it may become impossible to store certain types of data in the table.
The "variable length array'' construct presented here was devised to deal with this problem. Variable length arrays are implemented in such a way that, even if a table contains such arrays, a simple reader program which does not understand variable length arrays will still be able to read the main table (in other words a table containing variable length arrays conforms to the basic binary table standard). The implementation chosen is such that the records in the main table remain fixed in size even if the table contains a variable length array field, allowing efficient random access to the main table.
Variable length arrays are logically equivalent to regular static arrays, the only differences being 1) the length of the stored array can differ for different records, and 2) the array data is not stored directly in the table records. Since a field of any datatype can be a static array, a field of any datatype can also be a variable length array (excluding type P, the variable length array descriptor itself, which is not a datatype so much as a storage class specifier). Conventions such as TDIMn (see Appendix .4) apply equally to both variable length and static arrays.
A variable length array is declared in the table header with a special
field datatype specifier of the form
For example,
The data for the variable length arrays in a table is not stored in the actual data records; it is stored in a special data area, the heap , following the last fixed size data record. What is stored in the data record is an array descriptor. This consists of two 32-bit integer values: the number of elements (array length) of the stored array, followed by the zero-indexed byte offset of the first element of the array, measured from the start of the heap area. Storage for the array is contiguous. The array descriptor for field N as it would appear embedded in a data record is illustrated symbolically below:
[field N-1] [(nelem,offset)] [field N+1]
If the stored array length is zero there is no array data, and the offset value is undefined (it should be set to zero). The storage referenced by an array descriptor must lie entirely within the heap area; negative offsets are not permitted.
A binary table containing variable length arrays consists of three principal segments, as follows:
[table_header] [record_storage_area] [heap_area]
The table header consists of one or more 2880-byte FITS logical
records with the last record indicated by the
keyword END
somewhere in the record. The record storage area begins with the next
2880-byte logical record following the last header record and is
bytes in length.
The zero indexed
byte offset of the heap measured from the start of the record storage
area is given by the THEAP keyword in the header.
If this
keyword is missing the heap is assumed to begin with the byte
immediately following the last data record, otherwise there may be a
gap between the last stored record and the start of the heap. If
there is no gap the value of the heap offset
is
.
The total length in bytes of the
heap area following the last stored record (gap plus heap) is given by
the PCOUNT keyword in the table header.
For example, suppose we have a table containing 5 rows each 168 byte
records, with a heap area 2880 bytes long, beginning at an offset of
2880, thereby aligning the record storage and heap areas on FITS
record boundaries (this alignment is not necessarily recommended but
is useful for our example). The data portion of the table consists of
2 2880-byte FITS records, 840 bytes of which are used by the 5
table records, hence PCOUNT is
,
or 4920 bytes;
this is expressed in the table header as:
NAXIS1 = 168 / Width of table row in bytes NAXIS2 = 5 / Number of rows in table PCOUNT = 4920 / Random parameter count ... THEAP = 2880 / Byte offset of heap area
The values of TSCALn and TZEROn for variable length array column entries are to be applied to the values in the data array in the heap area, not the values of the array descriptor. These keywords can be used to scale data values in either static or variable length arrays.
While the above description is sufficient to define the required features of the variable length array implementation, some hints regarding usage of the variable length array facility may also be useful.
Programs which read binary tables should take care to not assume more about the physical layout of the table than is required by the specification. For example, there are no requirements on the alignment of data within the heap. If efficient runtime access is a concern one may want to design the table so that data arrays are aligned to the size of an array element. In another case one might want to minimize storage and forgo any efforts at alignment (by careful design it is often possible to achieve both goals). Variable array data may be stored in the heap in any order, i.e., the data for record N+1 is not necessarily stored at a larger offset than that for record N. There may be gaps in the heap where no data is stored. Pointer aliasing is permitted, i.e., the array descriptors for two or more arrays may point to the same storage location (this could be used to save storage if two or more arrays are identical).
Byte arrays are a special case because they can be used to store a "typeless'' data sequence. Since FITS is a machine-independent storage format, some form of machine-specific data conversion (byte swapping, floating point format conversion) is implied when accessing stored data with types such as integer and floating, but byte arrays are copied to and from external storage without any form of conversion.
An important feature of variable length arrays is that it is possible that the stored array length may be zero. This makes it possible to have a column of the table for which, typically, no data is present in each stored record. When data is present the stored array can be as large as necessary. This can be useful when storing complex objects as records in a table.
Accessing a binary table stored on a random access storage medium is straightforward. Since the data records in the main table are fixed in size they may be randomly accessed given the record number, by computing the offset. Once the record has been read in, any variable length array data may be directly accessed using the element count and offset given by the array descriptor stored in the data record.
Reading a binary table stored on a sequential access storage medium requires that a table of array descriptors be built up as the main table records are read in. Once all the table records have been read, the array descriptors are sorted by the offset of the array data in the heap . As the heap data is read, arrays are extracted sequentially from the heap and stored in the affected records using the back pointers to the record and field from the table of array descriptors. Since array aliasing is permitted, it may be necessary to store a given array in more than one field or record.
Variable length arrays are more complicated than regular static arrays and imply an extra data access per array to fetch all the data for a record. For this reason, it is recommended that regular static arrays be used instead of variable length arrays unless efficiency or other considerations require the use of a variable array.
This facility is still undergoing trials and is not part of the basic binary table definition.
It is anticipated that binary tables will need to contain data structures more complex that those describable by the basic notation. Examples of these are multidimensional arrays and nonrectangular data structures. Suitable conventions may be defined to pass these structures using some combination of keyword/value pairs and table entries to pass the parameters of these structures.
One case, multidimensional arrays, is so common that it is prudent to describe a simple convention. The "Multidimensional array'' convention consists of the following: any column with a dimensionality of 2 or larger will have an associated character keyword TDIMn ='(l,m,n...)' where l, m, n, ...are the dimensions of the array. The data is ordered such that the array index of the first dimension given (l) is the most rapidly varying and that of the last dimension given is the least rapidly varying. The size implied by the TDIMn keyword will equal the element count specified in the TFORMn keyword. The adherence to this convention will be indicated by the presence of a TDIMn keyword in the form described above.
A character string is represented in a binary
table by a one-dimensional character array, as described under "Character''
in the list of datatypes in
Sect. 8.3.3 ("Main Data Table''). For example, a
Fortran 77 CHARACTER*20 variable could be represented in a
binary table as a character array declared as
TFORMn = '20A
![]()
'. Arrays of character strings, i.e.,
multidimensional character arrays, may be represented using the
TDIMn notation. For example, if TFORMn = '60A
![]()
'
and TDIMn = '(5,4,3)', then the entry consists of a
array of strings of 5 characters each. (Variable length
character strings are allowed by the convention described in
Appendix .5. One dimensional arrays of strings should use
the convention in Appendix .5 rather than the
"Multidimensional Array'' convention.)
This convention is optional and will not preclude other conventions. This convention is not part of the binary table definition.
This appendix describes a layered convention for specifying that a character array field (TFORMn = 'rA') consists of an array of either fixed-length or variable-length substrings within the field. This convention utilizes the option described in the basic binary table definition to have additional characters following the datatype code character in the TFORMn value field. The full form for the value of TFORMn within this convention is
'rA:SSTRw/nnn'
and a simpler form that may be used for fixed-length substrings only is
'rAw'
where
r is an integer giving the total length including any delimiters (in characters) of the field,To illustrate this usage:
A signifies that this is a character array field,
: indicates that a convention indicator follows,
SSTR indicates the use of the "Substring Array'' convention,
w is an integerr giving the (maximum) number of characters in an individual substring (not including the delimiter), and
/nnn if present, indicates that the substrings have variable-length and are delimited by an ASCII text character with decimal value nnn in the range 032 to 126 decimal, inclusive. This character is referred to as the delimiter character. The delimiter character for the last substring will be an ASCII NUL.
'40A:SSTR8'signifies that the field is 40 characters wide and consists of an array of 5 8-character fixed-length substrings. This could also be expressed using the simpler form as'40A8',
'100A:SSTR8/032'signifies that the field is 100 characters wide and consists of an array of variable-length substrings where each substring has a maximum length of 8 characters and, except for the last substring, is terminated by an ASCII SPACE (decimal 32) character.
Note that simple FITS readers that do not understand this substring convention can ignore the TFORM characters following the rA and can interpret the field simply as a single long string as described in the basic binary table definition.
The following rules complete the full definition of this convention:
'INDEF') be
used for this purpose although general readers are not expected to
recognize these as undefined strings. In cases where it is necessary
to make a distinction between a blank, or other, substring and an
undefined substring use of variable-length substrings is recommended;
TFORMn = 'rPA(
):SSTRw/nnn'
and
TFORMn = 'rPA(
):SSTRw'
for the variable and fixed cases, respectively.
This convention is optional and will not preclude other conventions. This convention is not part of the binary table definition.
(This Appendix is not part of the NOST FITS Standard, but is included as a guide to recommended practices.)
The arrangement of digital bits and other physical properties of any medium should be in conformance with the relevant national and/or international standard for that medium.
[Not part of formal DATExxxx agreement]
For reference, see: Explanatory Supplement to the Astronomical Almanac, P. K. Seidelmann, ed., University Science Books, 1992, ISBN 0-935702-68-7, or
http://tycho.usno.navy.mil/systime.html
Use of Global Positioning Satellite (GPS) time (19 s behind TAI) is deprecated.
http://heasarc.gsfc.nasa.gov/docs/xte/abc/ time_tutorial.html
http://heasarc.gsfc.nasa.gov/docs/xte/abc/ time.html
The VLBA project has adopted a convention where the keyword TIMSYS, rather than TIMESYS, is used, currently allowing the values UTC and IAT. See p. 9 and p. 16 of:
http://www.cv.nrao.edu/fits/documents/ drafts/vlba_format.ps
(This Appendix is not part of the NOST FITS Standard but is included for informational purposes only.)
Note: in this discussion, the term the FITS papers refers to Wells et al. (1981), Greisen & Harten (1981), Grosbøl et al. (1988), Harten et al. (1988), Ponz et al. (1994), and Cotton et al. (1995) collectively; the term Floating Point Agreement (FPA) refers to Wells & Grosbøl (1990); the term Blocking Agreement refers to Grosbøl & Wells (1994); and the term DATExxxx Agreement refers to the redefinition of the value format for date keywords approved by the IAUFWG in 1997.
The standard states that in general, character-valued keywords can have lengths up to the maximum 68 character length.
| Principal | Conforming | ASCII Table | Image | Binary Table | Random Groups |
| HDU | Extension | Extension | Extension | Extension | Records |
| SIMPLE | XTENSION | XTENSION1 | XTENSION2 | XTENSION3 | SIMPLE |
| BITPIX | BITPIX | BITPIX = 8 |
BITPIX | BITPIX = 8 |
BITPIX |
| NAXIS | NAXIS | NAXIS = 2 |
NAXIS | NAXIS = 2 |
NAXIS |
| NAXISn4 | NAXISn4 | NAXIS1 | NAXISn4 | NAXIS1 | NAXIS1 = 0 |
| EXTEND5 | PCOUNT | NAXIS2 | PCOUNT = 0 |
NAXIS2 | NAXISn4 |
| END | GCOUNT | PCOUNT = 0 |
GCOUNT = 1 |
PCOUNT | GROUPS = T |
| END | GCOUNT = 1 |
END | GCOUNT = 1 |
PCOUNT | |
| TFIELDS | TFIELDS | GCOUNT | |||
| TBCOLn6 | TFORMn6 | END | |||
| TFORMn6 | END | ||||
| END |
1 XTENSION= 'TABLE' for the
ASCII table extension.
2 XTENSION= 'IMAGE' for the
image extension .
3 XTENSION= 'BINTABLE' for the binary table
extension .
4 Runs from 1 through the value of NAXIS.
5 Required only if extensions are present.
6 Runs from 1 through the value of TFIELDS.
| All | Array1 | Conforming | ASCII Table | Binary Table | Random Groups |
| HDUs | HDUs | Extension | Extension | Extension | Records |
| DATE | BSCALE | EXTNAME | TSCALn | TSCALn | PTYPEn |
| ORIGIN | BZERO | EXTVER | TZEROn | TZEROn | PSCALn |
| BLOCKED2 | BUNIT | EXTLEVEL | TNULLn | TNULLn | PZEROn |
| AUTHOR | BLANK | TTYPEn | TTYPEn | ||
| REFERENC | CTYPEn | TUNITn | TUNITn | ||
| COMMENT | CRPIXn | TDISPn | |||
| HISTORY | CROTAn | TDIMn | |||
|
CRVALn | THEAP | |||
| DATE-OBS | CDELTn | ||||
| TELESCOP | DATAMAX | ||||
| INSTRUME | DATAMIN | ||||
| OBSERVER | |||||
| OBJECT | |||||
| EQUINOX | |||||
| EPOCH2 |
1 Primary HDU, image extension, user-defined HDUs with same array
structure.
2 Deprecated.
| Production | Bibliographic | Commentary | Observation |
| DATE | AUTHOR | COMMENT | DATE-OBS |
| ORIGIN | REFERENC | HISTORY | TELESCOP |
| BLOCKED1 |
|
INSTRUME | |
| OBSERVER | |||
| OBJECT | |||
| EQUINOX | |||
| EPOCH1 |
1 Deprecated.
(This Appendix is not part of the NOST FITS standard; the material in it is based on the ANSI standard for ASCII (ANSI 1977) and is included here for informational purposes.)
In Table G.1, the first column is
the decimal
and the second column the hexadecimal value for the character
in the third column. The characters hexadecimal 20 to 7E (decimal 32
to 126) constitute the subset referred to in this document as
ASCII text.
| ASCII Control | ASCII Text | ||||||||||
| dec | hex | char | dec | hex | char | dec | hex | char | dec | hex | char |
| 0 | 00 | NUL | 32 | 20 | SP | 64 | 40 | @ |
96 | 60 | ` |
| 1 | 01 | SOH | 33 | 21 | ! |
65 | 41 | A | 97 | 61 | a |
| 2 | 02 | STX | 34 | 22 | " |
66 | 42 | B | 98 | 62 | b |
| 3 | 03 | ETX | 35 | 23 | # |
67 | 43 | C | 99 | 63 | c |
| 4 | 04 | EOT | 36 | 24 | $ |
68 | 44 | D | 100 | 64 | d |
| 5 | 05 | ENQ | 37 | 25 | % |
69 | 45 | E | 101 | 65 | e |
| 6 | 06 | ACK | 38 | 26 | & |
70 | 46 | F | 102 | 66 | f |
| 7 | 07 | BEL | 39 | 27 | ' |
71 | 47 | G | 103 | 67 | g |
| 8 | 08 | BS | 40 | 28 | ( |
72 | 48 | H | 104 | 68 | h |
| 9 | 09 | HT | 41 | 29 | ) |
73 | 49 | I | 105 | 69 | i |
| 10 | 0A | LF | 42 | 2A | * |
74 | 4A | J | 106 | 6A | j |
| 11 | 0B | VT | 43 | 2B | + |
75 | 4B | K | 107 | 6B | k |
| 12 | 0C | FF | 44 | 2C | , |
76 | 4C | L | 108 | 6C | l |
| 13 | 0D | CR | 45 | 2D | - |
77 | 4D | M | 109 | 6D | m |
| 14 | 0E | SO | 46 | 2E | . |
78 | 4E | N | 110 | 6E | n |
| 15 | 0F | SI | 47 | 2F | / |
79 | 4F | O | 111 | 6F | o |
| 16 | 10 | DLE | 48 | 30 | 0 | 80 | 50 | P | 112 | 70 | p |
| 17 | 11 | DC1 | 49 | 31 | 1 | 81 | 51 | Q | 113 | 71 | q |
| 18 | 12 | DC2 | 50 | 32 | 2 | 82 | 52 | R | 114 | 72 | r |
| 19 | 13 | DC3 | 51 | 33 | 3 | 83 | 53 | S | 115 | 73 | s |
| 20 | 14 | DC4 | 52 | 34 | 4 | 84 | 54 | T | 116 | 74 | t |
| 21 | 15 | NAK | 53 | 35 | 5 | 85 | 55 | U | 117 | 75 | u |
| 22 | 16 | SYN | 54 | 36 | 6 | 86 | 56 | V | 118 | 76 | v |
| 23 | 17 | ETB | 55 | 37 | 7 | 87 | 57 | W | 119 | 77 | w |
| 24 | 18 | CAN | 56 | 38 | 8 | 88 | 58 | X | 120 | 78 | x |
| 25 | 19 | EM | 57 | 39 | 9 | 89 | 59 | Y | 121 | 79 | y |
| 26 | 1A | SUB | 58 | 3A | : |
90 | 5A | Z | 122 | 7A | z |
| 27 | 1B | ESC | 59 | 3B | ; |
91 | 5B | [ |
123 | 7B | { |
| 28 | 1C | FS | 60 | 3C | < |
92 | 5C | \ |
124 | 7C | | |
| 29 | 1D | GS | 61 | 3D | = |
93 | 5D | ] |
125 | 7D | } |
| 30 | 1E | RS | 62 | 3E | > |
94 | 5E | ^ |
126 | 7E | ~ |
| 31 | 1F | US | 63 | 3F | ? |
95 | 5F | _ |
127 | 7F | DEL1 |
1 Not ASCII Text
(The material in this Appendix is not part of this standard; it is adapted from the IEEE-754 floating point standard (IEEE 1985) and provided for informational purposes. It is not intended to be a comprehensive description of the IEEE formats; readers should refer to the IEEE standard.) FITS recognizes all IEEE basic formats, including the special values.
| Format | ||||
| Parameter | Single | Double | ||
| Single | Extended | Double | Extended | |
| p | 24 | 53 | ||
| +127 |
|
+1023 |
|
|
| -126 |
|
-1022 |
|
|
| Exponent bias | +127 | unspecified | +1023 | unspecified |
| Exponent width in bits | 8 | 11 | ||
| Format width in bits | 32 | 64 | ||
A 32-bit single format number X is divided as shown in Fig. .1. The value v of X is inferred from its constituent fields thus
A 64-bit double format number X is divided as shown in Fig. .2. The value v of X is inferred from its constituent fields thus
Table .7 shows the types of IEEE floating point value,
whether regular or special, corresponding to all double and single
precision hexadecimal byte patterns.
| IEEE value | Double Precision | Single Precision |
| +0 | 0000000000000000 | 00000000 |
| denormalized | 0000000000000001 | 00000001 |
| to | to | |
| 000FFFFFFFFFFFFF | 007FFFFF | |
| positive underflow | 0010000000000000 | 00800000 |
| positive numbers | 0010000000000001 | 00800001 |
| to | to | |
| 7FEFFFFFFFFFFFFE | 7F7FFFFE | |
| positive overflow | 7FEFFFFFFFFFFFFF | 7F7FFFFF |
| 7FF0000000000000 | 7F800000 | |
| NaN1 | 7FF0000000000001 | 7F800001 |
| to | to | |
| 7FFFFFFFFFFFFFFF | 7FFFFFFF | |
| -0 | 8000000000000000 | 80000000 |
| negative | 8000000000000001 | 80000001 |
| denormalized | to | to |
| 800FFFFFFFFFFFFF | 807FFFFF | |
| negative underflow | 8010000000000000 | 80800000 |
| negative numbers | 8010000000000001 | 80800001 |
| to | to | |
| FFEFFFFFFFFFFFFE | FF7FFFFE | |
| negative overflow | FFEFFFFFFFFFFFFF | FF7FFFFF |
| FFF0000000000000 | FF800000 | |
| NaN1 | FFF0000000000001 | FF800001 |
| to | to | |
| FFFFFFFFFFFFFFFF | FFFFFFFF |
1 Certain values may be designated as quiet NaN (no diagnostic
when used) or signaling (produces diagnostic when used) by
particular implementations.
http://fits.gsfc.nasa.gov/xtension.html
or
ftp://nssdc.gsfc.nasa.gov/pub/fits/xtension.lis
| Code | Significance |
| D | Draft extension proposal for discussion by regional FITS committees. |
| L | Local FITS extension. |
| P | Proposed FITS extension approved by regional FITS committees |
| but not by IAU FITS Working Group. | |
| R | Reserved type name for which a full draft proposal has not been submitted. |
| S | Standard extension approved by IAU FITS Working Group and |
| endorsed by the IAU. |
Acronym |
Meaning |
NRAO |
National Radio Astronomy Observatory |
| AIPS | Astronomical Image Processing System |
| A/WWW | A/WWW Enterprises |
| HDF | Hierarchical Data Format |
| Document | Title | Date | Status |
| NOST 100-0.1 | FITS Standard | December, 1990 | Draft Standard |
| NOST 100-0.2 | FITS Implementation Standard | June, 1991 | Revised Draft Standard |
| NOST 100-0.3 | FITS Implementation Standard | December, 1991 | Revised Draft Standard |
| NOST 100-1.0 | FITS Definition Standard | March, 1993 | Proposed Standard |
| NOST 100-1.0 | FITS Definition Standard | June, 1993 | NOST Standard |
| NOST 100-1.1 | FITS Definition Standard | June, 1995 | Proposed Standard |
| NOST 100-1.1 | FITS Definition Standard | September, 1995 | NOST Standard |
| NOST 100-1.2 | FITS Definition Standard | April, 1998 | Draft Standard |
| NOST 100-2.0 | FITS Definition Standard | March, 1999 | NOST Standard |
Copyright ESO 2001