Directive set references are a useful way of having a set of files which use directives that the application needs for different groups of programs.
Use the following .mfdirset schema and modify the elements as required. Alternatively, you could copy an existing .mfdirset and modify that, for example, copy Program1.cbl.mfdirset to Program2.cbl.mfdirset:
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://microfocus.com/directivesset" xmlns:tns="http://microfocus.com/directivesset" elementFormDefault="qualified" version="1.0"> <xs:annotation> <xs:appinfo>Directives set definition</xs:appinfo> <xs:documentation xml:lang="en">This schema defines the format of the directives set files </xs:documentation> </xs:annotation> <xs:element name="dirset" type="tns:dirsetType"/> <xs:complexType name="dirsetType"> <xs:annotation> <xs:documentation xml:lang="en">Root element type </xs:documentation> </xs:annotation> <xs:sequence minOccurs="1" maxOccurs="unbounded"> <xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:element ref="tns:reference" /> </xs:sequence> <xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:element ref="tns:directive" minOccurs="0" maxOccurs="unbounded" /> <xs:element ref="tns:ecm" minOccurs="0" maxOccurs="unbounded" /> <xs:element ref="tns:preprocessor" minOccurs="0" maxOccurs="unbounded" /> <xs:element ref="tns:category" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:sequence> <xs:attribute name="schemaVersion" type="xs:decimal" use="required" fixed="1.0"> <xs:annotation> <xs:documentation xml:lang="en">Schema version used to create the directives set. </xs:documentation> </xs:annotation> </xs:attribute> </xs:complexType> <xs:element name="reference"> <xs:annotation> <xs:documentation xml:lang="en">Reference to another directives set </xs:documentation> </xs:annotation> <xs:complexType> <xs:attribute name="file" type="xs:string" use="required"> <xs:annotation> <xs:documentation xml:lang="en">Location of another directives set file. Path can be relative to referring file. </xs:documentation> </xs:annotation> </xs:attribute> </xs:complexType> </xs:element> <xs:element name="directive"> <xs:annotation> <xs:documentation xml:lang="en">An individual directive </xs:documentation> </xs:annotation> <xs:complexType> <xs:attribute name="id" type="xs:string" use="required"> <xs:annotation> <xs:documentation xml:lang="en">Unique identifier of the directive. If possible the id should match the name of the directive within the relevant settings.xml file (for example, plisettings.xml). Where the directive is not defined in the settings xml any unique string may be used. Note: This id string is used when matching directives to IDE GUI elements. </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="name" type="xs:string" use="required"> <xs:annotation> <xs:documentation xml:lang="en">The name of the directive. Used to create the command-line directive. </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="value" type="xs:string" use="optional"> <xs:annotation> <xs:documentation xml:lang="en">The value of the directive, will be appended to the name to form the command-line directive. </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="no" type="xs:boolean" use="optional" default="false"> <xs:annotation> <xs:documentation xml:lang="en">Set to true if the directive should be prefixed with NO. For example, NOWARNING. </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="handler" type="xs:string" use="optional"> <xs:annotation> <xs:documentation xml:lang="en">The id of the directive handler. Used to categorize the directive within the UI. </xs:documentation> </xs:annotation> </xs:attribute> </xs:complexType> </xs:element> <xs:element name="preprocessor"> <xs:annotation> <xs:documentation xml:lang="en">A single integrated preprocessor </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element ref="tns:directive" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> <xs:attribute name="id" type="xs:string" use="required"> <xs:annotation> <xs:documentation xml:lang="en">The identifier of the preprocessor. This is the name of the preprocessor For example, "Micro Focus - CP Preprocessor". The id forms a namespace with ecm and category elements such that other elements with the same id can override settings. </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="vendor" type="xs:string" use="optional"> <xs:annotation> <xs:documentation xml:lang="en"> Vendor identifier, may be used to pair the directive with registry settings. </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="enabled" type="xs:boolean" default="true" use="optional"> <xs:annotation> <xs:documentation xml:lang="en"> True if the integrated preprocessor is enabled. </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="stackable" type="xs:boolean" default="true" use="optional"> <xs:annotation> <xs:documentation xml:lang="en"> True if the integrated preprocessor supports stacking with other preprocessors. </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="bgpEnabled" type="xs:boolean" default="true" use="optional"> <xs:annotation> <xs:documentation xml:lang="en"> True if the integrated preprocessor can be used whilst background parsing, this is true if the CP preprocessor is used to read the source code rather than the preprocessor directly access the source files. </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="location" type="xs:string" use="required"> <xs:annotation> <xs:documentation xml:lang="en"> The PREPROCESS directive including the location of the preprocessor to use to invoke the preprocessor. Excludes the preprocessor's own directives and terminating ENDP directive <br /> For example, p(location) </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="directives" type="xs:string" use="optional"> <xs:annotation> <xs:documentation xml:lang="en"> One of this attribute or the use of directive elements is required. The directives for the preprocessor specified by the location attribute. Excludes the ENDP directive. <br /> For example, prep-dir1 prep-dir2 </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="handler" type="xs:string" use="optional"> <xs:annotation> <xs:documentation xml:lang="en"> The id of the directive handler. Used to categorize the directive within the UI. </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="editable" type="xs:boolean" default="true" use="optional"> <xs:annotation> <xs:documentation xml:lang="en"> True if the integrated preprocessor can be edited within the UI. </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="predefinedId" type="xs:integer" default="0" use="optional"> <xs:annotation> <xs:documentation xml:lang="en"> Identifier of the predefined preprocessor, may be used to pair the directive with registry settings. Set to 0 when the preprocessor was defined within the UI rather than being predefined by the system. </xs:documentation> </xs:annotation> </xs:attribute> </xs:complexType> </xs:element> <xs:element name="ecm"> <xs:annotation> <xs:documentation xml:lang="en">A single external compiler module </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element ref="tns:directive" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> <xs:attribute name="id" type="xs:string" use="required"> <xs:annotation> <xs:documentation xml:lang="en">Unique ECM identifier. The id forms a namespace with preprocessor and category elements such that other elements with the same id can override settings </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="prefix" type="xs:string" use="optional"> <xs:annotation> <xs:documentation xml:lang="en">Prefix to the ECM command-line directives. For example, "SQL(". Output before any ECM directives. Different values would be specified for PL/I and COBOL directives sets, for example, the PL/I equivalent might be -sql odbc -optsql" </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="postfix" type="xs:string" use="optional"> <xs:annotation> <xs:documentation xml:lang="en">Suffix to the ECM command-line directives. For example, ")". Output after any ECM directives. Different values would be specified for PL/I and COBOL directives sets, for example, the PL/I equivalent might be " </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="handler" type="xs:string" use="optional"> <xs:annotation> <xs:documentation xml:lang="en">The id of the directive handler. Used to categorize the directive within the UI. </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="enabled" type="xs:boolean" default="true" use="optional"> <xs:annotation> <xs:documentation xml:lang="en">True if the ecm is enabled. If false the child directive elements are not used unless another instance of the element in another dirset file overrides the setting to true. </xs:documentation> </xs:annotation> </xs:attribute> </xs:complexType> </xs:element> <xs:element name="category"> <xs:annotation> <xs:documentation xml:lang="en">A group of directives which can be enabled and disabled </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element ref="tns:directive" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> <xs:attribute name="id" type="xs:string" use="required"> <xs:annotation> <xs:documentation xml:lang="en">Unique category identifier. The id forms a namespace with ecm and preprocessor elements such that other elements with the same id can override settings </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="handler" type="xs:string" use="optional"> <xs:annotation> <xs:documentation xml:lang="en">The id of the directive handler. Used to categorize the directive within the UI. </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="enabled" type="xs:boolean" default="true" use="optional"> <xs:annotation> <xs:documentation xml:lang="en">True if the category is enabled. If false the child directive elements are not used unless another instance of the element in another dirset file overrides the setting to true. </xs:documentation> </xs:annotation> </xs:attribute> </xs:complexType> </xs:element> </xs:schema>