program Meu_Primeiro_Tipo_Procedural;
      { Turbo Pascal 7 source        }
      { Delphi Source                }
      { Joao Paulo Schwarz Schuler   }
      { http://www.schulers.com/jpss }
      
      type TBomProc = procedure;
      { Uma variavel do tipo TBomProc armazenara pontos
      de entrada (entry points) de procedimentos. De certa
      forma, uma variavel do tipo procedural pode ser
      "executada" }
      
      procedure BomDia;
      begin
      WriteLn('Bom Dia');
      end;
      
      procedure BoaNoite;
      begin
      WriteLn('Boa Noite');
      end;
      
      var Bom : TBomProc;  { variavel do tipo TBomProc ( procedural ) }
      
      begin { of program }
      Bom:=BomDia; { Bom armazena o ponto de entrada de BomDia }
      Bom; { executa BomDia }
      Bom:=BoaNoite;
      Bom; { executa BoaNoite }
      end. { of program }