My form does not show any action on clicking the submit button
Something like this should work:

/**
 * Implements hook_block_info
 */
function loan_calculator_block_info() {
  // This example comes from node.module.
  $blocks['loan_calculator'] = array(
    'info' =&gt; t('Loan Calculator'), 
    'cache' =&gt; DRUPAL_NO_CACHE
  );
  return $blocks;
}

/**
 * Implements hook_block_view
 */
function loan_calculator_block_view($delta = '') {
    switch ($delta) {
      case 'loan_calculator':
        $block['subject'] = t('Loan Calculator');
        $block['content'] = drupal_get_form('loan_calculator_calculator_form');
    return $block;
    break;
  }
}

/**
 * Form builder
 */
function loan_calculator_calculator_form(){
  $month = range(1 , 12);
  $form['amount'] = array(
    '#title' =&gt; t('Amount'),
    '#required' =&gt; TRUE, 
    '#type' =&gt; 'textfield',
    '#element_validate' =&gt; array('element_validate_number'),
  );
  $form['duration'] = array(
    '#title' =&gt; t('Duration (Months)'),
    '#required' =&gt; TRUE, 
    '#type' =&gt; 'select',
    '#options' =&gt; $month
  );
  $form['submit'] = array(
    '#type' =&gt; 'submit',
    '#value' =&gt; t('Submit'),
  );
  return $form;
}

/**
 * Form submit handler
 */    
function loan_calculator_calculator_form_submit($form, &amp;$form_state) {
  drupal_set_message('&lt;pre&gt;'.print_r($form_state['values'],1).'&lt;/pre&gt;');
}


Note, the renamed functions are per Drupal convention, (avoiding hook_form namespace collision), including using default submit handler. Also, no need for validate handler if amount element is required and set to numeric element validator. Tidied up a bit, should be fine but needs testing.