|
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: »tdiscmove«
└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ. └─⟦4334b4c0b⟧ └─⟦162d2eb5b⟧ »talgprog« └─⟦this⟧
lookup discmove if ok.yes (scope temp discmove clear temp discmove) discmove=set 1 discmove=algol list.yes 1980-08-07 begin boolean list; integer lb,ub,segm,i,j,k,char,res,minsiz,maxsiz; integer array field rec,tail; long array field doc,name; integer array bases(1:8),t(1:10); array field d; long array tname,disc,ename,fname,odoc(1:3); rec:=0; d:=0; name:=6; tail:=14; doc:=16; lookup_tail(<:catalog:>,t); segm:=t(1); readbfp(<:list:>,list,true); readifp(<:min:>,minsiz,0); readifp(<:max:>,maxsiz,63); cleararray(disc); if -,readlsfp(disc.d) then alarm("nl",1,"*",3,<:document not specified:>); connectcuri(<:catalog:>); setposition(in,0,0); system(11,0,bases); lb:=bases(5); ub:=bases(6); for segm:=segm step -1 until 1 do begin inrec6(in,512); for rec:=0 step 34 until 512-34 do begin if in.rec(1)<>-1 then begin if lb=in.rec(2) and ub=in.rec(3) then begin if in.rec.tail(1)>minsiz and in.rec.tail(1)<=maxsiz and in.rec(1) extract 3>=3 and (in.rec.doc(1)<>disc(1) or in.rec.doc(2)<>disc(2)) and in.rec.doc(1)<>long <:disc3:> then begin res:=generaten(tname); if res<>0 then alarm("nl",1,"*",3,<:generate name:>,res); for i:=1,2 do odoc(i):=in.rec.doc(i); for i:=1,2 do in.rec.doc(i):=disc(i); for i:=1,2 do fname(i):=in.rec.name(i); if false then write(out,"nl",1,"*",1, true,14,fname, true,14,tname, true,14,in.rec.doc); for i:=1 step 1 until 10 do t(i):=in.rec.tail(i); res:=createentry(tname,t); if res<>0 then alarm("nl",1,"*",3,<:create entry no resources:>,res); res:=permentry(tname,in.rec(1)extract(3)); if res<>0 then alarm("nl",1,"*",3,<:permanent key :>,in.rec(1) extract 3, <: no resources:>,res); res:=set_en_base(tname,lb,ub); if res<>0 then alarm("nl",1,"*",3,<:set entry base :>,res,lb,ub); if list then write(out,"nl",1,true,12,fname,<< dddd>, in.rec(8),"sp",2,odoc,<: to :>,disc); i:=j:=1; disccopy(string fname(increase(i)),string tname(increase(j))); generaten(ename); res:=renameentry(fname,ename); if res<>0 then alarm("nl",1,"*",3,fname, <: cannot be renamed to :>,ename,res); res:=renameentry(tname,fname); if res<>0 then alarm("nl",1,"*",3,tname, <: cannot be renamed to :>,fname,res); removeentry(ename); end size>0; end user base; end entry; end record; end segments; end; global discmove ▶EOF◀