|
|
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: »extatomic«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt.
└─⟦0364f57e3⟧
└─⟦58ca399f1⟧ »extbib«
└─⟦this⟧
atomic=algol list.yes index.no
external
boolean procedure atomic(mass,Na);
value Na; integer Na; array mass;
begin
integer i,j,l,c,M;
procedure alarm;
begin write(out,<:<10>***atomic symbol no.:>,<<dd>,i,
<<ddddd>,M,false add (c+64),1,false add l,1,<: illegal:>);
atomic:= true; goto stop
end;
atomic:= false;
for i:=1 step 1 until Na do begin
c:= M:= 0;
for l:=c while (c<65 or c>90) and c<>46 and M<>-1 do begin
readchar(in,c);
if M=12 and l<>50 and c<>67 then begin
repeatchar(in); c:= 67 end;
if c>=48 and c<=57 then M:= M*10+c-48;
if c=49 and l=45 then M:= -1
end;
if M=-1 then mass(i):= mass(i-1) else
if c=46 then begin
repeatchar(in); read(in,mass(i));
mass(i):= mass(i)+M
end else begin
readchar(in,l); if l<97 then begin l:= 0; repeatchar(in) end;
c:= c-64; if c>19 then alarm;
case c of begin
begin if l<>108 or -,(M=27 or M=0) then alarm;
mass(i):= 26.981535 end;
begin j:= if l=0 then M-9 else if l=114 then M//2-36 else 0;
if j<1 or j>4 then alarm;
mass(i):= case j of (10.012939,11.009305,
78.91835,80.91634) end;
begin j:= if l=0 then M-11 else if l=108 then M//2-14 else 0;
if j=-11 then j:= 1; if j<1 or j>4 then alarm;
mass(i):= case j of (12,13.003354,
34.968855,36.965896) end;
mass(i):= 2.014102;
alarm;
mass(i):= 18.998405;
alarm;
begin j:= if M=0 then 1 else M;
if j<1 or j>2 then alarm;
mass(i):= case j of (1.007825,2.014102) end;
begin if -,(M=127 or M=0) then alarm;
mass(i):= 126.90435 end;
begin if -,(M=127 or M=0) then alarm;
mass(i):= 126.90435 end;
alarm;
alarm;
alarm;
begin j:= if M=0 then 1 else M-13; if j<1 or j>2 then alarm;
mass(i):= case j of (14.003074,15.000108) end;
begin j:= if M=0 then 1 else M-15; if j<1 or j>3 then alarm;
mass(i):= case j of (15.994915,16.999133,17.999160) end;
begin if -,(M=31 or M=0) then alarm;
mass(i):= 30.973763 end;
alarm;
if i>1 then mass(i):= mass(i-1) else alarm;
begin j:= if l=0 then (if M=0 then 1 else M-31) else
if l=105 then (if M=0 then 4 else M-24) else 0;
if j<1 or j>6 then alarm;
mass(i):= case j of (31.972074,32.971460,33.967864,
27.976927,28.976491,29.973761) end;
end c end
end i;
stop:
end;
end
▶EOF◀