Physical File: NAMVAL 

      *-------------------------------------------------------------------------

      * @Name - NAMVAL

      * @Author - Aaron Bartell

      * @Desc - Holds name value pairs for composing Adobe Flex charts. In a

      *         more normal scenario you would be using your own DB2 tables

      *         that currently hold your customer data.

      *-------------------------------------------------------------------------

     A          R NAMVALR                   TEXT('Name Value')

     A            TYP           15A         COLHDG('Type of pair')

     A            NAM           50A         COLHDG('Name')

     A            VAL           50A         COLHDG('Value')

     A            VAL2          50A         COLHDG('Value 2')

 

     A          K TYP

 

Program: MYRXS/FLEXDASH 

      //*******************************************************************************************

      // @Author: Aaron Bartell

      // @Created: 2008-02-18

      // @Descr: Integrate RPG and Adobe Flex to create a graphical dashboard

      //*******************************************************************************************

     H dftactgrp(*no) bnddir('RXSBND')

 

     FNAMVAL    if   e           k disk    prefix('NV.') usropn

     D NV            e ds                  qualified extname(NAMVAL)

 

      /copy rxs,RXSCp

 

     D input           s                   like(NV.TYP)

     D gSndHdr         s               n

      /free

 

       monitor;

         gSndHdr = *on;

 

         // Add the library holding our data files to the library list and

         // open necessary files.

         if RXS_libLEExists('RXSDATA') <= 0;

           RXS_addLibLE('RXSDATA');

         endif;

         if not %open(NAMVAL);

           open NAMVAL;

         endif;

 

         input = RXS_getUrlVar('input');

         exsr compose;

       on-error;

         RXS_stdOutError('error': RXS_catchError(): *on);

       endmon;

       *inlr = *on;

 

       //--------------------------------------------------------------------------------------------

       // @Author: Aaron Bartell

       // @Created: 2008-02-18

       // @Desc: Determine which service is being requested and compose an appropriate XML response.

       //--------------------------------------------------------------------------------------------

       begsr compose;

 

       RXS_initTplEng(RXS_STDOUT: *omit: *omit: *omit: *omit: *off);

       RXS_loadTpl('flexdash.tpl');

 

       RXS_writeXMLHdr();

       gSndHdr = *off;

 

       RXS_wrtSection('SOAP_beg');

 

       // Determine which column headers to write out.

       select;

       when input = 'Territory';

         RXS_updVar('COLUMN-HDR-ITEM_value1': 'TERRITORY');

         RXS_updVar('COLUMN-HDR-ITEM_value2': 'SOLD_PRICE');

         RXS_wrtSection('COLUMN-HDR-ROW2');

       when input = 'Productline';

         RXS_updVar('COLUMN-HDR-ITEM_value1': 'PRODUCTLINE');

         RXS_updVar('COLUMN-HDR-ITEM_value2': 'REVENUE');

         RXS_wrtSection('COLUMN-HDR-ROW2');

       when input = 'TopTen';

         RXS_updVar('COLUMN-HDR-ITEM_value1': 'Sales');

         RXS_updVar('COLUMN-HDR-ITEM_value2': 'Measures');

         RXS_wrtSection('COLUMN-HDR-ROW1');

       other;

         RXS_updVar('COLUMN-HDR-ITEM_value1': '');

         RXS_updVar('COLUMN-HDR-ITEM_value2': '');

       endsl;

 

       RXS_wrtSection('COLUMN-HDR-ROW');

 

       // Read through the name value pair table based on the type that was sent

       // in.

       setll input NAMVAL;

       reade input NAMVAL;

       dow not %eof(NAMVAL);

         select;

         when input = 'Territory' or input = 'Productline';

           RXS_updVar('DATA-ITEM_value1': NV.NAM);

           RXS_updVar('DATA-ITEM_value2': NV.VAL);

           RXS_wrtSection('DATA-ROW');

         when input = 'TopTen';

           RXS_updVar('ROW-HDR-ITEM_value1': NV.NAM);

           RXS_updVar('ROW-HDR-ITEM_value2': NV.VAL);

           RXS_wrtSection('ROW-HDR-ROW');

 

           RXS_updVar('TopTen_DATA-ITEM': NV.VAL2);

           RXS_wrtSection('TopTen_DATA-ROW');

         endsl;

         reade input NAMVAL;

       enddo;

 

       RXS_wrtSection('SOAP_end': *on);

 

       endsr;

 

      /end-free

 

IFS Template: /www/myrxs/templates/flexdash.tpl 

::SOAP_beg 

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

  <SOAP-ENV:Body>

    <ExecuteActivityResponse xmlns:m="http://rpg-xml.com/flexdash">

      <swresult>

::COLUMN-HDR-ROW1 

      <COLUMN-HDR-ROW>

        <COLUMN-HDR-ITEM><![CDATA[.:COLUMN-HDR-ITEM_value1:.]]></COLUMN-HDR-ITEM>

      </COLUMN-HDR-ROW>

      <COLUMN-HDR-ROW>

        <COLUMN-HDR-ITEM><![CDATA[.:COLUMN-HDR-ITEM_value2:.]]></COLUMN-HDR-ITEM>

      </COLUMN-HDR-ROW>

::COLUMN-HDR-ROW2 

      <COLUMN-HDR-ROW>

        <COLUMN-HDR-ITEM><![CDATA[.:COLUMN-HDR-ITEM_value1:.]]></COLUMN-HDR-ITEM>              

        <COLUMN-HDR-ITEM><![CDATA[.:COLUMN-HDR-ITEM_value2:.]]></COLUMN-HDR-ITEM>

      </COLUMN-HDR-ROW>

::ROW-HDR-ROW 

      <ROW-HDR-ROW>

        <ROW-HDR-ITEM><![CDATA[.:ROW-HDR-ITEM_value1:.]]></ROW-HDR-ITEM>

        <ROW-HDR-ITEM><![CDATA[.:ROW-HDR-ITEM_value2:.]]></ROW-HDR-ITEM>

      </ROW-HDR-ROW>

::DATA-ROW 

      <DATA-ROW>

        <DATA-ITEM><![CDATA[.:DATA-ITEM_value1:.]]></DATA-ITEM>

        <DATA-ITEM><![CDATA[.:DATA-ITEM_value2:.]]></DATA-ITEM>

      </DATA-ROW>

::TopTen_DATA-ROW 

      <DATA-ROW>

       <DATA-ITEM>

        <![CDATA[.:TopTen_DATA-ITEM:.]]>

       </DATA-ITEM>

      </DATA-ROW>

::SOAP_end 

      </swresult>

    </ExecuteActivityResponse>

  </SOAP-ENV:Body>

</SOAP-ENV:Envelope>