Quantcast
Channel: Visual COBOL - Forum - Recent Threads
Viewing all articles
Browse latest Browse all 4356

RE: XML Syntax in Visual Cobol

$
0
0

 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.

Viewing all articles
Browse latest Browse all 4356

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>