c 在程式中,可能會開啟多個檔案、埠或子視窗,必須指定一個檔案代號 c 給程式以便讀取,在寫程序時,可能不知道其他部分的程序所開啟使用 c 的檔案代號,因此提出一個簡單的函數來負責取得未使用的檔案代號。 c c 使用範例: c program Main c integer*4 FreeFileUnit, MyUnit c ... c MyUnit=FreeFileUnit() c open(MyUnit,File="...") c read(MyUnit,*) ... c write(MyUnit,*) c close(MyUnit) c ... c end c c 當然,在同一個主程式中,檔案代號是固定的,所以檔案代號可以透過 c 引數傳遞,以便在其他程序中使用。 c 函數傳回一個四位元組的整數,並傳回未使用的最小自然數值,在同一 c 程序中原則上只要有完成關檔的動作,是可以重複使用同一檔案代號, c 唯多緒程式尚未測試,若在多緒程式中建議開檔前先呼叫本函數以取得 c 未使用的檔案代號。 c 程式中可選用 MyOpened 或 MyNumber 來作為判斷值,利用 inquire程 c 序來取得判斷值,若檔案代號已在使用中,則傳回 c MyOpen=.True. c MyNumber=i(使用中的代號) c 若檔案代號未使用,則傳回 c MyOpen=.False. c MyNumber=-1 c 唯 0, 5, 6為 fortran預設使用中之代號,即使未開啟 5, 6 本程序仍 c 不會傳回 5, 6 。 c 0 預設值代表鍵盤或螢幕 c 5 預設值代表鍵盤 c 6 預設值代表螢幕 c c 註:本函數經 Microsoft Fortran系列及 Digital Visual Fortran 5 c 測試成功 integer*4 function FreeFileUnit() integer*4 i, MyNumber logical MyOpened i=1 inquire(i,number=MyNumber,Opened=MyOpened) do while (MyOpened) c or do while (MyNumber .eq. i) i=i+1 inquire(i,number=MyNumber,Opened=MyOpened) end do FreeFileUnit=i end