VAST/77to90


Fortran 77 to 90 Translator

VAST/77to90 from Pacific-Sierra Research (PSR) is a Fortran 77 to Fortran 90 translator that allows you to upgrade your existing Fortran 77 programs to a higher level. Whether you are just learning to write Fortran 90 programs or have already become a Fortran 90 expert, you will find that VAST/77to90 is the right tool to enhance your applications.

Fortran 77 to Fortran 90

With VAST/77to90 you can easily update all your existing Fortran 77 programs to clean and efficient Fortran 90. This is much more than a source form reformatter. For example,VAST/77to90's sophisticated Fortran 90 capability provides automatic generation of multi-dimensional array syntax. Developed over many years in PSR's VAST-2 product line, this capability was first delivered to users in 1985, and has been used extensively by many computer manufacturers. Some of the conversions performed by VAST/77to90:

  • Generation of new source form
  • Removal of obsolete features
  • Elimination or reduction of GOTOs and labels
  • Generation of array syntax in place of loops
  • Creation of MODULEs from COMMONs
  • Automatic generation of interface blocks
  • Fortran "lint" diagnostics

For an independent review of VAST/77to90's superior Fortran 77 to Fortran 90 conversion capabilities, please look at the in-depth article Automatic Translation of Fortran 77 to Fortran 90 Using VAST-90, which was published in the July/August 1993 issue of Fortran Journal.

How is VAST/77to90 used?

VAST/77to90 is easy to use. Simply provide the 77to90 executable with the name or list of names of your Fortran 77 files to be converted into Fortran 90. VAST/77to90 uses a set of documented defaults for converting your code. However, you can easily change any of the defaults in addition to modifying output format parameters to fit your specific requirements.

VAST/77to90 Example

F77 Input:

      subroutine demo(a,b,c,n)
      dimension a(n), b(n), c(n)
      common /ecom/scratch(10000)
      do 100 i = 1, n
      a(i) = b(i) + c(i)
      if ( a(i).gt.100.0) then
      a(i) = a(i) + scratch(i)
      go to 100
      endif
      c(i) = a(i)*2
100   continue
      end

Created Fortran 90 Module:

module Vecom
 real, dimension(10000) :: scratch
end module Vecom

Created Fortran 90 Code:

     subroutine demo(a, b, c, n)
!---------------------------
! Modules
!---------------------------
     USE Vecom
     implicit none
!---------------------------
!   Dummy Arguments
!---------------------------
     integer n
     real, dimension(n) :: a, b,c
!---------------------------
!    Local Variables
!---------------------------
     integer :: i
!---------------------------
     a = b + c
     where (a > 100.0 )
         a = a + scratch(:n)
     elsewhere
         c = a*2
     end where
     end subroutine demo

Download a demo version (3.3 MB) of VAST/77to90 that allows you translate up to 250 lines of code.

VAST is a registered trademark of Pacific-Sierra Research Corporation.