2016-03-31 20 views
1

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

+0

を助けます行のbytes.AddRange(Encoding.Convert(Encoding.ASCII、ebcdic、... ebcdicはSystem.Text.Encodingの認識されたenum値ではないので、どのように指定していますか? – auburg

+0

エンコードebcdic = Encoding.GetEncoding( "IBM037" ); – CaffeineDrivenDevelopment

+0

このリンクhttp://www.yoda.arachsys.com/csharp/ebcdic/があなたに役に立つかどうかわかりません – auburg

答えて

0

私たちはMCPCopyというユーティリティを使用して、ファイルをメインフレーム共有にコピーしたときにASCIIストリームからEBCDICにコピーして変換することを提案しました。このユーティリティは、NXExtendの一部としてインストールすることができます。 ASP.Netサイトで使用されるコマンドラインは次のとおり

C:\ Windowsの\ MCPCopy.exe {SOURCEFILE} {DestinationFile}/Y/Z:SR/D:80

ホープこれは

関連する問題