iT邦幫忙

0

[TIPTOP] 編譯方式簡化

有在設計TIPTOP的小伙伴,今天要介紹一個偷懶工具的演算法原理給大家(公司電腦關機抄不到啊)

先從一個詭異的事件說起,我們公司招收進來的新人,號稱有十幾年經驗,但是來公司第一個月,
竟然連compile 4fd的方式都不知道。
(對照一天到晚把十幾年掛在嘴上,不知道怎樣COMIPLE還真的挺好笑!哈哈)
(就是改個畫面檔屬性,因為不知道要r.gf 搞了一禮拜,
你不懂問我,我教你(反了反了),你老兄又不聽)

後來想想,該公司肯定有"不是他"的高手改寫過COMPILE程式,而對牠暗藏一手。

說明一下:
程式檔的COMPILE是由 r.c2 程式名稱 (4GL檔沒有4GL的那部份)
r.l2 功能代碼 所組成的
舉例來說好了 假如你今天修改完 saapt110.4gl 了
那你就要 r.c2 saapt110
r.l2 aapt110
r.l2 aapt120
r.l2 aapt150
r.l2 aapt160
r.l2 aapt210 ...等(很多支10幾支勒)
至於要link哪些程式,上大班課好像都沒有講到這一段...?! 不曉得是不是我記憶有問題...
(不曉得為何,我依稀記得那時候是說如果遇到這種副程式就要REBUILD(現在已經知道是錯的))
後來,經過一番詢問鼎新顧問之後,才知道可以透過p_link查詢。

        1. 查詢單身有saapt110的資料
        2. 逐筆進入單身再出來就會問你要不要LINK

        知道有p_link可以使用之後,我就著手開發p_batchlink
        該程式可以輸入一個參數 程式會自動查詢單身中有該參數的所有程式代號,並批次做LINK。
        
        然後你就可以改寫r.c2程式了
        該程式放置於 $TOP/DS4GL/bin底下
        找到 r.c2 備份一個起來
        
        修改 r.c2 執行完畢之後  執行 FGLRUN p_batchlink $1
        即可完成自動COMPILE LINK。
        
        以後當你執行 r.c2 saapt110 時,你就會看到他全自動的在LINK。
        以saapt110來說,這份清單總是很長。
        (誰要一筆一筆在那邊LINK啊)
        
        注意!
          寫p_batchlink時針對SUB、QRY、LIB底下的程式要特別處理喔。
        
        
        
        至於畫面檔的自動化COMPILE機制
        正常來說畫面檔上傳完畢之後你會需要執行
          r.f2 畫面檔名稱
          r.gf 畫面檔名稱 0 c y n (<--這一部就是號稱十幾年經驗的白癡不知道的步驟)
        我們來拆解吧
          r.f2 是產生42f的程式
          而r.gf就比較有趣了,他會呼叫p_preview這隻程式進行 欄位定義的回寫動作
          回寫至p_per檔中 舉凡要不要鎖住欄位,以及是否為必填,這些資訊都是在
          p_preview當中完成的,這東西需要的4個參數 0 c y n
          
          這當中只有第二個參數比較有困難
          我改寫了p_preview 讓第二參數可以接受a 當它被填上a:auto 系統會自動找看看有沒有
          客製的p_per檔,若有就執行c 的走法  若找不到就執行p 的走法。
        
          修改完之後只要在r.f2 的程式後面  增加一小段 r.gf $1 0 a y n 即可達成自動化執行r.gf
        
       備註:
          已經跟原廠講師確認過,截至5.3版都還是要兩段式r.c2、r.l2 及 r.f2、r.gf,
          如果你的前公司不用這麼麻煩,那你應該感謝你的前輩。
          有為大家留下這樣的工具。
          
           
          

尚未有邦友留言

立即登入留言