ASC

Aus C64-Wiki
Wechseln zu: Navigation, Suche
ASC
Format: ASC(<Zeichenkette>)
Parameter
<Zeichenkette>: Zeichenkettenausdruck
Einordnung
Typ: Funktion numerisch
Kontext: Stringbearbeitung
Aufgabe: PETSCII-Code des ersten Zeichens eines Zeichenkette ermitteln
Abkürzung: aS
Verwandte Befehle
CHR$

Anmerkung: Dieser Artikel beschreibt die BASIC-Funktion ASC unter BASIC V2 des Commodore 64.


Die BASIC-Funktion ASC() ermittelt den PETSCII-Code des ersten Zeichens der Zeichenkette (String) als Zahl von 0 bis 255.

Ist das Argument keine Zeichenkette, so erscheint die BASIC-Fehlermeldung ?TYPE MISMATCH ERROR. Fehlt das Argument oder sind zu viele angegeben, erscheint ?SYNTAX ERROR.

Wenn das zu prüfende Argument ein Nullstring ist (leere Zeichenkette), gibt BASIC immer die Fehlermeldung ?ILLEGAL QUANTITY ERROR aus. Bei BASIC 7.0 wird dies nicht mehr als Fehler gesehen, sondern stattdessen 0 retourniert.

Für die Rückumwandlung, also ASCII-Code-Zahl in ein Zeichen, ist die BASIC-Funktion CHR$() zuständig.

Beispiele[Bearbeiten]

Einfache[Bearbeiten]

PRINT ASC("A")          Auf dem Bildschirm wird 65 ausgegeben.
PRINT ASC("ABC")        Auf dem Bildschirm wird ebenfalls 65 ausgegeben.
PRINT ASC("" + CHR$(0)) Auf den Bildschirm wird eine 0 ausgegeben.
PRINT ASC("")           "?ILLEGAL QUANTITY ERROR" wird ausgegeben (Erklärung siehe oben).

BASIC 7.0[Bearbeiten]

PRINT ASC("")           Kein Fehler mehr, zeigt den Wert 0 an!

Sequenzielle Datei byteweise lesen[Bearbeiten]

 10 Z$=CHR$(0)
 100 OPEN 2,8,3,"FILENAME,S,R"
 110 FOR S=-1 TO 0
 120 GET#2,A$
 130 A=ASC(A$+Z$)
 140 S=ST=0
 150 PRINT A;
 160 NEXT S
 170 CLOSE 2
 ...

Das Verhalten von GET# muss besonders behandelt werden. Es liefert bei einem gelesenen CHR$(0) eine leere Zeichenkette! Daher:

  • Ist A$ leer, erhält man durch die Addition mit Z$ (entspricht CHR$(0)) die gewünschte Zeichenkette CHR$(0).
  • Ist A$ nicht leer, stört die Zeichenketten-Addition nicht, da ASC() nur das erste Zeichen verwendet.

Es empfiehlt sich CHR$(0) in eine Variable abzulegen, da damit das Programm schneller abgearbeitet wird und Platz spart. Die FOR-NEXT-Schleife bricht ab, wenn ST ungleich 0 ist (also bei einem Fehler oder Dateiende), was logisch dann 0 ergibt (und die Schleife beendet), andernfalls wird (ST=0) wahr, was -1 entspricht und die Schleife weiterführt.

Verwandte Themen[Bearbeiten]