Воззвание к пользователям ВЦ КГУ

Уважаемые пользователи!

Мы дождались, наконец, создания собственного ВЦ. Но это не означает, что теперь мы можем дать волю низменным страстям и тратить бумагу километрами, а время часами. Мы призываем вас приложить все усилия к тому, чтобы ваши программы не просто были отлажены, а отлажены эффективно, с экономным использованием ресурсов ВЦ. Мы предлагаем использовать возможности ДОС ЕС, которые позволяют значительно сократить расход бумаги и машинного времени без потери простоты и отладки.

Итак, способы.

Обычная колода на счёт (Язык - ФОРТРАН) выглядит так:

//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