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

Reply via email to