De rewrite-opdracht vervangt een bestaand record in een bestand. Om de rewrite-opdracht te kunnen gebruiken moet het bestand geopend zijn voor i-o.
onthoud
Bij een indexed file hoeft de lengte van het teruggeschreven record niet even lang te zijn als het oorspronkelijke record.
Bij een sequential file was dat wel een eis. Bij een indexed bestand kan de computer het nieuwe record op een andere plaats opbergen, zolang hij dat maar in de indextabellen bijhoudt.
Het gebruik van de rewrite-opdracht is verschillend bij access mode is sequential enerzijds en bij access mode is random en access mode is dynamic anderzijds.
Bij access sequential moet aan de rewrite-opdracht een geslaagde read-opdracht vooraf zijn gegaan. We mogen de waarde van het sleutelveld niet wijzigen. Invalid key treedt op als bij het terugschrijven blijkt dat het sleutelveld niet gelijk is aan het sleutelveld van het laatst gelezen record.
Bij access random en access dynamic kijkt de computer naar de inhoud van het sleutelveld. De waarde van het sleutelveld bepaalt welk record wordt vervangen. Het is niet verplicht om eerst een record te lezen. Vaak zal men dat toch doen, want bij het muteren van een record gaat het meestal om de inhoud van één veld. De overige velden blijven dan ongewijzigd. Invalid key treedt op als het sleutelveld een waarde bevat die niet in een record van het bestand voorkomt. Het gaat bij rewrite immers om terugschrijven. Als het een nieuw record is, dan moeten we de write-opdracht gebruiken.
In alle gevallen van het rewrite-statement geldt dat de invalid-key-optie en end-rewrite verplicht zijn. Uit de formaatbeschrijving in aanhangsel A2 blijkt verder dat we de mogelijkheid hebben om not invalid key te schrijven.
Net zoals bij de write-opdracht geldt dat de gegevens niet meer in het record-gebied beschikbaar zijn na een rewrite-opdracht.
Voorbeeld van een rewrite-opdracht:
display "geef het kenteken van het te vervangen record" accept kenteken display "wat is de rest van het record?" accept rest rewrite autorecord invalid key display "kenteken niet aanwezig" end-rewrite