USE

Aus C64-Wiki
Zur Navigation springenZur Suche springen
USE
Syntax: USE <format>, <wert>
Parameter
format: Format-Vorlage
wert: Zahl als String
Einordnung
Typ: Anweisung
Kontext: kontrollierte Zahlenausgabe
Aufgabe: dezimalorientierte Ausgabe von Zahlen
Abkürzung: keine
Token: $64 $2c (100 44)
Verwandte Befehle
CENTRE - AT


Dieser Artikel beschreibt das Simons'-Basic-Schlüsselwort USE.

Typ: Anweisung
Syntax: USE <format>, <wert>

USE dient zum Formatieren von Zahlen, so dass sichergestellt ist, dass Dezimalpunkte immer an der gewünschten Position stehen. In BASIC-Dialekten auf PCs, aber auch bei BASIC 3.5 hat USE seine Entprechung in der verbreiteten Form von "USING" als Zusatz zu PRINT (PRINT USING <string>, <zahlenliste>, zu deutsch: "Drucke die <zahlenliste>, indem du <string> als Vorlage benutzt"). In Simons' Basic ist der Befehl eigenständig und gilt nur für eine Zahl, statt für eine Liste. Die Zahl muss (leider) zusätzlich vor der Benutzung in eine Zeichenkette umgewandelt werden.

In <format> (der Formatvorlage) kann beliebiger Text an beliebiger Stelle stehen, die Ziffern der Zahl in Parameter <wert> werden jedenfalls auf Platzhaltersymbole ("#", Rautenzeichen, für jede Ausgabeziffer steht ein Platzhaltersymbol) aufgeteilt. Das Trennzeichen zum Nachkommateil der Zahl <wert> ist der "." (Dezimalpunkt). Es spielt dabei keine Rolle, ob die Platzhalter zusammenhängend geschrieben werden. Sogar weitere Zeichen dürfen in der Platzhalterfolge enthalten sein, z. B. das Hochkomma (brauchbar, um Tausender zu trennen).

Beachten: Zahlen, die nicht vollständig in die vorgesehene Anzahl der Platzhalter passen (nur drei "#", aber die Zahl ist vierstellig) werden ohne Fehlerhinweis einfach falsch wiedergegeben (die höchstwertigen Stellen fehlen!) Außerdem rundet USE Dezimalstellen, die herausfallen, weil etwa auf zwei Nachkommastellen begrenzt wird, nicht (weder kaufmännisch noch sonst irgendwie)! Ein dritter Fehler im USE-Befehl führt dazu, dass man nur eine Zahl formatieren kann. Diese drei Mängel machen den Befehl völlig ungeeignet für seriöse Anwendungen.

Hinweise:

  • Nach der Ausgabe führt USE keinen Zeilenwechsel aus, um mehrere Zahlen formatiert aneinanderreihen zu können. Für den Zeilenwechsel muss man gesondert mit einem PRINT sorgen.
  • Im Direktmodus akzeptiert USE weder für den Formatstring noch für den Zahlstring eine Konstante, sondern gibt einen ?SYNTAX ERROR aus.


Dieser Befehl wurde in TSB sowohl um weitere Funktionen ergänzt als auch so überarbeitet, dass er nunmehr voll funktionsfähig ist, siehe USE (TSB).


Beispiel[Bearbeiten | Quelltext bearbeiten]

100 f$="Nr. ##: EUR ###.##"
110 FOR i=1 TO 10
120 z$=STR$(i)+STR$(RND(1)*201)
130 USE f$, z$: PRINT " " z$
140 NEXT

Das Programm soll 10 nummerierte Geldbeträge ausgeben, die Ausgabe erscheint jedoch komplett fehlerhaft, weil zum einen die Formatvorlage nur für eine Zahl vorgesehen ist und die Wert-String dabei als ein einzelner Wert interpretiert wird und zum anderen der Dezimalpunkt zweimal vorkommt, was USE völlig ins Chaos stürzt.


Die Korrekte Verwendung von USE, nämlich nur für jeweils einen Wert (muss separat für jede Spaltenwert einer Tabelle aufgerufen werden):

100 f1$="Nr: ## "
105 f2$="EUR ###.##"
110 FOR i=1 TO 10
120 w=RND(1)*201
130 USE f1$, STR$(i): USE f2$, STR$(W)
135 PRINT " " i;w
140 NEXT

Hier darf auch nicht ein Punkt bei "nr." angegeben werden, da der Punkt als Dezimalpunkt reserviert ist, welcher hier durch ":" ersetzt wird.
Dennoch bleibt das Problem, dass die Rundung in der letzten angezeigten Dezimalstelle fehlt und nicht ohne großen Aufwand korrigiert werden kann.