program mehubaari(input, output);

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

{---------tähän jonon tyyppimäärittelyt: --------------------}
        pointer = ^tie;
        tie     = record
                     ni : nimet;
                     li : pointer;
                  end;
{------------------------------------------------------------}

   var komento : char;

{---------tähän jonon muuttujat: ----------------------------}
       eka, vika : pointer;

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

procedure Jonoon(N: nimet);
   var apu : pointer;
   begin
      new(apu);
      apu^.ni := N;
      apu^.li := nil;
      if vika = nil then
         eka  := apu
      else
         vika^.li := apu;
      vika := apu;
   end;

procedure Jonosta(var N: nimet);
  {Jos jono on tyhjä, asetetaan N tyhjäksi merkkijonoksi}
   var apu : pointer;
   begin
       if eka = nil then
          N := ''
       else
          begin
             N := eka^.ni;
             apu := eka;
             eka := eka^.li;
             if eka = nil then
                vika := nil;
             dispose(apu);
          end
   end;

procedure LuoTyhjaJono;
   begin
      eka  := nil;
      vika := nil
   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}
      LuoTyhjaJono;
      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'];
   end.

