-
Ich lese da immer was von Satzart ?!?
Eine PF (per DDS bzw. SQL erstellt) hat keine Satzart !!!
Für jede PF musst du (solltest du!!) einen eigenen Trigger erstellen (ist sowieso leichter wartbar) und die benötigten Trigger-Definitionen per COPY reinziehen.
Welche Operation (Insert, Update, Delete) läuft, erfährst du über die Trigger-Struktur.
Schlüsselfelder kannst du dann direkt per KLIST (wie bisher) oder per DS definieren.
Ab V5R2 kannst du die Felder im Frreform auch per %KDS() direkt angeben.
Den Dateinamen erfährst du auch über die Trigger-Info, so dass du deine Protokollsätze erzeugen kannst.
-
Hallo Fuerchau,
Die Dateien sind alle per DDS erzeugt, sowohl zu protokollierende als auch Prokolldatei.
Allerdings sagt dazu der ILE Programmers Guide:
You can use DDS to describe files to the OS/400 system. Each record type in the
file is identified by a unique record-format name.
[...]
The information in this external description includes:
[...] - Record-format description, which includes the record format name and field
descriptions (names, locations, and attributes).
Scheinbar habe ich mit der Thematik noch reichlich Verständnisprobleme. Das Satzformat legt doch die Dateistruktur, also Feldarten, -Längen und -Namen fest?! Und wenn ich den zitierten Absatz richtig übersetze, ist die Satzart per Satzformat festgelegt. Das wird über die DDS gemacht... Wo liegt denn mein Fehler in der Übersetzung, wenn du sagst, dass eine PF keine Satzart hat?
Die Dateinamen etc. habe ich ja, das ist alles gar nicht mein Problem. Vielleicht ist an dieser Stelle auch der Terminus "Satzart" missverständlich weil es eigentlich nur um die Art des Zugriffs auf die jeweilige Datei geht, quasi also mehr die Schlüsselart. Und dafür soll ich den Dateinahmen gerade nicht verwenden.
Ich verspreche, möglichst bald irgendeinen Kurs zu besuchen, wo ich lerne derartige Probleme verständlicher darzustellen. Du wärst nicht der erste der mir in dieser Richtung nicht ganz folgen kann...
Herzlichen Dank für deine Geduld,
Björn
-
Per DDS musst du ein Satzformat (=Satzart) definieren.
Eine PF kann aber genau nur 1 Satzformat enthalten !!!
Per DDS werden auch Display, Printer, LF's oder auch ICF's definiert. In diesen Dateitypen können mehrere Satzformate (Satzarten) definiert werden, schließlich möchte ich verschiedene Daten ausgeben können.
Bei LF's gibts noch den Sonderfall mit mehreren Satzformaten, jedoch eher selten.
Eine PF ist wie bei SQL als Tabelle zu sehen und kann daher keine unterschiedlichen Informationen aufnehmen (auch hier gibt es natürlich noch Ausnahmen, wenn ich ein Zeichenfeld intern nochmal strukturiere).
Trigger sind halt nur auf einer PF (Tabelle) möglich und brauchen sich daher nicht um Satzarten kümmern.
-
Ahh, ok, ich glaube so langsam fällt bei mir der Groschen...
Lass mich den Begriff "Satzart" durch "Schlüsselart" ersetzen. Die ist für den Trigger selber vollkommen irrelevant! Ich soll aber Protokollieren, wie der Zugriff auf die einzelnen Dateien gelöst ist.
Ich habe ca. 30 Dateien an denen dieser Trigger später hängen soll. Die meisten haben einen geschlüsselten Zugriff nur über eine logische, andere auch über Schlüssel in der physischen Datei. Aber geschlüsselt sind sie alle.
Protokolliert werden die Bibliothek, Datei, Member, ändernder Nutzer, Änderungsart (*ins/*upd/*del) und noch einiges mehr. Zu dieser Menge an "mehr" gehört eben auch die Schlüsselart. Und die Schlüsselart ist eben das einzige was mir hierbei noch fehlt.
Als kleinen Hinweis hier der Aufbau von zwei Schlüsseln unterschiedlicher Dateien:
Code:
dsKey27 DS Qualified
TRKI Like(dsOldXCTCIZ.TRKIIZ)
und
Code:
dsKey26 DS Qualified
TRKI Like(dsOldXCTCIW.TRKIIW)
SPTT Like(dsOldXCTCIW.SPTTIW)
IPRC Like(dsOldXCTCIW.IPRCIW)
ORTY Like(dsOldXCTCIW.ORTYIW)
VLFL Like(dsOldXCTCIW.VLFLIW)
PRCI Like(dsOldXCTCIW.PRCIIW)
CRFL Like(dsOldXCTCIW.CRFLIW)
OPIT Like(dsOldXCTCIW.OPITIW)
GDRC Like(dsOldXCTCIW.GDRCIW)
Und über den Aufbau diese Strukturen, also Anzahl und größe der Felder soll ich einen Teil des Primärschlüssels der Protokolldatei aus einer Prozedur zurückliefern.
Ein bisschen klarer was mein Problem ist?
-
Kleine Ergänzung:
Code:
D dsOldMLSSDC E DS Qualified ExtName(MLSPFSDC)
D Based(pOldData)
D dsNewMLSSDC E DS Qualified ExtName(MLSPFSDC)
D Based(pNewData)
// Schlüsselstruktur der ersten Datei
D dsKey01 DS Qualified
D LNGG Like(dsOldMLSSDC.LNGGDC)
D FLDD Like(dsOldMLSSDC.FLDDDC)
// Ähnlicher, aber eben doch nicht ganz der selbe Schlüssel in der zweiten Datei:
[...]
D dsKey02 DS Qualified
D FDLG Like(dsOldMLS0DC.FDLGDC)
D FLDD Like(dsOldMLS0DC.FLDDDC)
[...]
Jetzt soll ich eine Methode bauen, die die Informationen über die Schlüsselstrukturen für den Primary-Key der Logdatei aufbereitet. Die Aufbereitung ist natürlich banal, aber in diese Richtung soll es gehen:
Code:
*****************************************
***** GetSArt ... Liefere Satzart
*****************************************
** Funktionsschnittstelle
P GetSArt B
D GetSArt PI 10A
** Interne Variablen
**---------------------------------------
/Free
// Das war meine Vorstellung bei meiner ursprünglichen Frage:
// Es sind daten in den Feldern der DS -> diese Datei ist im Zugriff
// und Schlüsselart 01 wird zurückgeliefert
Select;
When dsKey01.LNGG <> '' and
dsKey01.FLDD <> '';
Return '01';
// Einfacher wäre es natürlich so, aber das darf ich nicht.
When iBuffer.FleName = 'MLSPFSDC';
Return '02';
// In dem Stil geht's noch n bisschen weiter
/End-Free
**--------------------------------------------------------------------
P GetSArt E
-
Das ist leider eine Aufgabenstellung die mit Trigger NICHT gelöst werden kann.
Die Art des Schlüssels für eine Änderung ist vollkommen irrelevant !!!
Denke dir nur einen SQL "update ... where ...". In der Where-Klausel kannst du unabhängig vom jeweiligen Schlüssel (Zugriffspfad) Sätze verändern.
Per DFU (z.B. UPDDTA) kannst du auch per Satz-Nr ändern usw. usw.
Wenn du 30 Dateien hast, benötigst du auch 30 Trigger-PGM'e. Schließlich musst du ja gezielt auf einzelne Felder zugreifen.
Da der Trigger auf der PF liegt, bekommst du gar nicht mit, ob eine Operation über eine LF erfolgt !!!
Jede Datei hat (oder auch nicht) einen Primär-Schlüssel.
Verwende genau diesen als einzigen Schlüssel der jeweiligen Datei, wobei ggf. darauf zu achten ist, dass auch Schlüsseländerungen möglich sind, will heißen, dass im Before- und After-Immage unterschiedliche Werte auch in Schlüsseln vorkommen können !!!!!
-
Guten Morgen,
na, da ist alles in allem doch eine Menge an Info die ich verwerten kann!
Herzlichen Dank, speziell an Fuerchau, für die Mithilfe!
Mein Betreuer wird sich schon irgendwas dabei gedacht haben als er mir diese
Aufgabenstellung hat zuteil werden lassen. Sobald ich weiss was das ist und wenn
es euch interessiert lass ich euch wissen was es war.
Schönen Tag, Björn
-
Hi,
also ich wollte 2 Schritte in einen packen. Es ging darum, den Dateinamen
vom Schlüssel zu entkoppeln. Dateiname -> Schlüsselart 'XY' -> Schlüsselinformation
anhand der Datenstruktur in Teil des Logschlüssels umsetzen.
Die von mir ursprünglich angedachte direkte Abfrage der Informationen zm Schlüssel durch eine Intialisierung war also Käse.
Nochmal herzlichen Dank für eure Zeit, Björn
-
 Zitat von BUG
Vielleicht ist an dieser Stelle auch der Terminus "Satzart" missverständlich weil es eigentlich nur um die Art des Zugriffs auf die jeweilige Datei geht, quasi also mehr die Schlüsselart. Und dafür soll ich den Dateinahmen gerade nicht verwenden.
ah ja...
wie Fuerchau bereits gesagt hat ...
man legt nen trigger(pgm) auf eine Datei ...
und bekommt dann AUTOMATISCH
den Zustand VORHER/NACHHER für jedes einzelne Feld und man bekommt auch die "ART?" des Zugriffes (UPDATE/INSERT/DELETE) ....
Weil ich da vor ner Weile auch mal rumgemacht habe mit der Triggerei werd ich da immer hellhörig wenn sowas im Forum dazu läuft...
Aber so ganz ist mir nicht klar wo das Problem liegt..
kuempi
Similar Threads
-
By muadeep in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 03-01-07, 18:53
-
By woki in forum NEWSboard Java
Antworten: 3
Letzter Beitrag: 06-06-06, 16:57
-
By Mädele in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 16-05-03, 12:31
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