Common structure of records of NuSDaS data file is shown in the Table 1.
Offset | Length | Type | Description |
byte | byte | ||
0 | 4 | integer | n: record size |
4 | 4 | character | kind of record |
8 | 4 | integer | m: payload size |
12 | 4 | integer | creation date and time in time_t value |
16 | m - 8 | --- | PAYLOAD of record; see Table 2--6 for detail |
8 + m | n - m - 8 | --- | padding; should be ignored |
n - 4 | 4 | integer | n: record size |
Note that the `Type' is written in strange notation deliberately. They should NOT be directly interpreted as a type name of certain programming language, like C or Fortran.
Byte value should be interpreted as character code of ISO 646 IRV. Meaning of byte whose MSB is set is currently undefined.
Certain number (usually 4) of bytes represents signed integer value. Negative value is represented with complement of 2. Note that big endian ordering of bytes is always used in NuSDaS data file.
Certain number (usually 4) of bytes represents unsigned integer value.
Bits in 4 or 8 bytes are used to compose IEEE 754 floating point value.
Some field is array, and that is indicated in notation like C.
For example, a field noted character [2][n_lv][6]
is
equivalent to memory image of unsigned char [2][n_lv][6]
in C
or CHARACTER(LEN = 6), DIMENSION(N_LV, 2)
in Fortran.
However, one-dimensional array notation '[size]' for scaler character field
is omitted for simplicity.
Following tables describes various kinds of PAYLOAD part in Table 1.