Yes. Every argument to an IML module can be modified inside the module. For a discussion see "Passing arguments by reference: An efficient choice." The last section of the same article discusses how a programmer that is creating a module can make sure that input arguments are not modified. In your example, the technique would be
start sum_square(c,_a,b);
a = _a+1;
c = (a+b)**2;
finish;
The SAS/IML documentation also contains an example and discussion of passing arguments by reference.
... View more