REDEFINE

REDEFINE

operand1 (

nX )
operand2

Dieses Dokument behandelt folgende Themen:

Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.

Gehört zur Funktionsgruppe: Reporting Mode-Statements


Funktion

Das Statement REDEFINE dient dazu, ein Feld zu redefinieren. Das Ergebnis der Neudefinition können eine oder mehrere Benutzervariablen sein.

Mit einem REDEFINE-Statement können Sie gleichzeitig mehrere Felder redefinieren.

Einschränkung

Dieses Statement gilt nur im Reporting Mode. Um ein Feld im Structured Mode zu redefinieren, verwenden Sie die REDEFINE-Klausel des DEFINE DATA-Statements.

Syntax-Beschreibung

Operanden-Definitionstabelle:

Operand Mögliche Struktur Mögliche Formate Referenzierung erlaubt Dynam. Definition
operand1   S A G   A U N P I F B D T L C     ja nein
operand2   S A G   A   N P I F B D T L C     ja ja

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
REDEFINE operand1 operand2
Methode der Redefinition:

Die Byte-Positionen von operand1 werden unabhängig vom Format von links nach rechts redefiniert.

Das Format von operand2 muss nicht mit dem von operand1 identisch sein. Jedoch sollten die Daten an den Byte-Positionen von operand2 mit den Formatangaben für operand2 übereinstimmen, um unerwünschte Ergebnisse im Ausgabe-Report zu vermeiden. Wenn beispielsweise ein alphanumerisches Feld in ein numerisches Feld redefiniert wird und keine numerischen Daten gemäß der Formatangabe enthält, kann die Verwendung des Feldes einen Programmabbruch zur Folge haben.

Weitere Redefinition:

Ein mit einem REDEFINE-Statement neudefiniertes Feld kann mit einem weiteren REDEFINE-Statement nochmals redefiniert werden.

n X
Füllbyte-Notation:

Mit der Notation nX können Sie in der redefinierten Variable oder dem nachgestellten Feld n Füllbytes definieren. Nachgestellte Füllbytes müssen nicht unbedingt angegeben werden.

Beispiele

Beispiel 1 — REDEFINE-Statement

Die Benutzervariable #A (Format/Länge A10) enthält den Wert 123ABCDEFG.

REDEFINE #A (#A1(N3) #A2(A7)) 

#A1 erhält den Wert 123, #A2 den Wert ABCDEFG.

Beispiel 2 — REDEFINE-Statement

Die Benutzervariable #B (Format/Länge A10) enthält den hexadezimalen Wert 12345CC1C2C3C4C5C6C7.

REDEFINE #B (#B1(P4) #B2(A7)) 

#B1 erhält den hexadezimalen Wert 12345C, #B2 den hexadezimalen Wert C1C2C3C4C5C6C7.

REDEFINE #B (#BB1(B2)8X)) or REDEFINE #B(#BB1(B2)) 

#BB1 erhält den hexadezimalen Wert 1234.

Der Wert in #BB1 ist "1234" (im Hexadecimalformat).

Anmerkung:
Beim Format P (gepackt numerisch) muss die Anzahl der benötigten Dezimalstellen angegeben werden. Die Anzahl der Bytes, die eine gepackte Zahl benötigt, lässt sich wie folgt berechnen:

Anzahl der Bytes = (Anzahl der Dezimalstellen + 1) / 2, auf ganze Bytes aufgerundet.

Beispiel 3 — REDEFINE-Statement

COMPUTE #V (N8.2) = #Y (N10) = ...
REDEFINE #V (3X  #A(N3)  2X  #P (N2))  #Y (#B(N3)  7X)   

Example

Beispiel 4 — REDEFINE-Statement

In diesem Beispiel wird die Systemvariable *DATN, die die Form YYYYMMDD hat, redefiniert und das Ergebnis in der Reihenfolge Tag/Monat/Jahr (DAY/MONTH/YEAR) in drei getrennte Felder geschrieben:

MOVE *DATN TO #DATINT (N8)
REDEFINE #DATINT (#YEAR (N4) #MONTH (N2) #DAY (N2))
DISPLAY NOTITLE #DATINT #DAY #MONTH #YEAR
END

Ausgabe:

 #DATINT  #DAY #MONTH #YEAR
--------- ---- ------ -----
                           
 20140326  26    3     2014