dos_compilers/Logitech Modula-2 v34/M2LIB/DEF/NUMBERCO.DEF
2024-07-02 07:25:31 -07:00

161 lines
4.2 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(* 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.