尽管我可以使用最新的编译器,但我必须使用一些旧版 Fortran。
该代码将大量数据存储在一维数组中。
例如,
PROGRAM horrible_coding
IMPLICIT EVERYTHING ! Sarcasm
REAL, DIMENSION(1000) :: data
INTEGER, DIMENSION(50) :: info_location
! Somewhere, info is read in and stored temporarily as info_1, info_2, etc.
data(1:3) = info_1
data(4:9) = info_2
...
data(134:192) = info_n
DATA
数组中的哪些元素与哪些元素之间的关联info
存储在第二个数组中。就像是:
info_location(1) = 1
info_location(2) = 4
info_location(n) = 134
这是正确的。数组的每个元素的值是info_location
指数据数组的第一个元素,您可以在其中找到相关信息。
因此,例如,如果要获取 info_7 的数据,则必须执行以下操作:
size_of_info_7 = info_location(8) - info_location(7)
ALLOCATE(data_for_info_7(size_of_info_7))
data_for_info_7 = data(info_location(7) : info_location(7) + size_of_info_7 - 1)
到现在为止,看到这种精神错乱可能会让你的眼睛开始喷血,所以我很抱歉。
我想创建对象实例并将每条信息的所有相关数据存储为实例数据。当我把事情带到 2003 年时,我会创建实例方法来获取和设置实例数据。
我不想重写代码,但想把这种现代化放在已经存在的东西之上。
我相信我可以通过使对象实例数据简单地指向data
包含相关信息的数组的实际元素的指针来实现这一点。
这是合理的做法吗?
我可以在 Fortran 中创建实例数据主要是指针的对象吗?
如果没有先将这个想法扔给stackoverflow,我会犹豫是否要开始这项任务。