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 03/08/2009, 17h08   #1
Membre du Club
 
Inscription : juillet 2006
Messages : 153
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2006
Messages : 153
Points : 40
Points : 40
Envoyer un message via MSN à ted the Ors
Par défaut Obtenir le maximum via un sort

Bonjour,

Est-ce possible d'obtenir la valeur maximum d'une zone d'un fichier via un SORT?

D'avance merci.

a plus

ted

Dernière modification par ted the Ors ; 03/08/2009 à 17h39.
ted the Ors est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2009, 17h45   #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
Plutôt par ICETOOL, facilement si c'est une zone numérique. exemple :
Code :
1
2
3
4
5
6
7
8
9
//TOOLIN   DD *                              
  DISPLAY FROM(IN1) LIST(REPORT) BLANK       
  TITLE('LISTE DES PRODUITS') PAGE DATE 
  HEADER('LIBELLE')  ON(01,40,CH)            
  HEADER(MONTANT)    ON(50,6,ZD,C3)
  HEADER(QUANTITE)   ON(60,4,ZD,C3)            
  MAXIMUM('MAXIMUM') MINIMUM('MINIMUM')      
/*
Les valeurs mini et maxi des zones MONTANT (col. 50 sur 6 Octets) et QUANTITE seront éditées en fin d'état pour cet exemple simpliste, sans rupture.
Homer-ac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2009, 18h01   #3
Membre du Club
 
Inscription : juillet 2006
Messages : 153
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2006
Messages : 153
Points : 40
Points : 40
Envoyer un message via MSN à ted the Ors
Bonjour et merci pour ce début de réponse.

Cependant, je ne connais pas du tout ICETOOL.
quelle partie du code donne le maximium? le minimum?

D'avance merci.
ted the Ors est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2009, 00h08   #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
Un JCL pour l'éxemple :
Code :
1
2
3
4
5
6
7
//STEP1   EXEC PGM=ICETOOL,REGION=2M
//TOOLMSG  DD SYSOUT=*         
//DFSMSG   DD SYSOUT=* 
//REPORT   DD SYSOUT=* 
//IN1      DD DISP=SHR,DSN=MON.FICHIER
//TOOLIN   DD *
Les commandes de l'exemple :
DISPLAY liste simple FROM(DDname-input) LIST(DDname-output)
HEADER(nom-de-colonne) ON(position,longueur,format et masque d'édition éventuel)
MAXIMUM('intitulé pour le maxi') MINIMUM(....)
Le simple fait d'indiquer MAXIMUM ou MINIMUM provoque l'édition des valeurs pour toutes des données de format numérique en fin d'état.
C'est un exemple au plus simple facile à tester. ICETOOL offre un très grand nombre de possibilités, trop même pour une présentation rapide plus détaillée.
Homer-ac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2009, 09h25   #5
Membre chevronné
 
Avatar de bernard59139
 
Administrateur de base de données
Inscription : octobre 2006
Messages : 477
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Administrateur de base de données

Informations forums :
Inscription : octobre 2006
Messages : 477
Points : 657
Points : 657
Pour exemple et sans icetools, mais moins évident

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//STEP1    EXEC PGM=SORT
//SYSOUT   DD   SYSOUT=*
//DFSMSG   DD   SYSOUT=*
//REPORT   DD  SYSOUT=*,LRECL=100
//SORTIN   DD  *
ABCDE12345A111111111111111111111111111111111111111111111   
ABCDE    1A1
ABCDF    5  
ABCDF    7  
ZBCDF    7  
ABCDF    7  
//SYSIN DD *
   SORT FIELDS=(1,5,CH,A)
   OUTFIL FNAMES=REPORT,
          HEADER1=(2:'CODE',
                  10:'   COUNT',
                  20:'  TOTAL',
                  30:'MINIMUM',
                  40:'MAXIMUM',
                  50:'MOYENNE'),
          SECTIONS=(01,05,SKIP=0L,
          TRAILER3=(2:01,05,
            10:COUNT,
            20:TOT=(006,5,ZD,LENGTH=08),
            30:MIN=(006,5,ZD,LENGTH=08),
            40:MAX=(006,5,ZD,LENGTH=08),
            50:AVG=(006,5,ZD,LENGTH=08))),
            NODETAIL,REMOVECC
/*
//*         NODETAIL,REMOVECC,OVERLAY=(100:X)
//* SI LE LRELC DU FICHIER EN SORTIE         
//*     EST PLUS GRAND QUE LE LRECL DU FICHIER EN ENTREE
//*         UTILISER BUILD, OVERLAY, IFTHEN, OU IFOUTLEN
//*         INFO SUR MESSAGE "ICE230A" DE DFSORT
//*
bernard59139 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2009, 09h43   #6
Membre Expert

 
Homme François Durand
Spécialiste Delivery Mainframe IBM
Inscription : octobre 2005
Messages : 1 071
Détails du profil
Informations personnelles :
Nom : Homme François Durand
Âge : 53
Localisation : France, Seine Saint Denis (Île de France)

Informations professionnelles :
Activité : Spécialiste Delivery Mainframe IBM
Secteur : Finance

Informations forums :
Inscription : octobre 2005
Messages : 1 071
Points : 1 659
Points : 1 659
Toujours ICETOOL, mais encore plus simple que l'opérateur DISPLAY, l'opérateur STATS :


Exemple :

Code :
1
2
3
4
5
6
7
8
9
//ICETOOL EXEC PGM=ICETOOL,REGION=1024K
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//TOOLIN DD *
 STATS FROM(INDD) ON(1,2,ZD)
//INDD DD *
01
99
05

Et le résultat :

Code :
1
2
3
4
5
ICE628I 0 RECORD COUNT:  000000000000003
ICE607I 0 STATISTICS FOR (1,2,ZD)      :
ICE608I 0   MINIMUM:  +000000000000001, MAXIMUM:  +000000000000099
ICE609I 0   AVERAGE:  +000000000000035, TOTAL  :  +000000000000105
ICE602I 0 OPERATION RETURN CODE:  00
Attention cependant à bien décrire la zone numérique à analyser ...
Luc Orient est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2009, 10h39   #7
Membre chevronné
 
Avatar de bernard59139
 
Administrateur de base de données
Inscription : octobre 2006
Messages : 477
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Administrateur de base de données

Informations forums :
Inscription : octobre 2006
Messages : 477
Points : 657
Points : 657
ou:
Code :
1
2
3
4
5
6
7
8
9
10
//SORT     EXEC PGM=SORT
//SYSOUT   DD  SYSOUT=*
//SORTIN    DD  * 
//SORTOUT DD  SYSOUT=*               
//FICREST  DD  SYSOUT=*               
//SYSIN     DD  *
 SORT FIELDS=(1,5,CH,D)
 OUTFIL STARTREC=1,ENDREC=1,OUTREC=(1,5)
/*
bernard59139 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2009, 12h56   #8
Membre Expert

 
Homme François Durand
Spécialiste Delivery Mainframe IBM
Inscription : octobre 2005
Messages : 1 071
Détails du profil
Informations personnelles :
Nom : Homme François Durand
Âge : 53
Localisation : France, Seine Saint Denis (Île de France)

Informations professionnelles :
Activité : Spécialiste Delivery Mainframe IBM
Secteur : Finance

Informations forums :
Inscription : octobre 2005
Messages : 1 071
Points : 1 659
Points : 1 659
... Variante ( ICETOOL et STATS) :


Code :
1
2
3
4
5
6
7
8
9
//ICETOOL EXEC PGM=ICETOOL,REGION=1024K
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//TOOLIN DD *
 STATS FROM(INDD) ON(1,2,ZD) LMSG
//INDD DD *
01
99
05

Résultat :

Code :
1
2
3
4
5
6
7
ICE628I 0 RECORD COUNT:  000000000000003
ICE607I 0 STATISTICS FOR (1,2,ZD)      :
ICE648I 0   MINIMUM:  +0000000000000000000000000000001
ICE648I 1   MAXIMUM:  +0000000000000000000000000000099
ICE648I 2   AVERAGE:  +0000000000000000000000000000035
ICE648I 3   TOTAL  :  +0000000000000000000000000000105
ICE602I 0 OPERATION RETURN CODE:  00
Luc Orient est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 10h53.


 
 
 
 
Partenaires

Hébergement Web