Файлы, которые существуют за пределами времени выполнения программы, могут быть использованы для создания программных систем, взаимодействия между Паскаль-программами и другими частями компьютерной системы.
Файлы могут иметь время жизни, как и другие переменные в Паскале, которое определяется временем выполнения программы или временем жизни соответствующего блока, но они могут также продолжать существовать за пределами выполнения программы. Если файловая переменная появляется в заголовке программы, (с INPUT и OUTPUT), файл называется внешним. Содержимое внешнего файла может читаться и записываться Паскаль-программой, но файл может существовать до начала выполнения программы и оставаться после завершения выполнения. Например, в программе
PROGRAM FileProcess(INPUT, OUTPUT, ExtFile);
VAR
IntFile, ExtFile: TEXT;
BEGIN
…
END.
Содержимое файла ExtFile может существовать до выполнения FileProcess и оставаться после выполнения, а содержимое IntFile должно быть создано в FileProcess и будет уничтожено при завершении выполнения. Каждая Паскаль-машина имеет различные способы связывания внешних файлов с именами в файловой системе. Часто идентификатор задает используемое имя, но это может быть и не так из-за ограничений за пределами Паскаль-машины.
Внешние файлы могут иметь три разных варианта использования: ввод – предоставление данных программе извне, вывод – сохранение данных, подготовленных данной программой другим программам и изменение – предоставление данных программе для изменения с целью дальнейшего использования.
Например, файл может быть использован для накопления записей студентов, регистрирующихся на учебный курс. Предположим, стандартный входной файл INPUT содержит имена всех студентов зарегистрировавшихся сегодня, а Students содержит имена зарегистрировавшихся ранее студентов в алфавитном порядке. Следующий раздел проекта показывает, какие требуются обработки.
PROGRAM Register(INPUT, OUTPUT, Students);
{добавляет имена в INPUT в Students и сообщает
о дублировании имен в OUTPUT}
VAR
Students, Temp1, Temp2: TEXT;
BEGIN {Register}
{Копировать INPUT в Temp1}
{сортировать имена в Temp1}
{соединить Temp1 и Students в Temp2 –
если имя существует в обоих файлах,
послать в OUTPUT и не дублировать в Temp2}
{копировать Temp2 в Students}
END. {Register}
Temp1 и Temp2 – внутренние файлы, которые уничтожаются при завершении выполнения. Student изменяется и будет использован этой же программой позднее.
Внешние файлы D Pascal обеспечивают возможность создания, не просто одиночных программ, а программных систем, где программы обмениваются информацией через внешние файлы. Например, другая программа может распечатывать файл Students, скажем, как в следующем разделе проекта:
PROGRAM PrintRegistered(INPUT, OUTPUT, Students);
{печатает имена в Students в OUTPUT}
VAR
Students: TEXT;
BEGIN {PrintRegistered}
{Копировать и форматировать имена из Students в OUTPUT}
END. {PrintRegistered}
Программные системы, как и программы, требуют тщательного проектирования, но здесь структурами данных являются внешние файлы и элементарными операциями являются действия программ в системе. В приложениях обработки данных, лицо проектирующее программные системы, но не обязательно программы в них входящие, называется системным аналитиком.