View Full Version : char to num
Hallo,
habe folgendes Problem,
Habe ein Alphafeld "WNR" welches 7 Zeichen lang sein kann.
In diesem Feld kann sowohl z.B. 'ABCD...' o. '1234...' stehen
Ist es möglich dieses Feld, egal ob mit alpha oder num. Zeichen gefüllt, so in ein numerisches Feld zu übertragen und anschließend in eine Datei auszugeben, daß ich anschließend einen eindeutigen Sortierschlüssel bekomme?
z.B.:
ABCD...
BBBB....
XYZ....
23
89
567
1234567
oder:
23
89
567
1234567
ABCD...
BBBB....
XYZ....
(atoi/atof funkt nicht, da ja in diesem Feld "WNR" auch solche Zeichen 'ABCD...' stehen können, und ich dann im neuen numerischen Feld nur '0000000' stehen habe!)
Der RPG-Befehl MOVE ersetzt Zeichen durch Ziffern !
ups,
sorry, ich vergaß zu erwähnen, daß das neue Feld ein "Komma"-Feld ist
also
-> WNR = 7a
-> NeuesFld = 9,2
wenn ich das WNR-Feld mit "MOVE" übertragen würde, dann würd ich immer einen "Dezimaldatenfehler" bekommen
Nein eben nicht !
Im RPG (nicht ILE!) ersetzt der MOVE/MOVEL alle Buchstaben durch Zahlen indem einfach die rechte Tetrade (X'F0F1F2C0C1C2...') als Ziffer interpretiert wird, Hexwerte 'xA' - 'xF' werden dann zu "0". Das Vorzeichen bestimmt dann die linke Tetrade des letzten Zeichens.
es ist aber ein ILE-Programm, da ich z.B. an anderer Positionen die atoi/atof Funktionen aus C-Brauch
@Furchau
Das kann nicht so stmmen, denn wenn Blanks enthalten sind, bekomme ich immer einen Dezimaldatenfehler. Welche Compileroption mus man denn mit angeben, damit dieses klappt?
Ich hatte nämlich mal ein ähnliches Problem (alpha in Numfelder schieben) und wenn ein Blank enthalten war, gab es den Dezimaldatenfehler.
Hallo muadeep!
Ist es möglich dieses Feld, egal ob mit alpha oder num. Zeichen gefüllt, so in ein numerisches Feld zu übertragen und anschließend in eine Datei auszugeben, daß ich anschließend einen eindeutigen Sortierschlüssel bekomme?
Warum nimmst du nicht das alfanumerische Feld selbst als eindeutigen Sortierschlüssel?
zu Pikachu:
weil ich dadurch eine andere Sortierfolge bekomme
anstelle von:
23
23
89
567
1234567
ABCD...
BBBB....
XYZ....
würde die Sortierfolge dann so ausehen:
ABCD...
BBBB....
XYZ....
1234567
23
567
89
RobertMack
19-08-05, 08:29
Hallo,
das könnte man mit einem zusätzlichen Schlüsselfeld lösen:
0 23
0 89
0 567
0 1234567
1 ABCD...
1 BBBB....
1 XYZ....
0=WNR numerisch (TESTN)
1=WNR alphanumerisch
Gruß,
Robert
Hallo,
das könnte man mit einem zusätzlichen Schlüsselfeld lösen:
0 23
0 89
0 567
0 1234567
1 ABCD...
1 BBBB....
1 XYZ....
0=WNR numerisch (TESTN)
1=WNR alphanumerisch
Gruß,
Robert
Das funktioniert aber nur, wenn die Einträge entweder nur aus Zahlen oder nur aus Buchstaben bestehen.
Außerdem sollte man mit TESTN vorsichtig sein, da die Buchstaben A-R auch als "numerisch" angesehen werden. Der Grund hierfür liegt darin, dass das erste Halbbyte, C, D oder F enthält und das zweite Halbbyte eine Ziffer zwischen 0 und 9 beinhaltet.
(F/C=Positive Zahl, D=Negative Zahl)
Birgitta