WERKEN MET AMOS deel 41 """"""""""""""""""""""" RETURN (Ga terug vanuit je subroutine opgeroepen door een GOSUB kommando) RETURN RETURN verlaat de subroutine die eerder aangeroepen werd door het GOSUB kommmando. Het springt onmiddellijk terug naar de volgende Basic instruktie die na de oorspronkelijke GOSUB komt. N.B. Een enkele GOSUB routine verschillende RETURN kommando's kan bevatten. Op die manier kun je van elk verschillend punt uit je subroutine teruggaan afhankelijk van de situatie. POP (Wist de RETURN informatie na een GOSUB) POP Normaal kun je niet uit een GOSUB gaan met een standaard GOTO instruktie. Soms kan dat ongemakkelijk zijn, vooral als er een fout opduikt, die het onaanvaardbaar maakt om naar je programma terug te keren op het punt waar je vandaan kwam. De POP instruktie wist het RETURN adres bepaald door je GOSUB en staat je toe om je subroutine te verlaten op de manier die je wilt, zonder eerst de laatste RETURN instruktie uit te hoeven voeren. Voorbeeld: Do Gosub TEST Loop BYE: Print"Poppet out" Direct:Rem houdt subroutine apart van je hoofdprogramma TEST: Print"Hallo daar" If Mouse Key Then Pop:Goto BYE Return Zie ON GOSUB IF...THEN...[ELSE] (Kies tussen andere mogelijke akties) De IF...THEN instruktie maakt het je mogelijk verschillende vergelijkingen te doen in een Basic programma. De syntax is: IF vergelijking is waar/niet waar THEN routine 1 [ELSE routine 2] Vergelijkingen kunnen elke reeks testen zijn inklusief AND en OR. Routine 1 en Routine 2 , moeten een reeks Basic instrukties bevatten. Wil je naar en label of een regelnummer springen moet je er een aparte GOTO kommando aan toevoegen, alsvolgt: If test Then Goto Label:Rem test deze regel Als je dit vergeet en de GOTO als in het gewone Basic probeert toe te passen, beziet AMOS Basic deze label als een procedure naam en krijg je de "procedure naam niet gevonden" foutmelding. If test Then Label:Rem Dit roept een procedure op De beperking van dit IF...THEN kommando is dat je slechts een regel in je programma kunt gebruiken. Nu heeft AMOS Basic deze regel verdrongen door het meer krachtige IF...EELSE...ENDIF kommando. IF...[ELSE]...ENDIF (Gestruktureerde test) Hoewel het oorspronkelijke IF..THEN kommando heel nuttig is, is het toch ouderwets vergeleken met de moderne versie van de AMOS Basic instruktie. Hiermee kun je hele lijsten van instrukties uitvoeren afhankelijk van de uitkomst van een enkele test. IF tests=WAAR Lijst van bepalingen 1 : : : ELSE Lijst van bepalingen 2 : : : ENDIF De lijst van bepalingen kan elke reeks van AMOS instrukties zijn die je wilt, inklusief andere IF...THEN kommando's. Je kunt echter niet een normale IF...THEN instruktie in een gestruktureerde test zetten. Die moet vervangen worden door de vergelijkbare IF...ENDIF instruktie zoals: If test Then Goto Label Else Label2 Dat wordt nu: If test: Goto Label: Else goto LAbel2:Endif or: If test Goto Label Endif Hier is een voorbeeld van de IF...ENDIF instruktie in aktie: Input"Voer waarden voor a,b en c in";A,B,C If A=B Print "Gelijk" Else Print "Verschillend" If A<>B en A<>C Print" en C is ook niet hetzelfde!" End If End If Elke If instruktie moet gekoppeld worden aan en enkele ENDIF instruktie daar dit AMOS Basic precies laat weten welke groep instrukties in je test moeten worden uitgevoerd. N.B. "THEN" komt niet in deze vorm van instrukties voor. Dit zal wel een beetje wennen zijn, als je oudere Basic versies van de Commodore Amiga gewend bent. Zie AND, OR, NOT, TRUE, FALSE.