-
User Space
Hi *all
kann mir jemand Tipps (am besten an einem Beispiel *fg) geben, wie ich Daten in einen UserSpace schreibe und anschließend wieder auslesen!
das ich dazu die API's QUsPtrUS & QUsChgUS ist mir schon klar, aber wie benutzen muß ?????
meine Internet-Recherche brachte leider auch nicht den gewünschten Erfolg :-(
mein Problem:
a) ich habe ein Pgm mit dem ich Daten in eine UserSpace schreibe. Diese sind max 80 Zeichen lang und es können min. ein Eintrag u. max 70 Einträge erfolgen
b) mit dem anderen Programm möchte ich dann, diese Daten wieder auslesen und in eine SubFile schreiben. D.h. jeder 80 stelliger Eintrag soll eine Zeile in der SubFile werden!
-
Die API-Beschreibungen findest du hier:
User Space APIs
Per QUSCRTUS erstellst du einen USRSPC in der benötigten Größe.
Per QUSPTRUS kannst du im ILE einen Pointer erhalten, so dass du die Daten direkt schreiben/lesen kannst.
D MyPtr s * <= Pointer aus QUSPTRUS
D MyUsDS DS based(MyPtr)
D Daten 80 Dim(70)
-
erhalte ich dann mit QusPtrUs alle Daten des UserSpace?
stehen dann meine Daten alle gleich in der DS
das mit dem "direkt schreiben/lesen" versteh ich leider auch noch nicht!
(sorry, muß gestehen hab mit API's leider noch nicht viel gemacht!)
-
Mit QUSPTRUS erhältst du die direkte Speicheradresse des USRSPC.
"D MyPtr s *" deklariert einen Pointer auf den die DS mittels based verweist.
Du benötigst also keine weiteren API's zum Zugriff.
Erstellst du allerdings den USRSPC zu klein, erhältst du beim Zugriff auf Adressen ausserhalb einen MCH-Fehler.
Dieses Verfahren eignet sich auch besonders gut für die ganzen anderen API's, da man sehr schnell und einfach auf die diversen Bereiche zugreifen kann.
Immerhin lässt sich auch mit Adressen rechnen:
MyPtr = %addr(MyVar) + 100;
-
super, vielen dank
eine Frage hab ich aber trotzdem noch! ;-)
das schreiben in den UserSpace erfolgt dass dann immer komplett oder kann ich z.B. auch nur das 5 Elemet der DS in den UserSpace schreiben?
=> kann ich dann auch nur einen bestimmten Bereich des User Space ändern?
-
Da du direkt den USRSPC adressierst wird dieser mit jedem EVAL/MOVE/Z-ADD verändert.
Die DS belegt keinen eigenen Speicher sondern verweist über den Based(Pointer) direkt auf das Objekt.
-
Hallo muaddep,
warum willst du unbedingt einen UserSpace benutzen? Für den genannten Fall ist doch eine Dataqueue prädestiniert mit QSNDDTAQ / QRCVDTAQ.
Wie wäre es damit?
Grüße, Werner.
Similar Threads
-
By KM in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 04-08-06, 10:34
-
By QSECOFR-1 in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 03-08-06, 18:06
-
By linguin in forum IBM i Hauptforum
Antworten: 10
Letzter Beitrag: 16-05-06, 12:14
-
By Eric in forum IBM i Hauptforum
Antworten: 16
Letzter Beitrag: 22-11-05, 11:09
-
By miro in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 02-02-05, 13:47
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