-
Wenn du einen Trigger genau für eine Tabelle schreibst, steht im Triggerbuffer die relative Adresse des Before und Afterimmage.
Also kannst du für Before/After-Immage je eine DS based Pointer definieren:
dcl-s BeforePointer pointer;
dcl-s AfterPointer pointer;
dcl-ds Before ExtName('DATEI') qualified;
end-ds;
dcl-ds After ExtName('DATEI') qualified;
end-ds;
BeforePointer = %addr(TriggerBuffer) + TriggerBuffer.PosBeforeImage;
AfterPointer = %addr(TriggerBuffer) + TriggerBuffer.PosAfterImage;
damit kannst du dann jederzeit native auf beide Strukturen typesave zugreifen.
Quellen von 2004;-), geht heute moderner:
*
* Definitionen der Trigger-Aufrufparameter
* ----------------------------------------
*
*
D TrgBuff DS
D PhysFile 10
D PhysLib 10
D PhysMember 10
D TrigEvent 1
D TrigTime 1
D ComitLevel 1
D Reserv1 3
D CCSIDData 10I 0
D Reserv2 8
D OrigOffset 10I 0
D OrigRecLen 10I 0
D OrigNulMap 10I 0
D OrigNulLen 10I 0
D NewOffset 10I 0
D NewRecLen 10I 0
D NewNulMap 10I 0
D NewNulLen 10I 0
D Reserv3 16
D TrgBuffLen S 10I 0
*
* Definitionen der ben”tigten Konstanten
* --------------------------------------
* Commit-Level
D CmtNone C const('0')
D CmtChg C const('1')
D CmtCs C const('2')
D CmtAll C const('3')
* NULL-Flags
D IsNotNull C const('0')
D IsNull C const('1')
* Event-Ereignisse
D EventIns C const('1')
D EventDel C const('2')
D EventUpd C const('3')
* Trigger-Time
D AfterChg C const('1')
D BeforeChg C const('2')
*
* Definition der ben”tigten Zeiger
* --------------------------------
D OrigRec S *
D OrigNull S *
D NewRec S *
D NewNull S *
*
* Definition der benötigten Zeiger
* --------------------------------
D OrigRec S *
D OrigNull S *
D NewRec S *
D NewNull S *
* --------------------------------------------------------------------
* Strukturen für Vergleich After-/Before-immage
* Before-Image (BI)
* --------------------------------------------------------------------
DBIAFP1 E DS based(OrigRec)
D extname(AFP1)
D prefix(BI)
* --------------------------------------------------------------------
* After-Image (AI)
* --------------------------------------------------------------------
DAIAFP1 E DS based(NewRec)
D extname(AFP1)
D prefix(AI)
* Übergabeparameter für DB/400-Trigger
C *entry plist
C parm TrgBuff
C parm TrgBuffLen
* Initialisierungen der Basiszeiger
C eval OrigRec = %addr(TrgBuff) + OrigOffset
C eval OrigNull = %addr(TrgBuff) + OrigNulMap
C eval NewRec = %addr(TrgBuff) + NewOffset
C eval NewNull = %addr(TrgBuff) + NewNulMap
Similar Threads
-
By edig in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 25-01-19, 16:20
-
By LordCinimod in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 06-11-15, 06:56
-
By peter.kinne in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 04-02-09, 10:58
-
By AndreasH in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 22-09-02, 12:00
-
By KB in forum IBM i Hauptforum
Antworten: 0
Letzter Beitrag: 14-06-01, 11:51
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks