{"id":5122,"date":"2019-08-13T08:10:32","date_gmt":"2019-08-13T00:10:32","guid":{"rendered":"http:\/\/www.hefeiyu.com\/?p=5122"},"modified":"2019-08-13T08:10:32","modified_gmt":"2019-08-13T00:10:32","slug":"4gl%e8%af%bb%e5%8f%96%e5%9b%be%e7%ba%b8","status":"publish","type":"post","link":"https:\/\/www.hefeiyu.com\/?p=5122","title":{"rendered":"4gl\u8bfb\u53d6\u56fe\u7eb8"},"content":{"rendered":"<div>\n<div>\n<div class=\"article\">\n<div class=\"show-content\" data-note-content=\"\">\n<div class=\"show-content-free\">\n<p>\u4e00\u3001\u5728\u9879\u76ee\u9636\u6bb5\u3001\u7ecf\u5e38\u4f1a\u6709\u8fd9\u6837\u7684\u9700\u6c42\uff0c\u5728ERP\u80fd\u76f4\u63a5\u6253\u5f00PLM\/PDM\u7684\u56fe\u7eb8\u3002\u76f4\u63a5\u4e0a\u6e90\u7801\u3002<br \/>\n\u4e3b\u8981\u8fd0\u7528\u7684\u77e5\u8bc6\u70b9\uff1a<br \/>\nPDM\/PLM\u4e0a\u9700\u8981\u5b89\u88c5ftp\u7684\u670d\u52a1\u5668\u3002\u8fd9\u91cc\u9488\u5bf9FTP\u7684\u5b89\u88c5\u6587\u4ef6\u5c31\u4e0d\u505a\u4ecb\u7ecd\u4e86\u3002PDM\u4e0a\u4f20\u9644\u4ef6\uff0c\u6587\u4ef6\u8def\u5f84\u5730\u5740\u4f20\u5165\u5230\u540e\u53f0\u6570\u636e\u8868\u4e2d\u4f5c\u4e3a\u8bb0\u5f55\u3002ERP\u7aef\u5229\u7528FTP\u4e0b\u8f7d\u6587\u4ef6\uff0c\u5373\u53ef\u6253\u5f00PDM\u56fe\u7eb8\u3002<\/p>\n<pre class=\"hljs ruby\"><code class=\"ruby\">DATABASE ds \r\nGLOBALS <span class=\"hljs-string\">\"..\/..\/..\/tiptop\/config\/top.global\"<\/span>\r\nDEFINE tm RECORD \r\n     tihao LIKE type_file.chr10<span class=\"hljs-number\">0<\/span>,\r\n     wc     string \r\n     <span class=\"hljs-keyword\">END<\/span> RECORD \r\nDEFINE g_aaa DYNAMIC ARRAY OF RECORD \r\n                itemno   LIKE type_file.chr100<span class=\"hljs-number\">0<\/span>,\r\n                ddno     LIKE type_file.chr100<span class=\"hljs-number\">0<\/span>,\r\n                shibh    LIKE type_file.chr100<span class=\"hljs-number\">0<\/span>,\r\n                guige    LIKE type_file.chr100<span class=\"hljs-number\">0<\/span>,\r\n                fbtuhao  LIKE type_file.chr100<span class=\"hljs-number\">0<\/span>,\r\n                fbname   LIKE type_file.chr100<span class=\"hljs-number\">0<\/span>,\r\n                mdpath   LIKE type_file.chr100<span class=\"hljs-number\">0<\/span>\r\n               <span class=\"hljs-keyword\">END<\/span> RECORD,\r\n        g_wc,g_wc1   string,  \r\n        g_wc2        string,  \r\n        g_sql        string,  \r\n        l_ac         LIKE type_file.num5,    \r\n        g_argv1      LIKE type_file.chr100<span class=\"hljs-number\">0<\/span>,      \r\n        g_rec_b LIKE type_file.num5           \r\nDEFINE g_itemno,g_ddno,g_shibh,g_guige,g_fbtuhao,g_fbname LIKE type_file.chr100<span class=\"hljs-number\">0<\/span> \r\nDEFINE   g_cnt          LIKE type_file.num1<span class=\"hljs-number\">0<\/span>   \r\nDEFINE   g_msg          LIKE type_file.chr100<span class=\"hljs-number\">0<\/span> \r\nDEFINE   g_row_count    LIKE type_file.num1<span class=\"hljs-number\">0<\/span>   \r\nDEFINE   g_curs_index   LIKE type_file.num1<span class=\"hljs-number\">0<\/span>  \r\nDEFINE   g_jump         LIKE type_file.num1<span class=\"hljs-number\">0<\/span>   \r\nDEFINE   mi_no_ask      LIKE type_file.num5    \r\nDEFINE g_tihao LIKE type_file.chr10<span class=\"hljs-number\">0<\/span>\r\nDEFINE l_ac1 LIKE type_file.num5\r\n \r\nMAIN\r\n   DEFINE p_row,p_col   LIKE type_file.num5    \r\n    OPTIONS\r\n        INPUT NO WRAP\r\n    DEFER INTERRUPT \r\n   IF (NOT cl_user()) THEN\r\n      EXIT PROGRAM\r\n   <span class=\"hljs-keyword\">END<\/span> IF \r\n   WHENEVER ERROR CALL cl_err_msg_log \r\n   IF (NOT cl_setup(<span class=\"hljs-string\">\"csf\"<\/span>)) THEN\r\n      EXIT PROGRAM\r\n   <span class=\"hljs-keyword\">END<\/span> IF\r\n    \r\n    LET tm.wc = ARG_VAL(<span class=\"hljs-number\">1<\/span>) \r\n    LET tm.wc = cl_replace_str(tm.wc,<span class=\"hljs-string\">'\\\\\\\"'<\/span>,<span class=\"hljs-string\">'\"'<\/span>)\r\n    LET tm.tihao = ARG_VAL(<span class=\"hljs-number\">2<\/span>) \r\n    LET tm.tihao = cl_replace_str(tm.tihao,<span class=\"hljs-string\">'\\\\\\\"'<\/span>,<span class=\"hljs-string\">'\"'<\/span>)\r\n    \r\n    CALL  cl_used(g_prog,g_time,<span class=\"hljs-number\">1<\/span>) RETURNING g_time  \r\n    LET p_row = <span class=\"hljs-number\">4<\/span> LET p_col = <span class=\"hljs-number\">2<\/span>\r\n    OPEN WINDOW q000_w AT p_row,p_col\r\n         WITH FORM <span class=\"hljs-string\">\"csf\/42f\/csfq000\"<\/span>\r\n       ATTRIBUTE (STYLE = g_win_style CLIPPED)  \r\n \r\n    CALL cl_ui_init()\r\n    \r\n    IF NOT cl_null(tm.wc) THEN \r\n        CALL q000_fill()\r\n    <span class=\"hljs-keyword\">END<\/span> IF \r\n        \r\n    CALL q000_menu()\r\n    CLOSE WINDOW q000_w\r\n    CALL  cl_used(g_prog,g_time,<span class=\"hljs-number\">2<\/span>) RETURNING g_time  \r\n<span class=\"hljs-keyword\">END<\/span> MAIN\r\n \r\nFUNCTION q000_menu()\r\n   DEFINE   l_cmd     LIKE type_file.chr100<span class=\"hljs-number\">0<\/span>  \r\n   DEFINE   l_apa0<span class=\"hljs-number\">0<\/span>   LIKE apa_file.apa0<span class=\"hljs-number\">0<\/span>\r\n   DEFINE   l_prog    LIKE zz_file.zz01 \r\n \r\n   WHILE TRUE\r\n      CALL q000_bp(<span class=\"hljs-string\">\"G\"<\/span>)\r\n      CASE g_action_choice\r\n         WHEN <span class=\"hljs-string\">\"help\"<\/span>\r\n            CALL cl_show_help()\r\n         WHEN <span class=\"hljs-string\">\"exit\"<\/span>\r\n            EXIT WHILE\r\n         WHEN <span class=\"hljs-string\">\"controlg\"<\/span>\r\n            CALL cl_cmdask()\r\n         WHEN <span class=\"hljs-string\">\"query\"<\/span>\r\n            CALL q000_q()\r\n            CALL q000_fill()\r\n            \r\n         WHEN <span class=\"hljs-string\">\"exporttoexcel\"<\/span>\r\n             IF cl_chk_act_auth() THEN\r\n                CALL cl_export_to_excel\r\n                (ui.Interface.getRootNode(),base.TypeInfo.create(g_aaa),<span class=\"hljs-string\">''<\/span>,<span class=\"hljs-string\">''<\/span>)\r\n             <span class=\"hljs-keyword\">END<\/span> IF\r\n      <span class=\"hljs-keyword\">END<\/span> CASE\r\n   <span class=\"hljs-keyword\">END<\/span> WHILE\r\n<span class=\"hljs-keyword\">END<\/span> FUNCTION\r\n \r\nFUNCTION q000_fill()  \r\n    DEFINE p_chr LIKE type_file.chr1\r\n    DEFINE p_ima01,l_ima01 LIKE ima_file.ima01                   \r\n    DEFINE l_sql,l_sqll STRING\r\n    DEFINE l_bmb01 LIKE bmb_file.bmb01 \r\n    \r\n    IF NOT cl_null(tm.tihao) THEN \r\n   \r\n   LET l_sqll=<span class=\"hljs-string\">\"SELECT S_ITEMNO FROM MLDT_0.BOM@MLPDM START WITH F_ITEMNO IN \"<\/span>,\r\n             <span class=\"hljs-string\">\" (SELECT MD$NUMBER FROM MLDT_0.SHENGCBOM$VF@MLPDM WHERE CCBH LIKE '%\"<\/span>,tm.tihao,<span class=\"hljs-string\">\"%') CONNECT BY PRIOR S_ITEMNO = F_ITEMNO\"<\/span>\r\n    \r\n   CALL g_aaa.clear()\r\n   LET g_cnt = <span class=\"hljs-number\">1<\/span>\r\n \r\n       LET l_sql = <span class=\"hljs-string\">\" select * from MLDT_0.FB_DRAFT@MLPDM where itemno IN (\"<\/span>,l_sqll,<span class=\"hljs-string\">\")\"<\/span>\r\n        \r\n        PREPARE prep_aaa FROM l_sql\r\n        DECLARE decl_aaa CURSOR FOR prep_aaa\r\n\r\n       FOREACH decl_aaa INTO g_aaa[g_cnt].*           <span class=\"hljs-comment\">#\u55ae\u8eab ARRAY \u586b\u5145<\/span>\r\n     \r\n          LET g_cnt = g_cnt + <span class=\"hljs-number\">1<\/span>\r\n    \r\n       <span class=\"hljs-keyword\">END<\/span> FOREACH\r\n\r\n    ELSE \r\n       LET l_sql = <span class=\"hljs-string\">\" select itemno ,ddno,shibh,guige,fbtuhao,fbname,mdpath from  MLDT_0.FB_DRAFT@MLPDM where \"<\/span>,tm.wc\r\n                  \r\n            PREPARE prep_aaa1 FROM l_sql\r\n            DECLARE decl_aaa1 CURSOR FOR prep_aaa1\r\n\r\n            CALL g_aaa.clear()\r\n            LET g_cnt = <span class=\"hljs-number\">1<\/span>\r\n         \r\n        FOREACH decl_aaa1 INTO g_aaa[g_cnt].*           \r\n            IF SQLCA.sqlcode THEN\r\n                CALL cl_err(<span class=\"hljs-string\">'foreach:'<\/span>,SQLCA.sqlcode,<span class=\"hljs-number\">1<\/span>)\r\n                EXIT FOREACH\r\n            <span class=\"hljs-keyword\">END<\/span> IF\r\n      \r\n            LET g_cnt = g_cnt + <span class=\"hljs-number\">1<\/span>\r\n\r\n        <span class=\"hljs-keyword\">END<\/span> FOREACH\r\n    <span class=\"hljs-keyword\">END<\/span> IF \r\n            \r\n    CALL g_aaa.deleteElement(g_cnt)     \r\n    LET g_rec_b = g_cnt -<span class=\"hljs-number\">1<\/span>\r\n    DISPLAY g_rec_b TO FORMONLY.cn2\r\n    CALL SET_COUNT(g_cnt-<span class=\"hljs-number\">1<\/span>)               \r\n\r\n<span class=\"hljs-keyword\">END<\/span> FUNCTION\r\n \r\nFUNCTION q000_bp(p_ud)\r\n   DEFINE   p_ud   LIKE type_file.chr1    \r\n   DEFINE l_url,l_string STRING\r\n   \r\n   IF p_ud &lt;&gt; <span class=\"hljs-string\">\"G\"<\/span> THEN\r\n      RETURN\r\n   <span class=\"hljs-keyword\">END<\/span> IF\r\n \r\n   CALL SET_COUNT(g_rec_b)\r\n   LET g_action_choice = <span class=\"hljs-string\">\" \"<\/span>\r\n   CALL cl_set_act_visible(<span class=\"hljs-string\">\"accept,cancel\"<\/span>, FALSE)\r\n\r\n   DISPLAY ARRAY g_aaa TO s_aaa.* ATTRIBUTE(COUNT=g_rec_b,UNBUFFERED)\r\n      BEFORE DISPLAY\r\n         CALL cl_navigator_setting( g_curs_index, g_row_count )\r\n\r\n   ON ACTION ACCEPT\r\n        LET l_ac1 = ARR_CURR()\r\n        IF l_ac1 &gt; <span class=\"hljs-number\">0<\/span>  THEN\r\n            LET l_url = <span class=\"hljs-string\">\"ftp:\/\/admin:admin@192.168.2.23:2121\"<\/span> CLIPPED,g_aaa[l_ac1].mdpath CLIPPED\r\n            LET l_string = cl_open_url(l_url)\r\n        <span class=\"hljs-keyword\">END<\/span> IF  \r\n\r\n      CALL cl_show_fld_cont()\r\n\r\n   ON ACTION EXIT\r\n      LET g_action_choice=<span class=\"hljs-string\">\"exit\"<\/span>\r\n      EXIT DISPLAY\r\n\r\n   ON ACTION query\r\n      LET g_action_choice=<span class=\"hljs-string\">\"query\"<\/span>\r\n      EXIT DISPLAY\r\n      \r\n   ON ACTION controlg\r\n      LET g_action_choice=<span class=\"hljs-string\">\"controlg\"<\/span>\r\n      EXIT DISPLAY\r\n\r\n   ON ACTION CANCEL\r\n      LET INT_FLAG=FALSE\r\n      LET g_action_choice=<span class=\"hljs-string\">\"exit\"<\/span>\r\n      EXIT DISPLAY\r\n\r\n   ON IDLE g_idle_seconds\r\n      CALL cl_on_idle()\r\n      CONTINUE DISPLAY\r\n\r\n   <span class=\"hljs-keyword\">END<\/span> DISPLAY \r\n   CALL cl_set_act_visible(<span class=\"hljs-string\">\"accept,cancel\"<\/span>, TRUE)\r\n<span class=\"hljs-keyword\">END<\/span> FUNCTION\r\n   \r\nFUNCTION q000_q()   \r\n            LET g_itemno =<span class=\"hljs-string\">''<\/span>\r\n            LET g_ddno   =<span class=\"hljs-string\">''<\/span>\r\n            LET g_shibh  =<span class=\"hljs-string\">''<\/span>\r\n            LET g_guige  =<span class=\"hljs-string\">''<\/span>\r\n            LET g_fbtuhao=<span class=\"hljs-string\">''<\/span>\r\n            LET g_fbname =<span class=\"hljs-string\">''<\/span>\r\n            LET tm.tihao=<span class=\"hljs-string\">''<\/span>\r\n            LET tm.wc=<span class=\"hljs-string\">''<\/span>\r\n            \r\n   DIALOG ATTRIBUTE(unbuffered)\r\n      INPUT BY NAME tm.tihao ATTRIBUTE(WITHOUT DEFAULTS)      \r\n      AFTER FIELD tihao \r\n         IF NOT cl_null(tm.tihao) THEN \r\n            LET g_itemno =<span class=\"hljs-string\">''<\/span>\r\n            LET g_ddno   =<span class=\"hljs-string\">''<\/span>\r\n            LET g_shibh  =<span class=\"hljs-string\">''<\/span>\r\n            LET g_guige  =<span class=\"hljs-string\">''<\/span>\r\n            LET g_fbtuhao=<span class=\"hljs-string\">''<\/span>\r\n            LET g_fbname =<span class=\"hljs-string\">''<\/span>\r\n            DISPLAY g_itemno TO itemno \r\n            DISPLAY g_ddno   TO ddno   \r\n            DISPLAY g_shibh  TO shibh  \r\n            DISPLAY g_guige  TO guige  \r\n            DISPLAY g_fbtuhao TO fbtuhao\r\n            DISPLAY g_fbname TO fbname \r\n         <span class=\"hljs-keyword\">END<\/span> IF     \r\n       <span class=\"hljs-keyword\">END<\/span> INPUT\r\n\r\n   CONSTRUCT BY NAME tm.wc ON itemno ,ddno,shibh  ,guige  ,fbtuhao,fbname \r\n\r\n       BEFORE CONSTRUCT\r\n          CALL cl_qbe_init()    \r\n          \r\n      AFTER CONSTRUCT\r\n          IF tm.wc=<span class=\"hljs-string\">'1=1'<\/span> OR cl_null(tm.wc) THEN \r\n          ELSE \r\n              LET tm.tihao=<span class=\"hljs-string\">''<\/span>\r\n              DISPLAY BY NAME tm.tihao\r\n          <span class=\"hljs-keyword\">END<\/span> IF \r\n             \r\n    <span class=\"hljs-keyword\">END<\/span> CONSTRUCT\r\n                    \r\n      ON ACTION locale\r\n         CALL cl_show_fld_cont()\r\n         LET g_action_choice = <span class=\"hljs-string\">\"locale\"<\/span>\r\n         EXIT DIALOG\r\n\r\n      ON ACTION CONTROLR\r\n         CALL cl_show_req_fields()\r\n\r\n      ON ACTION CONTROLG\r\n         CALL cl_cmdask()\r\n\r\n      ON IDLE g_idle_seconds\r\n         CALL cl_on_idle()\r\n         CONTINUE DIALOG\r\n\r\n      ON ACTION about\r\n         CALL cl_about()\r\n\r\n      ON ACTION help\r\n         CALL cl_show_help()\r\n\r\n      ON ACTION exit\r\n         LET INT_FLAG = <span class=\"hljs-number\">1<\/span>\r\n         EXIT DIALOG\r\n\r\n      ON ACTION accept\r\n          IF tm.wc=<span class=\"hljs-string\">'1=1'<\/span> OR cl_null(tm.wc) THEN \r\n          ELSE \r\n              LET tm.tihao=<span class=\"hljs-string\">''<\/span>\r\n              DISPLAY BY NAME tm.tihao\r\n          <span class=\"hljs-keyword\">END<\/span> IF       \r\n         EXIT DIALOG\r\n      ON ACTION cancel\r\n         LET INT_FLAG=<span class=\"hljs-number\">1<\/span>\r\n         EXIT DIALOG\r\n    <span class=\"hljs-keyword\">END<\/span> DIALOG\r\n    \r\n<span class=\"hljs-keyword\">END<\/span> FUNCTION    \r\n<\/code><\/pre>\n<p>\u6838\u5fc3\u51fd\u6570cl_open_url\u7684\u6e90\u7801<\/p>\n<pre class=\"hljs objectivec\"><code class=\"objectivec\">DATABASE ds        <span class=\"hljs-meta\">#FUN-6C0017   <\/span>\r\nGLOBALS <span class=\"hljs-string\">\"..\/..\/config\/top.global\"<\/span>   \r\n<span class=\"hljs-meta\">##########################################################################   <\/span>\r\n<span class=\"hljs-meta\"># Descriptions...: Start browser to access an URL   <\/span>\r\n<span class=\"hljs-meta\"># Memo...........:    <\/span>\r\n<span class=\"hljs-meta\"># Input parameter: ps_url     STRING - URL location   <\/span>\r\n<span class=\"hljs-meta\"># Return code....: TRUE\/FALSE        - Success\/Fail   <\/span>\r\n<span class=\"hljs-meta\"># Usage..........: CALL cl_open_url(<span class=\"hljs-meta-string\">\"http:\/\/www.kimo.com.tw\"<\/span>)   <\/span>\r\n<span class=\"hljs-meta\"># Date &amp; Author..: 2004\/06\/24 by Brendan   <\/span>\r\n<span class=\"hljs-meta\"># Modify.........:    <\/span>\r\n<span class=\"hljs-meta\">##########################################################################   <\/span>\r\nFUNCTION cl_open_url(ps_url)  \r\n  DEFINE ps_url       STRING  \r\n  DEFINE ls_browser   STRING  \r\n     \r\n  WHENEVER ERROR <span class=\"hljs-built_in\">CALL<\/span> cl_err_msg_log  \r\n   \r\n  <span class=\"hljs-meta\">#No.TQC-830002   <\/span>\r\n  IF cl_null(ps_url) THEN                                  \r\n     RETURN <span class=\"hljs-literal\">FALSE<\/span>  \r\n  END IF  \r\n  <span class=\"hljs-meta\">#END No.TQC-830002   <\/span>\r\n   \r\n<span class=\"hljs-meta\"># LET ls_browser = <span class=\"hljs-meta-string\">\"C:\/Program Files\/Internet Explorer\/IEXPLORE.EXE\"<\/span>   <\/span>\r\n<span class=\"hljs-meta\"># LET ls_browser = <span class=\"hljs-meta-string\">\"explorer.exe\"<\/span>                       #No.TQC-7B0061   <\/span>\r\n  <span class=\"hljs-meta\">#No.TQC-830002   <\/span>\r\n  IF ps_url.getindexof(<span class=\"hljs-string\">\"ftp:\/\/\"<\/span>,<span class=\"hljs-number\">1<\/span>) = <span class=\"hljs-number\">1<\/span> OR ps_url.getindexof(<span class=\"hljs-string\">\"FTP:\/\/\"<\/span>,<span class=\"hljs-number\">1<\/span>) = <span class=\"hljs-number\">1<\/span> THEN <span class=\"hljs-meta\">#FUN-A70081   <\/span>\r\n     LET ls_browser = <span class=\"hljs-literal\">NULL<\/span>                                                       <span class=\"hljs-meta\">#FUN-A70081   <\/span>\r\n  ELSE                                                                           <span class=\"hljs-meta\">#FUN-A70081   <\/span>\r\n     LET ls_browser = cl_client_env(<span class=\"hljs-string\">\"ComSpec\"<\/span>)             \r\n     LET ls_browser = <span class=\"hljs-string\">\"\\\"\"<\/span>, ls_browser, <span class=\"hljs-string\">\"\\\" \/c explorer\"<\/span>  \r\n  END IF  <span class=\"hljs-meta\">#FUN-A70081   <\/span>\r\n  <span class=\"hljs-meta\">#END No.TQC-830002   <\/span>\r\n  IF cl_execClientApp(ls_browser, ps_url) THEN  \r\n     RETURN <span class=\"hljs-literal\">TRUE<\/span>  \r\n  ELSE   \r\n     RETURN <span class=\"hljs-literal\">FALSE<\/span>  \r\n  END IF  \r\nEND FUNCTION  \r\n   \r\n<span class=\"hljs-meta\">##########################################################################   <\/span>\r\n<span class=\"hljs-meta\"># Descriptions...: Open a documentation with associated application   <\/span>\r\n<span class=\"hljs-meta\"># Memo...........:    <\/span>\r\n<span class=\"hljs-meta\"># Input parameter: ps_doc STRING - Documentation location   <\/span>\r\n<span class=\"hljs-meta\"># Return code....: TRUE\/FALSE  - Success\/Error   <\/span>\r\n<span class=\"hljs-meta\"># Usage..........: CALL cl_open_doc(<span class=\"hljs-meta-string\">\"C:\/tiptop\/tiptop.txt\"<\/span>)   <\/span>\r\n<span class=\"hljs-meta\"># Date &amp; Author..: 2004\/06\/24 by Brendan   <\/span>\r\n<span class=\"hljs-meta\"># Modify.........:    <\/span>\r\n<span class=\"hljs-meta\">##########################################################################   <\/span>\r\nFUNCTION cl_open_doc(ps_doc)  \r\n  DEFINE ps_doc   STRING  \r\n   \r\n   \r\n  IF cl_execClientApp(<span class=\"hljs-string\">\"\"<\/span>, ps_doc) THEN  \r\n     RETURN <span class=\"hljs-literal\">TRUE<\/span>  \r\n  ELSE   \r\n     RETURN <span class=\"hljs-literal\">FALSE<\/span>  \r\n  END IF  \r\nEND FUNCTION  \r\n   \r\n<span class=\"hljs-meta\">##########################################################################   <\/span>\r\n<span class=\"hljs-meta\"># Descriptions...: Start an application following by argument   <\/span>\r\n<span class=\"hljs-meta\"># Memo...........:    <\/span>\r\n<span class=\"hljs-meta\"># Input parameter: ps_prog STRING - Application location   <\/span>\r\n<span class=\"hljs-meta\">#                  ps_arg  STRING - Executation argument   <\/span>\r\n<span class=\"hljs-meta\"># Return code....: TRUE\/FALSE     - Success\/Error   <\/span>\r\n<span class=\"hljs-meta\"># Usage..........: CALL cl_open_prog(<span class=\"hljs-meta-string\">\"C:\/Editor.exe\"<\/span>, <span class=\"hljs-meta-string\">\"C:\/tiptop\/tiptop.txt\"<\/span>)   <\/span>\r\n<span class=\"hljs-meta\"># Date &amp; Author..: 2004\/06\/24 by Brendan   <\/span>\r\n<span class=\"hljs-meta\"># Modify.........:    <\/span>\r\n<span class=\"hljs-meta\">##########################################################################   <\/span>\r\nFUNCTION cl_open_prog(ps_prog, ps_arg)  \r\n  DEFINE ps_prog   STRING,  \r\n         ps_arg    STRING     \r\n  <span class=\"hljs-meta\">#No.TQC-830002   <\/span>\r\n  IF cl_null(ps_arg) THEN                                  \r\n     RETURN <span class=\"hljs-literal\">FALSE<\/span>  \r\n  END IF  \r\n  <span class=\"hljs-meta\">#END No.TQC-830002   <\/span>\r\n   \r\n  <span class=\"hljs-meta\">#-----------------------------------------------------------------------------   <\/span>\r\n  <span class=\"hljs-meta\"># ps_arg \u591a\u53c3\u6578\u6642\u4ee5 | \u4f5c\u70ba\u5206\u9694, e.x. ps_arg = <span class=\"hljs-meta-string\">\"arg1|arg2|arg3 ......\"<\/span>   <\/span>\r\n  <span class=\"hljs-meta\">#-----------------------------------------------------------------------------   <\/span>\r\n  IF cl_execClientApp(ps_prog, ps_arg) THEN  \r\n     RETURN <span class=\"hljs-literal\">TRUE<\/span>  \r\n  ELSE   \r\n     RETURN <span class=\"hljs-literal\">FALSE<\/span>  \r\n  END IF  \r\nEND FUNCTION  \r\n   \r\n<span class=\"hljs-meta\">##########################################################################   <\/span>\r\n<span class=\"hljs-meta\"># Descriptions...: Get an environment variable set in the user session on the front end workstation   <\/span>\r\n<span class=\"hljs-meta\"># Memo...........:    <\/span>\r\n<span class=\"hljs-meta\"># Input parameter: ps_env    STRING   - Environment variable   <\/span>\r\n<span class=\"hljs-meta\"># Return code....: ls_value  STRING   - Value of environment variable   <\/span>\r\n<span class=\"hljs-meta\"># Usage..........: CALL cl_client_env(<span class=\"hljs-meta-string\">\"PATH\"<\/span>)   <\/span>\r\n<span class=\"hljs-meta\"># Date &amp; Author..: 2004\/07\/16 by Brendan   <\/span>\r\n<span class=\"hljs-meta\"># Modify.........:    <\/span>\r\n<span class=\"hljs-meta\">##########################################################################   <\/span>\r\nFUNCTION cl_client_env(ps_env)  \r\n  DEFINE ps_env     STRING  \r\n  DEFINE ls_value   STRING  \r\n    \r\n  IF cl_null(ps_env) THEN  \r\n     RETURN <span class=\"hljs-literal\">NULL<\/span>  \r\n  END IF  \r\n   \r\n  <span class=\"hljs-built_in\">CALL<\/span> ui.Interface.frontCall(<span class=\"hljs-string\">\"standard\"<\/span>,  \r\n                              <span class=\"hljs-string\">\"getenv\"<\/span>,  \r\n                              [ps_env],  \r\n                              [ls_value])  \r\n                                 \r\n  IF ( STATUS ) OR ( cl_null(ls_value) ) THEN  \r\n     RETURN <span class=\"hljs-literal\">NULL<\/span>  \r\n  ELSE  \r\n     RETURN ls_value  \r\n  END IF  \r\nEND FUNCTION  \r\n   \r\n<span class=\"hljs-meta\">##########################################################################   <\/span>\r\n<span class=\"hljs-meta\"># Descriptions...: \u6307\u5b9a\u958b\u555f\u7684\u7a0b\u5f0f   <\/span>\r\n<span class=\"hljs-meta\"># Memo...........:   <\/span>\r\n<span class=\"hljs-meta\"># Input parameter: ps_app  STRING  \u958b\u555f\u7a0b\u5f0f   <\/span>\r\n<span class=\"hljs-meta\">#                : ps_doc  STRING  \u6307\u4ee4,\u6a94\u6848\u6216URL   <\/span>\r\n<span class=\"hljs-meta\"># Return code....: TRUE\/FALSE      Success\/Fail   <\/span>\r\n<span class=\"hljs-meta\"># Usage..........: CALL cl_execClientApp(ls_browser,ls_url)   <\/span>\r\n<span class=\"hljs-meta\"># Date &amp; Author..: 2004\/07\/16 by Brendan   <\/span>\r\n<span class=\"hljs-meta\"># Modify.........:    <\/span>\r\n<span class=\"hljs-meta\">##########################################################################   <\/span>\r\nFUNCTION cl_execClientApp(ps_app, ps_doc)  \r\n   DEFINE ps_app       STRING,  \r\n          ps_doc       STRING  \r\n   DEFINE li_status    LIKE type_file.num10    <span class=\"hljs-meta\">#No.FUN-690005  INTEGER   <\/span>\r\n   DEFINE ls_command   STRING  \r\n   DEFINE lt_tok       base.StringTokenizer,   <span class=\"hljs-meta\">#No.FUN-760043   <\/span>\r\n          ls_arg       STRING                  <span class=\"hljs-meta\">#No.FUN-760043   <\/span>\r\n   \r\n   IF cl_null(ps_app) AND cl_null(ps_doc) THEN  \r\n      RETURN <span class=\"hljs-literal\">FALSE<\/span>  \r\n   END IF  \r\n   \r\n   <span class=\"hljs-meta\">#----------------------------------------------------------------------------   <\/span>\r\n   <span class=\"hljs-meta\"># \u82e5\u6c92\u6709\u6307\u5b9a\u7a0b\u5f0f, \u5247\u9810\u8a2d\u4ee5 shellexec \u65b9\u5f0f\u57f7\u884c\u6307\u5b9a\u6587\u4ef6(\u4f9d\u7167 Windows Registry)   <\/span>\r\n   <span class=\"hljs-meta\">#----------------------------------------------------------------------------   <\/span>\r\n   IF cl_null(ps_app) THEN  \r\n      <span class=\"hljs-built_in\">CALL<\/span> ui.Interface.frontCall(<span class=\"hljs-string\">\"standard\"<\/span>,  \r\n                                  <span class=\"hljs-string\">\"shellexec\"<\/span>,  \r\n                                  [ps_doc],  \r\n                                  [li_status])  \r\n   ELSE  \r\n      <span class=\"hljs-meta\">#-------------------------------------------------------------------------   <\/span>\r\n      <span class=\"hljs-meta\"># \u6307\u5b9a\u57f7\u884c\u7a0b\u5f0f\u8207\u53c3\u6578, \u591a\u53c3\u6578\u9700\u4ee5 | \u4f5c\u70ba\u5206\u9694 (\u66ab\u4e0d\u4f7f\u7528 No.TQC-830002)   <\/span>\r\n      <span class=\"hljs-meta\">#-------------------------------------------------------------------------   <\/span>\r\n      <span class=\"hljs-meta\">#LET ls_command = <span class=\"hljs-meta-string\">\"\\\"<\/span><span class=\"hljs-meta-string\">\", ps_app, \"<\/span>\\<span class=\"hljs-meta-string\">\"\"<\/span>   <\/span>\r\n      LET ls_command = ps_app                       <span class=\"hljs-meta\">#No.TQC-830002   <\/span>\r\n   \r\n      IF NOT cl_null(ps_doc) THEN  \r\n         <span class=\"hljs-meta\">#-- No.FUN-760043 BEGIN -----------------------------------------------   <\/span>\r\n         LET lt_tok = base.StringTokenizer.create(ps_doc, <span class=\"hljs-string\">\"|\"<\/span>)  \r\n         WHILE lt_tok.hasMoreTokens()  \r\n             LET ls_arg = lt_tok.nextToken()  \r\n             LET ls_command = ls_command, <span class=\"hljs-string\">\" \\\"\"<\/span>, ls_arg, <span class=\"hljs-string\">\"\\\"\"<\/span>  \r\n         END WHILE  \r\n<span class=\"hljs-meta\">#         LET ls_command = ls_command, <span class=\"hljs-meta-string\">\" \\\"<\/span><span class=\"hljs-meta-string\">\", ps_doc, \"<\/span>\\<span class=\"hljs-meta-string\">\"\"<\/span>   <\/span>\r\n         <span class=\"hljs-meta\">#-- No.FUN-760043 END -------------------------------------------------   <\/span>\r\n      END IF  \r\n<span class=\"hljs-meta\">#     CALL ui.Interface.frontCall(<span class=\"hljs-meta-string\">\"standard\"<\/span>,    <\/span>\r\n<span class=\"hljs-meta\">#                                 <span class=\"hljs-meta-string\">\"execute\"<\/span>,   <\/span>\r\n<span class=\"hljs-meta\">#                                 [ls_command, 0],   <\/span>\r\n<span class=\"hljs-meta\">#                                 [li_status])   <\/span>\r\n   \r\n      <span class=\"hljs-built_in\">CALL<\/span> ui.Interface.frontCall(<span class=\"hljs-string\">\"standard\"<\/span>,   \r\n                                  <span class=\"hljs-string\">\"shellexec\"<\/span>,  \r\n                                  [ls_command],  \r\n                                  [li_status])  \r\n   END IF  \r\n   \r\n   IF ( STATUS ) OR ( NOT li_status ) THEN  \r\n      RETURN <span class=\"hljs-literal\">FALSE<\/span>  \r\n   END IF  \r\n   \r\n   RETURN <span class=\"hljs-literal\">TRUE<\/span>  \r\nEND FUNCTION \r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p><!-- \u5982\u679c\u662f\u4ed8\u8d39\u6587\u7ae0\uff0c\u672a\u8d2d\u4e70\uff0c\u5219\u663e\u793a\u8d2d\u4e70\u6309\u94ae --> <!-- \u8fde\u8f7d\u76ee\u5f55\u9879 --> <!-- \u5982\u679c\u662f\u4ed8\u8d39\u6587\u7ae0 --> <!-- \u5982\u679c\u662f\u4ed8\u8d39\u8fde\u8f7d\uff0c\u5df2\u8d2d\u4e70\uff0c\u4e14\u4f5c\u8005\u5141\u8bb8\u8d5e\u8d4f\uff0c\u5219\u663e\u793a\u4ed8\u8d39\u4fe1\u606f\u548c\u8d5e\u8d4f --><\/p>\n<div id=\"free-reward-panel\" class=\"support-author\"><\/div>\n<\/div>\n<p>\u4f5c\u8005\uff1ajiandanyaobai<br \/>\n\u94fe\u63a5\uff1ahttps:\/\/www.jianshu.com\/p\/72934509068a<br \/>\n\u6765\u6e90\uff1a\u7b80\u4e66<br \/>\n\u7b80\u4e66\u8457\u4f5c\u6743\u5f52\u4f5c\u8005\u6240\u6709\uff0c\u4efb\u4f55\u5f62\u5f0f\u7684\u8f6c\u8f7d\u90fd\u8bf7\u8054\u7cfb\u4f5c\u8005\u83b7\u5f97\u6388\u6743\u5e76\u6ce8\u660e\u51fa\u5904\u3002<\/p><\/div>\n<p>\u8f6c\u8f7d\u8bf7\u6ce8\u660e\uff1a<a href=\"https:\/\/www.hefeiyu.com\">\u8d6b\u975e\u57df<\/a> &raquo; <a href=\"https:\/\/www.hefeiyu.com\/?p=5122\">4gl\u8bfb\u53d6\u56fe\u7eb8<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>\u4e00\u3001\u5728\u9879\u76ee\u9636\u6bb5\u3001\u7ecf\u5e38\u4f1a\u6709\u8fd9\u6837\u7684\u9700\u6c42\uff0c\u5728ERP\u80fd\u76f4\u63a5\u6253\u5f00PLM\/PDM\u7684\u56fe\u7eb8\u3002\u76f4\u63a5\u4e0a\u6e90\u7801\u3002 \u4e3b\u8981\u8fd0\u7528\u7684\u77e5\u8bc6\u70b9\uff1a PDM\/PLM\u4e0a\u9700\u8981\u5b89\u88c5ftp\u7684\u670d\u52a1\u5668\u3002\u8fd9\u91cc\u9488\u5bf9FTP\u7684\u5b89\u88c5\u6587\u4ef6\u5c31\u4e0d\u505a\u4ecb\u7ecd\u4e86\u3002PDM\u4e0a\u4f20\u9644\u4ef6\uff0c\u6587\u4ef6\u8def\u5f84\u5730\u5740\u4f20\u5165\u5230\u540e\u53f0\u6570\u636e\u8868\u4e2d\u4f5c\u4e3a\u8bb0\u5f55\u3002ERP [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[490],"tags":[712,711],"class_list":["post-5122","post","type-post","status-publish","format-standard","hentry","category-490","tag-ftp","tag-pdm"],"_links":{"self":[{"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=\/wp\/v2\/posts\/5122","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5122"}],"version-history":[{"count":1,"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=\/wp\/v2\/posts\/5122\/revisions"}],"predecessor-version":[{"id":5123,"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=\/wp\/v2\/posts\/5122\/revisions\/5123"}],"wp:attachment":[{"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5122"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5122"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}