[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    1.975

    Post Hilfe zu Qp0lGetAttr Api gesucht

    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.]
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.873

    Post

    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
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

Similar Threads

  1. Probleme API QUSLJOB aufzurufen
    By TMusolf in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 25-01-07, 12:42
  2. Hilfe bei Lodrun Anleitung
    By marcel331 in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 12-08-06, 13:01
  3. Rumba API + Doku gesucht!!!
    By chullain in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 19-03-06, 12:31
  4. API gesucht
    By Vicky-B in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 11-11-05, 10:19
  5. API gesucht
    By Bodo Roggenkamp in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 16-11-04, 14:42

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •