cmd = sprintf('"%s" -M"%s.dat" -NMOD 5 -R -PARR"%s"', fullfile(dir_progs, 'file.exe'), filedats, fullfile(dir_prog, 'datfile.dat'));
[status, output_log] = system(cmd);
Note: it is risky to have a variable named "dir_progs" and another one named "dir_prog" with only the final "s" different between the two -- there is a somewhat high risk of getting the two of them confused or of accidentally typing one when the other was wanted.
I made the string more robust by adding "" around names, in case there happen to be spaces in directory names.
There are some places in the string that I would tend to suspect should have a space separating parts, but it is possible that it is correct without those spaces; it depends on what the program expects.