PROC

Aus C64-Wiki
Zur Navigation springenZur Suche springen
PROC
Syntax: PROC <label>
Parameter
label: Name einer Prozedur
Einordnung
Typ: Anweisung
Kontext: Strukturkontrolle
Aufgabe: Definieren einer Prozedur
Abkürzung: keine (TSB: pR)
Token: $64 $31 (100 49)
Verwandte Befehle
CALL - EXEC - END PROC


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

Typ: Anweisung 
Syntax: PROC <label>

In Simons' Basic können Unterprogramme mit einem Namen versehen werden. Sie werden dadurch unabhängig von ihrer Lage im Programm und der Programmierer kann leichter den Überblick bewahren (Namen lassen sich leichter einem Zweck zuordnen als Zeilennummern). Der Befehl PROC dient dazu, den Namen eines solchen Unterprogramms zu definieren. Ein solcher Name darf andere BASIC-Schlüsselwörter enthalten (in TSB nicht an erster Position, falls die Prozedur ohne den EXEC-Befehl aufgerufen werden soll) und darf aus mehreren, durch Leerzeichen getrennten Wörtern bestehen. Ein führendes Leerzeichen ist signifikant, d.h. es muss dann auch bei EXEC verwendet werden (gilt nicht für TSB). In der gleichen Zeile darf kein anderer BASIC-Befehl stehen.

  • Eine Prozedur darf nicht nicht innerhalb einer anderen Prozedur definiert werden. Tut man dies, so wird mit dem ersten END PROC auch die übergeordnete Prozedur beendet und die folgenden Zeilen werden nicht mehr verarbeitet - siehe Beispiel PROC in PROC.
  • Eine Prozedur mit END PROC darf erst nach ihrem Aufruf (siehe EXEC) und nach der Programmzeile mit END definiert werden, sonst führt das wie bei GOSUB und RETURN zu einem Fehler, hier ?END PROC WITHOUT EXEC.
  • PROC kann auch verwendet werden, um ein einfaches Sprunglabel zu definieren, das dann mit CALL angesprungen wird. Dies erspart ein GOTO. In TSB arbeitet CALL schneller als GOTO, da nur in einer Adressliste nach dem Label gesucht werden muss und nicht im ganzen Programm.
  • TSB: In Prozedurnamen darf die Zeichenfolge DO nicht vorkommen (wie z.B. im Wort "shadow").


Beispiele[Bearbeiten | Quelltext bearbeiten]

Ein umfangreicheres Anwendungsbeispiel beim Simons-Basic-Befehl MOB SET, Beispiel 2.

Warten auf Taste[Bearbeiten | Quelltext bearbeiten]

10 PRINT "bitte eine taste druecken!"
20 EXEC warten auf taste
30 PRINT "danke"
999 END

1000 PROC warten auf taste
1010 POKE 198,0: WAIT 198,1
1020 END PROC

Nach der Aufforderung, eine Taste zu drücken, wartet das Programm und gibt schließlich eine Rückmeldung aus.

PROC in PROC[Bearbeiten | Quelltext bearbeiten]

10 .TEST1:.TEST2
20 END
100 PROC .TEST1
110 PRINT "1"
120 PROC .TEST2
130 PRINT "2"
140 END PROC
150 PRINT "FERTIG"
160 END PROC
run
1
2
2

ready.

Von der Prozedur .TEST1 werden nur die Zeilen bis 140 (erstes END PROC) berücksichtigt.