161 lines
4.2 KiB
Plaintext
161 lines
4.2 KiB
Plaintext
(* Abbreviation: NumberConv *)
|
||
(* Version 1.10, Nov 1984 *)
|
||
(* comments modified Feb 8, 1985 *)
|
||
DEFINITION MODULE NumberConversion;
|
||
(*
|
||
Conversion between numbers and strings
|
||
|
||
Conventions for the routines that convert a string to
|
||
a number:
|
||
|
||
- Leading blanks are skipped.
|
||
- A plus sign ('+') preceeding the number is always
|
||
accepted, a minus sign ('-') is only accepted when
|
||
converting to INTEGER or LONGINT.
|
||
- Blanks between the plus or minus sign and the number
|
||
are skipped.
|
||
- The last character in the string must belong to the
|
||
number to be converted. No trailing blanks or other
|
||
trailing charatcers are allowed.
|
||
- 'done' returns TRUE if the conversion is successful.
|
||
|
||
Conventions for the routines that convert a number to
|
||
a string:
|
||
|
||
- If the string is too small, the number is truncated.
|
||
- If less than 'width' digits are needed to represent
|
||
the number, leading blanks are added.
|
||
*)
|
||
|
||
|
||
EXPORT QUALIFIED
|
||
MaxBase, BASE,
|
||
StringToCard, StringToInt, StringToLongInt, StringToNum,
|
||
CardToString, IntToString, LongIntToString, 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 StringToLongInt(str: ARRAY OF CHAR;
|
||
VAR num: LONGINT;
|
||
VAR done: BOOLEAN);
|
||
(*
|
||
- Convert a string to a LONGINT 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 if 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
|
||
width width of the returned string
|
||
|
||
out: str returned string representation of the number
|
||
*)
|
||
|
||
|
||
PROCEDURE IntToString(num: INTEGER;
|
||
VAR str: ARRAY OF CHAR;
|
||
width: CARDINAL);
|
||
(*
|
||
- Convert an INTEGER number to a string.
|
||
|
||
in: num number to convert
|
||
width width of the returned string
|
||
|
||
out: str returned string representation of the number
|
||
*)
|
||
|
||
|
||
PROCEDURE LongIntToString(num: LONGINT;
|
||
VAR str: ARRAY OF CHAR;
|
||
width: CARDINAL);
|
||
(*
|
||
- Convert a LONGINT number to a string.
|
||
|
||
in: num number to convert
|
||
width width of the returned string
|
||
|
||
out: str returned string representation of the number
|
||
*)
|
||
|
||
|
||
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
|
||
base the base of conversion
|
||
width width of the returned string
|
||
|
||
out: str returned string representation of the number
|
||
*)
|
||
|
||
|
||
END NumberConversion.
|
||
|