Команда data
Такие объявления, как param и var, команды: solve и display, выполняются в режиме модели model. Режим model стандартный режим для большинства действий моделирования. Однако режим model неудобен для чтения длинных списков значений наборов и параметров. Вместо этого, AMPL предлагает режим чтения данных data, который активируется командой data;. Команда состоит из ключевого слова data, за которым следует необязательное имя файла, данные которого необходимо прочитать. Например команда:
data diet.dat;
читает данные из файла с именем diet.dat.
Имена файлов, содержащие пробелы, точки с запятой или непечатаемые символы, должны быть заключены в кавычки.
При чтении в режиме данных, AMPL рассматривает пробелы, то есть любую последовательность символов пробела, табуляции и «новой строки» как один пробел. Запятые, разделяющие строки или числа также игнорируются.
Правила считывания данных
Файлы данных часто содержат многочисленные символьные строки (элементы набора или значения символических параметров). В режиме данных AMPL не требуется заключать строки в кавычки. Строки, содержащие любой символ, кроме букв, цифр, нижнего подчеркивания, точки, + и - должны быть заключены в кавычки (одинарные или двойные). Например: "A & P", 'A & P. Если текст строки содержит кавычку, тогда кавычка другого типа должна окружать кавычку первого типа "DOMINICK'S" или 'DOMINICK''S'.
Строка, которая выглядит как число (например, +1 или 3e4) также должна быть заключена в кавычки, чтобы отличить её от числа.
Числа, имеющие одинаковое внутреннее представление, считаются одинаковыми, так что 2, 2.00, 2.e0 и 0.02E+2 - обозначают один и тот же элемент набора.
Когда AMPL заканчивает чтение файла в режиме данных, он обычно возвращается в тот режим, который действовал до команды data. Файл данных может сам содержать команды data, которые могут читать данные из других файлов. Если в последнем операторе файла *.dat отсутствует завершающая точка с запятой, то режим данных сохраняется после завершения чтения файла. Команда data без имени файла переводит AMPL в режим данных, поэтому следующий ввод воспринимается как оператор данных:
model dietu.mod; data; ampl data: set MINREQ := A B1 B2 C CAL;
AMPL выходит из режима данных, когда видит любой оператор (например, display), который не начинается с ключевых слов set или param. Команда model с именем файла или без него также вызывает возврат в режим модели model.
Компонентам модели могут быть присвоены значения из любого числа файлов данных с помощью различных команд данных. Независимо от количества файлов AMPL проверяет, чтобы каждому компоненту было присвоено только одно значение. Дублирующие назначения отображаются как ошибка.
reset data || update data
В некоторых ситуациях удобно иметь возможность изменять данные, объявляя новый оператор данных. Например, после решения одного сценария модели можно изменить данные, прочитав новый файл данных, соответствующий второму сценарию. Повторяющиеся значения данных из нового файла обычно рассматриваются как ошибочные дубликаты. Однако, можно указать AMPL принять их, введя команду сброса данных reset data или команду обновления данных update data.