.COM {estoj fajl
.COM 12	oktqbrq	1984
.COM sistemnaq ob'ektnaq biblioteka
.CPT sistemnaq ob'ektnaq biblioteka
.LIN
w dannom razdele predstawleny podprogrammy i funkcii,
kotorye	obespe~iwa`t dostup programmam,	napisannym na
qzykah fortran i paskalx, k sredstwam monitorow
operacionnoj sistemy i drugie serwisnye	wozmovnosti.
.HLV 1
operacii s katalogami
.HLV 2
podprogrammy CLOSEC/ICLOSE
.LIN
podprogramma CLOSEC prednazna~ena dlq zawer{eniq raboty	na ukazannom
kanale i oswobovdeniq ego dlq drugoj operacii. drajwer
ustrojstwa, na kotorom byl otkryt kanal, dolven
nahoditxsq w pamqti. podprogrammu
CLOSEC nelxzq wyzywatx iz podprogramm zawer{eniq i obrabotki
prerywaniq.
.LIN
obra}enie k podprogramme CLOSEC:
.SWT
     CALL CLOSEC (CHAN[,I])
   ili
     I=CLOSEC (CHAN)
.LIN
obra}enie k podprogramme ICLOSE:
.SWT
     CALL ICLOSE (CHAN[,I])
   ili
     I=ICLOSE (CHAN)
.BLN
gde
.DFN CHAN
nomer zakrywaemogo kanala; oblastx pamqti, w kotoroj razme}en
|tot parametr,
ne dolvna perekrywatxsq	pri swopinge USR;
.DFN I
sodervit 0 ili kod o{ibki, wozwra}aemoj	w slu~ae popytki naru{eniq
za}ity fajlow ot udaleniq.
.LIN
podprogrammy CLOSEC ili	PURGE dolvny wyzywatxsq	pri
opredelennyh obstoqtelxstwah dlq l`bogo	kanala,
otkrytogo dlq
wwoda ili wywoda. esli w ka~estwe parametra ukazan
neotkrytyj kanal, wyzow	podprogrammy CLOSEC ignoriruetsq.
.LIN
esli podprogramma CLOSEC primenqetsq k fajlu,
otkrytomu podprogrammoj	IENTER,
proishodit obnowlenie kataloga ustrojstwa,  posle
~ego fajl stanowitsq postoqnnym.
esli katalog ustrojstwa, swqzannogo s ukazannym	kanalom, uve
sodervit fajl s	tem ve imenem i	tipom fajla, to	staryj fajl udalqetsq, a
nowyj fajl stanowitsq postoqnnym.
esli uve su}estwu`}ij fajl za}i}en ot udaleniq,	to wydaetsq soob}enie
ob o{ibke. primenenie podprogrammy CLOSEC k fajlu,
otkrytomu wyzowom LOOKUP, ne wyzywaet izmeneniq	w kataloge.
.LIN
esli sozdannyj po IENTER fajl zakrywaetsq podprogrammoj	CLOSEC,	to ego
dlina opredelqetsq koli~estwom zapolnennyh blokow. naprimer, esli
fajl zapisan w blok s nomerom 0, to dlina fajla	1, esli
w fajl ni~ego ne bylo zapisano,	to emu sootwetstwuet dlina 0. esli dlina
fajla menx{e razmera zony, wydelennoj
wo wremq wypolneniq wyzowa IENTER, to neispolxzowannye bloki
na ustrojstwe ob'qwlq`tsq swobodnym prostranstwom <UNUSED>.
.TES 5
.LIN
rezulxtaty:
.SWT
	I= 0 - oby~nyj wyhod;

	I=-4 - za}i}ennyj fajl s takim imenem uve
	       su}estwuet na ustrojstwe;
	       wypolnqetsq podprogramma	CLOSEC;	w
	       rezulxtate na ustrojstwe	okazywa`tsq
	       dwa fajla s odnim imenem.
.LIN
primer pokazywaet formirowanie i obrabotku fajla iz 56 blokow.
.LIN
primer.
.SWT
	  REAL*4 DBLK (2)
	  DATA DBLK/6RSY0NEW,6RFILDAT/
	  DATA ISIZE/56/
	   . . .
	  ICHAN=IGETC()
	  IF(ICHAN.LT.0) GOTO 100
	  IERR=IENTER(ICHAN,DBLK,ISIZE)
	  IF(IERR.GE.0)	GOTO 10
	  GOTO (110,120,130) IABS(IERR)
      10   . . .
	   . . .
	  CALL ICLOSE (ICHAN,IERR)
	  IF (IERR.EQ.-4) GOTO 140
	  CALL IFREEC (ICHAN)
	  CALL EXIT
      100 STOP 'net swobodnyh kanalow'
      110 STOP 'kanal uve ispolxzuetsq'
      120 STOP 'na ustrojstwe malo mesta'
      130 STOP 'ustrojstwo zanqto'
      140 STOP 'za}i}ennyj fajl	uve su}estwuet'
	  END
.HLV 2
funkciq	IDELET
.LIN
funkciq	IDELET prednazna~ena dlq udaleniq ukazannogo fajla s
ukazannogo ustrojstwa. poskolxku |ta programma peredaet	informaci` w
USR, neobhodimo	pomnitx	o tom, ~to parametry funkcii IDELET dolvny
raspolagatxsq tak, ~toby oni ne	perekrywalisx pri swopinge USR.
funkciq	IDELET ne
movet wyzywatxsq iz podprogrammy zawer{eniq ili	obrabotki prerywaniq.
.LIN
obra}enie k funkcii:
.SWT
	I=IDELET (CHAN,DBLK[,SEGNUM])
.BLN
gde
.DFN CHAN
nomer kanala, kotoryj budet ispolxzowatxsq dlq udaleniq	fajla;
|tot nomer dolven bytx polu~en pri pomo}i IGETC	ili, esli
pPedwaritelxno byla wyzwana  ICDEN, movno  ispolxzowatx	kanaly
s nomerami  16	(desqti~noe) i wy{e;
.DFN DBLK
specifikaciq iskl`~aemogo fajla	(DEV:FILNAM.TYP), sostoq}aq iz
~etyreh	slow w kode  RADIX-50;
.DFN SEGNUM
nomer fajla dlq	operacij na kassetnyh magnitnyh	lentah;
esli |tot parametr ne ukazan, to ego zna~enie predpolagaetsq
rawnym nul`; dlq operacij s magnitnymi
lentami	on opisywaet nomer fajla, kotoryj movet
prinimatx odno iz sledu`}ih zna~enij:
.DF2 -1
|to zna~enie zapre}aet
peremotku lenty	w na~alo; poisk	imeni fajla wedetsq ot teku}ego
poloveniq lenty; esli teku}ee polovenie	lenty
neizwestno, to proizwoditsq obratnaq peremotka do teh por,
poka ne	wstretitsq metka EOF; zapre}aetsq
ispolxzowanie l`bogo drugogo otricatelxnogo zna~eniq, t.k. wse
drugie otricatelxnye zna~eniq zarezerwirowany;
.DF2 0
pri |tom zna~enii magnitnaq lenta
perematywaetsq w na~alo, a zatem dwivetsq wpered, poka ne budet	najdeno
imq fajla;
.DF2 N
l`boe polovitelxnoe ~islo; pozicioniruet magnitnu` lentu na fajl s
posledowatelxnym nomerom N na lente;
esli posledowatelxnyj nomer fajla (FSN)	bolx{e dwuh,
to proishodit predwaritelxnaq peremotka	w na~alo, a zatem prqmoj poisk;
esli bolx{e dwuh, to proishodit	obratnaq peremotka k fajlu.
.LIN
posle wypolneniq funkcii IDELET	ukazannyj kanal	oswobovdaetsq. funkciq
IDELET trebuet,	~toby ispolxzuemyj drajwer ustrojstwa
nahodilsq w operatiwnoj	pamqti (|to dostigaetsq	s pomo}x` wyzowa IFETCH
ili komandoj LOAD s terminala).	otmetim, ~to esli drajwer ustrojstwa
ne rezidenten w	ozu, to	proishodit o{ibka monitora. bolee detalxno
udalenie fajlow	iz kataloga ustrojstwa opisano w
sistemnoj makrokomande .DELETE.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - ukazannyj kanal uve otkryt;
     I=2 - ukazannyj fajl ne najden;
     I=3 - ustrojstwo zanqto;
     I=4 - fajl	za}i}en	i ne movet bytx	stert.
.LIN
w primere fajl pod imenem FTN5.DAT udalqetsq s ustrojstwa SY0:.
.LIN
primer.
.SWT
	  REAL*4 FILNAM	(2)
	  DATA FILNAM /6RSY0FTN,6R5  DAT/
	   . . .
	  I=IGETC ()
	  IF(I.LT.0)STOP  'net kanala'
	  CALL IDELET (I,FILNAM)
	  CALL IFREEC (I)
.HLV 2
funkciq	IENTER
.LIN
funkciq	IENTER wydelqet	oblastx	na ukazannom ustrojstwe	i formiruet
w kataloge nositelq wremennu` zapisx dlq nazwannogo fajla.
esli na	ukazannom ustrojstwe uve su}estwuet fajl s takim imenem,
to on ne iskl`~aetsq do	teh por, poka wremennaq	zapisx w kataloge
ne budet preobrazowana w postoqnnu` zapisx pri pomo}i CLOSEC ili
ICLOSE.
|tomu wremennomu fajlu stawitsq	w sootwetstwie ukazannyj nomer
kanala.	podprogramma IENTER pri	rabote obra}aetsq k USR.
.LIN
obra}enie k funkcii:
.SWT
	I=IENTER (CHAN,DBLK,LENGTH[,SEGNUM])
.BLN
gde
.DFN CHAN
nomer kanala (celoe ~islo), kotoryj swqzywaetsq	 s fajlom;
|tot nomer dolven bytx polu~en	pri pomo}i IGETC ili,
esli predwaritelxno byla wyzwana ISDFN,	movno ispolxzowatx
kanaly s nomerami 16 (desqti~noe) i wy{e;
.DFN DBLK
specifikaciq fajla, sostoq}qq iz ~etyreh slow w	kode RADIX-50;
.DFN LENGTH
celoe ~islo blokow, wydelqemyh pod fajl;
esli weli~ina, ukazywa`}aq dlinu, rawna	nul`,
to dlq zapisi fajla wydelqetsq polowina
naibolx{ego swobodnogo prostranstwa <UNUSED> ili wesx
sledu`}ij po weli~ine <UNUSED>;	esli
weli~ina, ukazywa`}aq dlinu, rawna -1, to dlq
zapisi fajla wydelqetsq	naibolx{ij
<UNUSED>; (sm. p. 7.1.3);
.DFN SEGNUM
nomer fajla na kassetnyh nakopitelqh na
magnitnyh lentah; esli |tot parametr ne	ukazan,
on prinimaetsq rawnym nul`; dlq	magnitnoj
lenty on opisywaet posledowatelxnyj nomer fajla; parametr
movet imetx sledu`}ie zna~eniq:
.DF2 -2
obozna~aet peremotku magnitnoj lenty w na~alo i	poisk
w prqmom naprawlenii poka ne budet najdeno imq fajla
ili logi~eskij konec lenty (LEOT);
.DF2 -1
obozna~aet pereme}enie k zapisi
LEOT i otkrytie	wyhodnogo fajla;
.DF2 0
obozna~aet peremotku lenty w na~alo i prosmotr w prqmom	naprawlenii
poka ne	budet najdeno imq fajla	ili ne obnaruven LEOT; esli
imq fajla budet	najdeno, generiruetsq kod o{ibki; esli fajl
ne budet najden, to on budet sozdan.
.DF2 N
ozna~aet ustanowku magnitnoj lenty na
na~alo fajla s posledowatelxnym	nomerom	N, esli
imq fajla ne pusto; esli
posledowatelxnyj nomer fajla bolx{e dwuh,
to predwaritelxno proishodit peremotka lenty w na~alo;
w protiwnom slu~ae proishodit obratnaq peremotka k fajlu.
.LIN
prime~aniq:
.LIN 0
1. funkci` IENTER nelxzq wyzywatx w podprogrammah zawer{eniq i
obrabotki prerywaniq.
.LIN 0
2. funkciq IENTER trebuet, ~toby w pamqti nahodilsq drajwer
sootwetstwu`}ego ustrojstwa.
.LIN 0
3. parametry funkcii dolvny raspolagatxsq w pamqti
wne oblasti swopinga USR.
.LIN
bolee podrobno o formirowanii zapisi w kataloge	o wremennom fajle skazano w
opisanii sistemnoj makrokomandy	.ENTER.
.LIN
rezulxtaty funkcii:
.SWT
     I=	N - oby~nyj wyhod: N - ~islo wydelennyh	blokow
	    (N=0 dlq funkcii   IENTER,	 primenennoj  k
	    ustrojstwu s nefajlowoj strukturoj);

     I=-1 - kanal (CHAN) zanqt;
     I=-2 - dlq	zapisi fajla s ukazannoj dlinoj	 ne  bylo
	    obnaruveno <UNUSED>	bolx{ego   ili	 rawnogo
	    ukazannoj dline;
     I=-3 - ustrojstwo zanqto;
     I=-4 - fajl s ukazannym imenem uve	su}estwuet i
	    za}i}en;
     I=-5 - fajl s ukazannym posledowatelxnym nomerom
	    ne najden.
.LIN
w primere nazna~aetsq kanal dlq	fajla TEMP.TMP na ustrojstwe SY0:.
esli net swobodnogo kanala, to programma pe~ataet soob}enie i
ostanawliwaetsq.
.LIN
primer.
.SWT
	   REAL*4 DBLK (2)
	   DATA	DBLK/6RSY0TEM,6RP TMP/
	   ICHAN=IGETC ()
	   IF (ICHAN.LT.0) STOP	 'net swobodnogo kanala'
 C
 C	   sozdanie wremennogo rabo~ego	fajla
 C
	   IF (IENTER(ICHAN,DBLK,20).LT.0)
       *   STOP	'o{ibka	sozdaniq fajla'
	     . . .
	   CALL	PURGE (ICHAN)
	   CALL	IFREEC (ICHAN)
	   END
.HLV 2
funkciq	IRENAM
.LIN
funkciq	IRENAM prednazna~ena dlq izmeneniq imeni ukazannogo
fajla. o{ibka woznikaet	w slu~ae, esli ukazannyj kanal uve otkryt.
.LIN
obra}enie k funkcii:
.SWT
	I=IRENAM (CHAN,DBLK)
.BLN
gde
.DFN CHAN
nomer kanala (celoe), ispolxzuemogo w operacii;	|tot
nomer dolven bytx polu~en pri pomo}i IGETC ili,
esli predwaritelxno byla wyzwana ICDFN,	movno
ispolxzowatx kanaly s nomerami 16 (desqti~noe) i
wy{e; kanal wnowx budet	dostupen dlq ispolxzowaniq
posle wypolneniq operacii pereimenowaniq;
.DFN DBLK
8-slownaq zona,	soderva}aq specifikaci`	su}estwu`}ego
fajla i	ego nowu` specifikaci`;	|ta zona
rassmatriwaetsq	w wide celogo massiwa tipa INTEGER*2 iz	8 |lementow;
DBLK imeet formu:
.SWT
	1-4 slowa - qwlq`tsq opisatelem	w
		    RADIX-50 starogo imeni fajla;
	5-8 slowa - qwlq`tsq opisatelem	w
		    RADIX-50 nowogo imeni fajla.
.LIN
parametry funkcii IRENAM dolvny	raspolagatxsq w	pamqti tak, ~toby
oni ne perekrywalisx s USR pri swopinge.
.LIN
esli na	ukazannom ustrojstwe uve su}estwuet fajl s imenem,
sowpada`}im s nowym imenem fajla,
to |tot	fajl udalqetsq.
po zawer{enii funkcii IRENAM ukazannyj kanal ostaetsq zakrytym
(t.e. swobodnym).
.LIN
funkciq	IRENAM trebuet,	~toby ispolxzuemyj drajwer uprawleniq ustrojstwom
nahodilsq w operatiwnoj	pamqti w moment	wypolneniq |toj	funkcii. esli ego
tam net, to woznikaet o{ibka monitora. imena ustrojstw,	ukazannye w
opisatelqh fajlow, dolvny sowpadatx.
.LIN
bolee podrobno o pereimenowywanii fajlow skazano w opisanii
sistemnoj makrokomandy .RENAME.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - ukazannyj kanal uve otkryt;
     I=2 - zadannyj fajl ne najden;
     I=3 - fajl	s ukazannym imenem uve su}estwuet i
	   za}i}en.
.LIN
primer.
.SWT
	REAL*8 NAME (2)
	DATA NAME /12RRK0FTN2  DAT,12RRK0FTN2  oLD/
	 . . .

	ICHAN=IGETC ( )
	IF(ICHAN.LT.0) STOP  'net kanala'
	CALL IRENAM(ICHAN,NAME)	 !sohranitx staryj fajl
 C				 dannyh
	CALL IFREEC (ICHAN)
.HLV 2
funkciq	LOOKUP
.LIN
funkciq	LOOKUP swqzywaet zadannyj kanal	s ustrojstwom i/ili fajlom
dlq wypolneniq operacij	wwoda/wywoda. ispolxzuemyj kanal s~itaetsq
zanqtym	do teh por, poka ne budet wypolnena odna iz sledu`}ih funkcij:
.SWT
	  CLOSEC ili ICLOSE
	  ISAVES
	  PURGE
.LIN
obra}enie k funkcii:
.LIN
.SWT
     I = LOOKUP	(CHAN,DBLK[,COUNT,SEGNUM])
   ili
     I = LOOKUP	(CHAN,JOBDES)
.BLN
gde
.DFN CHAN
nomer kanala (celoe), kotoryj neobhodimo swqzatx s fajlom ili ustrojstwom;
|tot nomer kanala dolven bytx polu~en pri pomo}i IGETC
ili, esli predwaritelxno byla wyzwana ICDFN, movno ispolxzowatx
kanaly s nomerami 16 (desqti~noe) i wy{e;
.DFN DBLK
specifikaciq fajla ili ustrojstwa, sostoq}qq iz	~etyreh	slow w RADIX-50;
sleduet	otmetitx, ~to esli USR perekroet pri swopinge |ti ~etyre slowa,	to
rezulxtat nepredskazuem;
.DFN COUNT
parametr, ispolxzuemyj dlq uprawleniq kasetnoj
magnitnoj lentoj, po umol~ani`	rawen 0;
.DFN SEGNUM
nomer fajla; pri rabote	s kasetnoj magnitnoj lentoj,
esli |tot argument opu}en, on predpolagaetsq rawnym 0;
dlq magnitnoj lenty on opisywaet posledowatelxnyj nomer
fajla; predprinimaemye dejstwiq	zawisqt	ot togo, ukazano
li imq fajla; posledowatelxnyj nomer movet imetx
sledu`}ie zna~eniq:
.DF2 -1
otmenqet peremotku k na~alu lenty, poisk osu}estwlqetsq
ot teku}ej pozicii; esli imq fajla zadano, wypolnqetsq
LOOKUP fajlowogo tipa (bez peremotki w na~alo);
esli imq fajla pusto, wypolnqetsq nefajlowyj LOOKUP
(lenta ne dwivetsq); ispolxzowanie otricatelxnyh
zna~enij, otli~nyh ot -1, zapre}eno;
.DF2 0
peremotka w na~alo lenty i wypolnenie nefajlowogo
otkrytiq lenty;
.DF2 N
l`boe polovitelxnoe ~islo; pozicioniruet lentu na fajl
s posledowatelxnym nomerom N i prowerqet sowpadenie imen;
esli imena ne sowpada`t, generiruetsq o{ibka; esli
imq fajla ne zadano, LOOKUP fajlowogo tipa proizwoditsq
dlq fajla, zadannogo SEGNUM;
.DFN JOBDES
argument, pozwolq`}ij ustanowitx swqzx mevdu zadaniqmi
w monitore so sredstwami sistemnyh zadanij; qwlqetsq
ukazatelem na ~etyrehslownyj blok opisaniq zadaniq,
kotoromu budut peredawatxsq ili	ot kotorogo budut
prinimatxsq soob}eniq:
.SWT
		JOBDES:	.RAD50 /MQ/
			.ASCII /LOGNAM/
	gde
.DF2 LOGNAM
imeet dlinu iz 6 simwolow; esli	ono opu}eno (T.E. wse nuli), to	kanal budet
otkryt tolxko dlq operacij ~teniq (.READ/.READC/.READW), i zaprosy na ~tenie
budut prinimatx	soob}enie iz l`bogo zadaniq.
.LIN
parametry funkcii LOOKUP dolvny	raspolagatxsq tak, ~toby oni ne
perekrywalisx s	USR pri	swopinge.
pri wypolnenii funkcii LOOKUP w	operatiwnoj pamqti dolven nahoditxsq drajwer
uprawleniq ukazannym ustrojstwom.
.LIN
esli w specifikacii perwoe slowo
imeni fajla rawno 0, a ustrojstwo qwlqetsq ustrojstwom
fajlowoj struktury,
to na~alom "fajla" nazna~aetsq absol`tnyj nulewoj blok nositelq.
w |tom slu~ae, kotoryj nazywaetsq
nefajlowym otkrytiem kanala,
programma polu~aet dostup k

proizwolxnym fizi~eskim	blokam ustrojstwa.
esli pri |tom proizwodqtsq operacii wwoda/wywoda,
to fajlowaq struktura na ustrojstwe (katalog)
movet bytx razru{ena.
esli imq fajla
ukazano	dlq ustrojstwa,	ne ime`}ego fajlowoj struktury (naprimer,
LP:FILE.EXT-ustrojstwo pe~ati),	to imq ignoriruetsq.
.LIN
rezulxtaty funkcii:
.SWT
     I=N - oby~nyj wyhod iz funkcii, N rawen ~islu blokow
	   fajla (0 dlq	LOOKUP nefajlowoj struktury dlq
	   kassetnoj i magnitnoj lenty);

     I=-1 - zadannyj kanal uve otkryt;
     I=-2 - ukazannyj fajl na ustrojstwe ne najden;
     I=-3 - ustrojstwo ispolxzuetsq;
     I=-4 - ukazannyj lentoprotqvnyj mehanizm nedostupen.
.LIN
primery:
.SWT
      INTEGER*2	DBLK (4)
      DATA DBLK	/3RRK0,3RFTN,3R44 ,3RDAT/
       . . .
      ICHAN=IGETC ( )
      IF(ICHAN.LT.0)STOP  'kanal otsutstwuet'
      IF(IFETCH(DBLK).NE.0) STOP 'FETCH	ne uda~en'
      IF(LOOKUP(ICHAN,DBLK).LT.0) STOP 'LOOKUP ne uda~en'
       . . .
      CALL CLOSEC (ICHAN)
      CALL IFREEC (ICHAN)

.BLN
ili, ispolxzuq LOOKUP dlq sistemnogo zadaniq:
.SWT
      LOGICAL*1	JNAM (6)
      DIMENSION	JBLK (4)
      EQUIVALENCEN (JNAM,JBLK(2))
      DATA JNAM	/'Q','U','E','U','E',0/
      DATA JBLK	(1) /3RMQ /
       . . .
 C
 C    otkrytx kanal soob}enij dlq 'QUEUE'
 C
      ICHAN=IGETC ( )
      IF (LOOKUP (ICHAN, JBLK).LT.0)
     *	STOP 'QUEUE ne wyzwana'
       . . .
.HLV 1
operacii wwoda/wywoda
.HLV 2
funkcii	IREAD/IREADC/IREADF/IREADW
.LIN
IREAD/IREADC/IREADF/IREADW - ~etyre formy funkcii ~teniq informacii po
ukazannomu kanalu iz fajla w pamqtx. wypolnenie	|tih funkcij
trebuet	|lement	o~eredi, ~to
dolvno u~itywatxsq pri wypolnenii funkcii IQSET.
.HLV 3
funkciq	IREAD
.LIN
funkciq	IREAD ustanawliwaet zapros na ~tenie zadannogo ~isla
slow iz	fajla po
ukazannomu kanalu w o~eredx i nemedlenno wozwra}aet uprawlenie programme.
posle zawer{eniq pereda~i nikakih specialxnyh dejstwij ne wypolnqetsq.
.LIN
obra}enie k funkcii:
.SWT
	I=IREAD	(WCNT,BUF,BLK,CHAN)
.BLN
gde
.DFN WCNT
celoe; ~islo slow, kotoroe dolvno bytx peredano;
.DFN BUF
massiw,	ispolxzuemyj w ka~estwe	bufera;
|tot massiw dolven bytx	po dline ne menx{e
s~et~ika slow (WCNT);
.DFN BLK
nomer ~itaemogo	bloka ot na~ala	fajla;
perwyj blok fajla imeet	nomer 0; pri neobhodimosti
programma dolvna uweli~iwatx nomer bloka;
naprimer, esli programmoj pro~itano dwa	bloka,
to dlq ~teniq sledu`}ih	neobhodimo uweli~itx
BLK na 2;
.DFN CHAN
nomer ispolxzuemogo kanala.
.LIN
w slu~ae, kogda	programme trebuetsq dostup k
dannym,	~itaemym po ukazannomu kanalu, dolvna wyzywatxsq
funkciq	IWAIT.
|to garantiruet	zawer{enie operacii IREAD. esli	wo wremq pereda~i
proizo{la o{ibka, to nali~ie o{ibki pokazywaet funkciq IWAIT.
.LIN
rezulxtaty funkcii:
.SWT
    I=N	- oby~nyj  wyhod  iz  funkcii, N  rawno	 ~islu
	  pro~itannyh slow (0-pri ~tenii dannyh	s ustroj-
	  stwa nefajlowoj  struktury  i	 kratno	 256
	  (desqti~noe) pri ~tenii dannyh s ustrojstwa
	  fajlowoj struktury), naprimer:
.AND
esli s~et~ik slow kraten 256 i w fajle dostupno	slow menx{e,
~em ukazano w s~et~ike,	to N ukazywaet ~islo fakti~eski	s~itannyh slow;
naprimer, esli s~et~ik rawen 512, a w fajle ostalosx 256 slow, to
I=256;
.AND
esli s~et~ik slow ne kraten 256	i w fajle ostaetsq slow
bolx{e,	~em ukazano w s~et~ike,	to N okruglqetsq wwerh
do sledu`}ego bloka; naprimer, esli s~et~ik slow rawen 312, a w	fajle
ostalosx bolx{e	312 slow, to I=512, no s~itywaetsq tolxko 312 slow;
.AND
esli s~et~ik slow ne kraten 256	i w fajle ostaetsq slow
menx{e,	~em ukazano w s~et~ike,	to N rawno ~islu, kratnomu 256;
.SWT
    I=-1 - popytka s~itatx dannye posle	konca fajla;
    I=-2 - w kanale proizo{la apparatnaq o{ibka;
    I=-3 - ukazannyj kanal ne otkryt.
.ATT
esli w kanale (naprimer, IREAD)	pri asinhronnoj	 operacii bylo
obra}enie za predely fajla, to funkciq IWAIT ne	obnaruvit
|togo, T.K. IWAIT obnaruviwaet nali~ie tolxko apparatnyh
o{ibok.	posledu`}ej operaciej dlq |togo	kanala budet obnaruvenie
konca fajla i wyda~a polxzowatel` koda o{ibki EOF.
.LIN
primer.
.SWT
	  INTEGER*2 BUFFER(256),RCODE,BLK
	   . . .
	  RCODE=IREAD (256,BUFFER,BLK,ICHAN)
	  IF(RCODE+1) 1010,1000,10
       10  . . .
	  IF(IWAIT(ICHAN).NE.0)	GOTO 1010
	   . . .
     1000 CONTINUE
    C	    konec obrabotki fajla
	   . . .
	  CALL EXIT	     !estestwennyj konec programmy
     1010 STOP'neprawilxnoe s~itywanie'
	  END
.HLV 3
funkciq	IREADC
.LIN
funkciq	IREADC ustanawliwaet w o~eredx zapros na ~tenie
zadannogo ~isla	slow iz	fajla w	pamqtx po
ukazannomu kanalu i nemedlenno wozwra}aet uprawlenie
w wyzwaw{u` programmu:
posle zawer{eniq operacii
osnownaq programma prerywaetsq i zapuskaetsq
podprogramma na	qzyke makroassemblera w	ka~estwe asinhronnoj
podprogrammy zawer{eniq.
.LIN
obra}enie k funkcii:
.SWT
	I=IREADC (WCNT,BUF,BLK,CHAN,CRTN)
.BLN
gde
.DFN WCNT
celoe ~islo slow, kotoroe dolvno bytx peredano;
.DFN BUF
massiw,	ispolxzuemyj w ka~estwe	bufera;
|tot massiw dannyh dolven imetx	dlinu
ne menx{e, ~em ukazano w parametre WCNT;
.TES 3
.DFN BLK
nomer ~itaemogo	bloka ot na~ala	fajla;
programma oby~no uweli~iwaet BLK pered ego powtornym
ispolxzowaniem;	perwym blokom fajla qwlqetsq blok
nomer 0;
.DFN CHAN
nomer ispolxzuemogo kanala;
.DFN CRTN
imq  podprogrammy zawer{eniq na	assemblere.
.LIN
rezulxtaty funkcii predstawleny	w opisanii funkcii IREAD
(sm. podpunkt 8.2.1.1).
.LIN
primer.
.SWT
	INTEGER*2 IBUF (256),RCODE,IBLK
	EXTERNAL RDCMP
	 . . .
	RCODE=IREADC (256,IBUF,IBLK,ICHAN,RDCMP)

.HLV 3
funkciq	IREADF
.LIN
funkciq	IREADF ustanawliwaet w o~eredx zapros na ~tenie
zadannogo ~isla	slow iz	fajla w	pamqtx po
ukazannomu kanalu i nemedlenno wozwra}aet uprawlenie
w wyzwaw{u` programmu:
posle zawer{eniq operacii
osnownaq programma prerywaetsq i zapuskaetsq
podprogramma na	qzyke fortran w	ka~estwe asinhronnoj
podprogrammy zawer{eniq.
.LIN
obra}enie k funkcii:
.SWT
	I=IREADF (WCNT,BUF,BLK,CHAN,AREA,CRTN)
.BLN
gde
.DFN WCNT
celoe ~islo slow, kotoroe dolvno bytx peredano;
.DFN BUF
massiw,	ispolxzuemyj w ka~estwe	bufera;
|tot massiw dannyh dolven imetx	dlinu
ne menx{e, ~em ukazano w parametre WCNT;
.TES 3
.DFN BLK
nomer ~itaemogo	bloka ot na~ala	fajla;
programma oby~no uweli~iwaet BLK pered ego powtornym
ispolxzowaniem;	perwym blokom fajla qwlqetsq blok
nomer 0;
.DFN CHAN
nomer ispolxzuemogo kanala;
.DFN CRTN
podprogramma zawer{eniq, napisannaq na qzyke fortran;
imq programmy dolvno ukazywatxsq w
operatore EXTERNAL podprogrammy, wyzywa`}ej
IREADF.
.LIN
rezulxtaty funkcii predstawleny	w opisanii funkcii IREAD
(sm. podpunkt 8.2.1.1).
.LIN
primer.
.SWT
	  INTEGER*2 DBLK (4),BUFFER (256),BLKNO
	  DATA DBLK /3RRK0,3RINP,3RUT ,3RDAT/,BLKNO/0/
	  EXTERNAL RCMPLT
	   . . .
	  ICHAN=IGETC ()
	  IF (ICHAN.LT.0)STOP  'net swobodnogo kanala'
	  IF (IFETCH(DBLK).NE.0)STOP 'o{ibka FETCH'
	  IF (LOOKUP(ICHAN,DBLK).LT.0)STOP 'o{ibka LOOKUP'
	   . . .
       20 IF(IREADF(256,BUFFER,BLKNO,ICHAN,DBLK,RCMPLT)
	 * .LT.0) GOTO 100
	   . . .
	   CALL	IWAIT (ICHAN)  !vdatx wyzowa podprogrammy
    C			       zawer{eniq
	  BLKNO=BLKNo+1	       !obnowitx nomer bloka
	  GOTO 20
	   . . .
    C	  obrabotka konca fajla
      100 CALL CLOSEC (ICHAN)
	  CALL IFREEC (ICHAN)
	   . . .
	  CALL EXIT
	  END
	  SUBROUTINE RCMPLT (I,J)
    C	  podprogramma zawer{eniq
	   . . .
	  RETURN
	  END
.HLV 3
funkciq	IREADW
.LIN
funkciq	IREADW ustanawliwaet w o~eredx zapros na ~tenie
zadannogo ~isla	slow iz	fajla w	pamqtx po
ukazannomu kanalu; uprawlenie programme	wozwra}aetsq posle
zawer{eniq operacii ili	pri obnaruvenii	o{ibki.
.LIN
obra}enie k funkcii:
.SWT
	I=IREADW (WCNT,BUF,BLK,CHAN)
.BLN
gde
.DFN WCNT
koli~estwo slow, kotoroe dolvno	bytx peredano;
.DFN BUF
massiw,	ispolxzuemyj w ka~estwe	bufera;
|tot massiw dannyh dolven imetx	dlinu ne menx{e,
~em ukazano w parametre	WCNT;
.DFN BLK
nomer ~itaemogo	bloka ot na~ala	fajla; programma oby~no
uweli~iwaet BLK	pered powtornym	ispolxzowaniem;
.DFN CHAN
nomer ispolxzuemogo kanala.
.LIN
rezulxtaty funkcii predstawleny	w opisanii funkcii IREAD
(sm. podpunkt 8.2.1.1).
.LIN
primer.
.SWT
	  INTEGER*2 IBUF (1024)

	   . . .
	  ICODE=IREADW (1024,IBUF,IBLK,ICHAN)
	  IF(ICODE.EQ.-1) GOTO 100 ! obrabotka konca faj-
    C				      la w operatore 100
	   . . .
	  IF(ICODE.LT.-1)GOTO 200  !obrabotka o{ibki w
    C				     operatore 200
    C	   modificirowatx bloki
	   . . .
    C	   zapisatx, zatem wyjti
	  ICODE=IWRITW (1024,IBUF,IBLK,ICHAN)

.HLV 2
funkciq	ITTINR
.LIN
funkciq	ITTINR prednazna~ena dlq pereda~i simwola s sistemnogo
terminala w programmu polxzowatelq. esli w bufere sistemy net wwedennyh
simwolow, to dejstwiq sistemy opredelq`tsq sostoqniem razrqda 6	w
slowe sostoqniq	zadaniq	(JSW).
.LIN
obra}enie k funkcii:
.SWT
	I=ITTINR ()
.LIN
esli rezulxtat wypolneniq funkcii ITTINR menx{e	nulq, to |to zna~it, ~to w
bufere ne bylo simwolow, t.e. operator e}e ne wwel stroku.
pri ispolxzowanii RT11FB(XM) funkciq	ITTINR ne wozwra}aet rezulxtat
menx{e nulq, esli bit 6	slowa sostoqniq	zadaniq	ne byl ustanowlen
pri wyzowe ITTINR.
.LIN
su}estwuet dwa revima wwoda s terminala. revim zadaetsq	bitom 12
slowa sostoqniq	zadaniq. slowo sostoqniq zadaniq opredelqetsq
sodervimym 44-j	q~ejki pamqti w	oblasti	SYSCOM.
.LIN
esli 12-j bit rawen nul`, to wypolnqetsq
oby~nyj	wwod/wywod. w |tom revime wypolnq`tsq sledu`}ie	dejstwiq:
.AND
monitor	otobravaet na |krane terminala wse wwedennye s klawiatury znaki;
.AND
komandy	<CTRL/U> i <DEL> osu}estwlq`t udalenie stroki i
simwola	sootwetstwenno;
.AND
simwoly	teku}ej	stroki pereda`tsq w programmu polxzowatelq
posle wwoda s klawiatury terminala odnogo iz ~etyreh
uprawlq`}ih znakow: <CR>, <LF>,	<CTRL/Z> ili <CTRL/C>.
.LIN
esli 12-j bit rawen 1, to zadaetsq specialxnyj revim.
pri |tom proishodit sledu`}ee:
.AND
monitor	ne otobravaet na terminale wwedennye s klawiatury simwoly, za
iskl`~eniem <CTRL/C> i <CTRL/O>;
.AND
komandy	<CTRL/U> i <DEL> ne wypolnq`t specialxnyh funkcij;
.AND
simwoly	pereda`tsq w programmu nemedlenno;
.AND
<ESC> ne preobrazuetsq.
.BLN
w specialxnom revime programma polxzowatelq dolvna sama	otobravatx
nuvnye simwoly.
.LIN
12-j razrqd slowa sostoqniq zadaniq dolven bytx	ustanowlen
programmoj,
esli neobhodim specialxnyj revim
uprawleniq terminalom. 14-j razrqd JSW ustanawliwaetsq dlq razre{eniq
wwoda s	klawiatury znakow kirillicy. |ti bity sbrasywa`tsq pri
wozwrate uprawleniq w monitor.
.LIN
wne zawisimosti	ot ustanowki 12-go razrqda JSW pri wwode <CR>
s klawiatury w programmu, peredaetsq dwa simwola: <CR> i <LF>.
esli razrqd 12 rawen nul`, to |ti simwoly otobrava`tsq i
na terminale.
.LIN
preobrazowanie kirillicy opredelqetsq ustanowkoj razrqda 14.
esli |tot razrqd rawen nul`, to	znaki kirillicy	preobrazu`tsq w
sootwetstwu`}ie	latinskie znaki	pered |ho-pe~atx` (esli	razrqd 12
pri |tom rawen nul`) i pereda~ej w programmu. esli razrqd 14 ustanowlen
w 1, to	wwedennye simwoly otobrava`tsq (esli razrqd 12 pri |tom	rawen nul`)
i peresyla`tsq tak, kak	oni byli wwedeny.
.LIN
dlq ustanowki i/ili sbrosa bitow slowa sostoqniq
zadaniq	ispolxzu`t funkci` IPEEK, a zatem IPOKE.
w specialxnom revime
(bit 12	slowa sostoqniq	zadaniq	ustanowlen)
oby~nyj	fortranowskij formatnyj	wwod s klawiatury terminala ne opredelen.
.LIN
w RT11FB(XM) komandy	<CTRL/F> i <CTRL/B> (i <CTRL/X>	w
monitorah so sredstwami	sistemnyh zadanij) ne uprawlq`tsq ukazaniem
bita 12. monitor reagiruet na |ti simwoly kak na specialxnye komandy, esli byl
a
dana komanda
monitora "SET TT FB".
.LIN
pri rabote pod uprawleniem RT11FB(XM) w slu~ae, esli	sdelan
zapros na wwod s terminala, a simwoly s	terminala ne postupili po
kakoj-libo pri~ine, wypolnenie programmy priostanawliwaetsq do teh por,
poka simwoly ne	budut wwedeny. esli neobhodimo prodolvatx
wypolnenie programmy, t.e. neobhodimo, ~toby
funkciq	ITTINR dawala diagnostiku o{ibki (I<0),
to neobhodimo ustanowitx razrqd	6 slowa	sostoqniq
zadaniq	pered wypolneniem funkcii ITTINR. bit 6	sbrasywaetsq posle okon~aniq
wypolneniq programmy. rezulxtat	ITTINR dolven razme}atxsq w peremennoj
tipa INTEGER, esli predlagaetsq	kontrolx o{ibok. esli izwestno,
~to wozwrata po	o{ibke nikogda ne budet, to rezulxtat movno
pereslatx w peremennu` tipa LOGICAL*1. neposredstwennoe	razme}enie
polu~aemyh dannyh w peremennoj tipa LOGICAL*1 priwedet k newernym
rezulxtatam, t.k. 15-j razrqd (flag otricatelxnogo ~isla) terqetsq
pri preobrazowanii w peremennu`	tipa LOGICAL*1.
.LIN
rezulxtaty funkcii:
.SWT
     I>0 - oby~nyj wyhod; simwol pro~itan;

     I<0 - wyhod s o{ibkoj, w bufere net wwedenyh
	   simwolow.
.LIN
primer.
.SWT
     ICHAR=ITTINR()	      !s~itatx simwol s	TT
     IF(ICHAR.LT.0)GOTO	100   !net simwolow
.HLV 2
funkciq	ITTOUR
.LIN
funkciq	ITTOUR prednazna~ena dlq pereda~i simwola iz programmy
polxzowatelq na	terminal, esli w bufere	monitora estx dlq
nego mesto. esli w dannyj moment nelxzq	wwesti simwol, to wyrabatywaetsq
priznak	o{ibki.
.LIN
obra}enie k funkcii:
.SWT
	I=ITTOUR (CHAR)
.BLN
gde
.DFN CHAR
kod wywodimogo simwola;	wyrawnennoe wprawo celoe (pri
velanii	movet bytx tipa	LOGICAL*1), kotoroe
neobhodimo wywesti.
.LIN
esli (I) - rezulxtat wypolneniq	funkcii	ITTOUR - rawen 1, |to ozna~aet,
~to w bufere net swobodnogo mesta i ne wyweden ni odin simwol.
pod uprawleniem	RT11FB(XM) funkciq ITTOUR ne	prinimaet zna~enie,
rawnoe 1. programma priostanawliwaetsq do teh por, poka	w bufere wywoda
ne oswoboditsq mesto. esli
zadanie	trebuet	prodolveniq wypolneniq programmy, t.e. diagnostiku o{ibki
(I=1), to neobhodimo predwaritelxno ustanowitx 6-j razrqd slowa
sostoqniq zadaniq (q~ejka 44).
.LIN
esli operatiwnoe zadanie peredalo simwoly w kolxcewoj bufer wywoda
monitora, |ti simwoly mogut ne wywoditsq na terminal po	dwum
pri~inam:
.AND
esli fonowoe zadanie wywodilo na terminal, to operatiwnoe ne movet
|togo sdelatx, poka fonowoe ne proizwedet wywod	znaka <LF>. |to
movet poroditx su}estwennu` zadervku, esli terminalom qwlqetsq
grafi~eskij displej, a fonowoe	zadanie	proizwodit grafi~eskij
wywod, ne soderva}ij znakow <LF>;
.AND
esli fonowogo zadaniq net (t.e.	w fonowom razdele wypolnqetsq
KMON), operatiwnoe zadanie ne movet wywesti swoe soob}enie,
poka operator ne wwedet	<CR> ili <LF>. w |tom slu~ae
KMON polu~aet kontrolx nad wywodom i blokiruet wywod operatiwnogo
zadaniq, srazu kak tolxko bufer	operatiwnogo zadaniq opusteet.
.ATT
sleduet	otmetitx, ~to ispolxzowanie podprogrammy PRINT
ustranqet pere~islennye	problemy.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;simwol	wyweden;

     I=1 - wyhod s o{ibkoj, kolxcewoj bufer polon.
.LIN
primer.
.SWT
	 DO 10 I =1,5
      10 IF(ITTOUR("007).NE.0) GO TO 10	 !peredatx simwol
  C					  5 raz

.HLV 2
funkciq	IWAIT
.LIN
funkciq	IWAIT priostanawliwaet wypolnenie osnownoj programmy do	teh por,
poka ne	zakon~itsq wypolnenie wseh operacij wwoda/wywoda na ukazannom
kanale.	|ta funkciq ispolxzuetsq s wyzowami IREAD, IWRITE i ISPFN.
podprogrammy zawer{eniq	prodolva`t wypolnqtxsq.
.LIN
obra}enie k funkcii:
.SWT
	I=IWAIT	(CHAN)
.BLN
gde
.TES 3
.DFN CHAN
nomer (celoe) ispolxzuemogo kanala.
.LIN
podrobnee o priostanowke wypolneniq osnownoj programmy skazano w
opisanii sistemnoj makrokomandy	.WAIT.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - ukazannyj kanal ne otkryt;
     I=2 - wo wremq predydu}ej operacii	wwoda/wywoda po
	   |tomu kanalu	proizo{la apparatnaq o{ibka.
.LIN
primer.
.SWT
     IF(IWAIT(ICHAN).NE.0) CALL	IOERR(4)
.HLV 2
funkcii	IWRITE/IWRITC/IWRITF/IWRITW
.LIN
IWRITE/IWRITC/IWRITF/IWRITW - ~etyre formy funkcii zapisi
zadannogo ~isla	slow iz	pamqti w fajl po
ukazannomu kanalu. |ti funkcii trebu`t |lement o~eredi,	~to
dolvno u~itywatxsq pri wypolnenii funkcii IQSET.
.HLV 3
funkciq	IWRITE
.LIN
funkciq	IWRITE prednazna~ena dlq pereda~i zadannogo ~isla slow iz
operatiwnoj pamqti po ukazannomu kanalu. uprawlenie wozwra}aetsq programme
polxzowatelq nemedlenno	posle togo, kak	zapros byl postawlen w o~eredx.
posle wypolneniq operacii nikakie dejstwiq ne predprinima`tsq.
.LIN
obra}enie funkcii:
.SWT
	I=IWRITE (WCNT,BUF,BLK,CHAN)
.BLN
gde
.DFN WCNT
koli~estwo (celoe) peredawaemyh	slow;
.DFN BUF
massiw,	ispolxzuemyj dlq bufera	wywoda;
.DFN BLK
nomer (celoe) bloka fajla, w kotoryj proishodit	zapisx.
pered powtornym	ispolxzowaniem programma polxzowatelq obnowlqet
parametr BLK;
.DFN CHAN
nomer (celoe) ispolxzuemogo kanala; nomer kanala dolven	bytx polu~en
pri pomo}i wyzowa IGETC, ili, esli predwaritelxno osu}estwlqlsq
wyzow ICDFN, mogut bytx	ispolxzowany kanaly s nomerami 16
(desqti~noe) i bolx{e.
.LIN
rezulxtaty funkcii:
.SWT
     I=	N - oby~nyj wyhod iz podprogrammy; N rawno ~islu
	    zapisannyh slow, okruglennyh do ~isla
	    kratnogo 256 (0 dlq	ustrojstwa, otkrytogo kak
	    nefajlowoe);

     I=-1 - popytka zapisatx posle konca fajla;
     I=-2 - proizo{la apparatnaq o{ibka;
     I=-3 - ukazannyj kanal ne otkryt.
.ATT
esli wozwra}aemyj s~et~ik slow (WCNT) menx{e trebuemogo,
to |to ozna~aet, ~to wstretilsq	neqwnyj	konec fajla.
.LIN
primer.
.SWT
     INTEGER*2 IBUF (256)
     EXTERNAL CRtN
      .	. .
     ICODE=IWRITE (256,IBUF,IBLK,ICHAN,CRTN)
.HLV 3
funkciq	IWRITC
.LIN
funkciq	IWRITC prednazna~ena dlq pereda~i zadannogo ~isla slow iz
operatiwnoj pamqti po zadannomu	kanalu.	zapros stawitsq	w o~eredx i
uprawlenie wozwra}aetsq	programme polxzowatelq.	posle okon~aniq	pereda~i
osnownaq programma prerywaetsq i wyzywaetsq
ukazannaq podprogramma na qzyke	makroassembler
w ka~estwe asinhronnoj podprogrammy zawer{eniq.
.LIN
obra}enie k funkcii:
.SWT
	I=IWRITC (WCNT,BUF,BLK,CHAN,CRTN)
.BLN
gde
.DFN WCNT
koli~estwo (celoe) peredawaemyh	slow;
.DFN BUF
massiw,	ispolxzuemyj w ka~estwe	bufera wywoda;
.DFN BLK
celoe; otnositelxnyj nomer bloka fajla,	w
kotoryj	proishodit zapisx; pered powtornym ispolxzowaniem
programma polxzowatelq oby~no obnowlqet	parametr BLK
(naprimer, esli	programma wywela dwa bloka, to zna~enie	BLK
nuvno uweli~itx	na 2);
.DFN CHAN
nomer ispolxzuemogo kanala; nomer kanala dolven	bytx polu~en
pri pomo}i IGETC, ili, esli predwaritelxno byla	 wyzwana ICDFN,
movno ispolxzowatx kanaly s nomerami 16	(desqti~noe) i wy{e.
.DFN CRTN
podprogramma, napisannaq na
makroassemblere, kotoraq aktiwiziruetsq
po zawer{enii pereda~i;	|to imq	dolvno
ukazywatxsq w operatore	EXTERNAL programmy na
qzyke fortran, wyzywa`}ej IWRITC.
.LIN
rezulxtaty funkcii priwedeny w opisanii	funkcii	IWRITE.
(sM. podpunkt 8.2.5.1).
.LIN
primer priweden	w opisanii funkcii IREAD.
(sM. podpunkt 8.2.1.1).
.HLV 3
funkciq	IWRITF
.LIN
funkciq	IWRITF peredaet	zadannoe ~islo slow iz operatiwnoj pamqti po
ukazannomu kanalu. zapros na pereda~u stawitsq w o~eredx i uprawlenie
wozwra}aetsq programme polxzowatelq. posle okon~aniq operacii
osnownaq programma prerywaetsq i wyzywaetsq
ukazannaq podprogramma na qzyke	fortran	w ka~estwe asinhronnoj
podprogrammy zawer{eniq.
.LIN
obra}enie k funkcii:
.SWT
	I=IWRITF (WCNT,BUF,BLK,CHAN,AREA,CRTN)
.BLN
gde
.DFN WCNT
koli~estwo (celoe) peredawaemyh	slow;
.DFN BUF
massiw,	ispolxzuemyj w ka~estwe	bufera
wywoda;
.DFN BLK
otnositelxnyj
nomer (celoe) bloka fajla, s kotorogo na~inaetsq zapisx;
pered powtornym	ispolxzowaniem programma oby~no
obnowlqet BLK.
.DFN CHAN
nomer (celoe) ispolxzuemogo kanala; nomer kanala dolven
bytx polu~en wyzowom IGETC, ili, esli wyzywalasx ICDFN,
movet bytx ispolxzowan kanal s nomerom 16 (desqti~noe)
i bolx{e;
.DFN AREA
massiw iz 4 slow, rezerwiruemyj	dlq informacii swqzi;
ego |lementy ne	dolvny modificirowatxsq	programmoj;
massiw dolven bytx razme}en wne	oblasti	swopinga USR;
dannyj massiw movet ispolxzowatxsq drugimi
podprogrammami zawer{eniq na qzyke
fortran	posle togo, kak	byla aktiwizirowana podprogramma,
ukazannaq w dannom zaprose;
.DFN CRTN
imq podprogrammy na qzyke fortran,
kotoraq	aktiwiziruetsq posle okon~aniq
pereda~i; |to imq dolvno ukazywatxsq w
operatore EXTERNAL fortran-podprogrammy,
wyzywa`}ej IWRITE.
.LIN
podprogramma zawer{eniq	imeet dwa parametra:
.SWT
	SUBROUTINE CRTN	(IARG1,IARG2)
.BLN
gde
.DFN CRTN
identifikator podprogrammy zawer{eniq;
.DFN IARG1
slowo sostoqniq	kanala dlq tolxko ~to zakon~ennoj operacii;
esli nulewoj bit ustanowlen, to	|to zna~it, ~to	wo wremq
pereda~i proizo{la apparatnaq o{ibka;
.DFN IARG2
nomer kanala, ispolxzowannogo dlq tolxko ~to
zakon~ennoj operacii.
.LIN
rezulxtaty funkcii priwedeny w opisanii	funkcii	IWRITE
(sm. podpunkt 8.2.5.1).
.LIN
primer priweden	w opisanii funkcii IREADF
(sm. podpunkt 8.2.1.3).
.HLV 3
funkciq	IWRITW
.LIN
funkciq	IWRITW prednazna~ena dlq pereda~i zadannogo ~isla slow iz
operatiwnoj pamqti po ukazannomu kanalu. uprawlenie wozwra}aetsq programme
polxzowatelq posle okon~aniq pereda~i.
.LIN
obra}enie k funkcii:
.SWT
	I=IWRITW (WCNT,BUF,BLK,CHAN)
.BLN
gde
.DFN WCNT
koli~estwo (celoe) peredawaemyh	slow;
.DFN BUF
massiw,	ispolxzuemyj w ka~estwe	bufera wywoda;
.DFN BLK
nomer (celoe) bloka fajla, s kotorogo
na~netsq zapisx; programma polxzowatelq
pered powtornym	ispolxzowaniem parametra
BLK obnowlqet ego;
.DFN CHAN
nomer (celoe) ispolxzuemogo kanala; nomer dolven bytx polu~en
wyzowom	IGETC, ili, esli uve wyzywalasx	ICDFN, movet bytx
ispolxzowan kanal s nomerom 16 (desqti~noe) ili	wy{e.
.LIN
rezulxtaty funkcii priwedeny w opisanii	funkcii	IWRITE
(sm. podpunkt 8.2.5.1).
.LIN
primer priweden	w opisanii funkcii IREADW
(sm. podpunkt 8.2.1.4).
.HLV 2
podprogramma PRINT
.LIN
podprogramma PRINT osu}estwlqet	wywod stroki na	sistemnyj terminal. |ta
podprogramma movet ispolxzowatxsq dlq pe~ati soob}enij w podprogrammah
zawer{eniq bez ispolxzowaniq pri |tom formatnogo fortranowskogo
wwoda/wywoda.
uprawlenie peredaetsq programme	polxzowatelq posle pome}eniq w sistemnyj
kolxcewoj bufer	wywoda wseh wywodimyh simwolow.
.LIN
wywodimaq stroka dolvna	zakan~iwatxsq bajtom 0 ili bajtom 200
 (wosxmeri~noe). esli
ispolxzuetsq 0 (format ASCIZ), wywod awtomati~eski zawer{aetsq znakami
<CR><LF> (15 i 12 (wosxmeri~noe)).
 esli ispolxzuetsq ograni~itelx	200, to	|ti znaki ne
generiru`tsq.
.LIN
w RT11FB izmenenie zadaniq,	kontroliru`}ego	terminalxnyj wywod,
ukazywa`tsq pri	pomo}i pe~ati posledowatelxnosti znakow	B> i F>
 (ili NAME>, gde NAME-logi~eskoe imq zadaniq). do teh por poka ne budet
wyweden
protiwopolovnyj	ukazatelx, wesx	wywod na terminal osu}estwlqetsq
zadaniem, ob'qwlennym poslednim	wywedennym ukazatelem. kogda
PRINT ispolxzuetsq operatiwnym zadaniem, soob}enie
wywoditsq nemedlenno, wne zawisimosti ot sostoqniq fonowogo zadaniq.
t.e. dlq sro~nyh soob}enij PRINT predpo~titelxnej ITTOUR.
.LIN
obra}enie k podprogramme:
.SWT
	CALL PRINT (STRING)
.BLN
gde
.DFN STRING
wywodimaq stroka.
.ATT
wse litery, ispolxzuemye w podprogrammah biblioteki sistemy
RT11, a takve wse stroki, wyrabatywaemye funkciqmi obrabotki strok
simwolow, ime`t	format ASCIZ. (podprogramma CONCAT movet bytx
ispolxzowana dlq dobawleniq bajta 200 w	stroku ASCIZ)>
.LIN
o{ibki otsutstwu`t.
.TES 4
.LIN
primer.
.SWT
      CALL PRINT(' wywod stroki	')
 ili
      BYTE QUEST(80)
 C    dobawitx bajt 200	i wywesti bez <CR><LF>
 C
      CALL CONCAT('wa{e	imq?', "200, QUEST)
      CALL PRINT(QUEST)
.HLV 2
funkcii	ISPFN/ISPFNC/ISPFNF/ISPFNW
.LIN
|ti funkcii ispolxzu`tsq dlq dostupa k specialxnym sredstwam razli~nyh
drajwerow (magnitnyh lent, gibkih diskow, kassetnyh magnitnyh lent).
oni obespe~iwa`t wozmovnostx wypolneniq	operacij,
swojstwennyh opredelennym ustrojstwam,
takih kak peremotka i rewers, primenitelxno k ustrojstwam magnitnoj lenty.
esli wyzowy ISPFN wypolnq`tsq dlq drugih ustrojstw, to
oni ignoriru`tsq.
.LIN
dlq ispolxzowaniq |tih funkcij neobhodimo w operatiwnu`	pamqtx
pomestitx drajwer ustrojstwa i swqzatx kanal s ustrojstwom
posredstwom LOOKUP nefajlowoj struktury. wypolnenie |tih funkcij
trebuet	|lementa o~eredi, ~to sleduet u~itywatx	pri wypolnenii IQSET.
.HLV 3
funkciq	ISPFN
.LIN
funkciq	ISPFN stawit w o~eredx zapros na ukazannu` operaci` i nemedlenno
wozwra}aet uprawlenie programme. ~toby zafiksirowatx
zawer{enie
operacii, movno	ispolxzowatx funkci` IWAIT.
.LIN
obra}enie k funkcii:
.SWT
	I=ISPFN	(CODE,CHAN[,WCNT,BUF,BLK])
.BLN
gde
.DFN CODE
~islowoj kod (celoe) wypolnqemoj funkcii;
.DFN CHAN
nomer (celoe) kanala, ispolxzuemogo dlq	operacii; |tot nomer dolven bytx
polu~en	pri pomo}i IGETC, ili, esli pered |tim wyzywalasx ICDFN,
movno ispolxzowatx kanaly s nomerom 16 (desqti~noe) i bolx{e;
.DFN WCNT
koli~estwo (celoe) ~islo slow, u~astwu`}ih w operacii;
po umol~ani` rawno nul`; |tot parametr ne qwlqetsq obqzatelxnym	pri
wyzowah	ISPFN (w zawisimosti ot	wyzywaemyh funkcij);
w operaciqh s magnitnoj	lentoj on ukazywaet koli~estwo
zapisej, propuskaemyh wpered ili nazad;
pri peremotke nazad so s~et~ikom, rawnym nul`, lenta
perematywaetsq do markera ili do na~ala
lenty; analogi~no, pri peremotke wpered
so s~et~ikom, rawnym nul`, peremotka wedetsq do	markera
ili do konca lenty;
.DFN BUF
massiw,	ispolxzuemyj dlq hraneniq informacii;
|tot parametr ne qwlqetsq obqzatelxnym pri wyzowe
ISPFN (w zawisimosti ot	wyzywaemyh funkcij); zna~enie po
umol~ani` - nulx;
.DFN BLK
nomer (celoe) bloka fajla, nad kotorym
wypolnqetsq operaciq; po umol~ani` prinimaetsq
zna~enie, rawnoe nul`; |tot parametr ne	qwlqetsq
obqzatelxnym pri wyzowe	ISPFN (w zawisimosti ot
wyzywaemyh funkcij).
.LIN
esli parametr BLK primenqetsq k	magnitnoj lente, on
qwlqetsq adresom 4-slownogo bloka o{ibok i
sostoqniq i ispolxzuetsq dlq zapisi sootwetstwu`}ej
informacii. |ti	~etyre slowa dolvny bytx ustanowleny w nulx
pered obra}eniem k ISPFN.
.LIN
pri rabote s RT11XM blok o{ibok i
sostoqniq dolven bytx otobraven	(do zawer{eniq operacii) i raspoloven w	pamqti
wne oblasti swopinga  USR.
~toby polu~itx adres bloka o{ibok, neobhodimo
wypolnitx sledu`}ie instrukcii:
.SWT
     INTEGER*2	ERRADR,ERRBLK(4)
     DATA ERRBLK/0,0,0,0/
      .	. .
     ERRADR=IADDR(ERRBLK)   !polu~itx adres
C			     4-slownogo	bloka o{ibok.
     ICODE=ISPFN(CODE,ICHAN,WDCT,BUF,ERRADR)
.LIN
tri poslednih (neobqzatelxnyh) argumenta (WCNT,BUFF,BLK)
ne qwlq`tsq neobqzatelxnymi
po otdelxnosti:	oni dolvny bytx	ukazany	libo wse, libo
ne dolvno bytx ni odnogo.
.LIN
dalee priwedeny	wosxmeri~nye kody specialxnyh funkcij dlq razli~nyh
ustrojstw:
.TES 26
.SWT
  funkciq			  MT   CT   DX	 DM   DY
  -------			  --   --   --	 --   --
  ~tenie absol`tnoe			    377	 377  377
  zapisx absol`tnaq			    376	 376  376
  zapisx absol`tnaq
   s udaleniem dannyh			    375	      375
  prodwivenie wpered
   k poslednemu	fajlu		       377
  prodwivenie wpered
   k poslednemu	bloku		       376
  prodwivenie wpered
   k sledu`}emu	fajlu		       375
  prodwivenie wpered
   k sledu`}emu	bloku		       374
  peremotka nazad k
   to~ke zagruzke		  373  373
  zapisx promevutka
   mevdu fajlami		       372
  zapisx metki konca
   fajla (EOF)			  377
  prodwivenie wpered
   na odnu zapisx		  376
  peremotka nazad na
   odnu	zapisx			  375
  zapisx defektnogo bloka
   w tablicu zame}eniq				 374
  zapisx s ras{irennym
   promevutkom			  374
  awtonomnyj revim raboty	  372
  polu~enie razmera
   nositelq					 373  373
  zapisx blokow	peremennoj
   dliny			  371
  ~tenie blokow	peremennoj
   dliny			  370
.ATT
kody specialxnyh funkcij dlq ustrojstw MT i MM sowpada`t.
.LIN
rezulxtaty funkcii:
.SWT
      I=0 - oby~nyj wyhod;

      I=1 - popytka pisatx ili ~itatx posle konca fajla;
      I=2 - w kanale proizo{la apparatnaq o{ibka;
      I=3 - ukazannyj kanal ne otkryt.
.LIN
primer.
.SWT
	CALL ISPFN ("373,ICHAN)	  !peremotka w na~alo
.HLV 3
funkciq	ISPFNC
.LIN
funkciq	ISPFNC stawit w	o~eredx	zapros na ukazannu` operaci` i nemedlenno
wozwra}aet uprawlenie programme. po zawer{enii operacii
wypolnenie osnownoj programmy prerywaetsq i
wyzywaetsq zadannaq programma na qzyke assembler (parametr CRTN)
w ka~estwe asinhronnoj podprogrammy zawer{eniq.
.LIN
obra}enie k funkcii:
.SWT
	I=ISPFNC (CODE,CHAN,WCNT,BUF,BLK,CRTN)
.BLN
gde
.DFN CODE
~islowoj kod (celoe) wypolnqemoj funkcii (sm. podpunkt 8.2.7.1);
.DFN CHAN
nomer kanala, ispolxzuemogo dlq	operacii; nomer	dolven bytx polu~en
po wyzowu IGETC, ili, esli ispolxzowalsq wyzow ICDFN, movno ispolxzowatx
kanal s	nomerom	16 (desqti~noe)	ili wy{e;
.DFN WCNT
koli~estwo (celoe) slow, u~astwu`}ih w operacii;
po umol~ani` rawno nul`; w operaciqh s
magnitnoj lentoj on ukazywaet koli~estwo
zapisej, propuskaemyh wpered ili nazad;
pri peremotke nazad so s~et~ikom rawnym	nul`, lenta
perematywaetsq do markera ili do na~ala
lenty; analogi~no, pri peremotke wpered,
so s~et~ikom rawnym nul`, peremotka wedetsq do markera
ili do konca lenty;
.DFN BUF
massiw,	ispolxzuemyj dlq hraneniq informacii; po umol~ani` zna~enie
|togo argumenta	rawno nul`;
.DFN BLK
nomer bloka fajla, nad kotorym
wypolnqetsq operaciq; po umol~ani` prinimaetsq
zna~enie rawnoe	nul`;
.DFN CRTN
imq podprogrammy na makroassemblere,
kotoraq	wyzywaetsq po zawer{enii operacii;
|to imq	dolvno ukazywatxsq w operatore
EXTERNAL programmy na qzyke fortran, wyzywa`}ej	ISPFNC.
.LIN
esli parametr BLK primenqetsq
dlq magnitnoj lenty, on	qwlqetsq adresom
4-slownogo bloka o{ibok	i sostoqniq
ispolxzuetsq dlq priema	sootwetstwu`}ej	informacii.
w |ti ~etyre slowa dolvny bytx perwona~alxno zaneseny nuli.
.LIN
pri rabote s RT11XM blok o{ibok
i sostoqniq ne dolvnen izmenqtx	swoego otobraveniq do zawer{eniq operacii i
dolven bytx raspoloven w pamqti	wne oblasti swopinga
USR.
~toby polu~itx adres bloka
o{ibok,	neobhodimo wypolnitx sledu`}ie
instrukcii:
.SWT
	 INTEGER*2 ERRADR,ERRBLK(4)
	 EXTERNAL CROU
	 DATA ERRBLK/0,0,0,0/
	   . . .
	 ERRADR=IADDR(ERRBLK)	 !polu~itx adres 4-slownogo
 C				  bloka	o{ibok
	 ICODE=ISPFNC(CODE,ICHAN,WDCT,BUF,ERRADR,CROU)
.LIN
rezulxtaty funkcii:
.SWT
      I=0 - oby~nyj wyhod;

      I=1 - popytka ~teniq/zapisi posle	konca fajla;
      I=2 - w kanale proizo{la apparatnaq o{ibka;
      I=3 - ukazannyj kanal ne otkryt.
.HLV 3
funkciq	ISPFNF
.LIN
funkciq	ISPFNF stawit w	o~eredx	zapros na ukazannu` operaci` i nemedlenno
wozwra}aet uprawlenie programme. po zawer{enii operacii
wypolnenie osnownoj programmy prerywaetsq i
ukazannaq podprogramma (parametr CRTN) na qzyke
fortran	wyzywaetsq w ka~estwe asinhronnoj podprogrammy zawer{eniq.
.LIN
obra}enie k funkcii:
.SWT
	I=ISPFNF (CODE,CHAN,WCNT,BUF,BLK,AREA,CRTN)
.BLN
gde
.DFN CODE
~islowoj kod (celoe) wypolnqemoj funkcii (sm. podpunkt 8.2.7.1);
.DFN CHAN
nomer kanala, ispolxzuemogo dlq	operacii; kanal	dolven bytx polu~en
pri pomo}i IGETC, ili, esli uve	wyzywalasx ICDFN, movno	ispolxzowatx
kanal s	nomerom	16 (desqti~noe)	i bolx{e;
.DFN WCNT
koli~estwo (celoe) slow, u~astwu`}ih w operacii;
po umol~ani` rawno nul`; w operaciqh s
magnitnoj lentoj on ukazywaet koli~estwo
zapisej, propuskaemyh wpered ili nazad;
pri peremotke nazad, so	s~et~ikom rawnym nul`, lenta
perematywaetsq do markera ili do na~ala
lenty; analogi~no, pri peremotke wpered,
so s~et~ikom rawnym nul`, peremotka wedetsq do markera
ili do konca lenty;
.DFN BUF
massiw,	ispolxzuemyj dlq hraneniq informacii; po umol~ani` zna~enie
|togo argumenta	rawno nul`;
.DFN BLK
nomer (celoe) bloka fajla, nad kotorym
wypolnqetsq operaciq; po umol~ani` prinimaetsq
zna~enie rawnoe	nul`;
.DFN AREA
4-slownyj massiw, kotoryj ispolxzuetsq
dlq hraneniq informacii	swqzi; ego |lementy ne
dolvny modificirowatxsq	programmoj;
massiw dolven bytx razme}en wne	oblasti	swopinga USR; massiw
movet ispolxzowatxsq drugimi funkciqmi
zawer{eniq na fortrane posle wyzowa
zadannoj podprogrammy zawer{eniq;
.DFN CRTN
imq podprogrammy na qzyke fortran,
KOtoraq	wyzywaetsq po zawer{enii
operacii; |to imq dolvno ukazywatxsq w operatore
EXTERNAL programmy na qzyke fortran,
wyzywa`}ej ISPFNF.
.LIN
kogda parametr BLK primenqetsq dlq magnitnoj
lenty, on qwlqetsq adresom 4-slownogo
bloka o{ibok i sostoqniq i
ispolxzuetsq dlq zapisi	sootwetstwu`}ej	informacii.
pered wyzowom ISPFNF w |ti ~etyre slowa	dolvny bytx zaneseny nuli.
.LIN
pri rabote s RT11XM blok
o{ibok i sostoqniq ne dolven izmenqtx swoego otobraveniq do zawer{eniq
operacii i
dolven bytx raspoloven w pamqti	wne oblasti
swopinga USR.
~toby polu~itx adres bloka o{ibok,
neobhodimo wypolnitx sledu`}ie instrukcii:
.SWT
       INTEGER*2 ERRADR, ERRBLK(4), LINK(4)
       EXTERNAL	CROU
       DATA ERRBLK/0,0,0,0/
       . . .
       ERRADR=IADDR(ERRBLK) !polu~itx adres 4-slownogo
 C			     bloka o{ibok
       ICODE=ISPFNF(CODE,ICHAN,WDCT,BUF,ERRADR,LINK,CROU)
.LIN 3
podprogramma zawer{eniq	imeet dwa parametra:
.SWT
	SUBROUTINE CRTN	(IARG1,IARG2)
.BLN
gde
.DFN CRTN
imq podprogrammy zawer{eniq;
.DFN IARG1
slowo sostoqniq	kanala,	ispolxzowannogo
dlq operacii; esli nulewoj razrqd ustanowlen,
to wo wremq pereda~i proizo{la apparatnaq o{ibka;
.DFN IARG2
nomer kanala, ispolxzowannogo dlq operacii.
.LIN
rezulxtaty funkcii:
.SWT
      I=0 - oby~nyj wyhod;

      I=1 - popytka ~teniq/zapisi posle	konca fajla;
      I=2 - w kanale proizo{la apparatnaq o{ibka;
      I=3 - ukazannyj kanal ne otkryt.
.LIN
primer.
.SWT
	 REAL*4	MTNAME(2), AREA(2)
	 DATA MTNAME/3RMT0,0./
	 EXTERNAL DONSUB
	  . . .
	 I=IGETC()		  !polu~itx kanal
	 CALL IFETCH(MTNAME)	  !zagruzitx drajwer
	 CALL LOOKUP(I,MTNAME)	  !otkrytx kanal
	 IERR=ISPFNF("373,1,0,0,0,AREA,DONSUB) !peremotatx
    C						lentu
	  . . .
	 END
	 SUBROUTINE DONSUB
    C	  wyzywaetsq posle peremotki mt0:
	  . . .
	 END
.HLV 3
funkciq	ISPFNW
.LIN
funkciq	ISPFNW stawit w	o~eredx	zapros na zadannu` operaci` i wozwra}aet
uprawlenie programme posle wypolneniq operacii.
.LIN
obra}enie k funkcii:
.SWT
	I=ISPFNW (CODE,CHAN[,WCNT,BUF,BLK])
.BLN
gde
.DFN CODE
~islowoj kod (celoe) wypolnqemoj funkcii (sm. podpunkt 8.2.7.1);
.DFN CHAN
nomer kanala, ispolxzuemogo dlq	operacii; kanal	dolven bytx polu~en
po IGETC, ili, esli wyzywalasx ICDFN, movno ispolxzowatx kanal s
nomerom	16 (desqti~noe)	i bolx{e;
.DFN WCNT
koli~estwo (celoe) slow, u~astwu`}ih w operacii; |tot argument ne obqzatelen
dlq nekotoryh wyzowow ISPFNW, w	zawisimosti ot zapra{iwaemoj funkcii;
po umol~ani` rawen nul`; w operaciqh s
magnitnoj lentoj on ukazywaet koli~estwo
zapisej, propuskaemyh wpered ili nazad;
pri peremotke nazad, so	s~et~ikom rawnym nul`, lenta
perematywaetsq do markera ili do na~ala
lenty; analogi~no, pri peremotke wpered,
so s~et~ikom rawnym nul`, peremotka wedetsq do markera
ili do konca lenty;
.DFN BUF
massiw,	ispolxzuemyj dlq hraneniq informacii;
esli ne	nuven, to rawen	nul`; |tot argument ne obqzatelen
dlq nekotoryh (w zawisimosti ot	koda funkcii) wyzowow ISRFNW;
.DFN BLK
nomer bloka fajla (celoe ~islo), nad kotorym
wypolnqetsq operaciq; |tot argument ne obqzatelen dlq
nekotoryh (w zawisimosti ot koda funkcii) wyzowow ISPFNW;
po umol~ani` prinimaetsq zna~enie, rawnoe nul`.
.LIN
kogda parametr BLK primenqetsq dlq magnitnoj lenty, on
qwlqetsq adresom 4-slownogo bloka o{ibok i sostoqniq i
ispolxzuetsq dlq zapisi
sootwetstwu`}ej	informacii.
.LIN
pri rabote s RT11XM blok o{ibok i sostoqniq
ne dolven izmenqtx swoego otobraveniq do zawer{eniq operacii i
dolven bytx raspoloven wne oblasti
swopinga USR.
~etyre slowa dolvny bytx na~alxno zapolneny nulqmi.
~toby polu~itx adres bloka o{ibok, neobhodimo
wypolnitx sledu`}ie instrukcii:
.SWT
     INTEGER*2 ERRADR, ERRBLK(4)
     DATA ERRBLK/0,0,0,0/
      .	. .
     ERRADR=IADDR(ERRBLK)  !polu~itx adres status-bloka
     ICODE=ISPFN(CODE,ICHAN,WDCT,BUF,ERRADR)
.ATT
parametry BUF i	BLK neobqzatelxny. oni trebu`tsq
tolxko pri zapisi na magnitnu` lentu s uweli~ennym
zazorom	mevdu zapisqmi ili pri ~tenii lenty.
.LIN
rezulxtaty funkcii:
.SWT
	I=0 - oby~nyj wyhod;

	I=1 - popytka ~teniq/zapisi posle
	      konca fajla;
	I=2 - w	kanale proizo{la apparatnaq o{ibka;
	I=3 - ukazannyj	kanal ne otkryt.
.LIN
primer.
.SWT
	INTEGER*2 BUF(65),TRACK,SECTOP,DBLK(4)
	DATA DBLK/3RDX0,0,0,0/
	 . . .
	ICHAN=IGETC()
	IF (ICHAN.LT.0)	STOP  '	net kanala '
	IF (LOOKUP(ICHAN,DBLK).LT.0)
       * STOP '	neuda~nyj  LOOKUP '
	 . . .
  C	pro~itatx absol`tnu` dorovku i sektor
  C	gibkogo	diska
  C
	ICODE=ISPFNW("377,ICHAN,TRACK,BUF,SECTOP)
  C
  C	BUF(1) = flag stertyh dannyh
  C	BUF(2-65) = dannye
.HLV 1
rabota s kanalami
.HLV 2
funkciq	ICDFN
.LIN
funkciq	ICDFN uweli~iwaet ~islo	kanalow	wwoda/wywoda. neobhodimo
otmetitx, ~to ICDFN opredelqet nowye kanaly. kanaly, opredelennye do
dannogo	wyzowa ICDFN, ne ispolxzu`tsq,
t.e. funkciq ICDFN dlq 20 (desqti~noe) kanalow
w moment, kogda	opredeleny 16 (desqti~noe) osnownyh kanalow,
daet tolxko 20 kanalow wwoda/wywoda. pamqtx, wydelennaq	dlq
informacii ob osnownyh kanalah,
ne ispolxzuetsq.
.LIN
obra}enie k funkcii:
.SWT
	I=ICDFN	(NUM[,AREA])
.BLN
gde
.DFN NUM
koli~estwo (celoe) wydelqemyh kanalow; |to ~islo
dolvno nahoditxsq w interwale 17 - 256 (desqti~noe);
.DFN AREA
prostranstwo dlq zapisi	informacii o kanalah, wydelqemoe wyzywa`}ej
programmoj; esli |tot argument ne ukazan, pamqtx wydelqetsq w rabo~ej
oblasti	ispolnq`}ej sistemy fortrana.
.LIN
programma movet	ispolxzowatx nowye kanaly s nomerom bolx{e 16 bez
obra}enij k funkcii IGETC, no sistema wwoda/wywoda fortrana ispolxzuet tolxko
perwye 15 (desqti~noe) kanalow.
osnownye 16 kanalow ispolxzu`tsq USR i raspredelq`tsq
funkciej IGETC.
.LIN
argumenty funkcii ICDFN	dolvny razme}atxsq wne
oblasti	swopinga USR.
.LIN
prime~aniq:
.LIN 0
1. funkci` ICDFN nelxzq	wyzywatx iz podprogrammy zawer{eniq
ili obrabotki prerywaniq.
.LIN 0
2. rekomenduetsq ispolxzowatx funkci` ICDFN w na~ale
osnownoj programmy pered iniciirowaniem	l`byh operacij wwoda/wywoda.
.LIN 0
3. esli	funkciq	ICDFN wypolnqetsq bolee	odnogo raza, to
kavdyj raz pri wyzowe ee formiruetsq sower{enno	nowyj nabor kanalow,
no informaciq o	staryh kanalah perepisywaetsq w	nowye.
.LIN 0
4. funkciq ICDFN trebuet, ~toby	dlq operatiwnyh
programm wydelqlasx dopolnitelxnaq pamqtx.
.TES 5
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - byla	predprinqta popytka raspredelitx menx{e
	   kanalow, ~em	su}estwuet;
     I=2 - dlq zapisi informacii o kanalah nedostato~no
	   swobodnoj pamqti.
.LIN
primer.
.SWT
     IF(ICDFN(24).NE.0)STOP 'nedostato~no pamqti'
.HLV 2
funkciq	ICHCPY (RT11FB ili RT11XM)
.LIN
funkciq	ICHCPY otkrywaet kanal dlq wwoda, logi~eski swqzywaq ego s
fajlom,	kotoryj	w nastoq}ij moment otkryt drugim zadaniem dlq wwoda ili
wywoda.	|ta funkciq movet bytx ispolxzowana kak	w operatiwnoj, tak
i w fonowoj programme.
funkciq	ICHCPY dolvna wypolnqtxsq do perwogo ~teniq ili	zapisi
po dannomu kanalu.
.LIN
obra}enie k funkcii:
.SWT
	I=ICHCPY (CHAN,OCHAN[,JOBBLK])
.BLN
gde
.DFN CHAN
nomer kanala, kotoryj budet ispolxzowatxsq
zadaniem dlq ~teniq dannyh; nomer dolven bytx polu~en pri
pomo}i wyzowa IGETC, ili, esli uve wyzywalasx ICDFN, movno ispolxzowatx
swobodnyj kanal	s nomerom ot 16	(desqti~noe) i wy{e.
.DFN OCHAN
nomer kanala drugogo zadaniq, kotoryj dolven kopirowatxsq;
.DFN JOBBLK
ukazatelx trehslownogo bloka imeni zadaniq w koi-7.
.LIN
prime~aniq:
.LIN 0
1. esli	kanal drugogo zadaniq byl otkryt dlq formirowaniq fajla
funkciej IENTER	ili sistemnoj makrokomandoj .ENTER, to po
skopirowannomu kanalu
budut dostupny bloki fajla do star{ego bloka fajla wkl`~itelxno,
zapisannogo k momentu operacii ICHCPY programmoj, sozdaw{ej fajl.
.LIN 0
2. kanal, otkrytyj na ustrojstwo posledowatelxnogo dostupa,
ne dolven kopirowatxsq.
.LIN 0
3. programma movet zapisywatx w	fajl (sozdannyj	drugim
zadaniem) po skopirowannomu kanalu tak ve, kak |to ona mogla by	sdelatx
w slu~ae, esli byla by programmoj, sformirowaw{ej |tot fajl.
odnako,	esli skopirowannyj kanal zakrywaetsq, to obnowleniq kataloga
ne proishodit.
.TES 4
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - drugoe zadanie ne su}estwuet	ili dlq	nego ne
	   otkryt ukazannyj kanal (argument "OCHAN");
     I=2 - kanal uve otkryt (argument "CHAN").
.HLV 2
funkciq	ICSTAT (RT11FB ili RT11XM)
.LIN
funkciq	ICSTAT prednazna~ena dlq polu~eniq informacii o	sostoqnii
kanala.	ona wypolnqetsq	tolxko pod uprawleniem RT11FB(XM)
pod uprawleniem	RT11SJ wyzow |Toj funkcii ne daet nikakoj
informacii.
.LIN
obra}enie k funkcii:
.SWT
	I=ICSTAT (CHAN,ADDR)
.BLN
gde
.DFN CHAN
nomer kanala, o	kotorom	neobhodimo polu~itx informaci`;
.DFN ADDR
6-slownyj massiw, prednazna~ennyj dlq priema
informacii o sostoqnii kanala.
.LIN
ADDR, opisannyj
w wide 6-|lementnogo massiwa tipa INTEGER*2, imeet sledu`}ij format:
.DFN 1-e slowo
slowo sostoqniq	kanala;
.DFN 2-e slowo
absol`tnyj nomer na~alxnogo bloka fajla, swqzannogo s |tim
kanalom	na nositele;
.DFN 3-e slowo
dlina fajla;
.DFN 4-e slowo
maksimalxnyj nomer bloka,
w kotoryj byla proizwedena zapisx s
togo momenta, kak byl otkryt fajl;
.DFN 5-e slowo
nomer ustrojstwa, s kotorym swqzan kanal;
.DFN 6-e slowo
imq ustrojstwa,	s kotorym swqzan kanal,	w RADIX-50.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - ukazannyj kanal ne otkryt.
.LIN
w primere pokazano, kak	polu~itx informaci` o sostoqnii	kanala.
.LIN
primer.
.SWT
	  INTEGER*2 AREAL(6)
	  I=7
	  IF(ICSTAT(I,AREAL).NE.0)TYPE 99,I
     99	  FORMAT('kanal',I4,' ne otkryt')

.HLV 2
funkciq	IFREEC
.LIN
funkciq	IFREEC prednazna~ena dlq oswobovdeniq ukazannogo kanala
i wozwrata ego w spisok	swobodnyh kanalow
ispolnq`}ej sistemy fortrana. pered wyzowom IFREEC ukazannyj kanal
neobhodimo zakrytx funkciej CLOSEC (ili	ICLOSE)	ili o~istitx
funkciej PURGE.	funkciq	IFREEC ne movet
wyzywatxsq iz podprogramm zawer{eniq ili obrabotki prerywaniq. wyzowy
IFREEC dolvny proizwoditxsq tolxko dlq kanalow,	kotorye	byli ranee uspe{no
wydeleny iz spiska swobodnyh kanalow ispolnq`}ej sistemy fortran
pri pomo}i
wyzowa IGETC, w	protiwnom
slu~ae rezulxtaty nepredskazuemy.
.LIN
obra}enie k funkcii:
.SWT
	I=IFREEC (CHAN)
.BLN
gde
.DFN CHAN
nomer (celoe) oswobovdaemogo kanala.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - w dannyj moment ukazannyj kanal ne wydelen.
.LIN
primer priweden	w opisanii funkcii IGETC (p. 8.3.5).
.HLV 2
funkciq	IGETC
.LIN
funkciq	IGETC prednazna~ena dlq	wydeleniq osnownyh kanalow sistemy
w diapazone 0-17 (wosxmeri~noe)	dlq ispolxzowaniq ih drugimi
podprogrammami SYSLIB. ispolnq`}aq sistema
fortrana wydelqet kanal	polxzowatel` i fiksiruet, ~to on zanqt,
t.e. sistema wwoda/wywoda fortrana ne polu~it k	nemu dostupa.
funkciq	IGETC ne movet wyzywatxsq iz
podprogrammy zawer{eniq	ili iz podprogrammy obrabotki prerywaniq.
.LIN
obra}enie k funkcii:
.SWT
	I=IGETC	()
.TES 4
.LIN
rezulxtaty funkcii:
.SWT
     I=-1 - net	swobodnyh kanalow;

     I=N  - dlq	wwoda/wywoda wydelen kanal N.
.LIN
primer.
.SWT
     ICHAN=IGETC() !raspredelitx kanal
     IF(ICHAN.LT.0)STOP	'kanal nelxzq wydelitx'
      .	. .
     CALL IFREEC(ICHAN)	 !oswoboditx kanal
      .	. .
     END
.HLV 2
funkciq	ILUN
.LIN
funkciq	ILUN prednazna~ena dlq opredeleniq nomera kanala, s kotorym
swqzano	logi~eskoe ustrojstwo fortrana w sisteme RT11.
.LIN
obra}enie k funkcii:
.SWT
	I=ILUN (LUN)
.BLN
gde
.DFN LUN
celoe wyravenie	so zna~eniem w diapazone 1 - 99;
opredelqet nomer logi~eskogo ustrojstwa	fortranowskoj sistemy.
.LIN
rezulxtaty funkcii:
.SWT
     I=N  - kanal s nomerom N swqzan s logi~eskim ustrojst-
	    wom	sistemy	LUN;

     I=-1 - logi~eskoe ustrojstwo ne otkryto;
     I=-2 - logi~eskoe ustrojstwo otkryto konsolxnomu ter-
	    minalu.
.TES 6
.LIN
primer.
.SWT
	  PRINT	99
     99	  FORMAT(' nape~atatx na '
	 *' logi~eske ustrojstwo 6, kotorym po umol~ani` '
	 *' dolvno bytx	LP: ')
	  LUNIT=ILUN(6)	 ! opredelenie kanala wwoda/wywoda
.HLV 2
funkciq	IREOPN
.LIN
funkciq	IREOPN prednazna~ena dlq powtornogo ustanowleniq swqzi zadannogo
kanala s fajlom, dlq kotorogo predwaritelxno bylo wypolneno ISAVES.
w slu~ae,
kogda odnowremenno obrabatywaetsq bolx{oe ~islo	fajlow,	celesoobrazno
ispolxzowatx kombinaci`	funkcij	ISAVES/IREOPN. neobhodimye dlq raboty
fajly mogut bytx otkryty funkciej LOOKUP, ih sostoqnie movno sohranitx
s pomo}x` ISAVES, a s pomo}x` IREOPN powtorno otkrytx fajly i s~itatx
iz nih neobhodimye dannye.
.LIN
obra}enie k funkcii:
.SWT
	I=IREOPN (CHAN,CBLK)
.BLN
gde
.DFN CHAN
nomer kanala, swqzywaemogo s wnowx otkrywaemym
fajlom;	perwona~alxno |tot kanal dolven
nahoditxsq w neaktiwnom	sostoqnii;
.DFN CBLK
5-slownyj massiw, w kotoryj funkciej ISAVES
byla zapisana informaciq o sostoqnii kanala.
.LIN
CBLK predstawlqet soboj	5-|lementnyj
massiw tipa INTEGER*2 i	imeet sledu`}ij	format:
.DFN 1 |lement
slowo sostoqniq	kanala;
.DFN 2 |lement
nomer na~alxnogo bloka fajla na	nositele;
rawen nul` dlq ustrojstw s nefajlOwoj strukturoj;
.DFN 3 |lement
dlina fajla (w blokah po 256 slow);
.DFN 4 |lement
rezerwiruetsq;
.DFN 5 |lement
dwa informacionnyh bajta; ~etnyj
bajt - s~et~ik wwoda/wywoda, s~itaet ~islo zaprosow, sdelannyh
dannomu	kanalu;	ne~etnyj bajt -	nomer ustrojstwa, swqzannogo
s |tim kanalom.
.TES 3
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - ukazannyj kanal uve ispolxzuetsq.
.LIN
primer.
.SWT
     INTEGER*2 SAVES(5,10)
     DATA ISVPTR/1/
      .	. .
     CALL ISAVES(ICHAN,SAVES(1,ISVPTR))
      .	. .
     CALL IREOPN(ICHAN,SAVES(1,ISVPTR))
.HLV 2
funkciq	ISAVES
.LIN
funkciq	ISAVES zapisywaet pqtx slow informacii o sostoqnii kanala w
ukazannyj massiw. w |tom massiwe, posle	wypolneniq ISAVES,
budet sodervatxsq
polnaq informaciq o fajle, neobhodimaq RT11 dlq ego	opredeleniq. posle
wypolneniq funkcii
ISAVES 5-slownyj massiw	nahoditsq w operatiwnoj	pamqti,	ukazannyj kanal
zakrywaetsq i stanowitsq dostupnym dlq ispolxzowaniq. esli
neobhodimo wnowx polu~itx dostup k informacii, kotoraq byla swqzana
s sohranennym kanalom, ispolxzuetsq funkciq IREOPN.
.LIN
funkci`	ISAVES movno ispolxzowatx tolxko w tom slu~ae, esli fajl byl
otkryt wyzowom LOOKUP. esli dlq	otkrytiq ispolxzowalasx	funkciq	IENTER,	to
wyzow ISAVES wyrabatywaet priznak
o{ibki.	funkciq	ISAVES ne primenqetsq k	fajlam na magnitnoj lente i kassete.
.LIN
obra}enie k funkcii:
.SWT
	I=ISAVES (CHAN,CBLK)
.BLN
gde
.DFN CHAN
nomer kanala, o	kotorom	neobhodimo polu~itx informaci`;
|tot kanal dolven bytx polu~en iz ispolnq`}ej sistemy fortrana pri
pomo}i funkcii IGETC, ili, esli	bylo
obra}enie k ICDFN, movet bytx ispolxzowan kanal	s nomerom 16
(desqti~noe) i bolx{e;
.DFN CBLK
5-slownyj massiw, w kotoryj neobhodimo zapisatx
informaci` o kanale (sm. p. 8.3.7).
.LIN
ispolxzuq ISAVES/IREOPN,
neobhodimo izbegatx sledu`}ih situacij:
.AND
esli funkciq ISAVES primenqlasx	k fajlu, a zatem |tot fajl byl udalen
do powtornogo otkrytiq,	to oswobodiw{eesq mesto	moglo bytx ispolxzowano
funkciej IENTER; pri takoj posledowatelxnosti funkcij su}estwuet
weroqtnostx, ~to
sodervimoe fajla, sostoqnie kotorogo sohranqlosx, izmenitsq;
.AND
esli pri wypolnenii funkcij IREAD i IWRITE w operatiwnoj pamqti	net
drajwera trebuemogo periferijnogo ustrojstwa, nali~ie kotorogo
neobqzatelxno pri wypolnenii funkcii IREOPN, to	|to priwedet k
neustranimoj o{ibke.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - zadannyj kanal w nastoq}ij moment ne	swqzan s
	   fajlom;
     I=2 - fajl	byl otkryt wyzowom IENTER, funkciq ISAVES
	   ne movet wypolnitxsq.
.LIN
primer.
.SWT
     INTEGER*2 BLK(5)
      .	. .
     IF(ISAVES(ICHAN,BLK).NE.0)STOP'o{ibka ISAVES'
.HLV 2
podprogramma PURGE
.LIN
podprogramma PURGE ispolxzuetsq	dlq otkl`~eniq kanala bez
wypolneniq funkcii ISAVES, CLOSEC ili ICLOSE. pri |tom fajl, swqzannyj
w nastoq}ij moment s kanalom, ne stanowitsq postoqnnym,	esli on	byl sozdan
po IENTER. |tu podprogrammu
celesoobrazno primenqtx	dlq predotwra}eniq prewra}eniq fajlow, sozdawaemyh
funkciej IENTER	ili sistemnoj makrokomandoj .ENTER, w postoqnnye fajly.
.LIN
obra}enie k podprogramme:
.SWT
	CALL PURGE (CHAN)
.BLN
gde
.DFN CHAN
nomer kanala sistemy RT11, kotoryj neobhodimo Otkl`~itx.
.LIN
o{ibki otsutstwu`t.
.LIN
primer priweden	w opisanii funkcii IENTER
(sm. p.	8.1.3).
.HLV 1
obrabotka komandnoj stroki
.HLV 2
podprogramma GTLIN
.LIN
podprogramma GTLIN
peredaet stroku	s sistemnogo terminala ili iz wypolnq`}egosq
komandnogo fajla w programmu polxzowatelq.
.LIN
|tot zapros pozwolqet prinimatx	informaci` s sistemnogo	terminala
i uprawlqtx programmoj iz koswennogo komandnogo	fajla. podprogramma
GTLIN trebuet USR. maksimalxnyj	razmer whodnoj
stroki rawen 80	simwolam. opisanie ustanowki razrqdow w	slowe
sostoqniq zadaniq (JSW)	dlq peresylki znakow kirillicy i ustanowki
uslowij	nezaber{ennosti	dano w opisanii	sistemnoj
makrokomandy .GTLIN (sm. p. 7.4.3).
.LIN
obra}enie k podprogramme:
.SWT
	CALL GTLIN (RESULT[,PROMPT])
.BLN
gde
.DFN RESULT
massiw,	w kotorom pome}aetsq stroka; |tot
massiw tipa LOGICAL*1 sodervit maksimum	80
simwolow pl`s poslednij	simwol - ukazatelx konca
(rawen nul`) i po|tomu dolven imetx razmernostx	ne menx{u`, ~em	81;
.DFN PROMPT
neobqzatelxnyj argument; massiw	tipa LOGICAL*1;	stroka,	kotoraq	pe~ataetsq do
whodnoj	stroki;	format stroki takoj ve,	kak i w	podprogramme PRINT;
esli argument opu}en, nikakih signalow
gotownosti  k wwodu s klawiatury na terminal ne	wywoditsq.
.LIN
o{ibki otsutstwu`t.
.LIN
primer.
	LOGIKAL*1 INP(81), PROMP(5)
	DATA PROMP /'i', 'm', 'q', '?',	"200/
	  . . .
	CALL GTLIN (INP,PROMP)

.HLV 2
funkciq	IASIGN
.LIN
funkciq	IASIGN prednazna~ena dlq zapisi	informacii w tablicu
logi~eskih ustrojstw ispolnq`}ej sistemy fortrana
(otmenqq zna~eniq, nazna~ennye po
umol~ani`) s tem, ~toby	|ta informaciq ispolxzowalasx
pri otkrytii logi~eskogo ustrojstwa. |tu funkci`
movno ispolxzowatx wmeste s funkciej ICSI dlq obespe~eniq
priema programmoj na fortran standartnoj komandnoj
stroki CSI. funkciq IASIGN dolvna wyzywatxsq do	otkrytiq ustrojstwa,
t.e. do	togo, kak odin iz operatorow (READ, WRITE, PRINT, TYPE,	OPEN ili
ACCEPT), trebu`}ij obra}eniq k logi~eskomu ustrojstwu, budet wypolnen.
.LIN
obra}enie k funkcii:
.SWT
	I=IASIGN (LUN,IDE[,IFILEX[,ISIZE[,ITYPE]]])
.BLN
gde
.DFN LUN
celaq peremennaq tipa INTEGER*2, konstanta
ili wyravenie, opisywa`}ee logi~eskoe ustrojstwo fortran,
dlq kotorogo prednazna~ena
informaciq;
.DFN IDEV
imq ustrojstwa - odno slowo w kode RADIX-50, im	movet bytx
perwoe slowo opisaniq whodnogo i wyhodnogo
fajla funkcii ICSI;
.DFN IFILEX
tri slowa, soderva}ie imq i tip	fajla w	kode RADIX-50;
imi mogut bytx wtoroe, tretxe i	~etwertoe
slowo opisaniq whodnogo	i wyhodnogo fajla funkcii ICSI;
.DFN ISIZE
dlina (w blokah	po 256 slow) oblasti na	wne{nem	zapomina`}em ustrojstwe
dlq razme}eniq wyhodnogo fajla;	e` movet bytx
pqtoe slowo opisaniq wyhodnogo fajla ICSI;
esli |tot parametr rawen nul`, to dlq zapisi  fajla
wydelqetsq polowina naibolx{ego	swobodnogo
prostranstwa <UNUSED> ili
wesx sledu`}ij po weli~ine <UNUSED>;
esli weli~ina, ukazywa`}aq dlinu, rawna	-1,
to wydelqetsq naibolx{ij <UNUSED>;
.DFN ITYPE
celaq weli~ina,	opredelq`}aq neobqzatelxnye
specifikacii, nazna~aemye fajlu.
.LIN
ITYPE polu~aetsq sloveniem weli~in, sootwetstwu`}ih
nuvnym operaciqm:
.DFN 1
ispolxzowatx dlq wywoda	dwojnu`	buferizaci`;
.DFN 2
otkrytx	fajl w ka~estwe	wremennogo;
.DFN 4
wypolnitx otkrytie su}estwu`}ego fajla wo
wremq perwoj operacii wwoda/wywoda (w protiwnom
slu~ae perwaq operaciq wwoda/wywoda opredelqet sposob otkrytiq fajla w RT11;
naprimer, esli perwoj operaciej	budet wywod, to
fajl budet otkryt po IENTER;
operaciq ~teniq	wsegda predwarqetsq LOOKUP);
.DFN 8
ras{iritx informaci` ob	uprawlenii karetkoj;
.DFN 16
ne ras{irqtx informaci`	ob uprawlenii karetkoj;
.DFN 32
fajl movno tolxko ~itatx.
.LIN
prime~aniq:
.LIN 0
1. ras{irennaq informaciq ob uprawlenii	karetkoj
primenqetsq tolxko k formatnym wyhodnym	fajlam i obozna~aet, ~to perwyj
simwol kavdoj zapisi ispolxzuetsq w ka~estwe simwola uprawleniq	karetkoj
pri zapisi na dannoe logi~eskoe	ustrojstwo. perwyj simwol
udalqetsq iz zapisi i preobrazuetsq w sootwetstwu`}ie simwoly
koi-7 dlq modelirowaniq	trebuemogo uprawleniq karetkoj.
.LIN 0
2. esli	informaciq ob uprawlenii karetkoj ne ras{irena,
to perwyj simwol kavdoj	zapisi ne modificiruetsq i ispolnq`}aq sistema
fortrana (OTS) wywodit <LF>, zapisx i <CR>.
.LIN 0
3. esli	uprawlenie karetkoj ne ukazano,	to OTS
posylaet ras{irennu` informaci`	ob uprawlenii
karetkoj na terminal i pe~ata`}ee ustrojstwo, a	neras{irennu`
informaci` ob uprawlenii karetkoj - na wse drugie ustrojstwa i fajly.
.LIN
rezulxtaty funkcii:
.SWT
     I=	0 - oby~nyj wyhod;

     I<>0 - ukazannoe logi~eskoe ustrojstwo uve	ispolxzu-
	    etsq ili net mesta dlq informacii ob ustanow-
	    lenii swqzi	s drugim logi~eskim ustrojstwom.
.LIN
w primere opredelqetsq wyhodnoj	fajl na	logi~eskom ustrojstwe 3,
w kotorom dlq wywoda ispolxzuetsq dwojnaq buferizaciq. opisywaetsq
takve whodnoj fajl na logi~eskom ustrojstwe 4, dostupnyj tolxko	dlq
~teniq.	informaciq o whodnom
i wyhodnom fajlah beretsq iz massiwa opisaniq fajlow ICSI (iz opisanij
perwogo	wyhodnogo i perwogo whodnogo fajlow wo wwedennoj komande
formata	CSI).
.TES 12
.LIN
primer.
.SWT
     INTEGER*2 SPEC(39)
     REAL*4 EXT(2)
     DATA EXT/6RDATDAT,6RDATDAT/    !po	umol~ani` nazna~a-
 C				     etsq tip fajla DAT
      .	. .
  10 IF(ICSI(SPEC,EXT,,,0).NE.0) GOTO 10
 C
 C     kl`~i ne	prinima`tsq
 C
     CALL IASIGN(3,SPEC(1),SPEC(2),SPEC(5),1)
     CALL IASIGN(4,SPEC(16),SPEC(17),0,32)
.HLV 2
funkciq	ICSI
.LIN
funkciq	ICSI wyzywaet interpretator komandnoj stroki (CSI) sistemy RT11
w specialxnom revime dlq analiza komandnoj stroki i wozwra}aet specifikacii
fajlow i kl`~ej	w programmu. w |tom revime interpretator
komandnoj stroki ne proizwodit zagruzku	drajwerow i ne wypolnqet funkcii
CLOSE, ENTER ili LOOKUP. argument razre{en tolxko w slu~ae,
kogda on wwoditsq s terminala.
.LIN
funkciq	ICSI ne	movet wyzywatxsq iz podprogrammy zawer{eniq ili
obrabotki prerywaniq. |ta funkciq trebuet raboty USR.
.LIN
obra}enie k funkcii:
.SWT
	I=ICSI (OUTSPC,TYP[,CSTRING][,SWITCH],NUM)
.BLN
gde
.DFN OUTSPC
massiw iz 39 slow, prednazna~ennyj dlq razme}eniq
opisanij fajlow	w kode RADIX-50;
.DFN TYP
tablica	tipow fajlow w RADIX-50, ispolxzuemyh po
umol~ani`; ~etyrehslownyj massiw;
.DFN CSTRING
massiw sodervit	stroku,
zadawaemu` w formate ASCIZ, kotoru` neobhodimo
interpretirowatx kak komandu CSI; stroka dolvna	zakan~iwatxsq nulewym bajtom;
esli |tot parametr opu}en,
to sistema wywodit simwol zaprosa komandy
(*) na terminal	i  prinimaet s nego  komandnu`	stroku;
esli wwod dannyh proizwoditsq iz koswennogo komandnogo fajla,
to obra}enie k terminalu ne proizwoditsq, a ispolxzuetsq  sledu`}aq stroka
komandnogo fajla;
.DFN SWITCH
imq massiwa tipa INTEGER*2 s razmernostx` (4,NUM),
gde NUM	- koli~estwo Kl`~ej, opredelennyh w
programme; |tot	parametr dolven	prisutstwowatx,
esli weli~ina, ukazannaq dlq parametra NUM, ne rawna nul`;
.DFN NUM
obqzatelxnyj parametr; ~islo kl`~ej, opisannyh w massiwe SWITCH.
.LIN
format OUTSPC (39-|lementnogo massiwa tipa INTEGER*2), sledu`}ij:
.DFN 1-4 slowa
specifikaciq wyhodnogo fajla 1;
.DFN 5-e slowo
dlina wyhodnogo	fajla 1;
.DFN 6-9 slowa
specifikaciq wyhodnogo fajla 2;
.DFN 10-e slowo
dlina wyhodnogo	fajla 2;
.DFN 11-14 slowA
specifikaciq wyhodnogo fajla 3;
.DFN 15-e slowO
dlina wyhodnogo	fajla 3;
.DFN 16-19 slowA
specifikaciq whodnogo fajla 1;
.DFN 20-23 slowA
specifikaciq whodnogo fajla 2;
.DFN 24-27 slowA
specifikaciq whodnogo fajla 3;
.DFN 28-31 slowA
specifikaciq whodnogo fajla 4;
.DFN 32-35 slowA
specifikaciq whodnogo fajla 5;
.DFN 36-39 slowA
specifikaciq whodnogo fajla 6.
.LIN
tablica	tipow fajlow po	umol~ani` ispolxzuetsq
w slu~aqh opisaniq fajla w stroke CSI bez ukazaniq
tipa:
.DFN TYPE(1)
tip fajla po umol~ani` dlq wseh	whodnyh	fajlow;
.DFN TYPE(2)
tip fajla po umol~ani` dlq wyhodnogo fajla 1;
.DFN TYPE(3)
tip fajla po umol~ani` dlq wyhodnogo fajla 2;
.DFN TYPE(4)
tip fajla po umol~ani` dlq wyhodnogo fajla 3.
.LIN
massiw SWITCH imeet sledu`}ij format dlq J-go kl`~a, opisannogo	w massiwe:
.DFN SWITCH (1,J)
odnosimwolxnoe imq kl`~a w koi-7;
.DFN SWITCH (2,J)
ustanawliwaetsq	podprogrammoj ICSI w
0, esli	kl`~ ne	byl ukazan w stroke CSI; w 1, esli kl`~
byl ukazan bez zna~eniq; w 2, esli kl`~	ukazan
so zna~eniem;
.DFN SWITCH(3,J)
ustanawliwaetsq	w nomer	fajla,
pri specifikacii kotorogo byl postawlen	kl`~;
numeraciq fajlow posledowatelxno-pozicionnaq, t.e.
perwyj whodnoj fajl imeet nomer	4;
.DFN SWITCH(4,J)
ustanawliwaetsq	w zna~enie, ukazannoe dlq dannogo kl`~a	komandy	CSI,
esli SWITCH(2,J) rawen dwum;
.LIN
prime~aniq:
.LIN 0
1. parametr SWITCH dolven hranitx
imena wseh dopustimyh kl`~ej. naprimer,	dlq hraneniq 5 imen
kl`~ej movno ispolxzowatx sledu`}u` organizaci`:
.SWT
     INTEGER*2 SW(4,5)
     DATA SW(1,1)/'S'/,SW(1,2)/'M'/,SW(1,3)/'I'/
     DATA SW(1,4)/'L'/,SW(1,5)/'E'/
.BLN
esli kakoj-libo	kl`~ movet poqwitxsq w komandnoj stroke	neskolxko raz
(ili pri nem movet bytx	ukazano	neskolxko zna~enij),
to |tot	kl`~ dolven bytx opisan	w massiwe SWITCH stolxko raz,
skolxko	semanti~eski razli~nyh wariantow ego poqwleniq su}estwuet.
.LIN 0
2. parametry funkcii ICSI dolvny razme}atxsq w pamqti tak, ~toby oni ne
perekrywalisx s	USR pri	swopinge.
.LIN
bolee podrobno wyzow i funkcionirowanie
interpretatora komandnoj stroki	opisano	w
sistemnoj makrokomande .CSISPC.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - neprawilxnaq	komandnaq stroka; dannye ne
	   wozwra}a`tsq;
     I=2 - w komandnoj stroke wstretilosx neprawilxnoe
	   opisanie ustrojstwa;
     I=3 - byl ukazan neprawilxnyj kl`~	ili dannyj kl`~
	   byl ukazan bolx{ee ~islo raz, ~em |to razre{eno
	   tablicej opisanij kl`~ej SWITCH.
.LIN
w primere pokazana organizaciq cikla. programma	ciklitsq do teh	por,
poka na	terminale ne budet nabrana dopustimaq komanda.
.LIN
primer.
.SWT
     INTEGER*2 SPEC(39)
     REAL*8 EXT
     DATA EXT/12RDATDATDATDAT/
      .	. .
  10 TYPE 99
  99 FORMAT  ('	wwesti stroku CSI bez kl`~ej')
     IF(ICSI(SPEC,EXT,,,0).NE. 0) GOTO 10
.HLV 1
rabota s tajmerom
.HLV 2
podprogramma CVTTIM
.LIN
podprogramma CVTTIM preobrazuet	wremq, zapisannoe w 2-slownom wnutrennem
formate, w ~asy, minuty, sekundy i doli	sekundy.
.LIN
obra}enie k podprogramme:
.SWT
	CALL CVTTIM (TIME,HRS,MIN,SEC,TICK)
.BLN
gde
.DFN TIME
wremq, zapisannoe w 2-slownom wnutrennem forMate,
podleva}ee preobrazowani`; esli	wremq
hranitsq w 2-|lementnom	massiwe	tipa
INTEGER*2, to togda perwyj
|lement	- star{aq ~astx	wremeni,wtoroj
|lement	- mlad{aq ~astx	wremeni;
.DFN HRS
~asy; celoe ~islo;
.DFN MIN
minuty;	celoe ~islo;
.DFN SEC
sekundy; celoe ~islo;
.DFN TICK
doli sekundy (1/60 sekundy dlq
60-gercewyh linejnyh ~asow; 1/50 sekundy
dlq 50-gercewyh	linejnyh ~asow).
.LIN
o{ibki otsutstwu`t.
.LIN
primer.
.SWT
     INTEGER*4 ITIME
      .	. .
     CALL GTIM(ITIME)	  !polu~itx teku}ee wremq sutok
     CALL CVTTIM(ITIME,IHRS,IMIN,ISEC,ITCK)
     IF(IHRS.GE.12.AND.IHRS.LT.13) GOTO	100 !wremq obeda
.HLV 2
podprogramma GTIM
.LIN
podprogramma GTIM daet programmam dostup
k teku}emu wremeni sutok. ~islowoe zna~enie, predstawlq`}ee teku}ee
wremq, pome}aetsq w dwa	slowa i	daetsq
w wide dolej sekundy, pro{ed{ih	posle poluno~i.	esli w sisteme
otsutstwu`t linejnye ~asy, to wydaetsq weli~ina, rawnaq	nul`. esli
pri zagruzke sistemy ne	byla
podana komanda monitora	TIME, ukazywa`}aq teku}ee wremq,
to wozwrA}aemaq	weli~ina
budet rawnqtxsq	wremeni, pro{ed{emu s momenta zagruzki sistemy,	a ne
wremeni	sutok.
.LIN
obra}enie k podprogramme:
.SWT
	CALL GTIM (ITIME)
.BLN
gde
.DFN ITIME
dwuslownyj massiw dlq priema wremeni sutok.
.LIN
star{aq	~astx zna~eniq pome}aetsq w perwoe slowo, mlad{aq ~astx	- wo
wtoroe slowo. podprogramma CVTTIM movet	ispolxzowatxsq dlq togo, ~toby
preobrazowatx wremq, wyravennoe	w
2-slownom wnutrennem formate, w	~asy, minuty, sekundy i	doli sekundy.
CVTTIM prowodit	preobrazowaniq,	osnowywaqsx na slowe konfiguracii
monitora (dlq 50- i 60-gercewyh	linejnyh ~asow).
pri rabote RT11FB(XM) wremq sutok
awtomati~eski sbrasywaetsq w 00.00 posle 24:00 pri wypolnenii
GTIM; pod uprawleniem RT11SJ |ti dejstwiq ne wypolnq`tsq.
.LIN
o{ibki otsutstwu`t.
.LIN
primer.
.SWT
	  INTEGER*4 JTIME
	   . . .
	  CALL GTIM(JTIME)
.HLV 2
funkciq	ICMKT
.LIN
funkciq	ICMKT otmenqet odin ili	neskolxko zaplanirowannyh wyzowow
podprogramm zawer{eniq,
wypolnennyh podprogrammami ISCHED, ITIMER ili MRKT.
funkciq	podderviwaetsq
RT11SJ, esli w RT11SJ pri generacii wkl`~ena wozmovnostx
raboty s ~asami.
.LIN
obra}enie k funkcii:
.SWT
	I=ICMKT	(ID,TIME)
.BLN
gde
.DFN ID
celoe wyravenie, identifikator otmenqemogo
zaprosa; esli ono rawno	0, to otmenq`tsq wse
zaplanirowannye	zaprosy;
.DFN TIME
imq dwuslownoj zony, w kotoru` monitor pome}aet
koli~estwo wremeni, ostaw{eesq do momenta wyzowa podprogrammy zawer{eniq,
ukazannogo w otmenqemom	zaprose.
.LIN
bolee podrobno otmena zaplanirowannyh zaprosow
opisana	w sistemnoj makrokomande .CMKT.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;
     I=1 - identifikator (celoe) ne byl	rawen 0	i
	   ukazannyj zapros ne byl najden.
.LIN
primer.
.SWT
     INTEGER*4 J
      .	. .
     CALL ICMKT(0,J)	!otmenitx wse zaplanirowannye
 C			 zaprosy
.HLV 2
funkciq	ISCHED
.LIN
funkciq	ISCHED planiruet wypolnenie ukazannoj podprogrammy na qzyke
fortran	w ka~estwe asinhronnoj podprogrammy zawer{eniq w zadannoe
wremq sutok. wypolnenie	|togo zaprosa w	RT11SJ trebuet poddervki
tajmera.
.LIN
obra}enie k funkcii:
.SWT
	I=ISCHED (HRS,MIN,SEC,TICK,AREA,ID,CRTN)
.BLN
gde
.DFN HRS
~asy; celoe ~islo;
.DFN MIN
minuty;	celoe ~islo;
.DFN SEC
sekundy; celoe ~islo;
.DFN TICK
doli sekundy (1/60 sekundy dlq 60-gercewyh
linejnyh ~asow;	1/50 sekundy dlq 50-gercewyh linejnyh ~asow);
.DFN AREA
4-slownyj massiw, dlq hraneniq informacii swqzi; |ta
zona ne	dolvna modificirowatxsq	programmoj i
perekrywatxsq USR pri swopinge;	ona movet bytx ispolxzowana drugimi
podprogrammami zawer{eniq na qzyke fortran tolxko posle	aktiwizacii
ukazannoj |tim zaprosom	podprogrammy zawer{eniq;
.DFN ID
identifikator (celoe) zaprosa; |to zna~enie budet peredano podprogrammme,
wypolnenie kotoroj planiruetsq,	kak  parametr wyzowa;
.DFN CRTN
imq podprogrammy na qzyke fortran,
kotoraq	dolvna bytx zapu}ena w ukazannoe wremq
sutok; |to imq dolvno bytx ukazano w
operatore EXTERNAL programmy,
wyzywa`}ej ISCHED; podprogramma	zawer{eniq imeet odin parametr,
naprimer:
.SWT
	       SUBROUTINE ASUB (ID)
	       INTEGER ID
.LIN
esli podprogramma zapu}ena, to zna~enie	celogo parametra budet rawno weli~ine,
ukazannoj dlq parametra	ID sootwetstwu`}ego wyzowa ISCHED.
.LIN
prime~aniq:
.LIN 0
1. planiruemyj pri pomo}i ISCHED wyzow podprogrammy zawer{eniq
movet pozve otmenqtxsq funkciej	ICMKT.
.LIN 0
2. esli	sistema	zanqta,	to wremq sutok,	kogda
budet wyzwana podprogramma zawer{eniq, movet okazatxsq pozve trebuemogo.
.LIN 0
3. podprogramma	zawer{eniq na qzyke fortran movet
planirowatx wyzowy samoj sebq, ispolxzuq ISCHED	i/ili ITIMER.
.LIN 0
4. funkciq ISCHED trebuet |lement o~eredi, |to dolvno u~itywatxsq pri
wypolnenii funkcii IQSET.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - net swobodnogo |lementa o~eredi, planirowatx
	   zapros nelxzq.
.TES 19
.LIN
primer.
.SWT
	INTEGER*2 LINK(4)   !zona swqzi
	EXTERNAL NOON	    !imq wypolnqemoj podprogrammy
	 . . .
	I=ISCHED(12,0,0,0,LINK,0,NOON)	!wypolnitx podprog-
 C					rammu NOON w
 C					12 ~asow
	. . .
	END
	SUBROUTINE NOON(ID)
 C
 C	wypolnenie programmy prekratitsq nasilxno, esli
 C	k |tomu	wremeni	ne budet zawer{eno zadanie
 C
	STOP  'wynuvdennoe prerywanie -	12 ~asow'
	END
.HLV 2
funkciq	ISLEEP
.LIN
funkciq	ISLEEP priostanawliwaet	wypolnenie osnownoj programmy
zadaniq	na zadannoe wremq, t.e.	na
summu ~asow, minut, sekund i dolej sekundy, ukazannu` w	wyzowe ISLEEP.
pri |tom wse zaplanirowannye podprogrammy zawer{eniq prodolva`t	wyzywatxsq.
wypolnenie |togo zaprosa w RT11SJ trebuet poddervki tajmera monitorom.
.LIN
obra}enie k funkcii:
.SWT
	I=ISLEEP (HRS,MIN,SEC,TICK)
.BLN
gde
.DFN HRS
~asy; celoe ~islo;
.DFN MIN
minuty;	celoe ~islo;
.DFN SEC
sekundy; celoe ~islo;
.DFN TICK
doli sekundy (1/60 sekundy dlq
60-gercewyh linejnyh ~asow; 1/50 sekundy
dlq 50-gercewyh	linejnyh ~asow).
.LIN
prime~aniq:
.LIN 0
1. funkciq ISLEEP trebuet |lement o~eredi, ~to neobhodimo
u~itywatx pri wypolnenii funkcii IQSET.
.LIN 0
2. esli	sistema	zanqta,	to dejstwitelxnoe wremq	ostanowa
osnownoj programmy
movet bytx bolx{e, ~em zadano.
.LIN
rezulxtaty funkcii:
.SWT
    I=0	- normalxnyj wyhod;

    I=1	- net swobodnogo |lementa o~eredi.
.LIN
primer.
.SWT
	 CALL  IQSET (2)
	  . . .
	 CALL  ISLEEP (0,0,0,4)
.HLV 2
funkciq	ITIMER
.LIN
funkciq	ITIMER planiruet wypolnenie zadannoj podprogrammy na qzyke
fortran	w ka~estwe asinhronnoj podprogrammy zawer{eniq po iste~enii
zadannogo interwala wremeni. |ta podprogramma podderviwaetsq
w RT11SJ, esli obespe~enie tajmera wkl`~eno	w monitor pri
generacii sistemy.
.LIN
obra}enie k funkcii:
.SWT
	I=ITIMER (HRS,MIN,SEC,TICK,AREA,ID,CRTN)
.BLN
gde
.DFN HRS
~asy; celoe ~islo;
.DFN MIN
minuty;	celoe ~islo;
.DFN SEC
sekundy; celoe ~islo;
.DFN TICK
doli sekundy (1/60 sekundy dlq
60-gercewyh linejnyh ~asow; 1/50 sekundy
dlq 50-gercewyh	linejnyh ~asow);
.DFN AREA
4-slownyj massiw dlq
informacii swqzi; |tot massiw ne dolven
modificirowatxsq programmoj i
perekrywatxsq pri swopinge USR;
dannyj massiw movet ispolxzowatxsq
drugimi	funkciqmi zawer{eniq tolxko posle aktiwizacii ukazannoj	podprogrammy;
.DFN ID
identifikator (celoe) zaprosa; peredaetsq zaplanirowannoj
podprogramme, kak parametr wyzowa; identifikator zaprosa;
.DFN CRTN
imq podprogrammy na qzyke fortran
kotoraq	wyzywaetsq po iste~enii	zadannogo
interwala wremeni; |to imq dolvno ukazywatxsq w
operatore EXTERNAL programmy,
obra}a`}ejsq k ITIMER;
podprogramma zawer{eniq	na qzyke fortran
imeet odin parametr, naprimer:
.SWT
	       SUBROUTINE PROGR	(ID)
	       INTEGER ID
.LIN
posle wyzowa podprogrammy zawer{eniq zna~enie celogo
parametra budet	rawno zna~eni`,
ukazannomu dlq parametra ID sootwetstwu`}ego wyzowa ITIMER.
.LIN
prime~aniq:
.LIN 0
1. zaplanirowannyj pri pomo}i ITIMER wyzow podprogrammy	zawer{eniq
movet bytx otmenen wyzowom funkcii ICMKT.
.LIN 0
2. esli	sistema	zanqta,	to dejstwitelxnyj
interwal wremeni, po iste~enii kotorogo	wyzywaetsq podprogramma	zawer{eniq
movet bytx bolx{e trebuemogo.
.LIN 0
3. podprogrammy	na qzyke fortran
mogut planirowatx wyzowy samih sebq, ispolxzuq ISCHED ili ITIMER.
.LIN 0
4. funkciq ITIMER trebuet |lement o~eredi,
|to dolvno u~itywatxsq pri wypolnenii funkcii IQSET.
.LIN
dopolnitelxnaq informaciq movet	bytx polu~ena iz opisaniq
makrokomandy .MRKT (sm.	p. 7.5.4).
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - net swobodnogo |lementa o~eredi, planirowatx
	   zapros nelxzq.
.TES 25
.LIN
primer.
.SWT
       INTEGER*2 AREA(4)
       EXTERNAL	WATCHD
 C
 C   esli programma
 C   ne	wyzowet	funkci`	ICMKT ~erez 12 minut
 C   posle wyzowa funkcii ITIMER, to budet
 C   wyzwana podprogramma zawer{eniq WATCHD s parametrom
 C   ID, rawnym	3
 C
       CALL ITIMER(0,12,0,0,aRea,3,WATCHD)
       . . .
       CALL ICMKT(3,AREA)
       . . .
       END
       SUBROUTINE WATCHD(ID)
 C
 C   |ta podprogramma wyzywaetsq ~erez 12 minut
 C
       . . .
       RETURN
       END


.HLV 2
funkciq	ITWAIT (RT11FB ili RT11XM)
.LIN
funkciq	ITWAIT priostanawliwaet	wypolnenie
osnownoj programmy zadaniq na zadannyj interwal	wremeni. wse
programmy zawer{eniq prodolva`t	wyzywatxsq.
.LIN
obra}enie k funkcii:
.SWT
	I=ITWAIT (ITIME)
.BLN
gde
.DFN ITIME
interwal wremeni, predstawlennyj ~islom
w 2-slownom wnutrennem formate:
perwoe slowo - star{aq ~astx zna~eniq wremeni,
wtoroe slowo - mlad{aq ~astx zna~eniq wremeni.
.LIN
prime~aniq:
.LIN 0
1. funkciq ITWAIT trebuet |lement o~eredi, |to dolvno u~itywatxsq pri
wypolnenii funkcii IQSET.
.LIN 0
2. esli	sistema	zanqta,	to dejstwitelxnyj
interwal wremeni, na kotoryj zaderviwaetsq wypolnenie, movet bytx bolx{e
zadannogo.
.TES 4
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - net swobodnogo |lementa o~eredi.
.LIN
primer.
.SWT
       INTEGER*2 TIME(2)
       . . .
       CALL ITWAIT(TIME)    ! vdatx w te~enie zadannogo
 C			    wremeni TIME
.HLV 2
funkciq	IUNTIL (RT11FB ili RT11XM)
.LIN
funkciq	IUNTIL priostanawliwaet	wypolnenie
osnownoj programmy zadaniq do zadannogo	wremeni	sutok. wse podprogrammy
zawer{eniq prodolva`t wyzywatxsq.
.LIN
obra}enie k funkcii:
.SWT
	I=IUNTIL (HRS,MIN,SEC,TICK)
.BLN
gde
.LIN
.DFN HRS
~asy; celoe ~islo;
.DFN MIN
minuty;	celoe ~islo;
.DFN SEC
sekundy; celoe ~islo;
.DFN TICK
doli sekundy (1/60 sekundy dlq
60-gercewyh linejnyh ~asow; 1/50 sekundy
dlq 50-gercewyh	linejnyh ~asow).
.LIN
prime~aniq:
.LIN 0
1. funkciq IUNTIL trebuet |lement o~eredi, |to
dolvno u~itywatxsq pri wypolnenii funkcii IQSET.
.LIN 0
2. esli	sistema	zanqta,	to dejstwitelxnoe wremq
sutok, kogda wozobnowitsq wypolnenie programmy,	movet bytx
pozve trebuemogo.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - net swobodnogo |lementa o~eredi.
.LIN
primer.
.SWT
 C     sdelatx pereryw
       CALL IUNTIL(13,0,0,0)   !wozobnowitx rabotu w ~as dnq
.HLV 2
podprogramma JTIME
.LIN
podprogramma JTIME preobrazuet ukazannoe wremq wo wremq, zapisannoe wo
wnutrennem formate.
.LIN
obra}enie k podprogramme:
.SWT
	CALL JTIME (HRS,MIN,SEC,TICK,TIME)
.BLN
gde
.DFN HRS
~asy; celoe ~islo;
.DFN MIN
minuty;	celoe ~islo;
.DFN SEC
sekundy; celoe ~islo;
.DFN TICK
doli sekundy (1/60 sekundy dlq
60-gercewyh linejnyh ~asow; 1/50 sekundy
dlq 50-gercewyh	linejnyh ~asow);
.DFN TIME
2-slownyj massiw, prednazna~ennyj dlq zapisi
wremeni	wo wnutrennem formate:
perwoe slowo - star{aq ~astx zapisi o wremeni,
wtoroe slowo - mlad{aq ~astx.
.LIN
o{ibki otsutstwu`t.
.LIN
primer.
.SWT
       INTEGER*4 J1
 C
 C   preobrazowatx 3 ~asa, 7 min, 23 sekundy w
 C   celu` weli~inu tipa INTEGER*4
 C
       CALL JTIME(3,7,23,0,J1)
       CALL JJCVT(J1)
.HLV 2
funkciq	MRKT
.LIN
funkciq	MRKT proizwodit	planirowanie wyzowa podprogrammy zawer{eniq,
napisannoj na qzyke
makroassemblera, po iste~enii zadannogo	interwala.
wypolnenie |toj	funkcii	w RT11SJ trebuet sredstw poddervki tajmera.
.LIN
obra}enie k funkcii:
.SWT
	I=MRKT (ID,CRTN,TIME)
.BLN
gde
.DFN ID
identifikator (celoe ~islo), kotoryj budet
peredan	planiruemoj podprogramme zawer{eniq;
.DFN CRTN
imq makroassemblernoj podprogrammy zawer{eniq, kotoraq
wyzywaetsq po iste~enii	zadannogo wremennogo
interwala; |to imq dolvno ukazywatxsq
operatorom EXTERNAL w programme	na qzyke
fortran, wyzywa`}ej MRKT;
.DFN TIME
interwal wremeni, wyravennyj w 2-slownom
wnutrennem formate; po iste~enii |togo
interwala wyzowetsq podprogramma zawer{eniq; esli
wremq zapisano w 2-|lementnyj massiw
tipa INTEGER*2,	to perwyj |lement - star{aq ~astx
zna~eniq wremeni, wtoroj |lement - mlad{aq ~astx zna~eniq wremeni.
.LIN
prime~aniq:
.LIN 0
1. funkciq MRKT	trebuet	|lement	o~eredi, |to
neobhodimo u~itywatx pri
wypolnenii funkcii IQSET.
.LIN 0
2. esli	sistema	zanqta,	to wremennoj interwal,
kotoryj	prohodit do na~ala wypolneniq podprogrammy zawer{eniq,
movet bytx bolx{e trebuemogo.
.LIN
bolee podrobno planirowanie podprogramm	zawer{eniq
opisano	w sistemnoj makrokomande .MRKT.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - net swobodnogo |lementa o~eredi, newozmovno
	   zaplanirowatx wypolnenie zaprosa.
.LIN
primer.
.SWT
     INTEGER*2 TINT(2)
     EXTERNAL ARTN
      .	. .
     CALL MRKT(4,ARTN,TINT)
.HLV 2
funkciq	SECNDS
.LIN
funkciq	SECNDS opredelqet teku}ee sistemnoe wremq w sekundah,
i wy~itaet iz nego ~islo, zadannoe argumentom wyzowa.
funkciq	SECNDS movet ispolxzowatxsq dlq	pods~eta istek{ego
wremeni. parametr funkcii dolven bytx tipa REAL*4.
.LIN
obra}enie k funkcii:
.SWT
	A=SECNDS (ATIME)
.BLN
gde
.DFN ATIME
peremennaq tipa	REAL*4
(konstanta ili wyravenie), zna~enie kotoroj
wy~itaetsq iz teku}ego wremeni sutok.
.ATT
|ta funkciq wypolnqet arifmeti~eskie operacii s	plawa`}ej zapqtoj. teku}ee
wremq takve movno wy~islitx, ispolxzuq wyzow GTIM i funkcii obrabotki weli~in
tipa INTEGER*4.
.LIN
rezulxtaty funkcii:
.SWT
    a=NNNNNN - weli~ina	tipa REAL*4.
.LIN
primer.
.SWT
       T1=SECNDS(0.)
 C
 C   s`da pomestitx programmu, dlq kotoroj neobhodimo
 C   wy~islitx wremq raboty
 C
       DELTA=SECNDS(T1)	!DELTA = istek{ee wremq	w sekundah

.HLV 2
podprogramma TIMASC
.LIN
podprogramma TIMASC preobrazuet	wremq, wyravennoe w 2-slownom wnutrennem
formate	i predstawlqet ego w massiwe iz	8-mi znakow koda
koi-7 w	sledu`}ej forme:
.SWT
	     ~~:mm:ss

 gde  ~~ - dwuzna~noe predstawlenie ~asow;
      mm - dwuzna~noe predstawlenie minut;
      ss - dwuzna~noe predstawlenie sekund.
.LIN
obra}enie k podprogramme:
.SWT
	CALL TIMASC (ITIME,STRING)
.BLN
gde
.DFN ITIME
wremq, wyravennoe w 2-slownom wnutrennem
formate, kotoroe neobhodimo preobrazowatx; perwoe
slowo parametra	"ITIME"	predstawlqet star{u`
~astx wremeni, wtoroe slowo - mlad{u` ~astx;
.DFN STRING
8-|lementnyj massiw, prinima`}ij zapisx	w koi-7.
.LIN
o{ibki otsutstwu`t.
.LIN
w primere opredelqetsq koli~estwo wremeni do 17.00 i
raspe~atywaetsq	rezulxtat.
.LIN
primer.
.SWT
     INTEGER*4 J1,J2,J3
     LOGICAL*1 STRNG(8)
      .	. .
     CALL JTIME(17,0,0,0,J1)
     CALL GTIM(J2)
     CALL JJCVT(J1)
     CALL JJCVT(J2)
     CALL JSUB(J1,J2,J3)
     CALL JJCVT(J3)
     CALL TIMASC(J3,STRNG)
     TYPE 99,STRNG
 99  FORMAT(' wremq ',8A1,' do 17.00 ')
.HLV 2
podprogramma TIME
.LIN
podprogramma TIME predstawlqet teku}ee sistemnoe wremq sutok w wide
8-simwolxnoj stroki znakow koi-7 w forme:
.SWT
	      ~~:mm:ss

gde
     ~~	- 2-zna~noe predstawlenie ~asow;
     mm	- 2-zna~noe predstawlenie minut;
     ss	- 2-zna~noe predstawlenie sekund.
.LIN
obra}enie k podprogramme:
.SWT
	CALL TIME (STRING)
.BLN
gde
.DFN STRING
8-|lementnyj massiw, prinima`}ij zapisx	w koi-7.
.ATT
ispolxzu`tsq 24-~asowye	~asy. naprimer,	~as dnq	predstawlqetsq kak
13:00:00.
.LIN
o{ibki otsutstwu`t.
.LIN
primer.
.SWT
       LOGICAL*1 STRNG(8)
       . . .
       CALL TIME(STRNG)
       TYPE 99,(STRNG(I),I=1,8)
 99    FORMAT('	wremq: ',8A1)
.HLV 1
funkcii	ob}ego nazna~eniq
.HLV 2
podprogramma CHAIN
.LIN
podprogramma CHAIN pozwolqet fonowoj programme
(libo programme	w M1/M4-monitore)
wyzwatx	drugu`
fonowu`	programmu, peredawaq ej	pri |tom ukazannu`
informaci`. podprogramma CHAIN
ne movet bytx wyzwana iz podprogrammy zawer{eniq ili obrabotki prerywaniq.
oblastx	dannyh ispolnq`}ej sistemy fortrana ne sohranqetsq
pri takoj pereda~e uprawleniq. |ta
informaciq dolvna bytx sformirowana wyzwannoj programmoj.
.LIN
podprogramma CHAIN ne zakrywaet	kakie-libo logi~eskie ustrojstwa ispolnq`}ej
sistemy	fortran. pri ispolxzowanii podprogrammy
CHAIN polxzowatelx dolven predwaritelxno
zakrytx	logi~eskie ustrojstwa wyzOwami podprogrammy CLOSE.
podprogramma, ukazannaq	w obra}enii k
bibliote~noj programmame fortrana USEREX,
ne budet wypolnena, esli wypolnqetsq podprogramma CHAIN.
.LIN
obra}enie k podprogramme:
.SWT
	CALL CHAIN (DBLK,VAR,WCNT)
.BLN
gde
.DFN DBLK
4-slownaq specifikaciq fajla
wyzywaemoj programmy w RADIX-50;
.DFN VAR
perwaq peremennaq posledowatelxnosti
peremennyh s posledowatelxno uweli~iwa`}imisq adresami
operatiwnoj pamqti, kotorye dolvny peredawatxsq
w wyzywaemu` programmu w specialxnoj oblasti operatiwnoj pamqti
(absol`tnye q~ejki 510 - 777);
opisywaemaq posledowatelxnostx
peremennyh movet bytx predstawlena odnomernym
massiwom ili blokom COMMON (ili	~astx`
bloka COMMON) i	dolvna na~inatxsq po ~etnomu
adresu (na granice slowa).
.DFN WCNT
s~et~ik	slow (ne bolee 60), ukazywa`}ij	~islo
slow (na~inaq s	perwoj peremennoj), kotoroe
dolvno bytx peredano wyzywaemoj	programme;
esli informaciq	ne peredaetsq, to parametr dolven
bytx rawen nul`.
.LIN
esli razmer oblasti operatiwnoj	pamqti,	~erez kotoru` podprogramma
CHAIN peredaet informaci` w wyzywaemu` programmu, nedostato~en,	on
movet
bytx uweli~en ukazaniem	kl`~a /B w komande CSI sistemnoj programme LINK	ili
/BOTTOM	w komande monitora LINK	kak
dlq programmy, wypolnq`}ej wyzow CHAIN,	tak i dlq programmy,
prinima`}ej uprawlenie.
.LIN
obra}enie k peredannym dannym movet bytx osu}estwleno wyzowom
podprogrammy RCHAIN.
.LIN
bolee polnaq informaciq	predstawlena w opisanii	makrokomandy .CHAIN
(sm. p.	7.6.1).
.LIN
o{ibki otsutstwu`t.
.LIN
w primere pokazywaet pereda~u uprawleniq programme
PROG.SAV, nahodq}ejsq na ustrojstwe RK1, s pereda~ej pri |tom
zna~enij peremennyh.
.LIN
primer.
.SWT
       REAL*4 PROGNM(2)		!opisatelx w RADIX-50
 C				 imeni programmy
       COMMON /BLK1/ A,B,C,D	!peredawaemye dannye
       DATA PROGNM/6RRK1PRO,6RG	 SAV/
       . . .
       CALL CHAIN(PROGNM,A,8)	!zagruzitx RK1:PROG.SAV
 C				 i peredatx ej uprawlenie
.HLV 2
podprogramma DEVICE (RT11FB	ili RT11XM)
.LIN
podprogramma DEVICE pozwolqet polxzowatel`
ustanawliwatx spisok adresow, kotorye dolvny bytx zagruveny ukazannymi
weli~inami po zawer{enii programmy.
esli zadanie zawer{ilosx
ili ono	prekra}eno komandoj <CTRL/C>, wwedennoj	s terminala, to	spisok
obrabatywaetsq operacionnoj sistemoj i w ukazannye w nem q~ejki	zapisywa`tsq
sootwetstwu`}ie	zna~eniq.
.LIN
|ta podprogramma prednazna~ena dlq obespe~eniq wozmovnosti
programmam polxzowatelq	zagruvatx registry ustrojstw neobhodimymi
weli~inami. w ~astnosti, ona ispolxzuetsq dlq sbrosa bita, razre{a`}ego
prerywanie ot ustrojstwa posle
prekra}eniq raboty programmy,
obsluviwa`}ej ustrojstwo.
.LIN
w kavdyj moment	wremeni	movet ispolxzowatxsq tolxko odin spisok	adresow
sledowatelxno, esli zadaetsq neskolxko wyzowow podprogrammy DEVICE, to
obrabotka
wypolnqetsq tolxko dlq spiska, zadannogo pri poslednem wyzowe.
posle wypolneniq podprogrammy DEVICE spisok ne dolven
modificirowatxsq. spisok ne dolven pome}atxsq
w oblastx perekrytij ili w oblastx swopinga
USR.
.LIN
wtoroj argument	wyzowa (LINK) obespe~iwaet poddervku swqzannogo
spiska tablic. argument	LINK qwlqetsq ne obqzatelxnym. esli on
ukazan,	to perwoe slowo	spiska budet obrabatywatxsq kak	slowo swqzi.
.LIN
obra}enie k podprogramme:
.SWT
	CALL DEVICE (ILIST[,LINK])
.BLN
gde
.TES 5
.DFN ILIST
massiw celogo tipa, iz dwuhslownyh |lementow, soderva}ih
informaci` "adres/weli~ina" (t.e. odno slowo - adres i odno slowo -
zna~enie, kotoroe dolvno bytx zapisano po |tomu	adresu), i
zakan~iwa`}u`sq	nulewym	slowom;	po okon~anii wypolneniq
programmy kavdaq zadannaq weli~ina pome}aetsq w	sootwetstwu`}ij	adres;
.DFN LINK
neobqzatelxnyj parametr, prinima`}ij l`boe
zna~enie; ukazywaet, ~to
ispolxzuetsq swqzannyj spisok tablic; esli
ispolxzuetsq format swqzannogo spiska, tO
perwoe slowo massiwa qwlqetsq ukazatelem swqzannogo
spiska.
.LIN
dopolnitelxnaq informaciq po zagruzke zna~enij w registry
ustrojstw dana w opisanii makrokomandy .DEVICE (sm. p. 7.6.7).
.LIN
o{ibki otsutstwu`t.
.LIN
primer.
.SWT
     INTEGER*2 IUSO(3)	   !massiw opisaniq ustrojstwa
     DATA IUSO(1)/"167770/ !adres registra ustrojstwa
     DATA IUSO(2)/0/	   !zagruvaemoe	zna~enie
     DATA IUSO(3)/0/	   !konec spiska
     CALL DEVICE (IUSO)

.HLV 2
podprogrammy GTJB/IGTJB
.LIN
podprogramma GTJB peredaet programme polxzowatelq nekotoru` sistemnu`
informaci` o zadanii.
.LIN
obra}enie k podprogramme GTJB:
.SWT
	CALL GTJB (ADDR[,JOBBLK[,I]])
      ili
	I = GTJB (ADDR[,JOBBLK])
.LIN
obra}enie k podprogramme IGTJB:
.SWT
	CALL IGTJB (ADDR[,JOBBLK[,I]])
      ili
	I = IGTJB (ADDR[,JOBBLK])
.BLN
gde
.DFN ADDR
massiw iz 8 ili	12 slow, prednazna~ennyj dlq priema
parametrow zadaniq;
.DFN JOBBLK
ukazatelx na trehslownoe imq zadaniq w koi-7, o	kotorom
dolvny bytx polu~eny dannye; esli trebuetsq tolxko wosxmislownyj
blok informacii, |tot argument ne dolven ukazywatxsq;
.DFN I
sodervit kod o{ibki, esli ukazannoe zadanie ne wypolnqetsq w
sisteme.
.LIN
ADDR, rassmatriwaetsq
w wide massiwa tipa INTEGER*2,
i imeet	sledu`}ij format:
.DFN 1-e slowo
nomer zadaniq =	urowenx	prioriteta*2 (0-fonowoe	zadanie, 2-operatiwnoe
zadanie	w RT11FB(XM); 0-fonowoe zadanie, 2, 4, 6, 10, 12,
14-sistemnye zadaniq, operatiwnoe zadanie-16 w monitorah so sredstwami
sistemnyh zadanij; w RT11SJ nomer zadaniq -	0);
.DFN 2-e slowo
werhnqq	granica	ispolxzuemoj pamqti(poslednqq q~ejka pl`s 2);
.DFN 3-e slowo
nivnqq granica ispolxzuemoj pamqti(perwaq q~ejka programmy);
.DFN 4-e slowo
ukazatelx na na~alo oblasti kanalow wwoda/wywoda;
.DFN 5-e slowo
adres sme{annoj	oblasti	zadaniq	w RT11FB(XM); w RT11SJ
rawno nul`;
.DFN 6-e slowo
mlad{ij	bajt: nomer terminala, wydelennogo zadani` pri zagruzke
(tolxko	pri nali~ii mnogoterminalxnoj poddervki); nulx w RT11SJ
i w odnoterminalxnyh monitorah;
.DFN 7-e slowo
wirtualxnaq werhnqq granica dlq	zadanij, sozdannyh s ispolxzowaniem
kl`~a /V komponow}ika (tolxko dlq RT11XM); nulx w RT11SJ i
RT11FB, i esli kl`~	/V komponow}ika	ne primenqlsq;
.DFN 8-9 slowo
zarezerwirowany	dlq dalxnej{ego	ispolxzowaniq.
.DFN 10-12 slowo
logi~eskoe imq zadaniq w koi-7 (tolxko dlq monitorow podderviwa`}ih
sistemnye zadaniq).
.LIN
bolee podrobno pereda~A	parametrow opisywaetsq w sistemnoj
makrokomande .GTJB (sm.	p. 7.6.12).
.LIN
esli pri wyzowe	byl ukazan tolxko odin argument, to w wyzwannu`
programmu pereda`tsq tolxko perwye wosemx slow informacionnogo bloka.
naprimer:
.SWT
	INTEGER	IJPARM (8)
	CALL GTJB (IJPARM)
	I = IGTJB (IJPARM)
.BLN
dlq polu~eniq informacionnogo bloka iz 12 slow neobhodimo ukazatx
po krajnej mere	zapqtu`	posle perwogo argumenta. naprimer:
.SWT
	INTEGER	IJPARM (12)
	CALL GTJB (IJPARM,)
	I = IGTJB (IJPARM,)
.LIN
rezulxtaty:
.SWT
	I=0  - oby~nyj wyhod iz	podprogrammy;

	I=-1 - w dannyj	moment ukazannoe
	       zadanie ne wypolnqetsq.
.TES 5
.LIN
primer.
.SWT
 C   primer prowerki su}estwowaniq operatiwnogo
 C   zadaniq w sisteme s monitorom so sredstwami
 C   sistemnyh zadanij
 C
	DIMENSION JPAR(12)
	  . . .
	IF (IGTJB(JAR, 'F').NE.0) STOP
      *	 ' net operatiwnogo zadaniq '
.HLV 2
funkciq	IDSTAT
.LIN
funkciq	IDSTAT ispolxzuetsq dlq	polu~eniq informacii ob
ustrojstwe. funkciq IDSTAT trebuet dejstwij USR	i ne movet wyzywatxsq
iz podprogrammy	zawer{eniq
ili obrabotki prerywaniq.
.LIN
obra}enie k funkcii:
.SWT
	I=IDSTAT (DEVNAM,CBLK)
.BLN
gde
.DFN DEVNAM
imq ustrojstwa w RADIX-50;
.DFN CBLK
4-slownyj massiw, dlq polu~eniq
informacii ob ustrojstwe.
.LIN
massiw iz ~etyreh |lementow tipa INTEGER*2, imeet sledu`}ij format:
.DFN 1-e slowo
slowo sostoqniq	ustrojstwa;
.DFN 2-e slowo
razmer drajwera	(bajty);
.DFN 3-e slowo
to~ka whoda drajwera (nenulewoe
sodervimoe |togo slowa ozna~aet,
~to drajwer nahoditsq w	operatiwnoj pamqti);
.DFN 4-e slowo
razmer ustrojstwa (w blokah po 256
slow) dlq ustrojstw s blo~noj strukturoj;
sodervimoe |togo slowa rawno nul` dlq ustrojstw	s
posledowatelxnym dostupom.
.ATT
parametry funkcii IDSTAT dolvny	razme}atxsq w pamqti tak, ~toby	oni ne
perekrywalisx pri swopinge USR.
.LIN
funkciq	IDSTAT i}et w tablicah monitora	ukazannoe ustrojstwo po	ego imeni
i, esli	ono najdeno, zapolnqet ~etyre slowa bloka sostoqniq.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - ustrojstwo ne najdeno w tablicah monitora.
.LIN
w priwedennom primere opredelqetsq, nahoditsq li drajwer
ustrojstwa pe~ati w operatiwnoj	pamqti.	esli net,
to programma ostanawliwaetsq i pe~ataet	soob}enie o tom, ~to dolven bytx
zagruven ukazannyj drajwer.
.LIN
primer.
.SWT
       INTEGER*2 CBLK(4)
       DATA IDNAM /3RLP	/
       DATA CBLK /4*0/
       CALL IDSTAT(IDNAM,CBLK)
       IF(CBLK(3).EQ.0)	STOP'zagruzitx drajwer LP: i '
     * ' perezapustitx zadanie'
.HLV 2
funkciq	IFETCH
.LIN
funkciq	IFETCH zagruvaet s sistemnogo ustrojstwa w operatiwnu` pamqtx
drajwer	ukazannogo ustrojstwa, delaq |to ustrojstwo
dostupnym dlq operacij wwoda/wywoda. drajwer zagruvaetsq w
swobodnu` zonu pamqti, uprawlqemu` ispolnq`}ej sistemoj	fortran. esli drajwer
zagruven, to on	ne movet bytx oswobovden i pamqtx, w kotoroj on
nahoditsq, ne movet bytx powtorno ispolxzowana dlq drugih celej. funkci`
IFETCH nelxzq wyzywatx iz podprogrammy zawer{eniq ili obrabotki	prerywaniq,
t.k. ona trebuet dejstwij USR.
.LIN
obra}enie k funkcii:
.SWT
	I=IFETCH (DEVNAM)
.BLN
gde
.DFN DEVNAM
odnoslownoe imq	ustrojstwa w RADIX-50, dlq
kotorogo neobhodim drajwer; |tot parametr
movet bytx perwym slowom opisaniq whodnogo ili
wyhodnogo fajla, generiruemogo funkciej	ICSI; |tot parametr
dolven raspolagatxsq w pamqti tak, ~toby on ne
popadal	w oblastx swopinga USR.
.LIN
bolee podrobno zagruzka	drajwera w operatiwnu`
pamqtx opisywaetsq w sistemnoj makrokomande .FETCH.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - ukazannoe ustrojstwo	ne su}estwuet;
     I=2 - w pamqti net	mesta  dlq  zagruzki
	   drajwera;
     I=3 - na sistemnom	ustrojstwe ne  su}estwuet  drajwer
	   ukazannogo ustrojstwa.
.LIN
primer pokazywaet zagruzku w pamqtx drajwera RK.
wypolnenie programmy prekra}aetsq, esli	drajwer
ne movet bytx zagruven.
.LIN
primer.
.SWT
       REAL*4 IDNAM
       DATA IDNAM /3RRK	/
       . . .
       IF(IFETCH(IDNAM).NE.0) STOP  !neustranimaq o{ibka
 C				     pri zagruzke drajwera
.HLV 2
funkciq	IQSET
.LIN
funkciq	IQSET ispolxzuetsq dlq uweli~eniq ~isla	dostupnyh |lementow o~eredi.
pamqtx pod |ti |lementy	wydelqetsq w pamqti, uprawlqemoj ispolnq`}ej
sistemoj fortrana.
funkci`	IQSET
nelxzq wyzywatx	iz podprogrammy	zawer{eniq ili obsluviwaniq prerywaniq.
.LIN
obra}enie k funkcii:
.SWT
	I=IQSET	(QLENG[,AREA])
.BLN
gde
.DFN QLENG
koli~estwo (cEloe) |lementow, kotoroe dobawlqetsq
k o~eredi; |tot	parametr dolven	pome}atxsq
w operatiwnoj pamqti tak, ~toby	on ne
perekrywalsq USR pri swopinge;
.DFN AREA
pamqtx,	wydelqemaq wyzywa`}ej programmoj; pri rabote pod uprawleniem
RT11SJ(FB) neobhodimo sleditx, ~toby	|ta pamqtx ne okazalasx	w
oblasti	swopinga USR; esli |tot	argument ne ukazan pri wyzowe,
pamqtx wydelqetsq w rabo~ej oblasti i ispolnq`}ej sistemy fortrana.
.LIN
wse operacii wwoda/wywoda sistemy RT11 wypolnq`tsq posredstwom
centralizowannoj sistemy uprawleniq o~eredx`. esli potok zaprosow wwoda-wywoda
o~enx welik i net swobodnyh |lementow o~eredi, to programma, posyla`}aq
zaprosy	na wwod/wywod, movet bytx priostanowlena do teh	por, poka ne
poqwitsq swobodnyj |lement o~eredi. drugoe zadanie
w RT11FB i RT11XM movet
wypolnqtxsq, poka perwaq programma vdet
oswobovdeniq |lementow
o~eredi. esli funkciq IQSET ispolxzuetsq w operatiwnoj programme,
to neobhodimo modificirowatx komandu monitora FRUN, ~toby wydelitx mesto dlq
|lementow o~eredi.
.LIN
neobhodimo priderviwatxsq ob}ego prawila:
kavdaq programma dolvna	imetx |lementow	o~eredi	na odin
bolx{e ob}ego ~isla zaprosow wwoda/wywoda i wremennyh zaprosow,	kotorye
budut aktiwizirowatxsq odnowremenno. funkcii po	obsluviwani` tajmera,
takie kak ITWAIT i MRKT, takve ispolxzu`t |lementy o~eredi, ~to	dolvno
u~itywatxsq pri	wydelenii |lementow o~eredi dlq	programmy. zametim ~to,	esli
wypolnqetsq
sinhronnyj wwod/wywod (t.e. wypolnq`tsq	funkcii	IREADW,	IWRITW i t.d.),
a funkcii po obsluviwani` tajmera ne wypolnq`tsq, to ne	sleduet
wydelqtx dopolnitelxnye	|lementy o~eredi. ispolnq`}aq
sistema	fortrana awtomati~eski predostawlqet
~etyre |lementa	o~eredi.
.LIN
nive pere~isleny
funkcii, rabota	kotoryh	trebuet	|lement	o~eredi:
.SWT
	IRCVD/IRCVDC/IRCVDF/IRCVDW
	IREAD/IREADC/IREADF/IREADW
	ISCHED
	ISDAT/ISDATC/ISDATF/ISDATW
	ISLEEP
	ISPFM/ISPFNC/ISPFNF/ISPFNW
	ITIMER
	ITWAIT
	IUNTIL
	IWRITE/IWRITC/IWRITF/IWRITW
	MRKT
	MWAIT
.BLN
dopolnitelxnaq informaciq po ras{ireni`	o~eredi	dana pri
opisanii sistemnoj makrokomandy	.QSET (sm. p. 7.6.22).
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - net swobodnogo  mesta  dlq
	   dopolnitelxnyh |lementow o~eredi; wyde-
	   lenie |lementow ne proizwodilosx.
.LIN
primer.
.SWT
      IF(IQSET(5).NE.0)	STOP	  !dlq |lementow o~eredi
C				   nedostato~no	pamqti
.HLV 2
funkciq	ITLOCK (RT11FB ili RT11XM)
.LIN
funkciq	ITLOCK prednazna~ena dlq togo, ~toby popytatxsq	zakrepitx
USR za zadaniem. ona analogi~na	funkcii	LOCK w tom, ~to, esli USR
ne zanqta drugim zadaniem,
USR stanowitsq rezidentnoj i zakreplqetsq za zadaniem. odnako, pri
ispolxzowanii LOCK, esli zadanie
pytaetsq zakrepitx za soboj USR, w to wremq kak	drugoe zadanie ispolxzuet
ee, zapra{iwa`}ee zadanie priostanawliwaetsq do	teh por,
poka USR ne oswoboditsq. pri wyzowe
funkcii	ITLOCK,	esli USR
ispolxzuetsq drugim zadaniem, uprawlenie nemedlenno
wozwra}aetsq w wyzwaw{u` programmu, a zna~enie funkcii ukazywaet na
neuda~u	popytki. funkci` ITLOCK
nelxzq wyzywatx	iz podprogramm zawer{eniq ili obrabotki	prerywaniq.
bolee podrobnaq	informaciq o dejstwiqh sistemy po zaprosu ITLOCK dana w
opisanii
sistemnoj makrokomandy .TLOCK (sm. podpunkt 7.6.18.2).
.LIN
obra}enie k funkcii:
.SWT
	I=ITLOCK ()
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - USR ispolxzuetsq drugim zadaniem.
.LIN
primer.
.SWT
       IF (ITLOCK().NE.0) GOTO 10 !perehod k operatoru 100,
 C				   esli	USR zanqta
.HLV 2
podprogramma LOCK
.LIN
podprogramma LOCK wyzywaetsq dlq togo, ~toby sdelatx USR
rezidentnoj i zakrepitx	ee za zadaniem dlq wypolneniq serii
zaprosow, trebu`}ih ot sistemy raboty s	katalogowymi strukturami
i fajlami. USR predstawlqet soboj serwisnu` programmu, wypolnq`}u`
neobhodimye operacii nad katalogami i funkcii uprawleniq fajlami.
.LIN
esli wypolneny wse uslowiq, wyzywa`}ie swoping,	to ~astx programmy
polxzowatelq zapisywaetsq na disk w fajl SWAP.SYS i USR	zagruvaetsq
w operatiwnu` pamqtx. w	slu~ae esli USR	uve
nahoditsq w pamqti, to swoping ne proishodit. USR ne oswobovdaetsq
do teh por, poka ne budet wyzwana podprogramma UNLOCK (otmetim,
~to w RT11FB wyzow CSI takve wypolnqet neqwnyj UNLOCK). esli w
programme polxzowatelq ~asto ispolxzuetsq USR, to celesoobrazno	sdelatx	USR
rezidentnoj, zakrepiw ee za zadaniem, ~toby ne terqtx wremq na
swoping, wypolnitx wse operacii, swqzannye s wyzowom USR, a zatem oswoboditx
USR podprogrammoj UNLOCK.
.LIN
pod uprawleniem	RT11FB(XM) podprogramma LOCK	zapre}aet drugomu
zadani`	ispolxzowatx USR. takim	obrazom, USR dolvna zakreplqtxsq za
zadaniem tolxko	na neobhodimoe wremq.
.ATT
esli zadanie wypolnit podprogrammu LOCK,
USR movet statx	nedostupnym
drugim zadaniqm	na zna~itelxnyj	period wremeni.	USR ne
powtorno-whodima i ne movet ispolxzowatxsq odnowremenno	raznymi
zadaniqmi.
drugie zadaniq,	trebu`}ie USR w	moment,	kogda ona zanqta, dolvny vdatx
swoej o~eredi. |tot fakt
neobhodimo u~itywatx w sistemah, ispolxzu`}ih konkuriru`}ie operatiwnye
i fonowye zadaniq, a osobenno -	pri ispolxzowanii magnitnyh lent i/ili
kasset.
.LIN
USR, dlq wypolneniq operacij
nad fajlami na magnitnyh lentah
i kassetah, neobhodim posledowatelxnyj poisk.
po|tomu	wo wremq poiska	movno zablokirowatx
operatiwnoe zadanie na dlitelxnoe wremq, poka fonowoe zadanie wypolnqet
operacii s lentami.
programmist dolven u~itywatx |to pri proektirowanii sistemy.
RT11FB(XM) pozwolq`t	ispolxzowatx programmu ITLOCK, kotoraq
pozwolqet operatiwnomu zadani` prowerqtx dostupnostx USR.
otmetim, ~to programma LOCK umenx{aet wremennye	zatraty	na
uprawlenie fajlami, zapre}aq swoping USR. esli USR rezidentna,TO
obra}enie k LOCK ne trebuet wwoda/wywoda. USR wsegda rezidentna
w RT11XM.
.LIN
obra}enie k podprogramme:
.SWT
	CALL LOCK
.LIN
posle wypolneniq podprogrammy LOCK
i wypolneniq neobhodimyh operacij s USR
dolvna wypolnitxsq podprogramma
UNLOCK.	oni qwlq`tsq dopolnq`}imi drug druga i ih dejstwie dolvno bytx
wzaimno	soglasowano. t.e. esli tri raza	byla wyzwana podprogramma LOCK,
to dolvnO wypolnitxsq po krajnej mere tri wyzowa podprogrammy UNLOCK. w
protiwnom slu~ae USR ne	budet oswobovdena. pri zadanii li{nih UNLOCK
o{ibka ne fiksiruetsq, li{nie UNLOCK ignoriru`tsq.
.LIN
prime~aniq:
.LIN 0
1. wavno, ~toby	wyzow LOCK ne proizwodilsq iz zony, w kotoru`
budet pome}atxsq USR. esli |to proizojdet, to iz USR wozwrat uprawleniq
proizojdet ne w	programmu polxzowatelq,	a w samu programmu USR,	t.k. LOCK
sohranqet ~astx	programmy polxzowatelq na diske, a na |to mesto	w
operatiwnoj pamqti zapisywaet programmu	USR. bolee togo, w programme ne	dolvno
bytx obra}enij k podprogrammam,	peremennym i massiwam, nahodq}imsq w zone
swopinga, esli USR rezidentna posle wypolneniq podprogrammy
LOCK.
.LIN 0
2. esli	podprogramma LOCK wypolnena, to	necelesoobrazno
razru{atx zonu,	w kotoru` zapisana USR,	dave w
tom slu~ae, esli ne predpolagaetsq dalxnej{ee ispolxzowanie USR. w slu~ae
razru{eniq pri wypolnenii funkcii UNLOCK mogut polu~itxsq
nepredskazuemye	rezulxtaty.
.LIN 0
3. podprogrammu	LOCK nelxzq wyzywatx iz	podprogrammy zawer{eniq
ili obrabotki prerywaniq.
.LIN 0
4. esli	dana komanda monitora "SET USR NOSWAP" (t.e. zapretitx
swoping	USR), to podprogrammy LOCK i UNLOCK ne budut proizwoditx
swoping, hotq LOCK budet zapre}atx drugomu zadani`
ispolxzowatx USR, a UNLOCK - razre{atx dostup k	USR.
.LIN 0
5. peredawaemye	podprogramme USR spiski	parametrow,
takie kak opisanie imen	fajlow i ustrojstw, ne dolvny hranitxsq
w zone swopinga.
.LIN
o{ibki otsutstswut.
.LIN
primer.
.SWT
	INTEGER*2 DBLK(4)
	DATA DBLK/3RDK1,3RDT1,3RFIL,3RF41/

	 . . .

	CALL LOCK    ! zakrepitx USR w pamqti
	ICHN=GETC( ) ! ispolxzowatx kanal
	IF (LOOKUP(ICHN,DBLK).LT.0)
      *	 STOP '	?LOOKUP	ne uda~en '
	CALL UNLOCK  ! oswoboditx USR

.HLV 2
podprogramma RCHAIN
.LIN
podprogramma RCHAIN pozwolqet fonowoj programme	opredelitx,
byla li	ona zagruvena pri pomo}i wyzowa	podprogrammy
CHAIN drugoj programmoj	i
polu~itx dostup	k peremennym, peredawaemym
~erez specialxnu` oblastx w pamqti. esli ispolxzuetsq podprogramma RCHAIN, to
ee neobhodimo wyzwatx w	perwom wypolnqemom operatore programmy na qzyke
fortran.
.LIN
obra}enie k podprogramme:
.SWT
	CALL RCHAIN (FLAG,VAR,WCNT)
.BLN
gde
.DFN FLAG
celaq peremennaq, kotoraq ustanawliwaetsq w
-1, esli programma wyzwana po CHAIN, w
protiwnom slu~ae - w nulx;
.DFN VAR
perwaq peremennaq w posledowatelxnosti
peremennyh s wozrAsta`}imi adresami pamqti,
prednazna~ennaq	dlq priema informacii,
peredawaemoj iz	wyzywaw{ej programmy;
.DFN WCNT
koli~estwo slow, peredawaemyh
w zonu,	ukazannu`
parametrom VAR;	podprogramma RCHAIN
pereme}aet s~et~ik slow	(WCNT) w oblastx perwoj	peremennoj (VAR).
.LIN
o{ibki otsutstwu`t.
.LIN
primer.
.SWT
       INTEGER*2 PARMS(50)
       CALL RCHAIN(IFLAG,PARMS,50)
       IF(IFLAG) GOTO 10   !perejti k operatoru	10, esli
 C			    programma wyzwana w	cepo~ke
.HLV 2
podprogramma RCTRLO
.LIN
podprogramma RCTRLO otmenqet
dejstwie komandy <CTRL/O>, kotoraq byla	wwedena	ranee s	klawiatury terminala.
posle wyzowa podprogrammy RCTRLO l`boj wywod na	terminal budet
osu}estwlqtxsq do teh por, poka	ne budet wnowx wwedena s
terminala komanda <CTRL/O>.
.LIN
obra}enie k podprogramme:
.SWT
	CALL RCTRLO
.LIN
o{ibki otsutstwu`t.
.LIN
primer.
.SWT
     CALL RCTRLO
     CALL PRINT(' tabli~nye dannye ')
.HLV 2
podprogramma RESUME (RT11FB ili RT11XM)
.LIN
podprogramma pozwolqet zadani` wozobnowitx wypolnenie osnownoj
programmy.
wyzow RESUME oby~no proizwoditsq iz asinhronnoj	podprogrammy zawer{eniq	na
qzyke fortran, wyzwannoj po sobyti` (po	okon~anii wwoda/wywoda ili po
iste~enii zaplanirowannogo interwala wremeni).
.LIN
obra}enie k podprogramme:
.SWT
	CALL RESUME
.LIN
o{ibki otsutstwu`t.
.LIN
primer.
.SWT
     SUBROUTINE	RDFIN(IARG1,IARG2)
     COMMON/RDBLK/IBUF(256)
      .	. .
     CALL RESUME !prodolvitx wypolnenie	osnownoj programmy
     END
.HLV 2
podprogramma SCCA
.LIN
podprogramma SCCA zapre}aet zawer{atx programmu	po komande operatora
<CTRL/C>; daet wozmovnostx programme razli~atx
odinarnu` i dwojnu` komandy <CTRL/C>.
.LIN
obra}enie k podprogramme:
.SWT
	CALL SCCA [(IFLAG)]
.BLN
gde
.DFN IFLAG
slowo sostoqniq	terminala, predstawlqemoe
celym ~islom w formate INTEGER*2 (a ne
LOGICAL*1); ono	dolvno bytx predwaritelxno
o~i}eno	dlq togo, ~toby	movno
bylo opredelitx, wwodilasx li dwavdy komanda <CTRL/C>.
.LIN
esli posle wyzowa SCCA s argumentom byla podana	komanda	<CTRL/C>, to
sistema	ignoriruet
<CTRL/C>, no pome}aet ee w kolxcewoj bufer
wwoda. nahodqsx	w bufere, |tot simwol (kod "003) movet bytx s~itan
programmoj
kak dopustimyj simwol. esli postupili s	konsoli	srazu dwe komandy <CTRL/C>,
to parametr IFLAG imeet	nenulewoe zna~enie. po|tomu, dlq obnaruveniq
|togo |ffekta, ego neobhodimo predwaritelxno
proweritx i o~istitx.
.LIN
wyzow programmy	SCCA bez argumenta otmenqet opisannu`
obrabotku komandy  <CTRL/C>, wozwra}aq sistemu w oby~nyj revim.
.LIN
normalxnaq reakciq sistemy na znak <CTRL/C>, prinqtyj iz koswennogo komandnogo
fajla, ne movet	bytx otmenena pri pomo}i SCCA.
.LIN
o{ibki otsutstwu`t.
.LIN
w primere rassmotreny wozmovnye	warianty
ispolxzowaniq podprogrammy SCCA.
.LIN
primer.
.SWT
       PROGRAM SCCA
       CALL PRINT(' programma zapu}ena,	wwodite	')
       IFLAG=0
       CALL SCCA(IFLAG)
    10 I=ITTINR()	!prinqtx simwol
       IF (I.NE.3) GOTO	10
 C     byla wwedena komanda <CTRL/C>
       CALL PRINT(' byla komanda <CTRL/C> ')
       IF(IFLAG.EQ.0) GOTO 10
       CALL PRINT(' komanda <CTRL/C> podrqd dwavdy ')
       TYPE 19,IFLAG
    19 FORMAT (' IFLAG = ',o6,/)
       CALL SCCA   !razre{itx obrabotku	<CTRL/C>
       CALL PRINT (' wwedite dwa <CTRL/C> dlq zawer{eniq ')
    20 GOTO 20	    !cikl, poka	ne budet
 C		     komanda <CTRL/C>
       END
.HLV 2
podprogramma SETCMD
.LIN
podprogramma SETCMD pozwolqet programme	peredatx
interaktiwnomu monitoru	(KMON)
komandnu` stroku, kotoraq wypolnitsq po	wyhode
iz programmy. komandnye	stroki pereda`tsq w oblastx pereda~i
informacii  po CHAIN (500-777, wosxmeri~noe) i hranqtsq, na~inaq s q~ejki
512 (wosxeri~noe). programma
ne prowerqet, perekrywaet li komandnaq stroka oblastx
steka. po|tomu,	komandnaq stroka dolvna	bytx korotkoj i	wyzow
podprogrammy velatelxno	delatx neposredstwenno
pered zawer{eniem osnownoj programmy. esli neobhodimo wypolnitx
neskolxko komand, to
dolven ispolxzowatxsq komandnyj	fajl, soderva}ij nuvnoe	~islo komandnyh
strok.
.LIN
esli ispolxzuetsq podprogramma SETCMD, to sledu}ie
komandy	KMON zapre}eny:
.SWT
	REENTER
	START
	CLOSE
.LIN
obra}enie k podprogramme:
.SWT
	CALL SETCMD (STRING)
.BLN
gde
.DFN STRING
komandnaq stroka dlq interaktiwnogo monitora w
formate	ASCIZ, ne soderva}aq simwoly <CR> i <LF>.
.LIN
posle wyzowa podprogrammy SETCMD dlq pereda~i uprawleniq monitoru movno
ispolxzowatx kak operator STOP,	tak i podprogrammu EXIT.
.LIN
o{ibki otsutstwu`t.
.LIN
primer.
.SWT
      LOGICAL*1	INPUT(134),PROMPT(8)
      DATA PROMPT/'C','O','M','A','N','D','>',"200/
      CALL GTLIN(INPUT,PROMPT)
      CALL SETCMD(INPUT)
      END
.HLV 2
podprogramma SUSPND (RT11FB ili RT11XM)
.LIN
podprogramma SUSPND priostanawliwaet wypolnenie	osnownoj programmy
teku}ego zadaniq i razre{aet wypolnenie	tolxko podprogramm zawer{eniq
dlq operacij wwoda/wywoda i planiru`}ihsq wremennyh zaprosow.
.LIN
obra}enie k podprogramme:
.SWT
	CALL SUSPND
.LIN
prime~aniq:
.LIN 0
1. monitor dlq kavdogo zadaniq imeet s~et~ik zadervki. |tot
s~et~ik	umenx{aetsq podprogrammoj SUSPND i uweli~iwaetsq podprogrammoj
RESUME.	zadanie	qwlqetsq priostanowlennym, esli	zna~enie s~et~ika
otricatelxno. takim obrazom, esli podprogramma RESUME wyzywaetsq do
podprogrammy SUSPND, to	poslednqq, umenx{iw s~et~ik,
wernet uprawlenie.
.LIN 0
2. programma dolvna wypolnqtx odinakowoe koli~estwo
wyzowow	podprogramm SUSPND i RESUME.
.LIN 0
3. wyzow SUSPND	iz podprogrammy	zawer{eniq umenx{aet
s~et~ik	zadervki, no ne	priostanawliwaet wypolnenie osnownoj programmy.
esli podprogramma zawer{eniq wyzywaet SUSPND, to golownaq programma prodolvaet
wypolnqtxsq do teh por,	poka ona sama ne wyzowet SUSPND. w |tot	moment
ee wypolnenie priostanawliwaetsq, i dlq	wozobnowleniq wypolneniq
potrebuetsq dwa	wyzowa RESUME.
.LIN 0
4. tak kak podprogrammy	SUSPND i RESUME	ispolxzu`tsq dlq
modelirowaniq funkcii ITWAIT w monitore, to podprogramma RESUME,
wyzywaemaq iz podprogrammy zawer{eniq
movet priwesti k prodolveni` wypolneniq
osnownoj programmy, kotoraq nahodilasx w ovidanii po wyzowu ITWAIT, prevde,
~em iste~et wesx wremennoj interwal ukazannyj w	|tom wyzowe.
.LIN
bolee podrobno o priostanowke osnownoj programmy
dano w opisanii	makrokomandy .SPND (sm.	podpunkt 7.6.30.1).
.LIN
o{ibki otsutstwu`t.
.TES 25
.LIN
 primer.
.SWT
	   INTEGER IAREA(4)
	   COMMON /RDBLK/ IBUF(256)
	   EXTERNAL RDFIN
	    . .	.
	   IF(IREADF(256,IBUF,IBLK,ICHAN,IAREA,RDFIN)
	  1	    .NE.0) GOTO	1000
     C
     C	   pri l`bom tipe o{ibki perejti k operatoru 1000
     C
     C	   wypolnqtx obrabotku parallelxno s wyzowom
	    . .	.
	   CALL	SUSPND	 !ustanowitx sinhronizaci` s p/p
     C			  zawer{eniq
	    . .	.
	   END
	   SUBROUTINE RDFIN (IARG1,IARG2)
	   COMMON /RDBLX/ IBUF(256)
	    . .	.
	   CALL	RESUME	 !prodolvitx wypolnenie	osnownoj
     C			  programmy
	    . .	.
	   END
.HLV 2
podprogramma UNLOCK
.LIN
podprogramma UNLOCK razre{aet swoping USR, esli	on byl
zapre}en wyzowom LOCK i	oswobovdaet USR, pozwolqq obra}atxsq k
nemu drugim zadaniqm. esli LOCK
potrebowalo wypolneniq procedury
swopinga, to UNLOCK wozwra}aet
programmu polxzowatelq w pamqtx. esli swopinga
pri wypolnenii LOCK ne potrebowalosx, to UNLOCK	ne porovdaet
operacij wwoda/wywoda. USR wsegda rezidentna w RT11XM.
.LIN
obra}enie k podprogramme:
.SWT
	CALL UNLOCK
.LIN
prime~aniq:
.LIN 0
1. wavno, ~toby	wyzowow	UNLOCK bylo slelano ne menx{e,
~em wyzowow LOCK.
esli wyzowow LOCK sdelano bolx{e, ~em
wyzowow	UNLOCK,	to USR ostaetsq	rezidentnoj w operatiwnoj
pamqti i zakreplennoj za zadaniem. esli	wyzowow	UNLOCK bolx{e,situaciq
o{ibki ne woznikaet, a li{nie
wyzowy UNLOCK ignoriru`tsq.
.LIN 0
2. esli	w RT11FB rabota`t dwa zadaniq, LOCK/UNLOCK ispolxzu`tsq
tolxko pri neobhodimosti. esli odno zadanie blokiruet USR,
to drugoe zadanie ne smovet ispolxzowatx USR
do wypolneniq UNLOCK perwym zadaniem.
.LIN 0
3. w RT11FB wyzow CSI (ICSI) dlq priema komandy s terminala	priwodit
k neqwnomu wypolneni` UNLOCK.
.LIN
bolee podrobno ob oswobovdenii USR
opisano	w makrokomandah	.LOCK/.UNLOCK (sm. p. 7.6.18).
.LIN
o{ibki otsutstwu`t.
.LIN
primer.
.SWT
     C	   dlq wypolneniq mnovestwa operacij s USR
	   CALL	LOCK	 !zapretitx swoping
     C	   wypolnitx wyzowy USR
	    . .	.
	   CALL	UNLOCK	 !oswoboditx USR
.HLV 1
sluvebnye operacii
.HLV 2
funkciq	IADDR
.LIN
funkciq	IADDR wozwra}aet 16-razrqdnyj absol`tnyj adres
parametra w wide celogo	zna~eniq funkcii.
.LIN
obra}enie k funkcii:
.SWT
	I=IADDR	(ARG)
.BLN
gde
.DFN ARG
parametr (peremennaq ili konstanta), adres
kotorogo neobhodimo polu~itx; wozwra}aemoe zna~enie, esli ARG
qwlqetsq wyraveniem, nepredskazuemo.
.LIN
funkciq	IADDR movet ispolxzowatxsq dlq nahovdeniq adresa podprogramm
pri rabote s podprogrammami na qzyke makroassemblera.
.LIN
rezulxtaty funkcii:
.SWT
    I -	absol`tnyj adres parametra.
.LIN
primer.
.SWT
     EXTERNAL CAREA
     J=IADDR (CAREA)
.HLV 2
funkciq	IGETSP
.LIN
funkciq	IGETSP zapra{iwaet swobodnu` oblastx pamqti u OTS fortrana
i wozwra}aet adres i razmer (~islo slow) swobodnoj
pamqti,	wydelennoj ispolnq`}ej sistemoj. polu~ennu` swobodnu`
pamqtx movno dinami~eski raspredelqtx
dlq programmy, razme}aq	w nej bufery, massiwy i	t.d.
.LIN
obra}enie k funkcii:
.SWT
	I=IGETSP (MIN,MAX,ADDR)
.BLN
gde
.DFN MIN
minimalxnaq oblastx, kotoraq budet polu~ena;
.DFN MAX
maksimalxnaq oblastx, kotoraq budet polu~ena;
.DFN ADDR
adres (celoe) na~ala swobodnoj
pamqti (bufer);	ADDR ne	obozna~aet
neposredstwenno	oblastx	pamqti,	kak  |to dela`t
oby~nye	peremennye fortrana; on	obozna~aet slowo,
soderva}ee adres oblasti pamqti; |to ~asto ispolxzuetsq
podprogrammami IPEEK i IPOKE ili podprogrammami
na qzyke makroassembler.
.LIN
rezulxtaty funkcii:
.SWT
     I=-1 - byla zaregistrirowana   o{ibka;   nedostato~no
	    swobodnoj pamqti  dlq  wydeleniq trebuemogo
	    minimalxnogo koli~estwa operatiwnoj	pamqti;
	    wydelenie swobodnoj	pamqti iz oblasti ispolnq-
	    `}ej sistemy ne proizwedeno;
     I=N  - ob'em fakti~eski wydelennoj	pamqti;	celoe
	    zna~enie w predelah	[MIN, MAX];
	    razmer (MIN,MAX,N) opredelqetsq w slowah.
.ATT
osobaq ostorovnostx neobhodima pri ispolxzowanii
wsej swobodnoj oblasti,	polu~ennoj ispolnq`}ej sistemoj	fortrana
ot operacionnoj	sistemy.
pamqtx,	polu~ennaq po zaprosu funkcii IGETSP, iskl`~aetsq iz
spiska swobodnoj dinami~eski raspredelqemoj pamqti ispolnq`}ej sistemy.
esli ispolnq`}aq sistema obnaruvit, ~to	ej ne hwataet
swobodnoj pamqti, to proishodit	neustranimaq
o{ibka (o{ibki 29,30,42	i t.d.), zadanie oby~no	snimaetsq s wypolneniq.
.LIN
primer.
.SWT
    N=IGETSP(256,256,IBUFF)	 ! polu~itx bufer na blok
    IF (N.LT.0)	STOP 'net pamqti'! net mesta w pamqti
.HLV 2
funkciq	INTSET
.LIN
funkciq	INTSET ob'qwlqet podprogrammu na qzyke
fortran	podprogrammoj obsluviwaniq prerywaniq, nazna~aet ej
prioritet i swqzywaet ee s wektorom prerywaniq.	funkciq	INTSET trebuet,
~toby byla wydelena dopolnitelxnaq pamqtx dlq operatiwnoj programmy,
kotoraq	ispolxzuet |tu funkci`.
.LIN
obra}enie k funkcii:
.SWT
	I=INTSET (VECT,PRI,ID,CRTN)
.BLN
gde
.DFN VECT
adres (celoe) wektora prerywaniq,
kotoryj	budet obsluviwatxsq podprogrammoj CRTN.
.DFN PRI
urowenx	prioriteta (celoe ot 4 do 7),
na kotorom obrabatywaetsq prerywanie ot	ustrojstwa;
.DFN ID
identificiru`}ee celoe;	~islo, peredawaemoe
w ka~estwe edinstwennogo parametra w
podprogrammu na	qzyke fortran,
kogda proishodit prerywanie; |to pozwolqet
ukazatx	odnu podprogrammu w neskolxkih wyzowah INTSET;
.DFN CRTN
imq podprogrammy na qzyke fortran,
ispolxzuemoj w ka~estwe	podprogrammy obsluviwaniq
prerywaniq; imq	|toj podprogrammy
dolvno bytx opisano w operatore	EXTERNAL
podprogrammy na	qzyke fortran, kotoraq
wyzywaet funkci` INTSET; podprogramma obrabotki	prerywanij imeet edinstwennyj
argument, naprimer:
.SWT
		 SUBROUTINE NAME (ID)
		 INTEGER ID
.LIN
kogda podprogramma obrabotki prerywanij	budet wyzwana,
zna~enie celogo	parametra budet
rawno zna~eni`,	ukazannomu dlq identifikacionnogo celogo ID
w sootwetstwu`}em wyzowe INTSET.
.LIN
prime~aniq:
.LIN 0
1. parametr ID movet ispolxzowatxsq dlq
raspoznawaniq prerywanij, wyzwannyh razli~nymi wektorami w slu~ae, esli
primenqemaq podprogramma obsluviwaet neskolxko ustrojstw.
.LIN 0
2. pri ispolxzowanii funkcii INTSET w programme	pod uprawleniem	RT11FB
ili RT11XM
wyzow podprogrammy DEVICE
dolven ispolxzowatxsq dlq zapre}eniq
prerywaniq ot ustrojstwa, obsluviwaemogo
podprogrammoj na qzyke fortran,	ob'qwlennoj po INTSET,
posle zawer{eniq programmy.
.LIN 0
3. esli	podprogramma obsluviwaniq prerywaniq (parametr CRTN)
polu~aet uprawlenie na wremq, w	te~enie	kotorogo
proishodit dwa ili bolee prerywaniq, ispolxzu`}ih odin i tot ve	wektor,
s~itaetsq, ~to proizo{el wyhod za dopustimyj predel ~isla prerywanij.
w |tom slu~ae wywoditsq	diagnosti~eskoe	soob}enie:
.SWT
	?SYSLIB-FATAL INTERRUPT	OVERRUN
.BLN
i wypolnenie zadaniq prekra}aetsq.
zadaniq, trebu`}ie o~enx bystrogo otweta na prerywanie,
mogut okazatxsq	nedeesposobnymi, esli ispolxzuetsq qzyk	fortran,
iz-za poniveniq	skorosti obrabotki prerywaniq w	sisteme	fortran	po
srawneni` s samoj operacionnoj sistemoj.
.LIN 0
4. podprogramma	obsluviwaniq prerywaniq	(parametr
CRTN) wypolnqetsq kak podprogramma zawer{eniq za s~et
ispolxzowaniq pri ih wyzowe ispolnq`}ej	sistemoj fortrana
sistemnoj makrokomandy .SYNCH.
parametr PRI ispolxzuetsq sistemnoj makrokomandoj .INTEN.
.LIN 0
5. parametr VECT zadaetsq dlq sistemnoj	makrokomandy .PROTECT,
no esli	wektor uve za}i}en, to ne wydaetsq kakoe-libo soob}enie	ob
o{ibke i wektor	budet wosprinqt	bezuslowno. bolee podrobno
|to opisano w sistemnoj	makrokomande .PROTECT.
.LIN 0
6. podprogramma	obsluviwaniq prerywanij	(parametr
CRTN) na qzyke fortran ne movet	wyzywatx USR.
.LIN 0
7. funkciq INTSET ne movet wyzywatxsq iz podprogramm
zawer{eniq ili obsluviwaniq prerywaniq.
.LIN 0
8. razre{enie prerywaniq ne dolvno ustanawliwatxsq na
ustrojstwe do teh por, poka ne budet uspe{no wypolnen wyzow INTSET.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - neprawilxnoe	opisanie wektora;
     I=2 - zarezerwirowano;
     I=3 - otsutstwuet swobodnaq oblastx dlq ustanowleniq
	   swqzej.
.LIN
primer.
.SWT
     EXTERNAL CLKSUB	 !podprogramma obsluviwaniq ~asow
      .	. .
     I=INTSET ("104,6,0,CLKSUB)	!opredelitx podprogrammu
     IF(I.NE.0)GOTO 100	 !perejti w slu~ae o{ibki
      .	. .
     END
     SUBROUTINE	CLKSUB(IP)
      .	. .
     END
.HLV 2
funkciq	IPEEK
.LIN
funkciq	IPEEK wozwra}aet sodervimoe slowa, nahodq}egosq	po ukazannomu
absol`tnomu 16-razrqdnomu adresu pamqti. |ta funkciq movet ispolxzowatxsq
dlq prowerki registrow ustrojstwa ili kakoj-libo q~ejki	pamqti.
.LIN
obra}enie k funkcii:
.SWT
	I=IPEEK	(ADDR)
.BLN
gde
.DFN ADDR
absol`tnyj
adres (celoe) prowerqemogo slowa; esli |tot parametr qwlqetsq ne~etnoj
weli~inoj, to proishodit prerywanie.
.LIN
rezulxtaty funkcii:
.SWT
    I -	sodervimoe slowa, ukazannogo adresom ADDR.
.LIN
primer.
.SWT
     ISWIT=IPEEK("177570)  !polu~itx zna~enie.
.HLV 2
funkciq	IPEEKB
.LIN
funkciq	IPEEKB wozwra}aet sodervimoe bajta, raspolovennogo
po ukazannomu absol`tnomu adresu pamqti. poskolxku |ta programma
rabotaet s bajtami, adres movet	bytx ~etnym
ili ne~etnym.
|ta funkciq movet ispolxzowatxsq dlq prowerki registrow	ustrojstwa
ili l`bogo bajta pamqti. esli zna~enie prowerqemogo bajta rawno	nul`,
to w wozwra}aemom funkciej zna~enii star{ij bajt takve budet rawen nul`.
.LIN
obra}enie k funkcii:
.SWT
	I=IPEEKB (ADDR)
.BLN
gde
.DFN ADDR
absol`tnyj adres (celoe) prowerqemogo bajta;
w otli~ie ot funkcii
IPEEK funkciq IPEEKB dopuskaet ne~etnye	adresa.
.LIN
rezulxtaty funkcii:
.SWT
    I -	sodervimoe bajta, ukazannogo adresom ADDR.
.LIN
primer.
.SWT
     IERR=IPEEKB ("52)	!polu~itx bajt o{ibki
.HLV 2
podprogramma IPOKE
.LIN
podprogramma IPOKE zapisywaet 16-bitowu` celu` weli~inu	w zadannu`
absol`tnym adresom q~ejku pamqti. |to movet ispolxzowatxsq dlq zagruzki
registrow ustrojstw.
.LIN
obra}enie k podprogramme:
.SWT
	CALL IPOKE (ADDR,IVALUE)
.BLN
gde
.DFN ADDR
absol`tnyj adres (celoe) modificiruemoj	q~ejki pamqti; esli |tot parametr
qwlqetsq ne~etnoj weli~inoj, to	proishodit prerywanie;
.DFN IVALUE
celoe, kotoroe zapisywaetsq
po ukazannomu adresu.
.LIN
o{ibki otsutstwu`t.
.LIN
w primere peredaetsq zna~enie IVAL w odin iz registrow diska.
.LIN
primer.
.SWT
	CALL IPOKE ("17740,IVAL)
.LIN
dlq togo, ~toby	w 12 razrqde q~ejki, opredelq`}ej slowo	sostoqniq zadaniq,
ustanowitx 1, bez obnuleniq kakih-libo drugih bitow
slowa, neobhodimo ispolxzowatx sledu`}u` formu:
.SWT
	CALL IPOKE ("44,"10000.oR.IPEEK("44))
.HLV 2
podprogramma IPOKEB
.LIN
podprogramma IPOKEB zapisywaet opredelennu` wosxmirazrqdnu` weli~inu
w ukazannyj bajt. poskolxku |ta	podprogramma rabotaet s	bajtami,
ukazannyj adres	movet bytx ne~etnym.
|ta podprogramma movet ispolxzowatxsq dlq raboty s registrami wne{nih
ustrojstw.
.LIN
obra}enie k podprogramme:
.SWT
	CALL IPOKEB (ADDR,VALUE)
.BLN
gde
.DFN ADDR
absol`tnyj adres (celoe) bajta,	podleva}ego izmeneni`;
w otli~ie ot podprogrammy
IPOKE, funkciq IPOKEB dopuskaet	ne~etnu` adresaci`;
.DFN VALUE
celoe zna~enie,	kotoroe	budet hranitxsq	po
adresu,	opredelqemom parametrom	ADDR.
.LIN
o{ibki otsutstwu`t.
.LIN
primer.
.SWT
    CALL IPOKEB	("53,"20)    !soob}itx w KMON o
			     !gruboj o{ibke.
.HLV 2
funkciq	ISPY
.LIN
funkciq	ISPY wozwra}aet	w programmu celoe ~islo	- zna~enie
slowa, nahodq}egosq na ukazannom
sme}enii ot na~ala RMON. |ta funkciq
ispolxzuet sistemnu` makrokomandu .GVAL	(sm. p.	7.6.13)	dlq polu~eniq
zna~enij, zapisannyh w q~ejkah monitora	i ime`}ih fiksirowannye	sme}eniq.
.LIN
obra}enie k funkcii:
.SWT
	I=ISPY (IOFF)
.BLN
gde
.DFN IOFF
sme}enie ot bazy rezidenta monitora RMON do q~ejki, kotoru` neobhodimo
prO~itatx.
.LIN
rezulxtaty funkcii:
.SWT
    I -	sodervimoe slowa, nahodq}egosq na sme}enii IOFF	ot
	na~ala RMON.
.LIN
primer.
.SWT
 C  perejti na operator	200, esli programma rabotaet pod
 C  uprawleniem	RT11FB
 C
      IF(ISPY ("300.AND.1) GOTO	200
 C
 C  slowo, nahodq}eesq na sme}enii 300 (8)
 C  ot bazy rezidenta monitora RMON,
 C  qlqetsq slowom konfiguracii	sistemy
.HLV 1
obmen mevdu zadaniqmi
.HLV 2
funkcii	IRCVD/IRCVDC/IRCVDF/IRCVDW (RT11FB ili RT11XM)
.LIN
IRCVD/IRCVDC/IRCVDF/IRCVDW - ~etyre formy funkcii priema dannyh. |ti
funkcii	ispolxzu`tsq wmeste s funkciqmi	ISDAT (posylki dannyh) dlq
obmena soob}eniqmi mevdu programmami. |ti
funkcii	trebu`t	|lement	o~eredi, ~to dolvno u~itywatxsq	pri wypolnenii
funkcii	IQSET.
.HLV 3
funkciq	IRCVD
.LIN
funkciq	IRCVD
ustanawliwaet zapros na	priem soob}eniq	ot drugoj
programmy w o~eredx i wozwra}aet uprawlenie programme,
sdelaw{ej zapros.
pri neobhodimosti dovdatxsq informacii iz drugogo
zadaniq,
w zadanii,
prinima`}em soob}enie, dolvna wypolnqtxsq funkciq MWAIT. ona
priostanawliwaet wypolnenie zadaniq do teh por,	poka ne	budet prinqto
soob}enie.
.LIN
obra}enie k funkcii:
.SWT
	I=IRCVD	(BUF,WCNT)
.BLN
gde
.DFN BUF
massiw,	ispolxzuemyj w ka~estwe	bufera dlq
prinimaemyh dannyh; |tot massiw	dolven bytx
na odno	slowo bolx{e prinimaemogo soob}eniq,
tak kak	perwoe slowo
posle zawer{eniq
wypolneniq funkcii IRCVD
budet sodervatx	~islo peredannyh slow;
.DFN WCNT
maksimalxnoe celoe ~islo slow, kotoroe movet
bytx prinqto.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - w sisteme otsutstwuet drugoe	zadanie.
.LIN
primer.
.SWT
     INTEGER*2 MSG (41)
      .	. .
     CALL IRCVD	(MSG,40)
      .	. .
     CALL MWAIT
.HLV 3
funkciq	IRCVDC
.LIN
funkciq	IRCVDC
ustanawliwaet zapros na	priem soob}eniq	ot drugoj
programmy w o~eredx i wozwra}aet uprawlenie programme, sdelaw{ej zapros.
posle zawer{eniq
operacii budet wypolnena ukazannaq podprogramma	zawer{eniq, napisannaq
na makroassemblere.
wypolnenie osnownoj programmy prodolvaetsq wmeste s
zadaniem, sdelaw{im zapros.
.LIN
obra}enie k funkcii:
.SWT
	I=IRCVDC (BUF,WCNT,CRTN)
.BLN
gde
.DFN BUF
massiw,	ispolxzuemyj w ka~estwe	bufera
prinimaemyh dannyh; |tot massiw	dolven bytx
po dline bolx{e	na odno	slowo prinimaemogo
soob}eniq, tak kak perwoe slowo
posle zawer{eniq wypolneniq funkcii IRCVDC
sodervit ~islo peredannyh slow;
.DFN WCNT
maksimalxnoe celoe ~islo slow, kotoroe
movet bytx prinqto;
.DFN CRTN
planiruemaq podprogramma zawer{eniq, napisannaq
na qzyke makroassemblera; imq programmy
dolvno ukazywatxsq w operatore FORTRAN EXTERNAL
podprogrammy, kotoraq wyzywaet funkci` IRCVDC.
.LIN
rezulxtaty funkcii:
.SWT
    I=0	- oby~nyj wyhod;

    I=1	- w sisteme otsutstwuet	drugoe zadanie.
.HLV 3
funkciq	IRCVDF
.LIN
funkciq	IRCVDF ustanawliwaet zapros na priem soob}eniq ot drugoj
programmy w o~eredx; posle
zawer{eniq operacii budet wypolnena ukazannaq podprogramma zawer{eniq,
napisannaq na fortrane.
wypolnenie osnownoj programmy posle
postanowki zaprosa w o~eredx prodolvaetsq.
kogda drugoe zadanie posylaet soob}enie,
osnownaq programma prerywaetsq i zapuskaetsq
ukazannaq podprogramma zawer{eniq.
.LIN
obra}enie k funkcii:
.SWT
	I=IRCVDF (BUF,WCNT,AREA,CRTN)
.BLN
gde
.DFN BUF
massiw,	ispolxzuemyj w ka~estwe	bufera
prinimaemyh dannyh; |tot massiw	dolven bytx
po dline na odno slowo bolx{e prinimaemogo
soob}eniq, tak kak perwoe slowo	budet sodervatx
~islo peredannyh slow posle zawer{eniq
wypolneniq zaprosa IRCVDF;
.DFN WCNT
maksimalxnoe celoe ~islo slow, kotoroe
movet bytx prinqto;
.DFN AREA
massiw iz ~etyreh slow,	prednazna~ennyj	dlq hraneniq
informacii o swqzqh; ego |lementy ne dolvny
modificirowatxsq fortran-programmoj
do momenta zawer{eniq priema informacii
i ne dolvny perekrywatxsq pri swopinge USR; |tot massiw
movet bytx ispolxzowan dlq planirowaniq
drugoj podprogrammy zawer{eniq na qzyke	fortran,
tolxko posle togo kak zaplanirowannaq w	dannom zaprose
podprogramma budet wyzwana;
.DFN CRTN
planiruemaq podprogramma zawer{eniq na qzyke
fortran, imq podprogrammy dolvno
ukazywatxsq w operatore	EXTERNAL podprogrammy,
wyzywa`}ej IRCVDF.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - w sisteme otsutstwuet drugoe	zadanie.
.TES 5
.LIN
 primer.
.SWT
     INTEGER*2 MSG (41),AREAL(4)
     EXTERNAL RMSGRT
      .	. .
     CALL IRCVDF (MSG,40,AREAL,RMSGRT)
.HLV 3
funkciq	IRCVDW
.LIN
funkciq	IRCVDW ustanawliwaet zapros na priem soob}eniq ot
drugoj programmy w o~eredx; uprawlenie osnownoj	programme wozwra}aetsq
posle zawer{eniq operacii, t.e.	wypolnenie osnownoj
programmy priostanawliwaetsq.
perwoe slowo bufera pokazywaet ~islo prinqtyh slow.
.LIN
obra}enie k funkcii:
.SWT
	I=IRCVDW (BUF,WCNT)
.BLN
gde
.DFN BUF
massiw,	ispolxzuemyj w ka~estwe	bufera dlq
priniMAEmyh dannyh; |tot massiw	dolven bytx
na odno	slowo bolx{e prinimaemogo soob}eniq,
tak kak	perwoe slowo budet sodervatx
~islo peredannyh slow posle zawer{eniq
wypolneniq IRCVDW;
.DFN WCNT
maksimalxnoe celoe ~islo slow, kotoroe
movet bytx prinqto.
.LIN
rezulxtaty funkcii:
.SWT
    I=0	- oby~nyj wyhod;

    I=1	- w sisteme otsutstwuet	drugoe zadanie.
.LIN
primer.
.SWT
    INTEGER*2 MSG (41)
    IF(IRCVDW(MSG,40).NE.0)STOP	'nepredwidennaq	o{ibka'
.HLV 2
funkcii	ISDAT/ISDATC/ISDATF/ISDATW (RT11FB ili RT11XM).
.LIN
|ti funkcii ispolxzu`tsq sowmestno s wyzowami IRCVD/IRCVDC/IRCVDF i
IRCVDW dlq togo, ~toby osu}estwlqtx pereda~u soob}enij
w drugu` programmu pod uprawleniem RT11FB ili RT11XM.
bufer, sOderva}ij soob}enie, ne	dolven modificirowatxsq	ili
powtorno ispolxzowatxsq	do teh por, poka soob}enie ne budet prinqto
drugim zadaniem. |ti funkcii trebu`t |lement o~eredi, ~to dolvno
u~itywatxsq pri	wypolnenii funkcii IQSET.
.HLV 3
funkciq	ISDAT
.LIN
funkciq	ISDAT ustanawliwaet w o~eredx zapros na	pereda~u
soob}eniq ukazannoj dliny drugoj
programme i nemedlenno wozwra}aet uprawlenie programme.
|tot wyzow ispolxzuetsq	sowmestno s podprogrammoj  MWAIT.
.LIN
obra}enie k funkcii:
.SWT
	I=ISDAT	(BUF,WCNT)
.BLN
gde
.DFN BUF
massiw,	soderva}ij dannye, kotorye neobhodimo peredatx;
.DFN WCNT
celoe ~islo slow, kotoroe neobhodimo peredatx.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - w dannoe wremq w sisteme net	drugogo
	   zadaniq.
.LIN
primer.
.SWT
       INTEGER*2 MSG (40)
	. . .
       CALL ISDAT (MSG,40)
	. . .
       CALL MWAIT
 C   wwesti nowoe soob}enie w bufer
.HLV 3
funkciq	ISDATC
.LIN
funkciq	ISDATC ustanawliwaet w o~eredx zapros na pereda~u soob}eniq
zadannoj dliny drugoj
programme i wozwra}aet uprawlenie programme. posle zawer{eniq
operacii budet asinhronno wyzwana i wypolnena podprogramma zawer{eniq,
napisannaq na
makroassemblere. kogda drugoe zadanie prinimaet
soob}enie posredstwom funkcii priema dannyh,
to ukazannaq podprogramma na qzyke makroassemblera
aktiwiziruetsq w ka~estwe asinhronnoj podprogrammy zawer{eniq.
.LIN
obra}enie k funkcii:
.SWT
	I=ISDATC (BUF,WCNT,CRTN)
.BLN
gde
.DFN BUF
massiw,	soderva}ij dannye, kotorye neobhodimo peredatx;
.DFN WCNT
celoe ~islo slow, kotoroe neobhodimo peredatx;
.DFN CRTN
imq podprogrammy zawer{eniq na qzyke
makroassemblera, kotoraq dolvna	aktiwizirowatxsq
po okon~anii pereda~i; |to imq dolvno ukazywatxsq
w operatore EXTERNAL podprogrammy, wyzywa`}ej ISDATC.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - w dannoe wremq w sisteme net	drugogo
	   zadaniq.
.LIN
primer.
.SWT
     INTEGER*2 MSG(40)
     EXTERNAL  RTN
      .	. .
     CALL ISDATC (MSG,40,RTN)
.HLV 3
funkciq	ISDATF
.LIN
funkciq	ISDATF peredaet	ukazannoe ~islo	slow iz	odnogo zadaniq w drugoe.
uprawlenie wozwra}aetsq	programme polxzowatelq nemedlenno posle	togo,
kak zapros na pereda~u postawlen w o~eredx, i programma	prodolvaet
wypolnqtxsq. KOgda drugoe zadanie prinimaet soob}enie posredstwom funkcii
priema dannyh, ukazannaq podprogramma na qzyke fortran
aktiwiziruetsq w ka~estwe asinhronnoj podprogrammy zawer{eniq.
.LIN
obra}enie k podprogramme:
.SWT
	I=ISDATF (BUF,WCNT,AREA,CRTN)
.BLN
gde
.DFN BUF
massiw,	soderva}ij dannye dlq pereda~i;
.DFN WCNT
celoe ~islo slow, kotoroe neobhodimo peredatx;
.DFN AREA
massiw iz ~etyreh slow dlq informacii swqzi.
|tot massiw ne
dolven modificirowatxsq	programmoj i ne
dolven nahoditxsq w oblasti swopinga USR;
dannyj massiw movet ispolxzowatxsq drugimi
funkciqmi zawer{eniq na	fortran	tolxko posle
aktiwizacii podprogrammy zawer{eniq;
.DFN CRTN
imq podprogrammy, napisannoj na	qzyke
fortran, kotoraq aktiwiziruetsq	po
zawer{enii pereda~i; |to imq dolvno
ukazywatxsq w operatore	EXTERNAL programmy,
wyzywa`}ej ISDATF.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - w dannoe wremq w sisteme net	drugogo
	   zadaniq.
.LIN
primer.
.SWT
     INTEGER*2 MSG(40),SPOT(4)
     EXTERNAL RTN
      .	. .
     CALL ISDATF(MSG,40,SPOT,RTN)
.HLV 3
funkciq	ISDATW
.LIN
funkciq	ISDATW peredaet	ukazannoe ~islo	slow iz	odnogo zadaniq w drugoe.
uprawlenie wozwra}aetsq	programme polxzowatelq posle togo, kak drugoe
zadanie	prinqlo	dannye posredstwom funkcii priema dannyh.
.LIN
obra}enie k funkcii:
.SWT
	I=ISDATW (BUF,WCNT)
.BLN
gde
.DFN BUF
massiw,	soderva}ij dannye, kotorye neobhodimo peredatx;
.DFN WCNT
celoe ~islo slow, kotoroe neobhodimo peredatx.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - w dannoe wremq w sisteme net	drugogo
	   zadaniq.
.LIN
primer.
.SWT
     INTEGER*2 MSG(40)
      .	. .
     IF(ISDATW(MSG.40).NE.0) STOP'net drugogo zadaniq'
.HLV 2
podprogramma MWAIT (RT11FB ili RT11XM)
.LIN
podprogramma MWAIT prednazna~ena dlq priostanowki wypolneniq programmy
do teh por, poka ne budut peredany ili prinqty wse
soob}eniq, poslannye drugomu zadani`. |to garantiruet obrabotku
trebuemogo soob}eniq. funkciq MWAIT ispolxzuetsq sowmestno
s IRCVD	i ISDAT. podprogramma MWAIT trebuet |lement o~eredi,
~to neobhodimo u~itywatx pri wypolnenii	funkcii	IQSET.
.LIN
obra}enie k podprogramme:
.SWT
	CALL MWAIT
.LIN
o{ibki:	otsutstwu`t.
.LIN
primer priweden	w opisanii funkcii ISDAT (sm. podpunkt 8.8.2.1).
.HLV 1
rabota s dopolnitelxnymi terminalami
.LIN
wozmovnostx ispolxzowaniq opisywaemyh nive podprogramm opredelqetsq pri
generacii sistemy RT11. ih ispolxzowanie razre{eno tolxko pod uprawleniem
monitorow, pri generacii kotoryh ukazana neobhodimostx
raboty s neskolxkimi terminalami.
.HLV 2
funkciq	MTATCH
.LIN
funkciq	MTATCH predostawlqet programme prawo ispolxzowaniq
ukazannogo terminala, zakreplqq	ego za zadaniem.
do otmeny |togo	sostoqniq terminala funkciej MTDTCH
nikakaq	drugaq programma na dannyj terminal
dostupa	ne polu~it.
obra}enie k |toj funkcii dolvno	bytx
wypolneno pered	tem,
kak programma iniciiruet perwoe	obra}enie k terminalu s
ispolxzowaniem podprogrammy mnogoterminalxnogo dostupa.
.LIN
obra}enie k funkcii:
.SWT
	I=MTATCH (UNIT[,ADDR][,JOBN])
.BLN
gde
.DFN UNIT
logi~eskij nomer terminala;
.DFN ADDR
neobqzatelxnyj parametr	- adres	asinhronnogo slowa sostoqniq
terminala;
esli slowo sostoqniq terminala ne trebuetsq, |tot argument
wyzowa movet bytx opu}en, ~to ukazywaetsq zapqtoj;
naprimer:
.SWT
	I=MTATCH (IUN,,JNUM)
.DFN JOBN
esli terminal zakreplen	za drugim zadaniem, to w |tu peremennu`
(tip INTEGER*2)	zapisywaetsq nomer |togo zadaniq.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=3 - zadan nomer nesu}estwu`}ego terminala;
     I=5 - terminal zakreplen za drugim	zadaniem;
	   nomer zadaniq wozwra}aetsq pri |tom w JOBN;
     I=6 - w RT11XM	adres slowa sostoqniq
	   nahoditsq wne dopustimoj oblasti wirtualx-
	   nogo	adresnogo prostranstwa polxzowatelq.
.LIN
primer priweden	w opisanii funkcii MTSET (p. 8.9.8).
.HLV 2
funkciq	MTDTCH
.LIN
funkciq	MTDTCH wypolnqet dejstwiq obratnye dejstwiqm funkcii MTATCH.
ee funkciej qwlqetsq otkl`~enie	zadannogo terminala ot dannogo zadaniq,
~toby on stal dostupnym	dlq drugih zadanij.
.LIN
obra}enie k funkcii:
.SWT
	I=MTDTCH (UNIT)
.BLN
gde
.DFN UNIT
logi~eskij nomer oswobovdaemogo	terminala.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=2 - nedopustimyj	nomer; terminal	ne zakreplen;
     I=3 - zadan nomer nesu}estwu`}ego ustrojstwa.
.LIN
primer priweden	w opisanii funkcii MTSET (p. 8.9.8).
.HLV 2
funkciq	MTGET
.LIN
funkciq	MTGET daet programme informaci`	ob opredelennom
terminale w mnogoterminalxnoj sisteme.
.LIN
obra}enie k funkcii:
.SWT
	I=MTGET	(UNIT,ADDR[,JOBN])
.BLN
gde
.DFN UNIT
nomer (celoe) linii i terminala, sostoqnie kotorogo opredelqetsq;
.DFN ADDR
4-slownaq oblastx dlq polu~eniq	informacii
sostoqniq; oblastx predstawlqet	soboj
~etyreh|lementnyj massiw tipa INTEGER*2;
format dannyh, zanosimyh w |tot	massiw opisan w	sistemnoj
makrokomande .MTSET (sm. p 8.9.8);
.DFN JOBN
nomer zadaniq, swqzannogo s terminalom,	esli terminal zanqt
drugim zadaniem.
.LIN
informaciq o sostoqnii,	wkl`~aq	opredeleniq razrqdow dlq slowa
konfiguracii terminala i bajt sostoqniq	terminala, detalxno opisany
w sistemnoj makrokomande .MTGET	(sm. podpunkt 7.8.7.2).
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=2 - ustrojstwo ne zakrepleno za programmoj;
     I=3 - zadan nomer nesu}estwu`}ego ustrojstwa;
     I=4 - terminal zanqt drugim zadaniem
	   (nomer zada~i wozwra}aetsq pri |tom w JOBN);
     I=6 - w RT11XM	adres massiwa dlq zapisi
	   sostoqniq terminala nahoditsq wne
	   dopustimyh granic programmy.
.LIN
primer priweden	w opisanii funkcii MTSET (p. 8.9.8).
.HLV 2
funkciq	MTIN
.LIN
funkciq	MTIN peredaet simwoly s	ukazannogo terminala programme
polxzowatelq. |ta funkciq
predstawlqet soboj mnogosimwolxnu`
i mnogoterminalxnu` formu podprogrammy ITTINR. esli simwoly otsutstwu`t,
to ustanawliwaetsq flag	dlq ukazaniq o{ibki pri	wyhode iz
funkcii. esli argument - s~et~ik simwolow ne zadan, peredaetsq odin
simwol.
.LIN
obra}enie k funkcii:
.SWT
	I=MTIN (UNIT,CHAR[,CHRCNT][,OCNT])
.BLN
gde
.DFN UNIT
nomer terminala;
.DFN CHAR
peremennaq (massiw), w kotoru` zapisywaetsq wwedennyj s	terminala
simwol (simwoly);
.DFN CHRCNT
neobqzatelxnyj argument, ukazywa`}ij ~islo wwodimyh s terminala
simwolow;
.DFN OCNT
neobqzatelxnyj argument, ukazywa`}ij ~islo fakti~eski peredannyh
simwolow.
.LIN
pri zaprose na wwod neskolxkih simwolow, esli byl ukazan ~etwertyj,
neobqzatelxnyj argument	OCNT i razrqd 6	w slowe
M.TSTS ustanowlen, to peremennaq, ukazannaq w pozicii argumenta	OCNT, posle
wozwrata iz podprogrammy budet sodervatx celoe	~islo fakti~eski
peredannyh simwolow.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - net wwoda; bufer pust;
     I=2 - terminal ne	zakreplen za programmoj;
     I=3 - zadan nomer nesu}estwu`}ego terminala.
.LIN
primer priweden	w opisanii funkcii MTSET (p. 8.9.8).
.HLV 2
funkciq	MTOUT
.LIN
funkciq	MTOUT peredaet simwoly na ukazannyj terminal. |ta
funkciq	qwlqetsq mnogosimwolxnoj, mnogoterminalxnoj formoj podprogrammy
ITTOUR.	esli sistemnyj bufer perepolnilsq,
to ustanawliwaetsq flag	dlq ukazaniq
o{ibki pri wyhode iz funkcii. esli s~et~ik wywodimyh znakow
ne ukazan, to po umol~ani`
predpolAgaetsq 1.
.LIN
obra}enie k funkcii:
.SWT
	I=MTOUT	(UNIT,CHAR[,CHRCNT][,OCNT])
.BLN
gde
.DFN UNIT
nomer terminala	;
.DFN CHAR
peremennaq (massiw) w kotoroj nahoditsq	wywodimyj simwol (simwoly);
massiw dolven imetx tip	LOGICAL*1, peremennaq dolvna sodervatx
wywodimyj simwol w mlad{em bajte;
.DFN CHRCNT
neobqzatelxnyj argument, ukazywa`}ij koli~estwo	wywodimyh simwolow;
.DFN OCNT
neobqzatelxnyj argument, ukazywa`}ij ~islo fakti~eski wywedennyh
simwolow.
.LIN
pri zaprose na wywod neskolxkih	simwolow, esli byl ukazan ~etwertyj
neobqzatelxnyj argument	OCNT i razrqd 6	w slowe	M.TSTS ustanowlen
to, posle wozwrata iz podprogrammy, peremennaq,	ukazannaq w pozicii
argumenta OCNT,	budet sodervatx	celoe ~islo fakti~eski wywedennyh
simwolow.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=1 - net mesta w kolxcewom bufere	wywoda;
     I=2 - terminal ne zakreplen za zadaniem;
     I=3 - zadan nomer nesu}estwu`}ego terminala.
     I=5 - w RT11XM; adres bufera polxzowatelq
	   wne dopustimyh granic programmy.
.LIN
primer priweden	w opisanii funkcii MTSET (p. 8.9.8).
.HLV 2
funkciq	MTPRNT
.LIN
funkciq	MTPRNT funkcioniruet kak podprogramma PRINT w
uslowiqh mnogoterminalxnosti. ona pozwolqet osu}estwlqtx wywod
informacii na l`boj terminal.
.LIN
obra}enie k funkcii:
.SWT
	I=MTPRNT (UNIT,ADDR)
.BLN
gde
.DFN UNIT
nomer terminala;
.DFN ADDR
simwolxnaq stroka, podleva}aq wywodu; zametim, ~to literalxnye
konstanty, zadannye w kawy~kah pri fortranowskom wyzowe	podprogramm
ime`t format ASCIZ, kotoryj zawer{aet stroku bajtom 0; obnaruvenie
bajta 0	pri wywode na terminal po MTPRNT (takve	kak i pri PRINT)
porovdaet wywod	<CR>, <LF>; dlq	predotwra}eniq |togo stroka dolvna
zawer{atxsq bajtom "200.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=2 - terminal ne zakreplen za zadaniem;
     I=3 - zadan nomer nesu}estwu`}ego terminala;
     I=5 - w RT11XM; adres bufera wne dopus-
	   timyh granic	programmy.
.LIN
primer priweden	w opisanii funkcii MTSET (p. 8.9.8).
.HLV 2
funkciq	 MTRCTO
.LIN
funkciq	MTRCTO rabotaet	podobno	sistemnoj makrokomande .RCTRLO w
uslowii	mnogoterminalxnosti. |ta funkciq otmenqet dejstwiq komandy
monitora <CTRL/O>, podannoj s klawiatury zadannogo terminala.
.LIN
obra}enie k funkcii:
.SWT
	I=MTRCTO (UNIT)
.BLN
gde
.DFN UNIT
nomer terminala;
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=2 - ustrojstwo ne zakrepleno za zadaniem;
     I=3 - zadan nomer nesu}estwu`}ego terminala.
.LIN
primer priweden	w opisanii funkcii MTSET (p. 8.9.8).
.HLV 2
funkciq	MTSET
.LIN
funkciq	MTSET pozwolqet	programme izmenqtx nahodq}iesq w tablicah monitora
harakteristiki terminala i linii swqzi (funkciq	rabotaet podobno
sistemnoj makrokomande .MTSET).	ustanowlennye harakteristiki sohranq`tsq
sistemoj i ispolxzu`tsq	e` pri rabote s	ukazannym terminalom do	momenta
perezagruzki sistemy ili do momenta izmeneniq ih obra}eniem kakogo-libo
iz zadanij k .MTSET ili	MTSET.
.LIN
obra}enie k funkcii:
.SWT
	I=MTSET	(UNIT,ADDR)
.BLN
gde
.DFN UNIT
nomer terminala	(i linii), harakteristiki kotorogo neobhodimo izmenitx;
.DFN ADDR
~etyrehslownaq oblastx dlq pereda~i parametrow;
oblastx	predstawlqet soboj ~etyreh|lementnyj massiw tipa INTEGER*2.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod;

     I=2 - terminal ne zakreplen za zadaniem;
     I=3 - zadan nomer nesu}estwu`}ego terminala;
     I=6 - w RT11XM	adres bufera sostoqniq terminala
	   nahoditsq wne dopustimyh granic programmy.
.LIN
w priwedennom primere pokazan test funkcij,
prednazna~ennyh	dlq raboty
w mnogoterminalxnom revime.
.LIN
primer.
.SWT
 C   test programm SYSLIB dlq mnogoterminalxnoj	raboty
 C
	INTEGER*2 UNIT,SBLOK(4),STAT(8),ASW,STRING(41),PROMPT(9)
	LOGICAL*1 TEND(14)
	REAL*4	  TESTM(9)
	DATA  PROMPT /'ww','ed','it','e	','st','ro','ku','>',"200/
	DATA  TEND   /'*','k','o','n','e','c','	','t','e','s','t',
      *		      'a','*',0/
	DATA  TESTM  /'STAT','ATCH','GET','SET',4*",'DTCH'/
 C
 C   ispolxzowanie MTSTAT dlq polu~eniq	i raspe~atki
 C   ~isla terminalow
 C
	TYPE   106			     ! predstawitxsq
	L      =1			     ! L= kod funkcii
	IF   (MSTAT(STAT).NE.0)	GOTO 999     ! polu~itx	status
 5	TYPE   99, STAT(3)		     ! wywesti # terminalow
 C
 C   polu~itx nomer prowerqemogo terminala
 C
	TYPE   100			     ! datx zapros
	ACCEPT 101, UNIT		     ! polu~itx	nomer
	IF   (UNIT.EQ.99) STOP 'konec mnogoterminalxnogo testa'
 C
 C   zakrepitx terminal	za |tim	zadaniem i polu~itx ego	sostoqnie
 C
	TYPE   110			       ! prowerqtx ASW?
	ACCEBT 111, IASW		       ! prinqtx otwet
	IF   (IASW.EQ.'Y') IER=MTATCH(UNIT,ASW,
      *				      JOB)     ! zakrepitx s ASW
	IF   (IASW.NE.'Y') IER=MTATCH(UNIT,0,
      *				      JOB)     ! ili bez ASW
	L      =2
	IF   (IER) GOTO	999		       ! soob}itx ob o{ibke
	L      =3
	IF   (MTGET(UNIT,SBLOK).NE.0) GOTO 999 ! polu~itx sostoqnie
	TYPE   102, UNIT, SBLOK		       ! i rape~atatx ego
 C
 C   polu~itx nowyj status terminala i raspe~atatx ego
 C
	CALL   SETUP(SBLOK,UNIT)	     ! proizwesti izmeneniq
	L      =4
	IF  (MTSET(UNIT,SBLOK).NE.0) GOTO 999! soob}itx	ih sisteme
	TYPE   102, UNIT, SBLOK		     ! i raspe~atatx
 C
 C   prowesti prowerku s |hope~atx`, ispolxzuq MTIN & MTOUT
 C
 20	TYPE   103			     ! ob'qwitx	prawila
	TYPE   104			     ! prowerok
	TYPE   105
 30	CALL   MTIN(UNIT,J)		     ! prinqtx stroku wwodA
	CALL   MTOUT(UNIT,J)		     ! prOweritx |hope~atx
	IF  (J.NE.10) GOTO 30		     ! LF-konec	stroki
	CALL   MTRCTO(UNIT)		     ! sbrositx	<CTRL/O>
 C
 C   prowerka raboty MTIN/MTOUT	s wwedennym razrqdom TTSPC$
 C   i zatem o~istka razrqda
	IF  (SBLOK(1).AND."10000) GOTO 40     !	esli =1, to konec
	SBLOK(1)=SBLOK(1).DR."10000	      !	ina~e ustanowitx i
	IF  (MTSET(UNIT,SBLOK).NE.0) GOTO 999 !	soob}itx sisteme
	IF  (IASW.NE.'Y') GOTO 60	      !	prowerqtx ASW?
 C
 C   prowerka asinhronnogo slowa sostoqniq terminala (ASW)
 C
	TYPE   109			      !	ob'qwitx test
 50	IF  (ASW.AND..NOT."40000) GOTO 50     !	vdatx wwoda
 55	CALL   MTIN(UNIT,J)		      !	prinqtx	znak
	CALL   MTOUT(UNIT,J)		      !	wywesti	znak
	IF  (J.NE.10) GOTO 55		      !	ne konec stroki?
	CALL   MTRCTO(UNIT)		      !	sbrositx <CTRL/O>
 C
 C   prowerka MTPRNT wywodom dwuh strok
 C
 60	CALL   GTLIN(STRING,PROMPT)	  ! prinqtx stroku po GTLIN
	CALL   MTPRNT(UNIT,STRING)	  ! wywesti na terminal
	CALL   MTPRNT(UNIT,TEND)	 ! ob'qwitx o konce prowerki
 C
 C   otkl`~itx terminal	ot zadaniq i na~atx sna~ala
 C
	L      =9
	TYPE   109,UNIT			 ! otkl`~itx terminal
	IF  (MTDTCH(UNIT).EQ.0)	GOTO 5	 ! powtoritx ...
 C
 C   soob}enie ob o{ibke
 C
 999	TYPE   909,TESTM(L),IER		 ! soob}itx o{ibku
	GOTO   5			 ! i na~atx sna~ala
 C
 99	FORMAT	('0w sisteme',I3,'terminalow)
 100	FORMAT	('$nomer prowerqemogo terminala?')
 101	FORMAT	(I2)
 102	FORMAT	('0terminal',I3,'parametry=',408)
 103	FORMAT	('0na~alo prOwerki. wwedite dwe	stroki i <CR>')
 104	FORMAT	(' stroka 1: |ho-pe~atx	+ powtorenie ~erez MTOUT')
 105	FORMAT	(' stroka 2: |ho-pe~atx	~erez MTOUT')
 106	FORMAT	('1 prowerka mnogoterminalxnyh programm	SYSLIB')
 108	FORMAT	(' otkl`~aetsq terminal',I3)
 109	FORMAT	(' prowerka ASW	- |ho wwoda + powtor')
 110	FORMAT	('$prowerqtx rabotu ASW	?')
 111	FORMAT	(A1)
 909	FORMAT	('0MT',A4,'kod o{ibki=',I3)
 C
	END
	SUBROUTINE SETUP (SBLOK,UNIT)
 C
 C  podprogramma polu~eniq nowogo slowa	parametrow
 C
	INTEGER*2 SBLOK(4),UNIT
 C
	TYPE   100			   ! zapros, polu~enie i
	ACCEPT 101,J			   ! ustanowka nowogo
	IF  (J)	SBLOK(1)=J		   ! slowa konfiguracii
	TYPE   102			   ! zapros i priem
	ACCEPT 101,J			   ! simwola zapolnitelq
	TYPE   103			   ! i ego s~et~ika
	ACCEPT 101,I			   ! zanesenie w
	IF  (I.OR.J) SBLOK(3)=I*256+J	   ! sootwetstwu`}ie bajty
 5	TYPE   104			   ! zapros, priem i
	ACCEPT 105,I			   ! ustanowka nowoj
	IF  (I)	SBLOK(4)=SBLOK(4)/256*256+I! {iriny karetki
 C
 100	FORMAT	('$maska razrqdow konfiguracii:')
 101	FORMAT	(06)
 102	FORMAT	('$znak, trebu`}ij zapolnitelq:')
 103	FORMAT	('$~islo zapolnitelej:')
 104	FORMAT	('${irina karetki:')
 105	FORMAT	(I3)
 C
	END
.HLV 2
funkciq	MTSTAT
.LIN
funkciq	MTSTAT wozwra}aet w wyzywa`}u` programmu zna~eniq
parametrow mnogoterminalxnoj sistemy. wozwra}aemye
parametry razme}a`tsq w	wosxmislownom bloke.
.LIN
obra}enie k funkcii:
.SWT
	I=MTSTAT(ADDR)
.BLN
gde
.DFN ADDR
adres wosxmislownogo massiwa, w	kotoryj	wozwra}a`tsq zna~eniq
parametrow mnogoterminalxnoj sistemy; massiw sodervit sledu`}u`
informaci`:
.DF2 ADDR(1)
sme}enie ot bazy rezidenta monitora do perwogo bloka uprawleniq
terminalom (TCB);
.DF2 ADDR(2)
sme}enie ot bazy rezidenta monitora do bloka uprawleniq	terminalom,
kotoryj	qwlqetsq sistemnym (konsolxnym)	terminalom zadaniq;
.DF2 ADDR(3)
~islo blokow uprawleniq	terminalom w sisteme (ot 1 do 17, desqti~noe);
.DF2 ADDR(4)
ob'em bloka uprawleniq terminalom w bajtah;
.DF2 ADDR(5)-(8)
zarezerwirowano.
.LIN
rezulxtaty funkcii:
.SWT
     I=0 - oby~nyj wyhod iz funkcii;

     I=5 - w RT11XM; adres massiwa wne
	   dopustimyh granic programmy.
.LIN
primer priweden	w opisanii funkcii MTSET (sm. p. 8.9.8).
                                                                                                                                                                                                           