本文說明如何在 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