Процесс подготовки програм м ы можно представить в виде схемы рис. 4.8. Из схемы видно, что процесс подготовки состоит из нескольких шагов:
1) С п о м о щ ь ю р е д а к т о р а текстов со зд а етс я ф ай л, сод ер ж ащ и й и сход н ы й текст п р о г р а м м ы на ф ортран е.
2) Т ранслятор с языка ф ортран преобразует исходный файл в файл в объектном коде.
3) П остроитель задач преобразует файл в объектном коде в файл образа задачи, готовый к выполнению.
4) П о команде R U N програм м ы M C R файл образа задачи запускается на выполнение.
Д ля иллю страции схемы прохождения ф ортран-програм м ы рас
см отри м програм м у вычисления значения функции f [ x ) = x 2 + 0,01 sin(x)
в точке х 0, значения х 0 подлежит вводить с терминала, f ( x 0)— вы
водить на терминал.
РЕДАКТОР ТЕКСТА ( EDI) I X
ИСХОДНАЯ ПРОГРАММА НА ФОРТРАНЕ
ТРАНСЛЯТОР( F O R )
О Б Ъ Е К Т Н Ы Й КОД Р А С П Е Ч А Т К А ПРОГРАММЫ (Л И С Т И Н Г )
СИСТЕМНАЯ БИБЛИОТЕКА |
ЗЕ
ПОСТРОИТЕЛЬ ЗАДАЧ (ТК В) |
О БРАЗ ЗА Д А Ч И
1 К А Р Т А П А М Я Т И ^ f
К О М А Н Д А M C R
ВЫПОЛНЕНИЕ ЗАДАЧИ Рис. 4.8
Э т а п 1. Вход в систему. Схема прохождения ф ортран -п рограм м ы состоит из следующих этапов:
_> H E L 3,162 < C R >
PA SSW O RD DIM A 5 < CR >
О С РВ M U L T I - U S E R SYSTEM G O O D M O R N IN G
_>
Э т а п 2. Вызов програм м ы «Редактор текста» (ED I), ввод текста программы :
^ EDI PR O G . FTN < C R >
C R E A T IN G NEW FILE PA G E 0
IN P U T
REA L X O ,FX < C R >
R EA D (5,10)XO < C R >
10 F O R M A T (E13.6) < C R >
F X = X O * *2 + 0.01 *SIN(XO) < CR >
W R IT E (5,10) FX < C R >
E N D < C R >
< C R >
1 E X < C R >
EXIT
Э т а п 3. Вызов транслятора с ф ортрана (FOR):
F O R PRO G , LP: = P R O G < CR >
Э т а п 4. Вызов построителя задач (ТКВ):
^ ТКВ PR O G = P R O G < C R >
Э т а п 5. Запуск задачи на выполнение:
>_ R U N PR O G < C R >
После запуска задачи P R O G на выполнение произойдет прерывание и задача перейдет в ожидание запланированного ввода значения х 0 по заказанном у ф орм ату Е13.6. Пусть требуется вычислить значение /(0 ,3 ). Т огда м ож но набрать на терминале
3.0Е —01 < C R >
После наж атия клавиш и возврата каретки задача P R O G выполня
ется и на терминал будет выведено значение /(0 ,3 ).
Ч тобы вычислить значение /(0 ,5 ), потребуется новый запуск задачи на выполнение
_> RUN PR O G < C R >
ввод с терм инала значения 0,5 и т. д.
Заверш ается работа в системе вы ходом из ОС РВ.
Э т а п 6. Выход из системы
>_ BYE < CR >
HAVE A G O O D M O R N IN G
Д ата время им я терминала L O G G E D O F F
Рассмотренные этапы 1— 6 представляю т собой простейший дисплейный сеанс пользователя в ОС РВ.
4.3.8. Редактор. Текстовый редактор в режиме д иалога позволяет создавать или корректировать исходные програм м ы и другие текстовые м атериалы в символьном виде.
И нструм ентальная програм м а текстовый редактор вызывается к о м а н д о й E D I п р о г р а м м ы M C R :
_> ED I < C R >
EDI >
В ответ на подсказку «ED I > » пользователь долж ен ввести спецификацию редактируемого файла, которая имеет вид
УСТР: [К И П ] И М Я Ф А Й ЛА . ТИ П
Пусть пользователь вош ел в систему с К ИП, равны м 3,162, и системным устройством является D K 0 :. Т огда для создания в каталоге 3,162 на DK0: файла T E X T .F T N или для редактирования существующ его ф айла с таким же именем в ответ на подсказку
«ED I > » необходимо ввести следую щ ую строку:
EDI > T E X T .F T N < C R >
151
Если создается новый файл, то редактор печатает C R E A T IN G NEW FILE
I NP UT
и переходит в режим ввода текста с терминала. Если файл с указанны м именем существует, то текстовый редактор считывает в оперативную пам ять (в блочный буфер) первый блок текста из ф айла (весь файл может состоять из одного блока), печатает PA G E О
и в режиме ком анд ждет ввода первой команды.
Редактор текста допускает два режима работы: режим ком анд и режим ввода. Переход из режима команд в режим ввода осуществляется командой IN SER T. Все строки, вводимые с этого м ом ента, будут добавлены к файлу как новый текст, следующий за текущей строкой. Д ля перехода из режима ввода в режим ком анд необходимо ввести символ < C R > как первый символ в строке. Текстовый редактор выводит при этом символ подсказки
« * » , которы й означает, что установлен режим команд.
У казатель текущей строки всегда указывает на первый сим вол в строке. После считывания в блочный буфер первого блока текста из редактируемого файла указатель текущей строки устанав
ливается на начало первой строки. Н екоторые ком анды редак
тирования м огут перемещ ать указатель текущей строки.
Редактор можно вызывать укороченной командой, после кото
рой не будет подсказки «E D I», например _> EDI T E X T .F T N < CR >
О с н о в н ы е к о м а н д ы т е к с т о в о г о р е д а к т о р а Все команды вводятся в ответ на приглашение « * » . И м я ком анды отделяется пробелом от ее параметров, каж дая ком ан да заканчивается символом < C R > .
Команда PRINT (напечатать) Ф орм ат: Р [N ]
К ом анда распечатывает текущую строку и следующие за ней N — 1 строк на терминале. Последняя распечатываемая строка становится текущей. Если N не указано, то значение N под
разумевается равны м I. Ввод C R эквивалентно команде Р 1.
Пример.
* Р10 < C R >
Распечатать на терминале 10 строк начиная с текущей.
Команда DELET (удалить) Ф ормат: D [N ]
К ом анда вызывает удаление текстовых строк следующим образом:
152
1) Если задается « + N » , то текущ ая строка и N —1 строк, следующих за текущей, удаляю тся. Текущей строкой становится строка, следую щ ая за последней удаленной строкой.
2) Если задается « —N», то удаляю тся N строк, предшеству
ющих текущей строке. У казатель текущей строки остается неиз
менным.
Если N не указано, то значение подразумевается равны м + 1 . Пример.
* D12 < C R >
У далить 12 строк начиная с текущей.
Команда LOCATE (определить место) Ф ормат: [N] L подстрока.
К ом анда исследует блочный буфер начиная со строки, следу
ющей за текущей строкой, и ищет строку, содерж ащ ую заданную подстроку (подстрока — часть строки). Числовое значение N, пред
шествующее команде, запраш ивает поиск N -ro появления заданной подстроки. У казатель строки устанавливается на строке, содерж а
щей указанную подстроку. Если N не указано, то значение N подразумевается равны м + 1 .
Пример.
* L (A I.C T .X ) < C R >
IF (A I.C T .X ) G O ТО 25
Команда CHANGE (заменить) Ф ормат: С /П О Д С Т Р О К А 1/П О Д С Т РО К А 2
К ом анда осуществляет поиск подстроки 1 (часть строки 1) в текущей строке, и если находит ее, то зам еняет на подстроку 2. Н ачальным и конечным ограничителем подстроки м ож ет быть лю бой символ, которы й не содержится в указанной подстроке, например, наклонная черта.
Пример.
Пусть исходный текст програм м ы содержит строку X = X — F I * A LPH A
тогд а после выполнения команды
С / —F I / + BETA < C R >
получим следую щий результат:
Х = Х + B ETA * A LPH A
Команда LINE CHANGE (заменить строку) Ф орм ат [N ] L С /П О Д С Т Р О К А 1 /П О Д С Т РО К А 2
К ом анда зам еняет подстроку 1 на подстроку 2 в текущей строке и N —1 строках за ней. Если N не указано, то значение N подразумевается равны м 4 -1 ■
Ф орм ат: I
К ом анд а устанавливает режим ввода. М ожет бы ть введен ряд новых строк, следующих за текущей строкой. К аж дая вводим ая строка заканчивается символом < C R > . С имвол < C R > в качест
ве первого символа в строке вызывает возврат текстового редактора в режим ком анд и печать символа « * » .
Пример.
Пусть исходная програм м а содержит строки А = 0 .5 * SIN(ALPHA)
В = X + Y + А * COS(BETA)
и указатель строки установлен на первой строке. Т огда после выполнения команды IN SE R T
*
I < C R >
X = SQ RT(TETA ) < CR >
Y = 3.15/A + 1. < C R >
< C R >
* получим
A = 0.5 * SIN(ALPHA) X = SQRT(TETA) Y = 3 .1 5 /A + l.
В = X + Y + A * COS(BETA)
Команда NEXT (следующий) Ф ормат: N [M ]
К ом анда передвигает указатель строки на М строк вперед или назад от текущей строки. Если М не указано, значение М под
разумевается равны м + 1 . Пример.
* N 15 < C R >
П ереместить указатель строки на 15 строк вперед относительно текущей строки.
Команда OVERLAY (перекрыть) Ф ормат: О [N ]
К ом анда вызывает удаление N строк и замену их на лю бое количество строк, введенных пользователем. После удаления строк текстовый редактор переходит в режим ввода (см. команду IN SERT). Если N не указано, то значение N подразумевается равным + 1 .
Пример.
Пусть исходная програм м а содержит строки А = 1.
К о м ан д а IN S E R T (вставить)
154
В = 3.1415 * R l C = SIN(BETA)
и указатель строки установлен на 2-й строке. Т огда после выполнения ком анды
* О < C R >
D = 8 < C R >
E = D * S IN (R 1 /R 2 ) < C R >
< C R >
*
получим следующий текст:
А = 1.
D = 8.
E = D * S IN (R 1 /R 2 ) C = SIN(BETA)
Команда BEGIN (начинать) Ф ормат: В
К ом анда устанавливает указатель текущей строки на начало блочного буфера.
Пример.
* В < C R >
Команда READ (читать) Ф ормат: REA [N ]
К ом анда позволяет считать следующие N блоков текста из ф айла в блочный буфер. У казанное число блоков не должно превыш ать емкость буфера. Если в буфере уже есть блоки, то новые блоки добавляю тся к ним. Если N не указано, то значение N подразумевается равны м + 1 .
Пример.
* REA 3 < C R >
Считать три блока текста из файла в блочный буфер.
Команда W R I T E (записать) Ф ормат: W
К о м ан д а записывает содержимое блочного буфера в выводной файл. Содержимое блочного буфера очищается.
Пример. I
W < C R >
Команда RENEW (обновить) Ф орм ат: REN [N ]
К о м ан д а записывает текущий блочный буфер в выводной файл и считывает новый блок из вы водного файла. Процесс повторяется N раз. Последний блок остается в блочном буфере. Если N не указано, то значение N подразумевается + 1 .
Ф ормат: EX ВЫВ.Ф
К ом анда передает все оставшиеся строки из блочного буфера и вводного ф айла (в том же порядке) в выводной файл, закры вает файлы и заверш ает редактирование. Если указана спецификация файла, то выводной файл переименовывается в соответствии с ней. В том случае, если спецификация не указана и редактировался существующий файл, выводной файл создается с тем же именем, что и вводной, а номер версии увеличивается на 1.
Пример.
1) * EX P R O G .F T N < CR >
Закончить редактирование и записать результат в файл с именем P R O G .F T N
2) * EX < C R >
Закончить редактирование и записать результат в файл с тем же именем, что и вводной, с номером версии на единицу больш е.