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



Actually that just made me think of the approach I decided to take when
I
went down the road you are going on. . . Only when a file became hard to
keep up, regarding changes to the structure, would I ever entertain the
idea
of putting a file I/O layer in. Doing an all or nothing is like trying
to
boil the ocean (which is the way I initially went but found my pot
wasn't
big enough ;-)

When deciding to do it all, you have to realize it's going to take a
while to convert all the files and the programs that touch them. Our
approach will be to adopt the philosophy and update things when it makes
sense.

>Typing "wkSOON = getSOON();" is no more onerous than "wkSOON = SOON;".
This is a good starting point for the discussion. What did you have to
do to
get to the above statement? A chain? A read? How were those sub
procedures
written that have the chain and read in them?

Or an SQL statement. What ever it takes to get the data you want. The
internals are important only during the design and implementation. The
object is to make the end-product reliable and easy to use. Plus, it's
not necessary to think of everything upfront. There's no need to code
for a data access method that's never used. If someone decides to use it
in the future, they just update the service program.  

>In my view, the only real consideration is the impact of repeated calls
to
setters and/or getters in a batch environment.
I wouldn't consider that as much of a problem as trying to keep all of
the
getters and setters service programs up to date and getting them
initially
written (a lot of man hours to consider there).  

Case tool

How do you plan on doing signatures for new sub procedures for one? 

I don't get your point.

A large set of applications can get into the thousands of tables (not
including indexes, views and other DB objects). Is it wise to write
applications I/O wrappers for each of those before you even know you
need them for each specific file? 

If the organizational philosophy is to encapsulate file access, the
question of "need" is mostly irrelevant. Obviously, common sense needs
to prevail; it would be idiotic to encapsulate a one off. 

I think the point you're making is that files used in a minimal number
of places need not be wrapped. The cost/benefit is wobbly. So, start at
the other end of the spectrum - those files you dare not modify because
200 programs would have to be recompiled. Still, if the philosophy is to
wrap files, then any new production file should get the treatment.

>...creating the service programs can be delegated to a case tool.
Are there any out there that do this job well?  

I write my own. A few years ago I wrote a case tool in Objective-C. That
was before free, which should be much easier. This time I'd do it C#.

I have to admit that none of
my RPG code is generated nor have I used a RPG code generator, so I
can't
speak to the tools usabilities whether they are good or not. I do
however
use a lot of Java code generators (i.e. Hibernate class builders for a
good
related example) and I must say that they are quite nice and save me a
ton
of time, but Java is a much different language than RPG and Java tools
are
much more abundant.

Good conversation, I think there is some good middle ground we can find
here
for encapsulating in RPG.
Aaron Bartell



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.