Fodor Zsuzsa

 

HP OpenVMS operációs rendszer

Felhasználói tanfolyam

 

Egyetemi jegyzet

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PTE TTK Informatikai és Általános Technika Tanszék

Pécs, 2003.

 

 

Tartalomjegyzék

 

 

Jelölési konvenciók          5

Előszó            6

1. OpenVMS áttekintés          8

1.1. Hardver környezet          8

1.2. Az OpenVMS szerkezete         9

1.3. A processz          10

1.4. Hálózati eszközök         11

1.5. A rendelkezésre álló dokumentáció      12

 

2. Bejelentkezés, kijelentkezés, elemi műveletek     13

2.1. Bejelentkezés          13

2.2. Kijelentkezés          14

2.3. A terminál és billentyűzete       14

2.4. Parancsok használata        15

2.5. A Help           15

 

3. Az adatkezelő rendszer        17

3.1. Lemez struktúra                                                                17

3.2. A Files-11 directory szerkezet       17

3.3. A filedefiníció         18

3.3.1. A filespecifikáció formája         18

3.3.2. Alapértelmezések a filespecifikációkban       20

3.3.3. A csillag (wildcard) konvenciók        21

3.4. Az RMS          23

3.4.1. File attribútumok          24

3.4.2. Rekord attribútumok          24

3.4.3. Fileműveletek           25

3.4.4. RMS makrók és rendszerszolgáltatások       27

 

4. A védelmi rendszer         28

4.1.  Az objektumok védelme, az UIC      28

4.2.  ACL szerinti védelem        31

4.3.  Privilégiumok         32

4.4.  Erőforráskvóták         34

4.5.  Lemezkvóta          36

 

5. A DCL alapjai           37

5.1. A DCL parancsok elemei        37

5.1.1. A parancssor            37

5.1.2. A hibaüzenetek           40

5.1.3. Terminálhasználat          40

5.2. Logikai nevek         43

5.2.1. A logikai nevek kiértékelése         44

5.2.2. Precedencia és elérési mód         44

5.2.3. A default logikai nevek és logikai név táblák      45

5.3. Szimbólumok és kifejezések       49

5.3.1. A szimbólumok definiálása         50

5.3.2. A szimbólumok behelyettesítése        52

5.3.3. A kifejezések           54

5.4. A dátum és idő kezelése        57

5.4.1. Az abszolút időpont          57

5.4.2. A delta időpont          58

5.4.3. Az összetett időpont          59

 

6. A szövegszerkesztők         61

6.1.  A DECTPU          62

6.1.1. Az EVE használata             62

6.1.2. Az EVE billentyűdefiníciói         64

6.1.3. Néhány további EVE parancs         68            

6.2. Az EDT              72

6.2.1. Az EDT üzemmódjai              72

6.2.2. A keypad billentyűzet parancsok        74

6.2.3. További parancsok             78

 

7. A Mail utility          82

7.1. A legfontosabb üzenetkezelő parancsok     82

7.2. Az irattartók          86

7.3. Címzési módok          87

7.4. Egyéb hasznos parancsok       89

 

8. A Phone            93

 

9. Rendezés: a Sort és Merge        95

9.1. Rendezési kulcsok         95

9.2. Kollatálási sorrend         97

 

10. A DCL            99

10.1. Néhány gyakran használt DCL parancs     99

10.1.1. Filekezelő parancsok         99

10.1.2.  File tartalmával foglalkozó parancsok     114

10.2. A könyvtári függvények       119

10.3. Programozás DCL-ben: a parancsfileok    128

10.3.1. A parancseljárások formája és végrehajtása     129

10.3.2. I/O egyszerűen: paraméterek, adatok a parancsfileban, szimbólumok

és logikai nevek         131

10.3.3. Terminál I/O DCL parancsokkal       134

10.3.4. Filekezelés          136

10.3.5. Vezérlésátadás és megszakításkezelés      141

10.3.6. A LOGIN.COM          144

 

11. A várakozási sorok        147

11.1. A queue menedzsment elemei      147

11.2. A nyomtatás        150

11.3. Kötegelt feldolgozás       153

11.4. A jobok kezelése        157

 

12. Mentés, helyreállítás       161

12.1.  Mentési technikák       161

12.2. A BACKUP segédprogram      162

12.2.1.  A BACKUP formái         162

12.2.2.  A fontosabb módosítók        167

12.2.3.  Mentési és visszatöltési megoldások      169

 

Irodalomjegyzék         171

Internetes hivatkozások, hasznos oldalak     172

 

 

 

 

Jelölési konvenciók

 

1. Szintaktikus leírások

 

kisbetűs szöveg  Egy fogalmat jelöl egy definícióban (be kell helyettesíteni).

 

NAGYBETŰS SZÖVEG Olyan szintaktikus elem a definícióban, amit változtatás nélkül kell használni.

 

[] A [] között lévő elemek elhagyhatók.

 

<> A <> közötti szöveg valamilyen fogalmat ír le.

 

CTRL/x  Billentyűkombináció: A CTRL és a megadott betű egyidejű lenyomásával hozzuk létre.

 

... Az utolsó elem tetszőleges számú ismétlése megengedett.

 

 

2. Szöveges részek

 

Mivel a számítástechnika dokumentációinak többsége angol nyelvű, ezért a magyar fogalmak mellett zárójelben az angol megfelelőt is feltüntetem, illetve ha nincs elterjedt magyar elnevezés, akkor az angolt használom.

 

A könyvben szereplő minták esetén a $ jel jelzi a DCL parancssor kezdetét. Szerepelhet esetleg a segédprogram promptja, ha annak szóló parancs szerepel. A képernyőre írható parancsok és az outputok – hasonlóan a VMS dokumentációs CD tartalmához – kék színűek. Például

 

$ SHOW PROCESS

 

MAIL>

 

A példák – ugyanúgy, mint a szöveg többi része – általában 12 pont nagyságúak. Ha valamely példa sorai túl hosszúak, és a termináltól eltérően tördelve jelennének meg a szövegben, akkor kisebb karaktereket használok, de ennek semmi egyéb jelentősége nincs.

 

 

 

 

Előszó

 

Ez a jegyzet a PTE TTK Informatika és Általános Technika Tanszékének felkérésére készült, azzal a céllal, hogy a számítástechnika, programozó matematikus, technika és műszaki informatika szakos hallgatók nagyobb betekintést nyerjenek a nagyszámítógépek világába.

Az utóbbi évtizedben a PC, a hálózat, az Internet a mindennapi élet részévé vált. Nagyon sok, számítástechnikához minimális mértékben értő ember is használja őket munkaeszközként anélkül, hogy foglalkozna a működésükkel. S ez így helyes: Autózunk anélkül, hogy pontosan le tudnánk írni a robbanómotor működését, felkapcsoljuk a villanyt, és nem foglalkozunk az elektronokkal, tévézünk, telefonálunk a hullámok terjedésének ismerete nélkül – a példák vég nélkül sorolhatók.

 

Célszerű viszont, ha a számítástechnikával a diploma megszerzése után bármilyen formában foglalkozók minél szélesebb alapokat kapjanak, és a Linux és Windows mellett egy kimondottan nagyszámítógépes rendszerrel is megismerkedjenek – esetleg egy sorozat első elemeként.

 

A VMS operációs rendszert 1975-77-ben fejlesztette a Digital Equipment Corporation (DEC), és 1978-ban publikálta a VAX családon futó1.0 verzióját, majd folyamatosan új funkciókkal bővítette.. 1992-ben létrehozták VMS Alpha processzoron működő változatát. 1998-ban a Compaq megvásárolta a DEC-et, de a termékek jelentős részét – köztük a VMS-t – továbbvitte. 2002-ben a Hewlett-Packard Corporation magába olvasztotta a Compaq-ot, s ezzel a világ egyik legjelentősebb IT gyártója és szolgáltatója lett. Az immár HP OpenVMS nevű rendszer fejlesztése változatlanul folytatódik: A Compaq által eltervezett és megkezdett, Itánium II-ön futó VMS az eredeti tervek szerint megjelent és 2004-ben már kereskedelmi forgalomba kerül, miközben folyamatosan fejlesztik hozzá a - HP és mások által gyártott - szoftvereket is. Ezenkívül a HP és jogelődjei által kötött szerződések több mint tizenöt év további fejlesztést ígérnek. (DII COE, USA Védelmi Minisztérium fejlesztési programja egységesen kezelhető IT eszközök létrehozására.)

 

Miért éppen a HP OpenVMS-t ismerteti ez a tanfolyam? Néhány indokot könnyű felsorolni.

Először is ez a 25 éve élő rendszert a számítógépek harmadik generációján fejlesztik már, és hosszan látható jövője van: A VAX-ok 32 bites, CISC processzorú gépek voltak, az Alpha 64 bites RISC; az Itánium ismét új technológiát jelent (EPIC, Explicitly Parallel Instruction Computing).  A teljesítményskála is igen széles, a néhány felhasználót kiszolgáló gépektől a mainframekig terjed; az alkalmazások változtatás nélkül vihetők át egy új konfigurációra.

Továbbá a VMS a cluster technológiával, stabilan megépített rendszerével egyedülállóan alkalmas a folyamatos és gazdaságos működésre: Megfelelően tervezett rendszereken leállás nélkül végezhető mentés, szoftverinstallálás, karbantartás vagy módosítás (upgrade), valamint a konfiguráció lényeges változtatásai (új gépek, perifériák ki- vagy beléptetése, hálózati eszközök és technológiák változása, fizikai helyváltoztatás). Létezik 2000 napnál hosszabb ideje folyamatosan működő élő alkalmazás is. Mindehhez nem szükséges kihasználatlan tartalékeszközök jelenléte.

A rendszer biztonságát részben a beépített technikák (automatikus biztonsági beállítások, kifinomult felhasználói paraméter rendszer, ACL), részben a más rendszerekben is használt eszközök biztosítják (ssh, ssl, Kerberos stb.). (A 2001.  DEFCON konferencia véleménye a VMS-ről: cool and unbreakable.)

A VMS rendkívül összetett, sok szolgáltatást nyújtó operációs rendszer: A felhasználói parancsnyelv, a DCL 220-nál több parancsból áll és saját fejlesztésekkel is bővíthető. A napi igényeket szinte teljesen lefedi a 40 segédprogram (mindegyik saját parancsnyelvvel): többek között kommunikáció, mentés, rendezés, szövegszerkesztés, biztonsági szolgáltatások, rendszerelemzés és -változtatás, fileok kezelése lehetséges velük. A filekezelő rendszer akár adatbázis nélkül is alkalmas összetett adatrendszerek kezelésére; a közel 5000, bármely nyelvből hívható rendszerrutin nagyban meggyorsítja a saját fejlesztéseket.

A szokásos 3. és 4. generációs fejlesztői eszközök (programnyelvek, SQL, Java), adatbáziskezelők (Oracle), hálózati szoftverek (TCP/IP, Apache) használhatók a VMS-sel. Több, mint 300 szoftverfejlesztő cég termékei installálhatók a VMS alá (például Oracle, BEA, Legato, Cerner, IDX, Brooks Automation, Sanchez, Wall Street Systems, TECsys Development, MVP, BMC, Computer Associates, Ericom, Logica-CMG, Schlumberger)

VMS-t alkalmaz a biztonságot, megbízhatóságot, gyorsaságot és hatékonyságot igénylő cégek tekintélyes része az államigazgatásban, a pénzügyi szektorban (bankok, tőzsde, szerencsjáték), az egészségügyben; nagy szerepet kap a folyamat- és gyártásirányításban valamint a közlekedésben is. Például VMS-t – is – használ az US Air Force, US Postal Service, Bank Austria, Deutsche Börse, American Stock Exchange, Credit Lyonaise, OMV, SEMA Group, Nokia, Motorola, Indian Railways, INTEL (processzor gyártásirányítás). Magyarországon az APEH, MEH, TÁK, Honvédelmi Minisztérium, Vám és Pénzügyőrség, OTP, Postabank, MKB, Tőzsde, Szerencsjáték RT, MÁV, MATÁV, Westel, Gyógyinfok, MOL Rt, Budapesti Vízmű, Elcoteq, Paksi Atomerőmű, MTI, RTL Klub, Artisjus futtat többek között VMS-t a nagygépes rendszerein.

A HP folytatta a DEC oktatást, tanulást támogató programját: ingyenes hobby vagy oktatási licenc kérhető nem kereskedelmi célú tevékenységhez a VMS-re és további 100 szoftverre. A kisebb teljesítményű VAX-okat, régi Alphákat mostanában selejtezik a cégek – könnyű egy otthoni rendszert nagyon kevés pénzből felépíteni.

 

A fentieken túl még egy előnyt jelenthet a VMS megismerése: Megnőnek az igényeink a biztonság, a stabilitás, a sok szolgáltatást áttekinthetően nyújtó, hatékony rendszerek iránt.

 

Nem szabad azonban elfelejtkezni arról, hogy a VMS robusztus rendszer. Rövid idő alatt csak az alapokat vagy egy-egy részrendszer elemeit lehet megtanulni, nem kevés munkával. Ez a tanfolyam is csak ennyit ígér: Olyan alaptudást, amivel már lényegesen könnyebb az önálló tanulás, és áttekintést egy sok tekintetben egyedülálló operációs rendszerről.

Ezért is fontos, hogy a leendő fejlesztők, döntés-előkészítők és döntéshozók – avagy az őket tanítók – reális ismeretekkel rendelkezzenek.

 

A jegyzetet én írtam, de hálás köszönet illeti mindazokat, akik segítettek, biztattak.

 

 

Fodor Zsuzsa

fodor31@gamma.ttk.pte.hu

 

 

  1. 1. OpenVMS áttekintés 

 

Az OpenVMS többfelhasználós (multiuser), általános célú operációs rendszer, amely lehetővé teszi a rendelkezésre álló erőforrások szabályozott, párhuzamos, egyidőben több feladat között megosztott használatát (multitasking).

A VMS igen sokrétű, összetett szolgáltatásokat nyújt a felhasználók számára, robusztus védelmi rendszere biztosítja, hogy minden processz csak a pontosan körülhatárolt erőforrásokat érheti el, lehetőséget ad az egy gépen belüli és hálózati kommunikációra. Megbízható működése, a különböző platformokon azonos módon futtathatósága lehetővé teszi, hogy igen széles skálán alkalmazzák.

 

A VMS a Virtual Memory System rövidítése, az Open előtag pedig a nyílt rendszer tulajdonságra utal. A VMS-t a Digital Equipment Corporation, DEC (USA) hozta létre 1977-ben. A DEC-et megvásárolta a Compaq, majd a Compaq-ot a Hewlett-Packard Company, így az operációs rendszer teljes neve: HP OpenVMS. A fejlesztésről és fejlődésről bővebbet a

http://h71000.www7.hp.com/openvms

címen olvashatunk.  

 

    1. 1.1. Hardver környezet 

 

Platform (CPU szerint):

 

 

A VMS kezel egy vagy több processzoros rendszert (de egy gépen belül csak egyik fajta CPU lehet).

 

 

Perifériák

 

A VMS alatt minden perifériának egységes neve van. Alapelv: két perifériának az egész clusterben nem lehet azonos neve, ezért formájuk:

A normál felhasználó ezeket a neveket nem tudja változtatni. Úgy kell használnia őket, ahogy a SHOW DEVICE utasításban megjelennek.

 

 

Terminál

 

A rendszer interaktív használata esetén valamilyen végberendezésre van szükségünk, amelyen bejelentkezhetünk. Ez lehet közvetlenül a gépre kapcsolt vagy a hálózaton lévő alfamunerikus vagy grafikus terminál, illetve bármilyen más számítógép, amely képes terminálkapcsolatot létrehozni. A továbbiakban – ha nem félreérthető - terminálnak nevezek minden eszközt, amelyen keresztül megvalósul a bejelentkezés.

 

 

Cluster

 

 

 

    1. 1.2. Az OpenVMS szerkezete 

 

A rendszer elemei

 

 

 

Az operációs rendszerre épülő szoftverek

 

 

Mindez konzisztens formában van egybeépítve: közösen használható, egységes felületű rendszerelemek, azonos formájú és jelentésben is konzisztens felhasználói felületek a VMS minden szolgáltatásánál.

 

 

    1. 1.3. A processz 

 

A VMS bármely erőforrásához csak úgy férhetünk hozzá, rendelkezünk érvényes bejelentkezési joggal (account): egy felhasználói névvel (username) és a hozzá tartozó jelszóval (password). Ezután be kell jelentkeznünk egy terminálról. Bejelentkezéskor az operációs rendszer létrehoz egy környezetet, amely tartalmazza mindazt az információt, amelyre szükség van a rendszer szolgáltatásainak igénybevételekor és a programjaink futtatásához – ezt hívjuk processznek (process). Processz jön létre akkor is, ha egy másik alkalmazás (esetleg egy másik gépről) használja az accountot az erőforrások elérésére.

Az aktuális processzről információk a

 

$ SHOW PROCESS

 

paranccsal (esetleg az /ALL módosítóval bővítve) lekérdezhetők és – részben – különböző DCL parancsokkal módosíthatók. A rendszerben élő összes processz a

 

$ SHOW SYSTEM

 

parancs outputjaként látható.

 

Fontos  processz paraméterek:

$ SET PROCESS/NAME

paranccsal

 

Processz típusok:

 

A rendszerben lévő processzek és fajtáik a

 

 $ SHOW SYSTEM

 $ SHOW USER

 $ SHOW USER /FULL

 $ SHOW USER /NETWORK

 

parancsokkal kérdezhetők le.

 

 

    1. 1.4. Hálózati eszközök 

 

Az OpenVMS nem tartalmaz az operációs rendszerek közötti kommunikációra alkalmas elemeket, de az alábbi hálózati szoftverek beilleszkednek a rendszerbe, hálózati funkciókkal egészítik ki az erőforrások kezelését:

 

Mindhárom hálózati szoftver lehet ugyanabban a hálózatban, és ugyanazon a gépen lehet TCP/IP és Decnet Phase IV vagy Phase V.

 

Hálózati szolgáltatások:

 

 

    1. 1.5.A rendelkezésre álló dokumentáció 

 

A dokumentációs CD része az installáló kitnek. A fileok ISO9660 Level 2 CD-ROM-on, HTML, PDF, PostScript, ASCII text formában találhatók meg. (Tehát nem csak VMS, hanem például Windows alatt is olvashatók.)

 

Tartalma:

 

OpenVMS Operating System csomag csoportosítása:

 

Ha általános ismereteket akarunk a VMS-ről szerezni, akkor célszerű az OpenVMS User's Manual kézikönyvvel kezdeni. A DCL-t az OpenVMS DCL Dictionary írja le, a segédprogramokat több könyvben találjuk meg, funkció szerint csoportosítva. A lemezen van Master index is, de csak PDF formában.

Az Overview of OpenVMS Documentation könyvben hasznos lehet a Where to Find Information fejezet, ha a régi dokumentációt jól ismerjük.

 

A legfrissebb dokumentáció megtalálható a

 

http://h71000.www7.hp.com/doc/

 

honlapon.

 

  1. 2.Processz létrehozása, elemi műveletek 

 

    1. 2.1.Bejelentkezés 

 

A következőkben leírtak csak az interaktív processz létrehozására vonatkoznak teljes egészében.

 

A bejelentkezés előtt a felhasználónak (user) rendelkeznie kell a Felhasználói Névjegyzékben (User Authorization File, UAF) egy érvényes (nem letiltott, lejárt) bejegyzéssel (account) és egy, a bejelentkezésekor elérhető lemezen lennie kell egy hozzá rendelt directorynak. Ezeket az operációs rendszer felelősének (system manager) kell előkészíteni. A bejelentkezéshez szükséges egy, az operációs rendszerben ismert sebességre beállított terminál vagy terminálemuláció egy másik gépen. A termináltól függő módon kell kezdeményezni a bejelentkezést. (Terminálon CTRL/C, <Return> billentyű, másik gépen Telnet, SET HOST parancs vagy terminálemuláció elindítása után tudunk kapcsolatot létesíteni a rendszerrel.)

 

A rendszer a rendszergazda által beállított azonosító szöveget ír ki, majd kéri a felhasználó nevét és jelszavát:

 

Pécsi Tudományegyetem, TTK

 

Username: FODOR

Password: <PASSWORD>

     

A jelszó nem jelenik meg a képernyőn.

Ha az account érvényes és a jelszó helyes, akkor a rendszer néhány információs sort ír ki:

 A processz létrejöttekor végrehajtódik – ha létezik – a rendszer közös és a felhasználó saját bejelentkezési parancsfileja. Végül megjelenik a DCL prompt, jelezve, hogy a rendszer parancsra vár:

 

Welcome to OpenVMS VAX Version 7.3 on node PTEAX1

 

Last interactive login on Tuesday, 03-AUG-2003 09:16:47.08

Last non-interactive login on Monday, 31-JUL-2003 11:32:34.27

1 failure since last successful login.

 

$

 

 

 

    1. 2.2.Kijelentkezés 

 

A legtöbb processzfajta nem fejeződik be automatikusan, hanem ki kell lépni belőlük: például nem elég bezárni a terminálemuláció ablakát, hanem előtte ki kell lépni a VMS-ből. A kilépés szabaddá teszi a processz által lefoglalt erőforrásokat. Az interaktív processz esetén a LOGOUT parancs szükséges:

 

$ LOGOUT

  SYSTEM   logged out at 03-AUG-2003 17:48:56.73

 

Ha a parancsot a /FULL módosítóval használjuk, akkor a processz által használt erőforrásokról is információt kapunk:

 

$ LOGOUT/FULL

  SYSTEM      logged out at 03-AUG-2003 14:23:45.30

Accounting information:

Buffered I/O count:       22     Peak working set size:     90

Direct I/O count:         10     Peak virtual size:         69

Page faults:              68     Mounted volumes:            0

Charged CPU time: 0 00:01:30.50  Elapsed time:      0 04:59:02.63

 

 

    1. 2.3.A terminál és billentyűzete 

 

A terminál bizonyos billentyűit vagy billentyűcsoportjait a rendszer vezérlő információként értelmezi – használatuk és meglétük függhet a terminálemulációtól is.

 

Ezek közül azonnal szükség lehet az alábbiakra:                                          

$ SET CONTROL=T

paranccsal lehet beállítani a terminált.

 

 

    1. 2.4.Parancsok használata 

 

A VMS operációs rendszerrel való kommunikációt a Digital Command Language, a DCL biztosítja. A terminálon begépelt parancsokat a DCL parancsértelmezője olvassa be, és aktivizálja a rendszer megfelelő funkcióit. A DCL parancs egy vagy több angol szóból áll, és tartalmazhat paraméter(eke)t is: mind a parancsszónak, mind a paraméternek lehetnek / jellel kezdődő minősítő szavai (qualifier), a további szóhasználat szerint: módosítói.

 

Például a

 

$ SHOW TIME

 

parancs hatására a rendszer kiírja az aktuális dátumot és időt; a

 

$ PRINT/COPIES=2 LOGIN.COM

 

pedig két példányban nyomtatja a LOGIN.COM nevű filet. Az első parancsban sem paraméter, sem módosító nem szerepel; a másodikban a LOGIN.COM  a paraméter, a /COPIES=2 pedig módosító. Ha a parancsnak kötelező paraméterei vannak, és ezek nem szerepelnek az általunk beírt sorban, akkor a DCL ezeket külön kérheti, utalva a paraméter szerepére:

 

$ COPY

_From: FILE1.DAT

_To: FILE2.DAT

 

Fontos szerepet játszik az alapértelmezés (default) abban, hogy ne kelljen minden esetben a parancsok összes paraméterét és módosítóját feltüntetni. A default olyan eleme a parancsnak (módosító vagy paraméter), amelyet a rendszer feltételez, ha az nem szerepel a parancssorban. Például a PRINT parancs egy példányban nyomtat a /COPIES=n módosító hiányában.

 

 

    1. 2.5.A Help 

 

Ha már bejelentkeztünk a rendszerbe, nem szükséges mindig a dokumentációt használni, ha nem tudunk valamit. A HELP parancs interaktív segítséget nyújt, ha nem tudjuk egy parancs szintaxisát, vagy nem jut eszünkbe egy parancs neve. A dokumentációs CD nem is tartalmazza minden esetben a teljes lexikális leírást (az összes parancs összes változatát és azok szintaxisát), hanem a kézikönyvben csak utalnak arra, hogy ezeket az online Help segítségével lehet lekérdezni.

 

A HELP parancs paraméter(ek)kel vagy anélkül is használható. A HELP begépelése után a rendszer tájékoztató szöveget ír ki (a HELP használatáról), majd felsorolja a lehetséges témák (topic) nevét; ezek bármelyikével tovább kérdezhetünk:

 

$ HELP

 

<help tájékoztató szöveg>

 

Topic? COPY

 

<help tájékoztató szöveg>

 

COPY Subtopic?

 

<help tájékoztató szöveg>

 

A témákon belül - általában több szinten – altémákról (subtopic) is kaphatunk információt. Ha nem tudjuk, hogy mi a szükséges parancs vagy téma neve, akkor a

 

$ HELP HINTS

 

paranccsal a funkció körülírásával juthatunk el - szintén több szinten keresztül - a megfelelő információhoz.

 

Ha a HELP bármely szintjén kérdőjelet gépelünk be, akkor ismét az adott szint választási lehetőségei jelennek meg a képernyőn.

Kilépni a Topic?, Subtopic? kérdésekre adott RETURN válaszokkal vagy CTRL/Z-vel lehet.

A segédprogramok rendelkeznek belső help funkcióval: Ezek is a HELP parancsot használják, és a saját működésükről adnak információt.

 

Saját help könyvtár is létrehozható a rendszerben – ez ugyanúgy használható, mint az eredetiek.

 

  1. 3.Az adatkezelő rendszer 

 

    1. 3.1.Lemez struktúra 

 

A VMS rendszerben a mágneslemezek önállóan kezelhetők: speciális esettől eltekintve minden lemez önálló vezérlő információkkal rendelkezik, amelyek a lemez inicializálásakor jönnek létre, és a fileműveletek ebből kiindulva végezhetők el. Ez a Files-11 forma; jellemzője, hogy a fileokra vonatkozó információk az adatoktól elkülönítve, a lemez különleges filejaiban vannak elhelyezve. A vezérlő fileok közül az alábbiak a fontosabbak (bár normál file műveletek esetén ezeket sem kell ismernünk):

 

 

 

    1. 3.2.A Files-11 directory szerkezet 

 

A lemezeken a fileokat felhasználói tartalomjegyzékekben, directorykban helyezzük el. A directory egy file-katalógust tartalmazó file, amely egyaránt tartalmazhat normál fileokat és újabb directorykat. A struktúra a régebbi VMS-eken maximum 8 szintű a Master File Directory-t nem beleszámítva. Az újabb VMS-eken lényegében limit nélküli, azonban a 255 karakternél hosszabb specifikációkat igen nehézkes kezelni. A directory struktúra gyökere minden lemezen az inicializáláskor létrejövő Master File Directory (MFD). Ebbe kerülnek az első szintű directoryk (User File Directory, UFD), majd ezekbe az aldirectoryk (subdirectory). A directory struktúra bármely szintjén levő tartalomjegyzék file a felette levő directoryban szerepel directorynév.DIR;1 néven. Az MDF az MDF-ben jön létre: [000000]000000.DIR;1. (A directory verziószáma mindig 1, nagyobb verziójú directory filet nem is enged létrehozni a rendszer.) A directory specifikáció [] között szerepel, az egyes szintek ponttal (.) vannak elválasztva.

 

Például az MFD-ben lehet egy

 

MUNKA.DIR;1

 

file, és erre [MUNKA] néven hivatkozhatunk a filespecifikációkban; az [MUNKA] directory tartalmazhat egy

 

ALDIR.DIR;1

 

filet, s erre az [MUNKA.ALDIR] néven hivatkozhatunk.

 

 

A directoryk létrehozását, listázását, törlését az alábbi DCL parancsok teszik lehetővé:

 

 

Például:

 

$ CREATE/DIRECTORY [USER.UJDIR]

$ SET DEFAULT [USER.UJDIR]

$ CREATE UJFILE.TXT

        .

        .

        .

 

$ DIRECTORY [USER.UJDIR]

$ DELETE UJFILE.TXT;*

$ SET DEFAULT [USER]

$ SET PROTECTION=OWNER:D UJDIR.DIR

$ DELETE UJDIR.DIR;1

 

 

    1. 3.3.A filedefiníció 

 

      1. 3.3.1.A filespecifikáció formája 

 

A directory egy-egy bejegyzése a file nevét, típusát, verzióját és egyedi azonosítóját tartalmazza. Ez az azonosító a file-ID (FID). A file-ID egy számhármas, amelyet a file létrejöttekor kap meg, és a Files-11 kötet életében egyedi azonosító (inicializálástól inicializálásig).

A FID formája: (n,m,o). A számhármas elemei:

A File-ID biztosítja a file adatainak elérését, de a normál alkalmazások inkább az alfanumerikus filemeghatározást használják (és a filekezelő rendszerre bízzák az adatelérés lépéseit).

 

A teljes alfanumerikus file specifikáció az alábbi formájú:

 

node::device:[directory]file-name.file-type;version

 

vagy magyar elnevezésekkel:

csomópont::periféria:[directory]filenév.típus;verzió

 

A : [ ]  . ; írásjelek kötelezőek, a különböző mezőket választják el.

 

A mezők:

 

 

Megjegyzések:

 

1. A filenévben és filetípusban szereplő dollárjelet ($) a Digital saját használatára lefoglalja.

 

2. Alphán, 7.2. vagy magasabb verzió esetén, ODS-5 lemezt használva a filenév és típus együtt maximum 255 karakter lehet.

 

3. A verziószámokra relatív módon is hivatkozhatunk:

 

4. A filespecifikációban szereplő kis- és nagybetűk egyenértékűek: nem jelent különböző specifikációt két string, ha csak a kis- és nagybetűk használatában térnek el egymástól. (kivéve a 7. megjegyzésben leírtakat).

5. A teljes filespecifikációban (amely a csomópont nevet is tartalmazza) szerepelhet egy elérést vezérlő string (access control string). Ekkor a távoli (remote) filet nem a default hálózati felhasználó (DECnet default user) nevében, hanem a megadott felhasználó jogai alapján érhetjük el. Formája:

 

node"username password"::device:[directory]name.type;version

 

Ha el akarjuk kerülni, hogy a jelszavunk ilyen módon megjelenjen a képernyőn, akkor proxy accountot kell használni. A proxy adatbázis kezelése a rendszergazda (system manager) feladata.

 

6. A teljes filespecifikáció maximum 255 karakteres lehet.

 

7. Az OpenVMS 7.2. verziótól kezdődően Alphán, ODS-5 file struktúra esetén megengedett a kiterjesztett filespecifikáció használata (extended file specification), amely lehetővé teszi a Unix vagy Windows típusú filespecifikáció használatát (kis- és nagybetű megkülönböztetés, 8 bites kódok, speciális karakterek, 255 karakternél hosszabb filespecifikáció használata stb.).

 

 

      1. 3.3.2.Alapértelmezések a filespecifikációkban 

 

A filespecifikációban nem kötelező mindig minden mezőt kiírni, ilyenkor a rendszer a default értékeket helyettesíti be. A default értékek a filespecifikáció elemeire:

 

 

Néhány default filetípus:

 

CLD   Parancsleíró file

COM    Parancs eljárás file

DAT     Adatfile

DIF       A DIFFERENCES parancs outputja

DIR      Directory file

DIS       A MAIL utility disztribuciós listája

EDT      Az EDT szövegszerkesztő inicializáló fileja

EXE      A Linker által készített image file

FDL      File definiciós nyelv file

HLB     Help könyvtár

HLP      Help szövegfile

INI       Inicializáló file

JOU      Az EDT és az ACL Editor napló fileja

LIS       Listafile; a TYPE és a PRINT parancs default input fileja

LOG      Batch job output file; napló file

MAI      Mail üzenetfile

MEM      A DIGITAL Standard Runoff (DSR) utility outputja

PS  Postscript formátum file

PAR      A SYSGEN paraméter fileja

RNO      A DIGITAL Standard Runoff (DSR) utility inputja

SYS      System image

TLB      Szöveg könyvtár

TMP      Ideiglenes file

TPU   Az EVE editor parancsfileja

TPU$JOURNAL  Az EVE editor naplófileja

TXT      A szövegkönyvtár inputja, vagy a MAIL parancs outputja

 

A programnyelvekkel kapcsolatos default filetípusok:

 

ADA     ADA forrásprogram

BAS      BASIC forrásprogram

B32      Bliss-32 forrásprogram

C         C forrásprogram

COB      COBOL forrásprogram

FOR      FORTRAN forrásprogram

MAR      MACRO-32 (VAX) assembly forrásprogram

M64  MACRO-64 (Alpha) forrásprogram

MAP      A linker memóriatérkép outputja

MLB      MACRO-32 assembly forráskönyvtár

MSG      Üzenetfile

OBJ      Tárgyprogram, a fordítók és az assembler outputja

OLB      Tárgymodulok könyvtára

OPT      A Linker segédprogram opció input fileja

PAS      Pascal forrásprogram

PLI       PL/I forrásprogram

STB      A Linker segédprogram szimbólumtábla output fileja

UPD      Update file a VAX MACRO-32 forrásprogramok változtatásához, vagy a SUMSLP editor inputja

 

 

      1. 3.3.3.A csillag (wildcard) konvenciók 

 

Egyes DCL parancsokban - amelyek több file felsorolását, használatát teszik lehetővé - a filespecifikációkban "bármely" jelentésű jelek is szerepelhetnek. Ezek segítségével lényegesen rövidebben írhatunk le olyan filecsoportokat, amelyek specifikációiban azonos elemek szerepelnek.

A "bármely" jelek két csoportra oszthatók: minta (matching) és kereső (searching) jelek. A minta jel a csillag (*) és a százalékjel (%). Mindkét jel használható a directorynévben, filenévben, filetípusban és csak a csillag használható a verziónál; az UIC formájú directory névben csak a csillag szerepelhet mind a g mind az m helyén.

 

A csillag karaktert akkor használjuk egy mező vagy részmező helyén, ha arra a helyre tetszőleges hosszú stringet akarunk illeszteni - 0 és a mező maximális hossza között. Például a

 

$ TYPE *A. DAT

 

parancs hatására az A.DAT, ALFA.DAT, BETA.DAT stb. íródik ki. A

 

$ DIRECTORY [USER.*]*.BAS;*

 

hatására az [USER] directorynál egy szinttel lejjebb lévő, összes BASIC program összes verziójáról kapunk tartalomjegyzéket.

 

A százalékjel egy tetszőleges karaktert jelent; a directory-névben, filenévben és filetípusban használható. A csillag és a százalékjel együtt is használható egy mezőn belül. Például:

 

$ PRINT [MA%%]A*B%.DAT

 

parancs kinyomtatja mindazon a fileok legmagasabb verzióját, amelyek négy karakterből álló, MA-val kezdődő directory-ban vannak, A-val kezdődik a filenév, B-re és egy tetszőleges karakterre végződik, és típusuk DAT.

 

Eltérő a csillag használata az output specifikációkban: itt a csillag ideiglenes defaultot jelent, a mező értékét az input megfelelő mezője adja.

 

 

Meg kell említeni, hogy a minta típusú wildcard jelek nem csak filespecifikációban, hanem például logikai nevek, szimbólumok, könyvtári modulok esetén is szerepelhetnek.

 

 

A kereső jelek a directory specifikációban szerepelhetnek; lehetővé teszik, hogy a directory struktúra egyes részfáira vagy szintjeire hivatkozzunk.

A kihagyásjelet (...) akkor használhatjuk, ha a directory hierarchiában egy adott directory szinttől lefelé vagy felfelé akarunk keresni. Például a

 

$ DIRECTORY [ALFA...DELTA]AAA.DAT

 

parancs tartalomjegyzéket készít mindazokról az AAA.DAT nevű fileokról, amelyek az olyan DELTA nevü aldirectory(k)ban vannak, amelyek a directory hierarchiában az ALFA directory alatt találhatók.(Pl: [ALFA.BETA.DELTA],  [ALFA.A.A.A.DELTA],

[ALFA.DELTA]).

Ha a default directorytól kiindulva akarunk keresni egy aldirectoryt, akkor kezdhetjük ponttal vagy kihagyásjellel az aldirectory nevét. A

 

$ DIRECTORY [...SUB]

jelenthet [FO.SUB], [FOFO.FO.SUB] directoryt, de a

 

$ DIRECTORY [.SUB]

 

azt a SUB nevű aldirectoryt jelenti, amely pontosan eggyel alacsonyabb szintű a jelenlegi default directorynknál.

Ha a directory struktúra legalacsonyabb szintjéig akarunk keresni, akkor kihagyásjellel kell befejezni a directory specifikációt. Például ha az aktuális default directoryt és annak összes aldirectoryját akarjuk látni, akkor:

 

$ DIRECTORY [...]

 

parancs szükséges.

 

A kihagyásjel többször is előfordulhat a specifikációban.

 

A mínuszjel a felfelé keresést teszi lehetővé a directory hierarchiában. Az egyedülálló mínuszjel eggyel a Master File Directory felé lépést jelent a jelenlegi default szintről: A

 

$ SET DEFAULT [-]

 

hatására az előző default directoryt tartalmazó directory lesz a default.  (Például ha [ALFA.BETA.GAMMA] volt, akkor [ALFA.BETA] lesz a default.) Ha a default az [ALFA.BETA.GAMMA], akkor az [ALFA.BETA.DELTA]A.LIS filet a

 

$ TYPE [-.DELTA]A.LIS

 

paranccsal is kiírathatjuk a terminálra. A mínuszjelből is lehet többet írni egy directory specifikációban: A

 

$ TYPE [-.-.M]A.LIS

 

az előző példa szerint az [ALFA.M]A.LIS file listázását jelenti.

 

 

    1. 3.4.Az RMS 

 

A VMS standard filekezelő rendszere az RMS (Record Management Service); ezt használják a rendszer kész szolgáltatásai, a vásárolt szoftverek és a saját programok is. A DCL-ben egyaránt megtalálhatók a file manipulációs parancsok és a rekord műveleteket lehetővé tevők. A szolgáltatások közvetlenül is hívhatók mind a Macro mind a magasszintű nyelvek esetén, a SYS$LIBRARY:STARLET.MLB rendszerkönyvtár makróit használva.

 

Az RMS lehetővé teszi a biztonságos és hatékony filemegosztást:

 

 

A teljes leírás az OpenVMS Record Management Services Reference Manual-ban, az RMS-sel kapcsolatos segédprogramok pedig az OpenVMS Record Management Utilities Reference Manual-ban találhatók.

 

 

      1. 3.4.1.File attribútumok 

 

Az RMS háromféle fileszerkezetet ismer:

 

 

 

 

A relatív és indexelt file csak lemezen használható.

 

 

      1. 3.4.2.Rekord attribútumok 

 

Az RMS négy rekordformátumot támogat:

Csak szekvenciális fileban használható. A Unix filefogalomnak leginkább a STREAM_LF felel meg. Emiatt a standard C programok (Unix alól portoltak) a legkönnyebben STREAM_LF fileokkal tudnak dolgozni.

 

A file karakterisztikájába tartozik a carriage control rekord attribútum is. Ez határozza meg, hogy a file rekord orientált eszközre (terminál, nyomtató) való konvertálásakor milyen kocsivezérlés történjen. Az RMS háromféle rekord attribútumot ismer:

Ha ezek egyike sem szerepel rekord attribútumként, akkor semmilyen kocsivezérlés nem történik.

 

 

A rekordokat az alábbi módokon érhetjük el:

 

Blokk I/O: Figyelmen kívül hagyhatjuk a file rekord szerkezetét, és a file egy vagy több blokkját olvassuk vagy írjuk - ekkor azonban megsérthetjük a rekord szerkezetet.

 

 

      1. 3.4.3.Fileműveletek 

 

Az RMS a szokásos file- és rekord műveleteket ismeri:

 

 

 

A fileok létrehozása kétféle módon történhet:

 

$ EDIT /FDL fdl-filespecifikáció

$ CREATE /FDL=fdl-filespecifikáció [filespecifikáció]

 

File létrehozása adott attribútumokkal:

 

Fileattribútumok lekérdezése:

 

 

 

      1. 3.4.4.RMS makrók és rendszerszolgáltatások 

 

Az RMS lényeges tulajdonsága, hogy bármely nyelven írt felhasználói programból közvetlenül is el lehet érni a szolgáltatásait. Ezt az teszi lehetővé, hogy a fileműveletekhez tartozó információs blokkok beépíthetők a programokba, mezőikre szimbolikus nevekkel hivatkozhatunk; maguk a műveletek pedig függvényként vagy szubrutinként hívhatók. (A magas szintű nyelveknek megvannak a saját filekezelő utasításaik is, ez csak további lehetőséget jelent.)

 

 

  1. 4.A védelmi rendszer 

 

Az OpenVMS összetett védelmi rendszerrel rendelkezik. Az első lépcsőt a rendszerhez való hozzáférés szabályozása jelenti: Csak akkor tudunk bejelentkezni, ha a rendszer gazdája

 

A védelmi rendszer elemeinek egy része automatikusan létrejön, és ha nem is állítunk semmit, a default védelmet biztosítja (UIC szerinti védelem, privilégiumok és erőforráskvóták rendszere). Mások csak külön eljárással jönnek létre, és az előbbi lehetőségek bővítését, finomítását teszik lehetővé (ACL, lemezkvóta).

 

A teljes rendszer leírását az OpenVMS Guide to System Security kézikönyvben találhatjuk meg.

 

 

    1. 4.1.Az objektumok védelme, az UIC 

 

A VMS minden olyan objektuma, amely esetén fontos a hozzáférés szabályozása alapértelmezésben rendelkezik egy tulajdonossal (UIC vagy identifier), és egy védelmi mezővel. A gyakran használt védett objektumok a következők:

 

 

 

A VMS rendszerben minden felhasználónak van egy azonosító kódja (User Identification Code), az UIC. Ez egy 32 biten tárolt érték, amely numerikus vagy alfanumerikus formában jeleníthető meg. A numerikus UIC [g,m] alakú, ahol a [] része a szintaxisnak, a g a csoport (group) azonosító, értéke 1 és 37776 (oktális) között lehet; az m pedig a tag (member) azonosító, értéke 1 és 177776 (oktális) között lehet. (Vagyis a 32 bites mezőből csak 30 bitet lehet UIC céljára használni.) Az alfanumerikus UIC a member értékből és opcionálisan a csoport-névből áll. Az UIC-ok kiosztása, a kétfajta UIC összerendelése a rendszergazda joga és feladata, a felhasználó készen kapja őket.

A védett objektumhoz tartozó tulajdonos UIC és az objektumot elérni kívánó processz UIC-a közötti kapcsolat szerint a processzek 4 csoportba oszthatók:

 

 

Az UIC alapú védelem egy 16 bites védelmi mezőt jelent (protection mask), amely a fenti csoportok mindegyikére négyféle hozzáférést engedélyezhet vagy tilthat meg. A hozzáférés fajtája függ a védett objektum típusától, itt csak a leggyakrabban használtak szerepelnek:

 

(Ha a felhasználó READ joggal rendelkezik, akkor az EXECUTE elérési mód is engedélyezett számára.)

 

(Ha a felhasználó READ joggal rendelkezik, akkor az EXECUTE elérési mód is engedélyezett számára.)

 

(Ha a felhasználó READ joggal rendelkezik, akkor az EXECUTE elérési mód is engedélyezett számára.)

 

A CONTROL elérési jog az UIC alapú védelmi táblában nem szerepel. Ez az elérési jog a tulajdonossal azonos lehetőséget jelent, valamint lehetővé teszi a védelem és a karakterisztika megváltoztatását. A System és az Owner csoportba tartozó felhasználók mindegyike rendelkezik a CONTROL joggal, a Group és World kategóriák tagjai viszont nem.

 

Az UIC szerinti védelmi mező automatikusan létrejön, de a

 

$ SET SECURITY object-name

 

paranccsal módosíthatjuk a beállításokat, illetve az objektum tulajdonosát is meg tudjuk változtatni. A

 

$ SHOW SECURITY

 

paranccsal mindenféle objektum védelmi beállításait lekérdezhetjük, de a fileok és directoryk esetén a

 

$ DIRECTORY/SECURITY

 

parancs is használható.

 

Például

 

$ DIRECTORY/SECURITY *.LIS

Directory DKA200:[DATA]

LISTA.LIS;1        [SYSTEM]               (RWED,RWED,RE,)

Total of 1 file.

 

$ SET SECURITY/CLASS=FILE     - 

_$ /PROTECTION=(GROUP:RWE,WORLD:RE)/LOG    -

_$ LISTA.LIS

%SET-I-MODIFIED, DKA200:[DATA]LISTA.LIS;1 modified

$

$ DIRECTORY/SECURITY

Directory DKA200:[DATA]

LISTA.LIS;1        [SYSTEM]              (RWED,RWED,RWE,RE)

Total of 1 file.

$

 

A SET SECURITY parancsban nem szereplő mezők értéke nem változik.

 

Ha egy filehoz hozzá akar férni egy processz, akkor a rendszer először azt ellenőrzi, hogy a kötethez van-e jogunk hozzáférni.  Utána a directory struktúra elemeit vizsgálja sorra: legalább EXECUTE jog kell a gyökér directoryhoz és az aldirectorykhoz. Ezután következik a file védelmi mezőjének ellenőrzése.

Bizonyos privilégiumok esetén (GRPPRV, SYSPRV, READALL, BYPASS, VOLPRO) nem a védelmi mező, hanem a privilégium miatt engedélyezett a hozzáférés.

 

 

Az UIC-on kívül az operációs rendszer gazdája definiálhat nem UIC-hoz kötődő azonosítókat is (general identifier). Ezek az azonosítók különböző felhasználókhoz tartozhatnak, objektumok tulajdonosai lehetnek stb. Erről az OpenVMS Guide to System Security kézikönyvből tudhatunk meg többet.

 

 

    1. 4.2. ACL szerinti védelem 

 

Az ACL (Access Control List) általában az UIC alapú védelem pontosítását szolgálja. Az ACL mindig egy objektumhoz kapcsolódik, egy-egy bejegyzése egy UIC vagy UIC sorozat (ez nem feltétlen jelent azonos csoportszámú UIC-okat, hanem tetszőleges UIC-ok felsorolását), vagy identifier számára biztosít, vagy tilt meg hozzáférési jogokat. Az ACL szabályozhatja azt is, hogy a védelem öröklődjön-e az objektum másolatára vagy az ilyen módon védett directoryban létrehozott új filera, illetve lehetőséget nyújt arra, hogy a védett objektumhoz való hozzáférést (a sikeres és a sikertelen hozzáférés esetén is) üzenet jelezze az operátori terminálon (security alarm) és a védelmi napló fileban (security audit).

Az ACL az objektumhoz kapcsolódó lista, melynek minden sora (Access Control Entry, ACE) valamilyen védelmi beállítást tartalmaz. A sorok sorrendje is fontos, mert az ACL kiértékelésekor az első, a hozzáférésnek megfelelő ACE a döntő. (Azaz először a speciálisabb, aztán az általánosabb beállításoknak kell következnie.)

Az ACL-t létrehozni, módosítani és törölni is lehet a

 

$ SET SECURITY/ACL object-name

 

paranccsal. A

 

$ SHOW SECURITY object-name

 

vagy

 

$ DIRECTORY/SECURITY

 

segítségével pedig lekérdezhető. Ezenkívül van egy speciális szövegszerkesztő, az ACL editor, amelyik az ACL szintaktikus szabályait is magában foglalja, és megkönnyíti a ACL létrehozását (szenzitív editor):

 

$ EDIT/ACL objektum

 

Általában az ACL létrehozásakor kényelmesebb az ACL editort használni, módosításkor, sok file kezelésekor  pedig gyorsabb a SET SECURITY. Ez utóbbinak van egy /LIKE módosítója is, amellyel egyetlen parancssorral átörökíthetjük egy adott objektum ACL-jét további objektum(ok)ra.

 

 

A hozzáférés engedélyezése vagy megtiltása a következő módon történik:

 

 

    1. 4.3. Privilégiumok  

 

A rendszerben élő processzek rendelkezhetnek bizonyos jogokkal, melyek alapján elérhetnek különleges rendszerfunkciókat, változásokat okozhatnak az erőforrások állapotában, vagy más processzeket befolyásolhatnak - ezek a privilégiumok. A privilégiumokat az operációs rendszer gazdája állítja be permanensen az UAF-ban. A processz élete alatt az aktuális privilégiumok DCL paranccsal beállíthatók és letilthatók (megfelelő jogosultság esetén.)

A privilégiumokat 7 kategóriába soroljuk, aszerint, hogy a felhasználó milyen jogosultságokat kap általuk:

 

 

 

A normál felhasználóknak szükséges privilégiumok (zárójelben a csoport neve):

 

 

DCL parancsokat.

 

 

DCL parancsokat.

 

 

 

 

A processz aktuális privilégiumai a

 

$ SHOW PROCESS/PRIVILEGES

 

14-AUG-2003 14:59:28.53   User: PAPA  Process ID:    28200364

                          Node: FZAXP Process name:  "PAPA"

   

 Process privileges:

  GROUP                may affect other processes in same group

  TMPMBX               may create temporary mailbox

  NETMBX               may create network device

 

 Process rights identifiers:

  INTERACTIVE

  DIALUP

 

paranccsal kérdezhetők le, és a

 

$ SET PROCESS/PRIVILEGES=(privilege [,...])

 

paranccsal módosíthatók az UAF-ban meghatározott keretek között.

 

 

    1. 4.4. Erőforráskvóták 

 

A felhasználók által használható erőforrások mennyiségét a processz számára érvényes erőforrás kvóták is szabályozzák. A kvóták az UAF rekordban szerepelnek (az operációs rendszer gazdája állítja be őket), és a processz létrejöttekor ezekkel a kvótákkal kezd el működni. Ha a processz elfogyasztja valamely kvótáját, akkor a rendszer általában erőszakosan megszünteti a processzt.

 

Az UAF-ban van default érték a kvótákra, de ettől néha el kell térni:

1. Ha valamely alkalmazás processzei rendre erőforrás túllépés miatt nem tudnak szabályosan befejeződni, akkor meg kell növelni a hibát okozó kvótá(ka)t a felhasználónál, és esetleg a kvótát befolyásoló rendszerparamétereket is módosítani kell.

2. A VMS alá installálható szoftverek leírása gyakran tartalmaz ajánlásokat a szoftvert használó felhasználó erőforrás kvótáira. Célszerű ezeket betartani! (Különösen az adatbázis-kezelőknél okozhat sok problémát, ha eltérünk az ajánlásoktól.)

 

Fontos tudni, hogy a már élő processzre nem hatnak az UAF-beli módosítások. Tehát ha egy felhasználó paraméterei változnak, akkor újra be kell jelentkeznie ezek érvényesítéséhez.

 

A leggyakrabban felmerülő (esetleg "problémás") erőforrás kvóták neve és jelentése:

 

 

 

A processz kvótái a

 

$ SHOW PROCESS/QUOTAS

 

14-AUG-2001 15:12:28.32   User: PAPA  Process ID:    28200364

                          Node: FZAXP Process name: "PAPA"

 

Process Quotas:

 Account name: VMS    

  CPU limit:                      Infinite  Direct I/O limit:       6

  Buffered I/O byte count quota:      6704  Buffered I/O limit:     6

  Timer queue entry quota:              10  Open file quota:       31

  Paging file quota:                 24945  Subprocess quota:       8

  Default page fault cluster:           64  AST limit:             14

  Enqueue quota:                        30  Shared file limit:      5

  Max detached processes:               10  Max active jobs:       12

 

paranccsal kérdezhetők le.

 

 

    1. 4.5. Lemezkvóta 

 

A VMS lehetővé teszi, hogy a felhasználók által használt lemezterületeket korlátozzuk – ez a kvóta nem tartozik az erőforrás kvóták közé. A lemezkvótát lemezenként definiáljuk és engedélyezzük, és vagy UIC-ra vagy RESOURCE attribútumú azonosítóra (identifier) adhatjuk meg. Ha egy lemezen működik a kvótázás, akkor diszk-kvóta nélkül csak EXQUOTA privilégiumú processz foglalhat le lemezterületet.

 

A kvóta file minden lemezen a [000000]QUOTA.SYS. Létrehozása és beállítás minden felhasználóra a rendszergazda vagy a lemez tulajdonosának a feladata. A kvóta két paraméterből áll:

 

A processz saját diszk-kvótájának lekérdezése a default lemezen

$ SHOW QUOTA

User [1010,1010] has 1320 blocks used, 3680 available,

of 5000 authorized and permitted overdraft of 500 blocks on DISK$MUNKA

vagy más lemezen a

$ SHOW QUOTA / DISK=device

 

DCL parancs használható.

 

 

 

 

 

  1. 5.A DCL alapjai                                                                 

 

A Digital Command Language (DCL) biztosítja az OpenVMS felhasználók számára az operációs rendszerrel való kommunikációt.

A teljes DCL parancskészlet, paramétereik és példák az OpenVMS DCL Dictionary kézikönyvben és a HELP-ben szerepelnek. DCL parancsok a VMS segédprogramokat meghívó parancsok is.

 

A DCL parancsok lehetővé teszik

 

A DCL két módon használható: interaktív vagy nem interaktív módban.

 

 

    1. 5.1. A DCL parancsok elemei 

 

      1. 5.1.1.A parancssor  

 

A DCL parancs angol szavakból áll, amelyek jelzik a rendszer teendőit. A parancssor formája (a [] között álló elem opcionális):

 

[$][címke:]parancs[/parancsmódosító…][paraméter…[/paramétermódosító…]] [!megjegyzés]

 

A dollárjelet (vagy más promptot) az előző interaktív parancs végrehajtása után a rendszer automatikusan kiírja; parancsfileban azonban mindig ezzel kell kezdeni a parancssort.

A címke csak az első mező lehet a $ után, és csak parancseljárásban van értelme használni.

A parancsnevet a paraméterektől legalább egy szóközzel (space) el kell választani. A teljes parancsra érvényes, hogy egy szóköz helyett tetszőleges számú szóköz vagy tabulátor karakter is megengedett. A parancsban kis és nagy betűk egyaránt szerepelhetnek, ezek egyenértékűek, kivéve, ha idézőjelek közé zárjuk őket. A módosítók (qualifiers) mindig per jellel (/) kezdődnek; ez elhatárolójelként is szolgál, ezért a parancsnév vagy paraméter és módosítója közé nem kötelező szóköz vagy tabulátor karaktert írni.

Folytathatjuk a parancssort, ha kötőjellel (-) és <RETURN>-nel zárjuk Ilyenkor a DCL promptja

 

_$

 

lesz.

A végrehajtandó parancs nem tartalmazhat 127 elemnél többet, egyetlen elem nem lehet 255 karakternél hosszabb, és a teljes hossz 1024 karakter lehet.

Ha a promptot a SET PROMPT paranccsal megváltoztattuk, akkor interaktív módban mindig az új prompt jelenik meg - a folytatósorban is - de parancsfileban akkor is a $ jelet kell használni.

 

Például  a

 

$ TYPE NEVSOR.TXT

 

parancsban a TYPE a parancsszó és a NEVSOR.TXT az egyetlen paraméter. A

 

$ MONITOR

 

parancsnak nincs paramétere, és a Monitor segédprogramot hívja meg.

 

A parancssorban - felkiáltójellel kezdve - megjegyzés helyezhető el. A megjegyzés lehet a parancssor egyetlen eleme is a prompt után.

 

A DCL parancsnevek és módosítók rövidíthetők. Általában az első négy karakter szükséges, de vannak parancsok, amelyeknél ennél kevesebb is elegendő: minden parancs addig rövidíthető, amíg egyedi marad. Ugyanez érvényes a módosítókra és egyéb kulcsszavakra is. (Általában hasonlóan működnek a rendszerprogramok és a segédprogramok is.) Ha nem írtunk be elegendő betűt valamely parancs felismeréséhez, ezt a rendszer hibaüzenettel jelzi. Az interaktív módban a gyorsabb gépelés miatt célszerű a rövidítéseket használni, de a parancsfileokban írjuk ki a teljes kulcsszavakat a félreértések elkerülése és a könnyebb olvashatóság végett.

 

A paraméter(ek)nek lehet(nek) értéke(i), ezek előtt egyenlőségjel áll, s ha több van, zárójelben (), vesszővel elválasztva soroljuk fel őket.

 

A módosítók (qualifier) állhatnak egy kulcsszóból, vagy egy kulcsszóból és a hozzátartozó érték(ek)ből. Az értékek előtt egyenlőségjel (=) áll, bár legtöbbször a kettőspontot is elfogadja a DCL; ha több értéket adunk meg, akkor azokat zárójelek között, vesszővel elválasztva kell felsorolni. A módosító lehet

A módosítók, paraméterek egy részét tagadni is lehet: ekkor a NO szócskával kell kezdeni a módosítót.

Legtöbb módosító rendelkezik default értékkel, ezeket csak akkor kell kiírni, ha ettől eltérően akarjuk használni.

 

Például a

 

$ PRINT/COPIES=2 SZOVEG.TXT, LOGIN.COM

$ PRINT ELSO.FOR/COPIES=2, MASOD.BAS

 

parancsok közül az elsőben a /COPIES parancsmódosító, hatására mindkét filet két példányban nyomtatjuk ki. A második parancsban a pozícionális módosító miatt az ELSO.FOR két példányban, a MASOD.BAS egy példányban nyomtatódik.

 

Ha a DCL parancsnév sorában nem adjuk meg a kötelező paramétereket, akkor a parancsértelmező szöveges prompttal kérheti azokat.

 

Például:

 

$ COPY

_From:

_To:

 

A COPY parancs input és output paraméterét a promptok után beírva a

 

$ COPY input output

 

paranccsal egyenértékű parancsot kapunk.

 

A bizonyos parancsoknak lehet egysoros és interaktív végrehajtása is (főleg a segédprogramoknak). Ez azt jelenti, hogy begépelve és <RETURN>-nel zárva a parancs nevét az a saját promptjával válaszol és kilépésig egy vagy több belső parancsot adhatunk meg. Egyéb DCL parancs viszont ebben az interaktív módban nem adható ki. A kilépés általában az EXIT paranccsal vagy CTRL/Z-vel történhet. Például

 

$ MAIL

MAIL> SEND

        .

        .

        .

 

MAIL> EXIT

$

 

A kiadott parancsok végrehajtásuk közben CTRL/Y, CTRL/C, CTRL/T billentyűkkel megszakíthatók; leírásukat lásd az 5.1.3. fejezetben.

 

 

A DCL parancsok általunk meghatározott elemeinél (címke, szimbólum, logikai név, filenév stb.) célszerű ékezet nélküli magyar elnevezéseket használni. A magyar szavak utalhatnak a funkcióra, kényelmesebben olvashatóvá teszik a parancsokat, és főképpen tisztán elkülönítik az általunk megadott elemeket a rendszer kulcsszavaitól.

Az ékezetes betűk használata nem mindig tilos, de a DCL nem minden környezetben értelmezi őket korrektül, ezért célszerű elkerülni. További problémát okozhatnak a terminálemulációk eltérő karakterkészletei. (Kivétel a karakteres konstans, ahol mindig használhatjuk a magyar nyelv szabályainak megfelelő formát.)

 

 

      1. 5.1.2.A hibaüzenetek  

 

A DCL a parancsok sikeres végrehajtásakor általában explicit kérésre, hiba esetén pedig mindig (ha nem tiltottuk le) üzenetet küld. Az üzenetek általános formája:

 

%facility-s-identification, text

 

Ezt esetleg követi egy másodlagos üzenet:

 

-facility-s-identification, text

 

A facility az üzenetet küldő rendszerelemet nevezi meg.

Az s (severity) a jelleg:

 Az identification az üzenet mnemonikus kódja, amely alapján a hiba részletes leírása (és esetleg tanácsok a kiküszöbölésére) megtalálható az OpenVMS System Messages kézikönyvben, vagy interaktívan lekérdezhető a HELP/MESSAGE paranccsal.

A text az üzenet rövid leírása, sok esetben elegendő segítséget nyújt a hiba kijavításához.

 

Például

 

$ COPZ NEVSOR.TXT NEVSOR.DAT

%DCL-W-IVVERB, unrecognized command verb – check validity and spelling

/COPZ/

 

A COPY parancs helyett beírt COPZ-t a rendszer nem tudta értelmezni, és javasolta a szöveg ellenőrzését.

 

 

      1. 5.1.3.Terminálhasználat 

 

A terminál bizonyos billentyűit vagy billentyűcsoportjait a DCL vezérlő információként értelmezi. Bizonyos funkciók a CTRL és egy másik billentyű egyidejű lenyomásával érhetők el, ezeket CTRL/billentyűnév módon jelöljük. A különböző terminálemulációk nem feltétlenül biztosítják automatikusan az összes lehetőséget.

 

A leggyakrabban használt billentyűk:

 

Lezárja a sort, és újat nyit.

 

Kiírja az előzőleg beírt parancso(ka)t. Ismételt lenyomásával VAX-on a legutolsó 20, Alphá-n a legutolsó 254 parancs hívható vissza a képernyőre. (Recall puffer használata.)

 

 

Vertikális tabulálás.

 

Elnyomja vagy engedélyezi a terminál outputot (kikapcsolja vagy bekapcsolja). A közben outputra kerülő szöveg elvész. A CTRL/O lenyomásakor az Output Off illetve Output On szöveg jelenik meg.

 

Felfüggeszti a terminál outputot (ebben az esetben nem vész el a terminál output).

 

Folytatja a CTRL/S-sel felfüggesztett terminál outputot.

 

Rövid időre megszakítja a terminál outputot, hogy statisztikai információt írjon ki az aktuális processzről: csomópont név, processz név, időpont, futó program neve, a felhasznált CPU idő, a page faultok, a direkt és pufferes I/O-k száma és a használt fizikai memória lapok száma. A CTRL/T felismerését a SET CONTROL=T DCL parancs teszi lehetővé, a SET NOCONTROL=T pedig letiltja.

 

Törli a kurrens input sort a kurzortól balra.

 

Törli a kurrens sor és a typeahead puffer tartalmát.

 

 

 

Jelzi az adatfile (standard input) végét. A képernyőn Exit jelenik meg.

 

Törli az utoljára begépelt karaktert. Néhány terminálemulációnál a Backspace es a DELETE gomb jelentése felcserélt, kevert, illetve rossz.

 

A következő tabulálási pontra lépteti a kurzort.

 

A legutolsó 20 vagy 254 parancsot őrző pufferben, a legkorábban kiadott parancstól halad a legutoljára beírtig.

 

 

A sorszerkesztő billentyűk az éppen begépelt vagy az utolsó 20 vagy 254 parancs valamelyikének változtatására szolgálnak:

 

Átkapcsol a felülíró (overwrite) és beszúró (insert) mód között. A default mód (amit a SET TERMINAL határoz meg), minden sor elején visszaáll.

 

Egy karakterrel balra lépteti a kurzort.

 

A sor végére állítja a kurzort.

 

Egy karakterrel jobbra lépteti a kurzort.

 

A sor elejére állítja a kurzort.

 

Egy szót töröl a kurzor bal oldalán.

Törli a karaktereket a sor elejétől a kurzorig.

 

 

    1. 5.2. Logikai nevek 

 

A logikai név (logical name) általában a teljes filespecifikációt vagy annak egy részét helyettesítő név, amely egyenlő egy vagy több ekvivalencia-stringgel: A logikai nevet a rendszer a hivatkozás végrehajtásakor helyettesíti az ekvivalencia-stringgel, így annak változó értéke más és más hivatkozást tesz lehetővé. A több ekvivalencia-stringgel rendelkező logikai nevet kereső listásnak (search list) is nevezzük; az ilyen logikai név wildcardot megengedő fileműveletek esetén az összes értéket használja, a többi esetben pedig az első megfelelőt.  A logikai neveket a rendszer logikai név táblákban tárolja. Ilyen táblákat a rendszer létrehoz az összes felhasználó számára elérhetően (system-wide logical names), minden egyes processznek saját használatra és processz-csoportoknak közösen. Ezenkívül az alkalmazások is definiálhatnak további a táblákat.

Logikai nevet eszközfüggetlen programozás, titkosság vagy rövidítés céljából használunk. A gyakran használt fileok, directoryk vagy perifériák könnyebben kezelhetők, ha helyettük rövid, jobban olvasható logikai nevet használunk. Logikai névvel elkerülhetjük a jelszó megjelenítését akkor, amikor távoli gépen akarunk filet elérni (logical node name). A gyakran használt logikai nevek definíciója bekerülhet a LOGIN.COM parancseljárásba, így nem kell azokat minden bejelentkezéskor külön definiálni. A logikai név mindenütt használható, ahol fizikai specifikáció állhat. A logikai nevet a kernel értékeli ki, nem a DCL. Így nem csak interaktív használat vagy parancseljárás során használhatók, hanem tetszőleges programnyelvben is.

A logikai neveket a felhasználó az ASSIGN, DEFINE, ALLOCATE, MOUNT és OPEN paranccsal definiálhatja, s azok a rendszer valamely logikai név táblájába kerülnek (lásd az 5.2.3. fejezetet). A logikai név, és az ekvivalencia-string vagy ekvivalencia-stringek külön-külön nem lehetnek hosszabbak 255 karakternél. A logikai név betűvel, aláhúzásjellel, kötőjellel, dollárjellel kezdődhet, alfanumerikus karakterrel, dollárjellel, kötőjellel vagy aláhúzásjellel folytatódhat. A logikai név végén lehet kettőspont, ezt az ASSIGN parancs elhagyja, a DEFINE parancs megtartja, amikor a név bekerül a logikai név táblába:

 

$ ASSIGN equivalence-name[,...] logical-name[:]

$ DEFINE logical-name equivalence-name[,...]

 

A logikai nevek a SHOW LOGICAL paranccsal jeleníthetők meg, a

 

$ SHOW LOGICAL logikai név

 

egy logikai név összes előfordulását képernyőre írja.

 

A logikai név törlése a DEASSIGN paranccsal lehetséges, illetve a DEALLOCATE, DISMOUNT, CLOSE automatikusan törli az ALLOCATE, MOUNT, OPEN paranccsal létrehozott logikai nevet:

 

$ DEASSIGN [logical-name[:]]

 

A filekezelő (OPEN, CLOSE) DCL parancsok a 10.3.4. fejezetben szerepelnek.

 

 

      1. 5.2.1.A logikai nevek kiértékelése 

 

A filespecifikáció legbaloldalibb része lehet logikai név, ilyenkor a specifikáció többi részétől kettősponttal kell elválasztani. A rendszer a file hivatkozás elemzésekor megvizsgálja a filespecifikáció bal oldali első elemét, hogy logikai név-e. Ha kettősponttal, szóközzel, vesszővel végződik ez az elem, vagy egyetlen a sorban, akkor megkísérli logikai névként kiértékelni, különben nem. (A rendszer a logikai nevet először a processz, majd a job, csoport, rendszer, végül a cluster logikai név táblában keresi. Ha ettől el akarunk térni, akkor az LNM$FILE_DEV logikai nevet kell változtatni a system directory táblában, vagy ilyen logikai nevet definiálni a saját processz táblában.) Ha a rendszer filespecifikációt vagy eszköznevet vizsgál logikai névként, a kiértékelés lehet iteratív; a logikai név helyettesítése után megismétli a bal oldali első elemre az eljárást. Az iteráció megengedett szintje a rendszerben szabályozható, de legalább 9.

A kiértékelés szabályozható a

 

$ DEFINE /TRANSLATION_ATTRIBUTES=opció

 

paranccsal. Az opció lehet CONCEALED - ez egy specialis logikai név típus, a rooted directory logical name esetén lehet hasznos, és ekkor a rendszer üzeneteiben nem használja az ekvivalencia-stringet –, vagy TERMINAL, ami megtiltja az iteratív kiértékelést.

 

Például

 

$ DEFINE ADATLEMEZ DUA2:

$ DIRECTORY ADATLEMEZ:[USER]*.FOR

 

esetén a DUA2: lemezről kapunk tartalomjegyzéket; a

 

$ DEFINE INPUTFILE ADATLEMEZ:[USER]PROBA.DAT

 

példa az iteratív logikai név definícióra.

 

 

      1. 5.2.2.Precedencia és elérési mód 

 

Azonos logikai nevek egynél több táblában is szerepelhetnek. A logikai név kiértékelésekor a keresés sorrendje a következő: processz tábla, job tábla, csoport tábla, rendszer tábla, cluster tábla. Ezt a precedenciát a DCL parancsok módosítói felülírhatják.

 

Ha definiálunk egy logikai nevet, elérési módot (access mode) is rendelünk hozzá – ez határozza meg, hogy az illető logikai nevet mely parancsok használhatják.. Az elérési mód lehet user, supervisor, executive vagy kernel. A default a supervisor mód. Az elérési módok között user, supervisor, executive, kernel a precedencia. A user módú logikai nevek ideiglenesek: ha az aktuális image (vagy a következő, ha nincs aktuális aktív) befejeződik, a user módú logikai nevek törlődnek. A supervisor módú logikai neveket használjuk a szokványos műveletekhez, ezek a processz végéig vagy törlésükig léteznek. A rendszer műveletek, privilegizált programok (például a LOGINOUT) csak executive vagy kernel módú logikai neveket használnak. Az executive módú logikai nevek létrehozásához SYSNAM privilégium szükséges; ennek hiányában akkor is supervisor módú logikai név jön létre, ha megadjuk a /EXECUTIVE módosítót. Kernel módú logikai neveket csak az operációs rendszer és a privilegizált programok hozhatnak létre.  

 

Például a

 

$ DEFINE MAGNO MSA0:

$ DEFINE/EXECUTIVE_MODE MAGNO MSA0:

 

parancsok esetén a MAGNO logikai név a processz logikai név táblába kerül, de az első esetben supervisor, a második esetben executive módban. (Ez utóbbihoz SYSNAM privilégium szükséges.)

 

 

      1. 5.2.3.A default logikai nevek és logikai név táblák 

 

A logikai nevek definiáláskor egy logikai név táblába kerülnek. A logikai név táblákat pedig a logikai név tábla directory tartalmazza. Alapértelmezésben öt logikai név táblát használhatunk: processz-tábla, job-tábla, csoport-tábla, rendszer-tábla, cluster-tábla. A táblákat és a köztük lévő összefüggéseket le is kérdezhetjük:

 

$ SHOW LOGICAL/STRUCTURE

(LNM$PROCESS_DIRECTORY)

    (LNM$PROCESS_TABLE)

(LNM$SYSTEM_DIRECTORY)

    (LNM$SYSTEM_TABLE)    

    (LMF$LICENSE_TABLE)

    (LNM$CLUSTER_TABLE)

        (LNM$SYSCLUSTER_TABLE)

    (LNM$GROUP_004231)

    (LNM$JOB_224E9FE0)

            .

            .

            .

 

(Csak a processz számára olvasható logaikai név táblákat listázza ki a rendszer.)

A job ebben az esetben a processzt és a hozzá tartozó összes alprocesszt jelenti, azaz a job-tábla tartalmát ezek a processzek együttesen használják.

 

 

A processz-tábla neve: LNM$PROCESS_TABLE, ez a saját processzhez kapcsolódik. Logikai név létrehozásakor és használatakor ez az alapértelmezés szerinti tábla – kivéve, ha átírjuk a hozzáférési sorrendet. Bejelentkezéskor a rendszer létrehozza, és a következő logikai neveket helyezi el:

 

Az elsődleges file, ahonnan a DCL az inputot olvassa (input stream).

A bejelentkezés során vagy SET DEFAULT paranccsal beállított default lemez.

A rendszerüzenetek default eszköze vagy fileja.

A DCL default inputja.

DECnet task-task kommunikáció vagy TCP/IP InetACP esetén a partnerhez irányuló logikai kapcsolat.

A DCL default outputja.

A default terminál neve.

 

A SYS$INPUT, SYS$OUTPUT, SYS$COMMAND, SYS$ERROR logikai nevek által definiált fileok a processz teljes időtartama alatt nyitva vannak (processz permanens fileok). Ha új értéket adunk nekik, akkor a régi érték EXECUTIVE módban ott marad a logikai név táblában, tehát az új érték törlésekor újra az eredeti lesz az aktív.

 

 

A job-tábla neve LNM$JOB_xxxxxxxx (az xxxxxxxx az egyedi – nyolcjegyű, hexadecimális - jobszám); az ebben levő neveket a saját processz és annak valamennyi alprocessze elérheti. A saját processzünk job-tábla nevére LNM$JOB névvel is hivatkozhatunk. Bejelentkezéskor a VMS létrehozza és elhelyezi benne az alábbi logikai neveket:

 

A bejelentkezéskor érvényes default eszköz és directory.

A SYS$LOGIN eszköz része.

DECnet hálózaton keresztül indított job esetén a processz azonosítója az indító távoli csomóponton.

DECnet hálózaton keresztül indított job esetén az indító távoli csomópont neve.

A default eszköz és directory az ideiglenes fileok számára.

 

 

A csoport-tábla neve LNM$GROUP_xxxxxx (ahol xxxxxx a processz UIC csoportszámából képezett hatjegyű oktális szám); a saját csoport-tábla nevére LNM$GROUP logikai névvel is hivatkozhatunk. A táblát az összes azonos csoportszámú felhasználó együtt használja, beleírni a GRPNAM vagy SYSPRV privilégiummal lehet. Ebbe a táblába a rendszer automatikusan nem ír be egyetlen logikai nevet sem.

 

 

A rendszer-tábla neve LNM$SYSTEM_TABLE, a benne lévő neveket az összes felhasználó elérheti. A rendszer-táblába SYSNAM vagy SYSPRV privilégiummal lehet írni.

 

A rendszer indításakor elhelyezi a táblában azokat a logikai neveket, amelyek a működéséhez szükségesek, és a felhasználók ezekre tudnak hivatkozni. (A rendszer alatt futó szoftverek szintén hozhatnak létre itt bejegyzéseket, de az is lehet, hogy saját logikai név táblát használnak.)

A felhasználóknak leggyakrabban szükséges rendszer szintű logikai nevek:

 

Az OpenVMS Debugger default inputja, processz szinten azonos a SYS$INPUT-tal.

Az OpenVMS Debugger default outputja, processz szinten azonos a SYS$OUTPUT-tal.

A SYS$SYSROOT-nak a clusterben közösen használt része. (eszköz és directory). Default értéke SYS$SYSDEVICE:[SYSn.SYSCOMMON.], ahol n az illető gépen futó rendszer gyökér directoryjának a sorszáma.

A hibanapló file helye (eszköz és directory). Default értéke SYS$SYSROOT:[SYSERR]

A rendszer példák helye (eszköz és directory). Default értéke SYS$SYSROOT:[SYSHLP.EXAMPLES]

A rendszer help filejainak helye (eszköz és directory). Default értéke SYS$SYSROOT:[SYSHLP]

A rendszer utasítás adatfilejainak helye (eszköz és directory). Default értéke SYS$SYSROOT:[SYSCBI]

A rendszerkönyvtárok helye (eszköz és directory). Default értéke SYS$SYSROOT:[SYSLIB]

A boot alatt betöltendő programok helye, lényegében a kernel található itt. Default értéke SYS$SYSROOT:[SYS$LDR]

A rendszer karbantartó fileok helye (eszköz és directory). Default értéke SYS$SYSROOT:[SYSMAINT]

A rendszer felügyelet (system management) fileok helye (eszköz és directory). Ezenkívül sok, a system manager munkájával kapcsolatos adat- és definíciós file is itt található. Default értéke SYS$SYSROOT:[SYSMGR]

A rendszer üzenet filejainak helye (eszköz és directory). Default értéke SYS$SYSROOT:[SYSMSG]

A csomópont neve, ha a DECnet for OpenVMS aktív és van kapcsolatunk a hálózattal.

Az image dump file helye (a felhasználónak kell létrehoznia).

A rendszer megosztható imagek helye (eszköz és directory). Default értéke SYS$SYSROOT:[SYSLIB]

A SYS$SYSROOT logikai névnek a csomópont specifikus része (eszköz és directory). Default értéke SYS$SYSDEVICE:[SYSn..], ahol n az illető gépen futó rendszer gyökér directoryjának a sorszáma.

A rendszerindításkor (boot) végrehajtandó parancseljárások helye (eszköz és directory). Default értéke egy kereső lista a SYS$SYSROOT:[SYS$STARTUP], SYS$MANAGER ekvivalencia-stringekkel.

A rendszer directorykat tartalmazó lemez.

A rendszer directoryk eszköze és gyökér (root) directoryja. Default értéke egy kereső lista: az első ekvivalencia-string a csomópont-specifikus directory (SYS$SYSDEVICE:[SYSn..], ahol n az illető gép gyökér directoryjának a sorszáma), a második a SYS$COMMON.

A rendszerprogramok és eljárások helye (eszköz és directory). Default értéke SYS$SYSROOT:[SYSEXE]

Az UETP (User Environment Test Package) helye (eszköz és directory). Default értéke SYS$SYSROOT:[SYSTEST].

Az update fileok helye (eszköz és directory). Default értéke SYS$SYSROOT:[SYSUPD].

 

 

A cluster tábla (Clusterwide System Table) neve LNM$SYSCLUSTER_TABLE, ebben vannak a cluster összes felhasználója által elérhető logikai nevek. Erre a táblára indirekt módon a LNM$SYSCLUSTER névvel is hivatkozhatunk.

Ezenkívül létezik egy Clusterwide Parent Table, LNM$CLUSTER_TABLE névvel, amely az összes, clusterben látható logikai név tábla szülőtáblája, beleértve a LNM$SYSCLUSTER_TABLE-t is.

 

A rendszer két logikai név directory táblát biztosít a logikai név táblák katalógusba vételére. A saját processzünk által kizárólagosan használható (process-private) táblák az LNM$PROCESS_DIRECTORY-ban, a rendszer összes felhasználója által megosztott táblák az LNM$SYSTEM_DIRECTORY táblában vannak.

 

Az LNM$PROCESS_DIRECTORY a következő default bejegyzéseket tartalmazza:

 

Az LNM$GROUP_xxxxxx ekvivalencia-stringjével egyenlő logikai név; az xxxxxx a csoportszám. (Az LNM$GROUP_xxxxxx a rendszer directory táblájában van).

Az LNM$JOB_xxxxxxxx logikai név ekvivalencia-stringjével egyenlő logikai név; xxxxxxxx a saját job egyedi száma. (Az LNM$JOB_xxxxxxxx a rendszer directory táblájában van).

Az LNM$PROCESS_TABLE logikai név ekvivalencia-stringjével egyenlő logikai név.

A processz directory logikai név tábla neve.

A processz logikai név tábla neve.

 

Az LNM$SYSTEM_DIRECTORY default bejegyzéseiből a normál felhasználó számára az alábbiak a legfontosabbak:

 

A cluster szülő táblájára (clusterwide parent table, LNM$CLUSTER_TABLE) mutató logikai név.

Directory logikai név, az LNM$PROCESS_DIRECTORY és LNM$SYSTEM_DIRECTORY értékekkel.  

Ez a logikai név határozza meg, hogy milyen sorrendben keresi a rendszer a logikai nevet a különböző táblákban. Kereső lista, default értékei: LNM$PROCESS, LNM$JOB, LNM$GROUP, LNM$SYSTEM, azaz a rendszer a processz, job, group, system, és clusterwide logikai név táblákban keres, ebben a sorrendben.

 

 

    1. 5.3. Szimbólumok és kifejezések 

 

Az OpenVMS operációs rendszer lehetővé teszi, hogy a DCL parancsokban karakteres vagy numerikus (egész) adatokat használjunk: Szimbólumokat definiálhatunk, amelyekben ezeket az adatokat tárolhatjuk, és velük műveleteket végezhetünk. Ha a DCL kifejezésekben egy szimbólum szerepel, a DCL helyettesíti az értékével. A szimbólumokat és kifejezéseket sok helyen alkalmazhatjuk:

 

 

A szimbólumnév 1-255 karaktert tartalmazhat; betűvel, aláhúzásjellel (_), dollárjellel ($) kell kezdődnie; alfanumerikus karakterrel, aláhúzásjellel vagy dollárjellel folytatódhat. A kis- és nagybetűk használata egyaránt megengedett, a DCL a nevet csupa nagybetűssé konvertálja.

 

 

      1. 5.3.1.A szimbólumok definiálása 

 

A szimbólumok az Assignment (=) utasítással definiálhatók; a definíció formája meghatározza a szimbólum elérhetőségét is: A

 

$ szimbólumnév = kifejezés    !(lokális szimbólum)

$ szimbólumnév == kifejezés   !(globális szimbólum)

 

tetszőleges értékű szimbólumot definiál vagy ad egy létezőnek új értéket. Például

 

$ REKORDSZAM = 12

$ HAZA == "SET DEFAULT SYS$LOGIN"

 

Az első parancs egy lokális numerikus, a második egy globális karakteres szimbólumot definiál. A lokális szimbólum a kurrens parancsszinten vagy parancseljárás szintjén érvényes, a globális az összes szinten, azaz függetlenül a definiálás helyétől, minden parancseljárás tudja használni (hasonlóan a programok lokális és globális változóihoz). A

 

$ SET SYMBOL

 

parancs segítségével ettől eltérően is szabályozhatjuk a szimbólumok érvényességi körét.

 

A szimbólumnak adott első jobboldali kifejezés értéke határozza meg, hogy a szimbólum integer vagy karakteres lesz (automatikus típusdeklarálás).

 

A szimbólum definiálásának van még egy speciális formája:

 

$ szimbólumnév := kifejezés    !(lokális string szimbólum)

$ szimbólumnév :== kifejezés   !(globális string szimbólum)

 

Ezzel a formával csak karakter-szimbólumot definiálhatunk. Ilyenkor a karakterstringet nem kötelező idézőjelek közé zárni, de ekkor a kisbetűk nagybetűkké konvertálódnak, és a több, egymás melletti szóköz és tabulátor karakter egy szóközre redukálódik, a string elején és végén levő szóközök és tabulátor karakterek pedig törlődnek idézőjel hiányában.

 

A READ és INQUIRE DCL parancsok is definiálják a paraméterként szereplő szimbólumokat. (10. fejezet)

 

A szimbólum definíciójakor megadhatjuk, hogy rövidíthető. Például a

 

$ DIR*ECTORY == "DIRECTORY /SIZE /DATE"

 

esetén a DIR, DIRE, ..., DIRECTORY egyformán használható.

 

 

A szimbólumok értékét a

 

$ SHOW SYMBOL

 

paranccsal írathatjuk a képernyőre. Például

 

$ SHOW SYMBOL HAZA

HAZA = "SET DEFAULT SYS$LOGIN"

 

vagy

 

$ SHOW SYMBOL REKORDSZAM

  REKORDSZAM = 4  Hex = 00000004  Octal = 00000000004

 

 

A szimbólum törlése a

 

$ DELETE /SYMBOL

 

paranccsal történhet.

 

 

A DCL a szimbólumokat a lokális illetve globális szimbólumtáblában helyezi el. Három lefoglalt globális szimbólum mindig szerepel a táblában:

 

Az utoljára végrehajtott parancs feltételkódja.

Az utoljára végrehajtott parancs sikeressége: a $STATUS utolsó három bitje. Értéke lehet:

Mivel a DCL a páros integert nemnek, a páratlant igennek tekinti, a Success és az Information esetet a $SEVERITY logikai vizsgálatánál együtt tudjuk kezelni.

Értéke TRUE, ha a batch job újra indult egy rendszer crash vagy a job megszakítása után, egyébként FALSE.

 

Az alábbi parancsok - ha sikeresen végrehajtódnak - nem változtatják meg a $STATUS és a $SEVERITY értékét:

 

CONTINUE         DECK            DEPOSIT         EOD

EXAMINE          GOTO            IF                SHOW STATUS

SHOW SYMBOL      STOP             WAIT

 

Ezenkívül ha egy SUBMIT vagy PRINT parancs sikeresen végrehajtódik, akkor az létrehozza a $ENTRY szimbólumot. Értéke a létrejött job entry-száma. A következő PRINT vagy SUBMIT parancs a $ENTRY értékét felülírja. (11. fejezet)

 

 

      1. 5.3.2.A szimbólumok behelyettesítése 

 

A DCL parancsok végrehajtásakor a szimbólumok helyére bizonyos esetekben automatikusan az értékük kerül, más helyeken pedig csak akkor, ha az aposztróf (') vagy az ampersand (&) jeleket használjuk.

Automatikusan behelyettesítődnek a szimbólumok:

 

A normál behelyettesítő operátor az aposztróf ('); a szimbólumot aposztrófok közé zárva kell leírni. Például

 

$ NEV:= LISTA

$ FILE:= 'NEV'.LIS

$ SHOW SYMBOL FILE

  FILE = "LISTA.LIS"

 

A behelyettesítés megengedett karakterstringen belül is, de akkor a kezdő aposztrófot meg kell kettőzni:

 

$ MEGJ = "A ''FILE' FILET KELL KIIRNI"

$ SHOW SYMBOL MEGJ

  MEGJ = "A LISTA.LIS FILET KELL KIIRNI"

 

 

Speciális esetekben használható behelyettesítő operátor az ampersand (&) jel. A két operátor közti különbség annyi, hogy az aposztrófokkal jelzett behelyettesítés a parancsértelmezés első fázisában, az & jellel meghatározott  pedig a második fázisban történik meg.

 

Például:

 

$ B = "ADAT.DAT"

$ A = "&B"

$ SHOW SYMBOL A

  A = "&B"

$ TYPE 'A'

 

Ekkor az ADAT.DAT file jelenik meg a terminálon.

 

$ P1 = "LIST.LIS"

$ INDEX = 1

$ PRINT &P'INDEX'

 

A LIST.LIS file lesz kinyomtatva. Mivel a DCL-ben nincs tömb, ezért a fenti módon oldhatjuk meg az indexelést.

 

 

A parancsértelmező három fázisban végzi el a szimbólumok behelyettesítését:

 

A parancsértelmező nem végez behelyettesítést a parancsok input adatai esetén. Ha tehát egy parancsfileban elindítunk egy programot, amely a SYS$INPUT-ról vár inputot, az input sor(ok)ban nem történik szimbólum behelyettesítés. Ha erre lenne szükségünk, akkor jó megoldás lehet egy új parancsfile létrehozása (ott elvégezve a szükséges behelyettesítéseket), s annak elindítása az adott szintről. Például

 

$ OPEN /WRITE MASOD MASOD.COM

$ WRITE MASOD "$ RUN FELIRO"

$ WRITE MASOD "''P1'"

$ WRITE MASOD "''P2'"

$ CLOSE MASOD

$ @MASOD

$ DELETE MASOD.COM;0

 

A fenti parancsfile az indítási paramétereket átadja a FELIRO nevű, RUN paranccsal indított programnak. (A részletes magyarázatot lásd a 10.3.2. fejezetben.)

 

 

A szimbólum értékeket az alábbi sorrendben keresi a parancsértelmező a szimbólum táblákban:

  1. 1.Az aktuális parancsszint lokális szimbólumtáblájában. 

  2. 2.Az összes megelőző parancsszint lokális szimbólumtáblájában. 

  3. 3.A globális szimbólumtáblában. 

 

 

      1. 5.3.3.A kifejezések 

 

A kifejezések konstans karakter-stringeket, integereket, könyvtári függvényeket (lexical function), szimbólumokat tartalmaznak, a megengedett műveletekkel összekötve. A kifejezések kiértékelésekor a DCL mindig helyettesíti a szimbólumot annak értékével.

 

A kifejezések az alábbi elemekből épülhetnek fel:

 

1. Az integer konstans alapértelmezésben decimális, de %X, %D, %O segítségével explicit módon jelezhetjük a hexadecimális, decimális és oktális alapszámot:

 

$ SZAM = %O10      !oktális

$ SZAM = %X10      !hexadecimális

$ SZAM = 10    !decimális

 

2. A karakterstring konstans bármilyen nyomtatható karaktert tartalmazhat; a kifejezésben mindig idézőjelek (") közé kell zárni. Ha idézőjelet is akarunk szerepeltetni a szövegben, akkor két egymást követő idézőjel szükséges. A karakterstring folytatható a másik sorban egy pluszjel (konkatenáció) és egy mínuszjel (folytató sor) segítségével:

 

$ CHS = "ALFA"  + -

_$ "BETA"

$ VALASZ = "Type ""YES"" or ""NO"""

 

3. A lexikális függvények kötelezően F$-val kezdődnek, értéküket a parancsértelmező kiszámítja és behelyettesíti a parancs-stringbe. A függvényérték lehet integer vagy karakteres. A függvény formája

 

F$függvénynév([arg,...])

 

$ DATUM = F$TIME()

 

(A függvények részletesebb leírása a 10.2. fejezetben található.)

 

4. A kifejezésekben bármilyen, korábban definiált szimbólum szerepelhet:

 

$ INDEX = INDEX + 1

$ REKORD == NEV + CIM + "******"

 

Ha egy kifejezésben tagként szimbólum szerepel, akkor értéke automatikusan behelyettesítődik. Ha azonban a szimbólum értékét a kifejezés kiszámítása előtt kívánjuk behelyettesíteni, akkor aposztróf (') jelek közé kell tenni a szimbólumnevet.

 

$ A = 20

$ B = A + 1

 

B értéke 21 lesz, aposztróf használata nem szükséges.

 

$ Sz = 1

$ P1 = 421

$ P2 = P'Sz'+ 2

 

A P2 kiszámítása előtt a P'Sz' helyére P1 kerül, ezért P2 értéke 423 lesz.

 

Ha string értékadást használunk (:=), akkor mindig aposztrófot kell használni, ha szimbólum behelyettesítést kívánunk

 

5. A kifejezésekben szereplő konstansokat, szimbólumokat és lexikális függvényeket műveleti jelekkel, operátorokkal kötjük össze. A DCL-ben megengedett operátorok és precedencia szintjük:

 

Operátor Precedencia Leírás

                     szint

 

+  -            7               Előjel

*  /     6           Szorzás, (egész) osztás

+               5                Összeadás, string összefűzés;

-  5  Kivonás, string kivonás

.EQS.           4                Karakterstring egyenlő

.GES.          4                Karakterstring nagyobb vagy egyenlő

.GTS.           4                Karakterstring nagyobb

.LES.           4                Karakterstring kisebb egyenlő

.LTS.           4                Karakterstring kisebb

.NES.            4                Karakterstring nem egyenlő

.EQ.             4                Két szám egyenlő

.GE.             4                Az első szám nagyobb vagy egyenlő, mint a második

.GT.             4               Az első szám nagyobb, mint a második

.LE.             4                Az első szám kisebb vagy egyenlő, mint a második

.LT.             4                Az első szám kisebb, mint a második

.NE.            4                A két szám nem egyenlő

.NOT.           3                Logikai negáció

.AND.            2               Logikai ÉS művelet

.OR.             1                Logikai VAGY művelet

 

A string összefűzés (konkatenálás) a stringek egymás után írását jelenti. A string kivonásban a mínuszjel után álló stringet elhagyjuk az első karaktersorból (az első előfordulást). Például:

 

$ A = "ADAT" + ".DAT"          

$ SHOW SYMBOL A

  A = "ADAT.DAT"

$ B = "[USER]LOGIN" - "[USER]"  

$ SHOW SYMBOL B

  B = "LOGIN"

 

A karakterstring hasonlítások a karakterek ASCII kódja szerint történik; a rövidebb string bináris 0 byteokkal van kiegészítve (lexikografikus rendezés). A hasonlítás értéke 1 (true) vagy 0 (false) lehet. A numerikus hasonlításokban az integer érték számít. Például

 

"aaaa" .LES. "bbbb"

 

kifejezés igaz,

 

12+3 .EQ. 7

 

pedig hamis.

 

A karakterstringeket a DCL integerbe konvertálja, ha egy kifejezésben string és integer együtt szerepel. Ha a karakterstring a DCL-ben megengedett formájú számot tartalmaz, akkor annak értékét kapja a konvertálás során. Egyébként, ha a T, t, Y, y betűvel kezdődik, akkor értéke 1 lesz (ezek az igaz, TRUE értékek), minden más esetben 0.

String hasonlítás során a DCL az integert konvertálja stringgé, decimális értékkel, előnullázás nélkül. Egész hasonlítás esetén pedig a fenti algoritmus szerint a karakterstringet.

 

A logikai műveletek integerekre alkalmazhatók, a DCL bitenként hajtja végre a műveletet. Például

 

$ A = 3.OR.5

$ SHOW SYMBOL A

  A = 7   Hex = 00000007  Octal = 00000000007

$ B = 3.AND.5

$ SHOW SYMBOL B

  B = 1   Hex = 00000001  Octal = 00000000001              

 

 

Speciális formája a string értékadásnak a részstring (substring) változtatása:

 

$ szimbólum-név[offset, hossz] := csere-string

 

vagy globális szimbólum esetén

 

$ szimbólum-név[offset, hossz] :== csere-string

 

Itt a [] része a szintaxisnak, az offset a cserélendő rész kezdete (0 az 1. karaktert jelenti, 1 a másodikat stb.), a hossz pedig a cserélendő string méretét jelenti (értéke 0-768 lehet). Például

 

$ ABC := BETABETA

$ ABC[0,4] := ALFA

$ SHOW SYMBOL ABC

   A = "ALFABETA"

 

A következő parancs definiálja a SOR szimbólumot, melynek értéke egy 80 karakter hosszú string lesz (1 darab * és 79 szóköz):

 

$ SOR[0,80]:= "*"

 

 

A szimbólum definíciót használhatjuk külső parancs (foreign command) definiálására is:

         

$ szimbólum-név :=[=] $image-file-spec.

$ szimbólum-név =[=] "$image-file-spec."

 

A szimbólumnév a külső parancs neve, ezzel aktivizálható a megadott image, a filespecifikáció pedig az az image, amely végrehajtja a parancsban megadott funkciókat. A leíráshoz a Command Definition Utility használható (a OpenVMS Command Definition Librarian, and Message Utilities Manual-ban található).

A VMS lehetővé teszi az automatikus külső parancs használatát (automatic foreign command): Ha a DCL$PATH logikai név definiálva van és értéke nem az üres string, akkor a parancssor első szavára a DCL keresést indít a DCL$PATH:*.COM, DCL$PATH:*.EXE fileokra. Ha talál ilyet, akkor végrehajtja, és a parancssor többi eleme az illető parancsfilenak vagy végrehajtható programnak lesz a paramétere. (Ugyanolyan, mint a DOS és Unix alatti PATH használata.)

 

 

    1. 5.4.A dátum és idő kezelése 

 

Bizonyos parancsok paraméterei között megadhatunk időpontot is. A DCL három időpont meghatározást ismer: az abszolút, a delta és az összetett (absolute, delta, combination time) időpontot. Az operációs rendszer aktuális időpontját a SHOW TIME DCL paranccsal kérdezhetjük le, és a SET TIME DCL paranccsal változtathatjuk meg - ez utóbbit OPER és LOG_IO privilégium birtokában.

 

$ SET TIME=14-AUG-2003:19:31

$ SHOW TIME

14-AUG-2003 19:33:27

 

     

      1. 5.4.1.Az abszolút időpont 

 

Az abszolút időpont egy fix dátumot és időt jelöl, formája:

 

[dd-mmm-yyyy[:]][hh:mm:ss.cc]

 

(A [] a mezők elhagyhatóságát jelzi, a - : . része a szintaxisnak.)

 

Az egyes mezőkre az alábbi korlátok érvényesek:

 

A dátum vagy az idő jobb oldali mező(i) elhagyhatók. A baloldali mezők is elhagyhatók, ha az elválasztó írásjeleket (kettőspont és kötőjel) kitesszük. Ha mind a dátum mind az idő mező szerepel, akkor kötelező közéjük kettőspontot írni, vagy az egész értéket idézőjelek közé tenni. Ha csak dátumot írunk, annak legalább egy kötőjelet kell tartalmaznia.

A hiányzó dátummező(k) default értéke az aktuális rendszerdátum, az időmező(k)é 0. A századmásodpercek nem tizedes törtként vannak megadva, ezért például ha 50 századmásodpercet akarunk megadni, akkor a cc helyére 50-t kell írni, nem 5-t. A mezőket nem kötelező előnullázni. Az abszolút időt jelölhetjük a TODAY, YESTERDAY, TOMORROW kulcsszavakkal is; ez a mai, tegnapi illetve holnapi dátumot jelenti, 00:00:00.00 idővel. Bizonyos esetekben használható még a BOOT, LOGIN időpont, a rendszer indítás illetve a processz bejelentkezési időpontját jelölhetjük vele.

 

Példák abszolút időre:

 

12-APR-2000:12:24:30.66

Teljes dátum, minden mezőjét megadtuk.

 

10-JAN-1968:15           

Itt a perc, másodperc, századmásodperc értéke 0.

 

30-

Az aktuális év és hónap 30. napja, 00:00:00.00 időponttal.

 

7:12

Az aktuális év, hónap, nap, 7:12:00.00.

 

TODAY

Az aktuális év, hónap, nap, 00:00:00.00.

 

 

      1. 5.4.2.A delta időpont 

 

A delta időpont egy időintervallumot jelöl a rendszer aktuális dátuma és egy jövendőbeli időpont között. Formája:

 

[dddd-][hh:mm:ss.cc]

 

(A [] a mezők elhagyhatóságát jelzi, a - : . része a szintaxisnak.)

 

Az egyes mezőkre az alábbi korlátok érvényesek:

A delta idő jobb oldali mező(i) elhagyhatók, értékük 0 lesz. A baloldali mezők is elhagyhatók, ha az elválasztó karaktereket kiírjuk.

 

Példák delta időpontra:

 

3-

Az aktuális időpontnál 3 nappal (72 órával) később.

 

3

Az aktuális időpontnál 3 órával később.

 

:3

Az aktuális időpontnál 3 perccel később.

 

3-:30

Az aktuális időpontnál 72 óra 30 perccel később.

 

12:20:40

Az aktuális időpontnál 12 óra, 20 perc, 40 másodperccel később.

 

 

      1. 5.4.3.A összetett időpont 

 

A összetett időpont egy abszolút időpont és egy delta időpont összegéből vagy különbségéből áll. A delta időpontot mindig + vagy - jellel kell elválasztani az abszolút időponttól. Ha időpontok összegét használjuk, az egész időpont meghatározást idézőjelek (") közé kell zárni. Formája:

 

[[dd-mmm-yyyy[:]][hh:mm:ss.cc]]-[dddd-][hh:mm:ss.cc]

 

vagy

 

"[[dd-mmm-yyyy[:]][hh:mm:ss.cc]]+[dddd-][hh:mm:ss.cc]"

 

(A [] a mezők elhagyhatóságát jelzi, a - : . része a szintaxisnak.)

 

Az abszolút időpont rész egyes mezőire az alábbi korlátok érvényesek:

 

A delta időpont rész egyes mezőire az alábbi korlátok érvényesek:

 

Ha elhagyjuk a teljes abszolút időpont specifikációt, vagy annak egyes mezőit, akkor a rendszer aktuális dátuma és ideje a default.

 

Az összetett és a delta időpont bizonyos esetben azonos formájú (például a dd- ). De ez nem okozhat zavart, mivel a DCL parancsok szintaxisa egyértelműen meghatározza, hogy mikor melyik időmeghatározás formát lehet használni az adott helyen.

 

Példák összetett időpontra.

 

17-MAR-1989:11:22:33.44 - 12-7:40:10.50

 Teljes összetett időpont.

 

"17-MAR-1989:11:22:33.44 + 12-7:40:10.50"

 Teljes összetett időpont.

 

"+5"

Az aktuális időpontnál 5 órával később. (Az abszolút időpontot elhagytuk.)

"+:5"

Az aktuális időpontnál 5 perccel később. (Az abszolút időpontot elhagytuk.)

 

"TODAY+3-"

 Mához három napra, 00:00:00.00-kor.

 

 

  1. 6.A szövegszerkesztők 

 

A VMS-ben több szövegszerkesztő segédprogram van. Az EDT és a DECTPU (DEC Text Processing Utility) általános célú editorok, róluk részletesen szólnak az alfejezetek.

Az EDT használata nagyon gyorsan megtanulható, mert az alapvető funkciók nem kötődnek bonyolult billentyűkombinációhoz; több pufferben tárolhatunk fileokat, viszonylag egyszerűen definiálhatunk új billentyűket, a makrónyelve viszont viszonylag nehézkes. Ezzel szemben a DECTPU hatékonyan bővíthető saját parancsainkkal; egyidőben több puffer jeleníthető meg a képernyőn és több file editálható egyszerre. Ez a két szövegszerkesztő képernyő-orientált, kényelmesen és gyorsan használható, elsősorban interaktív működésre tervezték őket.

 

A SUMSLP kevés, nem túl bonyolult funkcióval rendelkező, kötegelt feldolgozásra orientált szövegszerkesztő program. Lehetővé teszi, hogy egyetlen input parancsfile segítségével több filet módosítsunk. (Tipikus használata: forrásprogram, szövegfile update a megfelelő módosító file alapján.) Mind interaktív módon, terminálon beírt parancsokkal, mind parancsfilelal meghívva használható a

 

$ EDIT/SUM input-file

 

DCL paranccsal.

 

A DSR (Digital Standard Runoff) nyomdai tördelőszerkesztő. Olyan (tetszőleges módon, szövegszerkesztővel vagy programmal létrehozott) szövegfilet képes feldolgozni, amely tartalmazza mind a DSR-nek szóló formázó parancsokat, mind a formázandó szöveget. A DSR outputja a parancsokkal meghatározott sor- és lapméretű, sorszámozott, tördelt, fejezetekre bontott és más szokványos módon formázott szövegfile lesz, a vezérlő információk nélkül.

A DSR a fenti funkción kívül rendelkezik egy tartalomjegyzék készítő segédprogrammal, amely az input szövegben levő fejezet, alfejezet, rész címek alapján állítja össze a tartalomjegyzék filet, valamint egy tárgymutatót (index) létrehozó utilityvel.

 

Hívása:

 

$ RUNOFF filespecifikácó [,...]

$ RUNOFF /CONTENTS filespecifikácó [,...]

$ RUNOFF /INDEX filespecifikácó [,...]

 

 

A VMS további, speciális célú szerkesztőket is tartalmaz: Az ACL editor védelmi struktúrák kialakítására használható, az FDL editorral a file leírásokat hozhatunk létre. A TECO editor pedig egy, a korábbi Digital operációs rendszerekben is használatos, nem túlzottan erőforrás-igényes,  programozható szövegszerkesztő.

 

 

Programfejlesztéshez a fentieknél hatékonyabban használható a Language Sensitive Editor, az LSE, amely az EVE-hez hasonló szövegszerkesztő funkciókon túl a programnyelvekre vonatkozó szintaktikai utasításokkal rendelkezik, és kezelni tudja a nyelvi fordítót és annak a hibalistáit.

Az LSE azonban nem része a VMS-nek, önálló licenccel rendelkezik (azaz külön kell megvásárolni).

 

 

    1. 6.1. A DECTPU 

 

 A DEC Text Processing Utility (DECTPU) egy programozható szövegfeldolgozó program, amely több puffert, több ablakot, több alprocesszt tud kezelni egyidőben. Használható kötegelt üzemmódban, definiálhatunk benne billentyűket és megismételhető parancssorozatokat (learn sequence), és felhasználói programból hívható felülettel (callable interface) is rendelkezik.

A DECTPU programnyelvben megtaláljuk mindazokat az elemeket, amelyek könnyűvé teszik egy szövegszerkesztő megírását: Az adattípusok ennek megfelelőek (például WINDOW, MARKER, KEYWORD); nagyszámú beépített függvény áll rendelkezésre (például CREATE_WINDOW, SCROLL, COPY_TEXT, DEFINE_KEY), és saját eljárásokat is írhatunk.

Arra is lehetőségünk van, hogy egy adott TPU környezetet egészítsünk ki a saját definícióinkkal, majd azt mentsük későbbi használatra.

 

Ez a fejezet nem tartalmazza a részleteket; részben az OpenVMS User's Manual 8. fejezetében, részben a DEC Text Processing Utility Reference Manual című könyvben megtaláljuk e lehetőségek leírását.

 

 

      1. 6.1.1.Az EVE használata    

 

Az EVE (Extensible Versatile Editor) egy DECTPU-val létrehozott programozható szövegszerkesztő, amely VT100, VT200, VT300 vagy VT400 sorozatú terminálon, illetve ilyen emulációval használható. (Ha az emuláció nem biztosítja az összes billentyűt, akkor természetesen megfelelően szűkítve.). Az EVE képes billentyűsorozatokat megjegyezni, több puffert használni, wildcard karaktereket felhasználva keresni, DCL parancsokat végrehajtani és nyelvi ellenőrzést végezni a DECspell szoftver segítségével. Az

 

$ EDIT /TPU [filespecikáció]

 

DCL paranccsal aktivizálható. Mivel a fenti paranccsal az EVE-t, a default TPU szerkesztő programot hívjuk meg, a Digital javasolja az EVE szimbólum definiálását:

 

$ EVE == "EDIT /TPU"

 

A filespecifikációban megengedett a szokásos wildcard karakterek (* % ...) használata. Ha csak egy file felel meg a specifikációnak, akkor az kerül a pufferbe, ha viszont több is, akkor az EVE felsorolja a megfelelő fileokat és kéri a választásunkat. Ha egyetlen file sem felel meg, akkor nem olvas be semmit a pufferbe. (Ha több input filet is használunk, azokat későbbi TPU parancsokkal tölthetjük be a puffer(ek)be.)

Ha nem létező filet adunk meg, akkor az EVE üres pufferrel indul, s majd kilépéskor a megadott filet hozza létre:

$ EDIT /TPU UJFILE.TXT

 

[End of file]

 

 

 

 

 

 

 

Buffer: UJFILE.TXT              | Write | Insert | Forward

Command:

Editing new file. Could not find: UJFILE.TXT

 

Ugyanez a helyzet, ha nem adunk meg filet az indításkor - üres pufferrel indul az EVE, amibe beolvashatunk egy filet, illetve kilépéskor megkérdezi a létrehozandó file nevét.

 

Kilépéskor legegyszerűbb a CTRL/Z-t vagy az F10-et megnyomni. Ha módosítottuk a puffer tartalmát, akkor egy új verzió jön létre, ha nem változtattunk, akkor nem.

Ha nem akarunk élni ezzel az automatizmussal, vagy csak menteni akarunk egy puffert, akkor a DO billentyűt kell használni (a billentyűleírásokat lásd a 6.1.2. fejezetben). Ekkor a

 

Command:

 

promptra adhatunk meg EVE parancsokat:

 

Command: QUIT

Buffer modifications will not be saved; continue quitting (Y or N)?

 

Ha erre Y-t válaszolunk, akkor elvész a puffer tartalma, ha N-t, akkor új verzió jön létre a fileból.

 

Type filename for buffer Main (press RETURN to not write it):

 

 

Az EVE naplót (journalfile) készít, amelybe feljegyzi az indítástól kilépésig történt összes módosítást. Ha több puffert használunk, akkor minden puffernek külön naplófileja lesz. A naplófile helyére a TPU$JOURNAL logikai név mutat, amelynek defaultja a SYS$SCRATCH, az pedig a bejelentkezéskori gyökér directoryra szokott mutatni. A naplófile a nevét a puffer (input file) nevéből kapja, a típusa TPU$JOURNAL.

Ha az EVE normálisan fejeződik be (EXIT vagy QUIT paranccsal), akkor a naplófile törlődik. Ha valamilyen okból az EVE futása megszakad, akkor a naplófile segítségével pufferenként újra végrehajthatók a már kiadott parancsok, a

 

RECOVER BUFFER

 

EVE parancs segítségével. A

 

RECOVER BUFFER ALL

 

egyidőben az összes puffer tartalmát helyreállítja, de használhatjuk az

 

$ EDIT /TPU /RECOVER

 

DCL parancsot is. Nem készül naplófile, ha

 

$ EDIT /TPU /NOJOURNAL

 

paranccsal indítjuk a szerkesztőt (Például ha csak átnézni vagy bemutatni akarjuk egy file tartalmát.)

 

 

      1. 6.1.2. Az EVE billentyűdefiníciói 

 

Az EVE tartalmaz néhány billentyűdefiníciót és parancsot, amelyek megkönnyítik a szöveg kezelését.

 

A billentyűdefiníciók egy része CTRL/x formájú (a DCL parancsok szerkesztő funkcióihoz hasonlóak):

 

Az utoljára beütött parancsot írja vissza a képernyőre és az editálható, újra kiadható. Használata átlagos terminálemulációnál nagyon fontos, mert CTRL/B CTRL/U billentyűszekvencia hatása megegyezik a DO gomb hatásával, ami nem elérhető egy átlagos emulációból (A CTRL/B előhívja az utoljára kiadott editor parancsot, a CTRL/U pedig törli, de meghagyja a Command: promptot.)

 

Az beszúrás, felülírás üzemmódok között vált.

 

A sor végére áll a kurzor.

 

A sor elejére áll a kurzor.

 

A sor elejétől a kurzorig törli a karaktereket.

 

Lehetővé teszi, hogy speciális karaktereket írjunk a pufferbe. Így lehet például beírni a CTRL/B karaktert, vagy magát a CTRL/V -t is. A CTRL/V után az EVE a

 

Press the key to be added:

 

prompttal kéri a beírandó karaktert.

 

Felfrissíti a képernyőt.

 

Kilépés (lásd a 6.1.1. fejezetben).

 

 

A funkcióbillentyűkhöz kapcsolódó definíciók VT200, VT300, VT400 sorozatú terminál (-emuláció) esetén:

 

 

                  EVE funkciók

 

 

A funkcióbillentyűkhöz kapcsolódó definíciók VT100, terminál (-emuláció) esetén:

 

 

        EVE funkciók VT100

 

A funkciók magyarázata:

 

Kilép az EVE-ből. Ha módosítottuk a filet, akkor egy új verzió jön létre, ha nem változtattunk, akkor nem.

 

A kurzor mozgásirányát változtatja az előre (jobbra és lefelé) és a vissza (balra és felfelé) között.

 

A sor elejére vagy végére állítja a kurzort a haladási iránytól függően. Előrehaladáskor a sor végére, visszafelé pedig a sor elejére lép. Ha már a sor elején/végén állt, akkor a következő sorra megy át a kurzor.

 

Törli azt a szót, amelyen a kurzor áll, valamint az utána levő szóköz(öke)t. Ha a kurzor nem szón áll, akkor a következő szó törlődik.

 

A beszúró/felülíró mód közötti lehet váltani.

 

A termináltípusnak megfelelő tájékoztató szöveget ír a képernyőre.

 

Egy EVE parancs beírását teszi lehetővé. A 23. sorban megjelenő

 

Command:

 

után tetszőleges parancs megadható. (Lásd a CTRL/B megjegyzését is!)

 

Megkeresi a megadott string első előfordulását a megadott haladási irányban. Az EVE

 

Forward Find:

 

vagy

 

Reverse Find:

 

prompttal kéri a keresendő stringet. Ha a billentyűt kétszer nyomjuk meg, akkor az utolsó keresésnél beírt stringet fogja újra keresni. Ha a stringet az F11 billentyűvel zárjuk, akkor a keresési irány az aktuálissal ellentétes lesz. Ha az adott irányban nem létezik a string, akkor az EVE a másik irányban is megnézi. Ha a puffer másik felén megtalálja, akkor megkérdezi, hogy állítsa-e oda a kurzort.

 

Az INSERT HERE puffer tartalmát a kurzortól balra beszúrja az aktuális pufferbe. A kurzor a beszúrt szöveg végére kerül. Az INSERT HERE puffer tartalma nem változik.

 

A (a SELECT vagy FIND paranccsal) kiválasztott területet az aktuális pufferből törli és beírja az INSERT HERE pufferbe, törölve annak korábbi tartalmát.

 

Kijelöli a kiválasztott terület kezdőpontját, a kurzor aktuális helyén. A kurzort tetszőleges irányban és módon mozgathatjuk, majd a CAPITALIZE WORD, LOWERCASE WORD, UPPERCASE WORD, SPELL, STORE TEXT, REMOVE vagy FILL parancsok valamelyikével zárhatjuk le a kiválasztott területet.

 

Egy képernyőnyit visszalép a pufferben - vagy ha nincs annyi sor már, akkor kevesebbet. A kurzor a képernyő azonos helyén marad.

 

Egy képernyőnyit előrelép a pufferben - vagy ha nincs annyi sor már, akkor kevesebbet. A kurzor a képernyő azonos helyén marad.

 

Egy sorral a puffer vége felé mozgatja a kurzort.

 

Egy karakterrel balra lépteti a kurzort.

 

A kurzort egy karakterrel jobbra lépteti.

 

Egy sorral felfelé lépteti a kurzort.

 

 

      1. 6.1.3.Néhány további EVE parancs     

 

Az EVE több mint száz parancsa közül itt csak néhányról lesz szó; elsősorban azokról, amelyek az EDT-ből hiányoznak. A parancsokat a DO billentyű után megjelenő

 

Command:

 

promptra gépelhetjük be. (A HELP parancs itt is segítségül hívható.)

 

A parancsok mindaddig rövidíthetőek, amíg egyediek.

 

 

1. A puffer bármely pontján elhelyezhetünk olyan - a képernyőn és a pufferben meg nem jelenő - címké(ke)t (marker), amely(ek)re vissza tudunk állni, bárhol is vagyunk a szövegben.

 

MARK marker

 

A kurzor jelenlegi helyére letesz egy címkét, amely mindaddig megmarad, amíg ki nem lépünk az EVE-ből.

 

GO TO marker

 

A korábban definiált címke helyére állítja a kurzort. Ha a megadott hely egy másik pufferben van, akkor az EVE az aktuális ablakba (window) be is tölti a puffer tartalmát.

 

 

2. A Beírt szöveg formáját néhány parancs segítségével könnyen változtathatjuk.

 

CAPITALIZE WORD

 

A kijelölt terület minden szavának kezdőbetűjét nagybetűre írja át.

 

CENTER LINE

 

Az aktuális sorban levő szöveget (amelyen a kurzor áll) a sor közepére igazítja.

 

SET LEFT MARGIN n

 

Az aktuális puffer bal margója az n. pozíción lesz. Default: n=1.

 

SET RIGHT MARGIN n

 

Az aktuális puffer jobb margója az n. pozíción lesz. Default: általában n=79.

 

SET TABS SPACES

 

A pufferbe tabulátor karakter (Tab billentyű vagy CTRL/I) helyett megfelelő számú szóköz karakter íródik.

 

SET TABS VISIBLE

 

A beírt tabulátor karakterek (Tab billentyű vagy CTRL/I) láthatóvá válnak a képernyőn: helyettük egy kicsi HT karakter és megfelelő számú pont jelenik meg.

 

SET TABS INVISIBLE

 

Az eddigi tabulátor karakter jelölések eltűnnek.

 

 

3. Egyidőben több puffert és több ablakot is használhatunk.

 

BUFFER puffer-név

 

A megadott nevű puffert az aktuális ablakba másolja, és a kurzort abba a pozícióba állítja, ahol a puffer legutóbbi használatakor volt. Ha a puffer még nem létezik, akkor az EVE létrehozza.

 

GET FILE filespecifikáció

 

A megadott filet az aktuális ablakba másolja, és új puffert is létrehoz, ha még nem volt a filenak. A filespecifikációban ugyanúgy használhatunk wildcard karaktereket, mint az EVE parancssorában.

 

SHOW BUFFERS

 

Felsorolja az eddig létrehozott puffereket, amelyek közül a SELECT billentyűvel választhatunk aktuális puffert.

 

SHOW SYSTEM BUFFERS

 

Felsorolja az eddig az editor (EVE) által létrehozott puffereket, amelyek közül a SELECT billentyűvel választhatunk.

 

WRITE FILE output-filespecifikáció

 

Az aktuális puffer tartalmát a fileba írja. Ha nem adunk meg filespecifikációt, a file neve a puffer nevéből képződik.

 

SPLIT_WINDOW n

 

A fő (vagy az aktuális) ablakot n ablakra osztja. (Ha nem adunk meg n-t, akkor kettőre.) A kurzor az alsó ablakban lesz, az ablakok mindegyikébe az eredeti ablak tartalma kerül. Az egyidőben megnyitható ablakok maximális száma a terminál típusától és méretétől függ.

 

OTHER WINDOW

 

A kurzort a másik (vagy a következő, ha több van) ablakba állítja, arra a helyre, ahol legutóbb volt abban az ablakban.

 

ONE WINDOW

 

Az aktuális ablak lesz az egyetlen, az egész képernyőt használó ablak, a többi ablak törlődik. (A pufferek tartalma természetesen megmarad; a SHOW PUFFER paranccsal tudjuk újra a képernyőre írni őket.)

 

ENLARGE WINDOW n

 

Az aktuális ablak méretét maximum n sorral növeli a képernyőn lévő többi ablak rovására úgy, hogy legalább egy sora azoknak is maradjon.

 

SHRINK WINDOW n

 

Az aktuális ablak méretét maximum n sorral csökkenti a képernyőn úgy, hogy legalább egy sora maradjon. A többi ablak mérete megnő az így nyert hellyel.

 

 

Például ha az ELSO.TXT egy részét át akarjuk másolni a MASOD.TXT fileba, akkor a legkényelmesebben a következő parancsokkal tehetjük meg:

 

$ EVE MASOD.TXT

 

Az EVE létrehoz egy puffert a MASOD.TXT file tartalmával. Ezután jönnek az EVE-nek szóló utasítások:

 

SPLIT_WINDOW

GET FILE ELSO.TXT

 

A fenti parancsok kettéosztják a képernyőt, majd az alsó ablakba bemásolják az ELSO.TXT filet. Ekkor az alsó ablakból a SELECT és REMOVE billentyűkkel az INSERT HERE pufferbe másoljuk, a szükséges szövegrészt, majd az

 

OTHER WINDOW

 

paranccsal átmegyünk a MASOD.TXT pufferbe, ahol az INSERT HERE billentyűvel beszúrjuk azt. A

 

ONE WINDOW

 

eltünteti a képernyőről a második ablakot, így esetleg folytathatjuk is az editálást a megváltoztatott MASOD.TXT-vel.

 

 

4. Az EVE-ben nem csak sorfolytonosan jelölhetünk ki területet, hanem karakterek egy oszlopával (box) is végezhetünk bizonyos műveleteket. Az első lépés az oszlop kijelölése. A kurzort a kijelölendő oszlop bal felső sarkába visszük, és ott kiadjuk a

 

BOX SELECT

 

parancsot, majd kurzort tetszőleges mozgató billentyűkkel az oszlop jobb alsó sarkába visszük. A megjelölt oszlop erős fényű lesz (highlighted in bold video), szemben a sorfolytonos SELECT paranccsal, amely inverzbe teszi a kijelölt részt.

Az így kijelölt oszloppal különböző műveleteket végezhetünk. Többek között a

 

BOX CUT

 

kivágja a megjelölt részt, elhelyezi a Paste pufferben, és a parancs további paramétere eldönti, hogy mi legyen visszamaradt hellyel (kitölti szóközzel, összenyomja a maradékot). A

 

BOX PASTE

 

beszúrja a Paste puffer tartalmát a kurzor aktuális helyére. A

 

BOX COPY

 

anélkül másolja a kijelölt oszlopot, hogy a kijelölt részt kivágná.

 

Például legyen a PARANCSOK.TXT file tartalma:

 

CONTINUE         DECK            DEPOSIT         EOD

EXAMINE          GOTO            IF               

SHOW STATUS          SHOW SYMBOL     STOP              WAIT

 

Ha meg akarjuk cserélni a 2. és 3. oszlopot, akkor a következőket kell tenni:

Először a kurzort a DECK D betűjére állítjuk, és kiadjuk a

 

BOX SELECT

 

parancsot, majd a kurzort a mozgató nyilakkal a STOP S-ére visszük. Ekkor a 2. oszlop erős fényű lesz. Ezután a

 

BOX CUT

 

az oszlopot a Paste pufferbe viszi. Lépjünk ekkor az EOD 1. betűjére, majd adjuk ki a

 

BOX PASTE

 

parancsot. Az eredmény a

 

CONTINUE         DEPOSIT         DECK            EOD

EXAMINE          IF              GOTO             

SHOW STATUS          STOP            SHOW SYMBOL       WAIT

 

tartalmú puffer lesz.

 

 

5. Az EDT-t jó ismerők a

 

SET KEYPAD EDT

 

paranccsal az EDT keypad funkcióbillentyű definíciókat is használhatják az EVE-n belül. A definíció kizárólag a keypad billentyűkre vonatkozik, szöveges parancsokra nem.

 

Ha állandó jelleggel használni akarjuk az EVE-ben az EDT keypad definíciókat, akkor ezt legegyszerűbben egy logikai név definiálással tehetjük meg:

 

$ DEFINE EVE$KEYPAD EDT

 

parancs után (amint a LOGIN.COM -ban is elhelyezhetünk) az EVE a kívánt keypad definíciókkal indul.

Amennyiben más személyreszabást is alkalmazunk, készíthetünk egy section filet: Behívjuk az EVE-t, és a számunkra fontos parancsok, például a SET KEYPAD EDT után a

 

SAVE EXTENDED EVE SYS$LOGIN:EVE_EDT.TPU$SECTION

 

paranccsal az EVE_EDT.TPU$SECTION fileba írjuk a definíciót. Az

 

EVE == "EDIT /TPU /SECTION=SYS$LOGIN:EVE_EDT.TPU$SECTION"

 

szimbólum definíció után az EVE beírásával automatikusan ezt a környezetet kapjuk.                                                                                            

 

 

    1. 6.2.Az EDT     

 

Az EDT tetszőleges nyomtatható karaktereket és maximum 255 karakter hosszú sorokat tartalmazó fileok létrehozására és módosítására alkalmas. Az EDT interaktív szövegszerkesztő az

 

$ EDIT/EDT [filespecifikáció]

 

DCL paranccsal indítható el. Korábban az EDT volt a VMS default editora, de az EVE átvette a helyét. Ugyanakkor az EDT is közkedvelt, mert funkcióbillentyűi gyorsan megtanulhatók, és nem túl nagy fileok esetén egyszerűbb a használata.

 

 

      1. 6.2.1.Az EDT üzemmódjai    

 

Az EDT három üzemmódot ismer: keypad, nokeypad és sor (line) mód. Az EDT-be belépéskor a sor mód a default. A keypad módra áttérés a CHANGE paranccsal, a line módba visszatérés a CTRL/Z-vel történik. Nokeypad módba áttéréskor először a SET NOKEYPAD parancsot kell kiadni, azután a CHANGE-t. A nokeypad EXIT parancs hatására az EDT visszatér a sor módba. A képernyő mód az általánosan használt, és később látható, hogyan juthatunk belépéskor automatikusan ebbe  az állapotba.

Ha nem terminált, hanem emulációt használunk, akkor emulációtól is függhet, hogy milyen módon érhetjük el az egyes funkciókat.

 

Az EDT-t elindító parancsban megadhatjuk a létrehozandó file nevét, vagy a DCL bekéri. Ha létezik már ilyen file, akkor annak a legmagasabb verziója kerül az EDT MAIN pufferébe, és az EDT kiírja a file első sorát a képernyőre. (Maga az input file változatlan marad: ha kilépéskor mentjük a puffer tartalmát, az nem az input fileot írja felül, hanem új verziót hoz létre.) Ha még nincs ilyen file, akkor az EDT jelzi ezt:

 

$ EDIT/EDT FORRAS.BAS

Input file does not exist

[EOB]

*

 

A * az EDT sor módjának a promptja.

 

Az EDT-nek inicializáló parancsfile adható meg, amelyet az EDT minden meghívásakor végrehajt. Ebben a utility bármely utasítása elhelyezhető, így a sor módból képernyő módba váltó

 

SET MODE CHANGE

 

is. Ilyen esetben az EDT azonnal képernyő módba kerül, nem kell külön paranccsal váltani. Az inicializáló parancsfile neve a /COMMAND módosítóval adható meg, vagy ha ilyen nincs, akkor az EDT az EDTSYS logikai nevet keresi. Ha ez sincs definiálva, akkor az EDT végrehajtja a SYS$LIBRARY:EDTSYS.EDT-t – ebbe az operáció rendszer gazdája helyezhet el mindenki számára hasznos beállításokat. Ha ez sem létezik, akkor keresi az EDTINI logikai nevet, s ha ez is definiálatlan, akkor végrehajtja az aktuális default directoryban lévő EDTINI.EDT-t. Ha készítünk saját inicializáló parancsfilet a bejelentkezési default directoryban (SYS$LOGIN), akkor az EDT hívására célszerű definiálni egy szimbólumot a LOGIN.COM-ban:

 

$ EDT == "EDIT/EDT/COMMAND=SYS$LOGIN:EDTINI.EDT

 

Így bármely directoryban azonos módon indíthatjuk az EDT-t.

 

 

A keypad mód a terminál jobboldali numerikus billentyűzetét (keypad billentyűzet), a kurzormozgató billentyűket és néhány keyboard billentyűt vezérlőként használ. Bizonyos funkciók pedig a CTRL és valamelyik betű lenyomásával hajthatók végre.

A keypad billentyűkhöz két funkciót rendelt az EDT: a második funkció a GOLD (PF1) billentyű majd a kívánt funkcióbillentyű lenyomásával váltható ki.

 

A sor módban az EDT a sort (a szövegfile egy rekordját) tekinti a szöveg alapegységének. A parancsok a * prompt után adhatók meg. Ekkor egy vagy több sorral együtt végezhetünk műveleteket - például egy szövegrész kicserélését bizonyos sorszámú sorokban.

 

A nokeypad módban a képernyő alján jelennek meg a parancsok, a felső sorokban pedig a szerkesztett szöveg; a keypad billentyűi karaktereket jelenítenek meg. Ezt a módot főleg akkor használhatjuk, ha sok számot írunk be, és erre a keypad billentyűzetet kényelmesebben használhatjuk.

 

   

Az EDT - ha indításkor le nem tiltjuk - naplót (journal file) készít. A naplófileba feljegyzi az összes lenyomott billentyűt. A naplófile neve a filenévvel azonos, típusa JOU. Ha az EDT normálisan fejeződik be (EXIT vagy QUIT paranccsal), akkor a naplófile törlődik. Ha valamilyen okból az EDT futása megszakad, akkor a naplófile segítségével újra végrehajthatók a már kiadott parancsok, ha az

 

$ EDIT/EDT/RECOVER

 

DCL parancsot használjuk.

Az EXIT és QUIT a /SAVE módosítóval akkor is megőrzi a naplófilet, ha szabályos a kilépés. Nem készül naplófile, ha

 

$ EDIT/EDT/NOJOURNAL

 

paranccsal indítjuk a szerkesztőt.

 

 

      1. 6.2.2.A keypad billentyűzet parancsok 

 

Keypad módban a terminál típusától függően változik a billentyűkhöz tartozó parancs.

A VT100, VT200, VT300, VT400 sorozatú terminál (vagy ha ilyen funkciót emulálunk) esetén az alábbi kiosztást használjuk:

 

 

       EDT keypad

 

A parancs neve megegyezik a fenti ábrán lévő billentyűn szereplő névvel.

 

A haladási irányt (például keresésben) a file elejétől a vége felé állítja be.

 

Az aktuális pufferből törli a kiválasztott részt, és a PASTE puffer végére másolja (meghagyva annak korábbi tartalmát).

 

A haladási irányt a file végétől az eleje felé állítja be.

 

A puffer végére állítja a kurzort.

 

Egy karaktert mozdul a kurzor az aktuális haladási irányba.

 

A kiválasztott területen a betűket megváltoztatja: a nagybetűket kisbetűkké, a kisbetűket nagybetűkké konvertálja.

 

Sor módú parancsot adhatunk meg keypad módban. Az EDT promptja ilyenkor

 

Command:

 

a képernyő alján. A beírt parancsot az ENTER billentyűvel kell lezárni.

 

A kiválasztott területet az aktuális pufferből törli és beírja a PASTE pufferbe, törölve annak korábbi tartalmát.

 

Törli azt a karaktert, amelyen a kurzor áll.

 

Törli a sort az aktuális kurzor pozíciótól kezdve a sor végéig, a sorterminátor karakter kivételével.

 

Törli a sort az aktuális kurzor pozíciótól kezdve jobbra, beleértve a sorterminátort is.

 

Egy szót vagy egy szónak egy részét törli - az aktuális kurzor pozíciótól kezdve jobbra.

 

Ezzel a billentyűvel kell lezárni a keresendő stringet, a sor módú parancsokat és a billentyűdefiníciókat. Nem egyezik meg a RETURN billentyűvel!

 

A kurzort a haladási irány szerinti aktuális sor végére viszi. Ha a kurzor a sor végén áll, akkor a kurzor a következő vagy megelőző sor végére kerül, a haladási iránytól függően.

 

A kiválasztott terület sorait úgy rendezi át, hogy maximális számú egész szó kerüljön egy sorba - amennyit a sorszélesség megenged.

 

Megkeresi a megadott string első előfordulását a megadott haladási irányban. Az EDT

 

Search for:

 

prompttal kéri a keresendő stringet. A stringet bármely keypad billentyűvel terminálhatjuk, de az ADVANCE vagy a BACKUP billentyű a keresési irányt is meghatározza, a többi billentyű nem változtat az irányon.

 

A FIND-dal meghatározott string következő előfordulási helyére viszi a kurzort a megadott haladási irányban.

 

A terminálemulációnál a GOLD a NumLock billentyű helyén van, ezt azonban nem minden terminálemuláció engedi meg; ebben az esetben a GOLD nem elérhető.

 

A termináltípusnak megfelelő, többszintű tájékoztató szöveget ír ki.

 

A következő vagy megelőző sor elejére lép a kurzor, a haladási iránytól függően.

 

A kurzor aktuális pozíciójára beszúr egy sorterminátort és a kurzor az új sor elejére áll.

 

A következő vagy megelőző lap elejére áll, a haladási iránytól függően. A lapot alapértelmezésben egy lapdobás karakter (FF, ASCII értéke 12) jelzi.

 

A PASTE puffer tartalmát a kurzortól balra beszúrja az aktuális pufferbe. A PASTE puffer nem változik.

 

A kiválasztott terület tartalmát törli, és helyére másolja a PASTE puffer tartalmát. A törölt szöveg a DELETE nevű pufferbe kerül, felülírva annak korábbi tartalmát.

 

Törli az aktív terület kiválasztást (a SELECT hatását), és az aktuális haladási irányt felülről lefelé állítja.

 

Egy szekcióval - 16 sor - lépteti a kurzort, az aktuális haladási iránynak megfelelően.

 

Kijelöli a kiválasztott terület kezdőpontját, a kurzor aktuális helyén. A kurzort tetszőleges irányban és módon mozgathatjuk, majd az APPEND, CHNGCASE, CUT, FILL, REPLACE vagy SUBS billentyűk valamelyikével zárhatjuk le a kiválasztott területet. A RESET funkció törli a kiválasztást.

 

A speciális karakterek bevitelére szolgál: a keyboardon beírt számot az EDT decimális ASCII kódnak értelmezi, és az annak megfelelő karakter kerül a szövegbe. Először a GOLD billentyűt kell leütni, majd beírni a beszúrandó karakter ASCII kódját (ez megjelenik a képernyő alján), és ezután kell használni a SPECINS billentyűt.

 

A megadott stringet megkeresi, és a PASTE puffer tartalmával helyettesíti. A következő módon kell használni: A SELECT billentyű lenyomása után be kell gépelni azt a stringet, amire cserélni akarunk, majd a CUT billentyűvel a PASTE pufferbe tölteni. (Természetesen fel lehet használni a PASTE puffer korábbi tartalmát is.) A FIND billentyű után írjuk be a kicserélendő stringet; ennek lezárása (ENTER) után az EDT a string első előfordulására áll. A SUBS billentyű lenyomása után a kicserélendő string elvész, és helyébe íródik a PASTE pufferben levő, majd az EDT a kicserélendő string következő előfordulására áll rá. A SUBS billentyű ismételt lenyomása újabb cserét és a következő stringre állást eredményezi, mindaddig, amíg van ilyen string a fileban.

 

A kurzort a puffer első karakterére állítja.

 

Az utoljára törölt karaktert visszaírja a kurzor helyére.

 

Az utoljára törölt sort visszaírja a kurzortól kezdődően.

 

Az utoljára törölt szót visszaírja a kurzor pozíciójától kezdődően.

 

A következő szó elejére áll a haladási iránynak megfelelően.

 

 

      1. 6.2.3.További parancsok   

 

Az EDT néhány más billentyűt is funkcióbillentyűként használ.

A leggyakrabban használt keyboard (alfanumerikus billentyűzet) billentyűk:

 

Az éppen végrehajtás alatt álló EDT parancsot megszakítja.

 

Egy billentyűt definiál. (A definíció addig érvényes, amíg ki nem lépünk az EDT-ből, vagy át nem írjuk.)

 

Felfrissíti az aktuális képernyőt (pl. egy operátori üzenet megjelenése után).

 

Törli a sort a kurzortól balra a sor elejéig.

 

Felfrissíti az aktuális képernyőt (pl. egy operátori üzenet megjelenése után).

 

A keypad módból sor módba tér át.

 

Egy karaktert töröl a kurzortól balra.

 

A keyboard RETURN billentyűje egy sorterminátort ír a kurzor helyére és a kurzort a következő sorba állítja.

 

 

Az Fx (funkció-) billentyűkre definiált műveletek:

 

A kurzor az aktuális sor elejére áll. Ha már a sor elején állt, akkor a megelőző sor elejére megy.

 

A kurzortól balra eső szót vagy szórészletet törli.

 

A termináltípusnak megfelelő, többszintű tájékoztató szöveget ír ki. Azonos hatású a PF2-vel.

 

 

A keyboard és keypad közötti billentyűk (Ex és a nyilak) VT200 vagy afölötti sorozatú terminál esetén:

 

 

    EDT Ex

 

 

Megkeresi a megadott string első előfordulását a megadott haladási irányban. Az EDT

 

Search for:

 

prompttal kéri a keresendő stringet. A stringet bármely keypad billentyűvel lezárhatjuk, de az ADVANCE vagy a BACKUP billentyű a keresési irányt is meghatározza, míg a többi billentyű nem változtat az irányon.

Azonos hatású, mint a keypad FIND (PF1, PF3).

 

A PASTE puffer tartalmát a kurzortól balra beszúrja az aktuális pufferbe. A PASTE puffer nem változik.

Azonos a keypad PASTE-tal (PF1, KP6).

 

A kiválasztott területet az aktuális pufferből törli és beírja a PASTE pufferbe, törölve annak korábbi tartalmát.

Azonos a keypad CUT-tal (KP6).

 

Kijelöli a kiválasztott terület kezdőpontját, a kurzor aktuális helyén. A kurzort tetszőleges irányban és módon mozgathatjuk, majd az APPEND, CHNGCASE, CUT, FILL, REPLACE vagy SUBS billentyűk valamelyikével zárhatjuk le a kiválasztott területet. A RESET funkció törli a kiválasztást.

Azonos a keypad SELECT-tel (KP.).

 

16 sorral visszalép, a puffer kezdősora felé. A kurzor a 16. sor első karakterére áll.

 

16 sorral előrelép, a puffer utolsó sora felé. A kurzor a 16. sor első karakterére áll.

Azonos a keypad SECT-tel (KP8).

 

Egy sorral a puffer vége felé mozgatja a kurzort.

 

Egy karakterrel balra lépteti a kurzort.

 

A kurzort egy karakterrel jobbra lépteti.

 

Egy sorral felfelé lépteti a kurzort.

 

 

Az EDT-ből való kilépés történhet keypad módban COMMAND paranccsal vagy a sor módba visszatérve. Az

 

   EXIT

 

parancs a szerkesztett fileból új verziót hoz létre, amely tartalmazza a puffer tartalmán végrehajtott változtatásokat. A

 

   QUIT

 

parancs új file létrehozása nélkül lép ki. A napló file és a puffer(ek) tartalma mindkét esetben törlődik.

 

A /SAVE parancsmódosító mind EXIT, mind QUIT esetén menti a napló filet (filenév.JOU névvel, a default directoryba.)

 

  1. 7.A Mail utility 

 

Az OpenVMS Mail segédprogram lehetővé teszi, hogy egy gépen vagy – a szükséges hálózati szoftver megléte estén - az egy DECnet hálózatban dolgozó vagy TCP/IP kapcsolatban álló felhasználók üzeneteket küldjenek egymásnak - függetlenül attól, hogy éppen be van-e jelentkezve a címzett vagy sem. Ha a címzett be van jelentkezve, akkor a kapott levelekről tájékoztató üzenet jelenik meg a terminálján, ha nincs, akkor csak a következő bejelentkezésekor. A levelet ugyancsak a Mail utility segítségével olvashatjuk el, kinyomtathatjuk, továbbküldhetjük, válaszolhatunk rájuk, irattartókban rendszerezhetjük őket, vagy törölhetjük.

A Mail utility az üzeneten kívül megőrzi annak küldőjét (From: mező), a címzett(ek)et (To: mező), a levél témáját (Subject: mező) és a küldés időpontját.

 

Hívása DCL-ből történik:

 

$ MAIL [filespecifikáció] [címzett [,...]]

 

Ha a parancssorban szerepel a filespecifikáció, akkor az előre elkészített filet tudjuk elküldeni a címzettként megadott felhasználó(k)nak. Ha címzett nem szerepel a sorban, akkor a Mail megkérdezi:

 

$ MAIL UZENET.TXT

To: FODOR

 

Ebben az esetben a levél téma mezője üresen marad. Ha ki akarjuk tölteni, a /SUBJECT módosítót kell használnunk:

 

$ MAIL /SUBJECT="Ez az első próbálkozásom" UZENET.TXT FODOR

 

Fontos lehet még a /SELF módosító, ebben az esetben az elküldött levélből a feladó is kap egy példányt.

 

 

Legtöbbször azonban paraméter nélkül írjuk a MAIL parancsot, és ezzel egy interaktív menetet (session) indítunk el: Amíg ki nem lépünk a Mail-ből, addig csak neki szóló parancsokat adhatunk meg; ezt jelzi a megváltozott prompt is:

 

$ MAIL

MAIL>

 

<Mail parancsok>

 

MAIL> EXIT

$

 

 

    1. 7.1. A legfontosabb üzenetkezelő parancsok 

 

Ebben az alfejezetben a Mail belső (csak interaktív módban kiadható) parancsaival foglalkozunk. A parancsok a használat valószínű sorrendjében szerepelnek.

1. EXIT

Kilépünk a Mailből, visszatérünk a DCL-be, minden megnyitott filet lezárunk, és a törölt levelek véglegesen elvesznek. Ugyanilyen értelemben használhatjuk a CTRL/Z-t is.

QIUT paranccsal is kiléphetünk, ekkor a WASTEBASKET (törölt levelek irattartója) tartalma megőrződik.

 

2. HELP

Többszintű tájékoztató szöveget ír a képernyőre a Mail belső parancsairól – hasonlóan a DCL HELP parancsához. Kissé zavaró, hogy a szöveget nem tördeli oldalakra. Túl gyors terminálemuláció esetén emiatt olvashatatlan lehet a help. Azonban a MAIL utility belső helpje elérhető kívülről is:

 

$ HELP /LIBRARY=MAILHELP

 

3. READ

Ez a Mail default parancs, ezért ha csak <Return>-t ütünk a MAIL> promptra, akkor az aktuális levél tartalmát látjuk a képernyőn. Egyaránt használható új és régi levelek olvasására.

Ha levelünk érkezik, amikor be vagyunk jelentkezve, akkor kapunk erről egy tájékoztató üzenetet:

 

New mail on node FZAXP1 from FZVAX::SYSTEM     (10:02:23)

 

Ha éppen nem vagyunk bejelentkezve, akkor a következő interaktív bejelentkezéskor kapunk figyelmeztetést, majd a Mail behívásakor mindenképpen:

 

$  MAIL

You have 1 new message.

MAIL> <Return>

 

A <Return> ekvivalens a READ paranccsal, ezért azonnal látjuk a kapott levelet.

Ha több levelünk érkezett, akkor a <Return> ismételt lenyomásával mindegyiket el tudjuk olvasni, és ha elfogynak, akkor erről

%MAIL-E-NOMOREMSG, no more messages

 

üzenet tájékoztat.

A régi (már elolvasott) leveleinket is újra olvashatjuk: Ha éppen nincs új levelünk, akkor a fenti módszerrel a régieket tudjuk olvasni, vagy előbb a

 

MAIL> SELECT MAIL

 

paranccsal (lásd 7.2. fejezet) kiválasztjuk az irattartót, és utána tudunk olvasni.

 

Amennyiben egy levél túl nagy ahhoz, hogy kényelmesen lehessen olvasni, akkor a

 

MAIL> READ/EDIT 25

 

parancs segítségével egy editoron keresztül lehet olvasni a megadott (a példában a 25.) levelet.

 

4. SEND, MAIL

Ezzel a két paranccsal tudunk levelet küldeni (a két szó egyenértékűen használható):

 

MAIL> SEND <Return>

To: HALLGATO <Return>

Subj: Minta <Return>

Enter your message below. Press CTRL/Z when complete, or CTRL/C to quit:

Ez egy egyszerű levél <Return>

Néhány sorban <Return>

<Return>

Üdv <Return>

<CTRL/Z>

 

A mintában szereplő <Return>-ok a Return billentyűt jelzik – így kell az egyes sorokat zárni. A To: mezőbe a címzett kerül, a Subject: mezőbe pedig az üzenet tárgya.

Ha kényelmesebben akarjuk a levél törzsét megszerkeszteni, akkor a

 

MAIL> SEND/EDIT

 

formát használjuk. Ekkor a címzett és tárgy mező kitöltése után a Mail meghívja a default szövegszerkesztőjét (az EVE, ha át nem állítjuk), ahol a szokványos módon editálhatunk – akár egy korábban létrehozott filet is. Amikor EXIT-tel kilépünk az editorból, akkor a létrehozott filet azonnal elküldi a Mail. Ha mégsem akarjuk elküldeni a levelet, akkor QUIT-tel kell zárnunk a szerkesztést.

 

5. REPLY

Válaszol az éppen olvasott levélre. A címzett a feladó lesz, a levél témája pedig az olvasott levél mezőjéből képződik:

 

MAIL>REPLY  <Return>

To: FZAXP::FODOR <Return>

Subj: RE: Minta <Return>

Enter your message below. Press CTRL/Z when complete, or CTRL/C to quit:

Megkaptam!!

<Return>

Üdv <Return>

<CTRL/Z>

 

Itt is használhatjuk a REPLY/EDIT formát. Hasznos még a REPLY/EDIT/EXTRACT parancs, ami nemcsak, hogy editort hív be, hanem a válaszolandó levelet is beolvassa a szövegszerkesztő pufferébe.

 

6. FORWARD

Az éppen olvasott levél továbbküldése. A Mail ilyenkor csak a címzettet és a témát kérdezi meg, kivéve, ha FORWARD/EDIT parancsot használunk.

 

7. EXTRACT

Az éppen olvasott levél fileba mentése:

 

#1                  01-AUG-2002  14:12:27        NEWMAIL

 

From:  FZAXP::FODOR

To:    HALLGATO

Subj: Minta

 

Ez egy egyszerű levél

Néhány sorban

 

Üdv

 

MAIL> EXTRACT MINTA.TXT

%MAIL-I-CREATED, DISK:[HALLGATO]MINTA.TXT

 

Ha csak a levél törzsét akarjuk megőrizni, akkor az EXTRACT/NOHEADER parancsot használjuk.

 

8. PRINT

Az éppen olvasott levelet a Mail-ből való kilépéskor bejegyzi a default nyomtató várakozási sorba (default print queue, SYS$PRINT), vagy a /QUEUE módosítóval megadott sorba. (Várakozási sorokat lásd a 11. fejezetben.)

 

9. DELETE

Törli az éppen olvasott vagy a paraméterként megadott leveleket. A törlés csak akkor válik véglegessé, ha kilépünk a Mail-ből.

 

#1                  01-AUG-2002  14:12:27        NEWMAIL

 

From:  FZAXP::FODOR

To:    HALLGATO

Subj: Minta

 

Ez egy egyszerű levél

Néhány sorban

 

Üdv

 

MAIL> DELETE

 

Ekkor az éppen olvasott levelet töröljük, a

 

MAIL> DELETE /ALL

 

vagy

 

MAIL> DELETE 1-3, 10, 14

 

formával pedig az irattartóban lévő összes illetve 1., 2., 3., 10., 14. sorszámú levelet távolítjuk el.

 

10. SEARCH

A megadott szöveget keresi a levelekben. Az első találatnál megáll, majd a SEARCH paraméter nélküli formájával továbbkeresi ugyanazt a mintát.

 

MAIL> SEARCH "OpenVMS"

 

11. DIRECTORY

A parancs az aktuális irattartó tartalomjegyzékét írja a terminálra.

 

 

    1. 7.2. Az irattartók 

 

A Mail a beérkezett leveleket irattartókban (folder) tárolja – ez belső, csak a Mail által használható struktúra. A Mail alapértelmezésben 3 irattartót ismer:

 

Amikor belépünk a Mail-be, akkor vagy a NEWMAIL vagy a MAIL lesz az aktuális irattartó, aszerint, hogy van-e még el nem olvasott levelünk. Az aktuális folder tartalmát tudjuk mindig vizsgálni.

Alapértelmezésben az irattartó megszűnik, ha kiürül, de a fenti 3 irattartó automatikusan újra létrejön, ha levelek kerülnek beléjük.

 

Amikor egy levelet olvasunk, akkor a jobb felső sarokban az irattartó neve is megjelenik:

 

#1                  01-AUG-2002  14:12:27        NEWMAIL

 

 

Ha magunk kívánjuk rendezni a leveleinket, akkor további irattartókat hozhatunk létre a COPY vagy MOVE paranccsal:

 

MAIL> COPY ELSO <Return>

Folder ELSO does not exist.

Do you want to create it (Y/N, default is N)? Y <Return>

%MAIL-I-NEWFOLDER, folder ELSO created

 

A fenti példában az utoljára olvasott levélből egy másolatot az ELSO nevű irattartóban akarunk elhelyezni. Mivel ilyen még nincs, a Mail kérésre létrehozza. (A mintában szereplő <Return>-ok a Return billentyűt jelzik – így kell az egyes sorokat zárni.) MOVE parancs esetén nem másolat készül, hanem az olvasott levél átkerül az új irattartóba; az irattartó létrehozása azonban ugyanígy történik.

 

 

Ha látni akarjuk, milyen irattartóink vannak, akkor a DIRECTORY/FOLDER parancsot kell használni, majd a SELECT paranccsal kiválaszthatjuk az aktuálisat, amelyben további műveleteket végezhetünk (DIRECTORY, READ, DELETE, FORWARD, COPY, stb.):

 

MAIL> DIRECTORY/FOLDER [Return]

Listing of folders in SYS$LOGIN:[HALLGATO]MAIL.MAI;1

     Press CTRL/C to cancel listing

ELSO                                  MAIL                                  MASOD

MAIL> SELECT ELSO

MAIL> DIRECTORY

 

 

Ha törlünk egy levelet, az a WASTEBASKET irattartóba kerül. Ha még a Mail-ből való kilépés előtt meggondoljuk magunkat, akkor vissza tudjuk állítani a törölt levelet:

 

MAIL> READ

 

#1                  01-AUG-2002  14:12:27        NEWMAIL

 

From:  FZAXP::FODOR

To:    HALLGATO

Subj: Minta

 

Ez egy egyszerű levél

Néhány sorban

 

Üdv

 

MAIL> DELETE

MAIL> SELECT WASTEBASKET

%MAIL-I-SELECTED, 1 message selected

MAIL> DIRECTORY

   

#  From                 Date         Subject    WASTEBASKET

 

1  FZAXP::FODOR         11-AUG-2001  Minta

 

MAIL> READ

MAIL> MOVE MAIL

 

 

Teljes irattartó úgy törölhetünk, ha minden levelét töröljük a DELETE/ALL paranccsal – ekkor a folder automatikusan megszűnik.

 

 

    1. 7.3. Címzési módok  

 

Az eddigi példákban mindig egyetlen lokális (ugyanazon a gépen dolgozó felhasználó) címzett szerepelt a To: mezőben, de a Mail ennél többet tesz lehetővé.

 

A To: mezőben megadhatunk több címzettet vesszővel (,) elválasztva – ezek a címzettek nem csak az illető gépen létező felhasználók lehetnek, hanem az összes, ebben a fejezetben szereplő módon írható címek.

Ezenkívül előre készíthetünk terjesztési listát: Ez egy szövegfile, default típusa DIS, és minden sora egyetlen – tetszőleges formájú – címet tartalmaz (beleértve egy beágyazott terjesztési lista file specifikációját is, @ jellel kezdve), úgy, ahogy a To: mezőbe írnánk. A listában megjegyzéseket is elhelyezhetünk, felkiáltójellel (!) kezdve a sort.

A terjesztési lista specifikációját a címzett mezőbe kell írni, @ jellel:

 

$ TYPE TANFOLYAM.DIS

HALLGATO1

HALLGATO2

HALLGATO3

VAX2::SYSTEM

PTAXP::OKTATO

$

$ MAIL

MAIL> SEND

To: @TANFOLYAM

 

...

 

 

A Mail nem csak az azonos gépen definiált felhasználónak tud levelet küldeni, hanem minden olyan gép bármely felhasználójának, aki hálózaton keresztül, a gépen futó szoftverrel elérhető.

Ha a gépen fut a DECnet valamelyik változata, akkor a

 

csomópont-név::felhasználónév

 

címet használhatjuk a saját gépünkkel azonos DECnet hálózatban lévő gépre. Például az ABCD nevű gép OKTATO nevű felhasználójának a következő módon küldhetünk levelet:

 

MAIL> SEND

To: ABCD::OKTATO

Subj:

 

...

 

 

Ha TCP/IP hálózati szoftver fut a gépünkön, akkor Internet címzést is megenged a Mail. Attól függően, hogy mivel valósítjuk meg a TCP/IP-t, a címzés formája különböző lehet – pontos felvilágosítással csak a rendszer vagy a hálózat gazdája szolgálhat:

 

fodor31@freemail.hu

mx%"fodor31@freemail.hu"

smtp%"fodor31@freemail.hu"

 

Bármely formát kell is használni, az a címzés mezőben és a terjesztési listán ugyanúgy szerepelhet, mint a helyi vagy DECnet felhasználó címe.

 

    1. 7.4. Egyéb hasznos parancsok  

 

A Mail még nagyon sok hasznos paranccsal rendelkezik, s bár mindet nem sorolhatjuk fel, még néhány fontosat megemlítünk.

 

1. A 7.1 fejezetben már szerepelt, hogy üzenet küldésekor (SEND, FORWARD, REPLY) szövegszerkesztőt is használhatunk. Ezt úgy is megtehetjük, hogy a Mail indításakor beállítjuk:

 

$ MAIL /EDIT=(SEND,FORWARD,REPLY)

 

Ekkor bármely fenti parancs esetén editorba lépünk. Ezenkívül a

 

$ MAIL /EDIT=REPLY=EXTRACT

 

biztosítja, hogy REPLY esetén az editor a kapott levelet a pufferébe beolvassa.

Természetesen szimbólumot is definiálhatunk, hogy mindig ez a beállítás érvényesüljön:

 

$ MAI*L == "MAIL /EDIT=(SEND,REPLY=EXTRACT)"

 

A default editor az EVE. Ha valamilyen okból el akarunk attól térni (például a terminálemulációval nem fér össze), akkor átállhatunk EDT-re:

 

MAIL> SET EDITOR EDT [Return]

MAIL> SHOW EDITOR [Return]

Your editor is EDT.

 

A SHOW EDITOR paranccsal bármikor ellenőrizhetjük, hogy milyen szövegszerkesztő indul el a megfelelő parancs esetén.

 

 

2. A Mail leggyakrabban használt parancsait a keypad (numerikus) billentyűkkel is végrehajthatjuk. A

 

MAIL> HELP KEYPAD

 

megmutatja a kiosztást. Ugyanúgy, ahogy az EDT-ben, a legtöbb billentyűnek itt is két funkciója van; a másodikat a PF1 billentyű megnyomása után kapjuk.

 

 

               MAIL keypad

 

 

A keypad funkcióit át is írhatjuk a DEFINE/KEY Mail parancs vagy a MAIL$KEYDEF.INI file segítségével.

 

 

3. Ha már elég sokszor kaptunk levelet és átrendeztük, töröltük őket, akkor a Mail által használt indexelt file(ok)  felesleges üres helyeket is tartalmazhatnak. Ekkor célszerű a

 

MAIL> COMPRESS

 

parancsot kiadni.

 

 

4. A kapott leveleinket átirányíthatjuk egy másik címre – ez a cím bármilyen, az illető rendszerben a címzés mezőben megengedett formájú lehet (lásd a 7.3. fejezet):

 

MAIL> SET FORWARD SMITH@Company.com

 

A

 

MAIL> SHOW FORWARD

 

paranccsal ellenőrizhetjük, hogy van-e érvényes átirányítás. Az átirányítást a

MAIL> SET NOFORWARD

 

szünteti meg.

 

Nem lehet egyszerre két helyre továbbküldeni a levelet, még úgy sem, hogy az egyik példány helyben marad, és a másik példány megy tovább. Emiatt nem érvényes a forward definíció disztribúciós listára sem.

 

 

5. Aláírás filet csatolhatunk az üzeneteinkhez a

 

MAIL> SET SIGNATURE_FILE SZIGNO.SIG

 

paranccsal, ahol a SZIGNO.SIG a szokásos elemeket tartalmazó szövegfile (név, foglalkozás, munkahely, telefonszám, e-mail cím stb.). Ekkor az összes levél-küldő parancs (ANSWER, FORWARD, MAIL, REPLY, SEND) így működik. Ha csak egyes esetekben van szükség az aláírás filera, akkor

 

MAIL> SEND/SIGNATURE_FILE=UDV.SIG

 

vagy

 

$ MAIL /SIGNATURE_FILE[=file-name]

 

formát használjuk. A

 

MAIL> SHOW SIGNATURE_FILE

 

paranccsal tudjuk ellenőrizni, hogy van-e aláírás fileunk.

 

 

6. Egy adott irattartó leveleiből a módosítók által megaodtt paraméterek szerint kiválogathatunk valahányat:

 

MAIL> SELECT [folder]

 

Ha nem adunk meg irattartót, akkor az aktuálisból válogatunk. A parancs módosítói szerint dátum, tartalom vagy állapot szerint válogathatunk. Ezután a COPY, DELETE, DIRECTORY, EXTRACT, FILE, MOVE, READ, SEARCH parancs a kiválasztott levelekkel dolgozik.

Például

 

MAIL> SELECT MAIL /FROM_SUBSTRING=FODOR

%MAIL-I-SELECTED, 20 messages selected

 

A fenti parancs a MAIL irattartóból a FODOR felhasználótól érkezett leveleket választja ki. Ezután a DIRECTORY, DELETE és READ parancs a kiválasztott levelekkel dolgozik.

 

MAIL> SELECT MAIL /SINCE=YESTERDAY

%MAIL-I-SELECTED, 11 messages selected

 

A fenti parancs a MAIL irattartóból a tegnapi vagy frissebb leveleket választja ki. A megadott dátum dd-mmm-yyyy formájú lehet, vagy TODAY vagy YESTERDAY Hasonlóan működik a /BEFORE módosító, amely a megadott időpontnál korábbi leveleket választja ki.

 

A módosítók vegyíthetők: ekkor az összes módosítónak megfelelő leveleket válogatja ki a MAIL.

 

  1. 8. A Phone  

 

Az OpenVMS Phone segédprogram a saját rendszerünkbe vagy a hálózat gépeire bejelentkezett felhasználók között interaktív üzenetváltást tesz lehetővé. A program működése némileg hasonló a valódi telefonhoz, vagy az internetes 'talk' szolgáltatáshoz: a terminál képernyő két részén a két telefonáló szövege jelenik meg. Ezenkívül konferenciakapcsolást is létre lehet hozni, egy felhasználó több másikkal is "beszélhet".

 

Elindítása a

 

$ PHONE [usernév]

 

DCL paranccsal történik. Paraméterként megadható a hívott felhasználó. A Phone a saját képernyőnkön megjelenteti a szokásos formát, a hívott fél termináljára (vagy ha több helyen is be van jelentkezve, akkor mindegyikre) üzenetet küld. (Ha a Phone sorába nem írunk felhasználót, akkor később a DIAL paranccsal hívni valakit – ezt kell használni akkor is, ha több partnerrel akarunk egy időben beszélni.)

 

A hívott fél

 

$ PHONE ANSWER

 

paranccsal fogadhatja el a hívást. Ekkor a kapcsolat létrejön:

 

              OpenVMS Phone Facility         11-AUG-2003

 

%

 

---------------------------------------------------------

                   ABCD::PAPA

 

 

 

 

 

 

 

----------------------------------------------------------

                  ABCD::MAMA

 

 

 

 

 

 

 

 

----------------------------------------------------------

 

A két felhasználó párhuzamosan gépelhet, mindenkinek a saját mezőjében jelennek meg az általa leütött billentyűk, és mindketten minden szöveget látnak.

Ha a hívott fél nem kíván kapcsolatot létesíteni akkor – hasonlóan az igazi telefonhoz – nem kell válaszolnia. Ha már aktív nála a Phone, akkor kiadhatja a REJECT parancsot, s ezzel azonnal visszautasítja a hívást.

 

A Phone számára a százalékjel (%) vezérlő karakter: interaktív esetben ezt leütve a Phone átmegy parancs módba, és a képernyő bal felső sarkában jelennek meg a betűk. Ekkor újra kiadhatjuk a

 

% DIAL usernév

 

parancsot is, és ezzel újabb felhasználóval kezdeményezünk kapcsolatot. Ha a felhasználók láncszerűen hívják egymást, akkor jön létre konferenciabeszélgetés.

 

A Phone-ból kilépés a szokásos EXIT vagy CTRL/Z paranccsal történhet. Ezenkívül használhatjuk  a HANGUP parancsot, amely megőrzi az interaktív Phone állapotát, csak megszakítja az összes élő kapcsolatot.

 

Hasznos lehet még a

 

$ PHONE DIRECTORY

 

parancs, amely képernyőre írja az összes bejelentkezett felhasználót, és azt, hogy lehet-e velük  Phone kapcsolatot létesíteni. Ha a parancs után egy DECnet csomópont nevét írjuk, akkor az arra a gépre bejelentkezett felhasználókról kapunk listát:

 

$ PHONE DIRECTORY ABCD::

 

 

              OpenVMS Phone Facility         11-AUG-2003

%

Press any key to cancel the directory listing and continue.

 

Process Name    User Name         Terminal   Phone Status

 

SYSTEM          SYSTEM            LTA1234:   available

PAPA            PAPA              LTA2000:   available

_RTA1:          SYSTEM            RTA1:      /nobroadcast

 

  1. 9.Rendezés: a Sort és Merge 

 

Az OpenVMS Sort/Merge utility két alapvető funkcióval rendelkezik:

Ezenkívül az Alphán az architektúrát kihasználó nagy teljesítményű változatot (High-performance Sort/Merge utility).is használhatjuk – ugyanazokkal a parancsokkal.

 

 A rendezés (sort) egy vagy több input file rekordjait a megadott mező(k) tartalma szerint sorba rendezi és létrehoz egyetlen, az összes input rekordból álló rendezett output filet. A kulcsmezők különböző adattípusúak lehetnek, a rendezettség mezőnként lehet növekvő vagy csökkenő.

Az összefésülés (merge) maximum tíz darab, azonos kulcs(ok) szerint azonos módon rendezett fileból készít egyetlen rendezett output filet..

 

Általános formájuk:

 

$ SORT input-file [,...] output-file

$ MERGE input1, input2 [,...] output-file

 

 

    1. 9.1. Rendezési kulcsok 

 

A Sort alapértelmezésben az input file(ok) teljes rekordja szerint rendez, mégpedig azok ASCII kódja szerint növekvő sorrendben. Például egy fileba Írathatjuk a rendszerünkbe bejelentkezett felhasználókat, majd név szerint rendezhetjük őket (Az 1. oszlop a név, a 2. a csomópont név).

 

$ SHOW USERS/NOHEADING/OUTPUT=USERS.TXT

$ TYPE USERS.TXT

 PAPA        BBBBBB            1

 MAMA        XXXXXX            4         2

 SYSTEM      AAAAAA            1         4

 FODOR       AAAAAA            2

$

$ SORT USERS.TXT REND.TXT

$

$ TYPE REND.TXT

 FODOR       AAAAAA            2

 MAMA        XXXXXX            4         2

 PAPA        BBBBBB            1

 SYSTEM      AAAAAA            1         4

     

(Ha két csomóponton ugyanaz a felhasználó be lett volna jelentkezve, akkor a csomópont neve döntötte volna el a sorrendjüket.)

 

 

A /KEY módosítóval ennél bonyolultabb rendezést is végrehajthatunk:

 

 

 

Ha nem adjuk meg a NUMBER paramétert, akkor a /KEY mezők sorrendje határozza meg a kulcsok sorrendjét.

 

A fenti paramétereket a /KEY módosítóval kell megadni. Például legyen a BERTORZS.DAT  file rekordképe a következő:

 

Mezőnév  Hossz (byte)  Adattípus

 

Osztálykód    2   CHARACTER

Név   30   CHARACTER

Fizetés    4   BINARY, UNSIGNED  

Lakhely (város) 10   CHARACTER  

 

A következő példákban ezt a filet rendezzük különböző módokon.

1. Rendezzük név és azon belül lakhely szerint ábécé sorrendbe a rekordokat!

 

$ SORT           -

_$  /KEY=(POSITION:3, SIZE:30)        -

_$  /KEY=( POSITION:37, SIZE:10)       -

_$  BERTORZS.DAT   BERTORZS.NEV

 

A karakter mezőtípust és a növekvő sorrendet nem kell kiírni, mert az a default.

A rekordok csak akkor lesznek valóban ábécé szerint rendezve, ha csak az angol ábécé betűit tartalmazzák (lásd a 9.2. fejezetet)

 

2. Rendezzük fizetés szerint csökkenő sorrendbe az osztályok dolgozóit!

 

$ SORT                    -

_$  /KEY=(POSITION:33, SIZE:4, BINARY, DESCENDING, NUMBER:2) -

_$  /KEY=( POSITION:1, SIZE:2, NUMBER:1)      -

_$  BERTORZS.DAT  BERTORZS.FIZETES

 

Ha a két /KEY módosítót megcseréljük, akkor elhagyhatjuk a NUMBER mezőket.

 

 

Ha valamely kulcsmezőnek lehetnek több rekordban azonos értékei, akkor fontos még két – egymást kizáró - módosító. (Ez előfordulhat egy vagy több input file esetén is.)

 

 

 

    1. 9.2. A kollatálási sorrend 

 

A karakteres kulcsmezőket alapértelmezés szerint a karakterek ASCII kódja szerint hasonlítjuk össze. Ez az angol ábécé betűire és a számokra a szokásos sorrendet eredményezi, de ha például magyar ékezetes betűket tartalmaz a fileunk, akkor az outputban az ékezetes betűk a sor legvégén foglalnak helyet (ASCII kódjuk nagyobb, mint 127.)

 

A Sort/Merge utility lehetővé teszi, hogy a rendezéskor megadjuk a kollatálási (ábécébe sorolási) sorrendet a

 

/COLLATING_SEQUENCE=szekvencia

 

módosítóval. A típus lehet

 

 

Például a

 

/COLLATING_SEQUENCE=MULTINATIONAL

 

magyar ékezetes betűk esetén nem ad ugyan tökéletes megoldást, de jobb, mint a default kollatálási sorrend.

 

 

Azt is megadhatjuk, hogy mely karaktereket ne vegye figyelembe a Sort a rendezésnél. Például a

 

/COLLATING_SEQUENCE=(SEQUENCE=ASCII,IGNORE=("-"," "))

 

esetén a kulcsmezőben lévő telefonszámok, a

 

2345-567

2345567

2345 567

 

mindegyike azonos értéket jelent.

 

 

  1. 10.  A DCL  

 

A teljes DCL parancskészlet, paramétereik és példák az OpenVMS DCL Dictionary kézikönyvben és a HELP-ben szerepelnek. DCL parancsok a VMS segédprogramokat meghívó parancsok is.

A parancsok csoportosítása:

 

A több mint 220 DCL parancs leírása nem feladata ennek a jegyzetnek. Jó néhány közülük szerepel más fejezetekben, egy-egy témához kapcsolódóan. Ez a fejezet csak áttekintést kíván nyújtani a talán leggyakrabban használt parancsokról és könyvtári függvényekről. Ezenkívül itt foglalkozunk a parancseljárások szabályaival és az ahhoz kapcsolódó parancsokkal.

 

 

    1. 10.1.Néhány gyakran használt DCL parancs 

 

Ez a fejezet felsorolja a leggyakrabban használt parancs-csoportokat, és néhányról részletesebb leírást közöl a könnyebb megértés érdekében.

 

 

      1. 10.1.1.Filekezelő parancsok 

 

1.  DIRECTORY

 

Tartalomjegyzéket készít egy fileról vagy filecsoportról és azok tulajdonságairól.

Formája:

 

$ DIRECTORY [filespecifikáció [,...]]

 

Ha nincs filespecifikáció, akkor a default eszköz és directory összes fileját figyelembe veszi. Módosítók híján a file neve, típusa, verziója szerepel a tartalomjegyzékben; a módosítókkal további információkat kaphatunk a fileokról.

A filespecifikáció(k)ban a szokásos wildcard karakterek (* % ... -) használhatók.

 

A leggyakrabban használt parancsmódosítók:

 

Kiírja a fileok ACL-jét is (ha van).

 

A legutóbbi mentési (backup) dátuma alapján választja ki az input filet.

Csak a /BEFORE vagy a /SINCE módosítóval együtt használható.

 

Az adott időpont előtti fileokat választja ki az input fileok közül. Az idő abszolút vagy kombinált formájú lehet.  Használható az időnél a BOOT, LOGIN, TODAY, TOMORROW, YESTERDAY is.

Ha a /BEFORE-t paraméter nélkül adjuk meg, akkor /BEFORE=TODAY az alapértelmezés.

A /BEFORE és a /SINCE módosító együtt is szerepelhet.

 

Csak a filenevet, típust és a verziót írja ki.

 

A tulajdonosi UIC alapján választja ki a file(oka)t a megadott specifikáció(k)ból.

Ha a /BY_OWNER-t paraméter nélkül adjuk meg, akkor a processz aktuális UIC-a a default.

 

A létrehozásuk dátuma alapján választja ki a fileokat. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

Kiírja az összes, a filehoz tartozó dátum mezőt vagy az utolsó mentés (backup), a létrehozás, az ISO9660 szerinti érvényesség, az utolsó módosítás, a lejárat idejét illetve az ISO9660 szerinti feljegyzési időt. Az opció ALL, BACKUP, CREATED, EFFECTIVE, EXPIRED, MODIFIED, RECORDING lehet.

Opció nélküli esetben a CREATED a default.

 

Kihagyja az output fileok közül a felsorolt fileokat. Ha egy file van, a () elhagyható.

A filespecifikáció(k)ban a wildcard karakterek (* % ... -) megengedettek.

 

Lejárati idő alapján választja ki a fileokat. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

A file-id-t is kiírja a directory listába.

 

Meghívja az FTP segédprogramot dir vagy ls parancs végrehajtására, ha a rendszerben van TCP/IP.

 

A file összes jellemzőjét kiírja.

 

A fileokról és az egyes directorykról szóló információkat elhagyja, csak az utolsó összefoglaló-összesítő sort írja ki.

 

Meghatározza, hogy a directory fejléc megjelenjen-e a kiírás elején. Default: HEADING.

 

A módosításuk dátuma alapján választja ki a fileokat. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

Meghatározza az output filet, ahova a directory lista kerül. Default: SYS$OUTPUT. Ha a filespecifikáció nem szerepel, akkor a default a DIRECTORY.LIS.

 

Kiírja a tulajdonos UIC-ot.

 

A tartalomjegyzék filet DIRECTORY.LIS néven vagy az  /OUTPUT-tal megadott néven elhelyezi a SYS$PRINT várakozási sorban.

 

Kiírja a védelmi kódot.

 

Az összes védelmi információt kiírja a fileokról (ACL, tulajdonos UIC és UIC szerinti védelmi kód).

 

A fileok a kulcsszóval meghatározott attribútumok alapján kerülnek a directory listába. Legfontosabb a méretük szerint válogató kulcsszó:

valamint az

 Ez utóbbiak szerint akkor kerül a file az outputba, ha rendelkezik vagy nem rendelkezik ACL-lel.

 

Azokat a fileokat választja ki az input fileok közül, amelyek meghatározott dátuma az adott időpont utáni. Az időpont abszolút vagy kombinált lehet.

Az időpont lehet BOOT, LOGIN, TODAY, TOMORROW vagy YESTERDAY is.

Ha a /SINCE-t paraméter nélkül adjuk meg, akkor /SINCE=TODAY az alapértelmezés.

 

A file felhasznált vagy allokált méretét írja ki. Az opció lehet ALL (mind a felhasznált, mind az allokált méret), ALLOCATION vagy USED.

A default opció a USED.

 

Csak a directory(k) nevét és összefoglaló sorukat írja ki, a filespecifikációkat nem.

 

A kért egyéb információ mellett lista záró, összesítő sorait elhagyja vagy kiírja. Default: TRAILING.

 

A legmagasabb n verziót írja ki. Alapértelmezésben az összes verziót kiírja.

 

 

Példák:

 

$ DIRECTORY /SIZE=ALL /DATE

 

A default directory összes fileját kiírja a felhasznált és lefoglalt méretükkel és létrehozási dátumukkal együtt.

 

$ DIRECTORY /FULL /PRINTER PROGRAM.EXE;0

 

 

Directory DISK$TANF:[HALLGATO1]

 

PROGRAM.EXE;1                      FileID:  (3672,11,0)    

Size:           390/390          Owner:    [1010,1010]

Created:  12-AUG-2003 11:45:19.00

Revised:  14-AUG-2003 15:45:19.00 (34)

Expires:   <None specified>

Backup:   28-AUG-2003 04:00:12.22

Effective: <None specified>

Recording: <None specified>

File organization:  Sequential

Shelved state:      Online

Caching attribute:  Writethrough

File attributes:   Allocation: 390, Extend: 0, Global buffer count: 0,

                    Version limit: 0, Backups disabled, Not shelvable

Record format:      Fixed length 512 byte records

Record attributes:  None

RMS attributes:     None

Journaling enabled: None

File protection:    System:RE, Owner:RE, Group:RE, World:RE

Access Cntrl List:  None

Client attributes:  None

 

Total of 1 file, 390/390 blocks.

     

 

A PROGRAM.EXE minden jellemzőjét A DIRECTORY.LIS ideiglenes fileba írja és a filet elküldi a SYS$PRINT várakozási sorba.

 

$ DIRECTORY /COLUMNS=1 /NOHEADER /NOTRAILING     -

        /OUTPUT=MAIL_FILES.LIS *.MAI

 

Az output minden sorában egyetlen filespecifikáció fog szerepelni.

 

$ DIRECTORY       -

_$ /MODIFIED /SINCE=1-JUL-2003 /BEFORE=1-AUG-2003  -

_$ /SECURITY ORA*.DAT

 

A 2003. júliusában módosított, ORA-val kezdődő nevű adatfileok és védelmi információik jelennek meg az outputban.

 

 

2. CREATE

 

Egy vagy több szekvenciális filet hoz létre a lemezen; a rekordokat a parancsot követő inputból veszi. (Meg kell jegyezni, hogy a CREATE/DIRECTORY, CREATE/FDL parancsok másfajta fileokat is képesek létrehozni –lásd a 3. fejezetben.)

Formája:

 

$ CREATE filespecifikáció [,...]

 

A filespecifikációban nem lehet wildcard karakter.

A létrehozott filet CTRL/Z-vel kell lezárni.

 

Módosítók:      

 

/LOG

Minden létrehozott filenak kiírja a nevét.

 

/OWNER_UIC=uic

Meghatározza a létrehozott file(ok) tulajdonosát.

 

/PROTECTION=(kód)

 Meghatározza a létrehozott file(ok) védelmi kódját.

 

 

Például

 

$ CREATE SZAMOK.TXT

1       EGY

2       KETTO

3       HAROM

<CTRL/Z>

$

 

 

3. COPY

 

Egy vagy több létező input fileból egy output filet, vagy egy input file-csoportból egy output file-csoportot hoz létre.

Formája:

 

$ COPY input-file[,...] output-file

 

A wildcard karakterek mind az input mind az output specifikációban használhatók. Jelentésük eltérő: inputként vesszővel elválasztva több file is megadható, a specifikáció(k)ban tetszőleges wildcard karakterek szerepelhetnek (* % ... -), s ezeknél a wildcard karakterek az összes illeszkedő filet jelentik.

Ha az – egyetlen - output filespecifikációból hiányoznak mezők, a lemezre és a directoryra a processz defaultot veszi figyelembe a parancs, a specifikáció többi hiányzó részét az (első) input specifikációból veszi. Az output filespecifikáció teljes mezőjében álló csillaggal (*) jelezhetjük, hogy a COPY több output filet hozzon létre, és a csillag helyére a megfelelő input mező kerüljön.

A /NOCONCATENATE módosítóval vagy csak a csomópont, eszköz vagy directory név megadásával is több output filet hozhatunk létre.

Ha verziószám sem az input sem az output fileban nem szerepel, akkor a COPY a következők szerint alakítja ki az output verzióját: vagy az input file verziója, vagy eggyel nagyobb a már létező azonos nevű és típusú fileok legmagasabb verziójánál. Ha az outputban szerepel *, akkor az output file az input verzióját kapja., ha nincs * és verzió az outputban, akkor az inputénál eggyel nagyobb verziót. Ha explicit verziót írunk az outputba, akkor pedig azt. Ha már létezik az adott verzió, akkor nem jön létre az output; ha nem az lesz a legnagyobb, akkor a COPY figyelmeztető üzenetet küld.

 

A leggyakrabban használt parancsmódosítók:

 

A legutóbbi mentési (backup) dátuma alapján választja ki az input filet.

Csak a /BEFORE vagy a /SINCE módosítóval együtt használható.

 

Az adott időpont előtti fileokat választja ki az input fileok közül. Az idő abszolút vagy kombinált formájú lehet.  Használható az időnél a BOOT, LOGIN, TODAY, TOMORROW, YESTERDAY is.

Ha a /BEFORE-t paraméter nélkül adjuk meg, akkor /BEFORE=TODAY az alapértelmezés.

A /BEFORE és a /SINCE módosító együtt is szerepelhet.

 

A tulajdonosi UIC alapján választja ki az input file(oka)t a megadott specifikáció(k)ból.

Ha a /BY_OWNER-t paraméter nélkül adjuk meg, akkor a processz aktuális UIC-a a default.

 

Meghatározza, hogy egyetlen output file jöjjön létre az input fileokból vagy minden input fileból egy output. Csak szekvenciális filekat lehet összefűzni.

Default: CONCATENATE

 

Minden egyes file másolása előtt megerősítést vár.

 

A létrehozásuk dátuma alapján választja ki az input fileo(ka)t. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

Kihagyja az output fileok közül a felsorolt fileokat. Ha egy file van, a () elhagyható.

A filespecifikáció(k)ban a wildcard karakterek (* % ... -) megengedettek.

 

Lejárati idő alapján választja ki a fileokat. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

Meghívja az FTP segédprogramot, és esetleg különböző operációs rendszerek különböző szerkezetű filejait is képes másolni, ha a rendszerben van TCP/IP.

 

Kiírja a terminálra a másolt fileok nevét és méretét.

Default: NOLOG

 

A módosításuk dátuma alapján választja ki az input fileokat. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

Meghatározza az output file(ok) UIC szerinti védelmi kódját. (Lásd a 4.1. fejezetben.

Ha nem használjuk a módosítót, vagy nem adjuk meg mind a négy mezőt, akkor

 

Azokat a fileokat választja ki az input fileok közül, amelyek meghatározott dátuma az adott időpont utáni. Az időpont abszolút vagy kombinált lehet.

Az időpont lehet BOOT, LOGIN, TODAY, TOMORROW vagy YESTERDAY is.

Ha a /SINCE-t paraméter nélkül adjuk meg, akkor /SINCE=TODAY az alapértelmezés.

 

 

Példák:

 

 

$ COPY /LOG ADAT.DAT REGI

%COPY-S-COPIED, DUA2:[WORK]ADAT.DAT;1 copied to

   DUA2:[WORK]REGI.DAT;1 (5 blocks)

%COPY-S-NEWFILES, 1 file created

 

$ COPY /EXCLUDE=*.TMP *.* MSA:*.*

 

$ COPY /LOG SZOVEG.TXT  NL:

%COPY-S-COPIED DUA0:[USER]SZOVEG.TXT copied to NL:

   (901 records)

 

Az első parancs egy REGI.DAT nevű filet hoz létre az ADAT.DAT tartalmával, a második a default directory legmagasabb verziójú filejait mágnesszalagra másolja, kivéve az ideiglenes fileokat. Az utolsó példa arra jó, hogy megállapítsuk egy szekvenciális file rekordjainak számát (az NL: a null eszköz).

 

$ COPY FOPR.FOR, SUBR.FOR *.ARC

 

A parancs létrehozza a FOPR.ARC, SUBR.ARC fileokat.

 

 

4. APPEND

 

Egy vagy több szekvenciális input filet fűz az output file végéhez.

Formája:

 

$ APPEND input-file [,input-file...] output-file

 

Mind az input, mind az output fileban szerepelhetnek wildcard (* % ... -) karakterek. Az input esetén az összes illeszkedő filet össze kell fűzni. Az output specifikáció egész mezője helyén álló csillag (ebben más wildcard nem is szerepelhet) azt jelzi, hogy az illető mező értéke az első vagy egyetlen input file megfelelő mezője lesz.

 

A leggyakrabban használt parancsmódosítók:

 

A legutóbbi mentési (backup) dátuma alapján választja ki az input filet.

Csak a /BEFORE vagy a /SINCE módosítóval együtt használható.

 

Az adott időpont előtti fileokat választja ki az input fileok közül. Az idő abszolút vagy kombinált formájú lehet.  Használható az időnél a BOOT, LOGIN, TODAY, TOMORROW, YESTERDAY is.

Ha a /BEFORE-t paraméter nélkül adjuk meg, akkor /BEFORE=TODAY az alapértelmezés.

A /BEFORE és a /SINCE módosító együtt is szerepelhet.

 

A tulajdonosi UIC alapján választja ki az input file(oka)t a megadott specifikáció(k)ból.

Ha a /BY_OWNER-t paraméter nélkül adjuk meg, akkor a processz aktuális UIC-a a default.

 

Minden egyes file másolása előtt megerősítést vár.

 

A létrehozásuk dátuma alapján választja ki az input fileo(ka)t. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

Kihagyja az output fileok közül a felsorolt fileokat. Ha egy file van, a () elhagyható.

A filespecifikáció(k)ban a wildcard karakterek (* % ... -) megengedettek.

 

Lejárati idő alapján választja ki a fileokat. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

Kiírja a terminálra a másolt fileok nevét és méretét.

Default: NOLOG

 

A módosításuk dátuma alapján választja ki az input fileokat. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

Új filet hoz létre az output filespecifikáció alapján, ha még nincs olyan. Ha már létezik, akkor ahhoz fűzi.

Default: /NONEW_VERSION

 

Meghatározza az output file UIC szerinti védelmi kódját. (Lásd a 4.1. fejezetben.)

Ha nem használjuk a módosítót, vagy nem adjuk meg mind a négy mezőt, akkor

Csak a /NEW_VERSION módosítóval együtt lényeges.

 

Azokat a fileokat választja ki az input fileok közül, amelyek meghatározott dátuma az adott időpont utáni. Az időpont abszolút vagy kombinált lehet.

Az időpont lehet BOOT, LOGIN, TODAY, TOMORROW vagy YESTERDAY is.

Ha a /SINCE-t paraméter nélkül adjuk meg, akkor /SINCE=TODAY az alapértelmezés.

 

 

Például:

 

$ APPEND /LOG /SINCE /NEW_VERSION *.TXT MAI_TERMES.*

%APPEND-S-APPENDED, WORK:[USER]0.TXT;3 appended to

  WORK:[USER]MAI_TERMES.TXT;1 (69 records)

%APPEND-S-APPENDED, WORK:[USER]1.TXT;12 appended to

  WORK:[USER]MAI_TERMES.TXT;1 (178 records)

 

Hozzáfűzi a MAI_TERMES.TXT filehoz a ma létrehozott, .TXT típusú fileokat. Mivel a MAI_TERMES.TXT file még nem létezik, ezért a parancs létrehozza.

 

 

5. TYPE

 

Egy vagy több file tartalmát írja az aktuális output eszközre.

Formája:

 

$ TYPE filespecifikáció [,...]

 

A default filetípus a .LIS; a wildcard karakterek (* % ... -) használata megengedett.

 

A TYPE parancs osztott eléréssel nyitja meg a fileokat: a TYPE végrehajtása közben más processz írásra és/vagy olvasásra is hozzájuk férhet.

 

A kiírást az alábbi vezérlő billentyűkkel szabályozhatjuk:

 Ha CTRL/O hatása alatt új file kezdődik, azt elkezdi írni a rendszer.

 

A leggyakrabban használt parancsmódosítók:

 

A legutóbbi mentési (backup) dátuma alapján választja ki az input filet.

Csak a /BEFORE vagy a /SINCE módosítóval együtt használható.

 

Az adott időpont előtti fileokat választja ki az input fileok közül. Az idő abszolút vagy kombinált formájú lehet.  Használható az időnél a BOOT, LOGIN, TODAY, TOMORROW, YESTERDAY is.

Ha a /BEFORE-t paraméter nélkül adjuk meg, akkor /BEFORE=TODAY az alapértelmezés.

A /BEFORE és a /SINCE módosító együtt is szerepelhet.

 

A tulajdonosi UIC alapján választja ki az input file(oka)t a megadott specifikáció(k)ból.

Ha a /BY_OWNER-t paraméter nélkül adjuk meg, akkor a processz aktuális UIC-a a default.

 

Minden egyes file másolása előtt megerősítést vár.

 

A létrehozásuk dátuma alapján választja ki az input fileo(ka)t. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

Kihagyja az input fileok közül a felsoroltakat. Ha egy file van, a () elhagyható.

A filespecifikáció(k)ban a wildcard karakterek (* % ... -) megengedettek.

 

Lejárati idő alapján választja ki a fileokat. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

A módosításuk dátuma alapján választja ki az input fileokat. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

A kiírás outputját határozza meg. A default típus .LIS. A /PAGE módosítóval együtt nem használható.

Default: SYS$OUTPUT

     

A listázás laponként történik. A kulcsszó:

 

Azokat a fileokat választja ki az input fileok közül, amelyek meghatározott dátuma az adott időpont utáni. Az időpont abszolút vagy kombinált lehet.

Az időpont lehet BOOT, LOGIN, TODAY, TOMORROW vagy YESTERDAY is.

Ha a /SINCE-t paraméter nélkül adjuk meg, akkor /SINCE=TODAY az alapértelmezés.

 

 

Például

 

$ TYPE /PAGE /SINCE=YESTERDAY *.C

 

Laponként megállva kiírja a terminálra az összes, tegnap óta készült C nyelvű filet.

 

 

6. DELETE

Egy vagy több filet töröl egy lemezről.

Formája:

 

$ DELETE filespecififkáció [,...]

 

A filespecifikációban mindig szerepelnie kell a verziónak. A wildcard karakterek (* % ... -) használata megengedett.

 

A leggyakrabban használt parancsmódosítók:

 

A legutóbbi mentési (backup) dátuma alapján választja ki a törlendő file(oka)t.

Csak a /BEFORE vagy a /SINCE módosítóval együtt használható.

 

Az adott időpont előtti fileokat választja ki a specifikációban megadott fileok közül. Az idő abszolút vagy kombinált formájú lehet.  Használható az időnél a BOOT, LOGIN, TODAY, TOMORROW, YESTERDAY is.

Ha a /BEFORE-t paraméter nélkül adjuk meg, akkor /BEFORE=TODAY az alapértelmezés.

A /BEFORE és a /SINCE módosító együtt is szerepelhet.

 

A tulajdonosi UIC alapján választja ki a törlendő file(oka)t a megadott specifikáció(k)ból.

Ha a /BY_OWNER-t paraméter nélkül adjuk meg, akkor a processz aktuális UIC-a a default.

 

Minden egyes file törlése előtt megerősítést vár.

 

A létrehozásuk dátuma alapján választja ki a törlendő fileo(ka)t. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

A DELETE önmagában csak a file(ok)hoz tartozó blokkok szabaddá tételét jelenti, tényleges azonnali felülírást csak az /ERASE módosítóval érhetünk el.

Default: /NOERASE, ha a filera, directoryra vagy a kötetre nincs más beállítva.

 

Kihagyja a törlendő fileok közül a felsorolt fileokat. Ha csak egy file van, a () elhagyható.

A filespecifikáció(k)ban a wildcard karakterek (* % ... -) megengedettek.

 

Lejárati idő alapján választja ki a fileokat. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

A módosításuk dátuma alapján választja ki az input fileokat. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

Azokat a fileokat választja ki a törlendő fileok közül, amelyek meghatározott dátuma az adott időpont utáni. Az időpont abszolút vagy kombinált lehet.

Az időpont lehet BOOT, LOGIN, TODAY, TOMORROW vagy YESTERDAY is.

Ha a /SINCE-t paraméter nélkül adjuk meg, akkor /SINCE=TODAY az alapértelmezés.

 

 

Például

 

$ DELETE /CONFIRM *.JOU;*

DUA0:[USER]SZOVEG.JOU;2, delete [N]: Y

DUA0:[USER]SZOVEG.JOU;1, delete [N]: N

$

 

Ebben a példában a SZOVEG.JOU file korábbi verziójára van szükségünk.

 

$ DELETE [HALLGATO1]ALAP.DIR;1

 

Ilyen módon törölhetünk directoryt. Ha a directory tartalmaz filet, a DCL figyelmeztető üzenetet küld, és nem törli a directory filet.

 

 

7. PURGE

 

Az adott file(ok) korábbi verzióit törli, meghagyva a legmagasabb verziót vagy a legmagasabb verziókat.

Formája:

 

$ PURGE [filespecifikáció] [,...]

 

Ha nem adunk meg filespecifikációt, akkor az aktuális default directory összes filejára vonatkozik a parancs. Wildcard karakterek (* % ... -) használata megengedett; verzió viszont nem szerepelhet a filespecifikáció(k)ban.

 

A leggyakrabban használt parancsmódosítók:

 

A legutóbbi mentési (backup) dátuma alapján választja ki a törlendő file(oka)t.

Csak a /BEFORE vagy a /SINCE módosítóval együtt használható.

 

Az adott időpont előtti fileokat választja ki a specifikációban megadott fileok közül. Az idő abszolút vagy kombinált formájú lehet.  Használható az időnél a BOOT, LOGIN, TODAY, TOMORROW, YESTERDAY is.

Ha a /BEFORE-t paraméter nélkül adjuk meg, akkor /BEFORE=TODAY az alapértelmezés.

A /BEFORE és a /SINCE módosító együtt is szerepelhet.

 

A tulajdonosi UIC alapján választja ki a törlendő file(oka)t a megadott specifikáció(k)ból.

Ha a /BY_OWNER-t paraméter nélkül adjuk meg, akkor a processz aktuális UIC-a a default.

 

Minden egyes file törlése előtt megerősítést vár.

 

A létrehozásuk dátuma alapján választja ki a törlendő fileo(ka)t. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

A PURGE önmagában csak a file(ok)hoz tartozó blokkok szabaddá tételét jelenti, tényleges azonnali felülírást csak az /ERASE módosítóval érhetünk el.

Default: /NOERASE, ha a filera, directoryra vagy a kötetre nincs más beállítva.

 

Kihagyja a törlendő fileok közül a felsorolt fileokat. Ha csak egy file van, a () elhagyható.

A filespecifikáció(k)ban a wildcard karakterek (* % ... -) megengedettek.

 

Lejárati idő alapján választja ki a fileokat. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

Meghatározza, hogy hány verzió maradjon meg a file(ok)ból – mindig a legmagasabb verziók maradnak.

Default: n=1.

 

A módosításuk dátuma alapján választja ki az input fileokat. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

Azokat a fileokat választja ki a törlendő fileok közül, amelyek meghatározott dátuma az adott időpont utáni. Az időpont abszolút vagy kombinált lehet.

Az időpont lehet BOOT, LOGIN, TODAY, TOMORROW vagy YESTERDAY is.

Ha a /SINCE-t paraméter nélkül adjuk meg, akkor /SINCE=TODAY az alapértelmezés.

 

 

Például

 

$ PURGE /KEEP=2 /SINCE=TODAY /LOG [...]

 

Az aznap a default directoryban és az alatta lévő aldirectorykban létrehozott fileoknak csak az utolsó két verzióját tartja meg.

 

 

      1. 10.1.2.File tartalmával foglalkozó parancsok 

 

1. DIFFERENCES

 

Két, lemezen levő file tartalmát rekordonként összehasonlítja, és a különbségekről listát készít.

Formája:

 

$ DIFFERENCES input1-filespecifikáció [input2-filespec.]

 

A két filet vagy az egyedül megadott file és az ő verziója alatt létező legnagyobb verziójú filet hasonlítja össze. Wildcard karakter nem használható a filespecifikációkban.

Az összehasonlítás történhet karakterről karakterre, vagy elhagyhatunk bizonyos részeket a /COMMENT_DELIMITERS és/vagy az /IGNORE módosítóval. A program exit státusza jelzi a hasonlítás eredményét:

 

A leggyakrabban használt parancsmódosítók:

 

Meghatározza, hogy mit tekintsen megjegyzés határolónak a program a hasonlítás során.

Maximum 32 határoló adható meg: Felsorolható maga a karakter, vagy COLON (:), COMMA (,), EXCLAMATION (!), FORM_FEED (lapdobás), LEFT ([), RIGHT (]),SEMI_COLON (;) SLASH (/), SPACE (szóköz), TAB (tabulátor) lehet.

A nem alfanumerikus karaktert idézőjelek ("") közé kell zárni.

Ha használjuk ezt a módosítót, akkor a rendszer az /IGNORE=COMMENTS módosítót automatikusan feltételezi.

A default függ a file típusától (a különböző programnyelvek esetén különböző a megjegyzés formája).

 

Segítségével megadhatjuk, hogy mely karakterek, stringek vagy rekordok ne vegyenek részt a hasonlításban. Az opció által meghatározott elhagyható rész lehet:

 

Meghatározza, hogy hány sor egyezése esetén fogadja el egy különbség után illeszkedőnek a fileok folytatását.

Default: n=3.

 

Meghatározza, hogy n különbség után hagyja abba a hasonlítást.

 

Meghatározza, hogy az outputban a nem illeszkedő rekordok után hány egyező szerepeljen.

Default: n=1.

 

Az outputban szerepel a rekordok sorszáma.

Default: /NUMBER        

 

A különbségekről szóló riport a meghatározott fileba kerül (nem a SYS$OUTPUT-ra).

A default filespecifikáció: input1-név.DIF

 

Megadásakor az összehasonlított fileok különböző rekordjai a képernyő vagy az output file két oldalán jelennek meg. A különböző rekordok után n azonos rekordot ír ki.

Default: n=0.

 

A DIFFERENCES létrehoz egy SLP editornak szóló parancsfilet, amely az első fileból a második filelal azonosat hoz létre.

 

 

Példák:

 

$ DIFFERENCES ELSO_PROGRAM.FOR

 

Az ELSO_PROGRAM.FOR program két utolsó verzióját hasonlítja össze.

 

$ DIFFERENCES /OUTPUT /IGNORE=(HEADER=2, SPACING) -

_$      PROBA.LIS PROBA1.LIS

 

Az összehasonlítás nem veszi figyelembe a lapdobást követő két sort, a szóköz- és tabulátor sorozatokat pedig egyetlen szóköznek tekinti. A különbség leírása a PROBA.DIF fileba kerül.

 

 

2. DUMP

 

Egy file vagy kötet tartalmát jeleníti meg ASCII, decimális, hexadecimális vagy oktális formában.

Formája:

 

$ DUMP filespecifikáció [,...]

 

Ha a filespecifikáció egy FOREIGN-ként mountolt lemez vagy szalag illetve más eszköz, akkor a dump kötet (logikai) blokkonként történik (lemeznél 512 byte); egyébként a file(ok) virtuális blokkjai vagy rekordjai szerint. A dump default formája: a tartalom hexadecimálisan és ASCII kódban párhuzamosan jelenik meg.

A numerikus rész jobbról balra olvasandó. Az ASCII kódú részben a nem nyomtatható karakterek helyén pont áll.

 

 

3. SEARCH

 

A parancsban szereplő string(ek)et keresi a megadott file(ok)ban és kiírja a megtalált stringeket tartalmazó file(oka)t és a találato(ka)t tartalmazó környezetet.

Formája:

 

$ SEARCH filespecifikáció. [,...] string [,...]

 

A filespecifikáció(k)ban a wildcard karakterek megengedettek. Ha a string(ek) nem alfanumerikus karaktereket, szóközt vagy kisbetűket is tartalmaz(nak), akkor idézőjelek (") közé kell zárni (őket).

 

A leggyakrabban használt parancsmódosítók:

A legutóbbi mentési (backup) dátuma alapján választja ki az input file(oka)t.

Csak a /BEFORE vagy a /SINCE módosítóval együtt használható.

 

Az adott időpont előtti fileokat választja ki a specifikációban megadott fileok közül. Az idő abszolút vagy kombinált formájú lehet.  Használható az időnél a BOOT, LOGIN, TODAY, TOMORROW, YESTERDAY is.

Ha a /BEFORE-t paraméter nélkül adjuk meg, akkor /BEFORE=TODAY az alapértelmezés.

A /BEFORE és a /SINCE módosító együtt is szerepelhet.

 

A tulajdonosi UIC alapján választja ki az input file(oka)t a megadott specifikáció(k)ból.

Ha a /BY_OWNER-t paraméter nélkül adjuk meg, akkor a processz aktuális UIC-a a default.

 

Minden egyes file vizsgálata előtt megerősítést vár.

 

A létrehozásuk dátuma alapján választja ki a vizsgálandó fileo(ka)t. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

Meghatározza, hogy a kis- és nagybetű azonosnak számítson-e a keresés során.

Default: /NOEXACT (A SEARCH nem tesz különbséget a kis- és nagybetű között.)

 

Kihagyja a vizsgálandó fileok közül a felsorolt fileokat. Ha csak egy file van, a () elhagyható.

A filespecifikáció(k)ban a wildcard karakterek (* % ... -) megengedettek.

 

Lejárati idő alapján választja ki a fileokat. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

Több file esetén az outputban 30 darab * és a file neve is megjelenik az első megtalált string előtt. Ha /NOHEADING-t használunk, akkor nem lesznek elválasztva a találatok.

Default: /HEADING

 

Meghatározza, hogy a megtalált string milyen módon legyen kiemelve a szövegkörnyezetből – amennyiben a terminál (vagy emuláció) képes a kiemelést produkálni.

Az opció lehet:

lesz a megtalált string.

Default: /NOHIGHLIGHT

 

Minden végigolvasott fileról üzenetet küld a SYS$OUTPUT-ra: A file nevét, az összes rekord és az illeszkedő rekordok számát írja ki.

Default: /NOLOG

 

Meghatározza, hogy a megadott stringek hogyan illeszkedjenek.

Az opció lehet:

Default: /MATCH=OR.

 

A módosításuk dátuma alapján választja ki az input fileokat. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

A rekordok sorszámmal vagy anélkül jelennek meg.

Default: /NONUMBERS

 

A különbségekről szóló tudósítások a meghatározott fileba kerülnek, és nem a SYS$OUTPUT-ra.

/NOOUTPUT esetén a megtalált sorok nem íródnak ki.

 

Az outputba kerül az első megtalált rekordtól kezdve a file további része.

Default: /NOREMAINING

 

Azokat a fileokat választja ki a vizsgálandók közül, amelyek meghatározott dátuma az adott időpont utáni. Az időpont abszolút vagy kombinált lehet.

Az időpont lehet BOOT, LOGIN, TODAY, TOMORROW vagy YESTERDAY is.

Ha a /SINCE-t paraméter nélkül adjuk meg, akkor /SINCE=TODAY az alapértelmezés.

 

Statisztika jelenik meg az output végén, többek között tartalmazva a megvizsgált fileok, rekordok és karakterek valamint a találatok számát.

Default: /NOSTATISTICS

 

Szabályozza, hogy a megtalált rekord milyen környezete jelenjen meg az outputban. Ha csak a /WINDOW-t adjuk meg, akkor 2 sor a találat előtt és 2 utána jelenik meg a fileból.

Ha egy számot adunk meg (n1), akkor a talált rekord az n1 sor közepén lesz. Ha két számot adunk meg paraméterként, akkor a talált rekord előtt n1 darab sor, utána n2 sor jelenik meg.

A /WINDOW=0 esetén csak a stringet tartalmazó file(ok) neve jelenik meg az outputon, a string(ek) nem.

Default: /NOWINDOW azaz csak a találatok sora jelenik meg.

 

 

Például

 

$ SEARCH *.COM "@ALFA"

 

Megkeresi, hogy mely parancsfile(ok) indítja(k) el az ALFA.COM-ot.

 

$ SEARCH /MATCH=OR /WINDOW=0 *.FOR "%REF", "%DESCR"

 

A parancs megkeresi azokat a Fortran programokat, amelyekben vagy referenciával vagy deszkriptorral adunk át paramétert egy szubrutinnak. Csak a fileok nevét írja ki, a tartalmukat nem.

 

$ SEARCH/REMAINING/OUTPUT=2.TXT SZOVEG.TXT "2. Felvonás"

A parancs a 2. Felvonás sortól kezdődően a 2.TXT fileba másolja a SZOVEG.TXT tartalmát.

 

$ SEARCH/NOOUTPUT/STATISTICS SZOVEG.TXT ""

 

Ez a parancs csak statisztikát ír ki a fileról, például a benne levő sorok és karakterek számát. Az üres string ("") mindenre illeszkedik.

 

 

    1. 10.2.A könyvtári függvények 

 

 A könyvtári függvények (lexical function) a DCL beépített eljárásai. A programozási nyelvek függvényeihez hasonlóan kifejezésekben szerepelhetnek, az aktuális processzről vagy a rendszer más elemeiről szóló információt tartalmazó értéket hoznak létre az argumentumokból és egyéb rendszer adatokból.. A parancsokban szereplő függvények értékét a DCL parancsértelmező határozza meg, és behelyettesíti a parancsban szereplő kifejezésbe annak végrehajtásakor. A DCL-ben nincs lehetőség saját függvények definiálására.

A könyvtári függvényeket lexikális függvényeknek is hívjuk, mert a parancsértelmező (DCL) a parancsértelmezés lexikális menetében (lexical processing) számítja ki a függvényértéket.

 

A könyvtári függvények általános formája:

 

F$függvénynév([arg,...])

 

A függvénynév mindaddig rövidíthető, amíg egyedi marad (ugyanúgy, ahogy a DCL parancsok).

Az argumentumok tetszőleges, az argumentum típusának megfelelő értékű kifejezések lehetnek; vesszővel (,) kell elválasztani őket. A vesszőt akkor is ki kell tenni, ha közbeeső, nem kötelező argumentumot elhagyunk.

A () akkor is kötelező, ha nincs argumentum.

Ha az argumentum karakter konstans, azt mindig idézőjelek (") közé kell zárni; enélkül ugyanis szimbólumnak tekinti az argumentumot a DCL.

 

A fejezet nem tartalmazza az összes függvény teljes leírását, csak néhány gyakrabban használtét.  A teljes leírás az OpenVMS DCL Dictionary kézikönyvben a függvény nevénél vagy a Lexical Functions címszó alatt található meg, illetve a HELP LEXICAL paranccsal kérhetünk online segítséget.

 

 

  1. 1.F$CVTIME ([input-idő], [output-idő-forma], [output-mező]) 

 

Abszolút vagy összetett idő stringből (input-idő) "yyyy-mm-dd hh:mm:ss.cc" formájú stringet konvertál (a hónap itt számmal van megadva) és a teljes dátum vagy annak egy része lesz a függvényérték. A második paraméter az output formáját határozhatja meg (ABSULOTE, COMPARISON (default), DELTA), az output-mezővel pedig megadhatjuk, hogy a dátum melyik mezője szerepeljen az outputban (DATE, DATETIME (default), DAY, DAYSOFYEAR, HOUR, HUNDREDTH, MINUTE, MONTH, SECOND, TIME, WEEKDAY, YEAR).

Ha az input-időt elhagyjuk – vagy üres stringet ("") írunk -, akkor a rendszer aktuális időpontja lesz az input.

 

Példák:

 

$ AKTIDO = F$TIME()

$ SHOW SYMBOL AKTIDO

  AKTIDO = "15-AUG-2003 13:01:08.12"

$ KONVIDO = F$CVTIME(AKTIDO)

$ SHOW SYMBOL KONVIDO

  KONVIDO = "2003-08-15 13:01:08.12"

$ WRITE SYS$OUTPUT F$CVTIME(AKTIDO,,"WEEKDAY")

Friday

 

Az AKTIDO szimbólumot a rendszer aktuális idejével tölti fel az F$TIME() függvény, ezt konvertáljuk év-hónap-nap formába, majd kiíratjuk a hét napjának nevét is.

 

$ MASNAP = F$CVTIME("TOMORROW",,"DATE")

 

A MASNAP szimbólumba a következő nap dátuma kerül (nem kell szökőévet vagy hónaphosszt számolgatni.)

 

 

  1. 2.F$EDIT(string, szerkesztőlista) 

 

A függvény a stringet a szerkesztőlista alapján formázva adja vissza. A szerkesztőlistában az alábbi kulcsszavak szerepelhetnek:

 

Minden szóközt és tabulátort eltávolít a stringből.

Az egymás mellett lévő több szóközt vagy tabulátort egy szóközzel helyettesíti.

Kisbetűssé konvertálja a stringet.

A sor elején és végén levő szóközöket és tabulátorokat eltávolítja a stringből.

A megjegyzéseket eltávolítja a stringből. (A felkiáltójellel kezdődő részt tekinti megjegyzésnek – akár a DCL.)

Nagybetűssé konvertálja a stringet.

 

Például

 

$ MINTA = "    NAGYBETUK   "

$ KONV_MINTA = F$EDIT(MINTA,"COMPRESS,LOWERCASE")

$ SHOW SYMBOL KONV_MINTA

  KONV_MINTA = " nagybetuk "

 

 

  1. 3.F$ELEMENT(elemsorszám, határoló, string) 

 

A meghatározott határolóval elválasztott, adott elemsorszámú elemet kiemeli a stringből, s az lesz a függvény értéke. Az elemsorszám 0-val kezdődik. Az elemsorszámot meghatározó kifejezés értéke nem lehet negatív (hibaüzenetet okoz). Az elemek számánál nagyobb elemsorszám esetén a függvény értéke a határoló karakter lesz.

 

Például

 

$ SZAMNEVEK=="NULLA,EGY,KETTŐ,HÁROM,NÉGY,ÖT,HAT,HÉT,"+ -

"NYOLC,KILENC"

$ WRITE SYS$OUTPUT F$ELEMENT(3,",",SZAMNEVEK)

HÁROM

 

A SZAMNEVEK szimbólum segítségével a számjegyekhez azok nevét rendelhetjük hozzá. (Az első sor arra is példa, hogy hogyan kell az egy sorba nem férő string értékadást helyesen írni.)

 

Amennyiben egy szöveget szavak szerint kell feldolgozni, különösen hasznos az F$ELEMENT() és az F$EDIT() kombinációja:

 

$ STR = "    Hány     szó is van    itt?"

$ WRITE SYS$OUTPUT F$ELEMENT(0," ", STR)

 

$ STR = F$EDIT(STR,"TRIM,COMPRESS")

$ WRITE SYS$OUTPUT F$ELEMENT(0," ", STR)

Hány

 

 

  1. 4.F$ENVIRONMENT (elem) 

 

A DCL parancs-környezetnek az argumentumban meghatározott jellemzőjéről ad információt. Az elem értéke többek között lehet:

 

 

Például

 

$ DEF_MENTES= F$ENVIRONMENT("DEFAULT")

$ SET DEFAULT SYS$MANAGER

  .

  .

  .

$ SET DEFAULT 'DEF_MENTES'

 

Az első parancs a DEF_MENTES szimbólumba menti a default eszközt és directoryt, majd az utolsó parancs visszaállítja az eredeti defaultot. (Ez a célszerű eljárás, ha egy parancsfileban módosítjuk a default helyet.)

 

 

  1. 5.F$FAO (vezérlő-string [,arg1,arg2,...,arg15]) 

 

Meghívja a $FAO (Formatted ASCII Output) rendszer rutint, amely a meghatározott vezérlő string alapján formázott ASCII outputot állít elő. A vezérlő string tartalmazza a kiírandó szövegnek azt a részét, amelyet nem kívánunk formázni és a FAO direktívá(ka)t is. A FAO direktívák inputja az arg1, arg2, ...,arg15 argumentum lesz.

 

A FAO direktíva az alábbi formájú lehet:

 

 

A leggyakrabban használt direktívák:

 

 

Például

 

$ MONDAT = F$FAO("A karakterek száma !6ZL", HOSSZ)

$ SHOW SYMBOL MONDAT

  MONDAT = "A karakterek száma  12345"

 

A HOSSZ szimbólum értéke 6 karakter hosszan lesz a szövegbe illesztve.

 

$ WRITE NAPLO F$FAO("A processz indulási ideje: !%T", 0)

 

A NAPLO logikai névvel megnyitott fileba az aktuális időpontot írjuk be.

 

 

  1. 6.F$FILE_ATTRIBUTES (filespecifikáció, információtípus) 

 

A fileról a típussal meghatározott információt adja vissza a függvény értéke a típustól függően lehet integer, string vagy logikai.

 

A gyakran kérdezett információk:

 

 

Például:

 

$ IF F$FILE_ATTRIBUTES("ADAT.DAT","ORG") .EQS. "IDX" THEN -

     WRITE SYS$OUTPUT F$ATTRIBUTES("ADAT.DAT","NOK")

 

Amennyiben az ADAT.DAT indexelt file, akkor kiíratjuk a kulcsok számát.

 

$ IF F$FILE_ATTRIBUTES("HIBANAPLO.LIS","EOF") .NES. 0  -

 THEN          -

     MAIL HIBANAPLO.LIS RENDSZERGAZDA

 

Ha a HIBANAPLO.LIS nem üres, akkor elküldjük a RENDSZERGAZDA felhasználónak.

 

 

  1. 7.F$GETJPI (processz-id, attribútum) 

 

Meghívja a $GETJPI rendszer rutint, hogy információt adjon a megadott processzről. A processz összes, a rendszerben őrzött attribútuma lekérdezhető. (A függvény értéke a típustól függően lehet integer, string vagy logikai.)

Ha az aktuális processzről kérünk információt, akkor a processz-id helyett a null-stringet ("") is írhatjuk – az argumentum mindenképpen kötelező. Más processzről csak akkor kaphatunk információt, ha megfelelő privilégiummal rendelkezünk (GROUP, WORLD).

 

A leggyakrabban használt attribútumok:

 

   (BATCH/INTERACTIVE/NETWORK/OTHER)

 

Például:

 

$ FELHASZNALO_NEV = F$GETJPI("","USERNAME")

 

A FELHASZNALO_NEV értéke a saját processzünkhöz tartozó usernév lesz.

 

 

  1. 8.F$LENGTH(string) 

 

A string hossza lesz a függvény értéke.

 

Például

 

$ READ SYS$COMMAND /PROMPT="Kérek néhány karaktert"

$ WRITE SYS$OUTPUT "A begépelt karakterek száma:", -

_$ F$LENGTH(STRING)

 

A lexikális függvény közvetlenül is szerepelhet a WRITE paraméterei között, nem kell értékül adni egy szimbólumnak.

 

 

  1. 9.F$LOCATE (részstring, string) 

 

Megállapítja, hogy a részstring hol helyezkedik el a stringben. A számozás 0-val kezdődik. Ha a részstring nincs a stringben, a függvényérték a string hossza lesz.

 

Például

 

$ CIM_ELEJE =F$LOCATE("Budapest", RECORD)

$ RECORD[CIM_ELEJE,8]  := "Fehérvár"

A két parancs a RECORD szimbólum értékében a Budapest részstringet Fehérvár-ra módosítja.

 

 

  1. 10.F$PARSE(filespecifikáció [,default-spec.][,kapcsolt-spec.] [,mező] [,elemzés-típus]) 

 

Meghívja a $PARSE RMS rutint egy filespecifikáció elemzésére és a kiterjesztett filespecifikáció vagy a filespecifikáció meghatározott mezője lesz a függvény értéke.

A függvény a default-spec. stringjéből kiegészíti a filespecifikációt a hiányzó mezőkkel; az itt sem szereplőket pedig a kapcsolt-spec.-ből veszi – ez a kiterjesztett specifikáció.

A mező NODE, DEVICE, DIRECTORY, NAME, TYPE vagy VERSION értékű, az elemzés típus NO_CONCEAL vagy SYNTAX_ONLY lehet.

Ha a kapott filespecifikációban szereplő eszköz vagy directory nem létezik, vagy más hiba történik az elemzés során, úgy a függvényérték az üres string, ha csak a SYNTAX_ONLY paraméter nem szerepel. A NO_CONCEAL hatására a "CONCEALED" attribútumú logikai név helyett is annak fizikai megfelelője jelenik meg a függvényértékben.

A dokumentáció javasolja, hogy a filespecifikáció részeinek elérése illetve megváltoztatása csak és kizárólag az F$PARSE() függvényen keresztül történjen; ne írjon mindenki saját specifikáció-elemzőt az F$ELEMENT() segítségével.

 

Például

 

$ READ SYS$COMMAND /PROMPT="Kérem a filespecifikációt"

$ FILESPEC = F$PARSE(FILESPEC,"MUNKA:.DAT;0")

 

A fenti példában a FILESPEC értéke "default" mezőkkel egészül ki: Ha nem szerepel eszköznév az inputban, akkor az a MUNKA lesz; ha a filetípus hiányzik, akkor DAT kerül a helyére, a verziót pedig 0-val pótolja az F$PARSE.

 

$ IF F$PARSE(F$DIRECTORY()) .NES. "" THEN    -

     SET PROMPT = 'F$PARSE(F$DIRECTORY(),,,"DIRECTORY")'

 

A processz promptja a default directory neve lesz, ha a directory létezik.

 

 

  1. 11.F$PRIVILEGE("privilégium [,privilégium...]") 

 

Értéke "TRUE" vagy "FALSE", aszerint, hogy az aktuális processz rendelkezik-e az argumentumként megadott privilégiumok mindegyikével. (A privilégiumokat lásd a 4.3. fejezetben).

 

Például

 

$ IF F$PRIVILEGE("OPER") THEN -

_$      REPLY /ALL "Lehet dolgozni"

 

A REPLY parancsot csak OPER privilégium birtokában lehet végrehajtani.

 

  1. 12.F$SEARCH (filespecifikáció [,stream-id]) 

 

Meghívja a $SEARCH RMS rutint hogy megkeresse a filet és visszaadja a teljes filespecifikációt vagy a nulla stringet, ha nem találja.

A filespecifikációban bármely wildcard jel szerepelhet. A függvény első hívásakor az első olyan filespecifikáció lesz a függvényérték, amely illeszkedik az első argumentumhoz. A második argumentumra (stream-id) akkor van szükség, ha egyidőben több keresést is folytatunk, és nem akarjuk, hogy az egyik keresés ott folytassa, ahol a másik abbahagyta. (Külön mutatóval rendelkezzen mindegyik.)

 

Például

 

$ MODOSIT:

$       PROGRAM = F$SEARCH("RAJZ*.FOR")

$       IF PROGRAM .EQS. "" THEN EXIT

$       EDIT /SUM 'PROGRAM' /UPDATE=MODFILE.UPD

$       GOTO MODOSIT

 

Ez a parancs eljárás az összes olyan FORTRAN programot módosítja, amelynek neve RAJZ-zal kezdődik. A ciklus addig folytatódik, amíg van megfelelő file.

 

 

  1. 13.F$SETPRV ("privilégium [,privilégium...]") 

 

Meghívja a $SETPRV rendszer rutint, hogy beállítsa vagy letiltsa a megadott privilégiumo(ka)t. A függvényérték a beállítás előtti állapotot mutatja az argumentumban levő privilégium(ok)ra. (A privilégium tiltását/hiányát a NOprivilégium kifejezés jelenti).

 

Például

 

$ NEED_PRIV = "WORLD,LOG_IO,PHY_IO"

$ SAV_PRIV = F$SETPRV(NEED_PRIV)

$ IF .NOT. F$PRIVILEGE(NEED_PRIV)

$ THEN

$    WRITE SYS$OUTPUT "Nincs elegendő privilégium"

$    GOTO VEGE

$ ENDIF

  - - -

$ VEGE:

$ SAV_PRIV = F$SETPRV(SAV_PRIV)

 

 

A fenti parancssorok beállítják a WORLD, LOG_IO és PHY_IO privilégiumokat, ha van joga ehhez a processznek, különben hibaüzenettel befejeződik az eljárás. Ugyanakkor a SAV_PRIV szimbólum megőrzi a privilégiumok korábbi beállítását a processzben. Az utolsó parancs visszaállítja az eredeti állapotot. (Ez a korrekt eljárás, ha egy parancsfile privilégiumokat módosít.)

 

 

  1. 14.F$TRNLNM (logikai-név [,tábla] [,index] [,mód] [,típus][,attribútum]) 

 

Ez a kiejthetetlen nevű függvény a következő rövidítést rejti: TRNLNM = TRaNslate Logical NaMe. Lefordítja az első argumentumban megadott logikai nevet és visszaadja az ekvivalencia-stringjét vagy a logikai név kívánt attribútumait. A második paraméterként megadott logikai név táblában keresi a logikai nevet. A táblának a LNM$SYSTEM_DIRECTORY vagy LNM$PROCESS_DIRECTORY valamelyikében szerepelnie kell. A tábla default értéke LNM$DCL_LOGICAL. Az indexet akkor kell használni, ha egy logikai névnek nem az első ekvivalencia-stringjét kérjük. A mód a logikai név elérési módját jelenti: USER, SUPERVISOR, EXECUTIVE vagy KERNEL lehet. A típus a táblán belüli keresés módját (CASE_BLIND, CASE_SENSITIVE), az attribútum pedig a függvényértéket határozza meg: Ha ez az argumentum hiányzik, akkor az ekvivalencia-string lesz a függvényérték, ha pedig megadjuk, akkor a logikai név valamely tulajdonsága lesz az (például ACCESS_MODE, CONCEALED, LENGTH, TABLE_NAME, VALUE).

Ha a logikai név nem létezik, a függvényérték az üres string ("") lesz.

 

Például

 

$ WRITE SYS$OUTPUT F$TRNLNM("SYS$LOGIN")

WORK:[USER.FODOR]

 

A parancs kiírja a bejelentkezéskor default lemezt és directoryt.

 

$ IF F$TRNLNM("MUNKA") .EQS. "" THEN    -

        DEFINE MUNKA SYS$DISK

 

Ez a parancs definiálja a MUNKA logikai nevet, ha az még nem létezik.

 

 

  1. 15.F$VERIFY ([eljárás-érték] [,image-érték]) 

 

A függvényérték jelzi, hogy az eljárás verifikálás bekapcsolt vagy kikapcsolt állapotban van-e. A verifikálás az eljárásnál azt jelenti, hogy a végrehajtott DCL parancsok megjelennek az output eszközön (a terminálon vagy a naplófileban) - ez lehetővé teszi a parancseljárások nyomkövetését, és a könnyebb hibakeresést. (Hasznos kiegészítő lehet a SET PREFIX parancs is.) Az image verifikálás esetén a parancseljárásban lévő adatsorok jelennek meg az output eszközön. Mindkét esetben a 0 a kikapcsolt az 1 a bekapcsolt állapotot jelzi.

Az eljárás-érték és image-érték 0 vagy 1 értéke jelzi, hogy a verifikálást ki kell kapcsolni vagy be kell kapcsolni, a függvényérték pedig a végrehajtás előtti állapotot jelzi – így azt meg lehet őrizni a későbbi visszaállításhoz.

 

Például

 

$ VERIFY = F$VERIFY(0)

   .

   .

   .

$ IF VERIFY .EQ. 1 THEN SET VERIFY

Az eljárás elején kikapcsoljuk a verifikálást, majd a végén a SET VERIFY paranccsal kapcsoljuk vissza őket.

Amennyiben egy parancsfile olvasására nincs jogunk, csak a futtatásra, (E jog R nélkül) akkor a verifikálás hatástalan.

 

 

    1. 10.3.Programozás DCL-ben: a parancsfileok 

 

A gyakran használt és/vagy felügyelet nélkül végrehajtandó DCL parancssorozat esetén lehetőségünk van a parancsokat szövegfileban (.COM kiterjesztés a default) rögzíteni és „program-szerűen futtatva” végrehajtani: később csak a filera kell hivatkozni a parancssorozat aktivizálásához.  A parancsfile végrehajtója a DCL command processor, amely sorra megpróbálja értelmezni a parancsfile sorait, majd azokat – esetleg a vezérlő utasításoktól függő sorrendben – azonnal is végrehajtja.

A parancseljárások kezelésével az OpenVMS User's Manual kézikönyv foglalkozik.

 

Ez a fejezet leírja, hogy hogyan kell parancseljárásokat írni és működtetni. Például ha minden bejelentkezéskor futtatni akarunk egy ELEMZO nevű programot, továbbá meg akarjuk tudni, hogy kik vannak éppen bejelentkezve a rendszerbe, és látni szeretnénk az előző nap készült filejaink jegyzékét, akkor létrehozhatunk egy INDITAS.COM nevű filet az alábbi tartalommal:

 

$ RUN ELEMZO

$ SHOW USERS

$ DIRECTORY /SINCE=YESTERDAY /DATE /SIZE [...]

 

Ezután elegendő a

 

$ @INDITAS

 

parancsot kiadni a fentiek végrehajtásához.

 

 

      1. 10.3.1. A parancseljárások formája és végrehajtása 

 

A parancseljárások a magas szintű nyelveken írt programokhoz hasonlóak: szervezhetünk ciklust, szubrutint, kezelhetünk fileokat, van terminál I/O, hibakezelés, a DCL saját függvényei is használhatók, stb. Azaz a DCL is tekinthető magas szintű nyelvnek, és a parancseljárások "DCL-ben írt" programoknak.

 

Az eljárásokban a DCL parancsokat ugyanolyan formában kell írni, mintha interaktív módon adnánk ki őket a terminálon. A DCL-nek szóló parancsokat $ jellel kell kezdeni. Ha a parancs olyan programot indít el, amely inputot vár a terminálról, akkor az input rekordo(ka)t a parancsfile következő sora(i)ba kell beírni; Az inputban nem kezdődhet dollár jellel a sor, mert az már ismét a DCL-nek szóló parancsot jelzi. Ha mégis $ jellel kezdődő inputra van szükségünk, akkor az adatokat a DECK és EOD parancsok közé kell zárni.

Ha a parancs nem egysoros, akkor a folytatósort kötőjellel (-) kell jelezni (ezzel kell zárni a be nem fejezett sor(oka)t), és a folytatás sort nem szabad $ jellel kezdeni).

Az eljárásban bárhol elhelyezhetünk megjegyzést, a könnyebb olvashatóság és dokumentálás céljából. A megjegyzést felkiáltójellel (!) kell kezdeni, függetlenül attól, hogy egy parancs után áll vagy a sor elején. A $ ekkor sem hagyható el. Ha a felkiáltójelet adatként akarjuk használni, akkor idézőjelek közé kell zárni.

 

A ciklusszervezéshez, szubrutinhíváshoz vagy csak a jobb olvashatóság kedvéért használhatunk címkéket. A címkének a dollárjel utáni első nem üres (üres karakternek számít a szóköz vagy a tabulátor) elemnek kell lennie, és kettősponttal (:) kell végződnie.

 

A parancsok és módosítóik rövidítése itt is megengedett, mégsem ajánlatos élni a lehetőséggel. Az olvashatóságot nagyon rontja a rövidítés, és az is előfordulhat, hogy a későbbi DCL verziókban valamely rövidítés elveszti egyediségét.

 

A parancseljárásokban bármely DCL parancs kiadható, így az újabb parancsfilet aktivizáló @ parancs is.

 

A DCL nyelvben a változók szerepét a szimbólumok és bizonyos szempontból a logikai nevek játsszák. A kifejezésekben ezeken kívül még szerepelhetnek a lexikális függvények és konstansok. (Leírásukat lásd a 5.2., 5.3. és 10.2. fejezetben.)

 

 

 Az elkészült parancsfilet háromféle módon indíthatjuk el.

 

1. Ha a

 

$ @parancsfile-specifikáció

 

parancsot egy interaktív processzben a terminálon kiadjuk, akkor a parancsfile befejeződéséig a terminál foglalt lesz; ez az interaktív végrehajtás.

 

2. Ha az eljárás végrehajtása nem túl sürgős, közben szeretnénk mást tenni a processzben, vagy esetleg fileba akarjuk íratni az egyébként terminálra kerülő outputot (nem minden parancs rendelkezik /OUTPUT vagy /LOG módosítóval), akkor célszerű a SUBMIT paranccsal kötegelt (batch) végrehajtást kérni:

 

$ SUBMIT parancsfile-specifikáció

 

A parancs a megadott filet elhelyezi egy batch várakozási sorban, és amikor a job ott sorra kerül, akkor végrehajtódik. (A részleteket lásd a 11. fejezetben.)

 

$ SUBMIT PRM

Job PRM (queue SYS$BATCH, entry 51, started on SYS$BATCH))

 

3. Egy parancseljárást végrehajthatunk a DECnet hálózat egy másik csomópontján a TYPE DCL parancsot felhasználva. A

 

$ TYPE csomópont-név::"TASK = parancsfile"

 

formájú parancs a default DECnet felhasználó directoryjában levő parancsfilet hajtja végre. Ha más felhasználó (user) parancsfileját akarjuk végrehajtani, akkor a

 

$ TYPE csomópont"felhasználó jelszó"::"TASK = parancsfile"

 

formát kell használni, ahol a felhasználó a távoli csomópont (remote node) UAF-jában szerepel, a parancsfile pedig annak SYS$LOGIN directoryjában van. Ha el akarjuk kerülni, hogy a jelszavunk ilyen módon megjelenjen a képernyőn, akkor proxy accountot kell használni. A proxy adatbázis kezelése a rendszergazda (system manager) feladata.

 

Például legyen a PAPA felhasználó jelszava TERMINAL a WOMBAT csomóponton és az alábbi SHOWUSER.COM parancsfile a felhasználó SYS$LOGIN directoryjában.

 

$ IF F$MODE() .EQS. "NETWORK" THEN    -

        DEFINE /USER SYS$OUTPUT SYS$NET

$ SHOW USERS /FULL

 

Ekkor bármely más, a WOMBAT-tal DECnet kapcsolatban levő gépről megnézhetjük a WOMBAT-on bejelentkezett felhasználókat a

 

$ TYPE WOMBAT"PAPA TERMINAL"::"TASK=SHOWUSER"

 

paranccsal.

 

 

Mivel a parancsfileok szerkezetét általában nem befolyásolja a végrehajtási mód, ezért lehetséges, egyszer interaktívan és egy más alkalommal kötegelt módon vagy esetleg hálózaton keresztül hajtsuk végre ugyanazon parancseljárást. (Az F$MODE() lexikális függvény segítségével elkülöníthetjük az eltérő részeket.)

 

Ha a parancseljárást tesztelni akarjuk, akkor célszerű az éppen végrehajtott parancsokat a képernyőre íratni. A SET VERIFY parancs (vagy az F$VERIFY lexikális függvény) ezt lehetővé teszi. Hatása mindaddig érvényes (az adott parancseljárás szintjén túl is), amíg a SET NOVERIFY parancsot ki nem adjuk, vagy ki nem lépünk a rendszerből. Ugyancsak jó szolgálatot tehetnek a tesztelésben a SET ON és SET NOON parancsok, amelyek szabályozzák, hogy hiba esetén folytatódjon-e az eljárás végrehajtása vagy sem.

 

 

      1. 10.3.2.I/O egyszerűen: paraméterek, adatok a parancsfileban, szimbólumok és logikai nevek 

 

A parancseljárások többféle módon kommunikálhatnak a rendszerrel és az őket futtató környezettel:

Az első három módszerrel ez az alfejezet foglalkozik, a másik kettővel a következők.

 

 

1. A parancseljárás elindításakor maximum nyolc paramétert adhatunk át az eljárásnak. Ha interaktív módon indítjuk, akkor a parancsfile specifikációja után kell felsorolni a paramétereket, ha batch jobként, akkor a SUBMIT DCL parancs /PARAMETERS módosítóját kell használnunk:

 

$ @filespecifikáció p1 p2 ... p8

 

A paramétereket szóközzel kell elválasztani, az üres paramétert ""-lel jelezni. A SUBMIT formája:

 

$ SUBMIT /PARAMETERS=(p1, p2, ... ,p8) filespecifikáció

 

A távoli (remote) parancseljárás végrehajtásakor a parancseljárás neve után adhatunk meg - szóközzel elválasztott - paramétereket:

 

$ TYPE csomópont-név::"TASK = parancsfile p1 p2 ... p8"

 

 

A parancseljáráson belül a paraméterekre a P1, P2, ... , P8 szimbólumokkal hivatkozhatunk. Ezek a szimbólumok definíció nélkül is mindig léteznek a parancsfile végrehajtása alatt. (Ha egy paraméter nem szerepel a meghíváskor, a megfelelő Pn értéke az üres string lesz.)

A paraméter értéke integer vagy string lehet. Ha integer paramétert adunk meg, az is stringgé konvertálódik, de - mint minden numerikus stringet - használhatjuk numerikus kifejezésekben is. A string paraméteren a DCL automatikusan elvégzi a kisbetűk nagybetűkké konvertálását, a szóközök és tabulátorok tömörítését, kivéve, ha idézőjelek közé tesszük a karaktersort. Mivel interaktív végrehajtáskor a paramétereket szóközök választják el egymástól, ezért a szóközt, tabulátort tartalmazó paramétert feltétlen idézőjelek közé kell zárni.

 

Legyen a PARAM.COM tartalma:

 

$ SHOW SYMBOL P1

$ SHOW SYMBOL P2

$ SHOW SYMBOL P3

$ SHOW SYMBOL P4

$ SHOW SYMBOL P5

$ SHOW SYMBOL P6

$ SHOW SYMBOL P7

$ SHOW SYMBOL P8

 

Ekkor a különböző paraméterekkel való végrehajtás az alábbi outputokat eredményezi:

 

$ @PARAM Ez nem egy paraméter!

  P1 = "EZ"

  P2 = "NEM"

  P3 = "EGY"

  P4 = "PARAMÉTER"

  P5 = ""

  P6 = ""

  P7 = ""

  P8 = ""

$

$ @PARAM "Ez egy paraméter!"

  P1 = "Ez egy paraméter!"

  P2 = ""

  P3 = ""

  P4 = ""

  P5 = ""

  P6 = ""

  P7 = ""

  P8 = ""

 

Az első esetben a szóközök miatt P1-P4-be kerül a négy szó, csupa nagybetűssé konvertálva, és a felkiáltójel megjegyzésnek számít. A második indításkor az idézőjelek biztosítják, hogy egyetlen szimbólum értéke legyen az egész string.

 

A MAGNORA_MENT.COM parancsfile két paramétere a mágnesszalag-egység neve és címkéje lesz; az eljárás végrehajtása a

 

$ @MAGNORA_MENT mágnesszalag-egység szalag-címke

 

paranccsal történhet. A parancsfile felhasználja a paramétereket a DCL parancsokban:

 

$ INITIALIZE 'P1' 'P2'

$ MOUNT 'P1' 'P2'

$ COPY /LOG *.*;* 'P1'

$ DISMOUNT 'P1'

 

 

2. Input adatokat magában a parancseljárásban is elhelyezhetünk. Ekkor az inputot váró image indítását követő sor(ok)ba kell beírni az adatokat: minden sor egy rekord beolvasását teszi lehetővé és az első $-lel kezdődő sor jelzi az input végét:

 

$ RUN HAVI_FELDOLGOZAS

December

$ PRINT STATISZTIKA.LIS

 

Ebben az esetben a December a HAVI_FELDOLGOZAS program (egyetlen) terminálról kért input adata lesz.

 

Ez a módszer szűkíti a paraméterezhetőséget, mert az input sorokban nem szerepelhet szimbólum (illetve nem történik meg azok helyettesítése). Ha mégis szimbólum értékét szeretnénk átadni a parancsfileban futtatott programnak, akkor létre kell hozni egy második szintű parancsfilet, létrehozásakor elvégezni a szükséges helyettesítéseket, és azután elindítani az új parancseljárást.

 

Például ha a FELIRO program két input adatot vár, amit paraméterként szeretnénk megadni, akkor az alábbi FUTTATO.COM segítségével lehet megoldani a paraméterek átadását:

 

$ OPEN /WRITE MASOD MASOD.COM

$ WRITE MASOD "$ RUN FELIRO"

$ WRITE MASOD "''P1'"

$ WRITE MASOD "''P2'"

$ CLOSE MASOD

$ @MASOD

$ DELETE MASOD.COM;0

 

Ezután a

 

$ @FUTTATO param1 param2

 

parancssorral futtathatjuk a programunkat.

 

 

3. A globális szimbólumok - definíció szerint - bármely parancs szinten ismertek. Ezért a globális szimbólumok használhatók paraméter átadásra minden olyan parancsfileban, amelyet az illető szimbólum definiálása után hajtunk végre. Esetleg az is hasznos lehet, hogy a SHOW SYMBOL parancs végrehajtásakor az integer szimbólum decimális, hexadecimális és oktális értékét írja ki a DCL, s így az esetleg szükséges kézi átváltások elkerülhetők. Például ha a SZAMOL.COM az EREDMENY globális szimbólumban adja át az output paraméterét, akkor az a  parancsfile lefutása után lekérdezhető:

 

$ @SZAMOL

$ SHOW SYMBOL EREDMENY

  Decimal = 60     Hex = 0000003C       Octal=00000000074

 

A logikai nevekkel hasonló a helyzet, hiszen törlésükig minden parancs szinten elérhetők. A logikai nevek használata szűkebb körű, mert egy filespecifikációt vagy annak egy részét helyettesíthetik, de tulajdonképpen bármilyen karaktersorozat lehet a logikai név ekvivalencia-stringje.

 

A logikai nevekkel történő filespecifikáció megadást használhatjuk a programjaink futtatásakor is: A programban logikai névvel hivatkozhatunk a file(ok)ra és csak a futtatás előtt történik meg a hozzárendelés az aktuális filehoz.

Például ha a KONVERT program egy input fileból egy outputot hoz létre, és a programban INFILE és OUTFILE néven szerepelnek ezek a fileok, akkor érdemes a KONVERT.COM-ban megírni a "futtató környezetet":

 

$ IF P1 .EQS. "" THEN        -

        READ/PROMPT="Kérem az input filet!"  SYS$COMMAND P1

$ IF P2 .EQS. "" THEN        -

        READ/PROMPT="Kérem az output filet!" SYS$COMMAND P2

$ DEFINE INFILE 'P1'

$ DEFINE OUTFILE 'P2'

$ RUN KONVERT

 

Ezután

 

$ @KONVERT input-file output-file

 

vagy

 

$ @KONVERT

 

paranccsal futtathatjuk a programot; utóbbi esetben a parancsfile bekéri a megfelelő filespecifikációkat.

 

 

      1. 10.3.3.Terminál I/O DCL parancsokkal 

 

Az 5.2.3. fejezetben szerepeltek a processz permanens fileok, amelyek nyitva maradnak a processz teljes élete alatt. Négy processz permanens file a terminálhoz van rendelve interaktív bejelentkezéskor: SYS$INPUT, SYS$OUTPUT, SYS$COMMAND, SYS$ERROR Ha elindítunk egy parancseljárást, a hozzárendelés a következő módon változik meg a végrehajtás idejére:

 

Interaktív végrehajtáskor:

Kötegelt végrehajtáskor:

Ezeket a default hozzárendeléseket a DEFINE vagy az ASSIGN paranccsal megváltoztathatjuk. Ha például az ADATOK.DAT fileból kívánjuk venni a parancseljárás inputját, akkor

 

$ ! A parancsfile előkészítő része

$ DEFINE SYS$INPUT ADATOK.DAT

$ RUN FELDOLGOZO

 

Ha később ismét a default hozzárendelésre van szükségünk, akkor a DEASSIGN  paranccsal törölni kell az új értéket (A processz permanens file nem szűnik meg a DEASSIGN hatására, hanem visszakapja az eredeti értékét.) Ezt elkerülhetjük, ha egyetlen image futásához szükséges az átirányítás: ekkor a DEFINE parancsot a /USER_MODE módosítóval kell használni. Így a DEFINE-t követő parancs után visszaáll a default hozzárendelés - kivéve a built-in parancsokat, amelyek nem törlik a user módú definíciót.

 

Ha a képernyőre a parancsfileban elhelyezett, többsoros, formázott szöveget akarunk íratni, akkor a legkényelmesebb megoldás a TYPE SYS$INPUT használata:

 

$ TYPE SYS$INPUT

  Az alábbi lehetőségek közül kell választani:

 

 1. Havi statisztika készítés

 2. Havi statisztika nyomtatás

 3. Mentés

 4. Kilépés

$

 

A TYPE után megadott filespecifikáció ekkor a SYS$INPUT. A SYS$INPUT a parancsfile végrehajtásakor a parancsfileba mutat a TYPE-ot követő sorokra és a következő $ jelenti a file végét. Tehát a TYPE és a $ közötti sorok megjelennek a SYS$OUTPUT-on (interaktív végrehajtáskor a képernyőn), ugyanolyan formában, ahogy a parancsfileba beírtuk őket.

 

 

A SYS$OUTPUT-ot is filehoz rendelhetjük, ha a

 

$ @filespecifikáció/OUTPUT=outfile

 

formát használjuk indításkor. (Ezt a módosítót csak közvetlenül a parancsfile után, szóköz nélkül adhatjuk meg, különben a DCL paraméterként fogja értelmezni.) Ez a lehetőség sok DCL parancs esetén is megvan (/LOG vagy /OUTPUT módosító). Természetesen itt is használható a DEFINE is:

 

$ DEFINE SYS$OUTPUT NAPLO.LOG

 

Ha a SYS$OUTPUT és a SYS$ERROR nem azonos eszközre mutat, akkor a VMS hibaüzenetek mindkét eszközön megjelennek.

 

 

Az INQUIRE parancs a SYS$COMMAND-ról kér be egy értéket, és azt egy lokális vagy globális szimbólumhoz rendeli. Formája:

 

INQUIRE szimbólumnév [prompt-string]

 

Ez a parancs azonban elavultnak tekinthető, ne használjuk. Inkább a sokkal jobban paraméterezhető

 

READ/PROMTP="promt-string" SYS$COMMAND szimbólumnév

 

parancsot alkalmazzuk. (Leírása a következő alfejezetben található.)

 

 

      1. 10.3.4. Filekezelés 

 

A DCL parancsok segítségével csaknem teljes körben tudjuk használni az RMS szolgáltatásait, azaz tetszőleges szervezettségű file rekordjaival végezhetünk szinte minden RMS-ben megengedett műveletet. Nem ajánlatos azonban egy bonyolult, sok rekordot elérő "programot" DCL-ben megírni, mert a DCL értelmező általában sokkal lassúbb, mint a magas szintű nyelveken vagy assemblyben írt programok. Az itt felsorolt parancsokkal lehetőleg szorítkozzunk a futtatási paraméterek beolvasására, módosítására, illetve naplófileok írására a parancseljárásokban.

 

 

1. OPEN

 

Írásra, olvasásra vagy mindkettőre megnyit egy már létező filet vagy létrehozza, és minden esetben hozzárendel egy logikai nevet. A további fileműveletekben erre a logikai névre kell hivatkozni.

Formája:

 

$ OPEN logikai-név[:] filespecifikáció

 

A filemegnyitás processz-permanens, azaz mindaddig nyitva marad a file, amíg CLOSE paranccsal le nem zárjuk, vagy ki nem jelentkezünk. Az OPEN az RMS filekezelést használja, így bármilyen szervezettségű (szekvenciális, relatív, indexelt) filet megnyithatunk.

 

A parancs módosítói:

 

Egy létező filet nyit meg írásra; a rekord pointert a file végére állítja. A /WRITE módosítóval együtt nem használható.

 

Jelzi, hogy megnyitási hiba esetén hol folytatódjon a végrehajtás.

 

Olvasásra nyitja meg a filet. Ha /WRITE nélkül használjuk, akkor a filenak léteznie kell.

Ez a default megnyitás (/WRITE nélkül).

 

Meghatározza a más felhasználók hozzáférési jogát. Az opció READ vagy WRITE lehet (ez utóbbi olvasást és írást egyaránt megenged).

A /SHARE opció nélkül SHARE=WRITE hozzáférést jelent. Ha a /SHARE-t elhagyjuk, más felhasználó nem férhet hozzá a filehoz annak lezárása előtt.

 

Írásra nyit meg egy filet.

Ha a parancsban /READ módosító nem szerepel, akkor új file jön létre,  a létezőknél eggyel nagyobb verzióval. A keletkező új file szekvenciális lesz.

 

Például

 

$ OPEN /WRITE PARANCS FORDIT.COM

 

FORDIT.COM néven létrehoz egy filet, a létező(k)nél eggyel nagyobb verzióval.

$ OPEN /APPEND /ERROR=LETREHOZ HIBA HIBANAPLO.LIS

$ FOLYTAT:

$ WRITE HIBA "Ez egy hibaüzenet"

$ CLOSE HIBA

        .

        .

        .

 

$ LETREHOZ:

$ OPEN /WRITE HIBA HIBANAPLO.LIS

$ GOTO FOLYTAT

 

A HIBANAPLO.LIS-t folytatásra nyitjuk meg, ha már létezik. A hibakezelés segítségével létre is hozzuk, ha még nincs ilyen file.

 

 

2. CLOSE

 

Lezár egy OPEN paranccsal megnyitott filet, és törli az OPEN paranccsal a filehoz rendelt logikai nevet.

Formája:

 

$ CLOSE logikai-név[:]

 

A logikai név az OPEN-ben használt név.

 

 

3. READ

 

Egy rekordot olvas egy fileból, vagy módosítja a tartalmát, vagy törli a fileból.

Formája:

 

$ READ logikai-név[:] szimbólumnév

 

A logikai név azonos az OPEN-ben megadottal, a szimbólum a rekord tartalmát kapja értékül. Ha a szimbólumot korábban nem definiáltuk, akkor most kerül be a lokális szimbólumtáblába. A READ parancs mindhárom szervezettségű file rekordjait elérheti; a rekordméret maximum 2048 byte lehet.

 

A parancs módosítói:

 

A kiolvasott rekordot olvasás után törli az indexelt fileból.

 

Erre a címkére adódik a vezérlés, ha szekvenciális olvasáskor a file végére érünk.

 

Erre a címkére adódik a vezérlés, ha az olvasás hibával végződik. Ha ilyen módosító nincs a parancsban, akkor az aktuális ON feltétel érvényesül.

 

Jelzi, hogy indexelt fileból hányadik kulcs szerint kell olvasni. (0 jelenti az elsődleges kulcsot.)

Deafult: A megelőző olvasásban szereplő /INDEX értéke, vagy ha ilyen még nem volt, akkor /INDEX=0        

 

A stringgel megegyező kulcsú rekordot kell beolvasni az indexelt fileból. Ha /KEY-t nem adunk meg, akkor szekvenciális olvasás történik.

 

Jelzi, hogy a beolvasandó rekord kulcsa milyen módon illeszkedjen a /KEY-vel megadott stringhez.

Az opció EQ, GE, GT lehet, azaz a kulcsmező értéke egyenlő, nagyobb vagy egyenlő illetve nagyobb, mint a /KEY-nél megadott string.

Default: /MATCH=EQ      

 

Jelzi, hogy a beolvasott rekordot nem kell zárolni.

Default esetben a rekord a következő I/O műveletig zárolva lesz.

 

Ha terminálról olvassuk az adatot, a string promptként megjelenik az utasítás végrehajtásakor.

Default: /PROMPT=Data:

 

Ha terminálról olvasunk, akkor maximum a megadott számú másodperc telhet el két karakter leütése között, különben az olvasás sikertelen. (0<n<256)

Ha a parancsban az /ERROR=címke módosító is szerepel, akkor időtúllépés esetén a megadott címkénél folytatódik a végrehajtás.

Default: /NOTIME_OUT    

 

 

Például

 

$ OPEN FILE ADAT.DAT

$ OLVASO_CIKLUS:

$ READ/END_OF_FILE=VEGE FILE REKORD

        .

        .

        .

 

$ GOTO OLVASO_CIKLUS

$ VEGE:

$ CLOSE FILE

 

Az ADAT.DAT fileból mindaddig olvasunk, amíg a file végére nem érünk; akkor lezárjuk a filet.

 

$ READ /PROMPT="Vigyázz, timeout!"/TIME_OUT=60/ERROR=HIBA –

  SYS$COMMAND INPUT_ADAT

        .

        .

        .

 

$ HIBA:

$ WRITE SYS$OUTPUT "Nem nyert!"

 

A fenti eljárás a terminálról olvas az INPUT_ADAT szimbólumba, de csak akkor, ha két karakter leütése vagy a sor zárása között egy percnél kevesebb telik el.

 

 

4. WRITE

 

A megadott adato(ka)t a logikai névvel megadott (nyitott) fileba írja.

Formája:

 

$ WRITE logikai-név kifejezés [,...]

 

A logikai név egy OPEN utasítással a filehoz rendelt név vagy egy processz-permanens file neve lehet. A filet /WRITE vagy /APPEND módosítóval kell megnyitni.

Az utasításban szereplő kifejezés(ek) értékéből egyetlen rekord készül. Ha több kifejezés van, értéküket az interpreter összefűzi. A rekord maximális mérete 1024 byte lehet, egy szimbólum értéke ezen belül maximum 255 byte hosszú; kivéve a /SYMBOL módosító használatát, ekkor 2048-ig nőhet a rekord és a szimbólumokra nincs korlát.

A WRITE parancs mindhárom RMS filetípusba írhat rekordot. A parancs végrehajtása után a rekord pointer az éppen felírt rekord mögé fog mutatni.

 

A parancs módosítói

 

A megadott címkén folytatódik a parancseljárás végrehajtása, ha az írás sikertelen volt. Az itt megadott eltérülés magasabb precedenciájú, mint az ON feltétel.

 

A DCL a parancsban lévő kifejezés(eke)t értelmezi és az érték(ük)et egy maximum 2048 byteos pufferben helyezi el a kiírás előtt. Minden kifejezésben csak egyetlen szimbólum állhat, ezek értékét az interpreter összefűzi és ebből képez egy rekordot.

 

Az utoljára beolvasott rekordot módosítja (update). Ezt a módosítót csak akkor lehet használni, ha egy READ utasítás lett végrehajtva a WRITE előtt.

 

 

Például

 

$ OPEN /WRITE OUTFILE TESTFILE.TXT

$ WRITE OUTFILE "Ez kerül a fileba"

$ WRITE OUTFILE "Most jön az extra rekord!"

$ WRITE /SYMBOL OUTFILE A,B,C

$ CLOSE OUTFILE

 

A TESTFILE.TXT-be írunk 3 rekordot, a 3. maximum 2048 byteos lehet.

 

$ WRITE SYS$OUTPUT "Így is lehet írni a terminálra"

 

Érdekesség, hogy bár a string tipusú szimbólum mérete nem haladhatja meg az 1024 byte-ot, (semmilyen műveletet nem lehet velük végezni) addig a következő szekvencia lefut bármekkora (32767 byte) rekordmérettel:

 

$ READ inputfile BIGLINE

$ WRITE/ SYMBOL outfile BIGLINE

 

Az ilyen túlhízott, 1024 karakternél hosszabb szimbólumokkal semmi mást nem lehet tenni, csak ezt a két műveletet végrehajtani.

 

 

      1. 10.3.5.Vezérlésátadás és megszakításkezelés 

 

A DCL tartalmaz néhány olyan parancsot, amely a programozási nyelvekhez hasonlóan lehetővé teszi a feltétlen és feltételes vezérlésátadást, a külső és belső szubrutinok használatát, és a hibák, megszakítások kezelését. Ciklusszervező utasítás nincs, de a rendelkezésre álló parancsokkal tudunk számlálós vagy feltételtől függő ciklust szervezni.

 

 

1. A feltétlen vezérlésátadó parancs:

 

$ GOTO címke

 

A megadott címkén folytatja a parancsok végrehajtását. A címkének szerepelnie kell a parancseljárásban. Esetleg többször is előfordulhat; ekkor a vezérléssel odáig érintett legutolsó, illetve, ha ilyen nincs, akkor a továbbiakban legelső előfordulásnál folytatódik az eljárás. Ez nagyjából lehetetlenné teszi a többszörös címkék ésszerű használatát – lehetőleg kerüljük őket.

 

 

2. A végrehajtás szekvenciális sorrendjét feltételesen megváltoztathatjuk az IF parancs valamely formájával, amely egy kifejezés értékétől függően végrehajt vagy kihagy egy utasítást vagy utasítások egy csoportját.

Formája:

 

$ IF kifejezés THEN [$] parancs

 

vagy

 

$ IF kifejezés

$ THEN [parancs]

$ parancs

  .

  .

  .

[$ ELSE [parancs]

$ parancs

  .

  .

  .

$]

$ ENDIF

 

A kifejezés értékére a logikai kifejezés szabályai érvényesek, azaz igaz, ha

 

Például

 

$ IF P1 .EQS. "" THEN    -

READ/PROMPT="A forrásprogram neve" SYS$COMMAND P1

$ FORTRAN 'P1'

$ IF .NOT. $STATUS THEN EXIT

$ LINK 'P1'

$ IF .NOT. $STATUS THEN EXIT

$ RUN 'P1'

 

A fenti parancsfile lefordít, szerkeszt és futtat egy – indítási paraméterként megadott vagy végrehajtás közben bekért – Fortran forrásprogramot, ha nem talál közben hibát. (Nem ellenőrizzük, hogy valóban csak a filenevet tartalmazza-e az input.) A fenti parancsfile más formában:

 

$ IF P1 .EQS. "" THEN    -

READ/PROMPT="A forrásprogram neve" SYS$COMMAND P1

$ FORTRAN 'P1'

$ IF $STATUS

$  THEN

$     LINK 'P1'

$     IF $STATUS

$       THEN RUN 'P1'

$       ELSE WRITE SYS$OUTPUT "Linker hiba"

$     ENDIF

$   ELSE WRITE SYS$OUTPUT "Fordítási hiba"

$ ENDIF

$ EXIT

 

 

3. A szubrutinokhoz használható GOSUB, CALL, SUBROUTINE, RETURN, ENDSUBROUTINE utasítások leírása az OpenVMS DCL Dictionary kézikönyvben található.

 

 

4. A parancsfile végrehajtása hiba esetén vagy CTRL/Y lenyomásakor alapértelmezés szerint megszakad, ha nem gondoskodunk ezen esetek lekezeléséről az eljáráson belül. Az ON, SET [NO]ON, SET [NO]CONTROL parancsok változtatják meg a default hibakezelést, illetve egyes parancsok – OPEN, CLOSE, READ, WRITE - módosítóikkal adhatják meg az eltérülés helyét hiba esetén.

Ha egy DCL parancs végrehajtása befejeződik, a parancsértelmező a $STATUS globális szimbólumnak adja értékül a feltételkódot.

A $STATUS és a $SEVERITY jelentését az 5.3.1. fejezet részletesen leírja, itt csak annyit említünk meg, hogy a siker kódok (Success, Information) páratlanok, azaz logikai TRUE értékűek, ezért a

 

$ IF $SEVERITY THEN GOTO SIKER

$ IF $STATUS THEN GOTO SIKER

 

formájú parancsokat is használhatjuk feltételvizsgálatra.

 

 

5. Ha a státusz értéke alapján a szöveges hibaüzenetet akarjuk látni, akkor az F$MESSAGE lexikális függvényt vagy a HELP/MESSAGE parancsot is használhatjuk:

 

$ HELP /MESSAGE [/STATUS='$STATUS']

 

Ha a /STATUS-t elhagyjuk, akkor a $STATUS legutolsó értékére vonatkozó üzenetet és a részletes magyarázatot láthatjuk a képernyőn.

 

 

6. Az ON parancs formája:

 

$ ON feltétel THEN [$] parancs

 

ahol a feltétel WARNING, ERROR, SEVERE_ERROR vagy CONTROL_Y lehet. A parancseljárásban mindig az utoljára kiadott ON feltétel van érvényben, és a megadott feltételnél súlyosabb hiba is kiváltja az eltérülést. A beállítás addig érvényes, amíg egy hiba fel nem merül, annak lekezelése után visszaáll a default akció. A feltétel csak a definiáló parancseljárás szintjén hatásos.

 

A CTRL/Y lenyomása a parancsfile végrehajtását megszakítja és a parancsértelmező a CTRL/Y szintre tér át. A CTRL/Y részletes leírását az 5.1.3. fejezet tartalmazza.

Az ON CONTROL_Y DCL parancs lehetővé teszi, hogy a parancseljárásban kezeljük le ezt az eseményt. Például:

 

$ ON CONTROL_Y THEN GOTO MEGSZAKITAS

 .

 .

 .

$MEGSZAKITAS:

$ WRITE SYS$OUTPUT "CTRL/Y MIATT VEGE"

$ CLOSE INPUT_FILE

$ CLOSE OUTPUT_FILE

 

A fenti eljárás CTRL/Y leütése esetén üzenetet ír ki, majd lezárja a megnyitott fileokat. (Enélkül a nyitott fileok a processz élete végéig nyitva maradnak: programok/utilityk általában nem férnek hozzá, és ez a parancseljárás a legközelebbi hívásakor nem a file elejéről, hanem az otthagyott állapotból menne tovább.)

 

 

7. A CTRL/Y lekezelését megtilthatjuk vagy engedélyezhetjük a

 

$ SET NOCONTROL=Y

$ SET CONTROL=Y

 

parancsokkal, de a Digital általában nem ajánlja a CTRL/Y-nal történő megszakítás letiltását, legfeljebb egy-egy parancs végrehajtása idejére.

 

Az ON CONTROL_Y feltétel a parancsfileból való kilépésig érvényes, ha egy másik ON CONTROL_Y vagy egy SET [NO]CONTROL=Y paranccsal felül nem bíráljuk.

 

 

A

 

$ SET ON

 

parancs kiadása után bekövetkező hiba esetén az eljárás végrehajtása megszakad (ez a default); a

 

$ SET NOON

 

esetben a sikertelen parancsvégrehajtás után is folytatódik az eljárás. Szintén veszélyes lehet, ha nem csak egy-egy parancs végrehajtása idejére használjuk a SET NOON-t. Ilyenkor is van azonban lehetőség a hibák figyelésére egyes parancsok után, például az alábbi módon:

 

$ SET NOON

$ RUN PROGRAM1

$ IF .NOT. $STATUS THEN EXIT

 

 

      1. 10.3.6.A LOGIN.COM 

 

A processz létrejöttekor a rendszer automatikusan végrehajt bizonyos parancseljárást, amikor a felhasználó bejelentkezik. Ez a bejelentkezési parancseljárás:

 

A felhasználó személyes parancsfilejának végrehajtása letiltható a bejelentkezéskor (amennyiben az UAF szerint erre joga van a felhasználónak):

 

Username: FODOR/NOCOMMAND

Password: <PASSWORD>

 

A rendszer közös parancseljárására a SYS$SYLOGIN logikai név mutat, és a SYS$MANAGER:SYLOGIN.COM a szokásos helye és neve. Ebben vannak a rendszer minden felhasználójára érvényes beállítások. Ennek végrehajtása után fut le a személyes parancsfile, ha létezik. A személyes parancsfile általában a bejelentkezési default directoryban (erre mutat a SYS$LOGIN) levő LOGIN.COM. A rendszergazdának lehetősége van az UAF-ban mást beállítani, s így létrehozhat 3, vagy akár több szintű, bejelentkezéskor automatikusan lefutó parancsfile-rendszert. (Felső szinten a SYLOGIN.COM, középső szinten valamely csoportra érvényes parancsfile, ami végül meghívhatja a felhasználó személyes parancsfileját.) Mivel az eljárások az itt felsorolt sorrendben hajtódnak végre, ezért a felhasználó felülírhat bizonyos közös definíciókat (például szimbólumokat, kulcsdefiníciókat vagy logikai neveket).

 

A LOGIN.COM-ba célszerű elhelyezni:

 

Például:

 

$ IF F$MODE() .NES. "INTERACTIVE" THEN GOTO BATCH

$

$! Magyar rövidítések

$ IDO == "SHOW TIME"

$ HAZA == "SET DEFAULT SYS$LOGIN"

$ NAPI == "DIRECTORY /SIZE /DATE /SINCE=TODAY"

$

$! Saját rövidítések

$ DIR*ECTORY == "DIRECTORY /SIZE /DATE"

$ MD == "CREATE /DIRECTORY"

$ ED*IT == "EDIT/EDT"    

$

$! Kulcsdefiníció

$ DEFINE /KEY /NOECHO /TERMINATE PF4 "RECALL /ALL"

$

$! A terminál beállítása

$ SET TERMINAL/INQUIRE

$ SET TERMINAL/INSERT

$

$ PURGE /KEEP=4 /LOG

$ SET NOVERIFY

$ EXIT

$

$BATCH:

$ SET VERIFY

$ EXIT

 

 

Megjegyzendő, hogy a kijelentkezéshez nincs hasonló eljárás-csoport rendelve, de akár a rendszer összes felhasználójára, akár saját használatra át lehet írni a LOGOUT parancsot is:

 

$ LO*GOUT:==@SYS$MANAGER:SYLOGOUT

 

$ LO*GOUT == @SYS$LOGIN:KIJELENTKEZES.COM

 

 

  1. 11. A várakozási sorok 

 

A várakozási sorok (queue) célja, hogy bizonyos feladatok (job) akkor is végrehajtódjanak, ha valamilyen ok miatt csak korlátozott erőforrás áll rendelkezésükre. (Output sorok esetén a nyomtató kapacitás, kötegelt (batch) soroknál pedig például a CPU teljesítmény korlátozott.). Ekkor az erőforrást igénylők nem feltétlen kapják meg azokat azonnal, hanem először sorban állnak

 

A várakozási sor menedzsment (queue management) – a várakozási sorokat a felügyelő rendszer a VMS-ben – általában a rendszer indításakor elindul; paraméterezése, a sorok definiálása általában a rendszergazda feladata. A felhasználó DCL parancsok segítségével tájékozódhat a rendelkezésre álló szolgáltatásokról, és a PRINT és SUBMIT kiadásával veheti igénybe azokat.

 

Az OpenVMS jellegzetessége, hogy a queue management az egész clusterben egységes irányítás alatt áll, és közös adatbázist használ. Ha a felügyelő processzek valamelyikét futtató cluster-tag leáll, akkor egy másik gép automatikusan átveheti annak szerepét.

Sőt, bármely sor is definiálható úgy, hogy a sorban mindaddig végrehajtódjanak a jobok, amíg egyáltalán van olyan csomópont - a clusteren belül -, amely képes végrehajtani azokat. A felhasználónak nem is kell feltétlenül tájékozódnia arról, hogy a feladata hol hajtódik végre. Ha a sort kezelő gép leáll (shutdown vagy crash miatt), akkor egy előre meghatározott másik csomópont átveheti annak a szerepét.

 

 

    1. 11.1.A queue menedzsment elemei 

 

A VMS két alapvető várakozási sort ismer:

Az output sor típusa a nyomtató fizikai kapcsolódásától függ (printer, terminál, szerver), ezt a sort definiálójának figyelembe kell vennie, illetve a sor jellemezői között megtalálható, de a felhasználó nyomtatási igényeit ez nem befolyásolja.

 

$ SHOW QUEUE/SUMMARY

 

Batch queue LASSU_BATCH, available, on PTEAX1::

    Job summary:  1 executing,  5 holding

Server queue LP2, available, on NODE2::, mounted form DEFAULT

    Job summary:  1 executing

Generic server queue MASODIK_EMELET

    Job summary:  1 timed release

Batch queue KICSI_BATCH, idle, on AX3::

    Job summary:  queue is empty

Printer queue HP_PRINT, stopped, on AX3::LPA0, mounted

    form DEFAULT

    Job summary:  8 pending (565 blocks)

Terminal queue 3_SZ, stopped, on VAX::TTA2, mounted form DEFAULT

    Job summary:  2 pending (445 blocks)

   .

   .

   .

A rendelkezésre álló erőforrások és a megoldandó feladatok ismeretében célszerű többféle output és batch várakozási sort létrehozni.

 

Például az egy szobában vagy egy emeleten lévő azonos típusú nyomtatókat összefoghatjuk egyetlen generikus sorral. Ekkor a felhasználó ebbe a sorba küldi a nyomtatandó fileját, és az automatikusan a leghamarabb felszabaduló nyomtatón lesz kinyomtatva.

Mind az output, mind a batch sorok esetén használhatjuk a generikus és végrehajtódó sorokat.

 

 

A rendszerben definiálhatunk olyan objektumokat, amelyeket később hozzárendelhetünk egy vagy több sorhoz. Ekkor az objektum hordozza azokat a jellemzőket, amelyeket különben minden egyes sor esetén külön kellene leírnunk.

 

A karakterisztikával (characteristics) a queue valamely tulajdonságát határozhatjuk meg: Például a tinta színét, a papír típusát egy output sornál illetve a felhasználható CPU idő maximális mennyiségét egy batch sor esetén. Egy job majd akkor hajtódik végre, amikor az őt tartalmazó sor a megfelelő karakterisztikával rendelkezik. A karakterisztika definiálása a

 

$ DEFINE /CHARACTERISTIC

 

paranccsal történik, s aztán hozzárendelhető egyes sorokhoz – ez legtöbbször a rendszergazda feladata. A rendelkezésre álló karakterisztikákat lekérdezhetjük:

 

$ SHOW QUEUE/CHARACTERISTICS

Characteristic name                  Number

-------------------                  ------

KEKTINTA                                  6

PIROSTINTA                               25

CPUMAX                                    2

 

Ezenkívül a  

 

$ SHOW QUEUE /FULL

 

megmutatja, hogy a melyik sorhoz milyen karakterisztika tartozik A PRINT és SUBMIT kiadásakor választhatjuk ki a nekünk megfelelő karakterisztikát (lásd a következő alfejezetekben.)

<!-- a { text-decoration: none } -->

Bizonyos nyomtató vagy nyomtatási tulajdonságokat – például lap hossza, szélessége, margók mérete, a túl hosszú sorok kezelése, nyomtatót vezérlő karakterek küldése laponként/fileonként – a formátum (form) segítségével definiálhatunk. Az output sorhoz rendelt formátum (esetleg a jobhoz rendelt formátummal együtt) határozza meg a nyomtatott állomány formai jellemzőit.

A formátumok a

 

$ DEFINE /FORM

 

DCL paranccsal definiálhatók és a

 

$ SHOW QUEUE /FORM

 

$ SHOW QUEUE /FORM /FULL

 

paranccsal kérdezhetők le:

 

$ SHOW QUEUE/FORM/FULL

Form name                       Number   Description

---------                       ------   -----------

132_51_STD (stock=DEFAULT)         102   132 betű, 51 sor

    /LENGTH=51 /MARGIN=(BOTTOM=6) /STOCK=DEFAULT /TRUNCATE

    /WIDTH=132

40_66_STD (stock=DEFAULT)          103   40 betű 66 sor (címke)

    /LENGTH=66 /MARGIN=(BOTTOM=6) /STOCK=DEFAULT /WIDTH=40

DEFAULT                              0   System-defined default

    /LENGTH=66 /MARGIN=(BOTTOM=6) /STOCK=DEFAULT /TRUNCATE

    /WIDTH=132

LN01_LANDSCAPE (stock=DEFAULT)     107   landscape

    /LENGTH=65 /SETUP=(LN01_TOP_MARGIN_150) /STOCK=DEFAULT

    /WIDTH=132

LN01_PORTRAIT (stock=DEFAULT)      106   portrait

    /LENGTH=60 /SETUP=(LN01_PORTRAIT) /STOCK=DEFAULT /WIDTH=80

 

A PRINT parancs paraméterei között szerepelhet az általunk elvárt formátum. A job csak akkor hajtódik végre, ha a PRINT parancsban megadott formátum érvényes a várakozási sorban.

A nyomtatási sorhoz rendelt formátum és karakterisztika menet közbeni állítgatása legtöbbször az operátor feladata: ha kicseréli valamely nyomtatóban a papírt vagy a tintát, akkor annak megfelelően módosítja a nyomtatási sor paramétereit, s így most azok a jobok kerülnek sorra, amik a megadott formátumra vagy karakterisztikára  vártak.

 

 

A jobok egy sorba való besorolásukkor a clusteren belül egyedi azonosítót kapnak (entry number), melyre bármely job művelet során hivatkozhatunk.

 

$ PRINT LISTA.LIS

Job LISTA.LIS (queue SYS$PRINT, entry 86) started on LPA0

 

 

A sorokon belül a joboknak prioritása (priority) van; a nagyobb prioritású jobok előbb kerülnek ütemezésre – ez független a processzek prioritásától.

 

 

    1. 11.2.A nyomtatás 

A VMS-ben a nyomtatás az output sorokon keresztül, a PRINT parancs segítségével történik.

Formája:

 

$ PRINT filespecifikáció [,...]

$ PRINT filespecifikáció [+...]

 

A PRINT a felsorolt fileokat egyetlen job-ba fűzi össze, és úgy küldi el egy output várakozási sorba. A job neve - ha nem adunk meg mást - az első file neve lesz. A default filetípus a felsorolásban megelőző file típusa, vagy ha ilyen nincs, akkor a .LIS. A verzióra a létező legmagasabb a default.

A filespecifikációban a wildcard (* % - ...) karakterek megengedettek. Ha a filespecifikációban csomópont név is szerepel, akkor kötelező a /REMOTE módosító használata.

 

A parancs végrehajtásakor a rendszer üzenetet küld, amely tartalmazza a job bejegyzés-számát (entry number), a várakozási sort és a job státuszát. A bejegyzés-szám értékét a $ENTRY szimbólum is felveszi, és a processz legközelebbi PRINT vagy SUBMIT parancsáig őrzi.

 

Bizonyos módosítók megadhatók a PRINT után is - akkor az összes filera vonatkoznak; vagy egy filespecifikáció után - s akkor csak arra az egy filera érvényes (positional qualifier).

 

A leggyakrabban használt módosítók:

 

A megadott időpont után kell elkezdeni a nyomtatást. Ha a megadott idő elérkezik, akkor a job azonnal a várakozási sor elejére kerül. Az idő abszolút vagy kombinált lehet. Ez nem feltétlen jelenti azt, hogy tényleg abban az időpontban nyomtatódik ki: lehet, hogy sokkal később, de semmiképpen nem előbb.

 

A legutóbbi mentési (backup) dátum alapján választja ki az input fileokat.

Csak a /BEFORE vagy a /SINCE módosítóval együtt használható.

Default: /CREATED        

 

Az adott idő előtti dátumú fileokat választja ki az input fileok közül. Az idő abszolút vagy kombinált formájú lehet. Használható a BOOT, LOGIN, TODAY, TOMORROW, YESTERDAY kulcsszó is.

Ha a /BEFORE-t paraméter nélkül adjuk meg, akkor /BEFORE=TODAY az alapértelmezés.

 

A tulajdonosi UIC alapján választja ki a file(oka)t a megadott input specifikáció(k)ból.

Ha a /BY_OWNER-t paraméter nélkül adjuk meg, akkor a processz aktuális UIC-a lesz a default.

 

A job karakterisztikáit állítja be. Amennyiben a sor nem rendelkezik mindazzal a karakterisztikával, amit itt megadunk, akkor a job várakozó állapotba kerül mindaddig, amíg a sor vagy a job karakterisztikái megfelelően nem változnak.

 

Minden egyes file jobba illesztése előtt megerősítést vár:

 

A PRINT után megadva az összes fileból n példány nyomtatódik; ha egy filespecifikáció után áll, akkor csak abból az egy fileból készül az n példány - pozíciófüggő módosító (positional qualifier). (0<n<255).

Default: /COPIES=1      

 

A létrehozásuk dátuma alapján választja ki a nyomtatandó file(oka)t. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

Kinyomtatás után törli a megjelölt file(oka)t (pozícionális módosító).

Default: /NODELETE      

 

Kihagyja a nyomtatandó fileok közül a felsorolt fileokat. Ha egy file van, a () elhagyható.

A filespecifikáció(k)ban a wildcard karakterek (* % ... -) megengedettek.

 

Lejárati idő alapján választja ki a fileokat. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

Default: /CREATED.

 

Meghatározza, hogy nyomtassunk-e fej (flag) lapot. A kulcsszó lehet ALL, ekkor minden file előtt lesz, vagy ONE, s akkor csak az első file előtt (pozíciófüggő módosító).

Default: A várakozási sor /DEFAULT módosítójával megadott érték.

 

A nyomtatási formátumot adja meg. (A rendszerben már definiált formátum adható meg.)

 

A job a várakozási sorban marad mindaddig, amíg a SET ENTRY/RELEASE, SET ENTRY/NOHOLD parancsok valamelyikével nem engedélyezzük a nyomtatást.

Default: /NOHOLD.

 

Az egész job n-szer lesz kinyomtatva. (0<n<255).

Default: / JOB_COUNT=1    

 

A módosításuk dátuma alapján választja ki az input fileokat. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

A job neve; maximum 39 karakter. Ha alfanumerikus jelen, aláhúzáson (_) vagy dollárjelen ($) kívül más is van a névben, akkor idézőjelek ("")  közé kell tenni. Ez a név jelenik meg a SHOW QUEUE, SHOW ENTRY parancsok outputjában és ez kerül nyomtatáskor a flaglapra is.

Default: A parancsban levő első (vagy egyetlen) file neve.

 

Egy maximum 255 karakteres szöveg adható meg, amely megjelenik a fej (flag) lapon.

 

A módosítóval értesítést kérhetünk a parancsot kiadó terminálra, amikor a job nyomtatódik, vagy valamilyen okból abortálódik.

Default: /NONOTIFY.

 

Egy maximum 255 karakteres string adható meg, amelyet a job végrehajtásakor az operátor kap meg üzenetként.

 

A kinyomtatandó lapok sorszámát határozza meg. Ha alsóhatár nincs, akkor az első laptól nyomtat. A felső határ hiányát ""-vel kell jelezni (pozícionális módosító).

 

A várakozási sor (queue) nevét adja meg, amelybe a job kerül.

Default: /QUEUE= SYS$PRINT              

 

A filespecifikáció(k) egy vagy több távoli csomópont fileja(i) kell(enek), hogy legyen(ek). A job(ok) a filespecifikáció(k)ban megadott távoli csomópont(ok) SYS$PRINT várakozási sorába kerül(nek) és ott nyomtatódnak ki. Ekkor minden fileból külön job képződik. Csak a file szelekciós módosítókkal (/BACKUP, /BEFORE, /BY_OWNER, /CONFIRM, /CREATED, /EXCLUDE, /EXPIRED, /MODIFIED, /SINCE) kombinálható.

 

Meghatározza, hogy crash vagy STOP/QUEUE/REQUEUE parancs után újra kezdődjön-e az illető job nyomtatása.

Default: /NORESTART    

 

Azokat a fileokat választja ki az input fileok közül, amelyek meghatározott dátuma az adott időpont utáni. Az időpont abszolút vagy kombinált lehet. Az időpont lehet BOOT, LOGIN, TODAY, TOMORROW vagy YESTERDAY is.

Ha a /SINCE-t paraméter nélkül adjuk meg, akkor /SINCE=TODAY az alapértelmezés.

 

 

Példák:

 

$ PRINT /NAME=PASCAL_FORRASOK *.PAS

 

Kinyomtatja az összes Pascal forrásprogramot.

 

$ PRINT /PAGE=(12,"") SZOVEG.TXT

 

Kinyomtatja a SZOVEG.TXT-t a 12. laptól a file végéig.

 

$ PRINT /OPERATOR="Ne tépd le, lesz folytatás!"   -  1.txt, 2.txt

 

A megadott szöveget a nyomtatás kezdetekor kapja meg az operátor.

 

$ PRINT /COPIES=2 A.A, B.B

$ PRINT /JOB_COUNT=2 A.A, B.B

 

Az első esetben először az A.A file két példánya, majd a B.B file két példánya lesz kinyomtatva. A második parancsnál a sorrend: A.A, B.B, A.A, B.B.

 

 

    1. 11.3.Kötegelt feldolgozás 

 

A parancsfileokat nem csak interaktívan hajthatjuk végre, hanem felügyelet nélkül, tetszőleges időpontban, esetleg a cluster egy másik gépén. Ez a kötegelt (batch) feldolgozás; a megvalósítás a batch várakozási sorokkal lehetséges.

A parancsfile batch végrehajtásakor a terminál I/O helyett fileokat használ a rendszer. A terminálhoz rendelt processz permanens fileok változása a 10.3.3. fejezetben szerepel:

A naplófileban a végrehajtott parancsok is megjelennek, ha nem tiltjuk meg a verifikálást (SET VERIFY, F$VERIFY) – ez különösen hasznos lehet utólagos ellenőrzés és hibakeresés esetén.

 

A batch várokozási sorokat általában a rendszergazda hozza létre, és a felhasználó a SUBMIT paranccsal küldhet ezekbe parancseljárásokat.

Formája:

 

$ SUBMIT filespecifikáció [,...]

$ SUBMIT filespecifikáció [+...]

 

A filespecifikáció default filetípusa a .COM; ha több filet adunk meg, akkor azok egyetlen job-ba lesznek összefűzve, és így kerülnek egy kötegelt várakozási sorba. A job végrehajtásához a rendszer egy önálló processzt hoz létre. A processz környezete (default eszköz és directory, privilégiumok és kvóták stb.) azonos az indító processz default (UAF-ban megadott) környezetével. A job az outputot a saját napló filejába írja. A file default neve: parancs-file-név.LOG, és a SYS$LOGIN directoryba íródik. (A /NAME vagy a /LOG_FILE módosítóval lehet ezen változtatni.)

A filespecifikáció(k)ban a wildcard karakterek (* % - ...) megengedettek. Ha a filespecifikációban csomópont név is szerepel, akkor kötelező a /REMOTE módosító használata.

 

A parancs végrehajtásakor a rendszer üzenetet küld, amely tartalmazza a job bejegyzés-számát (entry number), a várakozási sort és a job státuszát. A bejegyzés-szám értékét a $ENTRY szimbólum is felveszi, és a processz legközelebbi PRINT vagy SUBMIT parancsáig őrzi.

 

Bizonyos módosítók megadhatók a SUBMIT után is - akkor az összes filera vonatkoznak; vagy egy filespecifikáció után - s akkor csak arra az egy filera vonatkozik (positional qualifier).

 

A leggyakrabban használt módosítók:

 

A megadott időpont után kell végrehajtani a jobot. Ha a megadott idő elérkezik, akkor a job azonnal a várakozási sor elejére kerül. Az idő abszolút vagy kombinált lehet.

Ez a funkció nem alkalmas az időzített futtatásra: lehetséges, hogy a megadott időpontban a sor éppen foglalt vagy más okok miatt nem jut azonnal vezérléshez a job.

Amennyiben az itt megadott időpont már elmúlt, úgy a kapcsolót figyelmen kívül hagyja a rendszer.

 

A legutóbbi mentési (backup) dátum alapján választja ki az input fileokat.

Csak a /BEFORE vagy a /SINCE módosítóval együtt használható.

Default: /CREATED        

Az adott idő előtti dátumú fileokat választja ki az input fileok közül. Az idő abszolút vagy kombinált formájú lehet. Használható az időnél a BOOT, LOGIN, TODAY, TOMORROW, YESTERDAY kulcsszó is.

Ha a /BEFORE-t paraméter nélkül adjuk meg, akkor /BEFORE=TODAY az alapértelmezés.

 

A tulajdonosi UIC alapján választja ki a file(oka)t a megadott input specifikáció(k)ból.

Ha a /BY_OWNER-t paraméter nélkül adjuk meg, akkor a processz aktuális UIC-a lesz a default.

 

A job karakterisztikáit állítja be. Amennyiben a sor nem rendelkezik mindazzal a karakterisztikával, amit itt megadunk, akkor a job várakozó állapotba kerül mindaddig, amíg a sor vagy a job karakterisztikái megfelelően nem változnak.

 

Minden egyes file jobba illesztése előtt megerősítést vár.

 

A batch jobnak maximum a megadott delta-idejű CPU használatot engedélyezünk: Ha ez elfogy, akkor a batch processz hibaüzenettel leáll. A 0, INFINITE, NONE korlátlan CPU használatot jelent.

A tényleges limitet befolyásolja a várakozási sor CPUMAXIMUM értéke valamint a felhasználó UAF-beli kvótája is.

 

A létrehozásuk dátuma alapján választja ki a végrehajtandó fileo(ka)t. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

Végrehajtás után törli a megjelölt file(oka)t (pozíciófüggő módosító).

Default: /NODELETE      

 

Kihagyja a végrehajtandó fileok közül a felsorolt fileokat. Ha egy file van, a () elhagyható.

A filespecifikáció(k)ban a wildcard karakterek (* % ... -) megengedettek.

 

Lejárati idő alapján választja ki a fileokat. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

Default: /CREATED.

 

A job a várakozási sorban marad mindaddig, amíg a SET ENTRY/RELEASE, SET ENTRY/NOHOLD parancsok valamelyikével nem engedélyezzük a végrehajtást.

Default: /NOHOLD.

 

 

A parancseljárás végrehajtása után is megőrzi a naplófilet, ha ezt a módosítót adjuk meg.

Default esetben törli (/NOKEEP), nyomtatás nélkül (/NOPRINT) viszont megőrzi a naplófilet.

 

Meghatározza, hogy készüljön-e napló file, és milyen néven.

Default: /LOG_FILE=job-név.LOG

 

A módosításuk dátuma alapján választja ki a végrehajtandó fileokat. Együtt kell használni a /BEFORE vagy a /SINCE módosítóval.

 

A job neve; maximum 39 karakter. Ha alfanumerikus jelen, aláhúzáson (_) vagy dollárjelen ($) kívül más is van a névben, akkor idézőjelek közé kell tenni. Ez a név jelenik meg a SHOW QUEUE, SHOW ENTRY parancsok outputjában és ez kerül nyomtatáskor a flaglapra is.

Default: A parancsban levő első (vagy egyetlen) file neve.

 

Egy maximum 255 karakteres szöveg adható meg, amely megjelenik a SHOW QUEUE/FULL parancs outputjában.

 

A módosítóval értesítést kérhetünk a terminálra, amikor a job végrehajtódik, vagy valamilyen okból abortálódik.

Default: /NONOTIFY.

 

A parancseljárásnak maximum 8 paramétert adhatunk át. Ezeket az értékeket a jobban lévő mindegyik file megkapja a P1, ..., P8 szimbólumokban.

Ha csak egy paraméter van, a zárójelek elhagyhatók.

 

A job befejezésekor a naplófile a megadott output sorban kinyomtatódik. A default sor a SYS$PRINT.

Default: /PRINTER. Ez azt jelenti, hogy amennyiben létezik SYS$PRINT, és abba a felhasználónak van joga feladatot küldeni, úgy minden kötegelt futtatásnak az eredménye megjelenik azon a nyomtatón. Lásd még: /KEEP

 

A várakozási sor (queue) nevét adja meg, amelybe a job kerül.

Default: /QUEUE= SYS$BATCH              

 

A filespecifikáció(k) egy vagy több távoli csomópont fileja(i) kell(enek), hogy legyen(ek). A job(ok) a filespecifikáció(k)ban megadott távoli csomópont(ok) SYS$BATCH várakozási sorába kerül(nek) és ott hajtódnak végre. Ekkor minden fileból külön job képződik. Csak a file szelekciós módosítókkal (/BACKUP, /BEFORE, /BY_OWNER, /CONFIRM, /CREATED, /EXCLUDE, /EXPIRED, /MODIFIED, /SINCE) kombinálható.

 

Meghatározza, hogy crash vagy STOP/QUEUE/REQUEUE parancs után újra kezdődjön-e az illető job végrehajtása.

Default: /NORESTART    

 

Azokat a fileokat választja ki az input fileok közül, amelyek meghatározott dátuma az adott időpont utáni. Az időpont abszolút vagy kombinált lehet. Az időpont lehet BOOT, LOGIN, TODAY, TOMORROW vagy YESTERDAY is.

Ha a /SINCE-t paraméter nélkül adjuk meg, akkor /SINCE=TODAY az alapértelmezés.

 

 

Példák:

 

$ SUBMIT /PARAMETERS=(INFILE,12) /NORPINTER /NOTIFY VAS

Job VAS (queue SYS$BATCH, entry 3) started on queue SYS$BATCH

 

A VAS.COM parancsfile a SYS$BATCH várakozási sorba kerül VAS job-névvel. A parancsfile végrehajtásakor az indító felhasználó üzenetet kap. A P1 szimbólum értéke INFILE, a P2 szimbólumé pedig 12 lesz a parancsfileban. A naplófile nem lesz kinyomtatva, és nem törlődik.

 

$ SUBMIT/AFTER=22:30 TRANSLATE

Job TRANSLATE (queue SYS$BATCH, entry 1401) holding until 27-AUG-2003 22:30

 

A TRANSLATE.COM 22:30 után lesz végrehajtva.

 

     

    1. 11.4.A jobok kezelése 

 

A várakozási sorokban lévő jobok paraméterei végrehajtás előtt elég széles körben megváltoztathatók (mind az output mind a kötegelt sorok esetén). A már végrehajtódó jobok nem módosíthatók, legfeljebb törölhetjük őket, és újra besorolhatjuk egy sorba.

 

A job paramétereinek megváltoztatására a

 

$ SET ENTRY bejegyzés-szám [,...]

 

 parancs szolgál.

 

A legfontosabb módosítók:

 

A megadott időpont után kell végrehajtani a jobot. Ha a megadott idő elérkezik (vagy ha már el is múlt a parancs kiadásakor), akkor a job azonnal a várakozási sor elejére kerül. Az idő abszolút vagy kombinált lehet.

 

A job karakterisztikáit módosítja. Amennyiben a sor nem rendelkezik mindazzal a karakterisztikával, amit itt megadunk, akkor a job várakozó állapotba kerül mindaddig, amíg a sor vagy a job karakterisztikái megfelelően nem változnak..

 

Meghatározza, hogy a nyomtatandó job összes filejából n példány készüljön. (0<n<255). A job összes filejára vonatkozik.

 

A batch jobnak maximum a megadott delta-idejű CPU használatot engedélyezünk: Ha ez elfogy, akkor a batch processz hibaüzenettel leáll. A 0, INFINITE, NONE korlátlan CPU használatot jelent.

A tényleges limitet befolyásolja a várakozási sor CPUMAXIMUM értéke valamint a felhasználó UAF-beli kvótája is.

 

Meghatározza, hogy nyomtassunk-e fej (flag) lapot.

 

A nyomtatási formátumot adja meg. (A rendszerben már definiált formátum adható meg.)

 

A job a várakozási sorban marad mindaddig, amíg a SET ENTRY/RELEASE, SET ENTRY/NOHOLD parancsok valamelyikével nem engedélyezzük a nyomtatást.

 

Az egész job n-szer lesz kinyomtatva. (0<n<255).

 

A parancseljárás végrehajtása után is megőrzi a naplófilet, ha a /KEEP módosítót adjuk meg.

 

Meghatározza, hogy készüljön-e napló file, és milyen néven.

Default: /LOG_FILE=job-név.LOG

 

A job neve; maximum 39 karakter. Ha alfanumerikus jelen, aláhúzáson (_) vagy dollárjelen ($) kívül más is van a névben, akkor idézőjelek közé kell tenni. Ez a név jelenik meg a SHOW QUEUE, SHOW ENTRY parancsok outputjában és ez kerül nyomtatáskor a flaglapra is.

 

Megváltoztatja a /DELETE opciót, azaz a job filejai nem törlődnek nyomtatás/végrehajtás után. (A job összes filejára vonatkozik.)

 

Egy maximum 255 karakteres szöveg adható meg, amely megjelenik a fej (flag) lapon.

 

A módosítóval értesítést kérhetünk a terminálra, amikor a job nyomtatódik, vagy valamilyen okból abortálódik.

 

Egy maximum 255 karakteres string adható meg, amelyet a job végrehajtásakor az operátor kap meg üzenetként.

 

A kinyomtatandó lapok sorszámát határozza meg. Ha alsóhatár nincs, akkor az első laptól nyomtat. A felső határ hiányát ""-vel kell jelezni. (A job összes filejára vonatkozik.)

 

A /HOLD vagy /AFTER módosító miatt várakozó job végrehajtódik.

 

A parancsban felsorolt jobok átsorolódnak a megadott várakozási sorba.

 

Meghatározza, hogy crash vagy STOP/QUEUE/REQUEUE parancs után újra kezdődjön-e az illető job nyomtatása.

 

Például

 

$ PRINT/HOLD CSEKK.LIS

  Job CSEKK (queue SYS$PRINT, entry 84) holding

$ SET ENTRY 84/RELEASE/JOB_COUNT=3

 

Az első parancsban létrejött jobot várakoztatjuk – például addig, míg be nem fűzzük a megfelelő papírt a nyomtatóba.

 

 

Az aktuális állapotot a

 

$ SHOW ENTRY [bejegyzés-szám [,...]], [job-név [,...]]

 

paranccsal tudjuk lekérdezni. Ha nem adunk meg paramétert, akkor vagy az összes, a felhasználó által indított jobot látjuk, vagy a módosítók által meghatározott csoportokat.

 

 

A jobok törlését a

 

$ DELETE /ENTRY =(bejegyzés-szám[,...]) [queue-név[:]]

$ STOP /QUEUE /ENTRY =(bejegyzés-szám[,...]) [queue-név[:]]

 

parancsok teszik lehetővé. (A várakozási sorokat kezelő parancsok is törölhetnek jobokat, de ezzel itt nem foglalkozunk.)

 

 

  1. 12. Mentés, helyreállítás 

 

Bármilyen munkát végzünk, a számítógépeken tárolt filejainkról (program, adat, szöveg, képek, stb.) célszerű biztonsági másolatot készíteni, hogy adatvesztés esetén (hardver vagy szoftver hiba, szándékos vagy véletlen rongálás) vissza tudjuk őket állítani. Ugyanígy általános gyakorlat az adatok/fejlesztések több generációjának megőrzése (archiválás), hogy szükség esetén visszaállíthassunk egy korábbi időpontban létezett állapotot.

Az alkalmazások leírásának fontos része mind a mentési mind az archiválási terv (plusz a visszaállítási lehetőségek), és a biztonságos üzemeltetéshez még fontosabb, hogy be is tartsuk azokat.

 

      

    1. 12.1.Mentési technikák 

 

Kisebb, ad hoc jellegű mentéseket könnyen elvégezhetünk a DCL COPY paranccsal (lásd 10.1.1. fejezet). COPY-val bizonyos esetekben megőrizhetjük a file összes jellemzőjét, szekvenciális filet tetszőleges adathordozóra másolhatunk, akár hálózaton keresztül is. De ez a technika nem menti  a directory struktúrát és viszonylag lassú.

 

A rendszeres, nagy tömegű mentések és archiválások esetén célszerűbb a VMS erre a célra kifejlesztett BACKUP segédprogramját használni.

A BACKUP előnyei:

 

A BACKUP a normál file- és lemezmásoláson túl képes egy speciális szerkezetű, csak a segédprogrammal kezelhető szekvenciális fileba - a backup save set-be - írni a mentést. Ez a forma teszi lehetővé, hogy a directory struktúrát, file attribútumokat,  szervezettséget, valamint a lemezszerkezetet is megőrizzünk az adatokon kívül, akár lemezre, akár szalagra kerül a save set.

 

Ugyancsak fontos, hogy a segédprogram többféle mentéssel, visszatöltéssel kapcsolatos műveletet képes elvégezni - mindig ki tudjuk választani a célunknak leginkább megfelelőt:

 

 

    1. 12.2.A BACKUP segédprogram 

 

A BACKUP parancs általános formája:

 

$ BACKUP input-specifikáció [output-specifikáció]

 

A BACKUP legtöbb módosítója pozícionális, azaz más jelentésű vagy értelmetlen, ha nem megfelelő helyen (parancsnév, input vagy output paraméter után) szerepeltetjük. Ezért a legtöbb DCL paranccsal szemben itt nagyon fontos figyelni az általunk leírt parancs szerkezetére!

 

A megengedett paraméterek:

 

      1. 12.2.1. A BACKUP formái 

 

A 12.1. fejezetben leírt backup műveleteket – a szelektív művelet kivételével - a parancsmódosítók határozzák meg, ezek szerepelnek a fejezetben. Minden általános parancsot egy vagy több példa követ.

 

1. Mentés:

$ BACKUP file-spec save-set-spec

 

$ BACKUP $1$DUA1:[USER.FODOR...]    –

     $2$DUA2:[MENTES]030912.BCK/SAVE_SET

$ BACKUP $1$DUA1:[USER.FODOR...]    –

     $1$MUA0:FODOR030912.BCK/SAVE_SET

$ BACKUP $1$DUA1:[USER.FODOR...],   -

    $1$DUA2:[USER.FODOR]    –

     $1$MUA0:FODOR030912.BCK/SAVE_SET

 

Az első példában lemezre mentünk egy directory részfát, a másodikban ugyanazt szalagra, a harmadikban pedig a directory részfán kívül még egy directory tartalma kerül a save set-be.

Lemez esetén kötelező a /SAVE_SET módosítót használni, szalag esetén viszont elhagyható.

 

2. Image mentés (logikailag – Files-11 struktúra szerint - azonos a másolat):

$ BACKUP/IMAGE device-spec save-set-spec

 

$ BACKUP/IMAGE $PTEAX$DUA0:     -

       $1$MUA0:VMS030912.BCK/SAVE_SET

 

A szalagra írt save set-ből az input lemezzel logikailag azonos lemez állítható elő egy visszatöltéssel. Ezt a formát használhatjuk rendszerlemez mentése esetén, vagy akkor, ha egy lemez töredezettségét akarjuk megszüntetni. (Visszatöltés után a fileok folytonosak lesznek, és a szabad terület egyetlen vagy kevesebb darabból fog állni.)

A /SAVE_SET módosító itt elhagyható, mert szalagon hozzuk létre az állományt.

 

3. Image másolás (logikailag azonos az input és output):

$ BACKUP/IMAGE input-device-spec output-device-spec

 

$ BACKUP/IMAGE $PTEAX$DUA0:    -

   $PTEAX$DUB0:

 

Az output lemez az input lemezzel logikailag azonos lemez lesz. Ezt a formát használhatjuk rendszerlemez mentése esetén, vagy akkor, ha egy lemez töredezettségét akarjuk megszüntetni. (Az output lemezen a fileok folytonosak lesznek, és a szabad terület egyetlen vagy kevesebb darabból fog állni.) Miután ez a forma az összes lemezvezérlő információt is menti, így az output lemeznek ugyanaz lesz a címkéje (label).

 

4. Image fizikai másolás (blokkonként azonos az input és output):

$ BACKUP/PHYSICAL input-device-spec output-device-spec

 

$ BACKUP/PHYSICAL $PTEAX$DUA0:   -

      $PTEAX$DUB0:

 

Az output lemez az input lemezzel blokkonként azonos lemez lesz. Természetesen nem használható kisebb output diszk esetén.

 

5. Visszatöltés:

$ BACKUP save-set-spec file-spec

 

$ BACKUP $1$MUA0:FODOR030912.BCK/SAVE_SET -

  $1$DUA1:[*...]

$ BACKUP $1$MUA0:FODOR030912.BCK/SAVE_SET -

  USER:[*...]

$ BACKUP $1$MUA0:FODOR030912.BCK/SAVE_SET -

  /SELECT=[USER.FODOR...]   -

  USER:[USER.FODOR...]

$ BACKUP $1$MUA0:FODOR030912.BCK/SAVE_SET -

  $1$DUA1:[USER.FODORMENT...]

$ BACKUP $1$MUA0:FODOR030912.BCK/SAVE_SET -

  $1$DUA1:[USER.FODORMENT]

$ BACKUP $1$MUA0:FODOR030912.BCK/SAVE_SET -

  USER:

 

Az első és második példában a directory struktúra a mentéskori input szerkezettel lesz azonos (függetlenül attól, hogy fizikai vagy logikai nevet használunk a lemezre). Ugyanezt az eredményt érhetjük el a /SELECT módosító megfelelő használatával a harmadik esetben.

A 4. parancsban a [USER.FODORMENT] directory alatt jön létre az input szerkezettel azonos directory fa.

Az ötödik példában az összes, a save set-ben lévő file egyetlen directoryba kerül. Ha azonos nevű, típusú, verziójú fileok többször is előfordulnak, akkor a felülírásra vonatkozó módosítók (/NEW_VERSION, /OVERLAY, /REPLACE) döntik el, hogy mely file(ok) és milyen verzióval másolódnak az output directoryba.

Az utolsó parancs esetén sem őrződik meg a directory struktúra, a fileok a processz default directoryjába kerülnek.

 

6. Image visszatöltés:

$ BACKUP/IMAGE save-set-spec device-spec

 

$ BACKUP/IMAGE $1$MUA0:VMS030912.BCK/SAVE_SET -

$PTEAX$DUA0:

 

Az output lemez a save set-ben lévő mentéssel logikailag - Files-11 struktúra szerint – azonos lesz. A fileok adatblokkjai folytonosan helyezkednek el; ha a save set inputja bootolható volt (operációs rendszer lemeze), akkor az output is bootolható lesz. Ezt a műveletet a lemez töredezettség megszüntetésére is használhatjuk.

 

7. Image fizikai visszatöltés:

$ BACKUP/PHYSICAL save-set-spec device-spec

$ BACKUP/IMAGE/PHYSICAL       -

$1$MUA0:VMS030912.BCK/SAVE_SET -

$PTEAX$DUA0:

 

Az output lemez a save set-ben lévő mentéssel blokkonként azonos lesz – akkor is, ha az output lemezen valamely blokk hibás. VMS-ben ismeretlen struktúrájú lemezt is visszatölthetünk ilyen módon.

 

8. File másolás:

$ BACKUP file-spec file-spec

 

$ BACKUP TANF:[USER.XXX] TANF:[USER.YYY]

$ BACKUP NAGY_FILE.DAT $1$DKA300:[USER.FODOR]*.MENT

$ BACKUP DUA0:[TANFOLYAM...]      -

DUB0:[TANFMENT...] /BY_OWNER=ORIGIN

 

Az első parancs egy aldirectory tartalmát egy másikba másolja, a második egyetlen filet másol, és az output NAGY_FILE.MENT lesz. Ezeket a műveleteket a COPY-val is végre tudnánk hajtani, de a BACKUP gyorsabb (nagyobb puffert használ), és a nem létező directoryt automatikusan létrehozza.

A harmadik példa egy directory struktúrát egy másik lemez hasonló struktúrájába másolja át, a [TANF_MENT.TANFOLYAM] gyökértől kezdődően, miközben megőrzi a fileok tulajdonosát.

 

9. File hasonlítás:

$ BACKUP/COMPARE file-spec file-spec

 

$ BACKUP/COMPARE DUA1:[USER.A]*.EXE;0 DUA1:[USER.B]*.EXE;0

$ BACKUP/COMPARE DUA1:[USER.A...] DUA1:[MENTES.A_USER...]

 

Mindkét esetben a paraméterekben szereplő fileok blokkos hasonlítása történik, az output az eltérő fileok nevét és a különbség blokkszámát tartalmazza.

 

10. File hasonlítás a save set filejaival:

$ BACKUP/COMPARE save-set-spec file-spec

 

$ BACKUP/COMPARE       -

 MUA0:MENT030830.BCK/SAVE_SET USER:[TANF...]

 

A save set és a directory struktúra filejait hasonlítja össze a parancs.

 

11. Image hasonlítás (egy mentés save set és egy lemez Files-11 struktúrája alapján logikai hasonlítás):

$ BACKUP/COMPARE/IMAGE save-set-spec device-spec

 

$ BACKUP/COMPARE/IMAGE      -

 DUA2:SYSMENT030830.BCK/SAVE_SET DUA0:

 

Ebben az esetben nem szerepelhet filespecifikáció az output paraméterben.

 

12. Image hasonlítás:

$ BACKUP/COMPARE/IMAGE device-spec device-spec

 

$ BACKUP/COMPARE/IMAGE $5$DUA12: $5$DUA10:

 

A két lemez Files-11 struktúrája alapján történik a hasonlítás.

 

13. Fizikai hasonlítás: (két lemez blokkonkénti hasonlítása):

$ BACKUP/COMPARE/PHYSICAL device-spec device-spec

 

$ BACKUP/COMPARE/PHYSICAL $5$DUA12: $5$DUA10:

 

Ebben a parancsban a két lemeznek nem muszáj Files-11 formátumúnak lenni.

 

14. Save set tartalmának a listázása a SYS$OUTPUT-ra vagy fileba (kombinálható más műveletekkel a fentiek közül):

$ BACKUP/LIST[=file-spec] save-set-spec

 

$ BACKUP/LIST MUA0:

$ BACKUP/LIST=TARTALOM/REWIND MUA0:*

$ BACKUP/LIST/FULL [.MENTES]FORRAS.BCK/SAVE_SET

 

Az első parancs annak a save setnek a tartalomjegyzékét írja a képernyőre, ahol a szalag áll, a második pedig a szalagon lévő összes save set tartalomjegyzékét a TARTALOM.LIS fileba írja.

A harmadik példa egy lemezes save set filejairól megőrzött minden információt írja a képernyőre.

 

15. A mentés során az események bejegyzése a mentési naplóba:

$ BACKUP/JOURNAL[=file-spec] file-spec save-set-spec

 

$ BACKUP/JOURNAL=BACKUP_NAPLO [...] MIA2:MENT030911.BCK

$ BACKUP/JOURNAL/IMAGE DRA2: MIA2:SYS030911.BCK

 

Az első példa a default directory BACKUP_NAPLO.BJL filejába írja a mentési naplót, a második a BACKUP.BJL nevet használja; a naplófileba a mentett fileok listája kerül. A Backup segédprogram mindkét esetben vagy a már meglévő naplófilehoz fűzi hozzá a mentés eseményeit, vagy ha még nincs ilyen, akkor létrehozza a naplófilet.

 

16. Mentési napló tartalmának a listázása a SYS$OUTPUT-ra vagy fileba:

$ BACKUP/JOURNAL[=file-spec]/LIST[=file-spec]

 

$ BACKUP/JOURNAL=BACKUP_NAPLO/LIST

$ BACKUP/JOURNAL=BACKUP.BJL/LIST=SYSMENT

 

Ezek a parancsok az előző példákban szereplő naplófileok tartalmát listázzák (mentés nem történik).

 

 

      1. 12.2.2.A fontosabb módosítók 

 

A módosítókat a helyük szerint csoportosítjuk, mert szigorúan a megfelelő helyen kell megadni őket.

 

A 12.2.1. fejezetben szereplő, a Backup funkciókat meghatározó /COMPARE, /IMAGE, /JOURNAL, /LIST, /PHYSICAL módosítók parancsmódosítók, a /SELECT input save set módosító, a /SAVE_SET pozícionális.

 

1. Parancsmódosítók

 

/INCREMENTAL

Teljes mentés után csak a változások mentése.

 

/LOG

A Backup a SYS$OUTPUT-ra írja, hogy mely fileokon és milyen műveletet hajt éppen végre.

 

/RECORD

A Backup sikeres másolás vagy mentés után minden érintett input file fejlécébe (header) beírja a feldolgozás dátumát (backup dátum).

??

/VERIFY

A mentés vagy másolás ellenőrzéssel történik: A Backup a másolt állományt visszaolvassa és összehasonlítja az eredetivel. Célszerű minden fontos mentéskor, visszaállításkor használni.

 

 

2. Inputmódosítók

 

/BEFORE=időpont

 /BACKUP

 /CREATED

 /EXPIRED

 /MODIFIED

A Backup azokat a fileokat másolja vagy menti, amelyek megfelelő dátuma a megadott időpont előtti. Időpontként a BACKUP, TODAY, YESTERDAY, TOMORROW is megadható.

Ha nem adunk meg dátum mezőre vonatkozó módosítót, akkor a /MODIFIED a default.

 

/BY_OWNER[=[uic]]

Csak azok a fileok szerepelnek a Backup műveletben, amelyek tulajdonosa a megadott UIC. Ha nem adunk meg UIC-ot, akkor a processz UIC-a a default. A /BY_OWNER szerepel outputmódosítóként is, más jelentéssel.

 

/CONFIRM

A Backup minden input filera rákérdez, mielőtt mentené vagy másolná őket.

 

/EXCLUDE=(filespecifikáció [,...])

A felsorolt fileok kimaradnak a mentésből vagy másolásból. A specifikáció nem tartalmazhat lemeznevet vagy relatív verziószámot; a wildcard karakterek (* % - ...) megengedettek.

/SELECT=(filespecifikáció [,...])

Csak save set esetén adható meg: A felsorolt fileokat állítja csak vissza a save setből. A specifikáció nem tartalmazhat relatív verziószámot; a wildcard karakterek (* % - ...) megengedettek.

 

/SINCE=[időpont]

 /BACKUP

 /CREATED

 /EXPIRED

 /MODIFIED

A Backup azokat a fileokat másolja vagy menti, amelyek megfelelő dátuma a megadott időpont utáni. Időpontként a BACKUP, TODAY, YESTERDAY, TOMORROW is megadható.

Az időpont alapértelmezése TODAY.

Ha nem adunk meg dátum mezőre vonatkozó módosítót, akkor a /MODIFIED a default.

 

 

3. Outputmódosítók

 

/BY_OWNER=opció

Akkor használható, ha az output paraméter filespecifikáció, és a keletkező fileok tulajdonosáról rendelkezik az opció szerint:

Ha image vagy inkrementális visszatöltés történik, akkor az ORIGINAL opció, egyébként pedig a DEFAULT opció van érvényben ha a /BY_OWNER módosító nem szerepel.

A /BY_OWNER szerepel outputmódosítóként is, más jelentéssel.

 

/BY_OWNER=uic /SAVE_SET

Akkor használható, ha az output paraméter save set, és annak tulajdonosát adjuk meg az UIC-cal. Ha a módosítót nem használjuk, akkor a parancsot végrehajtó processz UIC-a lesz a save set tulajdonosa.

 

/NEW_VERSION

Ha az output directoryban már létezik a megadott nevű és típusú file azonos vagy a másoltnál nagyobb verziója, akkor a létrejövő file verziója a directoryban lévő legnagyobbnál eggyel nagyobb lesz. Mivel ebben az esetben a fileok verziószáma változhat, a /VERIFY módosító használata kiszámíthatatlan eredményű lesz, ezért a Digital nem javasolja a két módosító együttes használatát.

 

Másolás vagy helyreállítás során a Backup a fileokat csökkenő verziószám szerint dolgozza fel, de /NEW_VERSION esetén növekvő verzióval hozza létre. Azaz a verziószámok invertálódnak, ha azonos névvel és típussal több verziót másolunk a fenti módosítóval!

/OVERLAY

Ha az output directoryban már létezik a megadott nevű és típusú file azonos verziója, akkor a Backup felülírja azt. A file fizikai helye nem változik a lemezen, legfeljebb ha az input hosszabb, mint az eddig létező file, akkor a Backup további blokkokat allokál neki.

 

/REPLACE

Ha az input specifikációval azonos file már létezik az output lemezen, akkor a Backup először másolja vagy visszaállítja az inputot, majd törli a korábban létezett filet.

 

Ha a /NEW_VERSION, /OVERLAY, /REPLACE módosítók egyikét sem használjuk a parancsban, és a másolandó vagy visszaállítandó file már létezik a directoryban, akkor a Backup hibaüzenetet küld és kihagyja a filet.

 

 

      1. 12.2.3.Mentési és visszatöltési megoldások 

 

  1. 1.Teljes majd inkrementális mentés 

 

Először teljes mentés végzünk a lemezre:

 

$ BACKUP /RECORD /IMAGE /VERIFY     -

  DISK$SAJAT $1$MUA0:MENTES.BCK

 

 A további mentések csak azokat a fileokat érintik, amelyek a legutóbbi mentés óta módosultak:

 

$ BACKUP /RECORD /SINCE=BACKUP /VERIFY    -

DISK$SAJAT $1$MUA0:INC_HETFO.BCK

$ BACKUP /RECORD/SINCE=BACKUP /VERIFY     -

DISK$SAJAT $1$MUA0:INC_KEDD.BCK

. . .

$ BACKUP /RECORD/SINCE=BACKUP /VERIFY    -  

DISK$SAJAT $1$MUA0:INC_PENTEK.BCK

 

  1. 2.A fenti mentés visszaállítása 

 

Először a teljes mentést kell visszatölteni:

 

$ MOUNT /FOREIGN DISK$UJ

$ BACKUP /IMAGE /VERIFY $1$MUA0:MENTES.BCK  DISK$UJ

$ DISMOUNT DISK$UJ

 

Utána fordított sorrendben kell visszatölteni az inkrementális mentéseket:

 

$ MOUNT DISK$UJ <regi_cimke>

$ BACKUP /INCREMENTAL /VERIFY      -

$1$MUA0:INC_PENTEK.BCK  DISK$UJ

$ BACKUP /INCREMENTAL /VERIFY      -

$1$MUA0:INC_CSUT.BCK  DISK$UJ

. . .

$ BACKUP /INCREMENTAL /VERIFY      -

$1$MUA0:INC_HETFO.BCK  DISK$UJ

 

 

  1. 3.Egy directory struktúrából csak az adott tulajdonosú fileokat mentjük: 

 

$ BACKUP [MESTER...]/BY_OWNER=[202,12]   -

  FZVAX$MUA0:MESTER_12.BCK/LABEL=TAPE01

 

 

  1. 4.Az output fileok a megadott tulajdonosé lesznek: 

 

$ BACKUP DBA2:ACCOUNTS.BCK/SAVE_SET     -

[OPER12...]/BY_OWNER=[SYS,ACNT]

 

 

5. Az input save set [FODOR] directoryjának és annak összes aldirectoryjának a filejai visszatöltődnek a DUA0: lemez megfelelő directoryjaiba. Ha azonos nevű, típusú és verziójú fileok már voltak az outputon, akkor azokból előbb új verzió keletkezik, majd a régi törlődik:

 

$ BACKUP MUA0:MENTES.BCK/SELECT=[FODOR...]  -

DUA0:[FODOR...]/REPLACE

 

 

Irodalomjegyzék

 

Az OpenVMS Version 7.3 Documentation CD-ről:

        Guide to OpenVMS File Applications

 Guide to the DEC Text Processing Utility

 OpenVMS Cluster Systems

OpenVMS DCL Dictionary

OpenVMS Guide to System Security

OpenVMS Record Management Services Reference Manual

OpenVMS Record Management Utilities Reference Manual

OpenVMS System Manager's Manual

OpenVMS User's Manual

DECnet-Plus for OpenVMS Introduction and User's Guide

DECnet for OpenVMS Guide to Networking

DECnet for OpenVMS Networking Manual

DECnet for OpenVMS Network Management Utilities

Compaq TCP/IP Services for OpenVMS Management

DIGITAL TCP/IP Services for OpenVMS User's Guide

OpenVMS DIGITAL Standard Runoff Reference Manual

OpenVMS EDT Reference Manual

OpenVMS Glossary

OpenVMS Software Overview

POLYCENTER Software Installation Utility User's Guide

 

John Robert Wisniewski: Linux & OpenVMS Interoperability, Digital Press 2003.

 

McAndrew – Scheffy – Sherlock: OpenVMS and Windows NT Integration for Dummies, IDG Books Worldwide, 2000.

 

Varga Lívia: VAX/VMS rendszergazdák kézikönyve, Távközlési Kiadó, 1995.

 

Fodor Zsuzsa: VMS operációs rendszer felhasználói kézikönyv 5.5 verzió, Távközlési Kiadó, 1994.

 

 

 

Internetes hivatkozások, hasznos oldalak

 

http://h71000.www7.hp.com/

http://h71000.www7.hp.com/doc/

http://h71000.www7.hp.com/openvms/

http://h71000.www7.hp.com/openvms/journal/index.htmll

http://h71000.www7.hp.com/success-stories.html

http://h71000.www7.hp.com/wizard/faq/vmsfaq_001.html

http://h71000.www7.hp.com/openvms/products/clusters/clusters.pdf

http://h71000.www7.hp.com/solutions/government/coe/certification_programs.html

http://www.hp.com/products1/evolution/customertimes/openvms.html

http://www.hp.com/products1/evolution/alpha_retaintrust/openvms/openvms_move.htm

http://research.microsoft.com/~gbell/Digital/timeline/dechistory.htm

http://www.vmsone.com/

http://www.oooovms.dyndns.org/

http://ludens.elte.hu/decus/

http://www.hp.hu/rendezveny/DECUS/