code: def _py_invar(parameter, lparams, tab):
      
      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)
docs: Returns the code to create the local input parameter that is coerced to have the
      correct type for ctypes interaction.