next up previous
suivant: Suppression d'un SEGMENT monter: Manipulation des structures de précédent: Déclaration d'une SEGMENT

Création et initialisation d'un SEGMENT

Plaçons nous encore à l'intérieur d'un sous-programme fortran. Après y avoir déclaré le segment par l'instruction SEGMENT...ENDSEGMENT il faut définir une variable qui référencera la structure instanciée : la connaissance de cette variable donnant accés à toute la structure. Pour cela un nouveau type de variable fortran est inventée : c'est la variable pointeur dont la déclaration est :


		   

POINTEUR nompointeur.nomsegment

par exemple, pour permettre l'instanciation de la classe MONSEG, on déclare :


		   

POINTEUR MONS1.MONSEG,MONS2.MONSEG,....

Dans cet exemple MONS1 et/ou MONS2 permettent de référencer une structure de la classe MONSEG. MONS1 et MONS2 deviennent des variables fortran de type Integer une fois la traduction Esope->Fortran faite.

La création d'une sructure de classe MONSEG est faite par l'appel à la fonction SEGINI en précisant la variable pointeur utilisée.


		   

SEGINI MONS1

Dans notre exemple cela donne :


		    subroutine sp1 (......) 

segment monseg
integer ijk,nomb(ll,lc),jlc
real x,xx(n)
real*8 y,yy(3,mm)
character*nbca icha(8,ik),chai
endsegment
POINTEUR MONS1.MONSEG,MONS2.MONSEG
.
.
SEGINI MONS1
.
.
return
end

Il faut, bien évidemment, que les variables dimensionnantes du segment soient définies préalablement à l'instruction SEGINI (sinon le résultat dépend du compilateur!). Nous aurions pu faire le jeu d'instructions :


		  subroutine sp1 (LL,LC......) 

segment monseg
integer ijk,nomb(ll,lc),jlc
real x,xx(n)
real*8 y,yy(3,mm)
character*nbca icha(8,ik),chai
endsegment
pointeur mons1.monseg
.
.
N=5
MM=3
IK=12
NBCA=4
SEGINI MONS1
MONS1.XX(3)=...
MONS1.ICHA(5,2)='BIEN'
.
.
return
end

Dans lequel le tableau YY est dimensionné à 3 lignes et 3 colonnes, tandis que ICHA est un tableau de chaines de 4 caractères qui à 8 lignes et 12 colonnes.

Une fois l'instruction SEGINI éxécutée et tant que l'on reste dans le sous-programme, tous les éléments du SEGMENT peuvent etre considérés par le programmeur comme des variables fortran normales. Pour les atteindres il faut rappeler qu'elles appartiennent à la structure référencée par la variable pointeur MONS1.
Remarques :

ESOPE offre la possibilité de libérer la place mémoire occupée par le segment. on peut soit supprimer le segment, soit le désactiver.


next up previous
suivant: Suppression d'un SEGMENT monter: Manipulation des structures de précédent: Déclaration d'une SEGMENT
traduction LAMS 2004-04-21