我想有条件地编译一些代码块,具体取决于我运行的客户端的类型。这对于批处理和tty很好,因为我可以使用{& BATCH-MODE}但是如何测试何时代码是在webspeed代理中编译的?例如。 {& IF}不{& SOMETHING} EQ" YES" {&安培; THEN} {&安培;分析-SUSPEND} FOO 酒吧 {&安培;分析-RESUME} {&安培; ENDIF} 如果这不依赖于.w等建筑师生成的自动定义,那将会很有帮助,但如果没有必要的话,这将是一件好事。
答案 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 (?)
使用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但你去了。我可以采取防御措施,并在会话中加入一些逻辑:客户端类型的铃声和口哨你是对的。如果不能,那么布吉:)