维护旧的Fortran代码-倾向于执行子程序(x,y),x=x,y=y

维护旧的Fortran代码-倾向于执行子程序(x,y),x=x,y=y,fortran,Fortran,我的工作任务之一就是维护旧的Fortran代码。我是一名分析师,我通常理解代码正在解决的问题,但我正在为一些代码位而挣扎 为了让您了解代码编写的时代,它参考了格鲁曼数据系统公司的TS/RJE服务,该服务连接了IBM 360/67和360/75。20世纪60年代末。代码本身仍然有一些算术IF,没有块IF,很多GOTO 无论如何,我见过的一个怪癖是,在前几行代码中,子程序的输入将被设置为等于它们自己。像 SUBROUTINE STUFF(X,Y) X = X Y = Y X = X + Y RETU

我的工作任务之一就是维护旧的Fortran代码。我是一名分析师,我通常理解代码正在解决的问题,但我正在为一些代码位而挣扎

为了让您了解代码编写的时代,它参考了格鲁曼数据系统公司的TS/RJE服务,该服务连接了IBM 360/67和360/75。20世纪60年代末。代码本身仍然有一些算术IF,没有块IF,很多GOTO

无论如何,我见过的一个怪癖是,在前几行代码中,子程序的输入将被设置为等于它们自己。像

SUBROUTINE STUFF(X,Y)
X = X
Y = Y
X = X + Y
RETURN
END

对他们为什么要这样做有什么见解吗?我能想到的最好的情况是,如果没有指定输入,它可能会将其设置为0。但我对我的编译器或他们当时使用的编译器了解不够,无法说明这是否必要/有效。

它不应该将任何值设置为零。它是否与Fortran G/H或其他编译器一起使用?你可能会在comp.lang.fortran上找到更多的老家伙。我说不出代码是用什么编写的。谢谢你的建议。comp.lang.fortran线程我使用了一个名为PlusFort(来自英国)的产品来撤销计算GOTOs和其他重组。这是第一次尝试的美味佳肴,但仍需要一些努力。真正需要的是有一些测试用例来确定重组是否给出了预期的答案。X=X是否有可能被设想为做一些事情,比如确保值来自堆而不是寄存器?这更多的是猜测而不是事实。它不应该将任何内容设置为零。它是否与Fortran G/H或其他编译器一起使用?你可能会在comp.lang.fortran上找到更多的老家伙。我说不出代码是用什么编写的。谢谢你的建议。comp.lang.fortran线程我使用了一个名为PlusFort(来自英国)的产品来撤销计算GOTOs和其他重组。这是第一次尝试的美味佳肴,但仍需要一些努力。真正需要的是有一些测试用例来确定重组是否给出了预期的答案。X=X是否有可能被设想为做一些事情,比如确保值来自堆而不是寄存器?这与其说是事实,不如说是猜测。