- Started implementing file I/O, but it's very rudimentary at this point (not
released yet - only in the CVS code)
- Removed all the jasmin codegen stuff since we can emit bytecode directly
- Improved formatted READ/WRITE by incorporating the Formatter package
- Implemented ASSIGN and assigned GOTO statements
- Can now optionally generate the Java code as strictfp (default is not strict)
- Now supports unlabeled DO loops
- Support for Hollerith constants in FORMAT statements
- Only scalars that are determined to be modified are wrapped in objects
- Very basic handling of EQUIVALENCE
- COMMON now supported
- Handling of GOTO statements!
- Can now handle passing functions as arguments
- Elementary loop detection for while loops
- DATA and SAVE statements are now supported
- Lexer cleaned up and extended to handle character strings and substrings
- Source files containing multiple functions/subroutines will now translate
Since ANSI Fortran 77 does not specify while loops, all such constructions in the BLAS and LAPACK are implemented with goto statements. Since the JVM has built-in goto branching, f2j easily implements all goto statements in the Fortran source by directly generating bytecode. However, we also have a scheme to translate Fortran GOTO statements into Java source code, which involves some post-processing of the generated code.
Complex numbers will most likely have to go directly to bytecode for implementation on the JVM stack. Using the object-oriented methods for complex arithmetic would likely produce unacceptable overhead for large scale numerical problems.