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