Вы находитесь на странице: 1из 37

S D D C

1
er
aot 2000
C.O.M.B.A.T.
GESTION DU COMMIT
DANS LES PROGRAMMES BATCH
Version 2.1.
Le prsent document dcrit le produit COMBAT, ralis par MAG INO CON!"LTANT,
pour permettre au# pro$rammeurs de simpli%ier la $estion des COMMIT dans les
pro$rammes Batc& et de %aciliter la reprise d'un pro$ramme apr(s incident)
Le produit COMBAT met en *u+re deu# composants principau#,
- L'outil, sous %orme de dialo$ue sous I!., /ui permet de d%inir la structure
des li$nes de reprise utilises par le module CMT01IT ainsi /ue la modi%ication
et la +isualisation de ces li$nes)
La +isualisation de la li$ne de reprise d'un pro$ramme est possi2le 3 compris
pendant l'e#cution de ce pro$ramme) On dispose ainsi d'un moniteur de
sur+eillance en temps rel du droulement d'un pro$ramme Batc&)
- Le module CMT01IT de ralisation e%%ecti+e du COMMIT et de mise 4 5our de la
ta2le de reprise) Ce module doit 6tre appel dans tous les pro$rammes Batc& /ui
doi+ent raliser des COMMIT)
La mise en *u+re de ce produit e#i$e, au prala2le, une ma7trise des principes
$nrau# de ralisation du COMMIT)
Ces principes ont t e#poss dans le $uide mt&odolo$i/ue, rdi$ par MAG INO
CON!"LTANT et intitul 8L0 COMMIT 9AN! L0! .:OG:AMM0! BATC; A<0C 9B28)
1
I - PRINCIPES GENERAUX
1)1 = L'outil de dialo$ue sous I!.
"n outil de dialo$ue sous I!. permet de d%inir, dans un sous=s3st(me 9B2, des
structures de li$nes de reprise pour les pro$rammes BATC; de+ant raliser des
COMMIT, et d'associer 4 c&a/ue pro$ramme une structure parmi celles prcdemment
d%inies)
La ta2le de reprise est uni/ue, mais l'outil de dialo$ue permet de d%inir des
structures de donnes totalement di%%rentes, et 4 l'e#tr6me, spci%i/ues 4
c&a/ue pro$ramme)
Les %onctions o%%ertes par l'outil de dialo$ue sous I!., sont les sui+antes ,
- c&oi# du sous=s3st(me 9B2
- c&oi# d'un .9! par d%aut, destin 4 accueillir les d%initions COBOL des
di%%rentes structures)
- c&oi# d'une dure minimum, par d%aut, entre deu# COMMIT)
- d%inition de structures de donnes de reprise)
- d%inition de la li$ne de reprise par pro$ramme ou 8.ro$ramme = Occurrence8
dans le cas des pro$rammes destins 4 s'e#cuter en Inits multiples)
- modi%ication du contenu des li$nes de reprise)
- +isualisation pendant le droulement d'un pro$ramme de la li$ne de reprise /ui
lui est associe)
1)2 = Le module CMT01IT
Le module CMT01IT est utilisa2le dans les pro$rammes Batc& /ui sou&aitent
raliser des COMMIT)
Il remplit les principales %onctions sui+antes,
- lecture de la li$ne de reprise
- mise 4 5our de la li$ne de reprise et COMMIT imprati%)
- mise 4 5our de la li$ne de reprise et COMMIT, les deu# oprations tant
conditionnes par la constatation d'une dure minimum depuis le dernier COMMIT)
- mise 4 5our spciale de la li$ne de reprise en cas de %in de traitement du
pro$ramme Batc&)
2
9.CMT00 G 0 ! T I O N 9 0 ! C O M M I T ! 00>0?>0@
======== Ma$ In%o Consultant ========

C;OI1 1 Identi%ication du 9B2 , 9B2T

1= .A:AM0T:0! .A: 90A"T

2= G0!TION 90! !T:"CT":0!
Nom structure AAAAAAAA onction A

B= G0!TION 90! LIGN0! 90 :0.:I!0 9'"N .:OG:AMM0
Nom du p$m AAAAAAAA onction A
Nom2re d'occurrences AA - en cration seulement
Nom de la structure AAAAAAAA -

C= T:AN!0:T <0:! "N A"T:0 9B2
Nom du p$m AAAAAAAA 9B2 ci2le AAAA

onction, DCE cration DME modi%ication D!E suppression D<E +isualisation



1F;0L. 2F!.LIT BFIN CF:0T":N GF:IN9 HF:C;ANG0
IF". ?F9OJN @F!JA. 10FL0T 11F:IG;T 12F:0T:I0<0
3
II - L'o!i" #e #i$"o%e sos ISP&
2)1 0cran 9.CMT00 0cran d'accueil)
Il rclame un c&oi# par l'utilisateur, 818 , 828 ou 8B8)
2)1)1) C&oi# 818) .aram(tres par d%aut)
Ce c&oi# ne rclame la saisie d'aucun c&amp complmentaire)
Il permet la consultation et la mise 4 5our des param(tres par d%aut) D 0cran
9.CMT10 E
Ces param(tres par d%aut sont spci%i/ues de c&a/ue utilisateur)
La premi(re %ois /ue tout nou+el utilisateur acc(de au s3st(me, ce c&oi# est
imprati%) 0n e%%et, dans ce cas le s3st(me re%use les c&oi# 2 et B, tant /ue
les param(tres par d%aut n'ont pas t saisis et +alids)

2)1)2 C&oi# 828) Gestion des structures)
C&amps complmentaires,
2)1)2)1) Nom D de la structure E ,
? caract(res au ma#imum)
aE .our %aciliter les rec&erc&es, ce c&amp peut contenir un ou plusieurs
caract(res 8-8) Ce caract(re entra7ne une rec&erc&e du t3pe LIK0 en su2stituant
c&a/ue 8-8 et c&a/ue 8espace8 par 8L8)
L'cran 9.CMT21 %ournira les noms des structures /ui rpondent 4 la slection)
0#emples ,
= 8!T:"C-8 %ournira la liste des structures dont le nom commence par !T:"C)
= 8-A8 %ournira la liste les structures dont le nom contient la lettre A en
n'importe /uelle position)
!i le caract(re 8-8 a t saisi dans le c&amp 8Nom8, le c&amp 8onction8 ne doit
pas 6tre rensei$n) Il de+ra l'6tre sur l'cran 9.CMT21)
2E !i le c&amp ne contient pas le caract(re 8-8, le c&amp 8onction8 est
o2li$atoirement rensei$n)
2)1)2)2) onction , 8C8, 8M8 , 8!8 ou 8<8)
Ce c&amp est interdit si un caract(re 8-8 a t saisi dans le c&amp 8Nom8)
!inon, il est o2li$atoire)
8C8 Cration d'une nou+elle structure)
8M8 Modi%ication d'une structure 4 condition /u'elle n'ait
5amais t r%rence par une li$ne de reprise)
8!8 !uppression d'une structure si elle n'est r%rence par
aucune li$ne de reprise)
8<8 <isualisation d'une structure sans modi%ication possi2le)
4
2)1)B C&oi# 8B8) Gestion des li$nes de reprise)
C&amps complmentaires,
2)1)B)1) Nom du p$m D Nom du pro$ramme E ,
? caract(res au ma#imum)
aE .our %aciliter les rec&erc&es, ce c&amp peut contenir un ou plusieurs
caract(res 8-8) Ce caract(re entra7ne une rec&erc&e du t3pe LIK0 en su2stituant
c&a/ue 8-8 et c&a/ue 8espace8 par 8L8)
L'cran 9.CMTB1 %ournira les li$nes de reprise dont le nom du pro$ramme rpond 4
la slection)
e#emples,
= 8.GM1-8 %ournira la liste des li$nes de reprise dont le nom du pro$ramme
commence par .GM1)
= 8-8 %ournira la liste de toutes les li$nes de reprise)
!i le caract(re 8-8 a t saisi dans le c&amp 8Nom8, le c&amp 8onction8 ne doit
pas 6tre rensei$n) Il le sera sur l'cran 9.CMTB1)
2E !i le c&amp ne contient pas le caract(re 8-8, le c&amp 8onction8 est
o2li$atoirement rensei$n)
2)1)B)2) onction , 8C8, 8M8 , 8!8 ou 8<8)
Ce c&amp est interdit si un caract(re 8-8 a t saisi dans le c&amp 8Nom du
p$m8) !inon, il est o2li$atoire)
Le s3st(me a%%ic&e ensuite l'cran 9.CMTB2)
!i la %onction demande est une cration D8C8E , il est o2li$atoire de
rensei$ner les c&amps 8Nom2re d'occurrences8 et 8Nom de la structure8)
2)1)B)B) Nom2re d'occurrences , Ce c&amp ne doit 6tre rensei$n /u'en cas de
cration de li$nes de reprise pour un pro$ramme)
Il est compris entre 1 et @@)
Il n'est pas possi2le de modi%ier le nom2re d'occurrences associes 4 un
pro$ramme) .our 3 par+enir, il %aut supprimer les li$nes de reprise du
pro$ramme, puis les recrer a+ec le nom2re d'occurrences dsir)
2)1)B)C) Nom de la structure
Il dsi$ne le nom de la structure 4 utiliser pour dcrire les li$nes de reprises
associes 4 un pro$ramme)
Ce c&amp ne doit 6tre rensei$n /u'en cas de cration de li$nes de reprise)
Le nom de la structure est uni/ue pour toutes les occurrences d'un pro$ramme)
"ne %ois les li$nes cres pour un pro$ramme, il n'est pas possi2le de c&an$er
la structure associe)
5
9.CMT10 00>0?>0@
.A:AM0T:0! .A: 90A"T
=====================





=1 Nom du .9! pour CO.M COBOL , !01)M<!)<90<A)9CLLIB

=2 9ure entre 2 COMMIT Den secondesE , G

=B Identi%ication du 9B2 , 9BT









1F;0L. 2F!.LIT BFIN CF:0T":N GF:IN9 HF:C;ANG0
IF". ?F9OJN @F!JA. 10FL0T 11F:IG;T 12F:0T:I0<0
6
9.CMT00 G 0 ! T I O N 9 0 ! C O M M I T ! 00>0?>0@
======== Ma$ In%o Consultant ========

C;OI1 2 Identi%ication du 9B2 , 9B2T

1= .A:AM0T:0! .A: 90A"T

2= G0!TION 90! !T:"CT":0!
Nom stucture COM-AAAA onction A
================================================================================
9.CMT21 :oN 1 to 2 o% 2
LI!T0 90! !T:"CT":0! 00>0?>0@
=====================
Command FFFO !croll FFFO





!l !tructure Modi%ia2le 9escription

COMBAGM N !T:"CT":0 COMBAGM
COMB10 N O:MATION COMBAT DCOMMIT BATC;E
7
2)2 0cran 9.CMT10 .aram(tres par d%aut)
2)2)1) Nom du .9! pour CO.M COBOL ,
CC caract(res alp&anumri/ues)
Ce c&amp est o2li$atoire)
Il contient le nom du .9!, dans le/uel le s3st(me +a stocPer la d%inition COBOL
de c&a/ue structure, lors de sa cration ou de sa modi%ication)
Le s3st(me +ri%ie /ue le nom du %ic&ier %ourni e#iste et /u'il s'a$it 2ien d'un
.9!)
2)2)2) 9ure entre 2 COMMIT D en secondes E ,
C caract(res numri/ues)
Ce c&amp est %acultati%)
Il contient la dure 4 utiliser par d%aut lors de la cration de li$nes de
reprise)
!i ce c&amp n'est pas rensei$n, le s3st(me assume une +aleur par d%aut de G
secondes)
2)2)B) Identi%ication du 9B2 ,
C caract(res alp&anumri/ues)
Ce c&amp est o2li$atoire)
Il indi/ue le nom du sous s3st(me 9B2 sur le/uel on tra+aille)
Aucune +ri%ication de la +alidit du nom du sous=s3st(me ou de son
%onctionnement n'a lieu 4 ce moment
2)2)C) Touc&es de %onctions
.B , permet l'enre$istrement des donnes saisies)
2)B 0cran 9.CMT21 Liste des structures)
2)B)1) !l DslectionE)
Ce caract(re est o%%ert en saisie 4 l'utilisateur)
Il sert 4 spci%ier l'une des actions possi2les sur l'une des structures,
8<8 <isualisation de la d%inition de la structure, sans
possi2ilit de modi%ication)
8M8 Modi%ication de la d%inition de la structure)
Les modi%ications ne seront ralisa2les /ue si la colonne
8Modi%ia2le8 contient un 8O8 /ui autorise les
modi%ications)
8!8 !uppression de la structure)
Cette suppression n'est possi2le /ue si aucune li$ne de
reprise ne r%rence cette structure) Ce contrQle ris/ue
d'6tre ralenti par un nom2re important de li$nes de reprise)
2)B)2) !tructure , Nom de la structure)
2)B)B) Modi%ia2le ,
8O8 ou 8N8 pour indi/uer si Oui ou Non, la structure est modi%ia2le)
"ne structure est modi%ia2le tant /u'elle n'a pas t r%rence par une li$ne
de reprise)
2)B)C) 9escription , Contient la dsi$nation de la structure)
8
9.CMT00 G 0 ! T I O N 9 0 ! C O M M I T ! 00>0?>0@
======== Ma$ In%o Consultant ========

C;OI1 B Identi%ication du 9B2 , 9B2T

1= .A:AM0T:0! .A: 90A"T

2= G0!TION 90! !T:"CT":0!
Nom stucture onction

B= G0!TION 90! LIGN0! 90 :0.:I!0 9'"N .:OG:AMM0
Nom du p$m com-AAAA onction A
Nom2re d'occurrences AA - en cration seulement
Nom de la structure AAAAAAAA -
================================================================================
9.CMTB1 :oN 1 to 11 o% 12
LI!T0 90! LIGN0! 90 :0.:I!0 00>0?>0@
============================
Command FFFO !croll FFFO .AG0





!l .ro$ramme Occ>Occ !tructure 9ure T! dernier commit

COMBAGM 1 > 2 COMBAGM G 0001=01=01=00)00)00)000000
COMBAGM 2 > 2 COMBAGM G 0001=01=01=00)00)00)000000
COMB10 1 > 10 COMB10 G 0001=01=01=00)00)00)000000
COMB10 2 > 10 COMB10 G 0001=01=01=00)00)00)000000
COMB10 B > 10 COMB10 G 0001=01=01=00)00)00)000000
9
2)C 0cran 9.CMTB1 Liste des li$nes de reprise)
9ans ce /ui suit, on +o/ue les li$nes de reprise d'un pro$ramme, ce /ui est la
dsi$nation correcte dans le cas de pro$ramme 4 occurrences multiples) Nos
commentaires s'appuient sur ce t3pe de pro$rammes) Nous utilisons la m6me
terminolo$ie dans le cas des pro$rammes 4 occurrence uni/ue 2ien /u'ils ne
poss(dent /u'une seule li$ne de reprise)
2)C)1) !l DslectionE)
Ce caract(re est o%%ert en saisie 4 l'utilisateur)
Il sert 4 spci%ier l'une des actions possi2les sur l'un des pro$rammes ,
8<8 <isualisation des li$nes de reprise du pro$ramme) La
+isualisation d2utera par la li$ne de reprise dsi$ne
parmi celles du pro$ramme)
8M8 Modi%ication des li$nes de reprises)
La modi%ication d2utera par la li$ne dsi$ne)
8!8 !uppression de toutes les li$nes de reprise du pro$ramme)
L'cran de con%irmation a%%ic&era la li$ne dsi$ne)
2)C)2) Occ > Occ ,
Le premier nom2re indi/ue le numro de la li$ne de pro$ramme)
Le deu#i(me nom2re %ournit le nom2re total d'occurrences pour le pro$ramme)
2)C)B) !tructure ,
Nom de la structure)
0lle est identi/ue pour toutes les occurrences d'un m6me pro$ramme)
2)C)C) 9ure ,
9ure minimum en secondes /ui doit sparer deu# COMMIT)
2)C)G) T! dernier COMMIT ,
Contient le TIM0!TAM. o2ser+ lors du dernier COMMIT, ralis par CMT01IT, pour
cette li$ne de reprise)
10
9.CMT22 :oN 1 to H o% ?
MO9IICATION 9'"N0 !T:"CT":0 00>0?>0@
=============================
Command FFFO !croll FFFO

!tructure FFO COMB10 Lon$ueur FFO BC Modi%ia2le FFO N
Cop3 .9! FFO !01)9B2)<9BCA)9B.:001. Lan$a$e FFO COBOL
9si$nation FFO O:MATION COMBAT DCOMMIT BATC;E



T3pe, DIEFInte$er D!EF!mallint DCEFC&ar D90EF9ecimal
D9AEF9ate DT!EFTimestmp DTEFTime

Nom Colonne 9si$nation T3pe Lon$ueur

1 A..LICATION C;A: C
2 CLI 90CIMAL 11
B CONT 90CIMAL 11
C N"M=O. 90CIMAL 11
G C.T=L0C. 90CIMAL 11
H C.T=MAR. 90CIMAL 11
1F;0L. 2F!.LIT BFIN CF GF HF
IF". ?F9OJN @F!JA. 10F 11F 12FABAN9ON
11
2)G 0cran 9.CMT22 Mise 4 5our d'une structure)
2)G)1) !tructure ,
Nom de la structure)
Ce c&amp est tou5ours prot$ sur cet cran)
.our des raisons de restrictions en COBOL, il est conseill
de c&oisir un nom de structure di%%rent des pro$rammes /ui
doi+ent s'appu3er sur cette structure)
2)G)2) Lon$ueur ,
C&amp calcul par le s3st(me et prot$)
Il reprsente la lon$ueur d'un $roupe de donnes D :eprise,
Borne in%rieure, Borne suprieureE)
La lon$ueur d'un $roupe ne peut dpasser 1000 caract(res)
Il n'est pas possi2le de d%inir de nou+elles colonnes au del4 de ce seuil)
2)G)B) Modi%ia2le ,
C&amp a%%ic& par le s3st(me et prot$)
8O8 ou 8N8 pour indi/uer si Oui ou Non, la structure est
modi%ia2le)
"ne structure est modi%ia2le tant /u'elle n'a pas t
r%rence par une li$ne de reprise)
9(s /u'elle a t r%rence par une li$ne de reprise, une
structure ne peut 6tre /ue <isualise ou !upprime)
2)G)C) Cop3 .9! ,
C&amp a%%ic& par le s3st(me et prot$)
Il dsi$ne le nom du .9! /ui a t spci%i dans les
.aram(tres par d%aut) DC&oi# 818 de l'cran 9.CMT00E)
Suand la structure est cre, et /ue cette cration est
+alide par .B, le s3st(me cre un mem2re, du m6me nom /ue
la structure, dans ce .9!) Ce mem2re contient la description
COBOL des trois $roupes de donnes /ui composent une li$ne
de reprise)
La description COBOL contenue dans ce mem2re est actualise
apr(s c&a/ue modi%ication +alide par .B)
Le mem2re correspondant est supprim par le s3st(me, lors/ue la structure est
supprime)
2)G)G) Lan$a$e ,
C&amp a%%ic& par le s3st(me et prot$)
9si$ne le lan$a$e de d%inition de la structure dans le .9!)
Contient tou5ours 8COBOL8)
2)G)H) 9si$nation ,
C&amp en saisie lors de la cration ou de la modi%ication)
2)G)I) Nom Colonne ,
C&amp en saisie lors de la cration ou de la modi%ication)
9si$ne sur 1? caract(res alp&anumri/ues le nom de la
colonne) Le caract(re 8=8 est accept, le 8A8 est re%us)
2)G)?) 9si$nation ,
C&amp en saisie lors de la cration ou de la modi%ication)
.ermet d'associer un commentaire au nom de la colonne)
Ce commentaire se retrou+e dans la description COBOL $nre
automati/uement et stocPe, par le s3st(me, dans le .9!)
12
2)G)@) T3pe
C&amp en saisie lors de la cration ou de la modi%ication)
Il dcrit le t3pe de la colonne)

Les t3pes possi2les sont une partie de ceu# permis par 9B2)
Cette compati2ilit rend possi2le l'utilisation de ces colonnes dans des ordres
!SL 9B2 sans ris/uer de d$radation de per%ormance) 0n e%%et, 4 ce 5our, si un
ordre !SL contient un prdicat du t3pe COL1 F ,<aria2le, 9B2 n'utilise pas
l'inde# +entuel sur COL1, si COL1 et ,<aria2le n'ont pas une d%inition
identi/ue Dt3pe et lon$ueurE)
Les t3pes peu+ent 6tre dsi$ns compl(tement ou sous %orme a2r$e)
Les colonnes en 8C;A:8 ou 890CIMAL8 e#i$ent une lon$ueur)
Les colonnes sont stocPes dans le s3st(me comme des 8;ost=+aria2les8, les
colonnes de t3pe 89AT08, 8TIM08 et 8TIM0!TM.8 sont stocPes selon leur %ormat
e#terne) Les autres colonnes sont stocPes en %ormat interne)
T3pe de T3pe Lon$ueur ormat COBOL
colonne A2r$ possi2le
INT0G0: I !@D@E COM.
!MALLINT ! !@DGE COM.
C;A: C 1 4 2G 1D1E 4 1D2GE
90CIMAL 90 1 4 2G !@D1E 4 !@D2GE COM.=B
9AT0 9A 1D10E
TIM0!TM. T! 1D2HE
TIM0 T 1D?E
2)G)10) Lon$ueur
C&amp en saisie lors de la cration ou de la modi%ication)
Ce c&amp ne doit 6tre rensei$n /ue pour les colonnes de
t3pe 90CIMAL ou C;A:)
NB , Tant /u'une structure est modi%ia2le, tous les lments sont modi%ia2les
D Nom, 9si$nation, T3pe, Lon$ueurE)
"ne colonne peut 6tre supprime en e%%aTant 4 l'cran toutes ses
caractristi/ues) La renumrotation des colonnes est automati/ue)
13
9.CMTB2 MO9IICATION 90! LIGN0! 90 :0.:I!0 00>0?>0@
===================================
.:OG:AMM0, COMB10 OCC"::0NC0! , 10 OCC"::0NC0 0N CO":! , 1
!T:"CT":0, COMB10 O:MATION COMBAT DCOMMIT BATC;E
COMMIT 9":00, G s 90:NI0:, 2000=0?=0@=1C)G2)G2)ICH0@B NOMB:0, BH
NB ONCTION! I, 1 T, 1G0 , 1
NB COMMIT! O:C0!, 0 ACC0.T0!, BG 0CA:T0!, 11G
:eprise Bornes In% > !up
01 A..LICATION sa$e aaaa
sa$e
02 CLI 12B0GI?1 =@@@@@@@@@
20C00000
0B CONT GCI??@ 0
0
0C N"M=O. HG?C 0
0
0G C.T=L0C. 1G2I@ 0
0
0H C.T=MAR. 1G2I@ 0
0
Acc(s direct 4 l'occurrence ,

1FA"T:0))) 2FCA:=O;1 BFIN CF:aU1 GF HF:aU@@
IFA::I0:0 ?FA<ANT @F!JA. 10F.:0C 11F!"I< 12FABAN9ON
14
2)H 0cran 9.CMTB2 Mise 4 5our des li$nes de reprise)
Cet cran ne prsente /u'une li$ne de reprise 4 la %ois pour un pro$ramme donn,
mais permet de na+i$uer entre les di%%rentes li$nes associes 4 un pro$ramme)
Attention, certaines actions sont $lo2ales, elles peu+ent concerner toutes les
occurrences D ou li$nes de repriseE d'un pro$ramme)
e#emples ,
= La %onction 8!8 entra7ne la suppression de toutes les occurrences d'un
pro$ramme)
= La touc&e de %onction .H a$it sur toutes les occurrences)
2)H)1) .ro$ramme
C&amp a%%ic& par le s3st(me et prot$)
2)H)2) Occurrences ,
C&amp a%%ic& par le s3st(me et prot$)
9si$ne le nom2re de li$nes de reprise associes au pro$ramme)
2)H)B) Occurrence en cours ,
C&amp a%%ic& par le s3st(me et prot$)
9si$ne le numro de la li$ne de reprise a%%ic&e)
2)H)C) !tructure
C&amp a%%ic& par le s3st(me et prot$)
9si$ne le nom de la structure associe au pro$ramme)
Le nom de la structure est sui+i de sa dsi$nation)
2)H)G) COMMIT 9":00 ,
C&amp a%%ic& par le s3st(me et modi%ia2le)
0#prime en secondes la dure minimum /ui doit sparer deu#
COMMIT pour CMT01IT)
La +aleur 0 indi/ue 4 CMT01IT /u'il doit raliser un COMMIT
4 c&a/ue appel a+ec une %onction 8T8)
La modi%ication de cette +aleur n'est prise en compte par CMT01IT /ue lors du
proc&ain appel a+ec ONCT F 8I8)
2)H)H) 90:NI0:
C&amp a%%ic& par le s3st(me et prot$)
9onne le TIM0!TAM. lors du dernier COMMIT ralis par CMT01IT)
2)H)I) NOMB:0 ,
C&amp a%%ic& par le s3st(me et prot$)
9onne le nom2re de COMMIT raliss par CMT01IT lors du
dernier traitement de l'occurrence du pro$ramme)
Ce nom2re reprsente l'addition des B compteurs sui+ants ,
= Nom2re de %onctions
= Nom2re de COMMIT %orcs
= Nom2re de COMMIT accepts
15
2)H)?) Compteurs)
Les H compteurs /ui sui+ent, Nom2re de ONCTION! et Nom2re de COMMIT rsument
les rponses de CMT01IT au# appels du pro$ramme)
Ces compteurs ne sont mis 4 5our, dans la ta2le de reprise, /u'4 l'occasion d'un
COMMIT de CMT01IT)
Ces compteurs sont rinitialiss lors d'un nou+eau traitement d'une occurrence
du pro$ramme)
"n nou+eau traitement dmarre o2li$atoirement par un appel a+ec une ONCTION
8I8) Lors de l'appel 4 CMT01IT a+ec une %onction 8I8, celui=ci dtermine s'il
s'a$it d'un nou+eau traitement ou d'un nou+el appel 4 l'intrieur du traitement
en cours)
Lors de la +isualisation d'une li$ne de reprise, le contenu de ces compteurs est
ra%ra7c&i 4 c&a/ue pression sur la touc&e 80NT:008) !i le pro$ramme est en cours
d'e#cution, il de+ient possi2le de sui+re son acti+it pendant le droulement
du pro$ramme)
2)H)?)1) NB ONCTION! I , T et ,
C&amps a%%ic&s par le s3st(me et prot$s)
Ces compteurs indi/uent le nom2re d'appels a+ec c&acune des %onctions 8I8 , 8T8
ou 88)
2)H)?)2) NB COMMIT=O:C0! , ACC0.T0! , 0CA:T0!)
C&amps a%%ic&s par le s3st(me et prot$s)
Ces B compteurs dtaillent le nom2re d'appels raliss a+ec ONCTF8T8)
NB COMMIT=O:C0! , Nom2re d'appels 4 CMT01IT a+ec ONCT F'T'
et O:C0=COMMIT F 'O')
Tous ces appels ont t sui+is d'un COMMIT)
<oir NB=COMMIT=O:C0 dans .A:M=CMT01IT)

NB COMMIT=ACC0.T0! , Nom2re d'appels 4 CMT01IT a+ec ONCT F'T'
et O:C0=COMMIT di%%rent de 'O')
Ces appels ont t sui+is d'un COMMIT
dcid par le module CMT01IT)
<oir NB=COMMIT=90CI90 dans .A:M=CMT01IT)

NB COMMIT=0CA:T0! , Nom2re d'appels 4 CMT01IT a+ec ONCT F'T'
et O:C0=COMMIT di%%rent de 'O')
Ces appels n'ont pas entra7n de COMMIT)
<oir NB=!AN!=COMMIT dans .A:M=CMT01IT)
16
2)H)@) Les colonnes)
2)H)@)1) !aisie des +aleurs)
L'cran dtaille le contenu des donnes de la li$ne de reprise)
C&a/ue donne est a%%ic&e sur 2 li$nes, selon le %ormat sui+ant,
Numro et Nom de la colonne :eprise Borne In%rieure
9si$nation de la colonne Borne suprieure
!i l'cran est accessi2le en mode cration ou modi%ication, il est possi2le de
modi%ier le contenu des $roupes :eprise, Borne in%rieure et Borne suprieure)
Les c&amps numri/ues doi+ent 6tre +alides, peu+ent 6tre si$ns et doi+ent
respecter les pla$es de +aleurs possi2les selon leur t3pe D!MALLINT ou INT0G0:E)
<oir aussi les touc&es de %onctions .C et .H /ui ralisent des mises 4 5our du
contenu de ces in%ormations)
2)H)@)2) Contraintes de co&rence)
.our illustrer ce su5et, nous prsentons l'e#emple d'une reprise sur B
colonnes ,
9ans la ta2le de reprise, pour c&a/ue occurrence,
= le $roupe 8BO:N0 IN0:I0":08 doit contenir le triplet dont la
+aleur est immdiatement in%rieure au plus petit triplet
/ue doit slectionner et traiter le curseur ma7tre du pro$ramme)
= le $roupe 8BO:N0 !".0:I0":08 contient le plus $rand
triplet /ue doit slectionner le curseur ma7tre)
9ans la ta2le de reprise, on trou+e donc, des +aleurs identi/ues entre ,
= le $roupe 8BO:N0 !".0:I0":08 de l'occurrence N,
= et, le $roupe 8BO:N0 IN0:I0":08 de l'occurrence NV1
0#emple de d%inition pour un pro$ramme 4 occurrences multiples,
Occurrence COLONN01 COLONN02 COLONN0B
BI B! BI B! BI B!
1 0 1 0 G 0 10
2 1 1 G G 10 12
B 1 10 G 0 12 0
C 10 @@ 0 @@ 0 @@
2)H)10) Acc(s direct 4 l'occurrence)
C&amp en saisie)
Il permet 4 l'utilisateur d'accder directement 4 l'occurrence dsi$ne)
Cet acc(s direct entrine les modi%ications de la li$ne en cours)
<oir aussi les touc&es de %onction .10 et .11)
2)H)11 La touc&e 80NT:008 en mode <isualisation
!i la %onction 8<8 a t demande pour a2outir 4 cette li$ne de reprise, l'cran
est en mode de 8<isualisation8)
9ans ce cas, toute pression sur la touc&e 80NT:008 %orce le s3st(me 4 relire
certaines in%ormations dans la ta2le de reprise)
Les in%ormations ainsi ra%ra7c&ies sont les sui+antes ,
TIM0!TAM. du dernier COMMIT, Nom2re de COMMIT, Nom2re de %onctions 8I8, Nom2re
de %onctions 8T8, Nom2re de %onctions 88, Nom2re de COMMIT %orcs, Nom2re de
COMMIT accepts, Nom2re de COMMIT carts)
17
2)H)12) Les touc&es de %onction
.1
.2
.B :etour 4 l'cran d'appel et +alidation)
Toutes les modi%ications sur l'occurrence en cours sont
entrines)
.C :emise 4 Uro de l'occurrence en cours)
Cette %onction ne concerne /ue l'occurrence en cours)
Au cours de cette opration les Uones en saisie a%%ic&es 4 l'cran sont
recopies dans la ta2le de reprise, puis le contenu des colonnes du $roupe
8Borne in%rieure8 est recopi dans les colonnes du $roupe de 8:eprise8)
Ce traitement est similaire 4 celui ralis par CMT01IT a+ec la %onction
88 de %in de traitement)
Les modi%ications ralises par cette %onction sont immdiatement
entrines)
.G
.H :emise 4 Uro $lo2ale)
Cette %onction concerne toutes les occurrences du pro$ramme
en cours)
Au cours de cette opration les Uones en saisie de
l'occurrence en cours sont recopies dans la ta2le de
reprise, puis, pour toutes les occurrences, le contenu des
colonnes du $roupe 8Borne in%rieure8 est recopi dans les
colonnes du $roupe de 8:eprise8)
Les modi%ications ralises par cette %onction sont
immdiatement entrines)
.I .a$ination arri(re)
.ermet le positionnement sur les colonnes de ran$ in%rieur)
.? .a$ination a+ant)
.ermet le positionnement sur les colonnes de ran$ suprieur)
.@ onction !JA. de T!O)
.10 Occurrence prcdente) .a$ination latrale $auc&e)
.ermet de passer de l'occurrence n 4 l'occurrence n=1)
0ntrine les modi%ications sur l'occurrence n)
.11 Occurrence sui+ante) .a$ination latrale droite)
.ermet de passer de l'occurrence n 4 l'occurrence nV1)
0ntrine les modi%ications sur l'occurrence n)
.12 A2andon)
.ermet d'a2andonner la %onction en cours)
Le s3st(me ren+oie l'cran prcdent)
.ermet d'annuler les derni(res modi%ications ralises par
saisie sur cet cran et non encore entrines)
18
III - Le 'o#"e CMTEXIT
B)1 In+ocation
Le module CMT01IT est appel de la %aTon sui+ante,

CALL module "!ING .aram(tres !tructure !SLCA
BM CONT0NT L0NGT; O !tructure
B)1)1 Module)
Cette Uone d%inie en ni+eau 01 ou II contient o2li$atoirement sur ? caract(res
le nom du module CMT01IT /ui $(re les COMMIT)
II MO9"L0 .IC 1D?E <AL"0 'CMT01IT')
B)1)2 .aram(tres)
Cette structure contient les param(tres de communication entre CMT01IT et le
pro$ramme appelant)
Ces param(tres sont dcrits ci=dessous)
01 .A:M=CMT01IT)
0G .GMNAM0 .IC 1D?E)
0G OCC"::0NC0 .IC !@DCE COM.)
0G ONCT .IC 1)
0G O:C0=COMMIT .IC 1)
0G :0T=CO90=CMT01IT .IC !@DCE COM.)
0G R"!T0=COMMIT .IC 1)
0G 9":00=0NT:0=COMMIT .IC !@DCE COM.=B)
0G NOM=!T:"CT":0 .IC 1D?E)
0G T!=90:NI0:=COMMIT .IC 1D2HE)
0G NB=A..0L=I .IC !@D1GE COM.=B)
0G NB=A..0L=T .IC !@D1GE COM.=B)
0G NB=COMMIT=O:C0 .IC !@D1GE COM.=B)
0G NB=COMMIT=90CI90 .IC !@D1GE COM.=B)
0G NB=!AN!=COMMIT .IC !@D1GE COM.=B)
0G NB=A..0L= .IC !@D1GE COM.=B)
B)1)2)1) .GMNAM0 ,
Ce c&amp est rensei$n par le pro$ramme appelant)
Il doit contenir le nom du pro$ramme appelant)
Cette in%ormation n'est prise en compte par CMT01IT /ue lors de l'appel a+ec un
code %onction F 'I')
B)1)2)2) OCC"::0NC0 ,
Ce c&amp est rensei$n par le pro$ramme appelant)
Il doit contenir le numro d'occurrence du pro$ramme appelant dans le cas o= le
pro$ramme peut s'e#cuter en plusieurs Inits en parall(le) !i tel est le cas, le
numro d'occurrence doit 6tre transmis au pro$ramme par une clause .A:M, et le
pro$ramme doit a%%ecter, au contenu du c&amp, le numro de l'occurrence lu en
param(tre)
19
9ans tous les cas o= le pro$ramme n'est pas dcoup en plusieurs Inits en
parall(le, c'est 4 dire dans la ma5orit des cas, ce c&amp doit contenir la
+aleur 1)
Cette in%ormation n'est prise en compte par CMT01IT /ue lors de l'appel a+ec un
code %onction F 'I')
NB , Ce sont les deu# +aleurs contenues respecti+ement dans .GMNAM0 et
OCC"::0NC0 /ui permettent au module CMT01IT de retrou+er la li$ne de reprise
associe au couple 8nom du pro$ramme8 et 8occurrence8) Cette rec&erc&e est
e%%ectue uni/uement lors de l'appel a+ec le code %onction 'I')
B)1)2)B) ONCT ,
Ce c&amp est rensei$n par le pro$ramme appelant)
Il doit contenir, sur un caract(re, le code de la %onction demande au module
CMT01IT)
Ce c&amp peut contenir l'une des +aleurs sui+antes , I , T ou )
B)1)2)B)1 ONCTION 8I8 ,
Initialisation ou lecture de la li$ne de reprise a%in d'assurer le
repositionnement du curseur ma7tre)
9ans ce cas, le module CMT01IT retrou+e la li$ne de reprise associe au couple
8pro$ramme = occurrence8 et restitue le contenu de cette li$ne dans la Uone de
communication 8!tructure8 D%ournie parmi l'un des param(tres de l'ordre CALL
CMT01ITE)
L'appel 4 CMT01IT a+ec la %onction 'I' doit o2li$atoirement 6tre le premier
ralis au cours de c&a/ue e#cution d'un pro$ramme)
Les B $roupes de donnes 8:eprise8, 8Borne in%rieure8 et 8Borne suprieure8
sont documents a+ec le contenu de la li$ne de reprise)
Les colonnes de la cl lo$i/ue de reprise sont celles /ui ne ser+ent /u'au
repositionnement lo$i/ue d'un curseur ma7tre) Le repositionnement peut 6tre
e%%ectu 4 partir de donnes ou de compteurs lo$i/ues)
Les compteurs 4 usa$e statisti/ue ne %ont pas partie des colonnes lo$i/ues de
reprise)
.rincipes ,
aE Il n'3 a /ue le pro$ramme appelant /ui peut dterminer s'il dmarre un
nou+eau traitement ou s'il s'a$it de la continuation d'un traitement
prcdemment interrompu)
2E !i le pro$ramme appelant est au d2ut d'un nou+eau traitement, il constate
/ue le contenu des colonnes du $roupe de 8:eprise8 est identi/ue 4 celui du
$roupe 8Borne in%rieure8)
cE !i le contenu des colonnes lo$i/ues de reprise est di%%rent dans les $roupes
8:eprise8 et 8Borne in%rieure8, le pro$ramme appelant se trou+e dans le cas de
la poursuite d'un traitement antrieur /ui a t interrompu) Il s'a$it d'un
repositionnement en cours de traitement)
dE Le contenu des colonnes lo$i/ues de reprise doit normalement ser+ir 4
l'ou+erture du curseur ma7tre du pro$ramme appelant)
D <eiller 4 documenter les &ost=+aria2les du curseur ma7tre a+ant son
ou+ertureE)
20
B)1)2)B)2) ONCTION 8T8 ,
C'est la %onction de traitement standard du module)
Suand le module est appel pour raliser cette %onction, il e#amine en premier
lieu la +aleur du param(tre O:C0=COMMIT Ddcrit au para$rap&e B)1)2)HE)
!i ce param(tre contient la +aleur 8O8 , on poursuit au rep(re A)
!i le param(tre O:C0=COMMIT contient une +aleur di%%rente de 8O8, le module
CMT01IT rec&erc&e la +aleur du TIM0!TAM. au moment du prcdent COMMIT)
Ce TIM0!TAM. est compar au TIM0!TAM. courant)
Le module en dduit une dure coule Den secondesE /ui spare les deu#
TIM0!TAM.)
!i cette dure coule est in%rieure 4 la dure minimum entre deu# COMMIT telle
/ue trou+e dans la li$ne de reprise, aucune mise 4 5our n'est e%%ectue, le
module CMT01IT se termine par un code retour 0)
!i la dure coule est suprieure ou $ale 4 la dure minimum entre deu# COMMIT
telle /ue trou+e dans la ta2le de reprise, on poursuit au rep(re A)
NB , !i la dure minimum entre deu# COMMIT est nulle, la dure coule lui sera
tou5ours suprieure) Le positionnement de ce param(tre 4 Uro permet de raliser
un COMMIT apr(s c&a/ue unit lo$i/ue de tra+ail sans imposer une modi%ication du
pro$ramme)
:0.0:0 A,
Le module CMT01IT ralise principalement les oprations sui+antes,
1E mise 4 5our de la li$ne de reprise ,
par ra%ra7c&issement du TIM0!TAM. du dernier COMMIT,
et
par recopie dans la li$ne de reprise des in%ormations
trou+es dans la Uone de communication 8!tructure8)
2E ralisation e%%ecti+e d'un COMMIT)
BE mmorisation du TIM0!TAM. courant en +ue de la dtermination de la dure
coule lors des proc&ains appels)
CE retour au pro$ramme appelant)
B)1)2)B)B) ONCTION 88 ,
La %onction '' correspond 4 une %onction de %in d'un traitement Batc&)
Il %aut remettre la cl de reprise dans son tat initial, par recopie des
+aleurs du $roupe 8Borne in%rieure8 dans le $roupe de 8reprise8)
.ar con+ention, on est au d2ut d'un traitement /uand la cl lo$i/ue de reprise
est identi/ue dans le $roupe de 8reprise8 et dans le $roupe 82orne in%rieure8)
21
9ans le traitement de cette %onction '', le module ralise donc les oprations
dans l'ordre sui+ant ,
1E mise 4 5our de la li$ne de reprise ,
par ra%ra7c&issement du TIM0!TAM. du dernier COMMIT,
et
par recopie dans la li$ne de reprise des in%ormations
trou+es dans la Uone de communication 8!tructure8)
2E mise 4 5our de la li$ne de reprise
par ra%ra7c&issement du TIM0!TAM. du dernier COMMIT,
et
par recopie dans le $roupe de 8reprise8 de toutes les
in%ormations contenues dans le $roupe 8Borne in%rieure8)
BE ralisation e%%ecti+e d'un COMMIT)
CE mmorisation du TIM0!TAM. courant en +ue de la dtermination de la dure
coule lors des proc&ains appels)
CE retour au pro$ramme appelant)
B)1)2)C) O:C0=COMMIT ,
Ce c&amp est rensei$n par le pro$ramme appelant, et modi%i par CMT01IT)
Le contenu de ce c&amp n'est pris en considration /ue dans le cas de la
%onction 'T')
Lors du traitement de la ONCTION 'I', CMT01IT ne ralise aucun COMMIT, /uelle
/ue soit la +aleur de O:C0=COMMIT)
Lors du traitement de la ONCTION '', CMT01IT ralise tou5ours un COMMIT apr(s
les mises 4 5our de la ta2le de reprise)
O:C0=COMMIT contient soit la +aleur 8O8 DOuiE ou toute autre +aleur interprte
comme 'N' DNonE )
Le pro$ramme appelant a le c&oi# entre deu# possi2ilits ,
aE il donne l'ordre au module CMT01IT de raliser imprati+ement un COMMIT)
O:C0=COMMIT contient, dans ce cas, la +aleur 8O8 DOuiE)
2E il laisse au module CMT01IT le soin de 5u$er de l'opportunit de raliser ou
non un COMMIT, en %onction du temps coul depuis le prcdent COMMIT et de la
dure /ui doit les sparer)
O:C0=COMMIT contient dans ce cas une +aleur di%%rente de 8O8)
La dure minimum entre 2 COMMIT a t spci%ie pour le pro$ramme $rWce 4
l'outil de dialo$ue I!.)
NB , Il est possi2le d'imposer un COMMIT imprati% lors de c&a/ue appel du
module CMT01IT a+ec la ONCTION 'T' ,
- soit en codant 'O' dans le param(tre O:C0=COMMIT, a+ant c&a/ue appel 4
CMT01IT) 0n e%%et, CMT01IT ren+oie tou5ours la +aleur 'N' dans ce param(tre,
apr(s a+oir ralis un COMMIT)
- soit en indi/uant une dure de COMMIT 4 Uro dans la li$ne de reprise associe
au couple 8pro$ramme = occurrence8)
9ans ce cas, la +aleur du param(tre O:C0=COMMIT est indi%%rente)
22
Cette solution peut 6tre utile, dans des cas e#ceptionnels, /uand un pro$ramme
s'interrompt anormalement sans %ournir d'indication sur son conte#te au moment
de l'interruption) "n positionnement temporaire de la dure du COMMIT 4 Uro
permettra de retrou+er la cl lo$i/ue de reprise de la derni(re unit lo$i/ue de
tra+ail traite correctement)
Comme indi/u dans notre G"I90 M0T;O9OLOGIS"0 Dpara$rap&e H)BE, nous
dconseillons la demande s3stmati/ue de COMMIT apr(s c&a/ue unit lo$i/ue de
tra+ail)

:A..0L , CMT01IT ren+oie tou5ours la +aleur 'N' dans ce param(tre, apr(s a+oir
ralis le COMMIT demand)
B)1)2)G) :0T=CO90=CMT01IT ,
Ce c&amp est rensei$n par le module CMT01IT)
Il contient le code retour d'e#cution du module CMT01IT)
Le c&amp contient une +aleur nulle dans le cas d'une e#cution normale)
Le test de ce code retour est imprati% apr(s c&a/ue appel du module CMT01IT)
Toute +aleur di%%rente de Uro doit 6tre considre comme anormale et doit
entra7ner l'arr6t du pro$ramme appelant, de la m6me mani(re /ue si tout autre
ordre de mise 4 5our !SL, du pro$ramme appelant, se ralise mal)
!i le code retour de CMT01IT est di%%rent de Uro, le pro$ramme appelant doit
donc ,
aE rcuprer ce code retour et restituer D par 9I!.LAM ou impressionE tous les
param(tres de communication entre le pro$ramme appelant et le module CMT01IT)
2E tester si le !SLCO90 est di%%rent de Uro) !i tel est le cas, le pro$ramme
appelant doit raliser une anal3se complmentaire de la !SLCA, a%in de mettre en
%orme et restituer le messa$e d'erreur de 9B2 %ormat par 9!NTIA:)
cE terminer l'e#cution par la $nration d'un AB0N9 "!0: ou d'un ordre :OLLBACK
a%in d'assurer une int$rit des donnes)
23
TABL0A" 90! <AL0":! .O!!IBL0! 9" CO90 :0TO": 90 CMT01IT
+aleur si$ni%ication
0 OK) Tout est normal)
1 onction in+alide)
La Uone ONCT contient une +aleur di%%rente de 8I8,
8T8 ou 88)

2 Inutilis)

B La li$ne de reprise identi%ie par le couple 8nom du
pro$ramme8 et 8occurrence8 n'a pas t trou+e dans la
ta2le de reprise)
C .ro2l(me d'acc(s 9B2 lors du !0L0CT sur la ta2le de
reprise)
Il est conseill d'anal3ser la !SLCA)
G Le nom de structure associe au pro$ramme dans la ta2le
de reprise, n'a pas t trou+ dans la ta2le des
structures)

H .ro2l(me d'acc(s 9B2 lors du !0L0CT sur la ta2le des
structures)
Il est conseill d'anal3ser la !SLCA)
I La lon$ueur de la structure d%inie dans le s3st(me est
di%%rente de celle dcrite dans le pro$ramme)
<ri%ier si la description COBOL de la structure
correspond 4 la description contenue dans la ta2le des
colonnes d'une structure) Cette description est
a%%ic&a2le par l'outil de dialo$ue I!.)
? La li$ne de reprise a t trou+e, mais elle contient
une in%ormation interne au s3st(me /ui indi/ue /ue
cette li$ne n'a pas t +alide)
Il %aut accder, sous dialo$ue I!., a+ec la %onction
de modi%ication, 4 cette li$ne et la +alider par la
touc&e de %onction .B)
@ .ro2l(me 9B2 lors de la mise 4 5our de la ta2le de
reprise, a+ant le COMMIT)
Il est conseill d'anal3ser la !SLCA)
24
B)1)2)H) R"!T0=COMMIT ,
Ce c&amp est rensei$n par le module CMT01IT)
Il indi/ue si le module CMT01IT +ient de raliser ou non un COMMIT)
La +aleur 8O8 DOuiE indi/ue /ue CMT01IT +ient de raliser un COMMIT)
Toute autre +aleur indi/ue le contraire)
B)1)2)I) 9":00=0NT:0=COMMIT)
Ce c&amp est rensei$n par le module CMT01IT)
Il contient la dure minimum /ui doit sparer deu# COMMIT)
Cette dure est e#prime en secondes)
Il est %ourni 4 titre indicati%) Il pro+ient de la li$ne de reprise associe au
couple 8pro$ramme = occurrence8)
!on contenu est ra%ra7c&i 4 c&a/ue appel a+ec une %onction 'I')

B)1)2)?) NOM=!T:"CT":0)
Ce c&amp est rensei$n par le module CMT01IT)
Il contient le nom de la structure associe au pro$ramme dans la ta2le de
reprise)
Il est %ourni 4 titre indicati%) Il pro+ient de la li$ne de reprise associe au
couple 8pro$ramme = occurrence8)
!on contenu est ra%ra7c&i 4 c&a/ue appel a+ec une %onction 'I')

B)1)2)@) T!=90:NI0:=COMMIT)
Ce c&amp est rensei$n par le module CMT01IT)
Il contient le TIM0!TAM. o2ser+ lors du prcdent COMMIT)
Le prcdent COMMIT peut pro+enir d'une e#cution antrieure du pro$ramme, ou du
traitement en cours)
Ce TIM0!TAM. est aussi mmoris dans la ta2le de reprise)
B)1)2)10) Les compteurs)
Il e#iste H compteurs rensei$ns par le module CMT01IT,
- NB=A..0L=I
- NB=A..0L=T
- NB=COMMIT=O:C0
- NB=COMMIT=90CI90
- NB=!AN!=COMMIT
- NB=A..0L=
Ces compteurs sont remis 4 Uro lors du premier appel a+ec la %onction 'I' au
cours d'une nou+elle e#cution du pro$ramme)
Ces compteurs sont mmoriss dans la ta2le des li$nes de reprise)
Ils sont a%%ic&a2les par l'outil de dialo$ue I!.)
25
La d%inition de ces compteurs est la sui+ante ,
1E NB=A..0L=I , Nom2re d'appels 4 CMT01IT a+ec ONCTF'I'
2E NB=A..0L=T , Nom2re d'appels 4 CMT01IT a+ec ONCTF'T'
Les trois compteurs /ui sui+ent dtaillent NB=A..0L=T)
2)a NB=COMMIT=O:C0 , Nom2re d'appels 4 CMT01IT a+ec ONCT F'T'
et O:C0=COMMIT F 'O')
Tous ces appels ont t sui+is d'un COMMIT)


2)2 NB=COMMIT=90CI90, Nom2re d'appels 4 CMT01IT a+ec ONCT F'T'
et O:C0=COMMIT di%%rent de 'O')
Ces appels ont t sui+is d'un COMMIT
dcid par le module CMT01IT)

2)c NB=!AN!=COMMIT , Nom2re d'appels 4 CMT01IT a+ec ONCT F'T'
et O:C0=COMMIT di%%rent de 'O')
Ces appels n'ont pas entra7n de COMMIT)

BE NB=A..0L= , Nom2re d'appels 4 CMT01IT a+ec ONCTF''
B)1)B !tructure)
Cette structure contient la d%inition des crit(res de reprise, des 2ornes
in%rieures et suprieures utilises par le pro$ramme appelant)
Lors de la d%inition de la li$ne de reprise du pro$ramme, un nom de structure a
t associ 4 ce pro$ramme) Le module de dialo$ue I!. a stocP dans le .9!
associ 4 ce pro$ramme la dclaration COBOL correspondant 4 cette structure)
Le nom du mem2re du .9! /ui contient la d%inition de la structure est identi/ue
au nom de cette structure)
La d%inition de cette structure doit donc 6tre implante en
JO:KING=!TO:AG0 !0CTION ,
- soit implicitement, en utilisant la clause CO.M de COBOL
CO.M structure
Il est 2ien sr ncessaire de pr+oir dans les procdures de compilation, la
possi2ilit de r%rencer le ou les .9! concerns)
Nous recommandons ce t3pe de dclaration)

- soit e#plicitement, en recopiant la d%inition +o/ue plus &aut, directement
dans le pro$ramme)
Nous ne recommandons pas une telle prati/ue, 2ien /ue celle=ci soit accepta2le,
dans la mesure o= le module de dialo$ue I!. interdit toute modi%ication dans la
d%inition d'une structure, d(s /ue celle=ci a t associe 4 un pro$ramme)
La structure est compose de B $roupes de donnes,
1E $roupe de 8reprise8 Din%ormations pr%i#es par 8:0=8E
2E $roupe 8Borne in%rieure8 Din%ormations pr%i#es par 8BI=8E
BE $roupe 8Borne suprieure8 Din%ormations pr%i#es par 8B!=8E
C&a/ue $roupe de donnes comporte la m6me liste d'in%ormations lmentaires)
Cette liste d'in%ormations lmentaires pro+ient de la d%inition de la
structure /ui a t associe au pro$ramme par l'outil de dialo$ue I!.)
26
.armi la liste d'in%ormations lmentaires, il %aut distin$uer celles /ui
constituent la cl lo$i/ue de reprise, de celles /ui reprsentent des compteurs
4 usa$e statisti/ue)
C&a/ue $roupe de donnes est destin 4 un usa$e particulier)
La cl lo$i/ue de reprise au moment du COMMIT doit 6tre stocPe dans le $roupe
de 8reprise8) Les 2ornes in%rieures et suprieures de la cl lo$i/ue de reprise
doi+ent 6tre stocPes dans les $roupes correspondants)
Les compteurs 4 usa$e statisti/ue doi+ent 6tre stocPs dans le $roupe 8Borne
suprieure8 Dou 4 la ri$ueur dans le $roupe 8Borne in%rieure8E) 9e cette
%aTon, on peut +isualiser ces compteurs, $rWce 4 l'outil de dialo$ue, apr(s la
%in du pro$ramme)
0n e%%et, la ONCTION '' recopie le contenu du $roupe 8Borne in%rieure8 dans
le $roupe de 8reprise8 et perd ainsi le contenu prcdent du $roupe de reprise)
B)1)C !SLCA)
Cette structure correspond 4 la !SLCA de 9B2) La d%inition de cette structure
est o2tenue par l'ordre
010C !SL INCL"90 !SLCA )))
Cet ordre dclarati% doit 6tre implant en JO:KING=!TO:AG0 !0CTION)
La !SLCA est passe en param(tre au module CMT01IT, a%in /ue celle=ci soit
rensei$ne lors des appels 4 9B2 raliss par le module CMT01IT) 9e cette %aTon,
en cas d'anomalie 9B2 rencontre par le module CMT01IT, le pro$ramme appelant
dispose des in%ormations de la !SLCA et peut DdoitE mettre en %orme et restituer
le contenu du messa$e d'erreur %ourni par 9B2)
!i le code retour du module CMT01IT est di%%rent de Uro, le pro$ramme appelant
doit aussi tester le !SLCO90)
!i celui=ci est di%%rent de Uro, le pro$ramme appelant doit anal3ser et
restituer la !SLCA apr(s appel au module 9!NTIA:)
ATT0NTION , le module CMT01IT ralise des ordres 9B2) Il utilise la !SLCA) Le
contenu de celle=ci est donc modi%i 4 c&a/ue appel du module CMT01IT) Le
pro$rammeur doit 6tre +i$ilant dans les tests du !SLCO90 comme lors de tout
appel 4 un sous=pro$ramme /ui ralise des ordres 9B2)
0#emple ,
010C !SL ".9AT0 )))
I !SLCO90 F 0
CALL CMT01IT "!ING )))
0N9=I)
I !SLCO90 NOT F 0
FFFO Attention, ce !SLCO90 di%%rent de Uro peut a+oir deu# ori$ines
compl(tement di%%rentes ,
aE l'ordre 010C !SL ".9AT0 du pro$ramme principal a o2tenu ce code retour)

ou
2E l'ordre 010C !SL ".9AT0 s'est correctement pass, le !SLCO90 correspondant
contient la +aleur 0) 9ans ce cas, le pro$ramme principal a %ait appel au module
CMT01IT et ce dernier a o2tenu un !SLCO90 di%%rent de Uro au cours de son
droulement)
27
La !SLCA n'est pas modi%ie par le module CMT01IT si celui=ci n'a ralis aucun
ordre 9B2 4 cause d'un pro2l(me dans la rception des param(tres)
B)2) BIN9)
Le module CMT01IT ralise des acc(s 4 9B2, il est donc ncessaire de raliser,
lors de l'installation sur un sous=s3st(me 9B2, un BIN9 du module sous %orme de
.ACKAG0)
IL est 2ien sr imprati% de %aire %i$urer ce module dans la .KLI!T du .LAN de
tout pro$ramme 2atc& /ui %ait appel 4 ce module)
28
IV STRUCTURE GENERALE DUN PROGRAMME BATCH AVEC COMMIT.
IDENTIFICATION DIVISION.
PROGRAM-ID. COMB10.
*========================*
WORKING-STORAGE SECTION.
77 CPT-LOCK PIC S9(04) COMP.
77 CMT-PARTITION PIC 99.

01 PGCOMMIT PIC X(08) VALUE 'CMTEXIT '.
* COPY CMTEXIT.
01 PARM-CMTEXIT.
05 PGMNAME PIC X(8).
05 OCCURRENCE PIC S9(4) COMP.
05 FONCT PIC X.
05 FORCE-COMMIT PIC X.
05 RET-CODE-CMTEXIT PIC 9(4) COMP.
05 JUSTE-COMMIT PIC X.
05 DUREE-ENTRE-COMMIT PIC S9(04) COMP-3.
05 NOM-STRUCTURE PIC X(8).
05 TS-DERNIER-COMMIT PIC X(26).
05 NB-APPEL-I PIC S9(15) COMP-3.
05 NB-APPEL-T PIC S9(15) COMP-3.
05 NB-COMMIT-FORCE PIC S9(15) COMP-3.
05 NB-COMMIT-DECIDE PIC S9(15) COMP-3.
05 NB-SANS-COMMIT PIC S9(15) COMP-3.
05 NB-APPEL-F PIC S9(15) COMP-3.
29
COPY COMB10 .
Dclaration de la structure de reprise
La structure contient les 3 groupes de donnes :
1) groupe de reprise
2) groupe borne infrieure
3) groupe borne suprieure

dans le groupe de reprise, la cl logique de reprise est constitue
de 4 colonnes : application, client, contrat et numro dopration
Cette dclaration est disponible via une clause COPY.
01 COMB10.
* GROUPE DE REPRISE
05 RE-APPLICATION PIC X(4).
05 RE-CLI PIC S9(11)V USAGE COMP-3.
05 RE-CONT PIC S9(11)V USAGE COMP-3.
05 RE-NUM-OP PIC S9(11)V USAGE COMP-3.
05 RE-CPT-LECP PIC S9(11)V USAGE COMP-3.
05 RE-CPT-MAJP PIC S9(11)V USAGE COMP-3.
05 RE-CPT-LECT PIC S9(11)V USAGE COMP-3.
05 RE-CPT-MAJT PIC S9(11)V USAGE COMP-3.
* GROUPE BORNE INFERIEURE
05 BI-APPLICATION PIC X(4).
05 BI-CLI PIC S9(11)V USAGE COMP-3.
05 BI-CONT PIC S9(11)V USAGE COMP-3.
05 BI-NUM-OP PIC S9(11)V USAGE COMP-3.
05 BI-CPT-LECP PIC S9(11)V USAGE COMP-3.
05 BI-CPT-MAJP PIC S9(11)V USAGE COMP-3.
05 BI-CPT-LECT PIC S9(11)V USAGE COMP-3.
05 BI-CPT-MAJT PIC S9(11)V USAGE COMP-3.
* GROUPE BORNE SUPERIEURE
05 BS-APPLICATION PIC X(4).
05 BS-CLI PIC S9(11)V USAGE COMP-3.
05 BS-CONT PIC S9(11)V USAGE COMP-3.
05 BS-NUM-OP PIC S9(11)V USAGE COMP-3.
05 BS-CPT-LECP PIC S9(11)V USAGE COMP-3.
05 BS-CPT-MAJP PIC S9(11)V USAGE COMP-3.
05 BS-CPT-LECT PIC S9(11)V USAGE COMP-3.
05 BS-CPT-MAJT PIC S9(11)V USAGE COMP-3.
EXEC SQL INCLUDE SQLCA END-EXEC.
EXEC SQL INCLUDE JFB116V1 END-EXEC.
01 JFB116C1 REDEFINES JFB116V1.
05 B116-CLE.
10 B116-APPLICATION PIC X(4).
10 B116-CLI PIC S9(11) COMP-3.
10 B116-CONT PIC S9(3) COMP-3.
10 B116-NUM-OP PIC S9(11) COMP-3.
05 B116-INFO-LOCK.
10 B116-TYPE-LOCK PIC S9(3) COMP-3.
10 B116-TIME-STAMP PIC X(26).
10 B116-TERM-ID PIC X(4).
10 B116-CODE-PGM PIC X(8).
10 B116-CODE-SIGNA PIC X(6).
30
Dclaration du curseur matre

Celui-ci simule le cas dun programme occurrences multiples,
dont chaque occurrence doit traiter une plage dfinie par
application, client

Dans la table de reprise, pour chaque occurrence :
- le groupe BORNE INFERIEURE contient le couple de la valeur
la plus basse que doit slectionner le curseur
- le groupe BORNE SUPERIEURE contient le plus grand couple que
doit slectionner le curseur
Dans la table de reprise on trouvera donc des valeurs conscutives
Entre le groupe BORNE SUPPRIEURE de loccurrence N et
Le groupe BORNE INFERIEURE de loccurrence N+1
a EXEC SQL DECLARE CURS_LOCK CURSOR WITH HOLD FOR
b SELECT APPLICATION , CLI , CONT , NUM_OP
c FROM JFB116V1
d WHERE TYPE_LOCK > 0
e AND ( ( APPLICATION = :RE-APPLICATION
f AND CLI = :RE-CLI
g AND CONT = :RE-CONT
h AND NUM_OP > :RE-NUM-OP )
i OR ( APPLICATION = :RE-APPLICATION
j AND CLI = :RE-CLI
k AND CONT > :RE-CONT )
l OR ( APPLICATION = :RE-APPLICATION
m AND CLI > :RE-CLI )
m OR ( APPLICATION > :RE-APPLICATION ) )
o AND APPLICATION BETWEEN :BI-APPLICATION
p AND :BS-APPLICATION
q AND CLI BETWEEN :BI-CLI
r AND :BS-CLI
s ORDER BY APPLICATION , CLI , CONT , NUM_OP
END-EXEC.
les lignes e m servent la reprise du programme aprs les
dernires valeurs traites, ou valeurs initiales
les lignes o permettent de sassurer que le curseur ne ramne
pas un couple en dehors de la plage traite
31
PROCEDURE DIVISION USING FILLER-LINKAGE.
COPY CAFINIT REPLACING ' ' BY ' '.
MOVE LINK-SSID TO WS-SSID.
MOVE LINK-PLAN TO WS-PLAN.
MOVE LINK-PARTITION TO CMT-PARTITION.
PARAGRAPHE-PRINCIPAL.
300-TRAIT
le nom du programme appelant doit tre fourni CMTEXIT
MOVE 'COMB10' TO PGMNAME OF PARM-CMTEXIT.
ainsi que le numro de loccurrence, ici via les paramtres
de CAF
MOVE CMT-PARTITION TO OCCURRENCE OF PARM-CMTEXIT.
lecture de la table de reprise, elle fournit les valeurs
de reprise
MOVE 'I' TO FONCT OF PARM-CMTEXIT.
MOVE 'N' TO FORCE-COMMIT OF PARM-CMTEXIT.
CALL PGCOMMIT USING PARM-CMTEXIT MY-STRUCT SQLCA
BY CONTENT LENGTH OF MY-STRUCT.
PERFORM 000-COMMIT-TEST-ERREUR THRU
000-FIN-COMMIT-TEST-ERREUR.
MOVE RE-APPLICATION TO COM-APPLICATION.
MOVE RE-CLI TO COM-CLI.
MOVE RE-CONT TO COM-CONT.
MOVE RE-NUM-OP TO COM-NUM-OP.
Les compteurs lis au passage sont remis zro
MOVE 0 TO BS-CPT-LECP.
MOVE 0 TO BS-CPT-MAJP.

on dtermine sil sagit dune reprise aprs incident
ou dun nouveau traitement
IF RE-APPLICATION = BI-APPLICATION
AND RE-CLI = BI-CLI
AND RE-CONT = BI-CONT
AND RE-NUM-OP = BI-NUM-OP
MOVE 0 TO BS-CPT-LECT
MOVE 0 TO BS-CPT-MAJT
END-IF
si lon souhaite que les compteurs du passage et
du traitement soient ds prsent stocks dans
la table de reprise, on appelle le module CMTEXIT
en forant le commit.
MOVE 'T' TO FONCT OF PARM-CMTEXIT.
MOVE 'O' TO FORCE-COMMIT OF PARM-CMTEXIT.
CALL PGCOMMIT USING PARM-CMTEXIT MY-STRUCT SQLCA
BY CONTENT LENGTH OF MY-STRUCT.
PERFORM 000-COMMIT-TEST-ERREUR THRU
000-FIN-COMMIT-TEST-ERREUR.
ouverture du curseur matre avec la cl de reprise
EXEC SQL OPEN CURS_LOCK END-EXEC.
IF SQLCODE NOT = 0
DISPLAY ' PB OPEN CURSEUR LOCK JFB116V1 '
.....
32
END-IF.
pendant toue la boucle de traitement, on laisse
le soin au module CMTEXIT de dcider de
lopportunit du COMMIT.
On positionne les paramtres pour toute la boucle.
MOVE 'T' TO FONCT OF PARM-CMTEXIT.
MOVE 'N' TO FORCE-COMMIT OF PARM-CMTEXIT.
EXEC SQL FETCH CURS_LOCK
INTO :B116-APPLICATION
,:B116-CLI
,:B116-CONT
,:B116-NUM-OP
END-EXEC.
EXEC SQL UPDATE JFB116V1
SET TYPE_LOCK = 0
,TERM_ID = ' '
,CODE_PGM = ' '
,CODE_SIGNA = ' '
WHERE APPLICATION = :B116-APPLICATION
AND CLI = :B116-CLI
AND CONT = :B116-CONT
AND NUM_OP = :B116-NUM-OP
END-EXEC.
aprs lexcution de lupdate, la rcupration du
sqlcode 911(DEADLOCK) permet dviter de laisser
filer labend et de redmarrer au dbut programme
IF SQLCODE NOT = 0 AND SQLCODE NOT = -911
DISPLAY ' PB UPDATE LOCK JFB116V1 '
.....
ELSE
IF SQLCODE = -911 AND CPT-LOCK <= 10
ADD 1 TO CPT-LOCK
GO TO 300-TRAIT
END-IF
END-IF.
MOVE 0 TO CPT-LOCK
Le programme atteint la fin dune unit logique
de travail. Il va appeler le module CMTEXIT en
lui laissant le choix de raliser un COMMIT ou non.
Avant lappel le programme charge la cl de reprise
MOVE B116-APPLICATION TO RE-APPLICATION.
MOVE B116-CLI TO RE-CLI.
MOVE B116-CONT TO RE-CONT.
MOVE B116-NUM-OP TO RE-NUM-OP.
MOVE 'T' TO FONCT OF PARM-CMTEXIT.
33
MOVE 'N' TO FORCE-COMMIT OF PARM-CMTEXIT.
CALL PGCOMMIT USING PARM-CMTEXIT MY-STRUCT SQLCA
BY CONTENT LENGTH OF MY-STRUCT.
PERFORM 000-COMMIT-TEST-ERREUR THRU
000-FIN-COMMIT-TEST-ERREUR.
Pour faire un traitement aprs chaque COMMIT
IF JUSTE-COMMIT = 'O'
ADD 1 TO NB-COMMIT
DISPLAY 'COM-APPLI ' COM-APPLICATION
' CLI ' COM-CLI ' CONT ' COM-CONT
' NUM_OP ' COM-NUM-OP
END-IF.
Fin de la boucle de traitement
On a atteint la fin du traitement.
Les compteurs statistiques sont disponibles dans le groupe
BORNE SUPERIEURE .
Il faut mettre jour la cl logique de reprise
avec sa valeur minimum. On appelle donc le module
CMTEXIT avec la fonction F.
MOVE 'F' TO FONCT OF PARM-CMTEXIT.
MOVE 'O' TO FORCE-COMMIT OF PARM-CMTEXIT.
CALL PGCOMMIT USING PARM-CMTEXIT MY-STRUCT SQLCA
BY CONTENT LENGTH OF MY-STRUCT.
PERFORM 000-COMMIT-TEST-ERREUR THRU
000-FIN-COMMIT-TEST-ERREUR.
Paragraphe de gestion des erreurs de CMTEXIT
000-COMMIT-TEST-ERREUR.
*-----------------------
IF RET-CODE-CMTEXIT OF PARM-CMTEXIT NOT = 0
OR FONCT OF PARM-CMTEXIT = 'F'
DISPLAY '-- DUREE ENTRE COMMIT-- '
DUREE-ENTRE-COMMIT OF PARM-CMTEXIT
DISPLAY '-- NOM STRUCTURE --- '
NOM-STRUCTURE OF PARM-CMTEXIT
DISPLAY '-- TS DERNIER COMMIT --- '
TS-DERNIER-COMMIT OF PARM-CMTEXIT
DISPLAY '-- NBR D APPEL I --- '
NB-APPEL-I OF PARM-CMTEXIT
34
DISPLAY 'NBR D APPEL T --- '
NB-APPEL-T OF PARM-CMTEXIT
DISPLAY '-- NBR COMMIT FORCE --- '
NB-COMMIT-FORCE OF PARM-CMTEXIT
DISPLAY '-- NBR COMMIT DECIDE --- '
NB-COMMIT-DECIDE OF PARM-CMTEXIT
DISPLAY '-- NBR SANS COMMIT --- '
NB-SANS-COMMIT OF PARM-CMTEXIT
DISPLAY '-- NBR APPEL FIN --- '
NB-APPEL-F OF PARM-CMTEXIT
EVALUATE RET-CODE-CMTEXIT OF PARM-CMTEXIT
WHEN 0
DISPLAY '0- OK. TRAITEMENT NORMAL '
WHEN 1
DISPLAY '1*-FONCTION INVALIDE----- '
PERFORM 999-DEB-ERREUR THRU 999-FIN-ERREUR
WHEN 2
DISPLAY '2*-POINTEUR ERRONE ----- '
PERFORM 999-DEB-ERREUR THRU 999-FIN-ERREUR
WHEN 3
DISPLAY '3*-NOM PROG-OCCURRENCE NON TROUVE'
PERFORM 999-DEB-ERREUR THRU 999-FIN-ERREUR
WHEN 4
DISPLAY '4*-PB ACCES SELECT TABLE REPRISE-'
PERFORM 999-DEB-ERREUR THRU 999-FIN-ERREUR
WHEN 5
DISPLAY '5*-STRUCTURE NON TROUVEE'
PERFORM 999-DEB-ERREUR THRU 999-FIN-ERREUR
WHEN 6
DISPLAY '6*-PB ACCES SELECT TABLE STRUCTURE
PERFORM 999-DEB-ERREUR THRU 999-FIN-ERREUR
WHEN 7
DISPLAY '7*-LONGUEUR DE STRUCTURE INCOMPATIBLE'
PERFORM 999-DEB-ERREUR THRU 999-FIN-ERREUR
WHEN 8
DISPLAY '8*-INUTILISE '
PERFORM 999-DEB-ERREUR THRU 999-FIN-ERREUR
WHEN 9
DISPLAY
'9*-PB MISE A JOUR TABLE REPRISE AVANT COMMIT'
PERFORM 999-DEB-ERREUR THRU 999-FIN-ERREUR
WHEN 10
DISPLAY '10*-PB MISE A JOUR TABLE REPRISE FIN'
PERFORM 999-DEB-ERREUR THRU 999-FIN-ERREUR
WHEN OTHER
DISPLAY
'*-INTERPRETATION VALEUR RET-CODE IMPOSSIBLE'
PERFORM 999-DEB-ERREUR THRU 999-FIN-ERREUR
END-EVALUATE
END-IF.
000-FIN-COMMIT-TEST-ERREUR. EXIT.
Paragraphe de gestion des abends programms
et mise en forme du SQLCA de DB2.
999-DEB-ERREUR.

* DISPLAY 'ORDRE SQL : ' MCOF-ORDRE-SQL.
MOVE SQLCODE TO W-SQLCODE.
DISPLAY 'SQLCODE : ' W-SQLCODE.
DISPLAY 'TABLE DB2 : ' MCOF-INFO-DIV.
DISPLAY 'PARAGRAPHE : ' MCOF-PARAG.
DISPLAY 'BASE : ' MCOF-NOM-CURS.
*
35
CALL 'DB2ANOS' USING SQLCA MCOF-ZPGM-ID.
999-FIN-ERREUR.
EXIT.
36
V - LES TABLES DB2 DU S(STEME COMBAT
Le s3st(me poss(de B ta2les 9B2)
Il est tr(s %ortement recommand d'interdire la modi%ication directe des ta2les,
dcrites ci=dessous, autrement /ue par les outils destins spci%i/uement 4 leur
mise 4 5our D outil de dialo$ue I!. ou module CMT01IT E
G)1 La ta2le des structures , RXX1G10T
Cette ta2le contient une li$ne pour c&a/ue structure d%inie)

La cl primaire est constitue par le nom de la structure)
G)2 La ta2le des colonnes des structures , RXX1G20T
Cette ta2le contient une li$ne pour c&a/ue colonne de c&a/ue structure)
La cl primaire est constitue par le couple ,
- nom de la structure
- nom de la colonne
Il e#iste un deu#i(me inde# uni/ue sur le couple ,
- nom la structure
- numro d'ordre de la colonne dans la structure)
G)B La ta2le des li$nes de reprise , RXX1GB0T
Cette ta2le contient une li$ne pour c&a/ue couple ,
- nom du pro$ramme
- numro d'occurrence)
La cl primaire est donc constitue de ces deu# colonnes)
L'occurrence 1 est tou5ours prsente pour un pro$ramme)
Certaines in%ormations prsentes dans la ta2le, ne prsentent un sens dans le
s3st(me, /ue pour l'occurrence numro 1) D e#, le nom de la structure trou+
dans l'occurrence 1 est +ala2le pour toutes les occurrences du m6me pro$ramme,
de m6me c'est l'occurrence 1 /ui %ournit le nom2re total d'occurrences du
pro$rammeE)
C&a/ue li$ne de la ta2le de reprise, occupe une taille proc&e d'une pa$e de CK)
On ne trou+e donc /u'une seule li$ne de donnes par pa$e, ce /ui permet de
diminuer les contentions lors de la mise 4 5our de cette ta2le)
37

Вам также может понравиться