-
Displayfile Pointerübergabe
Hallo allesamt.
Ich habe mal wieder ein programmierproblem für ausgewachsene programmierer
hoffe jemand kann helfen.
Problem:
Ich habe ein Displayfile mit 4 Feldern.
alle felder sind mit returncursor deklariert,
damit ich bei F4 den feldnamen bekomme
und mit diesem dann ein externes programm aufrufen kann, dieses programm liefert mit im übergabefeld den wert für
dieses feld. wie zun geier bekomme ich nun den inhalt in das displayfile.
Beispiel
Feldname: feld1 (F4)
call PGM
parm feld1 (name des feldes bei call)
rückgabe im feld1 parameter = "hugo"
nun möchte ich diesen wert "hugo"
inf feld1 anzeigen und übernehmen.
feld1 kann auch feld2 feld2 usw sein(name des Displayfile Feldes)
und jedsmal einen anderen wert haben.
um das ganze nich mit select zu machen, dachte ich an Pointer. liege ich falsch?
für ein kurzes beispiel währe ich dankbar
Gruss an alle
-
Da Feldnamen zur Compilezeit in Adressen übersetzt werden, können Namen zur Laufzeit nicht dynamisch ermittelt werden.
Du kannst aber z.B. eine Tabelle mit Namen und Adressen initialisieren und diese Adressen dann per Value an das Programm übergeben, so dass diese die Adresse wieder als normale Referenz übernehmen.
Gegen die berühmten Pufferüberschreibungen musst du allerdings selber arbeiten:
d myflds ds
d fldname1 10 inz('NAME1')
d fldadr1 * inz(%addr(NAME1)
usw. usw.
-
@Baldur: im Falle von exportierten Feldern kann man den Exportnamen auch zur Laufzeit von einem API gegen den Pointer tauschen lassen. Das ist dieselbe Mimik, die ich in PROCP4NAME verwende (steht als Freeware auf meiner OpenSource Seite).
mfg
Dieter Bender
 Zitat von Fuerchau
Da Feldnamen zur Compilezeit in Adressen übersetzt werden, können Namen zur Laufzeit nicht dynamisch ermittelt werden.
Du kannst aber z.B. eine Tabelle mit Namen und Adressen initialisieren und diese Adressen dann per Value an das Programm übergeben, so dass diese die Adresse wieder als normale Referenz übernehmen.
Gegen die berühmten Pufferüberschreibungen musst du allerdings selber arbeiten:
d myflds ds
d fldname1 10 inz('NAME1')
d fldadr1 * inz(%addr(NAME1)
usw. usw.
-
Dazu müsste ich allerdings aus dem Programm ein Modul machen, die Displayfelder exportieren.
Ich denke, dieser Aufwand lohnt nicht im Verhältnis zur gewünschten Funktion.
Ich würde in diesem Fall tatsächlich ein bisschen Definitionsarbeit machen und dann die Adressen per %lookup ermitteln und übergeben.
Similar Threads
-
By steven_r in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 07-11-06, 11:01
-
By THH in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 19-12-05, 10:32
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