Versuch es einmal damit (habe ich mal im Dezember 2005 geschrieben und ist immer noch im Einsatz):
Beispiel:
Kommando SCRFTPCode:SCRFTP RMTSYS(&SERVER) USER(&USER) PASSWORD(&PWD) + SCRIPT(&FTPPFAD ('del ' *CAT &TMPNAME) + 'namefmt 1' 'sendepsv 0' ('lcd ' *CAT + &LCLPFAD) ('put ' *CAT &TMPNAME) ('ren ' + *CAT &TMPNAME *BCAT &ORGNAME)) + LOG(*OUTFILE) OUTFILE(USMOD_16/XHYDRA1) + COMPARE('226 Transfer complete.') MONMSG MSGID(CPF0000) EXEC(CHGVAR VAR(&ERR) + VALUE('1'))
CLP für SCRFTPCode:CMD PROMPT('Srcipting FTP') PARM KWD(RMTSYS) TYPE(*CHAR) LEN(256) + SPCVAL((*INTNETADR *INTNETADR)) MIN(1) + EXPR(*YES) VARY(*YES *INT2) + PROMPT('Fernes System') PARM KWD(USER) TYPE(*CHAR) LEN(30) MIN(1) + EXPR(*YES) VARY(*YES *INT2) + PROMPT('Benutzer') PARM KWD(PASSWORD) TYPE(*CHAR) LEN(30) MIN(1) + EXPR(*YES) VARY(*YES *INT2) + DSPINPUT(*PROMPT) PROMPT('Kennwort') PARM KWD(SCRIPT) TYPE(*CHAR) LEN(80) MIN(1) + MAX(100) EXPR(*YES) INLPMTLEN(32) + PROMPT('Auszufhrende FTP-Befehle') PARM KWD(LOG) TYPE(*CHAR) LEN(10) RSTD(*YES) + DFT(*PRINT) VALUES(*PRINT *OUTFILE) + EXPR(*YES) PROMPT('Protokoll') PARM KWD(OUTFILE) TYPE(FILE) DFT(*NONE) + SNGVAL((*NONE)) PROMPT('Protokolldatei') PARM KWD(COMPARE) TYPE(*CHAR) LEN(80) DFT(*NONE) + SPCVAL((*NONE)) EXPR(*YES) VARY(*YES + *INT2) PROMPT('Vergleichszeichenfolge') PARM KWD(INTNETADR) TYPE(*CHAR) LEN(16) VARY(*YES + *INT2) PMTCTL(*PMTRQS) + PROMPT('Internet-Adresse') PARM KWD(CCSID) TYPE(*DEC) LEN(5 0) DFT(*DFT) + RANGE(1 65533) SPCVAL((*DFT 0)) + PMTCTL(*PMTRQS) PROMPT(CCSID) PARM KWD(PORT) TYPE(*DEC) LEN(5 0) DFT(*DFT) + RANGE(1 65535) SPCVAL((*DFT 21) (*SECURE + 990)) PMTCTL(*PMTRQS) PROMPT('Port') PARM KWD(SECCNN) TYPE(*CHAR) LEN(10) RSTD(*YES) + DFT(*DFT) SPCVAL((*DFT) (*NONE) (*SSL) + (*IMPLICIT)) PMTCTL(*PMTRQS) + PROMPT('Sichere Verbindung') PARM KWD(DTAPROT) TYPE(*CHAR) LEN(10) RSTD(*YES) + DFT(*DFT) SPCVAL((*DFT) (*CLEAR) + (*PRIVATE)) PMTCTL(*PMTRQS) + PROMPT('Datenschutz') FILE: QUAL TYPE(*NAME) LEN(10) QUAL TYPE(*NAME) LEN(10) PROMPT('Bibliothek')
RPGLE für SCRFTPXCode:PGM PARM(&RMTSYS &USER &PASSWORD &SCRIPT &LOG + &OUTFILE &COMPARE &INTNETADR &CCSID &PORT + &SECCNN &DTAPROT) DCL VAR(&RMTSYS) TYPE(*CHAR) LEN(258) DCL VAR(&USER) TYPE(*CHAR) LEN(32) DCL VAR(&PASSWORD) TYPE(*CHAR) LEN(32) DCL VAR(&SCRIPT) TYPE(*CHAR) LEN(2000) DCL VAR(&LOG) TYPE(*CHAR) LEN(10) DCL VAR(&OUTFILE) TYPE(*CHAR) LEN(20) DCL VAR(&COMPARE) TYPE(*CHAR) LEN(82) DCL VAR(&INTNETADR) TYPE(*CHAR) LEN(16) DCL VAR(&CCSID) TYPE(*DEC) LEN(5) DCL VAR(&PORT) TYPE(*DEC) LEN(5) DCL VAR(&SECCNN) TYPE(*CHAR) LEN(10) DCL VAR(&DTAPROT) TYPE(*CHAR) LEN(10) DCL VAR(&MSGID) TYPE(*CHAR) LEN(7) DCL VAR(&MSGF) TYPE(*CHAR) LEN(10) DCL VAR(&MSGL) TYPE(*CHAR) LEN(10) DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(512) DCL VAR(&SCRINP) TYPE(*CHAR) LEN(10) + VALUE(SCRFTPINP) DCL VAR(&SCROUT) TYPE(*CHAR) LEN(10) + VALUE(SCRFTPOUT) MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(FEHLER)) /* BEREINIGEN INPUT-DATEI */ DLTF FILE(QTEMP/&SCRINP) MONMSG MSGID(CPF0000) EXEC(DO) RCVMSG MSGTYPE(*EXCP) ENDDO /* BEREINIGEN OUTPUT-DATEI */ DLTF FILE(QTEMP/&SCROUT) MONMSG MSGID(CPF0000) EXEC(DO) RCVMSG MSGTYPE(*EXCP) ENDDO /* ERSTELLEN DATEIEN */ CRTPF FILE(QTEMP/&SCRINP) RCDLEN(80) CRTPF FILE(QTEMP/&SCROUT) RCDLEN(80) /* šBERSCHREIBUNGEN SETZEN */ OVRDBF FILE(INPUT) TOFILE(QTEMP/&SCRINP) + OVRSCOPE(*CALLLVL) OVRDBF FILE(OUTPUT) TOFILE(QTEMP/&SCROUT) + OVRSCOPE(*CALLLVL) /* PROGRAMM-AUSFšHRUNG */ CALL PGM(SCRFTPX) PARM(&RMTSYS &USER &PASSWORD + &SCRIPT &LOG &OUTFILE &COMPARE &INTNETADR + &CCSID &PORT &SECCNN &DTAPROT) IF COND(&LOG = '*PRINT') THEN(DO) OVRPRTF FILE(QSYSPRT) SPLFNAME(SCRFTP) + OPNSCOPE(*ACTGRPDFN) CPYF FROMFILE(QTEMP/&SCROUT) TOFILE(QSYSPRT) ENDDO IF COND(&LOG = '*OUTFILE') THEN(DO) CHKOBJ OBJ(%SST(&OUTFILE 11 10)/%SST(&OUTFILE 1 + 10)) OBJTYPE(*FILE) MBR(*FIRST) AUT(*USE) MONMSG MSGID(CPF0000) EXEC(DO) RCVMSG MSGTYPE(*EXCP) CRTPF FILE(%SST(&OUTFILE 11 10)/%SST(&OUTFILE 1 + 10)) RCDLEN(80) TEXT('Output from SCRFTP') ENDDO CPYF FROMFILE(QTEMP/&SCROUT) TOFILE(%SST(&OUTFILE + 11 10)/%SST(&OUTFILE 1 10)) MBROPT(*ADD) + FMTOPT(*NOCHK) ENDDO RCLRSC IF COND(%BIN(&COMPARE 1 2) = 7 *AND + %SST(&COMPARE 3 7) = 'CPF9898') THEN(DO) SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) + MSGDTA('Vergleichszeichenfolge nicht + gefunden') TOPGMQ(*PRV) MSGTYPE(*ESCAPE) ENDDO SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) + MSGDTA('FTP-Script erfolgreich + ausgefhrt') TOPGMQ(*PRV) MSGTYPE(*COMP) RETURN FEHLER: RCVMSG MSGTYPE(*EXCP) RMV(*NO) MSGDTA(&MSGDTA) + MSGID(&MSGID) MSGF(&MSGF) MSGFLIB(&MSGL) RCLRSC SNDPGMMSG MSGID(&MSGID) MSGF(&MSGL/&MSGF) + MSGDTA(&MSGDTA) TOPGMQ(*PRV) MSGTYPE(*ESCAPE) ENDPGM
Code:h fINPUT o f 80 disk usropn foutput if f 80 disk usropn d RMTSYS s 256 varying d USER s 30 varying d PASSWORD s 30 varying d SCRIPT ds d AnzZl 5I 0 d ScrLin 80 dim(100) d LOG s 10 d OUTFILE s 20 d COMPARE s 80 varying d INTNETADR s 16 varying d CCSID s 5p 0 d PORT s 5p 0 d SECCNN s 10 d DTAPROT s 10 d AKT s 5I 0 d WKSATZ ds 80 d QCMD s 256 d QCMDL s 15p 5 inz(256) iOUTPUT bb i 1 80 WKPROT c *entry plist c parm RMTSYS c parm USER c parm PASSWORD c parm SCRIPT c parm LOG c parm OUTFILE c parm COMPARE c parm INTNETADR c parm CCSID c parm PORT c parm SECCNN c parm DTAPROT c open INPUT c eval WKSATZ = USER + ' ' + PASSWORD c write INPUT WKSATZ c do AnzZl AKT c eval WKSATZ = ScrLin(AKT) c write INPUT WKSATZ c enddo c eval WKSATZ = 'quit' c write INPUT WKSATZ c close INPUT c* aufrufen FTP c if RMTSYS <> '*INTNETADR' c eval QCMD = 'FTP RMTSYS(''' + RMTSYS + ''')' c else c eval QCMD = 'FTP RMTSYS(' + RMTSYS + ')' c + ' INTNETADR(''' + INTNETADR c + ''')' c endif c if CCSID <> *zero c eval QCMD = %trim(QCMD) c + ' CCSID(' + %char(CCSID) + ')' c endif c eval QCMD = %trim(QCMD) c + ' PORT(' + %char(PORT) + ')' c + ' SECCNN(' + %trim(SECCNN) + ')' c + ' DTAPROT(' + %trim(DTAPROT) + ')' c monitor c call 'QCMDEXC' c parm QCMD c parm QCMDL c on-error *all c eval COMPARE = 'CPF9898' c eval *inlr = *off c return c endmon c if COMPARE <> '*NONE' c and COMPARE <> *blank c open OUTPUT c do *hival c read OUTPUT c if %eof c leave c endif c if %scan(%trim(COMPARE):WKPROT) > *zero c eval COMPARE = 'OK' c leave c endif c enddo c close OUTPUT c if COMPARE <> 'OK' c eval COMPARE = 'CPF9898' c endif c endif c eval *inlr = *off c return
![[NEWSboard IBMi Forum]](images/duke/nblogo.gif)



Mit Zitat antworten
Bookmarks