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



No problem. https://code.midrange.com/56a6d66a6d.html is extracted code. Very OLD code! I know it's ugly and needs a rewrite, but getting something that ain't broke changed is hell.

Top is what is assigned as the trigger. It reads the routing file just by library and file name. If it finds a match for the event and timing that fired the trigger, with a blank delete code, it calls the program. The next part is the trigger buffer that gets copied into all trigger handlers, as well as this routing program.

Lastly is an old retired after update program. It gets the trigger buffer passed in. It overlays the before and after buffers with a data structure that looks like the file, and then we can start with our logic.

UISOURCE is a field in all of our files. It tracks if the update came via the green screen, web front end, or an interface. No journaling here yet, so that was put in to help run down source of data issues.




Kevin Bucknum
Senior Programmer Analyst
MEDDATA/MEDTRON
Tel: 985-893-2550

-----Original Message-----
From: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of
Craig Richards
Sent: Tuesday, February 27, 2018 7:47 AM
To: RPG programming on the IBM i (AS/400 and iSeries)
Subject: Re: Trigger-happy

I'll try it and find out.

So to be clear -

When your GENERIC program gets called does it try to find a match on the file
for

File / Library / TriggerTime / TriggerEvent

That looks to me like how it would work?

Sorry for the 20 questions :-)
Craig

On 27 February 2018 at 13:44, Craig Richards <craig@xxxxxxxxxxxxxxxx>
wrote:

This simple solution looks very promising.

I'm wondering a couple of things though:

- Is the Delete Code used by your program to identify triggers no
longer used or active?
- If the generic trigger program is going to call different programs
for different events/times should they be included in the index on the file
( are they on another index or do I misunderstand? )
- Is the UISOURCE something specific to your system?

thanks,
Craig

On 27 February 2018 at 13:40, Vernon Hamberg
<vhamberg@xxxxxxxxxxxxxxx>
wrote:

Is this a place for a procedure pointer? And would the pointer be
different if the program is changed, or would it always point to what
was found the first time?


On 2/27/2018 7:31 AM, Craig Richards wrote:

Thanks all for replying - that was very instructive.

I've only had a chance for a quick look for now but I appreciate
your links and sharing and I'll make time to investigate further.

Kevin, I like the simplicity of this approach and I can see the ease
with which things can be switched on and off.

I'm assuming that because you have both the program name and
program
library in your file, that the program is called through a variable.

And if you are calling a program via a variable, if I remember
correctly it will resolve it every time?

If my memory and assumptions are correct that tells me that you
could actually change the called program ( the one in the file ) and
get currently active jobs to recognise it immediately rather than
them working with a QRPLOBJ version until they sign off.
Can you confirm this?

thanks kindly,
Craig

On 27 February 2018 at 13:07, Kevin Bucknum
<Kevin@xxxxxxxxxxxxxxxxxxx>
wrote:

All of our files that have triggers get the same program as the trigger.
When the trigger fires, we take the file, library, event type, and
time, and go out to a file. If there is an active entry, we call
the program and pass along the buffer that is needed. You can have
multiple entries and call multiple trigger handlers as needed. Not
as sophisticated as Alan Campin's program, but it has worked well
for us over the years. The file looks like this:
Key Field Length Dec Type From To Text
TGDLCD 1 A 1 1 DELETE CODE
K2 TGFNM 10 A 2 11 FILE NAME
K1 TGFLIB 10 A 12 21 FILE LIBRARY
K3 TGSQ 5 0 P 22 24 TRIGGER SEQUENCE
TGDESC 50 A 25 74 DESCRIPTION
TGPNM 10 A 75 84 PROGRAM NAME
TGPLIB 10 A 85 94 PROGRAM LIBRARY
TGTIME 1 A 95 95 TRIGGER TIME
TGEVNT 1 A 96 96 TRIGGER EVENT
UISOURCE 1 A 97 97 ENTRY SOURCE


Kevin Bucknum
Senior Programmer Analyst
MEDDATA/MEDTRON
Tel: 985-893-2550

-----Original Message-----

From: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf
Of
Craig Richards
Sent: Monday, February 26, 2018 4:38 PM
To: RPG programming on the IBM i (AS/400 and iSeries)
Subject: Trigger-happy

One technique I’ve seen for triggers is to have the actual trigger

program do

nothing more than forward the trigger buffer data on to another
program.

That way the logic can be changed without having to remove the
trigger
program from the file which requires exclusive access.

( I know this doesn’t solve the issue of currently running jobs

continuing to

access the old object )

One part of my application won’t like this but I could resolve my

particular

problem by putting the program in the same library as the file ( which

IBM

recommend anyway ) but I’d be interested to find out if anyone else
uses
this as a general approach?

Thanks,
Craig
--
This is the RPG programming on the IBM i (AS/400 and iSeries)
(RPG400-L)
mailing list To post a message email: RPG400-L@xxxxxxxxxxxx To

subscribe,

unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives at
https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxx for any subscription related
questions.

Help support midrange.com by shopping at amazon.com with our
affiliate
link: http://amzn.to/2dEadiD

--
This is the RPG programming on the IBM i (AS/400 and iSeries)
(RPG400-L)
mailing list
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxx for any subscription related
questions.

Help support midrange.com by shopping at amazon.com with our
affiliate
link: http://amzn.to/2dEadiD


--
This is the RPG programming on the IBM i (AS/400 and iSeries) (RPG400-L)
mailing list
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxx for any subscription related
questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD



--
This is the RPG programming on the IBM i (AS/400 and iSeries) (RPG400-L)
mailing list
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxx for any subscription related
questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD

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.