PRPFTPI
prépare un script de transfert FTP
pour les membres d'un source. Elle permet de faire du semi-automatique
et ne dispense pas de connaitre FTP. Dans le cas d'AS400 reliés chacun à un réseau
différent et pour transférer une cinquantaine de sources, la démarche est rapide.
La séquence d'utilisations est :
INFOFTP
GET
et éventuellement la modifier
PUT
et éventuellement la modifier,
en incluant la partie CLP concernant la restauration des informations membre
(type et texte)
Liste des sources :
INFOFTP
.
CMD PROMPT('Préparation transfert FTP')
/* compiler avec PGM(PRPFTPI1) HLPPNLGRP(*LIBL/PRPFTPIH) HLPID(*CMD) */
/* Patrick LARREYA, 1990-2000 */
PARM KWD(MBR) TYPE(*NAME) LEN(10) DFT(*ALL) +
SPCVAL((*ALL)) PROMPT('Membre')
PARM KWD(SRC) TYPE(SRC) PROMPT('Fichier Source')
PARM KWD(OPTION) TYPE(*CHAR) LEN(8) RSTD(*YES) +
DFT(*ADD) VALUES(*ADD *REPLACE) +
PROMPT('Option Sauvegarde')
PARM KWD(TOMBR) TYPE(*NAME) LEN(10) DFT(INFOFTP) +
PROMPT('Vers Membre Texte')
PARM KWD(TOSRC) TYPE(TOSRC) PROMPT('Vers source')
PARM KWD(CHKLST) TYPE(*CHAR) LEN(4) RSTD(*YES) +
DFT(*YES) VALUES(*YES *NO) +
PROMPT('Vérifier Résultat')
SRC: QUAL TYPE(*NAME) LEN(10) DFT(QRPGSRC)
QUAL TYPE(*NAME) LEN(10) MIN(1) +
PROMPT('Bibliothèque')
TOSRC: QUAL TYPE(*NAME) LEN(10) DFT(*FROMSRC) SPCVAL((*FROMSRC))
QUAL TYPE(*NAME) LEN(10) DFT(*FROMLIB) +
SPCVAL((*FROMLIB)) PROMPT('Bibliothèque')
|
PGM PARM(&MBR &SRCF &OPT &TOMBR &TOSRCF &CHK) /* Génération de script FTP */ /* Patrick LARREYA, 1990-2000 */ DCL &MBR *CHAR 10 DCL &SRCF *CHAR 20 DCL &OPT *CHAR 8 DCL &TOMBR *CHAR 10 DCL &TOSRCF *CHAR 20 DCL &CHK *CHAR 4 DCL &SRC *CHAR 10 DCL &LIB *CHAR 10 DCL &TOSRC *CHAR 10 DCL &TOLIB *CHAR 10 DCL &TYP *CHAR 10 DCL &TXT *CHAR 50 DCL &ERR *CHAR 1 VALUE('0') DCL &MSGID *CHAR 7 DCL &MSGF *CHAR 10 DCL &MSGLIB *CHAR 10 DCL &MSGDTA *CHAR 256 MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERREUR)) CHGVAR &SRC %SST(&SRCF 1 10) CHGVAR &LIB %SST(&SRCF 11 10) CHGVAR &TOSRC %SST(&TOSRCF 1 10) CHGVAR &TOLIB %SST(&TOSRCF 11 10) /* Caractéristique du ou des membres */ IF (&MBR = '*ALL') DO DSPFD FILE(&LIB/&SRC) TYPE(*MBRLIST) + OUTPUT(*OUTFILE) OUTFILE(QTEMP/SAVMBRF) ENDDO ELSE DO RTVMBRD FILE(&LIB/&SRC) MBR(&MBR) RTNLIB(&LIB) + RTNMBR(&MBR) SRCTYPE(&TYP) TEXT(&TXT) ENDDO /* Vérification de présence du membre source destination */ IF (&TOSRC = '*FROMSRC') CHGVAR &TOSRC &SRC IF (&TOLIB = '*FROMLIB') CHGVAR &TOLIB &LIB CHKOBJ OBJ(&TOLIB/&TOSRC) OBJTYPE(*FILE) CHKOBJ OBJ(&TOLIB/&TOSRC) OBJTYPE(*FILE) MBR(&TOMBR) MONMSG MSGID(CPF0000) EXEC(DO) ADDPFM FILE(&TOLIB/&TOSRC) MBR(&TOMBR) + TEXT('Description de Membres Sources + créée par PRPFTPI') SRCTYPE(TXT) ENDDO /* Nettoyage du source destination si requis */ IF (&OPT = '*REPLACE') CLRPFM &TOLIB/&TOSRC &TOMBR /* appel du remplissage source */ OVRDBF FILE(SAVMBRF) TOFILE(QTEMP/SAVMBRF) OVRDBF FILE(SRCF) TOFILE(&TOLIB/&TOSRC) MBR(&TOMBR) CALL PGM(PRPFTPI2) PARM(&LIB &SRC &MBR &TYP &TXT) /* affichage du résultat */ IF COND(&CHK = '*YES') THEN(STRSEU + SRCFILE(&TOLIB/&TOSRC) SRCMBR(&TOMBR) + OPTION(2)) GOTO FINFIN ERREUR: IF (&ERR = '1') GOTO FINFIN CHGVAR &ERR '1' RCVMSG MSGTYPE(*LAST) MSGDTA(&MSGDTA) MSGID(&MSGID) + MSGF(&MSGF) MSGFLIB(&MSGLIB) SNDPGMMSG MSGID(&MSGID) MSGF(&MSGLIB/&MSGF) + MSGDTA(&MSGDTA) MSGTYPE(*ESCAPE) FINFIN: ENDPGM |
GET
PUT
H*------------------------------------------------------------------- H* Génération de script FTP avec liste de membres sources H* H* Patrick LARREYA, 1990-2000 H*------------------------------------------------------------------- FSAVMBRF IF F 201 DISK UC FSRCF O F 92 DISK A ISAVMBRF NS 01 I 14 23 SRC I 24 33 LIB I 65 74 MBR I 117 166 TXT I 167 176 TYP I 'open system' C C0OPEN I 'password' C C0PWD I 'quit' C C0QUIT I 'PGM' C C0PGM I 'ENDPGM' C C0ENDP I 'SRCTYPE(' C C0TYP I ' TEXT(''' C C0TXT I ''')' C C0ENDC C*=============================================================== C *ENTRY PLIST C PARM LIB 10 C PARM SRC 10 C PARM MBR 10 C PARM TYP 10 C PARM TXT 50 C* Partie Ecriture C MBR IFNE '*ALL' C EXSR TRTGET C EXSR TRTSND C EXSR TRTMBR C ELSE C*---------------------------------------------------------------------- C* Partie Envoi C MOVELC0OPEN SRCDTA P C EXCPT C MOVELC0PWD SRCDTA P C EXCPT C SETOF 97 C OPEN SAVMBRF C READ SAVMBRF 97 C*--------------------------------- C *IN97 DOWEQ'0' C EXSR TRTGET C READ SAVMBRF 97 C END C*--------------------------------- C CLOSESAVMBRF C MOVELC0QUIT SRCDTA P C EXCPT C*---------------------------------------------------------------------- C* Partie Réception C MOVELC0OPEN SRCDTA P C EXCPT C MOVELC0PWD SRCDTA P C EXCPT C SETOF 97 C OPEN SAVMBRF C READ SAVMBRF 97 C*--------------------------------- C *IN97 DOWEQ'0' C EXSR TRTSND C READ SAVMBRF 97 C END C*--------------------------------- C CLOSESAVMBRF C MOVELC0QUIT SRCDTA P C EXCPT C*---------------------------------------------------------------------- C* Partie Restauration infos Membre C MOVELC0PGM SRCDTA P C EXCPT C SETOF 97 C OPEN SAVMBRF C READ SAVMBRF 97 C*--------------------------------- C *IN97 DOWEQ'0' C EXSR TRTMBR C READ SAVMBRF 97 C END C*--------------------------------- C CLOSESAVMBRF C MOVELC0ENDP SRCDTA P C EXCPT C*---------------------------------------------------------------------- C END C SETON LR C*====================================================================== C TRTGET BEGSR C 'get' CAT LIB:1 DTA1 37 P 3+1+10+1+10+1+10+1 C CAT '/':0 DTA1 C CAT SRC:0 DTA1 C CAT '.':0 DTA1 C CAT MBR:0 DTA1 C DTA1 CAT MBR SRCDTA 80 P C CAT '.txt':0 SRCDTA C EXCPT C ENDSR C*====================================================================== C TRTSND BEGSR C 'send' CAT MBR:1 DTA2 20 P 4+1+10+4+1 C CAT '.txt':0 DTA2 C DTA2 CAT LIB SRCDTA P C CAT '/':0 SRCDTA C CAT SRC:0 SRCDTA C CAT '.':0 SRCDTA C CAT MBR:0 SRCDTA C EXCPT C ENDSR C*====================================================================== C TRTMBR BEGSR C* C 'CHGPFM' CAT LIB:1 SRCDTA P C CAT '/':0 SRCDTA C CAT SRC:0 SRCDTA C CAT MBR:1 SRCDTA C CAT C0TYP:1 SRCDTA C CAT TYP:0 SRCDTA C CAT ') +':0 SRCDTA C EXCPT C C0TXT CAT TXT:0 SRCDTA P C CAT C0ENDC:0 SRCDTA C EXCPT C ENDSR C*====================================================================== OSRCF EADD O 6 '000000' O 12 '000000' O SRCDTA 92 |