MiniDoc - MVS utilitaires


Cette page a pour but de présenter très succintement les différents utilitaires IBM qui tournent en MVS. Sans intéréts pour les experts, cette page donnera quelques éléments aux novices.
Chaque programme est présenté avec un exemple et un lien vers la documentation disponible par le WEB. Le but est de mettre le pied à l'étrier des novices (je sais je me répète).


Les programmes IEB* et IEH* font partie de l'histoire de MVS. Certains de ces programmes sont très peu utilisés quant ils ne le sont plus du tout.


IEBCOMPR

IEBCOMPR est un utilitaire qui permet de comparer 2 fichiers ou 2 PDS, sauf des load modules.
Pour des raisons de performances et d'accessibilité, IBM recommande d'utiliser "SuperC utility instead" (le Super-Compare) plutot que IEBCOMPR.
Si les fichiers sont identiques,un return-code à '00' est positionné, dans tous les autres cas, il y a erreur.

+DOC---------------------------------------------------------------------¦
¦               COMPARE      ¦ TYPORG={PS|PO}                            ¦
¦               EXITS        ¦ voir documentation                        ¦
¦               LABELS       ¦ [DATA={YES|NO|ALL|ONLY}]                  ¦
+------------------------------------------------------------------------+
+EXEMPLE--------------------------------------------------------------------------------+
//         EXEC PGM=IEBCOMPR
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSN=Le.fichier1,DISP=OLD
//SYSUT2   DD  DSN=Le.fichier2,DISP=OLD
//SYSIN    DD  DUMMY
+---------------------------------------------------------------------------------------+

IEBCOPY

IEBCOPY est un utilitaire qui permet de copier des membres de PDS ou de PDSE. Il est possible d'utiliser IEBCOPY pour copier un PDS vers un fichier séquentiel, ou copier ce fichier séquentiel vers un PDS.

+DOC------------------------------------------------------------------------------------+
¦                                                                                       ¦
¦     COPY     OUTDD=DDnameo,,INDD=[(]{DDnamei|(DDnamei,R)  }[,...][)] ,LIST={YES|NO}]  ¦
¦                                                                                       ¦
¦     COPYGRP  OUTDD=DDnameo,,INDD=[(]{DDnamei|(DDnamei,R)  }[,...][)] ,LIST={YES|NO}]  ¦
¦                                                                                       ¦
¦     COPYMOD  OUTDD=DDnameo,,INDD=[(]{DDnamei|(DDnamei,R)  }[,...][)]                  ¦
¦                            [,MAXBLK={nnnnn|nnK}]                                      ¦
¦                            [,MINBLK={nnnnn|nnK}]                                      ¦
¦                            [,LIST={YES|NO}]                                           ¦
¦                                                                                       ¦
¦     EXCLUDE  MEMBER=[(]name1[,name2][,...][)]                                         ¦
¦     SELECT   MEMBER=name1                                                             ¦
¦     SELECT   MEMBER=(name1,name2,...)                                                 ¦
¦     SELECT   MEMBER=((name1,newname1[,R])[.......])                                   ¦
¦                                                                                       ¦
¦                                                                                       ¦
¦ par défaut, DDnamei = SYSUT1, DDnameo=SYSUT2                                          ¦
+---------------------------------------------------------------------------------------+

+EXEMPLE--------------------------------------------------------------------------------+
//IEBCOPY  EXEC  PGM=IEBCOPY
//SYSPRINT DD  SYSOUT=*
//IN1      DD  DISP=SHR,DSN=le.pds.en.entree
//OU1      DD  DISP=SHR,DSN=Le.pds.en.sortie
//SYSIN    DD  *
COPY OUTDD=OU1,INDD=((IN1,R))
SELECT MEMBER=TOTO
/*
+---------------------------------------------------------------------------------------+

IEBDG

IEBDG est un utilitaire permettantde générer le contenu d'un fichier pour aider au débugging des programmes.

+DOC------------------------------------------------------------------------------------+
¦                                                                                       ¦
¦      DSD        OUTPUT=(ddname)                                                       ¦
¦                 [,INPUT=(ddname1[,ddname2][,....])]                                   ¦
¦                                                                                       ¦
¦      FD         NAME=                                                                 ¦
¦                 ,LENGTH=length                                                        ¦
¦                 [,STARTLOC=position_start]                                            ¦
¦                 [,FILL=('char')]                                                      ¦
¦                 [,{FORMAT=pattern[, CHARACTER=character]|                             ¦
¦                               PICTURE=length, {'character-string'|P'n'|B}}]           ¦
¦                 [,SIGN=sign]                                                          ¦
¦                 [,ACTION={FX|RO|RP|SL|SR|TL|TR|WV}[,INDEX=n[,CYCLEn][,RANGE=n]]       ¦
¦                 [,INPUT=ddname]                                                       ¦
¦                 [,FROMLOC=number]                                                     ¦
¦                                                                                       ¦
¦      REPEAT     QUANTITY=number[,CREATE=number]                                       ¦
¦                                                                                       ¦
¦                                                                                       ¦
¦      CREATE     [QUANTITY=n]                                                          ¦
¦                 [,FILL={'character'|X'nn'}]                                           ¦
¦                 [,INPUT={ddname|SYSIN[({cccc|$$$E})]}]                                ¦
¦                 [,PICTURE=length,startloc,                                            ¦
¦                        {'character-string' | P'n' | B'n'}]                            ¦
¦                 [,NAME={(namelist)|(namelist-or-(copygroup))},EXIT=routinename]       ¦
¦                                                                                       ¦
¦                                                                                       ¦
¦      END                                                                              ¦
¦                                                                                       ¦
+---------------------------------------------------------------------------------------+
+EXEMPLE--------------------------------------------------------------------------------+
//STEP1    EXEC PGM=IEBDG
//SYSPRINT DD  SYSOUT=A
//SEQOUT   DD  DSN=le.fichier.en.sortie,UNIT=disk,DISP=(,CATLG),
//             DCB=(RECFM=FB,LRECL=80),
//             SPACE=(TRK,(10,10))
//SYSIN    DD  *
DSD OUTPUT=(SEQOUT)
FD  NAME=FIELD1,LENGTH=70,STARTLOC=1,FORMAT=AL,ACTION=TL
CREATE QUANTITY=100,NAME=(FIELD1),FILL=X'FF'
END
/*
+---------------------------------------------------------------------------------------+

IEBEDIT

IEBEDIT permet de copier tout ou partie de jobs depuis un fichier vers un autre fichier (ou vers l'INTERNAL-READER.
C'est un programme qui ne devrait plus être utilisé dans une production "normale". Certains schéduler (OPC PAR EX.) font cela très bien.

IEBGENER

C'est le programme de copie de fichiers séquentiels, avec ou sans transformation des records.
Si les enregistrements doivent être reformatés, mieux vaut utiliser le tri (SORT), c'est plus facile.

+DOC------------------------------------------------------------------------------------+
¦                                                                                       ¦
¦      GENERATE   [,MAXNAME=n]                                                          ¦
¦                 [,MAXFLDS=n]                                                          ¦
¦                 [,MAXGPS=n]                                                           ¦
¦                 [,MAXLITS=n]                                                          ¦
¦                 [,DBCS={YES|NO}]                                                      ¦
¦                                                                                       ¦
¦      EXIT       ===>voir doc originale                                                ¦
¦                                                                                       ¦
¦      LABELS     [DATA={YES|NO|ALL|ONLY|INPUT}]                                        ¦
¦                                                                                       ¦
¦      MEMBER     NAME=(name[,alias 1][,alias 2][,...])                                 ¦
¦                                                                                       ¦
¦      RECORD     [{IDENT|IDENTG}=(length,'name',input-location)]¦                      ¦
¦                 [,FIELD=([length],[{input-location|'literal'}],¦                      ¦
¦                      [conversion],[output-location])]                                 ¦
¦                 [,FIELD=..¦]                                                          ¦ 
¦                 [,LABELS=n]                                                           ¦
¦                                                                                       ¦
¦---------------------------------------------------------------------------------------¦
+EXEMPLE 1-copie simple de fichier -----------------------------------------------------+
//STEP1    EXEC PGM=IEBGENER
//SYSPRINT DD  SYSOUT=*
//SYSUT1   DD  DSN=le.fichier.en.entree,DISP=....
//SYSUT2   DD  DSN=le.fichier.en.sortie,
//             DISP=(,CATLG),
//             SPACE=(TRK,(10,10))
//SYSIN    DD  DUMMY
+---------------------------------------------------------------------------------------+
+EXEMPLE 2-copie simple de fichier -----------------------------------------------------+
//STEP1    EXEC PGM=IEBGENER
//SYSPRINT DD  SYSOUT=*
//SYSUT1   DD  DSN=le.fichier.en.entree,DISP=....
//SYSUT2   DD  DSN=le.fichier.en.sortie,
//             DISP=(,CATLG),
//             SPACE=(TRK,(10,10))
//SYSIN    DD  *
a faire
+---------------------------------------------------------------------------------------+

IEBIMAGE

IEBIMAGE est un utilitaire qui permet de maintenir (création et/ou modification) l'environnement PRINTER des 3800 et 4248.
Voir la documentation originale

IEBISAM

IEBISAM est un programme de copie de fichier format "ISAM", méthode d'accès obsolète.
Voir la documentation originale

IEBPTPCH

IEBPTPCH est un utilitaire permettant de "PUNCHER" ou d'imprimer tout ou partie d'in fichier séquentiel ou d'un PDS. Pour la plupart de ces opérations, il est plus facile d'utiliser SORT ou IDCAMS.

+DOC------------------------------------------------------------------------------------+
¦                                                                                       ¦
¦      PRINT|PUNCH [PREFOM={A|B}]                                                       ¦
¦                  [,TYPORG={PS|PO}]                                                    ¦
¦                  [,TOTCONV={XE|PZ}]                                                   ¦
¦                  [,CNTRL={n|1}]                                                       ¦
¦                  [,STRTAFT=n]                                                         ¦
¦                  [,STOPAFT=n]                                                         ¦
¦                  [,SKIP=n]                                                            ¦
¦                  [,MAXNAME=n]                                                         ¦
¦                  [,MAXFLDS=n]                                                         ¦     
¦                  [,MAXGPS=n]                                                          ¦
¦                  [,MAXLITS=n]                                                         ¦
¦                  [,DBCS={YES|NO}]                                                     ¦
¦                  [,INITPG=n]                                                          ¦
¦                  [,MAXLINE=n]                                                         ¦
¦                  [,CDSEQ=n]                                                           ¦
¦                  [,CDINCR=n]                                                          ¦
¦                                                                                       ¦
¦       TITLE      ITEM=('title'[,output-location])                                     ¦
¦                                                                                       ¦
¦       MEMBER     NAME=member                                                          ¦
¦                                                                                       ¦
¦       RECORD     [IDENT=(length,'name',input-location)]                               ¦
¦                  [,FIELD=(length,[input-location],[conversion],output-location])]     ¦
¦                  [,FIELD.....]                                                        ¦
¦                                                                                       ¦
¦       LABELS     [CONV={PZ|XE}]                                                       ¦
¦                  [,DATA={YES|NO|ALL|ONLY]}                                            ¦
¦                                                                                       ¦
¦---------------------------------------------------------------------------------------¦
+EXEMPLE-impression d'un PDS------------------------------------------------------------+
//STEP1    EXEC PGM=IEBPTPCH
//SYSPRINT DD  SYSOUT=*
//SYSUT1   DD  DSN=le.fichier.en.entree,DISP=....
//SYSUT2   DD  SYSOUT=*
//SYSIN    DD  *
PRINT TYPORG=P0,MAXNAME=1,MAXFLDS=1
RECORD FIELD=(80)
+---------------------------------------------------------------------------------------+

IEBUPDATE

IEBUPDATE permet de créer ou modifier des PDS. Ce programme ne travaille qu'avec des fichiers ayant comme format "LRECL=80,RECFM=FB".
IEBUPDATE est surtoututilisé pour transporter des programmes ou des jcls d'un site à un autre.Mais il a tendance à être remplacé par d'autres utilitaires plus pratiques et plus simples.

+DOC---------------------------------------------------------------------+
¦ ./[label]   ¦ {ADD|CHANGE| ¦ [LIST=ALL]                                ¦
¦             ¦   REPL|REPRO}¦ [,SEQFLD={ddl|(ddl,ddl)}]                 ¦
¦             ¦              ¦ [,NEW={PO|PS}]                            ¦
¦             ¦              ¦ [,MEMBER=membername]                      ¦
¦             ¦              ¦ [,COLUMN={nn|1}]                          ¦
¦             ¦              ¦ [,UPDATE=INPLACE]                         ¦
¦             ¦              ¦ [,INHDR=routinename]                      ¦
¦             ¦              ¦ [,INTLR=routinename]                      ¦
¦             ¦              ¦ [,OUTHDR=routinename]                     ¦
¦             ¦              ¦ [,OUTTLR=routinename]                     ¦
¦             ¦              ¦ [,TOTAL=(routinename,size)]               ¦
¦             ¦              ¦ [,NAME=membername]                        ¦
¦             ¦              ¦ [,LEVEL=hh]                               ¦
¦             ¦              ¦ [,SOURCE=x]                               ¦
¦             ¦              ¦ [,SSI=hhhhhhhh]                           ¦
¦             ¦              ¦                                           ¦
+------------------------------------------------------------------------+
¦ ./[label]   ¦ {NUMBER|     ¦ [SEQ1={cccccccc|ALL}]                     ¦
¦             ¦   DELETE}    ¦ [,SEQ2=cccccccc]                          ¦
¦             ¦              ¦ [,NEW1=cccccccc]                          ¦
¦             ¦              ¦ [,INCR=cccccccc]                          ¦
¦             ¦              ¦ [,INSERT=YES]                             ¦
¦             ¦              ¦                                           ¦
+------------------------------------------------------------------------¦
¦ ./[name]    ¦ LABEL        ¦                                           ¦
+------------------------------------------------------------------------+
¦ ./[label]   ¦ ALIAS        ¦ NAME=aliasname                            ¦
+------------------------------------------------------------------------+
¦ ./[label]   ¦ ENDUP        ¦                                           ¦
+------------------------------------------------------------------------+
+EXEMPLE, ajout de membres dans un PDS--------------------------------------------------+
//STEP1    EXEC PGM=IEBUPDTE,PARM=MOD
//SYSPRINT DD  SYSOUT=*
//SYSUT2   DD  DSN=un.pds,DISP=OLD
//SYSIN    DD  DATA
./        ADD   NAME=MEMB1,LEVEL=00,SOURCE=0,LIST=ALL
(Coder ici votre jcl pour memb1)

./        ADD   NAME=MEMB2,LEVEL=00,SOURCE=0,LIST=ALL

(Coder ici votre jcl pour memb2)

./        ADD   NAME=MEMB3,LEVEL=00,SOURCE=0,LIST=ALL

(Coder ici votre jcl pour memb3)
./      ENDUP
/*
+---------------------------------------------------------------------------------------+

IEHINITT

IEHINTT est l'utilitaire permettant d'initaliser des bandes magnétiques sur une ou plisieurs unités. Ce programme est normalement protégé par RACF car son utilisation sans précautions peut être désastreuse.
Attention aux programmes de gestion de magnétothèque (CA1, TLMS, CONTROL-M,...), ils peuvent imposer certaines contraintes d'utilisation.

+------------------------------------------------------------------------+
¦ ddname      ¦ INITT        ¦ SER=serial number                         ¦
¦             ¦              ¦ [,DISP={REWIND|UNLOAD}]                   ¦
¦             ¦              ¦ [,OWNER='name']                           ¦
¦             ¦              ¦ [,NUMBTAPE={n|1}]                         ¦
¦             ¦              ¦ [,LABTYPE=AL]                             ¦
¦             ¦              ¦ [,VERSION={3|4 }]                         ¦
¦             ¦              ¦ [,ACCESS=c]                               ¦
+------------------------------------------------------------------------+
+EXEMPLE, init d'1 k7 3480  ------------------------------------------------------------+
//STEP1    EXEC PGM=IEHINITT
//SYSPRINT DD  SYSOUT=*
//LABEL    DD  UNIT=(3480,DEFER)
//SYSIN    DD  *
LABEL   INITT  SER=001234,NUMBTAPE=1
/*
+---------------------------------------------------------------------------------------+

IEHLIST

IEHLIST est un programme qui permet de lister les entrées des VTOC ou de PDS. Pour imprimer le contenu d'un PDS ou d'une VTOC, le disque DOIT être alloué dans le jcl. Pour imprimer le contenu d'un PDS, il est préférable de passer par les outils ISPF.

+DOC---------------------------------------------------------------------+
¦ [label]     ¦ LISTPDS      ¦ DSNAME=(name[,name[,...]])                ¦
¦             ¦              ¦ [,VOL=device=serial]                      ¦
¦             ¦              ¦ [,{DUMP|FORMAT}]                          ¦
+------------------------------------------------------------------------+
¦ [label]     ¦ LISTVTOC     ¦ [{DUMP|FORMAT[,PDSESPACE]}]               ¦
¦             ¦              ¦ [,INDEXDSN=SYS1.VTOCIX.xxxx]              ¦
¦             ¦              ¦ [,DATE={dddyy|dddyyyy}]                   ¦
¦             ¦              ¦ [,VOL=device=serial]                      ¦
¦             ¦              ¦ [,DSNAME=(name[,name[,...]])              ¦
+------------------------------------------------------------------------+
+EXEMPLE, liste d'une VTOC -------------------------------------------------------------+
//STEP1    EXEC PGM=IEHLIST   /* 111111 est le volser */ 
//SYSPRINT DD  SYSOUT=*
//DD2      DD  UNIT=3390,VOLUME=SER=111111,DISP=OLD
//SYSIN    DD  *
LISTVTOC   FORMAT,VOL=3390=111111
/*
+---------------------------------------------------------------------------------------+

IEHMOVE

IEHMOVE n'est plus supporté par IBM. Utiliser DFDSS (ADRDSSU).

IEHPROGM

IEHPROGM est un programme qui permet de renommer ou effacer des fichiers. Il permet aussi quelques opérations sur les CVOL (vieux trucs dont je ne parle pas).
L'utilisation de ce programme est réservée aux spécialistes. Il est préférable de remplacer IEHPROGM par IDCAMS.

IFHSTATR

IFHSTATR est un programme qui imprime les "record de type 21 du SMF". Il n'y a pas de paramètres à coder pour cet utilitaire.

+EXEMPLE--------------------------------------------------------------------------------+
//STEP1    EXEC PGM=IFHSTATR
//SYSUT1   DD  DSNAME=le.fichier.smf,DISP=OLD
//SYSUT2   DD  SYSOUT=*
/*
+---------------------------------------------------------------------------------------+