with
TEXT_IO; use
TEXT_IO;
procedure
DIALOGUE is
type
COLOR is
(WHITE, RED, ORANGE, YELLOW, GREEN, BLUE, BROWN);
package
COLOR_IO is new
ENUMERATION_IO(ENUM => COLOR);
package
NUMBER_IO is new
INTEGER_IO(INTEGER);
use
COLOR_IO, NUMBER_IO;
INVENTORY :
array
(COLOR) of
INTEGER :=
(20, 17, 43, 10, 28, 173, 87);
CHOICE : COLOR;
procedure
ENTER_COLOR (SELECTION : out
COLOR) is
begin
loop
begin
PUT("Color selected: "); -- prompts user
GET(SELECTION); -- accepts color typed, or raises exception
return
;
exception
when
DATA_ERROR =>
PUT("Invalid color, try again. "); -- user has typed
-- new line
NEW_LINE(2);
-- completes execution of the block statement
end
;
end loop
; -- repeats the block statement until color
-- accepted
end
;
begin
-- statements of DIALOGUE;
NUMBER_IO.DEFAULT_WIDTH := 5;
loop
ENTER_COLOR(CHOICE); -- user types color and new line
SET_COL(5); PUT(CHOICE);
PUT(" items available:");
SET_COL(40); PUT(INVENTORY(CHOICE)); -- default width is 5
NEW_LINE;
end loop
;
end
DIALOGUE;
Color selected: Black
Invalid color, try again.
Color selected: Blue
BLUE items available: 173
Color selected: Yellow
YELLOW items available: 10