Author |
Message
|
schroederms |
Posted: Tue Oct 25, 2005 6:10 am Post subject: WBIMB "CAST" question |
|
|
 Disciple
Joined: 21 Jul 2003 Posts: 169 Location: IA
|
I'm trying to take four XML tags and concatenate them into one BLOB message to be put onto a queue. It is actually causing the compute failure node to fire. Can someone tell me how to get these four tags cast into a BLOB.
Thanks,
Mike
Here is my compute node EQSL:
CREATE COMPUTE MODULE Build_Output_to_Q_QMGR_Compute1
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
DECLARE I INTEGER 1;
DECLARE J INTEGER CARDINALITY(InputRoot.*[]);
WHILE I < J DO
SET OutputRoot.*[I] = InputRoot.*[I];
SET I = I + 1;
END WHILE;
DECLARE myRef REFERENCE to InputRoot.XML."Z_RFC_TRIGGER_TRFC.Response".ZNA_CONFIR.item;
SET OutputRoot.MQMD.Persistence = 1;
SET Environment.RFCDATA.CREDAT = myRef.CREDAT;
SET Environment.RFCDATA.CRETIM = myRef.CRETIM;
SET OutputRoot.BLOB.BLOB = CAST(myRef.SDATA1 as BLOB) ||
CAST(myRef.SDATA2 as BLOB) ||
CAST(myRef.SDATA3 as BLOB) ||
CAST(myRef.SDATA4 as BLOB);
SET OutputLocalEnvironment.Destination.MQ.DestinationData.queueName = myRef.QUEUE;
SET OutputLocalEnvironment.Destination.MQ.DestinationData.queueManagerName = myRef.QUEUEMGR;
RETURN TRUE;
END;
END MODULE;
Here is the Input copied from a trace node:
(0x01000000):SDATA1 = (
(0x02000000): = '120000000000000000000000
20050519131958DQD0001 MSGSRV.POVI.FROMR3 <?XML VERSION='1.0' E
NCODING='ISO-88'
)
(0x01000000):SDATA2 = (
(0x02000000): = '59-1'?><RESPONSE><CONTROL><ORIGINATOR>POVI</ORIGINATOR><ORIGIN_DATETIME></ORIGIN_DATETIME><SERVICE>POVI
_SAP</SERVICE><FUNCTION>Z_MSRV_POVI_SALE_ORDER</FUNCTION><ENVIRONMENT>DV2120</ENVIRONMENT><VERSION>1.0</VERSION><LOCATOR></LOCATOR><
SERIAL></SERIAL'
)
(0x01000000):SDATA3 = (
(0x02000000): = '><DOCUMENTRECORDS></DOCUMENTRECORDS></CONTROL><STATUS><CODE>0</CODE><DESCRIPTION>SUCCESS</DESCRIPTION><
CREATE_DATETIME></CREATE_DATETIME></STATUS><PO_NUMBER></PO_NUMBER><PROCESSING_STATUS>000</PROCESSING_STATUS><RESULT>4300000631</RESU
LT></RESPONSE>'
)
(0x01000000):SDATA4 =
)
Here is the error:
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = 'SET OutputRoot.BLOB.BLOB = CAST(myRef.SDATA1 AS BLOB) || CAST(myRef.SDATA2 AS BLOB) || CAST(myRef.SDATA
3 AS BLOB) || CAST(myRef.SDATA4 AS BLOB);'
)
(0x01000000):RecoverableException = (
(0x03000000):File = '/build/S500_P/src/DataFlowEngine/ImbRdl/ImbRdlTypeCast.cpp'
(0x03000000):Line = 204
(0x03000000):Function = 'SqlTypeCast::evaluate'
(0x03000000):Type = ''
(0x03000000):Name = ''
(0x03000000):Label = ''
(0x03000000):Text = 'Error casting from %3 to %4'
(0x03000000):Catalog = 'BIPv500'
(0x03000000):Severity = 3
(0x03000000):Number = 2521
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = '.Build_Output_to_Q_QMGR_Compute1.Main'
)
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = '20.30'
)
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = 'CHARACTER'
)
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = 'BLOB'
)
(0x01000000):RecoverableException = (
(0x03000000):File = '/build/S500_P/src/CommonServices/ImbValue.cpp'
(0x03000000):Line = 673
(0x03000000):Function = 'ImbValue::fromCharacter'
(0x03000000):Type = ''
(0x03000000):Name = ''
(0x03000000):Label = ''
([color=red]0x03000000):Text = 'String is not of correct form for byte array. Must consist of only 0..9,a..f,A..Z' (0x03000000):Catalog = 'BIPv500'
(0x03000000):Severity = 3
(0x03000000):Number = 2590
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = '120000000000000000000000
20050519131958DQD0001 MSGSRV.POVI.FROMR3 <?XML VERSION='1.
0' ENCODING='ISO-88'
)
)
) |
|
Back to top |
|
 |
jefflowrey |
Posted: Tue Oct 25, 2005 6:16 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
change "CAST (xxx as BLOB)" to "Cast (xxx as BLOB CCSID InputRoot.Properties.CodedCharSetID)". _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
schroederms |
Posted: Tue Oct 25, 2005 6:23 am Post subject: |
|
|
 Disciple
Joined: 21 Jul 2003 Posts: 169 Location: IA
|
thanks for the reply.
I changed the ESQL:
SET OutputRoot.BLOB.BLOB = CAST(myRef.SDATA1 as BLOB CCSID InputRoot.Properties.CodedCharSetID) ||
CAST(myRef.SDATA2 as BLOB CCSID InputRoot.Properties.CodedCharSetID) ||
CAST(myRef.SDATA3 as BLOB CCSID InputRoot.Properties.CodedCharSetID) ||
CAST(myRef.SDATA4 as BLOB CCSID InputRoot.Properties.CodedCharSetID);
However I still get the same error as:
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = 'SET OutputRoot.BLOB.BLOB = CAST(myRef.SDATA1 AS BLOB CCSID InputRoot.Properties.CodedCharSetID) || CAST
(myRef.SDATA2 AS BLOB CCSID InputRoot.Properties.CodedCharSetID) || CAST(myRef.SDATA3 AS BLOB CCSID InputRoot.Properties.CodedCharSe
tID) || CAST(myRef.SDATA4 AS BLOB CCSID InputRoot.Properties.CodedCharSetID);'
)
(0x01000000):RecoverableException = (
(0x03000000):File = '/build/S500_P/src/DataFlowEngine/ImbRdl/ImbRdlTypeCast.cpp'
(0x03000000):Line = 204
(0x03000000):Function = 'SqlTypeCast::evaluate'
(0x03000000):Type = ''
(0x03000000):Name = ''
(0x03000000):Label = ''
(0x03000000):Text = 'Error casting from %3 to %4'
(0x03000000):Catalog = 'BIPv500'
(0x03000000):Severity = 3
(0x03000000):Number = 2521
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = '.Build_Output_to_Q_QMGR_Compute1.Main'
)
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = '20.30'
)
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = 'CHARACTER'
)
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = 'BLOB'
)
(0x01000000):RecoverableException = (
(0x03000000):File = '/build/S500_P/src/CommonServices/ImbValue.cpp'
(0x03000000):Line = 673
(0x03000000):Function = 'ImbValue::fromCharacter'
(0x03000000):Type = ''
(0x03000000):Name = ''
(0x03000000):Label = ''
(0x03000000):Text = 'String is not of correct form for byte array. Must consist of only 0..9,a..f,A..Z'
(0x03000000):Catalog = 'BIPv500'
(0x03000000):Severity = 3
(0x03000000):Number = 2590
(0x01000000):Insert = (
(0x03000000):Type = 5
(0x03000000):Text = '120000000000000000000000
20050519131958DQD0001 MSGSRV.POVI.FROMR3 <?XML VERSION='1.
0' ENCODING='ISO-88'
)
) |
|
Back to top |
|
 |
schroederms |
Posted: Tue Oct 25, 2005 9:06 am Post subject: |
|
|
 Disciple
Joined: 21 Jul 2003 Posts: 169 Location: IA
|
I'm getting closer by using a BITSTREAM, however now I'm getting the complete input message ever time for the BITSTREAM casting. Here is my ESL:
SET OutputRoot.BLOB.BLOB = BITSTREAM(InputRoot.XML."Z_RFC_TRIGGER_TRFC.Response".ZNA_CONFIR.item.SDATA1) ||
BITSTREAM(InputRoot.XML."Z_RFC_TRIGGER_TRFC.Response".ZNA_CONFIR.item.SDATA2) ||
BITSTREAM(InputRoot.XML."Z_RFC_TRIGGER_TRFC.Response".ZNA_CONFIR.item.SDATA3) ||
BITSTREAM(InputRoot.XML."Z_RFC_TRIGGER_TRFC.Response".ZNA_CONFIR.item.SDATA4);
Can the BITSTREAM ponit to an XML tag, or does it always bring back the complete message?
Here is the reults in the output queue:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<Z_RFC_TRIGGER_TRFC.Response>
<ERROR_MSG>PROCESSING</ERROR_MSG>
<ZNA_CONFIR>
<item>
<MANDT>120</MANDT>
<ERROR_CODE>00000</ERROR_CODE>
<DOCNUM>0000000000000000</DOCNUM>
<DOCREL/>
<STATUS/>
<CIMTYP/>
<RCVPOR/>
<RCVPRT/>
<RCVPRN/>
<SNDPOR/>
<SNDPRT/>
<SNDPRN/>
<CREDAT>2005-07-08</CREDAT>
<CRETIM>10:38:07</CRETIM>
<QUEUEMGR>DC1Q000</QUEUEMGR>
<QUEUE>DARRIN.Q</QUEUE>
<PROC_STAT/>
<SDATA1>120000000000000000000000 20050708103807DQD0001 MSGSRV.POVI.FROMR3 <?XML VERSION='1.0' ENCODING='ISO-88</SDATA1>
<SDATA2>59-1'?><RESPONSE><CONTROL><ORIGINATOR>POVI</ORIGINATOR><ORIGIN_DATETIME></ORIGIN_DATETIME><SERVICE>POVI_SAP</SERVICE><FUNCTION>Z_MSRV_POVI_SALE_ORDER</FUNCTION><ENVIRONMENT>DV2120</ENVIRONMENT><VERSION>1.0</VERSION><LOCATOR></LOCATOR><SERIAL></SERIAL</SDATA2>
<SDATA3>><DOCUMENTRECORDS></DOCUMENTRECORDS></CONTROL><STATUS><CODE>0</CODE><DESCRIPTION>SUCCESS</DESCRIPTION><CREATE_DATETIME></CREATE_DATETIME></STATUS><PO_NUMBER></PO_NUMBER><PROCESSING_STATUS>000</PROCESSING_STATUS><RESULT>4300000645</RESULT></RESPONSE></SDATA3>
<SDATA4/>
</item>
</ZNA_CONFIR>
</Z_RFC_TRIGGER_TRFC.Response>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<Z_RFC_TRIGGER_TRFC.Response>
<ERROR_MSG>PROCESSING</ERROR_MSG>
<ZNA_CONFIR>
<item>
<MANDT>120</MANDT>
<ERROR_CODE>00000</ERROR_CODE>
<DOCNUM>0000000000000000</DOCNUM>
<DOCREL/>
<STATUS/>
<CIMTYP/>
<RCVPOR/>
<RCVPRT/>
<RCVPRN/>
<SNDPOR/>
<SNDPRT/>
<SNDPRN/>
<CREDAT>2005-07-08</CREDAT>
<CRETIM>10:38:07</CRETIM>
<QUEUEMGR>DC1Q000</QUEUEMGR>
<QUEUE>DARRIN.Q</QUEUE>
<PROC_STAT/>
<SDATA1>120000000000000000000000 20050708103807DQD0001 MSGSRV.POVI.FROMR3 <?XML VERSION='1.0' ENCODING='ISO-88</SDATA1>
<SDATA2>59-1'?><RESPONSE><CONTROL><ORIGINATOR>POVI</ORIGINATOR><ORIGIN_DATETIME></ORIGIN_DATETIME><SERVICE>POVI_SAP</SERVICE><FUNCTION>Z_MSRV_POVI_SALE_ORDER</FUNCTION><ENVIRONMENT>DV2120</ENVIRONMENT><VERSION>1.0</VERSION><LOCATOR></LOCATOR><SERIAL></SERIAL</SDATA2>
<SDATA3>><DOCUMENTRECORDS></DOCUMENTRECORDS></CONTROL><STATUS><CODE>0</CODE><DESCRIPTION>SUCCESS</DESCRIPTION><CREATE_DATETIME></CREATE_DATETIME></STATUS><PO_NUMBER></PO_NUMBER><PROCESSING_STATUS>000</PROCESSING_STATUS><RESULT>4300000645</RESULT></RESPONSE></SDATA3>
<SDATA4/>
</item>
</ZNA_CONFIR>
</Z_RFC_TRIGGER_TRFC.Response>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<Z_RFC_TRIGGER_TRFC.Response>
<ERROR_MSG>PROCESSING</ERROR_MSG>
<ZNA_CONFIR>
<item>
<MANDT>120</MANDT>
<ERROR_CODE>00000</ERROR_CODE>
<DOCNUM>0000000000000000</DOCNUM>
<DOCREL/>
<STATUS/>
<CIMTYP/>
<RCVPOR/>
<RCVPRT/>
<RCVPRN/>
<SNDPOR/>
<SNDPRT/>
<SNDPRN/>
<CREDAT>2005-07-08</CREDAT>
<CRETIM>10:38:07</CRETIM>
<QUEUEMGR>DC1Q000</QUEUEMGR>
<QUEUE>DARRIN.Q</QUEUE>
<PROC_STAT/>
<SDATA1>120000000000000000000000 20050708103807DQD0001 MSGSRV.POVI.FROMR3 <?XML VERSION='1.0' ENCODING='ISO-88</SDATA1>
<SDATA2>59-1'?><RESPONSE><CONTROL><ORIGINATOR>POVI</ORIGINATOR><ORIGIN_DATETIME></ORIGIN_DATETIME><SERVICE>POVI_SAP</SERVICE><FUNCTION>Z_MSRV_POVI_SALE_ORDER</FUNCTION><ENVIRONMENT>DV2120</ENVIRONMENT><VERSION>1.0</VERSION><LOCATOR></LOCATOR><SERIAL></SERIAL</SDATA2>
<SDATA3>><DOCUMENTRECORDS></DOCUMENTRECORDS></CONTROL><STATUS><CODE>0</CODE><DESCRIPTION>SUCCESS</DESCRIPTION><CREATE_DATETIME></CREATE_DATETIME></STATUS><PO_NUMBER></PO_NUMBER><PROCESSING_STATUS>000</PROCESSING_STATUS><RESULT>4300000645</RESULT></RESPONSE></SDATA3>
<SDATA4/>
</item>
</ZNA_CONFIR>
</Z_RFC_TRIGGER_TRFC.Response>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<Z_RFC_TRIGGER_TRFC.Response>
<ERROR_MSG>PROCESSING</ERROR_MSG>
<ZNA_CONFIR>
<item>
<MANDT>120</MANDT>
<ERROR_CODE>00000</ERROR_CODE>
<DOCNUM>0000000000000000</DOCNUM>
<DOCREL/>
<STATUS/>
<CIMTYP/>
<RCVPOR/>
<RCVPRT/>
<RCVPRN/>
<SNDPOR/>
<SNDPRT/>
<SNDPRN/>
<CREDAT>2005-07-08</CREDAT>
<CRETIM>10:38:07</CRETIM>
<QUEUEMGR>DC1Q000</QUEUEMGR>
<QUEUE>DARRIN.Q</QUEUE>
<PROC_STAT/>
<SDATA1>120000000000000000000000 20050708103807DQD0001 MSGSRV.POVI.FROMR3 <?XML VERSION='1.0' ENCODING='ISO-88</SDATA1>
<SDATA2>59-1'?><RESPONSE><CONTROL><ORIGINATOR>POVI</ORIGINATOR><ORIGIN_DATETIME></ORIGIN_DATETIME><SERVICE>POVI_SAP</SERVICE><FUNCTION>Z_MSRV_POVI_SALE_ORDER</FUNCTION><ENVIRONMENT>DV2120</ENVIRONMENT><VERSION>1.0</VERSION><LOCATOR></LOCATOR><SERIAL></SERIAL</SDATA2>
<SDATA3>><DOCUMENTRECORDS></DOCUMENTRECORDS></CONTROL><STATUS><CODE>0</CODE><DESCRIPTION>SUCCESS</DESCRIPTION><CREATE_DATETIME></CREATE_DATETIME></STATUS><PO_NUMBER></PO_NUMBER><PROCESSING_STATUS>000</PROCESSING_STATUS><RESULT>4300000645</RESULT></RESPONSE></SDATA3>
<SDATA4/>
</item>
</ZNA_CONFIR>
</Z_RFC_TRIGGER_TRFC.Response> |
|
Back to top |
|
 |
jefflowrey |
Posted: Tue Oct 25, 2005 9:09 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
schroederms wrote: |
I'm getting closer by using a BITSTREAM, |
No, you aren't.
BITSTREAM is deprecated.
Use ASBITSTREAM instead.
Or confirm that I didn't spell "CodedCharSetId" wrong. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
schroederms |
Posted: Tue Oct 25, 2005 9:16 am Post subject: |
|
|
 Disciple
Joined: 21 Jul 2003 Posts: 169 Location: IA
|
I tried this after I got your first reply, and the result was the same. I believe it's like the third thread on this topic. Am I missing something?
SET OutputRoot.BLOB.BLOB = CAST(myRef.SDATA1 as BLOB CCSID InputRoot.Properties.CodedCharSetID) ||
CAST(myRef.SDATA2 as BLOB CCSID InputRoot.Properties.CodedCharSetID) ||
CAST(myRef.SDATA3 as BLOB CCSID InputRoot.Properties.CodedCharSetID) ||
CAST(myRef.SDATA4 as BLOB CCSID InputRoot.Properties.CodedCharSetID);
[ |
|
Back to top |
|
 |
JT |
Posted: Tue Oct 25, 2005 9:23 am Post subject: |
|
|
Padawan
Joined: 27 Mar 2003 Posts: 1564 Location: Hartford, CT.
|
I think Jeff meant for you to check that it's spelled CodedCharSetId, not CodedCharSetID |
|
Back to top |
|
 |
paustin_ours |
Posted: Tue Oct 25, 2005 9:25 am Post subject: |
|
|
Yatiri
Joined: 19 May 2004 Posts: 667 Location: columbus,oh
|
it should work. check your input properties tree. use MQMD instead. |
|
Back to top |
|
 |
schroederms |
Posted: Tue Oct 25, 2005 9:47 am Post subject: |
|
|
 Disciple
Joined: 21 Jul 2003 Posts: 169 Location: IA
|
Thanks all, that was it.
I think Jeff meant for you to check that it's spelled CodedCharSetId, not CodedCharSetID
It was coded CodedCharSetID |
|
Back to top |
|
 |
|