ISPF : Recherche par type de caractères


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


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


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.

Source : IBM Redbooks | Batch modernization on z/OS

Storage Administration z/OS Pocket Reference 1.9


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


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


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


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 :

Bonne lecture.

Journée sans informaticien à la SNCF


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


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.

« Branchement conditionnel »
[Source : © nojhan 2010-03-17 - Geekscottes]

DB2 : Redbooks et Redpapers


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

  • DB2 9 for z/OS: Using the Utilities Suite
  • DB2 9 for z/OS: Resource Serialization and Concurrency Control
  • DB2 9 for z/OS: Distributed Functions
  • DB2 9 for z/OS: Packages Revisited
  • DB2 9 for z/OS: Deploying SOA Solutions
  • Enterprise Data Warehousing with DB2 9 for z/OS
  • DB2 9 for z/OS Stored Procedures: Through the CALL and Beyond
  • Best Practices for SAP BI using DB2 9 for z/OS
  • IBM DB2 9 for z/OS: New Tools for Query Optimization
  • DB2 9 for z/OS Performance Topics
  • Enhancing SAP by Using DB2 9 for z/OS
  • DB2 9 for z/OS Technical Overview
  • LOBs with DB2 for z/OS: Stronger and Faster
  •  

    Redpapers

    Version 9

  • DB2 9 for z/OS: Configuring SSL for Secure Client-Server Communications
  • DB2 9 for z/OS: Buffer Pool Monitoring and Tuning
  • DB2 9 for z/OS: Backup and Recovery I/O Related Performance Considerations
  • DB2 9 for z/OS Data Sharing: Distributed Load Balancing and Fault Tolerant Configuration
  • DB2 for z/OS: Considerations on Small and Large Packages
  • Index Compression with DB2 9 for z/OS
  • How does the MIDAW Facility Improve the Performance of FICON Channels Using DB2 and other workloads?
  • Disk Storage Access with DB2 for z/OS
  •