TIPTOP编译per档同时在4fd目录产生4fd档

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 (脚本可执行授权)

TIPTOP编译per档同时在4fd目录产生4fd档

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

上一篇:httprunner+JSONPath支持属性和索引多重过滤


下一篇:从零开始实现一个端到端的机器学习项目[5]