-
Daten aus QFileSvr.400 lesen
Hallo,
fficeffice" />>>
ich möchte mit dem C-API open() eine Datei aus dem Verzeichnis
/QFileSvr.400 /AS400B/home/test/test.properties zum lesen öffnen.>>
Dabei erhalten ich eine –1 im FileDescriptor ( d.h. kann Datei nicht öffnen).
>>
Wir haben also 2 AS/400-Maschinen eine AS400A und AS400B.
Wenn ich die Datei aus /home/test/test.properties von AS400A mit open()
zum lesen öffne, klappt alles wunderbar.
>>
Mit qsh oder Navigator kann ich die Datei test.properties öffnen.
>>
Meine Fragen sind folgende:
1. Muss ich was besonderes wegen Berechtigung auf AS400B einstellen?
(auf beiden Maschinen gibt es den Benutzer mit gleichem Kennwort)
2. Weiss jemand wie ich die globale Variable errno verwenden kann um den
Error-Code herauszufinden?
>>
Vielen Dank...
>>
-
Hast Du vorher mit MKDIR ein Verzeichnis zur zweiten iSeries hergestellt? Kannst Du die Dateien im Explorer sehen?
Kannst Du mal versuchen mit folgenden Einträgen im D-Teil Deines Programms die Exception Message-ID festzustellen?
D CPFMSG S 7 IMPORT('_EXCP_MSGID')
D * VALUE OPTIONS(*STRING)
Gruß,
KM
-
Hallo KM,
die Datei kann ich im Explorer sehen.
Die 2 Einträge in den D-Bestimmungen führten leider zu
einem Programmabbruch.
Trotzdem Danke...
-
Wenn die Variable 'errno' in einem RPG IV-Programm abgefragt werden soll, dann müssen folgende Statements hinzugefügt werden.
h BNDDIR('QC2LE')
d errno S 10I 0 Import('errno')
-
Hallo Frank,
wo wird der Variablen 'errno' dann der Wert zugewiesen?
-
Immer wenn eine Funktion der ILE C/C++ Run-Time Library verwendet wird, die ein Ergebnis in 'errno' stellt, so wird 'errno' auch ein Wert zugewiesen. Ich bin in der Litaratur auch schon öfters darauf gestoßen, dass vor dem Verwenden einer Funktion 'errno' initialisiert werden sollte. Also vor Deinem 'open' einfach 'errno = 0' codieren. Nach dem 'open' kannst Du dann 'errno' abfragen. In den Handbüchern findest Du dann die Bedeutung der einzelnen Codes.
-
etwas seltsam aber als Ergebnis erhalte ich bei errno eine 0
-
Das ergebnis von 'open' gleich -1 und errno gleich 0. Das kann nicht sein. Ich schlage vor, Du postest mal ein paar Statements.
-
Kommando zurück. Hier die Statements, mit denen das ganze wirklich funktioniert.
h bnddir('QC2LE')
D geterrno PR * extproc('__errno')
D errno S 10I 0 based(errnoptr)
d errnoptr S *
Nach dem 'open' folgendes Statement.
c Eval errnoptr = geterrno
Anschließend enthällt die variable errno den entsprechenden Wert. Habs gerade eben selbst noch mal getestet und hat funktioniert.
-
Hallo Frank,
so schaut's schon besser aus.
Danke hat geklappt.
-
die Variable errno enthät den Wert 3490.
Kann mir jemand sagen, was dieser Wert bedeutet?
Aus der Datei QSYSINC/SYS werde ich nicht schlauer.
-
Similar Threads
-
By c.b. in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 26-07-06, 12:22
-
By sim in forum NEWSboard Programmierung
Antworten: 11
Letzter Beitrag: 18-05-06, 08:00
-
By antonkuh in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 24-04-06, 10:37
-
By rebe in forum NEWSboard Programmierung
Antworten: 0
Letzter Beitrag: 28-04-05, 15:49
-
By Heinz Molter in forum Archiv NEWSblibs
Antworten: 0
Letzter Beitrag: 31-08-04, 09:48
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