2


0

IBMメインフレームでの新しい行の外観の制御

All,

そこで、C#からIBM MVSメインフレームにテキストファイルをアップロードしています。 このファイルはC#ライブラリを使用してebcdicに変換され、メインフレームでデータを読み取ることができるのでうまく機能します。 問題は新しい行です。 テキストファイルには10行のデータがあり、メインフレーム環境で表示している間、すべてのデータが存在します。 ただし、テキストファイルの各新しい行を0D25(CRLF)として変換するため、新しい行はありません。 このセグメントは..として表示されます。 画面上で。 +テキストファイルにあるように次の行にデータを実際に配置するために必要なため、16進数が0D25の2つのドットは必要ありません。 このファイルは、メインフレームで一度だけ可変ブロック長です。 MVSでアップロードされたファイルを表示しながら、テキストファイルと同じフォーマットを実現するにはどうすればよいですか?

  • example:TEXT FILE VIEW *

12345 + 23456 + 12346

 +
* _IBM MAinFrame View_ *

12345..23456..12346

またはブロック長に達した場合。

12345..2345 + 6..12346

ありがとう

1 Answer


4


FTP転送プロセス以外でASCII-EBCDIC変換を実行している場合、バイナリモードで転送していると想定する必要があります(そうしないと、変換が_again_行われ、データが不良になります)。

その場合、行末の変換についてもあなた自身が責任を持っていると確信しています。 バイナリ転送は、行末を変換しようとしません。 ホストに送信する前に、目的の長さに行を埋め込み、行の末尾を完全に削除する必要があります。

例として、このファイルを転送する場合:

12345
67890

literal site recfm = vb`を使用してバイナリモードで起動すると、次の結果が得られます(ISPFエディターでは hex on`で表示):

000001
       3333300333330044444
       12345DA67890DA00000
--------------------------

CR / LFを含め、バイトがそのまま転送されたことがわかります。 FTPでASCIIモードに切り替えて再度アップロードすると、次の結果が得られます。

000001 12345
       FFFFF44444444
       1234500000000
--------------------
000002 67890
       FFFFF44444444
       6789000000000
--------------------

ここでは、文字は右のEBCDICコードポイントに変換され、行末はEBCDICスペースでパディングにモーフィングされています。

あなたへの私の最初の質問は、「なぜFTP以外で翻訳をしているのですか?」

IBMは、あらゆる種類の異なるエンコードを受け入れ、それらを正しいコードページに変換することを保証するために、かなりのお金を投資しています。 スタンドアロンのソリューションがすべての国際化されたバージョンのz / OSおよびIBM独自のソリューションで動作することはほとんどありません。

クライアントで_must_変換してバイナリモードで転送する場合は、クライアントに行末変換とパディングも行わせるか、REXXスクリプトなどで転送後にファイルを後処理する必要があります。

ターゲットデータセットのプロパティが「わからない」場合(PDSのメンバーに転送する場合など)、後者のオプションが唯一の実行可能なオプションです。