MODULE Characters;

(* From: MODULA-2, An Introduction, by Daniel Thalmann, Springer-Verlag,
	 New York, 1985
   Figure 8.8
   Changed a little, to have an ELSE part in the CASE statement
*)

	FROM InOut IMPORT WriteLn, WriteString, Write;

	CONST
		StrByLine = 4;

	VAR
		c : CHAR;
	
	BEGIN
		FOR c := 0C TO 177C DO
			IF ORD(c) MOD StrByLine = 0 THEN WriteLn; END;
			CASE c OF
			0C..37C, 177C :	WriteString("Control character   ") |
			"0".."9":	WriteString("Digit               ") |
			"a".."z":	WriteString("Lower case letter   ") |
			"A"..'Z':	WriteString("Upper case LETTER   ")
			ELSE		WriteString("Special character   ")
			END;
		END;
	END Characters.