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 | L | 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:
Als operand1 geben Sie die Felder an, deren Inhalt übertragen werden soll. Anmerkung: Bei Benutzung von operand1 ohne explizite Editiermaske:
|
|
operand2
|
Zielfeld
Als operand2 geben Sie das Feld an, das die Werte aus den Ursprungsfeldern aufnehmen soll. Wenn das Zielfeld das 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, Datumsformat,
Editiermaske:
Als parameter können Sie die
Session-Parameter |
|
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
|
|
EM | Editiermaske:
Einzelheiten zu Editiermasken siehe Session-Parameter
Der Session-Parameter |
|
EMU | Unicode-Editiermaske:
Einzelheiten zu Editiermasken siehe Session-Parameter
Der 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 das Format A oder B hat, muss das Format bzw. die Länge des Trennzeichens (A1), (B1) oder (U1) sein. Wenn das Zielfeld das Format U (Unicode) hat, 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 Quelloperanden
verarbeitet worden sind. Es werden keine Zeichen abgeschnitten. Die Länge von
operand2 nach der COMPRESS
-Operation
entspricht dann der gemeinsamen Länge der Quelloperanden. 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
** Example 'CMPEX4': COMPRESS (with edit mask EM) ************************************************************************ DEFINE DATA LOCAL 1 #A10 (A10) INIT <'ABCDEF'> 1 #I4 (I4) INIT <-123> 1 #T (T) INIT <E'2021-11-22 10:24:36'> 1 #L (L) INIT <TRUE> 1 #RESULT (A70) END-DEFINE * COMPRESS '#A:' #A10 (EM=X_X_X) '#I4:' #I4 (EM=-999Z) '#T:' #T (EM=YYYY-MM-DD_HH:II) '#L:' #L (EM=FALSE/TRUE) INTO #RESULT PRINT #RESULT END
Ausgabe des Programms CMPEX4
:
#A: A_B_C #I4: -0123 #T: 2021-11-22_10:24 #L: TRUE