Anfang des Inhaltsbereichs

Werte mit WRITE TO zuweisen Dokument im Navigationsbaum lokalisieren

Neben der Anweisung MOVE, die den Wert des Quellfelds bei einer Wertzuweisung in den Datentyp des Zielfelds konvertiert, gibt es die Anweisung WRITE TO, die den Inhalt des Quellfelds prinzipiell in ein Feld vom Typ C konvertiert.

WRITE <f1> TO <f2> [<option>].

Diese Anweisung konvertiert den Inhalt eines beliebigen Datenobjekts <f1> nach Typ C und überträgt die resultierende Zeichenkette in eine Variable <f2>. Der Datentyp von <f1> muß in ein Characterfeld konvertierbar sein, ansonsten tritt ein Syntax- oder Laufzeitfehler auf. Der Inhalt von <f1> bleibt unverändert. Die Variable <f2> wird unabhängig von ihrem tatsächlichen Typ immer als Characterfeld interpretiert. Es findet keine typgerechte Umsetzung statt. Es hat deshalb keinen Sinn, ein Zielfeld mit einem numerischen Datentyp (F, I, P) zu verwenden. Falls statisch erkennbar, gibt die Syntaxprüfung in solchen Fällen eine Warnung aus. Achtung, es ist möglich, daß aus solch einer Warnung in zukünftigen Releases ein echter Syntax-, bzw. Laufzeitfehler wird.

Die Anweisung WRITE TO berücksichtigt die Vorgaben im Benutzerstammsatz, die beispielsweise angeben, ob das Dezimalzeichen ein Punkt (.) oder Komma (,) sein soll. Weiterhin können außer UNDER und NO-GAP sämtliche Aufbereitungsoptionen der Anweisung WRITE genutzt werden.

Beispiel

DATA: number TYPE f VALUE '4.3',
      text(10) TYPE c,
      float TYPE f,
      pack  TYPE p DECIMALS 1.

WRITE number.

WRITE number TO text EXPONENT 2.
WRITE / text.

WRITE number TO float.
WRITE / float.

WRITE number TO pack.
WRITE / pack.

MOVE number TO pack.
WRITE / pack.

Beim Syntaxcheck wird gewarnt, daß PACK und FLOAT zeichenartige Felder (Typ C, D, N, T, X) sein sollten. Die Ausgabeliste zeigt:

4.30000000000000E+00

0.043E+02

1.50454551753894E-153

20342<33452;30,3

             4.3

Die erste Ausgabezeile zeigt den Inhalt des Felds NUMBER im Standardausgabeformat für Felder des Typs F. Die zweite Ausgabezeile zeigt die Zeichenkette, die dadurch entstanden ist, daß das Feld NUMBER mit der Aufbereitungsoption EXPONENT 2 in ein Feld des Typs C mit der Länge 10 geschrieben wurde. Die dritte und vierte Zeile zeigen, daß es nicht sinnvoll ist, Zielfelder zu benutzen, die einen numerischen Datentyp haben. Die fünfte Zeile zeigt, daß die MOVE-Anweisung anders funktioniert als die Anweisung WRITE TO: Das Feld des Typs F wurde richtig nach Typ P konvertiert.

Dynamische Angabe des Quellfelds

In der Anweisung WRITE TO kann der Name Quellfelds dynamisch als Inhalt eines anderen Felds angegeben werden. Dazu wird der Namen des Felds, das den Namen des Quellfeldes enthält, in Klammern angegeben:

WRITE (<f>) TO <g>.

Das System weist den Wert des Felds, dessen Name in <f> steht, <g> zu. Um Zielfelder dynamisch anzugeben, müssen Feldsymbole verwendet werden.

Beispiel

DATA: name(10)   TYPE c VALUE 'SOURCE',
      source(10) TYPE c VALUE 'Antony',
      target(10) TYPE c....

WRITE (name) TO target.
WRITE target.

Dieses Beispiel erzeugt die Ausgabe

Antony

Die folgende Abbildung zeigt den Zusammenhang zwischen Feldnamen und Feldinhalten:

Diese Grafik wird im zugehörigen Text erklärt

 

 

 

Ende des Inhaltsbereichs