A little while back, Phil introduced us to a group of developers from The Flat File Society who were forced to do relational database. Phil is still at the client site and was tapped to lend a hand with a communication project the programmers were struggling with. They were able to get their data in XML format, but the vendor still rejected it, despite the fact that they said they could transform one XML to another without problems ...
<?xml version="1.0" encoding="UTF-8"?> <converter> <orderspec> [FlexibleOrderReader] algorithm = orderalgo.ini step = no ; Order algorithm for TPS Order Package [HEADER] ;beginning of order message format = order.PositionFormat recognizer = order.StartsWithRecognizer recognizedBy = HEADER ;Order Date in yyyyMMdd format ORDERDATE = 7,8 SUPPLIER_ID = 15,8 CUSTOMER_ID = 23,8 ACCOUNT_NUMBER = 31,10 CUSTOMER_CONTACT = 41,20 PO_NUMBER = 61,15 ORDERTYPE = 76,6 SHIPTOCODE = 82,5 SHIPTONAME = 87,30 SHIPTOADDRESS1 = 117,30 SHIPTOADDRESS2 = 147,30 SHIPTOCITY = 177,30 SHIPTOCOUNTY = 207,30 SHIPTOZIP = 237,10 SHIPTOCOUNTRY = 247,30 SHIPVIACODE = 277,5 HEADERNOTES = 282,250 [LINE] ;order Line format = order.PositionFormat recognizer = order.StartsWithRecognizer recognizedBy = LINE CUST_LINENUMBER = 7,3 CUSTOMER_PARTNUMBER = 10,30 SUPPLIER_PARTNUMBER = 40,30 PART_DESCRIPTION = 70,30 PACKAGE_CODE = 100,2 ;Quantity with no seperators, right formatted REQUIRED_QTY = 102,10 ;Delivery Date in yyyyMMdd format REQUIRED_DATE = 112,8 DISPATCH_POINT_CODE = 120,1 ;Price with 2 decimal places, and . as seperator, right formatted PRICE = 121,8 ;Additional Product Reference not yet mapped PRODUCT_REFERENCE1 = 129,20 PRODUCT_REFERENCE1 = 149,20 LINENOTES = 169,250 </orderspec> <orderalgo> Format HEADER Format LINE Order order Line line Record recHEADER Record recLINE Field dash Field ENDID ; Field OTHER used for copying Vendor Part Number to Manufacturer Part Number if required Field OTHER Field SUPPLIER set dash = word - set OTHER = word OTHER if next is HEADER clear order read recHEADER copy ORDERDATE in recHEADER to ORDEREDDATETIMEYEAR in order reformat ORDEREDDATETIMEYEAR in order from yyyyMMdd to yyyy copy ORDERDATE in recHEADER to ORDEREDDATETIMEMONTH in order reformat ORDEREDDATETIMEMONTH in order from yyyyMMdd to MM copy ORDERDATE in recHEADER to ORDEREDDATETIMEDAY in order reformat ORDEREDDATETIMEDAY in order from yyyyMMdd to dd copy SUPPLIER_ID in recHEADER to ORDERTYPE in order copy SUPPLIER_ID in recHEADER to CUSTOMERACCOUNTID in order copy SUPPLIER_ID in recHEADER to SUPPLIERID in order copy SUPPLIER_ID in recHEADER to SUPPLIERCOMPANYNAME in order copy SUPPLIER_ID in recHEADER to SUPPLIER copy CUSTOMER_ID in recHEADER to CUSTOMERCOMPANYNAME in order copy ACCOUNT_NUMBER in recHEADER to CUSTOMERACCOUNTID in order copy CUSTOMER_CONTACT in recHEADER to CUSTOMERORDEREDBY in order copy PO_NUMBER in recHEADER to PONUMBER in order extend ORDERTYPE in order with dash extend ORDERTYPE in order with ORDERTYPE in recHEADER copy SHIPTOCODE in recHEADER to SHIPTOCODE in order copy SHIPTOADDRESS1 in recHEADER to SHIPTOADDRESSLINE1 in order copy SHIPTOADDRESS2 in recHEADER to SHIPTOADDRESSLINE2 in order copy SHIPTOCITY in recHEADER to SHIPTOCITY in order copy SHIPTOCOUNTY in recHEADER to SHIPTOCOUNTY in order copy SHIPTOZIP in recHEADER to SHIPTOPOSTALCODE in order copy SHIPTOCOUNTRY in recHEADER to SHIPTOCOUNTRY in order copy SHIPVIACODE in recHEADER to SHIPVIACODE in order copy HEADERNOTES in recHEADER to NOTES in order ; ENDID based on order number, registration date and customer code copy PO_NUMBER in recHEADER to ENDID in order extend ENDID in order with ORDERDATE in recHEADER extend ENDID in order with CUSTOMER_ID in recHEADER while next is LINE clear line read recLINE copy CUST_LINENUMBER in recLINE to CUSTOMERLINENUMBER in line copy CUSTOMER_PARTNUMBER in recLINE to CUSTOMERPARTNUMBER in line if not equal SUPPLIER and OTHER copy SUPPLIER_PARTNUMBER in recLINE to VENDORPARTNUMBER in line endif if equal SUPPLIER and OTHER copy VENDOR_PARTNUMBER in recLINE to MANUFACTURERPARTNUMBER in line endif copy PART_DESCRIPTION in recLINE to PARTDESCRIPTION in line copy PACKAGE_CODE in recLINE to PACKINGCODE in line copy REQUIRED_QTY in recLINE to REQUIREDQUANTITY in line copy REQUIRED_DATE in recLINE to REQUIREDDATETIMEYEAR in line reformat REQUIREDDATETIMEYEAR in line from yyyyMMdd to yyyy copy REQUIRED_DATE in recLINE to REQUIREDDATETIMEMONTH in line reformat REQUIREDDATETIMEMONTH in line from yyyyMMdd to MM copy REQUIRED_DATE in recLINE to REQUIREDDATETIMEDAY in line reformat REQUIREDDATETIMEDAY in line from yyyyMMdd to dd copy DISPATCH_POINT_CODE in recLINE to WAREHOUSECODE in line copy PRICE in recLINE to UNITOPERAMT in line copy LINENOTES in recLINE to NOTES in line copy ENDID in order to ENDID in line add line to order endwhile save order endif </orderalgo> </converter>
[Advertisement]
BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!