Bonjour,
je souhaiterai faire passer une donnée d'un programme cobol vers le jcl
mais je n'ai aucune idée de comment procéder?
j ai besoin de cette donnée pour renommer un fichier dynamiquement.
merci d'avance pour toutes vos reponses
Version imprimable
Bonjour,
je souhaiterai faire passer une donnée d'un programme cobol vers le jcl
mais je n'ai aucune idée de comment procéder?
j ai besoin de cette donnée pour renommer un fichier dynamiquement.
merci d'avance pour toutes vos reponses
Ce qui me semble le plus simple serait une recopie du JCL de base (en particulier pour le paramètrage JOB qui va bien, à commencer par le nom), avec alimentation du sysin de rename IDCAMS sur un fichier SYSOUT ou autre DDNAME tel qu'assigné dans le COBOL) déclaré ainsi :
Le nouveau fichier crée partira dans le reader de JES et s'exécutera comme JOB à part qui va suivre le JOB d'exécution du COBOLCode://JCLOUT DD SYSOUT=(*,INTRDR),DCB=(LRECL=80,RECFM=FB,BLKSIZE=0)
Pour ce que j'ai compris, c'est un rename de fichier qui doit être généré soit :
Soit la commande ALTER est écrite dans un fichier de LRECL 80, repris dans un STEP IDCAMS qui suit l'exécution du COBOL, soit on écrit tout le JOB qui peut être envoyé en exécution par INTRDR.Code:
1
2
3
4
5 //STP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * ALTER ANCIEN.NOM.FICHIER NEWNAME(NOUVEAU.NOM.FICHIER) //*
Perso, je trouve que cette dernière solution est très simple. Pas la peine de générer du JCL. Pour expliciter l'exemple d'Homer-ac, tu auras un JCL comme ça :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 //* //* Programme applicatif //* Crée et alimente le fichier NOMFISTD dont le nom devra être modifié //* dynamiquement //* Ecrit dans RENAMEDD la ligne suivante : //* ALTER ANCIEN.NOM.FICHIER NEWNAME(NOUVEAU.NOM.FICHIER) //* qui permettra de renommer le 1er fichier //* //MONPGM01 EXEC PGM=MONPGM01 //NOMFISTD DD DSN=ANCIEN.NOM.FICHIER,DISP=(NEW,CATLG,DELETE) // SPACE=(CYL,(1,1),RLSE), // DCB=(RECFM=FB,BLKSIZE=0,LRECL=4200), // UNIT=SYSDA //RENAMEDD DD DSN=NOM.DE.FICHIER.TEMP,DISP=(,CATLG,DELETE) // SPACE=(TRK,(1,1),RLSE), // DCB=(RECFM=FB,BLKSIZE=0,LRECL=80), // UNIT=SYSDA //* //RENAME EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD DSN=NOM.DE.FICHIER.TEMP,DISP=SHR //*