convert()

Die Systemfunktion 'sysLib.convert()' konvertiert Daten aus dem Format EBCDIC (Host) in das Format ASCII (Workstation) und umgekehrt oder führt Codepage-Konvertierungen innerhalb eines einzelnen Formats durch.

Syntax

  sysLib.convert(
    Ziel ANY inOut,
    [Richtung ConvertDirection in,
    Konvertierungstabelle STRING in] )
Ziel
Der Name der Variablen mit den zu konvertierenden Daten. Die Daten werden an Ort und Stelle auf der Basis der Felddefinition der Felder auf der untersten Ebene (Felder ohne Unterstruktur) im Zielobjekt konvertiert.

Datensätze variabler Länge werden nur für die Länge des aktuellen Datensatzes konvertiert. Die Länge des aktuellen Datensatzes wird mithilfe von 'numElementsItem' im Datensatz berechnet oder anhand von 'lengthItem' im Datensatz gesetzt. Wenn der Datensatz variabler Länge inmitten eines numerischen Felds oder eines DBCS-Zeichens endet, tritt ein Konvertierungsfehler auf, und das Programm wird beendet.

Richtung
Die Richtung der Konvertierung. Bei Angabe von Konvertierungstabelle ist die Richtung erforderlich. Ansonsten ist die Richtung optional. Dieser Parameter verwendet Werte aus der Auflistung 'ConvertDirection':
remote
Dies ist der Standardwert. Es wird davon ausgegangen, dass die Daten ein fernes Format (Remote) haben und in ein lokales Format (Local) konvertiert werden sollen.
local
Es wird davon ausgegangen, dass die Daten ein lokales Format (Local) haben und in ein fernes Format (das in der Konvertierungstabelle definiert ist) konvertiert werden sollen.
Konvertierungstabelle
Eine Variable oder ein Literal, die/das den Namen der Konvertierungstabelle für die Datenkonvertierung angibt. Als Standardwert wird die Konvertierungstabelle verwendet, die beim Generieren des Programms dem Landessprachencode in der Erstellungsdeskriptoroption 'targetNLS' zugeordnet wird.

Hinweise zur Definition

Sie können den Verbindungsoptionsabschnitt verwenden, um folgende Aktionen auszuführen:
  • Anfordern, dass für Fernaufrufe eine automatische Datenkonvertierung generiert werden soll.
  • Starten ferner asynchroner Transaktionen.
  • Zugreifen auf ferne Dateien.
Bei einer automatischen Konvertierung wird immer die Datenstruktur verwendet, die für das zu konvertierende Argument definiert ist. Hat ein Argument mehrere Formate, sollten Sie keine automatische Konvertierung anfordern. Codieren Sie das Programm stattdessen so, dass die Funktion 'sysLib.convert()' explizit mit erneut definierten Datensatzdeklarationen aufgerufen wird, die die aktuellen Werten des Arguments korrekt abbilden.

Beispiel

Record OrderRec
   10 record_type char(3);
   10 productName char(20); 
end 

Record NewOrderRec
   10 record_type char(3);
   10 productNumber bigint;
   10 unitCost decimal(7);
   10 skuNum char(8); 
end

Program ProgramX type basicProgram
   myOrderRec OrderRec;
   myNewOrderRec NewOrderRec {redefines = "myOrderRec"};
   myConvTable char(8);
   
   function main();
      myConvTable = "CSOX850"; // Konvertierungstabelle für EBCDIC (amerikanisches Englisch)
      if (myOrderRec.record_type == "00A")
         sysLib.convert(myOrderRec, ConvertDirection.local, myConvTable);
      else
         sysLib.convert(myNewOrderRec, ConvertDirection.local, myConvTable);
      end
     call ProgramY myOrderRec;
   end 
end

Feedback