Проблема идентификации заключается в следующем:
• необходимость правильного распознавания и «привязывания» данных, размещенных на внешнем носителе (файл) к тем областям памяти, которые выделены для размещения этих данных (им соответствуют какие-то имена переменных в обрабатывающей программе);
• обнаружение ошибок при считывании данных (например, несоответствие типа или длины данного ожидаемому и т. п.);
• пропуск ошибочных данных (записей, строк и пр.) или вывод их в специальные файлы ошибок.
При считывании информации из файла (эта функция может быть возложена как на операционную систему, так и на пользовательскую программу или библиотечную процедуру) необходимо уметь:
• определять начало и окончание элементарного данного внутри записи;
• определять начало и окончание записи файла.
Здесь необходимо отдельно рассмотреть записи постоянной и переменной (неопределенной) длины. Выделяют следующие методы записи.
1. Ввод, управляемый редактированием (GET EDIT в ЯП ПЛ/1).
В этом случае данные на носителе (в файле) должны иметь строго ту
длину, которая задана в их описании (в прикладной программе).
Это ограничение, очевидно, имеет смысл только для файлов с записями постоянной длины. При этом символьные данные (поля) должны быть дополнены до стандарта хвостовыми пробелами (trailing blanks), а числовые — ведущими нулями (leading zeros). Для записей фиксированной длины, состоящих из элементов постоянной или ограниченной длины в буфере считывания выделяется область, равная общей длине записи. Всякое нарушение длины и типа приводит к ошибке считывания и выбраковке записи.
2. Ввод, управляемый списком (GET LIST в ЯП ПЛ/1). Этот метод называется также «с разделителями». При этом записи должны быть отделены друг от друга разделителями (ограничителями) записей (record terminators, delimiters), а элементы данных внутри записи — разделителями данных (data terminators). Этот подход действителен как для записей постоянной, так и фиксированной длины.
3. Ввод, управляемый данными (GET DATA в ЯП ПЛ/1). Здесь каждое данное в файле снабжается идентификатором, или меткой, которая совпадает с именем элемента данных в программе. Это способствует «точному приземлению» указанной информации в отведенную память. Также подходит для всех типов записей.
Пусть структура (запись) в некоторой программе имеет следующее описание
TOWN CHAR(20), 'наименование города
PEOPLE NUM(8), 'население
0 коммент.:
Отправить комментарий