JXX-Commands: "Jump If ..."

<< Click to Display Table of Contents >>

Navigation:  3. Script Language > JXX. - Jump - Instructions >

JXX-Commands: "Jump If ..."

JRR. - Jump and Reset Return-Stack

Previous Top Next


MiniRobotLanguage (MRL)

 

JRR. Conditional Jump

Jump and Reset Returnstack

 

 

Intention

 

Error-handling in Subroutines. Imagine you have called a subroutine using JSR.

Normally you would return from there using RET. And then continue your script.

Now there is an error or special condition. You want to jump directly to the error-handler in the main-script. Or you want to just re-run the complete script from start?

 

If you do just that, there will be more and more useless entries on the so called "Return stack". That is the place, where each JSR./GSB. remembers where to jump back in case of a return (RET.). Now comes JRR.

With JRR. you can clear the RET.-Stack and make the robot forget all previous GSB./JSR. Usage is simple, use:

 

 

' This will clear the complete Return Stack

JRR.restart

 

You can also choose to remove only the the last P2-number of entries from the return stack if a number is given for P2.

 

' ... will only remove the last entry

JRR.restart|1

 

And then you can just re-run the Script or do whatever is needed.

 

You can use JRR. on any of the following cases. Note in the case of FEX.-Instructions that you should prefer to use EFX. if you want to stop the enumeration.

 

•     STW. - Description with the "W", or "V"-Option

•     ! SCW - Search-Child-Window with the "W", or "V"-Option

•     ITW. with the "W", or "V"-Option

•     ICW. with the "W", or "V"-Option

•     JIV. - Jump-If-Variable or

•     any other of the JIX. - Jumps, when using the ":"-Label Option

•     any of the FEX.-Enumeration Instructions, important: use EFX. in that case

 

 

 

 

 

Syntax

 

JRR.P1[|P2]

 

 

Parameter Explanation

 

P1 - Label or Variable that evaluates to a Label.

         If it starts with a ":" (colon) a JSR. - Jump SubRoutine (Label) (GOSUB like)

        Jump is done instead of the normal JMP. - Jump to Label (GOTO like) Jump..

 

P2 - if omitted the completed Return Stack is cleared. If a number is given, the

         number of entries is been removed from the return stack.

 

 

 

Example

 

'***********************************************

' Example 1 - without Parameters,

'***********************************************

: $$AAA=10

:restart

JSR.Laba

CAL.$$AAA=3+(9*$$AAA)+2.5

PRT. Resultat ist: $$AAA

END.

 

:Laba

IVV.§§AAA=10

 : §§AAA=9

 JRR.restart

EIF.

RET.

 

ENR.

 

 

 

 

 

Remarks

 

Alternatively you can use JMP.retry|r

 

 

 

Limitations:

 

-

 

 

See also:

                       

•     RRS. - Reset Return Stack

•     RET. - RETurn

•     JSR. - Jump SubRoutine (Label)

•     JMP. - Jump to Label

•     JIV. - Jump-If-Variable

•     JIZ. - Jump-If-Zero

•     JIN. - Jump if Not zero

•     JOR. - Jump On Repeat-Count

•     JME. - Jump on More or Equal

•     JLE. - Jump on Less or Equal