-- General Utility Package PACKAGE utils IS -- Package Functions : -- ch_is_upper => Is character an upper case letter ? FUNCTION ch_is_upper ( c : CHARACTER ) RETURN BOOLEAN ; -- ch_is_lower => Is character a lower case letter ? FUNCTION ch_is_lower ( c : CHARACTER ) RETURN BOOLEAN ; -- upper_case => Return upper case equivalent of a character. FUNCTION upper_case ( c : CHARACTER ) RETURN CHARACTER ; -- lower_case => Return lower case equivalent of a character. FUNCTION lower_case ( c : CHARACTER ) RETURN CHARACTER ; -- upper_case => Return upper case equivalent of a string. FUNCTION upper_case ( s : STRING ) RETURN STRING ; -- lower_case => Return lower case equivalent of a string. FUNCTION lower_case ( s : STRING ) RETURN STRING ; END utils ; -------------------------------------------------------- PACKAGE BODY utils IS -- ch_is_upper => Is given character an upper case letter ? FUNCTION ch_is_upper ( c : CHARACTER ) RETURN BOOLEAN IS BEGIN -- ch_is_upper -- simply check character lies between 'A' and 'Z' RETURN ( ( c >= 'A' ) AND ( c <= 'Z' ) ) ; END ch_is_upper ; ----------------------------------------------- -- ch_is_lower => Is given character a lower case letter ? FUNCTION ch_is_lower ( c : CHARACTER ) RETURN BOOLEAN IS BEGIN -- ch_is_lower -- simply check character lies between 'a' and 'z' RETURN ( ( c >= 'a' ) AND ( c <= 'z' ) ) ; END ch_is_lower ; ----------------------------------------------- -- upper_case => Convert character from lower to upper case. FUNCTION upper_case ( c : CHARACTER ) RETURN CHARACTER IS -- Local Constants : -- offset between lower and upper case character sets offset : CONSTANT INTEGER := -32 ; BEGIN -- upper_case -- check character is lower case letter & convert it if it is IF ch_is_lower ( c ) THEN RETURN CHARACTER'VAL ( CHARACTER'POS ( c ) + offset ) ; ELSE RETURN c ; END IF ; END upper_case ; ------------------------------------------------ -- lower_case => Convert character from upper to lower case. FUNCTION lower_case ( c : CHARACTER ) RETURN CHARACTER IS -- Local Constants : -- offset between upper and lower case characters offset : CONSTANT INTEGER := 32 ; BEGIN -- lower_case -- check character is upper case letter & convert it if it is IF ch_is_upper ( c ) THEN RETURN CHARACTER'VAL ( CHARACTER'POS ( c ) + offset ) ; ELSE RETURN c ; END IF ; END lower_case ; ------------------------------------------------ -- upper_case => Convert string from lower to upper case. FUNCTION upper_case ( s : STRING ) RETURN STRING IS -- Local Variables : u : STRING ( 1..s'LENGTH ) ; -- local storage for result BEGIN -- upper_case -- loop through input string converting characters FOR ch IN 1..s'LENGTH LOOP u ( ch ) := upper_case ( s ( ch ) ) ; END LOOP ; -- return result RETURN u ; END upper_case ; ------------------------------------------------ -- lower_case => Convert string from upper to lower case. FUNCTION lower_case ( s : STRING ) RETURN STRING IS -- Local Variables : l : STRING ( 1..s'LENGTH ) ; BEGIN -- lower_case -- loop through given string converting characters FOR ch IN 1..s'LENGTH LOOP l ( ch ) := lower_case ( s ( ch ) ) ; END LOOP ; -- return result RETURN l ; END lower_case ; ------------------------------------------------ END utils ; --------------------------------------------------------