If the method of fetching and retrieving data is pretty similar as you mention between all 60 reports. It would seem silly to create 60 controllers (+PHP files).
It seems that you are trying to solve this problem with the default rewrite router. You can add a route to the router that will automatically store your report name, and you can abstract and delegate the logic off to some report-runner-business-object-thingy.
$router = $ctrl->getRouter(); // returns a rewrite router by default
$router->addRoute(
    'reports',
    new Zend_Controller_Router_Route('reports/:report_name/:action',
                                     array('controller' => 'reports',
                                           'action' => 'view'))
);
And then something like this in your controller...
public function viewAction() {
  $report = $this->getRequest()->getParam("report_name");
  // ... check to see if report name is valid
  // ... stuff to set up for viewing report...
}
public function runAction() {
  $report = $this->getRequest()->getParam("report_name");
  // ... check to see if report name is valid
  // Go ahead and pass the array of request params, as your report might need them
  $reportRunner = new CustomReportRunner( $report, $this->getRequest()->getParams() );
  $reportRunner->run();
}
You get the point; hope this helps!