ЦИФРОВОЙ командный язык - DIGITAL Command Language
OpenVMS Alpha 8.4-2L1, показывающий интерфейс командной строки DCL в терминальном сеансе | |
Парадигма | императив |
---|---|
Разработано | Корпорация цифрового оборудования |
Разработчик | Корпорация цифрового оборудования |
Операционные системы | RSTS / E, RSX-11, РТ-11, OpenVMS, VAXELN |
Под влиянием | |
Windows PowerShell |
ЦИФРОВОЙ командный язык (DCL) - стандартный командный язык, принятый большинством операционные системы (ОС), которые были проданы бывшим Корпорация цифрового оборудования (который был приобретен Compaq, который, в свою очередь, был приобретен Hewlett Packard ). DCL берет свое начало в МСФО, ТОП-20, и РТ-11 ОС и был реализован в качестве стандарта для большинства операционных систем Digital, в частности RSX-11, но наиболее мощную форму он получил в OpenVMS ОПЕРАЦИОННЫЕ СИСТЕМЫ.
Написано, когда язык программирования Фортран активно использовался, DCL - это язык сценариев поддерживая несколько типы данных, включая строки, целые числа, кусочек массивы, массивы и логические, но не плавающая точка числа. Доступ к OpenVMS системные службы (ядро API ) через лексический функции, которые работают так же, как их компилируемый язык аналоги и позволяют скриптам получать информацию о состоянии системы. DCL включает ЕСЛИ-ТО-ЕЩЕ, доступ ко всем Услуги по управлению записями (RMS) типы файлов, включая потоковые, индексированные и последовательные, но, к сожалению, не имеют ДЕЛАТЬ ПОКА или другой зацикливание построить, требуя, чтобы пользователи обходились IF и ИДТИ К -label вместо этого.
DCL также доступен для других операционных систем, включая
- VCL и VX / DCL для Unix,
- VCL для MS-DOS, OS / 2 и Windows,
- PC-DCL и Открыть DCL для Windows / Linux
- и Accelr8 DCL Lite для Windows.[1]
DCL - это основа XLNT язык, реализованный в Windows с помощью комбинации интерпретатора-IDE-WSH с возможностями CGI, распространяемыми Advanced System Concepts Inc. с 1997 года.
Парсер командной строки
Для реализации OpenVMS парсер командной строки - это среда выполнения библиотека (CLI $), который может быть скомпилирован в пользовательские приложения и, следовательно, дает согласованный интерфейс командной строки как для команд ОС, так и для команд, написанных пользователем. Командная строка должна начинаться с глагола, за которым следуют аргументы или квалификаторы (переключатели в Unix терминология), которые начинаются с символа '/'. В отличие от Unix (но похож на ДОС ), пробел перед '/' не требуется. Квалификаторы могут быть независимыми от позиции (встречающиеся где угодно в командной строке) или зависимыми от позиции, и в этом случае квалификатор влияет на параметр, который появляется после. Большинство квалификаторов не зависят от позиции. Требуется только первая наиболее значимая часть имени глагола и квалификатора. Пример команды ОС может выглядеть так:
набор аудит /тревога /включить=(разрешение, взломать=все) Показать устройство /файлы 1 доллар США DGA1424:
Второй Показать Команда также может быть набрана как:
sho dev $ 1 $ DGA1424: / fil
В то время как документация DCL обычно показывает все команды DCL в верхнем регистре, команды DCL нечувствительны к регистру и могут вводиться в верхнем, нижнем или смешанном регистре.
Некоторые реализации, такие как OpenVMS, использовали схему минимальной уникальности, позволяющую сокращать команды, в то время как другие, такие как RSX-11, позволяли сокращать команды минимум до трех символов.
В отличие от других систем, которые используют пути для поиска команд DCL требует, чтобы команды были определены явно либо через определения CLD (определение языка команд), либо иностранный символ. Наиболее OpenVMS -нативные команды определены через файлы CLD; они компилируются CDU, утилитой определения команд, и добавляются в "таблицу" DCL - БИБЛИОТЕКА SYS $: DCLTABLES.EXE по умолчанию, хотя процессы могут использовать свои собственные таблицы - и затем могут быть вызваны пользователем. Например, определение команды FOO, которая принимает параметр "/ BAR" и реализуется изображением SYS $ SYSEXE: FOO.EXE можно сделать с файлом CLD, подобным:
ОПРЕДЕЛЯТЬ ГЛАГОЛ FOO ИЗОБРАЖЕНИЕ "SYS $ SYSEXE: FOO.EXE" КВАЛИФИКАЦИЯ БАР
Затем пользователь может ввести "FOO", или же "FOO / BAR", и будет вызвана программа FOO. Язык определения команд поддерживает множество типов параметров, например даты и спецификации файлов, и позволяет квалификатору изменять вызываемое изображение - например," CREATE "для создания файла, vs . "CREATE / DIRECTORY", чтобы создать каталог.
Другой (более простой, но менее гибкий) метод определения команд - через иностранные команды. Это больше похоже на метод вызова программ в Unix. Дав команду:
фу :== $ sys $ sysexe:фу.EXE
команда 'FOO' вызовет FOO.EXE и буквально предоставит программе любые дополнительные аргументы, например, «foo -v». Этот метод обычно используется для программ, перенесенных из Unix и других неродных систем; для программ на C, использующих синтаксис команд argc и argv.
Версии OpenVMS DCL, начиная с V6.2, поддерживают DCL $ PATH логическое имя для установки путей к командам в стиле Unix. Этот механизм известен как автоматическая внешняя команда. DCL $ PATH позволяет указать список каталогов, и затем в этих каталогах выполняется поиск командных процедур DCL (команда.COM), а затем для исполняемых образов (команда.EXE) с именами файлов, соответствующими команде, введенной пользователем. Как и традиционные внешние команды, автоматические внешние команды также позволяют вводить команды в стиле Unix.
Сценарии
Сценарии DCL очень похожи на любой другой язык сценариев, за некоторыми исключениями. Всем командам DCL в сценарии предшествует символ $; другие строки считаются входными для предыдущей команды. Например, чтобы использовать команду TYPE для печати абзаца на экране, можно использовать сценарий, подобный следующему:
$ ТИП SYS$ INPUT:Это пример использования глагола TYPEна языке DCL.$ ВЫХОД
Косвенная ссылка на переменную
В DCL можно создавать массивы, на которые ссылаются переведенные символы. Это позволяет программисту создавать структуры данных произвольного размера, используя сами данные в качестве функции индексации.
$ я = 1$ Переменная'я' = "синий"$ я = 2 $ Переменная'я' = "зеленый"$ j = 1$ цвет = Переменная'j'$ радуга'цвет' = "красный"$ цвет = Переменная'я'$ радуга'цвет' = "желтый"
В этом примере переменная радугасиний присваивается значение "красный", а радуга присваивается значение «желтый».
Команды
Ниже приведен список DCL. команды для общих вычислительных задач, поддерживаемых OpenVMS Интерфейс командной строки.[2]
- КОПИРОВАТЬ
- КОПИЯ / FTP
- СОЗДАЙТЕ
- УДАЛИТЬ
- СПРАВОЧНИК
- РЕДАКТИРОВАТЬ
- ВЫЙТИ
- РАСПЕЧАТАТЬ
- ПЕРЕИМЕНОВАТЬ
- НАБОР
- ПОКАЗАТЬ
- ТИП
Лексические функции
Лексические функции предоставлять строковые функции и доступ к данным, поддерживаемым VMS.
Некоторые лексические слова:
F $ EXTRACT (начало; длина; строка)
- извлечь подстрокуF $ CVTIME
- получить информацию о дате / времени, напримерYEST_DOW=F$ ЭКСТРАКТ(0,3,F$ CVTIME(DATE_EXPR,,"WEEKDAY"))
F $ ELEMENT (0; ""; ABC_DEF)
- заABC_DEF = "ABC DEF"
вернется"Азбука"
F $ ПОИСК
- ищет файл, возвращает нуль (""), если не найденF $ LOCATE (иголка, стог сена)
F $ SetPRV («БАЙПАС, CMKRNL, ALTPRI»)
- иметь к этому доступ - это привилегия.
Смотрите также
Рекомендации
- ^ «Сравнение PC-DCL и Open DCL Lite».
Сравнение PC-DCL Валентина и Accelr8 Open DCL Lite
- ^ Руководство пользователя OpenVMS
дальнейшее чтение
- Пол К. Анагностопулос; Стив Хоффман (1998). Написание реальных программ на DCL (Второе изд.). Цифровая пресса. ISBN 1-55558-191-9.