В примере показано использование некоторых средств ввода-вывода текстов в режиме диалога. Пользователю предлагается выбрать цвет; программа в соответствии с описью выдает число предметов этого цвета на складе. Используются файлы ввода и вывода по умолчанию. Для простоты все необходимые конкретизации настройки заданы в одной подпрограмме;на практике для этого мог бы использоваться самостоятельный пакет.
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_10(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: "); -— обращение к пользователю GET (SELECTION); -— вводит набранный цвет или возбуждает исключение return; exception when DATA_ERROR => PUT("lnvalid color, try again. ");-- пользователь должен набрать новую строчку NEW_LINE(2); -- завершение выполнения оператора блока end; end loop; -— повторение оператора блока, пока не будет получен правильнй цвет end;begin -- операторы процедуры DIALOGUE; NUMBERJO.DEFAULT_WIDTH := 5; loop ENTER_COLOR(CHOICE); -- пользователь набирает цвет и -— начинает новую строчку SET_COL(5); PUT(CHOICE); PUT(" items available:"); SET_COL(40); PUT(INVENTORY(CHOICE)); -— ширина по умолчанию равна 5 NEW_LINE; end loop;end DIALOGUE;
Пример диалога (набранное пользователем выделено курсивом):
ВЫБРАННЫЙ ЦВЕТ: Black ОШИБОЧНЫЙ ЦВЕТ, ПОВТОРИТЕ НАБОРВЫБРАННЫЙ ЦВЕТ: Blue BLUE ВСЕГО ПРЕДМЕТОВ: 173 ВЫБРАННЫЙ ЦВЕТ: Yellow YELLOW ВСЕГО ПРЕДМЕТОВ: 10