-
 Zitat von Fuerchau
....
Mittels "eval MyFrstBptr = MyUsPtr + OffsetfBuffer" weist du die Adresse zu und hast Zugriff auf den Puffer des 1. Satzes.
....
yepp, das habe ich alles. die entscheidende stelle, wo es bei mir hakt, und da habe ich vermutlich einen Denkfehler oder was auch immer, ist die stelle, wo ich auf den puffer zugreife.
sieht so aus mein Programm
if open_spoolfile();
if create_userspace();
// Befüllen des User Space
fill_userspace();
// Zugriff auf User Space
GetPointer(USERSPACENAME:UserSpacePointer);
//User Space Informationen verarbeiten
For UserSpaceCounter = 1 to ListHeader.Count;
FieldPointer = UserSpacePointer + ListHeader.Offset
+ (ListHeader.Size * (UserSpaceCounter - 1));
// irgendwas mit den Daten machen
dsplytext = 'DS_SPFR0300.PRINT_DATA= '
+ %editc(DS_SPFR0300.PRINT_DATA:'X') ;
dsply dsplytext ;
endfor;
// Userspace löschen
delete_userspace();
endif;
Close_spoolfile();
endif;
das befüllen sieht so aus (vielleicht etwas übel geschrieben, aber ich arbeite viel mit DSen)
ds_QSPGETSP.Spooled_file_handle
= ds_QSPOPNSP.Spooled_file_handle_returned;
ds_QSPGETSP.Qualified_user_space_name = USERSPACENAME;
ds_QSPGETSP.Format_name = 'SPFR0300';
ds_QSPGETSP.Ordinal_number_of_buffer_to_be_read = 8;
ds_QSPGETSP.End_of_open_spooled_file = '*ERROR';
clear ds_Error_code_ERRC0100;
ds_QSPGETSP.Error_code = ds_Error_code_ERRC0100;
// Einlesen Spoolfile in den Userspace
QSPGETSP(ds_QSPGETSP.Spooled_file_handle
: ds_QSPGETSP.Qualified_user_space_name
: ds_QSPGETSP.Format_name
: ds_QSPGETSP.Ordinal_number_of_buffer_to_be_read
: ds_QSPGETSP.End_of_open_spooled_file
: ds_QSPGETSP.Error_code
);
die Routinen create_userspace(), getpointer(...) und delete_userspace() sehen so aus, als würden sie ordnungsgemäß laufen
hier noch ein paar variablen :
dcl-s UserSpacePointer Pointer;
dcl-s FieldPointer Pointer;
Dcl-Ds ListHeader Based(UserSpacePointer) Qualified;
Offset Int(10) Pos(125);
Count Int(10) Pos(133);
Size Int(10) Pos(137);
End-Ds;
Dcl-Ds ds_SPFR0300 Based(FieldPointer) Qualified;
print_data int(10) pos(1); end-ds;
Dcl-S UserSpaceCounter uns(20) inz;
Dcl-S dsplytext char(50) inz;
wenn ich nun mein Programm laufen lasse, kommen diese Meldungen:
call testspoolf parm('jobname' 'user' '887773' 'TESTSPOOLF' '000001')
Ownership of object @USERSPACE in QTEMP type *USRSPC changed.
DSPLY DS_SPFR0300.PRINT_DATA= 0000000000
Space offset X'00000000' or X'0000000000000000' is outside current limit
for object @USERSPACE.
End of requests.
ich weiß nicht so recht, wie ich den puffer behandeln soll... oder ob im userspace wirklich was drinsteht (wie kann man das prüfen?)
lg karin
Similar Threads
-
By dschroeder in forum IBM i Hauptforum
Antworten: 16
Letzter Beitrag: 17-03-16, 12:42
-
By Burgy Zapp in forum Intern - Hilfe - Feedback - Tests-Forum
Antworten: 8
Letzter Beitrag: 02-03-07, 12:24
-
By delphix in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 28-12-01, 15:18
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