Wikipedista:Kolarp/DIGITAL Command Language
![]() | |
Paradigma | imperativní |
---|---|
Autor | Digital Equipment Corporation[1] |
Vývojář | VMS Software Inc. (VSI)[2] |
Ovlivněn jazyky | BASIC |
Ovlivnil jazyky | PowerShell |
OS | RSTS/E, RSX-11, RT-11, OpenVMS, VAXELN, MICA |
Digital Command Language (DCL) je standardní interpret příkazů používaný v mnoha operačních systémech firmy Digital Equipment Corporation. DCL má kořeny v systémech IAS, TOPS-20, a RT-11 a byl implementován jako standard ve většině operačních systémů firmy DEC, především RSX-11 a RSTS/E, ale nerozvinutější implementace pochází z VAX/VMS (později OpenVMS). DCL je po roce 2020 jako jedna ze součástí OpenVMS vyvíjen firmou VMS Software, Inc. (VSI).[3]
DCL je skriptovací jazyk, který vznikl v době, kdy se intenzivně používal programovací jazyk Fortran. Přesto DCL podporuje několik datových typů, včetně řetězců, celých čísel, bitových polí, polí a logických hodnot, nemá však podporu čísel s pohyblivou řádovou čárkou. Pro přístup k systémovým službám API jádra OpenVMS slouží lexikální funkce, které poskytují stejnou funkčnost jako jejich protějšky v kompilovaných jazycích a umožňují skriptům získat informace o stavu systému. DCL umožňuje používat podmíněný příkaz IF-THEN-ELSE, přístup k všem typům souborů, které podporují Record Management Services (RMS) včetně streamů, indexovaných, a sekvenčních souborů, ale nemá žádné konstrukce pro vytváření cyklů; cykly se musí programovat pomocí příkazů IF a GOTO.
DCL je dostupný i pro jiné operační systémy:
- VCL a VX/DCL pro Unix,
- VCL pro MS-DOS, OS/2 a Microsoft Windows,
- PC-DCL[4] a Open DCL pro Windows/Linux
- a Accelr8 DCL Lite pro Windows.[5]
DCL je základem jazyka XLNT pro Microsoft Windows v podobě kombinace interpretu a IDE-WSH s funkcionalitou CGI, který od roku 1997 dodává firma Advanced System Concepts Inc.
Analyzátor příkazového řádku
[editovat | editovat zdroj]Analyzátor příkazového řádku v OpenVMS tvoří běhová knihovna (CLI$
), kterou lze použít v uživatelských aplikacích, které tak mohou využívat rozhraní příkazového řádku známé z operačního systému i pro vlastní ovládání. Příkazový řádek musí začínat jménem příkazu (anglicky verb, doslova sloveso), za kterým může být až 8 parametrů (argumentů) nebo kvalifikátorů (v terminologie systému Unix, volby nebo přepínače), který začínají znakem '/'. Před lomítkem nemusí být na rozdíl od Unixu mezera (podobně jako v DOSu). Kvalifikátory mohou být poziční (které ovlivňují parametr zapsaný za nimi nebo před nimi) nebo nepoziční (které mohou být použity kdekoli na příkazovém řádku). Většina kvalifikátorů poziční nejsou. Kvalifikátorům může být také přiřazena jednoduchá nebo složená hodnota. Jména příkazů a kvalifikátorů lze zkracovat. Parametry mohou být celá čísla nebo alfanumerický text.
V DCL příkazech se nerozlišují malá a velká písmena a mohou být zadány libovolnou kombinací malých a velkých písmen; v dokumentaci jsou však příkazy a kvalifikátory obvykle uváděny velkými písmeny.
Příkaz operačního systému může vypadat takto:
set audit /alarm /enable=(authorization, breakin=all)
show device /files $1$DGA1424:
Druhý příkaz show je možné napsat také jako:
sh dev $1$DGA1424:/fil
Některé implementace DCL, například v OpenVMS, umožňují zadávat libovolně zkrácená jména příkazů, pokud je zachována jejich jednoznačnost (například příkaz SHOW
může být zkrácen až na SH
– při zadání S
už by se mohlo jednat i o příkaz SET
). Ostatní implementace, například pro RSX-11, povolují zkracování jmen příkazů nejvýše na tři znaky.
Mnoho operačních systémů používá seznam adresářů, ve kterých se vyhledávají programy spouštěné pro vykonání určitého příkazu. Do DCL byla tato vlastnost zavedena až od OpenVMS verze V6.2 v podobě logického jména DCL$PATH
, jehož hodnotou je seznam adresářů (oddělených čárkami), v nichž DCL hledá soubory s příkazovými procedurami (se jménem příkaz.COM) a spustitelné programy (se jménem příkaz.EXE).
Standardním způsobem, který funguje ve všech verzích DCL je explicitní deklarace příkazů, buď pomocí definic CLD (Command Definition Language), nebo definovaných jako foreign symbol (cizí symbol). Většina nativních příkazů OpenVMS je definována pomocí CLD souborů, které se překládají programem CDU, Command Definition Language, a ukládají do DCL 'tabulky' – implicitně do SYS$LIBRARY:DCLTABLES.EXE
, ale procesy mohou používat své vlastní tabulky – a může pak být vyvolaný by uživatel. Například definice příkazu FOO
, který může mít kvalifikátor /BAR
a je implementován programem SYS$SYSEXE:FOO.EXE
může používat CLD soubor s tímto obsahem:
DEFINE VERB FOO
IMAGE "SYS$SYSEXE:FOO.EXE"
QUALIFIER BAR
Pokud uživatel zadá příkaz FOO
nebo FOO/BAR
, bude vyvolán binární program SYS$SYSEXE:FOO.EXE
. Command Definition Language podporuje mnoho typů hodnot kvalifikátorů, například zadání datumů a jmen souborů, a umožňuje, aby při uvedení určitého kvalifikátor byl spuštěn jiný program – jako je tomu v případě příkazu CREATE
pro vytvoření souboru a CREATE/DIRECTORY
pro vytvoření adresáře.
Druhou (jednodušší, ale méně flexibilní) metodou, která se podobá příkazovým aliasům v Unixu, je definovat příkazy jako cizí příkazy. Například následující definice symbolu foo
:
foo :== $sys$sysexe:foo.exe
zajistí, že příkaz FOO
vyvolá program $sys$sysexe:foo.exe
, přičemž příkaz může mít libovolné parametry, které budou doslovně předány programu, například foo -v
. Tato metoda se často používá pro programy přenesené z Unixu a dalších systémů od jiných firem. V programech v jazyce C jsou parametry dostupné pomocí parametrů funkce main
zpravidla nazývaných argc
a argv
.
Skriptování
[editovat | editovat zdroj]Psaní skriptů v DCL se podobá použití jiných skriptovacích jazyků. Před každým DCL příkazem ve skriptu musí být symbol dolar; ostatní řádky jsou považovány za standardní vstup předchozího příkazu. Například pro vypsání jednoho nebo více řádků textu na obrazovku lze použít příkaz TYPE tímto způsobem:
$ TYPE SYS$INPUT:
Příklad použití příkazu TYPE
v jazyce DCL.
$ EXIT
Nepřímé odkazy na proměnné
[editovat | editovat zdroj]V DCL je možné používat pole, na která se odkazuje pomocí přeložených symbolů. To umožňuje programátorovi vytvářet datové struktury s libovolným počtem rozměrů, která budou indexována hodnotami symbolů DCL.
$ i = 1
$ prom'i' = "modra"
$ i = 2 $ prom'i' = "zelena"
$ j = 1
$ barva = prom'j'
$ duha'barva' = "cervena"
$ barva = prom'i'
$ duha'barva' = "zluta"
V tomto příkladě bude proměnná duhamodra
mít hodnota „cervena“, a duhazelena
hodnotu „zluta“.
Příkazy
[editovat | editovat zdroj]Níže je uveden seznam nejpoužívanějších DCL příkazů, které jsou dostupné v příkazovém řádku systému OpenVMS.[2]
Lexikální funkce
[editovat | editovat zdroj]Lexikální funkce poskytují funkce pro práci s řetězci a přístup k datům operačního systému
Výběr lexikálních funkcí:
F$EXTRACT(start,délka,řetězec)
– vrátí podřetězec zadané délky od od zadané pozice (počítáno od 0)F$CVTIME
– získat informace o datu/čase, napříkladYEST_DOW=F$EXTRACT(0,3,F$CVTIME(DATE_EXPR,,"WEEKDAY"))
F$ELEMENT(0," ",ABC_DEF)
– třetí parametr rozdělí v místě oddělovačů zadaných druhým parametrem na položky a vrátí položku čísla daného prvním (číslováno od 0) – proABC_DEF = "ABC DEF"
vrátí"ABC"
F$SEARCH
– ověří existenci souboru zadaného jména, vrátí prázdný řetězec (""), pokud soubor neexistujeF$LOCATE(co,kde)
– vrátí pozici prvního výskytu podřetězceco
v řetězcikde
(počítáno od 0) nebo délku řetězcekde
, pokud se podřetězec v řetězci nevyskytujeF$SetPRV("BYPASS,CMKRNL,ALTPRI")
– přidělí oprávnění pro přístup k určitým funkcím systému
Odkazy
[editovat | editovat zdroj]Reference
[editovat | editovat zdroj]V tomto článku byl použit překlad textu z článku DIGITAL Command Language na anglické Wikipedii.
- ↑ VAX/VMS Software Language and Tools Handbook [online]. bitsavers.org, 1985 [cit. 2020-12-31]. Dostupné online.
- ↑ a b VSI OpenVMS User's Manual [online]. VSI, July 2020 [cit. 2021-01-27]. Dostupné online.
- ↑ Software Product Description and QuickSpecs - VSI OpenVMS Version 8.4-2L1 for Integrity servers [online]. VMS Software Inc., July 2019 [cit. 2021-01-02]. Dostupné online.
- ↑ MichelValentin/PC-DCL [online]. GitHub, 2022-05-29. Dostupné online.
- ↑ Comparison of PC-DCL vs. Open DCL Lite [online]. Porovnání Valentinova PC-DCL a Accelr8 Open DCL Lite. Dostupné online.
Literatura
[editovat | editovat zdroj]- Paul C. Anagnostopoulos; Steve Hoffman, 1998. Writing Real Programs in DCL. 2. vyd. [s.l.]: Digital Press. ISBN 1-55558-191-9.
Související články
[editovat | editovat zdroj]Externí odkazy
[editovat | editovat zdroj]