View Full Version : Aufrufendes Programm ermitteln
Gibt es denn eine gute Begründung, warum auf einer API-Maschine wie der AS400 keine APIs benutzt werden dürfen?
Ganz einfach:
Es darf nur das verwendet werden, was die anderen auch verstehen.
System-APIs gehören (oft) nicht dazu, weil zu kompliziert !!!
... Komplexe Datenstrukturen, Binary Datentypen, Pointer, User Spaces etc.!
Birgitta
*PRV liefert das aufrufende Programm:
CALL PGMA
CALL PGMB
Der Call des CLP's aus PGMB kann nur PGMB und nicht PGMA liefern.
Deshalb der "Wrapper".
Versuch doch einfach das kleine CL-Programm aufzurufen, und zwar so wie ich beschrieben habe, d.h. Du übergibst den Namen des RPG-Programms als PARCALLED und als PARCALLER bekommst Du das Programm zurück das das RPG-Programm aufgerufen hat.
Auf diese Weise kann man sogar durch den CALL-Stack hangeln, d.h. das im ParCALLED Parameter zurückgegebene Programm wird beim nächsten Aufruf als PARCALLER übergeben usw. bis der Anfang des Callstacks erreicht ist.
Ich hatte das Programm (bevor es das API gab -also vor Release V5R1) jahrelang im Einsatz, schon in den alten RPGIII-Zeiten und auch noch in den frühen RPGIV-Zeiten.
Das Teil habe ich sogar dazu verwendet um das Programm zu ermittelt, das einen Trigger aktiviert hat.
Birgitta
Hallo Birgitta,
hat super funktioniert. Danke
Viele Grüße Harald
Tja, der Kunde ist König. Wenn der das nicht möchte dann ist das halt so. Wir haben lange kämpfen müssen bis wir mal Module bzw. Funktionen verwenden durften. Zur gleichen Zeit durften wir dann auch erstmals /COPY verwenden.
Da es den "/Copy" ja schon seit Einführung der Programmiersprachen gibt, muss das ja schon seeehr lange her sein;).
Nein ist noch nicht so lange her. Sie hatten halt die Vorgaben gemacht und sowohl Funktionen als auch /COPY-Routinen durften nicht verwendet werden. Das hat ja nichts damit zu tun wie lange es sowas bereits gibt. Hat mich jetzt aber selbst nochmal interessiert. Es war 2003. APIs sind halt heute noch nicht erlaubt.
Schätze, wer sowas vorgibt fährt sein Auto auch nur maximal bis zum 5. Gang (und das erst seid 2003)
frei nach dem Motto:
Mehr als 5 Gänge sind 'Hexenwerk', das haben wir noch nie gebraucht.
Statt: Keine API's verwenden sollte das Motto sein:
API Aufrufe, gut kommentieren und interne Schulungen von API Benutzern an dehnen, die es noch nicht gemacht haben.
Der ILEMax
(der sich auch nur schwer an mehr als "Alpa oder Numerisch" gewöhnen konnte)
API Aufrufe, gut kommentieren und interne Schulungen
... wer dasselbe API mehr als einmal benutzt, macht schon was falsch. Komplizierte Schnittstellen gehören in Standardfunktionen gekapselt, dann sind sie einfacher benutzbar als ein CL Command.
D*B