-
DDS COMP
Hallo zusammen,
ich bekomme es leider nicht mehr hin.
Ich habe eine Datei in der befinden sich drei Mengenfelder
Generell möchte ich mir eine logische Datei erstellen in der sich nur noch Sätze befinden wenn Menge1 - Menge2 -Menge3 gleich 0 ist.
Jetzt dachte ich mir ich könnte ein S Menge1 COMP(GT Menge2+Menge3) machen. Aber das mag er nicht.
Wird mir wohl nichts anderes übrig bleiben als ein Feld in der logischen zu definieren deren Wert Menge1-Menge2-Menge3 ist. Geht sowas. Wenn ja wie ? Oder gibt es andere Möglichkeiten ?
Dateierweiterung (PF) nicht möglich bzw. nicht gewollt.
Da die Datenmenge nicht unerheblich ist möchte ich mir die Datenmenge nicht per SQL dynamisch aufbauen.
Danke für die Hilfe im Voraus
Viele Grüße Harkne
-
Hallo Harkne,
erstell dir ne View, die frisst kein Brot.
Da die Datenmenge nicht unerheblich ist möchte ich mir die Datenmenge nicht per SQL dynamisch aufbauen
Die View selektiert quasi zur Laufzeit. Nur rasend schnell.
Du kannst mit sql lesen, deine LF werden (meistens) vom System automatisch verwendet
Robi
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
-
Je nach Datenvolumen ist die Abfrage "a + b + c <> 0" nicht so schnell, da normalerweise kein Index vorhanden ist.
Man muss da schon einen "calculated" Index erstellen und die SQL-Abfrage dann genau so gestalten.
Native ohne SQL ist das leider ohne eine Dateiänderung nicht möglich.
DDS lässt keine Berechnung (nur CAT und SST) zu.
Eine View ist native quasi nur als InputPrimary zu verarbeiten da sie
- keine Sortierung
- keine Schlüssel
enthält.
-
Zitat von Robi
Hallo Harkne,
erstell dir ne View, die frisst kein Brot.
Die View selektiert quasi zur Laufzeit. Nur rasend schnell.
Du kannst mit sql lesen, deine LF werden (meistens) vom System automatisch verwendet
Robi
Ja würde ich sehr gerne machen, ist vom Kunden nur nicht gewünscht. Trotzdem Danke.
-
Ich habe gerade erfahren dass es einen Status gibt der die Datenmenge erheblich eingrenzt. Den Rest werde ich dann so durch lesen.
Vielen Dank für die Hilfe
-
Ich weiß jetzt nich in wieweit der Kunde SQL Indices aktzeptiert, aber es wäre durchaus möglich einen SQL Index mit den entsprechenden Selektionen zu erstellen.
Code:
CREATE INDEX YourSchema/YourIndex
ON YourSchema/YourTable (KeyFld01, KeyFld02 ... KeyFld0N)
WHERE (Menge1 - Menge2 - Menge3) = 0
RCDFMT YourRcdFmt ADD ALL COLUMNS;
Das schöne ist an SQL Indices, sie können wie ganz normale geschlüsselte logische Dateien mit native I/O verarbeitet werden. Das ist übrigens nichts neues, SQL Indices konnten schon in den 4er Releasen mit Native I/O verarbeitet werden.
Die Erweiterungen, dass neue Spalten generiert werden können und Where-Bedingungen hinzugefügt werden können, gibt es seit Release 6.1. Und in Release 6.1 war die Erweiterung in erster Linie für native I/O gemacht. Erst ab 7.1 und später kann SQL selber nach und nach solche Indices richtig verwenden.
Da SQL in bei der Erstellung von Indices verwendet werden kann, sind sie um einiges mächtiger als DDS beschriebene logische Dateien.
Birgitta
-
Hallo Birgitta,
danke für die Antwort, aber leider müssen wir die Dateien sowohl PF als auch LF über DDS erstellen. Die ganze Problematik hat sich aber jetzt sowieso erledigt, da ich nach Absprache ein Flag einfügen kann auf das ich dann meinen COMP mache.
Vielen Dank für die Hilfe
-
Vielleicht solltest Du mal Deinen Kunden oder Chef dezent darauf hinweisen, dass DDS "stabilized" ist, und das bereits seit Release V5R3 (da gab es die letzte Änderung).
Alle neuen Änderungen nur in SQL erfolgen, auch die die "Erweiterung" des DDS betreffen. Release 6.1 war sogar ein Release, in dem man sich in erster Linie um Erweiterungen in SQL für naitve I/O gekümmert hab.
Empfehlung der IBM ist es alle neuen Datenbankenobjekte nur mit SQL zu erstellen und die vorhandenen peu à peu zu konvertieren.
Leider tragen solche "hartgesottenen Ignoranten" auch maßgeblich dazu bei, dass die IBM i den Ruf als veraltet und überholt hat, obwohl sie eigentlich die modernste Maschine ist. Man schmeißt im Endeffekt lieber die ganze Maschine mit allem drum und dran raus zugunsten einer Umgebung, in der DDS und native I/O eh' keine Rolle mehr spielen, als die vorhandenen Möglichkeiten zu nutzen.
Birgitta
-
Eine Frage dazu.
Habe ich die möglichkeit das SQL-Statement irgendwo abzulegen so wie die DDS um es immer wieder neu erstellen zu können ?
Oder vielleicht anders. Ich denke mal das Hauptproblem ist, das es für alles eine Quelle gibt und bisher war es auch für die Dateien so. Wie wird das bei Euch gehandhabt. Kann man irgendwo das SQL-Statement als Quelle ablegen und dann auch mit einer Auswahl im PDM erzeugen ?
Ich habe bisher nur mit STRSQL und embedded SQL im RPG gearbeitet.
Viele Grüße Harkne
Zitat von B.Hauser
Vielleicht solltest Du mal Deinen Kunden oder Chef dezent darauf hinweisen, dass DDS "stabilized" ist, und das bereits seit Release V5R3 (da gab es die letzte Änderung).
Alle neuen Änderungen nur in SQL erfolgen, auch die die "Erweiterung" des DDS betreffen. Release 6.1 war sogar ein Release, in dem man sich in erster Linie um Erweiterungen in SQL für naitve I/O gekümmert hab.
Empfehlung der IBM ist es alle neuen Datenbankenobjekte nur mit SQL zu erstellen und die vorhandenen peu à peu zu konvertieren.
Leider tragen solche "hartgesottenen Ignoranten" auch maßgeblich dazu bei, dass die IBM i den Ruf als veraltet und überholt hat, obwohl sie eigentlich die modernste Maschine ist. Man schmeißt im Endeffekt lieber die ganze Maschine mit allem drum und dran raus zugunsten einer Umgebung, in der DDS und native I/O eh' keine Rolle mehr spielen, als die vorhandenen Möglichkeiten zu nutzen.
Birgitta
-
Habe ich die möglichkeit das SQL-Statement irgendwo abzulegen so wie die DDS um es immer wieder neu erstellen zu können ?
Natürlich!
Du kannst SQL Scripte entweder im IFS oder als Source Physiscal File Member ablegen.
Mit RUNSQLSTM kannst Du diese Scripte jederzeit wieder ausführen.
Wir legen die Erstellungsbefehle für Datenbankenobjekte (wie DDS) als Teildateien ab (auch alte Schule!). Ich habe z.B. bei uns im PDM den RUNSQLSTM-Befehl hinterlegt. Anstatt jetzt ein Datenbanken-Objekt mit 14 zu erstellen wird die Auswahl RS verwendet.
Wenn man im RUNSQLSTM in der Option DFTRDBCOL die Objekt-Bibliothek mitgibt, kann man sogar die Qualifizierung mit der Bibliothek in den Skripten weglassen. Über das gleiche Skript könnte somit das Objekt in unterschiedlichen Schemata/Bibliotheken (Test/Echt) erstellt werden.
Die andere Alternative ist, die Teildatei mit dem IBM i Navigator - Run an SQL Script/Eine SQL Prozedur ausführen öffnen und anschließend ausführen.
Die SQL Skritpe können aus dem Datenbanken-Objekt über den IBM i Navigator generiert und wahlweise im IFS oder als Teildatei gespeichert werden.
Mit einem der letzten Technology Refreshes wurde auch die Stored Procedure GENERATE_SQL in der Bibliothek QSYS2 bereitgestellt, über die die SQL Skripte ebenfalls generiert und wahlweise ins IFS oder als Teildatei abgelegt werden können.
Noch ein Tip: STRSQL ist genaus "stabilized" wie DDS.
Aktuell ist das Strategische Produkt der IBM der IBM i Navigator (Client Access und Teile sind auch in der Web-Version realisiert).
IBM Data Studio wäre u.U. eine Alternative.
Man sollte sich langsam mit diesen Tools anfreunden.
Birgitta
-
Zitat von B.Hauser
Vielleicht solltest Du mal Deinen Kunden oder Chef dezent darauf hinweisen, dass DDS "stabilized" ist, und das bereits seit Release V5R3 (da gab es die letzte Änderung).
Alle neuen Änderungen nur in SQL erfolgen, auch die die "Erweiterung" des DDS betreffen. Release 6.1 war sogar ein Release, in dem man sich in erster Linie um Erweiterungen in SQL für naitve I/O gekümmert hab.
Empfehlung der IBM ist es alle neuen Datenbankenobjekte nur mit SQL zu erstellen und die vorhandenen peu à peu zu konvertieren.
Leider tragen solche "hartgesottenen Ignoranten" auch maßgeblich dazu bei, dass die IBM i den Ruf als veraltet und überholt hat, obwohl sie eigentlich die modernste Maschine ist. Man schmeißt im Endeffekt lieber die ganze Maschine mit allem drum und dran raus zugunsten einer Umgebung, in der DDS und native I/O eh' keine Rolle mehr spielen, als die vorhandenen Möglichkeiten zu nutzen.
Birgitta
Entschuldigung im Voraus für das komplette *offtopic*, aber das muss jetzt auch mal raus:
Ich bin nunmehr (inkl. Ausbildung) seit knapp 40(!) Jahren in der IT-Branche (damals sagte man noch EDV ...), meinen ersten Job als 16-Jähriger hatte ich als RPG-Programmierer bei der Öst. Niederlassung der Bayer Leverkusen auf einer IBM 370 (alles noch mit Lochkarten...), dnach S/38 und schließlich AS/400, die letzten 20 Jahre als Selbständiger.
Die Entwicklung dieser wirklich tollen Maschine habe ich also von Anfang an miterleben dürfen.
Zunächst war die AS/400 quasi ein "Selbstläufer", da die zahlreichen S/36- u. S/38 Anwender in Scharen die AS/400 kauften.
Was aber (zumindest im Deutschsprachigen Raum) immer aufgefallen ist, war das praktisch nicht vorhandene Marketing seitens IBM (wohlgemerkt nicht schlechtes - sondern überhaupt nicht vorhandenes!). Außer uns Anwendern hat das Ding praktisch (fast..) niemand gekannt. Man musste als Kunde danach gezielt suchen und fragen - anders wäre man nie auf diese Systemschiene gekommen.
Auch in den (Österreichischen) Fach- u. Hochschulen war das ebenso, das System wurde totgeschwiegen und die IBM machte nichts, aber auch wirklich NICHTS, um das zu ändern.
Als dann in den 90ern plötzlich Windows NT auftauchte und die AS/400-Kunden in Scharen die Plattform wechselten, verharrte die IBM in Schockstarre oder verfiel in Panik (Zitat des damaligen IBM AS/400-Bereichsleiters (Österreich) bei einer Veranstaltung ".. bitte bitte bleiben sie der AS/400 treu ...", die Kunden wurden dann erst recht neugierig auf die Konkurrenz ...). Aber wirklich getan wurde nichts.
Ganz im Gegenteil, da kam man (immer wieder) auf die glorreiche Idee, den Namen zu ändern, und so gab's AS/400, e Server, i Series, System i5, IBM i (to be continued ..?), ebenso die lustigen Namen für das Betriebssystem, welches man aktuell mit einem Apfeltelefon verwechseln kann und nicht zu vergessen die wechselnden Namen für die Datenbank, da wusste Big Blue ja auch nicht so recht, wohin die Reise gehen sollte.
(So nebenbei übrigens interessant, dass eine uuuuuuralte, spaltenorientierte(!) Programmiersprache komplett auf Freeformat umgestellt wurde und es dafür aber immer noch den gleichen, alten Namen gibt. Hier war anscheinend kein neuer Name angesagt, obwohl das genau hier notwendig wäre. Mehrmals habe ich schon bei Kunden die Gespräche miterlebt "ja ich programmiere schon lange in RPG. Was ist das denn? Nein, das habe ich noch nie gesehen...).
Seit vielen Jahren nun sind Informationen für Kunden, was es im AS/400-Bereich Neues gibt, praktisch nicht vorhanden. Die Meisten wissen tatsächlich nicht, dass es dieses System noch gibt (und was es mittlerweile alles kann!). Kurse-/Ausbildung (zumindest hier in Österreich) nur mehr von Drittfirmen, deren Vortragende spätestens bei der zweiten Zwischenfrage einknicken.
Ja und nicht zu vergessen die Software, egal ob DKS, IBM Lohn (Loga+), oder so Dinge wie iCluster - die IBM trennt sich von allem, und damit auch von den Kunden und der damit einhergehenden Bindung.
Lange Rede kurzer Sinn - jemanden, der seine Dateien lieber mit DDS definiert, als maßgeblich schuldtragend an der AS/400 Ignoranz zu bezeichnen, ist aus meiner Sicht völliger Unsinn!
(bitte nicht böse sein oder persönlich nehmen, wollte hier nur mal meine Meinung zu diesem wichtigen Thema posten)
-
Vielen Dank für die ausführliche Info.
Ich werde das mal bei uns im Haus weiter geben.
Zitat von B.Hauser
Natürlich!
Du kannst SQL Scripte entweder im IFS oder als Source Physiscal File Member ablegen.
Mit RUNSQLSTM kannst Du diese Scripte jederzeit wieder ausführen.
Wir legen die Erstellungsbefehle für Datenbankenobjekte (wie DDS) als Teildateien ab (auch alte Schule!). Ich habe z.B. bei uns im PDM den RUNSQLSTM-Befehl hinterlegt. Anstatt jetzt ein Datenbanken-Objekt mit 14 zu erstellen wird die Auswahl RS verwendet.
Wenn man im RUNSQLSTM in der Option DFTRDBCOL die Objekt-Bibliothek mitgibt, kann man sogar die Qualifizierung mit der Bibliothek in den Skripten weglassen. Über das gleiche Skript könnte somit das Objekt in unterschiedlichen Schemata/Bibliotheken (Test/Echt) erstellt werden.
Die andere Alternative ist, die Teildatei mit dem IBM i Navigator - Run an SQL Script/Eine SQL Prozedur ausführen öffnen und anschließend ausführen.
Die SQL Skritpe können aus dem Datenbanken-Objekt über den IBM i Navigator generiert und wahlweise im IFS oder als Teildatei gespeichert werden.
Mit einem der letzten Technology Refreshes wurde auch die Stored Procedure GENERATE_SQL in der Bibliothek QSYS2 bereitgestellt, über die die SQL Skripte ebenfalls generiert und wahlweise ins IFS oder als Teildatei abgelegt werden können.
Noch ein Tip: STRSQL ist genaus "stabilized" wie DDS.
Aktuell ist das Strategische Produkt der IBM der IBM i Navigator (Client Access und Teile sind auch in der Web-Version realisiert).
IBM Data Studio wäre u.U. eine Alternative.
Man sollte sich langsam mit diesen Tools anfreunden.
Birgitta
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