[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    2.934
    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen
    Meine Frage war aber nur rein interessenshalber und weniger als Angriff gemeint
    Das gleiche kann man auch über RPG sagen. Und da gibt's auch gerne Schulungen
    +1

    In einer sauberen RPG/ILE Umgebung in der es genau 3 Regeln gibt:
    1. Eine Quelle ergibt entweder genau ein Programm oder genau ein Service Programm
    2. Neue exportierte Prozeduren werden immer ans Ende der Quelle hinzugefügt.
    3. Umwandlung erfolgt über einen speziellen Befehl (der mit entsprechenden Einstellungen im PDM oder RDi) hinterlegt ist

    kann jeder noch so unbedarfte ILE Programmierer problemlos modular programmieren.
    Viel problematischer ist es zu wissen, was modular tatsächlich bedeutet!
    Programme/Prozeduren mit ein paar hundert Statements sind mit Sicherheit NICHT modular.

    Wenn man dan außerdem die Quellen für Programme und Service-Programme in unterschiedliche Quellen-Dateien aufteilt und erklärt, die Quellen in QSRVPGMSRC werden mit CS (Compile Service-Programm) und die in QPGMLESRC mit CP (Compile Service-Programm) umgewandelt, ist es selbst für den klassischen OPM Programmierer möglich Quellen zu ändern und die entsprechenden Objekte problemlos neu zu erstellen.
    In einigen Firmen, in denen mein Compile-Befehl verwendet wird, wissen die Programmierer noch nicht einmal, dass sie mit Bindersprache und Binderverzeichnissen arbeiten!

    Birgitta
    Birgitta Hauser

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

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.748
    Die Regel 2 ist programmtechnisch unnötig.
    Ohne Bindarylanguage werden die Exporte sowieso sortiert.
    Mit Bindarylanguage bestimmt man die Reihenfolge selber.

    Regel 1 sollte man entschärfen und an Stelle von Programm "Modul" setzen.
    Ein Programm/Serviceprogramm kann durchaus eine beliebige Anzahl von Modulen enthalten.

    Auch wenn das Ladeverhalten vielseitig diskutiert wurde gilt trotzdem folgendes (außer bei dynmischem Binden á la GetProcPtr von Dieter):
    Beim Laden eines Serviceprogrammes/Programmes werden sämtliche statischen Adressverweise auf externe Programme direkt per "GetSystemPtr" aufgelöst und somit auch die benötigten externen Programme geladen bevor die erste Zeile Code ausgeführt wird (INZ-Direktive).
    Je mehr externe Verweise benötigt werden, desto länger halt das Laden.
    Sicherlich wird ggf. nicht das gesamte Objekt geladen sondern nur der Datenteil, der die Verweise enthält.
    Dadurch ergibt sich, dass wenige große Serviceprogramme schneller geladen sind als viele viele kleine.

    Das initialisieren der ProcedurePointer erfolgt dann nur noch an Hand der Verweisliste im bereits geladenen Objekt.

    Auch wenn es sich nur im Bereich von Millesekunden bewegt, die Summe über viele tausende Aufrufe macht es dann doch aus.

    Nicht umsonst verwaltet das System selber eine zentrale Verweistabelle, die bei BS-Installation initialisiert wird und einige Tausend benötigte Programmverweise auf Q-Programme enthält um genau diese Initialisierungszeiten zu sparen. Durch das Einspeicherkonzept erfolgen die Aufrufe dann tatsächlich extrem schnell.
    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

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    5.379
    ... es geht selber bei den Experten wüst durcheinander, sobald das Thema Binder Language ins Spiel kommt.
    Ein einfaches Szenario, warum ich keine Binder language verwende:
    Ich habe ein Service Programm DasWirdNix in Produktion, das bereits n Exporte hat.
    Im Rahmen eines Hotfixes 1 kommt ein Export hinzu.
    Im Rahmen eines anderen Hotfixes entsteht eine Variante, die ebenfalls einen Export mehr hat.
    Das ist jetzt nicht mehr elementar konsolidierbar - mache ich keinen Rebind knallts im buchstäblichen Sinne irgendwo - und das bei jeder folgenden Änderung!!!

    Noch ein paar Marginalien:
    Ohne Binder Language werden die Exporte alphabetisch sortiert (impliziert auch CCSID des Jobs!!!), da wird also nicht "hinten" angehängt, da wird einsortiert, unabhängig davon, wo ich den Export physikalisch in der Quelle platziere!!!

    Aktivierungszeiten werden dominiert von der Speicher Allokation und dem eventuellen öffnen von Dateein und solchem - alles andere kann man vernachlässigen. Auch den Unterschied zwischen statischem und dynamischem Aufruf kann man getrost vernachlässigen. Am einfachsten macht man hier was falsch mit Riesen Service Programmen (deshalb hat man ja auch des verzögerte binden eingeführt).

    Wenn das mit einem einfachen Command ohne Binder Language geht und man nix falsch machen kann, dann gehört das ins Betriebssystem und dann ist mir das auch Wurscht...
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Foxtrot erledigt Datawarehouse/MIS Funktionen
    By Dick Dekker in forum NEWSboard Server Software
    Antworten: 0
    Letzter Beitrag: 14-01-03, 15:14
  2. Antworten: 0
    Letzter Beitrag: 04-07-02, 07:31

Tags for this Thread

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •