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