There are a number of different methods that can be used to enable XML file creation in a COBOL program. The methods directly offered by Visual COBOL are documented here:
There are also a set of .NET classes available for XML manipulation.
The COBOL XML Syntax extensions should be used only within a COBOL procedural program that can then be called from within your method. This is because it uses a preprocessor which does not support the class syntax.
A simple example of a program using the COBOL XML syntax is:
$set preprocess(prexml) endp id division. program-id. writexml. environment division. input-output section. file-control. select customers assign to "customers.xml" organization is xml document-type is omitted file status is xml-status. data division. file section. xd customers. 01 customerdb identified by "customerdb" count in customerdb-count. 05 customer-record identified by "customer-record" count in customer-record-count. 10 customer-id pic X(5) identified by "customer-id" count in customer-id-count. 10 customer-name pic X(20) identified by "customer-name" count in customer-name-count. working-storage section. 01 xml-status pic s9(9) value 0. procedure division. open output customers display xml-status move "12345" to customer-id move "john smith" to customer-name write customerdb display xml-status close customers stop run.
If you wish to use the .NET classes directly within your method then an example would be:
$set ilusing "System.Xml" class-id WindowsFormsApplication1.Form1 is partial inherits type System.Windows.Forms.Form. working-storage section. method-id NEW. procedure division. invoke self::InitializeComponent goback. end method. method-id button1_Click final private. procedure division using by value sender as object e as type System.EventArgs. declare writer as type XmlTextWriter = new XmlTextWriter("product.xml", type System.Text.Encoding::UTF8) invoke writer::WriteStartDocument(true) set writer::Formatting to type Formatting::Indented set writer::Indentation to 2 invoke writer::WriteStartElement("Table") invoke createNode("1", "Product 1", "1000", writer) invoke createNode("2", "Product 2", "2000", writer) invoke createNode("3", "Product 3", "3000", writer) invoke createNode("4", "Product 4", "4000", writer) invoke writer::WriteEndElement invoke writer::WriteEndDocument invoke writer::Close invoke type MessageBox::Show("XML File created ! ") goback. end method. method-id createNode public. procedure division using pID as string, pName as string, pPrice as string, writer as type XmlTextWriter. invoke writer::WriteStartElement("Product") invoke writer::WriteStartElement("Product_id") invoke writer::WriteString(pID) invoke writer::WriteEndElement invoke writer::WriteStartElement("Product_name") invoke writer::WriteString(pName) invoke writer::WriteEndElement invoke writer::WriteStartElement("Product_price") invoke writer::WriteString(pPrice) invoke writer::WriteEndElement invoke writer::WriteEndElement goback. end method. end class.