|
-----Message d'origine-----
[mailto:rpg400-l-bounces@xxxxxxxxxxxx] De la part de Alan Campin
And won't the database do the caching already?
On Wed, Dec 8, 2010 at 11:25 AM, Mark Murphy/STAR BASE
Consulting Inc. < mmurphy@xxxxxxxxxxxxxxx> wrote:
The big issue I have with writing my own database cachingcode is that
I am not keeping my data fresh. If later I update the file, myand telephone number, etc.
internal cache does not get updated, and I can get the wrong values
out. Just saying, you have to be careful with it.
Mark Murphy
STAR BASE Consulting, Inc.
mmurphy@xxxxxxxxxxxxxxx
-----rpg400-l-bounces@xxxxxxxxxxxx wrote: -----
From: Buck
This is an attempt at modularising my code. At the risk of gettingslammed, I ask if it is acceptable and to tell me what the
disadvantages may be and how I should have done this.
condition a screen indicator in an existing program. The user table
Had to get an authorization level from a user information table to
contains lots of other information like name, department
will be a
I think many of us have gone down this path, but your post
great reference for those who haven't yet. Thanks for posting!comprehension a bit easier, so:
In my pgm :
// *IN49 is already on.
IF GetAutLevel >= '4';
*IN49 = *OFF;
ENDIF;
As an outsider (or maybe a new programmer in your organisation?) I
have to ask what '4' might mean, and what indicator 49 does.
Referring to them by a named constant would make my
IF GetAutLevel >= CONFIDENTIAL;used, I added :
HIDE_ID_NUMBER = *OFF;
ENDIF;
In a separate module where the user table is already
what it does.
P GetAutLevel B EXPORT
D PI LIKE ( DFN_AUTLV )
D UserId LIKE ( DFN_USRID ) CONST
D Error LIKE ( DFN_ERRMG )
D wAutLv S LIKE ( DFN_AUTLV )
IF NOT SetUserInfo ( UserId : Error );
RETURN *BLANK;
ENDIF;
RETURN UAUTNV; // From user table
P GetAutLevel E
I can't tell from just this bit of code what is being 'set' in the
user info. So I'll have to go open up that function to see
Apparently, it does something to (at least) UAUTNV.Should it be?
P SetUserInfo B
D PI N
D UserId LIKE ( DFN_USRID ) CONST
D Error LIKE ( DFN_ERRMG )
D wUserId S LIKE ( DFN_USRID )
D STATIC
IF wUsrId <> UserId;
CHAIN UserId USRCFD;
If not %found;
error = ....
RETURN *OFF;
ENDIF;
RETURN *ON;
P SetUserInfo B
It doesn't look like a 'set' but a 'get'. And here's where the
decision making gets harder. There is no 'right' answer. Is there
more user info somewhere else, or is this all of it? Is there a
structure that holds the combined user info? Is it global?
The caller
This returns an indicator and changes parameter 'Error.'
tests the indicator but not Error. Is this duplicate functionality?NORMAL? Shop
Could this return Error instead, and the caller test for
standards could go either way, and I personally wouldn't have a
complaint with either one.
I like the pseudo-caching of the retrieved database record with the
static user ID. Overall I rather like this general design.
--buck
--
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 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.