2017-04-12 2 views
0

Die ersten 4 Bytes der Variablenblockdatei im Mainframe enthalten Informationen über Datensatz und Block. Ich kann Daten aus der variablen Blockdatei des Mainframes per FTP oder FTPS lesen. Aber während ich versuche, die Daten zurückzuschreiben, wenn ich keinen Speicherplatz in jedem Datensatz anhefte, werden Daten durcheinander geworfen. Nur wenn ich Speicherplatz in jedem Datensatz anhänge, bekomme ich die erwartete Ausgabe. Gibt es eine Möglichkeit, Informationen in den ersten vier Bytes der variablen Blockdatei zu schreiben?Schreiben von Daten in variable Blockdatei des Mainframes über FTP/FTPS

+0

Bitte verbessern Sie Ihre Frage - es ist schwer zu verstehen. In welcher Sprache programmieren Sie? Wie sehen Ihre Daten aus? Was soll im Ausgangsfeld sein? Wo ist dein Code? –

+0

Bitte geben Sie genau an, was Sie tun. Verwenden Sie ein Paket wie curl, um das FTP-Protokoll programmgesteuert zu verwenden? Verwenden Sie FTP als einen Anfangs- und einen Endschritt mit Verarbeitung in der Mitte? @MarkSetchell ist richtig, was du sagst macht keinen Sinn. – zarchasmpgmr

+0

Welche FTP-Befehle verwenden Sie? Schreiben Sie in einen vorhandenen Datensatz oder erstellen Sie einen neuen Datensatz? –

Antwort

0

Es ist nicht klar, was genau Sie tun und versuchen zu erreichen. Ich nehme jedoch an, dass Sie einige Daten von einem VB- (oder vielleicht VBS-) Mainframe-Datensatz über FTP abgerufen haben. Dann verarbeiten Sie es auf einer Nicht-Mainframe-Plattform und dann per FTP zurück.

Wenn Sie die Block- und Aufzeichnungslänge erfolgreich außerhalb der Plattform lesen möchten, müssen Sie im FTP-Job auf das Mainframe-Dataset mit RECFM = U verweisen. Beachten Sie, dass Sie dazu aufgefordert werden, das FTP von der Mainframe-Seite aus zu initiieren. Ich glaube nicht, dass Sie einen FTP-Befehl ausführen können und die Block-/Datensatzlänge aus einer VB (S) -Datei beibehalten können. Sie können jedoch möglicherweise die Datei auf dem Mainframe zuerst in eine RECFM = U-Datei kopieren und dann die Datei herunterfliegen. Erneut erfordert eine Aktion auf der Mainframe-Seite, um die Daten für Ihre Verwendung zu konditionieren.

Wenn Sie es zurückstellen, haben Sie möglicherweise ein ähnliches Problem. Ehrlich gesagt, habe ich nicht versucht, auf RECFM = VB-Datei zu putten, um zu wissen, ob der Mainframe-FTP-Server die Längen für die Aufnahme/Blockierung für Sie standardmäßig korrekt tut, aber es klingt vielleicht nicht. Wenn Sie also die Record/Block-Längen in Ihrem Off-Platform-Code programmatisch verwalten müssen (das ist vielleicht nicht ganz so trivial wie es klingen mag), bevor Sie eine PUT zurück an den Mainframe machen, ist meine Vermutung, dass Sie das haben werden in eine vorbelegte Datei, die bereits den richtigen RECFM hat. Möglicherweise können Sie mit Anführungszeichen-Befehlen (IIRC) ein neues Dataset korrekt zuordnen, aber ich habe das noch nicht ausprobiert.

Kurz gesagt, RECFM = U kann Ihnen die Block-/Aufzeichnungslängen bringen, sie zurückzusetzen kann schwieriger sein. Aber ich bin mir über diese Richtung nicht so sicher.

Je nachdem, was Sie gerade tun möchten, ist es sehr wahrscheinlich einfacher, die Daten auf dem Mainframe zu verarbeiten. Vor allem, wenn Ihr Code Java ist: IBM stellt die JZOS-Klassen zur Verfügung, die das Lesen von Mainframe-Datasets auf dem Mainframe erleichtern.

+0

Ich habe JZOS-Klassen zum Lesen und Schreiben von VB-Datei in Mainframe-Plattform verwendet. Aber im aktuellen Szenario muss ich VB über FTP lesen und in Windows-Plattform verarbeiten und wieder VB-Datei in derselben Reihenfolge über FTP zurückschreiben. Derzeit kann ich jede Datensatzlänge der VB-Datei lesen, aber während ich sie zurückschreibe, wenn ich keinen Speicherplatz in der VB-Datei angehängt habe, werden Daten durcheinander geworfen –