Portal | Manuals | References | Downloads | Info | Programs | JCLs | Master the Mainframes
IBM Mainframe Computers Forums Index
 
Register
 
IBM Mainframe Computers Forums Index Mainframe: Search IBM Mainframe Forum: FAQ Memberlist Usergroups Profile Log in to check your private messages Log in
 

 

XML Parse fails when parsing CDATA

 
Post new topic   This topic is locked: you cannot edit posts or make replies.    IBMMAINFRAMES.com Support Forums -> COBOL Programming
View previous topic :: :: View next topic  
Author Message
timothyd

New User


Joined: 13 Jan 2012
Posts: 1
Location: South Africa

PostPosted: Mon Jan 16, 2012 6:13 pm    Post subject: XML Parse fails when parsing CDATA
Reply with quote

Hi

Hope someone can help me. I'm trying to use XML PARSE in Cobol. If one of my elements consists of CDATA, i get the following error (if compiled with XMLSS): 'EXCEPTION 000798761'. If compiled with COMPAT, I get error 'EXCEPTION 000000136', which according to the documentation reads: 'The parser found an invalid start of a comment or CDATA section in element content.'. Why can't there be a CDATA in a element? If someone can shed some light on the matter, I would appreciate in very much.

Below find all the info needed:

-Input XML (all in 1 line in a file called AGTTS.TV.TEMP):

Code:
<RegistrationResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.astutefse.com/schemas/fsb-register/1.0">
   <CarrierCode Reference="20111101">SLM</CarrierCode>
   <Response ResultCode="0">FSB Response: GUID Already Used!<![CDATA[FSBReference]]></Response>
</RegistrationResponse>


JCL used to submit job (info most probably irrelevant):
Code:
//AGTXML  EXEC PGM=AGTTIM                 
//STEPLIB  DD  DSN=BEMT.SL2,DISP=SHR     
//         DD  DSN=TPDS.LINKLIB,DISP=SHR 
//INFILE   DD  DSN=AGTTS.TV.TEMP3,DISP=SHR


Code (only snippets):
Code:

      *====================*                             
       INPUT-OUTPUT SECTION.                             
      *====================*                             
       FILE-CONTROL.                                     
           SELECT INFILE ASSIGN TO INFILE.               
      *                                                 
      ***************                                   
       DATA DIVISION.                                   
      ***************                                   
      *============*                                     
       FILE SECTION.                                     
      *============*                                     
      *                                                 
       FD  INFILE                                       
           BLOCK CONTAINS 0 CHARACTERS                   
           RECORDING MODE IS F                           
           LABEL  RECORD    IS  STANDARD                 
           DATA   RECORD    IS  XML-DOCUMENT.           
      *                                                 
       01  XML-DOCUMENT.                                 
          05 XML-DATA                  PIC X(27968).     
      *                                                 
           EJECT                                         
      *=======================*                         
       WORKING-STORAGE SECTION.                         
      *=======================*                         
      *                                                 
       01 CURRENT-ELEMENT PIC X(40).                     
       01 XML-DOCUMENT-LENGTH COMPUTATIONAL PIC 999.     
      *                                                 
       01 REGISTRATION-RESPONSE.                         
          05 CARRIER-CODE                   PIC X(3).   
          05 CARRIER-REF                    PIC 9(8).   
          05 RESPONSE-CODE                  PIC 9.       
          05 RESPONSE-DESCRIPTION           PIC X(100). 
          05 FSB-REF-NR                     PIC 9(4).   
          05 REPRESENTATIVE OCCURS 1000 TIMES.           
             10 REP-ACTION                  PIC X(6).       
      *                                                     
           EJECT                                             
      *                                                     
      ********************                                   
       PROCEDURE DIVISION.                                   
      ********************                                   
      *===================*                                 
       A010-START SECTION.                                   
      *===================*                                 
      *                                                     
           PERFORM A050-OPEN.                               
      *                                                     
           PERFORM A100-PROCESS.                             
      *                                                     
           PERFORM A900-CLOSING.                             
      *                                                     
       A010-END.                                             
           GOBACK.                                           
           EJECT                                             
      *==================*                                   
       A050-OPEN SECTION.                                   
      *==================*                                   
                                                             
           OPEN INPUT INFILE.                               
           MOVE SPACES TO XML-DATA.                         
                                                             
       A050-END.                                             
           EXIT.                                             
           EJECT                                             
      *=====================*                               
       A100-PROCESS SECTION.                                 
      *=====================*                               
                                                             
           PERFORM A200-READ.                               
           PERFORM A300-PARSE-XML.                                 
                                                                   
       A100-END.                                                   
           EXIT.                                                   
           EJECT                                                   
                                                                   
      *==================*                                         
       A200-READ SECTION.                                         
      *==================*                                         
                                                                   
           READ INFILE.                                           
                                                                   
       A200-END.                                                   
           EXIT.                                                   
           EJECT                                                   
                                                                   
      *=======================*                                   
       A300-PARSE-XML SECTION.                                     
      *=======================*     
 
           XML PARSE XML-DOCUMENT                     
                 PROCESSING PROCEDURE A400-XML-HANDLER             
             ON EXCEPTION                                         
               DISPLAY 'XML DOCUMENT ERROR ' XML-CODE             
             NOT ON EXCEPTION                                     
               DISPLAY 'XML DOCUMENT SUCCESSFULLY PARSED'         
           END-XML.                                               
                                                                   
       A300-END.                                                   
           EXIT.                                                   
                                                                   
      *=========================*                                 
       A400-XML-HANDLER SECTION.                                 
       *=========================*                                     
                                                                       
            EVALUATE XML-EVENT                                         
       * ==> ORDER XML EVENTS MOST FREQUENT FIRST                       
              WHEN 'START-OF-ELEMENT'                                   
                DISPLAY 'START ELEMENT TAG: <' XML-TEXT '>'             
                MOVE XML-TEXT TO CURRENT-ELEMENT                       
              WHEN 'CONTENT-CHARACTERS'                                 
                DISPLAY 'CONTENT CHARACTERS: <' XML-TEXT '>'           
       * ==> TRANSFORM XML CONTENT TO OPERATIONAL COBOL DATA ITEM...   
                EVALUATE CURRENT-ELEMENT                               
                  WHEN 'CarrierCode'                                   
                    DISPLAY '   CONTENT OF CarrierCode IS ' XML-TEXT   
                END-EVALUATE                                           
              WHEN 'END-OF-ELEMENT'                                     
                DISPLAY 'END ELEMENT TAG: <' XML-TEXT '>'               
                MOVE SPACES TO CURRENT-ELEMENT                         
              WHEN 'START-OF-DOCUMENT'                                 
                COMPUTE XML-DOCUMENT-LENGTH = FUNCTION LENGTH(XML-TEXT)
                DISPLAY 'START OF DOCUMENT: LENGTH=' XML-DOCUMENT-LENGTH
                    ' CHARACTERS.'                                     
              WHEN 'END-OF-DOCUMENT'                                   
                DISPLAY 'END OF DOCUMENT.'                             
              WHEN 'VERSION-INFORMATION'                               
                DISPLAY 'VERSION: <' XML-TEXT '>'                       
              WHEN 'ENCODING-DECLARATION'                               
                DISPLAY 'ENCODING: <' XML-TEXT '>'                     
              WHEN 'STANDALONE-DECLARATION'                             
                DISPLAY 'STANDALONE: <' XML-TEXT '>'                   
              WHEN 'ATTRIBUTE-NAME'                                     
                DISPLAY 'ATTRIBUTE NAME: <' XML-TEXT '>'               
              WHEN 'ATTRIBUTE-CHARACTERS'                               
                DISPLAY 'ATTRIBUTE VALUE CHARACTERS: <' XML-TEXT '>'   
              WHEN 'ATTRIBUTE-CHARACTER'                               
                DISPLAY 'ATTRIBUTE VALUE CHARACTER: <' XML-TEXT '>'     
              WHEN 'START-OF-CDATA-SECTION'                             
                DISPLAY 'START OF CDATA: <' XML-TEXT '>'                 
             WHEN 'END-OF-CDATA-SECTION'                               
               DISPLAY 'END OF CDATA: <' XML-TEXT '>'                   
             WHEN 'CONTENT-CHARACTER'                                   
               DISPLAY 'CONTENT CHARACTER: <' XML-TEXT '>'             
             WHEN 'PROCESSING-INSTRUCTION-TARGET'                       
               DISPLAY 'PI TARGET: <' XML-TEXT '>'                     
             WHEN 'PROCESSING-INSTRUCTION-DATA'                         
               DISPLAY 'PI DATA: <' XML-TEXT '>'                       
             WHEN 'COMMENT'                                             
               DISPLAY 'COMMENT: <' XML-TEXT '>'                       
             WHEN 'EXCEPTION'                                           
               COMPUTE XML-DOCUMENT-LENGTH = FUNCTION LENGTH (XML-TEXT)
               DISPLAY 'EXCEPTION ' XML-CODE ' AT OFFSET '             
                   XML-DOCUMENT-LENGTH '.'                             
             WHEN OTHER                                                 
               DISPLAY 'UNEXPECTED XML EVENT: ' XML-EVENT '.'           
           END-EVALUATE.                                               
                                                                       
       A400-END.                                                       
           EXIT.                                                       
                                                                       
      *==================*                                             
       A900-CLOSING SECTION.                                           
      *==================*                                             
                                                                       
           CLOSE INFILE.                                               
                                                                       
       A900-END.                                                       
           EXIT.


This is the output I receive:
Code:

START OF DOCUMENT: LENGTH=968 CHARACTERS.                               
START ELEMENT TAG: <RegistrationResponse>                               
ATTRIBUTE NAME: <xmlns:xsi>                                             
ATTRIBUTE VALUE CHARACTERS: <http://www.w3.org/2001/XMLSchema-instance> 
ATTRIBUTE NAME: <xmlns:xsd>                                             
ATTRIBUTE VALUE CHARACTERS: <http://www.w3.org/2001/XMLSchema>           
ATTRIBUTE NAME: <xmlns>                                                 
ATTRIBUTE VALUE CHARACTERS: <http://www.astutefse.com/schemas/fsb-register/1.0>
START ELEMENT TAG: <CarrierCode>                                         
ATTRIBUTE NAME: <Reference>                                             
ATTRIBUTE VALUE CHARACTERS: <20111101>                                   
CONTENT CHARACTERS: <SLM>                                               
   CONTENT OF CarrierCode IS SLM                                         
END ELEMENT TAG: <CarrierCode>                                           
START ELEMENT TAG: <Response>                                           
ATTRIBUTE NAME: <ResultCode>                                             
ATTRIBUTE VALUE CHARACTERS: <0>                                         
CONTENT CHARACTERS: <FSB Response: GUID Already Used!>                   
EXCEPTION 000000136 AT OFFSET 289.                                       
XML DOCUMENT ERROR 000000136                                             
Back to top
View user's profile Send private message

Robert Sample

Global Moderator


Joined: 06 Jun 2008
Posts: 7936
Location: Bellevue, IA

PostPosted: Mon Jan 16, 2012 7:33 pm    Post subject:
Reply with quote

I would interpret that message as indicating a START of either a comment or CDATA was found in the wrong place -- not that CDATA is invalid altogether.
Back to top
View user's profile Send private message
enrico-sorichetti

Global Moderator


Joined: 14 Mar 2007
Posts: 10211
Location: italy

PostPosted: Mon Jan 16, 2012 7:52 pm    Post subject: Reply to: XML Parse fails when parsing CDATA
Reply with quote

do not double post please...

people answering on these two forums are mostly the same
double posting will not provide the double of good answrs,
it will just p*** off people icon_biggrin.gif

topic locked,
will be deleted later on
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   This topic is locked: you cannot edit posts or make replies.    IBMMAINFRAMES.com Support Forums -> COBOL Programming All times are GMT + 6 Hours
Page 1 of 1

 

Search our Forum:

Similar Topics
Topic Author Forum Replies Posted
No new posts Invoke Webservice Fails with DFHPI100... divated CICS 2 Thu Nov 24, 2016 5:57 pm
No new posts Cobol EZASOKET call to SETSOCKOPT fails Andi1982 COBOL Programming 6 Thu Oct 06, 2016 7:12 pm
No new posts OUTREC FILELDS FAILS WITH ICE126A 2 ... balaji81_k DFSORT/ICETOOL 8 Sat Jul 02, 2016 1:22 am
No new posts Parsing and Listing a Subset of Recor... Charles Wolters IBM Tools 3 Fri Feb 05, 2016 10:39 pm
No new posts Parsing JCL SET var=value statements prino CLIST & REXX 0 Sat Dec 26, 2015 4:41 am


Facebook
Back to Top
 
Mainframe Wiki | Forum Rules | Bookmarks | Subscriptions | FAQ | Tutorials | Contact Us