Post #196,870
3/1/05 10:39:53 PM
|
I've recently signed up for a deathmarch.
Customer wants some additional reporting.
System has been in place over 10 years.
It is written in a mixture of JCL, QuikJob, COBOL, and 3rd party mainframe applications.
We don't track the data the customer wants reported on.
So either EVERY piece of the system needs to be modified, or a large portion need to be rewritten.
I found the cleanest separation point, where the reformats end and the 3rd part apps start, so I'm trying to rewrite everything before that point.
Which means I need to understand what was written already.
Docs? What are those? This system was hacked together, and then modified as per daily customer phone calls. For 10 years.
QuikJob is horrible. Think mainframe AWK, but then dumbed down to be assembler with default file access taken care off for you.
The only flow constructs are "if" and "goto". There is no "endif" or "else", so the standard way of coding in it is to test for thing you don't want, goto past the current bit of code. So then the default case gets executed, which then need to do a goto past the non-default case code.
Writing in it (or reading it) feels like coding by skipping interleaving rocks on a lake.
If course, the QuikJob code is a blessing as compared to the COBOL. 10,000 lines'o'crap. 10 years of special case exception code. 10 years of a dozen different mediocre or crappy programmers hacking at it. In our company, the tape monkeys become print operators who become computer "production" people, who become "programmers", with no training or aptitude, they merely fall into place and cut&paste the crap the previous person did. 10 years of blind alleys, coded once, and then needed to be maintained forever. This is because the data that can trigger these special cases may show up anythime in the future (or NEVER), and I have no know old data to run through it, so I'll have no way of knowing if I got it right until some production blows up.
Whine whine whine bitch bitch bitch.
While this is "reports", is also means altered workflow on the shop floor, with additional barcode tracking, which means I have a lot of people pissed off at me as I add to their work load and increase accountability.
The reports have been promised.
They WILL get done.
On time, DAMMIT!!!
My boss thinks the 10,000 lines of COBOL will end up to be 500 lines of Perl, TOPS! He's hallucinating, of course, but he's allowed. After all, he DOES have a brain tumor.
Doesn't matter how many lines it ends up being, what matters is understanding the current code.
|
Post #196,871
3/1/05 10:46:46 PM
|
Luck! I think you'll need it. :-(
|
Post #196,872
3/1/05 10:49:55 PM
|
reverse engineer
take current customer input, current output to customer, new report functions and see how to get from a to be without touching all the soft spots. thanx, bill
Any opinions expressed by me are mine alone, posted from my home computer, on my own time as a free american and do not reflect the opinions of any person or company that I have had professional relations with in the past 48 years. meep questions, help? [link|mailto:pappas@catholic.org|email pappas at catholic.org]
|
Post #196,874
3/1/05 11:05:12 PM
|
HEHEHEH
Daily feed is a file of approx 60,000 lines. This contains self-referential lookups, lookups into 1/2 a dozen varying VSAM tables, lookups into our daily changing BOM master, lookups into our daily changing inventory, with multiple stopping points as people scramble to modify one of those files when they find a lookup doesn't match, either overriding the lookup with a hack of the data, or overriding to point to a different entry in one of our files, or a combination.
Every single one of these files must match for a successful run, and they are never the same from day to day. No way in hell to pull any historical data more than 7 days old, which means a miniscule amount of code can be tested since the input is wildly varying based on the campaign of the moment.
|
Post #196,875
3/1/05 11:09:21 PM
|
I know you like pain
So enjoy. :-P
Cheers, Ben
I have come to believe that idealism without discipline is a quick road to disaster, while discipline without idealism is pointless. -- Aaron Ward (my brother)
|
Post #196,881
3/2/05 1:07:09 AM
8/21/07 5:44:44 AM
|
Been there
Only it was ancient Fortran - computed goto's - oh yeah.
I ended up wallpapering my office and most of a hallway with the listing and using hilighters to draw call chains. The original author used the copy and paste method of reuse so I did aggressive refactoring, eliminating about a third of the code and then applied my modifications to some well chosen bottlenecks.
Lots o' luck with that.
"Whenever you find you are on the side of the majority, it is time to pause and reflect" --Mark Twain
"The significant problems we face cannot be solved at the same level of thinking we were at when we created them." --Albert Einstein
"This is still a dangerous world. It's a world of madmen and uncertainty and potential mental losses." --George W. Bush
|
Post #196,978
3/3/05 1:34:19 AM
|
I did that once.
It was *extremely* cut-n-paste. The proggy was not that hard - it loaded crypto keys into a pinpad so it merely did a dozen or so send data, receive data cycles. Thing was, one cycle was 15 lines of Fortran. And that was cut-n-pasted everywhere it was needed.... *NGNHG*
After I rewrote it in C on a PC, the development guy who got to maintain it discovered he didn't know C anywhere near as well as he thought he did. Pointers to functions? Arrays of structures? Finite state machines? It was all new to him.
Wade.
Is it enough to love Is it enough to breathe Somebody rip my heart out And leave me here to bleed
| | Is it enough to die Somebody save my life I'd rather be Anything but Ordinary Please
| -- "Anything but Ordinary" by Avril Lavigne. |
|
Post #196,886
3/2/05 2:57:56 AM
|
volunteered for this?
ugh. put a stake in it.
Have fun, Carl Forde
|
Post #196,889
3/2/05 6:43:12 AM
|
Not exactly
The project started off with a MUCH larger scope, but a lot more interview / gather specs.
As it progressed, I realized how insanely large a total rewrite would be, including the 3rd party app integration, so I scaled it down to the absolute bare minimum that satisfied the requirements. Then I found out the customer really has no idea what the daily processing does, other than having the ability to review the final result (printed pages, things from inventory gathered, packaged, and shipped).
So rather than interview / gather spec, it became read old code, reengineer.
Note: The total rewrite WILL happen anyway, since as a corp goal, we are trying to get off the mainframe and all the apps that run the tail-end of this process, but not as part of this project.
|
Post #196,887
3/2/05 3:43:03 AM
|
Parse Error
I thought you said "Deathmatch" and thought "cool!".
Peter [link|http://www.ubuntulinux.org|Ubuntu Linux] [link|http://www.kuro5hin.org|There is no K5 Cabal] [link|http://guildenstern.dyndns.org|Home] Use P2P for legitimate purposes!
|
Post #196,888
3/2/05 6:32:27 AM
|
Deathmatch?
I'd volunteer for that if it was against the original author of the code.
I'll be meeting him next week for an hour or so. Last time he looked at this code was about 4 years ago. Fragile little old man. He works 2 days a week. He didn't want to talk to me about it.
|
Post #196,891
3/2/05 6:56:50 AM
|
Oh, man.
I feel for you. I hate COBOL. It was designed so that it can be easily read by non-programmers, maybe, but only if it's well written.
Damn.
[link|http://forfree.sytes.net|
] Imric's Tips for Living
- Paranoia Is a Survival Trait
- Pessimists are never disappointed - but sometimes, if they are very lucky, they can be pleasantly surprised...
- Even though everyone is out to get you, it doesn't matter unless you let them win.
|
Nothing is as simple as it seems in the beginning, As hopeless as it seems in the middle, Or as finished as it seems in the end.
|
|
Post #196,943
3/2/05 6:45:05 PM
|
No it wasn't.
Imagine hundreds of special cases like this: \n090396* JJW SKIP RECORDS PER MEMO OF 08-21\n IF IN-RECORD-TYPE = '40' AND\n IN-ITEM-NAME = 'TRVGENNOPHPH' AND\n (IN-MEMBER-NUMBER = '81313973 ' OR '81127887 ' OR\n '81127817 ' OR '81127815 ' OR\n '81127789 ' OR '81127888 ' OR\n '81127462 ' OR '81127101 ' OR\n '81127100 ' OR '81127017 ' OR\n '81127016 ' OR '81127015 ' OR\n '81126833 ' OR '80831411 ' OR\n '80831410 ' OR '80831409 ' OR\n '80831408 ' OR '80831407 ' OR\n '79605765 ' OR '71823026 ' OR\n '70313054 ' OR '69262548 ' OR\n '78644991 ')\n ADD 1 TO WS-SKIPA-COUNT\n GO TO 220-READ-NEXT.\n\n
|
Post #196,945
3/2/05 6:51:39 PM
|
Again, I hate COBOL.
[link|http://forfree.sytes.net|
] Imric's Tips for Living
- Paranoia Is a Survival Trait
- Pessimists are never disappointed - but sometimes, if they are very lucky, they can be pleasantly surprised...
- Even though everyone is out to get you, it doesn't matter unless you let them win.
|
Nothing is as simple as it seems in the beginning, As hopeless as it seems in the middle, Or as finished as it seems in the end.
|
|
Post #196,999
3/3/05 9:33:43 AM
|
Oh, that's not COBOL. I can write that kind of code in Java.
Would you like fries with that?
--
And what are we doing when the two most powerful nations on earth -- America and Israel -- stomp on the elementary rights of human beings?
-- letter to the editor from W. Ostermeier, Liechtenstein
|
Post #197,004
3/3/05 9:49:49 AM
|
That KIND of code, sure.
It was still written in COBOL. I can tell, it sent a shiver down my spine.
[link|http://forfree.sytes.net|
] Imric's Tips for Living
- Paranoia Is a Survival Trait
- Pessimists are never disappointed - but sometimes, if they are very lucky, they can be pleasantly surprised...
- Even though everyone is out to get you, it doesn't matter unless you let them win.
|
Nothing is as simple as it seems in the beginning, As hopeless as it seems in the middle, Or as finished as it seems in the end.
|
|
Post #197,000
3/3/05 9:37:31 AM
|
That looks like some of my QuickBASIC code. :-/
|
Post #198,195
3/12/05 11:06:12 AM
|
Now I see why it's a bear to maintain....
Hardcoded values in programs.
|
Post #198,199
3/12/05 11:55:47 AM
|
Now???
Does that mean you've been coding stuff like that, just not quite as bad?
|
Post #198,201
3/12/05 12:11:41 PM
|
No.. I stopped coding like that 10 years ago....
when I had to maintain someone's crap that was written like that.
But you're right, you have to go through it carefully, analyzing all the pieces and figuring out what you can "safely" extract. It takes months (or years if it's big). But the last time I did one like that was 1997, before Internet time.
|
Post #196,990
3/3/05 7:20:58 AM
|
Need some help?
been there, done that.
Once was mgr at a company where everything (order entry, inventory, BOM, Invoicing, pricing, shipping labels, pick lists, and don't recall what else) was done in ONE huge cobol program. Thing was so fragile, changing a flag in on spot could cause the program to abend in a completely different area. Had to carry a copy of the program with me at all times, even on vacation (once had to perform fix during a convention I was attending) in case of problems.
Send me the program, I'd love to be "productive" again. Producing Disaster Recovery plans that can never be used is getting tiring.
A good friend will come and bail you out of jail ... but, a true friend will be sitting next to you saying, "Damn...that was fun!"
|
Post #197,019
3/3/05 11:51:28 AM
|
*Can* never be, or *hopefully* will never be?
Just curious if it's a total boondoggle, or the general problem that you hope you never use your work.
===
Purveyor of Doc Hope's [link|http://DocHope.com|fresh-baked dog biscuits and pet treats]. [link|http://DocHope.com|http://DocHope.com]
|
Post #197,021
3/3/05 12:04:19 PM
3/3/05 5:10:42 PM
|
I'll keep it simple
Realized that the info is possibly restricted. I must be careful about what I say.
Still stands, if a disaster occurs here, the contingency plans would have to work for months (instead of the planned days) until normal operations could be stored.
Now you know why I get so frustrated at times.
Edited by jbrabeck
March 3, 2005, 05:10:42 PM EST
|
Post #197,024
3/3/05 12:26:26 PM
|
bbb ... b ... b .. bb ... bbbbb ...
Excuse me for a second while I push my eyes back into my head. Wow. Just, wow. One of your steps is, "Here, a miracle happens." Isn't it?
===
Purveyor of Doc Hope's [link|http://DocHope.com|fresh-baked dog biscuits and pet treats]. [link|http://DocHope.com|http://DocHope.com]
|
Post #197,034
3/3/05 1:04:40 PM
|
It is like this:
- Primary site has <insert disaster>
- Open a Retail Box marked "6 steps to a Miracle, in 10 minutes"©
- Sprinkle new and improved "Fairy Dust"™ throughout primary site...
- Open can marked "Miracle in a Can"™ spray around on dust from previous step.
- Goto nearest major body of water, Part it, for vendor train of goods
- Stack all hardware in the primary site
- Push the silvery button on "Miracle in a Can"™
- Wait ten minutes, open door.
- Everything is restored and functional
The only thing you have to worry about is getting your Vendors the same Kit you bought, so they can produce your needed items quickly.
-- [link|mailto:greg@gregfolkert.net|greg], [link|http://www.iwethey.org/ed_curry|REMEMBER ED CURRY!] @ iwethey[link|http://it.slashdot.org/comments.pl?sid=134485&cid=11233230|"Microsoft Security" is an even better oxymoron than "Military Intelligence"] No matter how much Microsoft supporters whine about how Linux and other operating systems have just as many bugs as their operating systems do, the bottom line is that the serious, gut-wrenching problems happen on Windows, not on Linux, not on Mac OS. -- [link|http://www.eweek.com/article2/0,1759,1622086,00.asp|source]
|
Post #197,069
3/3/05 5:11:39 PM
|
That's plural... Miracles. Greg got it in his post.
A good friend will come and bail you out of jail ... but, a true friend will be sitting next to you saying, "Damn...that was fun!"
|
Post #197,088
3/3/05 6:21:51 PM
|
Send an email to the admin
Beg removal. Edit history is here forever.
|
Post #198,200
3/12/05 12:03:44 PM
3/12/05 12:07:57 PM
|
Disaster Recovery
I have you beat. A SAN storage vendor has arrived at my company promising "DR in a box". Our legacy EDI system isn't on "that storage", but a shared adapter storage. They advised us that we would be running our EDI on "NFS mounted drives". Our hardware is "too old" to put on the SAN.
We were laughing in Oct/Nov as the vendor interviewed us and proposed plans.
They were approved by our board, so now we're crying. Our clustered file storage solution is on the "wrong vendor". In Oct/Nov advised them that the testing alone would grow our dept by 4 people. We're losing 1 person.
Add to that SarbOx, Production Support for Legacy system, developing the replacement system for Legacy, and the No More Pain project and we're over the top.
Edited by gdaustin
March 12, 2005, 12:07:57 PM EST
|