Diese Information gilt Versionen 2.00, 2.10 und 3.00 für Microsoft QuickBASIC Versions 1.00 1.00a, 1.00b Microsoft BASIC Compiler Version 1.00 und Microsoft-Basisinterpreter für das Apple Macintosh.
Die folgende "gültige" Basisanweisung kann ein System Error verursachen:
B=2 : B ' This is the same as B=2 : CALL B
Da B nicht als ein Systemsteuerungs-teilprogramm definiert worden ist, setzt BASIC voraus, dass Sie die machine-language Routine an der Adresse (2) aufrufen, die in B enthalten wird. Normalerweise werden Sie ein System Error abrufen und Sie müssen neu starten, weil Sie eine machine-language richtige Routine noch an dieser Adresse nicht gelegt haben. Das ist "beispielsweise implizites CALL eine spezielle CALL-Syntax die eine explizite Call-Anweisung nicht benötigt". Weitere Informationen über implizite Anrufe finden Sie in der CALL-Anweisungsdokumentation.
Ein weiteres Beispiel ein impliziter ANRUF, der das System hängt, befindet sich:
C - D = E
Sie können eine Anweisung oben von wie versehentlich eingeben aber diese perfekt rechtliche Syntax teilt als einen relationalen Operator statt des Zuweisungsoperators BASIC mit, ein Gleichheitszeichen (=) zu verwenden. Der obige Ausdruck D = E gibt dann einen Wert True (-1) zurück, wenn C, D und E gleich Null (von Standard) sind. C minus -1 entspricht +1. Der Wert des Ausdrucks C-D = daher ist E +1. Das einzeilige Programm C-D Bestehen einen implizite ANRUF an der Codecomputerroutine an der Adresse +1 Testament E daher =, das eine gültige Routine nicht ist; ruft einem System Error an diesem Punkt, den Computerhang oder Ihnen ab. ( "Relationalen Operatoren in dem Index" schlagen Sie bitte für weitere Information nach der " Microsoft BASIC Compiler-Version 6.00 für MS OS/2 und MS-DOS: GRUNDLEGENDE Sprachenreferenz. " )
Versehentlich das Ausführen eines impliziten unbeabsichtigten Aufrufs bei dem Debuggen in dem Befehlsfenster des Interpreter ist einfach. Wenn Sie einen Variablenname in dem Befehlsfenster einfach eingeben und wenn die Return-Taste drücken, werden Sie wahrscheinlich hängen, da das sich um ein syntaktisch rechtliches implizites CALL handelt und die Zahl, die in der Variablen gespeichert wird, keine gültige Adresse fast sicherlich von ausführbarem Maschinencode ist.
Dieser Prozess kann ebenfalls bei dem Verschieben des Codecomputerarray zwischen dem Mal, zwischen dem Sie seine Adresse übernehmen und den AUFRUF durchführen, auftreten. Aus diesem Grund warnen das 2.x "Microsoft BASIC Interpreter for Apple Macintosh" Version und 3.00-Handbuch Sie, die Adresse SOFORT vor dem Aufruf wie dem folgenden Programmfragment immer überzunehmen:
code# = VARPTR( MyCode%(0) ) 'get address of my machine code array
code# arg1%,arg2% 'call my routine