D o m i n i q u e   G u e b e y    J u n g l e          AS/400 - iSeries

SQL à la rescousse pour alimenter un log FTP

Exemple

Un CL permet d’envoyer automatiquement le fichier BIBLIO/SAUVE vers la machine SYSTEME. Le log FTP est conservé mais il ne contient pas d’information d’horodatage. Comment ajouter cette information ?

En effet, FTP ne donne pas plus que ce qui est prévu dans sa conception : une série d’invites, de messages d’information ou d’erreurs.

La méthode

Insérer dans le log une info supplémentaire, à l’aide d’une simple commande SQL.

Le CL

PGM                                                                  
                                                                     
DLTOVR    INPUT                                                      
MONMSG    CPF0000                                                    
DLTOVR    OUTPUT                                                     
MONMSG    CPF0000                                                    
CRTSRCPF  BIBLIO/DGFTP 240              /* CREE LOG FTP            */
MONMSG    CPF0000                                                    
                                                                     
OVRDBF    INPUT  BIBLIO/QCLSRC DGFTP01  /* NOM DU SCRIPT FTP       */
OVRDBF    OUTPUT BIBLIO/DGFTP  FTPLOG   /* REDIRIGE SORTIE LOG     */
RUNSQLSTM BIBLIO/QCLSRC FTPSQL1         /* INSERE DATE-HEURE DEBUT */
MONMSG    CPF0000                                                    
DLTSPLF   FTPSQL1  SPLNBR(*LAST)        /* MENAGE SPOOL            */
MONMSG    CPF0000                                                    
FTP       SYSTEME                       /* LANCE LE TRANSFERT FTP  */
RUNSQLSTM BIBLIO/QCLSRC FTPSQL2         /* INSERE DATE-HEURE FIN   */
MONMSG    CPF0000                                                    
DLTSPLF   FTPSQL2  SPLNBR(*LAST)        /* MENAGE SPOOL            */
MONMSG    CPF0000                                                    
                                                                     
DLTOVR    INPUT                                                      
MONMSG    CPF0000                                                    
DLTOVR    OUTPUT                                                     
MONMSG    CPF0000                                                    
                                                                     
ENDPGM                                                               

Le script FTP DGFTP01

Les commandes lancées par QUOTE RCMD peuvent nécessiter une adaptation à chaque lancement.

USERID PASSWORD est à remplacer par le code utilisateur et le mot-de-passe.

USERID PASSWORD                                                          
CD  BIBLIO_WRK                                                         
LCD BIBLIO_WRK                                                         
QUOTE RCMD CLRSAVF SAUVE                                               
BINARY                                                                 
PUT SAUVE                                                              
QUOTE RCMD RSTOBJ *ALL USERID *SAVF SAVF(BIBLIO_WRK/SAUVE) MBROPT(*ALL) ALWOBJDIF(*ALL)
QUOTE RCMD CLRSAVF BIBLIO_WRK/SAUVE                                    
QUIT                                                                   

Modules SQL FTPSQL1 et FTPSQL2

Appelé par la commande RUNSQLSTM, il s’agit d’un membre source, de type TXT. CHAR permet de récupérer en texte simple les données numériques date et heure.

-- ** FTPSQL1    *******************************                       
-- ** Cette commande SQL ajoute dans le LOG FTP                        
-- ** une ligne indiquant la date et l'heure                           
--                                                                     
-- WITH NC évite les ennuis de journalisation validation etc..         
--                                                                     
INSERT INTO OUTPUT (SRCDTA) VALUES('** Début ' CONCAT                  
  CHAR(CURRENT DATE) CONCAT ' ' CONCAT CHAR(CURRENT TIME)) WITH NC     
-- ** FTPSQL2    *******************************                       
-- ** Cette commande SQL ajoute dans le LOG FTP                        
-- ** une ligne indiquant la date et l'heure                           
--                                                                     
-- WITH NC évite les ennuis de journalisation validation etc..         
--                                                                     
INSERT INTO OUTPUT (SRCDTA) VALUES('** Fin   ' CONCAT                  
  CHAR(CURRENT DATE) CONCAT ' ' CONCAT CHAR(CURRENT TIME)) WITH NC     

Remarque

Si la commande INSERT ne comporte pas la clause WITH NC, va falloir faire quelque chose comme :

  CRTJRNRCV  JRNRCV(*CURLIB/TRFJRNRCV) THRESHOLD(100000)  
    MONMSG CPF0000                                        
  CRTJRN     JRN(TRFJRN) JRNRCV(*CURLIB/TRFJRNRCV)        
    MONMSG CPF0000                                        
  STRJRNPF   FILE(BIBLIO/DGFTP) JRN(*CURLIB/TRFJRN) +        
             OMTJRNE(*OPNCLO)                             
    MONMSG CPF0000                                        
/* ************************************* */               

  OVRDBF     FILE(OUTPUT) TOFILE(BIBLIO/DGFTP)               
  RUNSQLSTM  SRCFILE(QCLSRC) SRCMBR(TRFSQL1)              

/* ************************************* */               
ENDJRNPF FILE(BIBLIO/DGFTP)                                  
    MONMSG CPF0000                                        
DLTJRN TRFJRN                                             
    MONMSG CPF0000                                        
DLTJRNRCV TRFJRNRCV                                       
    MONMSG CPF0000                                        

Exemple de "log" résultant

                            Affichage des données                              
                                             Largeur des données  . . :   249  
Première ligne à afficher . .            Première colonne à afficher  .        
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....
  SRCSEQ    SRCDAT   SRCDTA                                                    
     ,00         0   ** Début 03/09/06 12:35:24                                
     ,00         0   Output redirected to a file.                              
     ,00         0   Input read from specified override file.                  
     ,00         0   Connecting to host SYSTEME at address 192.168.11.2 using p
     ,00         0   220-QTCP at SYSTEME.                                       
     ,00         0   220 Connection will close if idle more than 5 minutes.    
     ,00         0   Enter login ID (userid):                                  
     ,00         0   331 Enter password.                                       
     ,00         0   230 USERID logged on.                                     
     ,00         0    OS/400 is the remote operating system. The TCP/IP version
     ,00         0   250  Now using naming format "0".                         
     ,00         0   257 "QGPL" is current library.                            
     ,00         0   Enter an FTP subcommand.                                  
     ,00         0   > CD  BIBLIO_WRK                                          
     ,00         0   250 "BIBLIO_WRK" is current library.                      
     ,00         0   Enter an FTP subcommand.                                  
     ,00         0   > LCD BIBLIO_WRK                                          
     ,00         0   Local working directory is BIBLIO_WRK                     
     ,00         0   Enter an FTP subcommand.                                  
     ,00         0   > QUOTE RCMD CLRSAVF SAUVE                                
     ,00         0   250 Command CLRSAVF SAUVE successful.                     
     ,00         0   Enter an FTP subcommand.                                  
     ,00         0   > BINARY                                                  
     ,00         0   200 Representation type is binary IMAGE.                  
     ,00         0   Enter an FTP subcommand.                                  
     ,00         0   > PUT SAUVE                                               
     ,00         0   250  Now using naming format "0".                         
     ,00         0   257 "BIBLIO_WRK" is current library.                      
     ,00         0   227 Entering Passive Mode (192,168,168,3,83,101).         
     ,00         0   150 Sending file to member SAUVE in file SAUVE in library 
     ,00         0   250 File transfer completed successfully.                 
     ,00         0   105600 bytes transferred in 0.076 seconds. Transfer rate 1
     ,00         0   Enter an FTP subcommand.                                  
     ,00         0   > QUIT                                                    
     ,00         0   221 QUIT subcommand received.                             
     ,00         0   ** Fin   03/09/06 12:35:25                                
********  Fin de données  ********                                             

Autre exemple où le fichier est expédié vers un système non OS400. D’où l’utilisation de NAMEFMT = 1 et d’un chemin de type IFS (/u04/INFOCENT/bddbo)

  SRCSEQ    SRCDAT   SRCDTA
     ,00         0   ** Debut 01/09/06 11:47:14
    1,00         0   Output redirected to a file.
    2,00         0   Input read from specified override file.
    3,00         0   Connecting to host XZYTRF at address 172.31.3.21 using por
    4,00         0   220 XZYTRF FTP server (SunOS 5.8) ready.
    5,00         0   Enter login ID (couzon):
    6,00         0   331 Password required for ifcftp.                         
    7,00         0   230 User ifcftp logged in.                                
    8,00         0   UNIX Type: L8 Version: SUNOS                              
    9,00         0   Enter an FTP subcommand.                                  
   10,00         0   > cd /u04/INFOCENT/bddbo                               
   11,00         0   250 CWD command successful.                               
   12,00         0   Enter an FTP subcommand.                                  
   13,00         0   > namefmt 1                                            
   14,00         0   502 SITE command not implemented.                         
   15,00         0   Client NAMEFMT is 1.                                      
   16,00         0   Enter an FTP subcommand.                                  
     ,00         0   ** Fin   01/09/06 11:47:14
********  Fin de données  ********                                             
Cre : 22 oct 2006 - Maj : 07 nov 2006

A propos de ces pages / about these pages : http://www.dg77.net/about.htm
Cre : 22 oct 2006 - Maj : 07 nov 2006 - Gen : 2012-03-08-12:11:57,20