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 - download

⟦f04bf5ddd⟧ TextFile

    Length: 3840 (0xf00)
    Types: TextFile
    Names: »vistx       «

Derivation

└─⟦110021343⟧ Bits:30007476 RC8000 Backup tape fra HT's bus-radio system
    └─⟦a957ba283⟧ 
        └─ ⟦this⟧ »vistx       « 

TextFile

vis=set 1
vis=algol connect.no
begin
message vis side 1. cl 920220;
<* vis udskriver en eller flere angivne katalogindgange

   kald:
                                      *
     (vis/wis) (<katalogindgangsnavn>)  
                                      1

   hvis programmet kaldes under navnet 'wis' skrives tail som 24-bit integers.

   procedurekald:

     fpparam,
     skrivindg,

*>
\f

message vis side 2;
begin

integer array navn1,navn,tekst(1:4),ia,ib(1:32);
integer array field indgang;
integer afsæt, katstørrelse,antalnøgler,partitioner,segmno,
        værdi,værdi1,sep,sep1,nr,i,j,j1,k;
integer field ant_indg;
boolean wis, fundet;
boolean array field baf;
long nøglesum;
long array prognavn(1:2), linie(1:30);
long array field enavn,laf0,laf;
real array field raf;
zone z(1,1,stderror),zcat(128,1,stderror);

afsæt:=1;
i:=system(4,1,prognavn);           
if i <> (6 shift 12 +10) then begin afsæt:=0;i:=system(4,0,prognavn);end;
wis:=prognavn(1)=long<:wis:>;
\f

message vis side 3;

  open(zcat,4,<:catalog:>,0);
  monitor(42,zcat,0,ia);
  katstørrelse:=ia(1);
  antalnøgler:=ia(8);
  partitioner:=ia(1)//ia(8);
  ant_indg:=512;
  enavn:=6;
  nr:=afsæt+1;
  laf0:=laf:=raf:=0;
  baf:=1;
  trapmode:=1 shift 10;
  for j:=fpparam(nr,værdi,navn,sep) while j extract 12 <> 1 do
  begin
    nr:=nr+1;
    j1:=fpparam(nr,værdi1,navn1,sep1);
<*
write(out,<:<10>!!! navn,sep,navn1,sep1: :>,
          navn.laf,sep,sp,2,navn1.laf,sep1);
*>
    if sep<>61<*=*> and sep<>46<*.*> then
    begin
      if j extract 12<> 4 <*navn*> then
        write(out,<:*** vis param: :>,case j extract 12 of
              (<:empty:>,<:separator:>,<:integer:>),
              << bdd>,case j extract 12 of (0,sep,værdi),nl,1)
      else
      begin
        integer  i, j, k, nr, ant;

<*      j:=hashnøgle(navn.laf0,katstørrelse);       *>
        nøglesum:=navn.laf0(1)+navn.laf0(2);
        nøglesum:= nøglesum shift (-24) + nøglesum extract 24;
        nøglesum:=nøglesum extract 24 +
                  (nøglesum shift (-12) shift 36)//(extend 1 shift 36);
        nøglesum:=nøglesum shift 24 shift (-24);
        segmno:=nøglesum mod katstørrelse;
        j:=segmno mod antalnøgler;
        
        setposition(zcat,0,segmno);
        inrec6(zcat,512);
        ant:=zcat.ant_indg;
        fundet:=false;
        nr:=k:=0;
        while nr<ant do
        begin
          indgang:=k*34;
          if zcat.indgang(1) shift(-3) extract 9 = j then
          begin
            if zcat.indgang.enavn(1)=navn.laf0(1) and
               zcat.indgang.enavn(2)=navn.laf0(2) then
            begin
              skrivindg(linie,zcat.indgang,0,wis);
              put_char(linie,81,0,6);
              write(out,linie,"nl",1);
              fundet:=true;
            end;
            nr:=nr+1;
          end;
          k:=k+1;
          if k>15 then
          begin
            k:=0;
            getposition(zcat,0,i);
            if i=katstørrelse-1 then setposition(zcat,0,0);
            inrec6(zcat,512);
          end;
        end;
        if not fundet then
          write(out,<:*** vis: :>,navn,<: ikke fundet<10>:>);
      end;
    end;
  end;
end;
end;
▶EOF◀