|
|
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: 3072 (0xc00)
Types: TextFile
Names: »ramsubx«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
└─⟦b2ec5d50f⟧
└─⟦this⟧ »ramsubx«
clear user ramsub
ramsub=set 1 disc5
scope user ramsub
ramsub=algol
\f
RAMAN ANALYSE SUB
external procedure ramsub(ver);
integer ver;
begin
integer i,k,j,t1,t2,t,u,antal,segm;
real factor,s1,s2,max,umax,bmin,bmax,bmin1,bmin2,bmax1,bmax2;
integer array sptail(1:10), sp1tail(1:10), sp2tail(1:10);
array head(1:12), spname(1:2), sp1name(1:2), sp2name(1:2);
boolean nl;
zone sp, sp1, sp2(128,1,stderror);
nl:=false add 10;
write(out,<:<text>=:>); setposition(out,0,0);
readhead(in,head,1);
write(out,nl,1,<:navn navn1 navn2=:>);
spname(1):=spname(2):=real<::>; setposition(out,0,0); readstring(in,spname,1);
setposition(out,0,0); readstring(in,sp1name,1);
setposition(out,0,0); readstring(in,sp2name,1);
case ver of
begin begin write(out,<:faktor=:>);
setposition(out,0,0); read(in,factor);
end 1;
begin
end 2;
begin write(out,<:s1 s2 faktor=:>);
setposition(out,0,0); read(in,s1,s2,factor);
end 3;
end case;
open(sp1,4,string inc(sp1name),0);
open(sp2,4,string inc(sp2name),0);
if monitor(42,sp1,0,sp1tail) <> 0 then begin
write(out,<:* :>,string inc(sp1name),<: findes ikke:>);
goto slut;
end;
if monitor(42,sp2,0,sp2tail) <> 0 then begin
write(out,<:*** :>,string inc(sp2name),<: unknown:>);
goto slut;
end;
inrec(sp1,128); sp1tail(1):=sp1(1); t1:=sp1(2);
bmin1:=sp1(11); bmax1:=sp1(12);
inrec(sp2,128); sp2tail(1):=sp2(1); t2:=sp2(2);
bmin2:=sp2(11); bmax2:=sp2(12);
bmax:=bmax1; if bmax<bmax2 then bmax:=bmax2;
segm:=sp1tail(1);
if segm>sp2tail(1) then segm:=sp2tail(1);
if lookupentry(spname)=0 then removeentry(spname);
cleararray(sptail);
sptail(1):=segm;
write(out,nl,1,<< ddd>,segm);
reservesegm(spname,sptail(1)); permentry(spname,15);
open(sp,4,string inc(spname),0);
segm:=segm-3;
t:=t1; if t1>t2 then t:=t2;
max:=0;
setposition(sp,0,2); setposition(sp1,0,2); setposition(sp2,0,2);
for k:=0 step 1 until segm do
begin outrec(sp,128); inrec(sp1,128); inrec(sp2,128);
for j:=1 step 1 until 128 do
begin u:=k*128+j;
case ver of
begin
begin if u<t then sp(j):=sp1(j)+sp2(j)*factor;
end ver 1;
begin if u<t then sp(j):=sp1(j)/sp2(j);
end ver 2;
begin if u<s1 then sp(j):=sp1(j);
if u>=s1 and u<=s2 then sp(j):=(sp1(j)+sp2(j)*factor)/2;
if u>s2 and u<t then sp(j):=sp2(j)*factor;
end ver 3;
end;
if sp(j)>max then begin max:=sp(j); umax:=u; end;
end j;
end k;
setposition(sp,0,0); outrec(sp,128);
for j:=1 step 1 until 128 do sp(j):=-1;
sp(1):=sptail(1);
sp(2):=t;
sp(6):=max; sp(7):=umax;
sp(11):=bmin1; sp(12):=bmax;
for j:=100 step 1 until 111 do sp(j):=head(j-99);
slut:
close(sp,true); close(sp1,true);close(sp2,true);
end; end
\f
▶EOF◀