A | B | C | D | E | F | G | H | CH | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
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 interpret příkazů a skriptovací jazyk 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). Firma Digital Equipment Corporation byla v roce 1998 převzata firmou Compaq, která se v průběhu let 2002–2004 sloučila s firmou Hewlett-Packard, ale podpora některých systémů stále pokračuje. Po roce 2020 je DCL 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.
Základní vlastnosti
DCL lze používat jak pro interaktivní práci, tak pro psaní příkazových skriptů. DCL rozeznává několik datových typů: řetězce, celá čísla, bitová pole, pole a logické hodnoty. Neumí pracovat s čísly v pohyblivé řádové čárce. Funkce operačního systému OpenVMS zpřístupňuje pomocí lexikálních funkcí, které se chovají stejně jako v kompilovaných programovacích jazycích. DCL umí pracovat s různými typy souborů systému RMS – stream, indexovaný a sekvenční soubor. DCL obsahuje řídicí konstrukci IF-THEN-ELSE, ale neobsahuje příkazy cyklu, které se musí naprogramovat pomocí příkazu GOTO.
V dokumentaci jsou obvykle příkazy a parametry psány velkými písmeny, ale DCL malá a velká písmena nerozlišuje. Příkazový řádek začíná jménem příkazu. Implementace DCL v OpenVMS umožňuje, aby příkazy byly zkráceny na libovolnou délku pokud je možné je vzájemně odlišit, jiné implementace DCL (např. v RSX-11) vyžadují aspoň první tři znaky jména příkazu. Místo příkazu DIRECTORY je možné psát DIR, DIRE, DIREC, atd.
Pro modifikaci nebo upřesnění, jak se má příkaz provést se používají tzv. kvalifikátory /SLOVO, které není nutné oddělovat mezerou od jména příkazu a jiných parametrů. Na pořadí kvalifikátorů a parametrů většinou nezáleží. Některé kvalifikátory umožňují zadat jednu nebo více hodnot /SLOVO=hodnota; více hodnot se uzavírá do závorek:
DIFF /COM=EXCL /IGN=(COMMENTS,BLANK_LINES) soubor1 soubor2
Některé příkazy akceptují na místě parametru tvořeného jménem souboru několik jmen oddělených čárkou (před i za čárkou mohou ale nemusí být mezery).
Knihovna CLI pro zpracování příkazových řádků může být připojena i ke kompilovaným programům, což dodává prostředí systému konzistentní vzhled a chování.
Výzva DCL v interaktivním režimu je znak $ (lze změnit příkazem SET PROMPT = "řetězec").
Skript LOGIN.COM
Při přihlášení uživatele k systému OpenVMS se provede příkazový skript LOGIN.COM v uživatelově domovském adresáři. Tento skript je možné použít pro nastavení symbolů a logických jmen. Pro obsah skriptu platí standardní pravidla pro příkazové skripty v OpenVMS (mj. každý příkazový řádek musí začínat znakem dolar).
Příkaz HELP
Příkaz HELP poskytuje nápovědu. Je možné mu zadat jako parametry přímo kus příkazového řádku a HELP vypíše nápovědu k dalším parametrům:
HELP SEARCH
HELP SEARCH /EXACT
S parametrem /MESSAGE vypisuje HELP nápovědu k názvům chyb:
HELP /MESSAGE ACCVIO
HELP /MESSAGE %SYSTEM-F-ACCVIO
Je také možné vypsat nápovědu k číslu chyby (v prvním příkazu je zadáno číslo signálu v desítkové soustavě, ve druhém v šestnáctkové):
HELP /MESSAGE /STATUS=98954
HELP /MESSAGE /STATUS=%x1828A
Příkazy OpenVMS
Příkazy
K nejpoužívanějším příkazům DCL příkazů, které jsou dostupné v příkazovém řádku systému OpenVMS, patří:[2]
COPY, CREATE, DELETE, DIR, EDIT, LOGOUT, PRINT, RENAME, SET, SHOW, TYPE
Následující tabulka shrnuje nejužitečnější příkazy DCL s často užívanými parametry:
Příkaz | Význam |
---|---|
TYPE soubor | vypíše soubor na obrazovku |
TYPE/PAGE soubor | vypisuje soubor na obrazovku po obrazovkách; ukončení klávesou Q |
TYPE /PAGE NLA0: | smaže obrazovku |
PRINT soubor | vytiskne soubor na tiskárnu |
DELETE soubor | smaže soubor (stačí DEL) |
PURGE soubor | smaže starší verze souboru (/BEFORE= pro upřesnění které) |
COPY co kam | zkopíruje soubor nebo soubory, kam je povinné (použít např. *.*) |
RENAME co kam | přejmenuje nebo přemístí soubor nebo soubory |
MC DFU SEARCH DSA0 /FILE=jméno | Rychlé hledání souborů, DSA0 je jméno disku, ve jméně mohou být použity žolíky |
EDIT soubor | editor, fungují kursorové klávesy, pomocí Ctrl-B nebo klávesou PF4 (minus na numerické klávesnici) se vstupuje do příkazového režimu, zde příkazy HELP, pohyb PgUp, PgDn, ukončení Enter, nápověda ke konkrétnímu příkazu: slovo Enter, QUIT ukončení bez uložení, EXIT – uložení a ukončení |
HELP | nápověda |
SET PASSWORD | změna hesla |
DIR | výpis obsahu adresáře |
DIR/SIZE | totéž včetně velikostí souborů v blocích |
DIR/SIZE=(UNITS=BYTES) | výpis obsahu adresáře s velikostmi souborů v bytech (KB, MB); SET PROCESS /UNITS=BYTES zapne tento výpis bez nutnosti psát parametr v příkazu DIR |
DIR/PROT | výpis adresáře s právy |
DIR/OWNER | výpis adresáře s vlastníkem souborů |
SEARCH soubor text | hledá zadaný text v souboru nebo souborech vyhovujících zadání (lze používat žolíky i ... pro prohledání podstromu |
SEARCH soubor t1,t2 /MA=AND/WIN=10 | hledá řádky obsahující řetězce t1 a t2, vypíše okolních 10 řádků |
CREATE jméno | vytvoří soubor, spustí editor pro zadání jeho obsahu, ukončení pomocí Ctrl-Z |
CREATE/DIR | vytvoří adresář; k adresáři nemá uživatel právo delete, pro smazání je nutné zadat set file/prot=(o:rwed) jméno.dir |
SET DEFAULT cesta | změna aktuálního adresáře |
SHOW DEFAULT | vypsání jména aktuálního adresáře |
SET PROT=práva soubor | nastavení práv |
SET FILE/PROTECTION=(s:rwed,o:rwed,g:re,w) soubor | nastavení práv s: je systém, o: je vlastník, g: skupina, w: ostatní (world) rwed = read, write, execute, delete |
WAIT hh:mm:ss.cc | čeká zadaný čas (jako sleep v Unixu) |
SHOW DEVICES | vypíše stav zařízení |
SHOW TERMINAL | vypíše nastavení terminálu |
SET TERMINAL volby | nastavení terminálu:
/INSERT – režim vkládání /PAGE=n – počet řádků na stránce /WIDTH=n – počet znaků na řádku |
SORT /KEY=(volby) vstup výstup | třídění řádků souboru |
DEFRAG SHOW /VOLUME DSA0: | vypíše stav fragmentace souborů na disku DSA0: (vyžaduje práva k souboru INDEXF.SYS) |
Lze používat žolíky (* libovolná posloupnost znaků, % libovolný znak; za hvězdičkou může následovat další část jména; použít *.*; pro poslední verzi všech souborů, resp. *.*;* pro všechny verze všech souborů).
Převod OpenVMS konstrukcí do Unixu:
Příkaz BACKUP
Příkaz BACKUP slouží nejen k archivaci souborů nebo celých disků na pásky, ale umožňuje také vytvářet archivní soubory s příponou .BCK a kopírovat soubory.
Zkopírování celého podstromu:
BACKUP
Pokud se má kopírovat více souborů, oddělují se jejich jména čárkami. Alternativou je vytvořit soubor obsahující jména souborů, které se mají kopírovat (oddělená mezerami nebo konci řádků) a uvést jeho jméno následované parametrem /INPUT_FILES na místě parametru ODKUD. Pokud se má pracovat s archivem (tj. vytvářet archiv nebo číst archiv), je třeba za jeho jménem napsat parametr /SAVE_SET (stačí zkratka /SAV).
Zkopírování podstromu do archivního souboru (tzv. BACKUP save set):
BACKUP soubor /SAV
Obnovení podstromu ze souboru
BACKUP soubor /SAV kam
Výpis obsahu *.BCK souboru:
BACKUP subor.BCK /SAV /LIST
Kopírování zamčených souborů
BACKUP /IGNORE=INTERLOCK soubor;verze kam
Pokud má *.BCK soubor nastavenou špatnou organizaci souboru, při pokusu o jeho zpracování vypisuje systém chybu NOTSAVESET. Organizaci souboru lze opravit příkazem:
SET FILE /ATTRIB=(RFM:FIX,RAT:NONE,LRL:32256) soubor.BCK
Při archivaci celého stromu adresářů (nebo vybraných souborů ve stromě adresářů) je možné používat na konci cesty tři tečky, které znamenají, že se mají procházet i vnořené adresáře. V tom případě BACKUP do archivů ukládá jména souborů s cestou, ale bez označení disku (resp. bez části před dvojtečkou). Pomocí parametru /SELECT lze vybírat jen některé soubory a pomocí parametru KAM předepisovat, kam se mají rozbalit. Pokud chceme předepsat, že rozbalovaný soubor má vytvořit nejnovější verzi souboru v archivu, je potřeba za jménem souboru napsat středník nebo tečku. Rozbalování vybraných souborů z archivu do oddělených poadaresářů pak může vypadat například takto:
BACKUP ARCHIV.BCK /SAV /SELECT=2020*.* NOVY_DISK:*.*;
BACKUP ARCHIV.BCK /SAV /SELECT=2021*.* NOVY_DISK:*.*;
Příkaz ZIP
Pro OpenVMS existuje program ZIP pro vytváření .ZIP archivů. Pokud se mají zachovat OpenVMS atributy souborů, které zajistí jejich bezproblémové rozbalení a používání na jiném systému, je nutné používat parametr "-V" (parametr musí být v apostrofech, jinak ho systém vezme jako malé -v):
ZIP "-V" archiv.ZIP soubor soubor ...
UNZIP "-V" archiv.ZIP
Starší verze programu ZIP neumí pracovat s adresářovými stromy.
Příkaz MC DFU
Příkaz DFU nebo MC DFU zpřístupňuje diskové a souborové utility, které zahrnují prohledávání a mazání adresářových stromů, obnovování smazaných souborů, změnu atributů souborů, hledání a obnovování adresářů, hledání souborových aliasů, kontrolu míry fragmentace a defragmentaci souborů, analýzu a opravu struktury systému souborů a analýzu, defragmentaci, zkrácení nebo prodloužení souboru INDEXF.SYS.
Příkaz SHOW DEVICES
Příkaz SHOW DEVICES (lze zkrátit na SH DEV) vypisuje informace o zařízeních. Jako parametr lze použít jméno zařízení nebo jeho začátek, takže např. SHOW DEV D vypíše informace o discích (u disků se vypisuje i jmenovka disku, počet volných bloků, počet transakcí a počet připojení disku). S parametrem /FULL vypisuje podrobnější informace, s parametrem /FILES vypisuje seznam otevřených souborů včetně jména a PID procesu, který soubor používá – podobně jako unixový příkaz lsof.
Příkaz SORT
Pro setřídění řádků souboru slouží příkaz SORT:
SORT /KEY=(volby) vstup výstup /NODUPLICATES
Jméno vstupního a výstupního souboru musí být vždy zadáno; pokud se má třídit výstup jiného příkazu je nutné použít
PIPE příkaz parametry | SORT SYS$INPUT SYS$OUTPUT
Nepovinný parametr KEY má následující syntaxi: /KEY=(POS:<pozice>,SIZE:<délka>,{DECIMAL|CHARACTER},{ASCENDING|DESCENDING}). Při použití parametru /NODUPLICATES budou odstraněny opakující se řádky.
Jména souborů
Systém souborů: Files-11 – vývojové varianty:
- ODS-1: plochý systém souborů pro RSX-11
- ODS-2: hierarchický systém souborů pro VMS, max. 8 úrovní adresářů, ve jménech souborů povolena pouze velká písmena angl. abecedy, číslice, podtržení, pomlčka a dolar, max. 39 znaků jméno a 39 znaků přípona
- ODS-5: rozšířená verze ODS-2 pro Alphy a Itanium, ve jménech souborů povoleny Unikódové znaky, rozlišuje malá velká písmena, dlouhá jména, neomezený počet úrovní adresářů
- (ODS-3 je podpora pro ISO 9660 CD-ROM pro Files-11 a ODS-4 podpora pro High Sierra CD-ROM)
Struktura jména souboru v rámci clusteru:
NODE"user password"::device:filename.type;ver
Libovolná část jména může být vynechána, existují implicitní hodnoty pro jednotlivé části jména (nahrazuje funkci aktuálního adresáře v jiných systémech): např. FILE.EXT je poslední verze souboru FILE.EXT na aktuálně implicitním disku v adresáři . DIR1 je podadresář MFD (master file directory = kořenový adresář), DIR2 je podadresářem DIR1. MFD libovolného disku je označováno .
Zápis | Význam |
---|---|
000000 | kořenový adresář (MFD) |
cesta | absolutní cesta (začíná v kořenovém adresáři) |
dir.sub.subsub | oddělovač jmen adresářů je tečka |
aktuální adresář | |
.cesta | relativní cesta (začíná v aktuálním adresáři) |
- | nadřízený adresář |
-.- | adresář o 2 úrovně výše |
adresář... | tři tečky znamenají včetně podadresářů |
Každý proces má implicitní hodnoty pro jméno disku a adresář (bohužel na rozdíl od MS-DOSu stejný pro všechny disky), a většina systémových rutin ve OpenVMS je umožňuje používat včetně přípony souboru; např. pro příkaz TYPE je implicitní přípona ".LIS", takže příkaz TYPE F bude pracovat se souborem F.LIS. Podobně při překladu programu v jazyce C:
EDIT SOUBOR.C
CC SOUBOR
LINK SOUBOR
TYPE SOUBOR
DIR SOUBOR
RUN SOUBOR
CC překládá SOUBOR.C a vytváří SOUBOR.OBJ (a protokol o překladu SOUBOR.LIS, který lze vypsat příkazem TYPE SOUBOR), LINK linkuje SOUBOR.OBJ a vytváří SOUBOR.EXE, DIR vypíše všechny soubor SOUBOR.*, RUN spouští SOUBOR.EXE.
Každý soubor má číslo verze: nový soubor má verzi 1. Při úpravě se soubor nepřepisuje, ale vytvoří se soubor s číslem verze o 1 větším; staré verze se mažou až po dosažení určitého limitu (který se nastavuje příkazem SET FILE/VERSION_LIMIT). Max. číslo verze dané architekturou je 32767. Při zápisu jména souboru znamená ;0 nebo jenom středník poslední verzi souboru. Středník následovaný kladným číslem je zadaná verze souboru. Středník následovaný záporným číslem je (n+1)-ní poslední verze (;-1 je předposlední verze, ;-2 je předpředposlední). Středník následovaný hvězdičkou znamená všechny verze.
Při vytváření jména souboru obsahujícího znaky, které nejsou dovoleny v ODS-2, se před problémovými znaky píše znak "^": na soubor se jménem "file.tar.gz;1" na disku s ODS-5 je třeba se odkazovat jako na "file^.tar.gz" jméno je "file.tar", přípona ".gz".
DCL jako programovací jazykeditovat | editovat zdroj
Digital Command Language lze používat jako programovací jazyk, který disponuje proměnných několika typů s rozlišováním lokálních a globálních proměnných, umožňuje emulovat pole a asociativní pole, umí vyhodnocovat aritmetické výrazy, má operátory a funkce pro práci s řetězci, disponuje jednoduchými řídícími konstrukcemi (podmíněný příkaz, GOTO, procedury/funkce s parametry), umožňuje číst a vytvářet textové soubory.
Symboly jako proměnnéeditovat | editovat zdroj
Roli proměnných plní v DCL symboly. Jméno symbolu může oficiálně obsahovat velká písmena anglické abecedy, číslice, znaky podtržítko _
a dolar $
; nesmí začínat číslicí. Malá písmena se automaticky převádějí na velká. Neoficiálně se ve jménu symbolu mohou vyskytovat některé další znaky, jako složené závorky {
, }
, svislá čára |
, ampersand &
, zpětné lomítko \
, zpětný apostrof `
, vlnovka ~
. Jméno symbolu nemůže obsahovat mezeru; pro vytváření víceslovných jmen symbolů lze místo mezer používat znaky podtržítko. Operační systém používá místo mezery znak dolar – uživatel by neměl vytvářet jména obsahující znak dolar, aby nedošlo ke konfliktu se jmény používanými systémem.
Symboly se nijak nedeklarují, pro nastavení hodnoty symbolu se používá přiřazení:
jmeno = výraz
Výraz může být číselný a obsahovat číselné konstanty (jde o 32bitová čísla se znaménkem, tj. v rozsahu -2147483648 až 2147483647, zápis čísla v osmičkové soustavě má před číslicemi %0
, v šestnáctkové %x
nebo %X
[4]), operátory +
, -
, *
, a /
, jména symbolů (která se při vyhodnocování nahradí jejich hodnotami) a lexikální funkce; nebo řetězcový, který může obsahovat řetězcové konstanty uzavřené v uvozovkách, operátory +
a -
, jména symbolů a lexikální funkce. Pro přiřazení řetězce do symbolu lze použít také řetězcové přiřazení s :=
:
jmeno := řetězec
Řetězec v tomto případě nemusí být uzavřen v uvozovkách. Pak však budou malá písmena převedena na velká, úvodní a koncové mezery vypuštěny, ostatní posloupnosti mezer nahrazeny jednou mezerou a části textu uzavřené v jednoduchých apostrofech interpretovány jako vyhodnocení symbolů (nahrazeny hodnotou symbolu).
Lokální a globální symbolyeditovat | editovat zdroj
Pomocí jednoduchého rovnítka se vytvářejí lokální symboly; globální symboly se vytvářejí pomocí dvojitého rovnítka:
jmeno == výraz
případně
jmeno :== řetězec
Lokální symboly zanikají při opuštění příkazové procedury (*.COM skriptu) nebo procedury definované pomocí SUBROUTINE
a volané pomocí CALL
, ve vnořených voláních příkazových procedur jsou však dostupné. Pokud existuje lokální i globální symbol téhož jména, je globální symbol lokálním překryt.
Typy hodnoteditovat | editovat zdroj
U hodnot symbolů se rozlišuje typ – například operátor +
pracuje s řetězci jinak než s čísly – jsou-li oba operandy řetězce, pak je spojí (zřetězí), je-li alespoň jeden číslo, pak je sečte. Podobně operátor -
pro dva řetězce vrátí první řetězec, z něhož byl vypuštěn druhý, zatímco je-li alespoň jeden z operandů číslo, provede odčítání. Proto výstup následující ho skriptu:
$ SAY = "WRITE SYS$OUTPUT"
$! Toto jsou řetězce:
$ STR1 = "123"
$ STR2 = "321"
$ STR3 = "123 ABC"
$! Funkce F$INTEGER převede řetězec na číslo:
$ NUM1 = F$INTEGER(STR1)
$! Toto je číslo:
$ NUM2 = 321
$! Pokud řetězec obsahuje, něco jiného než číslo, vrátí F$INTEGER nulu:
$ NUM3 = F$INTEGER(STR3)
$ SAY "STR1: ''STR1'"
$ SAY "STR2: ''STR2'"
$ SAY "STR3: ''STR3'"
$ SAY "NUM1: ''NUM1'"
$ SAY "NUM2: ''NUM2'"
$ SAY "NUM3: ''NUM3'"
$ SAY "STR1 + STR2: ", STR1 + STR2
$ SAY "STR1 + NUM2: ", STR1 + NUM2
$ SAY "NUM1 + STR2: ", NUM1 + STR2
$ SAY "NUM1 + NUM2: ", NUM1 + NUM2
$ SAY "NUM1 + STR3: ", NUM1 + STR3
$ SAY "STR3 - STR1: ", STR3 - STR1
$ SAY "STR3 - NUM1: ", STR3 - NUM1
$ SAY "Protoze:"
$ SHOW SYMBOL STR1
$ SHOW SYMBOL STR2
$ SHOW SYMBOL STR3
$ SHOW SYMBOL NUM1
$ SHOW SYMBOL NUM2
$ SHOW SYMBOL NUM3
je takovýto:
STR1: 123 STR2: 321 STR3: 123 ABC NUM1: 123 NUM2: 321 NUM3: 0 STR1 + STR2: 123321 STR1 + NUM2: 444 NUM1 + STR2: 444 NUM1 + NUM2: 444 NUM1 + STR3: 123 STR3 - STR1: ABC STR3 - NUM1: -123 Protoze: STR1 = "123" STR2 = "321" STR3 = "123 ABC" NUM1 = 123 Hex = 0000007B Octal = 00000000173 NUM2 = 321 Hex = 00000141 Octal = 00000000501 Zdroj:https://cs.wikipedia.org?pojem=Digital_Command_Language
Text je dostupný za podmienok Creative Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších podmienok. Podrobnejšie informácie nájdete na stránke Podmienky použitia.
Antropológia
Aplikované vedy
Bibliometria
Dejiny vedy
Encyklopédie
Filozofia vedy
Forenzné vedy
Humanitné vedy
Knižničná veda
Kryogenika
Kryptológia
Kulturológia
Literárna veda
Medzidisciplinárne oblasti
Metódy kvantitatívnej analýzy
Metavedy
Metodika
Text je dostupný za podmienok Creative
Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších
podmienok.
Podrobnejšie informácie nájdete na stránke Podmienky
použitia.
www.astronomia.sk | www.biologia.sk | www.botanika.sk | www.dejiny.sk | www.economy.sk | www.elektrotechnika.sk | www.estetika.sk | www.farmakologia.sk | www.filozofia.sk | Fyzika | www.futurologia.sk | www.genetika.sk | www.chemia.sk | www.lingvistika.sk | www.politologia.sk | www.psychologia.sk | www.sexuologia.sk | www.sociologia.sk | www.veda.sk I www.zoologia.sk