Sunday, January 2, 2011

Dark Fortran: EQUIVALENCE / Fortran oscuro: EQUIVALENCE

Lately I've been very busy at work translating a library, written in old Fortran 77, into C++.
Besides finding a lot of goto statements and really "creative" ways of passing arguments that change the control flow of functions, I've come across several pretty funny sentences that I've never seen before, such as, for instance, EQUIVALENCE.
Googling a bit I found a site that has turned very useful:
Forbidden / Esoteric / Obsolete Statements
In this site, you can find out the origins of many of this Fortran statements, often present in old Fortran 77 legacy code, and what they are for. In addition to this, whenever possible, alternatives to these sentences are proposed which are more compatible with good programming practices.

---------------------------------------------------------------------------------------------

Últimamente he estado bastante liado en el trabajo reescribiendo en C++ algunas librerías bastante antiguas que estaban programadas en Fortran 77.
Además de infinitud de sentencias goto, y formas "creativas" de pasarle opciones a funciones, me encontré con algunas sentencias bastante curiosas que nunca había visto, como, por ejemplo, EQUIVALENCE.
Buscando en Google encontré un sitio que me ha resultado muy útil:,
Forbidden / Esoteric / Obsolete Statements
En él se explica el origen y funcionamiento de ciertas sentencias de Fortran 77 que uno puede encontrar (desgraciadamente, con frecuencia) en códigos heredados que tengan cierta antiguedad.
Además de esto, siempre que existan, proponen alternativas compatibles con buenas prácticas de programación.