The CIMS version of SETL as described by Schwartz et al.  already had many features and characteristics that made it useful as a data processing language, both in general because of its high-level nature and in particular because of such extensions as the SNOBOL-inspired string pattern matching routines.
However, the implementation was not packaged in the convenient manner of popular Unix tools such as awk 2.1 or perl, which promote the construction of simple programs that can be chained, output to input, with other such programs to build up pipelines of coöperating processes. Also, while the language specification and the the pre-1990 CIMS implementation provided for sequential file- and printer-oriented I/O, it offered no built-in way to communicate with or spawn external processes.
SETL2 added support for direct-access files  and a system primitive  able to start an external program and wait for it to complete, but still did not offer any way to communicate with external programs except by way of files.
Distributed data processing depends in a direct and fundamental way upon good I/O facilities, however, and this chapter describes various extensions to SETL relating to inter-process communication, including such matters as string and number formatting, multiplexed I/O, timers, signals, and the Unix 98 interface . Chapter 3 [Internet Sockets] deals with network-specific extensions. In non-Unix systems, it is expected that where a particular SETL feature is not easily mapped to a corresponding facility of the operating system, a SETL implementation will supply a benign substitute or balk as appropriate.