PDA

View Full Version : Dezimalzeichen in C-Programmen



hgunz
12-11-08, 17:56
Hallo an Alle,
wir haben vor vielen Jahren von einem externen Programmierer ein C-Programm erhalten, welches viele mathematische Berechnungen nach bestimmten Formeln oder auch in freier Schreibweise durchführt. Dieses Programm hat jedoch keine Erstellungsdaten, sodass es nicht auf die Version 6.1 übernommen werden kann. Quellcode ist vorhanden und wir können das Programm umwandeln haben aber auf den externen Programmierer keinen Zugriff mehr.
Jetzt kommt das Problem. In dem C-Programm wird als Dezimalzeichen das Komma verwendet - in dem Programm wird aber generell der Punkt als Dezimalzeichen zur Verfügung gestellt.
Kann irgendwo bei der Umwandlung oder im Sourcecode angegeben werden, dass das Dezimalzeichen ein Punkt sein soll?
Vielen Dank für jede Unterstützung.
Hanspeter Gunz

Fuerchau
12-11-08, 18:08
Dann würde ich vor Aufruf des C-Programmes den Punkt durch Komma ersetzen und hinterher wieder zurückwandeln.
In RPGLE gibts die Funktionen XLATE bzw %xlate();

Ansonsten muss der Code des C-Programmes angepasst werden.
Eine generelle Einstellung gibts zur Laufzeit über LOCALE-Einstellungen.
Diese ist abe i.d.R. Job bzw. User-abhängig.

hgunz
13-11-08, 07:33
Danke für die Information.
LOCALE-Einstellungen zur Laufzeit sind nicht möglich, da dies eine Standardsoftware ist, die bei vielen Kunden im Einsatz ist und nicht gewährleistet ist, dass jeder Benutzer eine LOCALE-Einstellung verwendet.
In RPG wird nicht Punkt sondern Komma übergeben, d.h. wir müssen in den sauren Apfel beißen und den C-Code ändern obwohl wir nur RPG-Programmierer sind.

Fuerchau
13-11-08, 07:41
Nunja, SO schwierig ist das wohl nicht.
Warum kannst du nicht statt dessen die RPG-Programme ändern ?
Ggf. reicht hier einfach eine Anpassung der H-Bestimmung DECEDT oder eine Verlagerung in ein Unterprogramm.

hgunz
13-11-08, 08:13
Danke für die guten Ratschläge.
Aber ich muss das C-Programm ändern, weil dort geziehlt das Komma auf einen Punkt geändert wird. Soviel habe ich bereits aus dem C-Programm herausgelesen.