Hello, we're back on this project now and change the program to use dynamic arrays because of the 64k limitation. During the processing of the web service response, which is nearly the same what we send to it, we got the error that an array already exists. I think that's the arrays I've created to send the data to the web service. So my question is: 1) Should the created arrays, which are necessary to send the data to the web service, be deleted before processing the response. If yes, it has to be done in the web service stub module before processing the response message? Or 2) Have I done something wrong and WSDL2RPG should recognize that the arrays already exists and populate them with the response after it cleans them up? I've attached the httpapi_debug.txt file which contains the error message and the data we send and receive. VSEFAC20 = Source of the test program to call the web service. VSEFACS01 = web service stub module VSEFACS = the common procedures of the web service MaterialInformation.wsdl = wsdl with which the programs were generated Thanks, Timo -Ursprüngliche Nachricht----- Von: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx [mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] Im Auftrag von Casaluci, Timo Gesendet: Dienstag, 17. Januar 2012 22:43 An: HTTPAPI and FTPAPI Projects Betreff: AW: Help with WSDL2RPG Yes, I've supposed that. We're on V6R1 here, but some of the DS exceed 1,000,000,000 byte so I've to slim down the WSDL file to the elements which we really need and change the "unbounded" occurrence to a value which fits to our data. It's a standard description for data exchange and covers a lot stuff we don't need here. Thanks, Timo -----Ursprüngliche Nachricht----- Von: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx [mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] Im Auftrag von thomas.raddatz@xxxxxx Gesendet: Dienstag, 17. Januar 2012 10:17 An: ftpapi@xxxxxxxxxxxxxxxxxxxxxx Betreff: AW: Help with WSDL2RPG Timo, That is not a problem of WSDL2RPG but a limitation of RPG. If you compile for V5R4 or lower, the maximum field size is 64k. Starting with V6R1 IBM increased the maximum field size to 16MB. However some web services extensively use arrays and then often exceeds that limitation. Please have a look at "FAQ What to do in case of a RNF0501 compile error message" which desribes how to get around that problem. http://www.tools400.de/Downloads/Freeware/Tools/FAQ/wsdl2rpg/FAQ_What_to_do_in_case_of_a_RNF0501_compiler_error_message_v1.0.pdf Thomas. ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx schrieb am 17.01.2012 09:39:10: > Von: t.casaluci@xxxxxxxx > An: ftpapi@xxxxxxxxxxxxxxxxxxxxxx > Datum: 17.01.2012 09:47 > Betreff: AW: Help with WSDL2RPG > Gesendet von: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx > > Hello Thomas, > > I did the changes you've mentioned. But now I got several errors > that the 16773104 bytes border is exceeded. > > RNF7301 Position (35794437-35794566) of subfield STATUS in data > structure S1_MATE... is greater than length of data structure (16773104). > RNF7301 Position (35794567-35794696) of subfield STORAGE... in data > structure S1_MATE... is greater than length of data structure (16773104). > RNF7301 Position (5-2146957316) of subfield MATERIA... in data > structure S1_RPGA... is greater than length of data structure (16773104). > RNF7301 Position (34199-16807302) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-287623428) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (16807303-16823946) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-287623428) of subfield MATERIA... in data > structure S1_RPGA... is greater than length of data structure (16773104). > RNF7301 Position (5-2146957316) of subfield MATERIA... in data > structure S1_RPGA... is greater than length of data structure (16773104). > RNF7301 Position (50843-16823946) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-287623428) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (16823947-16840590) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-287623428) of subfield MATERIA... in data > structure S1_RPGA... is greater than length of data structure (16773104). > RNF7301 Position (5-2146957316) of subfield MATERIA... in data > structure S1_RPGA... is greater than length of data structure (16773104). > RNF7301 Position (51233-16824336) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-2146957316) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (50063-16823166) of subfield TESTRESULT in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-285499652) of subfield TESTRES... in data > structure TESTRESULT is greater than length of data structure (16773104). > RNF7301 Position (16823167-19020162) of subfield VALUE in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (16824337-33597440) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-285542916) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (33597441-35794436) of subfield QUANTITY in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (35794437-35794566) of subfield STATUS in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (35794567-35794696) of subfield STORAGE... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-2146957316) of subfield MATERIA... in data > structure S1_RPGA... is greater than length of data structure (16773104). > RNF7301 Position (50063-16823166) of subfield TESTRESULT in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-285499652) of subfield TESTRES... in data > structure TESTRESULT is greater than length of data structure (16773104). > RNF7301 Position (16823167-19020162) of subfield VALUE in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-285542916) of subfield MATERIA... in data > structure S1_RPGA... is greater than length of data structure (16773104). > RNF7301 Position (5-285542916) of subfield MATERIA... in data > structure S1_RPGA... is greater than length of data structure (16773104). > RNF7301 Position (5-835161092) of subfield QAMATER... in data > structure S1_RPGA... is greater than length of data structure (16773104). > RNF7301 Position (5-285499652) of subfield TESTRES... in data > structure S1_RPGA... is greater than length of data structure (16773104). > RNF7301 Position (50713-16823816) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-2146957316) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (34199-16807302) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-287623428) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (16807303-16823946) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (16823817-33596920) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-2146957316) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (50843-16823946) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-287623428) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (16823947-16840590) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (33596921-50370024) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-2146957316) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (51233-16824336) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-2146957316) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (50063-16823166) of subfield TESTRESULT in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-285499652) of subfield TESTRES... in data > structure TESTRESULT is greater than length of data structure (16773104). > RNF7301 Position (16823167-19020162) of subfield VALUE in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (16824337-33597440) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-285542916) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (33597441-35794436) of subfield QUANTITY in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (35794437-35794566) of subfield STATUS in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (35794567-35794696) of subfield STORAGE... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (50370025-67143128) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-285542916) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (67143129-67143154) of subfield PUBLISH... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (67143155-83916258) of subfield QAMATER... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-835161092) of subfield QAMATER... in data > structure QAMATER... is greater than length of data structure (16773104). > RNF7301 Position (50713-16823816) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-2146957316) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (34199-16807302) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-287623428) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (16807303-16823946) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (16823817-33596920) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-2146957316) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (50843-16823946) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-287623428) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (16823947-16840590) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (33596921-50370024) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-2146957316) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (51233-16824336) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-2146957316) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (50063-16823166) of subfield TESTRESULT in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-285499652) of subfield TESTRES... in data > structure TESTRESULT is greater than length of data structure (16773104). > RNF7301 Position (16823167-19020162) of subfield VALUE in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (16824337-33597440) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-285542916) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (33597441-35794436) of subfield QUANTITY in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (35794437-35794566) of subfield STATUS in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (35794567-35794696) of subfield STORAGE... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (50370025-67143128) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-285542916) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (67143129-67143154) of subfield PUBLISH... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (67143155-83916258) of subfield QAMATER... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-835161092) of subfield QAMATER... in data > structure QAMATER... is greater than length of data structure (16773104). > RNF0376 TESTRES... The data item is larger than the maximum of 16. > 773.104 Bytes. > RNF0376 MATERIA... The data item is larger than the maximum of 16. > 773.104 Bytes. > RNF0376 MATERIA... The data item is larger than the maximum of 16. > 773.104 Bytes. > RNF0376 MATERIA... The data item is larger than the maximum of 16. > 773.104 Bytes. > RNF0376 MATERIA... The data item is larger than the maximum of 16. > 773.104 Bytes. > RNF0376 QAMATER... The data item is larger than the maximum of 16. > 773.104 Bytes. > RNF0376 MATERIA... The data item is larger than the maximum of 16. > 773.104 Bytes. > RNF0376 MATERIA... The data item is larger than the maximum of 16. > 773.104 Bytes. > RNF0376 MATERIA... The data item is larger than the maximum of 16. > 773.104 Bytes. > RNF0376 MATERIA... The data item is larger than the maximum of 16. > 773.104 Bytes. > RNF7301 Position (34199-16807302) of subfield MATERIA... in data > structure S1_MATE... is greater than length of data structure (16773104). > RNF7301 Position (5-287623428) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (16807303-16823946) of subfield MATERIA... in data > structure S1_MATE... is greater than length of data structure (16773104). > RNF7301 Position (50843-16823946) of subfield MATERIA... in data > structure S1_MATE... is greater than length of data structure (16773104). > RNF7301 Position (5-287623428) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (16823947-16840590) of subfield MATERIA... in data > structure S1_MATE... is greater than length of data structure (16773104). > RNF7301 Position (50713-16823816) of subfield MATERIA... in data > structure S1_MATE... is greater than length of data structure (16773104). > RNF7301 Position (5-2146957316) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (34199-16807302) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-287623428) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (16807303-16823946) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (16823817-33596920) of subfield MATERIA... in data > structure S1_MATE... is greater than length of data structure (16773104). > RNF7301 Position (5-2146957316) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (50843-16823946) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-287623428) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (16823947-16840590) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (33596921-50370024) of subfield MATERIA... in data > structure S1_MATE... is greater than length of data structure (16773104). > RNF7301 Position (5-2146957316) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (51233-16824336) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-2146957316) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (50063-16823166) of subfield TESTRESULT in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-285499652) of subfield TESTRES... in data > structure TESTRESULT is greater than length of data structure (16773104). > RNF7301 Position (16823167-19020162) of subfield VALUE in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (16824337-33597440) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-285542916) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (33597441-35794436) of subfield QUANTITY in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (35794437-35794566) of subfield STATUS in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (35794567-35794696) of subfield STORAGE... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (50370025-67143128) of subfield MATERIA... in data > structure S1_MATE... is greater than length of data structure (16773104). > RNF7301 Position (5-285542916) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (67143129-67143154) of subfield PUBLISH... in data > structure S1_MATE... is greater than length of data structure (16773104). > RNF7301 Position (67143155-83916258) of subfield QAMATER... in data > structure S1_MATE... is greater than length of data structure (16773104). > RNF7301 Position (5-835161092) of subfield QAMATER... in data > structure QAMATER... is greater than length of data structure (16773104). > RNF7301 Position (50063-16823166) of subfield TESTRESULT in data > structure S1_MATE... is greater than length of data structure (16773104). > RNF7301 Position (5-285499652) of subfield TESTRES... in data > structure TESTRESULT is greater than length of data structure (16773104). > RNF7301 Position (16823167-19020162) of subfield VALUE in data > structure S1_MATE... is greater than length of data structure (16773104). > RNF7301 Position (51233-16824336) of subfield MATERIA... in data > structure S1_MATE... is greater than length of data structure (16773104). > RNF7301 Position (5-2146957316) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (50063-16823166) of subfield TESTRESULT in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (5-285499652) of subfield TESTRES... in data > structure TESTRESULT is greater than length of data structure (16773104). > RNF7301 Position (16823167-19020162) of subfield VALUE in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (16824337-33597440) of subfield MATERIA... in data > structure S1_MATE... is greater than length of data structure (16773104). > RNF7301 Position (5-285542916) of subfield MATERIA... in data > structure MATERIA... is greater than length of data structure (16773104). > RNF7301 Position (33597441-35794436) of subfield QUANTITY in data > structure S1_MATE... is greater than length of data structure (16773104). > RNF0501 Length of character item S1_RPGA... exceeds 16773104; > length defaults to 16773104. > RNF0501 Length of character item S1_RPGA... exceeds 16773104; > length defaults to 16773104. > RNF0501 Length of character item S1_RPGA... exceeds 16773104; > length defaults to 16773104. > RNF0501 Length of character item S1_RPGA... exceeds 16773104; > length defaults to 16773104. > RNF0501 Length of character item S1_RPGA... exceeds 16773104; > length defaults to 16773104. > RNF0501 Length of character item S1_RPGA... exceeds 16773104; > length defaults to 16773104. > RNF0501 Length of character item S1_MATE... exceeds 16773104; > length defaults to 16773104. > RNF0501 Length of character item S1_MATE... exceeds 16773104; > length defaults to 16773104. > RNF0501 Length of character item S1_MATE... exceeds 16773104; > length defaults to 16773104. > RNF0501 Length of character item S1_RPGA... exceeds 16773104; > length defaults to 16773104. > RNF0501 Length of character item S1_RPGA... exceeds 16773104; > length defaults to 16773104. > RNF0501 Length of character item S1_RPGA... exceeds 16773104; > length defaults to 16773104. > RNF0501 Length of character item S1_MATE... exceeds 16773104; > length defaults to 16773104. > RNF0501 Length of character item S1_RPGA... exceeds 16773104; > length defaults to 16773104. > RNF0501 Length of character item S1_MATE... exceeds 16773104; > length defaults to 16773104. > > Any proposals? > > Thanks, > > Timo > > -----Ursprüngliche Nachricht----- > Von: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx [mailto:ftpapi- > bounces@xxxxxxxxxxxxxxxxxxxxxx] Im Auftrag von Thomas Raddatz > Gesendet: Montag, 16. Januar 2012 23:15 > An: HTTPAPI and FTPAPI Projects > Betreff: Re: Help with WSDL2RPG > > Timo, > > Since there is too much workload on our box I could not yet test the bug > fix thoroughly. However you may try to change procedure > "OutputFile_addTypeDef" of module "WSDL2R03" like this: > > // Get final type definition > if (TypeDef_isUserDefined(i_type)); > // and not TypeDef_isArrayValue(i_type)); // <<== removed > finalType = TypeDef_getFinalTypeUsed(i_type); > else; > finalType = i_type; > endif; > > After having compiled the module you may use UPDPGM to update program > WSDL2RPG instead of running the installer again. > > Thomas. > > Am 16.01.2012 18:12, schrieb Casaluci, Timo: > > Hello Thomas, > > > > > > today I tried to continue with WSDL2RPG to generate a first test > > program. > > > > WSDL2RPG successfully created the Web Service stub (see attached Source > > Files). > > > > > > I try to compile it to a module with: > > > > > > CRTRPGMOD MODULE(RXLKVOBJI/WS0001) SRCFILE(R8LKVSRCI/VEXSRCL) > > SRCMBR(WS0001) OPTION(*EVENTF) DBGVIEW(*LIST) REPLACE(*YES) > > > > > > and got several RNF7030 error messages: > > > > > > RNF7030 The name or indicator MATERIA... is not defined. > > > > RNF7030 The name or indicator MATERIA... is not defined. > > > > RNF7030 The name or indicator ANY is not defined. > > > > RNF7030 The name or indicator ANY is not defined. > > > > RNF7030 The name or indicator VALUE is not defined. > > > > RNF7030 The name or indicator ANY is not defined. > > > > RNF7030 The name or indicator MATERIA... is not defined. > > > > RNF7030 The name or indicator ANY is not defined. > > > > RNF7030 The name or indicator VALUE is not defined. > > > > RNF7030 The name or indicator ANY is not defined. > > > > RNF7030 The name or indicator MATERIA... is not defined. > > > > RNF7030 The name or indicator ANY is not defined. > > > > RNF7030 The name or indicator MATERIA... is not defined. > > > > RNF7030 The name or indicator MATERIA... is not defined. > > > > RNF7030 The name or indicator MATERIA... is not defined. > > > > RNF7030 The name or indicator MATERIA... is not defined. > > > > RNF7030 The name or indicator QAMATER... is not defined. > > > > RNF7030 The name or indicator ANY is not defined. > > > > RNF7030 The name or indicator TESTRESULT is not defined. > > > > RNF7030 The name or indicator VALUE is not defined. > > > > RNF7030 The name or indicator ANY is not defined. > > > > RNF7030 The name or indicator MATERIA... is not defined. > > > > RNF7030 The name or indicator MATERIA... is not defined. > > > > RNF7030 The name or indicator QUANTITY is not defined. > > > > RNF7030 The name or indicator ANY is not defined. > > > > RNF7030 The name or indicator QUANTITY is not defined. > > > > RNF7030 The name or indicator ANY is not defined. > > > > RNF7030 The name or indicator ANY is not defined. > > > > RNF7030 The name or indicator TESTEDM... is not defined. > > > > RNF7030 The name or indicator TESTEDM... is not defined. > > > > RNF7030 The name or indicator TESTEDM... is not defined. > > > > RNF7030 The name or indicator ANY is not defined. > > > > RNF7030 The name or indicator ITEM is not defined. > > > > RNF7030 The name or indicator ITEM is not defined. > > > > RNF7030 The name or indicator ITEM is not defined. > > > > RNF7030 The name or indicator ITEM is not defined. > > > > RNF7030 The name or indicator ITEM is not defined. > > > > RNF7030 The name or indicator ITEM is not defined. > > > > RNF7030 The name or indicator ITEM is not defined. > > > > RNF7030 The name or indicator ITEM is not defined. > > > > RNF7030 The name or indicator ITEM is not defined. > > > > RNF7030 The name or indicator ITEM is not defined. > > > > RNF7030 The name or indicator ITEM is not defined. > > > > RNF7030 The name or indicator ITEM is not defined. > > > > RNF7030 The name or indicator ITEM is not defined. > > > > RNF7030 The name or indicator ITEM is not defined. > > > > RNF7030 The name or indicator ITEM is not defined. > > > > RNF7030 The name or indicator ITEM is not defined. > > > > RNF7030 The name or indicator ITEM is not defined. > > > > RNF7030 The name or indicator TESTEDM... is not defined. > > > > RNF7030 The name or indicator TESTEDM... is not defined. > > > > RNF7030 The name or indicator TESTEDM... is not defined. > > > > RNF7030 The name or indicator TESTRES... is not defined. > > > > RNF7030 The name or indicator VALUETYPE is not defined. > > > > RNF7030 The name or indicator VALUETYPE is not defined. > > > > RNF7030 The name or indicator VALUETYPE is not defined. > > > > RNF7030 The name or indicator S1_ANYR... is not defined. > > > > RNF7030 The name or indicator S1_ANYR... is not defined. > > > > RNF7030 The name or indicator S1_ANYR... is not defined. > > > > RNF7030 The name or indicator S1_ANYR... is not defined. > > > > RNF7030 The name or indicator S1_ANYR... is not defined. > > > > RNF7030 The name or indicator S1_ANYR... is not defined. > > > > RNF7030 The name or indicator S1_ANYR... is not defined. > > > > RNF7030 The name or indicator S1_ANYR... is not defined. > > > > RNF7030 The name or indicator S1_ANYR... is not defined. > > > > RNF7030 The name or indicator S1_ANYR... is not defined. > > > > RNF7030 The name or indicator S1_ANYR... is not defined. > > > > RNF7030 The name or indicator S1_ANYR... is not defined. > > > > RNF7030 The name or indicator S1_ANYR... is not defined. > > > > RNF7030 The name or indicator S1_ANYR... is not defined. > > > > RNF7030 The name or indicator S1_ANYR... is not defined. > > > > RNF7030 The name or indicator S1_ANYR... is not defined. > > > > RNF7030 The name or indicator S1_ANYR... is not defined. > > > > > > > > E.g. the first errors links me to the following DS: > > > > > > D tns_ProcessMaterialInformation_t... > > > > D DS template > > > > D qualified > > > > D MaterialInformation... > > > > D > > likeds(s1_MaterialInformationType_t) > > > > * > > > > * > > > > D tns_ProcessMaterialInformationResponse_t... > > > > D DS template > > > > D qualified > > > > D MaterialInformation... > > > > D > > likeds(s1_MaterialInformationType_t) > > > > > > But the definition for DS s1_MaterialInformationType_t exists in the > > source file: > > > > > > D s1_MaterialInformationType_t... > > > > D DS template > > > > D qualified > > > > D ProcessingStatus... > > > > D > > likeds(s2_ProcessingStatusType_t) > > > > D Any likeds(s1_RpgArrayOfAny_t) > > > > D Description > > likeds(s1_RpgArrayOfDescription_t) > > > > D ID 128A varying > > > > D Location likeds(s1_LocationType_t) > > > > D MaterialClass > > likeds(s1_RpgArrayOfMaterialClass_t) > > > > D MaterialDefinition... > > > > D > > likeds(s1_RpgArrayOfMaterialDefini... > > > > D tion_t) > > > > D MaterialLot > > likeds(s1_RpgArrayOfMaterialLot_t) > > > > D MaterialSubLot... > > > > D > > likeds(s1_RpgArrayOfMaterialSubLot_t) > > > > D PublishedDate Z > > > > D QAMaterialTestSpecification... > > > > D > > likeds(s1_RpgArrayOfQAMaterialTest... > > > > D Specification_t) > > > > * > > > > * > > > > > > Should these two generated module sources work without manual changes? > > > > > > Thanks, > > > > > > Timo > > > > > > -----Ursprüngliche Nachricht----- > > Von: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx > > [mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] Im Auftrag von Thomas > > Raddatz > > Gesendet: Freitag, 13. Januar 2012 20:35 > > An: HTTPAPI and FTPAPI Projects > > Betreff: Re: Help with WSDL2RPG > > > > > > Timo, > > > > > > That are really good news. I am happy that you could solve the problem > > that > > > > way because there is no way for recursion with RPG data structures. > > > > > > Thomas. > > > > > > Am 13.01.2012 18:47, schrieb Casaluci, Timo: > > > > > Hello, > > > > > > > > > > > > > > > thank you for going so deep into this. We don't develop this > > WSDL, we > > > > > got it from a software company which makes the software for our > > Storage > > > > > System. > > > > > > > > > > I'm not sure what they want to describe with that recursivity, > > perhaps > > > > > it should be possible that a location is able to show to another > > > > > location. > > > > > > > > > > I've tested the WSDL with the Tool WS-I Compliance of soapUI and > > got a > > > > > "passed" for it. > > > > > > > > > > > > > > > soapUI generates the following Soap message for it: > > > > > > > > > > > > > > > > > > > > <b2m:Location> > > > > > > > > > > <!--Optional:--> > > > > > > > > > > <b2m:EquipmentID>?</b2m:EquipmentID> > > > > > > > > > > <!--Optional:--> > > > > > > > > > > <b2m:EquipmentElementLevel > > > > > OtherValue="?">?</b2m:EquipmentElementLevel> > > > > > > > > > > <!--Optional:--> > > > > > > > > > > <b2m:Location/> > > > > > > > > > > <!--Zero or more repetitions:--> > > > > > > > > > > <b2m:Any> > > > > > > > > > > <!--You may enter ANY elements at this point--> > > > > > > > > > > </b2m:Any> > > > > > > > > > > </b2m:Location> > > > > > > > > > > I think in our environment we don't need this "optional" location > > > > > element under the element LocationType. > > > > > > > > > > For testing I've now changed the Element Location Type to: > > > > > > > > > > > > > > > <s:complexType name="LocationType"> > > > > > > > > > > <s:sequence> > > > > > > > > > > <s:element minOccurs="0" maxOccurs="1" > > name="EquipmentID" > > > > > type="s:string" /> > > > > > > > > > > <s:element minOccurs="0" maxOccurs="1" > > > > > name="EquipmentElementLevel" type="s1:EquipmentElementLevelType" > > /> > > > > > > > > > > <s:element minOccurs="0" maxOccurs="unbounded" > > name="Any" > > > > > type="s1:AnyType" /> > > > > > > > > > > </s:sequence> > > > > > > > > > > </s:complexType> > > > > > > > > > > > > > > > and eliminated a second one under MaterialSubLotType. > > > > > > > > > > Now I got the message "Successfully generated 2 Web Service stub > > > > > modules: WS0001*. Feel free to ..."! > > > > > > > > > > I'm looking forward to work with your tools. > > > > > > > > > > > > > > > Thank you and have a nice weekend! > > > > > > > > > > > > > > > Timo Casaluci > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -----Ursprüngliche Nachricht----- > > > > > Von: [1]ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx > > > > > [2][mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] Im Auftrag von > > > > > [3]thomas.raddatz@xxxxxx > > > > > Gesendet: Freitag, 13. Januar 2012 13:26 > > > > > An: [4]ftpapi@xxxxxxxxxxxxxxxxxxxxxx > > > > > Betreff: Re: AW: Help with WSDL2RPG > > > > > > > > > > > > > > > > > > > > Timo, > > > > > > > > > > > > > > > Element 'LocationType' is the one that causes the error. That > > element > > > > > is > > > > > > > > > > part of namespace "[1][5]http://www.wbf.org/xml/b2mml-v0300 " and > > it > > > > > references > > > > > > > > > > element 's1:LocationType': > > > > > > > > > > > > > > > <s:schema elementFormDefault="qualified" targetNamespace=" > > > > > > > > > > [2][6]http://www.wbf.org/xml/b2mml-v0300"> > > > > > > > > > > <s:import > > > > > namespace="[3][7] http://www.wbf.org/xml/b2mml-v0300-extensions" > > /> > > > > > > > > > > ... > > > > > > > > > > <s:complexType name="LocationType"> > > > > > > > > > > <s:sequence> > > > > > > > > > > <s:element minOccurs="0" maxOccurs="1" name="EquipmentID" > > > > > > > > > > type="s:string" /> > > > > > > > > > > <s:element minOccurs="0" maxOccurs="1" > > > > > name="EquipmentElementLevel" > > > > > > > > > > type="s1:EquipmentElementLevelType" /> > > > > > > > > > > <s:element minOccurs="0" maxOccurs="1" name="Location" > > > > > > > > > > type="s1:LocationType" /> > > > > > > > > > > <s:element minOccurs="0" maxOccurs="unbounded" name="Any" > > > > > > > > > > type="s1:AnyType" /> > > > > > > > > > > </s:sequence> > > > > > > > > > > </s:complexType> > > > > > > > > > > > > > > > The value assigned to namespace prefix 's1' is > > > > > > > > > > 'http://www.wbf.org/xml/b2mml-v0300', which is the samenamespace > > of > > > > > the > > > > > > > > > > element that shall be defined. > > > > > > > > > > > > > > > <wsdl:definitions > > > > > > > > > > ... > > > > > > > > > > xmlns:s1="[4][8]http://www.wbf.org/xml/b2mml-v0300" > > > > > > > > > > > > > > > Hence both 'LocationType'(s) are the same: > > > > > > > > > > > > > > > <s:complexType name="LocationType"> <<== this one is the > > same as > > > > > ... > > > > > > > > > > <s:sequence> > > > > > > > > > > ... > > > > > > > > > > <s:element minOccurs="0" maxOccurs="1" name="Location" > > > > > > > > > > type="s1:LocationType" /> <<== ... this one > > > > > > > > > > > > > > > I have no idea to what construct of Java, C# or any other object > > > > > oriented > > > > > > > > > > programming language that maps. How did you develop or create the > > WSDL? > > > > > Or > > > > > > > > > > am I missing something? > > > > > > > > > > > > > > > Thomas. > > > > > > > > > > > > > > > [5][9]ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx schrieb am 13.01.2012 > > > > > 12:21:09: > > > > > > > > > > > > > > > > Von: [6][10]t.casaluci@xxxxxxxx > > > > > > > > > > > An: [7][11]ftpapi@xxxxxxxxxxxxxxxxxxxxxx > > > > > > > > > > > Datum: 13.01.2012 12:27 > > > > > > > > > > > Betreff: AW: Help with WSDL2RPG > > > > > > > > > > > Gesendet von: [8][12]ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx > > > > > > > > > > > > > > > > > > > > > > > > > > > Hello, > > > > > > > > > > > > > > > > > > > > > > > > > > > now I've attached the WSDL File, it's located on a server in > > our > > > > > > > > > > > intranet. I've expected that the file is correct > > > > > > > > > > > because it?s the standard interface of the stock system we > > want to > > > > > > > > > > > exchange data with. > > > > > > > > > > > What we want to do in the first step is to send our open > > orders from > > > > > > > > > > > our ERP System to a web service which is located on a remote > > server. > > > > > > > > > > > And in a second step we want to get back a similar > set of data > > to a > > > > > > > > > > > web service which is located on our IBM i. > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > > > > > > > > > > > > > > > > > Timo > > > > > > > > > > > > > > > > > > > > > > > > > > > -----Ursprüngliche Nachricht----- > > > > > > > > > > > Von: [9][13]ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx > > [mailto:ftpapi- > > > > > > > > > > > [10][14]bounces@xxxxxxxxxxxxxxxxxxxxxx] Im Auftrag von > > > > > > > > > > [11][15]thomas.raddatz@xxxxxxxxxxx > > > > > > > > > > > Gesendet: Freitag, 13. Januar 2012 11:12 > > > > > > > > > > > An: HTTPAPI and FTPAPI Projects > > > > > > > > > > > Betreff: Re: Help with WSDL2RPG > > > > > > > > > > > > > > > > > > > > > > > > > > > Timo, > > > > > > > > > > > > > > > > > > > > > > It is always a good idea to attached the wsdl file > when having > > a > > > > > problem > > > > > > > > > > with > > > > > > > > > > > the generator. The problem you reported does not > sound good to > > me. I > > > > > > > > > > > assume that > > > > > > > > > > > there is a recursion in the wsdl file. Please send the wsdl > > file or > > > > > the > > > > > > > > > > URL of > > > > > > > > > > > the wsdl file to me and I am going to try to figure out what > > wrong > > > > > with > > > > > > > > > > it or > > > > > > > > > > > the generator. > > > > > > > > > > > > > > > > > > > > > > Regards, > > > > > > > > > > > > > > > > > > > > > > Thomas. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > "Casaluci, Timo"<[12][16]t.casaluci@xxxxxxxx> hat am 12. > > Januar 2012 um > > > > > 16:41 > > > > > > > > > > > geschrieben: > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hello Mr. Raddatz, > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I've a question/problem for you. > > > > > > > > > > > > > > > > > > > > > > > > During the generation of my first WS Client Stub program > > with > > > > > WSDL2RPG > > > > > > > > > > I got > > > > > > > > > > > > the following error message: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Extract from my Joblog: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > WSDL2RPG > > > > > > > > > > URL('http://vega-facts01/FactsWebServices/MaterialInformation/Mat > > > > > > > > > > > > > > > > > > > > > > > > erialInformation.asmx?WSDL') SERVICE(*SELECT *SELECT) > > > > > > > > > > SRCFILE(R8LKVSRCI/VE > > > > > > > > > > > > > > > > > > > > > > > > XSRCL) SRCMBR(WS0001) TYPE(*STUB) > > > > > > > > > > > > > > > > > > > > > > > > Member WS000101 added to file VEXSRCL in R8LKVSRCI. > > > > > > > > > > > > > > > > > > > > > > > > Member WS000101 file VEXSRCL in R8LKVSRCI changed. > > > > > > > > > > > > > > > > > > > > > > > > Automatic storage overflow. (MCH4429) > > > > > > > > > > > > > > > > > > > > > > > > Function check. MCH4429 unmonitored by WSDL2RPG at > > statement > > > > > > > > > > 0000101200, > > > > > > > > > > > > > > > > > > > > > > > > instruction X'0000'. > > > > > > > > > > > > > > > > > > > > > > > > The call to main ended in error (C G D F). > > > > > > > > > > > > > > > > > > > > > > > > The call to main ended in error (C G D F). > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Weitere Nachrichteninformationen > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Nachrichten-ID . . . . : MCH4429 > > > > > > > > > > > > > > > > > > > > > > > > Sendedatum . . . . . . : 12.01.12 > Sendezeit . . . > > . . . > > > > > > > > > > > : 16:30:21 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Nachricht . . . : Automatic storage overflow. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Cause . . . . . : One of the automatic storage stacks > > > > > X'00000002' > > > > > > > > > > for the > > > > > > > > > > > > > > > > > > > > > > > > thread has overflowed or a storage access beyond the > > maximum > > > > > size > > > > > > > > > > of a > > > > > > > > > > > > > > > > > > > > > > > > teraspace automatic storage stack was > attempted. Further > > > > > > > > > > > program execution > > > > > > > > > > > > > > > > > > > > > > > > within the thread is not possible. Automatic storage > > stack > > > > > > > > > > > values and their > > > > > > > > > > > > > > > > > > > > > > > > meanings follow: > > > > > > > > > > > > > > > > > > > > > > > > 1 -- System stack in single level storage. > > > > > > > > > > > > > > > > > > > > > > > > 2 -- User stack in single level storage. > > > > > > > > > > > > > > > > > > > > > > > > 3 -- System stack in teraspace. > > > > > > > > > > > > > > > > > > > > > > > > 4 -- User stack in teraspace. > > > > > > > > > > > > > > > > > > > > > > > > Technical description . . . . . . . . : Attempt to > > reduce the > > > > > > > > > > automatic > > > > > > > > > > > > > > > > > > > > > > > > storage used by programs running in the thread. > > > > > > > > > > > > > > > > > > > > > > > > Ende > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Would it be helpful to attach the WSDL File? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Timo Casaluci > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > *********************************************************************** > > > > > ************* > > > > > > > > > > > > VEGA Grieshaber KG > > > > > > > > > > > > Kommanditgesellschaft mit Sitz in Wolfach > > > > > > > > > > > > Registergericht Freiburg: HRA 680 687 > > > > > > > > > > > > > > > > > > > > > > > > Persönlich haftender Gesellschafter: Jürgen Grieshaber > > > > > > > > > > > > > > > > > > > > > > > > Persönlich haftende Gesellschafterin: Grieshaber Holding > > GmbH > > > > > > > > > > > > Sitz Wolfach, Registergericht Freiburg: HRB 680 271 > > > > > > > > > > > > > > > > > > > > > > > > Geschäftsführer: Jürgen Grieshaber, Günter Kech, Rainer > > Mielke > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > *********************************************************************** > > > > > ************* > > > > > > > > > > > [Anhang "MaterialInformation.WSDL" gelöscht von Thomas > > Raddatz/OBI/ > > > > > > > > > > > DE] > > > > > > > > > > > > ----------------------------------------------------------------------- > > > > > > > > > > > This is the FTPAPI mailing list. To unsubscribe, please go > > to: > > > > > > > > > > > [13][17] http://www.scottklement.com/mailman/listinfo/ftpapi > > > > > > > > > > > > > > > > > > ----------------------------------------------------------------------- > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > IMPORTANT NOTICE: > > > > > > > > > > This email is confidential, may be legally privileged, and is for > > the > > > > > > > > > > intended recipient only. Access, disclosure, copying, > > distribution, or > > > > > > > > > > reliance on any of it by anyone else is prohibited and may be a > > > > > criminal > > > > > > > > > > offence. Please delete if obtained in error and email > > confirmation to > > > > > the sender. > > > > > > > > > > References > > > > > > > > > > 1. [18]http://www.wbf.org/xml/b2mml-v0300 > > > > > 2. [19]http://www.wbf.org/xml/b2mml-v0300 > > > > > 3. [20]http://www.wbf.org/xml/b2mml-v0300-extensions > > > > > 4. [21]http://www.wbf.org/xml/b2mml-v0300 > > > > > 5. [22]mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx > > > > > 6. [23]mailto:t.casaluci@xxxxxxxx > > > > > 7. [24]mailto:ftpapi@xxxxxxxxxxxxxxxxxxxxxx > > > > > 8. [25]mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx > > > > > 9. [26]mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx > > > > > 10. [27]mailto:bounces@xxxxxxxxxxxxxxxxxxxxxx > > > > > 11. [28]mailto:thomas.raddatz@xxxxxxxxxxx > > > > > 12. [29]mailto:t.casaluci@xxxxxxxx > > > > > 13. [30]http://www.scottklement.com/mailman/listinfo/ftpapi > > > > > > > > > > > > > > > > > > > > > > > > > > > ----------------------------------------------------------------------- > > > > > This is the FTPAPI mailing list. To unsubscribe, please go to: > > > > > [31]http://www.scottklement.com/mailman/listinfo/ftpapi > > > > > > > ----------------------------------------------------------------------- > > > > ----------------------------------------------------------------------- > > > > This is the FTPAPI mailing list. To unsubscribe, please go to: > > > > [32]http://www.scottklement.com/mailman/listinfo/ftpapi > > > > ----------------------------------------------------------------------- > > > > References > > > > 1. mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx > > 2. mailto:[mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] > > 3. mailto:thomas.raddatz@xxxxxx > > 4. mailto:ftpapi@xxxxxxxxxxxxxxxxxxxxxx > > 5. http://www.wbf.org/xml/b2mml-v0300 > > 6. http://www.wbf.org/xml/b2mml-v0300 > > 7. http://www.wbf.org/xml/b2mml-v0300-extensions > > 8. http://www.wbf.org/xml/b2mml-v0300 > > 9. mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx > > 10. mailto:t.casaluci@xxxxxxxx > > 11. mailto:ftpapi@xxxxxxxxxxxxxxxxxxxxxx > > 12. mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx > > 13. mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx > > 14. mailto:bounces@xxxxxxxxxxxxxxxxxxxxxx > > 15. mailto:thomas.raddatz@xxxxxxxxxxx > > 16. mailto:t.casaluci@xxxxxxxx > > 17. http://www.scottklement.com/mailman/listinfo/ftpapi > > 18. http://www.wbf.org/xml/b2mml-v0300 > > 19. http://www.wbf.org/xml/b2mml-v0300 > > 20. http://www.wbf.org/xml/b2mml-v0300-extensions > > 21. http://www.wbf.org/xml/b2mml-v0300 > > 22. mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx > > 23. mailto:t.casaluci@xxxxxxxx > > 24. mailto:ftpapi@xxxxxxxxxxxxxxxxxxxxxx > > 25. mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx > > 26. mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx > > 27. mailto:bounces@xxxxxxxxxxxxxxxxxxxxxx > > 28. mailto:thomas.raddatz@xxxxxxxxxxx > > 29. mailto:t.casaluci@xxxxxxxx > > 30. http://www.scottklement.com/mailman/listinfo/ftpapi > > 31. http://www.scottklement.com/mailman/listinfo/ftpapi > > 32. http://www.scottklement.com/mailman/listinfo/ftpapi > > > > > > > > > > ----------------------------------------------------------------------- > > This is the FTPAPI mailing list. To unsubscribe, please go to: > > http://www.scottklement.com/mailman/listinfo/ftpapi > > ----------------------------------------------------------------------- > ----------------------------------------------------------------------- > This is the FTPAPI mailing list. To unsubscribe, please go to: > http://www.scottklement.com/mailman/listinfo/ftpapi > ----------------------------------------------------------------------- > ----------------------------------------------------------------------- > This is the FTPAPI mailing list. To unsubscribe, please go to: > http://www.scottklement.com/mailman/listinfo/ftpapi > ----------------------------------------------------------------------- -- IMPORTANT NOTICE: This email is confidential, may be legally privileged, and is for the intended recipient only. Access, disclosure, copying, distribution, or reliance on any of it by anyone else is prohibited and may be a criminal offence. Please delete if obtained in error and email confirmation to the sender. ----------------------------------------------------------------------- This is the FTPAPI mailing list. To unsubscribe, please go to: http://www.scottklement.com/mailman/listinfo/ftpapi -----------------------------------------------------------------------
HTTPAPI Ver 1.24beta14 released 2011-10-08 OS/400 Ver V6R1M0 New iconv() objects set, PostRem=819. PostLoc=0. ProtRem=819. ProtLoc=0 WSDL2RPG Ver 1.15beta4 released 2012-01-08 ** 2012-04-18-09.04.25.798000: Entering MaterialInformationSoap_ProcessMaterialInformation() New iconv() objects set, PostRem=1208. PostLoc=0. ProtRem=819. ProtLoc=0 ** 2012-04-18-09.04.26.009000: Sending request to server http_persist_open(): entered http_long_ParseURL(): entered DNS resolver retrans: 2 DNS resolver retry : 2 DNS resolver options: x'00000136' DNS default domain: de.vega.corp DNS server found: 172.16.1.91 DNS server found: 172.16.1.92 http_persist_post(): entered http_long_ParseURL(): entered do_oper(POST): entered There are 0 cookies in the cache POST /FactsWebServices/MaterialInformation/MaterialInformation.asmx HTTP/1.1 Host: vega-facts01 User-Agent: http-api/1.24 Content-Length: 1825 Content-Type: text/xml SOAPAction: "http://siemens.siplace.facts/ProcessMaterialInformation" sendraw(): entered <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:s1="http://www.wbf.org/xml/b2mml-v0300" xmlns:s2="http://www.wbf.org/xml/b2mml-v0300-extensions" xmlns:tns="http://siemens.siplace.facts/"><soapenv:Body><tns:ProcessMaterialInformation><s1:MaterialInformation><s1:ID>ML12310</s1:ID><s1:PublishedDate>2012-04-18T09:04:25.753+02:00</s1:PublishedDate><s1:MaterialLot><s1:ID>Test LotID</s1:ID><s1:MaterialDefinitionID>2.9</s1:MaterialDefinitionID><s1:MaterialLotProperty><s1:ID>Blocked</s1:ID><s1:Value><s1:ValueString>01812345015</s1:ValueString><s1:DataType>string</s1:DataType></s1:Value><s1:Value><s1:ValueString>Wareneingang</s1:ValueString><s1:DataType>string</s1:DataType></s1:Value><s1:Value><s1:ValueString>Wareneingang</s1:ValueString><s1:DataType>string</s1:DataType></s1:Value><s1:Value><s1:ValueString>SIPLACE Lager</s1:ValueString><s1:DataType>string</s1:DataType></s1:Value><s1:Value><s1:ValueString>Schoch AG</s1:ValueString><s1:DataType>string</s1:DataType></s1:Value><s1:Value><s1:ValueString>MW000000123456</s1:ValueString><s1:DataType>string</s1:DataType></s1:Value><s1:Value><s1:ValueString>16.03.2011 00:00</s1:ValueString><s1:DataType>string</s1:DataType></s1:Value><s1:Value><s1:ValueString>true</s1:ValueString><s1:DataType>boolean</s1:DataType></s1:Value></s1:MaterialLotProperty><s1:StorageLocation>VEGA.SCHILTACH.SMT-Avise</s1:StorageLocation><s1:Quantity><s1:QuantityString>24</s1:QuantityString><s1:DataType>int</s1:DataType><s1:UnitOfMeasure></s1:UnitOfMeasure><s1:Key></s1:Key></s1:Quantity><s2:MessageType>MaterialLot</s2:MessageType><s2:Action>Add</s2:Action><s2:ConfirmOption>Always</s2:ConfirmOption></s1:MaterialLot></s1:MaterialInformation></tns:ProcessMaterialInformation></soapenv:Body></soapenv:Envelope> recvresp(): entered HTTP/1.1 200 OK Date: Wed, 18 Apr 2012 07:04:32 GMT Server: Microsoft-IIS/6.0 X-Powered-By: ASP.NET X-AspNet-Version: 2.0.50727 Cache-Control: private, max-age=0 Content-Type: text/xml; charset=utf-8 Content-Length: 2301 SetError() #13: HTTP/1.1 200 OK recvresp(): end with 200 recvdoc parms: identity 2301 header_load_cookies() entered recvdoc(): entered SetError() #0: <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><ProcessMaterialInformationResponse xmlns="http://siemens.siplace.facts/"><MaterialInformation xmlns="http://www.wbf.org/xml/b2mml-v0300"><ID>ML12310</ID><PublishedDate>2012-04-18T09:04:25.753+02:00</PublishedDate><MaterialLot><ID>Test LotID</ID><MaterialDefinitionID>2.9</MaterialDefinitionID><MaterialLotProperty><ID>Blocked</ID><Value><ValueString>01812345015</ValueString><DataType>string</DataType></Value><Value><ValueString>Wareneingang</ValueString><DataType>string</DataType></Value><Value><ValueString>Wareneingang</ValueString><DataType>string</DataType></Value><Value><ValueString>SIPLACE Lager</ValueString><DataType>string</DataType></Value><Value><ValueString>Schoch AG</ValueString><DataType>string</DataType></Value><Value><ValueString>MW000000123456</ValueString><DataType>string</DataType></Value><Value><ValueString>16.03.2011 00:00</ValueString><DataType>string</DataType></Value><Value><ValueString>true</ValueString><DataType>boolean</DataType></Value></MaterialLotProperty><StorageLocation>VEGA.SCHILTACH.SMT-Avise</StorageLocation><Quantity><QuantityString>24</QuantityString><DataType>int</DataType><UnitOfMeasure /><Key /></Quantity><MessageType xmlns="http://www.wbf.org/xml/b2mml-v0300-extensions">MaterialLot</MessageType><Action xmlns="http://www.wbf.org/xml/b2mml-v0300-extensions">Add</Action><ConfirmOption xmlns="http://www.wbf.org/xml/b2mml-v0300-extensions">Always</ConfirmOption><ProcessingStatus xmlns="http://www.wbf.org/xml/b2mml-v0300-extensions"><ReturnValue>Rejected</ReturnValue><ReturnDescription>No Material Definition found for <2.9>! </ReturnDescription><ReturnCode>FACTS220000</ReturnCode></ProcessingStatus></MaterialLot><ProcessingStatus xmlns="http://www.wbf.org/xml/b2mml-v0300-extensions"><ReturnValue>Rejected</ReturnValue><ReturnDescription>There were errors! 0 material lots/notifications successfully processed. Processing of 1 material lots/notifications failed!</ReturnDescription><ReturnCode /></ProcessingStatus></MaterialInformation></ProcessMaterialInformationResponse></soap:Body></soap:Envelope> ** 2012-04-18-09.04.33.323000: Entering HTTP_receiveResponse() WSDL2RPG: CPF9898: WSDL2RPGRT/WSDL2R84.WSDL2R84_MemoryManager_createArray (Stmt: 34300) : Array with name 'MaterialLot' already exists. received from procedure: BASICS1R4_p_assert and statement: 19800 WSDL2RPG (eXpat error): (-1009) WSDL2RPGRT/WSDL2R84.WSDL2R84_MemoryManager_createArray (Stmt: 34300) : Array with name 'MaterialLot' already exists. received at line: 1 at column: 432 from procedure: WSDL2R97_XMLSAXParser_parse and statement: 101800 ** 2012-04-18-09.04.33.429000: Failed parsing XML message ** 2012-04-18-09.04.33.429000: Leaving HTTP_receiveResponse() SetError() #16: errno is currently 3406 SetError() #16: recvdoc: saveproc: Not all data was writtenÜ http_close(): entered
* ===================================================================== * Generated by WSDL2RPG 1.15beta4 / 08.01.2012 * Built on Apr 17, 2012 (16:15:40) * Built for V6R1M0 * Based on WS_PGM v1.15 * ===================================================================== * Call * MaterialInformationSoap_ProcessMaterialInformation() * Web service. * ===================================================================== * Pre-Compiler tags used by STRPREPRC to retrieve creation * commands from the source member. * --------------------------------------------------------------------- * >>PRE-COMPILER<< * >>CRTCMD<< CRTRPGMOD MODULE(&LI/&OB) + * SRCFILE(&SL/&SF) + * SRCMBR(&SM); * >>COMPILE<< * >>PARM<< TRUNCNBR(*NO); * >>PARM<< DBGVIEW(*LIST); * >>END-COMPILE<< * >>EXECUTE<< * >>CMD<< CRTPGM PGM(&LI/&OB) + * MODULE(*PGM) + * BNDSRVPGM(*LIBL/VSEFACS + * *LIBL/WSDL2RPGRT + * *LIBL/BASICS1 + * ) + * DETAIL(*BASIC) + * ACTGRP(*NEW); * >>END-PRE-COMPILER<< * ===================================================================== H DEBUG H OPTION(*SRCSTMT : *NODEBUGIO) H EXTBININT(*YES) * * Include generated web service stub module to * define the prototype of the web service procedure * and the required type definitions (aka reference fields). /DEFINE PROTOTYPE_VSEFACS01 CPY /COPY R8LKVSRCI/VEESRCL,VSEFACS01 /UNDEFINE PROTOTYPE_VSEFACS01 * * Program entry point D VSEFAC20... D PR * * Sends a message to the command line. D sndMsg... D PR extproc('sndMsg') D i_text 128A value varying * * ===================================================================== * Program entry point * ===================================================================== D VSEFAC20... D PI * * Web service error message text D errText S like(wsdl_errText_t ) inz * * Request message * These fields needs to be filled with reasonable values * right before calling the web service. D parameters DS likeds(tns_ProcessMaterialInformat... D ion_t) D inz * * Response message * This structure contains the result values returned by * the web service. D ProcessMaterialInformationResponse... D DS likeds(tns_ProcessMaterialInformat... D ionResponse_t) D inz * * Text of messages sent to the command line D text S 128A varying inz * * Memory Manager UUID, used to allocate and free * the memory blocks of the dynamic arrays D uuid S like(wsdl_uuid_t ) inz * * Dynamic array helper fields and structure D X_A1 S 10I 0 inz D X_A2 S 10I 0 inz D X_A3 S 10I 0 inz D X_A4 S 10I 0 inz D X_A5 S 10I 0 inz D X_A6 S 10I 0 inz D X_A7 S 10I 0 inz * D curMaterialLotType_A1... D DS likeds(s1_MaterialLotType_t) D based(pX_A1) * D newMaterialLotType_A1... D DS likeds(s1_MaterialLotType_t) D inz * D curHItems_of_string6_A2... D S like(s1_hItems_of_string6_t) D based(pX_A2) * D newHItems_of_string6_A2... D S like(s1_hItems_of_string6_t) D inz * D curMaterialLotPropertyType_A3... D DS likeds(s1_MaterialLotPropertyType_t) D based(pX_A3) * D newMaterialLotPropertyType_A3... D DS likeds(s1_MaterialLotPropertyType_t) D inz * D curHItems_of_string4_A4... D S like(s1_hItems_of_string4_t) D based(pX_A4) * D newHItems_of_string4_A4... D S like(s1_hItems_of_string4_t) D inz * D curHItems_of_string5_A5... D S like(s1_hItems_of_string5_t) D based(pX_A5) * D newHItems_of_string5_A5... D S like(s1_hItems_of_string5_t) D inz * D curValueType_A6... D DS likeds(s1_ValueType_t) D based(pX_A6) * D newValueType_A6... D DS likeds(s1_ValueType_t) D inz * D curQuantityType_A7... D DS likeds(s1_QuantityType_t) D based(pX_A7) * D newQuantityType_A7... D DS likeds(s1_QuantityType_t) D inz D D D D *This structure contains the result values returned by the SQL Statement DdsEBP00 DS qualified D PoNo 6S 0 D PoPosition 3S 0 D PoQty 9S 3 D PoQcFlag 1S 0 QS Ja/Nein D DSQL S 2048 Varying D D Qfnr S 4A D QEmpty S 3A D QEins S 3A D Qx S 3A D Qn S 3A D QSMD S 8A D DRecordCounter S 5S 0 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free // Enable/disable http api debug log // (Enable the http api debug log in case of problems with the web service) MaterialInformationSoap_Port_setHttpDebug( *ON: '/tmp/httpapi_debug.txt'); // Default path of http api // kein Proxy nötig // Specify a proxy server if your network requires it. // MaterialInformationSoap_Port_setHttpProxy( // '172.16.1.169': 8080); //MaterialInformationSoap_Port_registerLoginCallback(%Paddr( //'MaterialInformationSoap_supplyLoginData')); //-->nun unter MaterialInformationSoap_Port_getEndpoint in WS0001 // Set the paramater values of the request message // of the web service. // Initialize the Memory Manager // (Use 'uuid' to create dynamic arrays within the same heap.) uuid = MaterialInformationSoap_initializeMemoryManager(); // Set the paramater values of the request message // of the web service. // assign values here parameters.MaterialInformation.ID = 'ML12310'; //-------------------------------------------------------------------- parameters.MaterialInformation.PublishedDate = %timestamp(); //-------------------------------------------------------------------- // Create a dynamic array and add a sample item: // (Use the heap that has been assigned to 'uuid'. parameters.MaterialInformation.MaterialLot.hItems = MemoryManager_createArray(uuid: %size(newMaterialLotType_A1): 'Mate+ rialLot'); newMaterialLotType_A1.ID = 'Test LotID'; //-------------------------------------------------------------------- // Create a dynamic array and add a sample item: // (Use the heap that has been assigned to 'uuid'. //newMaterialLotType_A1.Description.hItems = // MemoryManager_createArray(uuid: %size(newHItems_of_string6_A2): 'De+ // scription'); //newHItems_of_string6_A2 = 'Test Description'; //Array_add( // newMaterialLotType_A1.Description.hItems // : %addr(newHItems_of_string6_A2) // ); newMaterialLotType_A1.MaterialDefinitionID = '2.9'; //-------------------------------------------------------------------- // Create a dynamic array and add a sample item: // (Use the heap that has been assigned to 'uuid'. //newMaterialLotPropertyType_A3.Description.hItems = // MemoryManager_createArray(uuid: %size(newHItems_of_string4_A4): 'De+ // scription_2'); //newHItems_of_string4_A4 = 'Test Description + // of MaterialLotPropertyType CT'; //Array_add( // newMaterialLotPropertyType_A3.Description.hItems // : %addr(newHItems_of_string4_A4) // ); // Create a dynamic array and add a sample item: // (Use the heap that has been assigned to 'uuid'. newMaterialLotType_A1.MaterialLotProperty.hItems = MemoryManager_createArray(uuid: %size(newMaterialLotPropertyType_... A3): 'MaterialLotProperty'); newMaterialLotPropertyType_A3.ID = 'NotificationID'; // Create a dynamic array and add a sample item: // (Use the heap that has been assigned to 'uuid'. newMaterialLotPropertyType_A3.Value.hItems = MemoryManager_createArray(uuid: %size(newValueType_A6): 'Value'); newValueType_A6.ValueString = '01812345015'; newValueType_A6.DataType = 'string'; Array_add( newMaterialLotPropertyType_A3.Value.hItems : %addr(newValueType_A6) ); newMaterialLotPropertyType_A3.ID = 'MovementType'; newValueType_A6.ValueString = 'Wareneingang'; newValueType_A6.DataType = 'string'; Array_add( newMaterialLotPropertyType_A3.Value.hItems : %addr(newValueType_A6) ); newMaterialLotPropertyType_A3.ID = 'SourceWarehouse'; newValueType_A6.ValueString = 'Wareneingang'; newValueType_A6.DataType = 'string'; Array_add( newMaterialLotPropertyType_A3.Value.hItems : %addr(newValueType_A6) ); newMaterialLotPropertyType_A3.ID = 'DestinationWarehouse'; newValueType_A6.ValueString = 'SIPLACE Lager'; newValueType_A6.DataType = 'string'; Array_add( newMaterialLotPropertyType_A3.Value.hItems : %addr(newValueType_A6) ); newMaterialLotPropertyType_A3.ID = 'SupplierName'; newValueType_A6.ValueString = 'Schoch AG'; newValueType_A6.DataType = 'string'; Array_add( newMaterialLotPropertyType_A3.Value.hItems : %addr(newValueType_A6) ); newMaterialLotPropertyType_A3.ID = 'Delivery'; newValueType_A6.ValueString = 'MW000000123456'; newValueType_A6.DataType = 'string'; Array_add( newMaterialLotPropertyType_A3.Value.hItems : %addr(newValueType_A6) ); newMaterialLotPropertyType_A3.ID = 'MSDLevel'; newValueType_A6.ValueString = '16.03.2011 00:00'; newValueType_A6.DataType = 'string'; Array_add( newMaterialLotPropertyType_A3.Value.hItems : %addr(newValueType_A6) ); newMaterialLotPropertyType_A3.ID = 'Blocked'; newValueType_A6.ValueString = 'true'; newValueType_A6.DataType = 'boolean'; Array_add( newMaterialLotPropertyType_A3.Value.hItems : %addr(newValueType_A6) ); // Create a dynamic array and add a sample item: // (Use the heap that has been assigned to 'uuid'. //newMaterialLotPropertyType_A3.QAMaterialTestSpecificationID.hItems = // MemoryManager_createArray(uuid: %size(newHItems_of_string5_A5): 'QA+ // MaterialTestSpecificationID'); //newHItems_of_string5_A5 = 'string'; //Array_add( // newMaterialLotPropertyType_A3.QAMaterialTestSpecificationID.hItems // : %addr(newHItems_of_string5_A5) // ); Array_add( newMaterialLotType_A1.MaterialLotProperty.hItems : %addr(newMaterialLotPropertyType_A3) ); //-------------------------------------------------------------------- newMaterialLotType_A1.StorageLocation = 'VEGA.SCHILTACH.SMT-Avise'; //-------------------------------------------------------------------- // Create a dynamic array and add a sample item: // (Use the heap that has been assigned to 'uuid'. newMaterialLotType_A1.Quantity.hItems = MemoryManager_createArray(uuid: %size(newQuantityType_A7): 'Quantit+ y'); newQuantityType_A7.QuantityString = '24'; newQuantityType_A7.DataType = 'int'; //newQuantityType_A7.UnitOfMeasure = 'string'; //newQuantityType_A7.Key = 'string'; Array_add( newMaterialLotType_A1.Quantity.hItems : %addr(newQuantityType_A7) ); //-------------------------------------------------------------------- newMaterialLotType_A1.MessageType = 'MaterialLot'; newMaterialLotType_A1.Action = 'Add'; newMaterialLotType_A1.ConfirmOption = 'Always'; //newMaterialLotType_A1.ProcessingStatus.ReturnValue = 'string'; //newMaterialLotType_A1.ProcessingStatus.ReturnDescription = 'string'; //ewMaterialLotType_A1.ProcessingStatus.ReturnCode = 'string'; Array_add( parameters.MaterialInformation.MaterialLot.hItems : %addr(newMaterialLotType_A1) ); //parameters.MaterialInformation.ProcessingStatus.ReturnValue = 'string'; //parameters.MaterialInformation.ProcessingStatus.ReturnDescription = 's+ //tring'; //parameters.MaterialInformation.ProcessingStatus.ReturnCode = 'string'; // Now let's call the web service. ProcessMaterialInformationResponse = MaterialInformationSoap_ProcessMaterialInformation( parameters: errText); // If the Web service finished successfully ... B01 if (not MaterialInformationSoap_Port_isError()); // ... get response data from response data structure X01 else; // ... else show error messages ordered by priority: // 1. HTTP error information text = %char( MaterialInformationSoap_HttpError_getCode() ) + ': ' + MaterialInformationSoap_HttpError_getText() ; sndMsg(text); // 2. SOAP error information B02 if (MaterialInformationSoap_SoapError_getCode() <> ''); text = MaterialInformationSoap_SoapError_getCode() + ': ' + MaterialInformationSoap_SoapError_getText() ; sndMsg(text); E02 endif; // 3. XML parser error information B02 if (MaterialInformationSoap_XmlError_getCode() <> 0); text = %char(MaterialInformationSoap_XmlError_getCode()) + ': ' + MaterialInformationSoap_XmlError_getText() ; sndMsg(text); E02 endif; E01 endif; // Terminate Memory Manager and free resources // (Release all memory blocks that have been allocated within // the heap that is assigned to 'uuid'.) MaterialInformationSoap_terminateMemoryManager(uuid); *inlr = *on; /end-free * * ===================================================================== * *** private *** * Sends a message to the command line. * ===================================================================== P sndMsg... P B * D sndMsg... D PI D i_text 128A value varying * * Local fields D msgKey S 4A inz * * Qualified message file name D qMsgF DS qualified inz D name 10A D lib 10A * * API error code D errCode DS qualified inz D bytPrv 10I 0 D bytAvl 10I 0 D excID 7A D reserved 1A D excDta 256A * * Send Program Message (QMHSNDPM) API D QMHSNDPM PR extpgm('QMHSNDPM') D i_msgID 7A const D i_qMsgF 20A const D i_msgData 32767A const options(*varsize ) D i_length 10I 0 const D i_msgType 10A const D i_callStkE 32767A const options(*varsize ) D i_callStkC 10I 0 const D o_msgKey 4A D io_ErrCode 32767A options(*varsize ) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free clear qMsgF; qMsgF.name = 'QCPFMSG'; qMsgF.lib = '*LIBL'; clear errCode; errCode.bytPrv = %size(errCode); QMHSNDPM('CPF9897': qMsgF: i_text: %len(i_text): '*INFO' : '*CTLBDY': 1: msgKey: errCode); return; /end-free * P sndMsg... P E *
/IF NOT DEFINED(PROTOTYPE_VSEFACS01) *====================================================================== * Generated by WSDL2RPG 1.15beta4 / 08.01.2012 * Built on Apr 17, 2012 (15:41:56) * Built for V6R1M0 * Based on WS_OPER v1.15 *====================================================================== * * This source member is the RPG web service stub of the * following Web Service operation: * * Port : MaterialInformationSoap * Operation : ProcessMaterialInformation() * * Please search for 'INFO:' to get basic information how to call * the web service. * * Default attachment handling (for demonstration) was added to * WS_OPER but is disabled by default. * * In order to enable or disable default attachment handling you have * to define or undefine the following compiler condition name: * DEFAULT_ATTACHMENT_HANDLING /UNDEFINE DEFAULT_ATTACHMENT_HANDLING * * By default attachments are stored in folder: * '/tmp/attachments' * * You can change the default attachment folder by calling the * following procedure before calling the web service: * MaterialInformationSoap_Attachments_setFolder() * * Default attachment handling was added to demonstrate how * to manage attachments. Please search the generate stub * module for 'TODO:' to see what code belongs to attachment * support. * *====================================================================== * Pre-Compiler tags used by STRPREPRC to retrieve creation * commands from the source member. * --------------------------------------------------------------------- * >>PRE-COMPILER<< * >>CRTCMD<< CRTRPGMOD MODULE(&LI/&OB) + * SRCFILE(&SL/&SF) + * SRCMBR(&SM); * >>COMPILE<< * >>PARM<< TRUNCNBR(*NO); * >>PARM<< DBGVIEW(*LIST); * >>END-COMPILE<< * >>EXECUTE<< * >>END-PRE-COMPILER<< *====================================================================== H NOMAIN H DEBUG H BNDDIR('HTTPAPI': 'QC2LE') H OPTION(*SRCSTMT : *NODEBUGIO) H EXTBININT(*YES) * * Do not change or remove this compiler condition! /DEFINE NO_CONST_ON_INPUT_PARAMETERS /ENDIF /IF NOT DEFINED(PROTOTYPE_DEFINED_VSEFACS01) /DEFINE PROTOTYPE_DEFINED_VSEFACS01 * * INFO: * This is the procedure you call to consume the Web Service: * ---------------------------------------------------------- * Operation: ProcessMaterialInformation * Returns : ProcessMaterialInformationResponse * * INFO: * Define your own fields using the type templates used in the prototype * below. Use LIKE(*_t) or LIKEDS(*_t) to define these fields. * All type templates of this web service are defined in web service * module: VSEFACS * D MaterialInformationSoap_ProcessMaterialInform... D ation... D PR likeds(tns_ProcessMaterialInformat... D ionResponse_t) D extproc('MaterialInformationSoap_Pro+ D cessMaterialInformation') D i_tns_ProcessMaterialInformation... D likeds(tns_ProcessMaterialInformat... D ion_t) /IF NOT DEFINED(NO_CONST_ON_INPUT_PARAMETERS) D const /ENDIF D o_msg like(wsdl_errText_t ) * CPY /COPY QWSDL2RPG,TYPES_H * /DEFINE PROTOTYPE_VSEFACS CPY /COPY R8LKVSRCI/VEESRCL,VSEFACS Web Service: Web Service Proc /UNDEFINE PROTOTYPE_VSEFACS * /ENDIF /IF DEFINED(PROTOTYPE_VSEFACS01) /EOF /ENDIF * --------------------------------------------------------------------- * CPY /COPY QBASICS1,PBASICS1 Tools/400 Runtime Library CPY /COPY QMIME,PMIME Tools/400 MIME Parser CPY /COPY QMIME,HTTPMIME_H Tools/400 MIME Parser to HTTP API adapter CPY /COPY QRPGLESRC,HTTPAPI_H HTTP-API Service Program CPY /COPY QWSDL2RPG,PWSDL2R70 WSDL2RPG: HTTP API Header Extensions CPY /COPY QWSDL2RPG,PWSDL2R71 WSDL2RPG: HTTP Debug Log CPY /COPY QWSDL2RPG,PWSDL2R86 WSDL2RPG: Stream CPY /COPY QWSDL2RPG,PWSDL2R87 WSDL2RPG: ManagedMemoryDataSource CPY /COPY QWSDL2RPG,PWSDL2R88 WSDL2RPG: Public Helper Procedures CPY /COPY QWSDL2RPG,PWSDL2R90 WSDL2RPG: AppMsg CPY /COPY QWSDL2RPG,PWSDL2R94 WSDL2RPG: MultiRef CPY /COPY QWSDL2RPG,PWSDL2R97 WSDL2RPG: eXpat Adapter CPY /COPY QWSDL2RPG,PWSDL2R98 WSDL2RPG: UnMarshaller/Marshaller CPY /COPY QWSDL2RPG,PWSDL2R42 WSDL2RPG: User name and password * * ------------------------------------ * Internal prototypes * ------------------------------------ * * Reopens a given input stream in order to send it over * the wire again. D reOpenInputStream... D PR like(wsdl_hStream_t ) D extproc('+ D reOpenInputStream+ D ') D i_hDataSource const like(wsdl_hDataSource_t) D i_hInpStream value like(wsdl_hStream_t ) * * Login in to proxy server or http server. D login... D PR 10I 0 D extproc('+ D login+ D ') D i_http_err 10I 0 value D i_numAttempts 10I 0 value * * Sets the content type and the SOAP action of the POST message. D HTTP_setContentTypeAndSOAPAction... D PR D extproc('+ D HTTP_setContentTypeAndSOAPAction+ D ') D o_addlHdrs 1024A varying D i_pUserData * value * D tns_ProcessMaterialInformationResponseStart... D PR D extproc('tns_ProcessMaterialInformat+ D ionResponseStart') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) D tns_ProcessMaterialInformationResponseEnd... D PR D extproc('tns_ProcessMaterialInformat+ D ionResponseEnd') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying D attrs * dim(32767) D const options(*varsize) D s1_MaterialInformationStart... D PR D extproc('s1_MaterialInformationStart+ D ') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) D s1_MaterialInformationEnd... D PR D extproc('s1_MaterialInformationEnd') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying D attrs * dim(32767) D const options(*varsize) D s2_ProcessingStatusStart... D PR D extproc('s2_ProcessingStatusStart') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) D s2_ProcessingStatusEnd... D PR D extproc('s2_ProcessingStatusEnd') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying D attrs * dim(32767) D const options(*varsize) D s1_MaterialLotTypeStart_of_s1_MaterialInforma... D tion... D PR D extproc('s1_MaterialLotTypeStart_of_+ D s1_MaterialInformation') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) D s1_MaterialLotTypeEnd_of_s1_MaterialInformation... D PR D extproc('s1_MaterialLotTypeEnd_of_s1+ D _MaterialInformation') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying D attrs * dim(32767) D const options(*varsize) D s1_hItems_of_string6Start_of_s1_MaterialLotType... D PR D extproc('s1_hItems_of_string6Start_o+ D f_s1_MaterialLotType') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) D s1_hItems_of_string6End_of_s1_MaterialLotType... D PR D extproc('s1_hItems_of_string6End_of_+ D s1_MaterialLotType') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying D attrs * dim(32767) D const options(*varsize) D s1_MaterialLotPropertyTypeStart_of_s1_Materia... D lLotType... D PR D extproc('s1_MaterialLotPropertyTypeS+ D tart_of_s1_MaterialLotType') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) D s1_MaterialLotPropertyTypeEnd_of_s1_MaterialL... D otType... D PR D extproc('s1_MaterialLotPropertyTypeE+ D nd_of_s1_MaterialLotType') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying D attrs * dim(32767) D const options(*varsize) D s1_hItems_of_string4Start_of_s1_MaterialLotPr... D opertyType... D PR D extproc('s1_hItems_of_string4Start_o+ D f_s1_MaterialLotPropertyType') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) D s1_hItems_of_string4End_of_s1_MaterialLotProp... D ertyType... D PR D extproc('s1_hItems_of_string4End_of_+ D s1_MaterialLotPropertyType') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying D attrs * dim(32767) D const options(*varsize) D s1_hItems_of_string5Start_of_s1_MaterialLotPr... D opertyType... D PR D extproc('s1_hItems_of_string5Start_o+ D f_s1_MaterialLotPropertyType') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) D s1_hItems_of_string5End_of_s1_MaterialLotProp... D ertyType... D PR D extproc('s1_hItems_of_string5End_of_+ D s1_MaterialLotPropertyType') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying D attrs * dim(32767) D const options(*varsize) D s1_ValueTypeStart_of_s1_MaterialLotPropertyType... D PR D extproc('s1_ValueTypeStart_of_s1_Mat+ D erialLotPropertyType') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) D s1_ValueTypeEnd_of_s1_MaterialLotPropertyType... D PR D extproc('s1_ValueTypeEnd_of_s1_Mater+ D ialLotPropertyType') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying D attrs * dim(32767) D const options(*varsize) D s1_QuantityTypeStart_of_s1_MaterialLotType... D PR D extproc('s1_QuantityTypeStart_of_s1_+ D MaterialLotType') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) D s1_QuantityTypeEnd_of_s1_MaterialLotType... D PR D extproc('s1_QuantityTypeEnd_of_s1_Ma+ D terialLotType') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying D attrs * dim(32767) D const options(*varsize) * * Receice response of HTTP post operation. D HTTP_receiveResponse... D PR 10I 0 extproc('+ D HTTP_receiveResponse+ D ') D i_hStream 10I 0 value D i_data * value D i_length 10I 0 value * * SOAP message: Envelope D SOAPMessage_Envelope... D PR extproc('+ D SOAPMessage_Envelope+ D ') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) * * SOAP message: fault information D SOAPMessage_FaultStart... D PR extproc('+ D SOAPMessage_FaultStart+ D ') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) * * SOAP message: fault information D SOAPMessage_FaultEnd... D PR extproc('+ D SOAPMessage_FaultEnd+ D ') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying const D attrs * dim(32767) D const options(*varsize) * * SOAP message: fault details D SOAPMessage_FaultDetailStart... D PR extproc('+ D SOAPMessage_FaultDetailStart+ D ') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) * * SOAP message: fault details D SOAPMessage_FaultDetailEnd... D PR extproc('+ D SOAPMessage_FaultDetailEnd+ D ') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying const D attrs * dim(32767) D const options(*varsize) * * SOAP message: NULL callback procedure D SOAPMessage_unexpectedElementStart... D PR D extproc('+ D SOAPMessage_unexpectedElementStart+ D ') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) * * SOAP message: NULL callback procedure D SOAPMessage_unexpectedElementEnd... D PR D extproc('+ D SOAPMessage_unexpectedElementEnd+ D ') D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying const D attrs * dim(32767) D const options(*varsize) * D ignoreUnexpectedSoapHeader... D PR N D extproc('+ D ignoreUnexpectedSoapHeader+ D ') * D getOperationUuid... D PR like(wsdl_uuid_t ) D extproc('+ D getOperationUuid+ D ') * D getPortName... D PR like(wsdl_portName_t ) D extproc('+ D getPortName+ D ') * D getPostCcsid... D PR 10I 0 D extproc('+ D getPostCcsid+ D ') * * ------------------------------------ * Global fields & constants * ------------------------------------ * * UUID of the web service operation as generated by WSDL2RPG * (Using UUID of web service port for all operations by default) *cOPERATION_UUID... * C '21F01001E08C1960AEC00004AC12B572' * * SOAP response header * * Reference to the 'respSoapHeader' field. D g_pRespSoapHeader... D S * inz * * XMLSAXParser handle D g_hSAXParser S like(xmlSaxParser_handle_t) inz * * MIME parser D g_hMIMEParser S like(mime_hMime_t ) inz * * MIME message indicator D g_isMimeMessage... D S N inz(cFalse) * * Content ID of the SOAP message part D g_SOAPMessageID... D S 512A varying inz * * Indicator "parse SOAP message" D g_doParseSOAPMessage... D S N inz(cFalse) * * Indicator "SOAP message parsed" D g_SOAPMessage_done... D S N inz(cFalse) * * Body part counter D g_BodyPart_counter... D S 10I 0 inz * * HTTP response "initialized" indicator D g_HTTP_isInit... D S N inz(cFalse) * * Error information of web service operation D g_errors DS likeds(wsdl_errors_t ) inz * * Switch for AXIS bug AXIS-2095 D g_isAXIS_2095 S N inz(cFalse) * * ------------------------------------------- * TODO: Added to implement default * attachment handling. * ------------------------------------------- /IF DEFINED(DEFAULT_ATTACHMENT_HANDLING) CPY /COPY QWSDL2RPG,CLIB C Runtime Library * * User data scoped to the current part D partUserData_t... D DS qualified based(pDummy) D FD 10i 0 * /ENDIF * ===================================================================== * Operation: ProcessMaterialInformation * Returns : ProcessMaterialInformationResponse * ===================================================================== P MaterialInformationSoap_ProcessMaterialInform... P ation... P B export D MaterialInformationSoap_ProcessMaterialInform... D ation... D PI likeds(tns_ProcessMaterialInformat... D ionResponse_t) D i_tns_ProcessMaterialInformation... D likeds(tns_ProcessMaterialInformat... D ion_t) D o_msg 128A varying * * Return value D rtnValue DS likeds(tns_ProcessMaterialInformat... D ionResponse_t) D inz * * Local fields D isUnexpectedError... D S N inz(cFalse) D isRedirect S N inz(cFalse) D request S 65535A varying inz D url S 32767A varying D rc S 10I 0 inz D rcvm0200 DS likeds(rcvm0200_t ) inz D msg DS likeds(msg_t ) inz D headers DS likeds(headers_t ) inz * D hDataSource S like(wsdl_hDataSource_t ) inz D hOutStream S like(wsdl_hStream_t ) inz D hSAXParser S like(xmlSaxParser_handle_t) inz D hMIMEParser S like(mime_hMime_t ) inz D hInpStream S like(wsdl_hStream_t ) inz D contentType S like(wsdl_contentType_t ) inz * * HTTP debug log settings D httpDebug DS likeds(wsdl_httpDebug_t ) inz * * Proxy server to use D httpProxy DS likeds(wsdl_proxy_t ) inz * * Login helper fields D err S 10I 0 inz D lastErr S 10I 0 inz(-1) D numAttempts S 10I 0 inz * * Array iterator fields D X_A1 S 10I 0 inz D X_A2 S 10I 0 inz D X_A3 S 10I 0 inz D X_A4 S 10I 0 inz D X_A5 S 10I 0 inz D X_A6 S 10I 0 inz D X_A7 S 10I 0 inz * D curMaterialLotType_A1... D DS likeds(s1_MaterialLotType_t) D based(pX_A1) * D curHItems_of_string6_A2... D S like(s1_hItems_of_string6_t) D based(pX_A2) * D curMaterialLotPropertyType_A3... D DS likeds(s1_MaterialLotPropertyType_t) D based(pX_A3) * D curHItems_of_string4_A4... D S like(s1_hItems_of_string4_t) D based(pX_A4) * D curHItems_of_string5_A5... D S like(s1_hItems_of_string5_t) D based(pX_A5) * D curValueType_A6... D DS likeds(s1_ValueType_t) D based(pX_A6) * D curQuantityType_A7... D DS likeds(s1_QuantityType_t) D based(pX_A7) * D userData DS likeds(tns_ProcessMaterialInformat... D ionResponse_t) D inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free o_msg = ''; monitor; // Enable/disable HTTP debug log httpDebug = MaterialInformationSoap_Port_getHttpDebug(); http_debug(httpDebug.status: httpDebug.fileName); http_DebugLog_appendText( '** ' + %char(%timestamp()) + ': Entering ' + f_this() + '()'); // Initialize map to manage <multiRef> elements MultiRef_new(); // Remove all attachments of this service from the list of attachments MaterialInformationSoap_Attachments_removeAll( getOperationUuid()); // Set proxy server to use httpProxy = MaterialInformationSoap_Port_getHttpProxy(); http_setproxy(httpProxy.server: httpProxy.port); // Set CCSID for POST data according // to the encoding of the SOAP envelope HTTP_SetCCSIDs(getPostCcsid(): HTTP_EBCDIC); // Create and open data source to store the request message hDataSource = ManagedMemoryDataSource_new(); contentType = 'text/xml'; hOutStream = ManagedMemoryDataSource_OutputStream_open( hDataSource: contentType: getPostCcsid()); // Produce SOAP request message request = '<?xml version="1.0" encoding="UTF-8"?>' + '<soapenv:Envelope' + ' xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"' + ' xmlns:s1="http://www.wbf.org/xml/b2mml-v0300"' + ' xmlns:s2="http://www.wbf.org/xml/b2mml-v0300-extensions"' + ' xmlns:tns="http://siemens.siplace.facts/"' + '>' + '<soapenv:Body>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(requ... est: *DATA): %len(request)); clear request; endif; request = request + '<tns:ProcessMaterialInformation>' + '<s1:MaterialInformation>' + '<s1:ID>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(requ... est: *DATA): %len(request)); clear request; endif; Marshaller_toStringV6( %addr(i_tns_ProcessMaterialInformation.MaterialInformation.ID) : %addr(i_tns_ProcessMaterialInformation.MaterialInformation.ID: *DATA) : %len(i_tns_ProcessMaterialInformation.MaterialInformation.ID) : hOutStream); request = request + '</s1:ID>' + '<s1:PublishedDate>' + Marshaller_toDateTime( i_tns_ProcessMaterialInformation.MaterialInformation.PublishedDat... e ) + '</s1:PublishedDate>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(requ... est: *DATA): %len(request)); clear request; endif; for X_A1 = 1 to Array_getNumE(i_tns_ProcessMaterialInformation... .MaterialInformation.MaterialLot.hItems); pX_A1 = Array_get(i_tns_ProcessMaterialInformation.MaterialInformation... .MaterialLot.hItems: X_A1); request = request + '<s1:MaterialLot>' + '<s1:ID>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr( request: *DATA): %len(request)); clear request; endif; Marshaller_toStringV6( %addr(curMaterialLotType_A1.ID) : %addr(curMaterialLotType_A1.ID: *DATA) : %len(curMaterialLotType_A1.ID) : hOutStream); request = request + '</s1:ID>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr( request: *DATA): %len(request)); clear request; endif; for X_A2 = 1 to Array_getNumE(curMaterialLotType_A1.Descript... ion.hItems); pX_A2 = Array_get(curMaterialLotType_A1.Description.hItems: X_A2); request = request + '<s1:Description>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(request: *DATA): %len(request)); clear request; endif; Marshaller_toStringV6( %addr(curHItems_of_string6_A2) : %addr(curHItems_of_string6_A2: *DATA) : %len(curHItems_of_string6_A2) : hOutStream); request = request + '</s1:Description>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(request: *DATA): %len(request)); clear request; endif; endfor; request = request + '<s1:MaterialDefinitionID>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr( request: *DATA): %len(request)); clear request; endif; Marshaller_toStringV6( %addr(curMaterialLotType_A1.MaterialDefinitionID) : %addr(curMaterialLotType_A1.MaterialDefinitionID: *DATA) : %len(curMaterialLotType_A1.MaterialDefinitionID) : hOutStream); request = request + '</s1:MaterialDefinitionID>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr( request: *DATA): %len(request)); clear request; endif; for X_A3 = 1 to Array_getNumE(curMaterialLotType_A1.Material... LotProperty.hItems); pX_A3 = Array_get(curMaterialLotType_A1.MaterialLotProperty.hItems: X_A3); request = request + '<s1:MaterialLotProperty>' + '<s1:ID>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(request: *DATA): %len(request)); clear request; endif; Marshaller_toStringV6( %addr(curMaterialLotPropertyType_A3.ID) : %addr(curMaterialLotPropertyType_A3.ID: *DATA) : %len(curMaterialLotPropertyType_A3.ID) : hOutStream); request = request + '</s1:ID>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(request: *DATA): %len(request)); clear request; endif; for X_A4 = 1 to Array_getNumE(curMaterialLotPropertyType_... A3.Description.hItems); pX_A4 = Array_get(curMaterialLotPropertyType_A3.Description.hIte... ms: X_A4); request = request + '<s1:Description>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(request: *DATA): %len(request)); clear request; endif; Marshaller_toStringV6( %addr(curHItems_of_string4_A4) : %addr(curHItems_of_string4_A4: *DATA) : %len(curHItems_of_string4_A4) : hOutStream); request = request + '</s1:Description>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(request: *DATA): %len(request)); clear request; endif; endfor; request = request + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(request: *DATA): %len(request)); clear request; endif; for X_A6 = 1 to Array_getNumE(curMaterialLotPropertyType_... A3.Value.hItems); pX_A6 = Array_get(curMaterialLotPropertyType_A3.Value.hItems: X_... A6); request = request + '<s1:Value>' + '<s1:ValueString>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(request: *DATA): %len(request)); clear request; endif; Marshaller_toStringV6( %addr(curValueType_A6.ValueString) : %addr(curValueType_A6.ValueString: *DATA) : %len(curValueType_A6.ValueString) : hOutStream); request = request + '</s1:ValueString>' + '<s1:DataType>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(request: *DATA): %len(request)); clear request; endif; Marshaller_toStringV6( %addr(curValueType_A6.DataType) : %addr(curValueType_A6.DataType: *DATA) : %len(curValueType_A6.DataType) : hOutStream); request = request + '</s1:DataType>' + '</s1:Value>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(request: *DATA): %len(request)); clear request; endif; endfor; request = request + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(request: *DATA): %len(request)); clear request; endif; for X_A5 = 1 to Array_getNumE(curMaterialLotPropertyType_... A3.QAMaterialTestSpecificationID.hItems); pX_A5 = Array_get(curMaterialLotPropertyType_A3.QAMaterialTestSp... ecificationID.hItems: X_A5); request = request + '<s1:QAMaterialTestSpecificationID>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(request: *DATA): %len(request)); clear request; endif; Marshaller_toStringV6( %addr(curHItems_of_string5_A5) : %addr(curHItems_of_string5_A5: *DATA) : %len(curHItems_of_string5_A5) : hOutStream); request = request + '</s1:QAMaterialTestSpecificationID>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(request: *DATA): %len(request)); clear request; endif; endfor; request = request + '</s1:MaterialLotProperty>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(request: *DATA): %len(request)); clear request; endif; endfor; request = request + '<s1:StorageLocation>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr( request: *DATA): %len(request)); clear request; endif; Marshaller_toStringV6( %addr(curMaterialLotType_A1.StorageLocation) : %addr(curMaterialLotType_A1.StorageLocation: *DATA) : %len(curMaterialLotType_A1.StorageLocation) : hOutStream); request = request + '</s1:StorageLocation>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr( request: *DATA): %len(request)); clear request; endif; for X_A7 = 1 to Array_getNumE(curMaterialLotType_A1.Quantity... .hItems); pX_A7 = Array_get(curMaterialLotType_A1.Quantity.hItems: X_A7); request = request + '<s1:Quantity>' + '<s1:QuantityString>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(request: *DATA): %len(request)); clear request; endif; Marshaller_toStringV6( %addr(curQuantityType_A7.QuantityString) : %addr(curQuantityType_A7.QuantityString: *DATA) : %len(curQuantityType_A7.QuantityString) : hOutStream); request = request + '</s1:QuantityString>' + '<s1:DataType>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(request: *DATA): %len(request)); clear request; endif; Marshaller_toStringV6( %addr(curQuantityType_A7.DataType) : %addr(curQuantityType_A7.DataType: *DATA) : %len(curQuantityType_A7.DataType) : hOutStream); request = request + '</s1:DataType>' + '<s1:UnitOfMeasure>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(request: *DATA): %len(request)); clear request; endif; Marshaller_toStringV6( %addr(curQuantityType_A7.UnitOfMeasure) : %addr(curQuantityType_A7.UnitOfMeasure: *DATA) : %len(curQuantityType_A7.UnitOfMeasure) : hOutStream); request = request + '</s1:UnitOfMeasure>' + '<s1:Key>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(request: *DATA): %len(request)); clear request; endif; Marshaller_toStringV6( %addr(curQuantityType_A7.Key) : %addr(curQuantityType_A7.Key: *DATA) : %len(curQuantityType_A7.Key) : hOutStream); request = request + '</s1:Key>' + '</s1:Quantity>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(request: *DATA): %len(request)); clear request; endif; endfor; request = request + '<s2:MessageType>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr( request: *DATA): %len(request)); clear request; endif; Marshaller_toStringV6( %addr(curMaterialLotType_A1.MessageType) : %addr(curMaterialLotType_A1.MessageType: *DATA) : %len(curMaterialLotType_A1.MessageType) : hOutStream); request = request + '</s2:MessageType>' + '<s2:Action>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr( request: *DATA): %len(request)); clear request; endif; Marshaller_toStringV6( %addr(curMaterialLotType_A1.Action) : %addr(curMaterialLotType_A1.Action: *DATA) : %len(curMaterialLotType_A1.Action) : hOutStream); request = request + '</s2:Action>' + '<s2:ConfirmOption>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr( request: *DATA): %len(request)); clear request; endif; Marshaller_toStringV6( %addr(curMaterialLotType_A1.ConfirmOption) : %addr(curMaterialLotType_A1.ConfirmOption: *DATA) : %len(curMaterialLotType_A1.ConfirmOption) : hOutStream); request = request + '</s2:ConfirmOption>' + //'<s2:ProcessingStatus>' + //'<s2:ReturnValue>' + ''; //if (%len(request) > 0); // // Add previous bytes of request message to output stream // ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr( // request: *DATA): %len(request)); // clear request; //endif; //Marshaller_toStringV6( // %addr(curMaterialLotType_A1.ProcessingStatus.ReturnValue) // : %addr(curMaterialLotType_A1.ProcessingStatus.ReturnValue: // *DATA) // : %len(curMaterialLotType_A1.ProcessingStatus.ReturnValue) // : hOutStream); // //request = request + //'</s2:ReturnValue>' + //'<s2:ReturnDescription>' + // ''; //if (%len(request) > 0); // // Add previous bytes of request message to output stream // ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr( // request: *DATA): %len(request)); // clear request; //endif; //Marshaller_toStringV6( // %addr(curMaterialLotType_A1.ProcessingStatus.ReturnDescription) // : %addr(curMaterialLotType_A1.ProcessingStatus.ReturnDescripti... // on: *DATA) // : %len(curMaterialLotType_A1.ProcessingStatus.ReturnDescriptio... // n) // : hOutStream); // //request = request + //'</s2:ReturnDescription>' + //'<s2:ReturnCode>' + // ''; // //if (%len(request) > 0); // // Add previous bytes of request message to output stream // ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr( // request: *DATA): %len(request)); // clear request; //endif; //Marshaller_toStringV6( // %addr(curMaterialLotType_A1.ProcessingStatus.ReturnCode) // : %addr(curMaterialLotType_A1.ProcessingStatus.ReturnCode: // *DATA) // : %len(curMaterialLotType_A1.ProcessingStatus.ReturnCode) // : hOutStream); request = request + //'</s2:ReturnCode>' + //'</s2:ProcessingStatus>' + '</s1:MaterialLot>' + ''; if (%len(request) > 0); // Add previous bytes of request message to output stream ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr( request: *DATA): %len(request)); clear request; endif; endfor; // request = request + // '<s2:ProcessingStatus>' + // '<s2:ReturnValue>' + // ''; // // if (%len(request) > 0); // // Add previous bytes of request message to output stream // ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(requ... // est: *DATA): %len(request)); // clear request; // endif; // Marshaller_toStringV6( // %addr(i_tns_ProcessMaterialInformation.MaterialInformation.Proces... // singStatus.ReturnValue) // : %addr(i_tns_ProcessMaterialInformation.MaterialInformation.Proc... // essingStatus.ReturnValue: *DATA) // : %len(i_tns_ProcessMaterialInformation.MaterialInformation.Proce... // ssingStatus.ReturnValue) // : hOutStream); // // request = request + // '</s2:ReturnValue>' + // '<s2:ReturnDescription>' + // ''; // // if (%len(request) > 0); // // Add previous bytes of request message to output stream // ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(requ... // est: *DATA): %len(request)); // clear request; // endif; // Marshaller_toStringV6( // %addr(i_tns_ProcessMaterialInformation.MaterialInformation.Proces... // singStatus.ReturnDescription) // : %addr(i_tns_ProcessMaterialInformation.MaterialInformation.Proc... // essingStatus.ReturnDescription: *DATA) // : %len(i_tns_ProcessMaterialInformation.MaterialInformation.Proce... // ssingStatus.ReturnDescription) // : hOutStream); // // request = request + // '</s2:ReturnDescription>' + // '<s2:ReturnCode>' + // ''; // // if (%len(request) > 0); // // Add previous bytes of request message to output stream // ManagedMemoryDataSource_OutputStream_write(hOutStream: %addr(requ... // est: *DATA): %len(request)); // clear request; // endif; // Marshaller_toStringV6( // %addr(i_tns_ProcessMaterialInformation.MaterialInformation.Proces... // singStatus.ReturnCode) // : %addr(i_tns_ProcessMaterialInformation.MaterialInformation.Proc... // essingStatus.ReturnCode: *DATA) // : %len(i_tns_ProcessMaterialInformation.MaterialInformation.Proce... // ssingStatus.ReturnCode) // : hOutStream); request = request + // '</s2:ReturnCode>' + // '</s2:ProcessingStatus>' + '</s1:MaterialInformation>' + '</tns:ProcessMaterialInformation>' + '</soapenv:Body>' + '</soapenv:Envelope>'; // Add remaining bytes of request message to output stream B01 if (%len(request) > 0); ManagedMemoryDataSource_OutputStream_write( hOutStream: %addr(request) + 2: %len(request)); E01 endif; // Close output stream and finish the request message ManagedMemoryDataSource_OutputStream_close(hOutStream); // Open input stream hInpStream = ManagedMemoryDataSource_InputStream_open(hDataSource); // Clear error code MaterialInformationSoap_Port_clearErrors( g_errors); // HTTPAPI: Enables additional headers http_xproc(HTTP_POINT_ADDL_HEADER : %paddr('HTTP_setContentTypeAndSOAPAction') : %addr(headers)); headers.contentType = ManagedMemoryDataSource_getContentType(hDataSource); headers.soapAction = '"http://siemens.siplace.facts/ProcessMa+ terialInformation"'; // --------------------------------------- // Post request and parse response // --------------------------------------- // Create parser (callbacks style: HTTP API) XMLSAXParser_new(hSAXParser: cTrue); XMLSAXParser_setDoNamespaces(hSAXParser: cTrue); XMLSAXParser_registerCallback(hSAXParser : cXML_CB_SAX_STARTELEMENT : %paddr('SOAPMessage_Envelope')); XMLSAXParser_prepareParse(hSAXParser: %addr(userData)); // Create MIME parser in case we need it hMIMEParser = MIMEParser_new(); MIMEParser_setDecodeData(hMIMEParser: cTrue); http_mime_DataSink_initialize(hMIMEParser : *NULL : %paddr('HTTPDataSink_startPart') : %paddr('HTTPDataSink_bodyData') : %paddr('HTTPDataSink_endPart')); // Make parser available for HTTP_receiveResponse() g_hSAXParser = hSAXParser; g_hMIMEParser = hMIMEParser; g_isMimeMessage = cFalse; g_HTTP_isInit = cFalse; g_SOAPMessageID = ''; g_doParseSOAPMessage = cFalse; g_SOAPMessage_done = cFalse; g_BodyPart_counter = 0; // Make SOAP response header available to SOAPMessage_Envelope g_pRespSoapHeader = *NULL; // eXpat: Post request and parse response url = MaterialInformationSoap_Port_getEndpoint(); B01 dou (err <> HTTP_NDAUTH and err <> HTTP_PXNDAUTH); // Get document from server and handle http redirects // 301 Moved Permanently // 302 Found // 303 See Other // 307 Temporary Redirect B02 dou (not isRedirect); http_DebugLog_appendText( '** ' + %char(%timestamp()) + ': Sending request to server'); rc = http_url_post_raw2( url : hInpStream : %paddr( 'WSDL2R87_ManagedMemoryDataSource_InputStream_read') : ManagedMemoryDataSource_getSize(hDataSource) : 0 : %paddr('HTTP_receiveResponse') : HTTP_TIMEOUT : HTTP_USERAGENT : ''); B03 if (rc = 301 or rc = 302 or rc = 303 or rc = 307); url = http_redir_loc(); // Reopen data stream hInpStream = reOpenInputStream(hDataSource: hInpStream); isRedirect = cTrue; X03 else; isRedirect = cFalse; E03 endif; E02 enddo; // The first time we request a document that requires user/password // it will return a HTTP_NDAUTH error. B02 if (rc <> 1); http_error(err); B03 if (err = HTTP_NDAUTH or err = HTTP_PXNDAUTH); B04 if (not MaterialInformationSoap_Port_hasLoginCallback()); leave; E04 endif; B04 if (err <> lastErr); lastErr = err; numAttempts = 0; E04 endif; numAttempts = numAttempts + 1; B04 if (login(err: numAttempts) <> 1); leave; E04 endif; // Reopen data stream hInpStream = reOpenInputStream(hDataSource: hInpStream); E03 endif; X02 else; MultiRef_finalize(); err = 0; E02 endif; E01 enddo; // Preserve parser error code and message text B01 if (err = HTTP_RDWERR); g_errors.xmlError.code = XMLToolkit_getError( hSAXParser : g_errors.xmlError.text : g_errors.xmlError.line : g_errors.xmlError.column); E01 endif; XMLSAXParser_endParse(hSAXParser); B01 if (g_isMimeMessage); MIMEParser_endParse(hMIMEParser); g_isMimeMessage = cFalse; E01 endif; g_HTTP_isInit = cFalse; on-error; isUnexpectedError = cTrue; rcvm0200 = f_rcvPgmMsg(cMsg_Any: *: cMsg_Act_Same: 0 : cMsg_Same: cMsg_ToMyself); http_DebugLog_appendRcvMsg(rcvm0200); msg = f_cvtRcvMsgToMsg(rcvm0200); g_errors.errType = WSDL_HTTP_ERROR_UNEXPECTED; g_errors.httpError.no = WSDL_HTTP_ERROR_UNEXPECTED; g_errors.httpError.text = f_rtvMsgText(msg); rc = g_errors.httpError.no; o_msg = g_errors.httpError.text; endmon; g_hSAXParser = *NULL; g_hMIMEParser = *NULL; B01 if (not isUnexpectedError); B02 if (err <> 0); g_errors.errType = WSDL_HTTP_ERROR; // Set http error code and message text g_errors.httpError.no = err; g_errors.httpError.text = http_error(); // Return error message text to caller B03 if (g_errors.httpError.text <> ''); o_msg = g_errors.httpError.text; X03 else; o_msg = MaterialInformationSoap_SoapError_getText(); E03 endif; clear rtnValue; else; o_msg = ''; rtnValue = userData; endif; E02 endif; B02 if (not XMLSAXParser_isNull(hSAXParser)); XMLSAXParser_delete(hSAXParser); E02 endif; B02 if (not MIMEParser_isNull(hMIMEParser)); MIMEParser_delete(hMIMEParser); E02 endif; B02 if (not ManagedMemoryDataSource_isNull(hDataSource)); B03 if (ManagedMemoryDataSource_Stream_isOpen(hInpStream)); ManagedMemoryDataSource_InputStream_close(hInpStream); E03 endif; B03 if (ManagedMemoryDataSource_Stream_isOpen(hOutStream)); ManagedMemoryDataSource_OutputStream_close(hOutStream); E03 endif; ManagedMemoryDataSource_delete(hDataSource); E02 endif; B02 if (not MultiRef_isNull()); MultiRef_delete(); E02 endif; B02 if (http_DebugLog_isOpen()); http_DebugLog_close(); E02 endif; // Set error information of last service call MaterialInformationSoap_Port_setErrors( g_errors); return rtnValue; /end-free * P MaterialInformationSoap_ProcessMaterialInform... P ation... P E * * * ================================================================== * Return value: tns:ProcessMaterialInformationResponse * ================================================================== P tns_ProcessMaterialInformationResponseStart... P B D tns_ProcessMaterialInformationResponseStart... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) * D currentItem DS likeds(tns_ProcessMaterialInformat... D ionResponse_t) D based(pCurrentItem) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free // Get access to current item pCurrentItem = userdata; select; when (depth = 1 and name = 'ProcessMaterialInformationResponse' and namespace = 'http://siemens.siplace.facts/'); if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : *omit : %addr(currentItem) : %size(currentItem) ); endif; return; when (depth = 2 and name = 'MaterialInformation' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); XMLSAXParser_delegateElementProcessing( %addr(currentItem.MaterialInformation) : %paddr('s1_MaterialInformationStart') : %paddr('s1_MaterialInformationEnd') ); return; endsl; return; /end-free * P tns_ProcessMaterialInformationResponseStart... P E * * ================================================================== * Return value: tns:ProcessMaterialInformationResponse * ================================================================== P tns_ProcessMaterialInformationResponseEnd... P B D tns_ProcessMaterialInformationResponseEnd... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying D attrs * dim(32767) D const options(*varsize) * D currentItem DS likeds(tns_ProcessMaterialInformat... D ionResponse_t) D based(pCurrentItem) * D itemValue DS likeds(wsdl_fullElementData_t) D inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free // Get access to current item pCurrentItem = userdata; // Get full element data itemValue = XMLSAXParser_getFullElementData(); select; endsl; return; /end-free * P tns_ProcessMaterialInformationResponseEnd... P E * * ================================================================== * Return value: s1:MaterialInformation * ================================================================== P s1_MaterialInformationStart... P B D s1_MaterialInformationStart... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) * D currentItem DS likeds(s1_MaterialInformationType_t) D based(pCurrentItem) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free // Get access to current item pCurrentItem = userdata; select; when (depth = 1 and name = 'MaterialInformation' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : *omit : %addr(currentItem) : %size(currentItem) ); endif; return; when (depth = 2 and name = 'ID' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); // Value is retrieved in corresponding END procedure if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : *omit : %addr(currentItem.ID) : %size(currentItem.ID) ); endif; return; when (depth = 2 and name = 'PublishedDate' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); // Value is retrieved in corresponding END procedure if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : *omit : %addr(currentItem.PublishedDate) : %size(currentItem.PublishedDate) ); endif; return; when (depth = 2 and name = 'MaterialLot' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); XMLSAXParser_delegateElementProcessing( %addr(currentItem.MaterialLot) : %paddr('s1_MaterialLotTypeStart_of_s1_MaterialInformation') : %paddr('s1_MaterialLotTypeEnd_of_s1_MaterialInformation') ); return; when (depth = 2 and name = 'ProcessingStatus' and namespace = 'http://www.wbf.org/xml/b2mml-v0300-extensions'); XMLSAXParser_delegateElementProcessing( %addr(currentItem.ProcessingStatus) : %paddr('s2_ProcessingStatusStart') : %paddr('s2_ProcessingStatusEnd') ); return; endsl; return; /end-free * P s1_MaterialInformationStart... P E * * ================================================================== * Return value: s1:MaterialInformation * ================================================================== P s1_MaterialInformationEnd... P B D s1_MaterialInformationEnd... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying D attrs * dim(32767) D const options(*varsize) * D currentItem DS likeds(s1_MaterialInformationType_t) D based(pCurrentItem) * D itemValue DS likeds(wsdl_fullElementData_t) D inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free // Get access to current item pCurrentItem = userdata; // Get full element data itemValue = XMLSAXParser_getFullElementData(); select; when (depth = 2 and name = 'ID' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); if (not Value_isNil(attrs)); UnMarshaller_toStringV6( %addr(currentItem.ID) : %addr(currentItem.ID: *DATA) : %size(currentItem.ID) : itemValue.pData : itemValue.size); endif; when (depth = 2 and name = 'PublishedDate' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); if (not Value_isNil(attrs)); currentItem.PublishedDate = UnMarshaller_toDateTime(value); endif; endsl; return; /end-free * P s1_MaterialInformationEnd... P E * * ================================================================== * Return value: s2:ProcessingStatus * ================================================================== P s2_ProcessingStatusStart... P B D s2_ProcessingStatusStart... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) * D currentItem DS likeds(s2_ProcessingStatusType_t) D based(pCurrentItem) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free // Get access to current item pCurrentItem = userdata; select; when (depth = 1 and name = 'ProcessingStatus' and namespace = 'http://www.wbf.org/xml/b2mml-v0300-extensions'); if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : *omit : %addr(currentItem) : %size(currentItem) ); endif; return; when (depth = 2 and name = 'ReturnValue' and namespace = 'http://www.wbf.org/xml/b2mml-v0300-extensions'); // Value is retrieved in corresponding END procedure if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : *omit : %addr(currentItem.ReturnValue) : %size(currentItem.ReturnValue) ); endif; return; when (depth = 2 and name = 'ReturnDescription' and namespace = 'http://www.wbf.org/xml/b2mml-v0300-extensions'); // Value is retrieved in corresponding END procedure if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : *omit : %addr(currentItem.ReturnDescription) : %size(currentItem.ReturnDescription) ); endif; return; when (depth = 2 and name = 'ReturnCode' and namespace = 'http://www.wbf.org/xml/b2mml-v0300-extensions'); // Value is retrieved in corresponding END procedure if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : *omit : %addr(currentItem.ReturnCode) : %size(currentItem.ReturnCode) ); endif; return; endsl; return; /end-free * P s2_ProcessingStatusStart... P E * * ================================================================== * Return value: s2:ProcessingStatus * ================================================================== P s2_ProcessingStatusEnd... P B D s2_ProcessingStatusEnd... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying D attrs * dim(32767) D const options(*varsize) * D currentItem DS likeds(s2_ProcessingStatusType_t) D based(pCurrentItem) * D itemValue DS likeds(wsdl_fullElementData_t) D inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free // Get access to current item pCurrentItem = userdata; // Get full element data itemValue = XMLSAXParser_getFullElementData(); select; when (depth = 2 and name = 'ReturnValue' and namespace = 'http://www.wbf.org/xml/b2mml-v0300-extensions'); if (not Value_isNil(attrs)); UnMarshaller_toStringV6( %addr(currentItem.ReturnValue) : %addr(currentItem.ReturnValue: *DATA) : %size(currentItem.ReturnValue) : itemValue.pData : itemValue.size); endif; when (depth = 2 and name = 'ReturnDescription' and namespace = 'http://www.wbf.org/xml/b2mml-v0300-extensions'); if (not Value_isNil(attrs)); UnMarshaller_toStringV6( %addr(currentItem.ReturnDescription) : %addr(currentItem.ReturnDescription: *DATA) : %size(currentItem.ReturnDescription) : itemValue.pData : itemValue.size); endif; when (depth = 2 and name = 'ReturnCode' and namespace = 'http://www.wbf.org/xml/b2mml-v0300-extensions'); if (not Value_isNil(attrs)); UnMarshaller_toStringV6( %addr(currentItem.ReturnCode) : %addr(currentItem.ReturnCode: *DATA) : %size(currentItem.ReturnCode) : itemValue.pData : itemValue.size); endif; endsl; return; /end-free * P s2_ProcessingStatusEnd... P E * * ================================================================== * Return value: s1:MaterialLot * ================================================================== P s1_MaterialLotTypeStart_of_s1_MaterialInforma... P tion... P B D s1_MaterialLotTypeStart_of_s1_MaterialInforma... D tion... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) * D x S 10I 0 inz * D s1_MaterialLot DS likeds(s1_RpgArrayOfMaterialLot_t) D based(userdata) * D currentItem DS likeds(s1_MaterialLotType_t) D based(pCurrentItem) * D emptyItem DS likeds(s1_MaterialLotType_t) D inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free // Get access to current array item if (MultiRef_doCaptureData() and MultiRef_hasItemIndex()); x = MultiRef_getItemIndex(); else; if (depth = 1); if (Array_isNull(s1_MaterialLot.hItems)); s1_MaterialLot.hItems = MemoryManager_createArray(getOperationUuid(): %size(empt... yItem): 'MaterialLot': cTrue); endif; clear emptyItem; Array_add( s1_MaterialLot.hItems : %addr(emptyItem) ); endif; x = Array_getNumE(s1_MaterialLot.hItems); endif; pCurrentItem = Array_get(s1_MaterialLot.hItems: x); select; when (depth = 1 and name = 'MaterialLot' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : x : %addr(currentItem) : %size(currentItem) ); endif; return; when (depth = 2 and name = 'ID' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); // Value is retrieved in corresponding END procedure if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : x : %addr(currentItem.ID) : %size(currentItem.ID) ); endif; return; when (depth = 2 and name = 'Description' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); XMLSAXParser_delegateElementProcessing( %addr(currentItem.Description) : %paddr('s1_hItems_of_string6Start_of_s1_MaterialLotType') : %paddr('s1_hItems_of_string6End_of_s1_MaterialLotType') ); return; when (depth = 2 and name = 'MaterialDefinitionID' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); // Value is retrieved in corresponding END procedure if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : x : %addr(currentItem.MaterialDefinitionID) : %size(currentItem.MaterialDefinitionID) ); endif; return; when (depth = 2 and name = 'MaterialLotProperty' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); XMLSAXParser_delegateElementProcessing( %addr(currentItem.MaterialLotProperty) : %paddr('s1_MaterialLotPropertyTypeStart_of_s1_MaterialLotType') : %paddr('s1_MaterialLotPropertyTypeEnd_of_s1_MaterialLotType') ); return; when (depth = 2 and name = 'StorageLocation' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); // Value is retrieved in corresponding END procedure if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : x : %addr(currentItem.StorageLocation) : %size(currentItem.StorageLocation) ); endif; return; when (depth = 2 and name = 'Quantity' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); XMLSAXParser_delegateElementProcessing( %addr(currentItem.Quantity) : %paddr('s1_QuantityTypeStart_of_s1_MaterialLotType') : %paddr('s1_QuantityTypeEnd_of_s1_MaterialLotType') ); return; when (depth = 2 and name = 'MessageType' and namespace = 'http://www.wbf.org/xml/b2mml-v0300-extensions'); // Value is retrieved in corresponding END procedure if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : x : %addr(currentItem.MessageType) : %size(currentItem.MessageType) ); endif; return; when (depth = 2 and name = 'Action' and namespace = 'http://www.wbf.org/xml/b2mml-v0300-extensions'); // Value is retrieved in corresponding END procedure if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : x : %addr(currentItem.Action) : %size(currentItem.Action) ); endif; return; when (depth = 2 and name = 'ConfirmOption' and namespace = 'http://www.wbf.org/xml/b2mml-v0300-extensions'); // Value is retrieved in corresponding END procedure if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : x : %addr(currentItem.ConfirmOption) : %size(currentItem.ConfirmOption) ); endif; return; when (depth = 2 and name = 'ProcessingStatus' and namespace = 'http://www.wbf.org/xml/b2mml-v0300-extensions'); XMLSAXParser_delegateElementProcessing( %addr(currentItem.ProcessingStatus) : %paddr('s2_ProcessingStatusStart') : %paddr('s2_ProcessingStatusEnd') ); return; endsl; return; /end-free * P s1_MaterialLotTypeStart_of_s1_MaterialInforma... P tion... P E * * ================================================================== * Return value: s1:MaterialLot * ================================================================== P s1_MaterialLotTypeEnd_of_s1_MaterialInformation... P B D s1_MaterialLotTypeEnd_of_s1_MaterialInformation... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying D attrs * dim(32767) D const options(*varsize) * D x S 10I 0 inz * D s1_MaterialLot DS likeds(s1_RpgArrayOfMaterialLot_t) D based(userdata) * D currentItem DS likeds(s1_MaterialLotType_t) D based(pCurrentItem) * D itemValue DS likeds(wsdl_fullElementData_t) D inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free // Get access to current array item if (MultiRef_doCaptureData() and MultiRef_hasItemIndex()); x = MultiRef_getItemIndex(); else; x = Array_getNumE(s1_MaterialLot.hItems); endif; pCurrentItem = Array_get(s1_MaterialLot.hItems: x); // Get full element data itemValue = XMLSAXParser_getFullElementData(); select; when (depth = 2 and name = 'ID' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); if (not Value_isNil(attrs)); UnMarshaller_toStringV6( %addr(currentItem.ID) : %addr(currentItem.ID: *DATA) : %size(currentItem.ID) : itemValue.pData : itemValue.size); endif; when (depth = 2 and name = 'MaterialDefinitionID' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); if (not Value_isNil(attrs)); UnMarshaller_toStringV6( %addr(currentItem.MaterialDefinitionID) : %addr(currentItem.MaterialDefinitionID: *DATA) : %size(currentItem.MaterialDefinitionID) : itemValue.pData : itemValue.size); endif; when (depth = 2 and name = 'StorageLocation' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); if (not Value_isNil(attrs)); UnMarshaller_toStringV6( %addr(currentItem.StorageLocation) : %addr(currentItem.StorageLocation: *DATA) : %size(currentItem.StorageLocation) : itemValue.pData : itemValue.size); endif; when (depth = 2 and name = 'MessageType' and namespace = 'http://www.wbf.org/xml/b2mml-v0300-extensions'); if (not Value_isNil(attrs)); UnMarshaller_toStringV6( %addr(currentItem.MessageType) : %addr(currentItem.MessageType: *DATA) : %size(currentItem.MessageType) : itemValue.pData : itemValue.size); endif; when (depth = 2 and name = 'Action' and namespace = 'http://www.wbf.org/xml/b2mml-v0300-extensions'); if (not Value_isNil(attrs)); UnMarshaller_toStringV6( %addr(currentItem.Action) : %addr(currentItem.Action: *DATA) : %size(currentItem.Action) : itemValue.pData : itemValue.size); endif; when (depth = 2 and name = 'ConfirmOption' and namespace = 'http://www.wbf.org/xml/b2mml-v0300-extensions'); if (not Value_isNil(attrs)); UnMarshaller_toStringV6( %addr(currentItem.ConfirmOption) : %addr(currentItem.ConfirmOption: *DATA) : %size(currentItem.ConfirmOption) : itemValue.pData : itemValue.size); endif; endsl; return; /end-free * P s1_MaterialLotTypeEnd_of_s1_MaterialInformation... P E * * ================================================================== * Return value: s1:Description * ================================================================== P s1_hItems_of_string6Start_of_s1_MaterialLotType... P B D s1_hItems_of_string6Start_of_s1_MaterialLotType... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) * D x S 10I 0 inz * D s1_Description DS likeds(s1_RpgArrayOfDescription2_t) D based(userdata) * D currentItem S like(s1_hItems_of_string6_t) D based(pCurrentItem) * D emptyItem S like(s1_hItems_of_string6_t) D inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free // Get access to current array item if (MultiRef_doCaptureData() and MultiRef_hasItemIndex()); x = MultiRef_getItemIndex(); else; if (depth = 1); if (Array_isNull(s1_Description.hItems)); s1_Description.hItems = MemoryManager_createArray(getOperationUuid(): %size(empt... yItem): 'Description': cTrue); endif; clear emptyItem; Array_add( s1_Description.hItems : %addr(emptyItem) ); endif; x = Array_getNumE(s1_Description.hItems); endif; pCurrentItem = Array_get(s1_Description.hItems: x); select; when (depth = 1 and name = 'Description' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : x : %addr(currentItem) : %size(currentItem) ); endif; return; endsl; return; /end-free * P s1_hItems_of_string6Start_of_s1_MaterialLotType... P E * * ================================================================== * Return value: s1:Description * ================================================================== P s1_hItems_of_string6End_of_s1_MaterialLotType... P B D s1_hItems_of_string6End_of_s1_MaterialLotType... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying D attrs * dim(32767) D const options(*varsize) * D x S 10I 0 inz * D s1_Description DS likeds(s1_RpgArrayOfDescription2_t) D based(userdata) * D currentItem S like(s1_hItems_of_string6_t) D based(pCurrentItem) * D itemValue DS likeds(wsdl_fullElementData_t) D inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free // Get access to current array item if (MultiRef_doCaptureData() and MultiRef_hasItemIndex()); x = MultiRef_getItemIndex(); else; x = Array_getNumE(s1_Description.hItems); endif; pCurrentItem = Array_get(s1_Description.hItems: x); // Get full element data itemValue = XMLSAXParser_getFullElementData(); select; when (g_isAXIS_2095 and name = 'MaterialLot' and namespace = 'http://www.wbf.org/xml/b2mml-v0300') or (not g_isAXIS_2095 and name = 'Description' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); if (not Value_isNil(attrs)); UnMarshaller_toStringV6( %addr(currentItem) : %addr(currentItem: *DATA) : %size(currentItem) : itemValue.pData : itemValue.size); endif; endsl; return; /end-free * P s1_hItems_of_string6End_of_s1_MaterialLotType... P E * * ================================================================== * Return value: s1:MaterialLotProperty * ================================================================== P s1_MaterialLotPropertyTypeStart_of_s1_Materia... P lLotType... P B D s1_MaterialLotPropertyTypeStart_of_s1_Materia... D lLotType... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) * D x S 10I 0 inz * D s1_MaterialLotProperty... D DS likeds(s1_RpgArrayOfMaterialLotPro... D perty_t) D based(userdata) * D currentItem DS likeds(s1_MaterialLotPropertyType_t) D based(pCurrentItem) * D emptyItem DS likeds(s1_MaterialLotPropertyType_t) D inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free // Get access to current array item if (MultiRef_doCaptureData() and MultiRef_hasItemIndex()); x = MultiRef_getItemIndex(); else; if (depth = 1); if (Array_isNull(s1_MaterialLotProperty.hItems)); s1_MaterialLotProperty.hItems = MemoryManager_createArray(getOperationUuid(): %size(empt... yItem): 'MaterialLotProperty': cTrue); endif; clear emptyItem; Array_add( s1_MaterialLotProperty.hItems : %addr(emptyItem) ); endif; x = Array_getNumE(s1_MaterialLotProperty.hItems); endif; pCurrentItem = Array_get(s1_MaterialLotProperty.hItems: x); select; when (depth = 1 and name = 'MaterialLotProperty' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : x : %addr(currentItem) : %size(currentItem) ); endif; return; when (depth = 2 and name = 'ID' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); // Value is retrieved in corresponding END procedure if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : x : %addr(currentItem.ID) : %size(currentItem.ID) ); endif; return; when (depth = 2 and name = 'Description' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); XMLSAXParser_delegateElementProcessing( %addr(currentItem.Description) : %paddr('s1_hItems_of_string4Start_of_s1_MaterialLotPropertyTyp+ e') : %paddr('s1_hItems_of_string4End_of_s1_MaterialLotPropertyType') ); return; when (depth = 2 and name = 'Value' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); XMLSAXParser_delegateElementProcessing( %addr(currentItem.Value) : %paddr('s1_ValueTypeStart_of_s1_MaterialLotPropertyType') : %paddr('s1_ValueTypeEnd_of_s1_MaterialLotPropertyType') ); return; when (depth = 2 and name = 'QAMaterialTestSpecificationID' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); XMLSAXParser_delegateElementProcessing( %addr(currentItem.QAMaterialTestSpecificationID) : %paddr('s1_hItems_of_string5Start_of_s1_MaterialLotPropertyTyp+ e') : %paddr('s1_hItems_of_string5End_of_s1_MaterialLotPropertyType') ); return; endsl; return; /end-free * P s1_MaterialLotPropertyTypeStart_of_s1_Materia... P lLotType... P E * * ================================================================== * Return value: s1:MaterialLotProperty * ================================================================== P s1_MaterialLotPropertyTypeEnd_of_s1_MaterialL... P otType... P B D s1_MaterialLotPropertyTypeEnd_of_s1_MaterialL... D otType... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying D attrs * dim(32767) D const options(*varsize) * D x S 10I 0 inz * D s1_MaterialLotProperty... D DS likeds(s1_RpgArrayOfMaterialLotPro... D perty_t) D based(userdata) * D currentItem DS likeds(s1_MaterialLotPropertyType_t) D based(pCurrentItem) * D itemValue DS likeds(wsdl_fullElementData_t) D inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free // Get access to current array item if (MultiRef_doCaptureData() and MultiRef_hasItemIndex()); x = MultiRef_getItemIndex(); else; x = Array_getNumE(s1_MaterialLotProperty.hItems); endif; pCurrentItem = Array_get(s1_MaterialLotProperty.hItems: x); // Get full element data itemValue = XMLSAXParser_getFullElementData(); select; when (depth = 2 and name = 'ID' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); if (not Value_isNil(attrs)); UnMarshaller_toStringV6( %addr(currentItem.ID) : %addr(currentItem.ID: *DATA) : %size(currentItem.ID) : itemValue.pData : itemValue.size); endif; endsl; return; /end-free * P s1_MaterialLotPropertyTypeEnd_of_s1_MaterialL... P otType... P E * * ================================================================== * Return value: s1:Description * ================================================================== P s1_hItems_of_string4Start_of_s1_MaterialLotPr... P opertyType... P B D s1_hItems_of_string4Start_of_s1_MaterialLotPr... D opertyType... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) * D x S 10I 0 inz * D s1_Description DS likeds(s1_RpgArrayOfDescription3_t) D based(userdata) * D currentItem S like(s1_hItems_of_string4_t) D based(pCurrentItem) * D emptyItem S like(s1_hItems_of_string4_t) D inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free // Get access to current array item if (MultiRef_doCaptureData() and MultiRef_hasItemIndex()); x = MultiRef_getItemIndex(); else; if (depth = 1); if (Array_isNull(s1_Description.hItems)); s1_Description.hItems = MemoryManager_createArray(getOperationUuid(): %size(empt... yItem): 'Description_2': cTrue); endif; clear emptyItem; Array_add( s1_Description.hItems : %addr(emptyItem) ); endif; x = Array_getNumE(s1_Description.hItems); endif; pCurrentItem = Array_get(s1_Description.hItems: x); select; when (depth = 1 and name = 'Description' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : x : %addr(currentItem) : %size(currentItem) ); endif; return; endsl; return; /end-free * P s1_hItems_of_string4Start_of_s1_MaterialLotPr... P opertyType... P E * * ================================================================== * Return value: s1:Description * ================================================================== P s1_hItems_of_string4End_of_s1_MaterialLotProp... P ertyType... P B D s1_hItems_of_string4End_of_s1_MaterialLotProp... D ertyType... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying D attrs * dim(32767) D const options(*varsize) * D x S 10I 0 inz * D s1_Description DS likeds(s1_RpgArrayOfDescription3_t) D based(userdata) * D currentItem S like(s1_hItems_of_string4_t) D based(pCurrentItem) * D itemValue DS likeds(wsdl_fullElementData_t) D inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free // Get access to current array item if (MultiRef_doCaptureData() and MultiRef_hasItemIndex()); x = MultiRef_getItemIndex(); else; x = Array_getNumE(s1_Description.hItems); endif; pCurrentItem = Array_get(s1_Description.hItems: x); // Get full element data itemValue = XMLSAXParser_getFullElementData(); select; when (g_isAXIS_2095 and name = 'MaterialLotProperty' and namespace = 'http://www.wbf.org/xml/b2mml-v0300') or (not g_isAXIS_2095 and name = 'Description' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); if (not Value_isNil(attrs)); UnMarshaller_toStringV6( %addr(currentItem) : %addr(currentItem: *DATA) : %size(currentItem) : itemValue.pData : itemValue.size); endif; endsl; return; /end-free * P s1_hItems_of_string4End_of_s1_MaterialLotProp... P ertyType... P E * * ================================================================== * Return value: s1:QAMaterialTestSpecificationID * ================================================================== P s1_hItems_of_string5Start_of_s1_MaterialLotPr... P opertyType... P B D s1_hItems_of_string5Start_of_s1_MaterialLotPr... D opertyType... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) * D x S 10I 0 inz * D s1_QAMaterialTestSpecificationID... D DS likeds(s1_RpgArrayOfQAMaterialTest... D SpecificationID1_t) D based(userdata) * D currentItem S like(s1_hItems_of_string5_t) D based(pCurrentItem) * D emptyItem S like(s1_hItems_of_string5_t) D inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free // Get access to current array item if (MultiRef_doCaptureData() and MultiRef_hasItemIndex()); x = MultiRef_getItemIndex(); else; if (depth = 1); if (Array_isNull(s1_QAMaterialTestSpecificationID.hItems)); s1_QAMaterialTestSpecificationID.hItems = MemoryManager_createArray(getOperationUuid(): %size(empt... yItem): 'QAMaterialTestSpecificationID': cTrue); endif; clear emptyItem; Array_add( s1_QAMaterialTestSpecificationID.hItems : %addr(emptyItem) ); endif; x = Array_getNumE(s1_QAMaterialTestSpecificationID.hItems); endif; pCurrentItem = Array_get(s1_QAMaterialTestSpecificationID.hItems: x); select; when (depth = 1 and name = 'QAMaterialTestSpecificationID' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : x : %addr(currentItem) : %size(currentItem) ); endif; return; endsl; return; /end-free * P s1_hItems_of_string5Start_of_s1_MaterialLotPr... P opertyType... P E * * ================================================================== * Return value: s1:QAMaterialTestSpecificationID * ================================================================== P s1_hItems_of_string5End_of_s1_MaterialLotProp... P ertyType... P B D s1_hItems_of_string5End_of_s1_MaterialLotProp... D ertyType... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying D attrs * dim(32767) D const options(*varsize) * D x S 10I 0 inz * D s1_QAMaterialTestSpecificationID... D DS likeds(s1_RpgArrayOfQAMaterialTest... D SpecificationID1_t) D based(userdata) * D currentItem S like(s1_hItems_of_string5_t) D based(pCurrentItem) * D itemValue DS likeds(wsdl_fullElementData_t) D inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free // Get access to current array item if (MultiRef_doCaptureData() and MultiRef_hasItemIndex()); x = MultiRef_getItemIndex(); else; x = Array_getNumE(s1_QAMaterialTestSpecificationID.hItems); endif; pCurrentItem = Array_get(s1_QAMaterialTestSpecificationID.hItems: x); // Get full element data itemValue = XMLSAXParser_getFullElementData(); select; when (g_isAXIS_2095 and name = 'MaterialLotProperty' and namespace = 'http://www.wbf.org/xml/b2mml-v0300') or (not g_isAXIS_2095 and name = 'QAMaterialTestSpecificationID' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); if (not Value_isNil(attrs)); UnMarshaller_toStringV6( %addr(currentItem) : %addr(currentItem: *DATA) : %size(currentItem) : itemValue.pData : itemValue.size); endif; endsl; return; /end-free * P s1_hItems_of_string5End_of_s1_MaterialLotProp... P ertyType... P E * * ================================================================== * Return value: s1:Value * ================================================================== P s1_ValueTypeStart_of_s1_MaterialLotPropertyType... P B D s1_ValueTypeStart_of_s1_MaterialLotPropertyType... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) * D x S 10I 0 inz * D s1_Value DS likeds(s1_RpgArrayOfValue1_t) D based(userdata) * D currentItem DS likeds(s1_ValueType_t) D based(pCurrentItem) * D emptyItem DS likeds(s1_ValueType_t) D inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free // Get access to current array item if (MultiRef_doCaptureData() and MultiRef_hasItemIndex()); x = MultiRef_getItemIndex(); else; if (depth = 1); if (Array_isNull(s1_Value.hItems)); s1_Value.hItems = MemoryManager_createArray(getOperationUuid(): %size(empt... yItem): 'Value': cTrue); endif; clear emptyItem; Array_add( s1_Value.hItems : %addr(emptyItem) ); endif; x = Array_getNumE(s1_Value.hItems); endif; pCurrentItem = Array_get(s1_Value.hItems: x); select; when (depth = 1 and name = 'Value' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : x : %addr(currentItem) : %size(currentItem) ); endif; return; when (depth = 2 and name = 'ValueString' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); // Value is retrieved in corresponding END procedure if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : x : %addr(currentItem.ValueString) : %size(currentItem.ValueString) ); endif; return; when (depth = 2 and name = 'DataType' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); // Value is retrieved in corresponding END procedure if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : x : %addr(currentItem.DataType) : %size(currentItem.DataType) ); endif; return; endsl; return; /end-free * P s1_ValueTypeStart_of_s1_MaterialLotPropertyType... P E * * ================================================================== * Return value: s1:Value * ================================================================== P s1_ValueTypeEnd_of_s1_MaterialLotPropertyType... P B D s1_ValueTypeEnd_of_s1_MaterialLotPropertyType... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying D attrs * dim(32767) D const options(*varsize) * D x S 10I 0 inz * D s1_Value DS likeds(s1_RpgArrayOfValue1_t) D based(userdata) * D currentItem DS likeds(s1_ValueType_t) D based(pCurrentItem) * D itemValue DS likeds(wsdl_fullElementData_t) D inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free // Get access to current array item if (MultiRef_doCaptureData() and MultiRef_hasItemIndex()); x = MultiRef_getItemIndex(); else; x = Array_getNumE(s1_Value.hItems); endif; pCurrentItem = Array_get(s1_Value.hItems: x); // Get full element data itemValue = XMLSAXParser_getFullElementData(); select; when (depth = 2 and name = 'ValueString' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); if (not Value_isNil(attrs)); UnMarshaller_toStringV6( %addr(currentItem.ValueString) : %addr(currentItem.ValueString: *DATA) : %size(currentItem.ValueString) : itemValue.pData : itemValue.size); endif; when (depth = 2 and name = 'DataType' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); if (not Value_isNil(attrs)); UnMarshaller_toStringV6( %addr(currentItem.DataType) : %addr(currentItem.DataType: *DATA) : %size(currentItem.DataType) : itemValue.pData : itemValue.size); endif; endsl; return; /end-free * P s1_ValueTypeEnd_of_s1_MaterialLotPropertyType... P E * * ================================================================== * Return value: s1:Quantity * ================================================================== P s1_QuantityTypeStart_of_s1_MaterialLotType... P B D s1_QuantityTypeStart_of_s1_MaterialLotType... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) * D x S 10I 0 inz * D s1_Quantity DS likeds(s1_RpgArrayOfQuantity_t) D based(userdata) * D currentItem DS likeds(s1_QuantityType_t) D based(pCurrentItem) * D emptyItem DS likeds(s1_QuantityType_t) D inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free // Get access to current array item if (MultiRef_doCaptureData() and MultiRef_hasItemIndex()); x = MultiRef_getItemIndex(); else; if (depth = 1); if (Array_isNull(s1_Quantity.hItems)); s1_Quantity.hItems = MemoryManager_createArray(getOperationUuid(): %size(empt... yItem): 'Quantity': cTrue); endif; clear emptyItem; Array_add( s1_Quantity.hItems : %addr(emptyItem) ); endif; x = Array_getNumE(s1_Quantity.hItems); endif; pCurrentItem = Array_get(s1_Quantity.hItems: x); select; when (depth = 1 and name = 'Quantity' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : x : %addr(currentItem) : %size(currentItem) ); endif; return; when (depth = 2 and name = 'QuantityString' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); // Value is retrieved in corresponding END procedure if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : x : %addr(currentItem.QuantityString) : %size(currentItem.QuantityString) ); endif; return; when (depth = 2 and name = 'DataType' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); // Value is retrieved in corresponding END procedure if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : x : %addr(currentItem.DataType) : %size(currentItem.DataType) ); endif; return; when (depth = 2 and name = 'UnitOfMeasure' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); // Value is retrieved in corresponding END procedure if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : x : %addr(currentItem.UnitOfMeasure) : %size(currentItem.UnitOfMeasure) ); endif; return; when (depth = 2 and name = 'Key' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); // Value is retrieved in corresponding END procedure if (MultiRef_isReference(attrs)); MultiRef_put( attrs : XMLSAXParser_getUserData() : depth : namespace : name : path : XMLSAXParser_getStartCallback() : XMLSAXParser_getEndCallback() : x : %addr(currentItem.Key) : %size(currentItem.Key) ); endif; return; endsl; return; /end-free * P s1_QuantityTypeStart_of_s1_MaterialLotType... P E * * ================================================================== * Return value: s1:Quantity * ================================================================== P s1_QuantityTypeEnd_of_s1_MaterialLotType... P B D s1_QuantityTypeEnd_of_s1_MaterialLotType... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying D attrs * dim(32767) D const options(*varsize) * D x S 10I 0 inz * D s1_Quantity DS likeds(s1_RpgArrayOfQuantity_t) D based(userdata) * D currentItem DS likeds(s1_QuantityType_t) D based(pCurrentItem) * D itemValue DS likeds(wsdl_fullElementData_t) D inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free // Get access to current array item if (MultiRef_doCaptureData() and MultiRef_hasItemIndex()); x = MultiRef_getItemIndex(); else; x = Array_getNumE(s1_Quantity.hItems); endif; pCurrentItem = Array_get(s1_Quantity.hItems: x); // Get full element data itemValue = XMLSAXParser_getFullElementData(); select; when (depth = 2 and name = 'QuantityString' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); if (not Value_isNil(attrs)); UnMarshaller_toStringV6( %addr(currentItem.QuantityString) : %addr(currentItem.QuantityString: *DATA) : %size(currentItem.QuantityString) : itemValue.pData : itemValue.size); endif; when (depth = 2 and name = 'DataType' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); if (not Value_isNil(attrs)); UnMarshaller_toStringV6( %addr(currentItem.DataType) : %addr(currentItem.DataType: *DATA) : %size(currentItem.DataType) : itemValue.pData : itemValue.size); endif; when (depth = 2 and name = 'UnitOfMeasure' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); if (not Value_isNil(attrs)); UnMarshaller_toStringV6( %addr(currentItem.UnitOfMeasure) : %addr(currentItem.UnitOfMeasure: *DATA) : %size(currentItem.UnitOfMeasure) : itemValue.pData : itemValue.size); endif; when (depth = 2 and name = 'Key' and namespace = 'http://www.wbf.org/xml/b2mml-v0300'); if (not Value_isNil(attrs)); UnMarshaller_toStringV6( %addr(currentItem.Key) : %addr(currentItem.Key: *DATA) : %size(currentItem.Key) : itemValue.pData : itemValue.size); endif; endsl; return; /end-free * P s1_QuantityTypeEnd_of_s1_MaterialLotType... P E * * ===================================================================== * Reopens a given input stream in order to send it over * the wire again. * ===================================================================== P reOpenInputStream... ERR P B * D reOpenInputStream... D PI like(wsdl_hStream_t ) D i_hDataSource const like(wsdl_hDataSource_t) D i_hInpStream value like(wsdl_hStream_t ) * * Return value D hInpStream S like(wsdl_hStream_t ) inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free ManagedMemoryDataSource_InputStream_close(i_hInpStream); hInpStream = ManagedMemoryDataSource_InputStream_open(i_hDataSource); return hInpStream; /end-free * P reOpenInputStream... P E * * ===================================================================== * Login in to proxy server or http server. * ===================================================================== P login... P B * D login... D PI 10I 0 D i_http_err 10I 0 value D i_numAttempts 10I 0 value * * Return value D rc S 10I 0 inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free http_DebugLog_appendText( '** ' + %char(%timestamp()) + ': Requesting user name and password'); rc = MaterialInformationSoap_Port_login( i_http_err: i_numAttempts); return rc; /end-free * P login... P E * * ===================================================================== * Sets the content type and the SOAP action of the POST message. * ===================================================================== P HTTP_setContentTypeAndSOAPAction... P B * D HTTP_setContentTypeAndSOAPAction... D PI D o_addlHdrs 1024A varying D i_pUserData * value * * User Data D headers DS likeds(headers_t) based(i_pUserData) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free o_addlHdrs = cHTTP_HEADER_CONTENT_TYPE + ': ' + headers.contentType + cEBCDIC_CRLF + cHTTP_HEADER_SOAP_ACTION + ': ' + headers.soapAction + cEBCDIC_CRLF; /end-free * P HTTP_setContentTypeAndSOAPAction... P E * * ===================================================================== * Receice response of HTTP post operation. * ===================================================================== P HTTP_receiveResponse... P B * D HTTP_receiveResponse... D PI 10I 0 D i_hStream 10I 0 value D i_data * value D i_length 10I 0 value * D rc S 10I 0 inz(-1) D contentType S 1024A inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free http_DebugLog_appendText( '** ' + %char(%timestamp()) + ': Entering ' + f_this() + '()'); if (not g_HTTP_isInit); select; when (http_getContentType() = 'text'); if (http_getContentSubType() = 'html'); if (f_exist('WSDL2RPG': '*LIBL': '*MSGF')); clear USR0030; USR00301 = getPortName(); AppMsg_sendCancelMsg(AppMsg_newError('USR0030': USR0030)); else; AppMsg_sendCancelMsg( f_newMsg('CPF9898' : 'Unexpected HTML data received from web service' : '*ESCAPE' : 'QCPFMSG')); endif; endif; when (http_getContentType() = 'multipart'); contentType = %trim(http_header('content-type')); MIMEParser_beginParse(g_hMIMEParser); MIMEParser_setContentType(g_hMIMEParser: contentType); g_SOAPMessageID = http_getContentTypeAttr('start': cTrue); g_isMimeMessage = cTrue; http_DebugLog_appendText( '** ' + %char(%timestamp()) + ': Detected MIME message'); endsl; g_HTTP_isInit = cTrue; endif; if (g_isMimeMessage); if (MIMEParser_parse(g_hMIMEParser: i_data: i_length) = cTrue); rc = i_length; else; rc = -1; http_DebugLog_appendText( '** '+ %char(%timestamp()) +': Failed parsing MIME message'); endif; else; if (XMLSAXParser_parse(g_hSAXParser: i_data: i_length) = cTrue); rc = i_length; else; rc = -1; http_DebugLog_appendText( '** '+ %char(%timestamp()) +': Failed parsing XML message'); endif; endif; http_DebugLog_appendText( '** ' + %char(%timestamp()) + ': Leaving ' + f_this() + '()'); return rc; /end-free * P HTTP_receiveResponse... P E * * ===================================================================== * Starts a MIME body part. * This procedure is called whenever a new part is started. * ===================================================================== * Parameters: * i_pPart Handle of the current part. * i_pUserData Pointer to user data as specified at * http_mime_DataSink_initialize(). * ===================================================================== P HTTPDataSink_startPart... P B * D HTTPDataSink_startPart... D PI D i_pPart * const D i_pUserData * const * D contentID S 512A varying inz D contentSubType S 16A varying inz * * ------------------------------------------- * TODO: Add fields to open * the file and to store the * file descriptor. * ------------------------------------------- /IF DEFINED(DEFAULT_ATTACHMENT_HANDLING) D contentType S 10I 0 inz D fileName S 1024A varying inz D fileExt S 10A varying inz * D partUserData DS likeds(partUserData_t ) D based(pPartUserData) /ENDIF * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free if (http_mime_Part_getType(i_pPart) <> cMIME_BASICPART); return; endif; g_BodyPart_counter = g_BodyPart_counter + 1; contentID = http_mime_Part_getContentID(i_pPart); contentSubType = http_mime_Part_getContentSubType(i_pPart); if (not g_SOAPMessage_done); if (g_SOAPMessageID <> ''); if (contentSubType = 'xml' and contentID = g_SOAPMessageID); g_doParseSOAPMessage = cTrue; return; endif; else; if (g_BodyPart_counter = 1); g_doParseSOAPMessage = cTrue; return; endif; endif; endif; // ----------------------------------------- // TODO: // Add your code to handle attachments here! // E.g.: Open output file. // ----------------------------------------- /IF DEFINED(DEFAULT_ATTACHMENT_HANDLING) // Ignore all attachments that are not a BasicPart if (http_mime_Part_getType(i_pPart) <> cMIME_BASICPART); return; endif; fileName = http_mime_Part_getFileName(i_pPart); contentID = http_mime_Part_getContentID(i_pPart); contentType = http_mime_Part_getContentType(i_pPart); contentSubType = http_mime_Part_getContentSubType(i_pPart); if (contentType = cMIME_TYPE_TEXT); fileExt = 'txt'; else; fileExt = contentSubType; endif; fileName = MaterialInformationSoap_Attachments_getFolder() + %char(%timestamp()) + '_' + contentID + '_' + fileName + '.' + fileExt; fileName = %xlate(':<>': '___': fileName); // Assign filename to content-ID and put it into the list of attachments MaterialInformationSoap_Attachments_put( contentID : fileName : getOperationUuid()); // Produce the user data of that Part to // store the file descriptor of the open file. pPartUserData = %alloc(%size(partUserData_t)); clear partUserData; partUserData.FD = open(fileName : O_CREAT + O_EXCL + O_SHARE_RDONLY + O_WRONLY + O_CCSID : S_IRWXU + S_IRWXG + S_IRWXO : 819); // CCSID does not matter because // we write binary data // Set user data of the current Part. http_mime_Part_setUserData(i_pPart: pPartUserData); /ENDIF return; /end-free * P HTTPDataSink_startPart... P E * * ===================================================================== * Receices MIME part body data. * This procedure is called whenever new body data is available. * ===================================================================== * Parameters: * i_pPart Handle of the current part. * i_pUserData Pointer to user data as specified at * http_mime_DataSink_initialize(). * i_data Pointer to decoded body data. * i_size Size of decoded body data. * ===================================================================== P HTTPDataSink_bodyData... P B * D HTTPDataSink_bodyData... D PI D i_pPart * const D i_pUserData * const D i_data * const D i_size 10I 0 const * * ------------------------------------------- * TODO: Add fields to write * the attachment to the file * opened in HTTPDataSink_startPart(). * ------------------------------------------- /IF DEFINED(DEFAULT_ATTACHMENT_HANDLING) D rc S 10I 0 inz * D partUserData DS likeds(partUserData_t ) D based(pPartUserData) /ENDIF * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free if (g_doParseSOAPMessage); XMLSAXParser_parse(g_hSAXParser: i_data: i_size); return; endif; // ----------------------------------------- // TODO: // Add your code to handle attachments here! // E.g.: Write received data to output file. // ----------------------------------------- /IF DEFINED(DEFAULT_ATTACHMENT_HANDLING) // Gain access to the user data of the current Part. pPartUserData = http_mime_Part_getUserData(i_pPart); if (pPartUserData = *NULL); return; endif; // Return to caller if no file is open. if (partUserData.FD <= 0); return; endif; // Append attachment data to the file. rc = write(partUserData.FD: i_data: i_size); /ENDIF return; /end-free * P HTTPDataSink_bodyData... P E * * ===================================================================== * Ends a MIME body part. * This procedure is called whenever a new part ends. * ===================================================================== * Parameters: * i_pPart Handle of the current part. * i_pUserData Pointer to user data as specified at * http_mime_DataSink_initialize(). * ===================================================================== P HTTPDataSink_endPart... P B * D HTTPDataSink_endPart... D PI D i_pPart * const D i_pUserData * const * * ------------------------------------------- * TODO: Add fields to close the file * opened in HTTPDataSink_startPart(). * ------------------------------------------- /IF DEFINED(DEFAULT_ATTACHMENT_HANDLING) D rc S 10I 0 inz * D partUserData DS likeds(partUserData_t ) D based(pPartUserData) /ENDIF * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free if (http_mime_Part_getType(i_pPart) <> cMIME_BASICPART); return; endif; if (g_doParseSOAPMessage); g_doParseSOAPMessage = cFalse; g_SOAPMessage_done = cTrue; return; endif; // ----------------------------------------- // TODO: // Add your code to handle attachments here! // E.g.: Close output file. // ----------------------------------------- /IF DEFINED(DEFAULT_ATTACHMENT_HANDLING) // Gain access to the user data of the current Part. pPartUserData = http_mime_Part_getUserData(i_pPart); if (pPartUserData = *NULL); return; endif; // Return to caller if no file is open. if (partUserData.FD <= 0); return; endif; // Close the file. callp close(partUserData.FD); partUserData.FD = 0; // Free memory allocated in HTTPDataSink_startPart() dealloc(N) pPartUserData; /ENDIF return; /end-free * P HTTPDataSink_endPart... P E * * ===================================================================== * SOAP message: Envelope * ===================================================================== P SOAPMessage_Envelope... P B * D SOAPMessage_Envelope... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free if (depth = 1 and f_lcase(name) = 'html'); if (f_exist('WSDL2RPG': '*LIBL': '*MSGF')); clear USR0030; USR00301 = getPortName(); AppMsg_sendCancelMsg(AppMsg_newError('USR0030': USR0030)); else; AppMsg_sendCancelMsg( f_newMsg('CPF9898' : 'Unexpected HTML data received from web service' : '*ESCAPE' : 'QCPFMSG')); endif; endif; select; when (path = '/Envelope/Header'); XMLSAXParser_delegateElementProcessing( g_pRespSoapHeader : %paddr('SOAPMessage_unexpectedElementStart') : %paddr('SOAPMessage_unexpectedElementEnd')); return; when (path = '/Envelope/Body'); select; when (name = 'Fault'); XMLSAXParser_delegateElementProcessing( %addr(g_errors.soapFault) : %paddr('SOAPMessage_FaultStart') : %paddr('SOAPMessage_FaultEnd')); return; when (MultiRef_isData(attrs)); XMLSAXParser_delegateElementProcessing( *NULL : MultiRef_getStartCallback() : MultiRef_getEndCallback()); return; other; XMLSAXParser_delegateElementProcessing( userdata : %paddr('tns_ProcessMaterialInformationResponseStart') : %paddr('tns_ProcessMaterialInformationResponseEnd')); return; endsl; endsl; return; /end-free * P SOAPMessage_Envelope... P E * * ===================================================================== * SOAP message: fault information * ===================================================================== P SOAPMessage_FaultStart... P B * D SOAPMessage_FaultStart... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) * D fault... D DS based(userdata) D likeds(wsdl_soapFault_t ) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free if (depth = 1); return; endif; select; when (name = 'detail'); XMLSAXParser_delegateElementProcessing( %addr(fault.detail) : %paddr('SOAPMessage_FaultDetailStart') : %paddr('SOAPMessage_FaultDetailEnd')); endsl; /end-free * P SOAPMessage_FaultStart... P E * * ===================================================================== * SOAP message: fault information * ===================================================================== P SOAPMessage_FaultEnd... P B * D SOAPMessage_FaultEnd... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying const D attrs * dim(32767) D const options(*varsize) * D fault... D DS based(userdata) D likeds(wsdl_soapFault_t ) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free if (depth = 1); return; endif; select; when (name = 'faultcode'); fault.code = value; when (name = 'faultstring'); fault.string = value; endsl; /end-free * P SOAPMessage_FaultEnd... P E * * ===================================================================== * SOAP message: fault details * ===================================================================== P SOAPMessage_FaultDetailStart... P B * D SOAPMessage_FaultDetailStart... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) * D detail... D DS based(userdata) D likeds(wsdl_soap_faultDetail_t) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free if (depth = 1); return; endif; select; endsl; /end-free * P SOAPMessage_FaultDetailStart... P E * * ===================================================================== * SOAP message: fault details * ===================================================================== P SOAPMessage_FaultDetailEnd... P B * D SOAPMessage_FaultDetailEnd... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying const D attrs * dim(32767) D const options(*varsize) * D detail... D DS based(userdata) D likeds(wsdl_soap_faultDetail_t) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free if (depth = 1); return; endif; select; when (name = 'hostname'); detail.hostname = value; endsl; /end-free * P SOAPMessage_FaultDetailEnd... P E * * ===================================================================== * SOAP message: NULL callback procedure * ===================================================================== P SOAPMessage_unexpectedElementStart... P B * D SOAPMessage_unexpectedElementStart... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D attrs * dim(32767) D const options(*varsize) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free if (ignoreUnexpectedSoapHeader()); http_DebugLog_appendText( 'Warning: Received unexpected Soap header: <' + name + '>'); return; endif; if (f_exist('WSDL2RPG': '*LIBL': '*MSGF')); clear USR0042; USR00421 = 'SOAPMessage_unexpectedElementStart'; USR00422 = 'SOAPMessage_unexpectedElementEnd'; AppMsg_sendCancelMsg(AppMsg_newError('USR0042': USR0042)); else; AppMsg_sendCancelMsg( f_newMsg('CPF9898' : 'Unexpected Soap element received from web service.' : '*ESCAPE' : 'QCPFMSG')); endif; return; /end-free * P SOAPMessage_unexpectedElementStart... P E * * ===================================================================== * SOAP message: NULL callback procedure * ===================================================================== P SOAPMessage_unexpectedElementEnd... P B * D SOAPMessage_unexpectedElementEnd... D PI D userdata * value D depth 10I 0 value D namespace 1024A varying const D name 1024A varying const D path 24576A varying const D value 65535A varying const D attrs * dim(32767) D const options(*varsize) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free if (ignoreUnexpectedSoapHeader()); http_DebugLog_appendText( 'Warning: Received unexpected Soap header: ' + value); http_DebugLog_appendText( 'Warning: Received unexpected Soap header: </' + name + '>'); return; endif; if (f_exist('WSDL2RPG': '*LIBL': '*MSGF')); clear USR0042; USR00421 = 'SOAPMessage_unexpectedElementStart'; USR00422 = 'SOAPMessage_unexpectedElementEnd'; AppMsg_sendCancelMsg(AppMsg_newError('USR0042': USR0042)); else; AppMsg_sendCancelMsg( f_newMsg('CPF9898' : 'Unexpected Soap element received from web service.' : '*ESCAPE' : 'QCPFMSG')); endif; return; /end-free * P SOAPMessage_unexpectedElementEnd... P E * * ===================================================================== * Specifies, whether unexpected Soap headers are ignored or not. * ===================================================================== P ignoreUnexpectedSoapHeader... P B * D ignoreUnexpectedSoapHeader... D PI N * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free return cFalse; /end-free * P ignoreUnexpectedSoapHeader... P E * * ===================================================================== * Returns the UUID of this web service operation. * All attachments and allocated memory block are attached to * this UUID. * ===================================================================== P getOperationUuid... P B * D getOperationUuid... D PI like(wsdl_uuid_t ) * * Return value D uuid S like(wsdl_uuid_t ) inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free uuid = MaterialInformationSoap_Port_getUuid(); return uuid; /end-free * P getOperationUuid... P E * * ===================================================================== * Returns the name of the web service port. * ===================================================================== P getPortName... P B * D getPortName... D PI like(wsdl_portName_t ) * * Return value D name S like(wsdl_portName_t ) inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free name = MaterialInformationSoap_Port_getName(); return name; /end-free * P getPortName... P E * * ===================================================================== * Returns the CCSID of the remote POST data. * ===================================================================== P getPostCcsid... P B * D getPostCcsid... D PI 10I 0 * * Return value D post_ccsid S 10I 0 inz(1208) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free post_ccsid = MaterialInformationSoap_Port_getPostCcsid(); return post_ccsid; /end-free * P getPostCcsid... P E *
/IF NOT DEFINED(PROTOTYPE_VSEFACS) *====================================================================== * Generated by WSDL2RPG 1.15beta4 / 08.01.2012 * Built on Apr 17, 2012 (15:41:58) * Built for V6R1M0 * Based on WS_SRV v1.15 *====================================================================== * * This source member contains the common procedures * of web service port: * * MaterialInformationSoap * *====================================================================== * Pre-Compiler tags used by STRPREPRC to retrieve creation * commands from the source member. * --------------------------------------------------------------------- * >>PRE-COMPILER<< * >>CRTCMD<< CRTRPGMOD MODULE(&LI/&OB) + * SRCFILE(&SL/&SF) + * SRCMBR(&SM); * >>COMPILE<< * >>PARM<< TRUNCNBR(*NO); * >>PARM<< DBGVIEW(*LIST); * >>END-COMPILE<< * >>EXECUTE<< * >>CMD<< CRTSRVPGM + * SRVPGM(&LI/&OB ) + * MODULE(&LI/&OB + * &LI/VSEFACS01 + * ) + * EXPORT(*ALL) + * BNDSRVPGM(*LIBL/WSDL2RPGRT + * *LIBL/MIME + * *LIBL/HTTPMIME + * *LIBL/BASICS1 ) + * TEXT('+ * Web Service: MaterialInformationSoap+ * ') + * DETAIL(*BASIC); * >>END-PRE-COMPILER<< *====================================================================== H NOMAIN H DEBUG H BNDDIR('HTTPAPI': 'QC2LE') H OPTION(*SRCSTMT : *NODEBUGIO) H EXTBININT(*YES) /ENDIF /IF NOT DEFINED(PROTOTYPE_DEFINED_VSEFACS) /DEFINE PROTOTYPE_DEFINED_VSEFACS * * Type definitions CPY /COPY QWSDL2RPG,TYPES_H * * Imported prototypes CPY /COPY QWSDL2RPG,PWSDL2R82 WSDL2RPG: Dynamic Array CPY /COPY QWSDL2RPG,PWSDL2R84 WSDL2RPG: MemoryManager * * Array dimensions: * * Web Service specific types: * D tns_ProcessMaterialInformation_t... D DS template D qualified D MaterialInformation... D likeds(s1_MaterialInformationType_t) * * D tns_ProcessMaterialInformationResponse_t... D DS template D qualified D MaterialInformation... D likeds(s1_MaterialInformationType_t) * D s2_AcknowledgeType_t... D S 128A varying D template D s2_ActionType_t... D S 128A varying D template D s2_ConfirmOptionType_t... D S 128A varying D template D s2_MessageTypeType_t... D S 128A varying D template * D s2_ProcessingStatusType_t... D DS template D qualified D ReturnCode 128A varying D ReturnDescription... D 128A varying D ReturnValue like(s2_AcknowledgeType_t) * D s1_hItems_of_string_t... D S 128A varying D template D s1_hItems_of_string1_t... D S 128A varying D template D s1_hItems_of_string2_t... D S 128A varying D template D s1_hItems_of_string3_t... D S 128A varying D template D s1_hItems_of_string4_t... D S 128A varying D template D s1_hItems_of_string5_t... D S 128A varying D template D s1_hItems_of_string6_t... D S 128A varying D template D s1_DataType1Type_t... D S 128A varying D template * D s1_MaterialInformationType_t... D DS template D qualified D ProcessingStatus... D likeds(s2_ProcessingStatusType_t) D ID 128A varying D MaterialLot likeds(s1_RpgArrayOfMaterialLot_t) D PublishedDate Z * * D s1_MaterialLotPropertyType_t... D DS template D qualified D Description likeds(s1_RpgArrayOfDescription3_t) D ID 128A varying D QAMaterialTestSpecificationID... D likeds(s1_RpgArrayOfQAMaterialTest... D SpecificationID1_t) D Value likeds(s1_RpgArrayOfValue1_t) * * D s1_MaterialLotType_t... D DS template D qualified D Action like(s2_ActionType_t) D ConfirmOption like(s2_ConfirmOptionType_t) D MessageType like(s2_MessageTypeType_t) D ProcessingStatus... D likeds(s2_ProcessingStatusType_t) D Description likeds(s1_RpgArrayOfDescription2_t) D ID 128A varying D MaterialDefinitionID... D 128A varying D MaterialLotProperty... D likeds(s1_RpgArrayOfMaterialLotPro... D perty_t) D Quantity likeds(s1_RpgArrayOfQuantity_t) D StorageLocation... D 128A varying * * D s1_QuantityType_t... D DS template D qualified D DataType like(s1_DataType1Type_t) D Key 128A varying D QuantityString... D 128A varying D UnitOfMeasure 128A varying * * D s1_RpgArrayOfDescription2_t... D DS template D qualified D hItems like(wsdl_hArray_t) * Type of hItems is: s1_hItems_of_string6_t * * D s1_RpgArrayOfDescription3_t... D DS template D qualified D hItems like(wsdl_hArray_t) * Type of hItems is: s1_hItems_of_string4_t * * D s1_RpgArrayOfMaterialLot_t... D DS template D qualified D hItems like(wsdl_hArray_t) * Type of hItems is: s1_MaterialLotType_t * * D s1_RpgArrayOfMaterialLotProperty_t... D DS template D qualified D hItems like(wsdl_hArray_t) * Type of hItems is: s1_MaterialLotPropertyType_t * * D s1_RpgArrayOfQuantity_t... D DS template D qualified D hItems like(wsdl_hArray_t) * Type of hItems is: s1_QuantityType_t * * D s1_RpgArrayOfQAMaterialTestSpecificationID1_t... D DS template D qualified D hItems like(wsdl_hArray_t) * Type of hItems is: s1_hItems_of_string5_t * * D s1_RpgArrayOfValue1_t... D DS template D qualified D hItems like(wsdl_hArray_t) * Type of hItems is: s1_ValueType_t * * D s1_ValueType_t DS template D qualified D DataType like(s1_DataType1Type_t) D ValueString 128A varying * * Public prototypes * * Web service: Returns the endpoint of the Web service D MaterialInformationSoap_Port_getEndpoint... D PR 32767A varying D extproc('+ D MaterialInformationSoap+ D _Port_getEndpoint+ D ') * * Web service: Sets the endpoint of the Web service D MaterialInformationSoap_Port_setEndpoint... D PR D extproc('+ D MaterialInformationSoap+ D _Port_setEndpoint+ D ') D i_url 32767A const varying options(*varsize) * * Web service: Returns the host name of the Web Service endpoint D MaterialInformationSoap_Endpoint_getHost... D PR 32767A varying D extproc('+ D MaterialInformationSoap+ D _Endpoint_getHost+ D ') * * Web service: Sets the host name of the Web service endpoint D MaterialInformationSoap_Endpoint_setHost... D PR D extproc('+ D MaterialInformationSoap+ D _Endpoint_setHost+ D ') D i_url 32767A const varying options(*varsize) * * Web service: Returns the port of the Web Service endpoint D MaterialInformationSoap_Endpoint_getPort... D PR 10I 0 D extproc('+ D MaterialInformationSoap+ D _Endpoint_getPort+ D ') * * Web service: Sets the port of the Web service endpoint D MaterialInformationSoap_Endpoint_setPort... D PR D extproc('+ D MaterialInformationSoap+ D _Endpoint_setPort+ D ') D i_port 10I 0 const * * Web service: Sets the proxy server to use for the connection D MaterialInformationSoap_Port_setHttpProxy... D PR D extproc('+ D MaterialInformationSoap+ D _Port_setHttpProxy+ D ') D i_server 256A const D i_port 10I 0 const * * Web service: Returns the proxy server to use for the connection D MaterialInformationSoap_Port_getHttpProxy... D PR likeds(wsdl_proxy_t ) D extproc('+ D MaterialInformationSoap+ D _Port_getHttpProxy+ D ') * * Web service: Enables/disables the debug log of HTTP API D MaterialInformationSoap_Port_setHttpDebug... D PR D extproc('+ D MaterialInformationSoap+ D _Port_setHttpDebug+ D ') D i_status N const D i_fileName 500A const varying options(*nopass) * * Web service: Returns the HTTP API debug settings D MaterialInformationSoap_Port_getHttpDebug... D PR likeds(wsdl_httpDebug_t ) D extproc('+ D MaterialInformationSoap+ D _Port_getHttpDebug+ D ') * * Web service: Sets the CCSID used for POST data. D MaterialInformationSoap_Port_setPostCcsid... D PR D extproc('+ D MaterialInformationSoap+ D _Port_setPostCcsid+ D ') D i_post_ccsid 10I 0 const * * Web service: Returns the CCSID used for POST data. D MaterialInformationSoap_Port_getPostCcsid... D PR 10I 0 D extproc('+ D MaterialInformationSoap+ D _Port_getPostCcsid+ D ') * * Web service: Clears all error information D MaterialInformationSoap_Port_clearErrors... D PR D extproc('+ D MaterialInformationSoap+ D _Port_clearErrors+ D ') D io_errors likeds(wsdl_errors_t ) * * Web service: Sets error information D MaterialInformationSoap_Port_setErrors... D PR D extproc('+ D MaterialInformationSoap+ D _Port_setErrors+ D ') D i_errors const likeds(wsdl_errors_t ) * * Http: Returns cTrue in case of an error, else cFalse. D MaterialInformationSoap_Port_isError... D PR N D extproc('+ D MaterialInformationSoap+ D _Port_isError+ D ') * * Http: Returns the last HTTP error (code) that occurred. D MaterialInformationSoap_HttpError_getCode... D PR like(wsdl_http_ErrorNo_t ) D extproc('+ D MaterialInformationSoap+ D _HttpError_getCode+ D ') * * Http: Returns the last HTTP error (text) that occurred. D MaterialInformationSoap_HttpError_getText... D PR like(wsdl_http_ErrorText_t) D extproc('+ D MaterialInformationSoap+ D _HttpError_getText+ D ') * * Soap: Returns the last SOAP error (code) that occurred. D MaterialInformationSoap_SoapError_getCode... D PR like(wsdl_soap_faultcode_t ) D extproc('+ D MaterialInformationSoap+ D _SoapError_getCode+ D ') * * Soap: Returns the last SOAP error (text) that occurred. D MaterialInformationSoap_SoapError_getText... D PR like(wsdl_soap_faultstring_t) D extproc('+ D MaterialInformationSoap+ D _SoapError_getText+ D ') * * Soap: Returns the last XML error (code) that occurred. D MaterialInformationSoap_XmlError_getCode... D PR like(wsdl_xml_errorNo_t ) D extproc('+ D MaterialInformationSoap+ D _XmlError_getCode+ D ') * * Soap: Returns the last XML error (text) that occurred. D MaterialInformationSoap_XmlError_getText... D PR like(wsdl_xml_ErrorText_t ) D extproc('+ D MaterialInformationSoap+ D _XmlError_getText+ D ') * * Registers an user callback procedure, that is called whenever * a web service requires user authentification. D MaterialInformationSoap_Port_registerLoginCallback... D PR D extproc('+ D MaterialInformationSoap+ D _Port_registerLoginCallback+ D ') D i_pLoginProc * value procptr * * Returns *ON if a login procedures has been registered. D MaterialInformationSoap_Port_hasLoginCallback... D PR N D extproc('+ D MaterialInformationSoap+ D _Port_hasLoginCallback+ D ') * * Login to proxy server or web service. D MaterialInformationSoap_Port_login... D PR 10I 0 D extproc('+ D MaterialInformationSoap+ D _Port_login+ D ') D i_http_err 10I 0 value D i_numAttempts 10I 0 value * * Returns the name of the web service port. D MaterialInformationSoap_Port_getName... D PR 512A varying D extproc('+ D MaterialInformationSoap+ D _Port_getName+ D ') * * Returns the UUID of the web service port. D MaterialInformationSoap_Port_getUuid... D PR like(wsdl_uuid_t ) D extproc('+ D MaterialInformationSoap+ D _Port_getUuid+ D ') * * Adds an attachments to the list of attachments. D MaterialInformationSoap_Attachments_put... D PR D extproc('+ D MaterialInformationSoap+ D _Attachments_put+ D ') D i_attachmentID... D const like(wsdl_attachmentID_t ) D i_fileName const like(wsdl_path_t ) D i_uuid const like(wsdl_uuid_t ) D options(*nopass) * * Returns the file name of the attachment that is associated to * a given content ID. D MaterialInformationSoap_Attachments_get... D PR like(wsdl_path_t ) D extproc('+ D MaterialInformationSoap+ D _Attachments_get+ D ') D i_attachmentID... D const like(wsdl_attachmentID_t ) D i_uuid const like(wsdl_uuid_t ) D options(*nopass) * * Returns the file name of the attachment that is associated to * a given index. D MaterialInformationSoap_Attachments_getAtPos... D PR likeds(wsdl_attachment_t ) D extproc('+ D MaterialInformationSoap+ D _Attachments_getAtPos+ D ') D i_index 10I 0 const D i_uuid const like(wsdl_uuid_t ) D options(*nopass) * * Returns the number of attachments that were downloaded with the * last call to the web service. D MaterialInformationSoap_Attachments_getNumE... D PR 10I 0 D extproc('+ D MaterialInformationSoap+ D _Attachments_getNumE+ D ') D i_uuid const like(wsdl_uuid_t ) D options(*nopass) * * Removes all attachments from the list of attachments of this web service. D MaterialInformationSoap_Attachments_removeAll... D PR D extproc('+ D MaterialInformationSoap+ D _Attachments_removeAll+ D ') D i_uuid const like(wsdl_uuid_t ) D options(*nopass) * * Specifies the name of the folder where to put attachments in. D MaterialInformationSoap_Attachments_setFolder... D PR D extproc('+ D MaterialInformationSoap+ D _Attachments_setFolder+ D ') D i_folder const like(wsdl_pathLong_t ) * * Returns the name of the folder where attachments are stored. D MaterialInformationSoap_Attachments_getFolder... D PR like(wsdl_pathLong_t ) D extproc('+ D MaterialInformationSoap+ D _Attachments_getFolder+ D ') * * Initializes the memory manager. D MaterialInformationSoap_initializeMemoryManager... D PR like(wsdl_uuid_t ) D extproc('+ D MaterialInformationSoap+ D _initializeMemoryManager+ D ') D i_uuid const like(wsdl_uuid_t ) D options(*nopass: *omit) * * Frees all allocated memory blocks of all dynamic List objects. D MaterialInformationSoap_terminateMemoryManager... D PR D extproc('+ D MaterialInformationSoap+ D _terminateMemoryManager+ D ') D i_uuid const like(wsdl_uuid_t ) D options(*nopass: *omit) * /ENDIF /IF DEFINED(PROTOTYPE_VSEFACS) /EOF /ENDIF * --------------------------------------------------------------------- * * ------------------------------------ * Imported prototypes * ------------------------------------ CPY /COPY QBASICS1,PBASICS1 Tools/400 Runtime Library CPY /COPY QRPGLESRC,HTTPAPI_H HTTP-API Service Program * CPY /COPY QWSDL2RPG,PWSDL2R71 WSDL2RPG: HTTP Debug Log CPY /COPY QWSDL2RPG,PWSDL2R89 WSDL2RPG: List of Attachments * * ------------------------------------ * Internal prototypes * ------------------------------------ * D getEndpoint... D PR 32767A varying D extproc('+ D getEndpoint+ D ') * D setEndpoint... D PR D extproc('+ D setEndpoint+ D ') D i_url 32767A const varying options(*varsize) * * ------------------------------------ * Global fields & constants * ------------------------------------ * * Web service port name D cWEB_SERVICE_PORT_NAME... D C 'MaterialInformationSoap' * * UUID of the web service as generated by WSDL2RPG D cWEB_SERVICE_UUID... D C '400DE001E08C1960AEC00004AC12B572' * * Default and current attachment folder D cATTACHMENT_FOLDER... D C '/tmp/attachments/' * * Default POST data CCSID (1208 = UTF-8) D cPOST_DATA_CCSID... D C 1208 * * Web service endpoint as specified in the WSDL file. D cURL C 'http://vega-facts01/FactsWebService+ D s/MaterialInformation/MaterialInform+ D ation.asmx' * * Web service endpoint D g_url S 32767A varying inz(cURL) * * Proxy server to use D g_proxy DS likeds(wsdl_proxy_t ) inz * * HTTPAPI debug settings D g_httpDebug DS likeds(wsdl_httpDebug_t ) inz * * POST data CCSID (1208 = UTF-8) D g_post_ccsid... D S 10I 0 inz(cPOST_DATA_CCSID) * D g_attachmentFolder... D S like(wsdl_pathLong_t ) D inz(cATTACHMENT_FOLDER) * * Web service error information D g_errors DS likeds(wsdl_errors_t ) inz * * User callback to supply login information * Returns WSDL_SUCCESS if successful, WSDL_ERROR upon error. D g_getLoginDataImpl... D S * procptr inz * * User callback to supply login information * Returns WSDL_SUCCESS if successful, WSDL_ERROR upon error. * * Parameter description: * i_authType Authentication type: * WSDL_AUTH_TYPE_HTTP - HTTP server. * WSDL_AUTH_TYPE_PROXY - Proxy server. * i_realm Authentication realm. * i_numAttempts Number of login attempts. * o_user UserName to use. * o_password Password to use. * D MaterialInformationSoap_supplyLoginData... D PR 10I 0 D extproc('+ D MaterialInformationSoap+ D _supplyLoginData+ D ') D i_authType 14A const varying D i_realm 126A const varying D i_numAttempts 10I 0 const D o_user 50A varying D o_password 50A varying * * ===================================================================== * Web service: Returns the endpoint of the Web service * ===================================================================== P MaterialInformationSoap_Port_getEndpoint... P B export * D MaterialInformationSoap_Port_getEndpoint... D PI 32767A varying * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free return getEndpoint(); /end-free * P MaterialInformationSoap_Port_getEndpoint... P E * * ===================================================================== * Web service: Sets the endpoint of the Web service * ===================================================================== P MaterialInformationSoap_Port_setEndpoint... P B export * D MaterialInformationSoap_Port_setEndpoint... D PI D i_url 32767A const varying options(*varsize) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free setEndpoint(%subst(i_url: 1: %len(i_url))); return; /end-free * P MaterialInformationSoap_Port_setEndpoint... P E * * ===================================================================== * Web service: Returns the host name of the Web Service endpoint * ===================================================================== P MaterialInformationSoap_Endpoint_getHost... P B export * D MaterialInformationSoap_Endpoint_getHost... D PI 32767A varying * D tmpUrl S like(url_t ) inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free tmpUrl = URL_new(getEndpoint()); return URL_getHost(tmpUrl); /end-free * P MaterialInformationSoap_Endpoint_getHost... P E * * ===================================================================== * Web service: Sets the host name of the Web service endpoint * ===================================================================== P MaterialInformationSoap_Endpoint_setHost... P B export * D MaterialInformationSoap_Endpoint_setHost... D PI D i_host 32767A const varying options(*varsize) * D tmpUrl S like(url_t ) inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free tmpUrl = URL_new(getEndpoint()); URL_setHost(tmpUrl: %subst(i_host: 1: %len(i_host))); setEndpoint(URL_toString(tmpUrl)); return; /end-free * P MaterialInformationSoap_Endpoint_setHost... P E * * ===================================================================== * Web service: Returns the port of the Web Service endpoint * ===================================================================== P MaterialInformationSoap_Endpoint_getPort... P B export * D MaterialInformationSoap_Endpoint_getPort... D PI 10I 0 * D tmpUrl S like(url_t ) inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free tmpUrl = URL_new(getEndpoint()); return URL_getPort(tmpUrl); /end-free * P MaterialInformationSoap_Endpoint_getPort... P E * * ===================================================================== * Web service: Sets the port of the Web service endpoint * ===================================================================== P MaterialInformationSoap_Endpoint_setPort... P B export * D MaterialInformationSoap_Endpoint_setPort... D PI D i_port 10I 0 const * D tmpUrl S like(url_t ) inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free tmpUrl = URL_new(getEndpoint()); URL_setPort(tmpUrl: i_port); setEndpoint(URL_toString(tmpUrl)); return; /end-free * P MaterialInformationSoap_Endpoint_setPort... P E * * ===================================================================== * Web service: Sets the proxy server to use for the connection * ===================================================================== P MaterialInformationSoap_Port_setHttpProxy... P B export * D MaterialInformationSoap_Port_setHttpProxy... D PI D i_server 256A const D i_port 10I 0 const * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free g_proxy.server = i_server; B01 if (g_proxy.server = ''); g_proxy.port = 0; X01 else; g_proxy.port = i_port; E01 endif; return; /end-free * P MaterialInformationSoap_Port_setHttpProxy... P E * * ===================================================================== * Web service: Returns the proxy server to use for the connection * ===================================================================== P MaterialInformationSoap_Port_getHttpProxy... P B export * D MaterialInformationSoap_Port_getHttpProxy... D PI likeds(wsdl_proxy_t ) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free return g_proxy; /end-free * P MaterialInformationSoap_Port_getHttpProxy... P E * * ===================================================================== * Web service: Enables/disables the debug log of HTTP API * ===================================================================== P MaterialInformationSoap_Port_setHttpDebug... P B export * D MaterialInformationSoap_Port_setHttpDebug... D PI D i_status N const D i_fileName 500A const varying options(*nopass) * * Parameter positions D p_fileName C 2 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free g_httpDebug.status = i_status; B01 if (%parms() >= p_fileName); g_httpDebug.fileName = i_fileName; X01 else; g_httpDebug.fileName = HTTP_API_DEFAULT_LOG_FILE; E01 endif; B01 if (i_status); http_DebugLog_open(g_httpDebug.fileName); X01 else; http_DebugLog_close(); E01 endif; return; /end-free * P MaterialInformationSoap_Port_setHttpDebug... P E * * ===================================================================== * Web service: Returns the HTTP API debug settings * ===================================================================== P MaterialInformationSoap_Port_getHttpDebug... P B export * D MaterialInformationSoap_Port_getHttpDebug... D PI likeds(wsdl_httpDebug_t ) * * Parameter positions D p_fileName C 2 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free B01 if (g_httpDebug.fileName = ''); g_httpDebug.fileName = HTTP_API_DEFAULT_LOG_FILE; E01 endif; return g_httpDebug; /end-free * P MaterialInformationSoap_Port_getHttpDebug... P E * * ===================================================================== * Web service: Sets the CCSID used for POST data. * ===================================================================== P MaterialInformationSoap_Port_setPostCcsid... P B export * D MaterialInformationSoap_Port_setPostCcsid... D PI D i_post_ccsid 10I 0 const * * Parameter positions D p_fileName C 2 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free g_post_ccsid = i_post_ccsid; return; /end-free * P MaterialInformationSoap_Port_setPostCcsid... P E * * ===================================================================== * Web service: Returns the CCSID used for POST * ===================================================================== P MaterialInformationSoap_Port_getPostCcsid... P B export * D MaterialInformationSoap_Port_getPostCcsid... D PI 10I 0 * * Parameter positions D p_fileName C 2 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free return g_post_ccsid; /end-free * P MaterialInformationSoap_Port_getPostCcsid... P E * * ===================================================================== * Web service: Clears all error information. * ===================================================================== P MaterialInformationSoap_Port_clearErrors... P B export * D MaterialInformationSoap_Port_clearErrors... D PI D io_errors likeds(wsdl_errors_t ) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free clear g_errors; g_errors.errType = WSDL_HTTP_SUCCESS; io_errors = g_errors; return; /end-free * P MaterialInformationSoap_Port_clearErrors... P E * * ===================================================================== * Web service: Sets error information of last service call. * ===================================================================== P MaterialInformationSoap_Port_setErrors... P B export * D MaterialInformationSoap_Port_setErrors... D PI D i_errors const likeds(wsdl_errors_t ) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free g_errors = i_errors; return; /end-free * P MaterialInformationSoap_Port_setErrors... P E * * ===================================================================== * Http: Returns the last HTTP error (code) that occurred. * ===================================================================== P MaterialInformationSoap_Port_isError... P B export * D MaterialInformationSoap_Port_isError... D PI N * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free B01 if (g_errors.errType = WSDL_HTTP_SUCCESS); return cFalse; X01 else; return cTrue; E01 endif; /end-free * P MaterialInformationSoap_Port_isError... P E * * ===================================================================== * Http: Returns the last HTTP error (code) that occurred. * ===================================================================== P MaterialInformationSoap_HttpError_getCode... P B export * D MaterialInformationSoap_HttpError_getCode... D PI like(wsdl_http_ErrorNo_t ) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free return g_errors.httpError.no; /end-free * P MaterialInformationSoap_HttpError_getCode... P E * * ===================================================================== * Http: Returns the last HTTP error (text) that occurred. * ===================================================================== P MaterialInformationSoap_HttpError_getText... P B export * D MaterialInformationSoap_HttpError_getText... D PI like(wsdl_http_ErrorText_t) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free return g_errors.httpError.text; /end-free * P MaterialInformationSoap_HttpError_getText... P E * * ===================================================================== * Soap: Returns the last SOAP error (code) that occurred. * ===================================================================== P MaterialInformationSoap_SoapError_getCode... P B export * D MaterialInformationSoap_SoapError_getCode... D PI like(wsdl_soap_faultcode_t ) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free return g_errors.soapFault.code; /end-free * P MaterialInformationSoap_SoapError_getCode... P E * * ===================================================================== * Soap: Returns the last SOAP error (text) that occurred. * ===================================================================== P MaterialInformationSoap_SoapError_getText... P B export * D MaterialInformationSoap_SoapError_getText... D PI like(wsdl_soap_faultstring_t) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free return g_errors.soapFault.string; /end-free * P MaterialInformationSoap_SoapError_getText... P E * * ===================================================================== * XML: Returns the last XML error (code) that occurred. * ===================================================================== P MaterialInformationSoap_XmlError_getCode... P B export * D MaterialInformationSoap_XmlError_getCode... D PI like(wsdl_xml_ErrorNo_t ) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free return g_errors.xmlError.code; /end-free * P MaterialInformationSoap_XmlError_getCode... P E * * ===================================================================== * XML: Returns the last XML error (text) that occurred. * ===================================================================== P MaterialInformationSoap_XmlError_getText... P B export * D MaterialInformationSoap_XmlError_getText... D PI like(wsdl_xml_ErrorText_t ) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free return g_errors.xmlError.text; /end-free * P MaterialInformationSoap_XmlError_getText... P E * * ===================================================================== * Registers an user callback procedure, that is called whenever * a web service requires user authentification. * ===================================================================== P MaterialInformationSoap_Port_registerLoginCallback... P B export * D MaterialInformationSoap_Port_registerLoginCallback... D PI D D i_pLoginProc * value procptr * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free g_getLoginDataImpl = i_pLoginProc; return; /end-free * P MaterialInformationSoap_Port_registerLoginCallback... P E * * ===================================================================== * Returns *ON if a login procedures has been registered. * ===================================================================== P MaterialInformationSoap_Port_hasLoginCallback... P B export * D MaterialInformationSoap_Port_hasLoginCallback... D PI N * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free B01 if (g_getLoginDataImpl <> *NULL); return *ON; E01 endif; return *OFF; /end-free * P MaterialInformationSoap_Port_hasLoginCallback... P E * * ===================================================================== * Login to proxy server or web service. * ===================================================================== P MaterialInformationSoap_Port_login... P B export * D MaterialInformationSoap_Port_login... D PI 10I 0 D i_http_err 10I 0 value D i_numAttempts 10I 0 value * * Return value D rc S 10I 0 inz * * Helper fields D basic S N inz D digest S N inz D realm S 124A inz D authType S 14A inz varying D userid S 50A inz varying D password S 50A inz varying * D getLoginDataImpl... D PR 10I 0 D extproc(g_getLoginDataImpl) D i_authType 14A const varying D i_realm 126A const varying D i_numAttempts 10I 0 const D o_user 50A varying D o_password 50A varying * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free B01 if (i_http_err = HTTP_NDAUTH); http_getauth(basic: digest: realm); authType = WSDL_AUTH_TYPE_HTTP; X01 else; http_proxy_getauth(basic: realm); authType = WSDL_AUTH_TYPE_PROXY; E01 endif; rc = getLoginDataImpl(authType: realm : i_numAttempts: userid: password); B01 if (rc <> 1); userid = ''; password = ''; return rc; E01 endif; B01 if (i_http_err = HTTP_NDAUTH); B02 if (digest); http_setAuth(HTTP_AUTH_MD5_DIGEST : userid: password); X02 else; http_setAuth(HTTP_AUTH_BASIC : userid: password); E02 endif; X01 else; B02 if (digest); http_proxy_setAuth(HTTP_AUTH_MD5_DIGEST : userid: password); X02 else; http_proxy_setAuth(HTTP_AUTH_BASIC : userid: password); E02 endif; E01 endif; userid = ''; password = ''; return rc; /end-free * P MaterialInformationSoap_Port_login... P E * * ===================================================================== * Returns the name of the web service port. * ===================================================================== P MaterialInformationSoap_Port_getName... P B export * D MaterialInformationSoap_Port_getName... D PI like(wsdl_portName_t ) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free return cWEB_SERVICE_PORT_NAME; /end-free * P MaterialInformationSoap_Port_getName... P E * * ===================================================================== * Returns the UUID of the web service port. * ===================================================================== P MaterialInformationSoap_Port_getUuid... P B export * D MaterialInformationSoap_Port_getUuid... D PI like(wsdl_uuid_t ) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free return cWEB_SERVICE_UUID; /end-free * P MaterialInformationSoap_Port_getUuid... P E * * ===================================================================== * Adds an attachments to the list of attachments. * ===================================================================== P MaterialInformationSoap_Attachments_put... P B export * D MaterialInformationSoap_Attachments_put... D PI D i_attachmentID... D const like(wsdl_attachmentID_t ) D i_fileName const like(wsdl_path_t ) D i_uuid const like(wsdl_uuid_t ) D options(*nopass) * D p_uuid C 3 * D uuid S like(i_uuid ) inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free B01 if (%parms() >= p_uuid); uuid = i_uuid; X01 else; uuid = MaterialInformationSoap_Port_getUuid(); E01 endif; Attachments_put(Attachments_theInstance() : uuid : i_attachmentID : i_fileName); return; /end-free * P MaterialInformationSoap_Attachments_put... P E * * ===================================================================== * Returns the file name of the attachment that is associated to * a given content ID. * ===================================================================== P MaterialInformationSoap_Attachments_get... P B export * D MaterialInformationSoap_Attachments_get... D PI like(wsdl_path_t ) D i_attachmentID... D const like(wsdl_attachmentID_t ) D i_uuid const like(wsdl_uuid_t ) D options(*nopass) * D p_uuid C 2 * D uuid S like(i_uuid ) inz D fileName S like(wsdl_path_t ) inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free B01 if (%parms() >= p_uuid); uuid = i_uuid; X01 else; uuid = MaterialInformationSoap_Port_getUuid(); E01 endif; fileName = Attachments_get(Attachments_theInstance() : uuid : i_attachmentID); return fileName; /end-free * P MaterialInformationSoap_Attachments_get... P E * * ===================================================================== * Returns the file name of the attachment that is associated to * a given index. * ===================================================================== P MaterialInformationSoap_Attachments_getAtPos... P B export * D MaterialInformationSoap_Attachments_getAtPos... D PI likeds(wsdl_attachment_t ) D i_index 10I 0 const D i_uuid const like(wsdl_uuid_t ) D options(*nopass) * D p_uuid C 2 * D uuid S like(i_uuid ) inz D attachment DS likeds(wsdl_attachment_t ) inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free B01 if (%parms() >= p_uuid); uuid = i_uuid; X01 else; uuid = MaterialInformationSoap_Port_getUuid(); E01 endif; attachment = Attachments_getAtPos(Attachments_theInstance() : uuid : i_index); return attachment; /end-free * P MaterialInformationSoap_Attachments_getAtPos... P E * * ===================================================================== * Returns the number of attachments that were downloaded with * the last call of the web service. * ===================================================================== P MaterialInformationSoap_Attachments_getNumE... P B export * D MaterialInformationSoap_Attachments_getNumE... D PI 10I 0 D i_uuid const like(wsdl_uuid_t ) D options(*nopass) * D p_uuid C 1 * D uuid S like(i_uuid ) inz D numE S 10I 0 inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free B01 if (%parms() >= p_uuid); uuid = i_uuid; X01 else; uuid = MaterialInformationSoap_Port_getUuid(); E01 endif; numE = Attachments_getNumAttachments( Attachments_theInstance(): uuid); return numE; /end-free * P MaterialInformationSoap_Attachments_getNumE... P E * * ===================================================================== * Removes all attachments from the list of attachments of * this web service. * ===================================================================== P MaterialInformationSoap_Attachments_removeAll... P B export * D MaterialInformationSoap_Attachments_removeAll... D PI D i_uuid const like(wsdl_uuid_t ) D options(*nopass) * D p_uuid C 1 * D uuid S like(i_uuid ) inz * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free B01 if (%parms() >= p_uuid); uuid = i_uuid; X01 else; uuid = MaterialInformationSoap_Port_getUuid(); E01 endif; Attachments_removeAll(Attachments_theInstance(): uuid); return; /end-free * P MaterialInformationSoap_Attachments_removeAll... P E * * ===================================================================== * Specifies the name of the folder where to put attachments in. * ===================================================================== P MaterialInformationSoap_Attachments_setFolder... P B export * D MaterialInformationSoap_Attachments_setFolder... D PI D i_folder const like(wsdl_pathLong_t ) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free g_attachmentFolder = i_folder; g_attachmentFolder = %trimR(%xlate('\': '/': g_attachmentFolder)); B01 if (not f_endsWith('/': g_attachmentFolder)); g_attachmentFolder = g_attachmentFolder + '/'; E01 endif; return; /end-free * P MaterialInformationSoap_Attachments_setFolder... P E * * ===================================================================== * Returns the name of the folder where attachments are stored. * ===================================================================== P MaterialInformationSoap_Attachments_getFolder... P B export * D MaterialInformationSoap_Attachments_getFolder... D PI like(wsdl_pathLong_t ) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free return g_attachmentFolder; /end-free * P MaterialInformationSoap_Attachments_getFolder... P E * * ===================================================================== * Initializes the memeory manager. * ===================================================================== P MaterialInformationSoap_initializeMemoryManager... P B export * D MaterialInformationSoap_initializeMemoryManager... D PI like(wsdl_uuid_t ) D i_uuid const like(wsdl_uuid_t ) D options(*nopass: *omit) * * Parameter positions D p_uuid C 1 * * Fields for optional parameters D uuid S like(i_uuid ) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free B01 if (%parms() >= p_uuid and %addr(i_uuid) <> *NULL); uuid = i_uuid; X01 else; uuid = MaterialInformationSoap_Port_getUuid(); E01 endif; MemoryManager_attachService(uuid); return uuid; /end-free * P MaterialInformationSoap_initializeMemoryManager... P E * * ===================================================================== * Frees all allocated memory blocks of all dynamic arrays. * ===================================================================== P MaterialInformationSoap_terminateMemoryManager... P B export * D MaterialInformationSoap_terminateMemoryManager... D PI D i_uuid const like(wsdl_uuid_t ) D options(*nopass: *omit) * * Parameter positions D p_uuid C 1 * * Fields for optional parameters D uuid S like(i_uuid ) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free B01 if (%parms() >= p_uuid and %addr(i_uuid) <> *NULL); uuid = i_uuid; X01 else; uuid = MaterialInformationSoap_Port_getUuid(); E01 endif; // Terminate MemoryManager MemoryManager_detachService(uuid); return; /end-free * P MaterialInformationSoap_terminateMemoryManager... P E * * ===================================================================== * Internal procedure to get the endpoint. * ===================================================================== P getEndpoint... P B * D getEndpoint... D PI 32767A varying * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free return g_url; /end-free * P getEndpoint... P E * * ===================================================================== * Internal procedure to set the endpoint. * ===================================================================== P setEndpoint... P B * D setEndpoint... D PI D i_url 32767A const varying options(*varsize) * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /free g_url = %subst(i_url: 1: %len(i_url)); /end-free * P setEndpoint... P E *
Attachment:
MaterialInformation.WSDL
Description: MaterialInformation.WSDL
----------------------------------------------------------------------- This is the FTPAPI mailing list. To unsubscribe, please go to: http://www.scottklement.com/mailman/listinfo/ftpapi -----------------------------------------------------------------------