Sur un mainframe IBM exécutant z / OS, vous exécutez un utilitaire qui copie un jeu de données (fichier) dans un autre jeu de données (fichier). L'entrée est la source du JCL (Job Control Language) que vous avez soumis afin de l'exécuter. La sortie est le lecteur interne (INTRDR). Vous devrez également vous assurer que votre système n'autorise pas l'exécution de plusieurs noms de travail identiques. Il est bon d'utiliser une classe de travail qui n'a qu'un seul initiateur (endroit où un travail peut être exécuté par lots).
Il n'y a pas de PID impliqué (dans z / OS), l'échec est donc impossible.
Vous arrêtez le processus en drainant et / ou en rinçant. Si quelque chose ne va pas, en vidant et / ou en rinçant, en jurant, en donnant un coup de pied, en essayant un démarrage à chaud et finalement par un démarrage à froid ou en appuyant sur le gros bouton rouge (et en tirant sur le programmateur).
J'ai peut-être exagéré en cours de route, mais n'essayez pas cela au travail ...
Exemple utilisant SORT. Les détails sur la carte de travail dépendent beaucoup du site. La politique du site peut interdire ou empêcher l’utilisation d’INTRDR. Une classe spécifique peut être nécessaire pour utiliser INTRDR. Si la politique de votre site interdit son utilisation , ne l'utilisez pas sauf si vous souhaitez vous promener avec vos biens personnels dans une boîte en carton.
Bien que l’INTRDR présente de bonnes utilisations, ne l’utilisez pas à cette fin . Vous n'aurez même pas la chance d'obtenir votre boîte.
//jobname JOB rest is to your site standards
//*
//STEP0100 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTOUT DD SYSOUT=(,INTRDR) minimum required, site may require more
//SYSIN DD *
OPTION COPY
//SORTIN DD DISP=SHR,DSN=YOUR.LIBRARY.WITHJOB(JOBMEMBR)
D'autres utilitaires sont disponibles. Un programme rapide serait aussi facile à faire: il suffit de lire un fichier, d’écrire un fichier.
Si vous voulez un exemple d'erreur, essayez: http://ibmmainframes.com/viewtopic.php?p=282414#282414
La manière traditionnelle de copier un jeu de données consiste à utiliser l'utilitaire IBM IEBGENER, comme le fait remarquer ugoren dans ses commentaires.
Cependant, ces jours-ci, de nombreux sites auront IEBGENER "aliasé" par ICEGENER. Si cela est possible, ICEGENER utilisera DFSORT d’IBM (ou son rival SyncSort) pour effectuer une copie, car les produits SORT sont beaucoup plus optimisés pour IO que IEBGENER.
Je coupe juste l'intermédiaire en utilisant SORT.
Si vous travaillez sur un site IBM Mainframe, vous connaissez le format de la carte de travail que vous devez utiliser. La carte JOB minimale est comme je l’ai montré, sans le commentaire. Le commentaire sera important, car vous pouvez être supposé fournir des informations comptables, par exemple. Le nom du travail aura probablement un format spécifique au site.
Certains sites interdisent ou empêchent l’utilisation de INTRDR. Savoir.
Certains sites permettent l'exécution simultanée de plusieurs tâches du même nom. Savoir.
Bien que, sauf si vous êtes programmeur système, vous ne pouvez pas configurer une telle classe, vous devez rechercher une classe qui n'autorise qu'un seul initiateur. Avec cela, le processus est assez sûr - mais soyez absolument sûr que la classe fonctionne comme décrit. Tester. Pas avec ce travail.
Si vous êtes un programmeur système, vous savez qu'il ne faut rien faire en dehors de vos attributions. 'Nuff a dit.
Avec un travail portant le même nom autorisé en même temps et un seul initiateur, il s'agira d'un flux constant de début / fin de travail, début / fin du travail suivant, jusqu'à ce que vous remplissiez le spool (autre mauvaise chose à faire) avec la sortie de des milliers d'emplois (ou à court de nombre d'emplois). Surveillez une console JES pour les messages d'avertissement.
En gros, ne faites pas ça. Si vous le faites, ne le faites pas sur une machine de production.
Après un peu de relooking, je considérerai une autre réponse pour savoir comment le faire sur un autre système d'exploitation IBM Mainframe, z / VSE ... z / VSE utilise JCL. z / OS utilise JCL. Ils sont différents :-)
exec
fait Linux?