Good points, Joe.
RPG may be a procedurally oriented language, but having variables and data with module-level scope is no different than having variables and data with class-level scope in an OO language.
I wouldn't like it if I had to redefine every file, data structure, klist, and other types of variables in every sub-procedure, or reference them through procedure parameters, just to comply with a coding style advocated by a minority.
I may not be an advocate of GOTO, but what are ENDDO and ENDFOR if not GOTO in disguise?
Nathan.
----- Original Message ----
From: Joe Pluta <joepluta@xxxxxxxxxxxxxxxxx>
To: RPG programming on the AS400 / iSeries <rpg400-l@xxxxxxxxxxxx>
Sent: Friday, August 10, 2007 10:31:46 AM
Subject: RE: Todays WTF
From: Steve Richter
When the subrtn uses a global variable that is assigned to in one
routine and then used as input 3 routines down the call stack, that is
another detail. The end result, is a pile of details that
unnecessarily bog down your work.
Not to argue the point, but I've found a really nice use for subroutines. I
use subroutines INSIDE of procedures to break out repetitive code or simply
top keep the mainline of the procedure down when the code is complex. The
subroutines can access any of the procedure's local variables, much the same
way that methods can use private class variables.
It allows me to share variables among parts of the code without having to
explicitly pass them up and down the stack. It's a tradeoff, because if one
of the subroutines modifies the variable then it's technically a side
effect, which should be avoided, but in reality it can be a real time saver
not having to prototype a bunch of procedures that are only used in one
place.
Joe
As an Amazon Associate we earn from qualifying purchases.