COMPRESS [NUMERIC ] [FULL ]
|
|||||
operand1 [(parameter)] | |||||
SUBSTRING (operand1, operand3, operand4)
[(parameter)]
|
|||||
INTO
|
operand2 | ||||
SUBSTRING
(operand2, operand5, operand6)
|
|||||
LEAVING [SPACE ]
|
|||||
LEAVING NO
[SPACE ]
|
|||||
WITH [ALL ] [DELIMITERS ] [operand7]
|
Dieses Dokument behandelt folgende Themen:
Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.
Verwandte Statements: ASSIGN
| COMPUTE
|
EXAMINE
|
MOVE
|
MOVE ALL
|
SEPARATE
Gehört zur Funktionsgruppe: Arithmetische Funktionen und Datenzuweisungen
Das Statement COMPRESS
dient dazu, den Inhalt eines oder
mehrerer Operanden in ein einziges alphanumerisches Feld zu übertragen.
Operanden-Definitionstabelle:
Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | C | S | A | G | N | A | U | N | P | I | F | B | D | T | G | O | ja | nein | ||
operand2 | S | A | U | B | ja | ja | ||||||||||||||
operand3 | C | S | N | P | I | B* | ja | nein | ||||||||||||
operand4 | C | S | N | P | I | B* | ja | nein | ||||||||||||
operand5 | C | S | N | P | I | B* | ja | nein | ||||||||||||
operand6 | C | S | N | P | I | B* | ja | nein | ||||||||||||
operand7 | C | S | A | U | B | ja | nein |
* Format B von operand3, operand4, operand5 und operand6 kann nur mit einer Länge von kleiner oder gleich 4 benutzt werden.
Syntax-Element-Beschreibung:
Syntax-Element | Beschreibung | |
---|---|---|
NUMERIC
|
Behandlung von Vor- und
Dezimalzeichen:
Diese Option bestimmt, wie Vorzeichen und Dezimalzeichen behandelt werden: Ohne COMPRESS -123 1.23 INTO #TARGET WITH DELIMITER '*' Content of #TARGET is: 123*123 Mit Für Gleitkomma-Ursprungswerte werden Dezimalzeichen und Vorzeichen
übertragen, ungeachtet der Tatsache, ob Beispiel 1:
COMPRESS NUMERIC -123 1.23 INTO #TARGET WITH DELIMITER '*' Content of #TARGET is: -123*1.23 Beispiel 2:
COMPRESS NUMERIC 'ABC' -0056.00 -0056.10 -0056.01 INTO #TARGET WITH DELIMITER '*' Content of #TARGET is: ABC*-56*-56.1*-56.01 Beispiel 3:
COMPRESS NUMERIC FULL 'ABC' -0056.00 -0056.10 -0056.01 INTO #TARGET WITH DELIMITER '*' Content of #TARGET is: ABC*-0056.00*-0056.10*-0056.01 |
|
FULL
|
Behandlung von Ursprungsfeldwerten:
Ohne
Enthält ein numerisches Ursprungsfeld lauter Nullen, wird eine Null (0) übertragen. Zum Beispiel: COMPRESS 'ABC ' 001 INTO #TARGET WITH DELIMITER '*' Content of #TARGET is: ABC*1 Mit
Beispiel: COMPRESS FULL 'ABC ' 001 INTO #TARGET WITH DELIMITER '*' Content of #TARGET is: ABC *001 |
|
operand1
|
Ursprungsfelder:
Mit operand1 geben Sie die Felder an, deren Inhalt übertragen werden soll. Anmerkung: Wenn operand1 eine Zeitvariable (Format T) ist, wird nur die Zeitkomponente des Variableninhalts übertragen, aber nicht die Datumskomponente. |
|
operand2
|
Zielfeld
Mit operand2 geben Sie das Feld an, das die Werte aus den Ursprungsfeldern aufnehmen soll. Wenn das Zielfeld vom Format U (Unicode) hat, und wenn es sich um ein Ursprungsfeld mit Format B handelt, muss die Länge des sendenden Binärfeldes gleich sein. |
|
LEAVING SPACE
|
Trennung der Werte im Zielfeld durch
Leerzeichen:
Wenn Sie das |
|
LEAVING NO
SPACE
|
Keine Trennung der Werte im Zielfeld durch
Leerzeichen:
Wenn Sie |
|
parameter
|
Parameter für Druckmodus und
Datumsformat:
Als parameter können Sie die Option
|
|
PM=I |
Zur Unterstützung von Sprachen, deren Schreibrichtung von rechts
nach links verläuft, können Sie die Option Zum Beispiel hätte als Ergebnis der folgenden Statements das
Feld MOVE 'XYZ' TO #A COMPRESS #A (PM=I) 'ABC' INTO #B LEAVING NO SPACE Nachfolgende Leerzeichen in operand1
werden entfernt (außer wenn |
|
DF |
Wenn operand1 eine Datumsvariable ist,
können Sie den Session-Parameter |
|
SUBSTRING
(operand1,
operand3,
operand4) |
SUBSTRING-Option:
Wenn operand1 alphanumerisches (A),
Unicode (U) oder binäres Format (B) hat, können Sie die
|
|
INTO SUBSTRING
(operand2,
operand5,
operand6) |
INTO-Klausel:
Sie können die Die Verwendung der |
|
WITH DELIMITERS
|
Trennzeichen bei Werten im Zielfeld:
Möchten Sie, dass die Werte im Zielfeld jeweils durch ein
Trennzeichen voneinander getrennt werden, dann verwenden Sie die
Wenn Sie |
|
WITH DELIMITERS
operand7
|
Spezielles Trennzeichen:
Wenn Sie Wenn operand7 eine Variable ist, muss sie Format/Länge A1 oder B1 haben. Wenn das Zielfeld vom Format A oder B ist, muss das Format bzw. die Länge des Trennzeichens (A1), (B1) oder (U1) sein. Wenn das Zielfeld vom Format U (Unicode) ist, muss das Format bzw. die Länge des Trennzeichens (A1), (B2) oder (U1) sein. |
|
WITH ALL
|
Anwendung der Trennzeichen:
Ohne COMPRESS 'A' ' ' 'C' ' ' INTO #TARGET WITH DELIMITERS '*' Content of #TARGET is: A*C Mit COMPRESS 'A' ' ' 'C' ' ' INTO #TARGET WITH ALL DELIMITERS '*' Content of #TARGET is: A**C* |
Ein Zielfeld vom Format B wird wie ein Zielfeld vom Format A behandelt.
Die COMPRESS
-Operation wird beendet, sobald entweder alle
Operanden übertragen sind oder das Zielfeld
(operand2) voll ist.
Ist das Zielfeld länger als alle übertragenen Werte zusammen, so werden die verbleibenden Stellen von operand2 mit Leerzeichen gefüllt. Ist das Zielfeld kürzer, wird der Wert abgeschnitten.
Falls operand2 eine dynamische Variable ist,
wird die COMPRESS
-Operation beendet, wenn alle Ursprungsoperanden
verarbeitet worden sind. Es werden keine Zeichen abgeschnitten. Die Länge von
operand2 nach der COMPRESS
-Operation
entspricht dann der gemeinsamen Länge der Ursprungsoperanden. Die aktuelle
Länge einer dynamischen Variable kann durch die Systemvariable
*LENGTH
bestimmt werden.
** Example 'CMPEX1': COMPRESS ************************************************************************ DEFINE DATA LOCAL 1 EMPLOY-VIEW VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 MIDDLE-I * 1 #COMPRESSED-NAME (A20) END-DEFINE * LIMIT 4 READ EMPLOY-VIEW BY NAME COMPRESS FIRST-NAME MIDDLE-I NAME INTO #COMPRESSED-NAME DISPLAY NOTITLE FIRST-NAME MIDDLE-I NAME 5X #COMPRESSED-NAME END-READ * END
Ausgabe des Programms CMPEX1
:
FIRST-NAME MIDDLE-I NAME #COMPRESSED-NAME -------------------- -------- -------------------- -------------------- KEPA ABELLAN KEPA ABELLAN ROBERT W ACHIESON ROBERT W ACHIESON SIMONE ADAM SIMONE ADAM JEFF H ADKINSON JEFF H ADKINSON
** Example 'CMPEX2': COMPRESS (with LEAVING NO SPACE) ************************************************************************ DEFINE DATA LOCAL 1 EMPL-VIEW VIEW OF EMPLOYEES 2 NAME 2 CURR-CODE (1) 2 SALARY (1) * 1 #CCSALARY (A20) END-DEFINE * LIMIT 4 READ EMPL-VIEW BY NAME COMPRESS CURR-CODE (1) SALARY (1) INTO #CCSALARY LEAVING NO SPACE DISPLAY NOTITLE NAME CURR-CODE (1) SALARY (1) 5X #CCSALARY END-READ * END
Ausgabe des Programms CMPEX2
:
NAME CURRENCY ANNUAL #CCSALARY CODE SALARY -------------------- -------- ---------- -------------------- ABELLAN PTA 1450000 PTA1450000 ACHIESON UKL 11300 UKL11300 ADAM FRA 159980 FRA159980 ADKINSON USD 34500 USD34500
** Example 'CMPEX3': COMPRESS (with delimiter) ************************************************************************ DEFINE DATA LOCAL 1 EMPL-VIEW VIEW OF EMPLOYEES 2 NAME 2 CURR-CODE (1) 2 SALARY (1) * 1 #CCSALARY (A20) END-DEFINE * LIMIT 4 READ EMPL-VIEW BY NAME COMPRESS CURR-CODE (1) SALARY (1) INTO #CCSALARY WITH DELIMITER '*' DISPLAY NOTITLE NAME CURR-CODE (1) SALARY (1) 5X #CCSALARY END-READ * END
Ausgabe des Programms CMPEX3
:
NAME CURRENCY ANNUAL #CCSALARY CODE SALARY -------------------- -------- ---------- -------------------- ABELLAN PTA 1450000 PTA*1450000 ACHIESON UKL 11300 UKL*11300 ADAM FRA 159980 FRA*159980 ADKINSON USD 34500 USD*34500