Methods - in COBOL and Java

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 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); 
    // 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; 

Portions of these examples were produced by Dr. Frank McCown, Harding University Computer Science Dept, and are licensed under a Creative Commons License.