Die MOVE Anweisung

Mit Hilfe der MOVE-Anweisung ist es möglich, Informationen (Daten) von einem Datenfeld in ein anderes zu übertragen. Diese Übertragung findet dadurch statt, daß eine Kopie des Inhaltes des 'Sendefeldes' in das 'Empfängerfeld' übertragen wird.
Hierbei ist natürlich von entscheidender Bedeutung, wie die Sende- und Empfangsfelder gestaltet bzw. definiert sind. Für die MOVE-Anweisung ist hierbei:

die Datenklasse,
die interne Darstellung und
die Länge der Datenfelder


von Bedeutung.
Je nach dem, wie diese Eigenschaften der beteiligten Datenfelder variieren, ergeben sich durch das Datenkonzept von Cobol verschiedene automatisch durchgeführte Aktionen, wie die Umwandlung von Daten in eine andere Klasse, die Kürzung von Daten oder eine Druckaufbereitung.

Beispiele:


1. Überragung von einem alphanumerischen Feld in ein anderes, wobei das Empfangsfeld größer ist:
01 Text PIC X(4).
R a u b
    MOVE Text TO Hilf    
01 Hilf PIC X(7).
R a u b      

Hier werden die Stellen, die 'nicht gebraucht werden' mit Leerzeichen nach rechts aufgefüllt.

. . .


2. Überragung von einem alphanumerischen Feld in ein anderes, wobei das Empfangsfeld kleiner ist:
01 Text PIC X(7).
R a u b b a u
    MOVE Text TO Hilf    
01 Hilf PIC X(4).
R a u b

Hier werden die Stellen, die rechts 'zuviel' sind abgeschnitten.

. . .


3. Wurde bei der Definition des Empfangsfeldes die JUSTIFIED-Klausel verwendet, so wird rechtsbündig Übertragen:
01 Text PIC X(7).
R a u b b a u
    MOVE Text TO Hilf    
01 Hilf PIC X(4) JUST.
b b a u

Hier werden die Stellen von rechts bis zum Erreichen der Datenfeldgrenze übertragen.

. . .


4. Handelt es sich bei dem Empfangsfeld um eine Datengruppe, so wird diese Gruppe als alphanumerisches Datenfeld betrachtet und linksbündig übertragen:
01 Text PIC X(7).
R a u b b a u
    MOVE Text TO Hilfegruppe    
01 Hilfegruppe.
      05 Anfang PIC X(3).
      05 Zahl PIC 9(3).
R a u b b a

Hier wird dann auch keine Rücksicht genommen, ob sich innerhalb der Datengruppe ein numerisches Feld (hier: Zahl) befindet. Die ganze Datengruppe wird alphanumerisch betrachtet.

. . .


5. Findet die Datenübertragung zwischen numerischen Datenfeldern statt, so wird kommagleich übertragen.
01 Saldo PIC 9(4)V99.
4 3 2 1 9 8
    MOVE Saldo TO Summe    
01 Summe PIC 9(5)V99.
0 4 3 2 1 9 8

Bei Übertragung von einem numerischen Feld zum anderen, werden die Dezimalstellen berücksichtigt.

. . .


6. Es wurde bei der Definition des Empfangsfeldes kein Vorzeichen mittels S angegeben und der Wert im Sendefeld ist negativ:
01 Miese PIC S9(5)V99.
0 4 3 2 1 9 8
negativer Wert
    MOVE Miese TO Summe    
01 Summe PIC 9(5)V99.
0 4 3 2 1 9 8
positiver Wert

Hier wurde lediglich der Betrag (also ein positiver Wert) übertragen. Hierdurch wurde ein negativer Wert, lediglich durch Anwendung der MOVE-Anweisung, zum positiven Wert gemacht.

...