Anmelden

View Full Version : char to num



Seiten : [1] 2

muadeep
18-08-05, 12:47
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!)

Fuerchau
18-08-05, 12:49
Der RPG-Befehl MOVE ersetzt Zeichen durch Ziffern !

muadeep
18-08-05, 13:15
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

Fuerchau
18-08-05, 13:42
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.

muadeep
18-08-05, 14:01
es ist aber ein ILE-Programm, da ich z.B. an anderer Positionen die atoi/atof Funktionen aus C-Brauch

ExAzubi
18-08-05, 14:10
@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.

Pikachu
18-08-05, 15:38
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?

muadeep
19-08-05, 07:38
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

B.Hauser
19-08-05, 09:42
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