Passing objects as parameter
Like other object oriented programming languages, objects of built-in classes or Java classes are passed by reference. It would not make much sense to pass an object by value, actually. The runtime pushes the reference of the object on the stack (i.e. the object handler is passed by value), and the reference is then popped to the receiving object variable in the function. The function can then be used to manipulate the original object.
MAIN
DEFINE ch base.Channel
LET ch = base.Channel.create()
CALL open(ch)
CALL ch.close()
END MAIN
FUNCTION open(x)
DEFINE x base.Channel -- Channel object reference
CALL x.openFile("filename","r")
END FUNCTION