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
Code:
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
FTP LogDatei SNDSAVFLOL
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.
Bookmarks