标签:close path exe 例子 产生 cte gic 程序 大小
1.类
/*------------------------------------------------------------------------ File : batchcim Purpose : A COMMON CLASS FOR CIMLOAD FROM EXTERNAL PROGRAM Syntax : Description : Compatibility with PROGRESS OPENEDGE 10.1A and above Author(s) : TERRENCE ZHANG Created : Thu Jan 05 15:46:36 CST 2017 Notes : Windows Only (use *.bat) Can Convert to Unix Shell Can be invoked by gui/chui/appserver/webspeed ----------------------------------------------------------------------*/ &SCOPED-DEFINE SK + CHR(10) + /*换行符*/ &SCOPED-DEFINE batname "d:\batchcim\batchcim" /*CIM临时文件名称*/ &SCOPED-DEFINE temppath "d:\batchcim\temp\" /*CIM临时文件夹*/ &SCOPED-DEFINE OEDLC C:\Progress\OpenEdge /*PROGRESS的安装路径*/ &SCOPED-DEFINE OETMP C:\temp /*PROGRESS的临时文件夹*/ &SCOPED-DEFINE pfpath d:\batchcim\test.pf /*pf文件里有数据库连接字符串等等*/ &SCOPED-DEFINE username "qadcim" /*登录用户名 权限要有*/ &SCOPED-DEFINE userpsw "123456" /*登录密码*/ CLASS batchcim: DEFINE PRIVATE VARIABLE domain AS CHARACTER NO-UNDO. /*域*/ DEFINE PUBLIC VARIABLE synex AS LOGICAL NO-UNDO. /*同步或异步执行 YES-同步*/ DEFINE PROTECTED VARIABLE bexecp AS CHARACTER NO-UNDO. /*执行的P程序*/ DEFINE PROTECTED VARIABLE bhcim AS CHARACTER NO-UNDO. /*linux执行的shell脚本*/ DEFINE PUBLIC VARIABLE testmode AS LOGICAL NO-UNDO. /*是否为测试模式*/ DEFINE PROTECTED VARIABLE datalog AS CHARACTER NO-UNDO. DEFINE PROTECTED VARIABLE errlog AS CHARACTER NO-UNDO. DEFINE PUBLIC VARIABLE mutidm AS LOGICAL INIT YES NO-UNDO. /*指定的User是否可以访问多个域*/ CONSTRUCTOR PUBLIC batchcim(INPUT edomain AS CHARACTER): ASSIGN domain = edomain. END CONSTRUCTOR. METHOD PRIVATE VOID genshell(): /*OS windows*/ bhcim = {&batname} + GUID + ".bat". bexecp = {&batname} + GUID + ".p". OUTPUT TO VALUE(bhcim). PUT UNFORMATTED "@echo off" SKIP. PUT UNFORMATTED "set dlc={&OEDLC}" SKIP. PUT UNFORMATTED "set path=%path%;%dlc%\bin;" SKIP. PUT UNFORMATTED "if not exist {&OETMP} md {&OETMP}" SKIP. PUT UNFORMATTED "start /wait %dlc%\bin\prowin32.exe -pf {&pfpath} -p " + bexecp SKIP. /*若是64bit OE 则为prowin.exe*/ PUT UNFORMATTED "del /q /s " + bexecp SKIP. /*删除p文件*/ PUT UNFORMATTED "attrib -h -s -r -a %0" SKIP. PUT UNFORMATTED "del %0" SKIP. /*bat文件删除自身*/ PUT UNFORMATTED "exit" SKIP. OUTPUT CLOSE. ASSIGN datalog = {&temppath} + GUID + "cim". ASSIGN errlog = datalog + ".err". OUTPUT TO VALUE(bexecp). PUT UNFORMATTED "INPUT FROM " + datalog + "." SKIP. PUT UNFORMATTED "OUTPUT TO " + errlog + "." SKIP. PUT UNFORMATTED "PAUSE 0 BEFORE-HIDE." SKIP. PUT UNFORMATTED "RUN mf.p." SKIP. PUT UNFORMATTED "INPUT CLOSE." SKIP. PUT UNFORMATTED "OUTPUT CLOSE." SKIP. /*dynamic generate progress script to excute*/ OUTPUT CLOSE. END METHOD. METHOD PRIVATE VOID osexec(): IF SEARCH(bhcim) NE ? AND SEARCH(bexecp) NE ? THEN DO: IF synex THEN DO: /*正常是同步执行 要等待*/ OS-COMMAND SILENT VALUE(bhcim). /*OS-DELETE VALUE(bhcim). OS-DELETE VALUE(bexecp). batch文件里自带删除*/ IF NOT testmode THEN DO: OS-DELETE VALUE(errlog). OS-DELETE VALUE(datalog). /*删除文件*/ END. END. ELSE OS-COMMAND NO-WAIT VALUE(bhcim). /*异步 不等待*/ /*产生的日志文件可另外设个脚本定时清理*/ END. END METHOD. METHOD PUBLIC VOID batchload(INPUT dstring AS CHARACTER,INPUT execname AS CHARACTER): /*dstring是character 有32k大小限制 longchar则没有*/ DEFINE VARIABLE loadstring AS CHARACTER NO-UNDO. genshell(). /*mutidm mutidm EQ NO 单域 mutidm EQ YES 多域 */ OUTPUT TO VALUE(datalog). ASSIGN loadstring = QUOTER({&username}) + ‘ ‘ + QUOTER({&userpsw}). IF mutidm THEN loadstring = loadstring {&SK} domain. /*多域*/ loadstring = loadstring {&SK} execname. IF dstring NE ‘‘ AND dstring NE ? THEN loadstring = loadstring {&SK} dstring. loadstring = loadstring {&SK} ".". loadstring = loadstring {&SK} "YES". PUT UNFORMATTED loadstring. OUTPUT CLOSE. osexec(). END METHOD. METHOD PUBLIC VOID lbatchload(INPUT dstring AS LONGCHAR,INPUT execname AS CHARACTER): /*dstring是character 有32k大小限制 longchar则没有*/ DEFINE VARIABLE loadstring AS LONGCHAR NO-UNDO. genshell(). /*mutidm mutidm EQ NO 单域 mutidm EQ YES 多域 */ ASSIGN loadstring = QUOTER({&username}) + ‘ ‘ + QUOTER({&userpsw}). IF mutidm THEN loadstring = loadstring {&SK} domain. /*多域*/ loadstring = loadstring {&SK} execname. IF dstring NE ‘‘ AND dstring NE ? THEN loadstring = loadstring {&SK} dstring. loadstring = loadstring {&SK} ".". loadstring = loadstring {&SK} "YES". COPY-LOB FROM loadstring TO FILE datalog NO-CONVERT. osexec(). END METHOD. /*10.1A 版本还没有重载...所以另写方法名*/ END CLASS.
2.例子
define variable b as batchcim no-undo. define variable s as character no-undo. assign s = "cn200" + chr(10) + ".". b = new batchcim("us100"). s:testmode = yes. b:batchload(s,"mgdomchg.p"). delete object b. b = ?.
标签:close path exe 例子 产生 cte gic 程序 大小
原文地址:https://www.cnblogs.com/skyofchaos/p/13776744.html