// // Example code - use without restriction. // IMPORT $; ds := $.DeclareData.timezonesXML; OUTPUT(ds); StripIt(STRING str) := REGEXREPLACE('[\r\n\t]',str,'$1'); RECORDOF(ds) DoStrip(ds L) := TRANSFORM SELF.code := StripIt(L.code); SELF.state := StripIt(L.state); SELF.description := StripIt(L.description); SELF.timezone := StripIt(L.timezone); END; StrippedRecs := PROJECT(ds,DoStrip(LEFT)); OUTPUT(StrippedRecs); InterestingRecs := StrippedRecs((INTEGER)code BETWEEN 301 AND 303); OUTPUT(InterestingRecs,{code,timezone}, '~PROGGUIDE::EXAMPLEDATA::OUT::timezones300', XML('area',HEADING('\n\n', '')),OVERWRITE); CRLF := (STRING)x'0D0A'; OutRec := RECORD STRING Line; END; OutRec DoComplexXML(InterestingRecs L) := TRANSFORM SELF.Line := ' ' + CRLF + ' ' + L.timezone + ''+CRLF+ ' '; END; ComplexXML := PROJECT(InterestingRecs,DoComplexXML(LEFT)); OUTPUT(ComplexXML,,'~PROGGUIDE::EXAMPLEDATA::OUT::Complextimezones301', CSV(HEADING(''+CRLF+''+CRLF, '')),OVERWRITE); NewTimeZones := DATASET('~PROGGUIDE::EXAMPLEDATA::OUT::Complextimezones301', {STRING area {XPATH('<>')}}, XML('timezones/area')); OUTPUT(NewTimeZones); {ds.code, ds.timezone} Xform(NewTimeZones L) := TRANSFORM SELF.code := XMLTEXT('@code'); SELF.timezone := XMLTEXT('zone'); END; ParsedZones := PARSE(NewTimeZones,area,Xform(LEFT),XML('area')); OUTPUT(ParsedZones); //********************************************************** CollateralRec := RECORD STRING Action {XPATH('Action')}; STRING Description {XPATH('Description')}; STRING EffectiveDate {XPATH('EffectiveDate')}; END; PartyRec := RECORD STRING PartyID {XPATH('@entityId')}; STRING IsBusiness {XPATH('IsBusiness')}; STRING OrgName {XPATH('OrgName')}; STRING FirstName {XPATH('FirstName')}; STRING LastName {XPATH('LastName')}; STRING Status {XPATH('Status[1]')}; STRING Address1 {XPATH('Address1')}; STRING Address2 {XPATH('Address2')}; STRING Address3 {XPATH('Address3')}; STRING Address4 {XPATH('Address4')}; STRING City {XPATH('City')}; STRING State {XPATH('State')}; STRING Zip {XPATH('Zip')}; STRING OrgType {XPATH('OrgType')}; STRING OrgJurisdiction {XPATH('OrgJurisdiction')}; STRING OrgID {XPATH('OrgID')}; STRING10 EnteredDate {XPATH('EnteredDate')}; END; TransactionRec := RECORD STRING TransactionID {XPATH('@ID')}; STRING10 StartDate {XPATH('StartDate')}; STRING10 LapseDate {XPATH('LapseDate')}; STRING FormType {XPATH('FormType')}; STRING AmendType {XPATH('AmendType')}; STRING AmendAction {XPATH('AmendAction')}; STRING10 EnteredDate {XPATH('EnteredDate')}; STRING10 ReceivedDate {XPATH('ReceivedDate')}; STRING10 ApprovedDate {XPATH('ApprovedDate')}; DATASET(PartyRec) Debtors {XPATH('Debtor')}; DATASET(PartyRec) SecuredParties {XPATH('SecuredParty')}; CollateralRec Collateral {XPATH('Collateral')} END; UCC_Rec := RECORD STRING FilingNumber {XPATH('@number')}; DATASET(TransactionRec) Transactions {XPATH('Transaction')}; END; UCC := DATASET('~PROGGUIDE::EXAMPLEDATA::XML_UCC',UCC_Rec,XML('UCC/Filing')); XactTbl := TABLE(UCC,{INTEGER XactCount := COUNT(Transactions), UCC}); OUTPUT(XactTbl); Out_Transacts := RECORD STRING FilingNumber; STRING TransactionID; STRING10 StartDate; STRING10 LapseDate; STRING FormType; STRING AmendType; STRING AmendAction; STRING10 EnteredDate; STRING10 ReceivedDate; STRING10 ApprovedDate; DATASET(PartyRec) Debtors; DATASET(PartyRec) SecuredParties; CollateralRec Collateral; END; Out_Transacts Get_Transacts(XactTbl L, INTEGER C) := TRANSFORM SELF.FilingNumber := L.FilingNumber; SELF := L.Transactions[C]; END; Transacts := NORMALIZE(XactTbl, LEFT.XactCount,Get_Transacts(LEFT,COUNTER)); OUTPUT(Transacts); PartyCounts := TABLE(Transacts, {INTEGER DebtorCount := COUNT(Debtors), INTEGER PartyCount := COUNT(SecuredParties), Transacts}); OUTPUT(PartyCounts); Out_Parties := RECORD STRING FilingNumber; STRING TransactionID; PartyRec; END; Out_Parties Get_Debtors(PartyCounts L, INTEGER C) := TRANSFORM SELF.FilingNumber := L.FilingNumber; SELF.TransactionID := L.TransactionID; SELF := L.Debtors[C]; END; TransactDebtors := NORMALIZE( PartyCounts, LEFT.DebtorCount, Get_Debtors(LEFT,COUNTER)); OUTPUT(TransactDebtors); Out_Parties Get_Parties(PartyCounts L, INTEGER C) := TRANSFORM SELF.FilingNumber := L.FilingNumber; SELF.TransactionID := L.TransactionID; SELF := L.SecuredParties[C]; END; TransactParties := NORMALIZE(PartyCounts, LEFT.PartyCount, Get_Parties(LEFT,COUNTER)); OUTPUT(TransactParties);