• Aucun résultat trouvé

Modernisation et développement d applications IBM i

N/A
N/A
Protected

Academic year: 2022

Partager "Modernisation et développement d applications IBM i"

Copied!
221
0
0

Texte intégral

(1)

Modernisation et développement d’applications IBM i

Stratégies, technologies et outils

16 et 17 mai 2011 – IBM Forum de Bois-Colombes

Session plénière – Lundi 16 mai – 10h00/13h00 Philippe Bourgeois - [email protected]

(2)

2 © IBM France 2011

Objectifs du séminaire des 16 et 17 mai 2011

ƒ Faire le point sur les différentes aspects de la modernisation des applications IBM i

ƒ Découvrir ou approfondir les technologies et outils

disponibles pour moderniser et développer des applications IBM i :

Solutions Rational

Modernisation de la base de données DB2

Evolution du RPG et de SQL

Support du XML, support des Services Web

Développement d’applications Web

Cartographie et réingénierie des applications traditionnelles

etc.

(3)

Agenda

ƒ

Lundi 16 mai

– 9h30 accueil café

– 10h00-13h00 session plénière – 13h00-14h00 déjeuner

– 14h00-15h30 sessions à la carte (4 salles en parallèle) – 15h30-16h00 pause

– 16h00-17h30 sessions à la carte (4 salles en parallèle)

ƒ

Mardi 17 mai

– 09h00-10h30 sessions à la carte (4 salles en parallèle) – 10h30-11h00 pause

– 11h00-12h30 sessions à la carte (4 salles en parallèle) – 12h30-13h30 déjeuner

– 13h30-15h00 sessions à la carte (4 salles en parallèle) – 15h00-15h30 pause

– 15h30-17h00 sessions à la carte (4 salles en parallèle)

(4)

4 © IBM France 2011

Intervenants - GAIA

ƒ

Expertise et conseil

– Système (migration, optimisation…)

– Développement (méthodologie, assistance…)

– Accompagnement (conduite du changement, support aux équipes…)

ƒ

Formation

– Inter-entreprises et sur site

– Plus de 150 cours (IBM i, Lotus Domino, Java, WebSphere, technos Web, PHP…)

ƒ

Base de connaissances Web (KNOW400 (www.know400.gaia.fr))

– RPG IV, ILE, Services Web, SQL, exploitation, système…

ƒ

http://www.gaia.fr/ - [email protected]

(5)

Intervenants - VOLUBIS

ƒ

Formation IBM i, depuis 1994

– Formation débutant (12 jours) 2 à 3 fois par an – Formations perfectionnement à la demande :

RPG-IV, format libre, ILE, intégration avec C / Java SQL, conception, administration, développement Apache, PHP, OmniFind... (volubis.fr est sur un M25)

Et toute formation « sur mesure » que vous pourriez nous demander

ƒ

Base de connaissance technique accessible via abonnement (aide par mail incluse) et comprenant près de 500 cours : AF400.

ƒ

Conseil, réunions d’information technique (pause-café), forum

ƒ

http://www.volubis.fr - [email protected]

(6)

6 © IBM France 2011

Intervenants - ASTECH

ƒ Au service des acteurs du marché (ISV, Partenaires Commerciaux IBM, SSII / intégrateurs, …) pour eux-mêmes et pour leurs clients

ƒ Prestations de “Conseil/Audit”, “Assistance Technique/Réalisation” ou

“Formation/Transfert de compétences”, au forfait ou en régie

ƒ Types de prestations

Formations techniques et commerciales

Exemple : Certifications IBM

Applications & Technologies

Logiciels Libres (“open source”)

Portage & “roadmaps” modernisation d’applications

Méthodologie et outillage de Développement d’Applications Développement & Intégration “Mobile” (Blackberry, iPhone, …)

Infrastructures

Architecture & Optimisation des infrastructures informatiques Performances (Java, DB2, …)

Sécurité (Audit, Haute Disponibilité & PRA, Single Sign On, …) Informatique “Verte” : maîtrise et reduction des coûts énergétiques

ƒ ASTECH Europe S.A.S - Pascal Thenon / [email protected]

(7)

Intervenants – ZEND

ƒ Zend a été sélectionné par IBM depuis 2006 pour mettre en oeuvre PHP sous IBM i

ƒ Mission de Zend : professionnaliser et industrialiser

l’utilisation de la technologie PHP pour développer des applications critiques d’entreprise :

Commercialisation de l’offre produits Zend (Zend Server, Zend Studio, Zend Guard…)

Services d’expertise (expertise technique PHP et Zend, conseil en architecture, audits de code, audits de performance…)

Formation (partenaire IBM)

Animation des communautés PHP et Open Source

(8)

8 © IBM France 2011

Intervenants - ARCAD Software

ƒ Editeur français spécialisé dans l’ALM (Application Lifecyle Management) :

Gestion de configuration

Release management

Analyse/Transformation d’applications

Automatisation des tests

Gestion du support technique

ƒ 19 ans, 330 clients, 33 pays

ƒ Double compétence System i – Systèmes ouverts

ƒ Partenaire technologique Rational

ƒ Intégrateur du produit RDp (Rational Developer for Power

Systems)

(9)

Intervenants - DATABOROUGH

ƒ Spécialiste de la cartographie, documentation et réingénierie des applications IBM i depuis plus de 25 ans

Modélisation et références croisées automatiques des données et processus

Extraction des règles métier, design d’application

Extraction de données (sous-ensembles, jeux de test, anonymisation…)

Modernisation et restructuration automatisée des applications classiques (DDL, SQL, MVC)

Commencer par ce qui marche

Make it known Make it better Make it last

(10)

10 © IBM France 2011

Que signifie aujourd’hui pour vous ?

OS/400, i5/OS V5Rx IBM i 7.1 et 6.1

DB2 – PF/LF DB2 - SQL

RPG/400

ILE RPG IV

Programmes Procédures ILE

CLP

ILE CL Query/400

DB2 Web Query

System i Access for Web HATS

IBM Systems Director Navigator for i Java

PHP

Procédures stockées Omnifind

AIX, Linux SEU/PDM

5250 Virtualisation

Cryptage

XML PDF

Disques SSD

RPG Open Access Rational Services Web

Serveur d’applications intégré BLOB WebSphere

Format libre

EGL CGI PASE

(11)

Les différents aspects de la modernisation

ƒ 1. Moderniser l’infrastructure (matériel / OS)

ƒ 2. Moderniser la base de données DB2

ƒ 3. Moderniser les environnements de développement

ƒ 4. Moderniser le code RPG/COBOL

ƒ 5. Moderniser l’interface utilisateur

ƒ 6. Pour aller plus loin

(12)

12 © IBM France 2011

1. Moderniser l’infrastructure

(matériel / OS)

(13)

Moderniser l’infrastructure (matériel / OS)

ƒ Roadmap processeurs POWER – Gamme IBM Power Systems

ƒ Roadmap IBM i

ƒ Comparaison POWER5 / POWER7

ƒ Que peuvent m’apporter les versions 6.1 et 7.1 de l’IBM i ?

ƒ Bénéfices de la virtualisation – POWER6/7 – IBM i 6.1/7.1

ƒ Pour en savoir plus

(14)

14 © IBM France 2011

Roadmap processeurs POWER – Gamme IBM Power Systems

POWER4 POWER5 POWER6 POWER7 POWER8

2001 2004 2007 2010

Power 770 Power 750

Power 795

Power 720/740 Power 710/730

Power 780

PS Blades

(15)

Roadmap IBM i

2008 2010 2011-13

« Technology Refresh »

Plus simple à installer et moins pertubateur IBM i 6.1

IBM i 6.1.1

IBM i 7.1

IBM i jusqu’en 2020

(16)

16 © IBM France 2011

Comparaison POWER5 / POWER7

(17)

Que peuvent m’apporter les versions 6.1 et 7.1 de l’IBM i?

ƒ IBM i 6.1

Les partitions IBM i virtuelles

Le support de l’IBM i sur des lames POWER de chassis Blade Center De nouvelles solutions de haute disponibilité (PowerHA)

Le support des disques SSD

La possibilié d’upgrader un serveur en 6.1 à partir d’une image sur le réseau Une amélioration des performances Java (JVM 32 bits et nouvelle JVM 64 bits) Une amélioration de la sécurité (cryptage des données…)

Une nouvelle interface graphique Web « IBM Systems Director Navigator for IBM i » (console de gestion de l’IBM i)

Des nouveautés SQL et RPG, le produit RPG Open Access

ƒ IBM i 7.1

Le support XML en natif dans DB2

Le cryptage des données DB2 au niveau colonne

Le déplacement automatique des données les plus sollicitées vers les disques SSD Des nouveautés SQL et RPG

Une amélioration des performances du serveur de Services Web intégré Une amélioration ans les domaines de la virtualisation et de PowerHA

(18)

18 © IBM France 2011

Bénéfices concrets de la virtualisation – POWER6/7 et IBM i 6.1/7.1

ƒ

Vous êtes en 6.1 et désirez tester la 7.1 à moindres frais

– Hébergement d’une partition IBM i dans une partition IBM i

La partition IBM i utilise des ressources d’entrée/sortie fournies par une autre partition IBM i

Moins de cartes et de disques à acheter pour l’ensemble des partitions IBM i Une partition IBM i 6.1 peut héberger une partition IBM i 7.1 ou 6.1 et

réciproquement

ƒ

Vous désirez consolider des environnements IBM i de petite taille en optimisant les ressources

– Virtualisation d’une partition IBM i dans une partition VIOS

La partition IBM i utilise des ressources d’entrée/sortie fournies par une partition VIOS (Virtual I/O Server), composant de PowerVM

Possibilité de partitions VIOS redondantes

Configuration et coûts de maintenance optimisés tout en restant sur un même modèle de serveur Power

(19)

Moderniser l’infrastructure – Pour en savoir plus - Web

(20)

20 © IBM France 2011

Moderniser l’infrastructure – Pour en savoir plus - Web

(21)

Moderniser l’infrastructure – Pour en savoir plus - Web

(22)

22 © IBM France 2011

Moderniser l’infrastructure – Pour en savoir plus - Web

(23)

Pour en savoir plus - Sessions

ƒ

S8IBM i : au delà des évidences ...

« Pourquoi IBM i en 2011 ? » : des pistes pour expliquer à son management (et sans langue de bois)

– Pascal Thenon (ASTECH) – Lundi 16 mai – 16h00

ƒ

S16 - Bénéfices concrets de la virtualisation

– Christian Massé (VOLUBIS) – Mardi 17 mai - 13h30

ƒ

S19 - Exemples d'utilisation de l'environnement UNIX sous IBM i : PASE

– Christian Massé (VOLUBIS) – Mardi 17 mai - 15h30

ƒ

S20 - Adopter une stratégie de sauvegarde adaptée à votre entreprise

– Pierre-Louis Berthoin (GAIA) – Mardi 17 mai – 15h30

(24)

24 © IBM France 2011

2. Moderniser la base

de données DB2

(25)

Moderniser la base de données DB2

ƒ Modernisation de DB2 = SQL

Modernisation des objets DB2

Modernisation des accès à DB2

ƒ Les interfaces « System i Navigator » et « IBM Systems Director Navigator for IBM i »

ƒ Pour en savoir plus

(26)

26 © IBM France 2011

Moderniser la base de données = SQL

ƒ Pourquoi SQL ?

Parce que c’est l’interface base de données stratégique pour l’industrie et pour l’IBM i

– SQL apporte des fonctionnalités très puissantes :

Fonctions scalaires, fonctions de colonne, groupage, sous-requêtes, etc.

– SQL est nécessaire pour certaines fonctions et middlewares :

Colonnes de type BLOB, XML…

Colonnes auto-incrémentées

Fonctions de cryptage des données Triggers au niveau des colonnes

Accès à DB2 à partir d’autres langages que RPG/COBOL (Java Æ JDBC…)

– Améliorations de performance avec le nouveau moteur SQL (SQE versus CQE) : uniquement disponible pour les interfaces SQL

Pour la portabilité du code et des compétences

Parce qu’il permet un meilleur positionnement du System i comme serveur base de données

Parce que les DDS n’évoluent plus depuis bien longtemps…

(27)

SQL évolue à chaque version d’IBM i

ƒ

Quelques nouveautés IBM i 6.1

– Fonctions OLAP pour créer des données agrégées selon plusieurs dimensions : GROUPING SETS, ROLLUP, CUBE

– Nouvelle clause SKIP LOCKED DATA pour sauter les lignes verrouillées – Création d’index : possibilité de définir un nom de format, d’ajouter des

colonnes, d’indiquer une clause WHERE et de définir des clés sur des zones dérivées

– Amélioration du moteur SQE

ƒ

Quelques nouveautés IBM i 7.1

– Support XML natif (colonnes de type XML, décomposition de documents XML en colonnes d’une table, génération de documents XML à partir de données)

– Cryptage de colonnes (opération transparente pour l’application)

– Variables globales, nouvelle instruction MERGE, support des tableaux SQL…

– Amélioration du moteur SQE

(28)

28 © IBM France 2011

Objets DDS

Objets SQL

Programmes natifs

Programmes SQL

La modernisation de DB2 avec SQL

*FILE

- PF-DTA - LF

*FILE

- PF-DTA - LF

1. Modernisation des objets DB2 2. Modernisation des accès à DB2

- Tables - Vues - Index

- Fichiers physiques - Fichiers

logiques

(29)

Modernisation des objets DB2

ƒ

Créer des tables SQL à la place des fichiers physiques DDS

– Une table SQL est un objet de type *FILE d’attribut PF-DTA, créé par l’ordre CREATE TABLE

– Avantages

D’avantage de types de données (INT, BLOB, XML…)

Possibilité de donner des noms plus longs aux tables et aux colonnes (jusqu’à 128 caractères) (en plus du nom court)

Zones auto-incrémentées (colonne IDENTITY ou objet SEQUENCE) Meilleures performances en lecture

Les contraintes peuvent être définies dans le source de définition de la table (en natif, il faut deux sources : un DDS et un CL)

Standard de l’industrie

Evolution permanente – Les DDS des PF sont stabilisées

– Inconvénients

Moins bonnes performances en écriture

Pas de support des multi-membres (mais possibilité de créer un ALIAS sur un membre particulier)

(30)

30 © IBM France 2011

Modernisation des objets DB2

ƒ Utiliser, dans les cas ou cela présente un intérêt, les vues SQL à la place des fichiers logiques DDS

Les vues SQL sont des objets de type *FILE d’attribut LF, créés par l’ordre CREATE VIEW

Avantages

– Plus de flexibilité en termes de sélection et de traitement des données

Fonctions de colonne (SUM, AVG, COUNT, MIN, MAX…) Fonctions scalaires (alphanumériques, de temps..)

Groupage (GROUP BY)

Tous types de jointure et d’unions Sous-requêtes

Vues de vues…

– Exemple :

CREATE VIEW total_rep_sin AS SELECT sin_typ_l, SUM(mnt_rep) as total_rep FROM sinistres s1 INNER JOIN types_sin s2 ON s1.sin_typ_n = s2.sin_typ_n GROUP BY s1.sin_typ_n,

sin_typ_l

(31)

Modernisation des objets DB2

ƒ Les vues SQL

Inconvénients

– Il n’est pas possible de définir une clé dans une vue

Les accès natifs en RPG ou COBOL à la vue ne pourront pas se faire sur clé

Seuls les accès SQL permettront de travailler sur clé (clause ORDER BY) Les programmes RPG/COBOL peuvent être modifiés pour faire des accès

SQL Æ SQL imbriqué dans les programmes

– Rappel : un fichier logique DDS peut s’appuyer sur des tables SQL

Il est donc possible de garder les structures des fichiers logiques DDS existants (en les recréant sur les nouvelles tables)

Afin de ne pas avoir à modifier les programmes RPG/COBOL existants

(32)

32 © IBM France 2011

Modernisation des objets DB2

ƒ Quelques mots sur les index SQL

Sont des objets de type *FILE d’attribut LF, créés par l’ordre CREATE INDEX

Un index SQL sert à améliorer les performances et peut servir à

assurer l’unicité (mais il est préférable de passer par une contrainte)

Jusqu’en i5/OS V5R4 :

– On ne peut définir que les valeurs de clé

CREATE INDEX sinpardate ON sinistres (sin_date)

A partir de la version 6.1 on peut définir un nom de format, spécifier

les zones, indiquer des critères de sélection et définir des clés sur

des zones dérivées

(33)

Modernisation des objets DB2

ƒ Comment passer du mode DDS au mode SQL ?

En générant, à partir des fichiers natifs (PF, LF), les instructions SQL correspondantes

– API QSQGNDDL – System i Navigator

Puis en exécutant ces instructions

A noter que :

– Toutes les fonctionnalités DDS ne sont pas supportées

Des messages d’information sont générés

– La conversion peut se faire pour un seul objet ou un ensemble d’objets – Le résultat peut être sauvegardé :

dans un fichier texte (pour une exécution par System i Navigator) dans un membre source (pour une exécution par la commande

(34)

34 © IBM France 2011

Modernisation des accès à DB2

ƒ A. SQL imbriqué dans les programmes

Mélange de SQL et de RPG/COBOL/C

Programmes de type SQLRPGLE, SQLRPG, SQLCBLLE, SQLCBL et SQLCLE

Nécessite le produit 57xx-ST1 (Kit Dév DB2 Query Mgr et SQL)

Principaux domaines d'utilisation :

– Traitements de masse

– Exploitation des fonctions SQL

– Requêtes complexes, avec critères de sélection dynamiques

(35)

Modernisation des accès à DB2

ƒ A. SQL imbriqué dans les programmes

SQL sans curseur, traitement de masse

SQL avec curseur, traitement ligne à ligne

(36)

36 © IBM France 2011

Modernisation des accès à DB2

ƒ Exemple de comparaison de performances

Lecture de 600.000 enregistrements en séquentiel

Programme 1 – Lecture RPG

– Résultat : 12 secondes

Programme 2 – Lecture SQL

– Résultat : 12 secondes

Programme 3 – Lecture

SQL

bloquée

– Résultat : 2 secondes

(37)

Modernisation des accès à DB2

ƒ

B. SQL procédural

– Procédures écrites en langage SQL

– Exécution par la commande SQL CALL

– Débogage par System i Navigator ou STRDBG

(38)

38 © IBM France 2011

L’interface System i Navigator

ƒ

System i Navigator

– System i Navigator est l’interface graphique de l’IBM i – Il est fourni en standard avec l’IBM i

ƒ

System i Navigator et la base de données

– Gestion des objets base de données

Tables, vues, index, procédures, journaux, contraintes, triggers…

Création, modification, suppression, droits, verrouillage, journalisation…

Visualisation et modification des données

– Exécution de scripts SQL

Sauvegarde en fichier texte ou membre source Débogage

– Organigrammes Database Navigator

– Moniteurs de performances SQL – Visual Explain – Assistant de gestion des index, centre de santé

(39)

System i Navigator – Base de données

(40)

40 © IBM France 2011

System i Navigator – DB - Génération d’instructions SQL

(41)

System i Navigator – DB – Création de table

(42)

42 © IBM France 2011

IBM i Navigator – DB – Exécution de scripts SQL

(43)

IBM i Navigator – DB – Organigramme Database Navigator

(44)

44 © IBM France 2011

L’interface « IBM Systems Director Navigator for i »

ƒ Console de gestion de l’IBM i

ƒ Reprend la majorité des fonctions de IBM i Navigator, mais en interface Web

ƒ Fourni en standard avec l’IBM i

IBM Systems Director Navigator for i (IBM i 6.1 et 7.1)

iSeries Navigator Tasks on The Web (i5/OS V5R4 – beaucoup moins de fonctionnalités)

ƒ Dans la catégorie “base de données” les fonctions suivantes ne sont pas supportées :

Scripts SQL

Assistants SQL

Database Navigator

Visual Explain

(45)

IBM Systems Director Navigator for i – Base de données

(46)

46 © IBM France 2011

IBM Systems Director Navigator for i – Base de données

(47)

DB2 et SQL – Pour en savoir plus - Formation

Prochaine session planifiée à Noisy : 23 mai

Centre de formation IBM de Noisy le Grand ou sur site client

(48)

48 © IBM France 2011

DB2 et SQL – Pour en savoir plus - Formation

Centre de formation IBM de Noisy le Grand ou sur site client

Prochaine session planifiée à Noisy : 24 mai

(49)

DB2 et SQL – Pour en savoir plus - Redbooks

(50)

50 © IBM France 2011

DB2 et SQL – Pour en savoir plus – White Papers

(51)

DB2 et SQL – Pour en savoir plus - Sessions

ƒ

S3SQL embarqué : profitez de la puissance de SQL dans votre RPG

– Nathanaël Bonnet (GAIA) – Lundi 16 mai – 14h00

ƒ

S6 – DB2, nouveautés 6.1 et 7.1

– Christian Massé (VOLUBIS) – Lundi 16 mai – 16h00

ƒ

S11 – La modernisation de la base de données DB2 : passage des DDS à SQL

– Nathanaël Bonnet (GAIA) – Mardi 17 mai – 09h00

ƒ

S13 – Comment utiliser au mieux les types de données récents ?

– Christian Massé (VOLUBIS) – Mardi 17 mai – 11h00

(52)

52 © IBM France 2011

3. Moderniser les environnements de développement

- Introduction aux produits Rational

- Rational Developer for Power Systems (RD Power)

- Rational Team Concert (RTC)

(53)

Introduction aux produits Rational

ƒ Un ensemble de produits pour développer des applications pour IBM Power Systems (sous IBM i, AIX et Linux) :

RD Power - Rational Developer for Power Systems Software – V8.0.0.2

RPG and COBOL Development Tools for i COBOL Development Tools for AIX

C/C++ Development Tools for AIX

C/C++ Development Tools for Linux on Power

RAD - Rational Application Developer – V8.0.2

Développement d’applications J2EE, Services Web, portail – Version SE (Standard Edition)

RBD - Rational Business Developer – V8.0.1.1

Développement d’applications EGL (Enterprise Generation Language) : applications métier en interface Web / Web 2.0 et Services Web

RDi SOA – Rational Developer for IBM i for SOA construction – V8.0

Combinaison de RD Power RPG and COBOL Development Tools for i et de RBD Développement d’applications RPG/COBOL/EGL et de Services Web sous IBM i

Power Tools for IBM i

Combinaison de RD Power RPG and COBOL Development Tools for i et de RAD Standard Edition

(54)

54 © IBM France 2011

Comparatif des produits Rational

ƒ Comparaison Eclipse et produits Rational

https://www-304.ibm.com/support/docview.wss?uid=swg27010975

(55)

SEU en 7.1 - Nouveautés RPG et COBOL non supportées

Fonction supportée mais syntaxe incorrecte (%SUBST)

Fonction 7.1 non supportée dans SEU

Les 2 lignes sont en erreur avec le même message d’erreur

(56)

56 © IBM France 2011

Les environnements de développement RPG/COBOL – Historique - 1/2

ƒ

Les ADTS (Application Development Tool Set)

– SEU, PDM, SDA, RLU, ISDB…

– Développement RPG, COBOL, CL, DDS – Sont toujours supportés

– N’évolueront plus

ƒ

CODE/400

– CODE Editor, CODE Designer, CODE Project Organizer – Développement RPG, COBOL, CL, DDS

– N’est plus supporté

ƒ

WDSC (WebSphere Development Studio Client)

– Basé sur Eclipse

– Développement RPG, COBOL, CL, DDS + Java, Web, Services Web – Version Advanced pour le développement full J2EE

– V4.0, V5.0, V5.1, V5.1.2, V6.0, V6.0.1, V7.0 – Est arrêté de support depuis le 30 avril 2010

(57)

Les environnements de développement RPG/COBOL – Historique - 2/2

ƒ

RDi (Rational Developer for IBM i)

– Basé sur Eclipse

– Développement RPG, COBOL, CL, DDS – V7.1, V7.5

– Est arrêté de commercialisation depuis le 11 mai 2010 – Est toujours supporté

ƒ

RD Power (Rational Developer for Power Systems)

– Basé sur Eclipse

– V7.5, 7.6, 8.0

– En V8.0 quatre dispositifs :

RPG and COBOL Development Tools for i

Développement RPG/COBOL sous IBM i – Successeur de RDi

COBOL Development Tools for AIX C/C++ Development Tools for AIX

C/C++ Development Tools for Linux on Power

(58)

58 © IBM France 2011

RD Power – Pourquoi l’utiliser ? (1/2)

ƒ

Parce que c’est un environnement de développement moderne

– Pour développer des applications RPG, COBOL, CL, DDS

– Permettant d’améliorer la productivité – Et les compétences des développeurs i

ƒ

Parce qu’il s’appuie sur le standard Eclipse

– Socle commun à l’ensemble des produits Rational – Connu des jeunes qui sortent des écoles

ƒ

Parce qu’il permet de fédérer les différentes communautés de développeurs

– Jeunes et « plus anciens »

– Nouvelles technos et technologies « traditionnelles »

ƒ

Parce que les ADTS (SEU, PDM, SDA..) n’évoluent plus (les nouveautés

IBM i 7.1 ne sont pas supportées) et n’évolueront plus

(59)

RD Power – Pourquoi l’utiliser ? (2/2)

ƒ Parce qu’il offre des nouvelles fonctionnalités

Connexions multiples - Filtres permanents

Éditeur plus sophistiqué (sources en couleur, structure du programme, complétion de code…)

Diagramme d’applications

Débogueur plus sophistiqué

Screen Designer et Report Designer

Projets i

ƒ Parce qu’il est nécessaire en tant que client du produit RTC (Rational Team Concert)

Contrôle des sources / versionning, gestion des demandes de

changement, travail en équipe, gouvernance des développements

(60)

60 © IBM France 2011

RD Power – Filtres permanents

ƒ Il est possible de définir autant de filtres que l'on veut et ces filtres sont nommés et permanents

ƒ Il est possible de définir plusieurs chaînes de filtrage pour un filtre et des noms génériques à tous les niveaux

(61)

RD Power – Vues multiples d’un même source en édition

(62)

62 © IBM France 2011

RD Power – Vue structure

(63)

RD Power – Complétion de code

(64)

64 © IBM France 2011

RD Power – Vérification - Compilation

- Filtrage

- Affichage dynamique

(65)

RD Power – Débogage

(66)

66 © IBM France 2011

RD Power – Diagramme d’applications

Représentation graphique de la structure d'une application 1) Diagramme des appels

- appels des sous-routines, des procédures et des programmes 2) Diagramme de la structure d'un programme

- modules liés dans un programme ou un programme de service - relations entre programmes et programmes de service

(67)

RD Power – Pour en savoir plus - Formation

Centre de formation IBM de Noisy le Grand ou sur site client

Prochaine session planifiée à Noisy : 16 juin

(68)

68 © IBM France 2011

RD Power – Pour en savoir plus - Livres

(69)

RD Power – Pour en savoir plus - Web

(70)

70 © IBM France 2011

RD Power – Pour en savoir plus - Sessions

ƒ S1 - RD Power (Rational Developer for Power Systems) : un environnement de développement moderne pour

améliorer la productivité et les compétences des développeurs IBM i

Philippe Bourgeois (IBM)

Session 1A : lundi 16 mai – 14h00

Session 1B : mardi 17 mai – 13h30

(71)

RTC - Les challenges du développement applicatif aujourd’hui

ƒ

La conformité réglementaire

– Traçabilité, audit

ƒ

Des équipes de développement

– Qui ne collaborent et ne communiquent pas toujours facilement – Qui peuvent être géographiquement dispersées

ƒ

Des applications multi-langages

– Traditionnels (RPG, COBOL) et nouvelles technologies (Java, EGL, PHP, .NET…)

ƒ

Des environnements de développements divers et déconnectés les uns des autres

ƒ

La nécessité de réduire les coûts

(72)

72 © IBM France 2011

Rapports et tableaux de bord

Tableaux de bord web adaptables Métriques et rapports en temps réel

Planification

Gestion des itérations

Choix de processus (agiles, traditionnels) Gestion des risques

72 72

Gestion des constructions

ƒSupport des types IBM i Build Specification, Ant, Maven…

ƒTraçabilité avec les demandes de changement et les modifications source

ƒBuilds personnels et d’équipe

ƒRemontée automatique des résultats

ƒAnalyse d’impact et gestion des dépendances

Gestion des activités, des demandes de

changement

ƒDemandes d’évolution, de correction…

ƒSuivi des tâches

ƒApprobations

ƒRequêtes

Jazz Team Server

ƒProjets - Equipes - Rôles

ƒProcessus

ƒMessagerie - Présenciel - Evénements - Alertes

Jazz Team Server

RTC - Une solution intégrée

Gestion de

configuration (SCM)

ƒContrôle des sources

ƒVersionning applicatif

ƒRetours arrière

ƒDéveloppement en //

ƒGestion des conflits

ƒSCM distribué

Packaging et déploiement

(73)

A qui s’adresse RTC ?

ƒ

RTC est un outil pour tous les acteurs concernés par un projet de développement (analystes métier, managers IT, chefs de projets, développeurs...)

ƒ

Quelle que soit la plateforme (i, AIX, Windows, z/OS) et le langage (RPG, COBOL, C, C++, Java, EGL, PHP, .NET…)

ƒ

Interfaces client:

– Eclipse

Java, Web…

– Outils Rational

RD Power (RPG, COBOL, C, C++…) RAD, RBD, RDz, etc.

– Visual Studio

.NET

– Web

Pour les chefs de projet, analystes, managers IT, utilisateurs…

(74)

74 © IBM France 2011

RTC – Traçabilité des modifications source

Motif renseigné si demande de changement

(75)

RTC – Traçabilité des modifications source

Historique des modifications

(76)

76 © IBM France 2011

RTC – Génération - Exécution et résultat

(77)

RTC – Génération - Exécution et résultat

Traçabilité des sources transmis

Traçabilité des objets générés

(78)

78 © IBM France 2011 78

RTC – Demandes de changement

Collaboration avancée : - « Discussion »

- « Approbation »

- « Attachements » (pièces jointes, captures d’écran)

- « Souscription » pour notification de modification (flux RSS)

- « Liens » (hiérarchique, dépendance, association) vers des données du référentiel

Demande d’amélioration

(79)

RTC – Pour en savoir plus - Sessions

ƒ S9 - Contrôle des sources, traçabilité et gestion des demandes de changement sous IBM i avec le produit RTC (Rational Team Concert)

Philippe Bourgeois (IBM) –

Mardi 17 mai – 09h00

ƒ S17 - Automatisation des déploiements avec « ARCAD Deliver Extension for IBM Rational Team Concert »

(ARCAD Software)

Philippe Magne et Michel Mouchon (ARCAD Software) –

Mardi 17 mai – 13h30

(80)

80 © IBM France 2011

4. Moderniser le code RPG/COBOL

(81)

Moderniser le code RPG/COBOL

ƒ

Introduction – Pourquoi moderniser le code RPG/COBOL ?

ƒ

Comment moderniser le code RPG/COBOL ?

– A. Exploiter les possibilités actuelles des langages

RPG IV, environnement ILE

– B. Exposer le code afin qu’il soit accessible de l’extérieur

Procédures stockées Services Web

– C. Découvrir de nouvelles possibiités

XML, appel de Services Web…

Accès à d’autres ressources avec RPG Open Access

– D. Utiliser des outils pour faciliter la connaissance des applications existantes et modulariser le code

Outils de cartographie, d’analyse d’impact et de rétro-documentation Outils de restructuration et de réingénerie

(82)

82 © IBM France 2011

Introduction – Pourquoi moderniser le

code RPG/COBOL ?

(83)

Pourquoi moderniser le code RPG/COBOL ?

ƒ

Pour l’ouvrir à l’extérieur et pouvoir le faire communiquer avec d’autres applications (intégration d’applications)

ƒ

Pour répondre rapidement aux besoins d’évolution (flexibilité, agilité)

ƒ

Pour éviter la redondance et simplifier la maintenance

– Assurer l’unicité des fonctions – Réutilisation - Lisibilité

ƒ

Pour que la logique métier soit indépendante de l’interface utilisateur

ƒ

Pour valoriser les investissements (code, plateforme, people) en offrant

une vision moderne de l’existant

(84)

84 © IBM France 2011

Rénovation / restructuration des applications existantes

DB2 SQL

Application RPG de suivi de sinistres

Affichage informations client Affichage liste des contrats Affichage liste des sinistres Enquete historique client Mise à jour d’un sinistre

DB2 DDS 5250

PHP

5250 5250

Informations client

Liste des contrats

Liste des sinistres

Enquête hist. client Mise à jour

sinistre

EGL

Java Autre

5250

(85)

Développement MVC

ƒ Développement MVC :

Modèle

Vue

Contrôleur

DB2 SQL

ILE RPG/COBOL ILE RPG/COBOL ILE RPG/COBOL

5250 Client riche Web, Web 2.0 Mobile

Logique de contrôle

Logique de contrôle

Logique de contrôle

Logique de contrôle

Modèle Vue

Contrôleur

(86)

86 © IBM France 2011

Comment moderniser le code RPG/COBOL ?

ƒ

Utiliser les possilités actuelles des langages (RPG IV, format libre, environnement ILE)

ƒ

Restructurer

– Séparer la logique métier de l’interface utilisateur – Développement MVC (Modèle – Vue – Contrôleur) – Indépendance back-office / front-office

ƒ

Modulariser

– Réutiliser pour éviter la duplication et les tests

– Réduction de la complexité (lisibilité - Création et appel de fonctions, composants plus petits)

– Faciliter la maintenance (distribution des tâches)

– Créer des fonctions métier, des fonctions d’accès aux données, assurer l’unicité des fonctions Æ créer des services

ƒ

Documenter

(87)

Comment moderniser le code RPG/COBOL ?

A. Exploiter les possibilités actuelles des langages

(88)

88 © IBM France 2011

Les avantages du développement en RPG / COBOL

ƒ Rapidité et facilité de développement

ƒ Vous avez les compétences et souvent les développeurs connaissent le métier

ƒ Facilité de débogage (joblog, messages de 1er et 2nd niveau)

ƒ Intégration native avec DB2 – Possibilité d’intégrer du SQL

ƒ Fiabilité, robustesse

ƒ Facilité de mise en production

ƒ Utilisation native de la LIBL

ƒ Montée en charge sans se poser trop de questions

ƒ Stabilité

Ce que vous écrivez aujourd’hui tournera demain

On ne se pose pas la question tous les 4 mois de l’utilisation ou non de telle technologie ou de tel framework

ƒ Un programme RPG/COBOL de type batch peut être appelé de n’importe où

ƒ Des langages orientés applications de gestion

(89)

Les inconvénients du développement en RPG/COBOL

ƒ

Ce sont des langages qui ne savent gérer nativement que le 5250

– Solution 1 : continuer à développer en RPG et :

Utiliser la technologie CGI

Utiliser RPG Open Access et des handlers d’éditeurs tiers Utiliser des produits tiers

– Solution 2 : restructurer/modulariser le code existant afin de séparer la logique métier de l’interface utilisateur. Cela permet :

De garder en RPG/COBOL la logique métier

De développer en Java, PHP, .Net ou autre langage l’interface utilisateur

ƒ

Il est de plus en plus difficile de trouver des programmeurs RPG/COBOL sur le marché

– Solution 1 : former les jeunes au RPG/COBOL

Mais en leur proposant RD Power comme environnement de développement Et en leur faisant coder du RPG IV en format libre

– Solution 2 : Externaliser

Centre de Services IBM i d'IBM Bordeaux (TMA, support utilisateur...) Sociétés de conseil en ingénierie

(90)

90 © IBM France 2011

Pourquoi développer en RPG IV ?

ƒ

Pour gagner en simplicité, lisibilité, rapidité, productivité, maintenabilité

ƒ

Parce qu’il est plus facile, pour un jeune, de développer en RPG IV, en format libre et sous RD Power qu’en RPG/400 en mode colonné, sous SEU

ƒ

Parce que certaines fonctionnalités de l’IBM i ou des outils de

développement ne sont disponibles ou intéressantes que pour des programmes dont le source est de type RPGLE (xxxLE)

ƒ

Parce que le RPG/400 a été annoncé en mars 2008 comme stabilisé (n’évoluera plus). Seul le RPG IV évolue et continuera d’évoluer

ƒ

Rappel : la commande CVTRPGSRC permet de convertir des sources

RPG/400 en RPG IV (RPG Æ RPGLE)

(91)

Le RPG IV versus le RPG/400 - 1/2

ƒ

Spécifications D pour déclarer les zones, DS, tableaux…

– Support des noms longs et des minuscules / majuscules – Nouveaux types de données

– Support de la valeur indéfinie et des zones de longueur variable – Possibilité de définir des modèles

ƒ

Extension des limites

ƒ

Lignes à blanc

ƒ

Mots-clés

ƒ

Nouveaux codes opération

ƒ

Expressions

ƒ

Format libre (y compris en SQL)

ƒ

Fonctions intégrées

ƒ

Support des zones de type date, heure et horodate

ƒ

Support des pointeurs

(92)

92 © IBM France 2011

Le RPG IV versus le RPG/400 – 2/2

ƒ

Options de compilation et compilation conditionnelle

ƒ

Environnement ILE - Procédures

ƒ

Structures de données qualifiées

ƒ

Interopérabilité avec Java

ƒ

Contrôle à la compilation et à l’exécution des fichiers à ouvrir

ƒ

Génération PCML

ƒ

Sources dans l’IFS

ƒ

Support XML en lecture

ƒ

Tri des DS

ƒ

Nouvelle gestion des erreurs

ƒ

Support du multi-threading

ƒ

Fichiers locauxs et fichiers en paramètre

ƒ

Lecture des Result Sets

(93)

Pourquoi développer en ILE ?

ƒ Parce que les composants de l’environnement ILE (modules, procédures, programmes de service) répondent mieux à la modélisation fonctionnelle (création de fonctions)

ƒ Parce qu’une procédure a de nombreux avantages par rapport à une sous-routine :

Ressemble à une méthode Java ou à une fonction C ou PHP

Possibilité de variables locales et de fichiers locaux), de valeur de retour, de passage optionnel de paramètres, de procédure externe…

ƒ Parce que l’ILE est indispensable pour pouvoir

Appeler des procédures C

Appeler des Services Web (via du C ou du C++)

(94)

94 © IBM France 2011

Procédures ILE versus sous-routines et programmes

ƒ

Une procédure ILE combine les avantages des programmes et des sous- routines :

– Appel aussi performant qu’un appel de sous-routine

– Avec possibilité de passer des paramètres comme pour un programme et de de pouvoir être externe au programme principal

ƒ

Les procédures apportent quelques avantages supplémentaires :

– Analogie avec les méthodes Java ou les fonctions C, PHP, etc. (on se crée ses propres fonctions)

– Définition de variables locales et de fichiers locaux – Possibilité de définir une variable de retour

– Possibilité de passer des expressions en paramètres – Passage de paramètres par référence, par valeur – Passage optionnel de paramètres

– Possibilité d’appeler un programme externe

– Possibilité de faire référence à une procédure externe (procédure C par exemple)

(95)

Environnement ILE

Procédure A Procédure B Procédure C

SRV1

*SRVPGM

Procédure D Procédure E Procédure F

SRV2

*SRVPGM SRV1 *SRVPGM

SRV2 *SRVPGM BNDDIR1

*BNDDIR

H bnddir(‘BNDDIR1’)…

D…

/free

msg = procA(numcli) + … ; callp procE(z1:z2*z3);

PGM1

*PGM

(96)

96 © IBM France 2011

Le RPG IV évolue constamment

ƒ

V5R1 :

– Format libre, interception d’erreurs par MONITOR, DS qualifiées, appel de Java…

ƒ

V5R2 :

– DS qualifiées complexes, PCML, sources dans l’IFS…

ƒ

V5R4 :

– Support XML, code opération EVAL-CORR…

ƒ

V6R1 :

– Multi-threading, fichiers locaux, améliorations DS, plus de limites sur le nombre de postes d’un tableau…

ƒ

V7R1

– Tri et recherche sur des tableaux de structures de données, cryptage de la liste de débogage, accès aux Result Sets…

(97)

RPG – Pour en savoir plus - Formation

Centre de formation IBM de Noisy le Grand ou sur site client

Prochaine session planifiée à Noisy : 23 mai

(98)

98 © IBM France 2011

RPG – Pour en savoir plus – Web

(99)

RPG – Pour en savoir plus - White paper

(100)

100 © IBM France 2011

RPG – Pour en savoir plus - Redbook

SG24-5402

(101)

RPG – Pour en savoir plus - Livres

(102)

102 © IBM France 2011

RPG/COBOL – Pour en savoir plus - Sessions

ƒ S10 – RPG, nouveautés 6.1 et 7.1

Christian Massé (VOLUBIS) –

Mardi 17 mai – 09h00

ƒ S13 – Comment utiliser au mieux les types de données récents ?

Christian Massé (VOLUBIS) –

Mardi 17 mai – 11h00

(103)

Comment moderniser le code RPG/COBOL ?

B. Exposer le code afin qu’il soit accessible de l’extérieur

- Procédures stockées

- Services Web

(104)

104 © IBM France 2011

Exposer le code RPG/COBOL

ƒ Vous avez restructuré les programmes existants afin d’isoler les fonctions métier dans des programmes ou des procédures RPG / COBOL

ƒ Vous avez développé des nouvelles fonctions dans des programmes ou des procédures RPG / COBOL

ƒ Comment les exposer afin qu’ils(qu’elles) puissent être appelé(e)s par d’autres

applications externes au

System i (Java, PHP, VB, .NET, SQL ou autre) ?

DB2 SQL PHP

Informations client

Liste des contrats

Liste des sinistres

Enquête hist. client Mise à jour

sinistre

EGL

Java Autre

5250

(105)

Les procédures stockées

ƒ Une procédure stockée est un programme qui s'exécute sur un serveur et que l'on appelle par une instruction SQL

(instruction CALL)

possibilité de passer des paramètres en entrée, sortie ou entrée/sortie

peut retourner un ou plusieurs result sets

si SQL, peut retourner des tableaux depuis la version 7.1 de l’IBM i

ƒ Il en existe deux types :

les procédures stockées SQL

– écrites en langage SQL (SPL - SQL Procédural Language) –

les procédures stockées externes

– écrites en CL, RPG, ILE RPG, COBOL, ILE COBOL, JAVA, C ou C++

(106)

106 © IBM France 2011

Les procédure stockées externes

ƒ 1) Création du programme ou de la procédure (RPG, COBOL...)

Objet de type *PGM ou de type *SRVPGM

Le programme peut contenir des instructions SQL imbriquées pour retourner un ou plusieurs result sets

ƒ 2) Création (enregistrement) de la procédure stockée

Par l'instruction SQL CREATE PROCEDURE ou par System i Navigator

ƒ Il est possible de gérer, tester et déboguer les procédures

stockées par System i Navigator

(107)

Procédures stockées - System i Navigator

(108)

108 © IBM France 2011

Procédures stockées et listes

(109)

Autre possibilité SQL : les fonctions

… / …

(110)

110 © IBM France 2011

Les Services Web

ƒ

Les Services Web sont des applications autonomes et autodescriptives qui peuvent être publiées, localisées et invoquées à travers Internet

ƒ

Une implémentation de l’architecture orientée services (SOA Phase 1)

ƒ

Ne contiennent que de la logique métier, pas d’interface utilisateur

ƒ

Permettent l’interopérabilité des applications

– Indépendants de la plateforme et du langage – Basés sur le standard XML

ƒ

Peuvent s’intéger dans toute application GUI ou non GUI

ƒ

Peuvent être implémentés sur n’importe quelle plateforme

– Standard supporté par la majorité des acteurs du marché informatique, entre autres par IBM, Microsoft, SUN, HP, Oracle.

(111)

Les Services Web – Quels usages ?

ƒ

Vous pouvez exposer vos fonctions métier afin qu’elles soient accessibles de l’extérieur :

– Clients

– Fournisseurs – Partenaires – Grand public

ƒ

Mais également en interne, entre applications

ƒ

Vous pouvez faire appel à des fonctions et processus métier exposables par d’autres entreprises ou en interne dans vos applications

– Etat d’une commande, d’un colis…

– Calcul de taux de crédit, d’assurance…

– Cours de la bourse, vérification d’un crédit…

– Météo, pages jaunes, itinéraires, plans…

ƒ

Et ceci indépendemment de la plateforme et du langage

(112)

112 © IBM France 2011

La description du Service Web : le fichier WSDL

ƒ WSDL : Web Services Definition Language

ƒ Langage (structure XML) permettant de décrire le Service Web :

La ou les procédures Le ou les paramètres

Comment invoquer le service

(113)

Création de Services Web sous IBM i

ƒ

A partir de programmes RPG/COBOL sans interface 5250

– Avec le serveur de Services Web intégrés l’IBM i, les outils IBM Rational, les outils Zend

ƒ

A partir de transactions interactives 5250

– Avec le produit IBM Rational HATS

ƒ

A partir de requêtes ou procédures SQL

– Avec les outils Rational

ƒ

A partir de Java ou EGL

– Avec les outils Rational

ƒ

A partir de PHP

– Avec les outils Zend

(114)

114 © IBM France 2011

Service Web

Proxy Java

*PGM,

*SRVPGM

ƒ

1) Par le « Integrated Web Services Server

for IBM i »

– Programmes ILE RPG, ILE COBOL – Création, déploiement et exécution – Intégré à l’IBM i

– Technologie : Java

ƒ

2) Avec l’environnement de développement

RDi SOA

Rational Developer for IBM i – SOA Construction

– Programmes RPG, COBOL, OPM ou ILE – Technologie : Java

– Un assistant permet de créer

automatiquement le Service Web à partir du programme RPG/COBOL

– Le Service Web est créé dans un projet Web J2EE qu’il faudra ensuite déployer dans un serveur d’applications (de type WAS –

WebSphere Application Server)

(115)

ƒ 3) Avec l’environnement de développement Zend Studio for i

Programmes RPG, COBOL, OPM ou ILE

Technologie : PHP

Il faut développer un programme PHP qui appelle le programme i, puis l’exposer sous forme de Service Web

Il faudra ensuite déployer ce programme PHP dans le serveur Zend Server for IBM i

Service Web

Proxy PHP

*PGM,

*SRVPGM

(116)

116 © IBM France 2011

Integrated Web Services Server for IBM i - Création

(117)

Integrated Web Services Server for IBM i - Création

(118)

118 © IBM France 2011

Integrated Web Services Server for IBM i - Création

(119)

Integrated Web Services Server for IBM i - Services

Permet de visualiser le WSDL

Permet de tester le service

(120)

120 © IBM France 2011

Integrated Web Services Server for IBM i - Test

(121)

Integrated Web Services Server for IBM i - Listes

(122)

122 © IBM France 2011

Integrated Web Services Server for IBM i - Nouveautés

(123)

Création d’un Service Web avec RDi SOA

…/…

L’assistant va créer :

- un JavaBean faisant appel au programme RPG/COBOL

- Un Service Web sur ce JavaBean - une application J2EE encapsulant tous les composants qu’il faudra ensuite déployer dans un serveur d’applications de type WAS (WebSphere Application Server)

L’assistant permet de choisir les

caractéristiques du Service Web (type d’encodage…)

(124)

124 © IBM France 2011

Procédures stockées et fonctions - Pour en savoir plus

(125)

Services Web - Pour en savoir plus - Formation

Centre de formation IBM de Noisy le Grand ou sur site client

Prochaine session planifiée à Noisy : 14 juin

(126)

126 © IBM France 2011

Services Web - Pour en savoir plus – Redbooks

(127)

Procédures stockées – Services Web – Pour en savoir plus - Sessions

ƒ S2 - Sortir du monde 5250 sans perdre les programmes et le savoir faire existants

Christian Massé (VOLUBIS) –

Lundi 16 mai – 14h00

ƒ S14 - Des Services Web dans vos programmes RPG et COBOL !

Nathanaël Bonnet (GAIA) –

Mardi 17 mai – 11h00

(128)

128 © IBM France 2011

Comment moderniser le code RPG/COBOL ?

C. Découvrir de nouvelles possibilités

- XML, appel de Services Web…

- Accès à d’autres ressources avec RPG Open Access

(129)

1. RPG et XML

(130)

130 © IBM France 2011

1. RPG et XML – Pour en savoir plus

(131)

1. RPG et XML – Pour en savoir plus - Sessions

ƒ S10 – RPG, nouveautés 6.1 et 7.1

Christian Massé (VOLUBIS) –

Mardi 17 mai – 09h00

Références

Documents relatifs

Page Fourteen only sense switch No. will pro- cess data in the manner specified by the description of parameter Kl4 above. If K17 • I, seasonal factors are

The ~~mpiler comprises a series of phases that are called and executed in turn under the supervision of the control modules. Each phase performs a single

The four major elements in transmission paths are station equip- ment (telephones, data sets, etc.), customer loops (cables and wires that connect station

Donnez un nom (peu importe lequel) à votre configuration dans le premier champs du formulaire, puis appuyez sur "Fix" pour configurer l'interpréteur PHP :... Paramètrez

ISO 9001 : 2015 / ISO 27001 : 2013 / ITIL Amélioration continue des processus Centre de Services Managés 24/7/365. Equipe d’experts techniques an phase

Pour le réseau nous avons créé un Lan virtuel pour la communication entre les deux partitions et utilisé une adresse MAC de notre carte LHEA pour la communication avec les

The display station contains a display screen for displaying data, a keyboard for data entry, a control unit that contairrs storage, and a cable adapter for

Customer Responsibil ities: Because requirements vary widely, the user writes hi sown programs to perform record keeping, forecasting, reviewing (if he elects to use an