Files in a UNIX environment are organized into a hierarchical structure, If this looks familiar to you, that’s because both the DOS and Windows operating systems use a hierarchical file organization too. As you can see, all files within a hierarchical file system (HFS) are members of a directory. Each directory is, in turn, a member of another directory at a higher level in the hierarchy. At the highest level is the root directory.
The root directory can be considered analogous to the master catalog in OS/390 and will typically contain only other directories (also called subdirectories).
Directories and their subordinate files can be considered analogous to partitioned data sets and their members. That’s because each directory contains information about itself as well as the files it holds, including their names, their size, the date they were created or modified, and other relevant information. However, unlike PDS data sets, directories are not considered files themselves. So whereas a PDS can be treated as a sequential file in some cases, directories do not have the same capabilities.
In fact, the entire HFS structure, from the root directory on down, is stored as a single data set on an IBM mainframe. OS/390 then manages the hierarchical files through its own HFS facility. As a result, HFS files can be used in both the UNIX System Services and OS/390 environments. This makes it possible for application programs that are designed to run in a UNIX environment to handle files as they normally would under OS/390. For example, Websphere Application Server for OS/390 uses HFS files to store and retrieve information for web applications.
It also means that HFS files can be copied to and from sequential, partitioned, or partitioned extended data sets.
Although most HFS files store data, some can be executable modules and still others can consist of UNIX shell scripts. Executable modules, or programs, are similar to the compiled and linked programs found in OS/390 load libraries. UNIX shell scripts are similar to procedures. They consist of a series of UNIX commands (and, optionally, scripting commands) that are executed in order whenever the file is invoked.