node7
node7

Reputation: 11

Progress ABL How to Test for WEBSPEED in the PRE-PROCESSOR

I want to conditionally compile some blocks of code depending on type of client i'm running in. this is fine for batch and tty as i can use the {&BATCH-MODE} but how to test for when the code is being compiled in webspeed agent? eg. {&IF} not {&SOMETHING} EQ "YES" {&THEN} {&ANALYSE-SUSPEND} foo bar {&ANALYSE-RESUME} {&ENDIF} it would be helpful if this did not rely on defines auto generated by the architect in .w's etc but that would be a nice to have not essential.

Upvotes: 1

Views: 594

Answers (3)

node7
node7

Reputation: 11

finally figured it out this morning {&webstream} and {&out} are not defined in in normal sessions so i can just test for that. runtime is not an issue in my case i just want to compile the code in all cases. in this shop dont ask me why but every single piece of code is session compiled. poor cpu but there u go. i could be defensive and add some logic with session:Client-type for bells and whistles you're right. if not can-do then boogie :)

Upvotes: 0

Jensd
Jensd

Reputation: 8011

Compile time isn't run time. If the program can be run different ways (as a part of a of webpage using webspeed, as a part of a batch and as a part of some other kind of client etc) you're most likely better of evaluating this in run time instead.

You can identify in what environment you're running:

SESSION:CLIENT-TYPE

This will identify your type of client.

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

Using VST

If you have at least one database connected _Connect-ClientType tells you what kind of client this particular connection is:

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

Example:

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

Based on OS

Perhaps you run different OS:es?

DISPLAY OPSYS.

Other ways

There's a number of other ways of doing this, including perhaps looking at PROPATH, Working directory etc.

Try to stick with a solution that won't change over the course of time because of Progress upgrades, new OS:es, new directory structures etc.

Upvotes: 2

Mike Fechner
Mike Fechner

Reputation: 7192

IMHO there is no such preprocessor variable out of the box.

But you could create your own include file and include that in the code that's relevant. You need two versions of that file, one says

&GLOBAL-DEFINE WebSpeed WebSpeed

and the other

&GLOBAL-DEFINE NoWebSpeed NoWebSpeed

And then configure your compile sessions so that they find exactly one of the files in propath.

But as you will agree, this is probably dangerous as the result will heavily rely on the proper PROPATH used during compilation. I'd rather attempt to use a runtime condition instead.

What are you trying to achieve in detail?

Upvotes: 1

Related Questions