-
variable calls im free-format RPG
Hallo !
Nachdem im free-format RPG nur mehr der Befehl "callp" verwendet werden kann, suche ich eine Möglichkeit mit callp variable Programme aufzurufen. Im spaltenorientierten RPG war das kein Problem, da ich beim CALL-Befehl eine Variable angeben konnte.
In meinem konkreten Fall habe ich in einer Steuerungsdatei hinterlegt welche Programme ich unter bestimmten Bedingungen aufrufe. Man kann zwar beim Prototyp unter EXTPGM eine Variable angeben, aber bei callp kann ich dann diese Variable nicht ansprechen, da der Compiler keinen Prototyp dazu findet.
Hat vieleicht irgendwer Tipps für mich um das im free-format zu realisieren?
mfg, Opeker
-
Da liegt der Hase im Pfeffer !
CALLP ist im Klartext "CALL PROTOTYPE".
Ein variables Programm kann ich nicht per Prototyp aufrufen. Da bleibt mir nur dann wieder der klassische CALL mit PARM, natürlich NICHT im Free-Format.
-
Hallo,
Falls es nur darum geht sich den endfree free Zinnober zu ersparen (welcher Hornochse hat nur diesen Compiler geschrieben!!!), dann kann man sich mit einer eigenen Procedure CallMe behelfen, die eine Variable übergeben bekommt und dann einen FixFormat CALL ausführt.
Falls man die Flexibilität der Parametrisierung für einen CALLP haben will, dann kann man sowas mit Procedure Pointern erreichen. Man hat dann einen Prototyp, der an einen ProcedurePointer gebunden ist, belegt erst den ProcedurePointer variable und macht dann einen Callp auf den feststehenden Prototyp. (Dazu gab es mal einen Artikel im Midrange Magazin von mir.
Falls man wirklich dynamisch zur Laufzeit gebundene Calls machen will, dann geht auch das; man kann sich den Procedure Pointer per API aus dem Namen ermitteln, dabei wird auch zur Laufzeit erst gebunden. Dazu gibt es was auf meiner OpenSource Seite zum runterladen.
mfg
Dieter Bender
 Zitat von opeker
Hallo !
Nachdem im free-format RPG nur mehr der Befehl "callp" verwendet werden kann, suche ich eine Möglichkeit mit callp variable Programme aufzurufen. Im spaltenorientierten RPG war das kein Problem, da ich beim CALL-Befehl eine Variable angeben konnte.
In meinem konkreten Fall habe ich in einer Steuerungsdatei hinterlegt welche Programme ich unter bestimmten Bedingungen aufrufe. Man kann zwar beim Prototyp unter EXTPGM eine Variable angeben, aber bei callp kann ich dann diese Variable nicht ansprechen, da der Compiler keinen Prototyp dazu findet.
Hat vieleicht irgendwer Tipps für mich um das im free-format zu realisieren?
mfg, Opeker
-
Dynamischer Aufruf von Programmen
Hallo Leute,
es ist sehr wohl möglich Programme variabel mit CALLP aufzurufen!
Dabei wird ein Prototyp mit dem Schlüssel-Wort EXTPGM(Variable) erstellt. Der Prototyp wird ins Programm eingebunden und die Variable mit dem Programm-Namen gefüllt.
Beispiel:
PHP-Code:
D PgmCALL PR ExtPGM(VarPGM)
D Parm1 like(RefFld1)
D Parm2 like(RefFld2)
D VarPGM S 10A
*------------------------------------------------------
/Free
VarPGM = 'MYPGMNAME';
CallP PgmCALL(MyParm1: MyParm2);
VarPGM = 'MYPGM2';
PgmCall(MyParm1: MyParm2);
/End-Free
Das ist doch einfacher als ein Programm in eine Prozedur zu verwandeln und dann Prozedur Pointer und API-Aufrufe einzusetzen oder?
Wie bereits festgestellt heisst CALLP (call with Prototype) und nicht mehr wie ursprünglich call procedure. Die Namensänderung wurde zu dem Zeitpunkt eingeführt als man auch für Programme Prototyping nutzen konnte (Release V4R3 oder so).
Birgitta
-
@Birgitta
Meine Hochachtung. Wie immer, gewusst wo !
Funktioniert das auch mit Prozeduren ?
-
 Zitat von Fuerchau
@Birgitta
Meine Hochachtung. Wie immer, gewusst wo !
Funktioniert das auch mit Prozeduren ?
Leider nein!
Bei Prozeduren muss man mit Procedure Pointern arbeiten.
PHP-Code:
D ProcDSIN PR ExtProc(MyProcPtr)
D ParmDSIN like(DSIN)
D MyProcPtr S * ProcPtr
/Free
MyProcPtr = %PAddr('MYPROCEDURE');
ProcDSIN(MyDSIN);
/End-Free
Birgitta
-
Hallo !
Vielen Dank für die rasche Antwort und die vielen Tipps. Der Tipp von Birgitta war für mich goldrichtig. Ich habe bei meinem Versuch blöderweise (wie beim alten CALL) die Variable aufgerufen und daher hat es nicht funktioniert.
mfg, Opeker
Similar Threads
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 14-03-08, 06:21
-
By Fucasdreh in forum NEWSboard Server Job
Antworten: 0
Letzter Beitrag: 10-01-07, 13:12
-
By redsky in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 04-05-05, 12:26
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 25-01-05, 07:43
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 12-07-04, 09:27
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks