Subroutine-oproepen zocken op dezelfde manier labels als
dit gebeurt bij een GTO-opdracht. Als een END-opdracht
wordt aangetroffen voordat een gespecificeerde label gevon-
den is, springt het zocken over naar het begin van het
Subroutines
51
00 LBLTDEMO
01
02
.
03 LBL 01
programma en gaat verder. Als er echter een opdracht RTN
wordt aangetroffen, gaat het zoeken voorbij de RTN verder.
Om deze reden is het noodzakelijk, als zich meer dan één
lokaal-gelabeld subroutinedeel binnen een programma be-
vindt, elk decl dat niet het laatste is, af te sluiten met een RTN-
opdracht. De subroutines die met globale labels beginnen
kunnen afgesloten worden met zowel een END- als een RTN-
opdracht. De subroutines die aan het eind van het program-
ma staan worden door dezelfde END-opdracht afgesloten als
waarmee het programma wordt beéndigd; het is niet nodig
een dergelijke subroutine met zijn cigen END-opdracht af te
sluiten.
04
05
06
.
07 RTN
08 LBL 02
09
10 RTN
11 LBL 03
12
13
14 END
Als een subroutine-oproep een lokale label specificeert die niet binnen het voorliggende
programma aanwezig is, of een globale ALPHA-label die niet in het programmageheugen
ofin een uitbreiding van de calculator (d.w.z. niet voorkomend in de catalogi 1 of 2)
aanwezig is, verschijnt in de uitlezing van de calculator NONEXISTENT, wordt de
subroutine-oproep niet gedaan en de uitvoering wordt stopgezet bij de lijn die de
subroutine-oproep bevat.
De ,,grenzen'' van subroutines
Subroutine-sprongen worden alleen beperkt door het aantal RTN's (of END's) dat door de
calculator aangehouden kan worden. De HP-41C kan maximaal zes RTN's tegelijk
aanhouden, zodat de calculator kan terugkomen van subroutines dic maximaal zes
niveau's ver liggen.
LBLTMAIN
LBL 01
LBL 02
LBL 03
LBL 04
LBL 05
LBL 06
v
7
l
/
XEQ 03
xso 01
XEQ 05
\
XEQ 02
XEf 04
l\
XEQ 06
RTN RTN
RTI\:\ RTN
RTN\ RTN
Als een subroutine met de hand vanaf het toetsenbord wordt uitgevoerd, als [l
wordt ingedrukt, of als SIZE wordt uitgevoerd, gaan alle aangehouden END- en RTN-
opdrachten verloren.