用ASP.NET调用CL

发布于 2022-08-21 03:27:45 字数 260 浏览 11 评论 8

最近公司要逐步把ERP转形,用C#来显示画面,400进行后台数据处理,运算~~

通过ASP.NET调用RPG,已经实现了,但是调用CL一直也没有眉目(ASP.NET是通过调用Program来调用RPG的)

想请教一下各位大侠,看看各位有没有什么好的方法,谢谢大家!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

累赘 2022-08-26 16:53:13

VB我没用过,不好意思~~~

陪我终i 2022-08-26 16:45:53

所有的连接代码就在上面,不知道能不能看懂,有点乱~~~我也不知道该怎么说

实现的功能就是:通过一个BOTTON执行400里的一个RPG~~~(连接的RPG在最后发的那段代码上)

如果有不明白的,可以留言~~~

并安 2022-08-26 16:23:18

<?xml version="1.0"?>
<!--
    注意: 除了手動編輯這個檔案以外,您也可以使用
    Web 管理工具設定您的應用程式設定值。請使用
    Visual Studio 中的 [網站] -> [ASP.NET 組態] 選項。
    如需完整的設定與註解清單,請參考
    machine.config.comments (通常位於
    WindowsMicrosoft.NetFrameworkv2.xConfig)
-->
<configuration>
  <appSettings>
    <!--以下定義連結AS400的參數:value="value="server;userid;password;library;program"-->
    <!--<add key="partsPricingConfig" value="10.81.1.14;pgma04;pgma04;TPCLIBA;NETTEST1"/>-->
    <add key="partsPricingConfig" value="10.81.1.14;pgma04;pgma04;TPCLIBA;SFRE86"/>
  </appSettings>
        <connectionStrings/>
        <system.web>
                <!--
            設定 compilation debug="true" 會將偵錯
            符號插入編譯過的頁面。因為這樣會
            影響效能,所以只有在開發期間才能將
            這個值設定為 true。
        -->
                <compilation debug="true"/>
                <!--
            <authentication> 區段可以用來設定 ASP.NET
            使用的安全性驗證模式,以識別連入的
            使用者。
        -->
                <authentication mode="Windows"/>
                <!--
            <customErrors> 區段可以用來設定
            在執行要求期間發生未處理
            錯誤時所要執行的動作。具體來說,
            它可以讓開發人員設定要顯示的 HTML 錯誤網頁,
            以取代錯誤堆疊追蹤。

        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
            <error statusCode="403" redirect="NoAccess.htm" />
            <error statusCode="404" redirect="FileNotFound.htm" />
        </customErrors>
        -->
        </system.web>
</configuration>

↙厌世 2022-08-26 12:32:43

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Reflection;

    public partial class UsingAS400Program : System.Web.UI.Page
    {
        //protected enum DataLengths : int

        protected enum DataLengths : int
        {
            UserId = 7, //定義UserId長度為7
            UserName = 10,//定義UserName長度為10
        }

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        public string CALLAS400()
        {
            //  Assume the RPG program being called takes one input paramater, UserId, and returns the UserName.

            //從web.config中去讀取  partsPricingConfig 的值,並傳遞給 AS400Program.cs 中的 AS400Program();
            AS400Program program = new AS400Program(System.Configuration.ConfigurationManager.AppSettings["partsPricingConfig"]);

            cwbx.StringConverter stringConverter = new cwbx.StringConverterClass();
            cwbx.PackedConverter packedConverter = new cwbx.PackedConverterClass();
            //packedConverter.DecimalPosition = 4;
            //packedConverter.Digits = (int)DataLengths.UserName;

            cwbx.ProgramParameters parameters = new cwbx.ProgramParametersClass();

            //傳遞參數給as400
            parameters.Append("PEMN", cwbx.cwbrcParameterTypeEnum.cwbrcInput, (int)DataLengths.UserId);
            parameters["PEMN"].Value = stringConverter.ToBytes("2060113");

            parameters.Append("NAME", cwbx.cwbrcParameterTypeEnum.cwbrcInput, (int)DataLengths.UserName);
            parameters["NAME"].Value = stringConverter.ToBytes("aaabbbb");

            //調用 AS400Program.cs 中的 傳遞parameters 給 Invoke 調用AS400 中的 Program
            program.Invoke(true, ref parameters);

            //string price = packedConverter.FromBytes(parameters["UserName"].Value);

            //調用完成後關閉連結
            program.Close();

            return "恭喜你,調用成功!!";
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            string aa = CALLAS400();

            TextBox1.Text = aa.ToString();
        }
}

那小子欠揍 2022-08-26 08:41:27

怎么调用RPG, 我不大会说,我把代码贴出来吧~大家一起讨论下~~~
下面这段代码是APP_CODE下面的~
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using cwbx; //引用iseries插件,// cwbx.dll is in the Iseries access folder C:Program FilesIBMClient AccessShared

/// <summary>
/// AS400Program 的摘要描述
/// </summary>
//namespace Interfaces.Source

    public class AS400Program
    {
        private bool as400Configured = false;
        public cwbx.AS400System as400;
        public cwbx.Program program;

        // configuration format:
        // as400;userid;password;library;program
        public AS400Program(string configuration)
        {
            if (!as400Configured)
            {
                string[] settings = configuration.Split(';');
                if (settings.Length == 5)
                {
                    as400 = new cwbx.AS400SystemClass();  // creates an as/400 object
                    program = new cwbx.Program(); // Create a program object
                    as400.Define(settings[0]); // IP of AS/400
                    program.system = as400;
                    program.system.UserID = settings[1]; // Your user name
                    program.system.Password = settings[2]; // Your password
                    program.LibraryName = settings[3]; //Library where your program is located
                    program.ProgramName = settings[4]; // Program that this app will call
                    as400Configured = true;
                }
                else
                {
                    throw (new Exception(
                        string.Format("Invalid AS400Program configuration string : [{0}]", configuration)));
                }
            }
        }

        public bool Invoke(bool throwInsteadOfReturn, ref cwbx.ProgramParameters parameters)
        {
            bool success = false;

            try
            {
                if (as400.IsConnected(cwbx.cwbcoServiceEnum.cwbcoServiceRemoteCmd) == 0)
                {
                    //  Lost connection with the AS400.  Disconnect, then reconnect.
                    as400.Disconnect(cwbx.cwbcoServiceEnum.cwbcoServiceAll);
                    as400.Connect(cwbx.cwbcoServiceEnum.cwbcoServiceRemoteCmd);

                    if (as400.IsConnected(cwbx.cwbcoServiceEnum.cwbcoServiceRemoteCmd) == 0)
                    {
                        //  Log something here.
                    }
                }

                //program.Call(parameters);
                cwbx.ProgramParameters para = new cwbx.ProgramParametersClass();
                program.Call(para);
                success = true;
            }
            catch (Exception e)
            {
                // Capture to log the errors but then re-throw it to let caller know there was trouble.
                if (as400.Errors.Count > 0)
                {
                    foreach (cwbx.Error error in as400.Errors)
                    {
                        //  Log something here.
                    }
                }

                if (program.Errors.Count > 0)
                {
                    foreach (cwbx.Error error in program.Errors)
                    {
                        //  Log something here.
                    }
                }

                if (throwInsteadOfReturn)
                {
                    throw (e);
                }
            }

            return (success);
        }

        public void Close()
        {
            as400.Disconnect(cwbx.cwbcoServiceEnum.cwbcoServiceAll);
        }
    }

離殇 2022-08-25 19:55:09

楼主怎么实现ASP.NET调用RPG?代码可否参考一下,想知道?
还有就是有没有实现VB调用RPG的?请指点一下,非常感谢!

耀眼的星火 2022-08-25 15:02:03

楼主,你怎么实现的C#调用RPG哈,
指点一下,谢谢

请止步禁区 2022-08-25 04:58:41

谢谢mario663大侠的指导!
对于在AS400上建立PROCEDURE这个我还没试过,能否指点下.
(通过ASP.NET调用RPG,不用建PROCEDURE也可以调用.为何CL不行呢,想不明白,呵呵)
再次感谢!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文