Benny Löfgren SYSOP
<2615>
· Text 2226 · w8 · kommentar
1986-08-06 13:07
Ärende: Direktfiler på ABC80, eller CLOSEs vara eller inte vara
För att klargöra en del saker i den diskussionen så kan jag säga att
man ABSOLUT INTE kan vara säker på att man inte behöver göra CLOSE bara
för att man öppnat filen med OPEN och inte med PREPARE. Ej heller har
det någon betydelse om det är en direktfile eller en sekvensiell fil.
Man *MÅSTE* göra CLOSE i alla lägen (enda undantaget är egentligen om
man bara läser från filen) för att säkerställa filens och diskens
integritet. Det är som Kalle nämnde tidigar så att om man skriver en
sektor som ligger EFTER filslutet så allokeras det ett antal sektorer,
som är en multipel av 32, i bitmappen. Om man inte gör CLOSE så återlämnas
aldrig dessa sektorer, utan man får dras med dem. Ett annat exempel i
sammanhanget är följande: Ponera att man har en fil öppen, och så gör
man KILL på filen någon annan stans i programmet. Om man nu skriver en
ny post i filen man tror sig ha öppnat så kommer den att hamna på ett
nu ledigmarkerat ställe på skivan. Detta gör i och för sig ingenting,
men när man får slut på det segment man befinner sig i och måste rådfråga
bitmappen efter ett annat så kommer man sannolikt att få sig tilldelat
det genom KILL friställda utrymmet. När man sedan gör nästa skrivning
så skriver man över RIB:en, och då är det rätt kört. Nästa gång man vill
åt RIB:en, t ex för att man flyttat sig i filen så kommer man att läsa
skräp. Skulle det inte gå så långt så har man ändå allokerat en massa
dött utrymme som man inte kan friställa, det finns ju ingen fil som pekar
på datat längre!