In komplexeren Anwendungen ist es üblich Parameter dem Programm beim Start zu übermitteln. Dh. es muss nicht während des Programmlaufs gestoppt werden, um eine Nutzereingabe zu erhalten, sondern die Parameter können beim Programmstart als Kommandozeilenparameter angegeben werden, die dann während des Programmlaufs interpretiert werden.
Zur Abfrage der Anzahl (siehe in C: Variable argc) steht die Funktion COMMAND_ARGUMENT_COUNT ab dem Fortran-Standard 2003 zur Verfügung. Die Funktion nimmt keine Parameter und gibt die Anzahl der Parameter als Integer zurück, die nicht der Name des Programms sind. 
Nun haben wir die Anzahl der Parameter, dann benötigen wir nurnoch die Parameter selbst. Dazu können wir die Subroutine GET_COMMAND_ARGUMENT verwenden:
GET_COMMAND_ARGUMENT (number, value[, length, status)
value nicht den kompletten String aufnehmen konnte -1; ansonsten (bei Erfolg) 0
Ist number auf 0 gesetzt, erhalten Sie den Programmnamen zurück, ist number größer als die Anzahl der Argumente, wird value mit Leerzeichen gefüllt. Ist der Wert des Parameters länger als value, dann wird value soweit gefüllt, wie der Speicherplatz es zulässt (alles andere wird abgeschnitten).
program main implicit none integer argc, n, m real p CHARACTER argv*32 argc = COMMAND_ARGUMENT_COUNT() call GET_COMMAND_ARGUMENT ( 0, argv ) if (argc<3) then write (*,*) "Benutzung: ", trim(argv), " n m p" stop endif call GET_COMMAND_ARGUMENT ( 1, argv ) read (argv, *) n call GET_COMMAND_ARGUMENT ( 2, argv ) read (argv, *) m call GET_COMMAND_ARGUMENT ( 3, argv ) read (argv, *) p write (*,*) n,m,p end program
Ausgaben:
$ gfortran cmd.f90 
$ ./a.out 
 Benutzung: ./a.out n m p
$ ./a.out 1 2 3
           1           2   3.0000000    
Ähnlich wie GET_COMMAND_ARGUMENT steht die Subroutine GET_ENVIRONMENT_VARIABLE ab Fortran 2003 zur Verfügung:
GET_ENVIRONMENT_VARIABLE ( name, value [, length, status, trim_name] )
Die Verwendung ist analog zu GET_COMMAND_ARGUMENT mit der Ausnahme, dass Umgebungsvariablen Namen (Strings) haben, die mit dem ersten Parameter angegeben werden sollen. Außerdem gibt trim_name an, ob in dem Namen-Parameter die abschließenden Leerzeichen zum Namen gehören (trim_name=.FALSE.) oder ob sie keine Bedeutung gehören und damit abgeschnitten werden (trim_name=.TRUE.)