--------------------------------------------------------------------------- COUNTRY.EXE V1.11 Copyright (C) 1996-1997 by Matthias Paul Ubierstraáe 28 D-50321 BRšHL DEUTSCHLAND EMail: URL : http://www.rhrz.uni-bonn.de/~uzs180/mpdokger.html URL: ftp://ftp.rhrz.uni-bonn.de/pub/pc/dos/misc/country.zip URL: ftp://ftp.uni-stuttgart.de/pub/systems/msdos/util/system/country.zip URL: http://www.leo.org/pub/comp/platforms/pc/msdos/utils/sysutils/ URL: ftp://ftp.leo.org/pub/comp/platforms/pc/msdos/utils/sysutils/... ...country.zip Letzte Žnderung: 1997-02-28 --------------------------------------------------------------------------- HAFTUNGSAUSSCHLUSS: Benutzung auf eigene Gefahr und Ihr Risiko! Keine Haftung und/oder Garantie/Gew„hrleistung! --------------------------------------------------------------------------- COUNTRY.EXE ist ein kleines FreeWare-Utility fr DOS 2.0+, das es er- m”glicht, die Landeseinstellung des Systems auszulesen und zur Laufzeit zu „ndern (und nicht etwa nur - wie bisher - ber CONFIG.SYS COUNTRY= zur Bootzeit). Auáerdem sind einige Extras eingebaut, etwa die M”glichkeit, eine Liste ber alle L„nder auszugeben, die Ihre konkrete DOS-Konfiguration unter- sttzt, oder die Angabe des zu w„hlenden Landes ber den Landescode (meistens identisch mit der Telefonvorwahl) als auch ber dessen Namen vorzunehmen. Gleichzeitig gibt es flexible M”glichkeiten, in Abh„ngig- keit vom eingestellten Landescode den DOS-Errorlevel zu setzen, wodurch man die Einstellung in Batchjobs abtesten kann. COUNTRY.EXE nutzt die M”glichkeiten von CUI_LIB, einer von mir entwickelten Bibliothek fr ein flexibles "Console-User-Interface", dessen umfangreiche Konfigu- rationsm”glichkeiten hier nur am Rande erl„utert werden k”nnen. Eine grobe Hilfebersicht gibt COUNTRY.EXE selbst aus, wenn man es mit COUNTRY /? aufruft. --------------------------------------------------------------------------- Anwendungsbeispiele (nicht komplett): 1) Aktuelle Landeseinstellung abfragen: COUNTRY COUNTRY 0 COUNTRY /Country COUNTRY /Country=0 COUNTRY /C COUNTRY /C=0 Der Landescode 0 steht fr "aktuelles Land" und ist optional. Als Errorlevel wird die aktuelle Landeseinstellung zurckgeliefert (sofern der Landescode kleiner 255 ist), bei Fehlern wird 0 und bei L„ndern gr”áer/gleich 255 wird 255 zurckgeliefert. Diese Resultate lassen sich mit den sp„ter erl„uterten Parametern /Div und /Mod bersteuern. Die beiden ersten Aufrufe (ohne mit dem SwitChar eingeleiteten Parameter) in obigem Beispiel sind eine optionale Kurzform (statt /Country=0), die manchmal in Verbindung mit anderen Optionen zu unvermeidbaren Doppeldeutigkeiten fhren k”nnen. Im Zweifelsfall sollten Sie alle Parameter grunds„tzlich komplett angeben. M”chten Sie zus„tzlich noch die konkreten Daten fr Datums-/Zeit- format, Zahlenformat, W„hrungsformat und Listenseparatoren eines Landes auslesen, k”nnen Sie zus„tzlich die Option /Verbose angeben. 2) Neues Land einstellen (hier 1 fr USA und 49 fr Deutschland): COUNTRY 1 COUNTRY 49 COUNTRY /Country=1 COUNTRY /Country=49 COUNTRY /C=1 COUNTRY /C=49 COUNTRY USA COUNTRY Deutschland COUNTRY /Country=USA COUNTRY /Country=Germany COUNTRY /C=USA COUNTRY /C=GR Als Errorlevel wird das Land zurckgeliefert, das eingestellt wurde, oder der Code der alten Landeseinstellung, wenn das gewnschte Land nicht verfgbar ist. Im Detail gilt das unter Punkt 1) Gesagte. Unter Multitaskern kann das Problem auftreten, daá die Landesein- stellungen normalerweise in allen Tasks gleichzeitig ge„ndert werden wrden (z.B. Windows und TASKMAX/TASKMGR). Wenn die Vorg„nge in anderen Tasks gerade auf landesspezifische Informationen zugreifen, k”nnte es zu Inkonsistenzen im Datenbestand fhren (etwa beim landes- spezifischen Sortieren einer Liste), wenn die Landeseinstellungen 'unter der Hand' pl”tzlich ge„ndert werden. Deshalb verweigert COUNTRY.EXE normalerweise das Žndern der Landeseinstellungen unter Multitaskern, es sei denn, Sie geben die Option /FORCE an, die diese Vorsichtsmaánahme bersteuert. In Abh„ngigkeit davon, ob NLSFUNC installiert ist und davon, wie die Codeseitenuntersttzung konfiguriert ist, kommt es vor, daá Sie von der gerade aktivierten Codeseite nicht auf das gewnschte Land umschalten k”nnen. Sie sollten dann versuchen, mit CHCP auf Codeseite 850 (manchmal 437) zu wechseln, auf das Land 1 (USA) zu wechseln, dort die gewschte Codeseite fr das eigentlich gewnschte Land zu aktivieren und erst dann auf dieses Land umschalten. Dieses kuriose Ph„nomen liegt im teilweise recht seltsamen Design des L„nder- und Codeseiten-Supports unter DOS begrndet und ist weder ein Fehler von COUNTRY.EXE noch der DOS-Implementation (unter DOS wird nicht jedes Land mit allen m”glichen Codeseiten untersttzt, obwohl dies an fr sich kein generelles Problem w„re; blicherweise unter- sttzt jedes Land nur zwei Codeseiten). Unter MS Windows95, das in DOS-Boxen sowieso nur noch sehr einge- schr„nkte Codeseitenuntersttzung bietet, tritt das Problem nicht auf. Stattdessen tut das System so, als ob es fr jedes Land auch automatisch die zugeh”rige Default-Codeseite aktivieren wrde (auch der CHCP-Befehl verh„lt sich entsprechend). In Wahrheit schaltet MS Windows95 die Codeseite *berhaupt* nicht um, dies ist unter dem GUI nur noch mit CHANGECP m”glich (und sollte daher sofort nach der Installation geschehen, sinnvoll ist nach wie vor Codeseite 437). Normalerweise ist die Angabe des Parameters /Country optional. In Verbindung mit anderen Parametern kann es jedoch zu Doppeldeutig- keiten kommen (nach M”glichkeit sollten andere Parameter erst nach dem Zahlencode angegeben werden). In solchen F„llen k”nnen Sie auf die explizite Angabe der Option /Country ausweichen. 3) Alle verfgbaren L„nder auflisten: COUNTRY /List COUNTRY /L COUNTRY /List=1 COUNTRY /L=1 COUNTRY /List=USA COUNTRY /L=USA Diese Option probiert alle m”glichen Einstellungen von 1 bis 65535 durch (unter DOS 2.xx nur bis 254). Die aktuelle Landeseinstellung wird nicht (dauerhaft) ver„ndert. Da die Suche (insbesondere bei aktivierter Codeseitenuntersttzung) einige Zeit beansprucht, da der DOS-Kernel fr jedes zu berprfende Land komplizierte Initialisierungen der internen Tabellen vornehmen muá (ein kompletter Scan kann dann durchaus 24 Stunden und l„nger dauern...), k”nnen Sie die Auflistung mit + abbrechen, wenn Sie weit genug gescannt haben (Codes oberhalb von 1000 sind normaler- weise nicht belegt, hierzulande liegen die meisten Codes unterhalb von 100, einige Codes liegen auch noch um 350, andere um 700 - 800 und 900 - 1000). Optional k”nnen Sie auch einen Landescode angeben, bei dem COUNTRY.EXE seine Suche starten oder wiederaufnehmen soll: COUNTRY /List=31 Listet alle untersttzten L„nder COUNTRY /L=31 ab 31 (Niederlande). COUNTRY /List=Niederlande COUNTRY /L=Netherlands Auch die Angabe eines Stoppcodes ist m”glich, etwa: COUNTRY /List=31,49 COUNTRY /L=Niederlande,Deutschland COUNTRY /L=,49 Bezglich des Errorlevels und der Multitasker-Warnung gilt das bei Punkt 2) Gesagte. Wenn Sie die Codeseitenuntersttzung aktiviert haben, werden Sie u.U. die Meldung bekommen, daá die landesspezifischen Daten nur 'read-only' verfgbar sind. Dies bedeutet, daá zwar landesspezifische Daten fr dieses Land gelesen werden konnten, der Versuch, auf dieses Land umschalten, jedoch gescheitert ist. Meistens k”nnen Sie dennoch auf dieses Land umschalten, wenn Sie vorher eine andere Codeseite gew„hlt haben (i.a. 850 oder 437) oder wenn Sie die Codeseitenuntersttzung abschalten. Das Problem liegt in der berwiegenden Zahl der F„lle n„mlich darin begrndet, daá fr das gewnschte Land fr mindestens eines der angeschlossenen Ger„te keine passende Codeseite verfgbar ist. Daher erhalten Sie paradoxerweise eher Fehlermeldungen, je umfangreicher die aktivierte Codeseitenuntersttzung auf Ihrem System ist. Die Erfolgsmeldung kann dann nur erscheinen, wenn die die Umschaltung ber das gesamte System komplett funktioniert hat. 4) Spezielle Errorlevel zurckliefern: Normalerweise liefert COUNTRY.EXE - wie oben geschildert - Errorlevel im Bereich von 0 bis 255 zurck. Da 0 normalerweise fr fehlerfreie Funktion angenommen wird, sind hier einige Bemerkungen angebracht: COUNTRY.EXE liefert 0 zurck, wenn es seine Funktion nicht ausfhren konnte (oder einer der Hilfefunktionen gew„hlt wurde). Errorlevel 1 bis 254 stehen fr den Landescode der gerade aktuellen Landesein- stellung. 255 steht fr den Landescode 255 und darber. Dies reicht fr den Normalbedarf aus, da oberhalb von 255 nur sehr wenige Codes von DOS untersttzt werden (DOS 2.xx untersttzt prinzipiell nur Codes bis 254). M”chte man jedoch den Landescode in Batchjobs ganz pr„zise auswerten, reichen diese M”glichkeiten nicht aus. Fr diese Zwecke gibt es zwei spezielle Optionen /Div und /Mod (analog zu den entsprechenden mathe- matische Operationen): /Div bewirkt die ganzzahlige Division des Landescodes durch 256 und liefert damit fr die L„nder unterhalb 256 den Errorlevel 0, fr 256 bis 511 Errorlevel 1, usw. /Mod ist der Rest der ganzzahligen Division durch 256 und liefert damit z.B. fr den Landescode 1 wie auch fr 257 usw. den Errorlevel 1, fr 2, 258 usw. den Errorlevel 2 usw. Auf diese Weise lassen sich durch zwei hintereinanderfolgende Aufrufe von COUNTRY.EXE (einer mit /Div und einer mit /Mod) die beiden Anteile des Landescodes abfragen und im Batchjob passend zusammensetzen und auswerten. 5) Eingabe des Landes ber seinen Namen: Normalerweise werden Sie die Landesuntersttzung ber die im DOS- Handbuch angegebenen Landescodes ausw„hlen. Auf diese Weise stellen Sie die korrekte Zuordnung sicher. H„ufig kommt es jedoch vor, daá eine Konfiguration bestimmte L„nder nur potentiell untersttzt, die mitgelieferte COUNTRY.SYS Datei, die man bei CONFIG.SYS COUNTRY= angeben muá, aber keine Daten fr dieses Land enth„lt. Um herauszu- finden, ob die im Handbuch angegebenen L„nder tats„chlich fr Ihre DOS-Release stimmen, k”nnen Sie z.B. /List verwenden (wobei Sie h„ufig einige šberraschungen erleben werden, im Positiven, wie im Negativen). Wenn Sie den Landescode eines gewnschten Landes nicht kennen, k”nnen Sie stattdessen auch einfach den Namen des gewnschten Landes (in Deutsch und Englisch), die internationale Kurzbezeichnung, das inter- nationale Autokennzeichen oder das Krzel fr das Tastaturlayout (KEYB konform) angeben. COUNTRY.EXE durchsucht dann eine interne Datenbank und gibt den entsprechenden Landescode aus (auf diese Weise l„át sich COUNTRY.EXE auch als Telefon-Vorwahlverzeichnis zweckentfremden). Da es allerdings einige L„nder mit mehreren oder gar keinen Vorwahl- nummern, Doppeldeutigkeiten in der Bezeichnung, o.„. gibt, kann nicht sichergestellt werden, daá immer der korrekte Eintrag gefunden wird. Alle von mir bisher katalogisierten DOS-Versionen verwenden bisher nur einen kleinen Bruchteil der m”glichen Landescodes. Wenn COUNTRY.EXE also ausgibt, daá das gewnschte Land nicht untersttzt wird, kann dies einerseits bedeuten, daá dieses Land nur in Ihrer speziellen Konfiguration nicht untersttzt wird (und ggf. eine anderen COUNTRY.SYS Datei vom Hersteller verfgbar ist), oder daá es bisher noch berhaupt keine Untersttzung fr dieses Land in irgendeinem DOS gegeben hat (Devise: "Do it yourself"). Manche Landesnamen k”nnen auch aus mehreren W”rtern bestehen, in diesem Fall mssen Sie die einzelnen W”rter an der Kommandozeile mit einer Tilde verbinden, etwa: COUNTRY /C:United~States 6) Hinweise zu CUI_LIB: Die komfortablen Konfigurationsm”glichkeiten verdankt COUNTRY.EXE der Verwendung von CUI_LIB. Sie gelten fr alle CUI_LIB-Applikationen. Aufrufparameter kommen aus drei verschiedenen Quellen, die hinter- einander gesetzt und gemeinsam ausgewertet werden: - der wirklichen Kommandozeile oder %CmdLine% - der Umgebungsvariable %CountryCMD% (sofern die Datei COUNTRY.EXE heiát) - speziellen Eintr„gen in der Rubrik > einer Klarschrift- Konfigurationsdatei (normalerweise namens DESCRIPT.ION in 4DOS/NDOS kompatiblem Format, aber auch dies kann bersteuert werden...) In der Parameterzeile k”nnen die Parameter in nahezu beliebiger Syntax angegeben (angepaát an den optionalen SwitChar) und auch soweit abgekrzt werden, wie im Hilfeschirm durch Groábuchstaben (und - mit ANSI - hervorgehobene Farben) signalisiert wird (Groá- und Kleinschreibung ist selbstverst„ndlich wahlfrei und wird landesabh„ngig umgesetzt). Sie k”nnen auch Umgebungsvariablen verwenden (wie blich mit %var% einrahmen) und bereits innerhalb der Aufrufzeile auf andere Kommando- zeilenparameter mit %0%..%9% usw. zugreifen. Ebenso ist auch die Angabe von erst sp„ter einzugebenden Parametern m”glich, indem Sie an der jeweiligen Position %?% bzw. %?"meldungstext"% oder gar %?"meldungstext"default-wert% platzieren. In diesem Fall fragt COUNTRY.EXE vor dem Start nach den konkreten Werten dieser Parameter. Auch hier k”nnen wieder Umgebungsvariablen angegeben werden, z.B.: COUNTRY %?"Welches~Land~soll~eingestellt~werden?"Deutschland% Der optionale Default-Wert wird angenommen, wenn der Benutzer nur mit auf die Frage nach dem richtigen Land antwortet. Bei Verwendung der Ausgabeumleitung werden diese Nachfragen unter- drckt und automatisch gestrichen bzw. mit dem optionalen Default- Wert besetzt. Bedenken Sie, daá bei Eingaben direkt am 4DOS/NDOS-Prompt die '%'- Zeichen verdoppelt werden mssen und, daá %?% unter 4DOS/NDOS auch noch eine andere Funktion besitzt und man durch die Anzahl der '%'- Zeichen am Prompt zwischen beiden v”llig unterschiedlichen Variablen unterscheiden kann. Um den Umgang mit Umgebungsvariablen noch flexibler zu gestalten, mssen diese nicht unbedingt aus der wirklichen Umgebung kommen. Innerhalb der Konfigurationsdatei (normalerweise DESCRIPT.ION) k”nnen sie auch in einer speziellen Rubrik % definiert werden, wobei auch hier Querbezge und zwei Hierarchieebenen (konkrete Datei oder gesamtes Verzeichnis) m”glich sind. Ein einzelnes '?' oder '&' am Ende der Parameterzeile aktiviert einen Online-Eingabemodus, in dem man flexibel Umleitungsdateien, Listen- dateien mit weiteren Parametern, Makros und konkrete Tastatureingaben verknpfen kann, etwa: COUNTRY /country=49 ? Diese Eingabem”glichkeit arbeitet auch bei Ausgabeumleitung (wobei dann der Prompt normalerweise nicht zu sehen ist). Neben den Aufrufparametern k”nnen Sie mit Hilfe dieser Methoden auch das Erscheinungsbild der Applikation ver„ndern, die Farb- gestaltung verstellen, sowie eine Vielzahl der Betriebssystem- Parameter bersteuern. Die Einzelheiten k”nnen an dieser Stelle nicht erl„utert werden, hierfr sei auf die frei erh„ltliche Datei CUI_LIB.PAS verwiesen. Die Einstellungen k”nnen default-m„áig in englischer Sprache vorgenommen werden (die Default-Einstellung von CUI_LIB ist "SET cui=fast"). Setzen Sie jedoch die Variable "SET cui=on", so k”nnen Sie diese Eingaben auch multilingual vornehmen (was bei der derzeitigen frhen Implementation von CUI_LIB allerdings recht viel Rechenzeit ben”tigt und daher derzeit nicht die Default- Einstellung ist). Sollten Probleme auftreten, k”nnen Sie mit "SET cui=off" die CUI-Funktionen auch komplett abschalten und interne Default-Einstellungen verwenden. Sollten Sie (unbliche) Probleme mit der ANSI-Farbgestaltung bekommen, k”nnen Sie mit "SET ansi=on|off" bzw. "SET _ansi=on|off die interne Behandlung bersteuern. Einige Funktionen sind erst krzlich zu CUI_LIB hinzugefgt worden, sollten Sie damit Probleme bekommen, k”nnen Sie z.B. TRUENAME-Support mit "SET truename=on|off", Konvertierung von Long-Filenames in das 8.3-Format mit "SET lfn=on|off" oder die automatische, optionale Verwendung von %CmdLine% statt der wirklichen Kommandozeile mit "SET lcmd=on|off" steuern. Insgesamt stehen ber 30 derartige Schalter fr spezielle Einstellungen zur Verfgung. Fr Details sei auf die CUI_LIB-Dokumentation verwiesen. Ein paar Beispiele fr Aufrufparameter, z.B.: /Country=49 /COUNTRY:49 /Count=49 /C=49 Auáerdem k”nnen Sie bool'sche Parameter auch negieren (wobei es aber derzeit noch nicht m”glich ist, bereits angegebene Parameter zu l”schen), etwa: /Force=off Zahlenangaben k”nnen in allen g„ngigen Zahlensystemen und Notationen angegeben werden: Dezimalzahlen: 100 #100 #100# 100d &D100 Hex-Zahlen: $64 x64 0x64 &H64 64h 064h 064$ Bin„rzahlen: %1100100 0%1100100 1100100b &B1100100 Anstellen der blichen ['0','1'] Ziffern sind auch ['L','H'] oder ['F','T'] erlaubt, drfen dann aber nicht vermischt werden. Oktalzahlen: @144 144o &O144 Zeichen: 'd' "d" "ab" Umgebungsvariablen (SET test=100): %test% Erweiterte Kommandozeilenparameter, z.B.: COUNTRY.EXE /HELP=%2% 100 Fr ganz spezielle F„lle gibt es fr alle CUI_LIB Applikationen einen Notausstieg (z.B. in Batchjobs oder bei Problemen): Drckt man w„hrend des Programmstarts dauerhaft die Tastenkombination ++, so wird die Anwendung nicht gestartet, sondern es erscheint eine Meldung, die zum Loslassen dieser Tastenkombination auffordert. Danach wird COUNTRY mit Errorlevel 0 abgebrochen. --------------------------------------------------------------------------- Sollten Sie fern”stliche oder andere exotische Public Domain/FreeWare COUNTRY.SYS Dateien besitzen, w„re es nett, wenn Sie sie mir fr weitere Untersuchungen zuschicken k”nnten. Rckmeldungen willkommen. Viel Spaá und Erfolg, Matthias Paul ---------------------------------------------------------------------------