FWIW, IBM publications now use the current terminology: "z/OS UNIX System Services (z/OS UNIX)". This is not a discussion of the commonly used yet disputed TLA. Please.
I've been thinking about this for some time, and what I would like to discuss - and in some areas clear up my own technical assumptions - is this: What is z/OS Unix, and what do people mean when they say "under USS" (or the more proper: "under z/OS Unix") ? Of course, the phrase itself is not the problem. It is the common misconceptions of "z/OS Unix" that I would like to discuss. I realize that there are some here who despise z/OS Unix, and "Under z/OS Unix" / "Under USS" is good enough granularity to describe all the crap that they can't stand. If this is you, please go back to discussing the TLA ;-) z/OS Unix is somewhat difficult to define, but here is an overview by IBM: (See: http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/bpxzb2b0/1.0?SHELF=EZ2ZBK0K&DT=20100625104049 ) My own conception model (perhaps flawed) is that there are a bunch of related things: 1) POSIX / XPG4 APIs XPLINK and non-XPLINK LE C libraries 2) Lower level APIs (assembler or other HLLs) http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/bpxzb1b0/CCONTENTS?SHELF=EZ2ZBK0K&DN=SA22-7803-13&DT=20100701130653 These are used to implement (1). Just about any program / job can call these or (1), and the first time it does it gets "dubbed" (8) with a z/OS Unix PID and can use the kernel (below) 3) The "Kernel" Address space (BPXOINIT?) Common services for (1), (2) 4) The zFS filesystem (including its address space, APIs, storage container, etc). This is POSIX / UNIX compliant, and can be used by any "dubbed" job. "HFS" was the previous version, which is still available but "stabilized". APIs in (1) and (2) allow you to use these, but also QSAM/BSAM/BPAM front-ends. 5) z/OS Unix "command" binaries Program binder objects that are stored in (or linked to by) a file in the zFS or HFS filesystem (4). Unix command binaries can be invoked by BPXBATCH/COZBATCH (see 10), or via fork()/spawn() APIs in (1) or (2), or more commonly by a shell (see 6). 6) The Unix "shell" program (/bin/sh, and example of (5) Also part of the POSIX / XPG specs. Closest legacy z/OS analog would be IKJEFT01 + CLISTS + REXX, but this is kind of a stretch :-) There are other shells, like tcsh, bash, etc, that can be used. IBM supplies /bin/sh and /bin/tcsh with z/OS Unix. The shell can be run interactively, under TSO OMVS (see 10), via a TTY-style telnet connection (see 9), or in batch via BPXBATCH/COZBATCH (see 10). 7) BPXAS initiator and its "forked" / (non locally) "spawned" address spaces. Typically associated with the z/OS Unix shell (6) and Unix "commands" (5), but not necessarily so. Check out the fork() and spawn() services in (2) for some good information. 8) A z/OS job that is "dubbed" (has issued a service (1) or (2) and has a Unix PID. This doesn't preclude it from accessing other resources, like traditional z/OS Datasets, etc. A regular batch job (EXEC PGM=) loaded from a regular PDS, pick your favorite language, can be dubbed and use (1) and/or (2) and get services from (3), use (4), (5), (7) 9) A TCP/IP connection to z/OS to TTY-style telnet (non-3270) / rlogin / or sshd Unix login which runs the user's default login shell. (For example, using PuTTY on Windows) 10) TSO commands, ISPF dialogs, and batch utilities and other stuff that can work with all of the above. - For example, BPXBATCH is a program that allows you to run a Unix command alone or under the shell under TSO or batch. IMO it has stifling limitations, is difficult to use, and contributes to the notion that "z/OS Unix" is difficult to use. Our free COZBATCH utility is an improved alternative. - The "OMVS" TSO command is also contributory to the "Under z/OS UNIX" problem - it allows you to run a shell under TSO, but it is not integrated well with ISPF (IMO). - TSO/REXX has a ton of facilities for using z/OS UNIX. These include a Host Command Environment for the shell, for many APIs in (1), and the ability to put a REXX exec in the UNIX file system and to treat it like a command (5) in a shell (6). There is also the bpxwunix() function, which is a REXX wrapper for fork()/exec(). So, when people say "Under z/OS UNIX" ( or "Under USS"), which of these do they mean? - Running a Unix shell (6) ? - Under BPXBATCH / COZBATCH (10) ? - Under the TSO OMVS command (10) ? - Under (9) ? - Using a zFS / HFS filesystem (4) ? - "Dubbed" (has a Unix PID) (8) ? To me, "Under USS" is as almost nondescript as saying "Under TSO" to refer to: TN3270+ISPF or IKJEFT01 in batch or a TSO/REXX exec. I believe that some people have a conception model of z/OS Unix that is similar to the old OS/2 Windows so called "Penalty Box". Again, I believe that the TSO OMVS command and BPXBATCH have fostered this incorrect notion. Kirk Wolf Dovetailed Technologies http://dovetail.com ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html

