infra:NET Expert
 
×
S  -  Text ausgeben
Funktion
An einer beliebigen Stelle kann eine Zeichenkette ausgegeben werden.
Siehe auch Hinweise im Kapitel zum Druck unter 13.02 Besonderheiten (Linien, Tabulatoren, Schriftarten). Z.B. wird bei Zeichenketten, die einen Doppelpunkt oder zwei oder mehr aufeinanderfolgende Leerzeichen enthalten, der dem Doppelpunkt oder den Leerzeichen folgende Textteil auf eine errechnete Tabulatorposition gedruckt.
Diese Vorschrift kann aktiviert und ausgeschaltet werden:
&-
(Kaufmanns-Und + Minuszeichen)
verhindert die Aufbereitung des folgenden Textes auf Tabulatorpositionen
&+
(Kaufmanns-Und + Pluszeichen)
erzwingt die Aufbereitung des folgenden Textes auf Tabulatorpositionen
Syntax
S:[Druckposition],Text#
Beispiel
S:120,Währung: #
120
Der Text soll an der Stelle 120 ausgegeben werden.
Währung Text, der ausgegeben wird.
Beschreibung der Argumente
  • Druckposition
    Position, an der der Text ausgegeben wird.
    Die Position kann direkt mit einer maximal 3-stelligen Zahl oder als Tabulatorposition in der Syntax Tnn angegeben werden, wobei nn die Nummer des Horizontaltabulators angibt.
    Diese Positionsangabe über Tabulatoren ist noch nicht implementiert.
  • Text
    Text der übergeben werden soll. Anführungszeichen, Hochkommata u.ä. werden als normale Zeichen behandelt.
    Der Text kann bis zu 132 Zeichen lang sein.
    Sollen am Ende des Textes Leerzeichen ausgegeben werden, dann muss der Text mit einem Endezeichen abgeschlossen werden.
    Das Endezeichen wird über den Parameter PT05 festgelegt.
    Wurde über diesen Parameter kein Endezeichen festgelegt, dann wird bei Programmstart eine entsprechende Meldung ausgegeben.
    Als Endezeichen wird dann das Zeichen @ erwartet. Hört die Zeichenkette nach den Leerzeichen mit einem Zeichen  auf,
    das zur Zeichenkette gehört und identisch ist mit dem Endezeichen, dann muss sie mit einem weiteren Endezeichen abgeschlossen werden.
    Dadurch wird das erste Endezeichen übernommen.
    Beispiel:
    Als Endezeichen wurde im Parameter PT05 das Komma "," festgelegt.
    Die Zeichenkette "Teilenummer      " wird eingegeben als "Teilenummer      ,"
    Die Zeichenkette "Teilenummer      ," wird eingegeben als "Teilenummer      ,,").
Mehrsprachigkeit der Texte
Texte, die als S- bzw. s-Operator in der Landessprache hinterlegt sind oder über einen V-Operator mit der Übersetzungsposition /T ausgegeben werden, können automatisch in die gewünschte Sprache übersetzt werden. Vor der Ausgabe des Textes wird geprüft, ob in der entsprechenden Sprachsektion der Sprachdatei eine Übersetzung hinterlegt ist. Der Schlüssel für den Zugriff auf die Datei wird aus dem auszugebenden Text und dem vorangestellten Begriff Txt_MDD_ gebildet. Um einen gültigen Schlüssel zu erhalten, werden alle im Text enthaltenen Sonderzeichen (außer Punkt ".") durch Unterstriche ersetzt (siehe Beispiel). Der so konstruierte Schlüssel wird in der zur aktuell eingestellten Sprache gehörigen Sprachdatei gesucht. Wird der gesuchte Eintrag gefunden, ersetzt dieser den beim S- bzw. s-Operator angegebenen Text.
Um die Übersetzung von Texten zu vereinfachen, wird nach einem erfolglosen Übersetzungsversuch ein weiterer Übersetzungsversuch gestartet, bei dem alle Sonderzeichen des Ausgangstextes zunächst eliminiert und nur die reine Textinformation für den Zugriff auf die infra-Meldungstextdatei benutzt wird. Wird nun eine Übersetzung gefunden, werden anschließend alle Sonderzeichen in dem übersetzten Text an ihrer ursprünglichen Position wieder eingefügt. Ist der übersetzte Text kürzer als der Ausgangstext, werden automatisch so viele Leerzeichen an den übersetzten Text angehängt, bis die Länge des Ausgangstextes erreicht ist. So werden Verschiebungen und Layoutfehler im übersetzten Dokument vermieden. (siehe Beispiel 2).
Die gewünschte Sprache kann über den Schlüssel "LanguageID" in der Sektion [GENERAL] der INI-Datei festgelegt werden (Default ist 049 für deutsch) oder aber vom jeweiligen Druckprogramm bzw. innerhalb der Drucksteuertabelle über die Globalvariable "GV_mddlanguageid". Sobald diese Variable versorgt wird, bestimmt deren Inhalt die über die Sektion der Meldungstextdatei (SIBPPS.MSG) gefundene Sprachdatei, in der beim Druck nach zu ersetzenden Texten gesucht wird.
Ist für den Inhalt der Globalvariablen "GV_mddlanguageid" ein Eintrag in der Sektion [MAPLANGUAGEID] in der Datei SIBPPS.INI enthalten, bestimmt der dort hinterlegte Ländercode die Sektion der Meldungsdatei.
Beispiel 1:
Folgende S-Operatoren sollen übersetzt werden (man beachte die 6 Leerzeichen und den Doppelpunkt):
S:6,Auftrag      :#
S:30,Bezeichnung#
In der Sprachdatei LANG-001MSG sind folgende Einträge enthalten (man beachte die 7 Unterstriche, die stellvertretend für die 6 Leerzeichen und den Doppelpunkt im Ausgangstext stehen):
Txt_MDD_Auftrag_______: "Order        :"
Txt_MDD_Bezeichnung: "description"
Hinweis:
Folgende Sonderzeichen (und Leerzeichen) müssen beim Eintrag eines Schlüssels durch das Zeichen _ ersetzt werden: " ;:,|<>+-*/\()%&§$!?'#=
Punkte "." müssen nicht ersetzt werden!
Beispiel 2:
In der MIL-Datei ist folgender Operator hinterlegt:
S:8,Auftrag      :#
(das Wort "Auftrag" wird von 6 Leerzeichen und einem Doppelpunkt gefolgt)
Zuerst wird der Zugriff auf die über die Datei SIBPPS.MSG verlinkte Sprachdatei mit folgendem Schlüssel versucht:
"Txt_MDD_Auftrag_______:"
(die 6 Leerzeichen und der Doppelpunkt werden durch 7 Unterstriche ersetzt)
Wird dieser Schlüssel nicht gefunden, wird ein weiterer Zugriff mit folgendem Schlüssel versucht:
"Txt_MDD_Auftrag:"
Angenommen, in der Sprachdatei ist für diesen Schlüssel folgender Eintrag hinterlegt:
Txt_MDD_Auftrag: Order
Dadurch würde folgende Druckausgabe erzeugt:
Order        :
(das Wort "Order" wird von 8 Leerzeichen und einem Doppelpunkt gefolgt)
Beispiel 3:
Ausnahmen in Übersetzungen
Ausnahmen in Übersetzungen, zu denen auch keine zusammengefassten Texte in den S-Operatoren hinterlegt werden, sind möglich und wie folgt zu behandeln:
Das Wort "aus" soll an einer ganz bestimmten Stelle der Druckausgabe in der englischen Übersetzung nicht mit of, sondern mit out übersetzt werden. In den S-Operator der MIL-Datei wird anstelle des Wortes "aus" das Ersatzwort "MSG_aus_01" geschrieben, das in die MSG-Datei für deutsch (049) mit "aus" und in den fremdsprachigen MSG-Datei entsprechend mit "out" übersetzt wird. Sollte der gleiche Begriff noch einmal anders übersetzt werden müssen, wird das Ersatzwort mit einer anderen lfd. Nummer gebildet, zum Beispiel "MSG_aus_02", und dazu die entsprechende Übersetzung hinterlegt.
So sähen die zugehörigen Einträge in der deutschsprachigen Sprachdatei (MSG-Datei) aus:
Txt_MDD_MSG_aus_01: "aus"
Txt_MDD_MSG_aus_02: "aus"
Und so sähen die Einträge in der englischsprachigen MSG-Datei aus:
Txt_MDD_MSG_aus_01: "out"
Txt_MDD_MSG_aus_02: "of"
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.
Beispiele:
S:5,Anzahl Seiten: $$Pages$$#
liefert z.B. den Text "Anzahl Seiten: 5"
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!
Verwendung von Makros
Statt eines festen Textes können auch infra-Makros (siehe Kapitel 15.01 infra-Makros der infra-Systeminformationen) angegeben werden. Sofern die verwendeten Makros ein druckbares Ergebnis liefern, wird dieses Ergebnis an der angegebenen Stelle ausgedruckt.
Der automatische Übersetzungsmechanismus funktioniert auch beim Einsatz von Makros, d.h. das Ergebnis eines Makroausdrucks wird genauso übersetzt, wie ein fester Text. Man kann damit z.B. Mengeneinheiten oder Teilebezeichnungen übersetzen lassen.
Gegenüber der Verwendung des V-Operators mit Übersetzungsoption (/T – siehe Beschreibung des V-Variablen ausgeben) besteht so die Möglichkeit, nicht nur Inhalte aus Datenpuffern, sondern auch aus Globalvariablen oder per Makros zusammengesetzten Ausdrücken zu übersetzen.
Allerdings gilt wie immer bei den Makros, dass diese nur erkannt werden, wenn z.B. eine Klammer oder ein Leerzeichen davor steht. Will man einen festen Text gefolgt von einem Makro ausgeben und Text und Makro folgen direkt aufeinander (also Buchstabe oder Ziffer als letztes Textzeichen), dann kann man dies mit folgendem Trick erreichen:
"S:10,TRIM(irgendeintext)LBUF(....) und noch mehr Text#"
Beispiel:
S:5,TRIM(irgendeintext)GV(GV_hinweis1)GV(GV_hinweis2) und noch mehr Text #
Die Inhalte der Globalvariablen werden aneinander gehängt und anschließend wird der komplette Text ggf. übersetzt.