VM parancsok

A VM/ESA használata és vezérlése

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:

A CP parancsok ismertetése

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:

Az exthilight é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ó.