[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jul 2002
    Beiträge
    151

    Unhappy Zugriff auf Datei wo Keyfeld vom Typ variabler Länge

    Hallo all,
    Ich habe folgendes Problem in RPGiV:
    Zugriff auf Datei mit Key-Feld vom TYP variabler Länge soll erfolgen :
    DSFFD:
    NUMBER2 CHAR 11 13 185 Beides NUMBER2
    Feld mit variabler Län-- Zugeordnete Länge: Keine
    Läßt den Nullwert zu
    ID des codierten Zeichensatzes . . . . . : 273

    Bei Umwandlung erhalte ich folgenden Fehler der Wertigkeit 30:
    *RNF7073 30 883 052100 KFLD bei Folgenummer 481 hat eine Länge von 13. Das
    Schlüsselfeld hat eine Länge von 13.

    Code:
    H DATEDIT(*DMY.) DECEDIT(*JOBRUN) CVTOPT(*VARCHAR) ALWNULL(*USRCTL)
    H EXTBININT(*YES)

    * CONTACT: logical File
    FSUT5I5 IF E K DISK PREFIX(CO_)

    * Contact-Key
    C CONKEY KLIST
    C KFLD *IN95 CO_NUMBER2


    0521.00 C CONKEY CHAIN SUT5I5 94

    Wo steckt der Fehler?
    Dabke schon mal, Holger

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.323
    Das Key-Feld muss mit dem Attribut VARLEN definiert werden.

    Ggf. ist noch eine H-Zeile mit ALWNULL(*USRCTL) nötig.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Jul 2002
    Beiträge
    151
    Hallo Fuerchau,
    ALWNULL(*USRCTL) ist drin siehe oben!
    mit Atrribut VARLEN meinst Du da VARYING:

    D ds1 DS
    D CO_NUMBER2 13A VARYING
    D NUM_len 5I 0 OVERLAY(CO_NUMBER2:1)
    D NUM_data 11A OVERLAY(CO_NUMBER2:3) ??

    Gruß Holger

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.323
    Stimmt.
    Durch Varying wird allerdings das Längenattribut automatisch verwaltet.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.883

    CvtOpt(*VARCHAR)

    Hallo Holger,

    Dein Problem liegt in der Verwendung des Schlüssel-Wortes CVTOPT(*VARCHAR) in den H-Bestimmungen. Durch die Angabe dieses Schlüssel-Wortes werden die Felder mit variabler Feldlänge aus externen Dateien in Felder mit fixer Feldlänge umgewandelt.

    Damit stimmt die in RPG-verwendete Feldlänge (fix 13A) des Schlüssel-Feldes nicht mehr mit der tatsächlichen Länge des Schlüssel-Feldes (13A mit variabler Länge) überein. Das ist der Compile-Fehler!

    Wird das Schlüssel-Wort CVTOPT nicht angegeben, oder mit CVTOPT(*NoVarChar) werden die Felder auch in RPG als Felder mit variabler Länge gehandelt.

    Birgitta
    Birgitta Hauser

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

  6. #6
    Registriert seit
    Jul 2002
    Beiträge
    151
    Zitat Zitat von B.Hauser
    Hallo Holger,

    Dein Problem liegt in der Verwendung des Schlüssel-Wortes CVTOPT(*VARCHAR) in den H-Bestimmungen. Durch die Angabe dieses Schlüssel-Wortes werden die Felder mit variabler Feldlänge aus externen Dateien in Felder mit fixer Feldlänge umgewandelt.

    Damit stimmt die in RPG-verwendete Feldlänge (fix 13A) des Schlüssel-Feldes nicht mehr mit der tatsächlichen Länge des Schlüssel-Feldes (13A mit variabler Länge) überein. Das ist der Compile-Fehler!

    Wird das Schlüssel-Wort CVTOPT nicht angegeben, oder mit CVTOPT(*NoVarChar) werden die Felder auch in RPG als Felder mit variabler Länge gehandelt.

    Birgitta
    @Birgitta,
    Danke für die Antwort, aber das Schlüssel-Wort CVTOPT nicht angeben, oder mit CVTOPT(*NoVarChar) geht leider nicht, da ich Felder vom Typ Binär 2 Byte Länge habe, in die ich den Wert X'4000' also DEC 16384 zuweisen muß. Dies bringt bei *NOVARCHAR einen RPG-Fehler.
    Habe die Sache aber gelöst: das Varying Keyfeld muß 2 Byte kürzer definiert werden als das Feld in der Datei, weil er die Längeninfo selbst wieder dazurechnet bei Varying.
    Danke an alle
    Gruß Holger

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.323
    Die Länge eines Varying-Feldes wird mit der Builtin-Funktion %LEN gesetzt bzw. auch automatsch bei Zuweisung verändert:

    /free
    myvarfield = 'Dies ist der Text'; // Die Länge ist nun 17
    %len(myvarfield) = 100; // Die Länge ist nun 100, mit Leerzeichen aufgefüllt
    %len(myvarfield) = 10; // Die Länge ist 10, die Daten abgeschnitten
    /end-free
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Kein Zugriff über QNTC auf Win-Share
    By marmart in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 25-09-07, 15:29
  2. Nachricht CPDB053 beim Zugriff auf Windows Freigabe
    By schatte in forum NEWSboard Windows
    Antworten: 7
    Letzter Beitrag: 21-11-06, 11:37
  3. QNTC Zugriff auf CD Laufwerk Fehlerhaft
    By pwrdwnsys in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 07-11-06, 15:34
  4. Datei von S/36 auf AS/400 holen
    By WeKaSys in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 06-11-06, 17:34
  5. Antworten: 0
    Letzter Beitrag: 24-01-06, 16:29

Berechtigungen

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