\documentstyle[11pt]{article}

\setlength{\oddsidemargin}{0in}		%  1 inch (0 + 1) from left.
\setlength{\topmargin}{-0.5in}		%  1 inch (1.5 - 0.5) from top.
\setlength{\textwidth}{6.5in}		%  1 inch (8.5 - 1 - 6.5) from right.
\setlength{\textheight}{9in}		%  1 inch (11 - 1 - 9) from bottom.

\addtolength{\parskip}{0.5\baselineskip}

%  My own definitions.

\newcommand{\ea}{{\em et~al.}\ }
\newcommand{\ie}{{\em i.e.},\ }
\newcommand{\eg}{{\em e.g.},\ }

%  The environment centerpage centers text vertically on the page.  This is
%  useful within a titlepage environment.

\newenvironment{centerpage}{\mbox{} \protect\vspace*{\fill}}{
	\protect\vspace*{\fill} \mbox{} \protect\\ \mbox{}}

\begin{document}		
\bibliographystyle{plain}		% Define bibliography style.

\begin{titlepage}
\hrule
{\noindent\bf CORONAL DIAGNOSTIC SPECTROMETER}\\
\vspace{-0.7\baselineskip}\\
{\noindent\Huge\bf SoHO}
\vspace{2mm}
\hrule
\vspace{3mm}
\centerline{\bf CDS {\it Supplemental\,} SOFTWARE NOTE}
\centerline{\it To Be Installed in Software Note \#28}
\vspace{3mm}
\hrule
\noindent Version 2 \hfill 29 December 1995
\vspace{2mm}
\hrule

\begin{centerpage}

\begin{center}
{\Large\bf SFDU REGISTRATION OF THE SOHO/CDS\\
FITS FILES WITH THE CSSDS}\\
\mbox{}\\
Donald G. Luttermoser\\
Applied Research Corporation\\
NASA/Goddard Space Flight Center\\
Code 682\\
Greenbelt, MD 20771\\
\mbox{}\\
lutter@orpheus.nascom.nasa.gov
\end{center}

\end{centerpage}

\end{titlepage}

% *****************************************************************************

\section{Introduction}
 
In 1992, the SOHO Scientific Operations Working Group (SOWG) selected two 
standards for storing scientific data:  the Standard Formatted Data Unit 
(SFDU) and the Flexible Image Transport System (FITS).  FITS is a standard for 
formatting data into files in a computer--independent, self--describing 
fashion.  Meanwhile, SFDU is a standard for documenting the contents and 
format of a data file, and for outlining the interdependencies of collections 
of files.  A full description of the SFDU protocol can be found in the 
Consultative Committee for Space Data Systems' (CCSDS) Green Book ({\sf CCSDS 
621.0-G-1}), May 1992 entitled {\it Standard Formatted Data Units --- A 
Tutorial}, and the Blue Book ({\sf CCSDS 620.0-B-2}), May 1992 entitled {\it 
Standard Formatted Data Units --- Structure and Construction Rules}.
 
SFDU works by associating a 20--byte label with each file which serves as a
reference to documentation about the file format.  This label can be prepended
to the file, in which case it is called an {\em attached\,} SFDU label.  
Otherwise, it can be contained in a separate file on the archive medium, with
a reference to the file it applies to, which is a {\em detached\,} label.  In
addition, each file can be associated with one or more additional files which
describes its contents.  Meanwhile, the FITS standard not only specifies how 
data is organized within a FITS file, but also how a FITS file is stored on 
disk or tape.  FITS files, with their own {\em attached\,} labels, makes the 
\underline{attached} SFDU label incompatible with the FITS format.  As such, 
this project uses the {\bf detached} SFDU header in a separate file, which 
will always be the first file on an archive tape or CD.

When writing data to a disk medium, there is generally a standard for how the
files are organized and identified.  For example, the ISO-9660 standard is the
recommended way to write CDROMs, and these disks can then be easily read on
just about all computer platforms.  Performing a directory of the files on the
disk, and extracting individual files are simple tasks.  However, there is
currently no comparable standard for writing tapes that provide the same
facility of use.  Although there is an ANSI standard for writing labeled
tapes, the computer vendors such as Digital extend this standard for their own
use, and Unix computers generally don't follow this standard at all, so that it
is not a trivial matter to use a labeled tape written on one computer on
another.

On the other hand, tapes written using the FITS specification can be read on
any computer platform.  This was, in fact, the primary goal of FITS.  However,
FITS tapes are fairly primitive, with each file separated from the next by only
a filemark, and with no labels giving the names of the files.  The contents of
a FITS tape can only be determined by opening up each FITS file on the tape,
and extracting its header.  This is not only clumsy, but can take quite a bit
of time to work through a modern tape cartridge with several gigabytes of
storage.

There are then two goals for developing a tape format for SOHO data:
First of all, the tape must be written to associate SFDU labels and descriptors
with the data files, and at the same time allow the tape to be read in with
standard FITS readers.  Second, there needs to be a way of documenting the
contents of the tape at the front of the tape, so that the specific data
desired can be more rapidly retrieved.  This manual describes a protocol that 
has been developed that combines these two goals into one, so that satisfying 
the first also satisfies the other.

% *****************************************************************************

%\newpage         % <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
\section{Standard Formatted Data Unit}

Interests by the space physics and solar science communities in {\em Standard 
Formatted Data Units\,} (SFDUs) has been greatly increased by the adoption of 
SFDUs as a standard by the GGS/ISTP (Global Geospace Science / International 
Solar Terrestrial Physics) project and by the pending adoption of SFDUs as a 
standard for NASA space science archiving generally by the National Space 
Science Data Center (NSSDC).
 
The basic SFDU building block is comprised of a {\sf LABEL} field and a {\sf 
VALUE} field, and is referred to as a Label--Value--Object (LVO).  This 
structure is the fundamental structure element used to build SFDUs.  The LVOs 
themselves are made up of a sequence of octets.  SFDU data products are 
constructed from the basic LVO in one of two ways.  If the {\sf VALUE} field
of the LVO contains purely user data, it is termed a {\it Simple LVO}.  If,
on the other hand, the {\sf VALUE} field of the LVO contains purely LVOs, it
is termed a {\it Compound LVO}.
 
SFDU products are always packaged in a special kind of Compound LVO called the
{\it Exchange Data Unit\,} (EDU).  Only EDUs may be interchanged between
systems.  Special types of Compound LVOs also can be used to package together
application data (the {\it Application Data Unit\,} (ADU)) and data description
data (the {\it Description Data Unit\,} (DDU)).

SFDUs work by associating a 20--byte LVO label with each file that serves as a 
reference to documentation about the file format.  These types of labels will
be referred to as {\it standard\,} SFDU labels from this point forward.  The
following represents a standard SFDU label:\\

%\newpage         % <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
\centerline{CCSD3ZF0000100000001}
\noindent which has the following meaning:

\begin{tabular}{|cccc|c|c|c|c|cccc|cccccccc|}
\hline
C & C & S & D & 3 & Z & F & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1\\
\hline
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 
18 & 19 & 20 \\
\hline
\end{tabular}
 
\begin{tabular}{ll}
Bytes 1--4, 9--12:  &  ADID (Authority [CAID] and Descriptive Identifier 
                       [DDID]) (= CCSD0001) \\
\hspace*{5mm}Bytes 1--4:  &  CAID (= CCSD, can also be NSSD) \\
\hspace*{5mm}Bytes 9--12: &  DDID (= 0001) \\
                    &    \\
Byte 5:             &  Version of SFDU label (= 3) \\
                    &  \hspace*{5mm}1 = Length in ASCII \\
                    &  \hspace*{5mm}2 = Length in Binary Integer \\
                    &  \hspace*{5mm}3 = Other Delimitation Technique \\
                    &    \\
Byte 6:             &  SFDU Class Identification (=Z) \\
                    &  \hspace*{5mm}C = SFDU Identifier Service $\dagger$ \\
                    &  \hspace*{5mm}D = Data Description Record $\dagger$ \\
                    &  \hspace*{5mm}E = Data Element Dictionary $\dagger$ \\
                    &  \hspace*{5mm}F = Description Data Unit (DDU) $\dagger$\\
                    &    \\
                    &  \hspace*{5mm}I = (Primary) Data (of Interest) 
                       $\ddagger$ \\
                    &  \hspace*{5mm}K = Instance Identifier/Attributes 
                       $\ddagger$ \\
                    &  \hspace*{5mm}R = SFDU Reference Service $\ddagger$ \\
                    &  \hspace*{5mm}S = Supplementary Data $\ddagger$ \\
                    &  \hspace*{5mm}V = Volume Preparation Data $\ddagger$ \\
                    &    \\
                    &  \hspace*{5mm}U = Related, Labeled Data Objects follow 
                       $\star$ \\
                    &  \hspace*{5mm}Z = ``I'm an SFDU''; Labeled Object follows
                       $\star$ \\
                    &    \\
Byte 7:             &  Delimitation Type (= F) \\
                    &  \hspace*{5mm}0 = Spare (in Version 1 \& 2, the rest are
                       Version 3)\\
                    &  \hspace*{5mm}S = Marker \\
                    &  \hspace*{5mm}E = Sequential EOF(s) \\
                    &  \hspace*{5mm}C = Consecutive EOF(s) \\
                    &  \hspace*{5mm}F = System EOF \\
                    &    \\
Byte 8:             &  Spare (= 0) \\
                    &    \\
Bytes 13--20:       &  Description (= 00000001) \\
                    &  \hspace*{5mm}Length of Object to follow (Version 1 \& 2 
                       Label) \\
                    &  \hspace*{5mm}Marker (Version 3, Type S) \\
                    &  \hspace*{5mm}EOF Count (Version 3, Type E \& C) \\
                    &  \hspace*{5mm}00000001 (Version 3, Type F) \\
                    &    
\end{tabular}
Under the {\it SFDU Class Identification\,} (Byte 6) in the above list, \\
\indent $\dagger$  = Registered Metadata Objects, $\ddagger$ = Data Objects,
$\star$    = SFDU Object Identifiers 

Beside these standard 20--byte labels, one can have Compound LVOs containing
{\it Parameter Value Language\,} (PVL).  PVL lines resemble FITS headers, and
as such, the FITS headers are used to construct PVL groups within the SFDU
header.  All PVL lines in the SFDU end with a ``;'' marker.  Comments can also
be included in the SFDU and take the form of comments in the C programming 
language (\ie text lines bracketed by ``/*'' and ``*/'' delimiters).  All 
lines can extend out to 80 characters (\ie bytes) \underline{including} the 
line ending {\sf $<$newline$>$} character.

\subsection{Sample SFDU}

The following is an example of an SFDU header file for two FITS file written
to tape.  Imbedded comments help explain each entry.

\begin{verbatim}
CCSD3ZF0000100000001NSSD3VS00227MRK**001
/*                                                                           */
/* This data file is a "detached" Standard Formatted Data Unit (SFDU) file   */
/* referencing FITS files loaded to this archive tape.  It contains filename */
/* information and the primary FITS header for each file.  The FITS files    */
/* contain archival data from the Coronal Diagnostic Spectrometer (CDS)      */
/* onboard SOHO.  For further information concerning the tape archiving      */
/* procedure and SFDUs, see CDS Software Note #28.                           */
/*                                                                           */
/* In the VOL_INFORMATION block (NSSD3VS00227), the keywords have the        */
/* following meaning:                                                        */
/*     VOL_CREATION_TIME: The date and time the archive volume (i.e.,        */
/*                         tape/CD) was made -- CCSDS format.                */
/*     VOL_BYTES_RECORD:  The number of bytes in each record for each file   */
/*                         on the tape/CD (= 2880*n, 1<=n<=10).              */
/*     TOTAL_VOL_BYTES:   Total number of bytes (including this SFDU header  */
/*                         file) on the tape/CD (i.e., FITS + SFDU sizes).   */
/*     TOTAL_FITS_FILES:  Total number of FITS files on the tape/CD.         */
/*     TOTAL_FITS_BYTES:  Total number of bytes associated with the FITS     */
/*                         files (i.e., TOTAL_VOL_BYTES - SFDU size).        */
/*     TOTAL_VMS_BLOCKS:  Total number of VMS blocks (1 block = 512 bytes)   */
/*                         associated with the FITS files. This number may   */
/*                         be useful for those working in a VMS environment. */
/*                                                                           */
/* Each file marker (CCSD3US00009) contains 2 submarkers:                    */
/*    CCSD3RS00003:  Replacement reference service -- file names associated  */
/*                    with the SFDU, where                                   */
/*                    CCSDS1 = File name (short version for PC/DOS machines) */
/*                              which follows the CCSDS1 specification,      */
/*                    CCSDS2 = File name (long version for VMS, Unix, and    */
/*                              Mac machines) which follows the CCSDS2       */
/*                              specification,                               */
/*                    CCSDS3 = Integer giving the position of the file on    */
/*                              the tape (note that the detached SFDU file   */
/*                              is designated as file #1 on the tape and the */
/*                              first FITS file is file #2 on the tape).     */
/*                              This follows the CCSDS3 specification.       */
/*                   Each file will logically be include at this spot in the */
/*                    SFDU and will logically include a LABEL (NSSD3IF00229) */
/*                    which identifies the file as a FITS file following the */
/*                    SOHO/CDS archive conventions.                          */
/*    NSSD3KS00228:  The FITS header associated with the file, which has     */
/*                    been placed in a PVL object labelled as FITS_HEADER.   */
/*                                                                           */

BEGIN_OBJECT = TAPE_INFORMATION;
     TAPE_CREATION_TIME = '1995-05-22T23:46:40.808Z';
     TAPE_BYTES_RECORD = 2880;
     TOTAL_TAPE_BYTES = 749584;
     TOTAL_FITS_FILES = 2;
     TOTAL_FITS_BYTES = 481744;
     TOTAL_VMS_BLOCKS = 941;
END_OBJECT;

CCSD$$MARKERMRK**001CCSD3US00009MRK**002CCSD3RS00003MRK**003

REFERENCETYPE = CCSDS0;
LABEL = NSSD3IF0022900000001;
REFERENCE = ( "CCSDS1 = CDS_1216.FIT"
            , "CCSDS2 = cds_window10_19940915_1216.fits"
            , "CCSDS3 = 2"
            );

CCSD$$MARKERMRK**003NSSD3KS00228MRK**004
BEGIN_OBJECT = FITS_HEADER;
     SIMPLE   = T;                /* Written by IDL: 28-Mar-1995 15:09:33.00 */
     BITPIX   = 32;                              /* Integer*4 (long integer) */
     NAXIS    = 2;
     NAXIS1   = 60;
     NAXIS2   = 120;
     DATE     = '28/03/95';
     SFDUADID = 'NSSD0229 ';                                    /* SFDU ADID */
     FILENAME = 'cds_window10_19940915_1216';
     ORIGIN   = 'SOHO-EOF';              /* Institute where file was written */
     TELESCOP = 'SOHO ';                   /* Solar Heliospheric Observatory */
     INSTRUME = 'CDS ';                   /* Coronal Diagnostic Spectrometer */
     DETECTOR = 'NIS ';          /* Normal or Grazing Incidence Spectrometer */
     STUDY_ID = 4;                                               /* Study ID */
     PROG_NUM = 5;                                          /* Study counter */
     SEQ_IND  = 0;                          /* Raster index within the study */
     RAS_ID   = -1;                                             /* Raster ID */
     DATE_OBS = '1994-09-15T12:16:53.023Z';/* Start date/time of observation */
     DATE_END = '1994-09-15T12:22:30.882Z';  /* End date/time of observation */
     OBT_TIME = 1158322642.023;                        /* Onboard start time */
     OBT_END  = 1158322979.882;                          /* Onboard end time */
     OBS_PROG = 'EMSQS ';         /* Emission Measure Study of the Quiet Sun */
     STUDYVAR = -1;                                 /* Study variation index */
     CATEGORY = 'Science ';                                /* Study category */
     SCI_OBJ  = ' ';                                 /* Scientific objective */
     SCI_SPEC = ' ';                   /* More specific scientific objective */
     OBJECT   = ' ';                     /* Type of object or event observed */
     OBJ_ID   = ' ';                                            /* Object ID */
     TRACKING = F;                                 /* Solar feature tracking */
     PROG_ID  = -1;                                /* Multi-study program ID */
     PROGNAME = ' ';                             /* Multi-study program name */
     CMP_NO   = -1;                               /* SOHO campaign ID number */
     CMP_NAME = ' ';                                        /* Campaign name */
     LL_ID    = -1;                                   /* Line list ID number */
     LL_DESC  = ' ';                                /* Line list description */
     XCEN     = 42.8189;         /* Preliminary center in X of field-of-view */
     YCEN     = -3151.40;        /* Preliminary center in Y of field-of-view */
     ANGLE    = 0.00000;         /* Preliminary orientation of field-of-view */
     IXWIDTH  = 4.00000;          /* Preliminary width in X of field-of-view */
     IYWIDTH  = 226.000;          /* Preliminary width in Y of field-of-view */
     COMP_ID  = 6;                      /* Telemetry data compression scheme */
     COMP_OPT = 0;                      /* Telemetry data compression option */
     DW_ID    = 144;                       /* Data extraction window list ID */
     SER_ID   = 144;                            /* On-board sequence load ID */
     EXPCOUNT = 60;                     /* Number of exposures in the raster */
     EXPTIME  = 2.00000;                         /* Exposure time in seconds */
     NX       = 60;                        /* Number of steps in X direction */
     NY       = 1;                         /* Number of steps in Y direction */
     XSTEP    = 4.06400;               /* Step size in arcsec in X direction */
     YSTEP    = 0.00000;               /* Step size in arcsec in Y direction */
     OPSLBITS = '1011 ';             /* OPS L status bits at start of raster */
     OPS_L    = 2080;                   /* OPS L position at start of raster */
     OPSRBITS = '1010 ';             /* OPS R status bits at start of raster */
     OPS_R    = 2304;                   /* OPS R position at start of raster */
     SLIT_POS = 0;                       /* Slit position at start of raster */
     SLIT_NUM = 5;                                            /* Slit number */
     MIR_POS  = 68;                    /* Mirror position at start of raster */
     NWINDOWS = 11;                                /* Number of data windows */
     EV_ENAB  = F;                              /* Event recognition enabled */
     COMP_ERR = F;                          /* Data compression scheme error */
     VDS_ORI  = F;                 /* VDS telemetry data oriented by columns */
     VDS_ACC  = F;                                    /* VDS accumulate mode */
     CTYPE1   = 'SOLAR_X ';                 /* Solar X (cartesian west) axis */
     CTYPE2   = 'SOLAR_Y ';                /* Solar Y (cartesian north) axis */
     CUNIT1   = 'ARCSEC ';                  /* Arcseconds from center of sun */
     CUNIT2   = 'ARCSEC ';                  /* Arcseconds from center of sun */
     CRPIX1   = 1;                      /* Reference pixel along X dimension */
     CRPIX2   = 1;                      /* Reference pixel along Y dimension */
     CRVAL1   = 42.8189;             /* Reference position along X dimension */
     CRVAL2   = -3382.40;            /* Reference position along Y dimension */
     CDELT1   = 1.01600;                     /* Increments along X dimension */
     CDELT2   = 1.01600;                     /* Increments along Y dimension */
END_OBJECT;
CCSD$$MARKERMRK**004CCSD$$MARKERMRK**002
CCSD3US00009MRK**005NSSD3RS00229MRK**006
REFERENCETYPE = CCSDS0;
LABEL = NSSD3IF0022900000001;
REFERENCE = ( "CCSDS1 = CDS_1216.FIT"
            , "CCSDS2 = cds_window11_19940915_1216.fits"
            , "CCSDS3 = 3"
            );
CCSD$$MARKERMRK**006NSSD3KS00228MRK**007
BEGIN_OBJECT = FITS_HEADER;
     SIMPLE   = T;                /* Written by IDL: 28-Mar-1995 15:09:33.00 */
     BITPIX   = 32;                              /* Integer*4 (long integer) */
     NAXIS    = 2;
     NAXIS1   = 60;
     NAXIS2   = 120;
     DATE     = '28/03/95';
     SFDUADID = 'NSSD0229 ';                                    /* SFDU ADID */
     FILENAME = 'cds_window11_19940915_1216';
     ORIGIN   = 'SOHO-EOF';              /* Institute where file was written */
     TELESCOP = 'SOHO ';                   /* Solar Heliospheric Observatory */
     INSTRUME = 'CDS ';                   /* Coronal Diagnostic Spectrometer */
     DETECTOR = 'NIS ';          /* Normal or Grazing Incidence Spectrometer */
     STUDY_ID = 4;                                               /* Study ID */
     PROG_NUM = 5;                                          /* Study counter */
     SEQ_IND  = 0;                          /* Raster index within the study */
     RAS_ID   = -1;                                             /* Raster ID */
     DATE_OBS = '1994-09-15T12:16:53.023Z';/* Start date/time of observation */
     DATE_END = '1994-09-15T12:22:30.882Z';  /* End date/time of observation */
     OBT_TIME = 1158322642.023;                        /* Onboard start time */
     OBT_END  = 1158322979.882;                          /* Onboard end time */
     OBS_PROG = 'EMSQS ';         /* Emission Measure Study of the Quiet Sun */
     STUDYVAR = -1;                                 /* Study variation index */
     CATEGORY = 'Science ';                                /* Study category */
     SCI_OBJ  = ' ';                                 /* Scientific objective */
     SCI_SPEC = ' ';                   /* More specific scientific objective */
     OBJECT   = ' ';                     /* Type of object or event observed */
     OBJ_ID   = ' ';                                            /* Object ID */
     TRACKING = F;                                 /* Solar feature tracking */
     PROG_ID  = -1;                                /* Multi-study program ID */
     PROGNAME = ' ';                             /* Multi-study program name */
     CMP_NO   = -1;                               /* SOHO campaign ID number */
     CMP_NAME = ' ';                                        /* Campaign name */
     LL_ID    = -1;                                   /* Line list ID number */
     LL_DESC  = ' ';                                /* Line list description */
     XCEN     = 42.8189;         /* Preliminary center in X of field-of-view */
     YCEN     = -3151.40;        /* Preliminary center in Y of field-of-view */
     ANGLE    = 0.00000;         /* Preliminary orientation of field-of-view */
     IXWIDTH  = 4.00000;          /* Preliminary width in X of field-of-view */
     IYWIDTH  = 226.000;          /* Preliminary width in Y of field-of-view */
     COMP_ID  = 6;                      /* Telemetry data compression scheme */
     COMP_OPT = 0;                      /* Telemetry data compression option */
     DW_ID    = 144;                       /* Data extraction window list ID */
     SER_ID   = 144;                            /* On-board sequence load ID */
     EXPCOUNT = 60;                     /* Number of exposures in the raster */
     EXPTIME  = 2.00000;                         /* Exposure time in seconds */
     NX       = 60;                        /* Number of steps in X direction */
     NY       = 1;                         /* Number of steps in Y direction */
     XSTEP    = 4.06400;               /* Step size in arcsec in X direction */
     YSTEP    = 0.00000;               /* Step size in arcsec in Y direction */
     OPSLBITS = '1011 ';             /* OPS L status bits at start of raster */
     OPS_L    = 2080;                   /* OPS L position at start of raster */
     OPSRBITS = '1010 ';             /* OPS R status bits at start of raster */
     OPS_R    = 2304;                   /* OPS R position at start of raster */
     SLIT_POS = 0;                       /* Slit position at start of raster */
     SLIT_NUM = 5;                                            /* Slit number */
     MIR_POS  = 68;                    /* Mirror position at start of raster */
     NWINDOWS = 11;                                /* Number of data windows */
     EV_ENAB  = F;                              /* Event recognition enabled */
     COMP_ERR = F;                          /* Data compression scheme error */
     VDS_ORI  = F;                 /* VDS telemetry data oriented by columns */
     VDS_ACC  = F;                                    /* VDS accumulate mode */
     CTYPE1   = 'SOLAR_X ';                 /* Solar X (cartesian west) axis */
     CTYPE2   = 'SOLAR_Y ';                /* Solar Y (cartesian north) axis */
     CUNIT1   = 'ARCSEC ';                  /* Arcseconds from center of sun */
     CUNIT2   = 'ARCSEC ';                  /* Arcseconds from center of sun */
     CRPIX1   = 1;                      /* Reference pixel along X dimension */
     CRPIX2   = 1;                      /* Reference pixel along Y dimension */
     CRVAL1   = 42.8189;             /* Reference position along X dimension */
     CRVAL2   = -3382.40;            /* Reference position along Y dimension */
     CDELT1   = 1.01600;                     /* Increments along X dimension */
     CDELT2   = 1.01600;                     /* Increments along Y dimension */
END_OBJECT;
CCSD$$MARKERMRK**007CCSD$$MARKERMRK**005
\end{verbatim}

\subsection{SFDU Registration with the Consultative Committee for Space Data 
Systems (CCSDS)}

The archiving procedures that have been developed for CDS are written in IDL.
In particular, the SFDU for a set of FITS files is generated with the {\sf 
sfdu\_make.pro} procedure.  This procedure makes use of the SFDU registration
files in the {\it /cs/data/sfdu\,} directory.  The registration with the CCSDS 
(the controlling agency) took place in early December 1995.  These files are 
described as follows:
%
\begin{center}
\begin{tabular}{lll}
\hspace*{6mm}{\bf File Name} & {\bf ADIDNAME} & {\bf Description} \\
\hline 
sfdu\_vol\_dict.reg0:        & {\bf NSSD0227} & Volume keyword dictionary. \\
sfdu\_cds\_cat\_obj.reg0:    & {\bf NSSD0228} & Describes how the SFDU/PVL 
                                                relates \\
                             &                & to the FITS headers. \\
sfdu\_cds\_fits\_dict.reg0:  & {\bf NSSD0229} & SOHO/CDS FITS header 
                                                dictionary. \\
sfdu\_cds\_desc.reg0:        & {\bf NSSD0238} & SOHO/CDS instrument 
                                                description. 
\end{tabular}
\end{center}
%
Note that the ``0'' in ``.reg0'' indicates that these are the original 
registration files.  Future changes to these registration files will have 
filename extensions of ``.reg1,'' ``.reg2,'' etc.

The SFDU detached header that will appear as the first file on the tape or CD
has various markers in it that point to the registration files listed above.
Figure 1 shows a flow chart of the SFDU template used for the SOHO/CDS.  The 
first line of the SFDU header has a ``Z'' class marker indicating that the file
is an SFDU and that a Labeled Object follows.  Imbedded in this marker (\ie 
the SFDU) is an ``NSSD'' {\it ADID\,} marker containing the Volume 
Preparation Data (``V'' class) defined by the ``0227'' object description 
(\ie this marker points to the {\bf NSSD0227} registration packet).  This
volume data is written in PVL.  Following this initial volume data, which 
contains information concerning the tape or CD, a series of markers follow,
containing the SFDU Reference Service.  This reference service contains a 
{\sf LABEL} pointing to the {\bf NSSD0229} registration packet defining the 
FITS keywords --- note that the {\sf LABEL} on the sample SFDU above has 
NSSD3IF0022900000001, where ``I'' (the 6th character) indicates the file it 
is associated with is the primary data of interest and the ``F'' (the 7th 
character) indicates that the file ends with a tape (or CD) {\it eof\,}
marker.  The reference service also contains the name associated with the file
(\ie the DOS version CCSDS1 protocol, the Unix/VMS/MacOS version CCSDS2 
protocol, and the file's position on the tape [= CCSDS3 protocol]).  Attached
to this reference service is a Instance Identifier/Attributes (``K'' class)
which points to the {\bf NSSD0228} registration packet.  This area of the SFDU
contains all of the keyword values and definitions of the FITS file headers,
listed separately from the files in this SFDU header for the user's 
convenience.  A closing marker follow each Reference Service entries.

% ############  Figure 1:
\protect\begin{figure}
  \vspace{8in}
  \special{psfile=template.eps  angle=180  hoffset=430  voffset=620  
           hscale=80  vscale=80}
  \caption{The SOHO/CDS SFDU product template flow chart as described in the 
           text.}
\protect\end{figure}

The SFDU header file on the tape references the above mentioned registration
files.  In turn, these description and dictionary files point to each other 
depending on whether a DDRID (Data Description Record ID), a DEDID (Data 
Entity Dictionary ID), and/or a SUPID (Supplementary Metadata Data) entry is 
embedded (see Figure 2).  For instance, the SUPID entry NSSD0238 points to a 
file that contains a summary of the SOHO mission description, and {\it in 
particular\,} the CDS instrument description.  {\bf Note that each instrument 
will have its own SUPID in its respective SFDU.}  Additional DDRID entries not 
shown in Figure 2 include NSSD0006, which indicates that the data is in FITS 
format, and CCSD0006, which indicates that the Parameter Value Language (PVL) 
formalism is being used. 

% ############  Figure 2:
\protect\begin{figure}
  \vspace{8in}
  \special{psfile=register.eps  angle=180  hoffset=470  voffset=620  
           hscale=80  vscale=80}
  \caption{The relationship between the SOHO/CDS SFDU registration packets.}
\protect\end{figure}

Each of the FITS files created from the CDS software will have an SFDUADID 
keyword in the header.  For \underline{all} CDS data, this SFDU ADID will be
\begin{center}
\framebox{{\sf SFDUADID = NSSD0229}.}
\end{center}

\subsection{Revising the SFDU Registration Forms}

Should any new descriptions or FITS keyword definitions need to be added the 
SFDU, only those individuals who have been designated on the previous SFDU 
registration (or update) forms (\ie files) as a {\sf REVISOR} can make 
revisions.  Currently, only Drs.\ Art Poland, Richard Harrison, Bill Thompson, 
Dave Pike, and Don Luttermoser are designated as {\it revisors}.  The original 
SFDU registration files have a {\it .reg0\,} suffix attached to the file name.
To submit a revision, say the first revision from the original registration 
form, copy the four {\it *.reg0\,} files to files ending with {\it .reg1}:
%
\begin{center}
\begin{tabular}{lll}
mv & sfdu\_cds\_cat\_obj.reg0   & sfdu\_cds\_cat\_obj.reg1 \\
mv & sfdu\_cds\_desc.reg0       & sfdu\_cds\_desc.reg1 \\
mv & sfdu\_cds\_fits\_dict.reg0 & sfdu\_cds\_fits\_dict.reg1 \\
mv & sfdu\_vol\_dict.reg0       & sfdu\_vol\_dict.reg1 
\end{tabular}
\end{center}
%
Then, one can make modifications to the {\it .reg1\,} files and resubmit them.
The old files should \underline{not} be deleted since they may be needed for
reference in the future.  In this way, it will be easy to keep track of the 
various revisions.

When submitting a revision to the SFDU registration files, one must be sure 
that the unique SOHO/CDS {\sf ADIDNAME} is in the file.  Before submitting an
updated revision, be sure to modify the {\sf REVISOR} group in the 
registration/update form if you wish to add or remove the names of those 
people who can make future revisions.  Also note that the person who is making 
the revisions to the SFDU registration form must include his name in the 
{\sf REGISTRANT} group section.  Once the modifications to the 
registration/update form are complete, email the form to John Garrett of the 
NSSDC at
\begin{center}
caoprod@nssdca.gsfc.nasa.gov
\end{center}
and he will reply when the revision has been recorded.

\end{document}
