     procedure Dial_Number;
          const
               Tone     : String[4] = 'ATDT';    {Hayes dial with tone}
               Pulse    : String[3] = 'ATDP';    {Hayes dial with pulse}
          var
               Ch       : Char;
               Tel_No   : String[30];            {Hayes commands & number}
               Del_Time : String[4];             {Delay time for re-dial}
               Time     : Integer;               {Integer of Del_Time}
               Result   : Integer;               {Used in Val function}
          begin
               With Individual Do                {The record variables}
               begin
                    Write_Status('{H}ome Phone   ** TURN MODEM ON **   {B}usiness Phone');
                    repeat                       {Force read of H or B}
                        read(Kbd,Ch);
                    until Ch in ['H','h','B','b'];
                    case Ch of                   {Add appropriate prefix}
                        'H','h' : Tel_No := Tone + Home_Phone;
                        'B','b' : Tel_No := Tone + Business_Phone;
                    end;
                    If not Init then
                         begin
                              Write_Status('Initializing Modem ...');
                              Initialize_Modem;
                              Init := True
                         end;
                    Write_Status('Dialing ...');
                    Out_Modem (Tel_No + CR);     {Send number out modem}
                    Write_Status('{H}ang-Up           {C}ontinuous Re-dial');
                    Repeat                       {Force read of H or C}
                         Read(Kbd,Ch)
                    Until Ch in ['H','h','C','c'];
                    Case Ch of
                         'H','h' : begin
                                        Write_Status('Disconnecting ...');
                                        Disconnect_Modem {If H then hang-up}
                                   end;
                         'C','c' : begin
                                        Write_Status('Enter Number of Seconds to Delay Before Re-Dial   {<CR>} = 15 sec.  ');
                                        Read (Del_Time);  {Read delay time}
                                        If Del_Time = '' then Del_Time := '15';
                                        Val(Del_Time,Time,Result); {Integer}
                                        Disconnect_Modem;  {Hang-up}
                                        Write_Status('{ANY KEY} to Stop Dialing');
                                        repeat
                                             Out_Modem (Tel_No + CR);  {Dial}
                                             Delay(Time * 1000);       {Delay}
                                             Disconnect_Modem          {Hang}
                                        until KeyPressed;
                                   end
                    end
               end
          end;
