With POSIX IDs disabled, implemented for program portability and
    serves no function. It returns 0 (to indicate success).
    With POSIX IDs enabled, sets the user IDs.
    Format
      #include  <types.h>
      #include  <unistd.h>
      int setuid  (__uid_t uid); (_DECC_V4_SOURCE)
      uid_t setuid  (uid_t uid); (not _DECC_V4_SOURCE)
1 – Argument
 uid
    The value to which you want the user IDs set.
2 – Description
    The setuid function can be used with POSIX style identifiers
    enabled or disabled.
    POSIX style IDs are supported on OpenVMS Version 7.3-2 and
    higher.
    With POSIX IDs disabled (the default), the setuid function is
    implemented for program portability and serves no function. It
    returns 0 (to indicate success).
    With POSIX style IDs enabled:
    o  If the process has the IMPERSONATE privilege, the setuid
       function sets the real user ID, effective user ID, and the
       saved set-user-ID to uid.
    o  If the process does not have appropriate privileges but uid
       is equal to the real user ID or to the saved set-user-ID, then
       the setuid function sets the effective user ID to uid. The
       real user ID and saved set-user-ID remain unchanged.
    See also getuid to know how UIC is represented.
3 – Return Values
    0                  Successful completion.
    -1                 Indicates an error. The function sets errno to
                       one of the following values:
                       o  EINVAL - The value of the uid argument
                          is invalid and not supported by the
                          implementation.
                       o  EPERM - The process does not have
                          appropriate privileges and uid does not
                          match the real user ID or the saved set-
                          user-ID.