进度ABL如何在预处理器中测试WEBSPEED

时间:2016-04-07 22:00:28

标签: preprocessor progress-4gl openedge

我想有条件地编译一些代码块,具体取决于我运行的客户端的类型。这对于批处理和tty很好,因为我可以使用{& BATCH-MODE}但是如何测试何时代码是在webspeed代理中编译的?例如。 {& IF}不{& SOMETHING} EQ" YES" {&安培; THEN} {&安培;分析-SUSPEND} FOO 酒吧 {&安培;分析-RESUME} {&安培; ENDIF} 如果这不依赖于.w等建筑师生成的自动定义,那将会很有帮助,但如果没有必要的话,这将是一件好事。

3 个答案:

答案 0 :(得分:2)

编译时间不是运行时间。如果程序可以以不同的方式运行(作为使用webspeed的网页的一部分,作为批处理的一部分以及作为其他类型的客户端的一部分等),您最有可能在运行时更好地评估它

您可以识别您正在运行的环境:

<强> SESSION:客户端类型

这将标识您的客户类型。

DISPLAY SESSION:CLIENT-TYPE.

Type of client                   Attribute value
-------------------------------- -----------------------
ProVision standard ABL client    4GLCLIENT
WebClient                        WEBCLIENT
AppServer agent                  APPSERVER
WebSpeed agent                   WEBSPEED
Pacific Application Server agent  MULTI-SESSION-AGENT
Other special-purpose clients     Unknown value (?) 

Documentation

使用VST

如果您至少连接了一个数据库 _Connect-ClientType告诉您此特定连接的客户端类型:

Value    Client
-------- ---------------------
ABL      ABL client
SQLC     SQL client
WTA      Webspeed agent
APSV     AppServer agent
SQFC     SQL Federated client

示例:

FIND FIRST _myconnection NO-LOCK.
FIND FIRST _connect NO-LOCK WHERE _connect._connect-usr = _myconnection._MyConn-userid.
DISPLAY _connect._Connect-ClientType.

基于操作系统

也许您运行不同的操作系统:es?

DISPLAY OPSYS.

其他方式

还有很多其他方法可以做到这一点,包括查看PROPATH,工作目录等。

尝试坚持使用不会因为进度升级,新操作系统,新目录结构等而不会随时间变化的解决方案。

答案 1 :(得分:1)

恕我直言,没有开箱即用的预处理器变量。

但您可以创建自己的包含文件,并将其包含在与相关的代码中。您需要该文件的两个版本,一个说

&amp; GLOBAL-DEFINE WebSpeed WebSpeed

和另一个

&amp; GLOBAL-DEFINE NoWebSpeed NoWebSpeed

然后配置您的编译会话,以便他们找到propath中的一个文件。

但是你会同意,这可能很危险,因为结果将严重依赖于编译过程中使用的正确PROPATH。我宁愿尝试使用运行时条件。

你想要详细了解什么?

答案 2 :(得分:0)

今天早上终于弄明白{&amp; webstream}和{&amp; out}未在正常会话中定义,所以我可以测试一下。在我的情况下运行时不是问题我只想在所有情况下编译代码。在这个商店不要问我为什么,但每一段代码都是会话编译。可怜的cpu但你去了。我可以采取防御措施,并在会话中加入一些逻辑:客户端类型的铃声和口哨你是对的。如果不能,那么布吉:)