FN

Aus C64-Wiki
Wechseln zu: Navigation, Suche
FN
Format: FN <Funktionsname>(<Ausdruck>)
Parameter
<Funktionsname>: Name der Funktion
<Ausdruck>: Wert, der der Funktion als Parameter übergegeben wird
Einordnung
Typ: numerische Funktion
Kontext: Programmstruktur
Aufgabe: Aufruf einer benutzerdefinierten Funktion
Abkürzung: keiner
Verwandte Befehle
DEF

Anmerkung: Dieser Artikel beschreibt den BASIC-Schlüsselwort FN unter BASIC V2 des Commodore 64.


Das BASIC-Schlüsselwort FN leitet zum einen den Aufruf einer selbstdefinierte Funktion ein, die mit dem BASIC-Befehl DEF im bisherigen Programmverlauf definiert worden ist und übergibt das numerisch Ergebnis des Ausdrucks als einziges Argument an die Funktion, die wiederum einen numerischen Wert retour liefert. Im anderen Fall dient FN als Bestandteil des DEF-Befehls, um eine FN-Funktion festzulegen.
Falls die Definition einer Funktion in einem Programm vorliegt und das Programm die Definition bereits verarbeitet hat, so kann auch im Direktmodus diese Funktion beispielsweise mit PRINT FN <Funktionsname>(<Ausdruck>) aufgerufen werden (bis zur nächsten Programmänderung oder bis zu einem CLR oder NEW).

Es wird nur genau ein Funktionsparameter unterstützt. Sind mehrere Parameter notwendig, müssen entsprechende Variablen, die vor dem Aufruf extra gesetzt werden müssen, verwendet werden.

Wurde im bisherigen Programmverlauf keine Funktion unter diesem Namen definiert, so erscheint die BASIC-Fehlermeldung ?UNDEF'D FUNCTION ERROR.
Fehlt das numerische Argument oder sind mehrere Argumente vorhanden bzw. ist das einzige Argument kein gültiger Ausdruck, so erscheint ?SYNTAX ERROR. Die gleiche Meldung erscheint bei der Verwendung von Variablennamen, die die Buchstabenfolge FN enthalten, wie z.B. EFNA = EFNA - 2.
Wird eine rekursiv definierte Funktion aufgerufen, so folgt darauf ein Abbruch mit der Meldung ?OUT OF MEMORY ERROR.

Sonstige Fehler in der Definition des Funktionsausdrucks: Liefert der Ausdruck kein numerisches Ergebnis oder wird die Funktion in einem nicht numerischen Kontext aufgerufen, bricht das Programm mit ?TYPE MISMATCH ERROR ab oder ?ILLEGAL QUANTITY ERROR beendet den Programmlauf, wenn ein Eingabeparameter einer Funktionen keinen gültigen Wert aufweist.


Beispiele[Bearbeiten]

Direktnutzung bei vorheriger Definition, wenn zuvor die Ausführung mit DEF abgearbeitet wurde ...

PRINT FN TEST(3) 
PRINT FN LO10(A) 

Die Verwendung von FN im Programmcode:

10 A = FN DATEN1 (X) - FN JAHR2(Y)
20 H = H + 1: IF FN TE3 (H+1) = 6 THEN 20

Typische Umsetzung und Nachbau der häufig gebrauchten Funktion zur Adressermittlung, wie sie von diversen anderen BASIC-Interpretern mittels der Funktion DEEK() bereit gestellt wird:

10 DEF FN DEEK(A)=PEEK(A)+PEEK(A+1)*256
20 PRINT "BASIC-PROGRAMMLAENGE IN BYTES:" FN DEEK(45) - FN DEEK(43)