[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    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).
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  2. #2
    Registriert seit
    Mar 2006
    Beiträge
    29
    ...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

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    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 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
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  4. #4
    Registriert seit
    Mar 2006
    Beiträge
    29
    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

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    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 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
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Mar 2006
    Beiträge
    29
    ...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

  1. Haben As400 Programmierer heute noch Chancen ?
    By Unregistriert in forum NEWSboard Server Job
    Antworten: 4
    Letzter Beitrag: 08-02-05, 03:04
  2. php-DB2 AS400 arbeitet extrem langsam
    By otto-mueller in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 16-02-04, 08:36
  3. Nur heute ! 15" Marken-TFT = € 249.-
    By AS-Trade in forum NEWSboard Server & Hardware Markt
    Antworten: 0
    Letzter Beitrag: 08-11-02, 08:37
  4. Antworten: 0
    Letzter Beitrag: 24-08-01, 16:58
  5. IBM arbeitet an weiterer Miniaturisierung von Chips
    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
  •