[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Thema: DDS COMP

  1. #1
    Registriert seit
    May 2004
    Beiträge
    444

    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

  2. #2
    Registriert seit
    Jun 2001
    Beiträge
    1.975
    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!)

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    May 2004
    Beiträge
    444
    Zitat Zitat von Robi Beitrag anzeigen
    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.

  5. #5
    Registriert seit
    May 2004
    Beiträge
    444
    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

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.875
    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
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  7. #7
    Registriert seit
    May 2004
    Beiträge
    444
    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

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.875
    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
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  9. #9
    Registriert seit
    May 2004
    Beiträge
    444
    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 Zitat von B.Hauser Beitrag anzeigen
    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

  10. #10
    Registriert seit
    Aug 2001
    Beiträge
    2.875
    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
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  11. #11
    Registriert seit
    Dec 2014
    Beiträge
    310
    Zitat Zitat von B.Hauser Beitrag anzeigen
    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)

  12. #12
    Registriert seit
    May 2004
    Beiträge
    444
    Vielen Dank für die ausführliche Info.

    Ich werde das mal bei uns im Haus weiter geben.

    Zitat Zitat von B.Hauser Beitrag anzeigen
    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
  •