next up previous
Nächste Seite: Coroutines Aufwärts: Bibliotheksmoduln Vorherige Seite: CommoditiesSupport

Conversions

Das Modul Conversions stellt die beiden wichtigsten Prozeduren zur Umwandlung von ganzen Zahlen aus der lesbaren in die interne Darstellung und umgekehrt zur Verfügung. Dabei ist es möglich, sowohl vorzeichenbehaftete sowie vorzeichenlose Grössen umzuwandeln.

Die Prozedur StrToVal wandelt von der lesbaren zur internen Darstellung um. Die Zeichenkette str enthält eine Zahl zur Basis base. Diese Zahlenbasis kann jeden Wert zwischen 2 und 16 annehmen, die verwendeten Zeichen müssen allerdings innerhalb des entsprechend gültigen Bereichs [0..base-1] sein. Zahlen in Oktaldarstellung erlauben so Zeichen zwischen '0' und '7', solche in Hexadezimaldarstellung die Zeichen '0' bis '9' und 'A' bis 'F'. Die Zeichenkette darf insbesondere auch keine Leerzeichen enthalten, das Nullzeichen (0C) als Abschlusszeichen ist selbstverständlich erlaubt. Das Resultat wird im LONGINT-Parameter l abgelegt. Ein Fehler -- angezeigt durch den Parameter err -- kann durch folgende Ereignisse verursacht sein:

Ist der Resultatswert l negativ und hat signed gleichzeitig den Wert FALSE, so wurde eine Zahl übergeben, die kein Minuszeichen enthält, deren Wert aber nicht in einer LONGINT-Zahl abgespeichert werden kann. In diesem Fall ist die Zahl l in einem LONGCARD abzuspeichern. Entweder wird ein Varianten-Verbund (``CASE-RECORD``) übergeben, oder man muss sich mit einer CAST-Anweisung des Moduls SYSTEM behelfen.

Die umgekehrte Umwandlung wird durch die Prozedur ValToStr durchgeführt. Die im LONGINT-Parameter l abgelegte Zahl wird in die Zeichenkette str umgewandelt und formatiert. Die Zahl wird in einem Feld der Grösse width (Absolutbetrag) positioniert. Das Vorzeichen von width bestimmt die Anordnung der Zahl im Feld. Bei einem positiven Wert von width wird die Zahl im Feld rechtsbündig, mit führenden Füllzeichen fillChar, sonst linksbündig mit nachfolgenden Füllzeichen, angeordnet.

Für das Vorzeichen von l und dem Wert von signed gilt die gleiche Konvention wie bei StrToVal. Zahlen und Zeichenketten, die ausschliesslich mit Conversions bearbeitet werden, benötigen daher keine weitere Bearbeitung.


\begin{example}
\begin{alltt}
\relax{} str:=03F9;
\\ large:=3000000000; \hfill{}...
...' ',err);
\\ (* str: \lq AFFE '
\\ err: FALSE *)
\\ \relax \end{alltt}\end{example}


\begin{note}
Die interne Darstellung (Zweierkomplement) der
Zahl {\tt 3'000'000'...
...r internen Darstellung der Zahl {\tt -1'294'967'296}
({\tt LONGINT}).
\end{note}


next up previous
Nächste Seite: Coroutines Aufwärts: Bibliotheksmoduln Vorherige Seite: CommoditiesSupport
Claudio Nieder 2000-11-12