View Full Version : CL Variablen konvertieren
danielfeurstein
22-07-02, 10:20
HALLO!
Wieder ne Frage!
Wie kann ich in CL eine mit *char deklarierte Variable welche ein Feld mit Zahlen ausliest in eine Variable mit *dec
Charakter umändern???
Daniel
Einfach mit CHGVAR !
CL versucht den Zeichenwert automatisch in einen Zahlenwert zu konvertieren.
Es ist aber darauf zu achten, dass nur Zahlen ohne Dezimalkomma und Tausendertrennung verwendet werden können. Ein Vorzeichen am Anfang ist erlaubt.
Ggf. kan die Zeichenvariable auch mittels CHGVAR(&DECVAR) VALUE(%sst(&charvar, 1, 5) *cat %sst(&charvar, 7, 2)), CHGVAR(&DECVAR) VALUE(&DECVAR / 100) aufgelöst werden.
Hallo Daniel,
du kannst eine Zeuchenvariable einfach mit dem Wert in Decimalvariable schieben und dann mit rechen etc.
Hier ein kleines Beispiel.
PGM
DCL VAR(&CHAR)TYPE(*CHAR)LEN(2)VALUE('12')
DCL VAR(&DEC) TYPE(*DEC) LEN(4 0)
CHGVAR VAR(&DEC) VALUE(&CHAR)
CHGVAR VAR(&DEC) VALUE(&dec + 10)
ENDPGM
danielfeurstein
22-07-02, 12:36
Danke!!!
Es war nur das Problem, ich brauchte, wenn leerräume waren nullen. Das chgvar war schon klar, aber ich hab nun mit den Subtrings die Nullen in die Leerräume füllen können. Danke für den Ansatz!!!
Musste dann nämlich dltsplf ausführen, und dazu brauchte ich die Spoolnummer. Beim Auslesen schreibt er für Nullen vor der Zahl nichts. Ich kann ihm aber nicht ein bis drei Leerräume anbieten, bis ne Zahl kommt.
Daniel
Hallo,
mit ein wenig Handarbeit kann man auch führende Nullen einschieben.
Beispiel:
CHGVAR VAR(&SPLNBR) VALUE(%SST(&ZEILE 101 4))
IF COND(%SST(&SPLNBR 1 3) *EQ ' ') THEN(CHGVAR +
VAR(%SST(&SPLNBR 1 3)) VALUE('000'))
IF COND(%SST(&SPLNBR 2 2) *EQ ' ') THEN(CHGVAR +
VAR(%SST(&SPLNBR 2 2)) VALUE('00'))
IF COND(%SST(&SPLNBR 3 1) *EQ ' ') THEN(CHGVAR +
VAR(%SST(&SPLNBR 3 1)) VALUE('0'))
Hinweis: Im API-Handbuch gibt es Beispiel DLTOLDSPLF, das SPLF nach Datum löscht.