code: def _ctypes_assign(parameter):
      
      #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)
docs: 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.