Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

MOVE-Anweisung

&pagelevel(4)&pagelevel

Funktion

Die MOVE-Anweisung überträgt Daten von einem Datenfeld in ein oder mehrere andere Datenfelder.

Format 1

der MOVE-Anweisung überträgt ein Datenfeld in ein oder mehrere andere Datenfelder.

Format 2

der MOVE-Anweisung überträgt einander entsprechende Datenfelder von einer Gruppe zu einer anderen.

Format 1


MOVE {bezeichner-1 | literal} TO {bezeichner-2}...


Syntaxregeln

  1. Ein Indexdatenfeld, ein Zeigerdatenfeld oder ein Datenfeld der Klasse objekt darf nicht als Operand in einer MOVE-Anweisung auftreten.

  2. bezeichner-2 darf kein Gruppendatenfeld sein, das Datenfelder der Klasse objekt oder zeiger enthält. Ist bezeichner-2 ein stark typisiertes Gruppendatenfeld, so muss bezeichner-1 als Gruppendatenfeld des gleichen Typs beschrieben sein.

  3. bezeichner-1 bzw. literal sind Sendefelder.

  4. bezeichner-2 ist ein Empfangsfeld.

  5. Die figurative Konstante SPACE darf nicht in numerische oder numerisch druckaufbereitete Datenelemente übertragen werden.

  6. Die figurative Konstante ZERO darf nicht in alphabetische Datenelemente übertragen werden.

  7. Tabelle 28 zeigt die in einer MOVE-Anweisung zulässigen Übertragungen und deren Art an.


Empfangsfeld


Sendefeld

Grup-
pe

Al-
pha-
be-
tisch

Al-
pha-
nu-
me-
risch

Na-
tio-
nal

Extern
dezimal,
Binär,
Intern
dezimal,
Numerisch
druckauf-
bereitet

Alpha-
nume-
risch
druck-
auf-
bereitet

Extern
Gleitpunkt,
Intern
Gleitpunkt,

Stark
typisiert

Gruppe

nn0

nn0

nn0

-

nn0

nn0

nn0

-

Alphabetisch

nn0

nn

nn

nn1

-

nn

-

-

Alphanumerisch, Alphanumerisches Literal

nn0

nn

nn

nn1

nu2

nn

nu2

-

National, Nationales Literal

-

-

-

nn

-

-

-

-

Extern dezimal,
Binär,
Intern dezimal,
Numerisches Literal

ganzzahlig

nn0

-

nn

nn1

nu

nn

nu

-

nicht ganzzahlig

nn0

-

-

-

nu

-

nu

-

Numerisch druckaufbereitet

nn0

-

nn

nn1

nu1

nn

nu1

-

Alphanumerisch druckaufbereitet

nn0

nn

nn

nn1

-

nn

-

-

Extern Gleitpunkt

nn0

-

-

-

nu

-

nu

-

Intern Gleitpunkt, Gleitpunktliteral

nn0

-

-

-

nu3

-

nu

-

Stark typisiert

nn0

nn0

nn0

-

nn0

nn0

nn0

nn01)


Tabelle 28: Zulässige Übertragungen bei Element- und Gruppenübertragungen 2)

1) nur für Empfangsfeld vom gleichen Typ

2) Tabelleneinträge:

--=Übertragung ist nicht erlaubt
nn=nichtnumerische Übertragung für Datenelemente
nn0=nichtnumerische Übertragung für Gruppen (ohne Konvertierung, ohne Editierung, ohne Deeditierung)
nn1=nichtnumerische Übertragung mit Konvertierung der Darstellung jedes Zeichens von EBCDIC zu UTF-16
nu=numerische Übertragung
nu1=numerische Übertragung nach Deeditierung des Sendefeldes
nu2=numerische Übertragung, wobei das Sendefeld wie ein extern dezimales Datenelement behandelt wird
nu3=numerische Übertragung mit Rundung

Allgemeine Regeln

  1. bezeichner-1 oder literal werden in jedes durch bezeichner-2 angesprochene Datenfeld in der angegebenen Reihenfolge übertragen.

  2. Jede Subskribierung, Indizierung, Teilfeldselektion und Längenberechnung im Zusammenhang mit bezeichner-2 wird unmittelbar vor der Übertragung der Daten in das entsprechende Datenfeld durchgeführt. Ist bezeichner-2 ein null-längiges Datenfeld, so wird dieses durch die MOVE-Anweisung nicht verändert.

  3. Jede Subskribierung, Indizierung, Teilfeldselektion, Funktionswertberechnung und Längenberechnung im Zusammenhang mit bezeichner-1 wird nur einmal vor der ersten Übertragung durchgeführt. Ist bezeichner-1 ein null-längiges Datenfeld, so wird die MOVE-Anweisung ausgeführt, als wäre SPACE als Sendefeld angegeben.

  4. Jede erforderliche Konvertierung der Daten von einer internen Darstellungsform in eine andere findet während gültiger Übertragungen statt, ebenso wie die ggf. geforderte Druckaufbereitung des Empfangsfeldes.

  5. Jede Übertragung, bei der das Sendefeld ein Literal oder Datenelement ist und das Empfangsfeld ebenfalls ein Datenelement ist, ist eine Elementübertragung. In einer MOVE-Anweisung von Format 1 wird eine nationale Gruppe wie ein Datenelement behandelt.

    Jede andere Übertragung ist eine Gruppenübertragung. Die Gruppenübertragung entspricht einer Elementübertragung mit alphanumerischem Sende- und Empfangsfeld mit dem Unterschied, dass dabei keine Konvertierung erfolgt, d.h. das Empfangsfeld wird aufgefüllt ohne die Datengruppen bzw. Datenfelder zu berücksichtigen, die im Sende- und Empfangsfeld enthalten sind.
    (Besonderheiten im Zusammenhang mit der OCCURS DEPENDING-Angabe siehe Allgemeine Regel 14 der OCCURS-Klausel auf "OCCURS-Klausel" ).

  6. Jede Druckaufbereitung, die für ein Empfangsdatenfeld angegeben ist, wird während einer Elementübertragung durchgeführt (einige Beispiele sind unten aufgeführt).

  7. Deeditierung findet nur dann statt, wenn das Sendefeld numerisch druckaufbereitet und das Empfangsfeld numerisch oder numerisch druckaufbereitet ist.

  8. Es gibt zwei Arten von Elementübertragungen:

    1. Eine nichtnumerische Übertragung findet statt, wenn das Empfangsfeld ein alphanumerisch druckaufbereitetes, ein alphanumerisches, ein alphabetisches oder ein nationales Feld ist.

      • Ausrichtung und Auffüllen mit Leerzeichen erfolgen entsprechend Abschnitt " 5. Ausrichtung von Daten" auf "Konzept der maschinenunabhängigen Datenbeschreibung".

      • Ist das Sendefeld als numerisch mit Vorzeichen beschrieben, wird das Vorzeichen nicht übertragen. Belegt das Vorzeichen eine eigene Zeichenposition, wird es nicht übertragen und die Länge des Sendefeldes wird um 1 Zeichen vermindert angenommen.

      • Weicht die USAGE-Klausel des Sendefeldes von der des Empfangsfeldes ab, so findet eine Konvertierung des Sendefeldes zur internen Darstellung des Empfangsfeldes statt.

      • Ist das Sendefeld numerisch und enthält das Maskenzeichen 'P', werden alle diese Zeichenstellen bei der Größe des Sendefeldes mitgezählt und angenommen, dass sie den Wert 0 enthalten.

    2. Eine numerische Übertragung findet statt, wenn das Empfangsfeld numerisch oder numerisch druckaufbereitet ist.

      • Ausrichtung und Auffüllen mit Nullen erfolgen entsprechend Abschnitt "5. Ausrichtung von Daten" auf "Konzept der maschinenunabhängigen Datenbeschreibung".

      • Ist das Sendefeld numerisch druckaufbereitet, wird es deeditiert, um seinen numerischen Wert zu bestimmen. Dieser Wert wird in das Empfangsfeld übertragen.

      • Ist das Empfangsfeld mit Vorzeichen beschrieben, so wird das Vorzeichen des Sendefeldes übertragen. Ist das Sendefeld ohne Vorzeichen, wird im Empfangsfeld ein positives Vorzeichen erzeugt.

      • Ist das Empfangsfeld ohne Vorzeichen, wird der absolute Wert des Sendefeldes übertragen und im Empfangsfeld kein Vorzeichen erzeugt.

      • Ist das Sendefeld alphanumerisch, wird es wie ein extern dezimales Datenelement behandelt. Es darf nur numerische Zeichen enthalten. Ist es länger als 31 Zeichen, so werden nur die 31 am weitesten rechts stehenden Zeichen verwendet.

  9. Jede Konvertierung zwischen verschiedenen Arten der internen Darstellung erfolgt während erlaubter Elementübertragungen. Ebenso erfolgt die Konvertierung von alphanumerischer zu nationaler Zeichendarstellung. Existiert dabei für ein alphanumerisches Zeichen im Sendefeld kein entsprechendes nationales Zeichen, so wird im Empfangsfeld dafür das Ersatzzeichen "Punkt" verwendet und die Ausnahmesituation EC-DATA-CONVERSION tritt auf.

    Tritt die Ausnahmesituation EC-DATA-CONVERSION auf, so wird das Empfangsfeld immer verändert, bevor eine ggf. vorhandene USE-Prozedur aktiviert wird (siehe auch Abschnitt "NATIONAL-OF - nationale Zeichendarstellung").

  10. Belegen die Sende- oder Empfangsoperanden einer MOVE-Anweisung den gleichen Internspeicherbereich (d.h. überlagern sich die Operanden), so ist das Ergebnis der Übertragung unvorhersagbar.

  11. Figurative Konstanten werden wie numerische, alphanumerische oder nationale Literale behandelt, abhängig von der Art des Empfangsfeldes. Die folgende Tabelle zeigt die sich ergebende Kategorie des Literals.

    figurative Konstante

    Art des Empfangsfeldes

    Kategorie der
    figurativen Konstante

    ALL Alphanumerisches Literal

    unabhängig davon

    Alphanumerisch

    ALL Nationales Literal

    unabhängig davon

    National

    ALL Symbolisches-Zeichen

    unabhängig davon

    Alphanumerisch

    HIGH-VALUE, LOW-VALUE,

    QUOTE

    Gruppe, Alphanumerisch,

    Alphanumerisch druckaufbereitet

    Alphanumerisch

    National

    National

    SPACE

    Gruppe, Alphanumerisch,

    Alphabetisch, Alphanumerisch druckaufbereitet

    Alphanumerisch

    National

    National

    ZERO

    Gruppe, Alphanumerisch,

    Alphanumerisch druckaufbereitet

    Alphanumerisch

    National

    National

    Extern dezimal, Binär, Intern

    dezimal, Numerisch druckaufbereitet, Extern Gleitpunkt, Intern Gleitpunkt

    Numerisch

    Tabelle 29: Übertragung von figurativen Konstanten

Beispiel 8-55

Sendefeld

Empfangsfeld

Begründung

Masken-

zeichenfolge

Inhalt

Masken-

zeichenfolge

Inhalt

XXX

M8N

XXXXX

M8N 'BLANK' 'BLANK'

Ist für das Empfangsfeld keine JUSTIFIED RIGHT-Klausel angegeben, werden die Zeichen von links nach rechts übertragen. Da die zu übertragenden Daten das Empfangsfeld nicht vollständig ausfüllen, werden die verbleibenden Stellen mit Leerzeichen aufgefüllt.

AAAAAA

XYZABC

AAA

AAA JUST

RIGHT

XYZ

ABC

Da das Sendefeld länger als das Empfangsfeld ist, wird die Übertragung abgebrochen, sobald das Empfangsfeld gefüllt ist. Die übrigen Zeichen werden ignoriert.
Ist für das Empfangsfeld die JUSTIFIED RIGHT-Klausel angegeben, werden die Zeichen rechtsbündig ins Empfangsfeld übertragen.

999PPP

456

XXXXX

45600

An Stellen des Maskenzeichens P werden Nullen angenommen. Das Sendefeld hat somit 6 Zeichen. Sie werden linksbündig in das Empfangsfeld übertragen. Die übrigen Zeichen werden ignoriert.

S999

-333

XXX

333

Hat das Sendefeld ein Vorzeichen, wird der absolute Wert übertragen.

9V999

8765

V99

76

Die Felder werden am Dezimalpunkt ausgerichtet. Das Sendefeld hat sowohl links als auch rechts vom Dezimalpunkt mehr Stellen als das Empfangsfeld. Es werden an beiden Enden Stellen abgeschnitten.

9V9

12

99V99

0120

Ist das Empfangsfeld größer als das Sendefeld, werden die nicht verwendeten Zeichenstellen mit Nullen oder mit Druckaufbereitungszeichen aufgefüllt.

99V99

6789

$$$99.99

'BLANK''BLANK' $67.89

S999

-333

9999

333

Hat das Sendefeld ein Vorzeichen und das Empfangsfeld kein Vorzeichen, wird der absolute Wert des Sendefeldes übertragen.

99

15

999

015

Ist kein Rechendezimalpunkt vorhanden, werden die Daten rechtsbündig ins Empfangsfeld übertragen.

XXX

123

99V9

230

Das Sendefeld wird wie ein ganzzahliges numerisches Feld mit 3 Ziffernstellen behandelt. Die führende Hunderterstelle hat kein Platz im Empfangsfeld und wird abgeschnitten.

Format 2


MOVE {CORRESPONDINGCORR} bezeichner-1 TO {bezeichner-2}...


Syntaxregeln

Die folgenden Regeln für bezeichner-2 beziehen sich gleichfalls auf alle weiteren Bezeichner, die nach bezeichner-2 angegeben sind.

  1. CORR ist die Abkürzung für CORRESPONDING.

  2. bezeichner-1 bezeichnet eine Datengruppe, die die zu übertragenden Datenelemente enthält.

  3. bezeichner-2 bezeichnet eine Datengruppe, die die Empfangsfelder für die Übertragung enthält.

  4. Die ausgewählten Datenfelder innerhalb des ersten Operanden (bezeichner-1) werden in die entsprechenden Datenfelder innerhalb des zweiten Operanden (bezeichner-2) übertragen. Die Datenfelder einer jeden Gruppe werden als entsprechend betrachtet, wenn beide Datenfelder gleiche Namen und Kennzeichnung haben, bis zu, aber nicht unbedingt einschließlich bezeichner-1 und bezeichner-2.

  5. Jede Subskribierung oder Indizierung im Zusammenhang mit bezeichner-2 wird unmittelbar vor der Übertragung der Daten in das entsprechende Datenfeld aufgelöst.

  6. Jede erforderliche Konvertierung der Daten von einer internen Darstellungsform in eine andere findet während gültiger Übertragungen statt, ebenso wie die ggf. geforderte Druckaufbereitung des Empfangsfeldes. Dies wird in den folgenden Allgemeinen Regeln genauer beschrieben.

Allgemeine Regeln

  1. Die Ergebnisse der MOVE CORRESPONDING-Anweisung sind die gleichen, als ob der Benutzer jedes Paar von entsprechenden Bezeichnern in einer getrennten MOVE-Anweisung des Formats 1 angegeben hätte (weitere Regeln siehe "CORRESPONDING-Angabe").

  2. Mindestens eines der Datenfelder in einem Paar entsprechender Datenfelder muss ein Datenelement sein. (Man beachte, dass die MOVE-Anweisung sich in dieser Hinsicht von arithmetischen Anweisungen unterscheidet: In arithmetischen Anweisungen, die die CORRESPONDING-Angabe verwenden, müssen die beiden entsprechenden Felder Datenelemente sein.)

  3. Ein Datenfeld, das bezeichner-1 oder bezeichner-2 untergeordnet ist und eine OCCURS-, REDEFINES-, USAGE IS INDEX-, USAGE IS POINTER-, USAGE ISPROGRAM-POINTER-, USAGE ISOBJECT REFERENCE- oder RENAMES-Klausel enthält, wird ignoriert. bezeichner-1 oder bezeichner-2 können jedoch selbst REDEFINES- oder OCCURS-Klauseln haben oder einem Datenfeld mit einer REDEFINES- oder OCCURS-Klausel untergeordnet sein.

  4. In einer MOVE-Anweisung von Format 2 wird eine nationale Gruppe wie eine Gruppe behandelt (und nicht wie ein Datenelement).

Beispiel 8-56

Anweisung in der PROCEDURE DIVISION:

MOVE CORRESPONDING ARBEITER-SATZ TO LOHN-KONTROLLE.

Einträge in der DATA DIVISION:
01 ARBEITER-SATZ.
   02 ARBEITER-NR.
      03 ARBEITS-ORT...
      03 STECHUHR-NR.
         04 SCHICHT-KENNZAHL...
         04 KONTROLL-NR...
   02 LOHN.
      03 ARBEITS-STUNDEN...
      03 AUSZAHLUNG...
   02 STEUER-SATZ... 
   02 ABZUEGE...



01 LOHN-KONTROLLE.
   02 ARBEITER-NR.
      03 STECHUHR-NR...
      03 FILLER...
   02 ABZUEGE.
      03 STEUER-SATZ...
      03 STEUER-BETRAG...
      03 VORSCHUSS...
   02 LOHN.
      03 ARBEITS-STUNDEN...
      03 AUSZAHLUNG...
   02 NETTO-ZAHLUNG...
   02 ARBEITER-NAME...
      03 SCHICHT-KENNZAHL...

Entsprechend den Regeln der MOVE CORRESPONDING-Anweisung werden folgende Datenfelder übertragen:

Sendefeld

Empfangsfeld

STECHUHR-NR OF ARBEITER-NR OF

ARBEITER-SATZ

ARBEITS-STUNDEN OF LOHN OF

ARBEITER-SATZ

AUSZAHLUNG OF LOHN OF

ARBEITER-SATZ

ABZUEGE OF ARBEITER-SATZ

STECHUHR-NR OF ARBEITER-NR OF

LOHN-KONTROLLE

ARBEITS-STUNDEN OF LOHN OF LOHN-KONTROLLE

AUSZAHLUNG OF LOHN OF LOHN-KONTROLLE

ABZUEGE OF LOHN-KONTROLLE

Die folgenden Felder werden aus den angegebenen Gründen nicht übertragen:

Feld

Begründung

ARBEITER-NR

Feld ist in keiner der beiden Gruppen ein Datenelement.

ARBEITS-ORT OF ARBEITER-NR OF

ARBEITER-SATZ

Feld tritt in LOHN-KONTROLLE nicht auf.

SCHICHT-KENNZAHL OF STECHUHR-NR

OF ARBEITER-NR OF ARBEITER-SATZ

Kennzeichnung ist nicht die gleiche wie in

LOHN-KONTROLLE

KONTROLL-NR OF STECHUHR-NR OF

ARBEITER-SATZ

Feld kommt in LOHN-KONTROLLE nicht vor.

LOHN

Feld ist in keiner der beiden Gruppen ein Datenelement

STEUER-SATZ OF ARBEITER-SATZ

Kennzeichnung ist nicht die gleiche wie in LOHN-KONTROLLE.