midrange.com code scratchpad
Name:
Jon Paris - XML-INTO Meter Reading Sample
Scriptlanguage:
Plain Text
Tabwidth:
4
Date:
04/25/2017 11:30:37 pm
IP:
Logged
Description:
This is the code example for XML-INTO mentioned in the thread: https://archive.midrange.com/rpg400-l/201704/msg00125.html
Code:
  1. **free
  2. dcl-s  xmldata char(9999) Inz('<?xml version="1.0" encoding="utf-8" standalone="yes"?>+
  3. <MeterReadingDocument xmlns:xsd="http://www.w3.org/2001/XMLSchema" +
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">+
  5.  <ImportExportParameters CreateResubmitFile="false">+
  6.    <DataFormat DSTTransitionType="ITRON_Compliant" ReadingTimestampType="Utc" />+
  7.  </ImportExportParameters>+
  8.  <Channels>+
  9.    <Channel ReadingsInPulse="false" IsRegister="true" IsReadingDecoded="false" +
  10.     MarketType="Gas">+
  11.      <ChannelID EndPointChannelID="32842936:1" />+
  12.      <Readings>+
  13.        <Reading Value="0009290249" ReadingTime="2017-03-31T13:44:46" />+
  14.      </Readings>+
  15.      <OptionalChannelDatas>+
  16.        <OptionalChannelData Name="ERTType" Value="2" />+
  17.        <OptionalChannelData Name="Tamper1" Value="0" />+
  18.        <OptionalChannelData Name="Tamper2" Value="2" />+
  19.      </OptionalChannelDatas>+
  20.    </Channel>+
  21.    <Channel ReadingsInPulse="false" IsRegister="true" +
  22.             IsReadingDecoded="false" +
  23.             MarketType="Gas">+
  24.      <ChannelID EndPointChannelID="41409881:1" />+
  25.      <Readings>+
  26.        <Reading Value="0000281274" ReadingTime="2017-04-18T11:51:00" />+
  27.      </Readings>+
  28.      <OptionalChannelDatas>+
  29.        <OptionalChannelData Name="ERTType" Value="12" />+
  30.        <OptionalChannelData Name="Tamper1" Value="0" />+
  31.        <OptionalChannelData Name="Tamper2" Value="0" />+
  32.      </OptionalChannelDatas>+
  33.    </Channel>+
  34.  </Channels>+
  35. </MeterReadingDocument>');
  36.  
  37. dcl-c n 20;
  38. dcl-c nn 10;
  39.  
  40. dcl-ds MeterReadingDocument Qualified;
  41.   ImportExportParameters  LikeDS(ImportExportParameters_T);
  42.   Channels                LikeDS(Channels_T);
  43. end-ds MeterReadingDocument;
  44.  
  45.  
  46. dcl-ds ImportExportParameters_T  Template Qualified;   
  47.   CreateResubmitFile char(n);
  48.   DataFormat  LikeDS(DataFormat_T);
  49. end-ds;                         
  50.  
  51. dcl-ds DataFormat_T Template;             
  52.   DSTTransitionType     char(n);
  53.   ReadingTimestampType  char(n);
  54. end-ds;                       
  55.  
  56. dcl-ds Channels_T  Template  Qualified;                
  57.   countChannel int(10);
  58.   Channel  Dim(nn)  LikeDS(Channel_T);
  59. end-ds Channels_T;                         
  60.  
  61. dcl-ds Channel_T  Template  Qualified;       
  62.   ReadingsInPulse   char(n);
  63.   IsRegister  char(n);
  64.   IsReadingDecoded   char(n);
  65.   MarketType   char(n);
  66.   ChannelID    LikeDS(ChannelID_T);
  67.   Readings     LikeDS(Readings_T);
  68.   OptionalChannelDatas  LikeDS(OptionalChannelDatas_T);
  69. end-ds;
  70.  
  71. dcl-ds  ChannelID_T Template;         
  72.   EndPointChannelID  char(n);
  73. end-ds;                    
  74.  
  75. dcl-ds Readings_T  Template  Qualified;           
  76.   countReading int(10);
  77.   Reading  dim(nn) LikeDS(Reading_T);  
  78. end-ds;                    
  79.  
  80. dcl-ds Reading_T  Template;  
  81.   Value  char(n);
  82.   ReadingTime char(n);
  83. end-ds;                  
  84.  
  85. dcl-ds OptionalChannelDatas_T  Template  Qualified; 
  86.     countOptionalChannelData int(10);
  87.     OptionalChannelData dim(nn)  LikeDS(OptionalChannelData_T); 
  88. end-ds;
  89.  
  90. dcl-ds OptionalChannelData_T  Template   Qualified; 
  91.   Name  char(n);
  92.   Value   char(n);
  93. end-ds;                             
  94.  
  95.  
  96. xml-into MeterReadingDocument %XML(XMLData:
  97.                                    'countprefix=count case=any');
  98.  
  99. *INLR = *ON; 
© 2004-2019 by midrange.com generated in 0.01s valid xhtml & css