A VM/ESA-ben a felhasználó kétféle alap környezettel találkozik: egyrészt a hipervizorral (CP - Control Program), másrészt a virtuális gépen futó szoftverrel.
A CP egy viszonylag egyszerű vezérlőnyelvvel rendelkezik. A vezérlőnyelv felépítése és a parancsok általános szintaktikája miatt a normál felhasználó által kiadható parancsok (más rendszerekkel ellentétben) nem különböznek lényegesen az operátori parancsoktól.
Általánosan azt mondhatjuk, hogy míg egy normál felhasználó által kiadott parancs csak egy virtuális gépre vonatkozik, addig az operátor(?) által kiadott parancsok az egész valós konfigurációra vonatkoznak.
A CP parancsok formája:
[#CP] cpcmd op1 op2 ...
A #CP -t csak akkor kell kiirni, ha a virtuális gépünk nem CP READ állapotban van.
A parancs neve után szóközzel elválasztva következnek a paraméterek. A paramétereket egymástól szintén szóközzel kell elválasztani. A legtöbb CP parancs neve (és a paraméterek nevei is) rövidíthetőek, az alábbiak szerint:
A leírásban szerepel a QUERY NAMES parancs a következőképpen:
Query Names
Ez azt jelenti, hogy a leírásban nagybetűkkel szereplő karaktereket kötelező megadni, míg a többi karakter megadása opcionális. Például az előző parancsot néhány kiadási módja:
QUER NAM
QU NAMES
Q N
A virtuális gépeket osztályokba soroljuk. Ezeket az osztályokat privilégium osztályoknak nevezzük.A parancsok hatásköre (vagy pl. a paraméterezhetősége) attól is függ, hogy a parancsot hivó virtuális gép milyen privilégium osztályba tartozik.
A különböző privilégium osztályokat egy-egy karakter azonosítja. A rendszerben összesen 32 privilégium osztály létezik, de ebből rendszerint csak az első 8-at használjuk. Ezek a privilégium osztályok a következők:
Ebben a részben először a normál felhasználó által is használható fontosabb CP parancsokat ismertetem, majd sort kerítek a nem G osztályú paracsokra is.
ATTN
Az ATTN paranccsal egy ún. "attention interruption"-t idézhetünk elő a virtuális gép konzoljára. A megszakítás csak akkor következik be, ha a virtuális gép állapota (PSW, vezérlő regiszterek) ezt lehetővé teszi.
Az így keletkezett megszakítást a CSW device status attention bitje azonosítja.
Begin [hexloc]
A BEGIN parancs segítségével folytathatjuk egy leállított virtuális gép futását. A virtuális gép vagy a PA1 hatására, vagy valamilyen nyomkövetési funkció hatására kerülhet leállított állapotba.
{ CLass c2 }
{ COpy nnn }
{ CLass c1 } { DIst distcode }
{ Reader } { FORM form1 } { FCB fcbname }
CHange { Printer } { DEST dest1 } { FORM form2 }
{ PUnch } { spoolid } { DEST dest2 }
{ ALL } { [ HOLD | }
{ NOHOLD ] }
[ NAme fn [ ft ] ]
Ezzel a paranccsal tudjuk megváltoztatni egy vagy több
kiválasztott spool file jellemzőit. A paraméterek jelentése:
Reader vagy RDR : Reader file-ok
Printer vagy PRT : Printer file-ok
PUnch vagy PCH : Punch file-ok
CLass c1 : A kiválasztott spool file(ok) osztálya.
FORM form1 : A kiválasztott spool file(ok) "form" neve.
DEST dest1 : A kiszemelt spool file(ok) destination neve.
spoolid : A kiválasztott spool file száma.
ALL : Az összes spool file-t kiválasztjuk.
CLass c2 : A spool file(ok) új osztálya.
COpy nnn : A spool file(ok) új példányszáma.
DIst distcode : A spool file(ok) új distribution neve. Ez a print szeparátorlapon jelenik majd meg.
FCB fcbname : A spool file(ok)-hoz rendelt új FCB név.
FORM form2 : A spool file(ok) új form neve.
DEST dest2 : A spool file(ok) új destination neve. Ezt az információt a printer használja.
HOLD | NOHOLD : A spool file(ok) állapota.
COUPLE vaddr1 [TO] userid vaddr2
Ezzel a paranccsal tudunk két virtuális CTCA-t összekapcsolni. A
két CTCA lehet egyazon vagy különböző virtuális gépen.
DEFine { CONsole }
{ CTCa }
{ Printer }
{ PUnch } [ AS ] vaddr
{ Reader }
{ GRAF }
{ STORage [ AS ] nnnnnK | nnM }
{ vaddr1 [ AS ] vaddr2 }
{ T3350 }
{ T3380 } [ AS ] vaddr [CYL] nnnn
{ Tdevtyp }
E parancs segítségével megváltoztathatjuk a virtuális
konfigurációnkat, azaz új virtuális készülékeket definiálhatunk. A
paraméterek jelentése:
CONsole Virtuális konzol
CTCa Virtuális channel-to-channel adapter
Printer Virtuális printer
PUnch Virtuális punch
Reader Virtuális reader
GRAF Virtuális terminál
vaddr A fenti virtuális készüléket erre a címre definiálja.
STORage Virtuális tár
nnnnnK vagy nnM A virtuális tár mérete. Minimum 8K, maximum 16M
vaddr1 Egy virtuális készülék régi címe
vaddr2 Egy virtuális készülék új címe
Tdevtyp Temporális (ideiglenes) lemezterületet definiálunk. Ez a terület legkésőbb a LOGOFF parancs használatakor törlődik.
nnnn A definiálandó terület mérete, cilinderben (CKD) vagy blokkban (FBA lemezeknél).
DETach { vaddr [vaddr...] }
{ vaddr-vaddr }
Ezzel a paranccsal lehet elengedni a virtuális gép valamelyik
perifériáját. Ha egy ideiglenes minidiszket engedünk el, akkor az
törlődik.
Dial userid
Ezt a parancsot a LOGON helyett használhatjuk abban az esetben,
ha rá akarunk kapcsolódni egy virtuális gépen futó operációs rendszer
virtuálist termináljára.
DISConnect
Ez a parancs is kijelentkeztet, de úgy, hogy a virtuális
gépünk megmarad ún. diszkonnektált üzemmódban. Ez azt jelenti, hogy
minden program mindaddig tovább fut rajta, míg nem kezd el egy konzol
(terminál) inputra várakozni. Ekkor ugyanis a rendszer 15 perc
elteltével automatikusan kiadja a LOGOFF parancsot.
EXTernal [ code ]
Egy külső megszakítást szimulálhatunk vele. A megszakítás kódja
code lesz. Ha a code paramétert nem adjuk meg, akkor a processzor
interrupt gombját szimulálja.
INDicate [ LOAD | USER ]
A rendszer erőforrások kihasználtságáról tájékoztat. A paraméterek az
alábbiakat jelentik:
LOAD A rendszer CPU, valós tár, stb. kihasználtságáról ad tájékoztatást.
USER A parancsot kiadó felhaználó által felhasznált CPU időt, a
ki/belapozott lapok számát, a belovasott/kiírt spool sorok számát, stb.
adja meg.
IPL { vaddr } [ CLear ] [ STOP ] [ PARM p1 [
p2... ]]
{ sysname } [ PARM p1 [ p2... ]]
Ezzel a paranccsal lehet a virtuális gépbe pl. egy operációs
rendszert betölteni. Az operációs rendszer vagy egy vaddr című
virtuális készülékről, vagy a sysname paraméterrel egyező nevű NSS-ből
jön. Paraméterek:
vaddr Az IPL programot tartalmazó virtuális készülék címe.
sysname Egy NSS neve, amely a kért rendszert tartalmazza.
CLear A virtuális tárat a betöltés előtt nullázni kell.
STOP Az IPL folyamata után (de a program elindulása előtt) a virtuális gépet stop állapotba kell tenni (CP READ).
PARM Az IPL-el betöltöttt programnak átadandó paraméter(ek)
Néhány speciális paraméter a CMS-hez:
AUTOCR A virtuális gép az IPL CMS után nem kerül VM READ állapotba.
FILEPOOL filepoolid A CMS a filepoolid file poolt fogja accessálni a 191-es diszk helyett.
NOSPROF A CMS az IPL után nem hajtja végre a SYSPROF EXEC nevű procedúrát.
SAVESYS sysname
A sysname nevű NSS-be menti el az IPL-ezett rendszert. Általában csak
vaddr esetén működik helyesen.
LINK [TO] userid vaddr1 [AS] vaddr2 [mode]
A LINK parancs egy másik virtuális gép minidiszkjének az elérésére
szolgál. Paraméterei:
userid A minidiszk tulajdonosa
vaddr1 A minidiszk cime a tulajdonos virtuális gépén
vaddr2 A minidiszk cime azon a virtuális gépen, ahol a LINK parancsot kiadtuk.
mode Az elérés módja. Néhány hasznos elérési mód:
RR Csak olvasásra, mindenképp.
MR Irásra, ha más csak olvassa. Ha más már írja, akkor olvasásra
R Olvasásra, ha más nem írja. Egyébként nem kérjük az elérést.
W Írásra, ha más egyáltalán nem használja (azaz nem "linkeli").
MW Mindenképpen írásra (Figyelem! CMS esetén NE használjuk!!!)
Logon userid [password] [Noipl]
Ez a parancs arra szolgál, hogy bejelentkezzünk a VM/ESA
operációs rendszerbe egy saját virtuális gépre. Ha az adott virtuális
gép nincs bejelentkezve, akkor a rendszer létrehozza azt a VM
directory alapján. Ebben az esetben használhatjuk a NOIPL paramétert,
ami letiltja az automatikus IPL-t.
Ha az adott virtuális gép már fut a rendszerben diszkonnektált
állapotban, akkor csak hozzákapcsolja azt a bejelentkezést végző
terminálhoz.
LOGoff
Ez a parancs kijelentkeztet, és megszünteti a virtuális gépet.
A virtuális gépen futó minden program azonnal törlődik.
{Message } { userid } msgtext
{MSG } { OPerator }
{ * }
Üzenetet küld egy virtuális gépnek. Ha az be van jelentkezve, akkor
az üzenet megjelenik a virtuális konzolon.
ORDer { Reader } { CLass c1 CLass c2 ... }
{ Printer } { FORM form1 FORM form2 ... }
{ PUnch } { DEST dest1 DEST dest2 ...
}
{ spoolid1 spoolid2 ...
}
A spool file-ok feldolgozási sorrendjét definiálhatjuk vele. A
feldolgozás sorrendje azonos lesz az ORDER parancs által definiált
sorrenddel. Azok a file-ok, melyekre nem vonatkozik az ORDER parancs,
csak azután kerülnek sorra, miután az ORDER-ben jelzett file-ok
elfogytak. A paraméterek jelentése:
c1, c2, A parancs a spool osztályokra vonatkozik
form1, form2 A parancs a form értékek alapján dolgozik
dest1, dest2 A parancs a destination azonosító alapján dolgozik
spoolid1, spoolid2 A parancs a megadott spool file számok alapján dolgozik.
PURge { Reader } { CLass c1 CLass c2 ... }
{ Printer } { FORM form1 FORM form2 ... }
{ PUnch } { DEST dest1 DEST dest2 ...
}
{ ALL } { spoolid1 spoolid2 ... }
{ ALL }
Kitörli a megadott paraméterekkel rendelkező spool file(oka)t.
ALL ALL megadása esetén az összes saját spool file-t kitörli.
Query { LOGmsg }
{ Names }
{ Users } [ userid ]
A QUERY paranccsal a paramétereitől függő dolgokat kérdezhetünk le a
rendszertől:
LOGmsg A SET LOGMSG paranccsal definiált üzeneteket kérdezhetjük le. Ezen üzenetek egy része (vagy mind) megjelenhet a LOGON parancs használata után is.
Names A bejelentkezett felhasználók azonosítóinak listáját adja ki.
Users Vagy a bejelentkezett virtuális gépek számát adja meg,
vagy pedig a userid megadása esetén azt, hogy ez a felhasználó be
van-e jelentkezve vagy sem.
QUERY { CPLEVEL }
{ CPUID }
{ Files(1) }
{ Links vaddr }
{ PF [nn] }
{ Printer(2) }
{ Punch(2) }
{ Reader(2) }
{ SCReen }
{ Set }
{ TERMinal }
{ Time }
{ USERID }
{ [Virtual] [ ALL | }
CHannels | }
CONsole | }
DAsd | }
GRaf | }
STORage | }
TApes | }
UR | }
vaddr [-vaddr]]}
CPLEVEL A CP verziószámát adja meg.
CPUID A CPU azonosító számát adja meg.
Files Megadja, hogy mennyi file-unk van a spoolban. (1) Megadhatóak még a CLASS, FORM, DEST, HOLD/NOHOLD paraméterek is, amelyek a spool file-ok szelektálását teszik lehetővé.
Links vaddr Megadja, hogy a vaddr cimű minidiszkünket kik link-elik.
PF [nn] Kiírja az PFnn gomb definícióját. Ha nem adjuk meg az nn paramétert, akkor az összes funkciógomb definicióját kiírja.
Printer
PUnch
Reader A kívánt spool file-okra vonatkozó információkat írja ki. (2) Megadható még az ALL paraméter. Ekkor a spool file-ok neveit is kiírja a rendszer. Ezen kívül használhatóak még a FILES paraméternél (1) pontban felsorolt dolgok is.
SCReen A képernyő színeinek definícióit adja meg. Ezeket a CP SCREEN paranccsal állíthatjuk be.
Set A CP SET paranccsal beállított értékeket adja vissza. Ezek az értékek jellemzik a virtuális gép üzemmódját.
TERMinal A CP TERM paranccsal beállított értékeket adja vissza. Ezek a terminál működésmódját jellemzik.
Time Kiírja a (pontos) időt és a dátumot.
USERID A felhasználói azonosítót írja ki.
Virtual A virtiális gépünk konfigurációját irja ki.
ALL A teljes konfigurációt kiírja
CHannels A virtuális csatornák tipusát (BMX, SEL) adja meg.
CONsole A virtuális konzolcímet és egyéb információkat ad meg.
DAsd A virtuális lemezeinket sorolja fel.
GRaf A virtuális termináljainkat sorolja fel.
STORage A virtuális tárunk méretét írja ki.
TApes A nálunk lévő mágnesszalag készülékek címét adja meg.
UR A virtuális RDR, PRT és PUN egységeket listázza ki.
vaddr [-vaddr]
A vaddr virtuális címen (címeken) lévő készüléket írja ki.
REWind vaddr
A vaddr mágnesszalagos egységen visszacsévéli a mágnesszalagot a
betöltési pontra. A parancs asszinkron módon hajtódik végre.
SCREen {area [{extcolor } {exthilight} ]} ...
{ [{DEFAULT } {NONE} ]}
A SCREEN paranccsal tudjuk beállítani a képernyő színeit. Az
area paraméter értékei:
ALL Minden mező színét beállítjuk
INArea Az input terület színét állítjuk át.
STAtarea A status területről (more..., stb.) van szó.
OUTarea Az output területet jelzi
CPOut A CP által kiírt üzeneteket jelzi.
VMOut A virtuális gépen futó program (pl. CMS) üzenetei.
INRedisp Az input parancsok újrakiírását jelzi.
Az extcolor lehetséges értékei:
SET { CONceal ON|OFF } { MSG ON|OFF } { PFnn pfkeydef } { RUN ON|OFF } { TIMER ON|OFF|REAL }A SET paranccsal a virtuális gép paramétereit állíthajuk be. Itt csak a leglényegesebb paramétereket kölöm:
CONceal Un. védett környezetet állít be. Ha ON-ra állítom, akkor a PA1 hatástalan lesz, azaz nem megy CP READ üzemmódba a virtuális gép. Ha a CMS abortál, a CP automatikusan beIPL-ezi újra.
MSG ON|OFF Ezzel beállíthatjuk, hogy a virtuális gépünk fogad-e üzeneteket, vagy sem.
PFnn A funkciógombokat tudjuk definiálni az alábbiak szerint:
nn A funkciógomb száma, 1-24 között.
pfkeydef [ IMMed|DELayed ] command
IMMed A definíciót a gomb megnyomásakor azonnal végre kell hajtani.
DELayed A definíciót meg kell jeleníteni az input sorban.
command A funkcióbillentyűre definiált CP vagy CMS parancs.
RUN ON|OFF Ezzel beállíthatjuk, hogy a virtuális gép fusson-e a CP parancsok végrehajtása alatt, vagy sem. Pl., RUN ON esetén, ha megnyomjuk a PA1 gombot, akkor a virtuális gép ugyanúgy CP READ állapotba kerül, mint RUN OFF esetén. A különbség az, hogy RUN ON esetén a futás nem szünetel, a virtuális gép nem kerül stop állapotba.
TIMER ON|OFF|REAL A virtuális intervallum timer működését állitja be.
ON A timer az elfogyasztott CPU időt méri.
OFF A timer nem működik.
REAL
A timer a valós időt méri.
SLeep [nn] [SEC|MIN|HRs]
A parancs hatására a virtuális gép nn másodpercet, percet, órát
várakozik, majd befejeződik. Ha nem adunk meg paramétert, akkor
időzítés nélkül várakozik. A várakozást minden esetben megszakíthatjuk a
PA1 vagy az ENTER megnyomásával. A várakozás alatt CP parancsok
kiadhatók.
SPool { Reader } {[CLASS c|*] [CONT|NOCONT] }
{ vaddri } {[HOLD|NOHOLD] [EOF|NOEOF] }
{ Printer } {[[TO] [uid|*|SYSTEM]] }
{ PUnch } {[HOLD|NOHOLD] [CLass c] }
{ CONsole } {[CONt|NOCont] [COpy nnn] }
{ vaddro } {[CLOSE|PURGE] [STArt|STop] }
{[TERM|NOTERM] }
A SPOOL parancs segítségével beállíthatjuk egy spool által
szimulált virtuális periféria paramétereit. Ezek a következők:
Reader A parancs a reader-re vonatkozik
CLASS c|* A virtuális periféria ilyen osztályú file-okat állít elő, illetve olva be. * megadása esetén (csak RDR-re) minden osztályt beolvas válogatás nélkül.
vaddri Egy virtuális RDR címe.
EOF|NOEOF A reader adjon-e a spool file-ok feldolgozása után end-of-file jelzést, vagy sem. NOEOF esetén nem keletkezik EOF jelzés a programban, hanem egy "beavatkozás szükséges" ha az RDR kiürült.
CONt|NOCont A file-okat egyenként kívánjuk feldolgozni (NOCONT), vagy egyszerre (CONT). NOCONT esetén minden egyes file után kapunk egy EOF jelzést, míg CONT esetén csak akkor, ha az RDR kiürült.
HOld|NOHold A beolvasásó művelet végén a spool file holdÄolódjék, vagy törlődjék a spoolÄból.
Printer A parancs a printerre vonatkozik.
PUnch A parancs a lyukasztóra vonatkozik.
Console A parancs a konzolra vonatkozik
vaddro Egy virtuális output (spool) berendezés címe.
userid A spool file-t az userid virtuális gép RDR-ére irányítjuk.
* A spool file-t a saját RDR-ünkre irányítjuk.
SYSTEM A spool file-t a SYSTEM-hez irányítjuk. Ez azt jelenti, hogy pl. a printerünkre küldött file mindaddig a mi print file-unk marad, amíg a rendszernyomtató ki nem választja nyomtatásra, vagy ki nem töröljük.
HOLD A spool file az elkészülés után HOLD állapotba kerül.
CONT A file nem záródik le és nem készül el a programból kiadott close hatására, hanem megnyitva marad. Ilyenkor több paranccsal (vagy programmal) is írhatunk ugyanabba a spool file-ba. A spool file csak akkor záródik le, ha a SPOOL dev CLOSE parancsot kiadjuk.
CLOSE A spool file lezáródik, és önállóan mozgatható egységgé válik.
COpy nnn Az output nnn példányban nyomtatódik.
PURGE A spool file lezáródik és törlődik.
START (csak konzolnál) A konzolra kerülő output bekerül a spoolba is.
STOP A konzolra kerülő output nem kerül be a spoolba.
NOTERM A konzol output csak a spoolba kerül (START esetén), a
terminálra nem. STOP esetén hatástalan.
SYStem CLEAR|RESET|RESTART
A parancs a paraméterétől függő funkciót lát el:
CLEAR Törli a virtuális tárat, a regisztereket, a csatornákat és a PSWÄt. A virtuális gépet alapállapotba hozza, és "hard stop"-ba teszi.
RESET A virtuális gépet alaphelyzetbe hozza, törli az összes csatornát, és a virtuális CPU "hard stop"Äba kerül.
RESTART Szimulál egy normál restart-ot. (A PSW-be betölti a RESTART NEW
PSW-t.)
TAG DEv {Printer } tagtext
{PUnch }
{CONsole }
{vaddr }
FIle spoolid tagtext
QUery {DEV {Printer }
{ {PUnch }
{ {CONsole }
{ {vaddr }
{FIle spoolid }
Ez a parancs az ún. "tag" információk beállítására és
lekérdezésére szolgál. Ezeket az információkat pl. az RSCS használja a
hálózati címek és egyéb dolgok tárolására.
Printer A parancs a printerre vonatkozik.
PUnch A parancs a lyukasztóra vonatkozik.
Console A parancs a konzolra vonatkozik
vaddro Egy virtuális output (spool) berendezés címe.
tagtext Szöveges információ. (Pl. egy RSCS printer neve).
TERMinal {MODE VM|CP }
{CONmode 3215|3270 }
{LINEND char|ON|OFF }
{LINESize nnn }
A terminál parancs a terminálunk karakterisztikájának
megváltoztatására szolgál. Itt csak néhány paraméterét ismertetem:
MODE A parancsokat a CP fogadja (CP), vagy a virtuális gépen futó program (VM).
CONmode A terminál üzemmódja. CMS használata esetén 3215-öt kell megadni.
LINEND Definiálhatunk egy karaktert (char), amely az input sor végét jelzi. Az alapértelmezés a # jel. Ezzel lehetővé válik, hogy egy sorban több parancsot is beírjunk. OFF hatására kikapcsol, ON hatására bekapcsol.
LINESize A terminál sorainak hosszát definiálja. Igazi
jelentőséggel csak TTY terminálok esetén bír.
TRANsfer [dev1] {spoolid } {[TO] {* } } {
}
{CLass c } { {userid } } {
}
{FORM form } { } {dev2 }
{DEST dest } {From {ALL } } { }
{ALL } { {userid } } { }
E parancs segítségével tudjuk a spool file-jainkat átküldeni
vagy visszavenni más felhasználóknak(tól).
dev1 és dev2 : a spool file-ok tipusa:
Reader
Printer
PUnch
TO A spool file-ok a userid azonosítójú virtuális gépre mennek.
From A spool file-ok a userid azonosítójú géptől jönnek vissza. ALL megadása esetén visszakapjuk az összes általunk küldött spool file-t, ami csak a rendszerben található.