Returns the code to create the local input parameter that is coerced to have the
    correct type for ctypes interaction.

def _py_invar(parameter, lparams, tab):
    """Returns the code to create the local input parameter that is coerced to have the
    correct type for ctypes interaction.
    """
    if ("in" in parameter.direction and parameter.D > 0):
        if parameter.direction == "(inout)" and ":" not in parameter.dimension:
            wstr = ", writeable"
        else:
            wstr = ""
        pytype = _py_pytype(parameter)
        lparams.append("{}_a".format(parameter.lname))
        return ('{0}_a = require({0}, {1}, "F{2}")'.format(parameter.lname, pytype, wstr), False)
    elif parameter.D == 0:
        #Even for scalar outvars, we need to initialize a variable to pass by reference.
        lparams.append("byref({}_c)".format(parameter.lname))
        if parameter.direction == "(out)":
            initval = parameter.py_initval
            return ("{0}_c = {1}({2})".format(parameter.lname, _py_ctype(parameter), initval), False)
        else:
            return ("{0}_c = {1}({0})".format(parameter.lname, _py_ctype(parameter)), False)