Anmelden

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

Fuerchau
22-07-02, 11:19
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.

Newbie
22-07-02, 11:31
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

ERTH
22-07-02, 15:19
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.