Robert -- I tackled them one at a time.
They are less confusing and more instructive as 3 individual examples.
Here they are ... tested with LccWin32, Pelles 9, and Mingw
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
'------------------------
DIM i
FOR i = 0 TO 4
? Funcs[i]()
NEXT
SET Funcs2[] AS FARPROC
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
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