<?php                                                                                                                          require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");    require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");     require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");     $App     = new App();    $Nav    = new Nav();    $Menu     = new Menu();        include($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'

    $pageTitle       = "Photran - An Integrated Development Environment for Fortran";
    $pageKeywords    = "photran, fortran, ide, eclipse";
    $pageAuthor      = "Jeffrey Overbey";
    
    # Paste your HTML content between the EOHTML markers!    
    $html = <<<EOHTML

<div id="maincontent">
  <div id="midcolumn">
    <h1>$pageTitle</h1>
    
      <table style="text-align: left; width: 100%;" border="0"
 cellpadding="0" cellspacing="0">
        <tbody>
          <tr>
            <td style="text-align: justify;" valign="top">Photran
is an IDE for Fortran 77, 90, and 95 based on <a href="http://www.eclipse.org/"
 target="_blank">Eclipse</a> and
the <a href="http://www.eclipse.org/cdt/" target="_blank">CDT</a>.<br>
It includes:<br>
            <ul>
              <li>Syntax-highlighting editor</li>
              <li>CVS support</li>
              <li>GUI interface to <span style="font-style: italic;">gdb</span></li>
              <li>Makefile-based compilation</li>
              <li>Compiler error extraction</li>
              <li>Outline view</li>
              <li>Open declaration*</li>
              <li>Rename and Introduce Implicit None refactorings*</li>
            </ul>
            
            <p><small><small><i>* A project must explicitly have analysis support
            enabled for these features to work.
            <a href="refactoring.php">More Information</a></i></small></small></p>
             
            <p> <span style="font-weight: bold;">October 19, 2007</span> &bull;
Photran 4.0 beta 2, for CDT 4.0.1 and Eclipse 3.3.1, is <a href="download.php">now
available</a>.  This release includes a number of bug fixes, particularly in the
parser, more intelligent syntax highlighting.</p>

            <p><small><small><i>Photran
is being developed at the University of Illinois at
Urbana-Champaign and Los Alamos National Laboratory and is closely
involved with the <a href="http://www.eclipse.org/ptp">Parallel Tools
Platform</a>.  For further information, contact&nbsp;<a
 href="http://st-www.cs.uiuc.edu/users/johnson" target="_blank">Ralph
Johnson</a> or <a href="http://www.laputan.org/"
 target="_blank"></a><a href="http://jeff.over.bz/"
 target="_blank">Jeff Overbey</a>&nbsp;at UIUC, or
contact Craig Rasmussen at LANL.
If you have technical questions, please do <b>not</b>
send them to us directly; instead, post them to the
<a href="mailinglists.php">mailing list</a>.</i></small></small></p>
            </td>
            <td align="right" nowrap="nowrap"
 valign="top">&nbsp; &nbsp; &nbsp;
&nbsp;&nbsp;<img style="width: 382px; height: 300px;"
 alt="Screenshot of Photran 3.1 Beta 2"
 src="images/screenshot.png"><!--img
 src="http://brain.cs.uiuc.edu/photran/photran-eclipse-org-access.gif"--></td>
          </tr>
        </tbody>
      </table>
  </div>
  <div id="rightcolumn">
    <div class="sideitem">
      <h6>Incubation</h6>
      <div align="center">
        <a href="/projects/what-is-incubation.php">
          <img align="center" src="/images/egg-incubation.png" border="0" alt="Incubation" />
        </a>
      </div>
   </div>
 </div>
</div>    
EOHTML;

    # Generate the web page
    #require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/common/project-info.class.php");
    #$projectInfo = new ProjectInfo("technology.photran");
    #$projectInfo->generate_common_nav( $Nav );

    $App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
