| (* Library module defined by the International Standard |
| Information technology - programming languages |
| BS ISO/IEC 10514-1:1996E Part 1: Modula-2, Base Language. |
| |
| Copyright ISO/IEC (International Organization for Standardization |
| and International Electrotechnical Commission) 1996-2021. |
| |
| It may be freely copied for the purpose of implementation (see page |
| 707 of the Information technology - Programming languages Part 1: |
| Modula-2, Base Language. BS ISO/IEC 10514-1:1996). *) |
| |
| DEFINITION MODULE LongStr; |
| |
| (* LONGREAL/string conversions *) |
| |
| IMPORT |
| ConvTypes; |
| |
| TYPE |
| (* strAllRight, strOutOfRange, strWrongFormat, strEmpty *) |
| ConvResults = ConvTypes.ConvResults; |
| |
| (* the string form of a signed fixed-point real number is |
| ["+" | "-"], decimal digit, {decimal digit}, [".", |
| {decimal digit}] |
| *) |
| |
| (* the string form of a signed floating-point real number is |
| signed fixed-point real number, "E", ["+" | "-"], |
| decimal digit, {decimal digit} |
| *) |
| |
| PROCEDURE StrToReal (str: ARRAY OF CHAR; VAR real: LONGREAL; |
| VAR res: ConvResults); |
| (* Ignores any leading spaces in str. If the subsequent characters |
| in str are in the format of a signed real number, assigns a |
| corresponding value to real. Assigns a value indicating the |
| format of str to res. |
| *) |
| |
| PROCEDURE RealToFloat (real: LONGREAL; sigFigs: CARDINAL; |
| VAR str: ARRAY OF CHAR); |
| (* Converts the value of real to floating-point string form, with |
| sigFigs significant figures, and copies the possibly truncated |
| result to str. |
| *) |
| |
| PROCEDURE RealToEng (real: LONGREAL; sigFigs: CARDINAL; |
| VAR str: ARRAY OF CHAR); |
| (* Converts the value of real to floating-point string form, with |
| sigFigs significant figures, and copies the possibly truncated |
| result to str. The number is scaled with one to three digits |
| in the whole number part and with an exponent that is a |
| multiple of three. |
| *) |
| |
| PROCEDURE RealToFixed (real: LONGREAL; place: INTEGER; |
| VAR str: ARRAY OF CHAR); |
| (* Converts the value of real to fixed-point string form, rounded |
| to the given place relative to the decimal point, and copies |
| the possibly truncated result to str. |
| *) |
| |
| PROCEDURE RealToStr (real: LONGREAL; VAR str: ARRAY OF CHAR); |
| (* Converts the value of real as RealToFixed if the sign and |
| magnitude can be shown within the capacity of str, or |
| otherwise as RealToFloat, and copies the possibly truncated |
| result to str. The number of places or significant digits |
| depend on the capacity of str. |
| *) |
| |
| END LongStr. |
| |