Example 1:
GLOBAL Func(DUMMY AS INTEGER) AS FUNCTION INTEGER SetFunc(x0) ? Func(2) SetFunc(x1) ? Func(2) SUB SetFunc (f AS Func_TYPE) Func = f END SUB '----------------------------------------------- FUNCTION x0(x AS INTEGER) AS INTEGER FUNCTION = x * x END FUNCTION FUNCTION x1(x AS INTEGER) AS INTEGER FUNCTION = x * x * 2 END FUNCTION
Result:
4 8
Example 2:
GLOBAL PTR_Funcs () AS FUNCTION INTEGER SET Funcs[] AS PTR_Funcs_TYPE ' BCX creates a typedef and tacks on "_TYPE" to the declaration 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 '------------------------ DIM i FOR i = 0 TO 4 ? Funcs[i]() NEXT
Result:
0 1 2 3 4
Example 3:
GLOBAL PTR_Funcs () AS FUNCTION PCHAR SET Funcs2[] AS PTR_Funcs_TYPE ' BCX creates a typedef and tacks on "_TYPE" to the declaration 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 '----------------------- DIM i FOR i = 0 TO 4 ? Funcs2$[i]() NEXT
Result:
0 1 2 3 4
Example 4:
GLOBAL PF_1_ARG(DUMMY AS INTEGER) AS FUNCTION INTEGER SET Funcs3[] AS PF_1_ARG_TYPE 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 ? Funcs3[i](i) NEXT
Result:
0 1 4 9 16
Example 5:
DIM y(s$,j$) AS SUB y = xx : CALL xx ( "hello" , " world" ) ' It is OKAY to use the CALL keyword y = zz : zz ( "goodbye" , " cruel world" ) ' Using the CALL keyword is not required SUB xx (a$, j$) PRINT PRINT UCASE$(a$),UCASE$(j$), ":-)" END SUB SUB zz (a$, j$) PRINT PRINT MCASE$(a$),MCASE$(j$)," :-(" END SUB
Result:
HELLO WORLD:-) Goodbye Cruel World :-(
See also Declaring Pointer Variables
BCX Console Sample Programs using Pointers.