The 1003.1 standard actually defines a C interface to POSIX. This is the obvious thing to do since POSIX is derived from the C run time library. However, that is not much comfort if you actually want to call the POSIX routines from FORTRAN. There is a draft standard (1003.9) that defines how the routines should be called from FORTRAN (referred to as the FORTRAN binding), but that is still a draft and commercial products based on that standard are unlikely to be available for some while. Furthermore, in order to cope with the C concepts that are inherent in POSIX, the draft standard for the FORTRAN binding has defined things in such a way that it makes using POSIX directly from FORTRAN somewhat painful.
To make life easier for the FORTRAN programmer, a package of routines called PSX has been written to which let FORTRAN programs make calls to POSIX functions in a manner consistent with other Starlink subroutine libraries. This means that FORTRAN programs that need to make use of functions provided by the operating system can be written in a portable manner. Another advantage of using the PSX routines instead of using raw POSIX (even if we could) is that it allows us to use inherited status that is a common feature of Starlink subroutine libraries. If a PSX routine detects an error, it sets the STATUS argument of the routine to one of the values given in appendix B and reports an error via EMS (see SSN/4).
Note that the names of the PSX routines are often longer than the Starlink recommendation (SGP/16) of the PSX_ prefix plus five more characters. This has been done so that the name of the PSX routine corresponds directly with the name of the ‘real’ POSIX routine. This creates a potential problem with porting the routines to other computers that might not accept names longer than six characters. However, the draft standard for the FORTRAN binding to POSIX assumes that compilers will accept names up to 31 characters (this is the only, extension to ANSI standard FORTRAN 77 that it assumes), so this is no worse than basing routines directly on the specification of the draft standard.
The PSX routines are just wrap around routines for POSIX routines. For further details on these routines, you should consult the relevant standards documents [1] and [2]. If you do not have copies of these, the documentation for the C run time library on your computer may be helpful.