Sichtbarkeit von Variablen

Manchmal möchte man sich auch Variable ansehen, die im Programm an der aktuellen Stelle nicht sichtbar sind, etwa weil sie lokal bzgl. einer anderen Routine sind oder weil sie von lokalen Variablen überschrieben werden. In diesem Fall muß man Variablennamen mit dem Gültigkeitsbereich (''Scope'') versehen. Die Syntax unterscheidet sich hier für Fortran und C, da sich auch die entsprechenden ''Scope''-Regeln sehr unterscheiden. Eine Fortran-Variable kann man allgemein ansprechen in der Form
    ROUTINEN-NAME`VARIABLEN-NAME
Befindet sich die Programm-Ausführung etwa in der Routine getvec in Zeile 21, so erhält man mit ''print i'' den Wert der lokalen Variablen i, bei der ersten Iteration also 1. Dagegen liefert ''print getmat`i'' den Wert 101, nämlich den Wert von i in getmat nach Beenden der Schleife.
In C lautet die allgemeine Syntax
     FILE-NAME`ROUTINEN-NAME`[BLOCK-LISTE`]VARIABLEN-NAME ,
weil der Gültigkeitsbereich einer Variablen hier auch ein File oder aber nur einen Block umfaßen kann. Die Block-Liste ist nur nötig, falls man innerhalb von Blöcken, die kleiner sind als der Rumpf einer Routine, lokale Variable deklariert. Näheres dazu mit ''help scope''. Statt globale Namen für verdeckte Variable zu benutzen, kann man auch den Zustand des Stacks verändern, um aus der Tiefe der aufgerufenen Routinen wieder zurückzugehen. Als Beispiel nehmen wir an, daß sich das Programm linalg gerade in der Routine LUBKSB befinde, die von LUINV aufgerufen wurde, diese wiederum von LINALG. Im Menü ''ProcessWindows'' des Source-Fensters kann man durch Auswahl von ''create Stack'' ein Stack-Fenster öffnen, in dem die Hierarchie der aufgerufenen Routinen dargestellt wird. Nach Anklicken der gewünschten Routine erscheint ein Fenster, in dem die Werte aller Argumente und lokalen Variablen des entsprechenden Frames dargestellt sind. Wer ohne eine X-Umgebung arbeitet, kann sich die entsprechenden Informationen über Kommandos besorgen. Näheres dazu unter den Stichworten ''backtrace'' und ''frame'' des Online-Helps.

previous    contents     next

Peter Junglas 18.10.1993