gültigkeit einer Variable

  • Hallo,


    mal angenommen ich habe in einer test.dat eine globale Variable INT Test=1 angelegt
    und will nun in einem global lokalen Unterprogramm im test.src eine genauso benannte
    Variable verarbeiten --> Meine Frage: Welcher Wert wird verwendet (der reinkommt ins USER_INIT) oder (der Wert aus der Datenliste)??


    ;------------------------------------------
    DEF Test ( )


    END
    ;------------------------------------------
    GLOBAL DEF USER_INIT (Test:IN)
    INT Test,TempTest


    TempTest=Test


    END
    ;------------------------------------------



    Rainer

    - Ehrlichkeit, die im Pfandhaus gelandet ist, wird nie mehr eingelöst. - (Thomas Middleton (1580-1627), engl. Dramatiker)

  • Schritt für Schritt zum Roboterprofi!
  • Hallo,


    nach den Regeln der Programmierkunst werden ueblicherweise Bezeichner erst im lokalen Scope aufgeloest, und dann (aufsteigend) in den globaleren Scopes.
    D.h. in USER_INIT wird auf das Prozedur-Arg. Test zugegriffen. Die globale Var. Test in der .dat-Datei sollte "eclipsed" (nicht zugreifbar) sein, solange eine lokale Var./Arg. mit dem gleichen Namen existiert.
    Mit der Aufloesung des Variablenbezeichners ist (im Interpreter) die Bestimmung der Speicheradresse der Variablen verbunden.
    Globale und lokale Var. haben immer getrennte Speicheradressen. (Ausnahme: Argumente, die call-by-reference - also mit :OUT - vereinbart wurden.) Daher kann der Wert der globalen Variablen in der lokalen nicht auftauchen, solange nicht eine entspr. Zuweisung stattgefunden hat.


    In meinem (etwas aeltlichen) Handbuch steht uebrigens dazu:
    "In lokalen Unterprogrammen bzw. Funktionen sind alle im Hauptprogramm deklarierten Variablen bekannt, sofern sie nicht im Unterprogramm bzw. in der Funktion noch einmal unter dem selben Namen deklariert wurden."


    Gruss, Dirk.

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden