View Full Version : %editw ?
FNeurieser
16-09-16, 15:09
Hallo,
eine Frage die ihr mir sicherlich beantworten könnt:
wie schaffe ich es, dass ein numerisches Feld mit dem Wert -000000000.74
mithilfe von %editw und der Maske ' 0, -' korrekt nach einem %trim als Alphafeld in der Form 0,74- angezeigt wird?
Wenn ich es so, wie oben gezeigt verwende erhalte ich als Alphawert lediglich ,7
Danke schon mal für eure Unterstützung
Die Maske, das ist hier schlecht darstellbar, muss nur einmal "0" und dann Blanks haben:
'-0_______,__'
Die Unterstriche entsprechen der Anzahl Ziffern.
0 = Signifikanz einschalten
Blank = Dezimalziffer.
Normalerweise darf die Maske nicht länger als die verfügbare Anzahl Ziffern sein, allerdings ist die "0" als Zusatz erlaubt.
FNeurieser
18-09-16, 12:14
Hallo Fuerchau,
danke für die rasche Antwort. Ich habe das auch so ausprobiert, aber erhalten wieder ein falsches Ergebnis.
Das Feld v10 ist 11S 2 lang, das entsprechende Alphafeld $v10 -> 12A (wegen des Minus)
die Schablone schaut bei mir so aus $v10 = %editw(ustw(pos#) : '-0xxxxxxxx,xx');
(die x stehen als Platzhalter für Leerzeichen).
Das Ergebnis ist dann aber 00000000,7 und nicht wie erhofft 0,74- oder aber -0,74 wie es eigentlich sein sollte.
Ich benötige lediglich eine Stelle vor dem Komma wenn der Endwert lediglich aus Dezimalen besteht.
Hoffe dass ich mich jetzt etwas klarer ausgedrückt habe.
LG
Franz-Georg
Ich meine das müsste so aus sehen
$v10 = %editw(ustw(pos#) : '-xxxxxxxx0x,xx');
aber nimm doch %EditC.
Dein Ergebnissfeld muss dan aber auch 13 lang sein. 9 Vorkomma + 2 Nachkomma + Komma + Vorzeichen
dcl-s v10 zoned(11:2);
dcl-s $v10 char(13);
$v10 = *Blanks;
v10 = -,74;
$v10 = %EditC( v10: 'Q');
*InLr = *On;
Gruß
Ronald
FNeurieser
18-09-16, 13:14
Servus Roland,
recht herzlichen Dank, genau das was ich brauchte!
LG und noch ein schönes Wochenende
Franz-Georg