Anmelden

View Full Version : Hilfe zu Qp0lGetAttr Api gesucht



Robi
06-06-03, 15:02
Hi, *all

bei folgendem Coding zu dem o.a. API bekomme ich den Ausführungsfehler :

Der für das Argument angegebene Wert ist nicht Korrekt.

Der Returncode (RC) ist 3021

* Prototype IFS Objektattribute ermitteln -
D IFSGETATTR PR 10I 0 EXTPROC('Qp0lGetAttr')
D * VALUE
D * VALUE
D * VALUE OPTIONS(*STRING)
D 10U 0 VALUE
D * VALUE
D * VALUE
D 10U 0 VALUE


* ------------------------------------------
* FUNKTIONSVARIABLEN(LOOCAL)
* -----------------------------------------
D PFAD_DS dS
D PFAD_CCSID 4B 0 INZ
D PFAD_CNTRY 2A INZ(X'0000')
D PFAD_LANGU 3A INZ(X'000000')
D PFAD_RES0 3A INZ(X'000000')
D PFAD_PTYP 4B 0 INZ
D PFAD_PLEN 4B 0 INZ
D PFAD_PDEL 2A INZ('/')
D PFAD_RES1 10A INZ
(X'00000000000000000000')
D PFAD_PFAD_ *
D PFAD_DS_ S * INZ(%ADDR(PFAD_DS))

* --- Hole Objektattribute ---
C EVAL RC = IFSGETATTR (PFAD_DS_ :
C ATTRTYPLST_ :
C RT_DS_ :
C BUFSIZEPR : (10U 0)
C BUFSIZERQ_ : (*1)
C NUMBYTERT_ : (*1)
C FLWSYMLNK ) (10U 0)

*1: beides Pointer auf 10U 0 Felder
RT_DS_ ist Pointer auf 500Byte alpha Feld

Woher weiß ich auf welchen Parameter sich die Fehlermeldung bezieht bzw. was ist falsch?

Danke, Astrid


[Dieser Beitrag wurde von Robi am 06. Juni 2003 editiert.]

B.Hauser
06-06-03, 20:38
Hallo Robi,

dein Problem liegt in der Definition der 4-Byte-Binär-Felder.

4Byte-Binär wird nicht mit 4B 0, sondern mit 9B 0 oder besser mit 10I 0 (da der komplette Wertebereich aufgenommen werden kann) definiert.

4Byte Binär bedeutet nur, dass 4-Bytes benötigt werden um den Maximal-Wert zu speichern.

1 Bit kann die den Wert 0 oder 1 haben.
1 Byte besteht aus 8 Bit und kann somit 256(=2^8) verschiedene Werte speichern. Für den Maximal-Wert werden also 3-Stellen benötigt.
1 Byte binär wird mit 3I 0 definiert und hat den Werte-Bereich -128 - +127.

2 Byte-Binär entspricht 2^16=65536 (Werte-Bereich -32768 - +32767) und wird demnach mit 5I0 definiert.
(Wird ein Wert > 32767 in ein 5I0-Feld geschoben, erfolgt ein Programm-Abbruch durch Feldüberlauf RNX0103)

Für 4-Byte wird nach dem gleichen Schema gerechnet.

Birgitta