In vielen Fällen ist es nötig, direkt im Quelltext verschiedene Passagen für die jeweiligen Formate oder Sprachen anzugeben. UDO bietet daher einen Satz Befehle, mit denen diese Abfragen erfolgen können.
Mit einem if...-Befehl wird eine Abfrage eingeleitet. Liefert die Abfrage ein wahres Ergebnis, so werden alle Zeilen bis zum Befehl !endif bzw. !else von UDO verarbeitet. Liefert die Abfrage ein falsches Ergebnis, so werden alle Zeilen bis zu !endif bzw. !else ignoriert.
Mit dem Befehl !ifdest können Sie das Format abfragen, welches von UDO ausgegeben wird. Zur Abfrage verwenden Sie die Kürzel der Ausgabeformate:
asc | ASCII |
aqv | Apple-QuickView |
htag | HP-Helptag-SGML |
html | HTML |
info | Texinfo |
ldoc | Linuxdoc-SGML |
lyx | LyX |
man | Manualpage |
pch | Pure-C-Help |
rtf | RTF |
stg | ST-Guide |
tex | LaTeX |
tvh | Turbo-Vision-Help |
win | WinHelp |
Zusätzlich zu den hier genannten Zeichenketten können jeweils auch "all" und "none" verwendet werden. Bei "all" liefert eine Abfrage immer ein wahres Ergebnis, bei "none" immer ein falsches.
Das folgende Beispiel zeigt, wie man den Titel der Windows-Hilfe anders als für die anderen Formate setzt:
!ifdest [win] !title Die Windows-Hilfe zu !else !title Die Anleitung zu !endif
Verwandt mit dem !ifdest-Befehl ist der Befehl !ifndest. Hier wird abgefragt, ob man nicht in ein Format ausgibt. Das obige Beispiel läßt sich demnach auch folgendermaßen darstellen:
!ifndest [win] !title Die Anleitung zu !else !title Die Windows-Hilfe zu !endif
Bei den Abfragen können Sie natürlich auch mehrere Formatkürzel angeben. Die Abfrage liefert dann ein wahres Ergebnis, wenn mindestens ein Kürzel mit dem Ausgabeformat übereinstimmt. Mit folgender Abfrage können Sie z.B. den Hypertextformaten einen besonderen Titel verpassen:
!ifdest [win,html,stg,htag] !title Der Hypertext zu !else !title Die Anleitung zu !endif
Mit dem Befehl !iflang können Sie die Sprache abfragen, die für die Ausgabe der Zieldatei verwendet wird. Hierbei gelten folgende Zeichenketten:
english: | Englisch |
french: | Französisch |
german: | Deutsch |
italian: | Italienisch |
spanish: | Spanisch |
swedish: | Schwedisch |
Zusätzlich zu den hier genannten Zeichenketten können jeweils auch "all" und "none" verwendet werden. Bei "all" liefert eine Abfrage immer ein wahres Ergebnis, bei "none" immer ein falsches.
Bei kleineren Texten können Sie so z.B. gleich alle Übersetzungen in einem Quelltext unterbringen:
!iflang [german] !title Die Benutzeranleitung zu !else !title The User's Guide to !endif
Auch hier gibt es den verwandten Befehl !ifnlang, der abfragt, ob nicht in eine Sprache ausgegeben wird. Das obige Beispiel ließe sich also auch so ausdrücken:
!ifnlang [german] !title The User's Guide to !else !title Die Benutzeranleitung zu !endif
Selbstverständlich können Sie auch bei dieser Abfrage wieder mehrere Sprachkürzel angeben. Ein Beispiel brauche ich dafür wohl nicht mehr angeben.
Mit dem Befehl !ifset können Sie testen, ob Symbole gesetzt sind, mit dem Befehl !ifnset, ob Symbole nicht gesetzt sind.
Wie Sie bereits wissen, können Sie Symbole mit der Kommandozeilenoption -D und mit dem Befehl !set setzen und mit dem Befehl !unset wieder löschen.
Im folgenden Beispiel wird abgefragt, ob das Symbol Farbbilder gesetzt ist und entsprechend ein passendes Bild eingebunden:
!ifset [Farbbilder] !image colour/tiger !else !image mono/tiger !endif
Wenn Sie nun UDO mit der Option -D Farbbilder aufrufen bzw. vor der obigen Abfrage das Kommando !set Farbbilder in den Quelltext einbauen, so bindet UDO ein Farbbild, andernfalls ein monochromes Bild ein.
Mit dem Befehl !ifos können Sie das Betriebssystem abfragen, auf dem UDO läuft. Hierbei gelten folgende Zeichenketten:
beos: | BeOS |
dos: | DOS |
hpux: | HP-UX |
linux: | Linux |
macos: | MacOS |
nextstep: | NeXTStep |
sinix: | SINIX |
sunos: | SunOS |
tos: | TOS |
Auch hier gilt, daß zusätzlich zu den genannten Zeichenketten auch "all" und "none" verwendet werden können.
Wiederum existiert ein verwandter Befehl namens !ifnos, der abfragt, ob UDO nicht auf dem angegebenen Betriebssystem läuft.