|
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: 3840 (0xf00) Types: TextFile Names: »fungbsotxt«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt. └─⟦0364f57e3⟧ └─⟦this⟧ »fungbsotxt«
fungbso=set 50 fungbso=algol program for preparing a sortfile for fungi call: <objectfile>=fungbso <sourcefile> <fpparam>(0,n) begin integer c,ib,ix,i,dix,ipos,del,reci,cg,cs,cy, sg,ss,sv,sf,ca,cn,cd,ci,cl,cc,ch; integer array BUF(1:200),DIX(1:20),PRIX(1:20); real array field raf; long array IFILE,OFILE(1:3); zone zi,zo(128,1,stderror); raf:= 0; cleararray(IFILE); readinfp(IFILE.raf,1); open(zi,4,IFILE,0); cleararray(OFILE); readlsfp(OFILE.raf); open(zo,4,OFILE,0); cg:= 35; cs:= 64; cy:= 36; i:= 0; unstackcuri; begin boolean bg,bga,bgn,bs,bsa,bsd,bsn,bsi,bsd5; integer dixg,dixga,dixgn,dixs,dixsa,dixsd,dixsn, dixsi,dixsd5; boolean procedure prefix(d1,d2,d3,d4,dixt); integer d1,d2,d3,d4,dixt; begin boolean b; b:= true; for i:= DIX(dix) step 1 until PRIX(dix)-1 do b:= b and BUF(i)=(case i+1-DIX(dix) of (d1,d2,d3,d4)); if b and dixt=0 then dixt:= dix; prefix:= b; end prefix; procedure putchar(z,ichar,char); integer ichar,char; zone z; begin integer irec; irec:= ichar//6+1; if ichar mod 6 = 0 then zo(reci):= 0; zo(reci):= zo(reci) shift 8 add char; ichar:= ichar+1; end; integer procedure putsortspec(z,dix,mchar); integer dix,mchar; zone z; begin if dix>0 then begin if DIX(dix)=0 then syntax(1); for i:= PRIX(dix) step 1 until DIX(dix+1)-1 do putchar(z,ichar,BUF(i); for i:= DIX(dix+1)-PRIX(dix) step 1 until mchar do putchar(z,ichar,32); end end; procedure putitem(z,dix,mchar); integer dix,mchar; zone z; begin if dix>0 then begin if DIX(dix)=0 then syntax(1); for i:= DIX(dix) step 1 until DIX(dix+1)-1 do putchar(z,ichar,BUF(i); for i:= DIX(dix+1)-DIX(dix) step 1 until mchar do putchar(z,ichar,32); end end; procedure syntax(dix); value dix; integer dix; begin write(out,<:<10>syntax error:>); writeitem(dix); goto lend end; sg:= 103; ss:= 115; sv:= 118; sf:= 102; ca:= 97; cn:= 110; cd:= 100; ci:= 105; cl:= 108; cc:= 99; ch:= 104; del:= 47; DIX(1):= 0; il:= 1; l1:readchar(zi,c); BUF(1):= c; if -,(c=cg or c=cs or c=cy) then goto l1; readchar(zi,c); if c<>32 then syntax(1); BUF(2):= 32; l2:i:= 3; DIX(1):= 1; dix:= 2; l3:readchar(zi,c); if c=10 then goto l3; if c=32 and BUF(i-1)=32 then goto l3; if c=32 and DIX(dix-1)=i-1 then begin DIX(dix):= 0; goto l4; end; if c=cg or c=cs or c=cy then begin if BUF(i-1)<>32 then begin BUF(i):= 32; i:= i+1 end; DIX(dix):= i; dix:= dix+1 end; BUF(i):= c; i:= i+1; if c=25 then begin DIX(dix):= i-1; DIX(dix+1):= 0; goto l4 end; goto l3; l4:for dix:= 1,dix+1 while DIX(dix+1)>0 do begin for i:= DIX(dix),i+1 while BUF(i)<>32 do; PRIX(dix):= i+1; end; dixg:= dixga:= dixgn:= dixs:= dixsa:= dixsn:= dixsd5:= 0; for dix:= 1,dix+1 while DIX(dix+1)>0 do begin prefix(cg,32,32,32,dixg); prefix(cg,ca,32,32,dixga); prefix(cg,cn,32,32,dixgn); prefix(cs,32,32,32,dixs); prefix(cs,ca,32,32,dixsa); prefix(cs,cn,32,32,dixsn); prefix(cs,cd,53,32,dixsd5); end; if dixg>0 then begin end; if dixs>0 then begin end; l5:dix:= 1; l6:if DIX(dix)>0 then begin dix:= dix+1; goto l6 end; BUF(1):= BUF(DIX(dix-1)); BUF(2):= 32; if BUF(1)<>25 then goto l2; end; lend: close(zi,true); close(zo,true); end ▶EOF◀