GLOBAL.KRS¢*************************************¢* *¢* GLOBALE *¢* und *¢* LOKALE *¢* Variablen *¢* *¢*************************************¢¢¢¢¢¢¢Globale Variablen sind die Variablen,¢die von jeder PROC und FUNC aus¢erreichbar sind. Die globalen werden¢ganz normal am Anfang eines Pro- ¢grammes definiert oder nach einem¢MODULE Befehl, doch dazu spaeter¢mehr.¢¢Lokale sind Variablen die innerhalb¢einer PROC oder FUNC definiert¢sind. Diese sind dann auch nur in ¢dieser PROC erreichbar.¢Die Parameter sind auch lokale V.,¢denn sie sind ja auch nur inner-¢halb der jeweiligen PROC erreichbar.¢¢Wie die Parameter definiert werden,¢ist aus den obigen Beispielen (PROCs)¢ersichtbar.¢Die lokalen Variablen werden direkt¢hinter dem PROC+name mit Parameter-¢definition vereinbart: z.B.:¢¢ PROC ZAPPER(BYTE NUM,CARD ATARI)¢ BYTE LOKALE CARD XE ; hier lokale¢ ; Variablen¢ .¢ .¢ .¢ .¢ RETURN¢¢Die lokalen V. dienen der Uebersicht-¢lichkeit, denn sie werden nur dort¢definiert, wo sie auch wirklich¢gebraucht werden. Man koennte statt¢der LOKALEN ja auch GLOBALE nehmen.¢¢PROCeduren intern:¢¢Die Proceduren werden (compiliert)¢mit "JSR" aufgerufen. "JSR" ist ¢der "GOSUB" Befehl in Maschinen-¢sprache.(Jump to SubRoutine)¢ ^ ^ ^¢¢Wie man weiss, muss ein Unterprogramm¢mit einem "RETURN" enden.Zufaellig¢lautet auch in Action! diese Anweis-¢ung "RETURN". Compiliert ist dies¢ein einfaches "RTS" (ReTurn from¢Subroutine) ^ ^¢^¢¢PARAMETER intern:¢¢Die Parameter werden BYTE-weise¢uebertragen:BYTE benoetigt 1 BYTE,¢CARD und INT 2 Byte.¢¢Hat eine Prozedur z.B: eine BYTE und¢eine danache eine CARD Variable und¢werden bei dem Prozedur-aufruf zu-¢erst die CARD und dann die BYTE¢Variable uebergeben, so hat das¢BYTE Parameter nach dem Aufruf das¢LSB (Das 1. BYTE der CARD V.) und¢das CARD Parameter die anderen Bytes¢in Reihenfolge.¢¢z.B:¢¢ PROC P_DEMO(BYTE B,CARD C)¢¢ PRINTBE(B)¢ PRINTCE(C) ¢ ¢ RETURN¢¢ PROC AUFRUF()¢¢ P_DEMO(1,256)¢ P_DEMO(256,1)¢ ¢ RETURN¢¢¢Der MODULE Befehl:¢¢Der allgemeine Programmaufbau ist¢schon einmal erklaert worden.Hier¢nochmal:¢¢1. Variablenvereinbarung (globale)¢2. Prozduren¢ .¢ .¢ .¢¢Man erkennt, dass man nur einmal¢in einem Programm GLOBALE Variablen¢definieren kann. Mit MODULE ist es¢aber mehrmals moeglich:z.B.:¢¢ Variablenvereinbarung (globale)¢ Prozeduren ¢¢MODULE¢¢ Variablenvereinbarung (globale)¢ Prozeduren ¢¢MODULE dient also dazu, um Beispiels-¢weise zwei Programme zu einem zu¢machen oder Programmteile, wenn ¢mehrere Programmierer zusammen-¢arbeiten, zusammenzufuegen.¢¢Die globalen Variablen ,die nach¢einem MODULE definiert werden,¢koennen natuerlich nicht in PROCs¢verwendet werden, die VOR dem¢MODULE stehen.¢¢MODULE ist eine sogenannte¢¢¢ COMPILERDIREKTIVE.¢¢¢So eine COMPILERDIREKTIVE hat nicht¢auf den Programmlauf Auswirkungen,¢sondern nur waehrend des Compilierens¢MODULE verannlasst den Compiler also¢nur neue globale Variablen zu ver-¢einbaren.¢¢Ein Beispiel:¢¢¢BYTE XPOS,YPOS¢¢PROC LINE(BYTE X0,Y0,X1,Y1)¢ PLOT (X0,Y0)¢ DRAWTO (X1,Y1)¢RETURN¢¢MODULE ; ***************************¢¢BYTE I¢¢PROC MAKE_DEMO()¢¢FOR I=0 TO 79 STEP 2¢ DO¢ LINE(0,0,159,I)¢ OD¢RETURN¢¢MODULE ; ***************************¢¢BYTE KEY¢¢PROC MAIN()¢ ¢ GRAPHICS(7)¢ COLOR=1¢ MAKE_DEMO()¢¢ PRINTE ("Bitte Taste druecken")¢ KEY=GETD(7)¢RETURN¢¢¢Die einzelnen Befehle (PLOT,DRAWTO)¢duerften dem aufmerksamen Leser nicht¢entgangen sein. Sie funktionieren¢genauso wie in Basic. Nur ist die¢Syntax anders... Aber das sieht man¢ja.¢¢Der Kurs geht weiter mit :¢¢¢ FUNC.KRS¢¢