Ich übertrage jeden Tag eine vielzahl von Libs auf unser Backupsystem. Hierfür habe ich folgenen Programm erstellt.
Sichern auf dem Quellsystem
Code:/* ****************************************************************************/ /* Programm: SAVSNDLIB 1 */ /* Funktion: Sicher einer Lib in SAVF und versenden per FTP */ /* ****************************************************************************/ PGM PARM(&LIB &RMTSYS) DCL VAR(&LIB) TYPE(*CHAR) LEN(10) DCL VAR(&RMTSYS) TYPE(*CHAR) LEN(8) /* -------------------------------------------------------------------------- */ DLTOBJ OBJ(QTEMP/SAVSAVF) OBJTYPE(*FILE) MONMSG MSGID(CPF0000) CRTSAVF FILE(QTEMP/SAVSAVF) TEXT('Tmp Savf for lib') MONMSG MSGID(CPF0000) /* -------------------------------------------------------------------------- */ SAVLIB LIB(&LIB) DEV(*SAVF) SAVF(QTEMP/SAVSAVF) + SAVACT(*SYNCLIB) DTACPR(*YES) MONMSG MSGID(CPF0000) /* -------------------------------------------------------------------------- */ CRTSRCPF FILE(QTEMP/QFTPSRC) RCDLEN(112) MONMSG MSGID(CPF0000) CPYF FROMFILE(TOOLS/QFTPSRC) + TOFILE(QTEMP/QFTPSRC) FROMMBR(SNDSAVFLIB) + TOMBR(SNDSAVFLIB) MBROPT(*REPLACE) + CRTFILE(*YES) CPYF FROMFILE(TOOLS/QFTPSRC) + TOFILE(QTEMP/QFTPSRC) FROMMBR(SNDSAVFLOL) + TOMBR(SNDSAVFLOL) MBROPT(*REPLACE) + CRTFILE(*YES) FTPBATCH RMTSYS(&RMTSYS) + CMDFILE(SNDSAVFLIB/QTEMP/QFTPSRC) + FTPLOG(SNDSAVFLOL/QTEMP/QFTPSRC) DLTLOG(*NO) ENDPGM
FTP Batch Datei SNDSAVFLIB
FTP LogDatei SNDSAVFLOLCode:USER PASSWORD BINARY QUOTE RCMD DLTOBJ QGPL/RCVSAVF OBJTYPE(*FILE) QUOTE RCMD CRTSAVF QGPL/RCVSAVF PUT QTEMP/SAVSAVF.SAVF QGPL/RCVSAVF.SAVF QUOTE RCMD CHGJOB LOG(4 00 *SECLVL) LOGCLPGM(*YES) QUOTE RCMD CALL PGM(TOOLS/RSTSAVFLIB) PARM('RCVSAVF QGPL') QUIT
Code:DARF NICHT LEER SEIN
Auf dem Zielsystem
Code:/* ****************************************************************************/ /* Programm: RCVSNDSAVF */ /* Funktion: EMPFANGEN GESENDETEN SAVF VIA FTP */ /* Aufruf: VIA FTP REMOTE SYSTEM CL SAVSNDSAVF - FTP RMTCMD */ /* ****************************************************************************/ PGM PARM(&SAVFLIB) DCL VAR(&USRSPC) TYPE(*CHAR) LEN(20) + VALUE('SAV001US QTEMP') DCL VAR(&FMTNAM) TYPE(*CHAR) LEN(8) + VALUE('SAVF0200') DCL VAR(&SAVFLIB) TYPE(*CHAR) LEN(20) DCL VAR(&OBJFLT) TYPE(*CHAR) LEN(10) VALUE('*ALL') DCL VAR(&TYPFLT) TYPE(*CHAR) LEN(10) VALUE('*ALL') DCL VAR(&CNTHND) TYPE(*CHAR) LEN(36) DCL VAR(&ERRCOD) TYPE(*CHAR) LEN(4) DCL VAR(&DEC9) TYPE(*CHAR) LEN(9) DCL &ONED *DEC LEN(9 0) VALUE(1) DCL &LEND *DEC LEN(9 0) VALUE(140) DCL &STRPOS *CHAR LEN(4) DCL &LEN *CHAR LEN(4) DCL VAR(&RTNVAR) TYPE(*CHAR) LEN(140) CHGJOB LOG(4 00 *SECLVL) LOGCLPGM(*YES) MONMSG MSGID(CPF0000) /*----------------------------------------------------- */ /* Create the user space */ /*----------------------------------------------------- */ DLTUSRSPC USRSPC(%SST(&USRSPC 11 10)/%SST(&USRSPC 1 + 10)) MONMSG MSGID(CPF0000) CALL PGM(QUSCRTUS) PARM(&USRSPC '' + 100000 '' '*ALL' '') /*----------------------------------------------------- */ /* Füllen User Space */ /*----------------------------------------------------- */ CHGVAR VAR(%BIN(&ERRCOD 1 4)) VALUE(0) CALL PGM(QSRLSAVF) PARM(&USRSPC &FMTNAM &SAVFLIB + &OBJFLT &TYPFLT &CNTHND &ERRCOD) /*----------------------------------------------------- */ /* Empfangen User Space */ /*----------------------------------------------------- */ CHGVAR %BIN(&STRPOS 1 4) &ONED CHGVAR %BIN(&LEN 1 4) &LEND CALL QUSRTVUS PARM(&USRSPC &STRPOS &LEN &RTNVAR) CHGVAR VAR(&ONED) VALUE(%BIN(&RTNVAR 125 4)) CHGVAR VAR(&ONED) VALUE(&ONED +1) CHGVAR VAR(&LEND) VALUE(%BIN(&RTNVAR 137 4)) CHGVAR %BIN(&STRPOS 1 4) &ONED CHGVAR %BIN(&LEN 1 4) &LEND CALL QUSRTVUS PARM(&USRSPC &STRPOS &LEN &RTNVAR) CALLSUBR SUBR(RSTLIB) /* ****************************************************************************/ SUBR SUBR(RSTLIB) RSTLIB SAVLIB(%SST(&RTNVAR 1 10)) DEV(*SAVF) + SAVF(%SST(&SAVFLIB 11 10)/%SST(&SAVFLIB 1 + 10)) MBROPT(*ALL) ALWOBJDIF(*ALL) ENDSUBR ENDPGM
Das Programm SAVSNDLIB rufe ich von einem Programm auf welches die einzelen Libs in der richtigen Reihenfolge übergibt.
Vorteil dieser Programme: Auf dem Remote System muß nur eine SAVF angelegt und das Programm RSTSAVLIB vorhanden. Den Rest steuert das Quellsystem.
![[NEWSboard IBMi Forum]](images/duke/nblogo.gif)



Mit Zitat antworten
Bookmarks