PDA

View Full Version : Aufrufbibliothek von CL rausfinden



linguin
26-09-08, 10:07
Hallo,

ich habe ein CL

MEINELIB/MEINCL

Dieses Rufe ich per FTP über RCMD auf.

Gibt es irgendeine Möglichkeit in diesem CL herauszufinden in welcher Bibliothek sich das CL befindet oder anders gesagt, von welcher Bibliothek es aufgerufen wurde. (Hier MEINELIB)

Hintergrund: Es gibt mehrere dieser CLs mit dem gleichen Namen. In verschiedenen LIBs.

MEINELIB/MEINCL
MEINEBIB/MEINCL
MEINBUBU/MEINCL
...

Ich muss jetzt wissen in welcher LIB ich das CL aufrufe um dann in dieser LIB wieder andere CLs aufzurufen.

Danke

Christian

kuempi von stein
26-09-08, 10:35
Man könnte natürlich tricksen und im CL ne Variable haben in der die Lib drinsteht.
Aber ich denke, das ist keine schöne Lösung..

Die Lib sieht man im Programmstack!
Schau Dir den mal an, wenn das PGM läuft!

Auslesen dann mittels API QWVRCSTK
bzw hier nen Beispiel als Code midrange.com -- RPG400-L -- AW: procedure to return calling pgm name (http://archive.midrange.com/rpg400-l/200209/msg00511.html)

RobertMack
26-09-08, 10:40
Hmmm,

DCL VAR(&LIB) TYPE(*CHAR) LEN(10)

RTVOBJD OBJ(MEINCL) OBJTYPE(*PGM) RTNLIB(&LIB)

... aufgrund der Suchliste müsste sich das CL dann selbst finden, somit:

IF COND(&LIB *EQ '...') THEN() u.s.w.

RobertMack
26-09-08, 10:49
Nachtrag (Tipp):

Falls die LIB-Namen nicht unwiderruflich fest verdrahtet sind ('eh nicht zeitgemäß) würde ich diese "von außen" pflegbar machen. Sei es durch Ablage der Namen in *DTAARAS in der jeweiligen LIB oder durch eine andere Art der variablen Steuerung.

FTP & Co. bringen sich öfter mal durch Veränderungen ins Gedächtnis zurück ;-)

linguin
26-09-08, 10:56
Hallo Robert,

danke für den Tipp. Aber soweit war ich schon :-)

Das Problem ist ja das das MEINCL nicht in der Bibliotheksliste ist und deswegen auch nicht gefunden wird von RTVOBJD !!!

Auch die *DTAARA müsste in der LIB stehen wo das Proggi ist. Aber dafür muss ich natürlich die LIB wissen :eek:

Und per FTP hab ich sowas nicht !!

Any Ideas ?

Gruß

Christian

BenderD
26-09-08, 11:22
das hatten wir doch schonmal, mal mit SNDPGMMSG suchen, oder die AS/400 typische Lösung mit Command und dranhängender Prodlib

D*B

RobertMack
26-09-08, 11:25
... probier mal, was ein RTVCURDIR zurückliefert.

kuempi von stein
26-09-08, 11:40
http://newsolutions.de/forum-systemi-as400-i5-iseries/newsboard-programmierung/11356-programmbibliothek-einem-cobol-oder-cl-programm-ermitteln.html

stehen zwei mögliche Lösungen drin

schatte
27-09-08, 18:00
Hallo,

ich verwende immer folgendes RPG Programm. Diese binde ich einfach als *MODULE ein.
Im CL dann mit CALLPRC aufrufen.


D SDS
D LIBNAME 81 90
*
C *ENTRY PLIST
C PARM X_LIBNAME 10
C EVAL X_LIBNAME=LIBNAME
C EVAL *INLR=*ON

Damit klappt das einwandfrei.

Viele Grüße
Matthias