DIGITAL Command Language

редактировать
DIGITAL Command Language
Paradigm imperative
Разработано Digital Equipment Corporation
Developer Digital Equipment Corporation
OS RSTS / E, RSX-11, RT-11, OpenVMS, VAXELN
Под влиянием
Windows PowerShell

DIGITAL Командный язык (DCL ) - стандартный командный язык, принятый в большинстве операционных систем (ОС), которые были проданы бывшей Digital Equipment Corporation (которая была приобретена Compaq, которая, в свою очередь, была приобретена Hewlett-Packard ). DCL берет свое начало в операционных системах IAS, TOPS-20 и RT-11 и был реализован как стандарт для большинства операционных систем Digital, в частности RSX-11, но его наиболее мощная форма была принята в ОС OpenVMS.

Написанный, когда язык программирования Fortran активно использовался, DCL - это язык сценариев, поддерживающий несколько типов данных, включая строки, целые числа, битовые массивы, массивы и логические значения, но не числа с плавающей запятой. Доступ к системным службам OpenVMS (ядро ​​ API ) осуществляется через лексические функции, которые работают так же, как их скомпилированный язык аналоги и позволяют скриптам получать информацию о состоянии системы. DCL включает IF-THEN-ELSE, доступ ко всем типам файлов Службы управления записями (RMS), включая потоковые, индексированные и последовательные, но, к сожалению, не имеет DO-WHILE или другая конструкция цикла, требующая от пользователей обходиться вместо этого операторами IF и GOTO -label.

DCL также доступен для других операционных систем, включая

  • VCL и VX / DCL для Unix,
  • VCL для MS-DOS, OS / 2 и Windows,
  • PC-DCL и Open DCL для Windows / Linux
  • и Accelr8 DCL Lite для Windows.

DCL является основой язык XLNT, реализованный в Windows с помощью комбинации интерпретатора-IDE-WSH с возможностями CGI, распространяемыми Advanced System Concepts Inc. с 1997 года.

Содержание
  • 1 Синтаксический анализатор командной строки
  • 2 Сценарии
  • 3 Косвенные ссылки на переменные
  • 4 Команды
  • 5 Лексические функции
  • 6 Ссылки
  • 7 См. Также
  • 8 Литература
  • 9 Внешние ссылки
Анализатор командной строки
OpenVMS Alpha 8.4-2L1, показывающий интерфейс командной строки DCL в сеансе терминала

Для реализации OpenVMS синтаксический анализатор командной строки представляет собой среду выполнения библиотеку (CLI $), которая может быть скомпилирована в пользовательские приложения и, следовательно, дает согласованный интерфейс командной строки как для команд ОС, так и для команд, написанных пользователем. Командная строка должна начинаться с глагола, за которым следуют аргументы или квалификаторы (переключатели в терминологии Unix ), которые начинаются с символа '/'. В отличие от Unix (но аналогично DOS ), пробел перед '/' не требуется. Квалификаторы могут быть независимыми от позиции (встречающиеся где угодно в командной строке) или зависимыми от позиции, и в этом случае квалификатор влияет на параметр, который появляется после. Большинство квалификаторов не зависят от позиции. Требуется только первая наиболее значимая часть имени глагола и квалификатора. Пример команды ОС может выглядеть так:

set audit / alarm / enable = (authorization, breakin = all) show device / files $ 1 $ DGA1424:

Вторая команда show также может быть набрана как:

sho dev $ 1 $ DGA1424: / fil

В то время как документация DCL обычно показывает все команды DCL в верхнем регистре, команды DCL не чувствительны к регистру и могут быть набраны в верхнем, нижнем или смешанном регистре.

Некоторые реализации, такие как OpenVMS, использовали схему минимальной уникальности, позволяющую сокращать команды, в то время как другие, такие как RSX-11, позволяли сокращать команды минимум до трех символов.

В отличие от других систем, которые используют пути для поиска команд, DCL требует, чтобы команды определялись явно, либо через определения CLD (определение языка команд), либо через внешний символ. Большинство команд OpenVMS определяются через файлы CLD; они компилируются CDU, утилитой определения команд, и добавляются в DCL 'table' - SYS $ LIBRARY: DCLTABLES.EXE по умолчанию, хотя процессы могут использовать свои собственные таблицы - и затем могут быть вызывается пользователем. Например, определение команды FOO, которая принимает параметр «/ BAR» и реализуется с помощью образа SYS $ SYSEXE: FOO.EXE, может быть выполнено с файлом CLD, подобным:

DEFINE VERB FOO IMAGE «SYS $ SYSEXE: FOO.EXE "QUALIFIER BAR

Затем пользователь может ввести" FOO "или" FOO / BAR ", и программа FOO будет запущена. Язык определения команд поддерживает множество типов параметров, например даты и спецификации файлов, и позволяет квалификатору изменять вызываемое изображение - например, «СОЗДАТЬ» для создания файла или «СОЗДАТЬ / КАТАЛОГ» для создания каталога..

Другой (более простой, но менее гибкий) метод определения команд - через внешние команды. Это больше похоже на метод вызова программ в Unix. Задав команду:

foo: == $ sys $ sysexe: foo.exe

, команда 'FOO' вызовет FOO.EXE и буквально предоставит программе любые дополнительные аргументы, например, «foo - v ". Этот метод обычно используется для программ, перенесенных из Unix и других неродных систем; для программ на C, использующих синтаксис команд argc и argv.

Версии OpenVMS DCL, начиная с V6.2, поддерживают логическое имя DCL $ PATH для установления путей команд в стиле Unix. Этот механизм известен как автоматическая внешняя команда. DCL $ PATH позволяет указать список каталогов, и затем в этих каталогах выполняется поиск командных процедур DCL (command.COM), а затем исполняемых образов (command.EXE) с именами файлов, соответствующими команде, введенной пользователем. Как и традиционные внешние команды, автоматические внешние команды также позволяют вводить команды в стиле Unix.

Сценарии

Сценарии DCL очень похожи на любой другой язык сценариев, за некоторыми исключениями. Перед всеми командами DCL в сценарии стоит символ $; другие строки считаются входными для предыдущей команды. Например, чтобы использовать команду TYPE для вывода абзаца на экран, можно использовать сценарий, подобный следующему:

$ TYPE SYS $ INPUT: это пример использования команды TYPE в языке DCL. $ EXIT
Косвенная ссылка на переменную

В DCL можно создавать массивы, на которые ссылаются посредством переведенных символов. Это позволяет программисту создавать структуры данных произвольного размера, используя сами данные в качестве функции индексации.

$ i = 1 $ variable'i '= "синий" $ i = 2 $ variable'i' = "зеленый" $ j = 1 $ color = variable'j '$ rainbow'color' = "красный" $ color = variable'i '$ rainbow'color' = "yellow"

В этом примере переменной rainbowblue присвоено значение "red", а rainbowgreen присвоено значение "yellow".

Команды

Ниже приведен список команд DCL для общих вычислительных задач, которые поддерживаются интерфейсом командной строки OpenVMS .

Лексические функции

Лексические функции обеспечивают строковые функции и доступ к данным, поддерживаемым VMS.

Вот некоторые лексические слова:

  • F $ EXTRACT (начало, длина, строка)- извлечь подстроку
  • F $ CVTIME- получить информацию о дате / времени, например
    YEST_DOW = F $ EXTRACT (0,3, F $ CVTIME (DATE_EXPR,, "WEEKDAY"))
  • F $ ELEMENT (0, "", ABC_DEF)- для ABC_DEF = " ABC DEF "вернет " ABC "
  • F $ SEARCH- ищет файл, возвращает ноль (" "), если не найден
  • F $ LOCATE (иголка, стог сена)
  • F $ SetPRV ("BYPASS, CMKRNL, ALTPRI")- это привилегия иметь доступ к этому.
Ссылки
См. Также
Литература
  • Пол К. Анагностопулос, Стив Хоффман: Написание реальных программ в DCL, второе издание, 1998 г., Digital Press. ISBN 1-55558-191-9
Внешние ссылки
Последняя правка сделана 2021-05-16 09:02:45
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте