{ File: datasucc.pas }

{ Scopo: primo esempio significativo di uso di if-then-else annidati e
         case-of }

program DataSuccessiva;
{ Legge giorno, mese ed anno di una data e determina la data del giorno
  successivo. }

var
  giorno          : 1..31;
  mese            : 1..12;
  anno            : 1900..2000;
  giorni_del_mese : 28..31;

begin
  { lettura della data }
  write('Data (giorno, mese, anno) ? ');
  readln(giorno, mese, anno);
  writeln;
  write('Giorno successivo al', giorno:3, '/', mese:2, '/', anno:4, ' e'' ');

  { calcola il numero dei giorni del mese }
  case mese of
    1,3,5,7,8,10,12 : giorni_del_mese := 31;
    4,6,9,11        : giorni_del_mese := 30;
    2               : if (anno mod 4 = 0) and (anno <> 1900) then
                        giorni_del_mese := 29
                      else
                        giorni_del_mese := 28
  end; { case }

  { aggiorna la data del mese successivo }
  if giorno = giorni_del_mese then
  begin
    giorno := 1;
    if mese = 12 then
    begin
      mese := 1;
      anno := anno + 1
    end
    else
      mese := mese + 1
  end
  else
    giorno := giorno + 1;

  { stampa la data aggiornata }
  writeln(giorno:2, '/', mese:2, '/', anno:4)
end. { DataSuccessiva }