-
Eigentlich sind (bis auf TeraSpace 8Byte/64-Bit) doch alle Pointer 128-Bit (also 16-Byte) groß.
Intern wird der Typ und die Berechtigung noch woanders gespeichert, da kommt man tatsächlich nicht mehr dran.
Wenn man einen Pointer nicht mit den Pointer-Befehlen modifiziert, zerstört man die Eigenschaft als Pointer.
Daher kann man niemals aus einem SpacePointer einen Prozedur-/Systempointer oder umgekehrt machen.
Die Funktion GetSpacePointerFromSystemPointer liefert nur die Adresse eines UsrSpc, der am Objekt hängt und nicht das Objekt selber. Hat das Objekt keinen UsrSpc gibts auch keine Adresse.
(nur so am Rande bemerkt).
-
...dazu fällt mir eine andere Frage ein: Ich habe neulich mal versucht, für UIM ein User-Exit-Program mittels Procedurepointer zu registrieren. Um die Adresse meiner Prozedur zu ermitteln, habe ich in RPG die Funktion %PADDR verwendet. Leider wurde dieses Vorhaben jedoch zur Laufzeit vom System abgewiesen, weil es sich dabei nicht um ein Zeiger im TERA-Space handeln soll. Beim RPG-Compiler habe ich im Gegensatz zu C aber nicht die Möglichkeit Storage Model Teraspace auszuzwählen. Heißt dies, dass ich das so in RPG nicht machen kann oder gibts ne andere Lösung?
Gruß, Titus
-
Hallo,
kannst du das Problem mal genauer beschreiben? ich verwende Procedure Pointer zum dynamischen binden seit längerem und habe damit keine Probleme, ich ermittle mir diese zwar per API, aber das sollte mit %PADDR eigentlich auch keine Schwierigkeiten machen.
mfg
Dieter Bender
 Zitat von Marsman
...dazu fällt mir eine andere Frage ein: Ich habe neulich mal versucht, für UIM ein User-Exit-Program mittels Procedurepointer zu registrieren. Um die Adresse meiner Prozedur zu ermitteln, habe ich in RPG die Funktion %PADDR verwendet. Leider wurde dieses Vorhaben jedoch zur Laufzeit vom System abgewiesen, weil es sich dabei nicht um ein Zeiger im TERA-Space handeln soll. Beim RPG-Compiler habe ich im Gegensatz zu C aber nicht die Möglichkeit Storage Model Teraspace auszuzwählen. Heißt dies, dass ich das so in RPG nicht machen kann oder gibts ne andere Lösung?
Gruß, Titus
-
Hallo Dieter,
ich habe eineAnzeigengruppe mittels UIM erstellt. Dort kann man z.B. zum Prüfen von Daten Exit-Programs hinterlegen. Man gibt dazu im Schlüsselwort USREXIT eine Variable vom Typ PTR an. Diese Variable muss man vor Anzeige der PNLGRP mit einem Zeiger auf die Prozedur setzen, die UIM aufrufen soll. Das habe ich in RPG mit der Funktion %PADDR gemacht. Es ließ sich auch alles kompilieren. Leider kam es zur Ausführung aber zur genannten Exception. Die Nachrichten-ID habe ich jetzt leider nicht gerade zur Hand, weil ich erstmal wieder auf traditionellen Aufruf per Programmname umgestellt hatte. Es lag aber wohl daran, dass mein Programm nicht mit STGMDL(*TERASPACE) erstellt wurde. Was wiederum nicht ging, weil es für den Befehl CRTRPGMOD keinen solchen Parameter gibt.
Nun habe ich mich mit den Speichermodellen bisher nicht beschäftigt und bin mir nicht sicher, ob es wirklich unter RPG nicht geht oder ob ich etwas falsch gemacht habe.
Titus
-
Hallo,
nochmal: in RPG kann man mit Procedure Pointern arbeiten, das hat mit Terraspace nix zu tun, mit dem UIM Krempel habe ich mich mal vor Urzeiten im Kontext mit Menüs beschäftigt, da kann ich nix zu sagen und deine Beschreibung über das, was du da versucht hast, ist immer noch entschieden zu vage, da bräuchte man mal Quellen, listings, Fehlermeldung, o.ä.
mfg
Dieter Bender
 Zitat von Marsman
Hallo Dieter,
ich habe eineAnzeigengruppe mittels UIM erstellt. Dort kann man z.B. zum Prüfen von Daten Exit-Programs hinterlegen. Man gibt dazu im Schlüsselwort USREXIT eine Variable vom Typ PTR an. Diese Variable muss man vor Anzeige der PNLGRP mit einem Zeiger auf die Prozedur setzen, die UIM aufrufen soll. Das habe ich in RPG mit der Funktion %PADDR gemacht. Es ließ sich auch alles kompilieren. Leider kam es zur Ausführung aber zur genannten Exception. Die Nachrichten-ID habe ich jetzt leider nicht gerade zur Hand, weil ich erstmal wieder auf traditionellen Aufruf per Programmname umgestellt hatte. Es lag aber wohl daran, dass mein Programm nicht mit STGMDL(*TERASPACE) erstellt wurde. Was wiederum nicht ging, weil es für den Befehl CRTRPGMOD keinen solchen Parameter gibt.
Nun habe ich mich mit den Speichermodellen bisher nicht beschäftigt und bin mir nicht sicher, ob es wirklich unter RPG nicht geht oder ob ich etwas falsch gemacht habe.
Titus
-
Call by address
This type of call is used within OS/400
system programs to allow calls of other
system modules. Define the specified
dialog variable with BASETYPE='PTR'.
When the call function is requested, the
dialog variable must contain a system
pointer to the program. Ensure the proper
authority is contained in the pointer.
Mit anderen Worten:
ILE-Unterstützung keine !
Als Adresse ist nur die Adresse eines OPM bzw. Hauptprogrammes nicht einer Prozedur erlaubt !
Es gibt da noch das ominöse EPM (Extended Program Model), aber was das ist weiß ausser IBM wohl niemand mehr.
-
...aha, verstehe. Und von dieser EPM-Schnittstelle rät IBM sogar selbst ab. Im UIM-Handbuch war irgendwo von schlechter Performance die Rede.
Bezüglich UIM noch eine generelle Anmerkung meinerseits: UIM ist sicher im Vergleich zu Java-Swing etc. etwas veraltet. Es erlaubt aber für OS/400 Dialoge und Berichte zu gestalten, die bezüglich Oberfläche absolut Systemkonform sind. In der Tool-Programmierung ist dies schon recht wichtig.
Gruß, Titus
Similar Threads
-
By Unregistriert in forum NEWSboard Server Job
Antworten: 4
Letzter Beitrag: 08-02-05, 03:04
-
By otto-mueller in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 16-02-04, 08:36
-
By AS-Trade in forum NEWSboard Server & Hardware Markt
Antworten: 0
Letzter Beitrag: 08-11-02, 08:37
-
By W.Steiner in forum Archiv NEWSblibs
Antworten: 0
Letzter Beitrag: 24-08-01, 16:58
-
By Burgy Zapp in forum Archiv NEWSblibs
Antworten: 0
Letzter Beitrag: 15-03-01, 01:21
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