Can we use PLISAXC parser for online program ?

Go down

Can we use PLISAXC parser for online program ?

Post  kasthuri on Sun Jan 27, 2013 6:24 pm

Hi ,
I just wanted to confirm if PLISAXC parser can be used for CICS transcation triggered Program/ Online program?

As per Manual, we can use it in for online process but recently I came across an issue where the following code was giving SOC4 . However, this code works fine in Batch program.

Code:
SAXCTEST: package exports(SAXCTEST);
define alias event
limited entry( pointer, pointer, fixed bin(31) )
returns( byvalue fixed bin(31) )
options( byvalue linkage(optlink) );
.......
SAXCTEST: procedure (InpPtr) options(reentrant,fetchable) reorder;
/*necessary declaration for InpPtr is done */
dcl 1 XMLMsg based(InpPtr),
3 XML_data(33) char(32767);
XMLPtr = addr (XML_data);
/* Here it fails when triggered through online .
The reason is all GLOBAL VARIABLES are STATIC
and in CICS these are stored in Extended Readonly
Dynamic Storage Area (ERDSA) . To overwrite this storage
area is not allowed
*/
call plisaxc (eventHandler,
addr(token),
addr(XML_data(1)),
length(XML_data(1)));
end SAXCTEST;

/* PARSER EVENT HANDLER */
dcl XMLPtr pointer ;
dcl inpXML(33) char(32767) based(XMLPtr);
dcl arrCtr fixed bin(15) init(1) ;
dcl chars char(32000) based ;

start_of_document: proc(userToken)
returns( byvalue fixed bin(31) )
options( byvalue linkage(optlink) );

dcl userToken pointer;
return(0);
end;


end_of_input:proc( userToken, addr_xml, length_xml )
returns( byvalue fixed bin(31) )
options( byvalue linkage(optlink) );
dcl userToken pointer;
dcl addr_xml byaddr pointer;
dcl length_xml byaddr fixed bin(31);

arrCtr += 1;
if (arrCtr<=33) then do ;
addr_xml = addr(inpXML(arrCtr));
length_xml = length(inpXML(arrCtr));
return(0);
end;
end; /* Package end */

kasthuri

Posts : 212
Join date : 2013-01-27

View user profile

Back to top Go down

Back to top

- Similar topics

 
Permissions in this forum:
You cannot reply to topics in this forum