es gibt auch noch diese Möglichkeit:
Command (*CMD) erstellen, zB FTS
dann ein CL-Programm erstellen (*PGM)Code: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')
zuerst das CLP compilieren ...........Code: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
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
Code: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.
![[NEWSboard IBMi Forum]](images/duke/nblogo.gif)



Mit Zitat antworten
Bookmarks