   RFC-1303 DEFINITIONS ::= BEGIN

       IMPORTS
           ObjectName, ObjectSyntax
               FROM RFC1155-SMI
           DisplayString
               FROM RFC1213-MIB;

       MODULE-CONFORMANCE MACRO ::=
       BEGIN
           TYPE NOTATION ::=
                             "LAST-UPDATED"
                                 value(update      UTCTime)
                             "PRODUCT-RELEASE"
                                 value(release     DisplayString)
                             "DESCRIPTION"
                                 value(description DisplayString)
                             ModulePart

           VALUE NOTATION ::=      -- agent's sysObjectID --
                             value(VALUE ObjectName)

           ModulePart ::=    Modules
                           | empty

           Modules ::=       Module
                           | Modules Module

           Module ::=                   -- name of module --
                             "SUPPORTS" ModuleName
                             "INCLUDES" "{" Groups "}"
                             VariationPart

           ModuleName ::=    identifier ModuleIdentifier

           ModuleIdentifier ::=
                             value (moduleID OBJECT IDENTIFIER)
                           | empty

           Groups ::=        Group
                           | Groups "," Group

           Group ::=         value(group OBJECT IDENTIFIER)

           VariationPart ::= Variations
                           | empty





           Variations ::=    Variation
                           | Variations Variation

           Variation ::=     "VARIATION" value(object ObjectName)
                             Syntax WriteSyntax Access
                             Creation DefaultValue
                             "DESCRIPTION"
                                 value(limitext DisplayString)

           -- must be a refinement for object's SYNTAX
           Syntax ::=        "SYNTAX" type(SYNTAX)
                           | empty

           -- must be a refinement for object's SYNTAX
           WriteSyntax ::=   "WRITE-SYNTAX" type(WriteSYNTAX)
                           | empty

           Access ::=        "ACCESS" AccessValue
                           | empty

           AccessValue ::=   "read-only"
                           | "read-write"
                           | "write-only"
                           | "not-accessible"

           Creation ::=      "CREATION-REQUIRES" "{" Cells "}"

           Cells ::=         Cell
                           | Cells "," Cell

           Cell ::=          value(cell ObjectName)

           DefaultValue ::=  "DEFVAL"
                             "{" value (defval ObjectSyntax) "}"
                           | empty

       END

