Re: Productivity
- From: "Frank Swarbrick" <Frank.Swarbrick@xxxxxxxxxxxxxx>
- Date: Fri, 29 Dec 2006 13:20:31 -0700
Pete Dashwood<dashwood@xxxxxxxxxxxxxxxxxxxxxxxxx> 12/28/06 4:34 PM >>>
"Frank Swarbrick" <Frank.Swarbrick@xxxxxxxxxxxxxx> wrote in message
news:4vimr5F1cedo7U1@xxxxxxxxxxxxxxxxxxxxx
Pete Dashwood<dashwood@xxxxxxxxxxxxxxxxxxxxxxxxx> 12/27/06 5:59 PM >>>
I am certainly *not* against using all of the power that COBOL provides.
"Frank Swarbrick" <Frank.Swarbrick@xxxxxxxxxxxxxx> wrote in message
news:4vfl66F1as7a4U1@xxxxxxxxxxxxxxxxxxxxx
Pete Dashwood<dashwood@xxxxxxxxxxxxxxxxxxxxxxxxx> 12/27/06 3:40 AM >>>
"Frank Swarbrick" <infocat@xxxxxxxxxxxxx> wrote in message
It'sI
only recently used DECLARATIVES recently to handle file I/O errors.
usedactually quite nice, not having to check the status after each I/O.
Should
be a bit more powerful to be *really* useful, but I'd be happy to see
others
understand and use it. My manager at first was against my use of this,
but
I convinced him by pointing out that it's an "implicit perform" rather
than
an "implicit goto".
Yes, DECLARATIVES can be very useful. In the old days, before disks, we
them all the time to handle tape errors... :-)
It's still useful to handle "file out of space" conditions. (Somethat that
never happens in the world of tape processing!)
I've also recently been using UNSTRING, which I hadn't made a lot of use
withof
in the past. Below is something I was working on the other day. I had
hoped to be able to get it in to a single "UNSTRING", but I ended up
wheretwo and I'm fairly happy with it. Essentially, it parses some input
fields are delimited by '|' (MSG-FIELD-DELIMITER), and for each field
there
can be both a parm name and a parm value delimited by '='
Do you mean it looks like this: |name=value=| or |name=value| ?
The latter.
then(MSG-FIELD-SEPARATOR), or just a parm name (no '='). Each perform of
300-PARSE-INPUT-DATA should result in the parsing of one field, putting
the
parm name into INPUT-STRING-ID and the parm value (if present) into
INPUT-STRING-PARM. If the field is a "null" field (essentially '||')
thisthe flag END-OF-REQUEST should be set.
If you can clarify the use of = as requested above, I believe I can do
with a single UNSTRING.
Here's an example:
userId=FJS¦location=AURO¦function=filmRequest¦acctNumber=1234567890¦userExte
nsion=1403¦routing=branch¦routeLoc=K-MISS¦routeAttn=Joe¦comments=Comments Go
Here¦type=debit¦date=121306¦amount=100.00¦sequenceNbr=12345678¦¦type=credit¦
date=051406¦amount=900.00¦sequenceNbr=11122233¦¦type=ATM¦date=010106¦amount=
123.45¦¦type=chargeback¦date=010106¦amount=500.00¦¦type=statement¦date=03290
6¦amount=1000.00¦
In this case there are none with just the parm name and not the parm value.
In fact so far we have no cases like that, but I'm trying to "think ahead"
just in case we do want to allow for that. So, just so we have a better
example, let me change the above to this (I removed the "type=", leaving
just the value (which would now be considered the "string ID" rather than
the "string parm"):
userId=FJS¦location=AURO¦function=filmRequest¦acctNumber=1234567890¦userExte
nsion=1403¦routing=branch¦routeLoc=K-MISS¦routeAttn=Joe¦comments=Comments Go
Here¦debit¦date=121306¦amount=100.00¦sequenceNbr=12345678¦¦credit¦date=05140
6¦amount=900.00¦sequenceNbr=11122233¦¦ATM¦date=010106¦amount=123.45¦¦chargeb
ack¦date=010106¦amount=500.00¦¦statement¦date=032906¦amount=1000.00¦
So the result should be:
INPUT-STRING-ID=userId
INPUT-STRING-PARM=FJS
INPUT-STRING-ID=location
INPUT-STRING-PARM=AURO
INPUT-STRING-ID=function
INPUT-STRING-PARM=filmRequest
INPUT-STRING-ID=acctNumber
INPUT-STRING-PARM=1234567890
INPUT-STRING-ID=userExtension
INPUT-STRING-PARM=1403
INPUT-STRING-ID=routing
INPUT-STRING-PARM=branch
INPUT-STRING-ID=routeLoc
INPUT-STRING-PARM=K-MISS
INPUT-STRING-ID=routeAttn
INPUT-STRING-PARM=Joe
INPUT-STRING-ID=comments
INPUT-STRING-PARM=Comments Go Here
INPUT-STRING-ID=debit
INPUT-STRING-PARM=
INPUT-STRING-ID=date
INPUT-STRING-PARM=121306
INPUT-STRING-ID=amount
INPUT-STRING-PARM=100.00
INPUT-STRING-ID=sequenceNbr
INPUT-STRING-PARM=12345678
INPUT-STRING-ID=
INPUT-STRING-PARM=
INPUT-STRING-ID=credit
INPUT-STRING-PARM=
INPUT-STRING-ID=date
INPUT-STRING-PARM=051406
INPUT-STRING-ID=amount
INPUT-STRING-PARM=900.00
INPUT-STRING-ID=sequenceNbr
INPUT-STRING-PARM=11122233
INPUT-STRING-ID=
INPUT-STRING-PARM=
INPUT-STRING-ID=ATM
INPUT-STRING-PARM=
INPUT-STRING-ID=date
INPUT-STRING-PARM=010106
INPUT-STRING-ID=amount
INPUT-STRING-PARM=123.45
INPUT-STRING-ID=
INPUT-STRING-PARM=
INPUT-STRING-ID=chargeback
INPUT-STRING-PARM=
INPUT-STRING-ID=date
INPUT-STRING-PARM=010106
INPUT-STRING-ID=amount
INPUT-STRING-PARM=500.00
INPUT-STRING-ID=
INPUT-STRING-PARM=
INPUT-STRING-ID=statement
INPUT-STRING-PARM=
INPUT-STRING-ID=date
INPUT-STRING-PARM=032906
INPUT-STRING-ID=amount
INPUT-STRING-PARM=1000.00
Having said that, what you have posted is pretty good, especially for an
early attempt :-)
Well, it's not like I just came up with it all at once. :-) I tried a few
things and that was the one that worked.
I think I would unstring ALL of the parameters into a name/value array
during initialization, rather than go back to the arguments during
processing, but that is just me...
We are doing this, just not within this paragraph. After each
300-PARSE-INPUT-DATA is done there's a validation routine, and if the parm
is valid then INPUT-STRING-ID and INPUT-STRING-PARM are placed into just
such an array. That array is then passed to the appropriate sub-program
(depending on the value of the "function" parameter) for further
processing.
Post some example parameter strings so we can be sure we are on the same
wavelength and I'll post what my solution would be. There are many ways to
do this; I'm not saying mine is the best, but it would use a single
UNSTRING.
See above. I am preparing myself to be amazed. :-)
<snip>
I sometimes (often?) wish I worked in a job where I could take advantage
of
such tools, rather than just fooling around with them at home. Our
Windows
applications team is now using Visual C# and sometimes I am jealous!
(They
had been using Borland Delphi previously, but were having a hard time
finding Delphi developers.)
That is very interesting to me as I'm getting into C# at the moment. I was
wondering if any Corporates were looking at it... Statistics say they are,
but it is nice to have this confirmed by some first hand reports.framework
The questions are not relevant if VS2005 is used, as the DotNET
handles them.
When do we get .NET for the mainframe? :-)
Er... I think it's called LE :-)
Ho ho ho.
That is up to you, of course. I, for one, value your contributions, even
if
it sometimes appears that I don't. :-)
Thanks :-)
Frank
---
Frank Swarbrick
Senior Developer/Analyst - Mainframe Applications
FirstBank Data Corporation - Lakewood, CO USA
.
- Follow-Ups:
- Re: Productivity
- From: Pete Dashwood
- Re: Productivity
- References:
- Productivity
- From: Pete Dashwood
- Re: Productivity
- From: HeyBub
- Re: Productivity
- From: Pete Dashwood
- Re: Productivity
- From: Robert Jones
- Re: Productivity
- From: Pete Dashwood
- Re: Productivity
- From: Frank Swarbrick
- Re: Productivity
- From: Pete Dashwood
- Re: Productivity
- From: Frank Swarbrick
- Re: Productivity
- From: Pete Dashwood
- Re: Productivity
- From: Frank Swarbrick
- Re: Productivity
- From: Pete Dashwood
- Productivity
- Prev by Date: Re: COBOL format definitions?
- Next by Date: Re: Productivity
- Previous by thread: Re: Productivity
- Next by thread: Re: Productivity
- Index(es):