IMPLEMENTATION MODULE WholeStr; (* Delegates the numeric work to Conversions and maps its status onto ConvTypes' (identical literal order). *) IMPORT ConvTypes, Conversions; FROM ConvTypes IMPORT strAllRight, strOutOfRange, strWrongFormat, strEmpty; PROCEDURE Map (cr : Conversions.ConvResults) : ConvTypes.ConvResults; BEGIN IF ORD(cr) = 0 THEN RETURN strAllRight ELSIF ORD(cr) = 1 THEN RETURN strOutOfRange ELSIF ORD(cr) = 2 THEN RETURN strWrongFormat ELSE RETURN strEmpty END END Map; PROCEDURE StrToInt (str : ARRAY OF CHAR; VAR int : INTEGER; VAR res : ConvResults); BEGIN int := 0; res := Map(Conversions.StrToInt(str, int)) END StrToInt; PROCEDURE IntToStr (int : INTEGER; VAR str : ARRAY OF CHAR); BEGIN Conversions.IntToStr(int, str) END IntToStr; PROCEDURE StrToCard (str : ARRAY OF CHAR; VAR card : CARDINAL; VAR res : ConvResults); BEGIN card := 0; res := Map(Conversions.StrToCard(str, card)) END StrToCard; PROCEDURE CardToStr (card : CARDINAL; VAR str : ARRAY OF CHAR); BEGIN Conversions.CardToStr(card, str) END CardToStr; END WholeStr.