Zeichenfolge-Kodierung in MCOSMOS: das @-Werkzeug der parametrischen Programmierung
Warum unsere Teileprogramme mit Text arbeiten
Ein Messprogramm, das nur ein einziges Teil kennt, ist schnell geschrieben. Interessant wird es bei Serien, Varianten und Wiederholmessungen: Dann sollen Protokollnamen, Elementnamen und Nominalwerte zur Laufzeit entstehen, nicht beim Programmieren. In GEOPAK gibt es dafür einen unscheinbaren Hebel: das @-Zeichen. Überall, wo die Software Text erwartet — in Dateinamen, Elementnamen, der Formelberechnung, Textausgaben oder Dialogvorschlägen — ersetzt sie @-Schlüsselwörter durch den aktuellen Wert.
Eine Eigenheit muss man dabei verinnerlichen: Die Textanalyse läuft vor der eigentlichen Berechnung. Steht in der Formelberechnung Var1 = @StrLen(Text)+1, wird zuerst der Text ersetzt (Var1 = 4+1) und erst danach gerechnet (Var1 = 5). Wer diese Reihenfolge im Kopf hat, versteht auch verschachtelte Ausdrücke auf den ersten Blick.
Die Bausteine, mit denen wir arbeiten
Variablen und Formeln
@(VarName)— Wert einer numerischen Variablen einsetzen@[TxtVarName]— Inhalt einer Textvariablen einsetzen@Formula(x)— rechnet wie die Formelberechnung, direkt im Text@ResVarExist("...")/@StrVarExist("...")— prüfen, ob eine Variable existiert (1 oder 0)
Zeichenketten zerlegen und umbauen
@StrLen,@StrPos— Länge und Suchposition@StrLeft,@StrRight,@SubStr— Teile herausschneiden@StrChg/@StrChgAll— erste bzw. alle Fundstellen ersetzen@StrGetStr("42.1;18.03;7.5", ";", "2")— liefert das zweite Feld einer getrennten Liste (hier: 18.03);@StrGetNummacht dasselbe für Zahlen — das Arbeitspferd, wenn Nominalwerte aus einer CSV-Datei kommen@StrCmp/@StrICmp— Vergleich mit und ohne Beachtung der Grossschreibung@FileExist("Pfad")— 1, wenn die Datei existiert
Programm-Informationen und Zähler
@PartProgName,@Partname,@Revision,@Operator— fürs Protokoll und für Dateinamen@RC(Wiederholungszähler),@LC(Schleifenzähler),@NoOfLC,@LoadedVars— die Zähler der Schleifentechnik@ElementName[CR, 5]— Name des fünften Kreises; funktioniert für alle Elementtypen (PT, LN, CR, PL, CY …)@Time,@Date,@TimeCode— Zeitstempel; Pfad-Schlüsselwörter wie@PartPathoder@CosmosTempPathersparen fest verdrahtete Verzeichnisse
Formatierung: die Zahlen hinter dem Doppelpunkt
Hinter jedem Schlüsselwort steuern bis zu drei Angaben das Format. Bei Zahlen: :Gesamtlänge:Dezimalstellen:z — negative Gesamtlänge heisst linksbündig, z erzeugt führende Nullen. Bei Textvariablen: :Gesamtlänge:Anzahl Zeichen:Startposition. So schneiden wir Spalten aus Festformat-Dateien: @[Zeile]:0:10:11 liefert die Zeichen 11 bis 20.
Fünf Handgriffe aus der Programmierpraxis
1. Textvariablen sichtbar machen. Beim Entwickeln lassen wir einen Kommentar-Dialog offen — dort sind die aktuellen Werte der Textvariablen jederzeit sichtbar, und Fehler in verschachtelten Ausdrücken fallen sofort auf. Der Befehl «Textvariablen definieren» zeigt zudem die komplette Liste aller Kodierungen.
2. Elementnamen zählen sich selbst hoch. Kr@Formula(CR.MaxNo+1):3:0:z erzeugt Kr001, Kr002, Kr003 … — CR.MaxNo liefert die höchste vergebene Kreisnummer, die Formatierung sorgt für drei Stellen mit führenden Nullen. Niemand vergibt mehr von Hand Namen.
3. Protokolle überschreiben sich nicht. @PartProgName liefert den Vorschlag für den Dateinamen, @Date oder @TimeCode machen ihn eindeutig — jede Wiederholmessung bekommt ihre eigene Ausgabedatei.
4. Die Serie steuert sich über eine CSV-Datei. Nominalwerte lädt das Programm mit «Textvariablen laden», @LoadedVars begrenzt die Schleife, @[Zeile@Formula(@LC-1):0] greift auf die aktuelle Zeile zu und @StrGetNum trennt die Felder heraus. Neue Positionen heisst dann: Datei anpassen, Programm unverändert lassen.
5. Erst prüfen, dann zugreifen. @FileExist vor dem Einlesen und @StrVarExist vor dem Verwenden einer Variablen ersparen Abbrüche im Wiederholbetrieb — gerade wenn das Programm später unbeaufsichtigt läuft.
Warum das für Ihre Messprogramme zählt
Diese Technik macht aus einem einmaligen Teileprogramm eine wiederverwendbare Vorlage: Variablen statt fester Werte, Dialoge statt Handarbeit, externe Steuerdateien statt Programmkopien. Bei der Messprogrammerstellung für Mitutoyo MCOSMOS gehört die Zeichenfolge-Kodierung deshalb zum Standard — von automatisch nummerierten Elementen bis zur Serienmessung, die ihre Nominalwerte aus einer CSV-Datei zieht. Wie wir Messprogramme generell aufbauen und einfahren, steht auf der Übersichtsseite.