A function accepts any number of parameters (possibly zero), does something with them, and returns a value. A subroutine is performs an action, but doesn’t return a value.
There are two differences between a function and a subroutine: A)How they are invoked. B)How they are accessed.
A function call has the following syntax ::
function(arg1, arg2, …)
where: function Is the name of the function. arg1, arg2, … Are the arguments.
A subroutine call has the following syntax
::subroutine (arg1, arg2, … {outputfield|’format’})
where: subroutine –>Is the name of the subroutine. arg1, arg2, … Are the arguments. {outputfield|’format’} Is the name of the output field or its format.
In addition, on some platforms, the functions are available immediately; whereas, the subroutines are available in a special subroutine library that you must access.