PICK/BASIC、FlashBASIC 和 C 互操作性

PICK/BASIC, FlashBASIC, and C Interoperability

我偶然发现了一些关于 PICK 编程的有趣文档:

http://www.d3ref.com/?token=flash.basic

它说 FlashBASIC 是一个编译版本,而不是解释版本的 PICK 程序,可以与 PICK 互操作。这很棒。我很好奇它是如何描述目标代码的:

converts Pick/BASIC source code into a list of binary instructions called object code.

此目标代码是否可以与其他语言互操作?还是仅限于 PICK & Universe 操作环境?换句话说C程序可以调用FlashBASIC程序吗?

这有助于定义C版本,但找不到任何明确的FlashBasic版本定义:

What's an object file in C?

你问了几个不同的问题,我会尽力回答。

这是我写的一篇文章,可能有助于您理解 FlashBASIC。简而言之,在传统的 MV BASIC 被编译然后 运行 由汇编程序编译的地方,Flash 编译器是 C 并生成一个对象模块,该对象模块位于框架 space 中的标准 BASIC 对象之下。在 运行 时间,该代码由 C 运行 时间解释。就我们这里的目的而言,没有 C 接口,这只是一种使代码更快 运行 的内部机制。

从上面注意到,这与 "What's an object file in C?" 主题无关,因为 D3 中的对象模块存储在 D3 框架中,与常见的 OS 级对象模块完全无关。

现在关于 C 调用 Pick - 在你的情况下 D3:你可以使用 CP 库 - docs 与你引用的 link 在同一区域。如果您使用的是托管 C (.NET),您还可以在 client/server 模式下将代码与 MVSP 库结合使用,而不是与数据库本身绑定。或者,您可以使用 C 中任何常见的 Web 服务客户端机制,并将 D3 设置为使用多种技术的 Web 服务服务器,包括 MVST、mv.NET、Java 或 C/C++。

我知道您的回答相当含糊,但您提出的问题已在论坛中进行了多年的详细讨论。如果你问一个更具体的问题,你会得到一个具体的答案。请随时在评论中完善您的查询,我们可以集中解答。

另请注意,您将此问题标记为 "u2"。如果您真的使用 MV/Pick(Universe 或 Unidata)的 U2 变体,那么对 D3 文档的引用具有误导性并且上述 none 适用,因为它们在 U2 中的做法不同并且没有那里有FlashBASIC。我知道,你很困惑。让我们来解决...

是的,Flash BASIC 只是翻译成 C,被编译,生成的目标文件被动态加载和链接,然后 运行 来自 Pick OS。 C 程序的特性 运行 与 BASIC 交互和交互当然是可能的,但我们没有实现该特性。