2017-04-12 5 views
0

メインフレームの変数ブロックファイルの最初の4バイトには、レコードとブロックに関する情報が含まれています。私は、メインフレームの可変ブロックファイルからFTPまたはFTPSを介してデータを読み取ることができます。しかし、私は各レコードにスペースを追加しない場合、データを書き戻そうとしている間、データが混乱しています。各レコードにスペースを追加した場合にのみ、予想通りの出力が得られます。可変ブロックファイルの最初の4バイトに記録の情報を書き込む方法はありますか?メインフレームの可変ブロックファイルにFTP/FTPSでデータを書き込む

+0

あなたの質問を改善してください - 理解するのは難しいです。どんな言語でプログラミングしていますか?あなたのデータはどのように見えますか?最初のフィールドには何があるはずですか?あなたのコードはどこですか? –

+0

何をしているのか正確にご記入ください。 curlのようなパッケージを使用してFTPプロトコルをプログラムで使用していますか?途中で処理を開始し、終了ステップとしてFTPを使用していますか? @ MarkSetchellは正しいです、あなたが言っていることは意味をなさない。 – zarchasmpgmr

+0

どのFTPコマンドを使用しますか?既存のデータセットに書き込んだり、新しいデータセットを作成していますか? –

答えて

0

あなたがしていることと達成しようとしていることがはっきりしていません。 VB(または多分VBS)のメインフレームデータセットからFTP経由でデータを取り込んだと仮定します。次に、メインフレームではないプラットフォームでそれを処理した後、FTPで戻します。

ブロックを読み取ってプラットフォームからの長さを正常に記録するには、RECFM = UのFTPジョブでメインフレームデータセットを参照する必要があります。これには、メインフレーム側からFTPを開始する必要があることに注意してください.FBを取得して、VB(S)ファイルからブロック/レコードの長さを保存することはできません。しかし、メインフレームのファイルを最初にRECFM = UファイルにコピーしてからFTPでダウンロードできます。この場合も、使用するためにデータを調整するために、メインフレーム側に対処する必要があります。

これを元に戻すと、同様の問題が発生する可能性があります。率直に言って、私はRECFM = VBファイルをPUTして、メインフレームのFTPサーバーがレコード/ブロックの長さをデフォルトで正しく行うかどうかを知りませんでしたが、おそらくそうではないようです。したがって、PUTをメインフレームに戻す前に、オフプラットフォームのコードでレコード/ブロックの長さをプログラムで管理する必要がある場合(サウンドが聞こえるほど些細なものではないかもしれません)、私の推測では、すでに正しいRECFMを持つ事前割り振り済みのファイルに入れます。引用サイトコマンド(IIRC)を使用して新しいデータセットを正しく割り当てることができるかもしれませんが、やはり試していません。

要するに、RECFM = Uはあなたにブロック/レコードの長さを与えることができます。しかし、私はその方向性については確信していません。

正確に何をしようとしているかによって、メインフレーム上でデータを処理する方が簡単かもしれません。特にコードがJavaの場合:IBMはメインフレームのメインフレーム・データセットを読みやすくするためにJZOSクラスを用意しています。

+0

メインフレームプラットフォームでVBファイルを読み書きするためにJZOSクラスを使用しました。しかし、現在のシナリオでは、FTP経由でVBを読み込み、Windowsプラットフォームで処理し、FTP経由でVBファイルを同じ順序で書き戻す必要があります。現在、私はVBファイルの各レコード長を読むことができますが、VBファイルにスペースを追加しなければそれを書き込んでいる間に、データが混乱します –

関連する問題