|
|
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: 8448 (0x2100)
Types: TextFile
Names: »kattekst«
└─⟦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«
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◀