Professional Documents
Culture Documents
GAIA 2011
IBM i
AGENDA
GAIA 2011
IBM i
IBM i
Lotus Domino
Java / Websphere
Technologies Web
EXPERTISES
Systme
Migration, optimisation
Dveloppement
Mthodologie, conseil, assistance technique
Accompagnement
Conduite du changement, support aux quipes
GAIA 2011
IBM i
WWW.KNOW400.FR
GAIA 2011
IBM i
CONTENUS THEMATIQUES
BASE DEXERCICES ET DEXEMPLES
PARCOURS FORMATION
SERVICES ASSOCIES
Tutorat, formation online, conseil online
WWW.KNOW400. FR
5
GAIA 2011
IBM i
DB2 for i
GAIA 2011
6
IBM i
Vers SQL
Historiquement
Evolution de la plateforme
Support de SQL
Famille DB2
Particularit IBM i
DB2 est intgr lOS
Equivalence gre par lOS entre fichier natif DDS et SQL
7
GAIA 2011
IBM i
Langage ensembliste
Manipule un ensemble de donnes
De 0 n enregistrements
Contrairement RPG
Enregistrement par enregistrement
GAIA 2011
IBM i
Sur IBM i
De nombreuses volutions au fil des ans
IBM a stabilis le DDS, seul SQL volue
Nouveaux types de donne
Nouvelles fonctionnalits
GAIA 2011
IBM i
10
GAIA 2011
IBM i
SQL embarqu
DML, DDL, DCL et des lments de PL/SQL disponibles pour les langages de
programmation
11
GAIA 2011
IBM i
De multiples interfaces
12
GAIA 2011
IBM i
13
GAIA 2011
IBM i
DB2 for i
Vocabulaire et concepts
IBM i
DB2 for i
Bibliothque
Schma, Collection ou BD
Fichier physique
Table
Enregistrement
Ligne
Champ
Colonne
Logique cl
Index
Logique sans cl
Vue
Format
Membre
Nom = 10 caractres
Journalisation
Journalisation
Intgrit rfrentielle
14
GAIA 2011
IBM i
DB2 for i
Une diffrence fondamentale
30 %
WRITE
INSERT
CONTROLE
PF (DDS)
Et ?
CONTROLE
READ
15
TABLE (SQL)
70 %
FETCH
GAIA 2011
IBM i
DB2 for i
Une autre diffrence
DDS = compilation
SQL = excution script
Objets par dfaut dans *CURLIB
Impacts
Dveloppement
Objets
Livraison
Diffrentiel
Script
16
GAIA 2011
IBM i
DB2 for i
Bibliothque vs Schema/Collection
Catalogue
QSYS
QADBXREF
QSYS2
SYSTABLES
COLLECTION
(*LIB)
CREATE COLLECTION
17
SYSTABLES
LIBRABRY
(*LIB)
CRTLIB
GAIA 2011
IBM i
DB2 for i
Principales vues du catalogue
Nom
Usage
SYSCOLUMNS
SYSCHKCST
SYSCST
SYSCSTCOL
SYSCSTDEP
SYSREFCST
SYSINDEXES
Index
SYSKEYS
SYSKEYCST
Cls
SYSTABLES
Tables et index
SYSVIEWS
Vues
GAIA 2011
IBM i
DB2 for i
Journalisation
SQL
Par dfaut
Une journal et un rcepteur de journal associ sont crs
automatiquement dans la collection
QSQJRN (*JRN)
QSQJRN0001 (*JRNRCV)
DDS
Manuelle
Aucun fichier nest journalis
19
GAIA 2011
IBM i
Et plus !
SQL apporte dautres fonctionnalits
Intgrit rfrentielle
Triggers
Plus de possibilits avec SQL
20
GAIA 2011
IBM i
GAIA 2011
21
IBM i
Problmatique
Le problme nest pas tant de crer les tables qui vont
remplacer nos fichiers physiques, mais plutt de maitriser
tous les impacts
Nous allons donc
Etudier ces diffrences dans le dtail
Dresser la liste des usages qui posent problmes
Avec ce guide
Analyse dimpact de notre existant
Prvoir les modifications
De fichiers
De programmes
22
GAIA 2011
IBM i
R FIC1FMT
ID
DONNEES
SELE
K ID
10S 0
20A
10A
TEXT('Cl')
TEXT('Donnes')
TEXT('Slection')
TABLE FIC1
CREATE TABLE FIC1 (
ID
NUMERIC(10, 0) NOT NULL DEFAULT 0 ,
DONNEES CHAR(20)
NOT NULL DEFAULT '' ,
SELE
CHAR(10)
NOT NULL DEFAULT '' ,
PRIMARY KEY( ID ) ) ;
LABEL ON TABLE FIC1
IS 'Libell FIC1' ;
LABEL ON COLUMN FIC1 (
ID TEXT IS 'Cl' ,
DONNEES TEXT IS 'Donnes' ,
SELE TEXT IS 'Slection' ) ;
23
GAIA 2011
IBM i
R FIC1FMT
K ID
PFILE(FIC1)
INDEX FIC1L0
CREATE INDEX FIC1L0 ON FIC1 ( ID ) ;
LABEL ON INDEX FIC1L0
IS 'Cl non unique' ;
24
GAIA 2011
IBM i
R FIC1FMT
K ID
S SELE
PFILE(FIC1)
COMP(EQ 'OUI')
INDEX FIC1L1
CREATE INDEX FIC1L1 ON FIC1 ( ID )
WHERE SELE = 'OUI'
ADD ALL COLUMNS ;
LABEL ON INDEX FIC1L0
IS 'Cl non unique' ;
25
GAIA 2011
IBM i
R F13FTM
J
JFILE(FIC1 FIC3)
JOIN(FIC1 FIC3)
JFLD(ID CLE)
ID
CLE
DONNEES
Vue FIC13V0
CREATE VIEW FIC13V0 (
ID , CLE , DONNEES )
AS
SELECT f1.ID , f2.CLE , f1.DONNEES
FROM FIC1 AS f1
INNER JOIN FIC3 AS f2 ON ( f1.ID = f2.CLE ) ;
LABEL ON COLUMN FIC13V0
( ID TEXT IS 'Cl' ,
CLE TEXT IS 'Cl' ,
DONNEES TEXT IS 'Donnes' ) ;
26
GAIA 2011
IBM i
CL
Les commandes relatives aux fichiers DDS
OPNQRY,
27
GAIA 2011
IBM i
RPG (*)
Carte F
TABLE
INDEX
INDEX
Driv
VUE
Idem PF
Idem LF
Idem LF
Idem LF
SQL
Embarqu
QMQRY
Interactif,
CL
OPNQRYF
Idem PF
Idem PF
Non support
Idem LF
Non support
Idem LF
Idem LF
(*) Pour un mme ID de niveau format entre le fichier DDS et le fichier SQL
28
GAIA 2011
IBM i
SQL
Rcrire les requtes qui utilisent des LF
Utiliser les tables et les vues
CL (OPNQRYF)
Rcrire les QRY qui utilisent des LF convertis en index drivs
Utiliser les tables, index ou vue
29
GAIA 2011
IBM i
Membre
La notion de membre nexiste pas en SQL
Par dfaut
nom du membre = nom de la table
30
GAIA 2011
IBM i
Cl non unique
Tri
Cl unique
Identifiant
Cl primaire ou cl unique
Identifiant
31
GAIA 2011
IBM i
DATFMT, TIMFMT
Mme principe que EDTCDE
Pour SQL, une date est une date
*ISO
32
GAIA 2011
IBM i
Amlioration du support
Format et DATFMT/TIMFMT
Pour des raisons de compatibilit, le mot-cl RCDFMT a t ajoute
SQL
Il permet dindiquer un format denregistrement sur une table, un
index ou une vue
Pris en compte dans lID de niveau de format
33
GAIA 2011
IBM i
Amlioration du support
Format et DATFMT/TIMFMT
Format
Essentiel pour la compatibilit avec les programmes existants
Calcul sur la base de
34
Nom du format
Nom des zones
Type et longueur des zones
Ordre des zones
GAIA 2011
IBM i
Amlioration du support
RCDFMT
Table, vue et index
TABLE FIC2
CREATE TABLE FIC2 (
ID
NUMERIC(10, 0) NOT NULL DEFAULT
DONNEES CHAR(20)
NOT NULL DEFAULT
SELE
CHAR(10)
NOT NULL DEFAULT
LASTUPD DATE
NOT NULL DEFAULT
PRIMARY KEY( ID ) )
RCDFMT FIC2FMT ;
0 ,
'' ,
'' ,
CURRENT_DATE ,
INDEX FIC2L0
CREATE INDEX FIC2L0 ON FIC2 ( DONNEES )
RCDFMT FIC2FMT ;
Index driv
A dfaut de RCDFMT ou ADD ALL COLUMNS
Ne contient que la cl
35
GAIA 2011
IBM i
36
INDEX
Non
support
INDEX
Driv
Oui
Oui
Multi-membres
Non support
Multi-formats
Non support
Date et heure
( <> *ISO)
Oui (RCDFMT)
Date et heure
(Formats multiples)
Non support
VUE
Non
support
GAIA 2011
IBM i
DB2 for i
Rutilisation denregistrements supprims (REUSEDLT)
Par dfaut
SQL = *YES
DDS = *NO
Ncessite RGZPFM
Allocation exclusive du fichier
37
GAIA 2011
IBM i
Analyse dimpacts
Lister dans votre application, les fichiers
Impact
fort
Impact
faible
Sans
impact
38
Multi-membres, multi-formats
PF avec cl non unique
EDTCDE
DATFMT et TIMFMT <> *ISO
OPNQRYF (utilisation dindex driv)
SQL (utilisation de LF)
GAIA 2011
IBM i
39
GAIA 2011
IBM i
40
GAIA 2011
IBM i
41
GAIA 2011
IBM i
42
GAIA 2011
IBM i
43
GAIA 2011
IBM i
EDTCDE
select *
from nbonnet.col_recup
where whecde <> '' ;
44
GAIA 2011
IBM i
DATFMT htrognes
-- liste des zones de date et heure par fichier
with lstfmtdat as (
select whlib, whfile, count( distinct whfmt )
from nbonnet.col_nbdds a
where whfldt = 'L'
Having count(*) > 1
group by whlib, whfile
) ,
select tous.whlib, tous.whfile, tous.whfldi, tous.whfmt, tous.whsep
from nbonnet.col_nbdds tous
join lstfmtdat dat on tous.whlib = dat.whlib and tous.whfile =
dat.whfile
where whfldt = 'L'
order by whlib, whfile, whfldi ;
45
GAIA 2011
IBM i
Outils
Pour vous aider dans la rcriture des structures
API QSQGNDDL (Generate Data Definition Language)
http://publib.boulder.ibm.com/infocenter/iseries/v7r1m0/index.jsp?topic=/
apis/qsqgnddl.htm
46
GAIA 2011
IBM i
System i Navigator
47
GAIA 2011
IBM i
System i Navigator
48
GAIA 2011
IBM i
System i Navigator
49
GAIA 2011
IBM i
System i Navigator
50
GAIA 2011
IBM i
System i Navigator
51
GAIA 2011
IBM i
System i Navigator
PF -> TABLE
Pratique
Gnre les scripts
Y compris les messages dinformation pour ce qui nest pas support
Reste adapter
Nom de bibliothque qualifie supprimer
LF -> INDEX
Gnre des vues et non des index
A reprendre la main
En fonction du volume de structures reprendre
Il est possible de faire une commande
Analyse le LF ou interroge le catalogue
Gnre le script SQL pour lindex
52
GAIA 2011
IBM i
System i Navigator
Permet lutilisation de commandes CL
Un script SQL peut enchainer tout ce dont vous avez besoin !
53
GAIA 2011
IBM i
GAIA 2011
54
IBM i
Problmatique
DDS
Les enregistrements ne sont contrls qu la lecture
Ce qui signifie que vous avez des donnes corrompues
Sur les zones alphanumriques
Cela ne se voit pas trop
55
GAIA 2011
IBM i
Problmatique
Aspect technique
Identifier les donnes corrompues
Afin quelles soient traites
Par des rgles fonctionnelles dfinir
Mthode
Itrative
Larbre cache la fort
56
GAIA 2011
IBM i
Problmatique
Itration
PRODUCTION
ENVIRONNEMENT DE REPRISE
COPIE
DDS
DDS
Contrle des
types de
donnes
Corrections
cumules
Extraction
des
enregistrem
ents valides
Extraction des
anomalies
SQL
57
Anomalies
GAIA 2011
IBM i
Techniques de reprise
Problme
Manipuler des donnes incorrectes
Provoque des anomalies dans le code
Grer les anomalies prvues
Ne pas grer les autres anomalies
Avantage
Carte F
Permet de lire des valeurs errones
58
GAIA 2011
IBM i
d
d
d
d
d
d
// DS pour lectures/critures
ptr_enr
s
enr_in
ds
enr_out
ds
enr_ano
d enreg_banal
ds
50a
59
extname( 'REPRISE/ARTICLE' )
qualified
inz( *off )
GAIA 2011
IBM i
if not LBln_Err ;
// traitement enregistrement OK
write fmtout enr_out ;
else ;
// traitement enregistrement KO
monitor ;
write fmtano enr_ano ;
on-error ;
dsply 'Anomalie non grable. Dbut de l''enreg :' ;
dsply enreg_banal ;
endmon;
endif ;
enddo ;
60
GAIA 2011
IBM i
d
d
d
d
d
d Msg
61
)
)
extname( 'REPRISE/ARTICLE' )
qualified
inz( *off )
10i 0 inz
7a
inz
256a
inz
6a
inz
10i 0 inz
52a
inz
GAIA 2011
IBM i
// Erreur
// L'enregistrement n'a pas t lu
// La DS enr_in a conserve son ancienne valeur
when %subst( SqlState : 1 : 2 ) >= '03' ;
// Avant toute autre instruction SQL
// SQLErm est une suite de valeur alpha varying. Cela ncessiterait
// une boucle ici
dsply ( 'SQLErm : ' + %subst( SQLErm : 1 : 40 ) ) ;
// nombre d'erreurs
exec sql get diagnostics :Err_nb = NUMBER ;
dsply ( 'Erreur (' + %char( Err_nb ) + ')' ) ;
62
GAIA 2011
IBM i
= '01' ;
// Sinon
Other ;
// insertion de l'enregistrement
exec sql insert into reprise/art_sql
values ( :enr_in ) ;
endsl ;
enddo ;
63
GAIA 2011
IBM i
MERCI
GAIA 2011
64