The Repository paragraph allows specification of program-prototypes-names, function-prototype-names, class-names, delegate-names,
                  enum-names, interface-names and property-names that may be used within the scope of this Environment Division. It also allows
                  declaration of intrinsic-function-names that may be used without specifying the word FUNCTION. 
                   
               
            
 
            
            
               General Format
 
               	  
               	 
               Note:  With the exception of function-specifier, references to the following specifiers can now be made without the need to specify
                  them in the REPOSITORY paragraph, by using the 
                  		TYPE 
                     		  external-type-name syntax . The specifiers are listed here for backward compatibility. 
                  	 
               
 
               	  
 
               
              
            
            
               Directives
 
               	  
               	 
                
                  		
                  - In addition to the Compiler directives which provide flagging and modify the reserved word list, the following directives
                     may impact either the syntax or the semantics described in this section. 
                     		  
                      
                        			 
                        - REPOSITORY - Creates a repository file or requests that the program being compiled is checked against the repository file.
                           
                           			 
                        
-  
                           				 
                           				 RDFPATH - specifies the location of the library for the repository files. 
                           			 
                        
- ACTUAL-PARAMS - specifies the parameters to be used in the creation of a class or interface from a parameterized class or
                           interface 
                           			 
                        
 Note: None of these directives are applicable to managed COBOL. 
                        		  
                      
  
            
            
               Syntax Rules
 
               	  
                
                  	 
                  - If any class-name-1, delegate-name-1, enum-name-1, interface-name-2, function-prototype-name-2, intrinsic-function-name-1,
                     property-name-1 or program-prototype-name-1 is specified more than once in the Repository paragraph, all the specifications
                     for that name must be identical. 
                     	 
                  
- Literal-1, literal-2, literal-3, literal-4, literal-5, literal-6 and literal-7 must be nonnumeric literals and must not be
                     figurative constants. 
                     	 
                  
- If the CLASS clause is specified, class-name-2, class-name-3, and interface-name-1 must be: 
                     		
                      
                        		  
                        - Parameters of a containing class definition or interface definition; or 
                           		  
                        
- Defined in the same Repository paragraph where class-name-1 is defined. 
                           		  
                        
 
- If class-name-1 is specified in the USING phrase of the Class-ID paragraph of a class definition containing this Repository
                     paragraph or in the USING phrase of the Interface-ID paragraph of an interface definition containing this Repository paragraph,
                     the EXPANDS phrase must not be specified. 
                     	 
                  
- If the INTERFACE clause is specified, class-name-4, interface-name-3 and interface-name-4 must be: 
                     		
                      
                        		  
                        - Parameters of a containing class definition or interface definition; or 
                           		  
                        
- Defined in the same repository paragraph where interface-name-2 is defined. 
                           		  
                        
 
- If interface-name-2 is specified in the USING phrase of the Class-ID paragraph of a class definition containing this Repository
                     paragraph or in the USING phrase of the Interface-ID paragraph of an interface definition containing this Repository paragraph,
                     the EXPANDS phrase must not be specified. 
                     	 
                  
- Either program-prototype-name-1 must be the name of a program prototype or a program definition specified previously in this
                     compilation group or: 
                     		
                      
                        		  
                        - If literal-3 is not specified, there must be information in the external repository for the program program-prototype-name-1,
                           
                           		  
                        
- If literal-3 is specified, there must be information in the external repository for the program literal-3. 
                           		  
                        
 
- Either function-prototype-name-1 must be the name of a function prototype or a function definition specified previously in
                     this compilation group or: 
                     		
                      
                        		  
                        - If literal-5 is not specified, there must be information in the external repository for the function function-prototype-name-1,
                           
                           		  
                        
- If literal-5 is specified, there must be information in the external repository for the function literal-5. 
                           		  
                        
 
- Intrinsic-function-name-1 must not be specified as a user-defined word within the scope of this Repository paragraph. 
                     	 
                  
- If ALL is specified in the intrinsic format of the function-specifier, none of the names of the intrinsic functions can be
                     specified as a user-defined word within the scope of the Repository paragraph. 
                     	 
                  
- If the specified class-name-1 is the name of the class definition in which this Repository paragraph is specified, references
                     to class-name-1 are to that class definition and this class-specifier is ignored. 
                     	 
                  
- If the specified interface-name-2 is the name of the interface definition in which this Repository paragraph is specified,
                     references to interface-name-2 are to that interface definition and this interface-specifier is ignored. 
                     	 
                  
- If the specified program-prototype-name-1 is the name of the program definition in which this Repository paragraph is specified
                     or the name of a containing program, references to program-prototype-name-1 are to the named program definition and this program-specifier
                     is ignored. 
                     	 
                  
- If the specified function-prototype-name-1 is the name of the function definition in which this Repository paragraph is specified,
                     references to function-prototype-name-1 are to that function definition and this function-specifier is ignored. 
                     	 
                  
- If the specified delegate-name-1 is the name of the delegate definition in which this Repository paragraph is specified, references
                     to delegate-name-1 are to that delegate definition and this delegate-specifier is ignored. 
                     	 
                  
- If the specified enum-name-1 is the name of the enumeration definition in which this Repository paragraph is specified, references
                     to enum-name-1 are to that enumeration definition and this enum-specifier is ignored. 
                     	 
                  
- If the CLASS clause is specified: 
                     		
                      
                        		  
                        - If literal-1 is specified, there must be information in the external repository for the class literal-1. 
                           		  
                        
- If literal-1 is not specified, there must be information in the external repository for the class class-name-1. 
                           		  
                        
 
- If the INTERFACE clause is specified: 
                     		
                      
                        		  
                        - If literal-2 is specified, there must be information in the external repository for the interface literal-2. 
                           		  
                        
- If literal-2 is not specified, there must be information in the external repository for the interface interface-name-2. 
                           		  
                        
 
- If the PROPERTY clause is specified: 
                     		
                      
                        		  
                        - If literal-4 is specified, there must be information in the external repository for the property literal-4 that is part of
                           one of the classes or interfaces that are declared in this Repository paragraph. 
                           		  
                        
- If literal-4 is not specified, there must be information in the external repository for the property property-name-1 that
                           is part of one of the classes or interfaces that are declared in this Repository paragraph. 
                           		  
                        
 
- If the DELEGATE clause is specified: 
                     		
                      
                        		  
                        - If literal-6 is specified, there must be information in the external repository for the delegate definition literal-6. 
                           		  
                        
- If literal-6 is not specified, there must be information in the external repository for the delegate definition literal-6.
                           
                           		  
                        
 
- If the ENUM clause is specified: 
                     		
                      
                        		  
                        - If literal-7 is specified, there must be information in the external repository for the enumeration definition literal-7.
                           
                           		  
                        
- If literal-7 is not specified, there must be information in the external repository for the enumeration definition literal-7.
                           
                           		  
                        
 
  
            
            
               General Rules
 
               	  
                
                  	 
                  - Class-name-1 is the name of a class that may be used throughout the scope of the containing Environment Division. 
                     	 
                  
- If the AS phrase is specified, literal-1, literal-2, literal-3, literal-5 or literal-6 is the name by which the class, interface,
                     program, function or delegate respectively, is known to the operating environment. Literal-4 is the name known to the operating
                     environment for a method that implements the named property. The AS phrase is required when the name of a class, interface,
                     property, function or delegate does not follow the rules for formation of a user-defined word or when the name is case specific.
                     
                     	 
                  
- Class-name-3 and interface-name-1 are actual parameters for the parameterized class referenced by class-name-2. 
                     	 
                  
- Class-name-4 and interface-name-4 are actual parameters for the parameterized interface referenced by interface-name-3. 
                     	 
                  
- If the EXPANDS phrase is specified in a class-specifier, a class class-name-1 is created from the parameterized class class-name-2.
                     The number of parameters in the USING phrase of the EXPANDS phrase of the class-specifier must be the same as the number of
                     parameters in the USING phrase of the CLASS-ID paragraph of class-name-2. The interface for class-name-1 is the interface
                     specified for class-name-2 with the parameters of class-name-2 replaced by the parameters specified in the class-specifier.
                     
                     		
                     The class class-name-1 is created from the parameterized class class-name-2 by replacing each specification of the formal
                        parameter by the corresponding actual parameter. This replacement is done after the processing of COPY and REPLACE statements.
                        
                        		
                      
- The compiler uses the information specified for class-name-1 together with the external repository to determine the details
                     of the class that is to be used. The repository information for the class must be in a file whose name is the externalized
                     name of the class with the extension rdf. If the RDFPATH directive is specified, the file must be in the specified directory;
                     otherwise, the file must be in the local directory where the 
                     		.int and .idy files will be created. 
                     	 
                  
- Interface-name-2 is the name of an interface that may be used throughout the scope of the containing Environment Division.
                     
                     	 
                  
- If the EXPANDS phrase is specified in an interface-specifier, an interface interface-name-2 is created from the parameterized
                     interface interface-name-3. The number of parameters in the USING phrase of the EXPANDS phrase of the interface-specifier
                     must be the same as the number of parameters in the USING phrase of the INTERFACE-ID paragraph of interface-name-3. The interface
                     for interface-name-2 is the interface specified for interface-name-3 with the parameters of interface-name-3 replaced by the
                     parameters specified in the interface-specifier. 
                     		
                     The interface interface-name-2 is created from the parameterized interface interface-name-3 by replacing each specification
                        of the formal parameter by the corresponding actual parameter. This replacement is done after the processing of COPY and REPLACE
                        statements. 
                        		
                      
- The compiler uses the information specified for interface-name-2 together with the external repository to determine the details
                     of the interface that is to be used. The repository information for the interface must be in a file whose name is the externalized
                     name of the interface with the extension rdf. If the RDFPATH directive is specified, the file must be in the specified directory;
                     otherwise, the file must be in the local directory where the 
                     		.int and .idy files will be created. 
                     	 
                  
- Property-name-1 is the name of an object property that may be used throughout the scope of the containing Environment Division.
                     
                     	 
                  
- Program-prototype-name-1 is the name of a program prototype that may be used throughout the scope of the containing Environment
                     Division. 
                     	 
                  
- Delegate-name-1 is the name of a delegate definition that may be used throughout the scope of the containing Environment Division.
                     
                     	 
                  
- Format 2 of the function-specifier is documentary only. 
                     	 
                  
- Intrinsic-function-name-1 may be specified in a function-identifier without being preceded by the word FUNCTION. 
                     	 
                  
- If ALL is specified in the intrinsic format of the function-specifier, it is as if each of the intrinsic-function-names defined
                     in the topic 
                     		Intrinsic Functions were specified. 
                     	 
                  
- Enum-name-1 is the name of an enumeration definition that may be used throughout the scope of the containing Environment Division.
                     
                     	 
                  
- If a prototype definition or a program definition for program-prototype-name-1 is specified previously in this compilation
                     group, that definition is used to determine the details for activating the program identified by program-prototoype-name-1.
                     Otherwise, the external repository is used to determine the details for activating the program with the externalized name
                     program-prototype-name-1 and that program is activated when program-prototype-name-1 is referenced. 
                     	 
                  
- Function-prototype-name-1 is the name of a function prototype that may be used throughout the scope of the containing Environment
                     Division. 
                     	 
                  
- If a prototype definition or a function definition for function-prototype-name-1 is specified previously in this compilation
                     group, that definition is used to determine the details for activating the function identified by function-prototoype-name-1.
                     Otherwise, the external repository is used to determine the details for activating the function with the externalized name
                     function-prototype-name-1 and that function is activated when function-prototype-name-1 is referenced.