14.7. ПРИМЕР ВВОДА-ВЫВОДА

В примере показано использование некоторых средств ввода-вывода текстов в режиме диалога. Пользователю предлагается выбрать цвет; программа в соответствии с описью выдает число предметов этого цвета на складе. Используются файлы ввода и вывода по умолчанию. Для простоты все необходимые конкретизации настройки заданы в одной подпрограмме;на практике для этого мог бы использоваться самостоятельный пакет.

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