Digital Command Language - Biblioteka.sk

Upozornenie: Prezeranie týchto stránok je určené len pre návštevníkov nad 18 rokov!
Zásady ochrany osobných údajov.
Používaním tohto webu súhlasíte s uchovávaním cookies, ktoré slúžia na poskytovanie služieb, nastavenie reklám a analýzu návštevnosti. OK, súhlasím


Panta Rhei Doprava Zadarmo
...
...


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

Digital Command Language
 ...
Digital Command Language
Paradigmaimperativní
AutorDigital Equipment Corporation[1]
VývojářVMS Software Inc. (VSI)[2]
Ovlivněn jazykyBASIC
Ovlivnil jazykyPowerShell
OSRSTS/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ů

Podrobnější informace naleznete v článku Files-11.

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.






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.

Your browser doesn’t support the object tag.

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