
GROUP                  = INVENTORYMETADATA
  GROUPTYPE            = MASTERGROUP

  /* *********Associate granule with collection *************** **** */
  /* ******IMPORTANT - wherever xxxx or XXX or TBC is used */
  /* within this MCF, these are values which the USER will */
  /* ultimately fill in themselves - the MCF will not function with */
  /* these original values!!!!! *********************************** */
  /* IMPORTANT - any text comment in the MCF MUST be enclosed */
  /* per line with /* and */.  Unlike C where a block of text may */
  /* be enclosed */
  /* All attributes EXCEPT those at the highest level associated */
  /* with ECSDataGranule (DID 31ll) must be grouped together */
  /* The groups MUST relate to the CLASS names within DID 311 */
  /*  Container Objects, within a group, must duplicate the group */
  /* name and append Container */
  /*  IMPORTANT The following Groups are Self Describing */
  /* Parameter, SensorCharacteristic, VerticalSpatialDomain */
  /* PlatformCharacteristic, Locality, RegularPeriodic and */
  /* AdditionalAttribute */
  /* They all have values which are self typed - these values */
  /* will be set up in the descriptor, prior to MCF generation */
  /* For MCF purposes, the values of all of these attributes */
  /* will be of type STRING.  The database will retain the correct */
  /* types.  The PGE/user MUST convert the value they are */
  /* assinging to type string, before calling PGS_MET_SET */
  /* and setting the value of the attribute. */

  OBJECT                 = INSTRUMENT_NAME
    NUM_VAL              = 1
    VALUE                = "MISR"
  END_OBJECT             = INSTRUMENT_NAME

  OBJECT                 = ORBIT_INCLINATION
    NUM_VAL              = 1
    VALUE                = 11.030000
  END_OBJECT             = ORBIT_INCLINATION

  OBJECT                 = ORBIT_NUMBER
    NUM_VAL              = 1
    VALUE                = 47930
  END_OBJECT             = ORBIT_NUMBER


  /*		OBJECT = CLARK */

  OBJECT                 = CLARK_88
    NUM_VAL              = 1
    VALUE                = 58.775000
  END_OBJECT             = CLARK_88

  OBJECT                 = CLARK_66
    NUM_VAL              = 3
    VALUE                = (2, 8, 3)
  END_OBJECT             = CLARK_66


  /*		END_OBJECT  = CLARK */
  /* FOR TESTING PURPOSES */

  OBJECT                 = IMAGES
    LINES                = (800, 400)
    SAMPLE_BITS2         = 8
    GRID                 = ((1, 2, 3)
                            (4, 5, 6))
    LINE_SAMPLES         = 6
    SAMPLE_TYPE          = "UNSIGNED_INTEGER"
    NUM_VAL              = 1
    VALUE                = 9
  END_OBJECT             = IMAGES

  OBJECT                 = TEST_PARM
    NUM_VAL              = 5
    VALUE                = (1, 2, 3, 4, 5)
  END_OBJECT             = TEST_PARM

  OBJECT                 = TEST_PARM_DOUBLE
    NUM_VAL              = 1
    VALUE                = 0.120035
  END_OBJECT             = TEST_PARM_DOUBLE

  OBJECT                 = TEST_PARM_STRING
    VALUE                = "SAT_0"
    NUM_VAL              = 1
  END_OBJECT             = TEST_PARM_STRING

  GROUP                  = TEST_PARM_STRINGS_CON
    CLASS                = M
    DATA_LOCATION        = MCF
    MANDATORY            = FALSE

    OBJECT                 = TEST_PARM_STRINGS
      CLASS                = M
      VALUE                = ("Richard", "Morris")
      NUM_VAL              = 2
    END_OBJECT             = TEST_PARM_STRINGS

  END_GROUP              = TEST_PARM_STRINGS_CON


  /**************************************************************** */
  /**************************************************************** */
  /* */
  /*  This is a working version of the MCF template that will be */
  /*  supplied with the next SDP Toolkit.  This MCF template will */
  /*  NOT be official until the SDP Toolkit is released.  All */
  /*  details are subject to change. */
  /* */
  /*  This MCF file represents the ODL which is expected to be */
  /*  created when either Data Server or the MetaDataWorks tool */
  /*  uses the contents of an ESDT's INVENTORYMETADATA section in */
  /*  order to generate an ESDT-specific MCF.  The level of */
  /*  metadata coverage presented here corresponds to the metadata */
  /*  requirement for granules in Full Class as described in */
  /*  Appendix B of DID 311 and Section 2.5 of the document  'BNF */
  /*  Representation of the B.0 Earth Science Data Model for the */
  /*  ECS Project' {420-TP-016-001). */
  /* */
  /*  This MCF file's contents were based on the ESDT Descriptor */
  /*  file template Ver-1.6, 3/31/97. */
  /* */
  /**************************************************************** */
  /**************************************************************** */
  /* */
  /* */
  /*  The Granule-level attributes in this MCF group follow as closely as */
  /*  possible to the Backus-Naur Format (BNF) below: */
  /* */
  /* 1{ECSDataGranule}1+ */
  /* 0{MeasuredParameter}n + */
  /* 1{OrbitCalculatedSpatialDomain}n + */
  /* 1{CollectionDescriptionClass}1+ */
  /* 1{InputGranule}n+ */
  /* 1{SpatialDomainContainer}1+ */
  /* 1{[RangeDateTime|SingleDateTime]}1+ */
  /* 1{ProcessingHistory}1+ */
  /* 1{PGEVersionClass}1+ */
  /* 0{AncillaryInputGranule}n+ */
  /* 0{Review}n+ */
  /* 0{ProcessingQA}n+ */
  /* 0{AdditionalAttributes + */
  /*  1{InformationContent}1}n + */
  /* 0{Browse}n+ */
  /* 0{OrbitParametersGranule}n + */
  /* 0{StorageMediumClass}n+ */
  /* 0{UserCommentDocument}1+ */
  /* 0{AnalysisSource}n+ */
  /* 0{Campaign}n+ */
  /*  0{PlatformShortName + InstrumentShortName + SensorShortName + */
  /*    SensorCharacteristicName + SensorCharacteristicValue}n + */
  /*  0{AssociatedPlatformShortName + AssociatedInstrumentShortName + */
  /*    AssociatedSensorShortName + OperationMode}n + */
  /* 0{QAGranule}n+ */
  /* */
  /*  NOTE: Some of the attributes corresponding to the DID311 BNF */
  /*  do not appear in the INVENTORYMETADATA portion of this MCF. */
  /*     For example, ProcessingHistoryPointer, QAGranulePointer, */
  /*  BrowsePointer and UserCommentDocumentPointer are not present in */
  /*  this MCF file because they are not set by the science software. */
  /* */
  /*  NOTE: The ODL for each granule-level attribute in INVENTORYMETADATA */
  /*  can include a VALIDRULE field which is not provided in the actual */
  /*  ODL in the MCF below.  VALIDRULE can be optionally added */
  /*  between the OBJECT/END_OBJECT for a given attribute in order to */
  /*  indicate a rule which can be applied to the values that are set by */
  /*  the science software for granule-level attributes. The VALIDRULE */
  /*  may either take the form of "Match(value1, value2, value3, etc.)" */
  /*  to specify a valids list, or "Range(beginningvalue, endingvalue)" */
  /*  defines a range of valid values for a given attribute.  This */
  /*  provides the ESDT creators with a means of overriding the valids of */
  /*  a given ECS Core attribute by further restricting the acceptable */
  /*  values in an ESDT-specific manner. Commented out below is an */
  /*  hypothetical example of VALIDRULE in use: */
  /* */
  /*                  OBJECT = OperationMode */
  /*                      Data_Location = "PGE" */
  /*                      Mandatory = "TRUE" */
  /*                      Class = "M" */
  /*                      TYPE = "STRING" */
  /*                      NUM_VAL = 1 */
  /*                      VALIDRULE = "Match("SCIENCE", "CALIBRATION")" */
  /*                  END_OBJECT = OperationMode */
  /* */
  /* ECSDataGranule */

  GROUP                  = ECSDATAGRANULE

    OBJECT                 = REPROCESSINGPLANNED
      NUM_VAL              = 1
      VALUE                = "NOT SET"
    END_OBJECT             = REPROCESSINGPLANNED

    OBJECT                 = REPROCESSINGACTUAL
      NUM_VAL              = 1
      VALUE                = "NOT SET"
    END_OBJECT             = REPROCESSINGACTUAL

    OBJECT                 = LOCALGRANULEID
      NUM_VAL              = 1
      VALUE                = "NOT SET"
    END_OBJECT             = LOCALGRANULEID

    OBJECT                 = DAYNIGHTFLAG
      NUM_VAL              = 1
      VALUE                = "NOT SET"
    END_OBJECT             = DAYNIGHTFLAG


    /*  Note: ProductionDateTime will not be set directly by */
    /*  the science software. The attribute value will instead */
    /*  be set automatically when the SDP Toolkit routine */
    /*  PGS_MET_Write is called by the science software. */
    /*  PGS_MET_Write writes the science software-populated */
    /*  INVENTORYMETADATA attribute values to an ASCII file */
    /*  for Data Server insert, and to an HDF-EOS file as */
    /*  appropriate. In addition, PGS_MET_Write automatically */
    /*  populates ProductionDateTime with the value of the */
    /*  time at which PGS_MET_Write was called, therefore */
    /*  capturing the time at which science software */
    /*  processing of a given data granule is being completed. */

    OBJECT                 = PRODUCTIONDATETIME
      NUM_VAL              = 1
      VALUE                = "1997-09-22T16:02:36.000Z"
    END_OBJECT             = PRODUCTIONDATETIME

    OBJECT                 = LOCALVERSIONID
      NUM_VAL              = 1
      VALUE                = "1234"
    END_OBJECT             = LOCALVERSIONID

  END_GROUP              = ECSDATAGRANULE


  /* MeasuredParameter */
  /* The B.0 Data Model BNF representation is: */
  /*       0{MeasuredParameter}n    which further breaks */
  /* down to the relation: */
  /*   0{ParameterName + 1{QAFlags}1 + 0{QAStats}1 }n */

  GROUP                  = MEASUREDPARAMETER

    OBJECT                 = MEASUREDPARAMETERCONTAINER
      CLASS                = "1"

      OBJECT                 = PARAMETERNAME
        CLASS                = "1"
        NUM_VAL              = 1
        VALUE                = "NOT SET"
      END_OBJECT             = PARAMETERNAME


      /*  QAFlags */
      /* The B.0 BNF indicates that QAFlags contains: */
      /* 0{ScienceQualityFlag + ScienceQualityFlagExplanation + */
      /*   OperationalQualityFlag + OperationalQualityFlagExplanation */
      /*   AutomaticQualityFlag + AutomaticQualityFlagExplanation */
      /* Note: Only AutomaticQualityFlag and */
      /* AutomaticQualityFlagExplanation will be set by the science */
      /* software.  The Data_Location = "DAAC" or "DP" of the other */
      /* four attributes reflect the fact that they will be set */
      /* through manual methods by DAAC staff or by a representative */
      /* of the Data Provider. */

      GROUP                  = QAFLAGS
        CLASS                = "1"

        OBJECT                 = AUTOMATICQUALITYFLAG
          NUM_VAL              = 1
          CLASS                = "1"
          VALUE                = "TRUE"
        END_OBJECT             = AUTOMATICQUALITYFLAG

        OBJECT                 = AUTOMATICQUALITYFLAGEXPLANATION
          NUM_VAL              = 1
          CLASS                = "1"
          VALUE                = "NOT SET"
        END_OBJECT             = AUTOMATICQUALITYFLAGEXPLANATION

      END_GROUP              = QAFLAGS


      /* QAStats */

      GROUP                  = QASTATS
        CLASS                = "1"

        OBJECT                 = QAPERCENTINTERPOLATEDDATA
          NUM_VAL              = 1
          CLASS                = "1"
          VALUE                = "NOT SET"
        END_OBJECT             = QAPERCENTINTERPOLATEDDATA

        OBJECT                 = QAPERCENTMISSINGDATA
          NUM_VAL              = 1
          CLASS                = "1"
          VALUE                = "NOT SET"
        END_OBJECT             = QAPERCENTMISSINGDATA

        OBJECT                 = QAPERCENTOUTOFBOUNDSDATA
          NUM_VAL              = 1
          CLASS                = "1"
          VALUE                = "NOT SET"
        END_OBJECT             = QAPERCENTOUTOFBOUNDSDATA

        OBJECT                 = QAPERCENTCLOUDCOVER
          NUM_VAL              = 1
          CLASS                = "1"
          VALUE                = "NOT SET"
        END_OBJECT             = QAPERCENTCLOUDCOVER

      END_GROUP              = QASTATS

    END_OBJECT             = MEASUREDPARAMETERCONTAINER

    OBJECT                 = MEASUREDPARAMETERCONTAINER
      CLASS                = "2"

      OBJECT                 = PARAMETERNAME
        CLASS                = "2"
        NUM_VAL              = 1
        VALUE                = "NOT SET"
      END_OBJECT             = PARAMETERNAME


      /*  QAFlags */
      /* The B.0 BNF indicates that QAFlags contains: */
      /* 0{ScienceQualityFlag + ScienceQualityFlagExplanation + */
      /*   OperationalQualityFlag + OperationalQualityFlagExplanation */
      /*   AutomaticQualityFlag + AutomaticQualityFlagExplanation */
      /* Note: Only AutomaticQualityFlag and */
      /* AutomaticQualityFlagExplanation will be set by the science */
      /* software.  The Data_Location = "DAAC" or "DP" of the other */
      /* four attributes reflect the fact that they will be set */
      /* through manual methods by DAAC staff or by a representative */
      /* of the Data Provider. */

      GROUP                  = QAFLAGS
        CLASS                = "2"

        OBJECT                 = AUTOMATICQUALITYFLAG
          NUM_VAL              = 1
          CLASS                = "2"
          VALUE                = "FALSE"
        END_OBJECT             = AUTOMATICQUALITYFLAG

        OBJECT                 = AUTOMATICQUALITYFLAGEXPLANATION
          NUM_VAL              = 1
          CLASS                = "2"
          VALUE                = "NOT SET"
        END_OBJECT             = AUTOMATICQUALITYFLAGEXPLANATION

      END_GROUP              = QAFLAGS


      /* QAStats */

      GROUP                  = QASTATS
        CLASS                = "2"

        OBJECT                 = QAPERCENTINTERPOLATEDDATA
          NUM_VAL              = 1
          CLASS                = "2"
          VALUE                = "NOT SET"
        END_OBJECT             = QAPERCENTINTERPOLATEDDATA

        OBJECT                 = QAPERCENTMISSINGDATA
          NUM_VAL              = 1
          CLASS                = "2"
          VALUE                = "NOT SET"
        END_OBJECT             = QAPERCENTMISSINGDATA

        OBJECT                 = QAPERCENTOUTOFBOUNDSDATA
          NUM_VAL              = 1
          CLASS                = "2"
          VALUE                = "NOT SET"
        END_OBJECT             = QAPERCENTOUTOFBOUNDSDATA

        OBJECT                 = QAPERCENTCLOUDCOVER
          NUM_VAL              = 1
          CLASS                = "2"
          VALUE                = "NOT SET"
        END_OBJECT             = QAPERCENTCLOUDCOVER

      END_GROUP              = QASTATS

    END_OBJECT             = MEASUREDPARAMETERCONTAINER

    OBJECT                 = MEASUREDPARAMETERCONTAINER
      CLASS                = "3"

      OBJECT                 = PARAMETERNAME
        CLASS                = "3"
        NUM_VAL              = 1
        VALUE                = "NOT SET"
      END_OBJECT             = PARAMETERNAME


      /*  QAFlags */
      /* The B.0 BNF indicates that QAFlags contains: */
      /* 0{ScienceQualityFlag + ScienceQualityFlagExplanation + */
      /*   OperationalQualityFlag + OperationalQualityFlagExplanation */
      /*   AutomaticQualityFlag + AutomaticQualityFlagExplanation */
      /* Note: Only AutomaticQualityFlag and */
      /* AutomaticQualityFlagExplanation will be set by the science */
      /* software.  The Data_Location = "DAAC" or "DP" of the other */
      /* four attributes reflect the fact that they will be set */
      /* through manual methods by DAAC staff or by a representative */
      /* of the Data Provider. */

      GROUP                  = QAFLAGS
        CLASS                = "3"

        OBJECT                 = AUTOMATICQUALITYFLAG
          NUM_VAL              = 1
          CLASS                = "3"
          VALUE                = "TRUE"
        END_OBJECT             = AUTOMATICQUALITYFLAG

        OBJECT                 = AUTOMATICQUALITYFLAGEXPLANATION
          NUM_VAL              = 1
          CLASS                = "3"
          VALUE                = "NOT SET"
        END_OBJECT             = AUTOMATICQUALITYFLAGEXPLANATION

      END_GROUP              = QAFLAGS


      /* QAStats */

      GROUP                  = QASTATS
        CLASS                = "3"

        OBJECT                 = QAPERCENTINTERPOLATEDDATA
          NUM_VAL              = 1
          CLASS                = "3"
          VALUE                = "NOT SET"
        END_OBJECT             = QAPERCENTINTERPOLATEDDATA

        OBJECT                 = QAPERCENTMISSINGDATA
          NUM_VAL              = 1
          CLASS                = "3"
          VALUE                = "NOT SET"
        END_OBJECT             = QAPERCENTMISSINGDATA

        OBJECT                 = QAPERCENTOUTOFBOUNDSDATA
          NUM_VAL              = 1
          CLASS                = "3"
          VALUE                = "NOT SET"
        END_OBJECT             = QAPERCENTOUTOFBOUNDSDATA

        OBJECT                 = QAPERCENTCLOUDCOVER
          NUM_VAL              = 1
          CLASS                = "3"
          VALUE                = "NOT SET"
        END_OBJECT             = QAPERCENTCLOUDCOVER

      END_GROUP              = QASTATS

    END_OBJECT             = MEASUREDPARAMETERCONTAINER

    OBJECT                 = MEASUREDPARAMETERCONTAINER
      CLASS                = "4"

      OBJECT                 = PARAMETERNAME
        CLASS                = "4"
        NUM_VAL              = 1
        VALUE                = "NOT SET"
      END_OBJECT             = PARAMETERNAME


      /*  QAFlags */
      /* The B.0 BNF indicates that QAFlags contains: */
      /* 0{ScienceQualityFlag + ScienceQualityFlagExplanation + */
      /*   OperationalQualityFlag + OperationalQualityFlagExplanation */
      /*   AutomaticQualityFlag + AutomaticQualityFlagExplanation */
      /* Note: Only AutomaticQualityFlag and */
      /* AutomaticQualityFlagExplanation will be set by the science */
      /* software.  The Data_Location = "DAAC" or "DP" of the other */
      /* four attributes reflect the fact that they will be set */
      /* through manual methods by DAAC staff or by a representative */
      /* of the Data Provider. */

      GROUP                  = QAFLAGS
        CLASS                = "4"

        OBJECT                 = AUTOMATICQUALITYFLAG
          NUM_VAL              = 1
          CLASS                = "4"
          VALUE                = "FALSE"
        END_OBJECT             = AUTOMATICQUALITYFLAG

        OBJECT                 = AUTOMATICQUALITYFLAGEXPLANATION
          NUM_VAL              = 1
          CLASS                = "4"
          VALUE                = "NOT SET"
        END_OBJECT             = AUTOMATICQUALITYFLAGEXPLANATION

      END_GROUP              = QAFLAGS


      /* QAStats */

      GROUP                  = QASTATS
        CLASS                = "4"

        OBJECT                 = QAPERCENTINTERPOLATEDDATA
          NUM_VAL              = 1
          CLASS                = "4"
          VALUE                = "NOT SET"
        END_OBJECT             = QAPERCENTINTERPOLATEDDATA

        OBJECT                 = QAPERCENTMISSINGDATA
          NUM_VAL              = 1
          CLASS                = "4"
          VALUE                = "NOT SET"
        END_OBJECT             = QAPERCENTMISSINGDATA

        OBJECT                 = QAPERCENTOUTOFBOUNDSDATA
          NUM_VAL              = 1
          CLASS                = "4"
          VALUE                = "NOT SET"
        END_OBJECT             = QAPERCENTOUTOFBOUNDSDATA

        OBJECT                 = QAPERCENTCLOUDCOVER
          NUM_VAL              = 1
          CLASS                = "4"
          VALUE                = "NOT SET"
        END_OBJECT             = QAPERCENTCLOUDCOVER

      END_GROUP              = QASTATS

    END_OBJECT             = MEASUREDPARAMETERCONTAINER

  END_GROUP              = MEASUREDPARAMETER

  GROUP                  = GPOLYGON

    OBJECT                 = GPOLYGONCONTAINER
      NUM_VAL              = 1
      CLASS                = "1"

      GROUP                  = GRING
        CLASS                = "1"

        OBJECT                 = EXCLUSIONGRINGFLAG
          NUM_VAL              = 1
          CLASS                = "1"
          VALUE                = "N"
        END_OBJECT             = EXCLUSIONGRINGFLAG

      END_GROUP              = GRING

      GROUP                  = GRINGPOINT
        CLASS                = "1"

        OBJECT                 = GRINGPOINTLATITUDE
          NUM_VAL              = 5
          CLASS                = "1"
          VALUE                = (23.34, 34.234, 80.0, 80.0, -80.0)
        END_OBJECT             = GRINGPOINTLATITUDE

        OBJECT                 = GRINGPOINTLONGITUDE
          NUM_VAL              = 4
          CLASS                = "1"
          VALUE                = (-100.0, 100.0, 100.0, -100.0)
        END_OBJECT             = GRINGPOINTLONGITUDE

        OBJECT                 = GRINGPOINTSEQUENCENO
          NUM_VAL              = 4
          CLASS                = "1"
          VALUE                = (1.0, 2.0, 3.0, 4.0)
        END_OBJECT             = GRINGPOINTSEQUENCENO

      END_GROUP              = GRINGPOINT

    END_OBJECT             = GPOLYGONCONTAINER

  END_GROUP              = GPOLYGON

  GROUP                  = GPOLYGON

    OBJECT                 = GPOLYGONCONTAINER
      NUM_VAL              = 1
      CLASS                = "2"

      GROUP                  = GRING
        CLASS                = "2"

        OBJECT                 = EXCLUSIONGRINGFLAG
          NUM_VAL              = 1
          CLASS                = "2"
          VALUE                = "23.45"
        END_OBJECT             = EXCLUSIONGRINGFLAG

      END_GROUP              = GRING

      GROUP                  = GRINGPOINT
        CLASS                = "2"

        OBJECT                 = GRINGPOINTLATITUDE
          NUM_VAL              = 6
          CLASS                = "2"
          VALUE                = (0.0, 123.0, 1234.56, -0.9981, -1.0e-03, 3.14590e+00)
        END_OBJECT             = GRINGPOINTLATITUDE

        OBJECT                 = GRINGPOINTLONGITUDE
          NUM_VAL              = 4
          CLASS                = "2"
          VALUE                = (-120.0, 120.0, 120.0, -120.0)
        END_OBJECT             = GRINGPOINTLONGITUDE

        OBJECT                 = GRINGPOINTSEQUENCENO
          NUM_VAL              = 4
          CLASS                = "2"
          VALUE                = (0.11, 0.22, 0.33, 0.44)
        END_OBJECT             = GRINGPOINTSEQUENCENO

      END_GROUP              = GRINGPOINT

    END_OBJECT             = GPOLYGONCONTAINER

  END_GROUP              = GPOLYGON


  /*  OrbitCalculatedSpatialDomain */
  /*  OrbitCalculatedSpatialDomain is comprised of 1-n sets */
  /*  of the following attributes: */
  /*    OrbitalModelName + OrbitNumber + StartOrbitNumber + */
  /*    StopOrbitNumber + EquatorCrossingLongitude + */
  /*    EquatorCrossingDate + EquatorCrossingTime */

  GROUP                  = ORBITCALCULATEDSPATIALDOMAIN

    OBJECT                 = ORBITCALCULATEDSPATIALDOMAINCONTAINER
      CLASS                = "M"

      OBJECT                 = ORBITALMODELNAME
        CLASS                = "M"
        NUM_VAL              = 1
        VALUE                = "NOT SET"
      END_OBJECT             = ORBITALMODELNAME

      OBJECT                 = ORBITNUMBER
        CLASS                = "M"
        NUM_VAL              = 1
        VALUE                = "NOT SET"
      END_OBJECT             = ORBITNUMBER

      OBJECT                 = STARTORBITNUMBER
        CLASS                = "M"
        NUM_VAL              = 1
        VALUE                = "NOT SET"
      END_OBJECT             = STARTORBITNUMBER

      OBJECT                 = STOPORBITNUMBER
        CLASS                = "M"
        NUM_VAL              = 1
        VALUE                = "NOT SET"
      END_OBJECT             = STOPORBITNUMBER

      OBJECT                 = EQUATORCROSSINGLONGITUDE
        CLASS                = "M"
        NUM_VAL              = 1
        VALUE                = "NOT SET"
      END_OBJECT             = EQUATORCROSSINGLONGITUDE

      OBJECT                 = EQUATORCROSSINGTIME
        CLASS                = "M"
        NUM_VAL              = 1
        VALUE                = "NOT SET"
      END_OBJECT             = EQUATORCROSSINGTIME

      OBJECT                 = EQUATORCROSSINGDATE
        CLASS                = "M"
        NUM_VAL              = 1
        VALUE                = "NOT SET"
      END_OBJECT             = EQUATORCROSSINGDATE

    END_OBJECT             = ORBITCALCULATEDSPATIALDOMAINCONTAINER

  END_GROUP              = ORBITCALCULATEDSPATIALDOMAIN


  /* CollectionDescriptionClass */

  GROUP                  = COLLECTIONDESCRIPTIONCLASS

    OBJECT                 = SHORTNAME
      NUM_VAL              = 1
      VALUE                = "L7ORF1"
    END_OBJECT             = SHORTNAME

    OBJECT                 = VERSIONID
      NUM_VAL              = 1
      VALUE                = "1"
    END_OBJECT             = VERSIONID

  END_GROUP              = COLLECTIONDESCRIPTIONCLASS


  /* SpatialDomainContainer */
  /* The B.0 BNF lists 1{SpatialDomainContainer}1  which in turn */
  /* translates to the relation: */
  /*  0{GranuleLocality}n + 0{VerticalSpatialDomain}n + */
  /*   1{HorizontalSpatialDomainContainer}1 */

  GROUP                  = SPATIALDOMAINCONTAINER

    /* HorizontalSpatialDomainContainer */
    /*  This is comprised of 0{ZoneIdentifierClass}1, where */
    /*          ZoneIdentifierClass = ZoneIdentifier */
    /*  plus one (and only one) of the following: */
    /*      GPolygonContainer, BoundingRectangle, Point or Circle */
    /* Note: HorizontalSpatialDomainContainer is not, strictly */
    /*  speaking, a container object of multiple sets of values. This */
    /*  attribute having 'Container' in its name is due to a naming */
    /*  anomaly in the BNF and Data Model. */

    GROUP                  = HORIZONTALSPATIALDOMAINCONTAINER

      /*  ZoneIdentifierClass */

      GROUP                  = ZONEIDENTIFIERCLASS

        OBJECT                 = ZONEIDENTIFIER
          NUM_VAL              = 1
          VALUE                = "NOT SET"
        END_OBJECT             = ZONEIDENTIFIER

      END_GROUP              = ZONEIDENTIFIERCLASS


      /*  BoundingRectangle */

      GROUP                  = BOUNDINGRECTANGLE

        OBJECT                 = WESTBOUNDINGCOORDINATE
          NUM_VAL              = 1
          VALUE                = "NOT SET"
        END_OBJECT             = WESTBOUNDINGCOORDINATE

        OBJECT                 = NORTHBOUNDINGCOORDINATE
          NUM_VAL              = 1
          VALUE                = "NOT SET"
        END_OBJECT             = NORTHBOUNDINGCOORDINATE

        OBJECT                 = EASTBOUNDINGCOORDINATE
          NUM_VAL              = 1
          VALUE                = "NOT SET"
        END_OBJECT             = EASTBOUNDINGCOORDINATE

        OBJECT                 = SOUTHBOUNDINGCOORDINATE
          NUM_VAL              = 1
          VALUE                = "NOT SET"
        END_OBJECT             = SOUTHBOUNDINGCOORDINATE

      END_GROUP              = BOUNDINGRECTANGLE

    END_GROUP              = HORIZONTALSPATIALDOMAINCONTAINER

  END_GROUP              = SPATIALDOMAINCONTAINER


  /* RangeDateTime | SingleDateTime */
  /* Specify either a single date/time or date/time range, but not both */
  /* RangeDateTime */

  GROUP                  = RANGEDATETIME

    OBJECT                 = RANGEBEGINNINGTIME
      NUM_VAL              = 1
      VALUE                = "NOT SET"
    END_OBJECT             = RANGEBEGINNINGTIME

    OBJECT                 = RANGEENDINGTIME
      NUM_VAL              = 1
      VALUE                = "NOT SET"
    END_OBJECT             = RANGEENDINGTIME

    OBJECT                 = RANGEBEGINNINGDATE
      NUM_VAL              = 1
      VALUE                = "NOT SET"
    END_OBJECT             = RANGEBEGINNINGDATE

    OBJECT                 = RANGEENDINGDATE
      NUM_VAL              = 1
      VALUE                = "NOT SET"
    END_OBJECT             = RANGEENDINGDATE

  END_GROUP              = RANGEDATETIME


  /*  Product-Specific attributes */
  /*   It is necessary to include NUM_VAL information for the component */
  /* attribute ParameterValue in order to supply the information */
  /* needed by SDP Toolkit routines. */
  /*   The NUM_VAL value must be represent the  ESDT-specific value of */
  /* the maximum possible number of Granule-level ParameterValue */
  /* instances for this ESDT. The following AdditionalAttributes ODL */
  /* applies to any and all product-specific attributes being used. */
  /*   The NUM_VAL = MAX_NUM_PARAMETERVALUE in this MCF must be */
  /* replaced with the ESDT-specific value of the maximum possible */
  /* number of Granule-level ParameterValue instances for this MCF's */
  /* ESDT. */

  GROUP                  = ADDITIONALATTRIBUTES

    OBJECT                 = ADDITIONALATTRIBUTESCONTAINER
      CLASS                = "1"

      /*  AdditionalAttributes */

      OBJECT                 = ADDITIONALATTRIBUTENAME
        CLASS                = "1"
        NUM_VAL              = 1
        VALUE                = "TestingAttribute1"
      END_OBJECT             = ADDITIONALATTRIBUTENAME


      /*  InformationContent */

      GROUP                  = INFORMATIONCONTENT
        CLASS                = "1"

        OBJECT                 = PARAMETERVALUE
          NUM_VAL              = 1
          CLASS                = "1"
          VALUE                = "testingAttributeValue1"
        END_OBJECT             = PARAMETERVALUE

      END_GROUP              = INFORMATIONCONTENT

    END_OBJECT             = ADDITIONALATTRIBUTESCONTAINER

    OBJECT                 = ADDITIONALATTRIBUTESCONTAINER
      CLASS                = "2"

      /*  AdditionalAttributes */

      OBJECT                 = ADDITIONALATTRIBUTENAME
        CLASS                = "2"
        NUM_VAL              = 1
        VALUE                = "TestingAttribute2"
      END_OBJECT             = ADDITIONALATTRIBUTENAME


      /*  InformationContent */

      GROUP                  = INFORMATIONCONTENT
        CLASS                = "2"

        OBJECT                 = PARAMETERVALUE
          NUM_VAL              = 1
          CLASS                = "2"
          VALUE                = "testingAttributeValue2"
        END_OBJECT             = PARAMETERVALUE

      END_GROUP              = INFORMATIONCONTENT

    END_OBJECT             = ADDITIONALATTRIBUTESCONTAINER

    OBJECT                 = ADDITIONALATTRIBUTESCONTAINER
      CLASS                = "3"

      /*  AdditionalAttributes */

      OBJECT                 = ADDITIONALATTRIBUTENAME
        CLASS                = "3"
        NUM_VAL              = 1
        VALUE                = "TestingAttribute3"
      END_OBJECT             = ADDITIONALATTRIBUTENAME


      /*  InformationContent */

      GROUP                  = INFORMATIONCONTENT
        CLASS                = "3"

        OBJECT                 = PARAMETERVALUE
          NUM_VAL              = 1
          CLASS                = "3"
          VALUE                = "testingAttributeValue3"
        END_OBJECT             = PARAMETERVALUE

      END_GROUP              = INFORMATIONCONTENT

    END_OBJECT             = ADDITIONALATTRIBUTESCONTAINER

    OBJECT                 = ADDITIONALATTRIBUTESCONTAINER
      CLASS                = "4"

      /*  AdditionalAttributes */

      OBJECT                 = ADDITIONALATTRIBUTENAME
        CLASS                = "4"
        NUM_VAL              = 1
        VALUE                = "TestingAttribute4"
      END_OBJECT             = ADDITIONALATTRIBUTENAME


      /*  InformationContent */

      GROUP                  = INFORMATIONCONTENT
        CLASS                = "4"

        OBJECT                 = PARAMETERVALUE
          NUM_VAL              = 1
          CLASS                = "4"
          VALUE                = "testingAttributeValue4"
        END_OBJECT             = PARAMETERVALUE

      END_GROUP              = INFORMATIONCONTENT

    END_OBJECT             = ADDITIONALATTRIBUTESCONTAINER

  END_GROUP              = ADDITIONALATTRIBUTES


  /*  OrbitParametersGranule */
  /* The BNF shows 0{OrbitParametersGranule}n which */
  /* consists only of  0{OrbitParametersPointer}n. */
  /* OrbitParametersGranule will not be set by the */
  /* science software but needs to appear in */
  /* INVENTORYMETADATA anyway since SDP Toolkit */
  /* functionality will set this the value of this */
  /* attribute after the completion of the science */
  /* software processing.  OrbitParametersPointer */
  /* will be represented as an array of values and */
  /* not as a Class = "M" ODL structure. */

  GROUP                  = ORBITPARAMETERSGRANULE

    OBJECT                 = ORBITALPARAMETERSPOINTER
      NUM_VAL              = 1
      VALUE                = "NOT SET"
    END_OBJECT             = ORBITALPARAMETERSPOINTER

  END_GROUP              = ORBITPARAMETERSGRANULE


  /* StorageMediumClass */
  /* The B.0 BNF lists  0{StorageMediumClass}n  where */
  /* StorageMediumClass consists only of the StorageMedium */
  /* attribute. The StorageMedium attribute is being */
  /* implemented as an array of values and not as a */
  /* Class = "M" ODL structure. In order to properly */
  /* interface with SDP Toolkit routines it is necessary */
  /* that the MAX_NUM_STORAGEMEDIUM shown here be replaced */
  /* with the ESDT-specific value of the maximum possible */
  /* number of StorageMedium instances for this ESDT. */

  GROUP                  = STORAGEMEDIUMCLASS

    OBJECT                 = STORAGEMEDIUM
      NUM_VAL              = 10
      VALUE                = "NOT SET"
    END_OBJECT             = STORAGEMEDIUM

  END_GROUP              = STORAGEMEDIUMCLASS

END_GROUP              = INVENTORYMETADATA

END
