2016-04-07 31 views
1

Ich möchte einige Blöcke von Code je nach Typ des Clients, ich bin laufen bedingt kompilieren. Dies ist in Ordnung für Batch und TTY als ich die {& BATCH verwenden kann -MODE}, aber wie wird getestet, wenn der Code in Webspeed-Agent kompiliert wird? z.B. {& IF} nicht {& ETWAS} EQ "JA" {& THEN} {& analysierende SUSPEND} foo bar {& ANALYZE-Resume} {& ENDIF} wäre es hilfreich, wenn dies nicht verlassen auf definiert automatisch generiert durch den Architekten in .w etc, aber das wäre ein schönes nicht wesentlich zu haben.Progress ABL So testen Sie für WEBSPEED in der VOR-PROZESSOR

+0

sry ken oops cap lock coding die ganze nacht n schläfrig jetzt korrigiert – node7

Antwort

0

endlich herausgefunden es heute morgen {& webstream} und {& out} sind nicht in normalen Sitzungen definiert, so kann ich nur dafür testen. Laufzeit ist in meinem Fall kein Problem, ich möchte nur den Code in allen Fällen kompilieren. In diesem Shop frage mich nicht warum, aber jedes einzelne Stück Code ist Sitzung kompiliert. schlechte CPU, aber du gehst. Ich könnte defensiv sein und etwas Logik mit der Sitzung hinzufügen: Client-Typ für Schnickschnack Sie haben Recht. wenn nicht können dann boogie :)

1

IMHO gibt es keine solche Präprozessor Variable aus der Box.

Sie könnten jedoch Ihre eigene Include-Datei erstellen und diese in den relevanten Code aufnehmen. Sie benötigen zwei Versionen dieser Datei, sagt ein

& GLOBAL-DEFINE WebSpeed ​​WebSpeed ​​

und die andere

& GLOBAL-DEFINE NoWebSpeed ​​NoWebSpeed ​​

Und dann konfigurieren Sie Ihre Kompilierung Sitzungen, so dass sie finde genau eine der Dateien in propath.

Aber wie Sie zustimmen werden, ist dies wahrscheinlich gefährlich, da das Ergebnis wird stark auf die richtige PROPATH während der Kompilierung verwendet werden. Ich würde lieber versuchen, stattdessen eine Laufzeitbedingung zu verwenden.

Was möchten Sie im Detail erreichen?

+0

danke für die bestätigung meines verdachts waren beide antworten hilfreich. einschließlich Route ich rate oder überschreiben cgidefs.i – node7

2

Kompilierzeit ist keine Laufzeit. Wenn das Programm auf verschiedene Arten ausgeführt werden kann (als Teil einer Webseite mit Webspeed, als Teil eines Stapels und als Teil einer anderen Art von Client usw.), ist es wahrscheinlich besser, dies in der Laufzeit zu bewerten .

Sie können in identifizieren, welche Umgebung Sie laufen:

SESSION: CLIENT-TYPE

dies Ihre Art von Kunden zu identifizieren.

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 Mit

Wenn Sie mindestens eine Datenbank _Connect-Client verbunden sagt Ihnen, welche Art von Kunden diese besondere Verbindung ist:

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

Beispiel:

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

Basierend auf OS

Vielleicht laufen Sie verschiedene OS: es?

DISPLAY OPSYS. 

Andere Möglichkeiten

Es gibt eine Reihe von anderen Möglichkeiten, dies zu tun, auch vielleicht bei PROPATH suchen, Arbeitsverzeichnis usw.

Versuchen mit einer Lösung zu bleiben, das wird sich nicht ändern im Laufe der Zeit wegen Progress Upgrades, neue OS: es, neue Verzeichnisstrukturen usw.

+0

danke für die Eingabe, aber es muss Kompilierzeit ich weiß, ich kann die Sitzung behandeln Informationen in rt. Problem ist abweichende propaths in ws und (chui & -b), Legacy-Namenskonvention Konflikt zwischen beiden propath. versuchte, sie dazu zu bringen, die propaths und den Konflikt zu rationalisieren und zu verschmelzen, aber ein politisches zu treffen. Mauer in dieser Richtung. Das Testen von propath wäre eine Option, da es sich um einen im Präprozessor handelt. aber dann könnte sich propath ändern, also das analysieren und sich darauf im Laufe der Zeit verlassen, keine gute Idee. so denke ich, dass die Option Datei Option beste Umgehungsmöglichkeit – node7

+0

Viel Glück! Denken Sie daran, dass Programme, die in einer Umgebung kompiliert wurden, möglicherweise in einer anderen Umgebung ausgeführt werden (und Verhalten wird sich nicht ändern, da Bedingungen zur Kompilierungszeit festgelegt wurden). – Jensd