Acorn Computers BBC Micro Model B w/8271 — Acorn BBC Micro Model B w/8271 User Guide Manual PDF (EN)

92 OUT OF PROCEDURE J= 25 IN PROCEDURE J= 25 OUT OF PROCEDURE J= 25 IN PROCEDURE J= 25 OUT OF PROCEDURE J= 25 IN PROCEDURE J= 25 OUT OF PROCEDURE J= 25 IN PROCEDURE J= 25 OUT OF PROCEDURE J= 25 The program is pointless in its present form for several reasons – mostly because it doesn’t actually do anything with K in the procedure! Now that J is global its value could be altered anywhere – including inside the procedure. Line 75 increases J by 10:

10 J=25 20 FOR X=1 TO 5 30 PROCNUM(X) 40 PRINT "OUT OF PROCEDURE J= ";J 50 NEXT X 60 END 70 DEF PROCNUM(K) 75 J=J+10 80 PRINT "IN PROCEDURE J= ";J 90 ENDPROC >RUN IN PROCEDURE J= 35 OUT OF PROCEDURE J= 35 IN PROCEDURE J= 45 OUT OF PROCEDURE J= 45 IN PROCEDURE J= 55 OUT OF PROCEDURE J= 55 IN PROCEDURE J= 65 OUT OF PROCEDURE J= 65 IN PROCEDURE J= 75 OUT OF PROCEDURE J= 75 It has been pointed out that all formal parameters are local to the procedure in which they are defined (and to inner procedures) but other variables can be declared as LOCAL if required.

We very often use the variable X as a counter for a FOR...NEXT loop and as a result you have to be careful not to use it twice in the same section of a program. Declaring X as local to a procedure ensures that its use locally will not affect the value of X outside the procedure. 10 J=25 20 FOR X=1 TO 5