* Questo programma scrive in un file a indice
* alcuni record in modalità random, visualizza il buon fine della scrittura
* o l'eventuale errore e relativo file-status.
* Quindi legge lo stesso file sequenzialmente mostrando
* come le chiavi vengano ordinate anche se inserite in disordine.
identification division.
program-id. indici.
author. Matteo Tomasulo.
environment division.
input-output section.
file-control.
select esempio assign to disk
organization is indexed
access mode is random
file status esempio-status
record key is chiave-di-record.
select reader assign to disk
organization is indexed
access mode is sequential
file status reader-status
record key is chiave-di-record-ord.
data division.
file section.
fd esempio
label record is standard
value of file-id is "test.dat".
01 rec.
02 chiave-di-record pic x(20).
02 campo pic x(30).
fd reader
label record is standard
value of file-id is "test.dat".
01 rec-2.
02 chiave-di-record-ord pic x(20).
02 campo-2 pic x(30).
working-storage section.
77 esempio-status pic xx.
77 esempio-fine pic xx.
77 reader-status pic xx.
77 reader-fine pic xx.
77 chiave-ricerca pic x(20).
procedure division.
inizio.
open output esempio.
move "Pinco Pallino" to chiave-di-record.
move "5" to campo.
write rec
invalid key
display "errore nello scrivere il primo record: "
display esempio-status
not invalid key
display "Scritto:"
display chiave-di-record
display campo
end-write.
move "Tizio Caio" to chiave-di-record.
move "8" to campo.
write rec
invalid key
display "errore nello scrivere il secondo record: "
display esempio-status
not invalid key
display "Scritto:"
display chiave-di-record
display campo
end-write.
move "Franco Calabro" to chiave-di-record.
move "10" to campo.
write rec
invalid key
display "errore nello scrivere il terzo record: "
display esempio-status
not invalid key
display "Scritto:"
display chiave-di-record
display campo
end-write.
close esempio.
open input reader.
perform leggi.
close reader.
open i-o esempio.
display " "
display "Dimmi il nome dello studente a cui cambiare il voto".
accept chiave-di-record.
read esempio key is chiave-di-record
invalid key
display "Lo studente non esiste"
not invalid key
display "Dimmi il nuovo voto: "
accept campo
rewrite rec
end-read.
close esempio.
display " ".
display "Situazione dopo modifica: ".
open input reader.
perform leggi.
stop 1.
stop run.
leggi.
read reader
at end
move "si" to reader-fine
not at end
move "no" to reader-fine
end-read.
display " "
perform leggi-sequenzialmente until reader-fine = "si".
leggi-sequenzialmente.
display "Letto: "
display chiave-di-record-ord.
display campo-2.
read reader at end move "si" to reader-fine.