midrange.com code scratchpad
Name:
TSTXMLSAX5
Scriptlanguage:
Plain Text
Tabwidth:
2
Date:
01/26/2012 09:40:42 pm
IP:
Logged
Description:
Test XML-SAX functionality from RPG REF book Samp
Code:
  1.      H DFTACTGRP(*NO)
  2.      HDEBUG(*XMLSAX)
  3.  
  4.      FQSYSPRT   O    F  132        PRINTER
  5.  
  6.      D PrintMe         ds                  qualified
  7.      D   name                        21a
  8.      D   data                       111a
  9.  
  10.      D XML_Event_Name  PR            20A   varying
  11.      D    event                      10i 0 value
  12.  
  13.      D xmlHandler      PR            10i 0
  14.      D   ignore                       1a
  15.      D   event                       10i 0 value
  16.      D   string                        *   value
  17.      D   stringLen                   20i 0 value
  18.      D   exceptionId                 10i 0 value
  19.  
  20.      D XML             s            500a   varying
  21.      D XMLF            s            500a   varying
  22.      D ignoreMe        s              1a
  23.  
  24.      D Inpdoc          S             57A
  25.  
  26.  
  27.      C     *Entry        Plist
  28.      C                   Parm                    Inpdoc
  29.       /free
  30.  
  31.        Xmlf = %Trim(Inpdoc);
  32.  
  33.        // Xmlf = '/law9k/law/print/pgmt/qtryl-rpts/1/13623/dw-qtr-fi-is.xml';
  34.           xml-sax %handler(xmlHandler: ignoreMe)
  35.                   %XML(Xmlf : 'doc=file');
  36.           //      %XML('/home/pgmt/fintables.html' : 'doc=file');
  37.          //         %XML(XML: 'doc=string');
  38.  
  39.        *inlr = *on;
  40.  
  41.       /end-free
  42.  
  43.      P xmlHandler      B
  44.      D xmlHandler      PI            10i 0
  45.      D   ignore                       1a
  46.      D   event                       10i 0 value
  47.      D   string                        *   value
  48.      D   stringLen                   20i 0 value
  49.      D   exceptionId                 10i 0 value
  50.  
  51.      D value           s          65535a   based(String)
  52.      D ucs2val         s          16363c   based(String)
  53.      D dspstr          s             52a
  54.       /free
  55.  
  56.          PrintMe.name = XML_Event_Name(event);
  57.          PrintMe.data = *blanks;
  58.  
  59.          select;
  60.          when string=*null or stringlen<1;
  61.             // no string given...
  62.          when stringlen>%size(value);
  63.             PrintMe.data = '** string length invalid';
  64.          other;
  65.             PrintMe.data = %subst(value:1:stringlen);
  66.          endsl;
  67.  
  68.          write QSYSPRT PrintMe;
  69.          return 0;
  70.       /end-free
  71.      P                 E
  72.  
  73.       *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  74.       *  Retrieve the event name for a given event number.
  75.       *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  76.      P XML_Event_Name  B
  77.      D XML_Event_Name  PI            20A   varying
  78.      D    event                      10i 0 value
  79.       /free
  80.  
  81.          select;
  82.          when event = *XML_START_DOCUMENT;
  83.              return   'XML_START_DOCUMENT';
  84.          when event = *XML_VERSION_INFO;
  85.              return   'XML_VERSION_INFO';
  86.          when event = *XML_ENCODING_DECL;
  87.              return   'XML_ENCODING_DECL';
  88.          when event = *XML_STANDALONE_DECL;
  89.              return   'XML_STANDALONE_DECL';
  90.          when event = *XML_DOCTYPE_DECL;
  91.              return   'XML_DOCTYPE_DECL';
  92.          when event = *XML_START_ELEMENT;
  93.              return   'XML_START_ELEMENT';
  94.          when event = *XML_CHARS;
  95.              return   'XML_CHARS';
  96.          when event = *XML_PREDEF_REF;
  97.              return   'XML_PREDEF_REF';
  98.          when event = *XML_UCS2_REF;
  99.              return   'XML_UCS2_REF';
  100.          when event = *XML_UNKNOWN_REF;
  101.              return   'XML_UNKNOWN_REF';
  102.          when event = *XML_END_ELEMENT;
  103.              return   'XML_END_ELEMENT';
  104.          when event = *XML_ATTR_NAME;
  105.              return   'XML_ATTR_NAME';
  106.          when event = *XML_ATTR_CHARS;
  107.              return   'XML_ATTR_CHARS';
  108.          when event = *XML_ATTR_PREDEF_REF;
  109.              return   'XML_ATTR_PREDEF_REF';
  110.          when event = *XML_ATTR_UCS2_REF;
  111.              return   'XML_ATTR_UCS2_REF';
  112.          when event = *XML_UNKNOWN_ATTR_REF;
  113.              return   'XML_UNKNOWN_ATTR_REF';
  114.          when event = *XML_END_ATTR;
  115.              return   'XML_END_ATTR';
  116.          when event = *XML_PI_TARGET;
  117.              return   'XML_PI_TARGET';
  118.          when event = *XML_PI_DATA;
  119.              return   'XML_PI_DATA';
  120.          when event = *XML_START_CDATA;
  121.              return   'XML_START_CDATA';
  122.          when event = *XML_END_CDATA;
  123.              return   'XML_END_CDATA';
  124.          when event = *XML_COMMENT;
  125.              return   'XML_COMMENT';
  126.          when event = *XML_EXCEPTION;
  127.              return   'XML_EXCEPTION';
  128.          when event = *XML_END_DOCUMENT;
  129.              return   'XML_END_DOCUMENT';
  130.          other;
  131.              return   'UNKNOWN EVENT';
  132.          endsl;
  133.       /end-free
  134.      P                 E
  135.  
© 2004-2019 by midrange.com generated in 0.006s valid xhtml & css