schatte
01-02-12, 21:14
Hallo Leute,
ich versuche mich gerade mit dem DDS Schlüsselwort VARLEN, um bei einem Feld mit 2048 Zeichen Platz zu sparen.
Zum Größenvergleich habe ich daher folgende Dateien erstellt:
PCHAR:
A R PCHARF
A*
A CHTEXT 2048A COLHDG('CHAR')
PCHARVAR:
A R PCHARF
A*
A CHTEXT 2048A COLHDG('VARCHAR')
A VARLEN
Anschließend befülle ich beide Dateien mit jeweils folgenden SQL Befehlen:
INSERT INTO SPEED/PCHAR
VALUES('0123456789012345678901234567890123456789')
INSERT INTO SPEED/PCHAR
INSERT INTO SPEED/PCHAR
INSERT INTO SPEED/PCHAR
INSERT INTO SPEED/PCHAR
INSERT INTO SPEED/PCHAR
INSERT INTO SPEED/PCHAR
INSERT INTO SPEED/PCHAR
INSERT INTO SPEED/PCHAR
INSERT INTO SPEED/PCHAR
INSERT INTO SPEED/PCHAR
INSERT INTO SPEED/PCHAR
INSERT INTO SPEED/PCHAR
Dadurch habe ich in jeder Datei 4096 Sätze. Anschließend noch ein RGZPFM auf jede Datei.
Größen der Dateien (Dieses Ergebnis würde ich auch erwarten):
PCHAR: 8.400.896
PCHARVAR: 335.872
Wenn ich aber nun alle Datensätze der Datei PCHAR per CPYF in die Datei PCHARVAR kopiere (CPYF FROMFILE(SPEED/PCHAR) TOFILE(SPEED/PCHARVAR) MBROPT(*REPLACE) FMTOPT(
*MAP)), hat die Datei PCHARVAR folgende Größe:
9.510.912
Auch das ist in Ordnung, da ja nun auch die ganzen SPACES am Feldende enthalten sind.
Wenn ich aber nun per SQL das Feld CHTEXT der Datei PCHARVAR per RTRIM aktualisiere, hätte ich erwartet, dass auch die Datei entsprechend wieder kleiner wird.
Das SQL Statement:
UPDATE SPEED/PCHARVAR SET CHTEXT = rtrim(CHTEXT)
Die Dateigröße ist nun sogar noch größer geworden:
9.547.776
Auch ein RGZPFM bringt nicht meine erwartete Größe von 335.872 Byte.
Was habe ich falsch gemacht?
Viele Grüße
Matthias
ich versuche mich gerade mit dem DDS Schlüsselwort VARLEN, um bei einem Feld mit 2048 Zeichen Platz zu sparen.
Zum Größenvergleich habe ich daher folgende Dateien erstellt:
PCHAR:
A R PCHARF
A*
A CHTEXT 2048A COLHDG('CHAR')
PCHARVAR:
A R PCHARF
A*
A CHTEXT 2048A COLHDG('VARCHAR')
A VARLEN
Anschließend befülle ich beide Dateien mit jeweils folgenden SQL Befehlen:
INSERT INTO SPEED/PCHAR
VALUES('0123456789012345678901234567890123456789')
INSERT INTO SPEED/PCHAR
INSERT INTO SPEED/PCHAR
INSERT INTO SPEED/PCHAR
INSERT INTO SPEED/PCHAR
INSERT INTO SPEED/PCHAR
INSERT INTO SPEED/PCHAR
INSERT INTO SPEED/PCHAR
INSERT INTO SPEED/PCHAR
INSERT INTO SPEED/PCHAR
INSERT INTO SPEED/PCHAR
INSERT INTO SPEED/PCHAR
INSERT INTO SPEED/PCHAR
Dadurch habe ich in jeder Datei 4096 Sätze. Anschließend noch ein RGZPFM auf jede Datei.
Größen der Dateien (Dieses Ergebnis würde ich auch erwarten):
PCHAR: 8.400.896
PCHARVAR: 335.872
Wenn ich aber nun alle Datensätze der Datei PCHAR per CPYF in die Datei PCHARVAR kopiere (CPYF FROMFILE(SPEED/PCHAR) TOFILE(SPEED/PCHARVAR) MBROPT(*REPLACE) FMTOPT(
*MAP)), hat die Datei PCHARVAR folgende Größe:
9.510.912
Auch das ist in Ordnung, da ja nun auch die ganzen SPACES am Feldende enthalten sind.
Wenn ich aber nun per SQL das Feld CHTEXT der Datei PCHARVAR per RTRIM aktualisiere, hätte ich erwartet, dass auch die Datei entsprechend wieder kleiner wird.
Das SQL Statement:
UPDATE SPEED/PCHARVAR SET CHTEXT = rtrim(CHTEXT)
Die Dateigröße ist nun sogar noch größer geworden:
9.547.776
Auch ein RGZPFM bringt nicht meine erwartete Größe von 335.872 Byte.
Was habe ich falsch gemacht?
Viele Grüße
Matthias