TIPTOP(TOP GP)由于产品的早期设计,画面档是直接编辑的per文档,后来鼎新引入genero套件之后,画面档可以通过genero studio进行4fd的设计开发,但是由于早期开发人员的习惯,还是保持着直接修改per,由此造成了交替开发时,相互冲突的问题
T产品的编译顺序
4fd==>per==>42f
4fd为genero套件设计的画面档,经过r.f2指令编译成per,同时编译成42f,42f为系统能够识别的画面文档,可以理解为解释后的机器码
per则是早期的画面档,可以通过r.f2.per指令进行编译,直接生成42f
个人认为per画面开发更加高效
但是由于系统有两种途径,由此容易引起冲突,导致画面开发文件丢失
举个例子:
a开发使用per进行开发,编译后产生42f文件,此时4fd未更新
b开发接手同一份程序,进行4fd开发,编译后,产生per,以及42f,此时,会把a开发的per和42f进行覆盖,从而造成a开发的画面丢失
那么统一使用一种开发方式不就好了?
理想总是美好的,由于人员流动问题极少有企业能够管好这个代码,既然管不好,那么是否可以换个思路,我开发per的同时产生4fd,不就可以解决了?
灵感来源:gsform指令可以在per路径下产生4fd文档,只需要开发一个shell脚本,把产生的文档转入到4fd目录下即可
r.f4部署(文件已给出可供下载)
用途:编译per档同时在4fd目录产生4fd档
cd /u1/topprod/tiptop/ds4gl2/bin (前往tiptop脚本集档)
rz -y (把r.f4文件上传)
chmod 777 r.f4 (脚本可执行授权)
r.f4是在原指令r.f2.per的基础上进行的开发,加入了gsform和mv指令,半原创
以下是脚本内容
######
# Compiler form file
# mod add gen 4fd by leezec 20200605
######
cd ../per
umask 000
# Change and Cut per if necessary
#pre42f $1.per $1T.per
# Prompt how to work
if [ "$1" = "" ] ; then
echo "Usage: r.f2 form_name\n"
exit 1
# If has no correspond form file
elif [ ! -s ${1}.per ] ; then
echo "\033[7m${1}\033[m error happens, check if:"
echo " 1) Do you specify the right form name ?"
echo " 2) Do you execute in PER directory ?"
echo " 3) File size is zero ?\n"
exit 1
fi
# Delete the previous temporary & error file(if it has)
if [ -s ${1}T.per ] ; then
rm -f ${1}T.per
fi
if [ -s ../42f/${1}.err ] ; then
rm -f ../42f/${1}.err
fi
FGLRUN=${FGLRUN:=fglrun};export FGLRUN #BUG-4C0168
cp -f ${1}.per ${1}T.per
chmod 777 ${1}T.per
# Cut unnecessary block & append default TOPMENU
ed - ${1}T.per <<%% 1 2 >/dev/null
1
g/▼-/.,$ d
g/□-/.,$ d
w
q
%%
#orafrm ${1}T.per /tmp/$$.per && rm -f ${1}T.per && mv /tmp/$$.per ${1}T.per
# Compiler the form file, and to see if has error during compilation
echo $1
fglform -M ${1}T
if [ $? -ne 0 ] ; then
fglform ${1}T
fi
rm -f ${1}T.per
if [ -s ${1}T.err ] ; then
mv ${1}T.err ../42f/${1}.err
pg -p '(Page %d)' +/See/ ../42f/${1}.err
exit 1
else
if [ -s ${1}T.42f ] ; then
mv ${1}T.42f ../42f/${1}.42f
echo "gsform -import ${1}.per "
gsform -import ${1}.per
echo "chmod 777 ${1}.4fd "
chmod 777 ${1}.4fd
echo "mv ${1}.4fd ../4fd/${1}.4fd "
mv ${1}.4fd ../4fd/${1}.4fd
else
exit 1
fi
fi