Your error usually comes for me when I forget to include the service program containing the procedure th program uses. I forget to put it in the binding directory.
Yes, the calling module needs the same prototype in order to compile. The prototype (the PR specs) can be in the global area of the module or inside any procedures in the module that make the call.
It doesn’t matter if the target procedure is in a service program or in another module bound into the same program. The compiler needs the prototype to compile both the calling and the called modules.