COBCH1705 Parameter type <type> of <member> is not CLS compliant

A parameter in the member marked as CLS compliant is not using a compliant type.

You need to either change the type to one that is compliant, or set the CLSCompliant(false) attribute for the member.

class-id myClass.
assembly-attributes.
 attribute CLSCompliant(true).

method-id myMethod attribute CLSCompliant(true).                   *> set attrib to false
procedure division using by value myParam as binary-long unsigned. *> or change type of myParam
...
end method.
end class.

The rules for setting the CLSCompliant attribute:

  • Setting the attribute at the assembly level assumes that all members within it are CLS compliant, and the Compiler issues warnings where that is not the case.
  • When the attribute is set at the assembly level, set the attribute CLSCompliant(false) on individual members to suppress the warnings.
  • When the attribute is set on a method or field, it must also be set on the containing class or assembly.
  • When the attribute is set on a class, it must also be set on the containing assembly.