Cтраница 2
Так как относительный файл нельзя расширять после создания, исходный файл необходимо создать достаточно большим для того, чтобы можно было обрабатывать все могущие появиться в дальнейшем данные инвентаризации. Кроме файла инвентаризации, существует еще файл изменений ( TRANSACTION-FILE), который содержит записи, вызывающие обновление. [16]
Внесение рабочих изменений в файл, содержащий информацию о предметной области. Информация хранится в основном файле, изменения описываются файлом изменений. На основании исходной версии файла и файла изменений создается новая версия файла. Исходная и новая версии могут сохраняться под разными номерами версий. [17]
Если ID-номер состоит из десяти цифр ( любые пробелы также приведут к выходу по ошибке), то производятся действия по проверке правильности следования карт. Для удобства обработки файла сотрудников в последующих программах, файл изменений необходимо формировать в порядке возрастания ID-номеров. Это может быть достигнуто путем механической сортировки карт до ввода их этой программой. При этом необходимо проверять при чтении правильность следования карт во входном файле. [18]
Номер-сотрудника, по которому производится поиск, содержится в файле изменений. [19]
Второй пример, относящийся к обработке файлов, связан с редактированием последовательного файла. Предположим, что существует главный файл, содержащий много записей, и файл изменений, содержащий относительно немного записей. Программа последовательного редактирования читает информацию из старого главного файла с именем старыйфайл и из файла изменений под именем измфайл, создавая при этом измененный главный файл с именем новыйфайл. Каждый шаг выполнения программы связан либо с копированием записи из старого файла в новый, либо с модификацией записи старого файла в соответствии с содержимым файла изменений. Существуют три типа модификаций: замена, исключение и вставка. Замена изменяет значение главной записи, при исключении запись удаляется из файла, а вставка связана с созданием новой записи. Информация, требуемая для замен и вставок, содержится в файле изменений. Замена записей - по существу избыточная операция, поскольку она может быть выполнена с помощью исключения и вставки, но мы все же оставили эту операцию. [20]
Очевидно, необходимо найти способ идентификации записей. Мы будем предполагать, что оба файла, как главный файл, так и файл изменений, содержат ключ и, более того, оба файла были подвергнуты сортировке по возрастающему значению этого ключа. В качестве простого примера возьмем главный файл, содержащий описания автомобилей, и предположим, что каждая запись содержит целочисленный ключ. [21]
Первой записи из файла изменений не соответствует ни одна запись в файле сотрудников. В этом случае происходит добавление новой записи, соответствующей новому сотруднику. ID-номера следующих двух записей файла изменений имеются в обоих файлах. В этом случае могут быть либо удаления, либо изменения записей файла сотрудников. Последняя запись в файле изменений с ID-номером, равным 0000395995, порождает еще одну новую запись в файле сотрудников. [22]
Мне хотелось, чтобы мой онлайновый журнал выглядел красиво независимо от разрешения экрана, поэтому я изменила размер шрифта по умолчанию в зависимости от размера экрана. Для этого примера я модифицировала файл изменения размера шрифта как для заголовков, так и для общего текста, и для изменения размера меню содержания. [23]
Внесение рабочих изменений в файл, содержащий информацию о предметной области. Информация хранится в основном файле, изменения описываются файлом изменений. На основании исходной версии файла и файла изменений создается новая версия файла. Исходная и новая версии могут сохраняться под разными номерами версий. [24]
Служба Почтовой службы США, предоставляющая отправителям ( mailer) информацию об изменениях адресов на магнитной ленте ( magnetic tape) до того, как они отправят почту по неправильным адресам. Эта операция осуществляется путем сравнения компьютером файла изменения адресов Почтовой службы с рассылочным списком ( list) отправителя и выдачи перечня на магнитной ленте всех совпадений ( match) с новыми, правильными адресами. Такая услуга является шагом вперед по сравнению с услугами службы изменения адресов ( address change service), которая может дать информацию об изменении адреса только после отправки письма по неправильному адресу. [25]
Второй пример, относящийся к обработке файлов, связан с редактированием последовательного файла. Предположим, что существует главный файл, содержащий много записей, и файл изменений, содержащий относительно немного записей. Программа последовательного редактирования читает информацию из старого главного файла с именем старыйфайл и из файла изменений под именем измфайл, создавая при этом измененный главный файл с именем новыйфайл. Каждый шаг выполнения программы связан либо с копированием записи из старого файла в новый, либо с модификацией записи старого файла в соответствии с содержимым файла изменений. Существуют три типа модификаций: замена, исключение и вставка. Замена изменяет значение главной записи, при исключении запись удаляется из файла, а вставка связана с созданием новой записи. Информация, требуемая для замен и вставок, содержится в файле изменений. Замена записей - по существу избыточная операция, поскольку она может быть выполнена с помощью исключения и вставки, но мы все же оставили эту операцию. [26]
Однако связанная таблица доступна только до тех пор, пока связь не разрушена: каким-либо причинам. Внесенные в связанную таблицу изменения переносятся и сохраняются во внешнем файле, и наоборот: внесенные в файл изменения доступны в связанной таблице. Этот мастер, как и мастер по импорту, работает со многими внешними источниками данных. [27]
Файл изменений и файл сотрудников упорядочены по одному и тому же параметру - идентификационному номеру сотрудника. Это делает возможным создание новой копии и выполнение процесса внесения изменений. ID-номер используется либо для установления соответствия записей из двух файлов, либо для идентификации новой записи, порождаемой по очередной записи из файла изменений, аналога которой не оказалось в файле сотрудников. [28]
Этот номер, как было сообщено ранее, состоит из двух цифр года, трех цифр дня и двух цифр номера и используется в процессе обновления, будучи помещен в код-файла-изменений ( UPDATED-BY-TRANS-FTLE) обновляемой записи инвентаризации. Что-то подобное обязательно требуется при произвольном доступе, так как при прерывании выполнения программы должна быть предусмотрена какая-то возможность запустить программу заново без повторного обновления уже обновленных записей. При каждом требуемом повторном запуске программы подпрограмма, вызванная с помощью оператора CALL, может проверять код-файла-изменений, содержащийся в записи инвентаризации, с тем, чтобы узнать, была ли уже обработана эта запись во время текущего прогона программы. Остальные записи файла изменений содержат код-действия ( ACTION-CODE), указывающий, какого типа обработка должна быть выполнена для этой записи: удаление соответствующей записи инвентаризации, модификация значений данных соответствующей записи инвентаризации или добавление рассматриваемой записи в качестве новой записи вместо одной из фиктивных записей. Девятизначный код ITEM-CODE в записи изменений либо указывает на соответствующую запись в файле инвентаризации, либо представляет собой номер, используемый для замены девяти девяток. [29]
За одну итерацию в цикле мы должны обработать по крайней мере одну запись, поскольку в противном случае программа может никогда не завершить свою работу. Проблема заключается в том, чтобы определить, как много нужно сделать в течение одной итерации. Решить эту проблему можно так: выбрать один ключ и обработать все записи, связанные с этим ключом. В исходном файле данным ключом может обладать либо нуль, либо одна запись, а в файле изменений один ключ может соответствовать нулю или более записей. Мы выбираем значение ключа, исследуя очередную запись из каждого файла и беря ту из них, у которой значение ключа меньше. [30]