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

📄 versiondea.4gl

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

##############################################################
#/--@CLASS
#@DESC   版本信息管理 
#@AUTHOR sam ying
#@CREATEDATE 2002/06/27
#@MODIFYLIST
# NAME     DATE          REASON
#-/
##############################################################

##############################################################
#/--@METHOD
#@DESC    完全安装过程初始化 
#@RETURN  lv_result=执行结果(TRUE=成功;FALSE=失败)
##############################################################

FUNCTION setup_inita(iv_productid)
#--/@PARAMETER
DEFINE iv_productid     CHAR(30)
#-/

DEFINE lv_answer        CHAR(10)
DEFINE lv_result SMALLINT
DEFINE  la_prpversion ARRAY[2] OF RECORD  #1:为上一次信息,2:为本次信息
            ProjectName      Char(60)  ,##项目名称
            ProjectVersion   Char(30)  ,##版本号
            ProductID        Char(30)  ,##产品序号
            Times            SMALLINT  ,##变更次数
            UserName         Char(40)  ,##客户名称
            Company          CHAR(40)  ,##单位名称
            UpdateDate       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
    
    INITIALIZE la_prpversion[1].* TO NULL
    INITIALIZE la_prpversion[2].* TO NULL
    LET lv_result=0
    #--判断用户是否有不成功的安装
    CALL prpversion_getusrinfo(iv_productid,"3")
        RETURNING lv_result,la_prpversion[2].*
    CASE lv_result
        WHEN 0
            ERROR "用户上次完全安装失败,请将相关数据库drop重新建立"
            SLEEP 5
            LET lv_result=1
            RETURN lv_result,la_prpversion[1].*,la_prpversion[2].*
        WHEN 100

        OTHERWISE
            ERROR "安装初始化错误 [",lv_result,"]"
            SLEEP 3
            RETURN lv_result,la_prpversion[1].*,la_prpversion[2].*
    END CASE

    #--获得当前用户版本信息
    LET la_prpversion[1].ProjectName="PICC P&C新一代业务处理系统"
    LET la_prpversion[1].ProjectVersion="v0.0.0"
    LET la_prpversion[1].ProductID=iv_productid
    LET la_prpversion[1].Times=0
    LET la_prpversion[1].UpdateDate=TODAY
    LET la_prpversion[1].Flag5[1]="1"


    CALL prpversion_insert(la_prpversion[1].*) 
        RETURNING lv_result

    #--本次安装版本信息
    CALL prpversion_getnowinfo(iv_productid)
        RETURNING lv_result,la_prpversion[2].*

    LET la_prpversion[2].flag5[1]="3"
    CALL prpversion_delete(la_prpversion[2].projectversion,
                           la_prpversion[2].Productid,
                           la_prpversion[2].times)
        RETURNING lv_result

    CALL prpversion_insert(la_prpversion[2].*)
        RETURNING lv_result

    RETURN lv_result,la_prpversion[1].*,la_prpversion[2].*

END FUNCTION

##############################################################
#/--@METHOD
#@DESC    补丁安装过程初始化 
#@RETURN  lv_result,la_prpversion[1].*,la_prpversion[2].*
#                  ,la_prpversion[3].*
##############################################################

FUNCTION setup_initp(iv_productid)
#--/@PARAMETER
DEFINE iv_productid     CHAR(30)
#-/
DEFINE lv_answer        CHAR(10)
DEFINE lv_result SMALLINT
DEFINE  la_prpversion ARRAY[3] OF RECORD  #1:为上一次信息,2:为本次信息
       ProjectName      Char(60)  ,##项目名称
       ProjectVersion   Char(30)  ,##版本号
       ProductID        Char(30)  ,##产品序号
       Times            SMALLINT  ,##变更次数
       UserName         Char(40)  ,##客户名称
       Company          CHAR(40)  ,##单位名称
       UpdateDate       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
    
    INITIALIZE la_prpversion[1].* TO NULL
    INITIALIZE la_prpversion[2].* TO NULL
    INITIALIZE la_prpversion[3].* TO NULL
    LET lv_result=0

    #--判断用户是否有不成功的完全安装
    CALL prpversion_getusrinfo(iv_productid,"3")
        RETURNING lv_result,la_prpversion[2].*
    CASE lv_result
        WHEN 0
            ERROR "用户上次完全安装失败,请进行完全安装"
            SLEEP 5
            LET lv_result = 1
            RETURN lv_result,la_prpversion[1].*,la_prpversion[2].*
                        ,la_prpversion[3].*
        WHEN 100

        OTHERWISE
            ERROR "安装初始化错误 [",lv_result,"]"
            SLEEP 3
            RETURN lv_result,la_prpversion[1].*,la_prpversion[2].*
                        ,la_prpversion[3].*
    END CASE

    #--判断用户是否有不成功的安装
    CALL prpversion_getusrinfo(iv_productid,"2")
        RETURNING lv_result,la_prpversion[2].*
    CASE lv_result
        WHEN 0
            PROMPT "用户上次补丁更新失败,是否继续(y/n)" FOR lv_answer
            IF lv_answer MATCHES "[yY]"
            THEN
            ELSE
                LET lv_result=1
                RETURN lv_result,la_prpversion[1].*,la_prpversion[2].*
                        ,la_prpversion[3].*
            END IF
        WHEN 100
        WHEN -206
            CALL vertab_create(iv_productid)
        OTHERWISE
            ERROR "安装初始化错误 [",lv_result,"]"
            SLEEP 3
            RETURN lv_result,la_prpversion[1].*,la_prpversion[2].*
                        ,la_prpversion[3].*
    END CASE


    #--获得当前用户版本信息
    CALL prpversion_getusrinfo(iv_productid,"1")
        RETURNING lv_result,la_prpversion[1].*

    CASE lv_result
        WHEN 0

        WHEN 100

            LET la_prpversion[1].ProjectName="PICC P&C新一代业务处理系统"
            LET la_prpversion[1].ProjectVersion="v1.5.0"
            LET la_prpversion[1].ProductID=iv_productid
            LET la_prpversion[1].Times=1
            LET la_prpversion[1].UpdateDate=TODAY
           #LET la_prpversion[1].PrimaryVersion=
            LET la_prpversion[1].Flag5[1]="1"

            CALL prpversion_insert(la_prpversion[1].*) 
                RETURNING lv_result

        OTHERWISE
            ERROR "安装初始化错误 [",lv_result,"]"
            SLEEP 3
            RETURN lv_result,la_prpversion[1].*,la_prpversion[2].*
                        ,la_prpversion[3].*
    END CASE

    #--本次安装版本信息
    CALL prpversion_getnowinfo(iv_productid)
        RETURNING lv_result,la_prpversion[2].*

    LET la_prpversion[2].flag5[1] = "2"
    LET la_prpversion[2].PrimaryVersion = la_prpversion[1].projectversion

    #--判断安装包的合法性
    IF la_prpversion[1].projectversion=la_prpversion[2].projectversion THEN
        ERROR "已经是最新版本"
        SLEEP 2
        LET lv_result=1
        RETURN lv_result,la_prpversion[1].*,la_prpversion[2].*
                        ,la_prpversion[3].*
    END IF

    IF la_prpversion[1].projectversion>la_prpversion[2].projectversion THEN
        ERROR "当前版本比安装包新"
        SLEEP 2
        LET lv_result=1
        RETURN lv_result,la_prpversion[1].*,la_prpversion[2].*
                        ,la_prpversion[3].*
    END IF

    #--注册本次安装版本信息
    CALL prpversion_delete(la_prpversion[2].projectversion,
                           la_prpversion[2].Productid,
                           la_prpversion[2].times)
                RETURNING lv_result

    CALL prpversion_insert(la_prpversion[2].*)
                RETURNING lv_result

    #--为补丁安装中间记录初始化
    #--flag5[1]="4"表示升级前的有效版本信息
    CALL prpversion_getusrinfo(iv_productid,"4")
        RETURNING lv_result,la_prpversion[3].*
    CASE lv_result
        WHEN 0
        WHEN 100
            CALL prpversion_getusrinfo(iv_productid,"1")
                RETURNING lv_result,la_prpversion[3].*
            LET la_prpversion[3].times=9999
            LET la_prpversion[3].flag5[1]="4"
            CALL prpversion_insert(la_prpversion[3].*) 
                RETURNING lv_result
        OTHERWISE
            ERROR "安装初始化错误 [",lv_result,"]"
            SLEEP 3
            RETURN lv_result,la_prpversion[1].*,la_prpversion[2].*
                        ,la_prpversion[3].*
    END CASE

    #--RETURN 上次有效版本信息,本次安装版本信息,本次安装版本的起点版本信息
    RETURN lv_result,la_prpversion[1].*,la_prpversion[2].*
                    ,la_prpversion[3].*

END FUNCTION

##############################################################
#/--@METHOD
#@DESC    安装成功,向版本信息表中写信息 
#@RETURN  
##############################################################

FUNCTION setup_end(iv_Productid)
#--/@PARAMETER
DEFINE iv_productid  CHAR(30)
#-/
DEFINE lv_dbname   CHAR(18)

    LET lv_dbname=fgl_getenv(iv_Productid)

    DATABASE lv_dbname

    #--删除中间信息
    DELETE FROM prpversion
    WHERE Flag5[1]="4"

    #--更新补丁安装
    DATABASE lv_dbname
    UPDATE prpversion
    SET Flag5[1]="0"
    WHERE Flag5[1]="1"

    #--更新补丁安装
    UPDATE prpversion
    SET Flag5[1]="1"
    WHERE Flag5[1]="2"

    #--更新完全安装
    UPDATE prpversion
    SET Flag5[1]="1"
    WHERE Flag5[1]="3"

END FUNCTION



##############################################################
#/--@METHOD

⌨️ 快捷键说明

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