чения всех регистров нулевые. Если буква L заг- лавная, регистр "x" рассматривается как стек, и его верхнее значение помещается в основной стек; d Верхнее значение стека удваивается; p Верхнее значение стека распечатывается. Верхнее значение остается неизменным. "P" рассматривает вершину стека как строку символов КОИ-8, удаляет и распечатывает эту строку; f Распечатываются все значения, находящиеся в сте- ке и в регистрах; q Производится выход из программы. При выполнении строки уровень рекурсии уменьшается на два. Если буква Q заглавная, из стека извлекается верхнее значение и уровень выполнения строки Изменяется на это значение; 102 АПК 00210-01 33 01-4 x Рассматривает верхний элемент стека как строку символов и выполняет ее как строку команд dc; X Заменяет число в вершине стека на его масштабный множитель; [...] Помещает строку символов КОИ-8 в скобках в вер- шину стека; <x >x =x Верхние два элемента стека извлекаются и сравни- ваются. Если они удовлетворяют указанному отно- шению, выполняется регистр "x"; v Заменяет верхний элемент стека его квадратным корнем. Существующая дробная часть параметра учитывается, иначе масштабный множитель игнори- руется; ! Остальная часть строки рассматривается как ко- манда системы ДЕМОС; c Из стека извлекаются все значения; i Верхнее значение стека извлекается и использует- ся в качестве основания чисел для последующего ввода. Заглавное I помещает в вершину стека входное основание; o Верхнее значение стека извлекается и использует- ся в качестве основания чисел для последующего вывода. Заглавное O помещает в вершину стека вы- 103 АПК 00210-01 33 01-4 ходное основание; k Извлекается верхнее значение стека, которое ис- пользуется в качестве неотрицательного масштаб- ного множителя: соответствующее количество пози- ций печатается при выводе и обрабатывается при умножении, делении и возведении в степень. Вза- имовлияние масштабного множителя, входного осно- вания и выходного основания будут иметь смысл, если все они изменяются одновременно; z Уровень стека помещается в стек. Заглавное Z за- меняет число в вершине стека его длиной; ? Из источника ввода (обычно терминал) вводится и выполняется входная строка; ; : Используется командой bc для операций с массива- ми. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: bc - препроцессор для dc, обеспечивающий инфиксное представление и напоминающий язык Си, синтаксис кото- рого реализует функции и удобные структуры управления для программ. Имеется отдельное описание dc. ДИАГНОСТИКА: "x is unimplemented" ("x не помещается"), где x - восьмеричное число. 104 АПК 00210-01 33 01-4 "stack empty" ("стек пуст"), если в стеке недостаточно элементов для выполнения требуемых функций. "out of space" ("не хватает места"), когда исчерпан список свободного пространства (слишком много цифр). "out of headers" ("не хватает заголовков"), когда од- новременно обрабатывается слишком много чисел. "out of pushdown" ("исчерпан стек"), если в стеке слишком много элементов. "Nesting Depth" ("глубина вложения"), если слишком много уровней вложенного выполнения. 105 АПК 00210-01 33 01-4 ИМЯ: dcon - отладчик ФОРМАТ: dcon файл [ имя списка ] ОПИСАНИЕ: Dcon является отладчиком ДЕМОС. Команда позволяет как проверять содержимое файлов, так и динамически тести- ровать программу. Обычно, когда используется операнд "файл", проверяется файл или программа (выходной фор- мати производится дамп памяти с ошибкой или распечатка нужного файла (находящегося, например на диске). "Имя списка" - используется, если файл содержит сим- вольную таблицу. Если этот операнд отсутствует, табли- ца символов выбирается из самого файла, имя которого использовано в команде. Если нет возможности найти список имен, dcon может быть использована, но уже без возможности работы с символьными данными. Далее приводится краткое описание вариантов использо- вания команд dcon. Большинство команд dcon включают адреса операндов и режимы печати. Адреса выражений, которые могут быть использованы, приведены ниже: source_name адрес имени-источника (source_name), определен- ного в программе; ;r0...;r15 106 АПК 00210-01 33 01-4 просмотр регистров с 0 по 15; ;fr0...;fr6 просмотр содержимого регистров с плавающей точкой 0,2,4,6; local_name имя отладчика, начинается с "#"; number восьмеричный, десятичный, шестнадцатеричный номер использования "С" вводного формата (Оn, n, Oxn); . размещение наиболее "свежих" результатов тести- рования; .. размещение текущей команды; $ конец файла; expr обычное выражение, исключающее использование "//" в качестве разделителя; name=expr об'ем памяти для expr; function:variable относится к локальной переменной (variable) в функции (function); *expr косвенное выражение через expr; 107 АПК 00210-01 33 01-4 enter(name) начало имени функции; exit(name) конец имени функции; Содержимое адресов, представленных в выражениях, выво- дится согласно следующим режимам. Режим вывода специ- фицируется двумя параметрами: длиной символов и формой представления. Длины могут быть представлены в виде: -b для адресуемого байта; -h для адресуемого полуслова; -w для адресуемого слова; -l для адресуемого двойного слова; -a для адреса самого выражения. Режимы вывода: -d для десятичных данных; -o для восьмеричных данных; -x для шестнадцатеричных данных; -c для символьных данных; -s для строки символов (не указателей); 108 АПК 00210-01 33 01-4 -i для мнемоники команды; -ix для режимов i и x; -v для символов, значение которых связано с адре- сом. Могут быть также следующие варианты: (new-line) выводит ".+длина печати"; expr1,expr2[print-option] печатает размещение выражений от expr1 до expr2; +expr[print-option] выводит ".+выражение"; -expr[print-option] выводит ".-выражение"; ?[print-option] выводит "след" стока; *[print-option] выводит '*'; ;psw[print-option] выводит psw; !ДЕМОС-command посылает команды ДЕМОС интертритатору shell; {command_list} 109 АПК 00210-01 33 01-4 список команд; ;if(expr)command если выражение имеет ненулевое значение, command выполняется; ;bp expr[command_command][/*comment] точка прерывания в выражении; ;macro name(arg)command определяет локальное имя макроопределения, кото- рое, когда используется, подставляет значение аргумента (arg); ;go [arg1 arg2...] начинает выполнение программы, используя указан- ные аргументы; ;cont [expr] продолжает выполнение выражения (expr); ;brks выводит текущие точки прерывания; ;clr [expr] расставляет точки прерывания в выражении; ;quit эквивалентно ЕОТ (выйти из отладчика); ;do file взять команды из файла "file"; ;out [file] начать косвенный вывод файла "file"; 110 АПК 00210-01 33 01-4 ;save [expr][/*comment] осуществляет непрерывное изменениe выражения. Если выражение не специфицировано, все изменения происходят непрерывно. Изменения, дата, время, имя модификации записываются в файл file.cmt. ;rst [expr] сохраняет значение в expr относительно его зна- чений на входе команды dcon. Если expr не указа- но, сохраняется размещение изменений; ;copy file подобно ;save исключает сохранение изменяемого файла в file; ;ss [n[command]] один шаг программы, где "n" -номер команды, после которой необходимо остановить программу. 111 АПК 00210-01 33 01-4 ИМЯ: dd - преобразовать и скопировать файл. ФОРМАТ: dd [ключ = значение] ... ОПИСАНИЕ: Команда dd копирует заданный входной файл в заданный выходной файл с возможными преобразованиями. По умол- чанию используются стандартный файл ввода и стан- дартный файл вывода. Может быть задан размер блока при вводе и выводе, чтобы использовать преимущества прямо- го физического ввода-вывода. Параметр значение if= Имя входного файла (по умолчанию - стандартный файл ввода). of= Имя выходного файла (по умолчанию - стандартный файл вывода). ibs=n Устанавливает размер блока при вводе равным n байт . obs=n Устанавливает размер блока при выводе равным n байт . bs=n Устанавливает размер блока как для ввода, так и 112 АПК 00210-01 33 01-4 для вывода, отменяя ibs и obs. Особенно эффекти- вен, если не задано преобразование (не требуется создание копии). cbs=n Размер буфера преобразования. skip=n Пропускает n входных записей перед началом копиро- вания. files=n Пропускает n входных файлов перед началом копиро- вания. seek=n Пропускает n записей от начала выходного файла перед копированием. count=n Копирует только n входных записей. conv=ascii Выполняет преобразование из кода ДКОИ в код КОИ-8. conv=ebcdic Выполняет преобразование из кода КОИ-8 в код ДКОИ. conv=ibm Несколько отличающееся преобразование КОИ-8 в ДКОИ. 113 АПК 00210-01 33 01-4 conv=lcase Преобразует алфавитные символы в нижний регистр. conv=ucase Преобразует алфавитные символы в верхний регистр. conv=swab Переставляет каждую пару байтов. conv=noerror Не прекращает обработку при обнаружении ошибки чтения. conv=sync Дополняет каждую входную запись до размера ibs. conv=...,... Несколько преобразований, разделенных запятой. Там, где определяются размеры, предполагается указание числа байтов. Число может оканчиваться символами "k", "b" или "w", что означает умножение на 1024,4096 или 2 соответственно.Для обозначения произведения пара чисел может разделяться символом "x". Параметр "cbs=n" используется только тогда, когда за- даны преобразования ascii или ebcdic. В первом случае cbs символов помещаются в буфер преобразования, преоб- разуются в код КОИ-8 и перед помещением этой строки в выходной файл заключительные пробелы отбрасываются и добавляется символ новой строки. Во втором случае сим- 114 АПК 00210-01 33 01-4 волы КОИ-8 считываются в буфер преобразования, преоб- разуются в код ДКОИ и дополняются пробелами, чтобы по- лучить выходную запись размером cbs. После завершения dd сообщает количество полных и не- полных введенных и выведенных блоков. ПРИМЕР: Следующая команда переписывает ленту ДКОИ, которая со- держит по десять 80-байтных образов карт ДКОИ в блоке, в файл с именем x: dd if=/dev/mt580 of=х ibs=800 cbs=80 conv=ascii,lcase Обратите внимание на использование небуферизированного обмена с магнитной лентой (rmt). Команда dd особеннно подходит для небуферизированного ввода-вывода, так как позволяет считывать и записывать записи произвольного размера. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: cp, tr ДИАГНОСТИКА: "f+p records in (out)" ("f+p записей введено (выведе- но)"): количество полных и неполных считанных (запи- санных) записей. ЗАМЕЧАНИЯ: Символы новой строки вставляются только при преобразо- вании в код КОИ-8.Дополнение выполняется только при 115 АПК 00210-01 33 01-4 преобразовании в код ДКОИ. Это следовало бы сделать отдельными параметрами. 116 АПК 00210-01 33 01-4 ИМЯ: ddutok - перекодировка из кода "u-cod" МНОС. ФОРМАТ: ddutok файл ... ОПИСАНИЕ : Команда ddutok последовательно перекодирует каждый "файл" из кода "u-cod" и записывает результат под прежним именем. Команда работает таким образом, что файлы, содержащие нетекстовые символы или не содержа- щие русских букв остаются неизмененными. "u-cod" - это нестандартная кодировка, отличающаяся от КОИ-8 тем, что русские буквы упорядочены по алфавиту, строчные буквы начинаются с кода 0340, прописные - 0300. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: dd 117 АПК 00210-01 33 01-4 ИМЯ demsend - перфорация данных для системы ДЕМОС. ОПИСАНИЕ demsend называется загрузочный модуль программы на языке pl/1. Результатом выполнения этой программы в среде ОС ЕС или ПДО является перфорация файла вирту- альным перфокарточным устройством вывода с направлени- ем перфорации на виртуальный перфокарточный ввод ВМ ДЕМОС. Чтение с перфокарточного ввода и размещение в файле ДЕМОС перфорированных данных выполняет утилита vmread. Управляющие параметры программы dемsend запи- сываются в поле РАRМ оператора EXEC и имеют состав аналогичный составу заголовка утилиты vmread: /modes; userid; destfile. Где modes поле управляющих ключей vmread; userid имя пользователя ДЕМОС destfile имя файла ДЕМОС Следующий пример показывает операторы ЯУЗ ОС ЕС для выполнения программы demsend: //name job ... 118 АПК 00210-01 33 01-4 //*route punch mode.dem //senddem exec pgm=demsend,parm='/s;petr1;blah' //steplib dd dsn=engtools.public.load,disp=shr //in dd dsn=petr1.test.blah,disp=old,dcb=(...) //out dd dcb=(recfm=fb,lrecl=80,blksize=80), // sysout=b Для получения эффекта работы программы demsend в среде системы ПДО имеется файл ПДО названия demsend module и командная процедура demsend exec, обеспечивающие поль- зовательский интерфейс с перфорацией. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ vmread, send 119 АПК 00210-01 33 01-4 ИМЯ: deroff - удалить конструкции pif, troff, tbl и eqn. ФОРМАТ: deroff [-w] файл ... ОПИСАНИЕ: Команда deroff поочередно считывает каждый файл и уда- ляет все командные строки pif, troff, конструкции с обратной косой чертой, макроопределения, конструкции eqn (между строками ".eq" и ".en" или между ограничи- телями), а также описания таблиц, и записывает остаток в стандартный файл вывода. Команда deroff следует по цепочкам включенных файлов (команды ".so" и ".nx").Eсли файл уже был включен, ".so" игнорируется, а ".nx" завершает выполнение. Если входной файл не указан, deroff осуществляет чтение из стандартного входного файла. Если указан флаг "-w", выход представляет собой список слов, по одному "слову" (строка букв, цифр и апостро- фов, начинающаяся буквой; апострофы удаляются) в стро- ке, все остальные символы игнорируются. В остальных случаях выход соответствует оригиналу, с учетом исклю- чения вышеупомянутых конструкций. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: pif, eqn, tbl ЗАМЕЧАНИЯ: 120 АПК 00210-01 33 01-4 Команда deroff не является полным интерпретатором pif, вследствие чего утонченные конструкции могут приводить к ошибкам. Большинство ошибок приводят к слишком боль- шому, а не слишком малому выводу. 121 АПК 00210-01 33 01-4 ИМЯ: diff - сравнение файлов и справочников. ФОРМАТ: diff [-l] [-r] [-s] [-cefh] [-b] спр1 спр2 diff [-cefh] [-b] файл1 файл2 diff [-dстрока] [-b] файл1 файл2 ОПИСАНИЕ: Если оба параметра являются справочниками, diff сос- товляет списки имен содержащихся в них файлов (отсор- тировав их в алфавитном порядке) и выполняет регуляр- ную процедуру сравнения над текстовыми файлами. Если в справочниках содержатся несовпадающие подсправочники или нетекстовые файлы с одинаковыми именами, они прос- то перечисляются. Так же перечисляются файлы, встреча- ющиеся только в одном из справочников. При сравнении справочников можно задавать следующие ключи: -l "длинный формат выдачи" - каждый текстовый файл выводится с помощью команды pr.Oтличия в файлах других типов накапливаются и выдаются после со- общений о всех текстовых файлах; -r команда diff выполняется рекурсивно для всех подсправочников с одинаковыми именами; -s команда сообщает только о совпадающих файлах; -sname сравнение содержимого справочников начинается с 122 АПК 00210-01 33 01-4 имени name. Команда diff сообщает, какие строки должны быть изме- нены в двух файлах, чтобы они совпали. Если вместо "файл1" ("файл2") указан "-", используется стандартный файл ввода. Если один из параметров указывает на спра- вочник, используется тот файл в этом справочнике, чье имя совпадает с именем файла "файл2" ("файл1"). Нор- мальный вывод содержит строки следующего вида: n1 a n3, n4 n1, n2 d n3 n1, n2 с n3, n4 Эти строки соответствуют командам ed для преобразова- ния "файла1" в "файл2". Числа после букв относятся к файлу "файл2". На самом деле, меняя "a" на "d" и про- изводя чтение в обратном порядке, можно также опреде- лить, как преобразовать "файл2" в "файл1". Как и в ed, одинаковые пары, в которых n1=n2 или n3=n4 сокращаются до одного числа. После каждой из этих строк следуют все соответствующие строки первого файла, отмеченные "<", а затем все со- ответствующие строки второго файла, отмеченные ">". Ключ "-b" приводит к игнорированию заключительных про- белов и символов табуляции, а также к тому, что раз- личные последовательности пробелов считаются эквива- лентными. 123 АПК 00210-01 33 01-4 Следующая группа ключей является взаимоисключающей: -e Приводит к созданию списка команд a, c и d для редактора ed, который воссоздает "файл2" из "файла1". Следующая программа для интерпретатора команд совместно с опцией "-е" помогает сопро- вождать несколько версий файла. Под руками нужно иметь только исходную версию файла ($1) и цепоч- ку списков команд ed для перехода от одной вер- сии к другой, полученных с помощью ed ($2, &3, ...). "последняя версия" помещается в стан- дартный файл вывода: (shift; cat $*; echo '1,$p') ! ed -$1 ; -f Генерирует список аналогичный "-e", не использу- емый с ed, и в обратном порядке; -c Выдает контекст,в котором встречаются измененные строки. По умолчанию выдается три строки до и три строки после различающихся строк. Число до- полнительно выдаваемых строк можно задавать. Так команда с ключом "-c10", будет выдавать 10 строк до и 10 строк после каждой различающейся стро- ки. Кроме того, при задании "-c" выдаются имена сравниваемых файлов с датами их создания. Сооб- щения о каждом изменении разделяются строками "**********". Строки,отсутствующие в файле1,мар- кируются символом "-".Строки,добавленные в фай- л2,символом "+". измененные строки символом "!"; 124 АПК 00210-01 33 01-4 -Dстрока Создает об'единенную версию файлов (файл1 и файл2), окружая все различающиеся строки дирек- тивами условной компиляции препроцессора языка Си. При этом "строка" используется в качестве аргумента директив препроцессора. Так, если в файлax file1 и file2 различается строка: long int k=1000000 /* строка из file1 */ int k=1000000 /* строка из file2 */ команда: diff -DLONGINT file1 file2 проводит выдачу в стандартный вывод файла, в ко- тором данная строка будет заменена на следующую конструкцию: #ifndef LONGINT long int k=1000000 /* строка из file1 */ #else int k=1000000 /* строка из file2 */ #endif -h Выполняет свою работу быстро и грубо. Она рабо- тает только в тех случаях, когда участки измене- ний малы и хорошо отделены друг от друга, однако может обрабатывать файлы неограниченной длины. С ключом "-h" не допускаются ключи "-e" и "-f". За исключением редких случаев, diff находит наименьший 125 АПК 00210-01 33 01-4 достаточный набор различий файлов. ФАЙЛЫ: /tmp/d????? /usr/lib/diffh для ключа "-h". ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: cmp, comm, ed ДИАГНОСТИКА: Код возврата равен: 0 - если нет различий; 1 - если различия есть; 2 - если выполение команды неудачно. ЗАМЕЧАНИЯ: Списки редактирования, генерируемые с ключами "-e" и "-f", не создают строк, состоящих из одной ".". 126 АПК 00210-01 33 01-4 ИМЯ: diff3 - сравнение трех файлов. ФОРМАТ: diff3 [-ех3] файл1 файл2 файл3 ОПИСАНИЕ: Команда diff3 сравнивает три версии файла и сообщает степени рассогласования текстов, отмечаемые следующими кодами: ==== все три файла различны; ====1 отличается "файл1"; ====2 отличается "файл2"; ====3 отличается "файл3". Вид изменения, позволяющий преобразовать данный учас- ток данного файла, указывается одним из следующих спо- собов: f:n1 a текст должен быть добавлен после строки с номе- ром n1 в файле "f", где f=1, 2 или 3. f:n1,n2 c Текст должен быть изменен на участке от строки n1 до строки n2. Если n1=n2, участок может быть сокращен до n1. Исходное содержимое участка приводится сразу же после 127 АПК 00210-01 33 01-4 указания "c". Если содержимое двух файлов одинаково, содержимое файла с меньшим номером не выводится. С ключoм "-e" diff3 создает командный файл для редак- тора ed, который включит в "файл1" все изменения между файлами "файл2" и "файл3", т.е. изменения, которые нормально были бы помечены "====" и "====3". Опция "-x" ("-3") создает командный файл для включения только изменений, отмечаемых "====" ("====3"). Следу- ющая команда применит полученный в результате ко- мандный файл (script) к файлу "файл1": (cat script; echo '1,$p') | ed - файл1 ФАЙЛЫ: /tmp/d3????? /usr/lib/diff3 ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: diff ЗАМЕЧАНИЯ: Строки текста, состоящие из одной ".", нарушают работу "-e". Файлы, длина которых превышает 64K байт, не обрабаты- ваются. 128 АПК 00210-01 33 01-4 ИМЯ: du - печать сведений об использовании дисков. ФОРМАТ: du [-s] [-a] [имя...] ОПИСАНИЕ: Команда du выдает число блоков, занимаемых всеми фай- лами и справочниками (рекурсивно), содержащмися внутри каждого заданного справочника или файла "имя". Если "имя" отсутствует, используется ".". Ключ "-s" вызывает выдачу только общего итога. Ключ "-a" вызывает вывод сообщения по каждому файлу. При отсутствии ключа сообщения генерируются только по справочникам. Файлы, которые имеют несколько альтернативных имен, учитываются только один раз. ЗАМЕЧАНИЯ: Если в качестве параметров заданы не справочники и не указан ключ "-a", то они не распечатываются. Если имеется слишком много различных альтернативных имен файлов, команда du учитывает избыточные файлы по несколько раз. 129 АПК 00210-01 33 01-4 ИМЯ: ЕС - построитель среды Паскаля ФОРМАТ: ЕС ОПИСАНИЕ: ЕС принимает на стандартном входе исходный текст прог- раммы на Паскале и извлекает об'явления. Эта команда позволяет создавать среду для $x-опции компиляции. 130 АПК 00210-01 33 01-4 ИМЯ: echo - выдача параметров. ФОРМАТ: echo [-n] [парам] ... ОПИСАНИЕ: Команда echo записывает свои параметры, разделенные пробелами и заканчивающиеся символом новой строки, в стандартный файл вывода. Если используется флаг "-n", к выводу не добавляется символ новой строки. Команда echo используется для выдачи диагностических сообщений в программах интерпретатора команд и для за- писи постоянных данных в потоках. Для посылки диагнос- тического сообщения в стандартный файл ошибок выполни- те команду: echo "текст сообщения" 1>&2 131 АПК 00210-01 33 01-4 ИМЯ: ed - строчный редактор текстов. ФОРМАТ: ed [-] [-х] [имя] ОПИСАНИЕ: Для UNIX-образных систем, ed является стандартным ре- дактором текстов. При интерактивной работе он уступает по удобству полиэкранному редактору, но может работать с любыми терминалами (например, с телетайпами). Редактор ed работает с копией редактируемого файла. Сделанные в копии изменения не влияют на исходный файл до тех пор, пока не будет выдана команда "w" (запись). Копия редактируемого текста размещается во временном файле, называемом "буфером". Если задан параметр "имя", указанный файл считывается в буфер редактора для последующей обработки. Если ука- зан ключ "-х", перед чтением файла выполняется команда "x" для работы с зашифрованными файлами. Ключ "-" по- давляет печать пояснительных сообщений и используется при вводе инструкций редактирования из командного файла. Команды редактора ed имеют простую и регулярную струк- туру: 0 или несколько "указателей", за которыми следу- ет односимвольное "имя команды" и, возможно, парамет- ры. "Указатели" определяют одну или несколько строк в 132 АПК 00210-01 33 01-4 буфере. Пропущенные адреса дополняются по умолчанию. Во время работы ed может находиться либо в командном режиме (когда вводимые строки рассматриваются как инструкции редактирования), либо в режиме ввода (т.е. набираемая информация просто переписывается в файл). В начале сеанса редактор находится в командном режиме. Если был переход в режим ввода, редактор воспринимает только одну команду - выход из данного режима (точка в первой позиции строки). В редакторе ed в ограниченном виде используется поня- тие "регулярного выражения". Регулярное выражение оп- ределяет множество строк символов. Говорят, что член этого множества соответствует этому регулярному выра- жению. В приведенном определении регулярных выражений слово "символ" означает любой символ, за исключением символа новой строки: 1) Любой символ, за исключением специальных симво- лов, соответствует самому себе. Специальными сим- волами являются разделитель регулярных выражений, знаки "[." и, иногда "^*$"; 2) "." соответствует любому символу; 3) " нием цифры или "()", соответствует этому символу; 4) Непустая строка "s", заключенная в квадратные скобки ([s] или [^s]), сответствует любому симво- 133 АПК 00210-01 33 01-4 лу,входящему (или не входящему) в строку "s". Внутри строки "s" символ " го значения, а "]" может появляться только в ка- честве первой буквы. Подстрока "a-b", где "a" и "b" расположены в возрастающем порядке относи- тельно русского или латинского алфавитов (для специальных символов относительно кода КОИ-8), обозначает диапазон символов от "a" до "b", вклю- чительно; 5) Регулярное выражение вида 1-4, за которым следует "*", определяет последовательность из 0 или более соответствий этому регулярному выражению; 6) Регулярное выражение "x", находящееся между " и ")", соответствует тому же, что и "x"; 7) Знак " той же строке, что и находящееся в скобках регу- лярное выражение, начинающееся с n-ой " 8) Регулярное выражение "x" вида 1-8, за которым следует регулярное выражение "y" вида 1-7, соот- ветствует соответствие для "x", за которым следу- ет соответствие для "y", причем соответствие для "x" выбирается как можно большим, однако допуска- ющим соответствие для "y"; 9) Регулярное выражение вида 1-8, которому пред- шествует "^" (или за которым следует "$"), огра- 134 АПК 00210-01 33 01-4 ничено соответствиями, начинающимися в левом (или заканчивающимися в правом) конце строки; 10) Регулярное выражение вида 1-9 выбирает самое длинное и крайнее слева соответствие в строке; 11) Пустое регулярное выражение заменяет последнее встреченное регулярное выражение. Регулярные выражения используются в адресах для опре- деления строк, а также в одной команде (s) для опреде- ления части строки, которую нужно заменить. Если тре- буется использовать один из метасимволов регулярных выражений в качестве обычного символа, этому символу должна предшествовать " лам, связывающим регулярные выражения (часто "/"), так и к самому символу " Для понимания системы адресации в редакторе ed необхо- димо представлять себе, что в каждый момент времени существует "текущая строка". Вообще говоря, текущая строка представляет собой последнюю строку, обработан- ную некоторой командой, однако точное влияние на поло- жение текущей строки рассматривается в описании команд. Адреса строятся следующим образом. 1) Символ "." адресует текущую строку; 2) Символ "$" адресует последнюю строку буфера; 3) Десятичное число "n" адресует n-ую строку буфера; 135 АПК 00210-01 33 01-4 4) "/x" указывает строку, помеченную именем "x", ко- торое должно представлять собой малую букву. Строки помечаются с помощью команды "k", которая описана ниже; 5) Регулярное выражение, заключенное в символы "/", указывает строку, которая определяется путем по- иска вперед от текущей строки до первой строки, содержащей последовательность символов, соот- ветствующую данному регулярному выражению. При необходимости после достижения конца буфера поиск продолжается с его начала; 6) Регулярное выражение, заключенное в вопроситель- ные знаки "?", адресует строку, которая определя- ется путем поиска назад от текущей строки до первой строки, содержащей последовательность сим- волов, соответствующую данному регулярному выра- жению. При необходимости после достижения начала буфера поиск продолжается с его конца; 7) Адрес, за которым следует знак "+" или знак "-" и десятичное число, определяет этот адрес плюс (или минус) указанное количество строк. Знак плюс может быть опущен; 8) Если адрес начинается со знака "+" или "-", вы- полняется сложение или вычитание по отношению к текущей строке. Например, "-5" означает ".-5". 136 АПК 00210-01 33 01-4 9) Если адрес заканчивается знаком "+" или "-", к нему добавляется (или вычитается) 1. Как следствие этого правила и правила 8, адрес "-" относится к строке, которая предшествует текущей строке. Более того, знаки "+" и "-" в конце обла- дают эффектом накопления, так что "--" относится к текущей строке минус 2. 10) Символ "^" в адресах эквивалентен символу "-". Команды могут требовать ни одного, один или два адре- са. Команды, в которых не требуется адрес, рассматри- вают наличие адреса как ошибку. Если в командах, где требуется один или два адреса, указано недостаточное количество адресов, принимаются стандартные адреса. Если в команде указано больше адресов, чем требуется, используются последние один или два адреса (в зависи- мости от того, сколько нужно). Обычно адреса отделяются друг от друга с помощью запя- той ",". Они могут разделяться также точкой с запятой ";". В этом случае текущая строка "." устанавливается на первый адрес перед тем, как интерпретируется следу- ющий. Эта особенность может быть использована при оп- ределении начальной строки для прямого и обратного по- иска ("/", "?"). Второй адрес любой двухадресной пос- ледовательности должен соответствовать строке, следу- ющей за строкой, которая соответствует первому адресу. В приведенном списке команд редактора ed стандартные 137 АПК 00210-01 33 01-4 адреса указаны в скобках. Скобки не являются частью адреса, а используются лишь для того, чтобы показать, что данные адреса являются стандартными. Как отмечалось ранее, появление в одной строке нес- кольких команд в общем случае является ошибкой. Одна- ко, к большинству команд могут быть добавлены команды "p" или "l", которые вызывают распечатку текущей стро- ки в одном из двух форматов. К командам может также добавляться команда "n", кото- рая вызывает печать номера строки в выводе команды. Эти суффиксы могут об'единяться в любом порядке. (.)a <текст> . Команда дозаписи - считывает указанный текст и добавляет его после строки с указанным адресом. "." остается в последней введенной строке, если она имеется, в противном случае - в адресуемой строке. В этой команде допускается адрес "0", при этом текст помещается в начало буфера. (.,.)c <текст> . Команда замены удаляет адресуемые строки, затем считывает вводимый текст, который заменяет эти 138 АПК 00210-01 33 01-4 строки. "." остается в последней введеной стро- ке; если таковых не было, она остается в строке, предшествовавшей удаленным строкам. (...) d Команда удаления удаляет адресуемые строки из буфера. Текущей становится строка, первоначально находившаяся после последней удаленной строки. Если удаленные строки располагались в конце, те- кущей строкой становится новая последняя строка. e имя_файла Команда редактирования вызывает удаление всего содержимого буфера и последующее считывание в него файла с указанным именем. "." устанавлива- ется на последней строке буфера. Печатается ко- личество считанных символов. "имя_файла" запоми- нается для возможного использования в качестве стандартного имени файла в последующих командах r или w. Если "имя_файла" отсутствует, использу- ется запомненное имя. E имя_файла Эта команда выполняет те же действия, что и ко- манда "e", за исключением того, что не выдается диагностических сообщений, если после последнего изменения буфера не была выдана команда "w". f имя_файла Команда печати имени файла распечатывает текущее 139 АПК 00210-01 33 01-4 запомненное имя файла. Если указывается "имя_файла", текущее запомненное имя файла заме- няется на "имя_файла". (1,$) g/регулярное выражение/список команд В этой команде на первом шаге помечаются все строки, которые соответствуют заданному регуляр- ному выражению. После этого для каждой такой строки выполняется заданный список команд, при- чем "." первоначально устанавливается в этой строке. Одна команда или первая из нескольких команд располагается в той же строке, что и ко- манда "g". Все строки списка, состоящие из нес- кольких строк, должны заканчиваться символом " ребление команд "a", "i" "c" и связанного с ними ввода. ".", завершающая режим ввода, может быть опущена, если она находится в последней строке списка команд. Команды "g" и "v" в списке команд не допускаются. (.)i <текст> . Эта команда вставляет заданный текст перед адре- суемой строкой. "." остается в последней вводи- мой строке или, если ее нет, в строке перед ад- ресуемой строкой. Эта строка отличается от ко- 140 АПК 00210-01 33 01-4 манды а только местом, куда помещается текст. (.,.+1)j Эта строка об'единяет адресуемые строки в одну строку. Промежуточные символы новой строки прос- то исчезают. "." остается в результирующей стро- ке. (.)kh Команда маркирования присваивает адресуемой строке имя "х", которое должно представлять собой малую букву. Впоследствии данная строка может адресоваться с помощью формы адреса "'х". (.,.)l Эта команда распечатывает адресуемые строки под- робным образом: неграфические символы печатаются в виде двух восьмеричных цифр, а длинные строки переносятся. Команда "l" может располагаться в одной и той же строке после любой не связанной с вводом-выводом команды. (.,.)ma Команда пересылки перемещает адресуемые строки и помещает их после строки, адресуемой с помощью "a". Последняя из перемещенных строк становится текущей строкой. (.,.)n Команда нумерации распечатывает адресуемые стро- ки вместе с номерами строк и символом табуляции 141 АПК 00210-01 33 01-4 слева. (.,.)p Эта команда распечатывает адресуемые строки. "." остается в последней распечатанной строке. Команда p может располагаться в одной и той же строке после любой не связанной с вводом-выводом команды. (.,.)P Эта команда является синонимом команды "p". q Команда выхода вызывает выход из редактора ed. Автоматическая запись в файл не производится. Q Эта команда аналогична команде "q", за исключе- нием того, что не выдается диагностических сооб- щений, если после последнего изменения буфера не была выдана команда "w". ($)r имя_файла Команда чтения считывает указанный файл и поме- щает результат после адресуемой строки. Если имя файла не указано, используется запомненное имя файла, если таковое имеется (см. команды "l" и "f"). Имя файла запоминается, если уже не было запомненного имени файла. Для команды "r" допус- кается адрес "0", который приводит к тому, что файл считывается в начало буфера. Если считыва- ние прошло успешно, печатается количество счи- 142 АПК 00210-01 33 01-4 танных символов. "." остается в последней счи- танной из файла строке. (.,.)s/регулярное выражение/замена/ или (.,.)s/регулярное выражение/замена/g Команда подстановки просматривает каждую адресу- емую строку на предмет соответствия заданному регулярному выражению. Если после команды указан индикатор глобального замещения "g", в каждой строке, в которой обнаружено соответствие, все соответствующие последовательности символов за- мещаются указанной "заменой". Если индикатор глобального замещения отсутствует, заменяется только первая соответствующая последовательность символов. Если подстановка не выполняется ни в одной из адресуемых строк, это является ошибкой. Для разделения регулярного выражения и замены вместо "/" может использоваться любой символ пунктуации. "." остается в последней строке, где была выполнена подстановка. Амперсанд "&", встречающийся в замене, заменяется строкой сим- волов, соответствующей регулярному выражению. Специальное значение символа "&" в указанном контексте может быть отменено посредством указа- ния перед ним " замещаются текстом, соответствующим n-ому регу- лярному выражению, заключенному между " и ")". Если имеются вложенные подвыражения в 143 АПК 00210-01 33 01-4 скобках, "n" определяется путем подсчета случаев употребления " начиная слева. Строки могут быть разделены посредством подстановки в них символов новой строки. Символы новой строки в строке замены должны быть выделены посредством указания перед ними символа " заключительных разделителя могут быть опущены, подразумевая суффикс "p". Специальная форма ко- манды "s" без последующих разделителей повторяет последнюю команду подстановки для адресуемых строк. После "s" могут следовать буквы "r" (ис- пользовать последнее регулярное выражение в левой стороне вместо последней команды подста- новки в левой стороне), "p" (дополняет установку суффикса "p" для предыдущей установки) и g (до- полняет установку суффикса "g"). Эти буквы могут об'единяться в любом порядке. (.,.)t a Эта команда работает аналогично команде "m", за исключением того, что копия адресуемых строк по- мещается после адреса "a" (который может быть 0). "." остается в последней строке копии. (.,.)u Команда аннулирования восстанавливает буфер, возвращая его в состояние, которое он имел перед последней командой модификации буфера. Положение текущей строки также восстанавливается. Команда- 144 АПК 00210-01 33 01-4 ми, модифицирующими буфер, являются "a, c, d, g, i, k и v". При анулировании "g" и "v" рассматри- ваются как одиночные команды модификации буфера. Команда анулирования является инверсной по отношению к самой себе. Когда редактору ed не хватает памяти, полное аннулирование невозможно, и команда "u" может аннулировать только влияние последней подстановки в текущей строке. Такое ограниченное аннулирование относится также и к командным файлам редактора, когда ed вызывается с ключем "-". (1,$)v/регулярное выражение/список команд Эта команда аналогична команде "g", за исключе- нием того, что список команд выполняется при на- чальной установке "." на каждую строку кроме тех, которые соответствуют регулярному выраже- нию. (1,$)w имя_файла Команда записи записывает адресуемые строки в указанный файл. Если файл не существует, он соз- дается. Имя файла запоминается, если еще не было запомненного имени. Если имя файла не задается, используется запомненное имя файла, если оно имеется (см. команды "е" и "f"). Положение "." не изменяется. Если данная команда выполнилась успешно, печатается количество записанных симво- лов. 145 АПК 00210-01 33 01-4 (1,$)W имя_файла Эта команда аналогична команде "w", за исключе- нием того, что адресуемые строки добавляются к файлу. (1,$)WQ имя_файла Эта команда аналогична команде "w", за исключе- нием того, что затем выполняется команда "q", осуществляющая выход из редактора после записи файла. x Из стандартного ввода запрашивается строка с ключом. Впоследствии команды "r", "e" и "w" будут зашифровывать и расшифровывать текст с по- мощью алгоритма "crypt", используя этот ключ. Пустой ключ отменяет режим шифрации. (.+1)z или (.+1)zn Эта команда используется для просмотра буфера, начиная с исходной строки. Распечатывается 22 (или "n", если указано) строки. Последняя напе- чатанная строка становится текущей строкой. Зна- чение "n" запоминается, т.е. оно становится стандартным для последующих команд "z". ($)= Распечатывается номер строки для адресуемой строки. Эта команда не меняет положения ".". 146 АПК 00210-01 33 01-4 !<команда языка управления заданиями> Часть строки после "!" передается sh для выпол- нения в качестве команды. Положение "." не меня- ется. (.+1,.+1) <конец строки> Одиночный адрес в строке вызывает распечатку ад- ресуемой строки. Пустая строка эквивалентна ".+1р". Это полезно для прохода по тексту. Если указывается два адреса, не разделяемые точкой с запятой, редактор ed распечатывает указанный ди- апазон строк. Если они разделены точкой с запя- той, распечатывается вторая строка. Если посылается сигнал прерывания, редактор ed печата- ет "?interrupted" ("?прерван") и возвращается в ко- мандный режим. Некоторые размерные ограничения: 512 символов в стро- ке, 256 символов в списке команд для команды "g", 64 символа в имени файла. Предел количества строк зависит от размера оперативной памяти: каждая строка занимает 2 слова. При чтении файла ed отбрасывает символы nul кода КОИ-8 и все символы после последнего символа новой строки. ФАЙЛЫ: /tmp/e* edhup 147 АПК 00210-01 33 01-4 При зависании терминала здесь сохраняется протокол вы- полненной работы. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: sed, crypt ДИАГНОСТИКА: "?name" для недоступного файла. "?" при прочих ошибках. Для предотвращения потери ценной информации команды "q" и "е" считаются ошибочными, если после последней модификации буфера не была выдана команда "w". Повтор- ная команда "q" или "е" выполняется всегда. ЗАМЕЧАНИЯ: Команда "l" неправильно обрабатывает символ "del" ("забой"). Команда аннулирования приводит к потере меток в восстановленных строках. 148 АПК 00210-01 33 01-4 ИМЯ: expand, unexpand - развернуть (свернуть) символы табу- ляции. ФОРМАТ: expand [-табстоп] [-таб1, таб2, ..., табN] [файл ... ] unexpand [-a] [файл ... ] ОПИСАНИЕ: Команда expand обрабатывает указанные файлы или стан- дартный ввод и производит запись в стандартный вывод, заменяя символы табуляции на пробелы. Символы возврата на шаг в выводе сохраняются и уменьшают счетчик пози- ций для связанных с табуляцией расчетов. Команда expand полезна для предварительной обработки символь- ных файлов, содержащих символы табуляции (перед сорти- ровкой, просмотром определенных столбцов и т.п.). Если задан единственный параметр "табстоп", размер та- буляции устанавливается равным "табстоп" пробелам вместо стандартного значения 8. Если задано несколько табуляционных остановов, позиции табуляции устанавли- ваются в указанных столбцах. Команда unexpand заменяет последовательности пробелов на символы табуляции, читая исходные данные из стан- дартного ввода или (если заданы файлы) из указанных файлов. Если задан ключ "-a", символы табуляции встав- ляются везде,где это возможно. По умолчанию unexpand заменяет на символы табуляции только первые пробелы. 149 АПК 00210-01 33 01-4 ИМЯ: expr - вычисление параметров как выражения. ФОРМАТ: expr парам ... ОПИСАНИЕ: Параметры рассматриваются как выражение. После вычис- ления результат записывается в стандартный вывод. Каждый член выражения представляет собой отдельный па- раметр. Oперации и ключевые слова. Этот список составлен в по- рядке возрастания старшинства операций.Oперации с оди- наковым старшинством сгруппированы: Выр ! выр Выводит первое выражение "выр", если оно не пус- тое и не равно "0", в противном случае выводит второе выражение; Выр & выр Если ни одно из выражений не является пустым или "0", выводит первое выражение, в противном слу- чае выводит "0"; Выр опотн выр "Опотн" представляет собой одну из операций от- ношения <, <=, =, !=, >=, >. Выводит "1", если указанное сравнение верно, и "0", если оно оши- бочно. Если оба выражения являются целыми, срав- 150 АПК 00210-01 33 01-4 нение является численным, иначе оно является лексикографическим; выр + выр выр - выр Сложение или вычитание параметров; Выр * выр выр / выр выр % выр Умножение, деление или вычисление остатка от де- ления параметров; Выр : выр Операция сравнивает строку, содержащуюся в первом параметре, с регулярным выражением, со- держащимся во втором параметре. Синтаксис регу- лярного выражения такой же, как в редакторе ed. Символы шаблона .) могут использоваться для вы- бора части первого параметра. В остальных случа- ях выводится количество символов, соответству- ющих шаблону ("0", если сравнение неудачно); ( Выр ) Скобки для группировки. ПРИМЕРЫ: Увеличение на "1" переменной A языка управления зада- ниями: 151 АПК 00210-01 33 01-4 A=`expr $A + 1` Нахождения части имени файла (младшей части) из полно- го имени файла, хранящегося в переменной A, которая может содержать или не содержать "/": expr $A : '.*/)' '|' $A В последнем примере сдледует обратить внимание на то, что операции команды expr, совпадающие с метасиволами языка управления заданиями, взяты в апострофы. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: ed, sh, test ДИАГНОСТИКА: Команда expr возвращает следующие выходные коды: 0 - если выражение не пустое и не равно "0"; 1 - если выражение пустое или "0"; 2 - для неверных выражений. 152 АПК 00210-01 33 01-4 ИМЯ: f77 - компилятор с языка ФОРТРАН-77. ФОРМАТ: f77 [ключ] ... Файл ... ОПИСАНИЕ: Команда f77 представляет собой компилятор с языка ФОРТРАН-77. Распознаются параметры следующих типов: - Параметры, имена которых заканчиваются на ".f", считаются исходными программами на языке ФОРТРАН-77.Oни компилируются, и каждая об'ектная программа помещается в файл текущего справочника под именем, которое получается из имени исходно- го файла путем замены ".f" на ".o"; - Параметры, имена которых заканчиваются на ".r" или ".e", считаются исходными программами на языках RATFOR или EFL соответственно.Oни сперва преобразуются соответствующим препроцессором, а затем компилируются с помощью f77; - Аналогично, параметры, имена которых заканчива- ются на ".c" или ".s", считаются исходными прог- раммами на языке Си или ассемблере.Oни компили- руются или ассемблируются, создавая файлы ".o". Приведенные ключи имеют то же самое значение, что и в команде cc. Описание ключей, задающих режимы загрузки содержится в ld: 153 АПК 00210-01 33 01-4 -c Подавляет загрузку и создает файл ".o" для каж- дого исходного файла; -d Компилятор формирует дополнительные команды и информацию в об'ектном файле для символьного от- ладчика cdebug. -p Подготовить об'ектные файлы для профилирования (см. команду prof); -O Вызвать оптимизатор об'ектного кода; -S Скомпилировать указанные программы и оставить ассемблерный выход в соответствующих файлах с суффиксами ".s". (файлы ".o" не создаются); -f Использовать интерпретатор плавающей запятой, кроме того, подключается вариант компилятора, который может работать на машинах без процессора плавающей запятой. -o вывод Присваивает выходному файлу редактора связей ld имя "вывод" вместо "a.out"; Следующие ключи являются специфическими для f77: -onetrip Компилирует циклы do, которые, получив управле- ние, выполняются по крайней мере один раз. (В ФОРТРАНе-77 циклы do вообще не выполняются, если верхняя граница меньше, чем нижняя); 154 АПК 00210-01 33 01-4 -u Устанавливает тип неопределенных переменных "undefined" вместо использования стандартных правил языка ФОРТРАН; -w Подавляет все предупредительные сообщения. Если этот ключ имеет вид "-w66", подавляются только предупредительные сообщения относительно совмес- тимости с языком ФОРТРАН-66. Ключ "-wki" подав- ляет предупредительные сообщения о русских буквах в идентификаторах; -U По умолчанию прописные буквы в идентификаторах и в ключевых словах переводятся в строчные. Ключ "-U" блокирует перевод, что позволяет различать прописные и строчные буквы в идентификаторах. Ключевые слова в этом случае записываются про- писными буквами; -O<цифра> Разрешить вынесение переменных циклов на ре- гистры с целью оптимизации. Одновременно включа- ется режим "-O". <цифра> определяет число ре- гистров: 1 или 2; -I2 -I4 -Is Флаги влияют на размер целых переменных: флаг "-I2" устанавливает тип "integer" эквивалентным "integer*2", "-I4" - "integer*4". По умолчанию установлен режим "-I4" (в соответствии со стан- дартом переменные типов "integer" и "real" 155 АПК 00210-01 33 01-4 должны занимать одинаковую память). Режим "-Is" разрешает компилятору в режиме "-I4" вычислять индексы в предположении, что они находятся в ди- апазоне чисел типа "integer*2"; -v В этом режиме компилятор сообшает об начале оче- редных этапов трансляции(F77PASS, PASS1, AS, LD, C), а также выдает версию компилятора; -V Отладочный режим работы компилятора. Распечаты- ваются команды "shell", запускаемые в процессе трансляции вместе со своими параметрами; -T<символ><имя-компоненты> Заменить какой то проход компилятора на указан- ную программу. Служит для отладки компилятора или вызова других его версий. <символ> обознача- ет следующие компоненты транслятора: "0" - f77 проход 0; "1" - f77 проход 1; "2" - c1 (си-компилятор, проход 1); "o" - c2 (оптимизатор кода); "a" - as (ассемблер); "l" - ld (редактора связей); "f" - головной раздел (вместо /lib/crt0); "m" - макропроцессор m4. Следует иметь в виду, что флаг "-f" переназнача- ет компоненты "1" и "f". 156 АПК 00210-01 33 01-4 -F Обработать соответствующие файлы препроцессорами RATFOR и EFL, поместить результат в файл с суф- фиксом ".f", но не компилировать результат; -m Применить к каждому файлу ".r" или ".e" препроцессор м4 перед обработкой его препроцес- сорами RATFOR и EFL; -ex Использовать строку "x" как ключ для EFL при об- работке файлов ".e"; -rx При обработке файлов с суффиксом ".r" использо- вать строку "x" как ключ для препроцессора RATFOR. Прочие параметры считаются либо ключами загрузчика, либо об'ектными программами, совместимыми с f77, либо библиотеками программ. Эти программы вместе с резуль- татами указанных компиляций загружаются (в заданном порядке) для получения выполняемой программы с именем "a.out". Компилятор реализует полный Фортран-77 с некоторыми расширениями, сделанными как для более эффективного использования ЭВМ, так и для лучшей совместимости с другими диалектами Фортрана. В версии компилятора для ЭВМ без раздельных адресных пространств команд и данных (а к ним относятся почти все отечественные ЭВМ, за исключением Электроники-79) существуют некоторые ограничения: 157 АПК 00210-01 33 01-4 - Не реализованы режимы "-Is" и "-C"; - В константных выражениях (размерности массивов и т.д.) можно использовать только целые числа и выражения целого типа (но не реальные или комплексные); - В списках ввода/вывода и параметрах циклов "do" запрещено использование встроенных арифметичес- ких функций и выражений, содержащих операции с комплексными числами. Это требование распростра- няется не на все случаи, но его нарушение может приводить к сбою компилятора с диагностикой "не найден сегмент ...". - Компилятор работает довольно медленно, и исполь- зует большие рабочие файлы в справочнике "/tmp". - При работе на ЭВМ без процессора плавающей точки усиливаются количественные ограничения на коли- чество идентификаторов, плавающих констант, ко- личество размерностей массивов в программах на Фортране, причем превышение этих ограничений может приводить к диагностике "out of memory" на этапе трансляции. При работе на ЭВМ с процессором плавающей точки эти ограниче- ния уменьшаются. Язык расширен по сравнению с Фортраном-77 следующим образом: 158 АПК 00210-01 33 01-4 - Введены новые описатели размещения локальных пе- ременных: "static", "automatic", "undefined" (для оператора "implicit"); - В качестве ограничителя строк можно использовать как одиночные, так и двойные кавычки.При этом закрывающая кавычка должна быть такой же, как и открывающая; - В строках можно использовать обозначения управ- ляющих символов, принятые в языке Си: 0 , - Введен оператор вставки текста include 'имя- файла'; - Введены битовые, восьмеричные и шестнадцатерич- ные константы, например: b'001' - битовые; o'725' - восьмеричные; x'af5' - шестнадцатеричные; - Введены операторы "accept" - эквивалентно "read", "type" - эквивалентно "print", "byte" - эквивалентно "character", для совместимости с некоторыми диалектами языка Фортран-4; - Введены функции "or", "and", "xor", "not" для работы с целыми числами, функции "getarg" и "iargc" для связи с системой; 159 АПК 00210-01 33 01-4 - По умолчанию каналы ввода/вывода настроены сле- дующим образом: 0 - stderr (канал диагностик); 5 - stdin (стандартный ввод); 6 - stdout (стандартный вывод). Остальные каналы связаны с файлами "fort.n", где "n" - номер канала. Могут использоваться каналы с номерами 0 - 9. Существует два формата входного текста. Если в колон- ках 1-6 стоит символ табуляции или в качестве признака продолжения используется "&" в первой позиции, длина входной строки может быть произвольной. Иначе исполь- зуются только первые 72 символа входной строки. Символ "!" является признаком внутристрочного комментария, текст между "!" и концом строки пропускается. Однако "!" не может быть единственным символом в строке. Программы на Фортране-77 могут использоваться сов- местно с программами на Си. Оператор Фортрана-77 call x(a,b,c) эквивалентен (если a,b,c - простые перемен- ные) оператору языка Си: x_(&a,&b,&c), то есть внешние имена дополняются символом подчеркивания в конце, а параметры передаются по адресу (если это не символьные переменные и не функции). Подробнее см.описание языка (86.24247-01 35 01). ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: 160 АПК 00210-01 33 01-4 prof, cc, ld, adb, cdeb. ДИАГНОСТИКА: Диагностические сообщения, выдаваемые непосредственно компилятором f77, не требуют пояснений. Иногда могут выдаваться сообщения загрузчика. Некоторые сообщения об ошибке компилятора могут вызываться ошибками в программах или превышением количественных ограничений. ЗАМЕЧАНИЯ: При работе на ЭВМ с малым об'емом адресуемой памяти возникают некоторые ограничения на допустимый размер программы. Кроме того, необходимость деления компилятора на динамически загружаемые сегменты приво- дит к увеличению времени его работы. Отсутствие на установке команд плавающей арифметики не является препятствием для использования компилятора, но не следует удивляться, если время работы программы резко возрастет (как и в программах на Си). Большие программы (содержашие большое количество меток) могут не пройти через оптимизатор об'ектного кода (предупредительное сообщение "optimizer out of space"). Система ввода/вывода языка Фортран довольно велика и занимает около 050000(8) байтов оперативной памяти. Для уменьшения размера программ и ускорения их работы рекомендуется использовать флаги "-O1 -I2" всегда, когда это возможно. 161 АПК 00210-01 33 01-4 Для отладки программ на Фортране могут использоваться те же средства, что и для программ на Си : отладчики "adb" и "cdeb". Отладчик "cdeb" понимает типы перемен- ных в Фортране-77. ФАЙЛЫ: /usr/f77lib/f77pass0 - проход 0; /usr/f77lib/f77p1 - проход 1; /usr/f77lib/f77p1f - проход 1 для машин без процес- сора плавающей точки; /usr/f77lib/lib?77.a - библиотеки Фортран-77 на счете; /tmp/f???.? - рабочие файлы. 162 АПК 00210-01 33 01-4 ИМЯ: fc - компилятор ФОРТРАН. ФОРМАТ: fc [ -c ] sfile1.f ... ofile1 ... ОПИСАНИЕ: При вызове компилятора можно задавать параметры трех типов: - имена файлов с суффиксом ` .f' являются исходны- ми текстами на ФОРТРАНЕ. Об'ектные файлы выво- дятся (или читаются) в файл с суффиксом ` .o'; - Другие параметры (кроме ключа -c) рассматривают- ся либо как ключи редактора связей, либо как об'ектные программы, обычно создаваемые на пред- шествующих проходах fc, либо как совместимые с ФОРТРАНОМ программы. Эти программы, вместе сo скомпилированными программами, обрабатываются после чего получается исполняемый файл с именем a.out; - Задание ключа -c и любая синтаксическая ошибка при трансляции приводит к тому, что сборка не выполняется. Приводим список различий между fc и стандартным ФОРТРАНОМ-4: 1) В выражениях допустимо произвольное смешение 163 АПК 00210-01 33 01-4 типов. Но в настоящее время возможны не все комби- нации типов. Допустимы все обычные преобразования, включающие целый, действительный, двойной точности и комплексный типы; 2) Возможны два варианта оператора implicit: implicit integer /i-n/, либо implicit integer (i-n); 3) Возможны типы doublecomplex, logcal*1, integer*2, и real*8; 4) Символ "&" в первой позиции указывает на то, что за ним следует продолжение оператора; 5) Символ "c" в первой позиции указывает на то, что за ним следует комментарий; 6) Все операторы пишутся строчными буквами; 7) Понятие "седьмая колонка" не используется; 8) При использовании спецификации формата "g", ввод производится в "свободном" формате.Предшествующие пробелы пропускаются, первый пробел после числа заканчивает поле; 9) При вводе, запятая является разделителем цифровых или логических полей; 10) Управление переводом строки при выводе отсутству- ет; 164 АПК 00210-01 33 01-4 11) Последовательность из N символов, заключенная в двойные кавычки ` " ', эквивалентна Nh, за которы- ми следуют эти символы; 12) В операторе data символьная строка может инициали- зировать массив элементов или последовательность элементов массива; 13) Число блоков памяти, запрашиваемых бесформатным оператором read, должно совпадать с числом, содер- жащимся в читаемой записи. Для операторов ввода/вывода доступны номера устройств с 0 по 19. Устройство номер N указывает на файл fortNN. (например, устройству номер 9 соответствует файл `fort09'). Читаемые файлы должны существовать- .Если вывод производится в отсутствующий файл, файл создается. Устройство номер 5 постоянно закреплено за стандартным файлом ввода. Устройство номер 6 постоянно закреплено за стандартным файлом вывода. ФАЙЛЫ: a.out результат работы; f.tmp[123] временные файлы; /usr/fort/fc1 собственно компилятор; /lib/fr0.o старт прогона; /usr/fort/filib.a библиотека интерпретатора ; /usr/fort/libf.a встроенные функции; /usr/fort/liba.a системная библиотека 165 АПК 00210-01 33 01-4 ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: ld, ierror, getarg, setfil ДИАГНОСТИКА: При компиляции, диагностика выдается по-английски. Возможно указание номера ошибочной строки и номера строки исходной программы, в которой имеется ошибка. При выполнении программы выдается номер ошибки: 1 неверно задан аргумент функции log; 2 несоответствие количества аргументов в функции amod; 3 несоответствие количества аргументов в функции atan2; 4 лишний аргумент при cabs; 5 задан слишком большой экспонент в cexp; 6 несоответствие количества аргументов в функции cmplx; 7 несоответствие количества аргументов в функции dim; 8 лишний аргумент при exp ; 9 несоответствие количества аргументов в функции idim; 10 несоответствие количества аргументов в функции 166 АПК 00210-01 33 01-4 isign; 11 несоответствие количества аргументов в функции mod; 12 несоответствие количества аргументов в функции sign; 13 недопустимый аргумент при sqrt; 14 неправильный переход по вычисляемому goto; 15 subscript out of range; 16 переполнение при вычислении real**real; 17 (отрицательный real)**real; 100 неверно задан номер устройства ввода/вывода; 101 неправильное использование устройства ввода/выво- да; 102 не можем создать файл вывода; 103 не можем открыть файл ввода; 104 конец файла ввода; 105 неверный символ в операторе format; 106 оператор format не может начинаться с символа `(' ; 107 не пустой список ввода/вывода при отсутствии спе- 167 АПК 00210-01 33 01-4 цификаций преобразования в формате; 108 лишние скобки в формате ; 109 неправильное определение формата; 110 запрещенный символ в поле ввода; 111 конец оператора format в h-спецификации; 112 неверный аргумент при setfil; 120 неверный аргумент при ierror ; 999 запрещенное преобразование ввода. ЗАМЕЧАНИЯ: В данной версии компилятора не реализованы следующие возможности: оператор-функция; масштабный множитель в спецификции формата опе- ратора ввода; оператор backspace. 168 АПК 00210-01 33 01-4 ИМЯ: file - определить тип файла. ФОРМАТ: file файл ... ОПИСАНИЕ: Команда file выполняет серию проверок для каждого па- раметра и пытается классифицировать его. Если оказыва- ется, что файл состоит из символов кода КОИ-8, команда file исследует первые 512 байтов и пытается угадать язык. ЗАМЕЧАНИЯ: Данная команда часто совершает ошибки. В частности, она часто предполагает, что командные файлы являются программами, написанными на языке Си. 169 АПК 00210-01 33 01-4 ИМЯ: find - поиск файлов. ФОРМАТ: find список_полных_имен выражение ОПИСАНИЕ: Команда find рекурсивно понижает иерархию каталогов для каждого имени пути в "списке_полных_имен" (т.е. одно или несколько полных имен) и ищет файлы, которые соответствуют булеву "выражению", записанному с по- мощью элементов. В этих описаниях параметр n использу- ется как десятичное целое, причем +n означает более чем n, -n означает менее чем n, а n означает точно n. -name имя_файла Истина, если параметр "имя-файла" соответствует текущему имени файла. Может использоваться обыч- ный синтаксис параметров интерпретатора команд, если он скрыт (будьте осторожны с символами "[, "?" и "*"); -perm вчис Истина, если статус файла точно соответствуют восьмеричному числу "вчис" (см. chmod). Если "вчис" имеет перед собой знак минус, становятся значимыми большее количество битов статуса (017777, см. stat); -type X 170 АПК 00210-01 33 01-4 Истина, если файл имеет тип "X", где "X" представляет собой один из символов b, c, d или f - для специального блочного файла; специально- го сиMвольного файла; каталога или простого файла соответственно; -links n Истина, если файл имеет n связей; -user имяп Истина, если файл принадлежит пользователю "имяп" (регистрационное имя или числовой иденти- фикатор пользователя); -group имяг Истина, если файл принадлежит группе "имяг" (имя группы или числовой идентификатор группы); -size n Истина, если длина файла составляет n блоков; -inum n Истина, если номер i-узла файла равен n; -atime n Истина, если доступ к файлу производился в тече- ние последних n дней; -mtime n Истина, если файл модифицировался в течение пос- ледних n дней; 171 АПК 00210-01 33 01-4 -exec команда Истина, если выполненная "команда" возвращает код возврата нуль. Конец команды должен быть обозначен скрытой точкой с запятой ";". Пара- метр команды "()" заменяется текущим именем; -ok команда Аналогично "-exec", за исключением того, что сгенерированная команда записывается в стан- дартный вывод, затем считывается стандартный ввод и команда Выполняется только в случае отве- та "y"; -print Всегда истина. Вызывает печать текущего полного имени; -newer файл Истина, если текущий файл был модифицирован позднее, чем указанный "файл". Эти элементы могут об'единяться с помощью следующих операций (операции перечислены в порядке уменьшения старшинства): 1) Заключение группы элементов и операций в скобки (скобки служат специальными символами для ин- терпретатора команд и должны быть скрыты); 2) Отрицание элемента ("!" представляет собой унар- ную операцию "нет"); 172 АПК 00210-01 33 01-4 3) Конкатенация элементов (операция "-a" подразуме- вается непосредственным соседством двух элемен- тов); 4) Альтернативность элементов ("-o" представляет собой операцию "или"). ПРИМЕР: Следующая команда предназначается для удаления всех файлов с именами "a.out", доступ к которым не произво- дился в течение недели: find / -name a.out -atime +7 -ok rm() ; ФАЙЛЫ: /etc/passwd /etc/group ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: sh, test ЗАМЕЧАНИЯ: Синтаксис данной команды слишком сложен. 173 АПК 00210-01 33 01-4 ИМЯ fls - полноэкранная (full screen) функция ls ФОРМАТ fls [режим][файл...] ОПИСАНИЕ fls расширяет функции команды ls для указанных коман- дой file файлов и выводит результаты на полный экран 7920. Типичные режимы ls (например, -l, -t и т.д.) также могут быть использованы. Для этой команды используются функциональные клавиши: pf1 выводится вспомогательный (help) экран. pf2 курсором отмечается файл для стирания. Строка ***DELETED*** подводится к имени следующего файла. Файл не будет уничтожен без нажатия кла- виш pf3, pf9 или pf12. pf3 уничтожает файлы, отмеченные для стирания и за- канчивает команду (fls). pf5 переносит функции команды ned на файл, указанный курсором. pf6 исключает из обработки файл, отмеченный курсо- ром, т. е. противоположно pf2. pf7 сдвиг вверх на 1/2 экрана. pf8 сдвиг вниз на 1/2 экрана. 174 АПК 00210-01 33 01-4 pf9 изменяет оглавление и снова выполняет команду ls. pf11 выполняет команду file и выводит результат на экран. pf12 меняет оглавление на оглавление, указанное кур- сором и выполняет ls. вызов теста немедленно заканчивает выполнение fls без унич- тожения файлов. Пользователь также может вводить команды с правой части экрана; имя файла, высвеченное с левой стороны экрана связывается с вводимой командой и передается программе shell для выполнения команды. Только клавиши pf9 и pf12 moгут служить причиной повторного выполне- ния команды ls. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ Dred - описание команды. 175 АПК 00210-01 33 01-4 ИМЯ: from - посмотр полученной почты. ФОРМАТ: from [ -s отправитель] [пользователь] ОПИСАНИЕ: Команда from выдает строки заголовков почты в вашем почтовом ящике, чтобы показать, от кого она получена. Если задан ключ -s, то выдается информация только о почте, поступившей от пользователя, имя которого опре- делено параметром "отправитель". Если задан параметр "пользователь", то команда from просматривает почтовый ящик указанного пользователя и сообщает от кого поступила для него почта. ФАЙЛЫ: /usr/spool/mail/* ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: mail 176 АПК 00210-01 33 01-4 ИМЯ: grep, egrep, fgrep - поиск в файле по шаблону. ФОРМАТ: grep [ключ ... ] Выражение [файл] ... egrep [ключ ... ] [выражение] [файл] ... fgrep [ключ ... ] [строки] [файл] ОПИСАНИЕ: Команды семейства grep осуществляют поиск строк во входных файлах (по умолчанию - стандартный ввод), со- ответствующих шаблону. Обычно каждая обнаруженная строка копируется в стандартный вывод. Шаблоны команды grep представляют собой ограниченные регулярные выра- жения по типу используемых в комаде еd. Используется компактный недетерминированный алгоритм. Шаблоны ко- манды egrep являются полными регулярными выражениями. Эта команда использует быстрый детерминированный алго- ритм и иногда требует экспоненциального пространства. Шаблонами команды fgrep являются фиксированные стро- ки.Oна является быстрой и компактной. Распознаются следующие ключи: -v Печатаются все строки, кроме соответствующих шаблону; -x Печатаются только строки, (точно) соответству- ющие целиком (только fgrep); -c Печатается только счетчик соответствующих строк; 177 АПК 00210-01 33 01-4 -l Печатаются имена файлов (по одному разу), в ко- торых имеются соответствующие строки, разделен- ные символами новой строки; -n Каждой строке предшествует ее относительный номер в файле; -b Каждой строке предшествует номер блока, в кото- ром она была найдена. Это иногда полезно для на- хождения номеров дисковых блоков по их содержа- нию; -i При сравнении игнорируется регистр символов (другими словами, верхний и нижний регистры счи- таются одинаковыми). (только grep); -s Немой режим. Ничего не печатается (за исключени- ем сообщений об ошибках). Это полезно для про- верки ошибочного состояния; -w Выражение ищется как слово (только grep); -e выражение То же, что и просто параметр "выражение", однако используется тех случаях, когда "выражение" на- чинается с "-"; -f файл Регулярное выражение (egrep) или список строк (fgrep) берутся из файла "файл". Во всех случаях имя файла изображается так, как будто 178 АПК 00210-01 33 01-4 имеется более одного входного файла. Требуется осто- рожность при использовании в "выражении" символов $, *, [, ^, ! , (, ) и , так как они являются значимыми и для языка управления заданиями sh. Самым надежным спо- собом является заключение всего "выражения" в апостро- фы '...'. Команда fgrep ищет строки, которые содержат одну из последовательностей символов "строки" (разделенных символами новой строки). Команда egrep работает с расширенными регулярными вы- ражениями. В следующем описании "символ" не включает в себя символ новой строки: Символ " отличающийся от символа новой строки, соответствует этому символу. Символ ^ ($) соот- ветствует началу (концу) строки. Символ "." со- ответствует любому символу. Одиночный символ, не имеющий специального значения, соответствует этому символу; Строка символов, заключенная в квадратные скобки [ ], соответствует любому одиночному символу из этой строки. Группы символов кода КОИ-8 могут быть сокращенно обозначены в виде "a-z0-9". Символ "]" может встречаться только в качестве первого символа строки. Литерал "-" может располагаться только в тех 179 АПК 00210-01 33 01-4 местах, где он не может быть спутан с указателем диапазона символов. Регулярное выражение, за ко- торым стоит символ "*" ("+", "?"),определяяет последовательность из 0 или более (1 или более, 0 или 1) соответствий для этого регулярного вы- ражения. Два об'единенных регулярных выражения определяют соответствие для первого, за которым следует соответствие для второго. Два регулярных выражения, разделенные символом "!" или символом новой строки, определяет либо соответствие для первого, либо соответствию для второго. Регуляр- ное выражение, заключенное в скобки, соот- ветствует соответствию для этого регулярного вы- ражения..lin Порядок старшинства операций на од- ном и том же уровне скобок следующий: [ ], затем *, + и ?, затем конкатенация, затем ! И символ новой строки. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: еd, sed, sh ДИАГНОСТИКА: Код возврата равен: 0 - если соответствия были найдены, 1 - если соответствия не были обнаружены, 2 - если имеется синтаксическая ошибка или файлы не- доступны. 180 АПК 00210-01 33 01-4 ЗАМЕЧАНИЯ: В идеальном случае должна была быть только одна коман- да grep, однако неизвестен единственный алгоритм, ко- торый характеризуется достаточно хорошим отношением память/время. Длина строк ограничена 256 символами, более длинные строки усекаются. 181 АПК 00210-01 33 01-4 ИМЯ: head - выдача первых строк файлов ФОРМАТ: head [-число] [файл ...] ОПИСАНИЕ: Команда выдает указанное "число" первых строк каждого из перечисленных файлов, или (если файлы не заданы) стандартного файла ввода. Если значение "число" опуще- но, выдаются первые десять строк. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: tail 182 АПК 00210-01 33 01-4 ИМЯ: hed - шестнадцатеричный текстовый редактор. ФОРМАТ: hed [-e][-r][-t] файл ОПИСАНИЕ: hed - полноэкранный текстовый редактор для использова- ния на терминалах типа 7920. Операнд "файл" указывает имя редактируемого файла данных. -e используется для вывода в коде ДКОИ; -r toлько для чтения; -t для использования /tmp/hed xxxxx в качестве бу- ферного файла (для большинства файлов). hed оперирует с копией файла в памяти, если не задан режим "-t". В этом случае в качестве буферного файла используется /temp/hed xxxxx файл. Данные, изменяемые на экране дисплея, меняются и в памяти (или в /tmp/hed xxxxx файле). Основные команды q(quit) или е(edit) не меняют файл-оригинал. Когда меняются шестнадцатеричные данные, стираемые метки конца файла(еоf) заполняются нулями. Можно изменять любые текстовые данные, при этом неизмененные данные сохраняются. Стирание eof в тексте заполняется нулями. ОСНОВНЫЕ КОМАНДЫ: Основные команды hed вводятся с командной строки в 183 АПК 00210-01 33 01-4 конце экрана. Команда t переключает состояние дисплея. Таких состояний может быть два: ДКОИ и КОИ-8. хххххххх - изменить смещение дисплея на хххххххх. Зна- чение должно быть дополнено слева нулями до 8-ми зна- ков; и вы не сможете работать далее пока не будет дос- тигнут конец файла. Значением хххххххх д.б. правильные шестнадцатеричные данные. (+/-)хххххххх - изменить смещение дисплея по отношению к текущему смещению "+" или "-" хххххххх. Значение хххххххх должно быть слева дополнено нулями. Работа не может быть возобновлена только по концу файла до нача- ла обработки следующего файла. /xxxxxxxx/c - разместить строку шестнадцатеричных сим- волов (до 28 шестнадцатеричных цифр). Если строка ука- зана неверно, данные будут преобразованы в символьный формат и выведены на экран. Остальные шестнадцатерич- ные цифры заполняются нулями до конца строки. d - граница двойного слова. f - граница полного слова. h - граница полуслова. c - oбработка данных как символьных. (null) - граница, выровненная на 1 байт. ?хххххххх?с - разместить строку шестнадцатеричных сим- волов (до 28 шестнадцатеричных цифр), двигаясь в об- 184 АПК 00210-01 33 01-4 ратном направлении. Если строка хххххххх указана не- верно, данные будут преобразованы в символьный формат и выведены на экран как строка символов. Остальные шестнадцатеричные цифры заполняются нулями до конца строки. d - граница двойного слова; f - граница полного слова; h - граница полуслова; c - обработка данных как символьных; (null) - граница, выравненная на 1 байт; e (-e) (-r) имя файла (только чтение) w[файл] - запись файла; q - выход из редактора без записи изменений; t - перекодировка в ДКОИ или КОИ-8; nodup - отмена высвечивания повторяющихся строк; dup - высвечивание всех строк; f[файл] - высвечивание или смена имени файла; $ - переход на конечный блок файла; 185 АПК 00210-01 33 01-4 ! - выполнение команд интертретатора; xd, dx, od, do, xo, ox - преобразования: восьмеричные, десятичные, шестнадцатеричные; insert/delete<позиция> <число байт> - вставка/удаление. ФУНКЦИОНАЛЬНЫЕ КЛАВИШИ ПФ. ПФ1 - справка; ПФ2 - перемещение текста с текущей строки в первую; ПФ3 - запись результатов редактирования; ПФ4,ПФ5 - повтор поиска; ПФ9 - копирование экрана (добавление) в файл hed.out; ПФ10, ПФ11, (ПФ7, ПФ8) - перемещение на полный экран (на полэкрана) вниз и вверх; ПФ12 - установить курсор в начало; вызов теста - выход из редактора. ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: xd 186 АПК 00210-01 33 01-4 2 АПК 00210-01 33 01-4 АННОТАЦИЯ Данный документ содержит команды общего назначения системы демос, предназначенные для непосредственного вызо- ва пользователем. Приводимые в приложении команды отражают текущее состояние стандартной оперативной справочной доку- ментации системы. Все команды в документе упорядочены в алфавитном порядке. Для удобства работы описание каждой команды начинается с нобого листа. 3 АПК 00210-01 33 01-4 СОДЕРЖАНИЕ 1. КОМАНДЫ ОБЩЕГО НАЗНАЧЕНИЯ......................... 4 ПРИЛОЖЕНИЕ............................................ 5 4 AПK.00210-01 33 01-5 1. КОМАНДЫ ОБЩЕГО НАЗНАЧЕНИЯ Структура описания каждой команды имеет следующий формат: имя: приводятся имена команд и краткая информация о их назначении; формат: приводится формат команды. Параметры, взятые в квадратные скобки, могут быть опущены; многоточие после параметра указывает на то, что данный параметр может быть многократно повторен. описание: содержит подробное описание команды; файлы: перечисляются имена файлов, которые исполь- зуются данной командой; диагностика: перечисляются диагностические сообщения, ко- торые могут выдаваться в процессе выполнения данной команды; замечания: приводятся ограничения на область применения команд; дополнительные ссылки: делаются ссылки на сопряженные команды. В скобках приводится номер раздела оперативного руководства. Описание команд общего назначения приведено в приложении. 5 AПK.00210-01 33 01-5 ПРИЛОЖЕНИЕ 6 AПK.00210-01 33 01-5 ИМЯ: join - операция для реляционных баз данных. ФОРМАТ: join [ключи] файл1 файл2 ОПИСАНИЕ: Команда join формирует в стандартном файле вывода со- единение двух отношений, заданных строками файлов "файл1" и "файл2". Если вместо файла "файл2" указано "-", используется стандартный файл ввода. "Файл1" и "файл2" должны быть отсортированы в возрас- тающей последовательности в соответствии с кодом КОИ-8 по полям, по которым они должны сливаться. (Обычно по первым полям в каждой строке). Для каждой пары строк в файлах "файл1" и "файл2", ко- торые имеют идентичные поля слияния, создается одна выходная строка. Выходная строка обычно состоит из об- щего поля, после которого следует остальная часть cтpoки из фaйлa "фaйл1", a зaтeм - из фaйлa "фaйл2". Поля обычно разделяются пробелами, символами табуляции и новой строки. В данном случае несколько разделителей рассматриваются как один, а передние разделители отбрасываются. Распознаются следующие опции: -aN в дополнение к обычному выводу генерируется 7 AПK.00210-01 33 01-5 строка для каждой непарной строки в файле N, где N равно 1 или 2; -e S заменяет пустые выходные поля строкой "S"; -jN M слияние производится по M-ому полю файла N. Если N отсутствует, в каждом файле используется M-ое поле; -o cпиcoк кaждaя выxoднaя cтpoкa cocтoит из пoлeй, указан- ных в "списке", каждый элемент которого имеет вид N.M, где N - это номер файла, а M - номер поля; -t C использовать символ "C" в качестве разделителя (символа табуляции). Каждое появление "C" в строке является значимым; ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : sort, comm, awk ЗАМЕЧАНИЯ: При стандартном разделителе полей сортирующая последо- вательность такая же, как в команде "sort -b"; с клю- чем -t последовательность такая же, как при простой сортировке. Соглашения, принятые в командах join, sort, comm, и awk, несовместимы. 8 AПK.00210-01 33 01-5 ИМЯ: kill - завершить процесс. ФОРМАТ: kill [-сигном] идентификатор-процесса ... ОПИСАНИЕ: Команда kill посылает сигнал завершения (SIGTERM-15) заданным процессам. Если задан параметр "сигном", данный сигнал посылается вместо сигнала завершения. Это свойство команды kill можно использовать для инте- рактивного управления ходом выполнения фоновых процес- сов или для уничтожения процессов игнорирующих сигнал завершения. В любом случае команда "kill -9" гаранти- рует завершение процесса. В соответствии с принятым соглашением, если задан номер процесса 0, сигнал будет послан всем членам, входящим в данную группу процессов. Завершаемые про- цессы должны принадлежать текущему пользователю, если он не является супер-пользователем. Интерпретатор команд сообщает номера асинхронных про- цессов, запущенных посредством "&". ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ : ps, kill, signal 9 AПK.00210-01 33 01-5 ИМЯ: label - обработка меток на мл. ФОРМАТ: label [-w] [-i метка] имя ОПИСАНИЕ: Командой label можно прочитать и записать метку маг- нитной ленты, адресуемой спец-файлом в параметре "имя". Команда распознает метки МЛ в формате ОС ЕС, где метка должна располагаться в 6-ти байтовом поле первой 80-ти байтовой записи. Эта запись начинается символами VOL1, за которыми следует метка МЛ и пробелы в оставшейся части. Операция чтения-запись метки сопровождается пе- рекодировкой из кода ДКОИ в КОИ-8 или наоборот соот- ветственно. Команда label без опционных параметров приводит к отображению метки МЛ на терминале. Опции таковы: -w записать метку МЛ. В виде метки используется имя спец-файла; -i записать метку МЛ. Меткой ленты становится уни- кальное имя из поля "метка". ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ: tape, tm 10 AПK.00210-01 33 01-5 ИМЯ: ld - редактор связей ФОРМАТ: ld [ключ] файл ... ОПИСАНИЕ: Команда ld об'единяет несколько об'ектных программ в одну, разрешает внешние ссылки и производит поиск в библиотеках. В простейшем случае задаются несколько об'ектных файлов, и ld об'единяет их, создавая об'ектный модуль, который может либо выполняться, либо являться входным для последующих запусков ld (в пос- леднем случае должен задаваться ключ "-r" для сохране- ния разрядов перемещения). Результат работы ld помeща- ется в файл с именем a.out. Этот файл делается выпол- няемым, если в процессе загрузки не было ошибок. Указанные параметрами программы об'единяются в задан- ной последовательности. Точкой входа для выходного мо- дуля является начало первой программы (если не исполь- зуется опция "-e"). Если какой-либо из параметров представляет собой биб- лиотеку, эта библиотека просматривается только один раз в тот момент, когда она встречается в списке пара- метров. Загружаются только те программы, которые опре- делены как неразрешенные внешние ссылки. Если подпрог- рамма из библиотеки ссылается на другую подпрограмму из той же библиотеки, то последняя должна находится в 11 AПK.00210-01 33 01-5 библиотеке после подпрограммы, которая на нее ссылает- ся. Если первый член библиотеки имеет имя __.SYMDEF, то считается, что он содержит каталог библиотеки, по- лученный с помощью команды ranlib. В этом случае, все ссылки будут успешно разрешены. Символы "_etext", "_edata" и "_end" ("etext", "edata" и "end" в языке Си) зарезервированы и, если на них имеются ссылки, устанавливаются на первую ячейку над программой, первую ячейку над инициализированными дан- ными и первую ячейку над всеми данными соответственно. Попытка переопределить эти символы приводит к ошибке. Команда ld распознает несколько ключей. За исключением ключа "-l", все они должны находится перед именами файлов: -d Вызывает определение общей памяти, даже если ус- тановлен флaг "-r"; -a Следующий параметр рассматривается как имя точки входа зaгpyжaeмoй пpoгpaммы; пo yмoлчaнию иcпoльзyeтcя ячeйкa 0; -l Этoт ключ являeтcя coкpaщeниeм имeни библиoтeки /lib/libX.a, где "X" - строка. Если она не су- ществует, команда ld пытается отыскать библиоте- ку /usr/lib/libX.a. Поскольку осуществляется пoиcк, мecтoнaxoждeниe "-l" являeтcя cyщecтвeнным; 12 AПK.00210-01 33 01-5 -n Приводит к тому, что при выполнении выходного файла тeкcтoвaя чacть бyдeт дocтyпнoй тoлькo для чтeния и paздeлятьcя мeждy вceми пoльзoвaтeлями, выпoлняющими этoт фaйл. Сегмен