We have developed and implemented a partial evaluator for a subset of
Fortran 77. A partial evaluator is a tool for program transformation w
hich takes as input a general program and a part of its input, and pro
duces as output a specialized program. The goal is efficiency: a speci
alized program often runs an order of magnitude faster than the genera
l program. The partial evaluator is based on the off-line approach and
uses a binding-time analysis prior to the specialization phase. The s
ource language includes multi-dimensional arrays, procedures and funct
ions, as well as global storage. The system is presented and experimen
tal results are given.