COBOL 的依赖管理

Dependency Management for COBOL

COBOL 世界中是否存在传递依赖管理之类的东西?

是否有任何类型的 COBOL 二进制文件存储库系统?

您的(非常广泛但仍然有效的)问题的答案将是 "NO",正如评论中已经暗示的那样。对于这个答案,我将 "dependency management software" 定义为一种软件,它可以帮助查看 运行 一个应用程序(由许多 COBOL 程序组成 [否则你不需要为此进行管理] 需要哪些程序和文件) ), 理想版本[对于程序 X 的版本 N,我需要版本 M 中的程序 Y 和 Z,以及文件 A 和 B]。

使 COBOL 的工作依赖系统变得困难的是,您将拥有一个易于跟踪的源级别依赖(仅由源和副本书组成)和一个您无法跟踪的 运行时间依赖:

CALL "SOMEMODULE"(或多或少的静态调用)可以很容易地跟踪,但您经常会看到 CALL somemodule(实际模块名称存储在变量中的高度动态调用)。对于后者,您必须检查变量可以获得的所有可能值(有时只有一个简单的 MOVE "PROG" 直接在 CALL 之前,有时变量会被子程序甚至更改取自 file/DB/whatever)。 您通常拥有的第二个依赖项是 files/DB-connections。这些大多不像 ASSIGN to "file1" 那样是静态的,而是动态的 ASSIGN TO filename,与动态程序调用一样存在相同的问题。

因此,您通常没有真正的依赖关系管理(如上定义),而只有 "snapshots" [编译] COBOL 程序和文件的版本,其中包含(应该)工作的所有内容。

在 "Windows/Unix world" 中,您将它们放在存档、备份程序(可能是增量的)或适用于二进制文件的版本管理中。

您可以查看一些 IBM 工具——用于二进制文件的 Rational Asset Manager 和用于依赖项的 Websphere Asset Analyzer。

您的问题与 Cobol 无关,但与 BS2000(您的操作系统)相关,因为您只使用二进制文件。

对于 C++,您可以找到许多库(在 Linux、Windows、BS2000 上),您可以将它们导入到您的系统中并构建(如果可能)并放入 LMS 库中L型元件(BS2000)。

在过去(2005 年),我为 BS2000 编写了一个比 EDT(BS2000 西门子编辑器)更强大的新编辑器,其中我添加了 Regex 功能,包括PCRE图书馆。

我在 BS2000 上下载了 PCRE 源代码,并且我已经迁移了他的代码,以便所有模块都能正常工作。

完成后,我将二进制文件放入名为 BREGEX.B.LMSLIB 的库中,其版本号与 PCRE 库相同。

现在,每次我想在 C++ 程序和 COBOL 程序中使用 Regex 时,我都会将此模块包含在 BINDER 脚本中(BS2000 上的 link 编辑器取代了 TSOSLNK)使用 //RESOLVE-MODULES//INCLUDE-LIBRARY BINDER 命令的脚本。

如果此 L 模块需要来自其他库的其他模块,我必须在我的 BINDER 脚本中明确包含这些模块。

由于 link 版本完全由 BS2000 程序(BS2000 中的脚本)完成,您可以混合使用 BINDER 命令和 BS2000 变量以包含所有依赖项。

示例:

/START-BINDER
//INCLUDE-MODULE <main-program-name>
//RESOLVE-LIBRARY BREGEX.B.LMSLIB
//RESOLVE-LIBRARY LOGGING-LIBRARY-FOR-BREGEX
//RESOLVE-LIBRARY DEPENDENCY-LIBRARY-2-FOR-BREGEX
//END

或使用 BS2000 'scripting' 变量

/INCLUDE-PROCEDURE INIT-BINDER-SCRIPTING-VARIABLE

/START-BINDER
//INCLUDE-MODULE <main-program-name>
/BREAK
/&(RESOLVE-BREGEX)
/RESOLVE
//END

PS:我在没有一些例子的情况下回答,因为我正在度假,但如果有人问一些例子(使用评论),我可以在我的家用电脑上找到它们并提供更多信息。

关于信息,我已经 12 年多没有在 BS2000 上编程了,我一直保留着我的编辑器的资源!