PDA

View Full Version : Datei kopieren AS400 nach AS4001



Franz Karl
23-07-12, 10:34
Hallo,

wie lautete der Befehl wenn ich genau 1 Datei von einer AS400 auf eine andere AS400 kopieren möchte ?

Danke für die Hilfe

ILEMax
23-07-12, 10:47
ich würd es mit FTP machen

Wenn eine AS400 in China steht und es keine Verbindung zu der anderen gibt ist savobj auch ne Möglichkeit :)

Oder ein ddm-File verwenden und cpyf nehmen

oder ...

Der ILEMax
(mitten im Sommerloch)

Franz Karl
23-07-12, 11:02
Hallo,

danke für die Info - die Maschinen sind verbunden.

ILEMax
23-07-12, 11:18
na dann
crtddmf und cpyf

oder 'schiebe-modus'
fpt 'i.p.der.as400'
user
passwort
bin
namefmt 1
put /qsys.lib/deinelib.lib/datei.file
/qsys.lib/deineziellib.lib/datei.file


bzw. 'holemodus'
get stat put, und die pfade natürlich umdrehen

der ILEMax

mk
23-07-12, 11:27
Hallo,


vielleicht geht ja auch der SNDNETF Command

Gruß
Michael

Franz Karl
23-07-12, 12:23
Frage zu dem FTP Befehl

Bis zum bin ging 's ja

1. namefmt 1 --> ungültiger Befehl

ILEMax
23-07-12, 13:12
Dann ist wohl die AS400 defekt, bei uns geht das 100 fach am Tag.

ob es da eine 'einstellschraube' gibt kann ich nicht sagen

der ILEMax

Franz Karl
23-07-12, 13:43
Ok hat doch geklappt. Ich dachte ich müsste den FTP auf einer PC-DOS Box ausführen.

Danke dir

COS
27-07-12, 15:19
es gibt auch noch diese Möglichkeit:

Command (*CMD) erstellen, zB FTS


CMD PROMPT('File Transfer Support')

PARM KWD(FROMFILE) TYPE(FRF) +
MIN(1) PROMPT('von Datei')
FRF: QUAL TYPE(*NAME) LEN(10) MIN(1)
QUAL TYPE(*NAME) LEN(10) EXPR(*YES) +
DFT(*LIBL) SPCVAL((*LIBL)) PROMPT('Bibliothek')

PARM KWD(TOFILE) TYPE(TOF) +
MIN(1) PROMPT('nach Datei')
TOF: QUAL TYPE(*NAME) LEN(10) MIN(1)
QUAL TYPE(*NAME) LEN(10) EXPR(*YES) +
DFT(*LIBL) SPCVAL((*LIBL)) PROMPT('Bibliothek')

PARM KWD(RMTLOCNAM) TYPE(*NAME) LEN(8) MIN(1) +
EXPR(*YES) PROMPT('ferner Standort System')

PARM KWD(PASSWORD) TYPE(*NAME) LEN(10) MIN(1) +
EXPR(*YES) DSPINPUT(*NO) PROMPT('Kennwort +
für fernen Standort')

PARM KWD(FROMMBR) TYPE(*NAME) LEN(10) +
DFT(*FROMFILE) SPCVAL((*FROMFILE)) +
PROMPT('von Teildatei')

PARM KWD(TOMBR) TYPE(*NAME) LEN(10) +
DFT(*TOFILE) SPCVAL((*TOFILE)) +
PROMPT('nach Teildatei')

PARM KWD(MBROPT) TYPE(*CHAR) LEN(1) RSTD(*YES) +
DFT(N) SPCVAL((N N) (Y Y)) MIN(0) +
ALWUNPRT(*NO) ALWVAR(*NO) FULL(*YES) +
EXPR(*YES) PROMPT('nach Teildatei ersetzen (Y/N)')

PARM KWD(OPTION) TYPE(*CHAR) LEN(1) RSTD(*YES) +
DFT(S) SPCVAL((S S) (R R)) MIN(0) +
ALWUNPRT(*NO) ALWVAR(*NO) FULL(*YES) +
EXPR(*YES) PROMPT('Senden = S / +
Empfangen = R')


dann ein CL-Programm erstellen (*PGM)


PGM PARM(&FROMFILEF &TOFILEF &RMTLOCNAM &PASSWORD +
&FROMMBR &TOMBR &MBROPT +
&OPTION)

DCL VAR(&OPTION) TYPE(*CHAR) LEN(1)
DCL VAR(&MBROPT) TYPE(*CHAR) LEN(1)
DCL VAR(&FROMFILEF) TYPE(*CHAR) LEN(20)
DCL VAR(&FROMFILE) TYPE(*CHAR) LEN(10)
DCL VAR(&FROMLIB) TYPE(*CHAR) LEN(10)
DCL VAR(&FROMMBR) TYPE(*CHAR) LEN(10)
DCL VAR(&TOFILEF) TYPE(*CHAR) LEN(20)
DCL VAR(&TOFILE) TYPE(*CHAR) LEN(10)
DCL VAR(&TOLIB) TYPE(*CHAR) LEN(10)
DCL VAR(&TOMBR) TYPE(*CHAR) LEN(10)
DCL VAR(&TOMBR) TYPE(*CHAR) LEN(10)
DCL VAR(&RMTLOCNAM) TYPE(*CHAR) LEN(10)
DCL VAR(&PASSWORD) TYPE(*CHAR) LEN(10)
DCL VAR(&RC) TYPE(*CHAR) LEN(1)
DCL VAR(&MSGNUM) TYPE(*CHAR) LEN(8)
DCL VAR(&TYP) TYPE(*CHAR) LEN(6)
DCL VAR(&TODAT) TYPE(*CHAR) LEN(6)

DCL &ERRORSW *LGL /* Std err */
DCL &MSGID *CHAR LEN(7) /* Std err */
DCL &MSGDTA *CHAR LEN(100) /* Std err */
DCL &MSGF *CHAR LEN(10) /* Std err */
DCL &MSGFLIB *CHAR LEN(10) /* Std err */
MONMSG MSGID(CPF0000) EXEC(GOTO STDERR1) /* Std err */

CHGVAR VAR(&FROMFILE) VALUE(%SST(&FROMFILEF 1 10))
CHGVAR VAR(&FROMLIB) VALUE(%SST(&FROMFILEF 11 10))
CHGVAR VAR(&TOFILE) VALUE(%SST(&TOFILEF 1 10))
CHGVAR VAR(&TOLIB) VALUE(%SST(&TOFILEF 11 10))

IF COND(&FROMMBR *EQ '*FROMFILE') THEN(CHGVAR +
VAR(&FROMMBR) VALUE(&FROMFILE))
IF COND(&TOMBR *EQ '*TOFILE') THEN(CHGVAR +
VAR(&TOMBR) VALUE(&TOFILE))

SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) +
MSGDTA('Dateiübertragung wird gestartet') +
TOPGMQ(*EXT) MSGTYPE(*STATUS)

CALL PGM(QY2FTML) PARM(&OPTION &FROMLIB &FROMFILE +
&FROMMBR &TYP &TOLIB &TOFILE &TOMBR &TODAT +
&MBROPT &RMTLOCNAM &PASSWORD &RC &MSGNUM)

IF COND((&RC *NE '0') *OR (&MSGNUM *NE ' ')) THEN(DO)
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) +
MSGDTA('Dateiübertragung abnormal beendet +
- Status ' !! &RC !! ' - MSG-Nr ' !! +
&MSGNUM) TOPGMQ(*EXT)
ENDDO

ENDDO


ENDE:
RETURN

STDERR1: /* Standard error handling routine */
IF &ERRORSW SNDPGMMSG MSGID(CPF9999) +
MSGF(QCPFMSG) MSGTYPE(*ESCAPE) /* Func chk */
CHGVAR &ERRORSW '1' /* Set to fail ir error occurs */
STDERR2: RCVMSG MSGTYPE(*DIAG) MSGDTA(&MSGDTA) MSGID(&MSGID) +
MSGF(&MSGF) MSGFLIB(&MSGFLIB)
IF (&MSGID *EQ ' ') GOTO STDERR3
SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
MSGDTA(&MSGDTA) MSGTYPE(*DIAG)
GOTO STDERR2 /* Loop back for addl diagnostics */
STDERR3: RCVMSG MSGTYPE(*EXCP) MSGDTA(&MSGDTA) MSGID(&MSGID) +
MSGF(&MSGF) MSGFLIB(&MSGFLIB)
SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
MSGDTA(&MSGDTA) MSGTYPE(*ESCAPE)
MSGDTA(&MSGDTA) MSGTYPE(*ESCAPE)

ENDPGM



zuerst das CLP compilieren ...........

CRTCLPGM PGM(QGPL/FTS)
SRCFILE(QGPL/QCLSRC)
SRCMBR(FTS)


dann den CMD compilieren ............


CRTCMD CMD(QGPL/FTS)
PGM(QGPL/FTS)
SRCFILE(QGPL/QCMDSRC)
ALLOW(*INTERACT *IPGM)



und fertig ist ein weitere Datei-Übertragungsmöglichkeit

FTS ..... + BT04





von Datei . . . . . . . . . . . FROMFILE
Bibliothek . . . . . . . . . . *LIBL
nach Datei . . . . . . . . . . . TOFILE
Bibliothek . . . . . . . . . . *LIBL
ferner Standort System . . . . . RMTLOCNAM
Kennwort für fernen Standort . . PASSWORD
von Teildatei . . . . . . . . . FROMMBR *FROMFILE
nach Teildatei . . . . . . . . . TOMBR *TOFILE
nach Teildatei ersetzen (Y/N) . MBROPT N
Senden = S / Empfangen = R . . OPTION S





2 Vorteile:
im Gegensatz zu SNDNETF muss auf dem Empfangssystem die Datei nicht existieren, sie wird mit o.g. CMD/CLP angelegt.
und
im Gegensatz zu SNDNETF muss nicht QSNADS konfiguriert sein,
d.h. SBS QSNADS braucht nicht gestartet zu sein !

und vor allem auf die richtige Richtung (senden/empfangen) achten !!!!

(ohne Gewähr)


viel Spaß beim testen.