× 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.



The problem is that the subprocedure/subroutine often grows.  And, since 
you started it right in the first place, it grows right.

For example, I was once questioned on this list why I would do
C/Exec SQL
C...
C/End-Exec
 /free
  // one line of code
 /end-free
C/Exec SQL
C...
C/End-Exec

But once I explained that how do you make a decision that the line has now 
exceeded a predetermined minimum number of lines needed to justify 
converting to free form?  Especially when people are loath to change code 
that is working.  But if you start out right...

I once worked for a shop that, when doing COBOL, (the owner was a stickler 
on COBOL standards since that was the language he last used to code in 
back when he still used to get dirty), that you were forbidden to use a 
PERFORM statement without a PERFORM THRU.  Drove me nuts at first, but 
made sense when you started adding paragraphs.

Rob Berendt
-- 
"They that can give up essential liberty to obtain a little temporary 
safety deserve neither liberty nor safety." 
Benjamin Franklin 




Dan <dbcerpg@yahoo.com>
Sent by: rpg400-l-bounces@midrange.com
02/12/2003 11:09 AM
Please respond to RPG programming on the AS400 / iSeries
 
        To:     RPG programming on the AS400 / iSeries 
<rpg400-l@midrange.com>
        cc: 
        Fax to: 
        Subject:        Re: "If %scan(x:y)" is not valid???


I know I invite trouble when sparring with one of the masters, but... <g> 

--- Jon Paris <Jon.Paris@Partner400.com> wrote:
>  >> As for your suggestion that it would be more appropriate to use 
%check,
> I dunno.
> 
> Well you are performing a check on the value so it seemed appropriate - 
you
> aren't scanning.  I look at it from the maintenance perspective - if 
another
> programmer sees %Check( ValidTypeCodes: TransType ) it just "spells it 
out"
> better for me.

Well, I'm not sure, but I think I see your point on this.  Will have to 
play with it to see if
passes my hard-wired "spell checker".

> However - It shouldn't matter _what_ method you use 'cos it should never 
be
> in the mainline code anyway - I'd rather see it buried in a subproc that
> returns an indicator (thereby allowing the simple If you desire).  So 
what
> should be coded is If Validxxxxx(xxxxxCode) or whatever.

<simpleton vs. guru debate - danger!>
<BUT, TAKE NOTE, THIS ARGUMENT ONLY APPLIES TO *ONE-STATEMENT* SUBROUTINES 
/ SUBPROCS!>
Jon, I am in complete disagreement here.  (Might as well not beat around 
the bush!)  I have to
maintain programs where the original author thought, somehow, it is 
"better" programming to write
a subroutine that has one statement in it.  So, for example, I'll see 
something like this at the
end of the mainline:
      c                   Exsr     S0Exit

Then, buried somewhere else in the program is:
      c    S0Exit         Begsr
      c                   Eval     *inLR = *On
      c                   Endsr

THIS DRIVES ME NUTS!  Nothing is more frustrating than searching through 
source looking to find a
subroutine that has one statement in it.  When I have to maintain such a 
program, the
one-statement subroutines disappear before I do anything else.  Maybe the 
original author knows
exactly what "Exsr SoExit" does.  Does anyone else, with certainty? 

     <____ The Code ____>  < Who understands it? >
     Exsr     S0Exit       Only the original author
     Eval     *inLR = *On  EVERYONE

I believe this is a pretty close analogy to your suggestion of turning
      C                   If       %scan( W_WIPSTA : 'BHIP') > 0
(or   C                   If       %check( 'BHIP' : W_WIPSTA) = 0        )
into:
      C                   If       Validxxxxx(xxxxxCode)

No matter which one I use, I'm still going to look at the %scan (or 
%check) expression to
determine what it's doing.  Why hide it somewhere else in the source?

As per my disclaimer above, my argument changes as the number of 
statements in a block of code
increases, and the number of times that the block of code is called upon 
in the program.

<feeling punchy this week, *still* single digits outside!>

- Dan

__________________________________________________
Do you Yahoo!?
Yahoo! Shopping - Send Flowers for Valentine's Day
http://shopping.yahoo.com
_______________________________________________
This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list
To post a message email: RPG400-L@midrange.com
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@midrange.com
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:
Replies:

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.