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
Antwort
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 :)
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?
danke für die bestätigung meines verdachts waren beide antworten hilfreich. einschließlich Route ich rate oder überschreiben cgidefs.i – node7
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 (?)
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.
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
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
sry ken oops cap lock coding die ganze nacht n schläfrig jetzt korrigiert – node7