本文說明如何在 Genero 程式中傳遞與讀取命令列引數。關鍵概念在於:fglrun 才是實際執行的程式,因此存在兩組引數——fglrun 本身的引數,以及你的程式所接收的引數。
讀取命令列引數的三種方式
方式一:arg_val() 函式
這是源自 Informix-4GL 的傳統寫法。arg_val(1) 回傳第一個引數,arg_val(0) 回傳程式名稱。num_args() 函式則回傳引數總數。
方式二:base.Application 方法
現代替代方式,功能相同但支援更好的程式碼補全:
base.Application.getArgument():取得指定位置的引數base.Application.getArgumentCount():取得引數總數
方式三:getopt 模組
3.20 版本引入的模組,類似 C 語言的 getopt 函式庫,用於處理命令列選項。功能包含:
- 透過 while 迴圈自動處理選項
invalidOptionsSeen()方法用於錯誤處理displayUsage()方法用於顯示說明訊息- 內建支援
-h/--help旗標
傳遞命令列引數
直接在命令列傳遞
引數放在程式名稱之後:
fglrun program.42r --mode update
fglrun 本身的選項則放在程式名稱之前:
fglrun -p program.42r
透過 Genero Application Server(GAS)傳遞
使用 GAS 時,引數可透過以下方式指定:
- 在 .xcf 設定檔的 PARAMETERS 元素中設定
- 透過 URL 查詢字串,需在設定中啟用
allowUrlParameters=TRUE - URL 格式範例:
http://webserver/ua/r/program?Arg=--mode&Arg=update
最佳實踐
設計良好的程式可善用命令列引數實現以下功能,無需修改程式碼:
- 切換唯讀模式
- 指定資料操作模式(新增、修改、刪除)
- 預先填入特定欄位值
原文:https://4js.com/ask-reuben/ig-183/
· 有任何 Genero 技術問題或翻譯疑問,歡迎來信
support@t100.app