asp.netサイトのユーザーが生成したデータをUnisysメインフレームにアップロードしようとしています。私のクライアントは、FTPを使用してファイルをアップロードするのではなく、Unisys MainframeのWindows共有にデータを直接ロードすることを希望しました。 FTPは、通常、ASCIIとEBCDICの間の変換を行います。c#Unisys Mainframe Windows Shareで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に変換するユーティリティを呼び出してとっておくべきでしょうか?もしそうなら、ユーティリティの名前は何ですか?メインフレームのオペレータは、1つを知りません。
2)実際に.net内にEBCDICファイルを作成する方法はありますか? EBCDICのエンコーディングは動作していますが、ファイルの種類が異なっていると私は何かを見つけることができませんでした。
私は文字通り20年間でメインフレームと何もしていないので、私は自分の奥から外れています。
ありがとうございます。 Chris
を助けます行のbytes.AddRange(Encoding.Convert(Encoding.ASCII、ebcdic、... ebcdicはSystem.Text.Encodingの認識されたenum値ではないので、どのように指定していますか? – auburg
エンコードebcdic = Encoding.GetEncoding( "IBM037" ); – CaffeineDrivenDevelopment
このリンクhttp://www.yoda.arachsys.com/csharp/ebcdic/があなたに役に立つかどうかわかりません – auburg