Returns the Fortran code lines to allocate and assign values to the *original*
    parameter ValueElement that exists now only as a local variable so that the
    signatures match for the compiler.

def _ctypes_assign(parameter):
    """Returns the Fortran code lines to allocate and assign values to the *original*
    parameter ValueElement that exists now only as a local variable so that the
    signatures match for the compiler.
    """
    #If the array is set to only have intent(out), we don't want to allocate or assign
    #a value to it; otherwise we do.
    if (parameter.direction != "(out)" and ("allocate" in parameter.modifiers
                                            or "pointer" in parameter.modifiers
                                            or "target" in parameter.modifiers)):
        if "in" in parameter.direction:
            splice = _ctypes_splice(parameter)
            result = []
            result.append("    allocate({}({}))".format(parameter.name, splice))
            result.append("    {0} = {0}_c".format(parameter.name))
            return ('\n'.join(result), True)
    elif parameter.dtype == "logical" and "in" in parameter.direction:
        return ("    {0} = {0}_c".format(parameter.name), False)