# ZOS: Soumettre des requêtes FTP en batch
{{INLINETOC}}
FTP est généralement exécuté de manière interactive en lançant et en entrant des commandes à partir d'un terminal. On peut également exécuter des instructions batch par FTP, mais on doit fournir le fichier JCL.
## Règles de codage
### Instruction INPUT ddname
On peut exécuter FTP en mode de traitement par lots en spécifiant des ensembles de données pour les entrées et les sorties ou sans référence aux ensembles de données pour les entrées et les sorties. Voir Affectation des ensembles de données d'entrée et de sortie FTP pour les attributs autorisés. sur les instructions INPUT et OUTPUT DD.
Lorsque l'API de client FTP est utilisée par un programme d'application appelé à partir d'un travail par lots, les noms de fichiers contenus dans le travail par lots ne sont pas disponibles pour le processus client FTP créé.
### Exit
Utiliser le paramètre `EXIT` ou coder l'instruction `CLIENTEXIT TRUE` dans le fichier `FTP.DATA` pour afficher un code de retour d'erreur et quitter l'application lorsque certaines erreurs sont détectées.
### Numérotation de ligne
Lorsqu'on spécifie un jeu de données à saisir l'instruction `SEQNUMSUPPORT` codée dans le fichier FTP.DATA du client détermine la disposition des numéros de séquence contenus dans le jeu de données:
* Si `SEQNUMSUPPORT FALSE` est codé dans le fichier `FTP.DATA` (valeur par défaut), le fichier, le fichier ou le flux d'entrée désigné dans l'instruction `DDNAME INPUT` contenant les commandes FTP ne peut pas contenir de numéros de ligne de séquence. On doit enregistrer le fichier de commande FTP en tant que fichier non numéroté.
* Si `SEQNUMSUPPORT TRUE` est codé dans le fichier `FTP.DATA`, le fichier, le fichier ou le flux d'entrée désigné dans l'instruction `DDNAME INPUT` contenant les commandes FTP peut contenir des numéros de séquence. Ces numéros de séquence sont supprimés.
### Commentaires
On peut ajouter des commentaires au fichier d'entrée de commande à l'aide du programme REXX qui empile les commandes. Le support comprend des enregistrements de commentaires autonomes et des commentaires qui sont ajoutés à la fin de la ligne.
* Pour ajouter des commentaires autonomes, utiliser un point-virgule (;) en tant que premier caractère non espace sur une ligne. Par exemple:
```
;Ceci est un enregistrement de commentaire autonome
```
* Pour ajouter un commentaire de ligne de commande, ajouter un espace et un point-virgule à la fin de la ligne de commande, suivi du commentaire. Par exemple:
```
USER utilisateur; Ceci est un commentaire ajouté
```
### Identification
Lorsqu'un ID utilisateur, un mot de passe ou une phrase de mot de passe est attendu (y compris les mots de passe requis pour l'accès en lecture ou en écriture à des fichiers ou des disques), la ligne entière doit être vide. L'exemple suivant montre un mot de passe vide entre l'ID utilisateur et une ligne de commentaire.
```
USER userx
;La ligne ci-dessus est un mot de passe vide
```
L'exemple suivant montre un ID utilisateur vide entre une ligne de commentaire et un mot de passe.
```
;Ce qui suit est un identifiant vide
mypasswd
```
Lors de la connexion à un serveur tel qu'un serveur UNIX où les ID utilisateur, les mots de passe, les noms de répertoire et les noms de fichier sont sensibles à la casse, les données du batch FTP doivent être codées en tenant compte de la casse.
### Indicateur de continuation
Si une commande est trop longue pour être insérée sur une ligne, entrer un signe plus (+) à la place de l'option de commande suivante, puis entrer les options restantes sur la ligne suivante. Par exemple:
```
put local\_file +
fichier\_distant
```
Utiliser un blanc suivi d'un signe plus (+) à la fin d'une ligne de sous-commande FTP comme indicateur de continuation pour toutes les sous-commandes FTP, sauf indication contraire dans la section Restrictions. Lorsque l'indicateur de continuation est rencontré à la fin d'une ligne de sous-commande FTP, la ligne suivante est ajoutée à la sous-commande. Par exemple, la commande suivante est interprétée comme `PUT SOURCE.DS.NAME DEST.DS.NAME`:
```
PUT SOURCE.DS.NAME +
DEST.DS.NAME
```
**Restriction**:
* On ne peut pas utiliser un signe plus pour continuer une sous-commande QUOTE.
* On ne peut pas utiliser un signe plus pour continuer un mot de passe ou une expression de mot de passe sur une autre ligne.
### Requêtes DB/2
Pour que le client FTP exécute des requêtes DB/2 dans un travail par lots, la bibliothèque `DSNLOAD` doit figurer dans la liste des liens ou apparaître dans une instruction `DD STEPLIB` pour le travail.
## Exemples
### JCL pour exécuter des traitements par lots à l'aide de jeux de données
exemple de JCL requis pour soumettre un travail par lots en faisant référence à des ensembles de données pour les entrées et les sorties.
```
//USER28F JOB ,CARTER,MSGLEVEL=(1,1)
//FTPSTP1 EXEC PGM=FTP,REGION=2048K,
// PARM='9.67.112.25 (EXIT TIMEOUT 20'
//NETRC DD DSN=ANYHLQ.NETRC,DISP=SHR
//OUTPUT DD SYSOUT=H
//INPUT DD *
type e
mode b
put idss.parts
/*
```
* La première instruction JCL est une instruction de travail standard.
* L'instruction suivante est une instruction EXEC. PGM=FTP suivi d'un paramètre `REGION`et d'un champ `PARM`:
* `REGION=2048K` est une exigence minimale (Le besoin pourrait augmenter en fonction de la taille de bloc de l'ensemble de données en cours de transfert) car FTP peut utiliser plus de stockage que la taille la région par défaut.
* Dans `PARM=`, on peut spécifier n'importe quel paramètre valide lors de l'appel de FTP depuis un terminal.
* pour exécuter FTP en mode de traitement par lots, vous devez inclure les trois instructions DD suivantes:
* **NETRC DD** On peut utiliser le fichier `user\_id.NETRC` pour fournir l'ID utilisateur, le mot de passe ou la phrase du mot de passe, ainsi que les informations de compte pour une connexion distante traitée par lots. On peut également spécifier l'ID utilisateur, le mot de passe ou la phrase du mot de passe, ainsi que les informations de compte dans l'ensemble de données `INPUT DD`.
* **OUTPUT DD** Spécifie le jeu de données dans lequel FTP doit placer les messages client et les réponses du serveur générées en cours de la session FTP (on peut utiliser `SYSPRINT DD` à la place de l'instruction `OUTPUT DD`).
* **INPUT DD** Spécifie le jeu de données où se trouvent les sous-commandes FTP à exécuter.
### Contenu d'un ensemble de données INPUT DD
Exemple d'enregistrements d'un fichier `INPUT DD` contenant les sous-commandes FTP à exécuter.
``
HOSTNAME
USERID PASSWD
DIR
PUT MYFILE.LISTING
QUIT
```
* La première contient le nom de l'hôte distant auquel FTP se connecte.
* La deuxième ligne contient l'ID utilisateur suivi de son mot de passe.
* Les trois lignes suivantes contiennent les sous-commandes FTP que l'on souhaite exécuter par FTP. Dans cet exemple:
* **DIR**: FTP affiche le répertoire de travail actuel sur l'hôte du serveur FTP.
* **PUT**: FTP envoie le fichier MYFILE.LISTING au serveur.
* **QUIT**`: met fin à la session et se déconnecte du serveur.
Tous les messages clients et les réponses du serveur aux sous-commandes que l'on exécute apparaissent dans le fichier de données `OUTPUT DD`. `SYSPRINT` peut contenir des messages supplémentaires liés à l'exécution de la session FTP.
Si on ne souhaite pas que le mot de passe ou la phrase de passe soit affichée dans le fichier de sortie, indiquee l'ID utilisateur et le mot de passe ou phrase de mot de passe sur des lignes de saisie distinctes.