XMLcode.ecl 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. //
  2. // Example code - use without restriction.
  3. //
  4. IMPORT $;
  5. ds := $.DeclareData.timezonesXML;
  6. OUTPUT(ds);
  7. StripIt(STRING str) := REGEXREPLACE('[\r\n\t]',str,'$1');
  8. RECORDOF(ds) DoStrip(ds L) := TRANSFORM
  9. SELF.code := StripIt(L.code);
  10. SELF.state := StripIt(L.state);
  11. SELF.description := StripIt(L.description);
  12. SELF.timezone := StripIt(L.timezone);
  13. END;
  14. StrippedRecs := PROJECT(ds,DoStrip(LEFT));
  15. OUTPUT(StrippedRecs);
  16. InterestingRecs := StrippedRecs((INTEGER)code BETWEEN 301 AND 303);
  17. OUTPUT(InterestingRecs,{code,timezone},
  18. '~PROGGUIDE::EXAMPLEDATA::OUT::timezones300',
  19. XML('area',HEADING('<?xml version=1.0 ...?>\n<timezones>\n',
  20. '</timezones>')),OVERWRITE);
  21. CRLF := (STRING)x'0D0A';
  22. OutRec := RECORD
  23. STRING Line;
  24. END;
  25. OutRec DoComplexXML(InterestingRecs L) := TRANSFORM
  26. SELF.Line := ' <area code="' + L.code + '">' + CRLF +
  27. ' <zone>' + L.timezone + '</zone>'+CRLF+
  28. ' </area>';
  29. END;
  30. ComplexXML := PROJECT(InterestingRecs,DoComplexXML(LEFT));
  31. OUTPUT(ComplexXML,,'~PROGGUIDE::EXAMPLEDATA::OUT::Complextimezones301',
  32. CSV(HEADING('<?xml version=1.0 ...?>'+CRLF+'<timezones>'+CRLF,
  33. '</timezones>')),OVERWRITE);
  34. NewTimeZones := DATASET('~PROGGUIDE::EXAMPLEDATA::OUT::Complextimezones301',
  35. {STRING area {XPATH('<>')}},
  36. XML('timezones/area'));
  37. OUTPUT(NewTimeZones);
  38. {ds.code, ds.timezone} Xform(NewTimeZones L) := TRANSFORM
  39. SELF.code := XMLTEXT('@code');
  40. SELF.timezone := XMLTEXT('zone');
  41. END;
  42. ParsedZones := PARSE(NewTimeZones,area,Xform(LEFT),XML('area'));
  43. OUTPUT(ParsedZones);
  44. //**********************************************************
  45. CollateralRec := RECORD
  46. STRING Action {XPATH('Action')};
  47. STRING Description {XPATH('Description')};
  48. STRING EffectiveDate {XPATH('EffectiveDate')};
  49. END;
  50. PartyRec := RECORD
  51. STRING PartyID {XPATH('@entityId')};
  52. STRING IsBusiness {XPATH('IsBusiness')};
  53. STRING OrgName {XPATH('OrgName')};
  54. STRING FirstName {XPATH('FirstName')};
  55. STRING LastName {XPATH('LastName')};
  56. STRING Status {XPATH('Status[1]')};
  57. STRING Address1 {XPATH('Address1')};
  58. STRING Address2 {XPATH('Address2')};
  59. STRING Address3 {XPATH('Address3')};
  60. STRING Address4 {XPATH('Address4')};
  61. STRING City {XPATH('City')};
  62. STRING State {XPATH('State')};
  63. STRING Zip {XPATH('Zip')};
  64. STRING OrgType {XPATH('OrgType')};
  65. STRING OrgJurisdiction {XPATH('OrgJurisdiction')};
  66. STRING OrgID {XPATH('OrgID')};
  67. STRING10 EnteredDate {XPATH('EnteredDate')};
  68. END;
  69. TransactionRec := RECORD
  70. STRING TransactionID {XPATH('@ID')};
  71. STRING10 StartDate {XPATH('StartDate')};
  72. STRING10 LapseDate {XPATH('LapseDate')};
  73. STRING FormType {XPATH('FormType')};
  74. STRING AmendType {XPATH('AmendType')};
  75. STRING AmendAction {XPATH('AmendAction')};
  76. STRING10 EnteredDate {XPATH('EnteredDate')};
  77. STRING10 ReceivedDate {XPATH('ReceivedDate')};
  78. STRING10 ApprovedDate {XPATH('ApprovedDate')};
  79. DATASET(PartyRec) Debtors {XPATH('Debtor')};
  80. DATASET(PartyRec) SecuredParties {XPATH('SecuredParty')};
  81. CollateralRec Collateral {XPATH('Collateral')}
  82. END;
  83. UCC_Rec := RECORD
  84. STRING FilingNumber {XPATH('@number')};
  85. DATASET(TransactionRec) Transactions {XPATH('Transaction')};
  86. END;
  87. UCC := DATASET('~PROGGUIDE::EXAMPLEDATA::XML_UCC',UCC_Rec,XML('UCC/Filing'));
  88. XactTbl := TABLE(UCC,{INTEGER XactCount := COUNT(Transactions), UCC});
  89. OUTPUT(XactTbl);
  90. Out_Transacts := RECORD
  91. STRING FilingNumber;
  92. STRING TransactionID;
  93. STRING10 StartDate;
  94. STRING10 LapseDate;
  95. STRING FormType;
  96. STRING AmendType;
  97. STRING AmendAction;
  98. STRING10 EnteredDate;
  99. STRING10 ReceivedDate;
  100. STRING10 ApprovedDate;
  101. DATASET(PartyRec) Debtors;
  102. DATASET(PartyRec) SecuredParties;
  103. CollateralRec Collateral;
  104. END;
  105. Out_Transacts Get_Transacts(XactTbl L, INTEGER C) := TRANSFORM
  106. SELF.FilingNumber := L.FilingNumber;
  107. SELF := L.Transactions[C];
  108. END;
  109. Transacts := NORMALIZE(XactTbl,
  110. LEFT.XactCount,Get_Transacts(LEFT,COUNTER));
  111. OUTPUT(Transacts);
  112. PartyCounts := TABLE(Transacts,
  113. {INTEGER DebtorCount := COUNT(Debtors),
  114. INTEGER PartyCount := COUNT(SecuredParties),
  115. Transacts});
  116. OUTPUT(PartyCounts);
  117. Out_Parties := RECORD
  118. STRING FilingNumber;
  119. STRING TransactionID;
  120. PartyRec;
  121. END;
  122. Out_Parties Get_Debtors(PartyCounts L, INTEGER C) := TRANSFORM
  123. SELF.FilingNumber := L.FilingNumber;
  124. SELF.TransactionID := L.TransactionID;
  125. SELF := L.Debtors[C];
  126. END;
  127. TransactDebtors := NORMALIZE( PartyCounts,
  128. LEFT.DebtorCount,
  129. Get_Debtors(LEFT,COUNTER));
  130. OUTPUT(TransactDebtors);
  131. Out_Parties Get_Parties(PartyCounts L, INTEGER C) := TRANSFORM
  132. SELF.FilingNumber := L.FilingNumber;
  133. SELF.TransactionID := L.TransactionID;
  134. SELF := L.SecuredParties[C];
  135. END;
  136. TransactParties := NORMALIZE(PartyCounts,
  137. LEFT.PartyCount,
  138. Get_Parties(LEFT,COUNTER));
  139. OUTPUT(TransactParties);