FUNPROG

Sommaire


Funprogpermet de déclarer une fonction, appelable par func, et  pouvantcomporter une liste d'arguments, et envoyer un résultat .

 

Syntaxe

   Funprogfonction[ '(' liste_args')' ]

 

Paramètres

Elément

Description

Restrictions

fonction

nom_d'OBJet désignant la fonction.

Aucune.

liste_args

Liste de nom_de_variables séparés par lecaractère ','.

Les arguments doivent avoir des nomsdistincts.

 

Exemples

   # Appel de la fonction de calcul X dutraitement ZETRT
   # RESULT donnera le nombre 22

Local Integer RESULT
RESULT = 4*(func ZETRT.X(3,2) + 1)
End

   # la fonction de calcul X du traitement ZETRT

FunprogX(A,B)
Value Integer A
Value Integer B
End A*A/B

   # la fonction restituant le statut actif ou inactif d'un code activité
   # et son dimensionnement

FunprogACTIV(COD)
Value Char COD
If COD="" : End 1 : Endif
If clalev([F:ACV])=0 : Local File ACTIV [ACV] : Endif
Read [ACV]CODACT = COD
If fstat or [F:ACV]FLACT<>2
End 0
Elsif [F:ACV]TYP=2
End [F:ACV]DIME
Else
End 1
Endif

 

Description et commentaires

Une fonction déclarée par l'instruction Funprog se terminera par l'instruction End.En effet, son exécution, déclenchée à l'appel d'un func se termine dèsqu'une instruction End est rencontrée. Puis, le traitement ayant appelécette fonction reprend la main à l'instruction qui suit ce func, puispourra utiliser le résultat de l'expression précisée dans l'einstruction Endde la fonction. 

Lorsque la fonction comporte des arguments, il est possible, mais nonimpératif, de les déclarer (tous ou en partie) à la suite de l'instruction Funprog.L'ordre dans lequel on le fait n'a pas à suivre celui de l'instruction Funprog.

Outre leur type et dimension, on précisera s'ils sont passés par adresse oupar valeur en utilisant un des mots-clés suivant :

On peut utiliser comme type d'arguments les mêmes que pour les variables(Libelle, Shortint, Integer, Date, Decimal et Char).
Par défaut, le type sera :

La longueur des arguments de type Char ne sera pas précisée. On secontentera de faire suivre le nom de l'argument par (). La longueur de lavariable locale sera celle de l'argument passé par func.

Après le type, il est indispensable de préciser la dimension s'il y en aune, en utilisant les caractères "(" et ")". Pour déclarerplusieurs dimensions il faudra utiliser des virgules pour les séparer.

Exemple : Value Decimal MAT(,) déclare un tableau bi-dimensionné de nombresDCB dont les tailles dépendront de l'argument passé par funcet dont lesbornes inférieures seront 0 pour les 2 dimensions.

Par défaut - c'est à dire si on ne précise rien - la taille de chaquedimension sera celle de l'argument et sa borne inférieure sera 0. On peutpréciser la taille de chaque dimension par une expression à valeur entière ouune variable passée elle aussi en paramètre. Dans ce dernier cas, cettevariable devra impérativement être déclarée avant.

Exemple : Variable Char ARGS () (AC,GV)
déclare une tableau bi-dimensionné de chaine de caractères, la premièredimension allant de 0 à AC - 1, la deuxième de 0 à GV -1.

On pourra préciser la borne inférieure. Si on a précisé la borne inférieure,on pourra aussi préciser la borne supérieure. Si on ne le fait pas, la taillerésultante sera celle de l'argument. Ces bornes pourront être des expressions àvaleur entière, des variables. Les bornes inférieures seront suivies de"..".

Exemple : Value Integer CUB(N11..,N21..N22,) déclare un tableau d'entiers àtrois dimensions, indicé à partir de N11 pour la première, de N21 à N22 pour ladeuxième et à partir de 0 pour la troisième.

Si on précise des bornes, ces bornes n'ont pas à être identiques à celles desarguments des traitements appelants, l'élément de plus petit indice del'argument du func sera associé à (ou recopié dans) l'élément de pluspetit indice de la variable locale de la fonction et ainsi de suite.

Exemple :

Integer T(1..M, 3..N)
func SP(T)

FunprogSP (TAB2)
Value Integer TAB2(,)

Dans ce cas l'élément TAB2(0,0) pointera sur T(1,3) etc.

Au lancement d'une fonction, une classe de variable locale est crée. Lesvariables déclarées dans la fonction seront par défaut de cette classe. Ellesera automatiquement détruite par le End final.

Une fonction peut accéder, pendant son exécution, aux variables globales etaux OBJets Adonix des traitements appelants. Pour ne pas modifier le contexte,au retour de la fonction appelé par func, on déclarera les OBJetspropres à cette fonction en mode Local (Local File, Local Mask, Local Mesbox,Local Inpbox ). Ils seront automatiquement refermés par le End final.

 

Remarques

Pendant l'exécution d'une fonction, les informations suivantes sont conservées:

Par contre sont perdus :

D'autre part, une fonction ne peut pas terminer une transaction qu'iln'aurait pas lui-même initiée.

 

Erreurs associées

Erreur

Description

ERRET(32)

Transactioninitiée dans un autre programme.

ERDIM(55)

Nombrede dimensions incorrect.

ERVEX(61)

Variabledéjà existante.

 

Mots-clés associés

FUNC  - VALUE - VARIABLE - CONST - END


SOMMAIRE

Adonix X3(r) L4G
Copyright (c) Adonix 1999 - All rights reserved