infra:NET Expert
 
×
C:$DO(Position, Makros[, Format [/Parameter]])#
Führt die in Makros enthaltenen infra-Makros aus und gibt das Ergebnis an der angegebenen Position aus:
Position
Ausgabespalte, falls von den benutzten Makros ein Ergebnis geliefert wird
Makros
Kombination aus allen vorhanden infra-Makros (z.B. LBUF)
Format
Optionale Formatangabe für das auszugebende Ergebnis (z.B. D, N7, N3.2 etc.). Auch diese Angabe kann ebenfalls durch infra-Makros ermittelt werden. So kann zum Beispiel mittels DDf(6,15) das Format einer Mengenangabe ermittelt werden. Zusätzlich kann durch Parameter (Schalter) das Erscheinungsbild der Ausgabe beeinflusst werden. Mit den Parametern /g und /L können numerische Ergebnisse zum Beispiel in Tausendergruppen formatiert werden. Mehrere Parameter werden einfach (ohne Leerzeichen) hintereinander geschrieben.
/Parameter
/Lx
Formatiert numerische Ergebnisse (Format N) mit Zifferngruppen (zum Beispiel Tausendergruppen). Der Parameter /L bestimmt die Anzahl der Ziffern je Gruppe.
 
/G'.'
Legt das Gruppentrennzeichen fest. Üblicherweise wird der Punkt (Default) verwendet. Typischerweise werden durch die Angaben /G'.'/L3 durch Punkte getrennte Tausendergruppen erzeugt.
 
/Fl
Linksbündige Ausgabe des Feldinhalts. Numerische Felder werden in der Regel automatisch rechtsbündig ausgegeben. Dieser Parameter erzwingt in diesem Fall eine linksbündige Ausgabe.
 
/Fr
Rechtsbündige Ausgabe des Feldinhalts. Nichtnumerische Felder werden in der Regel linksbündig ausgegebenDiese Steueranweisung erzwingt die rechtsbündige Ausgabe.
Ab der angegeben Position (z.B. 40) wird gezählt und das angegebene Format (z.B. 10 Zeichen bei C10) hinzuaddiert. Von der sich somit ergebenden Position (im Beispiel 49) aus wird die Zeichenfolge nach links ausgegeben. Dies kann bei Proportionalschriften dazu führen, dass die Ausgabe anders erscheint, als wenn von Position 40 an linksbündig ausgegeben wird.
Die Länge des auszugebenden Feldes bestimmt somit die rechte Begrenzung des Bereichs, an dem die Ausrichtung erfolgt. Das gilt nicht bei Einsatz der "rechtsbündigen Positionsangabe" (siehe Option /Pr).
Hinweis: Leerzeichen am Ende der Zeichenfolge werden abgeschnitten.
 
/Pr
Rechtsbündige Positionsangabe. Für rechtsbündig formatierte Ausgabefelder (numerische Felder und Felder, die bereits mit dem Parameter /Fr versehen sind) wird mit dieser Option erreicht, dass das betreffende Ausgabefeld ab der angegebenen Position nach links ausgegeben wird. Die Position bildet also die rechte Begrenzung des auszugebenden Feldes. Dadurch ist es möglich, bei Formatänderungen (Änderung der Feldlänge im DataDictionary) oder beim Einfügen von Gruppierungszeichen die Druckausgabe nicht anpassen zu müssen, um weiterhin die Rechtsbündigkeit der Feldausgabe (samt Überschrift) zu erhalten, das Ausgabefeld wächst nach links. Voraussetzung: Vor dem rechtsbündigen Ausgabefeld muss ausreichend Platz sein.
Beispiele: C:$DO(20,"abc",C3 /Fr /Pr)#
oder Seitenzähler rechtsbündig auf Position 132:
V:132,,,P/Fr/Pr#
Hinweis: Um die rechtsbündige Positionsangabe für alle Elemente einer Drucksteuertabelle (MIL) zu aktivieren und sich die Angabe der Option /Pr bei allen C:$DO-Operatoren zu ersparen, kann der Operator "C:$SV(UseRightPos,1)" am Anfang der Kopfausgabetabelle (i.d.R. MIL-Tabellennummer 10) oder in die Formularbeschreibungstabelle (i.d.R. MIL-Tabellennummer 1) eingebaut werden. Dadurch wird die rechtsbündige Positionsangabe auch für den kleinen s-Operator (rechtsbündige Textausgabe) und den V:-Operator aktiviert.
 
/0
Nullen werden bei numerischen Werten am Ende hinter dem Komma abgeschnitten. Wenn hinter dem Komma ausschließlich Nullen sind, wird auch das Komma weggelassen.
Beispiele:
4.711,20300      -> 4.711,203
12.345,00000    -> 12.345
Als Ausdruck können alle infra-Makros verwendet werden. infra-Makros dienen zum Beispiel dem Zugriff auf die Datenbank oder globale Variablen und sind in den infra-Systeminformationen beschrieben. Das Makro GV(GV_datum) liefert zum Beispiel das aktuelle Arbeitsdatum der infra-Anwendung. Um dieses Datum auf der Druckposition 40 richtig formatiert auszugeben, müssen Sie folgende Anweisung in der Formularbeschreibungsdatei verwenden:
                     C:$DO(40,GV(GV_datum),D)#
Zur formatierten Ausgabe eines am Bildschirm eingebbaren Werts kann zum Beispiel folgende Anweisung verwendet werden:
                      C:$DO(84,"Ask(Zu formatierenden Betrag eingeben,1.00)",N9.2/G'.'/L3)#
Rechnen bei der Druckausgabe
Innerhalb des Drucksystems kann gerechnet werden. Es gibt dazu die infraMakros: %(...), ADD(...), SUB(...), MUL(...), DIV(...). Damit kann unter Benutzung des Makros SetGV zum Beispiel eine Summe über alle Positionen errechnet werden. Zum Beispiel Gewicht * Menge je Position und als Endsumme.
Kanalabhängige Globalvariablen
Damit bei mehrkanaliger Druckausgabe keine Probleme entstehen, da die Globalvariablen kanalübergreifend geändert werden können, (Summierungen würden so zum Beispiel je Kanal durchgeführt) wurden kanalabhängige Globalvariablen eingeführt. Alle Globalvariablen, deren Ident mit KV_ (statt wie üblich mit GV_) beginnt, werden automatisch kanalabhängig behandelt, d.h. der Wert einer solchen Variablen gilt nur für den aktuellen Kanal, auf dem gerade eine Berechnung mit dieser Globalvariable durchgeführt wird.
Weitere spezielle Globalvariablen
Zusätzlich stehen Globalvariablen mit druckspezifischen Informationen zur Verfügung, die auch z.B. in Queries (siehe Q-Operator) durch Verwendung des GV(...)-Makros für bedingte Druckausgaben eingesetzt werden können.
Globalvariable
Beschreibung
kanal
Nummer des aktuellen Druckkanals
Die Variable stellt die Nummer des aktuellen Druckkanals zur Verfügung, auf dem die MIL gerade interpretiert wird. Sie kann zum Beispiel über GV(kanal) in einem Query in einer MIL abgefragt werden, um abhängig vom Druck-Kanal die Ausgabe zu steuern.
Beispiel
Q:(GV(kanal)),’1’,3,J:>NICHT_KANAL_1#
seite
Aktuelle Seitennummer
Die Variable seite stellt die aktuelle Seitennummer des zu druckenden Dokuments zur Verfügung. Damit ist es möglich, die Seitennummer z.B. für Berechnungen wie im folgenden Beispiel zu verwenden:
C:$DO(10,"Fortsetzung auf Seite ADD(GV(seite),1)").
Damit kann also z.B. im Seitenfuß der Hinweis ausgegeben werden, dass der Druck auf der folgenden Seite fortgesetzt wird ("Fortsetzung auf Seite 2").
medium
Ident des verwendeten Druckmediums
Die Variable liefert die ID des auf dem aktuellen Kanal verwendeten Druckmediums (also z.B. MED0001). Zusammen mit dem Q-Operator (Query) lassen sich so zum Beispiel Druckausgaben speziell für ein bestimmtes Medium gestalten.
mediumtyp
Typ des verwendeten Druckmediums
Die Variable stellt den Typ des auf dem aktuellen Kanal verwendeten Druckmediums als Nummer zur Verfügung
0=Bildschirm
1=Drucker
2=Datei
3=DDE
4=Programm
5=Fax
6=E-Mail
Abhängig vom Mediumtyp kann so zum Beispiel ein Druckkanal deaktiviert werden:
Q:(GV(mediumtyp)),’6’,0,C:$SV(ChannelAction,0)#
(Abschaltung der Druckausgabe bei Medientyp E-Mail)
mediumname
Bezeichnung des verwendeten Mediums
Der Inhalt der Variable kann zum Beispiel auf einer Liste oder in einer Meldung (siehe Makro MsgBox) ausgegeben werden.
mediumdatei
Pfad und Ausgabedatei bei verwendetem Dateiausgabe-Medium
Der Inhalt der Variable kann zum Beispiel auf einer Liste oder in einer Meldung (siehe Makro MsgBox) ausgegeben werden.
mediumdrucker
Verwendeter Druckertreiber des aktuellen Mediums
Der Inhalt der Variable kann zum Beispiel auf einer Liste oder in einer Meldung (siehe Makro MsgBox) ausgegeben werden.
Platzhalter für "Anzahl Seiten des Dokuments"
Durch die Ausgabe des Platzhalters "$$Pages$$" lässt sich die Gesamtzahl der Seiten des fertigen Dokuments in einen beliebigen Text integrieren.
Beispiel:
C:$DO(10,"Seite GV(seite) von $$Pages$$")#
liefert z.B. den Text "Seite 1 von 5"
Hinweis:
Bei Dateiausgabe mit dem Dateityp "reiner Text"“ oder beim Einsatz von WinWord wird der Platzhalter nicht ersetzt, d.h. es erscheint der Text "$$Pages$$" im Dokument!