ISPF : Recherche par type de caractères
27/03/11
Dans l’éditeur ISPF, il est possible de chercher une chaîne de caractère spécifique avec la commande FIND 'text', j’en parle dans les techniques utiles d’édition. Il est aussi possible de faire une recherche par type de caractère.
Il faut pour cela utiliser dans une sting P'' les caractère spéciaux ci-dessous qui représentent chacun un type de caractères :
. (Point) Caractère non affichable
^ (Circonflexe) Caractère non blank
# (Dièse) Caractère numérique
- (Tiret) Caractère non numérique
@ (Arobace) Caractère alphabétique
< (Plus petit) Caractère alphabétique minuscule
> (Plus grand) Caractère lphabétique majuscule
$ (Dollar) Caractère spéciaux ( : , ; = +)
Exemples :
FIND P’PPD##T’. On trouvera PPD01T, PPD02T, PPD21T…
FIND P'$####'. On trouvera #4123, (2000, ’0001 …
FIND P’^’ 72. Y a-t-il un caractère en colonne 72 du dataset ?
Attention au codepage de votre terminal, certains caractères spéciaux peuvent différer.
[Edit] Voir aussi les exemples d’usage avec CHANGE dans le commentaire de HUG
DFSORT : Appareillage simple avec JOINKEYS
30/12/10
Depuis un mois je bouffe des analyses dans tous les sens pour comparer des données applicatives qui sont en déphasage avec celles transmises par des référentiels du SI. Pour appareiller 2 fichiers, un programme cobol c’est très bien, mais quand la réponse est attendue 2 heures auparavant, et bien c’est pas gagné avec les changements de copybook, recompilation, gestion de versions…
DFSORT permet, depuis les PTFs UK51706 et UK51707 de novembre 2009, de faire des appareillages simples très efficaces, facilement maintenables et très performants. Je trouve que c’est une solution idéale pour créer de petites moulinettes de derrière les fagots, qui en 2 temps 3 mouvements vous rendront beau et désirable par n’importe quelle Maîtrise d’ouvrage soucieuse d’avoir son analyse dans l’heure!
Une petite explication avec exemple vous fera le plus grand bien :
Soit le fichier F1 provenant du SI avec un identifiant garantie sur 22 positions débutant en colonne 15 et F2 le déchargement d’une table applicative avec l’identifiant garantie sur 22 positions débutant en colonne 2. La clé d’appareillage est l’identifiant garantie. On veut enrichir le fichier F1 avec une donnée du fichier F2 qui se trouve en colonne 35 sur 2 positions (l’état de la garantie par exemple).
//STEPJOIN EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//F1 DD DSN=MON.FICHIER.UNLOAD,DISP=SHR
//F2 DD DSN=MON.FICHIER.SI,DISP=SHR
//SORTOUT DD SYSOUT=*
//SYSIN DD *
JOINKEYS FILE=F1,FIELDS=(15,22,A),SORTED
JOINKEYS FILE=F2,FIELDS=(2,22,A),SORTED
REFORMAT FIELDS=(F1:1,70,F2:35,2)
/*
Cet appareillage est l’équivalent d’un INNER JOIN en SQL. Si vous souhaitez obtenir l’équivalent d’un LEFT, d’un RIGHT ou d’un FULL OUTER JOIN, il existe une fonction JOIN qui permet de les réaliser :
JOIN UNPAIRED <---FULL
JOIN UNPAIRED,F1 <---LEFT
JOIN UNPAIRED,F2 <---RIGHT
Si vos fichiers sont triés selon la clé d’appareillage, SORTED permet d’indiquer à DFSORT ne pas retrier les fichiers (gain de perf) et NOSEQCK l’empêche de vérifier que vous ne mentez pas.
Plus d’info, d’explication, d’exemple et de détail sur la doc officielle IBM : SORTUGPG – User Guide for DFSORT PTFs UK51706 and UK51707 by Frank Yaeger [Attention accès via FTP, un proxy d'entreprise peut interdire l'accès à ce lien].
DFSORT : Meilleures compréhension et maintenabilité grâce aux symboles
30/08/10
Coder un step de tri par DFSORT ou ICETOOL, c’est pas bien compliqué. L’accumulation de plusieurs steps dans différents jobs avec réutilisation du même jeu de donnée partiel ou complet, c’est beaucoup moins rigolo… surtout s’il faut les faire évoluer dans le cadre d’un changement de format de données en entrée.
C’est la qu’interviennent les “symboles” qui nous permettent de coder cette forme classique peu explicite,
SORT FIELDS=(3,3,CH,A,6,32,CH,A)
En quelque chose de plus sexy, compréhensible et de haute maintenabilité :
SORT FIELDS=(CODE,A,LIBELLE,A)
Les symboles CODE et LIBELLE doivent être déclarés dans une carte SYMNAMES (symbols names) de la manière suivante :
//SYMNAMES DD *
CODE,3,3,CH
LIBELLE,6,32,CH
/*
La taille limite d’un symbole est de 50 caractères alphanumériques, le tiret (-) et l’underscore (_) sont acceptés. Code_Situation_Juridique est un symbole valide.
Les symboles sont sensibles à la casse, Code_Situation_Juridique est différent de Code_situation_juridique.
Je suis sûr que vous voyez maintenant tout le potentiel de ces symboles et que vous n’hésiterez pas à les utiliser.
Storage Administration z/OS Pocket Reference 1.9
24/08/10
Storage Administration z/OS Pocket Reference 1.9 est un mémento de référence sur le stockage sous z/OS proposé par DTS Software. On y trouve plein d’informations utiles : capacité des disques, calcul d’espace disque, de blocksize, limites des datasets VSAM/non-VSAM, informations SMS, etc.
Voici le sommaire complet de ce document :
Common Out-Of -Space Error Codes
DASD Device Information.
VTOC DSCB Types
DASD Device Capacities
Dataset / Device Type Codes
Tape Label Processing
EXPDT Conventions
Volume Mounting and Usage
Non-SMS DASD Volume Use Attributes
Volume Mount Attributes
Mount Volume on Unit
Blocksizes and Capacities
3390 Device Space Calculation
3390 Blocksize Chart
3390 Blocksize Chart – 3380 Comp. Mode
Dataset Limits.
DFSMSdss Information
Logical Dump
Logical Restore
Filtering
FDRABR Information
Full or Incremental Backup
Dataset Restore from Backup
SELECT Statement for Restore from Backup
DFSMShsm Information.
Delete Migrated Dataset with
Missing/Damaged MCD Record
DFSMShsm ADDVOL Command
DFSMShsm QUERY Command
TSO Commands for DFSMShsm
Useful Console Commands.
Display SMS Subsystem Information
Activate an SMS Configuration
Display / Alter Volume and Storgrp Status
Display Linklist, APF libraries, Dynamic Exits
Add Dataset to Linklist
Free a Linklisted Dataset
APF-Authorize a Load Library
Set SMS Subsystem Options
Display SMF Dataset Names
Display SMF Options
Display Device Information
Display System Configuration Information
SMS and OAM/LCS Console Commands
RACF Information
DFSMSdss Facility Class Profiles
ABARS FACILITY Class Profiles
Storage Admin Cmd & Keyword Profiles
Other RACF Resources.
VSAM / IDCAMS Information
Delete Orphan VVDS Record
Recatalog a VSAM Cluster
Delete Catalog Entry
Print Contents of VVDS
SMS Subsystem Information
Data Class Attributes
Storage Class Attributes
Management Class Attributes
Storage Group Attributes
Automatic Class Selection Variables
Dataset Naming Conventions.
DFSMShsm Tape Dataset Naming Convention
SYS1.PARMLIB members.
APAR Status Codes
APAR Resolution Codes
PTF Closing Codes
ACC/SRS Allocation and Error-Prevention Rules
General Purpose Register
Standard 72-Byte Save Area
144-Byte Save Area
208-Byte Save Area
Julian Perpetual Calendar – Non-Leap Years
Julian Perpetual Calendar – Leap Years
EBCDIC – to – Hex Character Conversion Chart
[A] Vocabulaire, abréviation et acronyme Mainframe
16/07/10
Pensez à jeter un coup d’oeil au mode de fonctionnement de cet abécédaire.
ABEND (abnormal end) : fin anormale d’un programme ou d’un traitement due à une erreur.
ACB (Access Control Block) : bloc de contrôle des méthodes d’accès VSAM et VTAM. Equivalent du DCB.
ACID (Atomicity, Consistency, Isolation, Durability) : caractéristiques que doit respecter une transaction (atomique, cohérente, isolée et durable).
ACL (Automatic Cartridge Loader) : chargeur automatique de support bande (cassettes/cartouche).
ACR (Alternate CPU Recovery) : transfert de contrôle d’un processeur défaillant à un autre processeur.
ACS (Automatic Class Selection) : routines qui déterminent le profil d’un fichier en SMS.
AIX (Advanced Interactive eXecutive) : Système IBM (Mainfraime) basé sur UNIX.
AMODE (Addressing mode) : mode d’adressage des programmes (24 ou 31 bits).
AMS (Access Method Services) : langage de commande pour la gestion des fichiers VSAM (programme IDCAMS).
APAR (Authorized Program Analysis Report) : correction d’une erreur logicielle, livrée par IBM et applicable par SMP.
APF (Authorized Program Facility) : possibilité de déclarer un programme ou une bibliothèque de modules “autorisé” à émettre des instructions privilégiées .
APG (Automatic Priority Group) : ensemble des priorités de distribution contrôlées par SRM.
API (Application Programming Interface) : ensemble de fonctions, procédures ou classes mis à disposition d’un programme.
ARM (Automatic Restart Manager) : Permet de relancé systématiquement DB2 en cas d’abend.
ARMIDE : outil permettant la gestion de LOV (liste de valeurs) à l’image des base de données hiérarchique.
AS/400 (Application System/400) : Gamme d’ordinateur comprise entre les Mainframe et les PC, ils sont généralement utilisés par les PME. Actuellement on parle de System i.
ASCB (Address-Space Control Block) : bloc de contrôle représentant un espace-adresse.
ASCII (American standard Code for Information Interchange) : norme de codage des caractères, code binaire à 7 éléments.
ASID (Address-Space Identifier) : numéro affecté à un espace-adresse.
ASM (Auxiliary Storage Manager) : Un des trois composants de gestion mémoire de MVS, gestionnaire de la mémoire auxiliaire.
ASM : Abréviaton d’Assembleur, langage informatique de bas niveau (proche langage machine).
Asynchrone : qualifie des traitements d’échange d’information qui ne surviennent pas simultanément. La mise en œuvre de tels traitements peuvent passer par la mise en place de files d’attente, le premier traitement “poste” les informations dans la file d’attente, le second traitement les “consomme” au fur et à mesure.
Vocabulaire, abréviation et acronyme
15/07/10
Il faut bien reconnaître que dans notre univers nébuleux z/OS nous utilisons parfois (souvent!?) un vocabulaire abscons. Récemment, j’ai bien était incapable de donner la signification de TP Transaction Processing. Bhouhouuuouuuuuuuu!
Voilà pourquoi j’initie cette nouvelle catégorie vocabulaire à laquelle vous allez pouvoir (devoir) participer.
Les règles du jeu sont les suivantes : je mets en ligne, une fois par semaine, un article par lettre, si vous avez un complément d’information, un mot ou une définition à ajouter ou rectifier, laisser un commentaire à la suite de l’article en question. Après vérification ou confiance aveugle je modifierais le glossaire en fonction de votre remarque. Lorsque ce glossaire semblera stable, j’en ferais un PDF téléchargeable.
J’allai oublier, pensez à mettre l’url de votre blog/site dans le commentaire si vous souhaitez une mention vers celui-ci.
Ci-dessous la liste des entrées disponibles :
ISPF : ISRDDN Current Data Set Allocations list
21/04/10
Lorsque vous vous connectez à une session TSO, vous utilisez couramment les commandes TSO implémentées.
Elles peuvent être développées par l’équipe Support (faciliter la navigation dans un source cobol, visualiser le contenu d’un DSN dans un JCL), par un fournisseur de logiciel (FABATCH pour invoquer File-Aid Batch en tâche de fond, F1 pour browser directement un fichier avec File-Aid, QW pour appeler QUICKREF), ou par vous-même si vous savez coder en REXX ou CLIST.
Mais comment TSO connaît-il l’existence de ces commandes et où trouve-t-il leur source ?
Lorsque vous vous connectez à votre session TSO, le système pré-alloue un grand nombre de dataset et en particulier ceux nécessaires au bon fonctionnement des applications ISPF : SYSEXEC, SYSPROC, ISPCLIB, ISPPLIB, ISPSLIB, ISP*… C’est en scannant ces datasets particuliers que TSO peut lancer la commande invoquée.
Tout comme TSO, il vous est possible de scanner ces datasets, d’une part pour connaître leur DSN et d’autre part pour trouver le source d’une commande. Pour cela il existe une commande TSO que j’oublie souvent, cet article aura le mérite de me la rappeler
:
TSO ISRDDN
Vous obtiendrez le panel “Current Data Set Allocations” contenant la liste des DDnames alloués et leur DSN.
Pour trouver le source d’une CLIST, d’un REXX, d’un panel, d’un skeleton ou autre, il suffit de saisir en ligne ===>Command :
M nom_du_membre_recherché
Tout cela est bien pratique pour connaître le PDS où sauvegarder ses outils projet développés en REXX ou CLIST.
Pour aller plus loin :
- ISPF zOS User’s Guide Vol I V1R9 Appendix G. ISRDDN diagnostic utility, P. 213
- Using TSO ISRDDN and REXX to organize your automations
- Le forum DVP z/OS ici, là et là.
Bonne lecture.
Journée sans informaticien à la SNCF
1/04/10
Pour comprendre, direction le blog de la lutte contre la délocalisation de l’informatique de SNCF et un article condensé dans LemagIT
NB : Je ne travaille pas à la DSIT, mais je comprend leur combat.
Alternatives et débranchements, application des lois de De Morgan
19/03/10
Je ne vais pas vous expliquer ici la théorie logique du calcul des propositions, j’en serais bien incapable, mais je vais vous faire un rappel important concernant l’application des lois de De Morgan car elles sont source d’erreur pour tout développeur débutant.
Lois de De Morgan :
La négation de la conjonction de deux propositions est équivalente à la disjonction des négations des deux propositions.
La négation de la disjonction de deux propositions est équivalente à la conjonction des négations des deux propositions.
Autrement dit:
non (A ou B) = non A et non B
non (A et B) = non A ou non B
Il faut donc être vigilant dans un programme si vous êtes amené à coder un test sur des non-conditions multiples.
Prenons par exemple le cas d’un test pour lequel la situation familiale doit être différente de “célibataire” ou différente de “veuf” ou différente de “marié”, vous serez sans doute tenté de coder comme suit:
IF SITU-FAMILLE NOT = ‘C’ OR
SITU-FAMILLE NOT = ‘V’ OR
SITU-FAMILLE NOT = ‘M’
[...]
END-IF.
En fait vous aurez tout faux car avec la loi de dualité vue plus haut, il aurait fallu coder ainsi:
IF SITU-FAMILLE NOT = ‘C’ AND
SITU-FAMILLE NOT = ‘V’ AND
SITU-FAMILLE NOT = ‘M’
[...]
END-IF.

[Source : © nojhan 2010-03-17 - Geekscottes]
DB2 : Redbooks et Redpapers
10/03/10
Je viens de rajouter dans la page des ressources DB2 les Redbooks et Redpapers IBM liés à la version 9, vous y trouverez les liens directs vers les docs PDF suivants :
Redbooks
Version 9
Redpapers
Version 9
Commentaires
Il y a 14 jours 7 heures
Il y a 29 jours 6 heures
Il y a 53 jours 8 heures
Il y a 64 jours 8 heures
Il y a 86 jours 6 heures