Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > z/OS
z/OS Forum d'entraide sur z/OS et MVS (Multiple Virtual Storage), les systèmes d'exploitation des ordinateurs « mainframes » IBM : JCL, Tso, Ispf, Vsam, Racf, SMS, Cics, Ims, OPC, Ca-7, Control-M, Dialog Manager ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/01/2008, 09h47   #1
Invité de passage
 
Inscription : janvier 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 2
Points : 1
Points : 1
Par défaut Ecrire un fichier sous TSO depuis un JCL

Bonjour,

Dans le cadre d'une évolution, je souhaite pouvoir écrire des données dans un fichier stocké sous TSO. Mais je ne connais pas les commandes, je suis un peu néophye dans le domaine...
Voici l'algo général du traitement :

Si fichier_en_entrée est vide
Ecrire dans fichier_Compte_rendu : "Fichier vide !"
Sinon
Lancer le traitement
Fin Si

Connaissez vous les commandes à insérer dans le JCL pour écrire dans un fichier TSO ?
Merci pour votre aide.
Jimbo_63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 11h24   #2
Membre expérimenté
 
Avatar de Homer-ac
 
Inscription : octobre 2007
Messages : 449
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : octobre 2007
Messages : 449
Points : 518
Points : 518
Si c'est juste pour tester un fichier vide l'IDCAMS suivant suffit :
Code :
1
2
3
4
5
6
//IDCAMS1 EXEC PGM=IDCAMS                         
//SYSPRINT DD  SYSOUT=*                           
//SYSIN    DD  *                                  
  PRINT INDATASET(MY.FICHIER.A.TESTER) COUNT(1)   
//*
-> RC = 0 si fichier avec données, ou 4 si fichier vide ou 12 si fichier inexistant.

Si on veut faire du TSO en Batch, le plus simple est de passer par un REXX qui peut être appelé soit par IKJEFT01 (et/ou 1A,1B en fonction des usages site), soit par IRXJCL.
Si vous faites du SQL vous avez sans doute déjà des modèles IKJEFTxx
Exemple JCL pour les 2 méthodes :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//STEP1    EXEC PGM=IKJEFT01                   
//SYSTSPRT DD SYSOUT=*                         
//SYSPROC  DD DISP=SHR,DSN=MON.PDS.DE.REXX     
//SYSTSIN  DD *                                
  MONREXX                                      
  MES PARAMETRES LUS (PULL REPONSE DU REXX)    
//*                                            
//STEP2    EXEC PGM=IRXJCL,PARM='MONREXX'      
//SYSTSPRT DD SYSOUT=*                         
//SYSEXEC  DD DISP=SHR,DSN=MON.PDS.DE.REXX     
//SYSTSIN  DD *                                
  MES PARAMETRES LUS (PULL REPONSE DU REXX)    
//
Enfin si votre REXX appelle un service ISPF, le JCL sera plus compliqué.
Il faudra faire un ISPSTART via une EXEC PGM=IKJEFTxx mais adjoindre une bonne dizaine de DD ISP.... supplémentaires. Dépend de la customisation de votre site. Demander à la prod ou au système un exemple dans ce cas, ils ont forcément un JCL type pour ça.
Homer-ac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 13h35   #3
Invité de passage
 
Inscription : janvier 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 2
Points : 1
Points : 1
Par défaut Complement

Bonjour et merci pour votre réponse.

Je vais cependant préciser le contexte :
Je travaille sous gros système MVS/CICS et il n'y a aucune interface avec d'autres systèmes dans le cadre de ma demande. ce que je veux savoir, c'est si avec IDCAMS ou autre chose, on peut écrire "Pas de données" dans un fichier. C'est aussi simple que çà....
Jimbo_63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 14h34   #4
Membre expérimenté
 
Avatar de Homer-ac
 
Inscription : octobre 2007
Messages : 449
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : octobre 2007
Messages : 449
Points : 518
Points : 518
Je pense avoir répondu. Pour du batch mais la demande portait sur un JCL et suppose la réponse à 2 questions.
1) Tester si un fichier est vide.
l'exemple IDCAMS permet de positionner un code retour qui pourra être testé pour la suite
2) Ecrire un message.
Dans un fichier : un utilitaire standard conditionné par le code retour 4 (IEBGENER ou un SORT par ex.) fera ça très bien
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//IDCAMS1 EXEC PGM=IDCAMS                      
//SYSPRINT DD  SYSOUT=*                        
//SYSIN    DD  *                               
  PRINT INDATASET(MON.FICHIER) COUNT(1) CHAR   
//* 
//STEP002 EXEC PGM=SORT,COND=(04,NE,IDCAMS1)                 
//SYSOUT   DD  SYSOUT=*  
//SORTOUT DD * ou par exemple,                                     
//SORTOUT  DD  DSN=MON.FICHIER.TRACE,                        
//             DISP=(MOD,CATLG,DELETE),                      
//             UNIT=3390,SPACE=(TRK,(5,2),RLSE),             
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=0,DSORG=PS)    
//SORTIN   DD  *                                             
LE FICHIER EST VIDE                                          
//SYSIN    DD  *                                             
  SORT FIELDS=COPY                                           
//*
Principe d'enchaînement Batch assez usuel.
Bien entendu, on peut choisir de faire gérer ça systématiquement par un REXX d'ou l'autre exemple. Rien ne vous empêche également d'écrire un COBOL simple pour ça, simplement la technique de test fichier vide par un IDCAMS conditionnant la suite est un truc assez usuel en MVS Batch.

Maintenant, vous citez CICS, générer alors du JCL est un tout autre pb, il faudra programmer
Homer-ac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 13h38   #5
Invité de passage
 
Inscription : janvier 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 3
Points : 4
Points : 4
Par défaut La solution

En utilisant l'utilitaire ICEGENER et la syntaxe suivante :

//AJOUT EXEC PGM=ICEGENER
//SYSUT1 DD *
CE QUE L ON VEUT AJOUTER
/*
//SYSUT2 DD DSN=MON.FICHIER.A.REMPLIR,
// DISP=MOD
//SYSPRINT DD SYSOUT=*
//SYSIN DD *

Par contre le fichier doit faire 80 de longueur.
cyberic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 23h07   #6
Membre expérimenté
 
Avatar de Homer-ac
 
Inscription : octobre 2007
Messages : 449
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : octobre 2007
Messages : 449
Points : 518
Points : 518
ICEGENER est un équivalent d'IEBGENER que j'avais cité. Même JCL et il utilise DFSORT, alors pourquoi ne pas passer directement par lui ? Au moins dispose t'on de tout le paramétrage SYSIN pour créer un fichier au format que l'on veut et c'est devenu un produit DFP incontournable.
NB. De plus en plus souvent IEBGENER est installé pour utiliser DFSORT, simplement parce que ce produit sait utiliser au mieux le cache des unités de contrôle disques modernes (ESS IBM par exemple).
Homer-ac est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h59.


 
 
 
 
Partenaires

Hébergement Web