Как было показано в приложении Г, если только не используется система пакетной обработки, программы должны находиться в таких файлах, как PROG.MAR (PROG.FOR для программ на Фортране или PROG.PAS для программ на Паскале). Хотя возможно создавать программы, используя команду CREATE, при этом возникают некоторые трудности. Например, можно ввести команду
CREATE PROG.MAR
затем - целиком текст программы, ввод которого завершается нажатием комбинации клавиш CTRL/Z. Но если были допущены какие-либо ошибки во введённой программе, то пришлось бы перепечатать всю программу заново, так как нет другого способа исправить ошибки с помощью команды CREATE. Редактор текста EDT позволяет вводить и модифицировать программу таким образом, что исправление ошибок или внесение добавлений в программу делается относительно просто.
Редактор EDT применяется для создания и модификации строк текста. Этот текст рассматривается как произвольная последовательность символов. Содержание текста не имеет никакого значения, будь то правильная программа на ассемблере, программы на Фортране или Паскале, детские стишки или что-нибудь другое. В действительности многие применяют редактор текста EDT для работы с текстами на естественном языке, например для написания деловых писем. Расширяющееся применение ЭВМ для таких целей известно под общим названием word processing - подготовка текстов. Важно запомнить то, что редактор текста не знает, что записывается программа на ассемблере, поэтому символы языка ассемблера, такие как .TITLE, .END, :, ; и т.д., для редактора текста не имеют специального значения.
На вычислительной системе VAX есть целый ряд редакторов текста. Наиболее популярными являются редакторы EDT, SOS и TECO. Редактор EDT, возможно, самый простой из них в работе, особенно если применяется такой сложный видеотерминал, как VT52, терминалы серий VT100/VT200 или совместимые с ними терминалы.
При работе в экранном режиме редактор EDT отображает информацию, которая вводится на видеотерминале типа VT52, VT100/VT200 или совместимых с ними тип, на экране этого видеотерминала. В то время, как осуществляется ввод текста, выполняется удаление или какое-либо изменение в тексте, все происходящие изменения можно видеть на экране видеотерминала, что позволяет преобразовывать текст к его окончательному виду[1].
Для вызова редактора EDT надо ввести команду[2]
EDIT/EDT PROGRAM.MAR
В этой команде PROGRAM.MAR - имя редактируемого файла программы. Если файл с именем PROGRAM.MAR уже существует, на экране появится первая строка файла, после которой строкой ниже будет следовать символ *. Если этот файл является новым файлом, создаваемым пользователем, то на экране появится сообщение "Input file does not exist" (файл ввода не существует), сопровождаемое на следующей строке символом [EOB], после которого строкой ниже следует символ *. Данное сообщение не является сообщением об ошибке; эта информация предупреждает пользователя о том, что он создаёт новый файл. Символ [EOB] будет появляться время от времени; он помечает конец редактируемого текста, а его мнемоника означает End Of Buffer (конец буфера).
В любом случае символ * показывает, что редактор EDT находится в режиме построчного редактирования, который описывается в разд. Д.4. Чтобы перейти в экранный режим, надо ввести команду CHANGE, завершив ввод команды нажатием на клавишу RETURN. По этой команде на экране видеотерминала будут отображены первые 22 строки программы пользователя (или не более 22 строк). На данном этапе в левом верхнем углу экрана будет находиться мерцающая отметка курсора, которая показывает, что в этом месте редактор EDT готов выполнить вставку или удаление текста.
Программа пользователя, если она не очень короткая (не более 24 строк), не может быть отображена на экране видеотерминала полностью. Поэтому на экране отображаются 24 строки, окружающие то место в тексте, где будет выполняться вставка или удаление. Вставки и удаления могут быть сделаны в любом месте текста. Место в тексте, где появляется изменение, отмечается мерцающей отметкой, называемой курсором. Курсор можно всюду перемещать с помощью клавиш, на которых нарисованы стрелки, обозначающие направление перемещения; кроме того, курсор можно также перемещать и другими способами. Текст в окне обычно устанавливается так, что курсор находится во второй трети экрана терминала пользователя по вертикали. Конечно, если курсор находится на какой-либо из первых или последних строк программы пользователя, то на экране видеотерминала он может располагаться в его верхней или нижней части. На рис. Д.1 показано, как могло бы выглядеть изображение на экране видеотерминала при редактировании текста. В показанной на рисунке программе содержатся некоторые умышленно допущенные ошибки, которые должны быть исправлены.
MSG1: .ASCID "THIS ARE SOME MESSAGE" MSG2: .ASCID "NOW IS TIME" MSG3: .ASCID "FOR ALL MEN TO TO COME" MSG4: .ASCID "COME TWO THE AID OF HIS" MSG5: .ASCID "PARTY" ; ВЫШЕ ПРИВЕДЕНЫ НЕКОТОРЫЕ ПРОИЗВОЛЬНЫЕ СООБЩЕНИЯ .ENTRY START MOVAB MSG1,R0 JSB PMESG MOVAB MSG2,R0 JSB PMESG MOVAB MSG3,R0 JSB PMESG MOVAB MSG5,R0 JSB PMESG $EXIT_S ; НИЖЕ РАСПОЛОЖЕНА ПОДПРОГРАММА ПЕЧАТИ СООБЩЕНИЙ PMESG: TSTB OPENFLAG ^----- мерцающая отметка курсора BNEQ 10$ JSB OPENFILE DECB OPENFLAG 10$: MOVW 2(R0),FILEFAB+FAB$W_RSZ
Рис. Д.1. Фрагмент текста программы, отображённый на экране видеотерминала
Для того чтобы исправить ошибки во фрагменте программы, показанном на рис. Д.1, в первую очередь необходимо прочитать её текст и обнаружить ошибки. Первая ошибка находится во второй строке:
MSG2: .ASCID "NOW IS TIME"
Должно быть
MSG2: .ASCID "NOW IS THE TIME"
Чтобы сделать исправление, надо вставить слово THE после слова IS. Для этого сначала надо переместить курсор в нужное место, что может быть выполнено с помощью клавиш управления курсором. Имеются четыре клавиши с нанесёнными на них стрелками, стрелки указывают направление перемещения курсора - влево, вправо, вверх, вниз. Так как курсор расположен в нижней части экрана, то необходимо 15 раз нажать на клавишу со стрелкой, направленной вверх, чтобы переместить курсор на вторую строку (см. рис. Д.1). Отметим, что во время перемещения курсора вверх текст программы будет перемещаться на экране так, чтобы по возможности положение курсора сохранялось как можно ближе к нижней части второй трети экрана. Поэтому вверху экрана будут появляться новые строки текста программы, а строки внизу экрана будут исчезать. Это называется перемещением или "прокруткой" (scrolling) вверх по направлению к началу текста. Если на экране видеотерминала появляется первая строка текста, то "прокрутка" прекращается, и курсор будет перемещаться в верхнюю часть экрана выше той части, где сохранялось его положение при "прокрутке". Отметим также, что некоторые строки текста по своей длине не достигают горизонтальной позиции курсора в строке, на которой он находился первоначально. В результате этого при перемещении курсор будет изменять свою горизонтальную позицию в строке, стараясь сохранить первоначальную горизонтальную позицию, но не выходя за пределы какой-либо строки текста.
После того как 15 раз была нажата клавиша со стрелкой, направленной вверх, курсор будет находиться в правой части второй строки текста, но не в нужном месте. Отметка курсора будет мерцать над буквой Е в слове TIME, что выглядит следующим образом:
MSG2: .ASCID "NOW IS TIME" ^---- курсор
После трёхкратного нажатия на клавишу со стрелкой, направленной влево, отметка курсора появится над буквой Т в слове TIME:
MSG2: .ASCID "NOW IS TIME" ^------- курсор
Теперь всё готово для вставки символов. Вводимые с клавиатуры терминала символы будут вставляться в текст перед тем символом, на котором находится курсор. На рис. Д.2 показано, как будет выглядеть строка на экране терминала каждый раз после ввода очередного символа, если вводятся символы Т, Н, Е и пробел. Обратите внимание на то, как перемещается курсор при вводе каждого символа, что отображено на рис. Д.2. Отметьте также, что пробелы и табуляция занимают очень большую часть текста и должны вставляться на соответствующие места.
Следующая ошибка находится в строке
MSG3: .ASCID "FOR ALL MEN TO TO СОМЕ"
Во-первых, в данной строке пропущено слово GOOD; должно быть ...ALL GOOD MEN... Курсор необходимо снова переместить, на этот раз с помощью клавиши со стрелкой, направленной вниз, и клавиши со стрелкой, направленной влево. После чего может быть вставлено слово GOOD таким же способом, как это делалось в предыдущем примере со словом THE.
MSG2: .ASCID "NOW IS TIME" ^----------- курсор Введено Т MSG2: .ASCID "NOW IS TTIME" ^---------- курсор Введено Н MSG2: .ASCID "NOW IS THTIME" ^--------- курсор Введено E MSG2: .ASCID "NOW IS THETIME" ^-------- курсор Введён "пробел" MSG2: .ASCID "NOW IS THE TIME" ^------- курсор
Рис. Д.2. Вставка символов в текст
Однако в строке осталась ещё одна ошибка - слово TO появляется в ней дважды. Требуется удалить одно из этих слов. Для удаления текста сначала необходимо переместить курсор так, чтобы он оказался справа от удаляемого символа, а затем удалить расположенные от курсора слева символы, нажав на клавишу удаления. Удаление выполняется так же, как при работе без редактора текста, и с помощью той же клавиши. Основное отличие состоит в том, что при работе с редактором EDT символы можно удалять в любом месте строки, устанавливая курсор на нужную позицию. В данном случае для перемещения курсора на следующую позицию после буквы О в первом слове TO может использоваться клавиша со стрелкой, направленной вправо. Можно удалять любое из двух слов TO; это не имеет никакого значения, за исключением того, что первое слово TO расположено ближе и требуется меньше нажатий на клавишу управления курсором, чтобы переместить его на нужную позицию. На рис. Д.3 показано, как могла бы выглядеть строка на экране терминала после каждого удаления. Отметим, что клавиша удаления нажимается три раза. Дополнительное третье нажатие клавиши нужно для удаления лишнего пробела, отделяющего слово TO.
MSG3: .ASCID "FOR ALL GOOD MEN TO TO COME" ^---------- курсор Удаление MSG3: .ASCID "FOR ALL GOOD MEN T TO COME" ^----------- курсор Удаление MSG3: .ASCID "FOR ALL GOOD MEN TO COME" ^------------ курсор Удаление MSG3: .ASCID "FOR ALL GOOD MEN TO COME" ^------------- курсор
Рис. Д.3. Удаление текста
Полученных сведений достаточно, чтобы читатель смог легко устранить оставшиеся ошибки, так как всё редактирование сводится к нахождению нужного места в тексте и вставке или удалению символов. Тем не менее если бы всё редактирование с помощью редактора EDT ограничивалось использованием пяти описанных выше управляющих клавиш (четыре клавиши управления курсором и клавиша удаления), то, чтобы отредактировать любой текст большого объёма, очень скоро можно было бы сбить пальцы до костей, нажимая эти клавиши. С помощью названных клавиш редактирование выполняется над каждым символом в отдельности. Но имеются ещё и другие управляющие клавиши, с помощью которых можно выполнять функции редактирования над группами символов, например такие, как удаление слова, удаление строки или удаление параграфа целиком. В следующем разделе будут описываться некоторые команды редактирования, позволяющие выполнять подобные функции; другие команды будут оставлены читателю для самостоятельного изучения.
Использование вспомогательной клавиатуры является ещё одним средством редактирования программы. Команды редактора EDT можно вводить с помощью вспомогательной числовой клавиатуры, расположенной в правой части основной клавиатуры. Числовые клавиатуры видеотерминалов работают в одном из двух режимов. Первый - режим обычной работы, в котором клавиши числовой клавиатуры просто дублируют возможность ввода чисел с основной клавиатуры. В тех случаях, когда терминал главным образом применяется для ввода числовых данных, использование клавиш числовой клавиатуры может повысить скорость ввода данных, так как расположение клавиш в основном такое же, как на многих калькуляторах. Второй режим работы является режимом специальных символов, где при нажатии клавиши генерируется свой собственный символьный код, который не похож на код, генерируемый при нажатии клавиш основной клавиатуры[3]. Во время работы с экранным редактором EDT вспомогательная клавиатура будет находиться в режиме ввода специальных символов.
Рис. Д.4. Функциональное назначение клавиш вспомогательной клавиатуры терминала VT52
В связи с тем, что функций редактирования больше, чем клавиш на вспомогательной клавиатуре, большинство клавиш имеет две функции: основную и дополнительную. Для выполнения основной функции надо просто нажать на клавишу. Например, основной функцией клавиши с цифрой 2 является перемещение курсора в конец строки. Если пользоваться этой клавишей, то можно избежать многократного нажатия клавиши со стрелкой, направленной вправо. Дополнительная функция клавиш с цифрой 2 - удаление всех символов, начиная от позиции курсора до конца строки текста. (Действие этой функции противоположно действию функции CTRL/U, применяемой в обычном режиме работы для удаления всех символов, находящихся слева от курсора.) Для выполнения дополнительной функции клавиши с цифрой 2 надо предварительно нажать и отпустить клавишу, обозначенную на рисунках с надписью GOLD. На терминалах серий VT100/VT200 клавиша GOLD имеет маркировку PF1, а на терминале типа VT52 она окрашена в голубой цвет. В любом случае клавиша GOLD располагается в левом верхнем углу числовой клавиатуры. На рис. Д.4 и рис. Д.5 показано расположение клавиш вспомогательной клавиатуры терминалов типа VT52 и серий VT100/VT200. Возможно даже заказать клавиши с маркировкой названий функций редактора EDT. Но если не посчастливилось иметь клавиши с такой маркировкой, то можно нажать специальную клавишу с функцией HELP (помощь), которая находится справа от клавиши GOLD. На терминале типа VT52 она окрашена в красный цвет, а на терминалах серий VT100/VT200 клавиша имеет маркировку PF2. При нажатии на эту клавишу текст программы исчезнет с экрана. (Не стоит беспокоиться - текст сохраняется в памяти ЭВМ.) После этого на экране появляется точная копия рис. Д.4 или рис. Д.5, что помогает найти соответствующую функцию.
Рис. Д.5. Функциональное
назначение |
В данном разделе не ставится цель дать полное описание функций редактирования, вызываемых с помощью вспомогательной клавиатуры. Лучший способ изучить редактор текста - это попробовать выполнить различные функции и посмотреть, что при этом произойдёт. На вычислительных системах VAX файлы достаточно хорошо резервируются, так что эксперименты можно проводить без особого риска. Поэтому каждая функция вспомогательной клавиатуры будет описываться несколькими предложениями. Более подробную информацию можно получить, воспользовавшись командой HELP. В связи с тем, что вспомогательная клавиатура терминалов типа VT52 отличается от вспомогательной клавиатуры терминалов серий VT100/VT200, функции будут описываться без указания стандартной маркировки клавиш. На самом деле, так как на вспомогательной клавиатуре терминала типа VT52 меньше клавиш, некоторые клавиши, соответствующие функциям на этой клавиатуре отсутствуют. Клавиши, соответствующие описываемым функциям, можно найти по рис. Д.4 или Д.5. На рисунках верхняя надпись на клавишах обозначает основную функцию, нижняя - дополнительную функцию, для вызова которой требуется применение клавиши GOLD.
Функция |
Результат действия |
---|---|
GOLD |
Устанавливается обращение к дополнительной функции |
HELP |
На экран терминала выводится схема вспомогательной клавиатуры, а также другие сообщения, помогающие при работе с редактором EDT |
FIND NEXT |
Выполняется в выбранном направлении поиск по тексту следующего появления строки, соответствующей образцу |
FIND |
Осуществляется ввод строки образца и выполняется поиск по тексту |
DELETE LINE |
Удаляется строка справа от курсора |
UNDELETE LINE |
Восстанавливается последняя удалённая строка. Это может использоваться в случае непредумышленного удаления строки. Кроме того, может применяться для копирования строки - удаляя, а затем несколько раз восстанавливая строку |
PAGE |
Курсор перемещается на одну страницу в выбранном направлении, т.е. до следующего символа перевода страницы |
COMMAND |
Позволяет вводить обычные символьные команды редактора текста |
SECTION |
Курсор перемещается на 16 строк в выбранном направлении |
FILL |
При подготовке текста выравнивается длина строк. Обычно не используется при программировании |
APPEND |
Помеченный текст добавляется к тексту, находящемуся во вспомогательном буфере |
REPLACE |
Выбранная часть текста замещается содержимым вспомогательного буфера |
DELETE WORD |
Удаляется одно слово. Словом считается текст от позиции курсора до следующего пробела, символа табуляции или конца строки |
UNDELETE WORD |
Восстанавливается последнее удалённое слово |
ADVANCE |
Устанавливается направление перемещения вперёд по тексту. Используется при перемещении по страницам, строкам, словам, символам, а также для функций поиска |
BOTTOM |
Курсор перемещается на конец текста |
BACKUP |
Выбирается направление перемещения назад по тексту. Используется при перемещении по страницам, строкам, словам, символам, а также для функций поиска |
TOP |
Курсор перемещается на начало текста |
CUT |
Отмеченный текст помещается во вспомогательный буфер, после чего этот текст удаляется с экрана |
PASTE |
Содержимое вспомогательного буфера копируется в основной текст, начиная с позиции курсора |
DELETE CHARACTER |
Удаляется символ, на котором находится отметка курсора. Действие отличается от действия клавиши удаления, когда удаляется символ слева от курсора |
UNDELETE CHARACTER |
Восстанавливается последний удалённый символ |
WORD |
Курсор перемещается на одно слово в выбранном направлении до следующего пробела, символа табуляции или конца строки |
CHANGE CASE |
В тексте происходит замена прописных букв строчными и наоборот |
END OF LINE |
Курсор перемещается в конец текущей или предыдущей строки в зависимости от выбранного режима (ADVANCE или BACKUP) |
DELETE TO END OF LINE |
Удаляются все символы справа, начиная от отметки курсора и до конца строки. При этом символы "Возврат каретки" и "Перевод строки", находящиеся в конце строки, не удаляются, что является единственным различием между функциями DELETE TO END OF LINE и DELETE LINE |
MOVE CHARACTER |
Курсор перемещается на одну позицию в заданном направлении |
SPECIAL CHARACTER INSERT |
Позволяет вставлять в текст управляющие символы |
ENTER |
Завершение ввода символьной команды |
SUBSTITUTE |
Найденная по образцу символьная строка заменяется содержимым вспомогательного буфера, после чего автоматически выполняется функция FIND NEXT (применяемая после функции FIND) |
BEGINNING OF LINE |
Курсор перемещается на начало следующей или предыдущей строки, в зависимости от выбранного направления |
OPEN LINE |
В текст вставляется пустая строка, а курсор помещается в её начало. Команда облегчает работу, если надо вставить новую, строку в середину текста |
SELECT |
Помечается начало или конец выбираемого фрагмента текста, на котором находится отметка курсора. После этого курсор надо переместить на другой конец фрагмента. Выбранный фрагмент текста может быть помещён во вспомогательный буфер. На терминалах серий VT100/VT200 выбранный текст выделяется инверсным изображением |
RESET |
Отменяется выбор помеченного фрагмента текста |
Двумя наиболее важными функциями являются FIND и FIND NEXT. В больших программах нахождение ошибок может стать достаточно утомительным занятием, если при поиске ошибки перемещать курсор с помощью клавиш управления курсором. Лучше осуществить с помощью редактора текста поиск некоторой строки символов, определяющей место в тексте, которое необходимо отредактировать. Например, предположим, что ассемблер выдал сообщение об использовании в программе неопределённого кода операции MOVX. Для исправления ошибки можно вызвать редактор текста и воспользоваться функцией поиска FIND. На терминалах серий VT100/VT200 функция FIND выполняется при последовательном нажатии клавиш с маркировкой PF1 и PF3; на терминале типа VT52 следует нажать клавишу голубого цвета и клавишу с цифрой 8. После нажатия клавиш внизу экрана терминала появится запрос Search for: (искать). В ответ на запрос с клавиатуры терминала вводится строка, которую желательно найти; в данном случае вводится MOVX. Затем в зависимости от того, в каком направлении желательно осуществить поиск - к концу файла или к его началу, надо нажать на одну из двух клавиш направления перемещения - BOTTOM или BACKUP (клавиши с цифрой 4 или 5 на терминале любого типа). Редактор текста будет выполнять поиск до тех пор, пока не найдёт MOVX. После этого можно с помощью клавиш управления курсором установить курсор над буквой X и удалить её, а затем напечатать на её месте буквы L, W или В или что-нибудь подобное. Если такая ошибка появлялась несколько раз, то поиск местонахождения последующих кодов MOVX можно выполнить, используя функцию FIND NEXT (клавиша PF3 на терминалах VT100/VT200 или клавиша с цифрой 8 на терминале VT52).
Ещё одну важную операцию представляет собой ввод обычных символьных команд редактирования. Хотя имеется целый ряд таких команд, только одна из них - команда EXIT является критической. Она сообщает редактору текста EDT, что сеанс редактирования закончен и новый файл должен быть сохранён. Никакие из проведённых изменений не будут запомнены до тех пор, пока не выполнится эта команда. Для перехода в командный режим надо нажать последовательно клавишу GOLD и клавишу с цифрой 7 на терминале любого типа. Внизу экрана появится запрос Command (команда). После того как пользователем будет напечатана команда EXIT и нажата клавиша ENTER, редактор EDT завершит работу и произойдёт возврат к диалогу с ОС VAX/VMS. Если теперь ввести команду операционной системы DIRECTORY, можно увидеть, что образован новый файл с номером версии на единицу больше, чем последняя версия этого файла. Например, если файл редактировался 5 раз, то в каталоге находятся файлы
. . . PROGRAM.MAR;3 PROGRAM.MAR;4 PROGRAM.MAR;5
Чтобы избавиться от старых версий файла, можно воспользоваться командой PURGE, описанной в приложении Г. Отредактированная информация будет содержаться в файле PROGRAM.MAR;5. Если при редактировании случайно была испорчена информация, то она может быть восстановлена, так как файл PROGRAM.MAR;4 содержит информацию в том виде, в котором она находилась до редактирования.
Если вам не посчастливилось приобрести терминалы типа VT52 или VT100/VT200 либо совместимые с ними терминалы, то редактирование усложняется. Предположим, что редактирование осуществляется на терминале типа телетайп или, иначе, на печатающем терминале. На телетайпе нельзя сразу увидеть происходящие изменения текста, так как что-либо однажды напечатанное печатается на бумаге и не может изменяться. Вследствие этого редактирование с помощью редактора EDT должно выполняться в построчном режиме. Хотя имеется значительное число команд редактора EDT, облегчающих построчное редактирование, тем не менее возможно отредактировать текст, используя только несколько основных команд, описанных в данном разделе.
Для того чтобы начать редактирование файла, вводится следующая команда ОС VAX/VMS[4]:
EDIT/EDT PROGRAM.MAR
где PROGRAM.MAR - имя файла, где содержится программа. Если файл с таким именем редактируется впервые, то появится сообщение Input file does not exist (файл ввода не существует), после которого следует символ [EOB], а строкой ниже - символ *. Это сообщение похоже на сообщение об ошибке, а на самом деле - просто предупреждение о том, что создаётся новый файл. Строка
[EOB]
означает, что в файле содержится только признак конца буфера - End Of Buffer.
Если файл используется не в первый раз, то сообщение не появится, так как файл ввода уже будет существовать. Первая строка программы будет отображена на терминале как строка с номером 1, Например:
1 .TITLE MY PROGRAM *
Снова отметим наличие символа *. Он является приглашением, сообщающим, что редактор EDT ожидает ввод команд редактирования.
Ниже приводится основной набор команд редактора EDT, с помощью которого можно начать редактирование. Для более эффективного использования редактора текста могут быть также изучены другие команды и разновидности приведённых команд.
INSERT (вставить). Команда INSERT может использоваться при создании нового файла или при добавлении новых строк к программе. После приглашения к вводу (символа *) надо напечатать команду INSERT[5], ввод которой завершается нажатием на клавишу RETURN. В ответ на команду редактор EDT установит новую пустую строку, сделав отступ от начала этой строки. Такое действие редактора является приглашением к началу ввода текста. Всё, что будет затем введено, вставится в текст в том виде, в котором вводилось. Отметим, что каждая строка будет начинаться с отступа. Отступы не являются частью текста - это просто подсказка, что ЭВМ продолжает работать. Когда всё, что было желательно, вставлено в текст, надо нажать комбинацию клавиш CTRL/Z. (Одновременно нажимаются клавиша CTRL и клавиша с буквой Z.) Редактор EDT напечатает символ *, который свидетельствует о том, что редактор снова находится в командном режиме. В общем случае приглашением к вводу для командного режима является символ *, а для режима вставки - отступ от начала строки.
TYPE (напечатать). Обычно хочется увидеть, как выглядит содержимое файла после вставки текста или каких-либо других изменений. Это можно сделать с помощью команды TYPE. В команде TYPE должен быть указан код интервала, определяющий, какие строки надо распечатать. Если интервал не указан, то напечатается текущая строка. Текущей является строка, готовая для выполнения редактирования. Всякий раз при вставке текста текст будет располагаться перед текущей строкой.
Если надо напечатать всю программу, то в команде может быть указан интервал BEGIN:END (начало:конец):
TYPE BEGIN:END
Отметим, что при печати строк слева добавляется номер строки. Он не является частью текста и используется только в целях редактирования. Например, если строки вставлялись в пустой файл, как это делается при создании файла, то по команде TYPE BEGIN:END выводится следующее:
1 .TITLE PROGRAM 2 .ASCII "ЗДЕСЬ ПРОСТО" 3 .ASCII "НЕСКОЛЬКО СТРОЧЕК" [EOB] *
Интервалы можно задать также с помощью номеров строк. Например, по команде TYPE 1:2 напечатаются строки 1 и 2, а указание единственного номера строки вызовет печать одной, строки - TYPE 2.
Ещё одно замечание касается того, что после выполнения команды ТУРЕ текущей строкой становится первая из напечатанных строк. Таким образом, по команде ТУРЕ 2:3 строка 2 будет установлена текущей. Это означает, что вставляемый по команде INSERT текст будет теперь помещён между строками 1 и 2. Если вставки делаются между такими двумя последовательно перенумерованными строками, то редактор EDT присвоит строкам дробные десятичные номера, т.е. 1.1, 1.2, 1.3 и т. д. Дробные номера строк могут также использоваться для указания интервала, как и целые номера. Например, по команде
TYPE 1.2:1.3
можно напечатать все строки, имеющие номера от 1.2 до 1.3. После этого строка с номером 1,2 может стать текущей. Поэтому вставляемым между строками с номерами 1.1 и 1.2 новым строкам могут быть присвоены номера 1.11, 1.12, 1.13 и т. д.
Символ "точка" добавляет ещё одно полезное свойство - является ссылкой на текущую строку и может использоваться в выражениях. Так, выражение .-3 обозначает третью строку перед текущей, а выражение .+3 обозначает третью строку после текущей. По команде ТУРЕ .-3,.+3 будут напечатаны третья строка перед и третья после текущей строки.
FIND (найти). Для того чтобы воспользоваться командой INSERT, строка, перед которой нужно вставить текст, должна быть сделана текущей строкой. Иначе говоря, если текст требуется вставить между строками 1.11 и 1.12, то текущей строкой должна быть строка с номером 1.12. Это может быть выполнено по команде FIND.
В команде FIND указывается обозначение строки, идентифицирующее искомую строку. Допустимо указывать любое из обозначений строк, описанных в данном разделе для команды ТУРЕ. Например, приведённые ниже команды позволяют найти текущую строку по её описанию.
Команда |
Текущая строка |
---|---|
FIND 1.12 |
Строка с номером 1.12 |
FIND BEGIN |
Первая строка в файле |
FIND END |
Строка, содержащая символ [EOB] |
FIND .+4 |
Четвёртая строка после текущей, установленной на момент ввода команды |
Кроме того, в качестве указателя строки может использоваться заключённая в кавычки, символьная строка-образец. В этом случае редактор EDT будет искать первую строку, содержащую указанную строку-образец. Например, по команде FIND ".BLKL" редактор EDT будет осуществлять поиск по направлению к концу файла (вперёд) первой строки после текущей, содержащей символьную строку .BLKL. Иногда полезно выполнять поиск в обратном направлении, т.е. искать строку, расположенную ближе к началу файла, чем текущая. При поиске в обратном направлении заключённой в кавычки строке должен предшествовать знак "минус", как, например, в команде FIND -".BLKL".
При поиске важно подобрать достаточно длинную строку-образец, однозначно определяющую искомую строку, иначе можно найти совсем не то, что хотелось бы. В действительности строка ".BLKL" как образец не очень подходит, так как в программе может оказаться много строк, содержащих символьную строку ".BLKL". Было бы лучше задать следующий образец:
FIND "BLKL tab 23"
Здесь tab обозначает символ табуляции, который может присутствовать в заключённой в кавычки строке так же, как и любой другой символ, используемый в программе.
После выполнения команды FIND обычно рекомендуется напечатать текущую строку. Это может быть сделано по команде TYPE без указаний в ней интервала распечатываемых строк. Последовательность команд могла бы выглядеть так[6]:
FIND "BLKL tab 23"
TYPE
В результате выполнения этих команд будет напечатана найденная строка.
DELETE (удалить). Строки программы, в которых содержатся ошибки, нужно удалить из программы, что может быть сделано с помощью команды DELETE. В команде DELETE указывается интервал номеров строк так же, как и в команде TYPE. Все строки, попадающие в заданный интервал, будут удалены. Если по неосторожности будут удалены лишние строки, то их придётся вводить снова. Поэтому перед удалением строк обычно рекомендуется напечатать строки, попадающие в заданный интервал. Например, можно использовать команды
ТУРЕ 1.2:1.22 DELETE 1.2:1.22
Если в команде DELETE указать интервал строк точно так же, как и в команде TYPE, то будет точно известно, какие строки удалялись. К тому же возможно, чтобы редактор EDT запрашивал подтверждение при удалении каждой строки с помощью команды DELETE/VERIFY.
SUBSTITUTE (заменить). Если в строке имеется ошибка, то её можно устранить обычным способом - удалить эту строку, а затем вставить исправленную. Однако, если есть длинная строка только с одной небольшой ошибкой, существует лучший способ исправления. Предположим, что строка, содержащая ошибку, имеет вид
MESG: .ASCII " ЭТО БОЛЬШОЕ СООБЩЕНИЕ"
В этой строке вместо директивы .ASCII должна быть директива .ASCID. Команда SUBSTITUTE сообщает редактору EDT точно то же самое. После применения для нахождения строки команды FIND вводится команда
SUBSTITUTE /.ASCII/.ASCID/
Отметим, что строка с ошибкой указывается первой, а правильная строка - второй. Как и в случае команды FIND важно, чтобы строка-образец была выбрана достаточно длинной для её однозначного определения. Команда SUBSTITUTE /II/ID/ привела бы к желаемому результату, но по команде SUBSTITUTE /I/D/ могла произойти ошибочная замена не того символа I, который нужен, что дало бы строку .ASCDI.
RESEQUENCE (перенумеровать). При выполнении вставок появляется большое число строк с дробными номерами. Это может вносить путаницу при нахождении строк. По команде RESEQUENCED все строки будут перенумерованы и им будут присвоены целые номера, начиная с номера 1. Рекомендуется после перенумерации распечатать всю программу целиком, чтобы можно было найти все строки. Перенумерация выполняется автоматически в начале редактирования файла, если только не приняты специальные меры для сохранения номеров строк.
EXIT (выйти). После окончания редактирования должна быть введена команда EXIT. Если работа с редактором текста завершается другим способом, например нажатием комбинации клавиш CTRL/Y, то можно потерять всё, что было отредактировано.
Хотя редактор EDT кажется сложным, работать с ним легко.
< НАЗАД | ОГЛАВЛЕНИЕ | ВПЕРЁД > |
[1] Для того чтобы редактор EDT мог сохранять на экране видеотерминала текущее состояние текста при редактировании, ЭВМ постоянно перепечатывает на экране строки или части строк. Это означает, что если терминал работает с низкой скоростью передачи данных, то производительность пользователя при редактировании значительно снижается. Минимальная рекомендуемая скорость передачи данных для видеотерминала составляет 1200 Бод (120 символов в секунду). Тем не менее в экранном режиме редактора EDT можно работать и при скорости передачи данных 300 Бод, если уменьшить количество строк текста, одновременно отображаемых на экране. Это выполняется с помощью команд SET LINE 8 и SET CURSOR 4:6, которые вводятся перед командой CHANGE.
[2] Ключ /EDT не требуется, если в вычислительной системе, в которой работает пользователь, по умолчанию установлен вызов редактора EDT.
[3] В режиме специальных символов при нажатии клавиш вспомогательной клавиатуры передаётся последовательность символов, начинающаяся с управляющего символа ESC кода ASCII. Например, нажатие клавиши с цифрой 1 на терминале типа VT52 вызовет передачу последовательности символов <ESC>?q, а нажатие такой же клавиши на терминале серии VT100 или VT200 - последовательность <ESC>0q.
[4] Ключ /EDT не требуется, если в операционной системе по умолчанию вызывается редактор EDT.
[5] Все команды и ключевые параметры, описанные в данном разделе (кроме команд EXIT и RESEQUENCE), могут быть сокращены до одного символа. Таким образом, команда INSERT может вводиться как I. Аналогично команды TYPE, FIND, DELETE и SUBSTITUTE, а также ключевые параметры BEGIN и END могут быть сокращены как Т, F, D, S, В и Е.
[6] Число команд можно сократить, поместив заключённую в кавычки строку непосредственно в команду TYPE, как TYPE ".BLKL tab 23". В таком случае команда FIND будет не нужна.