Customizing TDPUTCE
When NPs are used, TDP employs the MVS EZASMI socket API, so only this socket API may be used by TDPUTCE. According to IBM publication z/OS Communications Server: IP Sockets Application Programming Interface Guide and Reference, only one type of socket API may be used within a single address space, with unpredictable problems if another API is used.
Because TDPUTCE runs as part of TDP, it is privileged. If it is improperly coded, TDPUTCE can cause errors or even destroy TDP.
When customizing a TDPUTCE module, consider the following points:
On z/OS or VOS3, a dump is written to the TDPSNAP DDName. If the exit attaches tasks and a subtask abnormally terminates, TDP does not process the error. That is, the exit is not disabled and no dump is written by TDP. However, the operating system can record the dump if the standard resources are available (a SYSUDUMP DD statement on z/OS, for example). It is the exit’s responsibility to properly manage its subtasks so that such failures do not impact its operation.
Control is passed to the TDPUTCE routine with general register 1 pointing to the TDPMNPRM control block. This control block contains a user word, the request/response string, and pointers to fields containing information about the requestor.
When invoked to process a TDP command, any userids, passwords, and account names can consist of characters from the character set passed to the exit. When supported by this character set (or, for the START POOL command, in the command itself), each contiguous group of EBCDIC double-byte characters is preceded by the Shift-out control character, X’0E’ and followed by the Shift-in control character, X’0F’. Neither commas nor blanks can be specified as EBCDIC double-byte characters.
When invoked to process requests and responses, data (including object names) can contain EBCDIC double-byte characters if double byte characters are valid in the session character set passed to the exit.