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



In a library I had built in a different language on a different platform the 
program never had to
do a call to open the file, they would just call the procedures themselves.  
The procedures would
"look" to see if the file was open, if it wasn't it would open the file.  And 
then do it's thing and
return.

At the end of every program there would be a call to cleanup the open files.  
The cleanup would
go through the open files and close them all.  I remember I had built a public 
array to contain the
names of the open files.  There was another procedure that was actually called 
when any file was
opened that would add the name of the file to the bottom of the array and open 
the file.  The close
procedure the would simply do a for...next loop and close each of the open 
files until it got to a
blank entry, at which point it knew there were no more files open.  (Or perhaps 
I had it go though
the entire array, I don't quite remember).

This library was a convoluted thing with functions that called functions that 
called functions.

But, it made programming so fast.  I could whip out a program in nothing flat 
with a few lines of
code that would include my standard user interfaces, all the known files and 
everything.

Something that would take 200+ lines of code to do from scratch in a program 
would take maybe
5 lines.  I remember one in question.  Something like:

#include STDCALLS.INC
#include PUBLIC.INC

     ChgCust(NULL, UserSecurityLevel)

     Cleanup()

or the such.  I don't remember the exact format of the language (clipper, 
compiled dBase) but that
is close enough.

The best thing about the whole scheme is once I decided to change anything I 
would do it in the library
and be done with it, never have to change my programs at all.  Even though 30 
programs may call up
the Change Customer screen, I only had to change it once and everything was 
automatically changed.

In this language you did not have to recompile each program when you recompiled 
the library (directory
in AS/400 terms).  That made it a bit easier.  I only had to recompile my 
programs when I changed my
public variables or standard call headers.

Regards,

Jim Langston

Buck Calabro wrote:

> John Taylor wrote:
>
> >Each SrvPgm contains an initialization
> >and a clean-up procedure. The file
> >open logic is contained in the initialization
> >procedure, and the close logic is in the
> >clean-up procedure. Both are exported,
> >though rarely used by the caller.
>
> It's an interesting question:  Do we have getCustName do the open (in case
> the caller "forgot") or do we return a "not open" error and have the caller
> perform the proper initialisation?  I do the latter but I see the wisdom in
> the former, in which case I would indeed have getCustName call the public
> fileOpen procedure.
>
> >How the resources are closed depends
> >upon the type of caller. If the caller
> >is designed to run in a named or *NEW
> >activation group, then I rely upon the
> >destruction of the activation group to
> >close the resources. However, if the
> >caller runs in the *DFT ag, or QILE,
> >then I handle resource clean up
> >within the program itself.
>
> Sadly, this is a level of sophistication that many shops aren't ready for.
> It seems pretty straightforward once you've done an application this way,
> but that first step is a doosy!  John, what sort of programmers are in your
> shop?  We have a broad mix of mostly inexperienced folks peppered with
> S/36ers and a handful of S/38 - AS/400 folks.  I find that beginners are OK
> with explicit closes but the whole activation group thing gets by them.  I'm
> more than happy just to get service programs in production!
>
> Buck Calabro
> Aptis; Albany, NY
> "We are what we repeatedly do.
>  Excellence, then, is not an act, but a habit." --Aristotle
>
> Billing Concepts Corp., a NASDAQ Listed Company, Symbol: BILL
> +---
> | This is the RPG/400 Mailing List!
> | To submit a new message, send your mail to RPG400-L@midrange.com.
> | To subscribe to this list send email to RPG400-L-SUB@midrange.com.
> | To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com.
> | Questions should be directed to the list owner/operator: david@midrange.com
> +---

+---
| This is the RPG/400 Mailing List!
| To submit a new message, send your mail to RPG400-L@midrange.com.
| To subscribe to this list send email to RPG400-L-SUB@midrange.com.
| To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com
+---

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.