Anmelden

View Full Version : Eigene Funktionen erstellen



Seiten : 1 [2]

dschroeder
02-06-17, 12:26
1. Kann es sein das sobald ich eine Änderung im Modul vornehme ich sowohl das Serviceprogramm als auch den Eintrag unter bnddir neu erstellen muss? Habe das mal getestet und es scheint sich so zu verhalten.

Wenn du dein Serviceprogramm neu erstellst, musst du meiner Meinung nach den Binderverzeichniseintrag nicht neu machen. Bei uns macht das aber immer unser Compileprogramm automatisch. Da wird das jedesmal neu eingetragen, glaube ich.



2. Wenn ich dieses Binderverzeichnis beim kompilieren mit einbeziehen erwartet er das Standardaktivierungsgruppe auf *no gesetzt wird --> Hat das irgendwelche Auswirkungen die man beachten muss?

Ja ist hier die richtige Antwort. Aber das hilft dir wahrscheinlich auch nicht sonderlich weiter.

Bei uns werden die Programme standardmäßig in der ACTGRP(*CALLER) gewandelt. Das heißt, jedes Programm befindet sich immer in der gleichen Gruppe wie das Programm, das es aufgerufen hat.

BenderD
02-06-17, 13:10
... ich staune immer wieder, wieviel Halbwissen rund um ILE existiert.
Ein Binderverzeichnis ist eine Suchliste nach Exporten, der ist es egal, wann ein Eintrag da gemacht wurde. Gesucht wird immer nach dem aktuellen Stand zur Bindezeit. Was auch heißt, dass von zentralen Binderverzeichnissen ohne Change Management System abzuraten ist.

Änderungen im Binderverzeichnis können beim nächsten rebind zu unerwarteten Effekten führen (falsche Funktion gebunden bei Namensgleichheit, bzw. per Copy statt per referenece oder umgekehrt). In jedem Fall sollte man eindeutige Exportnamen sicherstellen (einfach ist: Modulnamen als prefix durch Umbenennung im Prototyp).

Einfacher und besser als BNDDIR (weil sicherer) ist, beim binden (CRTPGM, bzw. CRTSRVPGM) die benötigten Komponenten dezidiert anzugeben. Unter MODULE alles was per COPY gebunden werden soll, unter BNDSRVPGM alles was via SRVPGM per REFERENCE gebunden werden soll. Dann braucht man entweder jeweils ein Umwandlungs CL, oder man verwendet einen der Open Source Pre-Processor, die das aus der Quelle aus speziellen Kommentaren auslesen.

ACTGRP *CALLER ist für Programme auch nicht das Gelbe vom Ei, das kann zu unangenehmen Seiteneffekten führen.

Auch hier hat selbst das oben erwähnte Redbook durchaus Schwächen - gehört aber trotzdestonichts zu den Besseren (die über SQL Procedures und Functions sind grauselig und enthalten sogar falsche Beispielprogramme).

D*B