如何将用DEC Ada编写的应用程序迁移到Windows?

如何将用DEC Ada编写的应用程序迁移到Windows?,windows,ada,openvms,vax,Windows,Ada,Openvms,Vax,我有一个在OpenVMS DEC Ada环境中用Ada编写的批处理应用程序,我需要将其移植到Windows 我应该如何处理这个问题?我假设您不需要继续从相同的代码库维护DEC Ada版本。至少存在两个可能的技术障碍 首先,由GNAT使用(您没有说,但我猜您将使用GNAT)。默认情况下,GNAT希望每个文件包含一个编译单元(spec或body):所以 将位于文件pkg.ads中,并且 package body Pkg is ... end Pkg; 将位于文件pkg.adb中。编译以Pkg

我有一个在OpenVMS DEC Ada环境中用Ada编写的批处理应用程序,我需要将其移植到Windows


我应该如何处理这个问题?

我假设您不需要继续从相同的代码库维护DEC Ada版本。至少存在两个可能的技术障碍

首先,由GNAT使用(您没有说,但我猜您将使用GNAT)。默认情况下,GNAT希望每个文件包含一个编译单元(spec或body):所以

将位于文件
pkg.ads
中,并且

package body Pkg is
   ...
end Pkg;
将位于文件
pkg.adb
中。编译以Pkg开头的
文件时
GNAT查找
pkg.ads
(而不是
pkg.ads
,不过在Windows或macOS上,它不区分大小写,但保留大小写的文件系统可以解决这个问题)

您可以使用gnatchop来完成此操作

gnatchop *.ada chopped
将所有
*.ada
源文件拆分为GNAT在
目录中所需的文件

这里可能出错的一件事是,如果给定的单元位于多个源文件中;您必须决定要保留哪一个版本(或者,如果需要两个版本来处理不同的环境,那么应该怎么做)

如果gnatchop不能满足您的需要,您可以尝试gnatname(上述参考,或)


其次,DEC Ada支持许多特定于VM的特性。这是否会影响您取决于应用程序的原始程序员使用它们的程度。你最好的选择是尝试一下;如果遇到问题,请再问一遍(请用另一个问题!)

每当我将Ada从一个编译器/平台移植到另一个编译器/平台时,我总是跳入池的最深处,即直接进行移植

获取目标平台上的文件和目录,使用gnatchop或gnatname(根据Simon的回答)处理文件命名,设置项目文件(我在gps中以交互方式执行此操作),然后按F4键(Build Main)


根据需要进行修复。

您是否尝试过安装GNAT Ada编译器并使用它编译应用程序?
gnatchop *.ada chopped