DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦76658bfe9⟧ TextFile

    Length: 10752 (0x2a00)
    Types: TextFile
    Names: »stastudtxt  «

Derivation

└─⟦9ccaf6601⟧ Bits:30008165 Bånd med SW8000 kildetekst/release værktøjer
    └─⟦40b1eb8cd⟧ 
        └─⟦this⟧ »stastudtxt  « 

TextFile

begin

integer field i,t,s,c,f,j,ver1,ver2;
integer type,l,time,coru,fourth,old,e,file,block,rest,segno,top_seg,low_seg,
        lno,maxno,p,q,last_rec,first_rec,x,y,masker;
long field st,tim;
integer array tail(1:10),m_val(1:30,1:30);
long min_time;
boolean ch,stk,eb,stop,outfile;
boolean array maske(1:30,1:30);
long array foname,finame(1:3);
real r,v;
real array txt(1:300);
zone z(128,1,stderror);


procedure initmaske;
begin
boolean end_init,end_felt,end_maske;
integer c,i,j,mno,fno,p;

end_init:=false;
repeat
  write(out,<:<10>(l,c,m,g,f) -> :>); setposition(out,0,0);
  skip_sp(c);
  i:=c; while i<>10 do readchar(in,i); <* skip resten af linien *>
  if c = 'l' then begin <* list masker *>
    if masker=0 then 
      write(out,<:ingen masker <10>:>)
    else begin
      write(out,<:             :>,
      <:  type,   coru, fourth,     p1,     p2,     p3,    p4<10>:>);
      for i:=1 step 1 until masker do begin
        write(out,<:<10>maske :>,<< dd>,i,<: :  :>);
        for j:=1 step 1 until 7 do
        if maske(i,j) then
          write(out,<< ddddd>,m_val(i,j),<:, :>)
        else
          write(out,<:      , :>);
      end;
    end;
  end
  else
  if c = 'c' then begin <* clear maske *>
    for i:=1 step 1 until 30 do
    for j:=1 step 1 until 30 do maske(i,j):=false;
    masker:=0;
  end
  else
  if c = 'm' then begin <* sæt maske *>
    mno:=0;
    write(out,<:             :>,
    <:  type,   coru, fourth,     p1,     p2,     p3,    p4<10>:>);
    end_maske:=false;
    repeat <* et gennemløb for hver maske *>
      fno:=0;
      mno:=mno+1;
      write(out,<:maske :>,<< d>,mno,<:  -  :>); setposition(out,0,0);
      end_felt:=false;
      repeat  <* et gennemløb for hvert felt *>
        skip_sp(c); 
        if c<>10 then repeatchar(in);
        if c = 10 then begin
          if mno-1>masker then masker:=mno-1;
          if fno=0 then 
            end_maske:=end_felt:=true
          else 
            end_felt:=true;
        end
        else
        if c = '*' then begin <* tom felt *>
          fno:=fno+1;
          maske(mno,fno):=false;
        end
        else
        if c<'0' or c>'9' then begin
          write(out,<:*** forkert felt<10>:>);
          mno:=mno-1;
        end
        else
        begin
          read(in,p); repeatchar(in);
          fno:=fno+1;
          maske(mno,fno):=true;
          m_val(mno,fno):=p;
        end;
      until end_felt;
    until end_maske;
  end
  else
  if c = 'g' then 
    end_init:=true
  else
  if c = 'f' then
    goto FIN;
until end_init;
end;

procedure skip_sp(c); integer c;
begin
  repeat
    readchar(in,c);
  until c<>32;
end;


procedure skip(no); value no; integer no;
begin
  integer i;
  setposition(z,0,0);
  rest:=inrec6(z,4);
  segno:=0;
  lno:=0;
  for i:=1 step 1 until no do next(false);
end;

procedure skriv(zout); zone zout;
begin
  integer field i;
  write(zout,<<dddd>,lno,<:. :>); 
  if type<221 then write(zout,string txt(type))
  else write(zout,<:        :>);
  write(zout,<<dddd>,type,<: - :>);
  write(zout,<<ddddddd>,time);
  write(zout,<< ddd>,coru extract 12,<:/:>);
  i:=coru shift (-12);
  if i < 7 then
    write(zout, case i+1 of 
          ( <:C,:>, <:D,:>, <:T,:>, <:M,:>, <:W,:>, <:P,:>, <:R,:> ) )
  else write(zout,<< d>,i);
  write(zout, << dddddd>,fourth,<: : :>);
  for i:=2 step 2 until l do begin
    write(zout,<< -ddddddd>,z.i);
    if i mod 8=0 and i<l then write(zout,<:<10>:>,false add 32,45);
  end;
  outchar(zout,10);
end;

procedure next(prt);
value prt; boolean prt;
begin
rep: 
<* write(out,<:<10>** rest = :>,<< d>,rest,<:<10>:>); *>
      if rest = 0 then begin
        if segno = 0 then
          segno:=low_seg
        else begin
          segno:=segno+1;
          if segno=top_seg then segno:=1;
          if segno=low_seg then goto FIN;
        end;
<* write(out,<:<10>** seg = :>,<< d>,segno,<:<10>:>); *>
        setposition(z,0,segno);
        rest:=inrec6(z,4);
        if z.tim = 0 then begin
          rest:=inrec6(z,rest);
          goto rep;
        end;
      end;

      if rest<8 then i:=rest else i:=8;
      rest:=inrec6(z,i);
      type := z.t extract 12;
      if type = 0 then
      begin 
        if rest=0 then goto rep;
        rest:=inrec6(z,rest);
        goto rep 
      end;

      l:=z.t shift (-12);
      time:=z.s;  
      coru:=z.c;
      fourth:=z.f;
      if l>rest then begin
        write(out,<:<10>trouble  :>,l,rest,<:<10>:>);
        inrec6(z,rest);
        goto rep; 
      end;

      rest:=inrec6(z,l);
      if type=1 then begin
        if prt then begin
          r:=z.st/10000;
          write(out,<:<10>start - up  :>,
          <<  dd dd dd>,systime(2,r,r),r,
          <:<10>version     :>,z.ver1,z.ver2);
          i:=2; write(out,<:<10>first code =  :>,<<    ddddddd>,z.i);
          i:=12; write(out,<:<10>first proc =  :>,<<    ddddddd>,z.i);
          i:=14; write(out,<:<10>last proc  =  :>,<<    ddddddd>,z.i);
          write(out,false add 10,2);
        end;
        goto rep
      end;
      lno:=lno+1;
end next;                                                              

t:=2;      s:=4;      c:=6;      f:=8;
st:=6;     ver1:=8;   ver2:=10;  old:=0;
tim:=4;    maxno:=1;  outfile:=false;
stop:=false;
for x:=1 step 1 until 30 do 
for y:=1 step 1 until 30 do maske(x,y):=false;
masker:=0;

for i:=1 step 1 until 220 do txt(i):=real( case i of (
<*  1 *> <:start-up:>,<:start-co:>,<:start   :>,<:wait    :>,<:pass    :>,
<*  6 *> <:inspect :>,<:csendmes:>,<:cwaitans:>,<:exit cwa:>,<:cregret :>,
<* 11 *> <:signal  :>,<:wait sem:>,<:exit ws :>,<:send let:>,<:inspectm:>,
<* 16 *> <:wait let:>,<:exit wl :>,<:send mes:>,<:wait buf:>,<:exit wb :>,
<* 21 *> <:rel buf :>,<:exit    :>,<:answer  :>,<:answer a:>,<:message :>,
<* 26 *> <:timer sc:>,<:mes arri:>,<:att answ:>,<:tem mess:>,<:rem ans :>,
<* 31 *> <:creat co:>,<:remov co:>,<:g open  :>,<:g lock  :>,<:exit gl :>,
<* 36 *> <:wait sle:>,<:exit wsl:>,<:get buf :>,<:        :>,<:        :>,
<* 41 *> <:        :>,<:        :>,<:        :>,<:        :>,<:        :>,
<* 46 *> <:        :>,<:        :>,<:        :>,<:        :>,<:crt link:>,
<* 51 *> <:rem link:>,<:adj link:>,<:put op  :>,<:check op:>,<:releasop:>,
<* 56 *> <:get spoo:>,<:get free:>,<:adjust  :>,<:rel_cte :>,<:seg io  :>,
<* 61 *> <:look nam:>,<:in mcl n:>,<:rem mcln:>,<:get mseg:>,<:        :>,
<* 66 *> <:next    :>,<:c spoola:>,<:r spoola:>,<:seg ispo:>,<:ext spoo:>,
<* 71 *> <:cut area:>,<:move    :>,<:w-error :>,<:        :>,<:new term:>,
<* 76 *> <:searchth:>,<:in sess :>,<:out sess:>,<:unlink s:>,<:get tdat:>,
<* 81 *> <:link th :>,<:ulink th:>,<:link ph :>,<:ulink ph:>,<:        :>,
<* 86 *> <:        :>,<:        :>,<:        :>,<:        :>,<:        :>,
<* 91 *> <:        :>,<:        :>,<:        :>,<:        :>,<:        :>,
<* 96 *> <:        :>,<:        :>,<:        :>,<:get abs :>,<:        :>,
<* 101*> <:        :>,<:push    :>,<:pop     :>,<:crt mcl :>,<:var addr:>,
<* 106*> <:alloc va:>,<:del var :>,<:set var :>,<:wait    :>,<:wait op :>,
<* 111*> <:wait ter:>,<:tasc mes:>,<:s-att   :>,<:rem ph  :>,<:rem th l:>,
<* 116*> <:crt user:>,<:crt ph  :>,<:mcl exit:>,<:term th :>,<:direct  :>,
<* 121*> <:input op:>,<:output o:>,<:sim in  :>,<:ctrl op :>,<:cont mcl:>,
<* 126*> <:answer i:>,<:f8000 in:>,<:send f8 :>,<:f8 read :>,<:term s-w:>,
<* 131*> <:signon  :>,<:to_from :>,<:        :>,<:        :>,<:        :>,
<* 136*> <:        :>,<:        :>,<:        :>,<:        :>,<:init_td :>,
<* 141*> <:c_read  :>,<:c_write :>,<:get t ad:>,<:comp txt:>,<:move txt:>,
<* 146*> <:outtext :>,<:c_outtxt:>,<:write   :>,<:erase   :>,<:cursor  :>,
<* 151*> <:in_text :>,<:rd_char :>,<:rd pass :>,<:strip nl:>,<:strip sp:>,
<* 156*> <:        :>,<:        :>,<:        :>,<:        :>,<:run mcl :>,
<* 161*> <:end_th  :>,<:ex err 1:>,<:ex err 2:>,<:ex err 3:>,<:        :>,
<* 166*> <:        :>,<:        :>,<:        :>,<:        :>,<:next op :>,
<* 171*> <:        :>,<:        :>,<:        :>,<:        :>,<:        :>,
<* 176*> <:        :>,<:        :>,<:        :>,<:        :>,<:        :>,
<* 181*> <:lette.th:>,<:sear.th :>,<:op_mes  :>,<:crt ph  :>,<:        :>,
<* 186*> <:        :>,<:start rm:>,<:        :>,<:        :>,<:        :>,
<* 191*> <:        :>,<:        :>,<:        :>,<:        :>,<:        :>,
<* 196*> <:        :>,<:        :>,<:        :>,<:        :>,<:i sysm  :>,
<* 201*> <:in strg :>,<:in point:>,<:gen sysm:>,<:w sysm  :>,<:find ses:>,
<* 206*> <:search p:>,<:new pass:>,<:new ses :>,<:rem ses :>,<:brk ses :>,
<* 211*> <:kill out:>,<:send att:>,<:get char:>,<:        :>,<:        :>,
<* 216*> <:        :>,<:        :>,<:        :>,<:start sm:>,<:goto ac :>));

write(out,<:fil navn : :>);
setposition(out,0,0);
readstring(in,foname,1);
open(z,4,foname,0);
monitor(42,z,i,tail);
top_seg:=tail(1);
min_time:= (extend (-1)) shift (-1);
setposition(z,0,1);
for i:=1 step 1 until top_seg-1 do begin
  inrec6(z,512);
  if min_time > z.tim and z.tim<>0 then begin
    low_seg:=i;
    min_time:=z.tim;
  end;
end;

<* tæl antal test records *>
setposition(z,0,0);
rest:=inrec6(z,4);
segno:=0;
count: 
    next(false);
    maxno:=maxno+1;
    if type<>1023 then goto count;

setposition(z,0,0);
rest:=inrec6(z,4);
segno:=0;
next(true);
write(out,<:<10>Antal test records = :>,<< ddd>,maxno,<:<10>:>);

repeat
  initmaske;
  write(out,<:Fra  :>);  setposition(out,0,0);
  read(in,first_rec);
  if first_rec<1 then first_rec:=1;
  write(out,<:Til  :>);  setposition(out,0,0);
  read(in,last_rec);

  skip(first_rec-1);
  for q:=first_rec step 1 until last_rec do begin
    next(false);
    if masker = 0 then
      skriv(out)
    else
    for x:=1 step 1 until masker do begin
      if maske(x,1) then begin
        if m_val(x,1) <> type then goto skrv;
      end;
      if maske(x,2) then begin
        if m_val(x,2) <> coru extract 12 then goto skrv;
      end;
      if maske(x,3) then begin
        if m_val(x,3) <> fourth then goto skrv;
      end;
      i:=0;
      for p:=4 step 1 until 10 do begin
        i:=i+2;
        if maske(x,p) then begin
          if (m_val(x,p) <> z.i) then goto skrv;
        end;
      end;
      skriv(out);
skrv:
    end;
    if type = 1023 then goto try_next;
  end;
try_next:
until false;
FIN:
end;  


 
▶EOF◀