106 lines
3.0 KiB
Plaintext
106 lines
3.0 KiB
Plaintext
|
DEFINITION MODULE NumberConversion;
|
|||
|
(*
|
|||
|
Conversion between numbers and strings
|
|||
|
|
|||
|
|
|||
|
The routines that convert a string to a number:
|
|||
|
- skip leading blanks,
|
|||
|
- accept always a '+' sign and for integers
|
|||
|
also a '-' sign
|
|||
|
- skip blanks between sign and number
|
|||
|
Done is TRUE if the conversion is successful
|
|||
|
The routines that convert a number to a string:
|
|||
|
- if the string is too small the number is truncated
|
|||
|
- if the number has less digits than width,leading
|
|||
|
blanks are added
|
|||
|
*)
|
|||
|
|
|||
|
EXPORT QUALIFIED MaxBase, BASE,
|
|||
|
StringToCard, StringToInt, StringToNum,
|
|||
|
CardToString, IntToString, NumToString;
|
|||
|
|
|||
|
CONST MaxBase = 16;
|
|||
|
|
|||
|
TYPE BASE = [2..MaxBase];
|
|||
|
|
|||
|
|
|||
|
PROCEDURE StringToCard(
|
|||
|
str: ARRAY OF CHAR;
|
|||
|
VAR num: CARDINAL;
|
|||
|
VAR done: BOOLEAN
|
|||
|
);
|
|||
|
(*- Convert a string to a CARDINAL number.
|
|||
|
in: str string to convert
|
|||
|
out: num converted number
|
|||
|
done TRUE if successful conversion,
|
|||
|
FALSE if number out of range,
|
|||
|
or contents of string non numeric.
|
|||
|
*)
|
|||
|
|
|||
|
PROCEDURE StringToInt(
|
|||
|
str: ARRAY OF CHAR;
|
|||
|
VAR num: INTEGER;
|
|||
|
VAR done: BOOLEAN
|
|||
|
);
|
|||
|
(*- Convert a string to an INTEGER number.
|
|||
|
in: str string to convert
|
|||
|
out: num converted number
|
|||
|
done TRUE if successful conversion,
|
|||
|
FALSE if number out of range,
|
|||
|
or contents of string non numeric.
|
|||
|
*)
|
|||
|
|
|||
|
PROCEDURE StringToNum(
|
|||
|
str: ARRAY OF CHAR;
|
|||
|
base: BASE;
|
|||
|
VAR num: CARDINAL;
|
|||
|
VAR done: BOOLEAN
|
|||
|
);
|
|||
|
(*- Convert a string to a CARDINAL number.
|
|||
|
in: str string to convert
|
|||
|
base the base of the number represented in the string
|
|||
|
out: num converted number
|
|||
|
done TRUE if successful conversion,
|
|||
|
FALSE or number out of range,
|
|||
|
or contents of string not within base.
|
|||
|
*)
|
|||
|
|
|||
|
PROCEDURE CardToString(
|
|||
|
num: CARDINAL;
|
|||
|
VAR str: ARRAY OF CHAR;
|
|||
|
width: CARDINAL
|
|||
|
);
|
|||
|
(*- Convert a CARDINAL number to a string.
|
|||
|
in: num number to convert
|
|||
|
out: str returned string representation of the number
|
|||
|
in: width width of the returned string
|
|||
|
*)
|
|||
|
|
|||
|
PROCEDURE IntToString(
|
|||
|
num: INTEGER;
|
|||
|
VAR str: ARRAY OF CHAR;
|
|||
|
width: CARDINAL
|
|||
|
);
|
|||
|
(*- Convert an INTEGER number to a string.
|
|||
|
|
|||
|
in: num number to convert
|
|||
|
out: str returned string representation of the number
|
|||
|
in: width width of the returned string
|
|||
|
*)
|
|||
|
|
|||
|
PROCEDURE NumToString(
|
|||
|
num: CARDINAL;
|
|||
|
base: BASE;
|
|||
|
VAR str: ARRAY OF CHAR;
|
|||
|
width: CARDINAL
|
|||
|
);
|
|||
|
(*- Convert a number to the string representation in the specified base.
|
|||
|
|
|||
|
in: num number to convert
|
|||
|
in: base the base of conversion
|
|||
|
out: str returned string representation of the number
|
|||
|
in: width width of the returned string
|
|||
|
*)
|
|||
|
|
|||
|
END NumberConversion.
|
|||
|
|