Our solution was to put all the FTP code (run FTP;stdin=etc;) inside a Cobol subroutine and it can be called in a variety of ways (Put/Get/Mput etc) with the reassurance that the subroutine will always return a consistent set of error codes back to the calling program.
My colleague generalised the subroutine so that one of the parameters passed to it was a name of the FTP connection - and the subroutine looked up the usernames and passwords from a database file. If password sensitivity is an issue for you I would recommend avoiding the JCL route.