× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



I'm married and have kids!  Sanity?  What's that? ;-)

Rick Weber  |  TOYS 'Я' US International 


-----Original Message-----
From: rick baird [mailto:rick.baird@xxxxxxxxx] 
Sent: Tuesday, February 28, 2006 3:10 PM
To: RPG programming on the AS400 / iSeries
Subject: Re: worst RPG ever seen?

Yes, but which is more important?  job security or sanity?

On 2/28/06, Weber, Richard <Weberr@xxxxxxxxxxx> wrote:
> ...And you've got job security!  See, it worked!
>
> Rick Weber  |  TOYS 'Я' US International
>
>
> -----Original Message-----
> From: rick baird [mailto:rick.baird@xxxxxxxxx]
> Sent: Tuesday, February 28, 2006 2:36 PM
> To: RPG programming on the AS400 / iSeries
> Subject: Re: worst RPG ever seen?
>
> I recently had the distinct displeasure of working on a program that
> was written by a guy I worked with about 16 years ago.  luckily, I
> never had to directly work with the guy on a project back then, as his
> reputation preceded him and I refused.
>
> He moved on and sub-contracted at the company I'm working for now.
>
> This program was a bloody mess.
>
> 22K lines of code.  It was an order detail mass maintenance - allowing
> change of multiple lines on multiple orders, based on selection
> criteria.  It updated the order relationships between about 20
> different files.
>
> Their were 8 screens, all of them nearly exactly identical except for
> one or two fields out of a hundred or so on each screen - but the
> fields were all named differently.  The subroutines to process these
> screens were likewise nearly identical, except for about 1% of the
> lines of code, and of course the different field names.
>
> each screen had about 20 subroutines that were used to process them,
> and they were named sequentially:  SUB1#A, SUB1#B, SUB1#C....  SUB2#A,
> SUB2#B, SUB2#C.... ect.
>
> he didn't use indicators, but what he did was worse - he used
> attribute byte fields that he also named sequentially - fa1#01,
> fa2#01, fa3#03... etc.
>
> That was not the worst of it.    for each of the 8 screens, he had 6
> different data structures with hard coded beginning and ending
> positions, so that he could pass the data back and forth between the
> data structures easily - a nice technique if done right, this wasn't.
>
> typically, a single "setoff" and 3 or 4 "verify" subroutine would be
> called at least 10 times for each <enter> pressed.   Sometimes the
> verify subroutines would work with the screen fields, sometimes they'd
> work with the datastructure fields.  sometimes both at once, sometimes
> several different DSs at once.
>
> to make matters worse, it always dropped clear out of a subroutine and
> reentered another subroutine based on the value of a variable that he
> would increment like so:
>
> sub#   caseq 1      sub1#A
> sub#   caseq 2      sub1#B
> sub#   caseq 3      sub1#C
> sub#   caseq 4      sub1#D
> ...
> ...
> begsr
> ...
> add   6   sub#
> endsr
>
> For days, I would step through this thing in debug mode, never really
> knowing where I was, and for what purpose.  In 23 years, I've never
> been as frustrated from working on a program than I was this time.   I
> was very close to giving up - actually stating to the customer that,
> no, I refuse to work with this thing any longer.
>
> after about 3 weeks of screwing around with this abomination, I
> suddenly had an epiphany about the rhyme and reason for a couple of
> the more damnable parts of his code, and was able to make the
> necessary changes and get rid of it.
>
> Several people have told me that this guy admitted to purposefully
> making his programs as difficult to read as possible, even throwing in
> every trick he could think of to obfuscate the actual intentions of
> the code.
>
> The reason?  Job security.   yes.  Those people do exist.
>
> I wished I had actually worked with this dud back in the day, because
> I would have surely strangled him.  If a programmer was on the jury,
> I'd be aquitted - if not, no jury in the land would have given me
> worse than manslaughter, and by now I would have been out of jail, and
> would never have seen this program.
>
> Now, i'm the order detail mass maintenance expert here, so if they
> need more changes, I'll be the guy.   I can't wait.
>
> Rick
>
> --
> This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list
> To post a message email: RPG400-L@xxxxxxxxxxxx
> To subscribe, unsubscribe, or change list options,
> visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
> or email: RPG400-L-request@xxxxxxxxxxxx
> Before posting, please take a moment to review the archives
> at http://archive.midrange.com/rpg400-l.
>
> ========================================================================
> This email message is for the sole use of the intended recipient (s) and
may
> contain confidential and privileged information. Any unauthorized review,
> use, disclosure or distribution is prohibited. If you are not the intended
> recipient, please contact the sender by reply email and destroy all copies
> of the original message. To reply to our email administrator directly,
send
> an email to EmailAdmin@xxxxxxxxxxxx
> Toys "R" Us, Inc.
>
> --
> This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list
> To post a message email: RPG400-L@xxxxxxxxxxxx
> To subscribe, unsubscribe, or change list options,
> visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
> or email: RPG400-L-request@xxxxxxxxxxxx
> Before posting, please take a moment to review the archives
> at http://archive.midrange.com/rpg400-l.
>
>


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.