68 lines
1.9 KiB
Ada
68 lines
1.9 KiB
Ada
|
||
--
|
||
-- ENUMERATION_IO demo
|
||
--
|
||
-- This program may require more than 384 Kb of RAM memory to compile,
|
||
-- depending on your hardware. (The twin instantiations below are
|
||
-- memory-hungry while they're being processed.) If you have problems,
|
||
-- de-install all RAM-resident software and try again.
|
||
--
|
||
|
||
with IO_EXCEPTIONS, TEXT_IO;
|
||
use TEXT_IO;
|
||
|
||
procedure SAMPLE12 is
|
||
|
||
type COLORS is (BLACK, BLUE, BROWN, GREEN, RED, WHITE, YELLOW);
|
||
type INVENTORY is array (COLORS) of INTEGER;
|
||
|
||
package EIO is new ENUMERATION_IO (COLORS); use EIO;
|
||
package INTIO is new INTEGER_IO (INTEGER); use INTIO;
|
||
|
||
INV : INVENTORY := (others => 20); -- Initial stock is 20 of each
|
||
WHICH_COLOR : COLORS;
|
||
HOW_MANY : INTEGER;
|
||
|
||
begin
|
||
PUT_LINE ("Inventory control program");
|
||
loop
|
||
PUT_LINE ("The current inventory is as follows:");
|
||
for I in COLORS loop
|
||
PUT (I, WIDTH => 8);
|
||
end loop;
|
||
NEW_LINE;
|
||
for I in COLORS loop
|
||
PUT (INV (I), WIDTH => 8);
|
||
end loop;
|
||
NEW_LINE;
|
||
loop
|
||
begin
|
||
PUT ("How many items (0 to exit) => ");
|
||
GET (HOW_MANY);
|
||
exit; -- Exit from loop if no exception
|
||
exception
|
||
when DATA_ERROR =>
|
||
NEW_LINE;
|
||
PUT_LINE ("Illegal integer. Please reenter.");
|
||
end;
|
||
end loop;
|
||
NEW_LINE;
|
||
exit when HOW_MANY = 0;
|
||
loop
|
||
begin
|
||
PUT ("Which color do you want to sell/buy => ");
|
||
GET (WHICH_COLOR);
|
||
exit; -- Exit from loop if no exception
|
||
exception
|
||
when DATA_ERROR =>
|
||
NEW_LINE;
|
||
PUT_LINE ("Illegal color. Please reenter.");
|
||
end;
|
||
end loop;
|
||
NEW_LINE;
|
||
INV (WHICH_COLOR) := INV (WHICH_COLOR) - HOW_MANY;
|
||
end loop;
|
||
PUT_LINE ("End of program. Have a nice day.");
|
||
end SAMPLE12;
|
||
|
||
|