PDA

View Full Version : Trigger: Aufbau des Puffers



FlexFux
17-06-04, 07:59
Guten Tag,
ich habe ein Problem für das ich irgendwie keiner Erklärung finden kann.
Ich habe in ILE 3 Update-Trigger geschrieben. Sie sollen so etwas wie eine Jounalisierung durchführen.
§§MNUNR_A 97 100a

§§MNUNE_A 101 160a

§§MNUPRS_A 161 163s 2

§§MNUENW_A 164 168s 2

§§MNUFLE_A 169 173s 2

§§MNUKJ_A 174 179s 2

§§MNUBE_A 180 184s 2

§§USR_A 185 194a ->Benutzer<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p>

§§JOB_A 195 204a ->Job<o:p></o:p>

§§PGM_A 205 214a ->Programm<o:p></o:p>

§§DATE_A 215 224d ->Datum(ISO)<o:p></o:p>

§§TIME_A 225 232t ->Zeit(ISO)<o:p></o:p>

§§NBL_A 233 244 ->Null-Byte-Liste alter Satz
245 256 ->Was ist mit diesem Bereich?
§§MNUNR_N 257 260a ->Beginn neuer Satz<o:p></o:p>

§§MNUNE_N 261 320a

§§MNUPRS_N 321 323s 2

§§MNUENW_N 324 328s 2

§§MNUFLE_N 329 333s 2

§§MNUKJ_N 334 339s 2

§§MNUBE_N 340 344s 2

§§USR_N 345 354a ->Benutzer<o:p></o:p>

§§JOB_N 355 364a ->Job<o:p></o:p>

§§PGM_N 365 374a ->Programm<o:p></o:p>

§§DATE_N 375 384d ->Datum(ISO)<o:p></o:p>

§§TIME_N 385 392t ->Zeit(ISO)<o:p></o:p>

§§NBL_N 393 404 ->Null-Byte-Liste neuer Satz<o:p></o:p>


Mit dieser Struktur werden allter sowie neuer Datensatz in eine Backupdatei geschrieben. Der Fett gedruckte Bereich interesiert mich weil er bei allen 3 Triggern unterschiedlich groß ist und ich kein System darin entdecken kann wie lang er wird. Ich muss mir diesen Bereich immer mittels eines gewollten Programmfehlers und anschliesendem Dump rausfischen.
Ich konnte noch nirgends etwas dazu finden.
Ich muss aber die Funktionsweise und den Aufbau der Trigger genau kennen.
V5R1 falls es wichtig ist

BenderD
17-06-04, 08:55
Hallo Flex Fux,

so geht das mit dem Trigger nicht!
Da gibt es zwar ein schlaues Handbuch, aber ehe ich da anfange zu suchen, habe ich fix und flux ein Beispiel auf meine Freeware Seite gestellt.
Wer alte ***************e noch hat, oder sich meine Artikel ausschneidet (wer macht das eigentlich nicht?), da gab es so 1997 auch mal einen drüber.

mfg

Dieter Bender

Fuerchau
17-06-04, 09:04
Bei Triggern solltest du nicht mit festen Adressen für die Satz-Immages arbeiten sondern mit Pointern und relativer Adressierung. Nur damit bist du flexibel und kompatibel auch gegenüber zukünftiger Releases.

Schau dir die Anhänge an, damit klappts immer !

FlexFux
17-06-04, 09:39
Danke für die raschen Antworten.

@BenderD
Ich hab mir Ihre Seite mal direkt zu den Favoriten hinzugefügt.

@Fuerchau
Ich muss mir die Dateien heute Mittag zuhause ansehen da unsere Firewall die Textdateien als unsicheren? Content Type ansieht :-(

Eins ist mir aber klar geworden das die Programmiererei wie ich sie jetzt betreibe keine Zukunft hat. Da ich im Rahmen meiner Ausbildung zum FI mich auf die AS400 konzentriert habe und die Lehrer auch wie ich jetzt sehe von "moderner" Programmierung keine Ahnung hatten, sind Pointer nicht meine Stärke. Besser gesagt hab ich so gut wie keine Ahnung davon. Auch diese Sachen mit dem "/" davor sind mir unbekannt.
Also danke das Sie mir Aufgezeigt haben wie man für die Zukunft gewappnet ist.

BenderD
17-06-04, 09:57
Hallo,

Pointer kann man durchaus umgehen, das geht mit einem MOVEA oder mit %SUBST genauso gut (und sicherer).

Die Anweisungen mit dem / , wie /COPY sind Compileer Anweisungen, mit denen man Quelldateien reinkopieren kann, bedingt compilieren etc.

Zur FI Ausbildung sei noch gesagt, dass ich da deutlich empfehle sich mit seinem Programmierstil nicht an RPG zu orientieren. Wenn in der Berufsschule Java oder Pascal gemacht wird, dann eher das, fallls dort noch auf C oder Basic aufgebaut wird, dann eben das, wobei man wieder aufpassen muss sich nicht die C/Basic Unarten anzugewöhnen.

mfg

Dieter Bender

Fuerchau
17-06-04, 12:17
@Dieter
Also das mit dem MOVEA bzw. %SUBST halte ich für ungleich komplizierter, da ich auch hier die relative Adresse verwenden muss um den Satzbereich in meine DS zu übertragen.
Da du ja auch immer so für Performance bist, ist die Sache mit den Pointern schneller, da ja direkt mit den Satzpuffern gearbeitet wird.
Ausserdem soll es ja Anwendungen geben, die einen Satzpuffer auch noch verändern wollen. Dann muss ich die gesamte Struktur ja wieder zurückübertragen (oder soll ich jetzt noch die relative Feldadresse berechnen um nur das einzelne Feld zu ändern?).

Besser allerdings wären sogar SQL-Trigger, da habe ich das Problem mit den Pointern natürlich nicht.