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

⟦0a60dc365⟧ TextFile

    Length: 8448 (0x2100)
    Types: TextFile
    Names: »kattekst«

Derivation

└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ.  Detaljer om "HC8000" projekt.
    └─⟦0364f57e3⟧ 
        └─⟦this⟧ »kattekst« 
└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ.
    └─⟦4334b4c0b⟧ 
        └─⟦this⟧ »kattekst« 

TextFile

begin <* program, niveau 1 *>
 integer lbrug-inf-kons; <* den samlet længde målt i ord *>
                         <* af de informationskonstanter *>
                         <* brugeren kan ændre           *>
 integer lbrug-kpost-felt;<* antal felt-typer, som brugeren *>
                          <* kan ændre i en katalogpost     *>
 integer anttilstande;    <* antal tilstande i aktions      *>
                          <*tabellen                        *>
 integer antinputordre;   <* antal inputordre i aktions     *>
                          <* tabellen                       *>

<* index til brug ved opslag, efter felter i kpfl arrayet   *>
integer type-index, titel-index, for-index, bib-index;
integer res-index, ankomst-index, journal-index, stikor-index;
integer beskriv-index, ord-index, søgemængde-index, mængdestr-index;

procedure init;
begin
  integer i,j,k,n;
  <*indlæs fil-information*>
  open(filinf,4,brugerfil,0);
  setposition(filinf,0,0);
  inrec6(filinf, lfilinf*4);
  nykatstart:=gfkatstart:=filinf.kikatstart;
  nykatstr:=gfkatstr:=filinf.kikatstr;
  nyinvstart:=gfinvstart:=filinf.kiinvstart;
  for i:=1 step 1 until lbrug-inf-kons do
  begin
   k-ny-fl(i):= k-gf-fl(i):= filinf.kiarraystart(i)
  end;
  close(filinf, true);
  ledigkatpost:=gfkatstr+1;

<*initialisering af katalogpost *>
   slettet:=i:=1;
   udvidet:=i:=i+1;
   mor:=i:= i+1;
        i:= i+1;
   moradr:=i:= i+2;
   barnadr:=i:=i+2;
   forantal:=i:= i+2;
   stiktegnantal:=i:=i+2;

   k:=kpostarraystart:=i;
   j:=1;
    for i:=1 step 1 until lbrug-kpost-felt do
    begin
     n:=1;
     if i:= for-index then begin n:=3; end;
     j:= j+n*k-gf-fl(i);
     k:=k+n*k-gf-fl(i);
     kpost(i):= j-n*k-gf-fil(i);
    end;
    dobbeltordlængde(gf-ktp-længde,k);
<* udregning af konstanter til brug ved læsning og skrivning *>
<* katalogposter                                             *>
    post-skriv-læs-konstanter(gf-ktp-længde,gf-ktp-antal,gfktp-seg);

<*initialiserer værdilisten*>
   open(værinf,4,værdifil,0);
   setposition(værinf,0,0);
   inrec6(værinf, lværinf*4);
   vfværførst :=værinf.viførst;
   vfværantal:= værinf.viantal;
   close(værinf,true);

<*initialisering af poster i værdifilen*>
    vvford:=i:=0;
            i:=i+4*gford;
    vfantal:=i:=i+2;;
    vfref:=i:=i+2;
    dobbeltordlængde(vf-vær-længde,i);
    post-skriv-læs-konstanter(vf-vær-længde,vf-vær-antal,vf-vær-seg);
end

procedure skriv-ny-ga-katpost(nr,buffer);
integer nr;
long array buffer;
<* skriver en katalog-post på bruger filen eller den *>
<* temporere nye brugerfil                           *>
<* proceduren bruges ved udskrivning af ny moderposter*>
<* og postudvidelser *>

begin
if nr < gfkatstr then
 begin
<*posten skal lægges i brugerfilen*>
 skriv-katalogpost(nr,gfkatstart, buffer);
 end;
 else
 begin
<* posten ligger i ny brugerfil*>
 skriv-nykatalogpost(nr-gfkatstr, 0,buffer);
 end;
end;

procedure indsæt-i-array(resultat,værdiarray,værlængde);
value reslængde, værdiarray,værlængde;
long array resultat;<*længde=værdilængde/6*>
integer array værdiarray;
integer værlængde;

<*tegnet i hvert enkelt værdiarray-element pakkes*>
<*og gemmes i resultat(arrayet)*>

begin
integer i,j;
j:=1;
i:=1;
while i < værlængde do
  begin
resultat(j):= pak(værdiarray(i),
                  værdiarray(i+1),
                  værdiarray(i+2),
                  værdiarray(i+3),
                  værdiarray(i+4),
                  værdiarray(i+5));
j:=j+1;
i:=i+6;
end;<*while*>
end;
long procedure pak(val1,val2,val3,val4,val5,val6);
value val1,val2,val3,val3,val4,val5,val6;
integer val1,val2, val3,val4,val4,val5,val6;
<*pakker tegnene i de 6 parametre i et long*>
<*således at val1 ligger i de først 8 bit*>

begin
long dummy;
dummy:=0;
pak:=dummy shift 8 add val1 shift 8 add val2
     shift 8 add val3 shift 8 add val4 shift 8
     add val5 shift 8 add val6;
end;

procedure pakud(fra,val1,val2,val3,val4,val5,val6);
value fra;
long fra;
integer val1,val2,val3,val4,val5,val6;
<* pakker tegn ud fra variavler fra, således at val1 *>
<*indeholder tegnet i de første 8 bit val2 tegnet i de næste 8 bit*>
begin
val1:=fra shift(-40)extract 8
val2:=fra shift(-32)extract 8;
val3:=fra shift(-24)extract 8;
val4:=fra shift(-16)extract 8;
val5:=fra shift(-8) extract 8;
val6:=fra extract 8;
end;
procedure skip-linie-rest;
<*skipper resten af en linie på in zonen*>
begin
integer ch;
read(in,ch);
whilech <>'nl' do
  begin
ad(in,ch);
  end;
end;

boolean procedure læsheltal(val);
integer val;
begin
skipblanke;
if read(in,val) < 0 then
  begin
  læsheltel:=false;
  end;
  else
begin
 læsheltal:=true;
end;
end;

procedure skipblanke;
 begin
integer ch;
readch(in,ch);
while ch='sp' do
begin
  readchar(in,ch);
end;
repeatchar(in);
end;

integer procedure ordreindentifikation(ordretekst,antinputordre);
value ordretekst,antinputordre;
long array ordretekst;
integer antinputordre;
begin
  integer nr,i
  nr:=antinputordre+1;
  for i:=1 step1 until antinputordre do
  begin
    if ordretekst(1)= ordretabel(i) then nr:=i;
  end;
ordreindentifikation:=nr
end;
procedure dobbeltordlængde(resultal,i);
integer resultat,i;
<*resultat sættes lig i delt med 4 og derefter*>
<*hvie nødvendigt rundet op*>
begin
integerj; <*hjælpevariabel*>
j:=i;
j:=i//4
if i mod 4 > 0 then
begin
  j:=j+1;
end;
resultat:=1;
end;

procedure læs-ny-ga-katpost(nr,buffer);
integer nr;
long array buffer;
<* indlæser en katalogpost enten fra brugerfilen eller*>
<*fra den temporerer nye brugerfil. Proceduren bruges ved *>
<*indlæsning afnyindsatte poster samt postudvidelse*>
begin
if nr < gfkatstr then
begin
  <*posten ligger i brugerfien*>
  indlæs-katalogpost(nr, gfkatstart,buffer);
end;
else
begin
   <*posten ligger i nybrugerfil*>
   indlæs-nykatalogpost(nr-gfkatstr,0,buffer);
end; <*else*>
end;

procedure post-skriv-læs-konstanter(længde, antal,iseg);
value længde;
integer længde, antal;
boolean iseg;
<*sætter iseg lig true dersom længde >størrelse af et segment*>
<*ellers false*>
<*forseg=true:angiver antal hvor mange gange(helt antal) længde*>
<*går op i størelsen af eet sement.*>
<*forseg=false: angiver antal hvor mange (helt antal) segmenter*>
der går på een kattekst▶0b◀disc4▶7f◀▶e2◀▶85◀`▶02◀disc4«bs»▶16◀«bs»▶EOF◀