Anmelden

View Full Version : Ausgabe bei FTP mit RCMD und Info über Teildatei



Tom74
09-11-07, 09:42
Hallo zusammen,

ich habe zwei Fragen bezüglich des RCMD Befehls bei einer FTP-Verbindung mit einer AS400:

1. Ich kann mit QUOTE RCMD Befehle auf dem Remote-System absetzen. Für meine Frage verwende ich folgendes Beispiel:

ftp> quote rcmd dsplibl
250 Command dsplibl successful.
ftp>

Es funktioniert soweit aber ich hätte gerne auch die Ausgabe von dem Befehl. Direkt scheint es nicht zu funktionieren, daher ist meine Frage ob man durch ein Override oder ähnliches die Ausgabe auf der AS400 in eine temporäre Datei umleiten kann um sie dann später mit FTP auslesen und anzeigen zu können.

2. Ist es über eine FTP Verbindung mit Hilfe eines Remote-Befehls möglich, genauere Informationen über ein Member einer Datei auszulesen (z.B QSYS.LIB/MYLIB.LIB/MYFILE.FILE/MYMEMBER.MBR). Ich denke da speziell an die Größe der Teildatei oder das Datum der letzten Änderung. Der FTP-Befehl "ls" liefert zwar die Member einer Datei aber leider nur die Namen. Auch hier bräuchte ich die Ausgabe in meiner FTP-Verbindung (evtl. auch über ein Zwischenfile o.ä.)

Hoffe, das funktioniert, so wie ich mir das vorstelle :)

Danke
Thomas

Fuerchau
09-11-07, 10:11
Du kannst natürlich per RCMD DSPOBJD mit Ausgabe in eine Datei (z.B. in QTEMP) erstellen, auch gilt dies per DSPFD mit MBR-Infos.
Diese kannst du dann per GET runterladen und auswerten.

DSPLIB erstellt leider nur einen Spool, den du dann per CPYSPLF erst noch kopieren musst.

Tom74
09-11-07, 10:54
Danke vielmals für die schnelle Antwort. Zumindest kann ich mir jetzt die nötigen Informationen auf dem Bildschirm anzeigen.

Allerdings klappt das mit dem OUTFILE nicht so:

Satzformat QWHFDML für Ausgabedatei TEXTXYZ nicht gefunden.

Leider weiss ich nicht, wie ich eine temporäre Datei erstelle die dem gewünschten Format entspricht :(

Wenn ich so eine in QTEMP erstelle, muss ich die dann nach der Verarbeitung löschen oder passiert das automatisch ?

Grüße
Thomas

Pikachu
09-11-07, 11:07
Die im Parameter OUTFILE angegebene Datei wird automatisch erstellt, falls nicht noch nicht vorhanden ist (siehe Hilfe zum Parameter OUTFILE).

Objekte in der Bibliothek QTEMP werden vom System automatisch gelöscht, wenn der Job, zu dem diese Bibliothek QTEMP gehört, beendet wird.

Tom74
09-11-07, 14:41
Danke !

Ich habe jetzt die Ausgabe von

DSPFD mit Typ *MBRLIST generiert und sie bei mir auf dem PC unter Windows gespeichert.

Habe aber jetzt wieder ein Problem:

Die Ausgabedatei beinhaltet manche Informationen als Klartext (Datum, Uhrzeit, Dateiname usw.), manche binär und manche im COMP-3 Format.

So beträgt beispielsweise die Dateigröße 270336 Bytes, das steht dann in der Ergebnisdatei auf der AS400 als

00 00 00 00 02 70 33 6F

Beim Übertragen auf den PC (ASCII Modus, Binär geht garnicht) wird dann draus sowas:

00 00 00 00 02 F8 93 3F

Wie komme ich nun von dieser Zahl auf die Dateigröße ? Habe schon versucht die einzelnen Bytes mit einer EBCDIC <-> ASCII Tabelle umzuwandeln aber entweder passt sie nicht oder ich mach was falsch ..

Jemand eine Idee ?

Fuerchau
09-11-07, 14:55
Das Problem ist natürlich, dass eine Datei per FTP nicht so einfach übertragbar ist.

Hier musst du dann ggf. die Datei noch mal per CPYTOIMPF ins IFS ausgeben, dabei kannst du dann z.B. ein CSV-Format erstellen.
Diese Ausgabe holst du dann per GET aus dem IFS.

Einfacher wird das ganze allerdings über ODBC und FTP.

Per ODBC erstellst du die Informationen "CALL QCMDEXC (...)", kannst diese dann per "SELECT ..." im Klartext verarbeiten und dann die benötigten FTP-Scripte generieren.

Tom74
12-11-07, 10:09
Danke !!

Der Hinweis mit CPYTOIMPF war Gold wert. Habe nun meine Datei so wie ich sie brauche. Da mein IFS Verzeichnis als Netzlaufwerk verbunden ist, kann ich das File sogar direkt holen, ohne FTP.

Das sieht dann in etwa so aus

DSPFD FILE(MYLIB/MYFILE) TYPE(*MBRLIST) OUTPUT(*OUTFILE) OUTFILE(QTEMP/OUTPUT)

CPYTOIMPF FROMFILE(QTEMP/OUTPUT) TOSTMF("/TMP/LIST.TXT") MBROPT(*ADD) STMFCODPAG(*PCASCII) RCDDLM(*CRLF) DTAFMT(*DLM)

Den Vorschlag mit ODBC hab ich garnicht weiter verfolgt, da ich von meiner Entwicklungsumgebung keine ODBC Zugriffe machen kann.

Nochmals danke

Thomas