PDA

View Full Version : BNDDIR / Servicepgm und Module... allgemeine Fragen



AndreasH
12-11-02, 17:17
Hallo zusammen,
wir haben bei uns 2 AS/400, eine zur Entwicklung/Test und eine Produktionsmaschine. Soweit so gut.
Nun hab ich ein Verständnisproblem, was ich denn bei Auslieferungen von geänderten Programmen alles übertragen muss. Im Moment läuft bei uns folgender Ablauf:
Modul erstellen/ändern
Servicepgm Binderquelle ändern, dabei kopieren von
STRPGMEXP PGMLVL(*CURRENT) in
STRPGMEXP PGMLVL(*PRV)
(Levelcheck immer auf *YES.)
Dann entfernen des Serviceprogramms aus dem Binderverzeichnis und wieder reinnehmen des neu erstellten (wobei es den gleichen Namen behält. Hosenträger und Gürtel Methode)
Dann werden BNDDIR, SRVPGM und alle Module auf die Produktionsmaschine übertragen.
Ich bin ziemlich sicher, dass wir die Module nicht übertragen müssen, nur das zu Testen auf einer Produktionsmaschine, die 7 Tage die Woche bereitstehen muss ist sicher nur die zweitbeste Idee...
Fragen also: Was muss ich übertragen? und muss das Servicepgm entfernt und wieder ins BNDDIR reingenommen werden wie "hart" ins BNDDIR aufgenommene Module, wenn sie sich ändern?
Und noch eine Style Frage:
Machen mehrere Serviceprogramme Sinn oder sollte man grundsätzlich alle Module in ein großes Serviceprogramm binden?

Danke für alle Antworten

Andreas

rmittag
12-11-02, 18:12
Zuerst mal der Versuch einer Begriffserklärung, direkte Antworten inline :

Service-Programme und Module expotieren und importieren Prozeduren und/oder Variablen. Um dem armen http://www.as400-forum.de/ubb/wink.gif Programmierer die Schreibarbeit zu erleichtern, gibt es Binderverzeichnisse. Diese enthalten nur das, was man am Bildschirm sieht: also einen Namen, einen Typ und eine Bibliothek. Das ist vergleichbar einem Telefonverzeichnis, da wohnt ja auch keiner drin.

Beim Erstellen eines (Service-)Programmes sucht der Binder zu allen Importen die passenden Exporte. Dazu wird die Liste der im Parameter übergebenen Module, Service-Programme und Binderverzeichnisse benutzt.

Nach dem Binden sind Module und Binderverzeichnisse zum Ablauf nicht mehr nötig, nur die Programme und Service-Programme.
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>
dabei kopieren von
STRPGMEXP PGMLVL(*CURRENT) in STRPGMEXP PGMLVL(*PRV)
[/quote]
das ist nur nötig, wenn sich in der Reihenfolge der Exporte etwas geändert hat, oder welche dazugekommen sind.
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>
Dann entfernen des Serviceprogramms aus dem Binderverzeichnis und wieder reinnehmen des neu erstellten (wobei es den gleichen Namen behält. Hosenträger und Gürtel Methode)
[/quote]
??? das ist wie nach dem Telefonieren die Telefonnummer im Adressbuch ausradieren und wieder reinschreiben http://www.as400-forum.de/ubb/wink.gif
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>
Dann werden BNDDIR, SRVPGM und alle Module auf die Produktionsmaschine übertragen.
... Fragen also: Was muss ich übertragen?
[/quote]
s.o.
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>
und muss das Servicepgm entfernt und wieder ins BNDDIR reingenommen werden wie "hart" ins BNDDIR aufgenommene Module, wenn sie sich ändern?
[/quote]
weder das eine, noch das andere
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>
Und noch eine Style Frage:
Machen mehrere Serviceprogramme Sinn oder sollte man grundsätzlich alle Module in ein großes Serviceprogramm binden?
[/quote]
zum einen ist das tatsächlich eine Style Frage, d.h. das kommt darauf an, aber wichtiger sind hier Fragen des Anwendungsdesigns, z.B. macht es wenig Sinn ein riesiges Service-Programm zu laden, wenn jeweils nur wenige Exporte gebraucht werden.

aber das muß man im einzelnen entscheiden
Gruß
Rolf

[Dieser Beitrag wurde von rmittag am 12. November 2002 editiert.]

AndreasH
13-11-02, 08:58
Es wird Licht :-)
Vielen Dank

Andreas

Fuerchau
13-11-02, 11:21
Noch ein paar Erklärungen:

Im Gegensatz zu OPM-Programmen lassen sich ILE-Programme im laufenden Betrieb nur schwer ersetzen.
OPM-Programme wurden in die QRPLOBJ-Lib geschoben (MOVOBJ) und dann das neue Programm eingestellt, so dass laufende Jobs bis zum Neuaufruf des Programmes noch mit der alten Version weitergearbeitet haben.

Bei ILE ist dies NICHT mehr möglich. Ein laufendes ILE-(Service-)Programm kann nicht mehr verschoben und ersetzt werden. Die Programme dürfen nicht mehr aktiv sein !

Nun noch zu den Modulen:

Wenn nur einzelne Module korrigiert wurden (Fehlerbehebungen) und keine neuen Exporte hinzugekommen sind, liegt der Vorteil von ILE darin nicht mehr die kompletten Programme verschicken zu müssen sondern nur noch die modifizierten Module und diese dann per UPDPGM in die vorhandenen ILE-(Service-)Programme zu übernehmen (auch dieses geht übrigens nicht, wenn das Programm noch aktiv ist).

AndreasH
13-11-02, 13:25
danke für die Ergänzungen. Ich hab mir darauf nen Kopf gemacht, wie man denn erkennen soll, ob das Serviceprogramm aktiv ist oder nicht. Wenn man nur OPM kennt ist das etwas schwierig zu durchschauen.
Arg vereinfacht dargestellt:
In OPM ruft Benutzer A ein Programm auf, Programmkopie wird in den Hauptspeicher gelegt, Benutzer A bekommt seinen eigenen Variablenbereich. Benutzer B ruft das gleiche Programm auf und bekommt nur noch den Variablen Bereich angelegt.
Bei Serviceprogrammen hatte ich das so verstanden, dass nur die Moduln dazugeladen werden, die auch in das "echte Programm" per Referenz gebunden sind. Das dazu erstmal das ganze Servicvepgm geladen werden muss ist einsichtig. Aber bleibt das ganze Servicepgm im Speicher, bis das letzte Programm, dass ein Modul daraus benutzt irgendwann mal beendet ist?
Zitat:
--------------------------------------------------------------------------------
Wenn nur einzelne Module korrigiert wurden (Fehlerbehebungen) und keine neuen Exporte hinzugekommen sind, liegt der Vorteil von ILE darin nicht mehr die kompletten Programme verschicken zu müssen sondern nur noch die modifizierten Module und diese dann per UPDPGM in die vorhandenen ILE-(Service-)Programme zu übernehmen (auch dieses geht übrigens nicht, wenn das Programm noch aktiv ist).

dazu steht in der Hilfe von UPDPGM folgendes:
Mit dem Befehl UPDPGM (Programm aktualisieren) können Module eines
ILE-Binderprogramms durch andere Module auf dem System ersetzt
werden, ohne daß der Benutzer das Binderprogramm ändern oder erneut
kompilieren muß. Bei den zu ersetzenden Modulen muß es sich um auf
dem System vorhandene Modulobjekte (*MODULE) handeln.

Andere Jobs, die das Binderprogramm ausführen, können fortgesetzt
werden, während das Programm mit diesem Befehl aktualisiert wird.
Das derzeit ausgeführte Binderprogramm wird in die Bibliothek
QRPLOBJ übertragen, und eine aktualisierte Version des
Binderprogramms wird in die Bibliothek des Binderprogramms gestellt.
Aktuelle Aktivierungen des Programms werden weiterhin mit der
Version in QRPLOBJ ausgeführt.

Grundsätzlich ist beides durch unsere getrennten Maschinen kein Problem. Programme werden nur nachts übertragen direkt nach der Sicherung, wenn kein Anwender aktiv ist. Nur fiel mir der teil mit der QRPLOBJ halt auf.

Andreas

EDIT Notiz: Rechtschreibkorrekturen

[Dieser Beitrag wurde von AndreasH am 13. November 2002 editiert.]