W 文件、P 文件和 I 文件的含义是什么?

Dom*_*que 1 progress-4gl language-concepts openedge

我正在 Progress Release 11.6 中使用 appBuilder 和过程编辑器。

正如前面的一些问题中提到的,我经常遇到 appBuilder 的问题,不想打开文件,损坏它们(删除部分源代码),......,现在的原因之一似乎是程序的限制不能超过32K,包含评论。

起初我想“我们回到了石器时代吗? ”,请原谅我的反应。

但现在我开始认为我们完全滥用了整个概念,因此我想表达我对W文件、P文件和I文件的看法,请确认(或更正):

W 文件仅包含 GUI 定义,例如带有一些框架、按钮、填充字段等的表单,任何真正的编程都需要在 P 文件中完成。
P 文件包含真正的智能:其中详细说明了程序和功能,可以由其余 P 文件使用,或者最终由 W 文件使用。
I 文件只是用来包含一般行为。

让我举一个例子:

W 文件:

DEFINE VARIABLE combo_information VIEW-AS COMBOBOX /* with some information on the content, if this is static */
...
ON CHOOSE OF combo_information DO:
  RUN very_large_procedure.
END.
...
{about.i} /* see here-after */
...
Run Code Online (Sandbox Code Playgroud)

P 文件:

PROCEDURE very_large_procedure:
DO /* a lot */
END.
Run Code Online (Sandbox Code Playgroud)

I 文件(about.i):

/* Describes the help-about menu item */
Run Code Online (Sandbox Code Playgroud)

当这样工作时(仅将与 GUI 相关的东西放在 W 文件中,并让“真正的”编程在 P 文件中完成),永远不会达到提到的 32K 限制。最重要的是,添加过程可以轻松完成,appBuilder 不会删除它,因为 appBuilder 永远不会打开 P 文件。

我的观点正确吗(I 文件又如何)?
如果是的话:一个技术问题:如何从 W 文件内的 P 文件启动程序?(显然,提到的示例无法工作,因为在 W 文件中我没有提到在哪里查找very_large_procedure

Tom*_*com 5

命名是任意的,您有时可能会发现正在使用其他扩展。话说回来:

“W”代表“窗口”,它应该包含与使 GUI 工作相关的代码。它经常被滥用来包含任何类型的代码。它通常被那些在应用程序构建器上学习过编码的人或从未在 Windows 以外的任何东西上编码过的人以这种方式滥用。

“P”代表“Progress”(进度),重新连接为“Procedure”(程序)。它是 Windows GUI 代码出现之前的旧时代的标准。任何“无头”代码或字符模式代码通常都会放入点-p 文件中。

“我”是“包含”的意思。这是创建可重用代码片段和常见“头文件”的一种非常古老的方法。包含文件通常是参数化的。可能带有命名参数或位置参数。

另一个主要扩展名是“.cls”文件。这些适用于 OO4GL 类(OpenEdge 10 及更高版本)。

启动程序是通过运行它们来实现的:

RUN myproc.p.
Run Code Online (Sandbox Code Playgroud)

或者

RUN guiproc.w.
Run Code Online (Sandbox Code Playgroud)

或者,如果“启动”是指“启动会话”,则可以使用“-p procedureName”启动参数以及 prowin32.exe 或 prowin.exe(用于 Windows GUI 代码)或 _progres.exe(用于批处理或字符代码)。