[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2004
    Beiträge
    444

    VARCHAR RPG + DB

    Hallo alle,

    ich hab mal eine Frage bezüglich VARCHAR-Felder in Dateien.
    Falls ich mich richtig erinnere musste man früher bei der Umwandlung von RPG-Programmen CVTOPT(*VARCHAR) angeben. Jetzt meinte ein Kollege dass er es auch ohne umwandeln konnte. Funktioniert dann das abspeichern mit variabler Länge noch richtig ? Kann mir jemand dazu was näheres sagen. Wofür brauche ich wenn es auch ohne geht dann noch CVTOPT(*VARCHAR) ?

    Vielen Dank für Eure Mühe

    Viele Grüsse Harald

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.247
    Wenn kein *VARCHAR definiert ist, werden die Felder in RGP gar nicht erst übernommen. Solnage ich sie nicht referenziere (also verwende) gibt es auch keine Probleme.
    In ILERPG werden die die Felder mit dem Attribut VARYING definert, so dass die Länge bei Zuweisungen und Vergleichen korrekt ermittelt wird. Ansonsten werden sie als Felder fester Länge definiert, so dass auch bei Zuweisungen das Feld mit Leerzeichen aufgefüllt wird, der Vorteil der variablen Speicherung also verloren geht.

    Ausserdem unterscheiden sich die Funktionen %SIZE und %LEN !
    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
    May 2004
    Beiträge
    444
    Also dass ich es richtig verstehe.

    Bei mir geht es um ILE RPG

    Dort ist es nicht notwendig CVTOPT(*VARCHAR) anzugeben da dies automatisch gehändelt wird, oder wird das Feld mit Leerstellen aufgefüllt ?

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.247
    OK, da habe ich mich etwas vertan. Es ist genau anders herum !
    Fehlt die Angabe *VARCHAR werden in ILE die Felder als *VARY automatisch definiert.
    Mit Angabe *VARCHAR werden die Felder als feste Felder definiert, wobei allerdings die Stellen 1-2 die Länge des Inhaltes als 2-Byte-Binärfeld enthält und im Programm selber verwaltet werden muss.

    Bei RPG wurden VARLEN-Felder entweder nicht übernommen (ggf. Fehler bei der Umwandlung) oder als Felder fester Länge definiert.

    Zu beachten ist bei Umstellung von RPG auf RPGLE also folgendes (insbesonders wenn CVTRPGSRC verwendet wurde):
    Wurde RPG mit *VARCHAR umgewandelt, muss das auch mit dem umgestellten Programm gemacht werden, da sonst die ggf. vorhandene Selbstverwaltung der Längeninformation nicht funktioniert.
    Bei neuen ILERPG's kann dies entfallen, da die Längeninfo automatisch verwaltet wird. Sollten allerdings Copy's verwendet werden, die sich auf *VARCHAR verlassen, so ist das entsprechend zu berücksichtigen.

    Auch bei Programmaufrufen / Programmparametern mit *VARY-Feldern ist entsprechend aufzupassen.
    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. Rückgabewert vom RPG Programm
    By mk in forum NEWSboard Java
    Antworten: 8
    Letzter Beitrag: 21-04-11, 21:51
  2. RPG: Client Infos lesen?
    By robertki in forum NEWSboard Programmierung
    Antworten: 25
    Letzter Beitrag: 19-01-07, 08:42
  3. Bibliotheksliste in RPG IV abfragen
    By timeless in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 11-01-07, 12:04
  4. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 10:58

Berechtigungen

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