Download pdf - ILE

Transcript
Page 1: ILE

ILE

Architecture ILE

Donnez-vous des aILEs avec

ILE

Page 2: ILE

2/69

Architecture ILE

1 – Les modules et les programmes

2 – Les modèles de génération

3 – Les programmes de service

4 – Le répertoire de liage

5 – Les sources de liage

6 – La gestion des groupes d’activation

7 – Le débogage en ILE

Page 3: ILE

3/69

1 - Les modules et les programmes

•ILE : Integrated Language Environment.

•OPM : Original Program Model (antérieur à l’ILE) .

•L'ILE est un environnement de développement apportant :

- modularité et réutilisation du code objet : Unité indépendante, petite et limite des

effets de bord

- API spécifiques

- Possibilité de diviser le développement entre plusieurs ressources

- intégration multi-langages

- résolution dynamique ou statique des appels

Page 4: ILE

4/69

OPM

C’était avant…A l’époque du GAP 3 et des

cartes perforées

La règle était simple:

1 membre source 1 programme

Pour appeler un autre code CALL

Page 5: ILE

5/69

ILE

Concept ILE se compose de 4 unités:

La procédure est l’unité de fonction

Le module est l’unité de compilation

Le programme est l’unité d’exécution

Le programme de service est une réserve de

fonction

Page 6: ILE

6/69

1 -Procédure

•Partie de code dans le contexte ILE.

•Appelée par :

- CALLB ou CALLP (RPGLE) :

* CALLB : appel d'une procédure non

prototypée (procédure principale)

* CALLP : appel d'une procédure prototypée

(sous-procédure) sauf en format libre ou

l’appel est direct (pas de CALLP)

- CALLPRC (CLLE)

CALL PROCEDURE (CBLLE)

Procédure A

H

F

D

I

C

O

QRPGLESRC

Source de type RPGLE

Page 7: ILE

7/69

1 – Module (1)

Procédure A

H

F

D

I

C

O

Source de type RPGLE

Procédure A

H

F

D

I

C

O

MODULE A

CRTRPGMOD

Page 8: ILE

8/69

1 - Module (2)

•Type d'objet *MODULE spécifique à ILE.

•Un module écrit en ILE CL ne peut comporter qu'une seule procédure.

•Un module écrit en ILE COBOL, ILE RPG ou ILE C peut se composer de

plusieurs procédures.

•Les modules ne sont pas directement exécutables mais doivent être liés

dans un programme (*PGM) ou un programme de service (*SRVPGM).

Commande de compilation : CRTxxxMOD (option 15 de la gestion des

membres de PDM). Exemple : CRTRPGMOD à partir d'un membre

source de type RPGLE

Page 9: ILE

9/69

1 – Programme (1)

MODULE BProcédure B

H

F

D

I

O

MODULE A

Procédure A

H

F

D

I

C CALLB 'B'

C ...

C CALLB 'C'

O

MODULE C

Procédure C

H

F

D

I

O

Programme ABC

*PGM

*MODULE

*MODULE

*MODULE

Page 10: ILE

10/69

1 - Programme (2)

•Un programme peut comporter un ou plusieurs modules

•Dans le cas d'un programme multi-modules, les modules sont liés entre eux etcopiés dans l'objet programme. Ce type de liage s'appelle liage statique parcopie.

•Les procédures sont appelées par le code-opération CALLB.

•Syntaxe de CALLB :

C callb 'Nom_de_la_procédure'

- attention à la distinction minuscules/majuscules dans le nom de laprocédure

- le passage de paramètres se fera par 'parm' ou par une 'plist'

- la réception des paramètres dans la procédure appelée se fera par *entryplist ou par une interface de procédure.

- le nom de la procédure appelée peut être une variable de type pointeur: sereporter à la fonction intégrée %PADDR.

Page 11: ILE

11/69

1 - Pour la maintenance…

•DSPPGM PGM(...)

DETAIL(*BASIC/.../*MODULE/*SRVPGM/...)

•DSPSRVPGM SRVPGM(...)

DETAIL(*BASIC/.../*MODULE/*PROCEXP/...)

•DSPMOD MODULE(...)

DETAIL(*BASIC/.../*EXPORT/*IMPORT/*PROCLIST/...)

•En plus des dépendances fichier ↔ programme, il existe en ILE des dépendances

module ↔ programme et programme ↔ programme de service.

•Les commandes DSPPGM, DSPSRVPGM et DSPMOD sont accessibles par

l'option 5 de PDM devant les objets de type *PGM, *SRVPGM et *MODULE

respectivement.

Page 12: ILE

12/69

1 – Conversion d’une application OPM en application ILE

1.Remplacer les CALL des par des CALLB

2.Compiler par l'option 15 de PDM tous les sources des modules appelés

3.Créer un programme de service pour lier tous les modules

4.Supprimer les objets *MODULE/A garder si on utilise des références croisées « maison »

5.Créer un répertoire de liage contenant un programme de service

6.Compiler le programme principal par l'option 14 de PDM après avoir indiqué :

H dftactgrp(*no) actgrp(*new) bnddir('repertoire_de_liage')

Il s'agit-là d'une méthode simplifiée. On pourra bien évidemment créerplusieurs programmes de service si l'on a plusieurs groupes de modules.

Cette méthode est pertinente lorsque les programmes appelés correspondent déjà à des « services applicatifs ».

Page 13: ILE

13/69

Architecture ILE

1 – Les modules et les programmes

2 – Les modèles de génération

3 – Les programmes de service

4 – Le répertoire de liage

5 – Les sources de liage

6 – La gestion des groupes d’activation

7 – Le débogage en ILE

Page 14: ILE

14/69

Les 3 modèles de génération

1 – Les programmes mono-module

2 – Les programmes multi-module

3 – Les programmes de service

Page 15: ILE

15/69

2 - Création d’un programme mono-module

RPGLE

SOURCE

Mbr A

*PGM A*MODULE A

Procédure A*MODULE A

Procédure A

CRTBNDRPG

CRTBNDRPG

•L'option 14 de la gestion des membres de PDM lance la commande CRTBNDxxx (CRTBNDRPG si le source est de type RPGLE).

•Une fois le programme créé, le module stocké dans QTEMP est détruit.

Page 16: ILE

16/69

2 - Création d’un programme multi-module

Il est nécessaire

d'indiquer un point d'entrée externe

appelé PEP (Program Entry

Procedure)

L'option 26 de PDM

devant les objets

module permet de

lancer l'opération

de liage sur ceux-ci

(CRTPGM).

RPGLE

SOURCE

Mbr A

*PGM ABC

*MODULE

A

Proc A

CRTRPGMOD

CRTPGM

*MODULE

CProc CCRTRPGMOD

CBLLE

SOURCE

Mbr B

*MODULE

B Proc BCRTRPGMOD

CLLE

SOURCE

Mbr C

CRTPGM...

MODULE(A B

C)

*MODULE

A

Proc A

*MODULE

B

Proc B

*MODULE

C

Proc C

Page 17: ILE

17/69

2 - Commande CRTPGM (1)

Page 18: ILE

18/69

2 - Commande CRTPGM (2)

Pensez à donner un texte descriptif au programme, sinon

c'est le texte associé au module point d'entrée qui sera pris

par défaut (*ENTMODTXT).

Les modules sont liés par copie dans le programme. Une fois le programme créé, les objets module ne sont plus nécessaires.

Si un module est commun à plusieurs programmes, il est recopié dans chacun de programmes.

Si l'on modifie le source d'un des modules, il faut :

- recompiler le source du module (PDM – Opt 15)

- mettre à jour TOUS les programmes concernés (UPDPGM)

Page 19: ILE

19/69

2 - Commande CRTCLMOD

L'option 15 de PDM devant un membre source de type CLLE lance la commande CRTCLMOD.

Page 20: ILE

20/69

2 - Commande CRTBNDCL

L'option 14 de PDM devant un membre source de type CLLE lance la commande CRTBNDCL (création d’un programme mono-module à partir d’un source CL).

Page 21: ILE

21/69

Architecture ILE

1 – Les modules et les programmes

2 – Les modèles de compilation

3 – Les programmes de service

4 – Le répertoire de liage

5 – Les sources de liage

6 – La gestion des groupes d’activation

7 – Le débogage en ILE

Page 22: ILE

22/69

3 – Les programmes de service (1)

Procédure A

H

F

D I

C CALLB 'B'

O

Procédure B

H

F

D I

C CALLB 'X'

O

MODULE XProcédure X

H

F

D I

C

O

MODULE YProcédure Y

H

F

D I

C

O

MODULE ZProcédure Z

H

F

D I

C

O

Programme AB

*PGM

Programme de

service XYZ

*SRVPGM

Page 23: ILE

23/69

3 - Programme de service (2)

•Objet de type *SRVPGM spécifique à ILE servant à stocker

un ensemble de sous-procédures réparties en modules.

•Créé par CRTSRVPGM à partir de modules

•Cité dans la commande CRTPGM ou enregistré dans un

répertoire de liage.

•Permet l'appel de procédures résidant hors du programme

appelant.

•L'appel d'une procédure incluse dans un programme de service

s'appelle liage statique par référence.

Page 24: ILE

24/69

3 - Création d’un programme de service

CRTRPGMOD

CRTRPGMOD

CRTSRVPGM ....

MODULE (X Y Z)

RPGLE

SRC

Mbr X

RPGLE

SRC

Mbr Y

RPGLE

SRC

Mbr Z

MODULE X

Procédure X

MODULE Y

Procédure Y

MODULE Z

Procédure ZCRTRPGMOD

MODULE X

Procédure X

MODULE Y

Procédure Y

MODULE Z

Procédure Z

*SRVPGM XYZ

•L'option 27 de PDM devant les objets module permet de lancer lacommande CRTSRVPGM sur ceux-ci.

Page 25: ILE

25/69

3 - Utilisation d’un programme de service (1)

*PGM AB

MODULE A

Procédure A

MODULE B

Procédure BMODULE D

Procédure D

MODULE X

Procédure X

MODULE Y

Procédure Y

MODULE Z

Procédure Z

*SRVPGM XYZ

Lien statique

par copie

Lien statique

par référenceLien statique

par référence

Page 26: ILE

26/69

3 - Utilisation d’un programme de service (2)

• Plusieurs scénarii d’utilisation sont possibles :

• le programme appelant fait référence directement au

programme de service.

• Le programme appelant fait référence au programme de

service par l’intermédiaire d’un répertoire de liage.

Page 27: ILE

27/69

3 - Utilisation directe d’un programme de service (2)

•Lors de la création du programme (CRTPGM), on indique le nom du ou des programme(s) deservice concerné(s).

•Dans le cas d'une modification du code source des procédures X, Y ou Z, il faut :

- recompiler ces procédures (CRTxxxMOD – PDM, option 15)

- mettre à jour le programme de service (UPDSRVPGM)

Page 28: ILE

28/69

3 - Commande CRTSRVPGM (1)

Page 29: ILE

29/69

3 - Commande CRTSRVPGM (2)

•Une « signature » est générée, qui permettra de contrôler la cohérence avec leprogramme appelant.

•Dans le paramètre EXPORT (Exportation) :

- si on indique ALL, la signature est générée à partir de toutes les procédures

- si on indique *SRCFILE, la signature est générée à partir des procédures indiquéesdans un membre source d'exportation.

Page 30: ILE

30/69

3 - Mise à jour des programmes et programme de service

•Mise à jour d'un programme :

- recompiler le(s) module(s) modifié(s) (CRTxxxMOD)

- mettre à jour le(s) programme(s) concerné(s) : UPDPGM

•Mise à jour d'un programme de service :

- recompiler le(s) module(s) modifié(s) (CRTxxxMOD)

- mettre à jour le programme concerné : UPDSRVPGM

•Après un UPDSRVPGM, il n'est pas nécessaire de mettre à jour les

programmes qui font référence au programme de service. La résolution

sera faite à l'exécution des programmes, mais uniquement si ceux-ci

s'exécutent dans un nouveau groupe d'activation.

Page 31: ILE

31/69

3 - PDM avec option 27 : créer un programme de service

Page 32: ILE

32/69

3 - PDM avec option 27 : créer un programme de service

Page 33: ILE

33/69

Architecture ILE

1 – Les modules et les programmes

2 – Les modèles de compilation

3 – Les programmes de service

4 – Le répertoire de liage

5 – Les sources de liage

6 – La gestion des groupes d’activation

7 – Le débogage en ILE

Page 34: ILE

34/69

4 – Le répertoire de liage (1)

Objet de type *BNDDIR (créé par CRTBNDDIR).

Liste des modules et/ou de programmes de service.

Gestion par WRKBNDDIRE. Exemple :

Page 35: ILE

35/69

Répertoire de liage (2)

Lors de la création d'un programme (CRTPGM), le compilateur vérifie que l'ensemble des procédures (appelées par CALLB ou CALLP) fait bien partie, soit des modules indiqués au paramètre MODULE, soit des programmes de services indiqués au paramètre BNDSRVPGM :

Programme .................................... PGM________

Module .........................................MODULE ________ .....

Lier programme de service ............ BNDSRVPGM ________ .....

Répertoire de liage ........................ BNDDIR ________

Le répertoire de liage est examiné s'il reste des références non résolues une fois exploités les modules et programmes de service explicitement désignés par les paramètres MODULE et BNDSRVPGM de la commande CRTPGM.

On peut donc créer un programme ILE en respectant les étapes suivantes :

- création d'un répertoire de liage (CRTBNDDIR)

- ajout des modules et/ou programmes de service à ce répertoire de liage (ADDBNDDIRE)

- création du programme (CRTPGM en indiquant les modules liés, le point d'entrée et le nom du répertoire de liage - voir page suivante)

Page 36: ILE

36/69

Utilisation d’un répertoire de liage (1)

*SRVPGM XYZ

CRTPGM PGM (AB)

MODULE(A)

BINDDIR(UTIL)

REPLIAGE

*MODULE X

Procédure X

*MODULE A

Proc A

CALL 'B'

*MODULE Y

Procédure Y

*MODULE Z

Procédure Z

*BNDDIR UTIL

B

Xyz

*MODULE

*SRVPGM

*PGM AB

*MODULE B

Proc B

CALL 'X'

Page 37: ILE

37/69

Utilisation d’un répertoire de liage (2)

Le module indiqué dans la paramètre MODULE de la commande CRTPGM correspond au point d'entrée (PEP).

Le répertoire de liage peut être aussi renseigné dans la commande

CRTBNDRPG.

Le nom du répertoire de liage peut être indiqué en spécification H :

- dans le cas d'un module créé par CRTRPGMOD :

H | bnddir('UTIL')

- dans le cas d'un programme créé par CRTBNDRPG :

H | dftactgrp(*no) <actgrp(*new|*caller)> bnddir('UTIL')

(dftactgrp(*no) et actgrp(*new|*caller) seront détaillés dans la suite du

chapitre)

Exemple de répertoire de liage (les API ILE) : QUSAPIBD

Page 38: ILE

38/69

Architecture ILE

1 – Les modules et les programmes

2 – Les modèles de compilation

3 – Les programmes de service

4 – Le répertoire de liage

5 – Les sources de liage

6 – La gestion des groupes d’activation

7 – Le débogage en ILE

Page 39: ILE

39/69

5 – Les sources de liage (1)

Sans langage de liage – EXPORT(*ALL)

MODULE A

Procédure A

MODULE B

Procédure B

(000...2F5E03)

MODULE X

Procédure X

MODULE Y

Procédure Y

MODULE Z

Procédure Z

*SRVPGM XYZ

Signature : 000...2F5E03

*PGM AB

Page 40: ILE

40/69

5 - Sans langage de liage – EXPORT(*ALL) (2)

•Toutes les procédures du programme de service sont accessibles.

•On visualise la signature :

- au niveau du programme de service par :

DSPSRVPGM SRVPGM(XYZ) DETAIL(*SIGNATURE)

- au niveau du programme par :

DSPPGM PGM(AB) DETAIL(*SRVPGM)

Page 41: ILE

41/69

5 - Sans langage de liage – EXPORT(*ALL) (3)

Signature : 000...08D6C2

MODULE A

Procédure A

MODULE B

Procédure B

(000...2F5E03)

MODULE X

Procédure X

MODULE Y

Procédure Y

MODULE Z

Procédure Z

*SRVPGM XYZ

MODULE P

Procédure P

*PGM AB

Page 42: ILE

42/69

5 - Sans langage de liage – EXPORT(*ALL) (4)

•Si l'on veut ajouter un nouveau module au programme de

service, il faut recréer ce programme de service : la signature

change si EXPORT(*ALL) a été indiquée.

•L'appel du programme AB se termine en erreur : MCH4431 –

Violation de signature de programme.

Page 43: ILE

43/69

5 - Langage de liage

•Intérêt :

- diminuer la dépendance due à la signature, soit en gérant plusieurs signatures, soit

en en forçant la valeur.

- désigner explicitement les procédures accessibles pour en contrôler l’utilisation.

•Mise en oeuvre :

- saisir un membre-source de type BND

- l'indiquer dans SRCFILE/SRCMBR de la commande CRTSRVPGM

•Le nom par défaut du fichier source est QSRVSRC (à créer par CRTSRCPF –

longueur 92).

•Le nom par défaut du membre source est le nom du programme de service.

Page 44: ILE

44/69

5 - Langage de liage – EXPORT(*SRCFILE) (1)

*PGM AB

MODULE A

Procédure A

MODULE B

Procédure B

(000...2F5E03)

Signature : 000...2F5E03

MODULE X

Procédure X

MODULE Y

Procédure Y

MODULE Z

Procédure Z

*SRVPGM XYZ

Page 45: ILE

45/69

5 - Langage de liage – EXPORT(*SRCFILE) (2)

STRPGMEXP PGMLVL(*CURRENT)

EXPORT SYMBOL(X)

EXPORT SYMBOL (Y)

EXPORT SYMBOL (Z)

ENDPGMEXP

•Les symboles exportés peuvent être des procédures, des zones de données ou

un groupe d’activation.

•Remarque : La commande RTVBNDSRC permet de générer a posteriori, à

partir des objets *MODULE, le source en langage de liage.

Page 46: ILE

46/69

5 - Langage de liage – EXPORT(*SRCFILE)

MODULE A

Procédure A

MODULE B

Procédure B

(000...2F5E03)

Signatures : 000...2F5E03

000...08D6C2

MODULE X

Procédure X

MODULE Y

Procédure Y

MODULE ZProcédure Z

*SRVPGM XYZ

STRPGMEXP PGMLVL(*CURRENT)

EXPORT SYMBOL(X)

EXPORT SYMBOL (Y)

EXPORT SYMBOL (Z)

EXPORT SYMBOL (P)

ENDPGMEXP

*PGM AB

STRPGMEXP PGMLVL(*PRV)

EXPORT SYMBOL(X)

EXPORT SYMBOL (Y)

EXPORT SYMBOL (Z)

ENDPGMEXP

MODULE PProcédure P

•La signature générée est visible par DSPSRVPGM ... DETAIL(*SIGNATURE)

Page 47: ILE

47/69

5 - Zones d’import/export (1)

ZONEA IMPORT

callb 'PROCB'

ZONEA EXPORT

callb 'PROCC'

callb 'PROCD'ZONEA IMPORT

PROCA PROCB

PROCCPROCD

ZONEA

Page 48: ILE

48/69

5 - Zones d’import/export (2)

•Ces mots-clés sont à préciser dans la spécification D :

D Zoneexp s 10 export

D Zoneimp s 5 0 import

•Le mot-clé EXPORT signifie que la zone est exportable et donc que son contenupourra être récupéré à partir d'autres modules.

•Une zone ne peut être définie qu'une seule fois en EXPORT et plusieurs fois enIMPORT. Les mots-clés IMPORT et INZ sont incompatibles.

•On peut donc indiquer le nom externe de la zone à importer ou exporter dans uneconstante.

PROC1

Dzone_A s 20 export(cte)

Dcte c 'Imp_Exp'

C callb 'PROC2'

PROC2

Dzone_B s 20 import('Imp_Exp')

Page 49: ILE

49/69

5 - Zones d’import/export (3)

ZONEA IMPORT

callb 'PROCB'

ZONEA EXPORT

callb 'PROCC'

callb 'PROCD'ZONEA IMPORT

PROCA PROCB

PROCCPROCD

ZONEA

PGM1 *PGM

SRVPGM1 *SRVPGM

Page 50: ILE

50/69

5 - Zones d’import/export (4)

•Une zone déclarée dans une procédure d'un programme de service estobligatoirement définie en EXPORT.

•Si l'on utilise le langage de liage, les zones d'import/export doivent être définies

comme symboles exportables. Exemple pour le programme de service

SRVPGM1 :

STRPGMEXP

EXPORT SYMBOL (PROCC)

EXPORT SYMBOL (PROCD)

EXPORT SYMBOL (ZONEA)

ENDPGMEXP

Page 51: ILE

51/69

Architecture ILE

1 – Les modules et les programmes

2 – Les modèles de compilation

3 – Les programmes de service

4 – Le répertoire de liage

5 – Les sources de liage

6 – La gestion des groupes d’activation

7 – Le débogage en ILE

Page 52: ILE

52/69

6 – La gestion des groupes d’activation (1)

Un groupe d’activation est une sous-structure d’un travail dans laquelle s’exécute un programme ou un ensemble de programmes.

Plusieurs groupes d’activation peuvent coexister au sein d’un travail, le but étant de pouvoir allouer des ressources différentes selon les programme (détails en annexe C).

Le groupe d’activation est créé à l’appel du programme ou du programme de service.

Le groupe d’activation permet d’allouer à un ou plusieurs programmes des ressources:

Mémoire,

ODP (open data path),

et de limiter le périmètre

des opérations de substitution,

du contrôle de validation.

Page 53: ILE

53/69

C’est à la création du programme (CRTPGM) ou du programme de service (CRTSRVPGM) que l’on indique le groupe d’activation:

CRTPGM...CTGRP(*NEW│*CALLER│Nom)

CRTSRVPGM . . . ACTGRP(*CALLER│Nom)

NEW (valeur par défaut du CRTPGM) indique qu’à chaque CALL du programme, un nouveau groupe d’activation sera créé. Ce groupe d’activation sera détruit à la fin du programme. Conséquences:

à utiliser pour le premier programme appelant,

à ne pas utiliser pour les programmes appelés,

*CALLER indique que le programme s’exécutera dans le même groupe d’activation que celui dans lequel s’exécute le programme appelant. Conséquences :

à utiliser pour un programme appelé,

à utiliser pour les programmes de service.

6 – La gestion des groupes d’activation (2)

Page 54: ILE

54/69

6 – La gestion des groupes d’activation (3)

NOM permet de nommer le groupe d’activation.

Un groupe d’activation nommé explicitement sera détruit par la commande

RCLACTGRP ou par la fin du travail, mais PAS par la fin de programme (détails

en annexe C).

Les programmes OPM s’exécutent dans un groupe d’activation particulier,

appelé *DFTACTGRP (groupe d’activation par défaut) ; des programmes ILE

peuvent aussi s’y dérouler (valeur par défaut des commandes CRTBNDxxx –

option 14 de PDM).

Pour qu’un programme compilé par la commande CRTBNDRPG (option 14 de

PDM) s’exécute dans un groupe d’activation autre que *DFTACTGRP :

H dftactgrp(*no) <actgrp(*new│*caller)>

L’option 18 du DSPJOB permet d’afficher les groupes d’activation du travail.

Page 55: ILE

55/69

6 – Délimitation du périmètre des ouvertures, des substitutions et du contrôle de validation

Substitution :

OVRDBF … OPNSCOPE(*ACTGRPDFN│*JOB)+

OVRSCOPE(*CALLVL│*ACTGRPDFN│*JOB)

Ouverture :

OPNDBF …

OPNSCOPE(*ACTGRPDFN│*ACTGRP│*JOB)

Contrôle de validation :

STRCMTCTL CMTSCOPE(*ACTGRP│*JOB)

Page 56: ILE

56/69

6 – Délimitation du périmètre des ouvertures, des substitutions et du contrôle de validation

*ACTGRPDFN permet une interprétation dépendante du contexte:

en OPM, limite le périmètre des opérations au niveau d’appel du

programme les effectuant.

en ILE, limite le périmètre des opérations au groupe d’activation

du programme les effectuant.

*CALLLVL limite le périmètre des opérations au programme les

effectuant et aux programmes de niveau d’appel supérieur.

*JOB étend le périmètre des opérations à l’ensemble du travail.

*ACTGRP a le même résultat que *ACTGRPDFN dans le contexte

ILE

Page 57: ILE

57/69

6 - Exemples

MENU

1. Prise de commandes

2. Facturation

*DFTACTGRP

Fichier A : SHARE(*YES)

Entrée/Sortie

Groupe d'activation : CMD

A

PC_1 PC_2 PC_3

CMD

FAC

Fichier A : SHARE(*YES)

Entrée

Groupe d'activation : FAC

A

FAC_1 FAC_2

JOB

Page 58: ILE

58/69

6 - Exemples

• Dans cet exemple, le fichier A est ouvert en SHARE(*YES) et

OPNSCORE(*ACTGRPDFN).

• Les programmes PC_1, PC_2 et PC_3 s’exécutent dans le groupe

d’activation FAC. Le fichier A est ouvert en ENTREE(I) et l’ODP est

partagé entre 2 programmes.

• Si les cinq programmes s’exécutaient dans le même groupe d’activation,

les programmes FAC_1 et FAC_2 devraient ouvrir le fichier A en

Entrée/Sortie.

Page 59: ILE

59/69

6 - Gestion du groupe d’activation (1)

Le groupe d’activation est créé à l’appel d’un programme ou d’un programme de service.

Ce groupe d’activation est défini par les commandes suivantes :

CRTPGM . . . ACTGRP(*NEW│*CALLER│Nom)

CRTSRVPGM . . . ACTGRP(*CALLER│Nom)

1. Un groupe d’activation est détruit:

à la fin du travail si *DFTACTGRP

à la fin du dernier programme l’utilisant si *NEW

explicitement (pour un groupe d’activation nommé) par :

la commande RCLACTGRP (reclaim activation group)

un CALLB de l’API CEETREC ou CEE4ABN

la fin du travail

Page 60: ILE

60/69

6 - Gestion du groupe d’activation (2)

Tant qu’un groupe d’activation nommé n’est pas détruit explicitement:

La commande UPDSRVPGM sera sans effet

Les variables locales déclarées avec STATIC ne seront pas réinitialisées

Les variables définies en IMPORT/EXPORT ne seront pas réinitialisées

Attention, un programme contenant :

H dftactdrp(*no)

Et compilé par la commande CRTBNDRPG(option 14 de PDM), s’exécutera dans le groupe d’activation QILE, qui ne sera détruit qu’explicitement, et non à la fin du programme.

Pour que le programme s’exécute dans un nouveau groupe d’activation à chaque appel il faut indiquer :

H dftactgrp(*no) actgrp(*new)

Page 61: ILE

61/69

Architecture ILE

1 – Les modules et les programmes

2 – Les modèles de compilation

3 – Les programmes de service

4 – Le répertoire de liage

5 – Les sources de liage

6 – La gestion des groupes d’activation

7 – Le débogage en ILE

Page 62: ILE

62/69

7 - Le débogueur ILE

Fonctionnalités.

Affichage du source ou de la liste de compilation

Points d’arrêt et/ou pas-à-pas

Affichage/modification de variables

Commandes de débogage

Marche à suivre

Compiler en choisissant le niveau de débogage

STRDBG

Ajouter des points d’arrêt ou choisir le mode pas-à-pas

Points d’arrêt : F6 ou commande BREAK, puis exécution du programme

Sortie du source (F3), puis CALL ou

Lignes de commande (F21), puis CALL

Mode pas-à-pas : F10, puis exécution du programme par CALL

ENDDBG

Page 63: ILE

63/69

7 - Niveau de débogage

Par le mot-clé DBGVIEW

*NONE

*STMT(défaut)

*SOURCE

*COPY

*LIST

*ALL

Dans les commandes CRTBNDxxx (option 14 de PDM) et CRTxxxMod (opt 15 de PDM)

Le membre source devra être en ligne (au moment de débogage) pour *SOURCE, *COPY et *LIST.

Page 64: ILE

64/69

7 - Appel du débogage

Pour les programmes OPM (RPG/400):

- STRDBG . . . OPMSRC(*yes), si les sources ont été compilés avec OPTION

(*LSTDBG ou *SRCDBG)

- STRISDB (option 34 de PDM devant l’objet programme)

Page 65: ILE

65/69

7 - Panneau de débogage

Page 66: ILE

66/69

7 - Panneau de débogage (suite)

F3=Arrêter programme

F5=Réafficher

F6=Ajouter/Effacer point d’arrêt

F9=Rappel

F10= Pas à pas

F11=Variable

F12=Reprendre

F13=Gérer points d’arrêt du module

F14=Gérer liste de modules

F15=Choisir vue

F16=Relancer FIND

F17=Guet de variable

F18=Gérer le guet

F19=Gauche

F20=Droite

F21=Entrée de commandes

F22=Pas à pas

F23=Afficher sortie(programmes en C/C++)

F24=Autres touches

Les touche de fonction disponibles sont :

Page 67: ILE

67/69

7 - Choix de la vue

•Les possibilités de choix de vues dépendent du paramètre DBGVIEW de compilation.

•Le choix se fait par la touche de fonction F15.

•Le choix de la vue listage permettra d’obtenir l’affichage de la page suivante.

Page 68: ILE

68/69

7 - Les principales commandes de débogage (1)

Break : définir un point d’arrêt

Clear : supprimer un point d’arrêt

Watch : point d’arrêt si variable modifiée

Attr : afficher les attributs d’une variable

Eval : afficher le contenu ou modifier une variable

Equate : définir des raccourcis

Display : affichage des raccourcis

Find : rechercher une chaîne ou un numéro de ligne

Help : aide des commandes

Set : modifier les options de débogage

Step : exécuter n lignes avant le prochain arrêt

Page 69: ILE

69/69

7 - Les principales commandes de débogage (2)

Up : déplacement dans le source vers le haut

Down : déplacement dans le source dans le bas

Left : déplacement dans le source vers la gauche

Right : déplacement dans le source vers la droite

Top : déplacement au début du source

Bottom : déplacement à la fin du source

Next : se positionner sur le point d’arrêt suivant

Previous : se positionner sur le point d’arrêt précédent

Certaines commandes sont accessibles par des touches des fonctions.

Page 70: ILE

70/69

7 - Exemple

BREAK 40

BREAK 40 WHEN *in02=‘1’

CLEAR 40

CLEAR PGM

STEP 10

EVAL datcmd

EVAL *in(1…9)

EVAL *in03=‘1’

EVAL datcmd=datsai

EVAL %substr(adrcli 15 10)

ATTR datcmd

EQUATE dat EVAL datcmd

FIND ‘*inzsr’

WATCH dpt

Page 71: ILE

71/69

7 - Compléments sur le débogage

F10 (step over) : pas à pas, sans rentrer dans la procédure appelée

F22 (step into) : pas à pas, en rentrant dans la procédure appelée

F14 permet de gérer la liste des programmes de service accessible.


Recommended