Préparation de script de transfert de source pour FTP

La commande 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 :

Liste des sources :

PRPFTPI : commande de lancement

Préciser le source à traiter. Par défaut, le script est généré dans le membre 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')                          

PRPFTPI1 : programme CL de lancement

Récupère une liste des membres du source, appelle le programme de mise en forme et affiche le résultat.

             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

PRPFTPI2 : génération du script

Ce programme

     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