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

  		 DATA_LOCATION	= "MCF"

   		 VALUE		= ("MODIS")

		 TYPE 		= "STRING"

		 NUM_VAL 	= 1

		 Mandatory	= "FALSE"

	END_OBJECT = INSTRUMENT_NAME

	OBJECT  = SOURCE_SHORT_NAME

   		DATA_LOCATION	= "PGE"

    		VALUE		= "DARRELL"
		
		TYPE 		= "STRING"
		
		NUM_VAL         = 1

		Mandatory       = "FALSE"

	END_OBJECT = SOURCE_SHORT_NAME

	OBJECT  = GRING_POLYGON

   		 DATA_LOCATION	= "PGE"

		 VALUE          = 2.1

		 TYPE = "DOUBLE"

		 NUM_VAL   = 1

		 Mandatory  =  "FALSE"

		

	END_OBJECT = GRING_POLYGON

	OBJECT  = ORBIT_INCLINATION

   		 DATA_LOCATION	= "PGE"

   		 VALUE = 2.78

		 TYPE =  "DOUBLE"

		 NUM_VAL       = 1
 
		 Mandatory     = "FALSE"

	END_OBJECT = ORBIT_INCLINATION

	OBJECT  =  ORBIT_NUMBER

		DATA_LOCATION	= "PGE"

		VALUE		= 3648

		TYPE		= "INTEGER"

		NUM_VAL         = 1

		Mandatory	= "TRUE"

	END_OBJECT  = ORBIT_NUMBER

	OBJECT  = ECCENTRICITY

		DATA_LOCATION	= "PGE"

		VALUE		= 0.123

		TYPE            = "DOUBLE"
 
		NUM_VAL         = 1

		Mandatory       = "FALSE"

	END_OBJECT  = ECCENTRICITY
/*		OBJECT = CLARK */
			
			OBJECT = CLARK_88
				DATA_LOCATION  	= "PGE"

				VALUE		= 1.000000 

				TYPE            = "DOUBLE"

				NUM_VAL         = 1

				Mandatory       = "FALSE"

			END_OBJECT  = CLARK_88
			OBJECT = CLARK_66
                                DATA_LOCATION   = "PGE"

                                VALUE           = (0, 12, 13)

				TYPE            = "INTEGER"

				NUM_VAL         = 3

				Mandatory       = "FALSE"

                        END_OBJECT  = CLARK_66

/*		END_OBJECT  = CLARK */


/* FOR TESTING PURPOSES */

   OBJECT = IMAGES

    DATA_LOCATION       = "PGE"

    VALUE		= 3

    LINES 		= (800, 400)
    
    SAMPLE_BITS2 	= 8 

    GRID                = ((1,2,3) (4,5,6))

    LINE_SAMPLES 	= 6

    SAMPLE_TYPE	 	= "UNSIGNED_INTEGER"

    TYPE = "INTEGER"
    NUM_VAL = 1 

    MANDATORY		= "FALSE"
   END_OBJECT = IMAGES

	OBJECT = TEST_PARM

	    DATA_LOCATION       = "PCF"
	    VALUE               = 5
	    TYPE                = "INTEGER"
            NUM_VAL             = 5
	    MANDATORY           = "FALSE"
	    

	END_OBJECT = TEST_PARM


	OBJECT = TEST_PARM_DOUBLE
		DATA_LOCATION       = "MCF"
		VALUE = 0.0985
		TYPE  = "DOUBLE"
		NUM_VAL = 1
		Mandatory = "FALSE"
	END_OBJECT = TEST_PARM_DOUBLE

	OBJECT = TEST_PARM_STRING
                DATA_LOCATION       = "MCF"
		VALUE = "SAT_0"
		TYPE = "STRING"
		NUM_VAL = 1
		Mandatory = "FALSE"
        END_OBJECT = TEST_PARM_STRING

GROUP = TEST_PARM_STRINGS_CON
        CLASS = M
        DATA_LOCATION       = MCF
        MANDATORY = FALSE
        OBJECT = TEST_PARM_STRINGS
                CLASS = M
                DATA_LOCATION       = MCF
                VALUE = ("Richard", "Morris")
                Type            = "STRING"
                NUM_VAL         = 2
                MANDATORY = FALSE
        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

        /*  Note: SizeMBECSDataGranule will be set by DSS,  */
        /*  not by the science software.                    */
        OBJECT = SizeMBECSDataGranule
            Data_Location = "DSS"
            NUM_VAL = 1
            TYPE = "DOUBLE"
            Mandatory = "FALSE"
        END_OBJECT = SizeMBECSDataGranule

        OBJECT = ReprocessingPlanned
            Data_Location = "PGE"
            NUM_VAL = 1
            TYPE = "STRING"
            Mandatory = "TRUE"
        END_OBJECT = ReprocessingPlanned

        OBJECT = ReprocessingActual
            Data_Location = "PGE"
            NUM_VAL = 1
            TYPE = "STRING"
            Mandatory = "TRUE"
        END_OBJECT = ReprocessingActual

        OBJECT = LocalGranuleID
            Data_Location = "PGE"
            NUM_VAL = 1
            TYPE = "STRING"
            Mandatory = "TRUE"
        END_OBJECT = LocalGranuleID

        OBJECT = DayNightFlag
            Data_Location = "PGE"
            NUM_VAL = 1
            TYPE = "STRING"
            Mandatory = "TRUE"
        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
            Data_Location = "TK"
            NUM_VAL = 1
            TYPE = "DATETIME"
            Mandatory = "TRUE"
        END_OBJECT = ProductionDateTime

        OBJECT = LocalVersionID
            Data_Location = "PGE"
            NUM_VAL = 1
            TYPE = "STRING"
            Mandatory = "TRUE"
        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

            Data_Location = "NONE"
            Class = "M"
            Mandatory = "TRUE"

            OBJECT = ParameterName
                Data_Location = "PGE"
                Class = "M"
                TYPE = "STRING"
                NUM_VAL = 1
                Mandatory = "TRUE"
            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 = "M"

                OBJECT = AutomaticQualityFlag
                    Data_Location = "PGE"
                    Mandatory = "TRUE"
                    TYPE = "STRING"
                    NUM_VAL = 1
                END_OBJECT = AutomaticQualityFlag

                OBJECT = AutomaticQualityFlagExplanation
                    Data_Location = "PGE"
                    Mandatory = "TRUE"
                    TYPE = "STRING"
                    NUM_VAL = 1
                END_OBJECT = AutomaticQualityFlagExplanation

                OBJECT = OperationalQualityFlag
                    Data_Location = "DAAC"
                    Mandatory = "FALSE"
                    TYPE = "STRING"
                    NUM_VAL = 1
                END_OBJECT = OperationalQualityFlag

                OBJECT = OperationalQualityFlagExplanation
                    Data_Location = "DAAC"
                    Mandatory = "FALSE"
                    TYPE = "STRING"
                    NUM_VAL = 1
                END_OBJECT = OperationalQualityFlagExplanation

                OBJECT = ScienceQualityFlag
                    Data_Location = "DP"
                    Mandatory = "FALSE"
                    TYPE = "STRING"
                    NUM_VAL = 1
                END_OBJECT = ScienceQualityFlag

                OBJECT = ScienceQualityFlagExplanation
                    Data_Location = "DP"
                    Mandatory = "FALSE"
                    TYPE = "STRING"
                    NUM_VAL = 1
                END_OBJECT = ScienceQualityFlagExplanation

            END_GROUP = QAFlags

            /* QAStats */
            GROUP = QAStats

                Class = "M"

                OBJECT = QAPercentInterpolatedData
                    Data_Location = "PGE"
                    NUM_VAL = 1
                    TYPE = "INTEGER"
                    Mandatory = "TRUE"
                END_OBJECT = QAPercentInterpolatedData

                OBJECT = QAPercentMissingData
                    Data_Location = "PGE"
                    NUM_VAL = 1
                    TYPE = "INTEGER"
                    Mandatory = "TRUE"
                END_OBJECT = QAPercentMissingData

                OBJECT = QAPercentOutofBoundsData
                    Data_Location = "PGE"
                    NUM_VAL = 1
                    TYPE = "INTEGER"
                    Mandatory = "TRUE"
                END_OBJECT = QAPercentOutofBoundsData

                OBJECT = QAPercentCloudCover
                    Data_Location = "PGE"
                    NUM_VAL = 1
                    TYPE = "INTEGER"
                    Mandatory = "TRUE"
                END_OBJECT = QAPercentCloudCover

            END_GROUP = QAStats

        END_OBJECT = MeasuredParameterContainer

    END_GROUP = MeasuredParameter

    GROUP = GPOLYGON
 
        OBJECT = GPOLYGONCONTAINER
 
            Data_Location = "MCF"
            NUM_VAL = 1
            CLASS = "1"
            Mandatory = "TRUE"
 
        GROUP = GRING
 
            CLASS = "1"
 
            OBJECT = EXCLUSIONGRINGFLAG
                Data_Location = "MCF"
                NUM_VAL = 1
                CLASS = "1"
                VALUE = "N"
                Mandatory = "TRUE"
                TYPE = "STRING"
            END_OBJECT = EXCLUSIONGRINGFLAG
 
        END_GROUP = GRING
 
        GROUP = GRINGPOINT
 
            CLASS = "1"
 
            OBJECT = GRINGPOINTLATITUDE
                Data_Location = "MCF"
                NUM_VAL =6
                CLASS = "1"
                VALUE = (23.34,34.234,80.0, 80.0, -80.0, -80.0)
                Mandatory = "TRUE"
                TYPE = "DOUBLE"
            END_OBJECT = GRINGPOINTLATITUDE
 
            OBJECT = GRINGPOINTLONGITUDE
                Data_Location = "MCF"
                NUM_VAL = 4
                CLASS = "1"
                VALUE = (-100.0, 100.0, 100.0, -100.0)
                Mandatory = "TRUE"
 
                TYPE = "DOUBLE"
            END_OBJECT = GRINGPOINTLONGITUDE
 
            OBJECT = GRINGPOINTSEQUENCENO
                Data_Location = "MCF"
                NUM_VAL = 4
                CLASS = "1"
                VALUE = (1.0, 2.0, 3.0, 4.0)
                Mandatory = "TRUE"
                TYPE = "DOUBLE"
            END_OBJECT = GRINGPOINTSEQUENCENO
 
        END_GROUP = GRINGPOINT
 
        END_OBJECT = GPOLYGONCONTAINER
 
    END_GROUP = GPOLYGON
 
    GROUP = GPOLYGON
 
        OBJECT = GPOLYGONCONTAINER
 
            Data_Location = "MCF"
            NUM_VAL = 1
            CLASS = "2"
            Mandatory = "TRUE"
 
        GROUP = GRING
 
            CLASS = "2"
 
            OBJECT = EXCLUSIONGRINGFLAG
                Data_Location = "MCF"
                NUM_VAL = 1
                CLASS = "2"
                VALUE = "23.45"
                Mandatory = "TRUE"
                TYPE = "DOUBLE"
            END_OBJECT = EXCLUSIONGRINGFLAG
 
        END_GROUP = GRING
 
        GROUP = GRINGPOINT
 
            CLASS = "2"
 
            OBJECT = GRINGPOINTLATITUDE
                Data_Location = "MCF"
                NUM_VAL =6
                CLASS = "2"
                VALUE = (0.0, 123., +1234.56, -.9981,-1.E-3,.31459e1)
                Mandatory = "TRUE"
                TYPE = "DOUBLE"
            END_OBJECT = GRINGPOINTLATITUDE
 
            OBJECT = GRINGPOINTLONGITUDE
                Data_Location = "MCF"
                NUM_VAL = 4
                CLASS = "2"
                VALUE = (-120.0, 120.0, 120.0, -120.0)
                Mandatory = "TRUE"
                TYPE = "DOUBLE"
            END_OBJECT = GRINGPOINTLONGITUDE
 
            OBJECT = GRINGPOINTSEQUENCENO
                Data_Location = "MCF"
                NUM_VAL = 4
                CLASS = "2"
                VALUE = (.11, .22, .33, .44)
                Mandatory = "TRUE"
                TYPE = "DOUBLE"
            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

                Data_Location = "NONE"
                Class = "M"
                Mandatory = "TRUE"

                OBJECT = OrbitalModelName
                    Data_Location = "PGE"
                    Mandatory = "TRUE"
                    Class = "M"
                    TYPE = "STRING"
                    NUM_VAL = 1
                END_OBJECT = OrbitalModelName

                OBJECT = OrbitNumber
                    Data_Location = "PGE"
                    Mandatory = "TRUE"
                    Class = "M" 
                    TYPE = "INTEGER"
                    NUM_VAL = 1
                END_OBJECT = OrbitNumber

                OBJECT = StartOrbitNumber
                    Data_Location = "PGE"
                    Mandatory = "TRUE"
                    Class = "M" 
                    TYPE = "INTEGER"
                    NUM_VAL = 1
                END_OBJECT = StartOrbitNumber

                OBJECT = StopOrbitNumber
                    Data_Location = "PGE"
                    Mandatory = "TRUE"
                    Class = "M" 
                    TYPE = "INTEGER"
                    NUM_VAL = 1
                END_OBJECT = StopOrbitNumber

                OBJECT = EquatorCrossingLongitude
                    Data_Location = "PGE"
                    Mandatory = "TRUE"
                    Class = "M" 
                    TYPE = "DOUBLE"
                    NUM_VAL = 1
                END_OBJECT = EquatorCrossingLongitude

                OBJECT = EquatorCrossingTime
                    Data_Location = "PGE"
                    Mandatory = "TRUE"
                    Class = "M" 
                    TYPE = "TIME"
                    NUM_VAL = 1
                END_OBJECT = EquatorCrossingTime

                OBJECT = EquatorCrossingDate
                    Data_Location = "PGE"
                    Mandatory = "TRUE"
                    Class = "M" 
                    TYPE = "DATE"
                    NUM_VAL = 1
                END_OBJECT = EquatorCrossingDate

        END_OBJECT = OrbitCalculatedSpatialDomainContainer
    END_GROUP = OrbitCalculatedSpatialDomain

/* CollectionDescriptionClass */
    GROUP = CollectionDescriptionClass

        OBJECT = ShortName
            Data_Location = "MCF"
            NUM_VAL = 1
            TYPE = "STRING"
            Mandatory = "TRUE"
            Value = "L7ORF1"  
        END_OBJECT = ShortName

        OBJECT = VersionID
            Data_Location = "MCF"
            NUM_VAL = 1
            TYPE = "STRING"
            Mandatory = "TRUE"
            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
                    Data_Location = "PGE"
                    NUM_VAL = 1
                    TYPE = "STRING"
                    Mandatory = "TRUE"
                END_OBJECT = ZoneIdentifier
            END_GROUP = ZoneIdentifierClass

          /*  BoundingRectangle  */
            GROUP = BoundingRectangle
                OBJECT = WestBoundingCoordinate
                    Data_Location = "PGE"
                    NUM_VAL = 1
                    TYPE = "DOUBLE"
                    Mandatory = "TRUE"
                END_OBJECT = WestBoundingCoordinate

                OBJECT = NorthBoundingCoordinate
                    Data_Location = "PGE"
                    NUM_VAL = 1
                    TYPE = "DOUBLE"
                    Mandatory = "TRUE"
                END_OBJECT = NorthBoundingCoordinate

                OBJECT = EastBoundingCoordinate
                    Data_Location = "PGE"
                    NUM_VAL = 1
                    TYPE = "DOUBLE"
                    Mandatory = "TRUE"
                END_OBJECT = EastBoundingCoordinate

                OBJECT = SouthBoundingCoordinate
                    Data_Location = "PGE"
                    NUM_VAL = 1
                    TYPE = "DOUBLE"
                    Mandatory = "TRUE"
                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
            Data_Location = "PGE"
            NUM_VAL = 1
            TYPE = "TIME"
            Mandatory = "TRUE"
        END_OBJECT = RangeBeginningTime

        OBJECT = RangeEndingTime
            Data_Location = "PGE"
            NUM_VAL = 1
            TYPE = "TIME"
            Mandatory = "TRUE"
        END_OBJECT = RangeEndingTime

        OBJECT = RangeBeginningDate
            Data_Location = "PGE"
            NUM_VAL = 1
            TYPE = "DATE"
            Mandatory = "TRUE"
        END_OBJECT = RangeBeginningDate

        OBJECT = RangeEndingDate
            Data_Location = "PGE"
            NUM_VAL = 1
            TYPE = "DATE"
            Mandatory = "TRUE"
        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

               Data_Location = "NONE"
               Class = "M"
               Mandatory = "TRUE"

                /*  AdditionalAttributes  */
                OBJECT = AdditionalAttributeName
                    Data_Location = "PGE"
                    Mandatory = "TRUE"
                    TYPE = "STRING"
                    Class = "M"
                    NUM_VAL = 1
                END_OBJECT = AdditionalAttributeName

                /*  InformationContent  */
                GROUP = InformationContent

                    Class = "M"

                    OBJECT = ParameterValue
                        Data_Location = "PGE"
                        Mandatory = "TRUE"
                        TYPE = "STRING"
                        NUM_VAL = 1 
                    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
                Data_Location = "PGE"
                Mandatory = "TRUE"
                TYPE = "STRING"
                NUM_VAL = 1 
            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
                Data_Location = "PGE"
                NUM_VAL = 10
                TYPE = "STRING"
                Mandatory = "TRUE"
            END_OBJECT = StorageMedium
        END_GROUP = StorageMediumClass



END_GROUP = INVENTORYMETADATA

GROUP = ARCHIVEDMETADATA
 
END_GROUP = ARCHIVEDMETADATA

GROUP = COREDATA1
        GROUPTYPE = MASTERGROUP
 
        OBJECT = TEST_PARM_STRINGS
                DATA_LOCATION       = MCF
                Type            = "STRING"
                NUM_VAL         = 2
                VALUE = ("Alward", "Nawazish")
                MANDATORY = TRUE
        END_OBJECT = TEST_PARM_STRINGS
END_GROUP = COREDATA1
 
GROUP = PRODUCT_SPECIFIC_DATA
GROUPTYPE = MASTERGROUP
END_GROUP = PRODUCT_SPECIFIC_DATA
 
END
