C# 4.0 使用FTP/C#/BizTalk与IBM AS400通信

C# 4.0 使用FTP/C#/BizTalk与IBM AS400通信,c#-4.0,biztalk,ibm-midrange,C# 4.0,Biztalk,Ibm Midrange,我必须使用FTP与IBM AS400系统通信。需要发出的不仅仅是get和put命令。基本上需要使用QUOTE RCMD SBMJOB命令将作业提交给AS400,该命令将要求AS400运行一些程序 我有两个通信平台选项(a)使用C#和(b)使用BizTalk的FTP适配器 对于C#我已经查看了MSDN(),但没有看到如何在有限的FTP命令公开时提交作业 对于BizTalk适配器,我不确定如何实现这一点 有人对使用C#或BizTalk实现这一目标的最佳方法提出了建议吗?谢谢。在C#中,您可以运行可以

我必须使用FTP与IBM AS400系统通信。需要发出的不仅仅是get和put命令。基本上需要使用QUOTE RCMD SBMJOB命令将作业提交给AS400,该命令将要求AS400运行一些程序

我有两个通信平台选项(a)使用C#和(b)使用BizTalk的FTP适配器

对于C#我已经查看了MSDN(),但没有看到如何在有限的FTP命令公开时提交作业

对于BizTalk适配器,我不确定如何实现这一点

有人对使用C#或BizTalk实现这一目标的最佳方法提出了建议吗?谢谢。

在C#中,您可以运行可以调用CL或RPG程序的存储过程

另一个选项是可以在SQL中直接调用CL命令。如果我不希望返回任何数据,我可以使用以下通用方法:

public static bool RunCmd(string cmdText, iDB2Connection cn)
{
    bool rc = true;

    // Construct a string which contains the call to QCMDEXC.
    string pgmParm = String.Format("CALL QSYS/QCMDEXC('{0}', {1})", 
                     cmdText.Replace("'", "''").Trim(), 
                     cmdText.Trim().Length.ToString("0000000000.00000"));

    using (cn)
    {
        using (iDB2Command cmd = new iDB2Command(pgmParm, cn))
        {
            try { cmd.ExecuteNonQuery(); }
            catch { rc = false; }
        }
    }

    // Return success or failure
    return rc;
}

由于FTP可能是您最简单的选择,因此应该可以帮助您解决问题。

我假设您没有必要的HIS服务器DB2适配器许可证,因为这样做是可行的。可以找到许可证信息

如果必须使用FTP适配器,则可以使用:

SYSCMD调用PGM(MYCLPGM)PARM('MYCLPARM')


请不要使用上面列出的QUOTE命令

谢谢您的回复。让我澄清一下,我与DB2没有任何关系。我只需要调用驻留在iSeries/OS400机器上的CL程序。有办法吗?想到的另一种方法是使用带有FTP命令的批处理文件,并使用FTP调用CL作业。然后可以从C#调用批处理文件。你说呢?你可以,但老实说,通过SQL打电话很容易。为什么不能连接到IBMi?我只是好奇。我没有DB2连接规范(有没有简单的方法获取它们?),除了提交作业之外,我还需要向AS400发送文件和从AS400发送文件。您可以使用iSeries客户端访问驱动程序。它需要安装在程序将要使用的每个服务器/工作站上。版本也必须匹配。从那里连接字符串看起来像。如果您必须使用FTP文件,那么您也可以通过FTP执行。在我之前的评论中,我添加了一个关于如何做到这一点的链接。我还将把它添加到答案中。我已经准备好了FTP命令来提交作业。问题更像是如何通过C#或BizTalk执行这些命令。我没有看到C#中有一个通过FTP方便远程命令的库。再次感谢你的帮助。