{ File: invinp2.pas }

program InversioneInput2;

{ Qui la procedura di attivazione ha due parametri; con numCar
  l'unita' chiamante indica il numero di caratteri gia' letti (0 alla prima
  attivazione).
  lung e' un parametro passato per variabile cui viene assegnato, al momento
  in cui si raggiunge la fine della stringa, il numero di caratteri letti fino
  a quel momento.

  Come cambia il carattere locale ch nelle varie attivazioni si vede
  con WATCH.  Come cambiano i parametri delle varie attivazioni si puo'
  vedere con CALL STACK (oppure ancora con una watch su numCar). }


var
  lunghezza : integer;


  procedure InvertiInput2 (numCar: integer; var lung : integer);
  var
    ch : char;

  begin
    read(ch);
    if ch <> '.' then
      InvertiInput2(numCar + 1, lung)
    else
      lung := numCar;
    write(ch)
  end; { InvertiInput2 }


begin { InversioneInput2 }
  writeln('stringa terminata da ''.'', prego:');
  InvertiInput2(0, lunghezza);
  writeln;
  writeln('la lunghezza della stringa, escluso ''.'', e'' ', lunghezza : 2)
end. { InversioneInput2 }