macro fill
{
  if ( Block_Stat==2 )
  {
    int i1, i2, c1, c2, cs1;
    //int Ins_Mode = Insert_Mode,
    int    OldRefresh = Refresh;
    //    Old_P_B = Persistent_Blocks;

    str fillchar=copy(parse_str("/C=",mparm_str),1,1);
    Push_Undo;
    i1=Block_line1;
    i2=Block_line2;
    cs1=c1=Block_Col1;
    c2=Block_col2;
    Refresh=0;
    //Insert_Mode=0;
    //Persistent_Blocks=1;
    Working;
    Mark_Pos;
    while ( fillchar=='' )
    {
      return_str='';
#ifdef Windows
      rm('querybox /T=Enter a Character'+
         '/P=Enter the character to fill the block with:'+
         '/W=3/ML=1');
#else
      rm('querybox /T=Enter a Character'+
         '/P=Enter the character to fill the block with:'+
         '/W=1/ML=1');
#endif
      fillchar=return_str;
      if ( !return_int )
      {
        goto exit;
      }
    }
    do
    {
      goto_line(i1);
      goto_col(cs1);
      for ( c1=cs1;c1<=c2;c1++ )
        text (fillchar);
      i1++;
    } while ( i1<=i2 );

exit:
    goto_mark;
    pop_undo;
    Refresh=OldRefresh;
    //Insert_Mode=Ins_Mode;
    //Persistent_Blocks=Old_p_b;
    block_off;
    Redraw;

  }
  else
  {
    Make_Message('Columnar block not marked.');
    beep;
  }

}
