我寫了一個簡單的包裝爲 '()裝飾' 的Fortran內部函數的方便使用和 'adjustl()':的Fortran包裝器字符函數TRIM(),adjustl()
character(len=*) FUNCTION trimadjl(str)
character(len=*), intent(inout) :: str
trimadjl = trim(adjustl(str))
END FUNCTION
然而,我「M無法使用它,由於GNU Fortran編譯失敗,出現以下消息:
farm_par.f90:633:31:
19 OPEN(iout,file=TRIMADJL(rankstr//fout),access='sequential',status='unknown', &
1
Warning: Non-variable expression in variable definition context (actual argument to INTENT = OUT/INOUT) at (1) farm_par.f90:633:22:
19 OPEN (iout,file=TRIMADJL(rankstr//fout),access='sequential',status='unknown', &
1
Error: Function ‘trimadjl’ is declared CHARACTER(*) and cannot be used at (1) since it is not a dummy argument
該函數被聲明爲在子程序的報頭外部:
character(len=*), external :: trimadjl
有點遺憾,但是不需要「修剪」你給'file ='的字符串。空白填充不會傷害任何東西。你可以在這裏使用'adjustl'。 – agentp
它當然不會受傷。但是我有用於後處理的shell腳本,如果文件名中有空格,就會失敗。 – mabalenk