先把之前寫過的整理整理,讓大家有個管道可以更瞭解Genero語言。
Genero在2.0版之後,增加一些外掛的函式庫,以擴展原有不足的部份。這些函式﹝function﹞,必需用『IMPORT』的方式將函式庫掛載到程式裡面來,才可以使用。利用這種技法開發出來的項目越來越多,如本文介紹的檔案系統處理﹝os﹞、Web Service及一些數學函式庫。
使用之前
在使用這些函式之前,需要在4gl啟始處﹝DATABASE指令之前﹞寫入『IMPORT os』
使用當下
使用此類函式時,必需用『os.Path.METHODS﹝METHOD請參照下表﹞』的方式來使用,例如copy,就是 CALL os.Path.copy(source, target) RETURNING li_success
Methods ﹝下表引用自 4JS 網頁:http://www.4js.com/online_documentation/fjs-fgl-2.11.01-manual-html/User/Ext_os_Path.html﹞以下紅字部份表示在TIPTOP GP程式內常見,沒翻譯的部份則比較少用到。
function | 說明 |
separator |
回傳path的分隔符號,Windows為 ,UNIX為 / 通常可以用來判斷系統是在哪個平台下運行,如 IF os.Path.separator() = "/" THEN…. |
pathseparator | 類似上一個,回傳用在環境變數 (如 %PATH% 或 $PATH) 裡的路徑分隔符號 Windows為:,UNIX為; |
basename |
回傳『主要檔名』部份 |
dirname |
回傳『目錄部份』檔名 |
rootname |
回傳主要檔名﹝以上三組,請參照下方對照表即可瞭解﹞join 合併路徑用,如:LET ls_dir = os.Path.join ( "/etc", "passwd") 此時 ls_dir = /etc/passwd |
extension | Returns the file extension. |
exists |
檢視檔案是否存在 |
chrwx |
變更UNIX上的rwx屬性,要計算對應值,而且只能用在UNIX 例如希望變更屬性為 777,則計算式為 64* 7 + 8* 7 + 1 * 7 = 511 |
dirsort (搭配diropen/dirnext等) | 如果要執行 ls / dir 指令來 check 檔案列表,請參考標準程序進行 |
chdir | 變更目錄 |
mkdir | mkdir |
delete | 刪除檔案或目錄 |
rename | 更新目錄名或檔名 |
copy | 複製檔案 |
atime | 回傳檔案上次被讀取時間 |
mtime | 回傳檔案上次被修改時間 |
readable | 檢查檔案是否可被讀取 |
writable | 檢查檔案是否可被寫入 |
executable | 檢查檔案是否可被執行 |
isfile | 檢查是否為一個檔案路徑 |
isdirectory | 檢查是否為一個目錄路徑 |
islink | 檢查是否為UNIX的soft link |
isrootpath | 檢查是否為根路徑 |
size | 回傳檔案大小 |
chvolume | 更換Windows的工作磁碟機 |
os.Path 指令操作範例對照表
原始資料 | dirname | basename | rootname | extension |
. | . | . | NULL | |
.. | . | .. | . | NULL |
/ | / | / | / | NULL |
/usr/lib | /usr | lib | /usr/lib | NULL |
/usr/ | / | usr | /usr/ | NULL |
usr | . | usr | usr | NULL |
file.xx | . | file.xx | file | xx |
/tmp.yy/file.xx | /tmp.yy | file.xx | /tmp.yy/file | xx |
/tmp.yy/file.xx.yy | /tmp.yy | file.xx.yy | /tmp.yy/file.xx | yy |
/tmp.yy/ | / | tmp.yy | /tmp.yy/ | NULL |
/tmp.yy/. | /tmp.yy | . | /tmp.yy/ | NULL |
當可以善用這一些函式時,程式就可以和檔案系統進行一些互動,增加操作上的便利性。