c#无法在Unisys Mainframe Windows上创建EBCDIC文件共享

时间:2016-03-31 14:36:41

标签: c# ebcdic

我正在尝试将用户在asp.net网站上生成的数据上传到Unisys大型机。我的客户决定他们要我将数据直接加载到Unisys Mainframe窗口共享上,而不是使用FTP上传文件。 FTP通常在ASCII和EBCDIC之间进行转换。

问题在于,无论我是否将文件内容编码为EBCDIC,大型机都将文件视为ASCII。

测试代码在这里:

        string dataToWrite = "ACHR0000000000575TEST EBCDICPAYEE             8899007500038159 0000001000160330 ".ToUpper();
        Encoding ebcdic = Encoding.GetEncoding("IBM037");

        List<byte> bytes = new List<byte>();
        bytes.AddRange(Encoding.Convert(Encoding.ASCII, ebcdic, Encoding.ASCII.GetBytes(dataToWrite)));


        using (var unc = new UNCAccessWithCredentials())
        {
            // get access to the reconciliation file share using credentials in the config
            string path = @"\\xxx\RECONDEV";
            unc.NetUseWithCredentials(path, "XXX","", "XXX");
            string fileName = Path.Combine(path, "ACH");
            using (var binWriter = new BinaryWriter(File.OpenWrite(fileName)))
            {
                binWriter.Write(bytes.ToArray());
                binWriter.Flush();
                binWriter.Close();
            }
        }

问题 1)我应该将文件创建为ASCII,然后让大型机作业调用实用程序来转换文件EBCDIC吗?如果是这样,该实用程序的名称是什么?大型机操作系统不知道其中一个。

2)有没有办法在.net中实际创建EBCDIC文件? EBCDIC编码正在运行,但我相信文件类型不同,我无法找到任何内容。

我确实在20年内没有对大型机做过任何事情,所以我不够深入。

提前致谢。 克里斯

1 个答案:

答案 0 :(得分:0)

仅供参考,一位顾问建议我们使用名为MCPCopy的实用程序将文件从ASCII流复制并转换为EBCDIC,因为我们将文件复制到大型机共享。该实用程序可以作为NXExtend的一部分安装。 ASP.Net站点使用的命令行是:

c:\ Windows \ MCPCopy.exe {SourceFile} {DestinationFile} / Y / Z:SR / D:80

希望这有帮助