### 8.48 `CHMOD` — Change access permissions of files

Description:
  `CHMOD` changes the permissions of a file.

  This intrinsic is provided in both subroutine and function forms; however, only one form can be used in any given program unit.

Standard:
  GNU extension
Class:
  Subroutine, function
Syntax:

  `CALL CHMOD(NAME, MODE[, STATUS])`
  `STATUS = CHMOD(NAME, MODE)`

Arguments:

  NAME | Scalar `CHARACTER` of default kind with the file name. Trailing blanks are ignored unless the character `achar(0)` is present, then all characters up to and excluding `achar(0)` are used as the file name.
  MODE | Scalar `CHARACTER` of default kind giving the file permission. MODE uses the same syntax as the `chmod` utility as defined by the POSIX standard. The argument shall either be a string of a nonnegative octal number or a symbolic mode.
  STATUS | (optional) scalar `INTEGER`, which is `0` on success and nonzero otherwise.

Return value:
  In either syntax, STATUS is set to `0` on success and nonzero otherwise.
Example:
  `CHMOD` as subroutine

                program chmod_test
                  implicit none
                  integer :: status
                  call chmod('test.dat','u+x',status)
                  print *, 'Status: ', status
                end program chmod_test

  `CHMOD` as function:

                program chmod_test
                  implicit none
                  integer :: status
                  status = chmod('test.dat','u+x')
                  print *, 'Status: ', status
                end program chmod_test