|
|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 6912 (0x1b00)
Types: TextFile
Names: »procestx «
└─⟦110021343⟧ Bits:30007476 RC8000 Backup tape fra HT's bus-radio system
└─⟦a957ba283⟧
└─⟦this⟧ »procestx «
begin
message proces side 1 - 790716/hko;
<* proces udskriver dele af procesbeskrivelserne
for alle eller et antal nærmere angivne processer.
kald:
1 * 1
(<uddatamedie>=) proces (<s>navn (.<procesnavn>) ) ,
0 1 0
1 1
(<s>udvid.<procomfang>(.<systemproc>) )
0 0
navn.<procesnavn> angiver navnet på den (de)
proces(ser) der ønskes udskrevet.
er parameteren udeladt skrives
alle interne processer samt 's'.
i stedet for et navn kan angives
'egen'.
udvid.<procomfang>.<systemproc>
er denne parameter udeladt svarer
det til udvid.0.0
<procomfang> kan have værdierne
0 og 1, svarende til henholdsvis
mindre og større omfang af
de enkelte procesbeskrivelser.
<systemproc> kan have værdierne
0 eller 1, svarende til om
'procfunc', 'driverproc' og
ubenyttede procesbeskrivelser
ikke skal eller skal udskrives.
parameteren har kun betydning hvis
'navn' er udeladt.
kaldte procedurer:
closefp,
findfpparam,
openfp,
skrivproces,
ud.
fejlreaktioner:
dersom et angivet navn ikke findes og ikke
er 'egen',sættes ok.no bitten og der skrives fejlmeddelelsen:
*** proces: <procesnavn> findes ikke.
*>
\f
message proces side 2 - 790716/hko;
integer array ia,ib(1:20);
integer intant,første_int,ant_udskrevet,
linie,linie_ant,side;
zone zu(128,1,stderror);
system(5,78,ia);
intant:=(ia(2)-ia(1))//2;
første_int:=ia(1);
begin
integer array intprocref(1:intant);
integer int_størrelse;
system(5,første_int,intprocref);
int_størrelse:=intprocref(2)-intprocref(1);
begin
integer array procparam(1:intant*4),
wrkstore(1:10);
integer adr,i,paramant,parnr,nr,måde,omfang;
integer array field navn,n;
real array field raf; long array field laf;
boolean alle,parfundet;
zone zp((int_størrelse+511)//512*128,1,stderror);
openfp(zu,0);
wrkstore(1):=28;
wrkstore(2):=1;
open(zp,4,<::>,0);
i:=monitor(40)create entry:(zp,0,wrkstore);
if i>0 then system(9,i+0*write(zu,nl,1,
<:*** proces: create entry :>,
case i of (<::>,<:catalog fejl:>,<::>,
<:ingen bs-ressourcer:>,<::>,<::>,
<:intet maincatalog:>)),<:monitor40:>);
findfpparam(<:udvid:>,true,procparam);
måde:=procparam(1);
omfang:=procparam(2);
raf:= 0;
procparam.raf(1):=real<:egen:>;
procparam.raf(2):=real<::>;
paramant:=findfpparam(<:navn:>,false<* navne *>,procparam);
if paramant<0 then paramant:=1;
alle:= paramant=0;
navn:=6;
linie_ant:=200;
linie:=side:=ant_udskrevet:=parnr:=0;
for i:=1 step 1 until intant do
begin
outrec6(zp,int_størrelse);
system(5,intprocref(1)-4+intstørrelse*(i-1),zp);
end;
\f
message proces side 3 - 790620/hko;
repeat <* until parnr>=paramant *>
raf:=laf:=n:=parnr*8;
if procparam.raf(1)=real <:egen:> then
begin
real array ra(1:2);
system(6,0,ra);
tofrom(procparam.raf,ra,8);
end;
parfundet:=false;
parnr:=parnr+1;
nr:=0;
setposition(zp,0,0);
repeat <* until nr=intant *>
inrec6(zp,int_størrelse);
nr:=nr+1;
if alle and
(omfang>0 or (nr<>1 and nr<>3 and zp.navn(1)<>0)) or
(if nr=1 then <*...procfunc*>
zp.navn(1)=0 and
zp.navn(2)=procparam.n(1) and
zp.navn(3)=procparam.n(2) and
zp.navn(4)=procparam.n(3) and
0=procparam.n(4)
else if zp.navn(1)<>0 then
zp.navn(1)=procparam.n(1) and
zp.navn(2)=procparam.n(2) and
zp.navn(3)=procparam.n(3) and
zp.navn(4)=procparam.n(4)
else false )
then
begin
integer i,j;
integer array term(1:8);
long array field laf;
\f
message proces side 4 - 790723/hko;
laf:=0;
hnavn(15,i);
term(1):=0;
j:=system(5,zp.navn(11)+i,term);
i:=system(5,term(1)+2,term.laf);
if i<>1 or j<>1
or term(1) shift (-16)<32
or term(1) shift (-16)>126
or zp.navn(5) extract 12 = 0
or zp.navn(11)=0
then term.laf(1):=long <:***:>;
parfundet:=true;
ant_udskrevet:=antudskrevet+1;
if linie+linieant>60 then
begin
real r,t;
boolean min;
min:=false add 45;
side:=side+1;
linie:=0;
systime(1,0,t);
write(zu,nl,0,min,if side>1 then 80 else 0,
ff,1,min,80,nl,1,
<<dd dd dd>,systime(4,t,r),sp,2,
<<dd dd>,r/100.0,sp,24,<:proces:>,
sp,28,<:side:>,<< dd>,side,nl,1);
end;
linie_ant:=
skrivproces(zu,intprocref(nr),term,zp.navn,måde);
linie:=linie+linieant;
end;
until nr=intant or (parfundet and -,alle);
if -,parfundet then
begin
errorbits:=1;
write(zu,nl,1,<:*** proces: :>,procparam.laf,<: findes ikke:>);
end;
until parnr>=paramant;
monitor(48)remove entry:(zp,0,ia);
end;
end;
if ant_udskrevet>0 then
begin
trapmode:=1 shift 10;
write(zu,nl,0,false add 61,80,nl,1);
end;
closefp(zu,true);
end
▶EOF◀