傳遞命令列引數

在支援命令列引數的地方,可以通過 get_command_argument 內在函式讀入它們(在 Fortran 2003 標準中引入)。command_argument_count 內在提供了一種瞭解命令列提供的引數數量的方法。

所有命令列引數都以字串形式讀入,因此必須對數字資料進行內部型別轉換。例如,這個簡單的程式碼彙總了命令列提供的兩個數字:

PROGRAM cmdlnsum
IMPLICIT NONE
CHARACTER(100) :: num1char
CHARACTER(100) :: num2char
REAL::num1
REAL::num2
REAL::numsum

!First, make sure the right number of inputs have been provided
IF(COMMAND_ARGUMENT_COUNT().NE.2)THEN
  WRITE(*,*)'ERROR, TWO COMMAND-LINE ARGUMENTS REQUIRED, STOPPING'
  STOP
ENDIF

CALL GET_COMMAND_ARGUMENT(1,num1char)   !first, read in the two values
CALL GET_COMMAND_ARGUMENT(2,num2char)

READ(num1char,*)num1                    !then, convert them to REALs
READ(num2char,*)num2

numsum=num1+num2                        !sum numbers
WRITE(*,*)numsum                        !write out value

END PROGRAM

get_command_argument 中的數字引數有用地介於 0command_argument_count 的結果之間。如果值為 0,則提供命令名稱(如果支援)。

許多編譯器還提供非標準內在函式(例如 getarg)來訪問命令列引數。由於這些是非標準的,因此應參考相應的編譯器文件。

get_command_argument 的使用可以通過 lengthstatus 引數擴充套件到上述示例之外。例如,用

character(5) arg
integer stat
call get_command_argument(number=1, value=arg, status=stat)

如果第一個引數存在且長度大於 5,則 stat 的值將為 -1。如果檢索引數存在其他困難,則 stat 的值將為某個正數(並且 arg 將完全由空白組成)。否則它的價值將是 0

length 引數可以與延遲長度字元變數組合,例如在以下示例中。

character(:), allocatable::arg
integer arglen, stat
call get_command_argument(number=1, length=arglen)  ! Assume for simplicity success
allocate (character(arglen) :: arg)
call get_command_argument(number=1, value=arg, status=stat)