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

Not geting END-OF-DOCUMENT in XML PARSE


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

New User


Joined: 12 Jun 2008
Posts: 12
Location: Pune

PostPosted: Mon Nov 17, 2008 9:19 pm
Reply with quote

Hi Following is my code :-

Code:
057500*                                                           
057600     XML PARSE WS-XML-STRING-DATA                   
057700     PROCESSING PROCEDURE 4000-XML-HANDLER                   
057800                     THRU 4000-EXIT                         
057900      ON EXCEPTION                                           
058000         IF  XML-CODE = +1                                   
058100             MOVE 0              TO XML-CODE                 
058200         ELSE                                               
058300             SET WS-XML-PARSE-ERR-YES                       
058400                                 TO TRUE                     
059300             PERFORM 9100-ERROR                             
059400                THRU 9100-EXIT                               
059500             PERFORM 9999-END                               
059600                THRU 9999-EXIT                               
059700         END-IF                                             
059800       NOT ON EXCEPTION                                     
059900         CONTINUE                                           
060000     END-XML.                                               
060100     .                                                       


Processing procedure:-

070100 4000-XML-HANDLER.                                               
070200******************************************************************
070300* VARIOUS XML EVENTS ARE IDENTIFIED IN THIS PARAGRAPH.           *
070400******************************************************************
070500*                                                                 
070800*                                                                 
070900     EVALUATE XML-EVENT                                           
071000         WHEN 'START-OF-ELEMENT'                                 
071100              MOVE XML-TEXT      TO WS-CURRENT-ELEMENT           
071200         WHEN 'CONTENT-CHARACTERS'                               
071300              EVALUATE WS-CURRENT-ELEMENT                         
071400                  WHEN 'ERR-CODE'                                 
071500                  WHEN 'err-code'                                 
071600                       MOVE XML-TEXT                             
071700                                 TO WS-ERR-CODE                   
071800                  WHEN 'TRACK-ID'                                 
071900                  WHEN 'track-id'                                 
072000                       MOVE XML-TEXT                             
072100                                 TO WS-TRACK                     
072200                  WHEN 'DA-RESP-CODE'                             
072300                  WHEN 'da-resp-code'                             
072400                       MOVE XML-TEXT                             
072500                                 TO WS-DA-RESP                   
072600                  WHEN 'DESC-PAYLD'                               
072700                  WHEN 'desc-payld'                               
072800                       MOVE XML-TEXT                             
072900                                 TO WS-DESC-PAYLD                 
073000              END-EVALUATE                                       
073100         WHEN 'END-OF-ELEMENT'                                   
073200              MOVE SPACES        TO WS-CURRENT-ELEMENT           
073300         WHEN 'START-OF-DOCUMENT'                                 
073400              COMPUTE WS-XML-DOCUMENT-LENGTH = FUNCTION           
073500                                       LENGTH(XML-TEXT)           
073600         WHEN 'END-OF-DOCUMENT'                                   
073700         WHEN 'VERSION-INFORMATION'                               
073800         WHEN 'ENCODING-DECLARATION'                           
073900         WHEN 'STANDALONE-DECLARATION'                         
074000         WHEN 'ATTRIBUTE-NAME'                                 
074100         WHEN 'ATTRIBUTE-CHARACTERS'                           
074200         WHEN 'ATTRIBUTE-CHARACTER'                             
074300         WHEN 'START-OF-CDATA-SECTION'                         
074400         WHEN 'END-OF-CDATA-SECTION'                           
074500         WHEN 'CONTENT-CHARACTER'                               
074600         WHEN 'PROCESSING-INSTRUCTION-TARGET'                   
074700         WHEN 'PROCESSING-INSTRUCTION-DATA'                     
074800         WHEN 'COMMENT'                                         
074900         WHEN 'EXCEPTION'                                       
075000              COMPUTE WS-XML-DOCUMENT-LENGTH =                 
075100                       FUNCTION LENGTH (XML-TEXT)               
075200         WHEN OTHER                                             
075300              SET WS-XML-PARSE-ERR-YES                         
075400                                 TO TRUE                       
076100              PERFORM 9100-ERROR                               
076200                 THRU 9100-EXIT                                 
076300              PERFORM 9999-END                                 
076400                 THRU 9999-EXIT                                 
076500     END-EVALUATE.                                             
076600     .                                                         
076700 4000-EXIT.                                                     
076800     EXIT.                                                     
076900 EJECT.                                                         
077000*           


My input xml string is :-

Code:
<dem-config><header><param name="app-id">AAPS</param><param name="req-type">DECISIONING</param><param name="req-fmt">BYTE</param><param name="code-page">cp285</param><param name="is-base64">TRUE</param></header><desc-payld>wsPW1ePZ1tMAAAIcx5OWgoGTQEDE1+JAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDx8fHx8fHx8fHw</desc-payld><non-desc-payld></non-desc-payld></dem-config>


XML PARSE runs fine till </dem-config>
After i guess it should encounter XML EVENT as END-OF-DOCUMENT but of this it gives 'EXCEPTION'. with XML-CODE = +1
This if first time I am using parsing so asking this. I searched on Type_Description_Herehttp://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/handheld/Connected/BOOKS/IGY3PG20/APPENDIX1.4.1?DT=20040220035836#HDRWQ1092

there I got XML-CODE = +1 as The parser found an invalid character while scanning white space outside element content .
Same way I learned that if we set XML-CODE to 0 we can continue parsing till END-OF-DOCUMENT event.
I am still getting EXCEPTION. What needs to be done to get that?
Please advice if I am doing smething wrong.

My apologies for so much of code lines.
Back to top
View user's profile Send private message
Marso

REXX Moderator


Joined: 13 Mar 2006
Posts: 1353
Location: Israel

PostPosted: Mon Nov 17, 2008 9:53 pm
Reply with quote

Why do you need this "COMPUTE WS-XML-DOCUMENT-LENGTH = ..." ?

Maybe you can simplify and check only what you need:
Code:
070900     EVALUATE XML-EVENT                                           
071000         WHEN 'START-OF-ELEMENT'                                 
071100              MOVE XML-TEXT      TO WS-CURRENT-ELEMENT           
071200         WHEN 'CONTENT-CHARACTER'                               
071200         WHEN 'CONTENT-CHARACTERS'                               
071300              EVALUATE WS-CURRENT-ELEMENT                         
071400                  WHEN 'ERR-CODE'   
                              ...                             
073000              END-EVALUATE                                       
075200         WHEN OTHER                                             
075300              CONTINUE
076500     END-EVALUATE.                                             
076600     .                                                         
076700 4000-EXIT.                                                     
076800     EXIT.                                                     
Back to top
View user's profile Send private message
udaysnimje

New User


Joined: 12 Jun 2008
Posts: 12
Location: Pune

PostPosted: Mon Nov 17, 2008 11:09 pm
Reply with quote

Thanks Marso.. But that really dosen't solve my problem..

Now new thing I have noticed. after each run of XML-EVENT, program control goes to 4000-EXIT and from there it goes to end of the program and then again back to 4000-XML-HANDLER.

I put the Code in XPED and followed each event. With and without Marso's suggession. Still same response. after changes obviously it was much faster. But still geting EXCEPTION at END.

I looked at the data putting HEX ON there are no charactors other than spaces after end. Dont know why am I geting XML-CODE = +1 ?
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 PARSE Syntax for not fix length word ... JCL & VSAM 7
No new posts INREC PARSE used to sort a CSV file DFSORT/ICETOOL 2
No new posts JSON transform using CICS bundles vs.... CICS 3
No new posts JSON PARSE in Enterprise COBOL COBOL Programming 2
No new posts PARSE using REPEAT DFSORT/ICETOOL 1
Search our Forums:

Back to Top