The general rule for Parens is:

STATEMENTS (ie: Kix COMMANDS) do not require parenthesis and generally do not return data but may return status via @ERROR/@SERROR (see MD and RD for exaples).
A Statement may take args in a specific syntax. IF is a statement.

FUNCTIONS always require parenthesis, and can return both Values and Result Codes. A value is returned when you call a function as $V = Function(arg). The result code is returned by @ERROR.

Most functions that I write return a value (use an array if you need to return multiple values values) and the result code. If the function performs an action and doesn't need to return data, I generally return "1" and Exit 0 on success and return "0" and Exit # on failure. This allows me to use
 Code:
If Function(data)
  'SUCCESS!' @CRLF
Else
  'Error in function - ' @SERROR @CRLF
EndIf
As for item "C" - if you don't use $Rc = func(), the regurn codes just fall out all over the screen, leaving a trail of numbers. It isn't required, but is good practice.

As for debugging messages, see my fMsg() function. Declare the following:
 Code:
Global $DEBUG
$DEBUG = 1 ; set to non-zero when debugging
fMsg('this is an always visible message', '', 0, 0)
fMsg('This is a debug message...', '', 0, 4)
The first message is always output, while the second message is displayed only when $DEBUG is non-zero. You can even define various levels of debugging, so if DEBUG is 1, you get some messages, DEBUG=2 you get more, and DEBUG=3 you get a lot.

By using fMsg() you can sprinkle debug messages throughout your application and turn them on/off by simply changing the Global $DEBUG value rather than searching your code and removing or commenting out message lines.
_________________________
Actually I am a Rocket Scientist! \:D