Pointers in BCX

FUNCTION and SUB Pointers

Example 1:

```
GLOBAL Func(INTEGER) AS FUNCTION INTEGER

CALL SetFunc(x0)
? Func(2)
CALL SetFunc(x1)
? Func(2)
getchar()

SUB SetFunc(f(n AS INTEGER) AS FUNCTION INTEGER)
Func = f
END SUB

'-----------------------------------------------

FUNCTION x0(x AS INTEGER)
FUNCTION = x * x
END FUNCTION

FUNCTION x1(x AS INTEGER)
FUNCTION = x * x * 2
END FUNCTION

```

Example 2:

```
SET Funcs[] AS FARPROC
x0,
x1,
x2,
x3,
x4
END SET

FUNCTION x0
FUNCTION = 0
END FUNCTION

FUNCTION x1
FUNCTION = 1
END FUNCTION

FUNCTION x2
FUNCTION = 2
END FUNCTION

FUNCTION x3
FUNCTION = 3
END FUNCTION

FUNCTION x4
FUNCTION = 4
END FUNCTION

SET(PTR Funcs2[])() AS CHAR PTR
s0\$,
s1\$,
s2\$,
s3\$,
s4\$
END SET

FUNCTION s0\$
FUNCTION = "0"
END FUNCTION

FUNCTION s1\$
FUNCTION = "1"
END FUNCTION

FUNCTION s2\$
FUNCTION = "2"
END FUNCTION

FUNCTION s3\$
FUNCTION = "3"
END FUNCTION

FUNCTION s4\$
FUNCTION = "4"
END FUNCTION

SET(PTR Funcs3[])(INTEGER) AS INTEGER
n0,
n1,
n2,
n3,
n4
END SET

FUNCTION n0(n AS INTEGER)
FUNCTION = n * 0
END FUNCTION

FUNCTION n1(n AS INTEGER)
FUNCTION = n * 1
END FUNCTION

FUNCTION n2(n AS INTEGER)
FUNCTION = n * 2
END FUNCTION

FUNCTION n3(n AS INTEGER)
FUNCTION = n * 3
END FUNCTION

FUNCTION n4(n AS INTEGER)
FUNCTION = n * 4
END FUNCTION
DIM i

FOR i = 0 TO 4
? Funcs[i]()
NEXT

FOR i = 0 TO 4
? Funcs2\$[i]()
NEXT

FOR i = 0 TO 4
? Funcs3[i](i)
NEXT

getchar()

```

Example 3:

```
DIM y(s\$,j\$) AS SUB

y = zz

SUB zz(a\$, j\$)
END SUB

```

BCX Console Sample Programs using Pointers.