IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

How to use XML in COBOL


IBM Mainframe Forums -> COBOL Programming
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
kiran_polnati
Warnings : 2

New User


Joined: 23 Jun 2005
Posts: 22

PostPosted: Fri Apr 13, 2007 4:33 pm
Reply with quote

HELLO,

i have tried for xml parser programme . but it was not recognising the xml events .

the example programme only recognising the START-OF-DOCUMENT event only it is not recognising remaining events

its showing xml doc error and xml code 12

control is not going to inner evaluate loop .

can you any please help me in this simple programme


thanks in advance
Code:
  IDENTIFICATION DIVISION.                                   
  PROGRAM-ID.    XML1.                                       
  AUTHOR.        RRR.                                     
  DATE-WRITTEN.  28 SEPT 2006.                               
 ***********************************                         
  ENVIRONMENT DIVISION.                                     
 ***********************************                         
  DATA DIVISION.                                             
  WORKING-STORAGE SECTION.                                   
  01 XML-RECORD.                                             
     02 FILLER  PIC X(21) VALUE '<?XML VERSION="1.0"?>'.     
     02 FILLER  PIC X(10) VALUE '<EMPLOYEE>'.               
     02 FILLER  PIC X(21) VALUE '<FNAME>RAGHU</FNAME>'.     
     02 FILLER  PIC X(23) VALUE '<LNAME>POLNATI</LNAME>'.   
     02 FILLER  PIC X(17) VALUE '<SAL>25624</SAL>'.         
     02 FILLER  PIC X(11) VALUE '</EMPLOYEE>'.               
  01 EMP-RECORD.                                             
     02 FNAME1   PIC X(10).                                 
     02 LNAME1   PIC X(10).   
     02 SAL1     PIC X(10).                               
  01 CURRENT-ELEMENT PIC X(105).                         
  PROCEDURE DIVISION.                                     
  PARA1.                                                 
   *     DISPLAY 'XML EVENT             XML TEXT    '       
        XML PARSE XML-RECORD                               
         PROCESSING PROCEDURE EVENT-HANDLER                 
         ON EXCEPTION                                       
          DISPLAY 'XML DOC ERROR'      XML-CODE           
         NOT ON EXCEPTION                                   
           DISPLAY 'XML DOC SUCCFULLY'                     
        END-XML                                             
                             
        DISPLAY "END OF THE PROGRAM"   
          GOBACK.                                                 
 

  EVENT-HANDLER SECTION.                                       
          IF XML-CODE  = 0                                         
           DISPLAY XML-EVENT  XML-TEXT                             
                                               
           EVALUATE XML-EVENT                                     
           WHEN 'START-OF-DOCUMENT'                               
                                                   
     *       DISPLAY 'START OF DOCUMENT TAG: <' XML-TEXT '>'       
             MOVE XML-TEXT TO CURRENT-ELEMENT                     
             DISPLAY CURRENT-ELEMENT                               
             DISPLAY "3"                                           
          WHEN 'CONTENT-CHARACTERS'                               
                                                   
              DISPLAY XML-EVENT                                     
                                                     
     *        DISPLAY 'CONTENT CHARACTERS: <' XML-TEXT '>'         
         EVALUATE CURRENT-ELEMENT                             
                                             
            WHEN 'FNAME'   
               MOVE XML-TEXT TO FNAME1                   
               DISPLAY FNAME1                           
            WHEN 'LNAME'                                 
               MOVE XML-TEXT TO LNAME1                   
               DISPLAY LNAME1                           
            WHEN 'SAL'                                   
              MOVE XML-TEXT TO SAL1                     
              DISPLAY SAL1                               
            END-EVALUATE                                 
          WHEN 'END-OF-DOCUMENT'                         
            MOVE SPACES TO CURRENT-ELEMENT               
                                   
          WHEN OTHER                                     
            DISPLAY " EVLT OTHER"                       
          END-EVALUATE                                   
         ELSE                                           
          DISPLAY XML-CODE                               
          DISPLAY "ERROR IN PROGRAM"                     
         END-IF                                         
          .                                                                                                         
             
   END PROGRAM XML1.
  *    STOP RUN.   
Back to top
View user's profile Send private message
William Thompson

Global Moderator


Joined: 18 Nov 2006
Posts: 3156
Location: Tucson AZ

PostPosted: Fri Apr 13, 2007 5:11 pm
Reply with quote

According to the manual:
12
A processing instruction target name was ?xml? in lowercase, uppercase, or mixed case.
The parser continues detecting errors until it reaches the end of the document or encounters an error that does not allow continuation. The parser does not signal any further normal events, except for the END-OF-DOCUMENT event.

and
XML declaration: If the document that you are parsing contains an XML declaration, the declaration must begin in the first byte of the document. If the string <?xml starts after the first byte of the document, the parser generates an exception code. The attribute names that are coded in the XML declaration must all be in lowercase characters.
Try this lowercase version:
<?xml version="1.0" ?>
maybe it will help
Back to top
View user's profile Send private message
kiran_polnati
Warnings : 2

New User


Joined: 23 Jun 2005
Posts: 22

PostPosted: Mon Apr 16, 2007 11:58 am
Reply with quote

Thamson
Thanks for your reply

yes it was recognising all events fine , but how to move the actuall data to cobol variables here

i used MOVE XML-TEXT TO FNAME1 (FNAME1 IS COBOL VARIABLE)

next i writeen display " fname is " FNAME1

even this display statement is not working


plese update me if i am wrong

Thanks in advance
Back to top
View user's profile Send private message
William Thompson

Global Moderator


Joined: 18 Nov 2006
Posts: 3156
Location: Tucson AZ

PostPosted: Mon Apr 16, 2007 12:57 pm
Reply with quote

kiran_polnati wrote:
i used MOVE XML-TEXT TO FNAME1 (FNAME1 IS COBOL VARIABLE)
next i writeen display " fname is " FNAME1
even this display statement is not working
You will have to be a little more descriptive han "not working".
Back to top
View user's profile Send private message
kiran_polnati
Warnings : 2

New User


Joined: 23 Jun 2005
Posts: 22

PostPosted: Mon Apr 16, 2007 1:24 pm
Reply with quote

below evaluate CURRENT-ELEMENT

EVALUATE CURRENT-ELEMENT

WHEN 'FNAME'
MOVE XML-TEXT TO FNAME1
DISPLAY "First name is " FNAME1
WHEN 'LNAME'
MOVE XML-TEXT TO LNAME1
DISPLAY "last name is "LNAME1
WHEN 'SAL'
MOVE XML-TEXT TO SAL1
DISPLAY "sal is " SAL1
END-EVALUATE
WHEN 'END-OF-DOCUMENT'
MOVE SPACES TO CURRENT-ELEMENT


COBOL DECLARATION:

01 EMP-RECORD.
02 FNAME1 PIC X(10).
02 LNAME1 PIC X(10).
02 SAL1 PIC X(10).


I WANT TO UPDATE EMP-RECORED

THANKS IN ADVANCE ....
Back to top
View user's profile Send private message
William Thompson

Global Moderator


Joined: 18 Nov 2006
Posts: 3156
Location: Tucson AZ

PostPosted: Mon Apr 16, 2007 5:58 pm
Reply with quote

Code:
EMPLOYEE  *RAGHU     POLNATI   0000025624*                                     
>><?xml version="1.0"?><EMPLOYEE><FNAME>RAGHU</FNAME><LNAME>POLNATI</LNAME><SAL>25624</SAL></EMPLOYEE><<
<START-OF-DOCUMENT             ><?xml version="1.0"?><EMPLOYEE><FNAME>RAGHU</FNAME*
<VERSION-INFORMATION           >1.0*                                           
<START-OF-ELEMENT              >EMPLOYEE*                                       
<START-OF-ELEMENT              >FNAME*                                         
<CONTENT-CHARACTERS            >RAGHU*                                         
<END-OF-ELEMENT                >FNAME*                                         
<START-OF-ELEMENT              >LNAME*                                         
<CONTENT-CHARACTERS            >POLNATI*                                       
<END-OF-ELEMENT                >LNAME*                                         
<START-OF-ELEMENT              >SAL*                                           
<CONTENT-CHARACTERS            >25624*                                         
<END-OF-ELEMENT                >SAL*                                           
<END-OF-ELEMENT                >EMPLOYEE*                                       
<EXCEPTION                     ><?xml version="1.0"?><EMPLOYEE><FNAME>RAGHU</FNAME<LNAME>POLNATI</LNAME><SAL>25624</SAL
></EMPLOYEE> *0000000001*
XML DOC ERROR 0000000001                                                       
EMP-RECORD*RAGHU     POLNATI   25624     *
Code:
       WORKING-STORAGE SECTION.                                       
       77 XMLLEN PIC S9(4) COMP.                                     
       77 CURRENT-ELEMENT PIC X(100).                                 
       01 EMP-RECORD.                                                 
          02 FNAME1   PIC X(10).                                     
          02 LNAME1   PIC X(10).                                     
          02 SAL1     PIC X(10).                                     
       01 EMPLOYEE.                                                   
          02 FNAME    PIC X(10) VALUE 'RAGHU'.                       
          02 LNAME    PIC X(10) VALUE 'POLNATI'.                     
          02 SAL      PIC 9(10) VALUE 25624.                         
       01 XML-RECORD.                                                 
          02 XMLVER  PIC X(21) VALUE '<?XML VERSION="1.0"?>'.         
          02 XMLDAT  PIC X(100).                                     
       PROCEDURE DIVISION.                                           
       PARA1.                                                         
             DISPLAY 'EMPLOYEE  ' '*' EMPLOYEE '*'                   
           XML GENERATE XMLDAT FROM EMPLOYEE                         
               COUNT IN XMLLEN.                                       
           MOVE FUNCTION LOWER-CASE (XMLVER) TO XMLVER.               
           DISPLAY '>>' XML-RECORD(1:XMLLEN + LENGTH OF XMLVER) '<<'.
             XML PARSE XML-RECORD                                     
              PROCESSING PROCEDURE EVENT-HANDLER                     
              ON EXCEPTION                                           
               DISPLAY 'XML DOC ERROR '     XML-CODE                 
              NOT ON EXCEPTION                                       
               DISPLAY 'XML DOC SUCCFULLY'                           
             END-XML                                                 
             DISPLAY 'EMP-RECORD' '*' EMP-RECORD '*'                 
               GOBACK.                                               
       EVENT-HANDLER.                                                 
            EVALUATE XML-EVENT                                       
              WHEN 'START-OF-ELEMENT'                                 
                DISPLAY '<' XML-EVENT '>' XML-TEXT '*'               
                MOVE XML-TEXT TO CURRENT-ELEMENT                     
              WHEN 'CONTENT-CHARACTERS'                               
                DISPLAY '<' XML-EVENT '>' XML-TEXT '*'     
                EVALUATE CURRENT-ELEMENT                   
                 WHEN 'FNAME'                               
                    MOVE XML-TEXT TO FNAME1                 
                 WHEN 'LNAME'                               
                    MOVE XML-TEXT TO LNAME1                 
                 WHEN 'SAL'                                 
                   MOVE XML-TEXT TO SAL1                   
                END-EVALUATE                               
              WHEN 'END-OF-ELEMENT'                         
                DISPLAY '<' XML-EVENT '>' XML-TEXT '*'     
              WHEN 'START-OF-DOCUMENT'                     
                DISPLAY '<' XML-EVENT '>' XML-TEXT(1:50) '*'
              WHEN 'END-OF-DOCUMENT'                       
                DISPLAY '<' XML-EVENT '>' XML-TEXT(1:50) '*'
              WHEN 'VERSION-INFORMATION'                   
                DISPLAY '<' XML-EVENT '>' XML-TEXT '*'     
              WHEN 'ENCODING-DECLARATION'                   
                DISPLAY '<' XML-EVENT '>' XML-TEXT '*'     
              WHEN 'STANDALONE-DECLARATION'                 
                DISPLAY '<' XML-EVENT '>' XML-TEXT '*'     
              WHEN 'ATTRIBUTE-NAME'                         
                DISPLAY '<' XML-EVENT '>' XML-TEXT '*'     
              WHEN 'ATTRIBUTE-CHARACTERS'                   
                DISPLAY '<' XML-EVENT '>' XML-TEXT '*'     
              WHEN 'ATTRIBUTE-CHARACTER'                   
                DISPLAY '<' XML-EVENT '>' XML-TEXT '*'     
              WHEN 'START-OF-CDATA-SECTION'                 
                DISPLAY '<' XML-EVENT '>' XML-TEXT '*'     
              WHEN 'END-OF-CDATA-SECTION'                   
                DISPLAY '<' XML-EVENT '>' XML-TEXT '*'     
              WHEN 'CONTENT-CHARACTER'                     
                DISPLAY '<' XML-EVENT '>' XML-TEXT '*'     
              WHEN 'PROCESSING-INSTRUCTION-TARGET'         
                DISPLAY '<' XML-EVENT '>' XML-TEXT '*'     
              WHEN 'PROCESSING-INSTRUCTION-DATA'           
                DISPLAY '<' XML-EVENT '>' XML-TEXT '*'             
              WHEN 'COMMENT'                                       
                DISPLAY '<' XML-EVENT '>' XML-TEXT '*'             
              WHEN 'EXCEPTION'                                     
                DISPLAY '<' XML-EVENT '>' XML-TEXT '*' XML-CODE '*'
              WHEN OTHER                                           
                DISPLAY '<' XML-EVENT '>' XML-TEXT '*' 'OTHER'     
            END-EVALUATE                                           
            EXIT.                                                 
       END PROGRAM  COBTEST.                                       
Back to top
View user's profile Send private message
kiran_polnati
Warnings : 2

New User


Joined: 23 Jun 2005
Posts: 22

PostPosted: Mon Apr 16, 2007 6:01 pm
Reply with quote

hi

i have requirement i posted it in earlier


here i attached sample programme:


my requirement is <xml1>
<xml2> dfg <xml2>
<xml3> dfg <xml3>
<xml4> dfg <xml4>
<xml5> dfg <xml5>
<xml3>

<xml1>




here i attached programme is simple programme i wanted to updated EMP-RECORED


in this programme

in First EVALUEATE VERB

WHEN 'CONTENT-CHARACTERS'

DISPLAY XML-TEXT

it will display all xml-text


but INNER EVALUATE CURRENT-ELEMENT

NOT GOING TO WORK

the control doesn't go to the inner evalueate verb


please help me how to update EMP-RECORD


AND how to fulfill my requirement please help


thanks in advance
Back to top
View user's profile Send private message
kiran_polnati
Warnings : 2

New User


Joined: 23 Jun 2005
Posts: 22

PostPosted: Tue Apr 17, 2007 2:44 pm
Reply with quote

I AM VERY THANKFULL TO WILLIAM .
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> COBOL Programming

 


Similar Topics
Topic Forum Replies
No new posts Replace each space in cobol string wi... COBOL Programming 3
No new posts COBOL -Linkage Section-Case Sensitive COBOL Programming 1
No new posts COBOL ZOS Web Enablement Toolkit HTTP... COBOL Programming 0
No new posts Calling DFSORT from Cobol, using OUTF... DFSORT/ICETOOL 5
No new posts Generate random number from range of ... COBOL Programming 3
Search our Forums:

Back to Top