class-id Functions.
*> Pass by value (in, default), reference (in/out), and reference (out)
method-id TestFunc (x as binary-long,
reference y as binary-long,
output z as binary-long).
add 1 to x, y
move 5 to z
end method.
method-id InstMethod.
declare a as binary-long = 1
declare b as binary-long = 1
declare c as binary-long
invoke TestFunc(value a reference b output c)
*> Or
invoke self::TestFunc(a b c)
display a space b space c
declare total as binary-long
*> Commas in parameter lists are optional
set total to function sum(4 3 2 1) *> returns 10
display total
end method.
method-id main static.
declare i as binary-long
set i to MySum(1 2 3 4)
display i
declare o = new self
*> Parentheses are optional when there are no parameters.
invoke o::InstMethod
invoke SayHello("Strangelove", "Dr.")
invoke SayHello("Madonna")
end method.
*> To create a non intrinsic variable argument list function:
method-id MySum static (params nums as binary-long occurs any)
returning mysum as binary-long.
perform varying i as binary-long through nums
add i to mysum
end-perform
end method.
*> COBOL supports optional arguments/parameters.
*> The default value is specified with the syntax '= value'.
*> Optional parameters must be listed last.
method-id SayHello static (nam as string,
prefix as string = "").
display "Greetings, " prefix space nam
end method.
end class.
|
public class functions
{
// Java only allows arguments to be passed by value
public static void main(String[] args)
{
int i = mySum(1, 2, 3, 4);
System.out.println(i);
}
// Use ellipses to indicate a variable argument list
public static int mySum(int... arguments)
{
int sum = 0;
for (int i : arguments)
{
sum += i;
}
return sum;
}
}
|