Bonjour
Je travail avec une version de cobol pour Z/OS V3R1 et j'essaie de traiter un flux XML.
Cette version de cobol permet l'utilisation de "XML PARSE", mais je rencontre une erreur 135 lorsque je traite l'évenement START-OF-CDATA-SECTION: c'est à dire la balise <![CDATA[...
Quel interet de pouvoir parser du XML si ce type de balise ne peut être traitée...
HELP ! HELP !!!
merci
8O
ERREUR BBCODE SUR CE MESSAGE : - Fin de code inattendue !
je ne connais ni ce cobol, ni l'instruction (?),
ni la balise (<! commentaires ) citées,
ce que je peux dire c'est que c'est toujours le programmeur qui fait une erreur.
mauvaise utilisation ? sauf si bug de ce cobol,
ce qui me paraît hautement improbable.
@+
* document xml / attention au majuscule/minuscule
1 xml-document.
* 1140 = ebcdic
* 819 = ascii
* 2 pic x(39) value '<?xml version="1.0" encoding="ibm-1140"'.
*
* le parser n aime pas le encoding="ibm-1140"
* il prefere faire le test lui meme
* voir "XML CCSID exception flow control" dans la doc/web
*
2 pic x(39) value '<?xml version="1.0"'.
2 pic x(19) value ' standalone="yes"?>'.
2 pic x(39) value '<!--This document is just an example-->'.
2 pic x(10) value '<sandwich>'.
2 pic x(35) value ' <bread type="baker's best"/>'.
2 pic x(41) value ' <?spread please use real mayonnaise ?>'.
2 pic x(31) value ' <meat>Ham & turkey</meat>'.
2 pic x(40) value ' <filling>Cheese, lettuce, tomato, etc.'.
2 pic x(10) value '</filling>'.
2 pic x(35) value ' <![CDATA[We should add a <relish>'.
2 pic x(22) value ' element in future!]]>'.
2 pic x(31) value ' <listprice>$4.99 </listprice>'.
2 pic x(27) value ' <discount>0.10</discount>'.
2 pic x(11) value '</sandwich>'.
*
1 Employee1 global.
2 Name pic X(5) Value 'Tom'.
2 Idn pic 9(9) comp Value 123456789.
2 Addr.
3 Street pic X(20) Value '555 Bailey Ave'.
3 City pic X(20) Value 'San Jose'.
3 State pic X(20) Value 'California'.
2 More.
3 Age pic +99.99 Value '45.9'.
3 Firm pic BBXXX9B Value 'IBM4'.
3 Salary COMP-2 Value +.00012327E+06.
* permet une insersion "inline" des sections dans le code cobol
MAINLINE SECTION.
* appel du parser
XML PARSE XML-DOCUMENT PROCESSING PROCEDURE XML-HANDLER
ON EXCEPTION
DISPLAY 'XML DOCUMENT ERROR ' XML-CODE
NOT ON EXCEPTION
DISPLAY 'XML DOCUMENT SUCCESSFULLY PARSED'
END-XML
* resultat
DISPLAY ' '
DISPLAY '-----+++++***** USING INFORMATION FROM XML '
'*****+++++-----'
DISPLAY ' '
MOVE LIST-PRICE TO DISPLAY-PRICE
DISPLAY ' SANDWICH LIST PRICE: ' DISPLAY-PRICE
COMPUTE DISPLAY-PRICE = LIST-PRICE * (1 - DISCOUNT)
DISPLAY ' PROMOTIONAL PRICE: ' DISPLAY-PRICE
DISPLAY ' GET ONE TODAY!'
* generation d un xml depuis une copie cobol
* XML GENERATE XML-Employee1 FROM Employee1
* ON EXCEPTION
* DISPLAY 'XML GENERATE ERROR ' XML-CODE
* NOT ON EXCEPTION
* DISPLAY 'XML Employee SUCCESSFULLY GENERATE'
* END-XML
* fin du programme
GOBACK.
* resultat du decodage
*
* START OF DOCUMENT: LENGTH=390 CHARACTERS.
* VERSION: <1.0>
* STANDALONE: <yes>
* COMMENT: <This document is just an example>
* START ELEMENT TAG: <sandwich>
* CONTENT CHARACTERS: < >
* START ELEMENT TAG: <bread>
* ATTRIBUTE NAME: <type>
* ATTRIBUTE VALUE CHARACTERS: <baker>
* ATTRIBUTE VALUE CHARACTER: <'>
* ATTRIBUTE VALUE CHARACTERS: <s best>
* END ELEMENT TAG: <bread>
* CONTENT CHARACTERS: < >
* PI TARGET: <spread>
* PI DATA: <please use real mayonnaise >
* CONTENT CHARACTERS: < >
* START ELEMENT TAG: <meat>
* CONTENT CHARACTERS: <Ham >
* CONTENT CHARACTER: <&>
* CONTENT CHARACTERS: < turkey>
* END ELEMENT TAG: <meat>
* CONTENT CHARACTERS: < >
* START ELEMENT TAG: <filling>
* CONTENT CHARACTERS: <Cheese, lettuce, tomato, etc.>
* END ELEMENT TAG: <filling>
* CONTENT CHARACTERS: < >
* START OF CDATA: <<![CDATA[>
* CONTENT CHARACTERS: <We should add a <relish> element in fut....
* END OF CDATA: <]]>>
* CONTENT CHARACTERS: < >
* START ELEMENT TAG: <listprice>
* CONTENT CHARACTERS: <$4.99 >
* END ELEMENT TAG: <listprice>
* CONTENT CHARACTERS: < >
* START ELEMENT TAG: <discount>
* CONTENT CHARACTERS: <0.10>
* END ELEMENT TAG: <discount>
* END ELEMENT TAG: <sandwich>
* END OF DOCUMENT.
* XML DOCUMENT SUCCESSFULLY PARSED
*
* -----+++++***** USING INFORMATION FROM XML *****+++++-----
*
* SANDWICH LIST PRICE: $4.99
* PROMOTIONAL PRICE: $4.49
* GET ONE TODAY!
*
* procedure inserée en "inline"
XML-HANDLER SECTION.
*****DISPLAY '=> <' XML-TEXT '>'
* gestion des evenements xml
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 'listprice'
* ==> USING FUNCTION NUMVAL-C...
COMPUTE LIST-PRICE = FUNCTION NUMVAL-C(XML-TEXT)
WHEN 'discount'
* ==> USING DE-EDITING OF A NUMERIC EDITED ITEM...
MOVE XML-TEXT TO XFR-ED
MOVE XFR-ED-1 TO DISCOUNT
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.