|
|
h Option(*SrcStmt : *NoDebugIO) DftActGrp(*No)
FQPRINT O F 132 PRINTER D myHandler Pr 10I 0 D commArea Like(myCommArea) D event 10I 0 VALUE D pstring * VALUE D stringLen 20I 0 VALUE D exceptionId 10I 0 VALUE
d i s 10i 0
d myCommArea s 1a
d eventCodeData DS d 10i 0 Inz(*XML_START_DOCUMENT) d 10i 0 Inz(*XML_VERSION_INFO) d 10i 0 Inz(*XML_ENCODING_DECL) d 10i 0 Inz(*XML_STANDALONE_DECL) d 10i 0 Inz(*XML_DOCTYPE_DECL) d 10i 0 Inz(*XML_START_ELEMENT) d 10i 0 Inz(*XML_CHARS) d 10i 0 Inz(*XML_PREDEF_REF) d 10i 0 Inz(*XML_UCS2_REF) d 10i 0 Inz(*XML_UNKNOWN_REF) d 10i 0 Inz(*XML_END_ELEMENT) d 10i 0 Inz(*XML_ATTR_NAME) d 10i 0 Inz(*XML_ATTR_CHARS) d 10i 0 Inz(*XML_ATTR_PREDEF_REF) d 10i 0 Inz(*XML_ATTR_UCS2_REF) d 10i 0 Inz(*XML_UNKNOWN_ATTR_REF) d 10i 0 Inz(*XML_END_ATTR) d 10i 0 Inz(*XML_PI_TARGET) d 10i 0 Inz(*XML_PI_DATA) d 10i 0 Inz(*XML_START_CDATA) d 10i 0 Inz(*XML_CHARS) d 10i 0 Inz(*XML_END_CDATA) d 10i 0 Inz(*XML_COMMENT) d 10i 0 Inz(*XML_EXCEPTION) d 10i 0 Inz(*XML_END_DOCUMENT)
d eventCodes 10i 0 Dim(25) Overlay(eventCodeData)
d eventNameData DS d 21a Inz('*XML_START_DOCUMENT') d 21a Inz('*XML_VERSION_INFO') d 21a Inz('*XML_ENCODING_DECL') d 21a Inz('*XML_STANDALONE_DECL') d 21a Inz('*XML_DOCTYPE_DECL') d 21a Inz('*XML_START_ELEMENT') d 21a Inz('*XML_CHARS') d 21a Inz('*XML_PREDEF_REF') d 21a Inz('*XML_UCS2_REF') d 21a Inz('*XML_UNKNOWN_REF') d 21a Inz('*XML_END_ELEMENT') d 21a Inz('*XML_ATTR_NAME') d 21a Inz('*XML_ATTR_CHARS') d 21a Inz('*XML_ATTR_PREDEF_REF') d 21a Inz('*XML_ATTR_UCS2_REF') d 21a Inz('*XML_UNKNOWN_ATTR_REF') d 21a Inz('*XML_END_ATTR') d 21a Inz('*XML_PI_TARGET') d 21a Inz('*XML_PI_DATA') d 21a Inz('*XML_START_CDATA') d 21a Inz('*XML_CHARS') d 21a Inz('*XML_END_CDATA') d 21a Inz('*XML_COMMENT') d 21a Inz('*XML_EXCEPTION') d 21a Inz('*XML_END_DOCUMENT')
d eventNames 21a Dim(25) Overlay(eventNameData)
// Print field definitions d data 90a d dataLength 5p 0 d eventCode 5p 0 d eventName 21a
/Free
XML-SAX %Handler(MyHandler: myCommArea ) %XML( '/Partner400/XMLSAXDOC.xml': 'doc=file');
*InLR = *On;
/End-free
OQPRINT D O E PrintEvent O eventCode J 10 O eventName 35 O dataLength J 40 O data 132
// SAX handler myHandler P myHandler B D PI 10I 0 D commArea Like(myCommArea) D event 10I 0 VALUE D pstring * VALUE D stringLen 20I 0 VALUE D exceptionId 10I 0 VALUE
D string S 65535A Based(pString) D UCS2String S 16383C D UCS2StringLen S 5i 0 D returnCode S 10I 0 INZ(0) D element s 10i 0 D eventIndex s 5i 0
/free
eventCode = event; // Set up event code dataLength = stringLen; // and string length for printing
eventIndex = %lookup(event : eventCodes ); // identify event
if eventIndex > 0; eventName = eventNames( eventIndex );
if stringLen > 0; // Pointer seems to be unreliable if ( event = *XML_UCS2_REF OR event = *XML_ATTR_UCS2_REF ); UCS2StringLen = ( stringLen / 2 ); data = %char( %subst(UCS2String : 1 : UCS2StringLen ) ); else; data = %subst(string : 1 : stringLen); endif; else; data = '** No Data **'; endif; else; // Unknown event eventName = '** Unknown event code ** '; data = ''; endif;
Except PrintEvent;
return returnCode;
/end-free P E
|