📄 versiondea.4gl
字号:
##############################################################
#/--@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 + -