В приведенном ниже алгоритме каждый пункт выполняется лишь при правильном выполнении всех предыдущих.
— Прочесть старую копию копилки и основной библиотеки на последнем поколении резерва;
— Записать в конец последнего поколения резерва новую копию копилки;
— Проверить записанное чтением;
— Найти через каталог том МЛ с самым старым поколением резерва и распределить его под новое поколение;
— Записать на новое поколение (опять) копию новой копилки;
— Записать следом копию новой (текущей) основной библиотеки;
— Проверить чтением новое поколение резерва;
— Закаталогизировать новое поколение резерва (закаталогизировав якобы находящийся на нем фиктивный набор данных из группы поколений). Только теперь новое поколение резерва перешло из кандидатов в "настоящие";
— Опустошить копилку.
Таким образом, в ведении системного программиста (и только в его) находятся всегда как минимум два экземпляра любого модуля. Вся эта система, кроме того, поддерживает пары библиотек, обеспечивая их взаимо-однозначное соответствие. Из вышеприведенного этюда можно заметить, что такая система может облегчить жизнь подразделению системных программистов. Защищеность ее от ошибок и гибкость базируемых на ней программных систем значительно выше, чем у традиционной. Несчастье заключено лишь в том, что в полном объеме такой системы нет. Ос ЕС ЭВМ не обеспечивает автоматически ни предбанника, ни поколения раздела библиотеки (или хотя бы "призрака" раздела библиотеки). Организация такой системы в рамках ОС ЕС требует от ее пользователя выдерживания такого большого количества дополнительных ограничений на способ организации програмных систем, базирующихся на "пирамиде", что легче, наверное, заставить всех пассажиров трамвая сортироваться по номеру своей остановки, а всех покупателей называть у кассы сначала номер отдела, а потом сумму. Как видно из описанного выше, "пирамида" базируется практически на следующих идеях: разделение ответственности; локализация во времени и пространстве процессов модификации крупного файла (слияние с "предбанником"); автоматизация рутинной работы по ведению поколений резерва. А в результате, все могут спать спокойно, болеть, когда им хочется и — чего уж лицемерить — даже попадать под трамвай.
Как легко, все-таки, переводить с английского на русский модальные глаголы. По английски "to have to", "to be to", "must", "might", "should", а по русски (не Пушкины же) все одно — "должен".
Этюд.
В документации написано: "В поле операнда должен находиться символ кода дкои, отличный от ъхъ". Как понимать эту фразу? Давайте пофантазируем. Сначала рассмотрим ситуацию, когда поле операнда может быть и пустым, но уж, если оно не пусто, то:
1. Наличие в нем символа ъхъ диагностируется, как ошибка, процесс прекращается;
2. Наличие символа ъхъ диагностируется, как ошибка, он заменяется на 'Y', процесс продолжается;
3. Символ ъхъ допустим, но случай его использования в поле операнда описан в другом месте документации.
4. Эффект от наличия ъхъ в поле операнда неопределен.
5. Символ ъхъ поместить в поле операнда невозможно (отсутствует на клавиатуре);
6. ЪХъ означает конец поля операндов;
7. Написание символа ъхъ в поле операнда — противоправовое действие (как проезд на запрещающий сигнал светофора).
Теперь вспомним еще одну возможность: "поле операнда "должно" быть не пустым". Фантазировать над этим последним "должно" мы не будем, а просто возведем число предыдущих вариантов в квадрат, чтобы учесть, например, такую комбинацию: "отсутствие символов в поле операнда приводит к аварийному окончанию, а наличие в нем символа ъхъ к замене его на 'Y' с продолжением обработки". Hе имея ничего против модальных глаголов, могу посоветовать потенциальным пользователям каких-либо программных систем, не искушать свою судьбу, связав ее с системой, документация которой не раскрывает неопределенностей своих императивных высказываний.
Перед нами "раненый" DD-оператор языка управленния заданиями ОС ес:
//АLРНА DDD DСNАМЕ=ВLIN,SРАSЕ=(ТRС,20),UNТ=SYSDА, //
DIРS=(NЕW,САТGL),VОL=SЕR=КОМ
вы узнали его? Hу, конечно же, это практикантка Светочка хотела написать:
//АLРНА DD DSNАМЕ=ВLIN,SРАСЕ=(ТRК,20),UNIТ=SYSDА, //
DISР=(NЕW,САТLG),VОL=SЕR=КОМ