----- Original Message ----- > From: Steve Comstock <[email protected]> > To: [email protected] > Cc: > Sent: Saturday, April 7, 2012 8:46 AM > Subject: Re: Enterprise COBOL and XML attributes > > On 4/6/2012 5:29 PM, Frank Swarbrick wrote: >> Enterprise COBOL v4.2. >> >> >> First real >> world attempt at using XML GENERATE. Works as designed, and relatively >> user friendly, but not particularly flexible for real world >> requirements. >> >> XML >> GENERATE will generate no fields as attributes unless with WITH >> ATTRIBUTES phrase is specified. In that case it will generate >> attributes (rather than elements) ANYWHERE it can. >> >> I >> just want to make sure, before I go any further, that there is >> ABSOLUTELY NO WAY, using just XML GENERATE, that some fields that COULD >> be attributes can not be forced to be elements if the WITH ATTRIBUTES >> phrase is specified. For example, I cannot generate the following using >> XML GENERATE alone (no post-processing to modify the generated XML >> document): >> >> <underwritingrequest> >> <crossSellOfferId>12000</crossSellOfferId> >> <channelType>WEB-IA</channelType> >> <offerCategory>Consumer</offerCategory> >> <preApprovedProds> >> <product categoryCode="CC" limit="5000"/> >> <product categoryCode="CR" limit="1000"/> >> </preApprovedProds> >> <parties> >> <party> >> <dob>01/01/1950</dob> >> <scoreNo>725298</scoreNo> >> <income>100000</income> >> <housingExpense>1200</housingExpense> >> <housingStatus>Owns</housingStatus> >> </party> >> </parties> >> </underwritingrequest> >> >> As you can see, all of the "elementary" data items are XML > elements EXCEPT for the "categoryCode" and "limit" fields > under "product". >> >> Current COBOL group data item: >> 01 underwritingrequest. >> 05 crossSellOfferId pic x(10). >> 05 channelType pic x(10). >> 05 preApprovedProds. >> 10 product. >> 15 categoryCode pic x(2). >> 15 l1mit pic 9(7). >> 05 parties. >> 10 party occurs 1 to 10 times >> depending on party-count >> indexed by p_idx. >> 15 dob pic 99/99/9999. >> 15 scoreNo pic 9(9). >> 15 income pic 9(9). >> 15 housingExpense pic 9(9). >> 15 housingStatus pic x(10). >> >> >> Please note that I have seen the tech note "XML GENERATE should create > attributes under COBOL"; >> >> http://www-01.ibm.com/support/docview.wss?uid=swg21218516 >> All I can say is (to quote Seth Meyers and Amy Poehler): > "Really?!?!" >> >> Since we own the process that consumes this XML document I hope I can > convince them to go either all attributes or all elements, but not this > little > mish-mash. But I want to make sure I am not missing something SIMPLE that I > can > do to get what they really want. >> >> (I already have to change use field name '1imit' instead of > 'limit' and then do INSPECT UWR-DOC REPLACING ALL "l1mit" BY > "limit", because LIMIT is a COBOL reserved word. Oy!) >> >> ....some short time later.... >> Ah hah, here's a trick. I don't love it, but I can perhaps live > with it. I >> canspecify OCCURS 1 for any field that I want to be an element rather >> than an attribute: >> >> 01 underwritingrequest. >> 05 crossSellOfferId pic x(10) occurs 1. >> 05 channelType pic x(10) occurs 1. >> 05 preApprovedProds. >> 10 product. >> 15 categoryCode pic x(2). >> 15 l1mit pic 9(7). >> 05 parties. >> 10 party occurs 1 to 10 times >> depending on party-count >> indexed by p_idx. >> 15 dob pic 99/99/9999 occurs 1. >> 15 scoreNo pic 9(9) occurs 1. >> 15 income pic 9(9) occurs 1. >> 15 housingExpense pic 9(9) occurs 1. >> 15 housingStatus pic x(10) occurs 1. >> >> >> Funky, but it works. Of course I now have to use a subscript qualification >> (oran extra one, in the case of the "party" children. Oh well! >> >> If there's a better way I'd still like to know, but at least I got > it to work. >> >> >> Thanks! >> >> Frank > > Frank, > > That is really cool! How did you come up with that? I'm going > to add that technique to my course "Enterprise COBOL: Unicode > and XML Support". >
Is it really that cool? Rather a kludge. Discovering it was a combination of figuring out what kind of fields could not be converted to attributes (fields with "occurrences"), and the fact that we have a vendor XML product that also uses the "occurs 1" kludge, but for a different reason. (for what I am wanting here it seemed simpler to use Enterprise COBOL XML support; plus I wanted to try it out.) Frank ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN

