The problem with global variables is that they involve tight coupling of procedures. This reduces the re-usability of your code. All procedures that use a particular global variable must use it in the same way, and as such are tied together such that they cannot be used or modified independently. Sometimes this can be okay for procedures that are defined in the same class or module because they are tied together in the same source, but even this may cause issues. Best practice for code reuse is to create small independent sub-procedures with a single well defined interface. All data comes in through that interface, and all responses go out through that interface. No side effects allowed.
Mark Murphy
STAR BASE Consulting, Inc.
mmurphy@xxxxxxxxxxxxxxx
-----rpg400-l-bounces@xxxxxxxxxxxx wrote: -----
To: RPG programming on the IBM i / System i <rpg400-l@xxxxxxxxxxxx>
From: Jeff Young
Sent by: rpg400-l-bounces@xxxxxxxxxxxx
Date: 11/05/2010 02:44PM
Subject: Re: MAIN or cycleless programs.
Just curious, but if your proceedure needed a variable that had been defined
globaly and was not changing it, why would you not use the global value instead
of passing it.
Also, if you *wanted* your proceedure to update a global variable, why not just
use it instead of passing it as a parm?
Thanks,
Jeff Young
Sr. Programmer Analyst
IBM -e(logo) server Certified Systems Exper - iSeries Technical Solutions V5R2
IBM Certified Specialist- e(logo) server i5Series Technical Solutions
Designer V5R3
IBM Certified Specialist- e(logo)server i5Series Technical
Solutions Implementer V5R3
________________________________
From: Vern Hamberg <vhamberg@xxxxxxxxxxx>
To: RPG programming on the IBM i / System i <rpg400-l@xxxxxxxxxxxx>
Sent: Fri, November 5, 2010 1:03:36 PM
Subject: Re: MAIN or cycleless programs.
David
So far as I know, anything you declare outside of any procedures is
global - put them at the top, ahead of everything else.
But not having done this, I could be mistaken.
Of course, some, including me, would say NOT to use global variables.
Use parameters - that's what procedures are for. Declare what you need
at the earliest opportunity, then pass it to your various procedures.
I think some stuff still needs to be global - I don't remember what I've
run into, but something recently.
Vern
On 11/5/2010 8:39 AM, David FOXWELL wrote:
Hi,
I've just done my first program using the MAIN keyword. I have to admit that I
didn't see any benefit from doing so. I particularly missed having a main
procedure with all the global definitions in it. Especially the program
parameters.
Any thoughts would be welcome.
As an Amazon Associate we earn from qualifying purchases.