CYFROWY język poleceń - DIGITAL Command Language

CYFROWY język poleceń
Openvms-8.4-2L1-dcl.png
OpenVMS Alpha 8.4-2L1, pokazujący interfejs DCL CLI w sesji terminala
Paradygmat tryb rozkazujący
Zaprojektowany przez Digital Equipment Corporation
Deweloper VMS Software Inc. (VSI)
OS RSTS / E , RSX-11 , RT-11 , OpenVMS , VAXELN , MICA
Pod wpływem
Windows PowerShell

DIGITAL Command Language ( DCL ) to standardowy język poleceń stosowany w większości systemów operacyjnych sprzedawanych przez dawną firmę Digital Equipment Corporation . DCL ma swoje korzenie w IAS , TOPS-20 i RT-11 i został wdrożony jako standard w większości systemów operacyjnych Digital, zwłaszcza RSX-11 i RSTS / E , ale przybrał najpotężniejszą formę w VAX / VMS (później OpenVMS ). DCL jest nadal rozwijany przez VSI jako część OpenVMS.

Napisany w okresie intensywnego używania języka programowania Fortran , DCL jest językiem skryptowym obsługującym kilka typów danych , w tym łańcuchy, liczby całkowite , tablice bitowe , tablice i wartości logiczne, ale nie liczby zmiennoprzecinkowe . Dostęp do usług systemowych OpenVMS ( API jądra ) odbywa się poprzez funkcje leksykalne , które działają tak samo jak ich odpowiedniki w języku kompilowanym i pozwalają skryptom na uzyskanie informacji o stanie systemu. DCL obejmuje IF-THEN-ELSE , dostęp do wszystkich typów plików Record Management Services (RMS), w tym strumieniowych, indeksowanych i sekwencyjnych, ale niestety brakuje mu funkcji DO-WHILE lub innej pętli , wymagającej od użytkowników skorzystania z funkcji IF i GOTO - zamiast tego instrukcje etykiet.

DCL jest również dostępny dla innych systemów operacyjnych, w tym

DCL jest podstawą języka XLNT , zaimplementowanego w systemie Windows przez połączenie silnika interpreter-IDE-WSH z funkcjami CGI dystrybuowanymi przez Advanced System Concepts Inc. od 1997 roku.

Parser wiersza poleceń

W przypadku implementacji OpenVMS parser wiersza poleceń jest biblioteką wykonawczą ( CLI $ ), którą można wkompilować w aplikacje użytkownika, a tym samym zapewnia spójny interfejs wiersza poleceń zarówno dla poleceń dostarczonych przez system operacyjny, jak i dla poleceń napisanych przez użytkownika. Wiersz poleceń musi zaczynać się od czasownika, po którym następuje maksymalnie 8 parametrów (argumentów) i / lub kwalifikatorów (przełączników w terminologii uniksowej ) zaczynających się od znaku „/”. W przeciwieństwie do Uniksa (ale podobnie do DOS ), spacja nie jest wymagana przed „/”. Kwalifikatory mogą być niezależne od pozycji (występujące w dowolnym miejscu w wierszu poleceń) lub zależne od pozycji, w którym to przypadku kwalifikator wpływa na parametr, po którym występuje. Większość kwalifikatorów jest niezależnych od pozycji. Kwalifikatorom można również przypisać wartości lub serie wartości. Wymagana jest tylko pierwsza najbardziej znacząca część nazwy czasownika i kwalifikatora. Parametry mogą być liczbami całkowitymi lub tekstem alfanumerycznym.

Przykładowe polecenie systemu operacyjnego może wyglądać następująco:

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

Drugie polecenie show można również wpisać jako:

   sho dev $1$DGA1424:/fil

Podczas gdy dokumentacja DCL zwykle pokazuje wszystkie polecenia DCL wielkimi literami, w poleceniach DCL nie jest rozróżniana wielkość liter i można je wpisywać wielkimi, małymi lub mieszanymi literami.

Niektóre implementacje, takie jak OpenVMS, wykorzystywały minimalny schemat unikalności umożliwiając skracanie poleceń, podczas gdy inne, takie jak RSX-11, pozwalały na skracanie poleceń do co najmniej trzech znaków.

W przeciwieństwie do innych systemów, które używają ścieżek do lokalizowania poleceń, DCL wymaga jawnego zdefiniowania poleceń za pomocą definicji CLD (Command Language Definition) lub obcego symbolu . Większość rodzimych poleceń OpenVMS jest definiowana za pomocą plików CLD; są one kompilowane przez CDU, narzędzie Command Definition Utility i dodawane do „tabeli” DCL - domyślnie SYS $ LIBRARY: DCLTABLES.EXE , chociaż procesy mogą swobodnie korzystać z własnych tabel - a następnie mogą być wywoływane przez użytkownika . Na przykład zdefiniowanie polecenia FOO, które akceptuje opcję „/ BAR” i jest realizowane przez obraz SYS $ SYSEXE: FOO.EXE można wykonać za pomocą pliku CLD podobnego do:

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

Użytkownik może następnie wpisać „ FOO ” lub „ FOO / BAR ”, a program FOO zostanie wywołany. Język definicji poleceń obsługuje wiele typów opcji, na przykład daty i specyfikacje plików, i umożliwia kwalifikatorowi zmianę wywoływanego obrazu - na przykład „UTWÓRZ”, aby utworzyć plik, a „UTWÓRZ / KATALOG”, aby utworzyć katalog.

Inną (prostszą, ale mniej elastyczną) metodą definiowania poleceń są polecenia obce . Jest to bardziej zbliżone do uniksowej metody wywoływania programów. Wydając polecenie:

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

polecenie „FOO” wywoła FOO.EXE i dosłownie dostarczy programowi wszelkie dodatkowe argumenty, na przykład „foo -v”. Ta metoda jest zwykle używana w przypadku programów przeniesionych z Uniksa i innych systemów nienatywnych; dla programów C używających składni poleceń argc i argv.

Wersje OpenVMS DCL zaczynające się od V6.2 obsługują nazwę logiczną DCL $ PATH do ustanawiania ścieżek poleceń w stylu uniksowym. Mechanizm ten jest nazywany automatycznym poleceniem obcym. DCL $ PATH umożliwia określenie listy katalogów, które są następnie przeszukiwane pod kątem procedur poleceń DCL ( polecenie .COM), a następnie pod kątem plików wykonywalnych ( polecenie .EXE) z nazwami plików pasującymi do polecenia wprowadzonego przez użytkownika. Podobnie jak tradycyjne polecenia obce, automatyczne polecenia obce również umożliwiają wprowadzanie poleceń w stylu uniksowym.

Skrypty

Skrypty DCL wyglądają podobnie jak każdy inny język skryptowy, z pewnymi wyjątkami. Wszystkie czasowniki DCL w skrypcie są poprzedzone symbolem $; inne linie są traktowane jako dane wejściowe do poprzedniego polecenia. Na przykład, aby użyć polecenia TYPE do wydrukowania akapitu na ekranie, można użyć skryptu podobnego do:

$ TYPE SYS$INPUT:
This is an example of using the TYPE verb
in the DCL language.
$ EXIT

Pośrednie odwoływanie się do zmiennych

W DCL można budować tablice, do których odwołuje się przetłumaczone symbole. Umożliwia to programiście tworzenie struktur danych o dowolnych rozmiarach przy użyciu samych danych jako funkcji indeksującej.

$ i = 1
$ variable'i' = "blue"
$ i = 2 
$ variable'i' = "green"
$ j = 1
$ color = variable'j'
$ rainbow'color' = "red"
$ color = variable'i'
$ rainbow'color' = "yellow"

W tym przykładzie zmiennej rainbowblue jest przypisywana wartość „red”, a rainbowgreen jest przypisywana wartość „yellow”.

Polecenia

Poniżej znajduje się lista poleceń DCL dla typowych zadań obliczeniowych, które są obsługiwane przez interfejs wiersza poleceń OpenVMS .

Funkcje leksykalne

Funkcje leksykalne zapewniają funkcje tekstowe i dostęp do danych obsługiwanych przez VMS.

Niektóre leksykalne to:

  • F$EXTRACT(start,length,string) - wyodrębnij podciąg
  • F$CVTIME - uzyskać informacje o dacie / godzinie, np
    YEST_DOW=F$EXTRACT(0,3,F$CVTIME(DATE_EXPR,,"WEEKDAY"))
  • F$ELEMENT(0," ",ABC_DEF) - bo ABC_DEF = "ABC DEF" wróci "ABC"
  • F$SEARCH - wyszukuje plik, zwraca wartość null (""), jeśli nie zostanie znaleziona
  • F$LOCATE(needle,haystack)
  • F$SetPRV("BYPASS,CMKRNL,ALTPRI") - to przywilej mieć do tego dostęp.

Zobacz też

Bibliografia

Dalsza lektura

  • Paul C. Anagnostopoulos; Steve Hoffman (1998). Pisanie prawdziwych programów w DCL (drugie wydanie). Prasa cyfrowa. ISBN   1-55558-191-9 .

Linki zewnętrzne