PROGRAM Studenti;
{Anna Lorusso
Versione 1.0
27 novembre 2003}
(* Questo programma restituisce un file con i dati anagrafici relativi
agli studenti del corso di laurea con codice 516.
Mostra a video il numero totale degli studenti frequentanti tale corso.*)
USES Crt;
CONST
CorsoX = 516;
Ind1 = 'C:\DOCUME~1\ANNA\PROGRA~1\STUDEN~1.TXT';
Ind2 = 'C:\DOCUME~1\ANNA\PROGRA~1\STUDEN~2.TXT';
Ind3 = 'C:\DOCUME~1\ANNA\PROGRA~1\STUDEN~3.TXT';
IndOut = 'C:\DOCUME~1\ANNA\Progra~1\SCIENZE.TXT';
VAR
Alfa,
Beta: Text;
Scelta: Integer;
PROCEDURE ScriviFile;
VAR Riga1,
Riga3: String;
Corso,
Anno,
Totale: Integer;
BEGIN
Totale:=0;
(* Assegnazione del file di output *)
Assign (Beta,IndOut);
(* Apro *)
Reset (Alfa);
Rewrite (Beta);
WHILE NOT eof (Alfa) DO
BEGIN
ReadLn (Alfa,(Riga1));
Read (Alfa,(Corso));
Read (Alfa, (Anno));
ReadLn (Alfa,(Riga3));
IF Corso = CorsoX THEN
BEGIN (* Scrittura sul file di input *)
Totale := Totale+1;
WriteLn (Beta,Riga1:30);
WriteLn (Beta,(Corso):3,(Anno):1);
WriteLn (Beta,(Riga3):30)
END (* end if *)
END; (* end while *)
WriteLn ('Totale = ', Totale);
ReadLn;
Close (Alfa);
Close (Beta)
END; (* ScriviFile *)
PROCEDURE Assegna1;
BEGIN
Assign (Alfa,Ind1);
ScriviFile
END; (* Assegna1 *)
PROCEDURE Assegna2;
BEGIN
Assign (Alfa,Ind2);
ScriviFile
END; (* Assegna1 *)
PROCEDURE Assegna3;
BEGIN
Assign (Alfa,Ind3);
ScriviFile
END; (* Assegna1 *)
BEGIN {Studenti}
(* Assegnazone del file di input scelto all' indirizzo corrispondente *)
WriteLn ('Digita il nome del file di input da scegliere fra i seguenti');
WriteLn ('1 - Studenti1;');
WriteLn ('2 - Studenti2;');
WriteLn ('3 - Studenti3.');
Readln (Scelta);
CASE Scelta OF
1: Assegna1;
2: Assegna2;
3: Assegna3;
ELSE
WriteLn ('Nome file inserito non valido')
END;
ReadLn
END. (* Studenti *)