我在OpenVMS DEC ADA环境中用Ada编写了一个批处理应用程序,我需要将其移植到Windows。
我该如何处理?
答案 0 :(得分:3)
我将假设您不需要继续使用相同的代码库维护DEC Ada版本。至少存在两种可能的技术障碍。
首先,GNAT使用file naming conventions(你不能说,但我猜你是否会使用GNAT)。默认情况下,GNAT期望每个文件包含一个编译单元(规范或正文):所以
package Pkg is
...
end Pkg;
将位于文件pkg.ads
和
package body Pkg is
...
end Pkg;
将在文件pkg.adb
中。编译一个开始with Pkg;
GNAT的文件时会查找pkg.ads
(而不是Pkg.ads
,尽管您可以在Windows或macOS上使用它,但它们不区分大小写,但不是保留文件系统。)
您可以使用 gnatchop 来执行此操作。
gnatchop *.ada chopped
会将所有*.ada
源文件拆分为GNAT在目录chopped/
中所期望的文件。
这里可能出错的一件事是,如果一个给定的单位在多个源文件中;您必须决定要保留哪一个(或者如果您需要两个版本来处理不同的环境,该怎么办)。
如果 gnatchop 无法满足您的需求,您可以尝试 gnatname (上述参考或this answer)。
其次,DEC Ada支持许多特定于VMS的功能。这是否会影响您取决于您的应用程序的原始程序员使用它们的程度。你最好的选择是去;如果你遇到问题,请再问一次(请问另一个问题!)
答案 1 :(得分:1)
每当我将Ada从一个编译器/平台移植到另一个编译器/平台时,我总是跳进池的深处,即Just Do It。
获取目标平台上安排的文件和目录,使用gnatchop或gnatname处理文件命名(根据Simon的答案),设置项目文件(我在gps中以交互方式执行此操作),然后按F4(Build Main)。
根据需要修复。