[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Feb 2006
    Beiträge
    62

    grundlegendes zu Modulen bzw. Prozeduren

    hallo,
    ich habe eine grundlegene Frage:

    ist es besser, einzelne Module mit einzelnen Prozeduren zu haben und diese entsprechend nach bestimmten Kriterien zu einem Serviceprogramm zusammenzufassen,
    oder

    ein Modul mit mehreren Prozeduren und das dann in ein Serviceprogramm einzubinden.

    Gruss stoerfang

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Da gibt es keine Universal-Lösung!
    Jedem so wie es für ihn am besten ist.

    Bei uns kann eine Quelle (ich sage jetzt bewusst nicht Modul) beliebig viele exportierte Prozeduren haben.
    Aus jeder Quelle wird zunächst ein Modul und dann ein Service-Programm erstellt. Die exportierten Prozeduren werden in eine Binder-Source eingefügt, die in der Datei QSRVSRC steht und genau so heißt wie das Source-Member.
    Das Service-Programm wird in ein allgemeines Binderverzeichnis eingetragen, das in den H-Bestimmungen jeder Quelle hinterlegt wurde. Nachdem das Service-Programm erstellt wurde wird das Modul gelöscht.

    Ein handgestricktes Compile-Tool erledigt diese Schritte automatisch. Da wir Quelle : Modul : Service-Programm eine 1:1:1-Beziehung haben, kann die Kopilierung über eine Auswahl im PDM erfolgen, ohne Wenn und Aber.

    Muss eine neue Prozedur eingefügt werden, wird die ans Ende der Quelle gestellt und anschließend das Service-Programm mit dem Compile-Command erstellt.

    Die Prozeduren sind nach "Aufgaben-Bereich" in Teil-Dateien gruppiert z.B. Alle Prüf-Prozeduren für die Artikel-Nr. oder alle Update-Funktionen für den Artikel-Stamm.

    Ein Programm besteht nur aus Prozedur-Aufrufen, die in diversen Service-Programmen hinterlegt sein können (allenfalls noch das eine oder andere IF oder DO). Die Compilierung kann wie gewohnt über 14 erfolgen, da die Aktivierungs-Gruppe, sowie das Binderverzeichnis in den H-Bestimmungen hinterlegt wurde. Die Aktivierungs-Gruppe wird benannt, wobei gilt Aktivierungs-Gruppe=Programm-Name.
    Zu Programmen wird nur das umgewandelt, das aus einem Menü aufgerufen oder Submittet wird. Alles andere sind Service-Programme z.T. mit Aktivierungs-Gruppe *CALLER (Update/Input/Delete-Programme) oder benannten Aktivierungs-Gruppen.

    Es gibt natürlich auch Verfechter anderer Strategien, die ohne Bindersprache und ohne Binderverzeichnisse arbeiten und dafür die Compile-Befehle als Kommentar in die Quelle einbinden. Bei der Compilierung werden dann diese Kommentare aus der Quelle ausgelesen und ausgeführt.

    Bei wieder anderen besteht eine Quelle grundsätzlich nur aus einer Prozedur und ein Service-Programm besteht wieder nur aus dieser Prozedur. Damit kann man beim Create Service-Programm Export *ALL angeben und ohne Bindersprache arbeiten ohne Angst vor Signatur-Verletzungen haben zu müssen.

    Es gibt bestimmt noch viele andere Ansätze, die alle PROS und CONS haben. Man muss sich nur für einen Ansatz entscheiden.

    Auf alle Fälle sollte man keine Module verwenden. Selbst wenn man sich heute sicher ist, dass eine Quelle nur einmalig verwendet/eingebunden wird, morgen sieht die Welt ganz anders aus und man muss das Modul aus weiteren Quellen aufrufen. Muss jetzt eine Änderung erfolgen, müssen alle Objekte, in denen das Modul eigebunden wurde neu erstellt werden. (Aus Erfahrung weiß ich, es klappt selten, dass man wirklich alle Objekte erwischt!)
    Bei der Einbindung in Service-Programme besteht die Gefahr nicht. Sobald ein Modul in ein Programm oder Service-Programm eingebunden wurde, kann es gelöscht werden.

    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

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo,

    ein Modul ist erst mal eine Compile Einheit, die mehrere Procedures enthalten kann und shared Data für die Prozeduren enthalten kann. Daraus folgt erst mal:
    Compile Einheit möglichst klein.
    Prozeduren, die mit gemeinsamen Daten arbeiten in einem Modul zusammenfassen.
    Man muss den Modulen einen sprechenden Namen (Substantiv) geben können.
    Den Prozeduren muss man auch einen sprechenden Namen geben (Verb) können. Gelingt dies nicht, sind sie zu groß.
    Vor dem Aufruf steht bei ILE das binden.
    Programm wird alles, was man dynamisch aufrufen will.
    Alles andere erst mal Service Programm.
    Im Zweifelsfall mehrere kleinere Einheiten.
    Und jetzt erst mal loslegen - die Feinheiten haben Zeit bis später.

    mfg

    Dieter Bender

    Zitat Zitat von stoerfang
    hallo,
    ich habe eine grundlegene Frage:

    ist es besser, einzelne Module mit einzelnen Prozeduren zu haben und diese entsprechend nach bestimmten Kriterien zu einem Serviceprogramm zusammenzufassen,
    oder

    ein Modul mit mehreren Prozeduren und das dann in ein Serviceprogramm einzubinden.

    Gruss stoerfang
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  4. #4
    Registriert seit
    Feb 2006
    Beiträge
    62
    Vielen Dank für diese Informationen...


    Gruss stoerfang

Similar Threads

  1. Frage zu WDSC bzw. CODE400
    By Mr.iSeries in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 02-09-08, 10:16
  2. GFC 6224-002 bzw. MT50 gesucht
    By GAusthoff in forum NEWSboard Server & Hardware Markt
    Antworten: 0
    Letzter Beitrag: 24-11-06, 14:23
  3. Ihre iSeries bzw. i5 verarbeitet Excel und mehr
    By mk in forum NEWSboard Server Software
    Antworten: 0
    Letzter Beitrag: 30-10-06, 09:19
  4. Dateien in QDLS bzw. IFS über Explorer löschen
    By dino in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 22-05-06, 18:59
  5. Definition von Modulen / Prozeduren
    By sunhole in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 18-08-05, 08:36

Berechtigungen

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