I have a sequence that uses the XMLWrapper gateway to call into a natural sub program to retreive some data on the mainframe. The result of the sub program is sometimes just a subset of the total amount of data that should be returned. I’m new to Natural but I was told there was a limit on the Natural return buffer. In the past we’ve place the burden on the consumer of the webservice to call back into the service to retreive the additional data (sometimes as many as ten times), however, now I’d like to be able to return all of the data in one web service call. Is there a way that I can join the results of the calls to the XMLWrapper gateway and return those as one consolidated result set in the sequence? Examples would be great. Thanks in advance.
If you are calling a mainframe Natural service, it is possible for the mainframe to return as much data as is available - the protocol needs to be upgraded to either use the Adabas 8 SVC interface or to use the TCP/IP interface. Both allow message sizes to increase from the 32k limit you are currently dealing with up to 2GB message size.
It is a mainframe natural service and we are indeed using Adabas SVC 8. I have verified that the error occurs when a result set of over 30K is returned. Here is the actual error I’m getting:
Broker Error 1014 6974: Natural RPC Server returns: I00013N1 9999 NAT6974 Conversion error on Server, reason 5 ,039., NE=01,I00013N1999901O
The RPC Server has these properties set:
AUTO=ON,ETID=*
STACK=(LOGON SERVRLIB)
RPC=(SERVER=ON,LOGONRQ=OFF,ACIVERS=4,NTASKS=1,
SRVNODE=ETB161,SRVNAME=NATQ10SV,SRVUSER=‘*NSC’,TRACE=1,
TRANSP=ACI,RPCSIZE=128,MAXBUFF=64)
Broker properties:
Long Message Buffer
NUM-LONG-BUFFER.: 2504
Length…: 4096
Active…:
High water mark.: 56
Short Message Buffer
NUM-SHORT-BUFFER: 2504
Length…: 256
Active…: 3
High water mark.: 90
What version of Natural are you using? There is a fix for NAT423 that might be relevant - check ServLine24 for “NAT6974” or docid 549652.
We are using Natural 4.2.4
In case you still need to accumulate several responses into a single document, there are different ways this can be done in Service Orchestrator.
For start, you should append the result of every XMLWrapper call to the payload, e.g. by using multiple parts, or by means of replicate/replicants.
Then, the most standard way would be to use an XSLT which transform this payload into the document you want.
There are other options, through a couple of non-official reusable components used internally at Software AG:
- One that allows to use JavaScript to access and manipulate the payload
- Another one (XMLRefactoring) that allows to perform easy copy/paste operations in the payload
However I am not sure about its real availability in your case.
Hope this helps
According to the manual you should increase MAXBUFF.
Yes, I thought that might be that case. However, I have increased MAXBUFF from 30 to 64 with no change in behavior.
Yes, I thought that might be that case. However, I have increased MAXBUFF from 30 to 64 with no change in behavior.