有在设计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, 如果你的前公司不用这么麻烦,那你应该感谢你的前辈。 有为大家留下这样的工具。