MODULE ConvertHex;   (* Convert hex string to decimal value *)

  (* From the book "Modula-2  A Seafarer's Manual and Shipyard Guide" *)
  (* Page 65   adapted "Amiga M2Modula-2"   04 Mar 1988 *)

FROM InOut IMPORT WriteLn,
                  Write,
                  Read,
                  WriteCard;

VAR
  ch : CHAR;
  DecEquiv : INTEGER;

BEGIN
  DecEquiv := 0;		(* initialize decimal equivalent *)
  
  LOOP
    Read (ch);			(* get a character *)
    Write (ch);			(* echo character *)
    IF (ch = " ") THEN		(* end of entry? *)
      EXIT;
    END;   (* IF *)
    DecEquiv := DecEquiv * 16;
    IF (ch <= "9") THEN		(* character between 0-9? *)
      DecEquiv := DecEquiv + (ORD(ch) - ORD("0"));
    ELSE
      DecEquiv := DecEquiv + (ORD(ch) - ORD("A")) + 10;
    END;   (* IF *)
  END;   (* LOOP *)
  
  WriteLn;
  WriteCard(DecEquiv,5);	(* display converted result *)
  WriteLn;
  
END ConvertHex.   
