Objective: MC approval of Spreadsheet/Field Objects and associated keywords Date: 2003-01-22 Background ========== Several data providers have identified a need or desire to store sparse matrix ASCII data in a format similar to a table but in which the "column" and "row" widths are not fixed length. The overhead associated with storing these data in PDS TABLE objects, for example, can be high. The SPREADSHEET object provides an efficient, delimited ASCII alternative at a small cost in human readability. Current Urgency --------------- The Cassini mission (MIMI team) adopted the SPREADSHEET/FIELD approach after the initial round of proposal and discussion. They are now on the verge of generating data products and require a solution acceptable for archiving purposes. Cassini Radio Science has already written 10 DVD-R volumes of Cruise data, partly in SPREADSHEET/FIELD format with the understanding those volumes will be regenerated once the final SPREADSHEET/FIELD standard has been approved. In order to address this current need a standard for the SPREADSHEET/FIELD object pair is proposed which is the simplest to describe and implement, accommodates the design of the MIMI data products, and is fairly tightly constrained. The tight constraints are intended to ensure that discussion about and development of this object can continue with very little chance that any implementation using the proposed design, including the MIMI products, will be invalidated. Recommendations =============== The data engineering and technical group recommend the following actions: 1. The proposed Standard Reference section A.xx defining the SPREADSHEET object should be approved and added to the PDS-SR at the earliest opportunity. 2. The proposed Standard Reference section A.xx defining the FIELD object should be approved and added to the PDS-SR at the earliest opportunity. 3. The proposed modifications to the existing Standards Reference sections 3.1, 3.2, 3.8, 4.0, and 10.2.3 and the PDS Data Dictionary should be approved and implemented as soon as possible. 4. The modifications to CN software listed in the impact statement should be scheduled for implementation as outlined. ======================================================================= PDS Standards Reference Changes Requested to Accommodate the SPREADSHEET Object ======================================================================= 1) In section 3.1, paragraph 1 sentence 2 would be modified to include the FIELD object in the discussion of the usage of ITEMS and ITEM_BYTES. The elements ITEMS and ITEM_BYTES are used to subdivide a single COLUMN, FIELD, BIT_COLUMN or HISTOGRAM into a regular vector containing as many elements as specified by the value of ITEMS. 2) In section 3.2, add the following rows to table 3.1 Data Object Data Elements Notes FIELD DATA_TYPE if populated (no items) FIELD_NUMBER BYTES maximum FIELD bytes FIELD DATA_TYPE if populated (with items) FIELD_NUMBER BYTES maximum bytes in FIELD ITEMS ITEM_BYTES maximum item bytes 3) In section 3.8, the use of FORMAT keywords needs to be revised. Paragraph 1, itemized list should read: Data format specifications provided in the FORMAT element serve two purposes: 1. In an ASCII TABLE data file or SPREADSHEET file, they provide a format which can be used in scanning the ASCII record for individual fields; and 2. In a binary data file, they provide a format that can be used to display the data values. 4) Chapter 4, paragraph 3, the list of primary data objects must be amended to include the SPREADSHEET object Primary Data Object A primary data object is a set of results from a scientific observation. Primary data objects are usually described using one of these PDS object structures: TABLE SPREADSHEET IMAGE SERIES SPECTRUM 5) In section 10.2.3 (reserved file extensions), table 10.1 should be modified to include CSV as an extension reserved for SPREADSHEET files. Note that files using the CSV extension are not necessarily in comma-separated value format. Extension Description (use with files of this type) ASC Plain ASCII documentation files BC SPICE Binary format CK (pointing) files BSP SPICE Binary format SPK (ephemeris) files CAT Catalog object(s) CSV SPREADSHEET objects 6) Data Dictionary definitions that need to be modified. In the case of ITEMS, the existing definition suggests that items are objects, which is corrected here, in addition to broadening the coverage to fields. In the case of MISSING_CONSTANT, the definition has been improved as a result of the SPREADSHEET discussion; but there is no direct impact. a) BYTES The bytes element indicates the number of bytes allocated for a particular data representation. When BYTES describes an object with variable length (e.g., FIELD), BYTES gives the maximum number of bytes allowed. b) DATA_TYPE The data_type element supplies the internal representation and/or mathematical properties of a value being stored. When DATA_TYPE is used within a FIELD object definition, its value applies only when the field is populated. Note: In the PDS, users may find a bit-level description of each data type in the Standards Reference document. c) ITEM_BYTES The item_bytes data element represents the size in bytes of an item within a data object such as a column. Notes: (1) In the PDS, the term item_bytes is distinguished from the term bytes because both elements may appear in a single data object definition (e.g., a label) and refer to different parts of the data object. In an object such as a column, bytes represents the size of the column. Should the column be split into equal items, item_bytes would represent the size of each item. (2) In a field object, item_bytes specifies the maximum size of each item. d) ITEMS The items element defines the number of logically identical parts into which a single object, such as a column or field, has been divided. See also: repetitions. Note: In the PDS, the data element ITEMS is used for subdivision of a single object, such as a column or a field. REPETITIONS is used for multiple occurrences of objects, such as in a container. For a fuller description of the use of these data elements, please refer to the Standards Reference. e) MISSING_CONSTANT The missing_constant element supplies the value used to indicate that no data were available. Note: The MISSING_CONSTANT element should appear only within an explicit object definition -- i.e. anywhere between an 'OBJECT =' and an 'END_OBJECT'. MISSING_CONSTANT assumes the data type of its parent object. f) RECORD_BYTES The record_bytes element indicates the number of bytes in a physical file record, including record terminators and separators. When RECORD_BYTES describes a file with RECORD_TYPE = STREAM (e.g. a SPREADSHEET), its value is set to the length of the longest record in the file. Note: In the PDS, the use of record_bytes, along with other file-related data elements is fully described in the Standards Reference. g) ROW_BYTES The row_bytes element represents the maximum number of bytes in each data object row. Notes: (1) In the PDS, in object definitions for tables, the value of row_bytes includes terminators, separators, and delimiters unless row padding is used. For padding at the beginning of a row, the keyword row_prefix_bytes may be used. For padding at the end of a row, row_suffix_bytes may be used. (2) In object definitions for spreadsheets, the value of row_bytes is the maximum number of bytes possible in the row if each field uses its maximum allocation of bytes and including all delimiters. (3) See the Standards Reference, TABLE and SPREADSHEET objects for more information. 7) New terms that need to be added to the PDS Data Dictionary in order to support the SPREADSHEET and FIELD objects. a) FIELDS INTEGER The FIELDS element is the number of FIELD objects within the enclosing SPREADSHEET object. b) FIELD_DELIMITER CHARACTER(20) The FIELD_DELIMITER indicates the single character used to separate variable width FIELDS in a SPREADSHEET object. The field delimiter must be chosen from a predefined set of allowed values (COMMA, SEMICOLON, TAB, or VERTICAL_BAR). c) FIELD_NUMBER INTEGER The FIELD_NUMBER is the sequential number of the FIELD object within the enclosing SPREADSHEET object definition. Note that FIELD_NUMBER is one-based, i.e. the first field is counted as "1", not "0". ----------------------------------------------------------------------------- A.xx Spreadsheet ----------------------------------------------------------------------------- The SPREADSHEET is a natural storage format for data products in which the data rows are sparsely populated or field values have variable lengths. A SPREADSHEET definition describes a collection of logically uniform rows containing ASCII values stored in variable-width fields separated by field delimiters. Each row within a SPREADSHEET has the same number of fields, in the same field order; and each field contains the same logical content. By definition, the SPREADSHEET object is used only to describe ASCII data objects. Therefore, it is not necessary to include the INTERCHANGE_FORMAT keyword within the object keyword list. The rows and fields of the SPREADSHEET object provide a natural correspondence to the rows and columns of fixed-width tables. Each field is defined by a variable width FIELD object (see section A.x.x); the value of the FIELDS keyword is the total number of FIELD objects defined in the SPREADSHEET. All SPREADSHEET objects have variable-length records and have rows delimited by carriage-return line-feed () ASCII line termination characters. A.xx.1. Keywords Required Keywords 1. ROWS 2. ROW_BYTES 3. FIELDS 4. FIELD_DELIMITER Optional Keywords 1. NAME 2. DESCRIPTION 3. PSDD Required Objects 1. FIELD Notes: (1) The RECORD_BYTES keyword if used in the implied file object definition of the PDS label containing a SPREADSHEET object definition, should specify the actual number of bytes in the longest record within the file being described. If the file contains several components, this longest record may not necessarily be in the SPREADSHEET. RECORD_BYTES is not a required keyword. (2) The ROW_BYTES keyword within the SPREADSHEET object definition is used to specify the maximum number of bytes that could be contained in a row in the SPREADSHEET object (i.e. the sum of all the FIELD object BYTES values, plus the number of delimiters and quotation marks, plus the 2 bytes for the line termination). A.xx.2. Required SPREADSHEET Formats The SPREADSHEET is an ASCII data object. Its records contain fixed numbers of variable-length fields and are delimited by carriage-return line-feed pairs. The FIELD delimiter may be COMMA, SEMICOLON, TAB, or VERTICAL_BAR; subfields (if any) are delimited by the same character. The ASCII format makes the SPREADSHEET readable by both machines and humans. The relative loss in human readability (compared to the TABLE object) is mitigated by more efficient storage, especially for sparsely populated fields. Several keywords take on special meanings in the SPREADSHEET context. BYTES (and ITEM_BYTES, if used) gives the maximum allowable number of bytes in the FIELD (ITEM). ROW_BYTES is the maximum allowable number of bytes in the row, including delimiters, quotation marks, and the carriage-return line-feed pair. RECORD_TYPE within the implied parent file object is always STREAM. RECORD_BYTES within the implied file is the actual number of bytes in the longest record, including the carriage-return line-feed pair. If the file contains more than the SPREADSHEET, however, the longest record may not be a SPREADSHEET record. A.xx.3. Recommended SPREADSHEET Formats The recommended format for SPREADSHEET objects is a comma-separated value format in which string fields are enclosed in double quotes. This format can be imported directly into many commercial data management systems and spreadsheet applications. The file name extension CSV has been reserved for files containing SPREADSHEET objects (e.g., MYDATA.CSV), but the CSV extension does not necessarily imply that the field delimiter is COMMA. Example - Recommended SPREADSHEET The following example shows a sparse matrix described as a SPREADSHEET object. The longest record is 85 bytes. Note that delimiters (double quotes and commas) and line terminators () are included in the byte count for each record (RECORD_BYTES) and row (ROW_BYTES). Contents of file "MYDATA.CSV": 2004-03-04T00:00:00.012,0.45,"MODE 1",0,,,,1,,,,-1,12,5,1,2,1,1,0,1,3,1,0 2004-03-04T00:00:01.012,0.45,"MODE 1",1,,,,1,,,,6,9,15,8,7,2,1,1,0,0,1,0 2004-03-04T00:00:02.012,0.45,"MODE 1",2,,,,5,,,,25,15,10,4,2,1,1,1,1,0,1,1 2004-03-04T00:00:03.012,0.45,"MODE 1",1,,,,1,,,,2,4,8,3,1,1,1,1,1,1,0,0 2004-03-04T00:00:04.012,0.45,"MODE 5",1,1,3,1,1,2,3,1,1,2,2,1,4,3,1,1,4,1,1,0 2004-03-04T00:00:05.012,0.45,"MODE 5",1,5,4,2,1,1,1,1,2,0,0,1,0,1,1,0,0,0,0,0 2004-03-04T00:00:06.012,0.45,"MODE 5",1,6,3,5,4,3,1,,0,1,1,1,1,2,1,1,1,3,1,0 2004-03-04T00:00:07.012,0.45,"MODE 6",,,,3,,,5,,1,,1,3,,2,3,,,,, 2004-03-04T00:00:08.012,0.45,"MODE 6",,,,1,,,2,,1,,1,4,,1,2,,,,, 2004-03-04T00:00:09.012,0.45,"MODE 6",,,,1,,,1,,1,,1,5,,1,3,,,,, 2004-03-04T00:00:10.017,4.00,"MODE 11",,,,,8,15,14,21,24,18,15,10,8,9,11,6,-1,9,8,6 2004-03-04T00:00:15.017,4.00,"MODE 11",,,,,8,12,17,35,20,12,5,1,2,1,1,8,11,7,8,6 2004-03-04T00:00:20.017,4.00,"MODE 11",,,,,4,8,12,32,24,12,15,4,3,1,1,6,7,3,5,2 2004-03-04T00:00:25.017,4.00,"MODE 13",,,,,1,5,12,12,14,12,5,1,1,7,2,4,,,, 2004-03-04T00:00:30.017,4.00,"MODE 13",,,,,1,5,5,14,16,10,8,3,1,5,3,2,,,, 2004-03-04T00:00:35.017,4.00,"MODE 13",,,,,1,2,3,2,19,43,21,17,4,8,3,1,,,, 2004-03-04T00:00:40.017,4.00,"MODE 13",,,,,1,2,1,2,4,12,9,3,1,1,1,1,,,, 2004-03-04T00:00:45.017,4.00,"MODE 13",,,,,1,3,1,-1,9,16,7,1,1,1,1,2,,,, 2004-03-04T00:00:50.017,4.00,"MODE 13",,,,,1,2,1,2,4,12,5,1,1,1,1,1,,,, 2004-03-04T00:00:55.017,4.00,"MODE 13",,,,,1,2,1,2,4,10,5,1,1,1,1,1,,,, MYDATA.CSV is an example data file described by a SPREADSHEET object definition within a PDS label. The longest record in this file is 85 bytes (record 11) and this value is assigned to the RECORD_BYTES keyword. However, records described by this SPREADSHEET definition could be as long as 163 bytes (see example label below). The value assigned to the ROW_BYTES keyword (163) is the maximum possible row size (bytes) described by the SPREADSHEET object definition. Bytes Field 23 - Time (23) 8 - delimiter + duration (7) 10 - delimiter + quotes(2) + mode string (7) 60 - delimiter + electrons (59) 60 - delimiter + ions (59) + 2 - CR + LF ----------------------- = 163 = ROW_BYTES Contents of file "MYDATA.LBL": PDS_VERSION_ID = PDS3 RECORD_TYPE = STREAM RECORD_BYTES = 85 /* Largest actual record in the file */ FILE_RECORDS = 20 ^SPREADSHEET = "MYDATA.CSV" DATA_SET_ID = "CO-S-INST-2-DUMMY-DATA-V1.0" INSTRUMENT_HOST_NAME = "CASSINI ORBITER" INSTRUMENT_NAME = "MY INSTRUMENT" TARGET_NAME = {"SATURN", "SOLAR_WIND"} PRODUCT_ID = "MYDATA.CSV" PRODUCT_CREATION_TIME = 2004-08-04T11:15:00 START_TIME = 2004-03-04T00:00:00.012 STOP_TIME = 2004-03-04T00:00:55.017 SPACECRAFT_CLOCK_START_COUNT = "1/1457051001.103" SPACECRAFT_CLOCK_STOP_COUNT = "1/1457051056.104" DESCRIPTION = "This file contains an example sparse matrix data object (SPREADSHEET)." OBJECT = SPREADSHEET ROWS = 20 ROW_BYTES = 163 /* Size of longest possible row*/ FIELDS = 5 FIELD_DELIMITER = "COMMA" OBJECT = FIELD NAME = "TIME" DATA_TYPE = TIME FIELD_NUMBER = 1 BYTES = 23 DESCRIPTION = "Spacecraft event time (UT) for this data record." END_OBJECT = FIELD OBJECT = FIELD NAME = "DURATION" FIELD_NUMBER = 2 BYTES = 7 FORMAT = "F7.2" DATA_TYPE = ASCII_REAL UNITS = "SECOND" DESCRIPTION = "Time interval over which counting was performed (seconds)." END_OBJECT = FIELD OBJECT = FIELD NAME = "MODE" FIELD_NUMBER = 3 BYTES = 7 /* does not count the bytes occupied by */ /* double quotes*/ FORMAT = "A7" DATA_TYPE = CHARACTER DESCRIPTION = "Scan mode name. See the instrument description for a complete list of scan mode names and properties." END_OBJECT = FIELD OBJECT = FIELD NAME = "ELECTRON COUNTS" FIELD_NUMBER = 4 BYTES = 59 /* Maximum total bytes including internal */ /* item delimiters */ ITEMS = 10 ITEM_BYTES = 5 /* Maximum item bytes, excluding delimiters */ FORMAT = "I5" DATA_TYPE = ASCII_INTEGER UNITS = "COUNTS" MISSING_CONSTANT = -1 DESCRIPTION = "This field contains electron counts from channels E1-E10. Items without values indicate channels not counted during the interval. Values of zero denote counted channels in which no electrons were detected. Values of -1 denote corrupted data, excluded from the data file (counted, but value undefined)." END_OBJECT = FIELD OBJECT = FIELD NAME = "ION COUNTS" FIELD_NUMBER = 5 /* 5th FIELD object in label */ BYTES = 59 ITEMS = 10 ITEM_BYTES = 5 FORMAT = "I5" DATA_TYPE = ASCII_INTEGER UNITS = "COUNTS" MISSING_CONSTANT = -1 DESCRIPTION = "This field contains ion counts from channels D1-D10. Items without values indicate channels not counted during the interval. Values of zero denote counted channels in which no ions were detected. Values of -1 denote corrupted data, excluded from the data file (counted, but value undefined)." END_OBJECT = FIELD END_OBJECT = SPREADSHEET END ----------------------------------------------------------------------------- SPREADSHEET Data Dictionary Object and Element Definitions ----------------------------------------------------------------------------- OBJECT = GENERIC_OBJECT_DEFINITION NAME = SPREADSHEET STATUS_TYPE = PENDING STATUS_NOTE = "V1.1 2002-12-20 SJ/ACR Revised proposal following technical discussion." DESCRIPTION = "The SPREADSHEET object provides a variable-length, delimited ASCII format for labeling sparse tables and matrices. It is designed for use with spreadsheet and database text dump files in formats such as the comma-separated value (CSV) format." REQUIRED_ELEMENT_SET = { . "ROWS", . "ROW_BYTES", "FIELDS", "FIELD_DELIMITER"} OPTIONAL_ELEMENT_SET = { "NAME", "DESCRIPTION", "PSDD"} REQUIRED_OBJECT_SET = { "FIELD"} OPTIONAL_OBJECT_SET = {} OBJECT_CLASSIFICATION_TYPE = STRUCTURE OBJECT = ALIAS ALIAS_NAME = "N/A" USAGE_NOTE = "N/A" END_OBJECT = ALIAS END_OBJECT = GENERIC_OBJECT_DEFINITION OBJECT = ELEMENT_DEFINITION NAME = FIELDS STATUS_TYPE = PENDING STATUS_NOTE = "V1.1 2002-12-20 SJ/ACR Revised proposal based on technical discussion." DESCRIPTION = "The FIELDS element is the number of FIELD objects defined within the enclosing SPREADSHEET object." SOURCE_NAME = "PDS PPI/S.Joy" GENERAL_DATA_TYPE = INTEGER UNIT = "N/A" VALID_MAXIMUM = 32767 VALID_MINIMUM = 1 MAXIMUM_LENGTH = "N/A" MINIMUM_LENGTH = "N/A" STANDARD_VALUE_SET = {} STANDARD_VALUE_TYPE = "N/A" DEFAULT = "N/A" FORMATION_RULE_DESC = "N/A" SYSTEM_CLASSIFICATION_ID = GENERAL GENERAL_CLASSIFICATION_TYPE = STRUCTURE OBJECT = ALIAS ALIAS_NAME = "N/A" OBJECT_NAME = "N/A" USAGE_NOTE = "N/A" END_OBJECT = ALIAS OBJECT = LOCAL_ENVIRONMENT SQL_FORMAT = SMALLINT TERSE_NAME = "N/A" END_OBJECT = LOCAL_ENVIRONMENT END_OBJECT = ELEMENT_DEFINITION OBJECT = ELEMENT_DEFINITION NAME = FIELD_DELIMITER STATUS_TYPE = PENDING STATUS_NOTE = "V1.1 2002-12-20 SJ/ACR Revised proposal based on technical discussion." DESCRIPTION = "The FIELD_DELIMITER indicates the single character used to separate variable-width FIELDs in a SPREADSHEET object. The field delimiter must be chosen from the set of standard values." SOURCE_NAME = "PDS PPI/S.Joy" GENERAL_DATA_TYPE = CHARACTER UNIT = "N/A" VALID_MAXIMUM = "N/A" VALID_MINIMUM = "N/A" MAXIMUM_LENGTH = "N/A" MINIMUM_LENGTH = "N/A STANDARD_VALUE_SET = { "COMMA", "SEMICOLON", "TAB", "VERTICAL_BAR"} STANDARD_VALUE_TYPE = STATIC STANDARD_VALUE_SET_DESC = "Standard values for the FIELD_DELIMITER element are the written names of the delimiter characters." DEFAULT = "N/A" FORMATION_RULE_DESC = "N/A" SYSTEM_CLASSIFICATION_ID = GENERAL GENERAL_CLASSIFICATION_TYPE = STRUCTURE OBJECT = ALIAS ALIAS_NAME = "N/A" OBJECT_NAME = "N/A" USAGE_NOTE = "N/A" END_OBJECT = ALIAS OBJECT = LOCAL_ENVIRONMENT SQL_FORMAT = "CHAR(20)" TERSE_NAME = "N/A" END_OBJECT = LOCAL_ENVIRONMENT END_OBJECT = ELEMENT_DEFINITION ----------------------------------------------------------------------------- A.xx FIELD ----------------------------------------------------------------------------- The FIELD object identifies a single variable-width field in a SPREADSHEET object. Notes: (1) The only PDS data object that includes FIELD objects is the SPREADSHEET. FIELDs must not themselves contain embedded FIELD objects. (2) The DATA_TYPE keyword is required to specify the data type of the values that are stored in the field when data are present. (3) A vector with two or more identically formatted components may be specified as a single FIELD by using the ITEM and ITEM_BYTES elements. The ITEMS data element indicates the number of occurrences within the field (i.e., components in the vector). (4) If a FIELD contains multiple items, then the ITEM_BYTES keyword is used to specify the maximum number of bytes any item in the set may have. ITEM_BYTES does not include the quotation marks that enclose string items. (5) The BYTES keyword is used to specify the maximum size of the FIELD object, not including leading or trailing delimiters or line terminators. When a field contains items, the BYTES value is set to the product of the ITEM_BYTES and ITEMS values plus the number of interior delimiter bytes (e.g., for three ASCII_INTEGER items of three bytes each ITEMS = 3, ITEM_BYTES=3, and BYTES= 11, which includes the two delimiters WITHIN the field but not the trailing delimiter). (6) The (optional) FORMAT element may be used to specify the format of FIELD data when they are present. The FORMAT specification applies to the maximum size of the field object, allowing shorter variations. For example, FORMAT = "F5.1" is consistent with each of the following ... ,127.1, ... ... ,-12.7, ... ... ,3.1, ... ... ,3.01, ... and ... ,, ... (7) Inclusion of data elements VALID_MINIMUM and VALID_MAXIMUM within FIELD object definitions is encouraged. (8) If data element MISSING_CONSTANT is used, its meaning must be clearly stated since absence of a field value is the default indication of 'no data'. (9) FIELDs of DATA_TYPE = CHARACTER must be enclosed by double quotes if they contain ASCII blanks or FIELD_DELIMITER, as defined for the parent SPREADSHEET. Non-printing ASCII characters are not allowed. A.xx.1. Required Keywords 1. BYTES 2. DATA_TYPE 3. NAME A.xx.2. Optional Keywords 1. DESCRIPTION 2. FIELD_NUMBER 3. FORMAT 4. ITEM_BYTES 5. ITEMS 6. UNIT 7. VALID_MAXIMUM 8. VALID_MINIMUM 9. PSDD A.xx.3. Required Objects None A.xx.4. Optional Objects 1. ALIAS A.xx.5. Example 1 The label fragment below shows a simple FIELD object from a SPREADSHEET object (see section A.xx). OBJECT = FIELD NAME = "DETECTOR TEMPERATURE" FIELD_NUMBER = 3 BYTES = 5 DATA_TYPE = ASCII_REAL FORMAT = "F5.1" UNIT = "KELVIN" END_OBJECT = FIELD A.xx.6. Example 2 The fragment below shows two FIELDs containing multiple items. The first FIELD is a vector containing three ASCII_INTEGER items: xx, yy, zz. The second FIELD contains three character items: "xx", "yy" and "zz". Note that the value of BYTES includes the comma delimiters between items, but the ITEM_BYTES value does not. OBJECT = FIELD NAME = "FIELD 1 - IX, IY, IZ" DATA_TYPE = ASCII_INTEGER FIELD_NUMBER = 1 BYTES = 8 /*includes item separating delimiters*/ ITEMS = 3 /* i.e. 17,15,27 or 1,2,3 */ ITEM_BYTES = 2 /* individual item maximum size in bytes */ FORMAT = "I2" MISSING_CONSTANT = -1 DESCRIPTION = "Raw values of FIELD 1. IX, IY, and IZ represent independent, non-negative measurements. A value of -1 denotes a measurement that could not be processed." END_OBJECT = FIELD OBJECT = FIELD NAME = "FIELD 2 - AX, AY,AZ" DATA_TYPE = CHARACTER FIELD_NUMBER = 2 /* One FIELD object precedes this object */ BYTES = 12 /* Doesn't include first/last quotes */ ITEMS = 3 /* i.e. "xx","yy","zz" */ ITEM_BYTES = 2 /* |----------| */ FORMAT = "A2" /* < 12 bytes > */ END_OBJECT = FIELD ----------------------------------------------------------------------------- FIELD Data Dictionary Object and Element Definitions ----------------------------------------------------------------------------- OBJECT = GENERIC_OBJECT_DEFINITION NAME = FIELD STATUS_TYPE = PENDING STATUS_NOTE = "V1.1 2002-12-20 SJ/ACR Revised proposal following technical discussion." DESCRIPTION = "The FIELD object is used inside a SPREADSHEET object to define a single delimited column within the logical table." REQUIRED_ELEMENT_SET = { "BYTES", "DATA_TYPE", "NAME"} OPTIONAL_ELEMENT_SET = { "DESCRIPTION", "FIELD_NUMBER", "FORMAT", "ITEMS", "ITEM_BYTES", "MISSING_CONSTANT", "UNIT", "VALID_MAXIMUM", "VALID_MINIMUM", "PSDD" } REQUIRED_OBJECT_SET = {} OPTIONAL_OBJECT_SET = {} OBJECT_CLASSIFICATION_TYPE = STRUCTURE OBJECT = ALIAS ALIAS_NAME = "N/A" USAGE_NOTE = "N/A" END_OBJECT = ALIAS END_OBJECT = GENERIC_OBJECT_DEFINITION OBJECT = ELEMENT_DEFINITION NAME = FIELD_NUMBER STATUS_TYPE = PENDING STATUS_NOTE = "V1.0 2002-02-12 SJ/ACR Draft proposal based on technical discussion." DESCRIPTION = "The FIELD_NUMBER is the sequential number of the enclosing FIELD object within the current SPREADSHEET definition. FIELD objects should be numbered from the beginning of the record to the end." SOURCE_NAME = "PDS PPI/S.Joy" GENERAL_DATA_TYPE = INTEGER UNIT = "N/A" VALID_MAXIMUM = 32768 VALID_MINIMUM = 1 MAXIMUM_LENGTH = "N/A" MINIMUM_LENGTH = "N/A" STANDARD_VALUE_SET = {} STANDARD_VALUE_TYPE = "N/A" STANDARD_VALUE_SET_DESC = "N/A" DEFAULT = "N/A" FORMATION_RULE_DESC = "N/A" SYSTEM_CLASSIFICATION_ID = GENERAL GENERAL_CLASSIFICATION_TYPE = STRUCTURE OBJECT = ALIAS ALIAS_NAME = "N/A" OBJECT_NAME = "N/A" USAGE_NOTE = "N/A" END_OBJECT = ALIAS OBJECT = LOCAL_ENVIRONMENT SQL_FORMAT = SMALLINT TERSE_NAME = "N/A" END_OBJECT = LOCAL_ENVIRONMENT END_OBJECT = ELEMENT_DEFINITION ========================================================================== Additional Areas Impacted by the Creation of the SPREADSHEET Object ========================================================================== 1. OAL The object access library should be updated to recognize and deal with SPREADSHEET and FIELD objects. 2. LABLIB3 Similarly, the Label Library Light should be able to handle SPREADSHEET and FIELD objects. 3. NASAView NASAView should be able to identify, list, and display individual SPREADSHEET and FIELD objects. 4. Test and verify that the validation tool suite can properly identify and validate the SPREADSHEET and FIELD objects and the associated set of keywords.