|##########| |#MAGIC #|CLABLMBB |#PROJECT #|"" |#PATHS #|"StdProject" |#FLAGS #|-x---x--x---xxx----------------- |#USERSW #|-------------------------------- |#USERMASK#|-------------------------------- |#SWITCHES#|x----x---------- |##########| |==============================================================================| | Modul : Conversions | | Autor : Thomas Pfrengle | | Datum : 29.9.1991 | | Verwendung : Umwandlung von Zeichenketten in Zahlen und umgekehrt. | | Änderungen : - | |==============================================================================| DEFINITION MODULE Conversions; FROM System IMPORT Regs; FROM Exceptions IMPORT RangeViolation; EXCEPTION | RangeViolation : Zahl paßt nicht in den String, in das angegebene Feld; | Eingegebene Zahl, ist zu groß für das gewünschte | Zahlenformat oder paßt vom Vorzeichen nicht. | NoPointInMask : In einer Formatmaske muß ein Dezimalpunkt enthalten sein, | der dem Zeichen entspricht, das als Parameter point übergeben | wurde. NoPointInMask : "No point in mask"; | | IllegalChar : In dem übergebenen String befinden sich nicht | konvertierbare Zeichen IllegalChar : "Illegal character in string"; | | Prozeduren: ValueToString | | RealToString : Wandelt eine Realzahl in eine Zeichenkette. | | RealToExpString : Wie RealToString jedoch in Exponentialdarstellung | | RealToMaskedString : Wandelt eine Longrealzahl in eine maskierte Realzahl | | IntToString : Wandelt eine Integerzahl in eine Zeichenkette | | IntToHexString : Wandelt eine Integerzahl in eine Zeichenkette in | Hexadezimaldarstellung, mit Vorzeichen, nicht im | 2er-Komplement | IntToBinString : Wandelt eine Integerzahl in eine Zeichenkette, in | Binärdarstellung,mit Vorzeichen, nicht im | 2er-Komplement. | CardToString : Wandelt eine Cardinalzahl in eine Zeichenkette | | CardToHexString : Wie CardToString, jedoch als Hexzahl. | | CardToBinString : Wie CardToHexString, jedoch als Binärzahl. | Übergibt man bei CardToBinString,CardToFexString, bei | ausgeschaltetem RangeCheck eine negative Zahl, wird | diese im 2er-Komplement dargestellt. | StringToValue : | | StringToReal : Wandelt einen String in eine Realzahl, auch | Strings in Exponentialdarstellung. | StringToInt : Wandelt einen String in eine Longintzahl | | HexStringToInt : Wandelt einen HexString in eine Longintzahl, | keine 2er-Komplementdarstellung | BinStringToInt : Wandelt einen BinärString in eine Longintzahl | keine 2er-Komplementdarstellung | StringToCard : Wandelt einen String in eine Longcardzahl | | HexStringToCard : Wandelt einen Hex-String in eine Longcardzahl | | BinStringToCard : Wandelt einen Binär-String in eine Longcardzahl | | Parameter : val <- Realzahl, die umgewandelt werden soll | field <- Anzahl der Stellen, die umgewandelt werden sollen | digits <- Anzahl der gewünschten Nachkommastellen | fillChar <- Füllzeichen mit dem field aufgefüllt werden soll | point <- Zeichen, das für den Dezimalpunkt verwendet werden soll | -> String mit der umgewandelten Zahl | tested $$OwnHeap:=TRUE PROCEDURE RealToString(val : LONGREAL; field, digits : CARDINAL; fillChar : CHAR :=" "; point : CHAR :="."):STRING; | | Parameter : val <- Realzahl, die umgewandelt werden soll | digits <- Anzahl der gewünschten Nachkommastellen | expDigits <- Anzahl der Exponantialstellen | point <- Zeichen, das für den Dezimalpunkt verwemndet | werden soll. | -> String mit der umgewandelten Zahl | tested $$OwnHeap:=TRUE PROCEDURE RealToExpString(val : LONGREAL; digits : CARDINAL:=6; expDigits : CARDINAL:=3; point : CHAR:="."):STRING; | | Parameter : val <- Zahl die konvertiert werden soll | mask <- Maskierungsstring | point <- Dezimalpunkt | -> String | Bemerkung : | mask : "ccccc+###c###c###.#### | "ccccc#.#########E****" | c : character | +/- : sign | # : digit | E**** : exponent | Die Zahl der Sternchen hinter `E` gibt die Stellenzahl des | Exponenten inklusive Vorzeichen an. Steht ein `+` als sign, wird | das Vorzeichen auch bei positiven Zahlen ausgegeben. | Näheres zur Maskierung siehe Handbuch | tested $$OwnHeap:=TRUE PROCEDURE RealToMaskedString( val : LONGREAL; REF mask : STRING; fillChar : CHAR := " "; point : CHAR := "."):STRING; | | Parameter : val <- Integerzahl, die umgewandelt werden soll | field <- Anzahl der Stellen, die umgewandelt werden sollen | fillChar <- Füllzeichen mit dem field aufgefüllt werden soll | -> String mit der umgewandelten Zahl | tested $$OwnHeap:=TRUE PROCEDURE IntToString(val IN D2 : LONGINT; field IN D3 : INTEGER:=0; fillChar : CHAR:=" "): STRING; | | Parameter : val <- Integerzahl, die umgewandelt werden soll | field <- Anzahl der Stellen, die umgewandelt werden sollen | fillChar <- Füllzeichen mit dem field aufgefüllt werden soll | -> String mit der umgewandelten Zahl | $$OwnHeap:=TRUE PROCEDURE IntToHexString(val IN D2 : LONGINT; field IN D3 : INTEGER:=0; fillChar : CHAR:=" "; dollar : BOOLEAN:=FALSE):STRING; | | Parameter : val <- Integerzahl, die umgewandelt werden soll | field <- Anzahl der Stellen, die umgewandelt werden sollen | fillChar <- Füllzeichen mit dem field aufgefüllt werden soll | -> String mit der umgewandelten Zahl | tested $$OwnHeap:=TRUE PROCEDURE IntToBinString(val IN D2 : LONGINT; field IN D3 : INTEGER:=0; fillChar : CHAR:=" "; sign : BOOLEAN:=FALSE):STRING; | | Parameter : Wie IntToString, jdeoch für Cardinal | tested $$OwnHeap:=TRUE PROCEDURE CardToString(val IN D2 : LONGCARD; field IN D3 : INTEGER:=0; fillChar : CHAR:=" "): STRING; | | Parameter : val <- Cardinalzahl, die umgewandelt werden soll | field <- Anzahl der Stellen, die umgewandelt werden sollen | fillChar <- Füllzeichen mit dem field aufgefüllt werden soll | dollar <- Gibt an, ob ein `$` vor die Zahl gesetzt werden soll | -> String mit der umgewandelten Zahl | tested $$OwnHeap:=TRUE PROCEDURE CardToHexString(val IN D2 : LONGCARD; field IN D3 : INTEGER:=0; fillChar IN D4 : CHAR:=" "; dollar IN D5 : BOOLEAN := FALSE):STRING; | | Parameter : val <- Cardinalzahl, die umgewandelt werden soll | field <- Anzahl der Stellen, die umgewandelt werden sollen | fillChar <- Füllzeichen mit dem field aufgefüllt werden soll | sign <- Gibt an, ob ein `%` vor die Zahl gesetzt werden soll | -> String mit der umgewandelten Zahl | tested $$OwnHeap:=TRUE PROCEDURE CardToBinString(val IN D2 : LONGCARD; field IN D3 : INTEGER:=0; fillChar IN D4 : CHAR:=" "; sign IN D5 : BOOLEAN := FALSE):STRING; | | Parameter : str <- String der umgewandelt werden soll | point <- Zeichen, das als Dezimalpunkt interpretiert | werden soll | -> Longrealzahl |tested PROCEDURE StringToReal(REF str IN A0 : STRING; point : CHAR:="."):LONGREAL; | | Parameter : str <- String der umgewandelt werden soll | -> Longintzahl | tested PROCEDURE StringToInt(REF str IN A0 : STRING):LONGINT; | | Parameter : str <- String der umgewandelt werden soll | -> Longintzahl | tested PROCEDURE HexStringToInt(REF str IN A0 : STRING):LONGINT; | | Parameter : str <- String der umgewandelt werden soll | -> Longintzahl | tested PROCEDURE BinStringToInt(REF str IN A0 : STRING):LONGINT; | | Parameter : str <- String der umgewandelt werden soll | -> Longcardzahl | tested PROCEDURE StringToCard(REF str IN A0 : STRING):LONGCARD; | | Parameter : str <- String der umgewandelt werden soll | -> Longcardzahl | tested PROCEDURE HexStringToCard(REF str IN A0 : STRING):LONGCARD; | | Parameter : str <- String der umgewandelt werden soll | -> Longcardzahl | tested PROCEDURE BinStringToCard(REF str IN A0 : STRING):LONGCARD; GROUP All = RealToString,RealToExpString,RealToMaskedString,IntToString, CardToHexString,StringToReal,StringToInt,HexStringToCard, IntToHexString,IntToBinString,CardToString,CardToHexString, CardToBinString,HexStringToInt,BinStringToInt,StringToCard, BinStringToCard,NoPointInMask; END Conversions.