program mehubaari(input, output);

   const eka = 1;
   type nimet = string[60]; {epästandardi turbo-pascal piirre}

{---------tähän jonon tyyppimäärittelyt: --------------------}


{------------------------------------------------------------}

   var komento : char;

{---------tähän jonon muuttujat: ----------------------------}
       jono : array [1..10] of nimet;
       vika : 0..10;
       turva : file of nimet;

{---------tähän jonon operaatiot: ---------------------------}

procedure Jonoon(N: nimet);
   begin
      if vika >= 10 then
         writeln('Jonossa ei ole tilaa! Tule myöhemmin uudelleen.')
      else
         begin
            vika := vika + 1;
            jono[vika] := N
         end;
   end;

procedure Jonosta(var N: nimet);
  {Jos jono on tyhjä, asetetaan N tyhjäksi merkkijonoksi}
   var i : integer;
   begin
       if vika = 0 then
          N := ''
       else
          begin
             N := jono[eka];
             for i := eka to vika - 1 do
                jono[i] := jono[i+1];
             vika := vika-1;
          end;
   end;

procedure LuoTyhjaJono;
   begin
      vika := 0;
   end;


procedure Turvaan;
   var i : integer;
   begin
      assign(turva, 'a:jono.tur'); { TURBOA }
      rewrite(turva);
      for i := eka to vika do
         write(turva, jono[i]);
      close(turva);                 {turboa}
   end;

procedure Turvasta;
   begin
      assign(turva, 'a:jono.tur'); { turboa }
      reset(turva);
      if eof(turva) then
         LuoTyhjaJono
      else
         begin
             vika := 0;
             while not eof(turva) do
                begin
                   vika := vika + 1;
                   read(turva, jono[vika]);
                end;
         end;
      close(turva);                {turboa}
   end;




{---------tähän päättyy jonon toteutus-----------------------------}


   procedure TulostaValikko;
      begin
         writeln; writeln; writeln;
         writeln('  MEHUBAARIN JONOTUS');
         writeln('  ******************');
         writeln; writeln;
         writeln('  j) lisää jonottaja');
         writeln('  p) palvele ensimmäistä');
         writeln('  l) loppu');
         writeln;
      end;

   procedure Lisays;
      var nimi : nimet;
      begin
          repeat
             write(' Asiakkaan nimi? ');
             readln(nimi);
             if nimi = '' then
                writeln('Tyhjä nimi ei kelpaa, anna uudelleen!');
          until nimi <> '';
          Jonoon(nimi);
      end;

   procedure Palvelu;
      var nimi : nimet;
      begin
         Jonosta(nimi);
         writeln;
         if nimi <> '' then
            writeln('NYT PALVELLAAN HENKILÖÄ NIMELTÄ >>> ', nimi, '<<<')
         else
            writeln('KETÄÄN EI OLE JONOSSA!! (Lepää vaikka!)');
      end;

   begin {PÄÄOHJELMA}
      Turvasta;
      repeat
         TulostaValikko;
         readln(komento);
         if komento in ['j', 'J', 'p', 'P', 'l', 'L'] then
            case komento of
               'j', 'J' : Lisays;
               'p', 'P' : Palvelu;
               'l', 'L' : ;
            end;
      until komento in ['l', 'L'];
      Turvaan;
   end.

