PDA

View Full Version : libl ändern in UDF



waro
09-05-05, 23:20
Hallo,

ist es möglich in einer UDF die Bibliotheksliste zu ändern.

Hintergrund:
Ich habe eine UDF die ein Programm aufruft, welches wiederrum eine bestimmte Umgebung (DTAARAS, LIBL) braucht.

Ich will die UDF folgendermaßen aufrufen:

SELECT mylib.myudf('Umgebung', Parm1, Parm2) from mylib.mytable

Abhängig von Umgebung sollte die entsprechnde Bibliotheksliste eingestellt werden.

Dann ein Programm gestartet werden, welches voraussetzt, dass die Bibliotheksliste passt und best. Datenbereiche richtig versorgt sind.

Mein Problem ist, dass die Befehle Chglibl, Addlible nicht sicher für mehrere Threats sind.

Ich hoffe es war halbwegs verständlich was ich vorhabe.

Danke für Eure Mühe.

Fuerchau
10-05-05, 09:29
Als UDF läßt sich das auch nicht realisieren.
Threadsicher bedeutet im Falle eines Select's, dass die Daten ggf. von mehreren Threads parallel selektiert werden.
Das heißt auch, dass das aufzurufende Programm Threadsicher sein muss !!
Wird die UDF als SQL-Prozedur erstellt ist sie auch Threadsicher. Ist die UDF ein externes Programm ist sie je nach Sprache threadsicher oder auch nicht.

Deine UDF müsste also die LIBL des Jobs temporär ändern und nach Aufruf des externen Programmes auch wieder zurückändern. Durch die Parallelität könnte aber der eine Thread die LIBL für den anderen Thread zerstören, da die Libl ja Job- und nicht threadspezifisch ist.

Neben den Performanceaspekten und der Parallelausführung von Select's würde ich mir da ein anderes Konzept überlegen.

BenderD
13-05-05, 18:02
Hallo,

das klingt zwar alles abenteuerlich und nach schlechtem Design, aber an der Threadsicherheit stirbt das nicht. In dem Beispiel wird nix aufgethreaded und dann passiert auch nix. Überdies lässt sich das abschalten per: Compile Option des RPG.

mfg

Dieter Bender


Hallo,

ist es möglich in einer UDF die Bibliotheksliste zu ändern.

Hintergrund:
Ich habe eine UDF die ein Programm aufruft, welches wiederrum eine bestimmte Umgebung (DTAARAS, LIBL) braucht.

Ich will die UDF folgendermaßen aufrufen:

SELECT mylib.myudf('Umgebung', Parm1, Parm2) from mylib.mytable

Abhängig von Umgebung sollte die entsprechnde Bibliotheksliste eingestellt werden.

Dann ein Programm gestartet werden, welches voraussetzt, dass die Bibliotheksliste passt und best. Datenbereiche richtig versorgt sind.

Mein Problem ist, dass die Befehle Chglibl, Addlible nicht sicher für mehrere Threats sind.

Ich hoffe es war halbwegs verständlich was ich vorhabe.

Danke für Eure Mühe.