[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    cicero22 Besucher/Guest

    Arbeitet man heute noch mit Pointern?

    Hallo *All!

    Bin hier über ein paar Sourcen gestossen, in denen es so üblich ist mit Hilfe von Pointern zu lesen, chainen, löschen und alles was man so braucht. D.h. die Pointer stecken in *MODULE und werden vom Hauptprogramm dann aufgerufen..... (DS usw...)

    Macht man heute sowas noch? Wo liegen die Vorteile?
    Ändert sich eine physische, muss ich doch ohnehin alle Programme neu umwandeln, oder?

    Danke
    Dirk

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Da stelle doch mal ein Beispiel hier rein.

    Die HLL-Compiler (RPG/LE, COBOL usw.) arbeiten immer mit Pointern, da eine Variablenübergabe nicht anders funktioniert (Ausnahme sog. Basistypen wie int, double, char).
    Der Programmierer muss normalerweise darüber nichts wissen, da er ja Variablen definiert.

    CALL 'XXX'
    PARM YYYY

    ist ja nichts anderes als die Adressübergabe von YYYY an Programm XXX.

    *ENTRY PLIST
    PARM ZZZZ

    ist nichts anderes, als das Variable ZZZZ auf der Adresse des rufenden Programmes basiert.
    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

  3. #3
    Registriert seit
    Oct 2003
    Beiträge
    71

    was ist ein HLL ?

    schon zum zweiten mal stolpere ich heute über den bergiff. kann mir jemand erklären was das sein soll?

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Pointer (engl.) => Zeiger (Deutsch)

    Ein Pointer ist eine Adresse, die auf eine Variable verweist.
    ILERPG:

    D MyPointer *
    D MyDs DS based(MyPointer)
    D MyDs2 DS

    C MyPointer = %addr(MyDs2)

    und schwupps, verweist MyDs auf MyDs2 !
    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

  5. #5
    Registriert seit
    Aug 2004
    Beiträge
    923
    Zitat Zitat von ratinger
    schon zum zweiten mal stolpere ich heute über den bergiff. kann mir jemand erklären was das sein soll?
    dazu reicht es theoretisch die Wikipedia zu bemühen:
    http://de.wikipedia.org/wiki/Hll

    eben jede "bessere" Programmiersprache wie Fuerchau schon sagte.

    Gruss

    k.

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Lesen muss man können

    HLL = High Level Language

    Dient zur Abhebung/Abgrenzung der Sprachen zu Maschinen-Sprachen (auch Assembler).
    AS/400: MI (MachineInterface)
    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 2002
    Beiträge
    5.287
    Hallo,

    die meisten Sachen mit explizit deklarierten Pointern gehen auch ohne und sind dann besser lesbar und sicherer, in diesen Fällen sollte man besser drauf verzichten.
    Es gibt bei einigen rudimentären Programmiersprachen (wie zum Beispiel RPG), oder rudimentären Ablaufumgebungen (wie zum Beispiel ILE) hin und wieder Dinge, die ohne Pointer nicht gehen, wenn man das dann braucht, dann nimmt man eben Pointer.
    Grundsätzlich vorsichtig sollte man mit dem rechnen mit Pointern sein, wenn man sich da im Programm verfliegt, geht es so richtig in den Wald - bei der AS400 kommt noch dazu, dass ein Pointer nicht wirklich weiß, worauf er da zeigt, selbige also untypisiert sind.

    mfg

    Dieter Bender

    Zitat Zitat von cicero22
    Hallo *All!

    Bin hier über ein paar Sourcen gestossen, in denen es so üblich ist mit Hilfe von Pointern zu lesen, chainen, löschen und alles was man so braucht. D.h. die Pointer stecken in *MODULE und werden vom Hauptprogramm dann aufgerufen..... (DS usw...)

    Macht man heute sowas noch? Wo liegen die Vorteile?
    Ändert sich eine physische, muss ich doch ohnehin alle Programme neu umwandeln, oder?

    Danke
    Dirk
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Das gilt (ausser bei Java) allerdings für alle anderen Programmiersprachen auch, Pointer sind einfach nur Adressen.

    Allerdings gibt's auf der AS/400 doch ein paar kleine Pointer-Unterschiede:
    System-Pointer => verweisen immer nur Auf Objekte
    Space-Pointer => verweisen auf Datenbereiche
    Data-Pointer => sind eigentlich keine Pointer sondern verweisen auf einen Descriptor, der wiederum die Ausprägung der Variablen (Typ und Länge) enthält.
    Der Data-Pointer entspricht eigentlich dem, von Dieter gefordeten, typisierten Pointer, kann leider ausschließlich in MI verwendet werden.
    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

  9. #9
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo,

    Java hat das nur konsequent abgeklemmt (und bietet dafür reflection an, womit man (fast) denselben Unfug anrichten kann...).

    leichten Widerspruch bei den System Pointern, eigentlich variiert nur die Länge und selbiger könnte auch ein Procedure Pointer sein...

    mfg

    Dieter Bender

    Zitat Zitat von Fuerchau
    Das gilt (ausser bei Java) allerdings für alle anderen Programmiersprachen auch, Pointer sind einfach nur Adressen.

    Allerdings gibt's auf der AS/400 doch ein paar kleine Pointer-Unterschiede:
    System-Pointer => verweisen immer nur Auf Objekte
    Space-Pointer => verweisen auf Datenbereiche
    Data-Pointer => sind eigentlich keine Pointer sondern verweisen auf einen Descriptor, der wiederum die Ausprägung der Variablen (Typ und Länge) enthält.
    Der Data-Pointer entspricht eigentlich dem, von Dieter gefordeten, typisierten Pointer, kann leider ausschließlich in MI verwendet werden.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    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

  11. #11
    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

  12. #12
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    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/

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
  •