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




----- Original Message -----
From: "Jim Langston" <jlangston@conexfreight.com>
To: <RPG400-L@midrange.com>
Sent: Monday, August 28, 2000 12:32
Subject: Re: explicit close


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

We can do this in ILE as well.


> 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 is one of the great things about ILE - activation groups. Closing the
AG takes care of that for us. Because writing code actually tends to bore
me, I try to spend more of my time designing an app to make good use of
AG's. This frees me from having to write as much of that mind-numbing
"plumbing" stuff.

> 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()

Same thing in my ILE service programs:

        CallP(e)    ChgCust(p1, p2)
        If               %Error
        .....
        Endif

        CallP(e)    CleanUp

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

ILE.... yup.

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

ILE... same thing.


There are still a couple of things that I really miss though. One of the
biggest is qualified file/field/procedure names. I'd really love to be able
to do something like:

CallP    SrvPgmA.Cleanup()
CallP    SrvPgmB.Cleanup()

Instead of the current:

CallP    x1Cleanup
CallP    x2Cleanup

or:

Eval    varCustNo = FileA.AccountNo
Eval    varSuplNo = FileB.AccountNo

instead of having to resort to the PREFIX keyword.


Regards,

John Taylor
Canada

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

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.