-
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
-
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
-
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 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
-
Vielen Dank für diese Informationen...
Gruss stoerfang
Similar Threads
-
By Mr.iSeries in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 02-09-08, 10:16
-
By GAusthoff in forum NEWSboard Server & Hardware Markt
Antworten: 0
Letzter Beitrag: 24-11-06, 14:23
-
By mk in forum NEWSboard Server Software
Antworten: 0
Letzter Beitrag: 30-10-06, 09:19
-
By dino in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 22-05-06, 18:59
-
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
-
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