Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > 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 ...

Réponse
 
Outils de la discussion
Vieux 06/11/2008, 15h55   #1 (permalink)
Membre à l'essai
 
Date d'inscription: octobre 2008
Messages: 42
Par défaut Recopié un fichier au format U en binaire sous ZOS

Bonjour à tous,

Ma question est très simple, est-ce que c'est possible en REXX ?

Merci d'avance.
Kyle Katarn est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 06/11/2008, 17h04   #2 (permalink)
Membre Confirmé
 
Avatar de Homer-ac
 
Date d'inscription: octobre 2007
Localisation: région parisienne
Messages: 228
Par défaut

La réponse est oui mais pas avec EXECIO qui n'autorise pas l'indéfini.
Le plus simple est d'utiliser Library Management d'ISPF (LMINIT -> LMOPEN -> LMGET qui sait parfaitement lire de l'indéfini).
Homer-ac est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 07/11/2008, 11h02   #3 (permalink)
Membre à l'essai
 
Date d'inscription: octobre 2008
Messages: 42
Par défaut

Merci, j'avou être une grosse buse en REXX et malheureusement je vais devoir en faire pas mal.

Ca confirme bien ce que je pensais concernant l'EXECIO.

Est ce que je pourrais abuser et demander si tu avais un exemple en 2 lignes ?

Mes connaissances en REXX pour le moment se limitant à la lecture (Extrèmement agréable en livre de chevet) de la doc REXX pour ZOS.

Merci d'avance.
Kyle Katarn est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 07/11/2008, 11h28   #4 (permalink)
Membre Confirmé
 
Avatar de Homer-ac
 
Date d'inscription: octobre 2007
Localisation: région parisienne
Messages: 228
Par défaut

Voici un exemple de sous programme de lecture d'un fichier indéfini en REXX via LMGET. Il alimente un tableau pour réécriture d'un fichier en fixe pour une longueur maxi (ici 6144). Le paramètre DATALEN donne la longueur du bloc lu, le paramètre MAXLEN donne si on le veut, la longueur maxi de l'enreg. à lire.
En l'occurrence il s'agit de la lecture d'un load module. Bien entendu si le fichier est un PS, le LMMFIND pour pointer sur le membre en directory ne sera pas codé.
Code :
LIRELOAD:     /* LECTURE DU LOAD MODULE */                            
parse upper arg MBNAME MYLOAD .                                       
MBLEN = 6144   /* VOIR QUELLE LONGUEUR MAXI EST UTILE */              
RCD   = COPIES('00'X,MBLEN) ; LGRCD = 0 ; COUNTRCD = 0                
Call on error                                                         
Address ISPEXEC                                                       
"LMINIT  DATAID(DAID1) DATASET('"MYLOAD"') ENQ(SHRW)"                 
"LMOPEN  DATAID("DAID1") OPTION(INPUT)"                               
"LMMFIND DATAID("DAID1") MEMBER("MBNAME")"                            
Call off ERROR /* RC 8 en fin de LMGET */                             
Do While RC = 0                                                       
   "LMGET DATAID("DAID1") MODE(INVAR) DATALOC(RCD) DATALEN(LGRCD)" ,  
                          "MAXLEN("MBLEN")"                           
   if RC = 0 then do                                                  
      COUNTRCD = COUNTRCD + 1                                         
      ENREG.COUNTRCD = LGRCD left(RCD,LGRCD) /* MEF Sortie */         
   end                                                                
   else do                                                            
      RC = 0 ; Leave                                                  
   end                                                                
end                                                                   
ENREG.0 = COUNTRCD                                                    
                                                                      
ERROR:         /* On s'assure du close en cas de RC > 0 */            
If RC > 0 then say 'CODE RETOUR' RC 'NON PREVU SUR LIGNE' SIGL        
RCRET = RC                                                            
"LMCLOSE DATAID("DAID1")"                                             
"LMFREE  DATAID("DAID1")"                                             
address TSO   
Return RCRET
Homer-ac est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 07/11/2008, 13h48   #5 (permalink)
Membre à l'essai
 
Date d'inscription: octobre 2008
Messages: 42
Par défaut

Encore merci

Dernière question je pense

On m'a spécifié de faire une copie binaire pour ne pas altérer le contenu du fichier qui pourait être en ascii.

Est ce que cette notion est valable pour REXX ?
Si oui, Est ce que c'est possible de faire une copie binaire en REXX ?
Si non, je suppose que la copie sera strictement identique à l'originale ?
Kyle Katarn est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 07/11/2008, 14h31   #6 (permalink)
Membre Confirmé
 
Avatar de Homer-ac
 
Date d'inscription: octobre 2007
Localisation: région parisienne
Messages: 228
Par défaut

REXX ne va pas altérer le contenu si on ne le change pas à l'écriture.
Une remarque cependant si c'est une simple copie à l'identique du fichier :
On peul le faire sans passer par un REXX. En fonction du tri installé sur site Sort IBM, CA-SORT, SYNC-SORT ... Certains peuvent prendre en compte un fichier indéfini via un SORT FIELDS=COPY et changer éventuellement le format en sortie. Pour une simple copie, une option DFDSS, de mémoire PROCESS(UNDEFINED), permet à présent de recopier ces fichiers.
Enfin, si on veut écrire un programme, COBOL sait également lire un fichier indéfini.
Homer-ac est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 12/11/2008, 09h49   #7 (permalink)
Membre à l'essai
 
Date d'inscription: octobre 2008
Messages: 42
Par défaut

Merci pour tes réponses.
Kyle Katarn est déconnecté   Envoyer un message privé Réponse avec citation
NEWS AUTRESAdaAlgoAssembleurBasicCobolFortranLaTeXMATLABPascalPerlPrologPurebasicRéseauRubySystèmesXMLRAD

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Autres systèmes > z/OS



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide