Hi Jon, let me show you a 10 second's build program that deliveres some output in different flavours based on a file, the service- program, and the output parameter passed: http://yourserver/pxsvxr.pgm?func=getRows&output=html&search=text&sort =xrfldd regards henrik Jon Paris <jon.paris@xxxxxxxxxxxxxx> Sent by: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx 07-07-2009 16:48 Please respond to HTTPAPI and FTPAPI Projects <ftpapi@xxxxxxxxxxxxxxxxxxxxxx> To HTTPAPI and FTPAPI Projects <ftpapi@xxxxxxxxxxxxxxxxxxxxxx> cc Subject Re: XML Writer Service program That looks _really_ interesting Nicolas. I look forward to seeing what comes out of this. Jon Paris www.Partner400.com www.SystemiDeveloper.com On 7-Jul-09, at 10:24 AM, hr@xxxxxxxxxxxx wrote: > > Hi, > enclosed is a service program that does the trick; > Sample code > -------------------------------------------------------- > clrSrvPgm(); > // setGlobalTab(*off); // compress the file > // setGlonalNL(*off); // by omitting Tab's and CRLF > // if you wish to send it out over HTTP > setContent('text/xml'); > echo('# This is a generated xml-file'); > echo(''); > xmlNode('xml'); > xmlNode('header':'custNumber='+%char(cust)); > xmlNode('name':'':cuname); // "Jon & Susan" > xmlNode('adress':'':cuadrs); > select; > when country = 'dk'; > xmlNode('zip':'list=dk':%char(cuzip)); > when country = 'usa'; > xmlNode('zip':'list=us':%char(cuzip)); > endsl; > xmlEndNode(); > xmlEndNode(); > select; > when output = 'file'; // Output to File > echoToStmf('/testxml.xml':1208); // most XML converters likes > UTF-8 > when output = 'http'; // Output to HTTP buffer > echoFini(); > endsl; > Result: > --------------------------------------------------------- > Content-type: text/xml > # This is a generated xml-file > <xml> > <header custNumber=123456> > <name>Jon & Susan</name> > <adress>Stampedammen</adress> > <zip list=dk>1234</zip> > </header> > </xml> > This code is done by a CGIDEV2 service extension program that > handles not only the single node's but also the tree, so there > is no need to insert tabs or to remember parent nodes when > ending them with xmlEndNode() and it eliminates spelling > errors between start and end nodes. > It also automatically handles the special character incoding > of strings in the XML. > And there is no need for CGIDEV2 templates wich does it far > easier to include/exclude elements by just using inline tests. > Note: > The enclosed basic service program is part of a larger WEB 2.0 > (ext JS) project that will be released later this year and it > is build on top of a modified CGIDEV2 (Scott's CCSID support > modification for Unicode CCSID). > Regards > Henrik > > Nicolas Machado <nicolas.machado@xxxxxxxxxxxxx> > Sent by: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx > > 06-07-2009 16:34 > > Please respond to > HTTPAPI and FTPAPI Projects <ftpapi@xxxxxxxxxxxxxxxxxxxxxx> > > To > > HTTPAPI and FTPAPI Projects <ftpapi@xxxxxxxxxxxxxxxxxxxxxx> > > cc > > > Subject > > XML Writer Service program > > Hi, > I'm starting a project that need to write xml files. > I know that there is no mora "rocket science" that wrinting to a > stream > file in teh IFS. > But I'm wondering is someone has developed something like: > xml = pCreateXmlObject(); > pWriteStartElement(xml : 'Invoice') ; > pWriteTag(xml : 'InvNro' : $InvoiceNumber ) ; > pWriteEndElement(xml) > To for example create this xml > <Invoice> > <InvNr>some value</InvNr> > </Invoice> > If anyone has something , please let me know. > -- > .::. > Nicolas Machado > Metodo Argentina S.A. > _____________________ > Tel: 02262 527431 > Necochea, Buenos Aires. > > ---------------------------------------------------------------------- > - > This is the FTPAPI mailing list. To unsubscribe, please go to: > http://www.scottklement.com/mailman/listinfo/ftpapi > > ---------------------------------------------------------------------- > - > < > pxsrvcgi > .txt > > > ---------------------------------------------------------------------- - > 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 ---------------------------------------------------------------------- -
Attachment:
pxsvxr_result.json
Description: Binary data
ZDEXTP SY 50 A 0 Ext Panel Text (DDpanelText) Ext Panel Text alfa 1 Ext Panel Text (DDpanelText) 300 left Ext Panel Text (DDpanelText) 400 A D 5 ZDHLPA SY 3 A 0 Help Text Area Help Text Area alfa 1 Help Text Area 84 center Help Text Area 24 A D 2 ZDHLPI SY 10 A 0 Help Text Id. Help Text Id. alfa 1 Help Text Id. 78 left Help Text Id. 80 A D 1 ZDHLPL SY 3 A 0 Help Text Language Help Text Lang alfa 1 Help Text Language 108 center Help Text Language 24 A D 1 ZDHLPX SY 70 A 0 Help Text Line Help Text Line alfa 1 Help Text Line 420 left Help Text Line 560 A D 1 ZDHLPN SY 6 S 0 Help Text Line No. Help Text Line No. numeric 1 Help Text Line No. 108 right Help Text Line No. 48 A D 1 ZDHLPT SY 3 A 0 Help Text Type Help Text Type alfa 1 Help Text Type 84 center Help Text Type 24 A D 1 ZDTEXT SY 76 A 0 Linie Tekst Tekst alfa 1 Linie Tekst 456 left Linie Tekst 608 A D 3 ZDXMTX SY 70 A 0 Menu Text Menu Text alfa 1 Menu Text 420 left Menu Text 560 A D 2 ZDCMSG SY 132 A 0 Message Text Message Text alfa 1 Message Text 792 left Message Text 1056 A D 9 ZDMSGT SY 78 A 0 Message Text Message Text alfa 1 Message Text 468 left Message Text 624 A D 2 XBXBID SY 10 A 0 Text Definitions Id. Text definition id alfa 1 Text Definitions Id. 120 left Text Definitions Id. 80 A D 1 TMTMID SY 10 A 0 Text Definitions Id. Text definition id alfa 1 Text Definitions Id. 120 left Text Definitions Id. 80 A D 2 ZDWCGT SY 10 A 0 Web Cgi-Text Web Cgi Text alfa 1 Web Cgi-Text 72 left Web Cgi-Text 80 A D 3
Attachment:
pxsvxr_result.xml
Description: Binary data
*===================================================================== * Project : powerEXT® * Title : DB2 Remote Procedure for Table XRREGTST * Field Reference * Build : 2009-07-07-20.02.03.982496 * * Copyright © HR Software Development, Denmark * Author : Henrik Rützou * License : GNU GPL license v3 * Website : powerext.com *===================================================================== * powerEXT General H-spec's /copy qsrc,pxsrvhdrcc * powerEXT Service Program Connector /copy qsrc,pxsrvcgicc * General Definitions d func s 10 d output s 10 * General Sql Definitions d sqlDs ds d sqlCmd 8192 varying d sqlCmdCount 8192 varying d sqlSelect 4096 varying d sqlFrom 256 varying d sqlWhere 4096 varying d sqlSearch 256 varying d sqlOrder 256 varying d sqlSortField 20 varying d sqlSortDir 4 varying d sqlFor 4096 varying d sqlCount 15 0 d sqlRow 10i 0 d sqlRows 10i 0 d sqlStart 10i 0 d sqlError 5 * Sql Variables and Definitions d rrn s 10i 0 d rec e ds extName(XRREGTST) /free clearSrvPgm(); // setGlobalTab(*off); // setGlobalNL(*off); clear sqlDs; // process function func = getExtVar('func'); output = getExtVar('output'); select; when func = 'inzRec'; exsr inzRec; when func = 'getRec'; exsr getRec; when func = 'addRec'; when func = 'updRec'; exsr updRec; when func = 'delRec'; exsr delRec; when func = 'getRows'; exsr getRows; other; exsr getRows; endsl; echoFini(); return; /end-free *===================================================================== * initialize Record *===================================================================== /free begsr inzRec; rrn = 0; clear rec; select; when output = 'xml'; exsr xmlStart; exsr xmlRow; exsr xmlEnd; when output = 'html'; exsr htmlStart; exsr htmlRow; exsr htmlEnd; other; exsr jsonStart; exsr jsonRow; exsr jsonEnd; endsl; endsr; /end-free *===================================================================== * get Record *===================================================================== /free begsr getRec; // initiate SQL fields rrn = getExtVarNum('rrn'); sqlStart = 1; sqlRows = 1; sqlSelect = 'select RRN(XRREGTST) as RRN' // powerEXT generated source +',XRXRID' +',XRXAID' +',XRFLDR' +',XRFLDL' +',XRFLDT' +',XRFLDP' +',XRFLDE' +',XRFLDW' +',XRFLDF' +',XRFLDD' +',XRFLD1' +',XRFLD2' +',XRFLD3' +',XRPNLD' +',XREXTT' +',XREXTD' +',XREXTH' +',XREXTW' +',XREXTE' +',XREXTA' +',XREXTP' +',XREXTQ' +',XREXTX' +',XREXTV' +',XRRCST' +',XRRCDC' +',XRRCUD' ; sqlFrom = 'from XRREGTST' ; sqlWhere = 'where ' +'rrn(XRREGTST) = ' + %char(rrn) ; sqlFor = 'for read only' ; select; when output = 'xml'; exsr xmlStart; when output = 'html'; exsr htmlStart; other; exsr sqlCountRow; exsr jsonStart; endsl; exsr sqlProcessRows; select; when output = 'xml'; exsr xmlEnd; when output = 'html'; exsr htmlEnd; other; exsr jsonEnd; endsl; if sqlerror <> '00000'; setcontent(); echo('{success:false, errors:[{msg:"Record not found,' + 'sqlstt: ' + sqlerror + '"}]}'); endif; endsr; /end-free *===================================================================== * update Record *===================================================================== /free begsr updRec; // initiate SQL fields rrn = getExtVarNum('rrn'); clear rec; sqlSelect = 'select RRN(XRREGTST) as RRN' // powerEXT generated source +',XRXRID' +',XRXAID' +',XRFLDR' +',XRFLDL' +',XRFLDT' +',XRFLDP' +',XRFLDE' +',XRFLDW' +',XRFLDF' +',XRFLDD' +',XRFLD1' +',XRFLD2' +',XRFLD3' +',XRPNLD' +',XREXTT' +',XREXTD' +',XREXTH' +',XREXTW' +',XREXTE' +',XREXTA' +',XREXTP' +',XREXTQ' +',XREXTX' +',XREXTV' +',XRRCST' +',XRRCDC' +',XRRCUD' ; sqlFrom = 'from XRREGTST' ; sqlWhere = 'where ' +'rrn(XRREGTST) = ' + %char(rrn) ; sqlFor = 'for read only' ; exsr sqlProcessRows; if sqlerror <> '00000'; setcontent(); echo('{success:false, errors:[{msg:"Record not found,' + 'sqlstt: ' + sqlerror + '"}]}'); leavesr; endif; // powerEXT generated source XRXRID = getExtVar('XRXRID':XRXRID); XRXAID = getExtVar('XRXAID':XRXAID); XRFLDR = getExtVar('XRFLDR':XRFLDR); XRFLDL = getExtVarNum('XRFLDL'); XRFLDT = getExtVar('XRFLDT':XRFLDT); XRFLDP = getExtVarNum('XRFLDP'); XRFLDE = getExtVar('XRFLDE':XRFLDE); XRFLDW = getExtVar('XRFLDW':XRFLDW); XRFLDF = getExtVar('XRFLDF':XRFLDF); XRFLDD = getExtVar('XRFLDD':XRFLDD); XRFLD1 = getExtVar('XRFLD1':XRFLD1); XRFLD2 = getExtVar('XRFLD2':XRFLD2); XRFLD3 = getExtVar('XRFLD3':XRFLD3); XRPNLD = getExtVar('XRPNLD':XRPNLD); XREXTT = getExtVar('XREXTT':XREXTT); XREXTD = getExtVar('XREXTD':XREXTD); XREXTH = getExtVar('XREXTH':XREXTH); XREXTW = getExtVarNum('XREXTW'); XREXTE = getExtVar('XREXTE':XREXTE); XREXTA = getExtVar('XREXTA':XREXTA); XREXTP = getExtVar('XREXTP':XREXTP); XREXTQ = getExtVarNum('XREXTQ'); XREXTX = getExtVar('XREXTX':XREXTX); XREXTV = getExtVar('XREXTV':XREXTV); XRRCST = getExtVar('XRRCST':XRRCST); XRRCDC = getExtVar('XRRCDC':XRRCDC); XRRCUD = getExtVarNum('XRRCUD'); exec sql update XRREGTST set // powerEXT generated source XRXRID = :XRXRID ,XRXAID = :XRXAID ,XRFLDR = :XRFLDR ,XRFLDL = :XRFLDL ,XRFLDT = :XRFLDT ,XRFLDP = :XRFLDP ,XRFLDE = :XRFLDE ,XRFLDW = :XRFLDW ,XRFLDF = :XRFLDF ,XRFLDD = :XRFLDD ,XRFLD1 = :XRFLD1 ,XRFLD2 = :XRFLD2 ,XRFLD3 = :XRFLD3 ,XRPNLD = :XRPNLD ,XREXTT = :XREXTT ,XREXTD = :XREXTD ,XREXTH = :XREXTH ,XREXTW = :XREXTW ,XREXTE = :XREXTE ,XREXTA = :XREXTA ,XREXTP = :XREXTP ,XREXTQ = :XREXTQ ,XREXTX = :XREXTX ,XREXTV = :XREXTV ,XRRCST = :XRRCST ,XRRCDC = :XRRCDC ,XRRCUD = :XRRCUD where rrn(XRREGTST) = :rrn ; if sqlstt <> '00000'; setcontent(); echo('{success:false, errors:[{msg:"Record not found,' + 'sqlstt: ' + sqlstt + '"}]}'); leavesr; endif; setcontent(); echo('{success:true}'); endsr; /end-free *===================================================================== * delete Record *===================================================================== /free begsr delRec; // initiate SQL fields rrn = getExtVarNum('rrn'); exec sql delete from XRREGTST where rrn(XRREGTST) = :rrn ; if sqlstt <> '00000'; setcontent(); echo('{success:false, errors:[{msg:"Record not found,' + 'sqlstt: ' + sqlstt + '"}]}'); leavesr; endif; setcontent(); echo('{success:true}'); endsr; /end-free *===================================================================== * Process Rows * * Define SQL from standard ExtJS grid parameters: * 'sort' : sqlSortField : Selected Sortfield * 'dir' : sqlSortDir : ASC/DESC * 'start' : sqlStart : Row Number To Start With (java 0=rpgle 1) * 'limit' : sqlRows : Number Of Rows On Page, 0 = NOMAX * 'search': sqlSearch : Generic Search Criteria *===================================================================== /free begsr getRows; // initiate SQL fields sqlSortField = getExtVar('sort'); sqlSortDir = getExtVar('dir'); sqlStart = getExtVarNum('start') + 1; sqlRows = getExtVarNum('limit'); sqlSearch = getExtVar('search'); // ************************************* sqlRows = 25; // ************************************* sqlSelect = 'select RRN(XRREGTST) as RRN' // powerEXT generated source +',XRXRID' +',XRXAID' +',XRFLDR' +',XRFLDL' +',XRFLDT' +',XRFLDP' +',XRFLDE' +',XRFLDW' +',XRFLDF' +',XRFLDD' +',XRFLD1' +',XRFLD2' +',XRFLD3' +',XRPNLD' +',XREXTT' +',XREXTD' +',XREXTH' +',XREXTW' +',XREXTE' +',XREXTA' +',XREXTP' +',XREXTQ' +',XREXTX' +',XREXTV' +',XRRCST' +',XRRCDC' +',XRRCUD' ; sqlFrom = 'from XRREGTST' ; sqlWhere = '' + 'where' + ' xrxaid = ''SY''' // + ' and' // + ' elacno = 1001' ; if sqlSearch > ''; if sqlWhere > ''; sqlWhere += ' and '; else; sqlWhere += 'where '; endif; sqlWhere += '' +'lower(' // powerEXT generated source +'XRXRID' +'||XRXAID' +'||XRFLDR' +'||char(XRFLDL)' +'||XRFLDT' +'||char(XRFLDP)' +'||XRFLDE' +'||XRFLDW' +'||XRFLDF' +'||XRFLDD' +'||XRFLD1' +'||XRFLD2' +'||XRFLD3' +'||XRPNLD' +'||XREXTT' +'||XREXTD' +'||XREXTH' +'||char(XREXTW)' +'||XREXTE' +'||XREXTA' +'||XREXTP' +'||char(XREXTQ)' +'||XREXTX' +'||XREXTV' +'||XRRCST' +'||XRRCDC' +'||char(XRRCUD)' +') like lower(''%' + %trim(sqlSearch) +'%'')' ; endif; sqlOrder = 'order by xrxrid asc' ; if sqlSortField > ''; sqlOrder = 'order by ' + sqlSortField + ' ' + sqlSortDir ; endif; sqlFor = 'for read only' ; select; when output = 'xml'; exsr xmlStart; when output = 'html'; exsr htmlStart; other; exsr sqlCountRow; exsr jsonStart; endsl; exsr sqlProcessRows; select; when output = 'xml'; exsr xmlEnd; when output = 'html'; exsr htmlEnd; other; exsr jsonEnd; endsl; endsr; /end-free *===================================================================== * Process Rows *===================================================================== /free begsr sqlProcessRows; sqlRow = 0; sqlerror = '00000'; sqlCmd = '' + ' ' + sqlSelect + ' ' + sqlFrom + ' ' + sqlWhere + ' ' + sqlOrder + ' ' + sqlFor ; exec sql declare CR cursor for sqlStatementCR; exec sql prepare sqlStatementCR from :SqlCmd; exec sql open CR; if sqlstt <> '00000'; sqlerror = sqlstt; leavesr; endif; dow sqlstt = '00000'; exec sql fetch next from CR into :rrn // powerExt Generated Source ,:XRXRID ,:XRXAID ,:XRFLDR ,:XRFLDL ,:XRFLDT ,:XRFLDP ,:XRFLDE ,:XRFLDW ,:XRFLDF ,:XRFLDD ,:XRFLD1 ,:XRFLD2 ,:XRFLD3 ,:XRPNLD ,:XREXTT ,:XREXTD ,:XREXTH ,:XREXTW ,:XREXTE ,:XREXTA ,:XREXTP ,:XREXTQ ,:XREXTX ,:XREXTV ,:XRRCST ,:XRRCDC ,:XRRCUD ; if sqlstt = '01557'; eval sqlstt = '00000'; endif; if sqlstt <> '00000'; sqlerror = sqlstt; leave; endif; sqlRow += 1; if sqlRows > 0; if sqlRow >= SqlStart and sqlRow < (sqlStart + sqlRows); select; when output = 'xml'; exsr xmlRow; when output = 'html'; exsr htmlRow; other; exsr jsonRow; endsl; endif; if sqlRow = (sqlStart + sqlRows - 1); leave; endif; else; select; when output = 'xml'; exsr xmlRow; when output = 'html'; exsr htmlRow; other; exsr jsonRow; endsl; endif; enddo; exec sql close CR; endsr; /end-free *===================================================================== * Count Total Number Of Row's in the SQL Scope * return the result in sqlCount *===================================================================== /free begsr sqlCountRow; sqlCmdCount = '' + 'Select count(*)' + ' ' + sqlFrom + ' ' + sqlWhere ; exec sql declare CC insensitive cursor for sqlStatementCC; exec sql prepare sqlStatementCC from :SqlCmdCount; exec sql open CC; exec sql fetch next from CC into :sqlCount; exec sql close CC; endsr; /end-free *===================================================================== * Start JSON Object *===================================================================== /free begsr jsonStart; setContent(); // Declare JSON Response Object jsonNode('*object'); jsonNode('*object':'metaData'); jsonNode('*string':'totalProperty':'totalRows'); jsonNode('*string':'root':'rows'); jsonNode('*string':'id':'RRN'); jsonNode('*array':'fields'); jsonNode('*object'); jsonNode('*string':'name':'RRN'); jsonEndNode(); // powerEXT generated source jsonNode('*object'); jsonNode('*string':'name':'XRXRID'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XRXAID'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XRFLDR'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XRFLDL'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XRFLDT'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XRFLDP'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XRFLDE'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XRFLDW'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XRFLDF'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XRFLDD'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XRFLD1'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XRFLD2'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XRFLD3'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XRPNLD'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XREXTT'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XREXTD'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XREXTH'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XREXTW'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XREXTE'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XREXTA'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XREXTP'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XREXTQ'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XREXTX'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XREXTV'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XRRCST'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XRRCDC'); jsonEndNode(); jsonNode('*object'); jsonNode('*string':'name':'XRRCUD'); jsonEndNode(); jsonEndNode(); jsonEndNode(); jsonNode('*number':'totalRows':%char(sqlCount)); jsonNode('*array':'rows'); endsr; /end-free *===================================================================== * Process Row (CallBack From sqlProcessRows) *===================================================================== /free begsr jsonRow; // Generate Row jsonNode('*object'); jsonNode('*number':'RRN':%char(RRN)); // powerEXT generated source jsonNode('*string':'XRXRID':XRXRID); jsonNode('*string':'XRXAID':XRXAID); jsonNode('*string':'XRFLDR':XRFLDR); jsonNode('*number':'XRFLDL':%trim(%editc(XRFLDL:'P'))); jsonNode('*string':'XRFLDT':XRFLDT); jsonNode('*number':'XRFLDP':%trim(%editc(XRFLDP:'P'))); jsonNode('*string':'XRFLDE':XRFLDE); jsonNode('*string':'XRFLDW':XRFLDW); jsonNode('*string':'XRFLDF':XRFLDF); jsonNode('*string':'XRFLDD':XRFLDD); jsonNode('*string':'XRFLD1':XRFLD1); jsonNode('*string':'XRFLD2':XRFLD2); jsonNode('*string':'XRFLD3':XRFLD3); jsonNode('*string':'XRPNLD':XRPNLD); jsonNode('*string':'XREXTT':XREXTT); jsonNode('*string':'XREXTD':XREXTD); jsonNode('*string':'XREXTH':XREXTH); jsonNode('*number':'XREXTW':%trim(%editc(XREXTW:'P'))); jsonNode('*string':'XREXTE':XREXTE); jsonNode('*string':'XREXTA':XREXTA); jsonNode('*string':'XREXTP':XREXTP); jsonNode('*number':'XREXTQ':%trim(%editc(XREXTQ:'P'))); jsonNode('*string':'XREXTX':XREXTX); jsonNode('*string':'XREXTV':XREXTV); jsonNode('*string':'XRRCST':XRRCST); jsonNode('*string':'XRRCDC':XRRCDC); jsonNode('*number':'XRRCUD':%trim(%editc(XRRCUD:'P'))); jsonEndNode(); endsr; /end-free *===================================================================== * End JSON Object *===================================================================== /free begsr jsonEnd; // End JSON Object jsonEndNode(); jsonEndNode(); endsr; /end-free *===================================================================== * Start XML Document *===================================================================== /free begsr xmlStart; setContent('text/xml'); // Declare XML Response Document xmlNode('xml'); xmlNode('file':'id="XRREGTST"'); endsr; /end-free *===================================================================== * Process Row (CallBack From sqlProcessRows) *===================================================================== /free begsr xmlRow; // Generate Row xmlNode('record':'rrn="'+%char(RRN)+'"'); // powerEXT generated source xmlNode('XRXRID':'':XRXRID); xmlNode('XRXAID':'':XRXAID); xmlNode('XRFLDR':'':XRFLDR); xmlNode('XRFLDL':'':%trim(%editc(XRFLDL:'P'))); xmlNode('XRFLDT':'':XRFLDT); xmlNode('XRFLDP':'':%trim(%editc(XRFLDP:'P'))); xmlNode('XRFLDE':'':XRFLDE); xmlNode('XRFLDW':'':XRFLDW); xmlNode('XRFLDF':'':XRFLDF); xmlNode('XRFLDD':'':XRFLDD); xmlNode('XRFLD1':'':XRFLD1); xmlNode('XRFLD2':'':XRFLD2); xmlNode('XRFLD3':'':XRFLD3); xmlNode('XRPNLD':'':XRPNLD); xmlNode('XREXTT':'':XREXTT); xmlNode('XREXTD':'':XREXTD); xmlNode('XREXTH':'':XREXTH); xmlNode('XREXTW':'':%trim(%editc(XREXTW:'P'))); xmlNode('XREXTE':'':XREXTE); xmlNode('XREXTA':'':XREXTA); xmlNode('XREXTP':'':XREXTP); xmlNode('XREXTQ':'':%trim(%editc(XREXTQ:'P'))); xmlNode('XREXTX':'':XREXTX); xmlNode('XREXTV':'':XREXTV); xmlNode('XRRCST':'':XRRCST); xmlNode('XRRCDC':'':XRRCDC); xmlNode('XRRCUD':'':%trim(%editc(XRRCUD:'P'))); xmlEndNode(); endsr; /end-free *===================================================================== * End XML Document *===================================================================== /free begsr xmlEnd; // End XML Document xmlEndNode(); xmlEndNode(); endsr; /end-free *===================================================================== * Start HTML Table *===================================================================== /free begsr htmlStart; setContent('text/html'); // Declare HTML Response Table htmlNode('table':'id="XRREGTST"'); endsr; /end-free *===================================================================== * Process Row (CallBack From sqlProcessRows) *===================================================================== /free begsr htmlRow; // Generate Row htmlNode('tr':'rrn="'+%char(RRN)+'"'); // powerEXT generated source htmlNode('td':'db2field="XRXRID"':XRXRID); htmlNode('td':'db2field="XRXAID"':XRXAID); htmlNode('td':'db2field="XRFLDR"':XRFLDR); htmlNode('td':'db2field="XRFLDL"':%trim(%editc(XRFLDL:'P'))); htmlNode('td':'db2field="XRFLDT"':XRFLDT); htmlNode('td':'db2field="XRFLDP"':%trim(%editc(XRFLDP:'P'))); htmlNode('td':'db2field="XRFLDE"':XRFLDE); htmlNode('td':'db2field="XRFLDW"':XRFLDW); htmlNode('td':'db2field="XRFLDF"':XRFLDF); htmlNode('td':'db2field="XRFLDD"':XRFLDD); htmlNode('td':'db2field="XRFLD1"':XRFLD1); htmlNode('td':'db2field="XRFLD2"':XRFLD2); htmlNode('td':'db2field="XRFLD3"':XRFLD3); htmlNode('td':'db2field="XRPNLD"':XRPNLD); htmlNode('td':'db2field="XREXTT"':XREXTT); htmlNode('td':'db2field="XREXTD"':XREXTD); htmlNode('td':'db2field="XREXTH"':XREXTH); htmlNode('td':'db2field="XREXTW"':%trim(%editc(XREXTW:'P'))); htmlNode('td':'db2field="XREXTE"':XREXTE); htmlNode('td':'db2field="XREXTA"':XREXTA); htmlNode('td':'db2field="XREXTP"':XREXTP); htmlNode('td':'db2field="XREXTQ"':%trim(%editc(XREXTQ:'P'))); htmlNode('td':'db2field="XREXTX"':XREXTX); htmlNode('td':'db2field="XREXTV"':XREXTV); htmlNode('td':'db2field="XRRCST"':XRRCST); htmlNode('td':'db2field="XRRCDC"':XRRCDC); htmlNode('td':'db2field="XRRCUD"':%trim(%editc(XRRCUD:'P'))); htmlEndNode(); endsr; /end-free *===================================================================== * End HTML Table *===================================================================== /free begsr htmlEnd; // End HTML Table htmlEndNode(); endsr; /end-free
----------------------------------------------------------------------- This is the FTPAPI mailing list. To unsubscribe, please go to: http://www.scottklement.com/mailman/listinfo/ftpapi -----------------------------------------------------------------------