⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setup.4gl

📁 开发工具 Informix-4gl
💻 4GL
📖 第 1 页 / 共 5 页
字号:

 ##############################################################
 #/--@CLASS
 #@DESC   业务端升级主函数
 #@AUTHOR sam ying
 #@CREATEDATE 2002/08/21
 #@MODIFYLIST
 # NAME     DATE          REASON
 #-/liangna 2002/10/08   加预处理函数
 ##############################################################

 ##############################################################
 #/--@METHOD
 #@DESC    业务端升级主函数
 #@RETURN
 ##############################################################

 GLOBALS
 DEFINE  ga_prpversion ARRAY[3] OF RECORD  #1:为上一次信息,2:为本次信息
         ProjectName      Char(60), ##项目名称
         ProjectVersion   Char(30), ##版本号
         ProductID        Char(30), ##产品序号
         Times            SMALLINT, ##变更次数
         UserName         Char(40), ##客户名称
         Company          CHAR(40), ##单位名称
         UpdataDate       DATE,     ##更新日
         PrimaryVersion   CHAR(30), #上一次更新的版本信息
         Flag1            CHAR(30), ##[1]有效标志
         Flag2            CHAR(30), ##[2]有效标志
         Flag3            CHAR(30), ##[3]有效标志
         Flag4            CHAR(30), ##[4]有效标志
         Flag5            CHAR(30)
     END RECORD
 END GLOBALS

 MAIN
 DEFINE num_arg INTEGER
 DEFINE arg_1   CHAR(6)
 DEFINE arg_2   CHAR(30)
 DEFINE lv_result SMALLINT,
        lv_answer CHAR(1),
        lv_projectversion CHAR(6)

     INITIALIZE ga_prpversion,arg_1,arg_2,lv_answer,lv_projectversion TO NULL
     LET lv_result=0

     LET num_arg=num_args()
     LET arg_1=arg_val(1)
     LET arg_2=arg_val(2)

     CALL startlog("prpsetup.log")
     CASE arg_1
         WHEN "-a"
             
             DISPLAY "完全安装正在初始化,请稍候..."
             #--安装环境初始化
            CALL prpenv_check() RETURNING lv_result
             IF lv_result=FALSE THEN
                 PROMPT "环境变量错误,请正确设置环境变量后重试! 按任意键退出"
                     FOR lv_answer
                 EXIT PROGRAM
             END IF

             #--创建数据库
             CALL db_create_all() RETURNING lv_result
             IF lv_result!=0 THEN
                 PROMPT "数据库创建错误,请重试! 按任意键退出"
                     FOR lv_answer
                 EXIT PROGRAM
             END IF

             #--判断版本控制信息数据
             CALL setup_inita("_PRPINSDB")
                 RETURNING lv_result,ga_prpversion[1].*,ga_prpversion[2].*

             IF lv_result!=0 THEN
                 PROMPT "安装程序初始化错误,请重试!"
                     FOR lv_answer
                 EXIT PROGRAM
             END IF

             #--创建业务数据库对于其它库的同义名
             CALL syno_drop_all("_PRPINSDB") RETURNING lv_result
             IF lv_result!=0 THEN
                 PROMPT "同义名删除错误,请重试! 按任意键退出"
                     FOR lv_answer
                 EXIT PROGRAM
             END IF

             CALL syno_create_all()

             #--拷贝文件
             CALL file_cp()

             #--编译.a
             CALL build_cen_a()

             #--完全编译
             CALL fge_buildall()

             #--写入更新成功标志
             CALL setup_end("_PRPINSDB")
             DISPLAY "完全安装结束!"

         WHEN "-p"
{ 
             SELECT COUNT(*) INTO lv_answer FROM systables
                  WHERE tabname="prplarrearageadd"
                    AND tabtype="T"
             IF lv_answer !="1"
             THEN
                 PROMPT "此升级程序只适用于综合业务系统升级,按任意键退出"
                     FOR lv_answer
                 EXIT PROGRAM
             END IF
}

             #--升级前环境检查
             CALL prpenv_check() RETURNING lv_result
             IF lv_result=FALSE THEN
                 PROMPT "环境变量错误,请正确设置环境变量后重试!按任意键退出"
                     FOR lv_answer
                 EXIT PROGRAM
             END IF

             #--判断版本控制信息数据
             DISPLAY "补丁安装正在初始化,请稍候..."
             CALL setup_initp("_PRPINSDB")
                 RETURNING lv_result,ga_prpversion[1].*,ga_prpversion[2].*
                                    ,ga_prpversion[3].*
             IF lv_result!=0 THEN
                 PROMPT "安装程序初始化错误,按任意键退出"
                     FOR lv_answer
                 EXIT PROGRAM
             END IF

             #--仅允许v4.0版使用此补丁升级
             IF ga_prpversion[3].projectversion[1,6] < "v4.0.0" THEN
                 PROMPT "本次补丁程序仅针对v4.0.0及以上版本,按任意键退出"
                     FOR lv_answer
                 EXIT PROGRAM
             END IF

             #--数据库补丁更新
             CALL patch_all() RETURNING lv_result
             IF lv_result != 0 THEN
                 PROMPT "补丁升级失败,按任意键退出" FOR lv_answer
                 EXIT PROGRAM
             END IF

             #--创建数据业务库对于其它库的同义名
             CALL syno_drop_all("_PRPINSDB") RETURNING lv_result
             IF lv_result!=0 THEN
                 PROMPT "同义名删除错误,按任意键退出" FOR lv_answer
                 EXIT PROGRAM
             END IF
             CALL syno_create_all()

             #--拷贝文件
             CALL file_cp_patch(ga_prpversion[3].projectversion[1,6])

             #--编译.a
             CALL build_cen_a()

             #--完全编译
             CALL fge_buildall()

             #--写入成功标志
             CALL setup_end("_PRPINSDB")

             DISPLAY "补丁安装结束!"
             DISPLAY "请注意重新编译打印文件!"
             DISPLAY "请检查数据库结构是否正确,详见升级说明!"
             DISPLAY "请注意升级数据集中数据结构!"

         WHEN "-d"  #安装数据库dbname
             DISPLAY "完全安装正在初始化,请稍候..."
             #--安装环境初始化
             CALL prpenv_check() RETURNING lv_result
             IF lv_result=FALSE THEN
                 PROMPT "环境变量错误,请正确设置环境变量后重试! 按任意键退出"
                     FOR lv_answer
                 EXIT PROGRAM
             END IF

             #--创建数据库
             CALL db_create_all() RETURNING lv_result
             IF lv_result!=0 THEN
                 PROMPT "数据库创建错误,请重试! 按任意键退出"
                     FOR lv_answer
                 EXIT PROGRAM
             END IF

             #--判断版本控制信息数据
             CALL setup_inita("_PRPINSDB")
                 RETURNING lv_result,ga_prpversion[1].*,ga_prpversion[2].*

             IF lv_result!=0 THEN
                 PROMPT "安装程序初始化错误,请重试!"
                     FOR lv_answer
                 EXIT PROGRAM
             END IF

             #--创建业务数据库对于其它库的同义名
             CALL syno_drop_all("_PRPINSDB") RETURNING lv_result
             IF lv_result!=0 THEN
                 PROMPT "同义名删除错误,请重试! 按任意键退出"
                     FOR lv_answer
                 EXIT PROGRAM
             END IF

             CALL syno_create_all()

             #--完全编译
             CALL fge_buildall()

             #--写入更新成功标志
             CALL setup_end("_PRPINSDB")
             DISPLAY "完全安装结束!"

         WHEN "-dp"
{
             SELECT COUNT(*) INTO lv_answer FROM systables
                  WHERE tabname="prplarrearageadd"
                    AND tabtype="T"
             IF lv_answer !="1"
             THEN
                 PROMPT "此升级程序只适用于综合业务系统升级,按任意键退出"
                     FOR lv_answer
                 EXIT PROGRAM
             END IF
}

             DISPLAY "补丁安装正在初始化,请稍候..."
             CALL prpenv_check() RETURNING lv_result
             IF lv_result=FALSE THEN
                 PROMPT "环境变量错误,请正确设置环境变量后重试!按任意键退出"
                     FOR lv_answer
                 EXIT PROGRAM
             END IF

             #--判断版本控制信息数据
             CALL setup_initp("_PRPINSDB")
                 RETURNING lv_result,ga_prpversion[1].*,ga_prpversion[2].*
                                    ,ga_prpversion[3].*
             IF lv_result!=0 THEN
                 PROMPT "安装程序初始化错误,按任意键退出"
                     FOR lv_answer
                 EXIT PROGRAM
             END IF

             #--仅允许v1.5版使用此补丁升级
             #IF ga_prpversion[3].projectversion[1,6] != "v4.3.1" THEN
             #    ERROR "本次补丁程序仅针对v4.3.1版本!"

             IF ga_prpversion[3].projectversion[1,6] < "v4.0.0" THEN
                 PROMPT "本次补丁程序仅针对v4.0.0及以上版本,按任意键退出"
                     FOR lv_answer
                 EXIT PROGRAM
             END IF

             #--数据库补丁更新
             WHILE ga_prpversion[3].projectversion[1,6]<"v4.5.0"
                 CALL patchdb_do(ga_prpversion[3].projectversion[1,6])
                     RETURNING lv_projectversion,lv_result
                 IF lv_result != 0 THEN
                     PROMPT "补丁升级失败,按任意键退出" FOR lv_answer
                     EXIT PROGRAM
                 END IF
                 LET ga_prpversion[3].projectversion[1,6] = lv_projectversion
             END WHILE


             #--创建数据业务库对于其它库的同义名
             CALL syno_drop_all("_PRPINSDB") RETURNING lv_result
             IF lv_result!=0 THEN
                 PROMPT "同义名删除错误,按任意键退出" FOR lv_answer
                 EXIT PROGRAM
             END IF
             CALL syno_create_all()

             #--写入成功标志
             CALL setup_end("_PRPINSDB")
             DISPLAY "补丁安装结束!"

         WHEN "-b"
         WHEN "-ld" #完全更新代码
         WHEN "-lp" #补丁更新代码
         WHEN "-ac"
             #--完全拷贝文件
             CALL file_cp()

         WHEN "-pc"
             #--补丁拷贝文件(不包括打印文件)
             CALL file_cp_patch1()

         WHEN "-acsyn"
             CALL syno_create_all()

         --#建一个库同义词
         #WHEN "-pcsyn"
         #    CALL syno_create(arg_2)

         --#删除全部同义词
         WHEN "-adsyn"
             CALL syno_drop_all("_PRPINSDB") RETURNING lv_result
             IF lv_result!=0 THEN
                 ERROR "同义名删除错误,请重试!"
                 SLEEP 3
             END IF

         WHEN "-4ge"
             #--完全编译数据
             CALL fge_buildall()
         OTHERWISE
             DISPLAY "  输入有误!"
             DISPLAY "  setup.4ge 参数"    ##目前只用到一个参数(一、参数二)
             DISPLAY "       -a              完全安装"
             DISPLAY "       -p              补丁安装"
             DISPLAY "       -dp             补丁更新数据结构"
             DISPLAY "       -adsyn          删除全部同义词"
             DISPLAY "       -acsyn          建立全部同义词"
             DISPLAY "       -ac             完全拷贝程序"
             DISPLAY "       -4ge            编译所有的4ge"
 #           DISPLAY "       -lp             补丁更新代码"
 #           DISPLAY "       -d     dbname   安装数据库dbname"
 #           DISPLAY "       -b              备份代码    "
 #           DISPLAY "       -ld             完全更新代码"
 #           DISPLAY "       -pc             补丁拷贝程序(不包括打印文件)"
 #           DISPLAY "       -4ge   tabname  编译单一4ge"
     END CASE

 END MAIN

 ##############################################################
 #/--@METHOD
 #@DESC    补丁安装主函数
 #@RETURN
 ##############################################################

 FUNCTION patch_all()
 DEFINE lv_projectversion CHAR(6),
        lv_result   SMALLINT
  
     INITIALIZE lv_projectversion TO NULL
     LET lv_result = 0
     WHILE ga_prpversion[3].projectversion[1,6]<"v4.5.0"
         CALL patchdb_do(ga_prpversion[3].projectversion[1,6])
            RETURNING lv_projectversion,lv_result
         IF lv_result != 0 THEN
            RETURN 1
         END IF
         CALL patchcode_do(ga_prpversion[3].projectversion[1,6])
             RETURNING lv_projectversion,lv_result
         IF lv_result != 0 THEN
            RETURN 1
         END IF
         LET ga_prpversion[3].projectversion[1,6]=lv_projectversion

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -