Уважаемые пользователи!
Мы дождались, наконец, создания собственного ВЦ. Но это не означает, что теперь мы можем дать волю низменным страстям и тратить бумагу километрами, а время часами. Мы призываем вас приложить все усилия к тому, чтобы ваши программы не просто были отлажены, а отлажены эффективно, с экономным использованием ресурсов ВЦ. Мы предлагаем использовать возможности ДОС ЕС, которые позволяют значительно сократить расход бумаги и машинного времени без потери простоты и отладки.
Итак, способы.
Обычная колода на счёт (Язык - ФОРТРАН) выглядит так:
//Job XXNNMM ЧЧММ, ЛЛЛ, ФАМИЛИЯ где XXNNMM - шифр пользователя ЧЧММ - заказываемое время в часах и минутах ЛЛЛ - заказываемая бумага (в листах) ФАМИЛИЯ - фамилия пользователя
// OPTION LINK
// EXEC FFORTRAN
Текст программы
Текст подпрограмм
/* В 1 минуту разрешается использовать не более1 листа бумаги
// EXEC LNKEDT
// EXEC
Данные, если они есть
/*
/&
Первый шаг к экономии: запрещать печать текстов, которые не подвергались изменениям, либо изменения были незначительными. Например, отлаживается программа на ФОРТРАНЕ, с ней - подпрограмма SP. После последнего прогона изменения вносились только в основную программы. Чтобы запретить печать SP, но сохранить печать основной программы, будем их транслировать отдельно и собирать после трансляции
// Job D101010 0009, 006, Иванов
// OPTION LINK
PHASE @DPROG,*
// EXEC FFORTRAN
Текст основной программы
/*
// OPTION NOLIST
// EXEC FFORTRAN
Текст SP
/*
// EXEC LNKEDT
// EXEC
Данные, если они есть
/*
/&
Заметим, что в операторе PHASE имя фазы образуется так: первый символ &, второй - это первая буква шифра, далее - не более шести цифр и латинских букв.
Легко обобщить пример на случай N программ: те подпрограммы, тексты которых не нужны, присоединяются к SP, остальные - к основной программе.
Легко обобщить пример и не тот случай, когда нужна печать SP, но не нужна - основнй программы:
// JOB D10101 0009, 009, Иванов
// OPTION LINK
// OPTION NOLIST
PHASE @DPROG,*
//EXEC FFORTRAN
Текст основной программы
/*
// OPTION LIST
// EXEC FFORTRAN
Текст SP
/*
// EXEC LNKEDT
// EXEC
Данные, если они есть
/*
/&
Этот путь сулит вам следующие преимущества:
1. Вы избавите себя от лишних распечаток (а вы уже убедились, что в ДОС ЕС это - большое благо)>.
2. Время трансляции значительно сократится (обычно время трансляции - не столько сама трансляция, сколько ввод и распечатка программы)>.
3. Как следствие 1 и 2, поскольку программа будет короткой по времени и бумаге, она получит более высокий приоритет и будет пропускаться в первую очередь.
Можно и нужно идти дальше. Пусть подпрограммы не печатаются, но они транслируются, а это занимает время. А время - деньги, и это особенно справедливо для ЭВМ (час машинного времени ЕС-1022 стоит около 80 рублей).
Если каждая отдельно взятая задача будет выполняться быстрее, то в единицу времени будет прогоняться больше задач, а значит, вы сможете работать интенсивнее. Если каждый отдельно взятый пользователь будет уменьшать время работы своих программ, очередь программ на машине будет двигаться быстрее и выиграет от этого тот же самый пользователь.
Итак, если некоторые программы не меняются, их незачем транслировать каждый раз. Их можно поместить в библиотеку объектных модулей (БОМ). Для того, чтобы записать подпрограмму SP в БОМ, требуется такая колода:
// JOB D10101 0005, 005, Иванов
// OPTION DECK
// ASSGN SYSPCH, X'283'
CATALR &DSP MTC REW, X'283'
//EXEC FFORTRAN
Текст SP
/*
MTC WTM, X'283'
MTC REW, X'283'
RESET SYSPCH
// ASSGN SYSIPT,X'283'
// EXEC MAINT
/*
/&
Программа записывается в БОМ под именем @DSP. Правил таковы: первый символ @, второй - первая буква шифра, далее - не более 6 цифр и латинских букв. Рекомендуем 3 и 4 символом ставить номер программиста из шифра. Это избавит вас от всяческих неприятностей, связанных с одинаковыми именами модулей у разных программистов.
Чтобы соединить основную программу и подпрограммы из БОМа, достаточно такой колоды:
// JOB D10101 0005, 005, Иванов
// OPTION LINK
PHASE
// EXEC FFORTRAN
/*
INCLUDE имя из БОМа
// JOB и т.д.
// OPTION DECK
// ASSGN SYSPCH, X'283'
MTC REW, X'283'
Сюда вставлять тексты каталогизируемых программ
MTC WTM, X'283'
MTC REW, X'283'
RESET SYSPCH
// ASSGN SYSIPT, X'283'
// EXEC MAINT
/*
/&
И вставлять туда тексты каталогизируемых программ, например:
CATALR @DSP
// EXEC FFORTRAN
Текст
/*
Можно одновременно каталогизировать несколько модулей
CATALR @DSP
// EXEC FFORTRAN
Текст
/*
CATALR @DPROG
// EXEC FFORTRAN
Текст
/*
И ,наконец, если программа не меняется, а вы испытываете её на различных данных. Тогда её лучше записать в библиотеку абсолютных модулей (БАМ)>, и вызвать на счёт без трансляции и сборки.
Колода на помещение программы @DPROG в БАМ:
// JOB D10101 0009, 009, Иванов
// OPTION CATAL
PHASE @DPROG,*
// EXEC FFORTRAN
Текст
/*
// EXEC LNKEDT
/&
Программа помещается в БАМ под именем @DPROG.
Чтобы вызвать её на счёт, достаточно колоды:
// JOB 10101 0009, 009, Иванов
// EXEC @DPROG
Данные
/*
/&
Можно применить предыдущие достижения и записывать в БАМ, например, так:
// JOB
// OPTION CATAL
PHASE @DPROG,*
// EXEC FFORTRAN
Печатаемый текст
/*
// OPTION NOLIST
// EXEC FFORTRAN
Непечатаемый текст
/*
INCLUDE @DSP
INCLUDE @DSRGOL
// EXEC LNKEDT
/&
Итак, вам предложены способы более эффективной организации работы. Советуем вам собрать всю решительность и начать осваивать эти методы не со следующего понедельника, а сейчас же. Сначала будет трудно, потом стерпится-слюбится.
Мы, со своей стороны, поможем вам в этом двумя способами:
1. Дадим любые консультации по вопросам эффективной организации программ (не умеете - научим).
2. Не будем принимать на обработку программы, в которых не будут использоваться указанные организации (не хотите - заставим).
Ваши доброжелатели - группа программного обеспечения.
© Алексей Бабий 1979