-
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
-
Hallo Fuerchau,
danke für die schnelle Rückmeldung.
Der Trigger kann für beliebige Dateien angehangen werden.
Deshalb möchte ich ohne die explizite Definition von
dcl-ds Before ExtName('DATEI') qualified;
end-ds;
dcl-ds After ExtName('DATEI') qualified;
end-ds;
auskommen. Ich weiß aber um welche Datei es sich handelt und kenne auch die Stelle an dem das Feld bzw. der Wert vorkommt. Ist es möglich das ohne 'extname' Struktur zu extrahieren?
Gruß
Muller
-
dcl-s ptr pointer;
dcl-s bigint int(20) based(ptr);
pointer = %addr(buffer) + posbigint;
Posbigint ist die relative Position eines Feldes im Gesmtpuffer, start ist 0.
-
Hallo Fuerchau,
vielen Dank für die Antwort.
Hat mit deinem Beispiel einwandfrei funktioniert.
Vielen Dank
Gruß
Muller
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