| 版本 | 編譯命令 | 關鍵參數說明 |
|---|---|---|
| R12 | frmcmp_batch $AU_TOP/forms/ZHS/test.fmb apps/apps output_file=$CUX_TOP/forms/ZHS/test.fmx | frmcmp_batch 為批次編譯器,$AU_TOP 標準表單源碼路徑,$CUX_TOP 客製化輸出路徑,apps/apps 連線帳密。 |
| 11i | f60gen module=test.fmb userid=apps/apps output_file=/ora1159/prod/prodappl/pa/11.5.0/forms/US/test.fmx | f60gen 為 11i 編譯器,module 指定 .fmb,output_file 需寫完整目標路徑。 |
ORACLE_HOME、PATH、LD_LIBRARY_PATH (Linux) 必須指向正確的 Forms 執行檔目錄,否則命令找不到或載入錯誤庫。cd $AU_TOP/forms/ZHS (R12) 或對應 11i 目錄下執行命令。異地執行雖不報錯,但產出的 .fmx 可能缺少相對路徑引用的庫/視窗,導致執行期錯誤。$CUX_TOP/forms/語言/ 目錄結構,所有客製化 .fmx 輸出至此,便於版控、部署與升級覆蓋管理。| 錯誤現象 | 可能原因 | 解決方向 |
|---|---|---|
| FRM-30090: Unable to open library | 環境變數 FORMS_PATH 未包含庫路徑 | export FORMS_PATH=$AU_TOP/resource:$CUX_TOP/forms/... |
| FRM-18108: Unable to read form module | .fmb 檔案損毀或版本不符 | 確認 Forms Builder 版本與編譯器版本一致 |
| 編譯成功但運行報 FRM-40039 | .fmx 非在源碼目錄編譯產生 | 回到源碼目錄重新編譯 |
將編譯命令封裝為 Shell/Python 腳本,整合至 CI/CD 流程:
#!/bin/bash
# compile_form.sh
cd $AU_TOP/forms/ZHS
for fmb in *.fmb; do
frmcmp_batch module=$fmb userid=apps/$APPS_PWD output_file=$CUX_TOP/forms/ZHS/${fmb%.fmb}.fmx
done
R12 用 frmcmp_batch、11i 用 f60gen;環境變數正確、源碼目錄執行、輸出統一放 $CUX_TOP 三鐵律不破,Form 編譯零失誤。