Fonctions personnalisées

À propos des Fonctions Personnalisées

Conventions

Utiliser les Fonctions Personnalisées

Opérations de contrôle

Dépendances

Comportement des fonctions personnalisées

Gestion des droits

À propos des Fonctions Personnalisées

Les fonctions personnalisées sont utilisées pour mieux profiter des ressources du langage LMD. Vous pouvez élaborer des expressions du LMD complexes et souvent utilisées dans les garnissages, comme le contrôle d'un numéro de compte par rapport à des tables internes ou des appels d'exit.

Ces nouveaux objets contiennent une liste de paramètres ainsi que l'expression représentée. Vous pouvez les créer, les mettre à jour, les supprimer et les utiliser dans des objets appartenant à n'importe quel <Folder>.

Vous pouvez appeler une fonction personnalisée depuis un garnissage dans les :

  • Règles de traduction - conditions de schéma, condition de génération, expressions de garnissage
  • Règles de Modification - conditions de génération, expressions de garnissage
  • Garnissages Type - conditions de génération, expressions de garnissage
  • Définitions de Pré-Calculs - conditions, expressions de garnissage

Restrictions :

  • Une fonction personnalisée ne peut pas en appeler une autre.
  • Si vous utilisez le $ +raccourci (Ctrl+MAJ+SPACE) à l'intérieur d'une fonction personnalisée, la liste des fonctions LMD n'inclura aucune des fonctions personnalisées.

Conventions

Le nom d'une fonction personnalisée et de ses paramètres doit respecter les règles suivantes :

  • La longueur du nom doit être inférieure ou égale à 50 caractères.
    • Chiffres de 0 à 9
    • Lettres de A à Z, a à z
    • Le caractère souligné ( _ ), la même règle s'applique que dans le cas d'un nom de variable.
  • Le nom ne peut pas contenir que des chiffres ou que des caractères souligné.
  • Le nom ne doit pas commencer par le préfixe "SYS".
  • Toutes les fonctions personnalisées ainsi que les paramètres doivent avoir un nom unique et doit être différent de :
    • Fonctions de table : CHECKTAB, CHECKTABD, ACCTAB, ACCTABD, EXTTAB, EXTTABD
    • Fonctions prédéfinies du LMD : NBDAYS, JULIAN, SYSDATE, DATEPLUS, DATEMINUS, DAY, MONTH, YEAR, YEAR4, SEARCH, CHECK, ERR, NULL, ENV, INT
    • Mots réservés du langage : IF, THEN, ELSE, NUMERIC, AND, OR, LOW_VALUE, HIGH_VALUE

L'expression elle-même peut :

  • contenir jusqu'à 1200 caractères pour des expressions ou 500 caractères pour des conditions.
  • être une expression du LMD ou une partie d'une expression qui obéit aux règles lexicales et syntaxiques de la grammaire du LMD.
    La limite de l'expression étendue (qui contient les paramètres réels de la fonction personnalisée) est de 1200 caractères dans une expression ou de 500 caractères dans une condition.

Utiliser les Fonctions Personnalisées

Elles sont disponibles dans la section Fonctions Personnalisées lorsque le navigateur LMD est lancé.

Pour ajouter une nouvelle fonction personnalisée :

  • cliquez avec le bouton droit sur le nœud de la fonction personnalisée.
  • glissez et déposez la fonction personnalisée dans le champ d'une expression où elle peut être utilisée.

À part le fait qu'elles peuvent être définies à partir d'autres fonctions, les fonctions personnalisées se comportent exactement comme n'importe quelle fonction.

Opérations de contrôle

Lorsque vous modifiez une fonction personnalisée, tous les objets qui utilisent cette fonction se trouvent impactés. Si ces objets étaient au statut "Contrôlé", le statut passe à la valeur "À contrôler". Toutefois, l'objet Garnissage type constitue une exception en ce sens qu'un contrôle de cet objet n'implique pas un contrôle des fonctions personnalisées qu'il utilise. D'éventuelles erreurs sont affichées uniquement lorsqu'un Garnissage Type est utilisé dans une Règle de Traduction et qu'un contrôle est effectué sur la Règle de traduction.

Vous pouvez appeler une fonction personnalisée depuis un garnissage dans les :

  • Règles de Traduction (conditions des schémas, conditions de génération, expressions de garnissage)
  • Règles de Modification (conditions de génération, expressions de garnissage)
  • Garnissages-Type (conditions de génération, expressions de garnissage)
  • Définitions des Pré-Calculs (conditions, expressions de garnissage)

Si un objet utilise une fonction personnalisée, l'opération de contrôle de ces objets concerne aussi la fonction personnalisée. Si une erreur est détectée lorsque la fonction personnalisée est contrôlée, alors l'objet qui utilise la fonction personnalisée ne peut pas être contrôlé.

Toutes les erreurs détectées lors du contrôle sont affichées dans le navigateur des Logs et l'objet demeure à l'état non contrôlé.

Restriction : Lorsqu'une fonction personnalisée qui utilise des objets Table ou des Variables est contrôlée, l'opération de contrôle ne vérifie pas si ces objets existent dans le référentiel. Pour tous les autres objets, cette vérification est effectuée lorsque l'objet est contrôlé.

Dépendances

Une fonction personnalisée est un objet indépendant des <Folders> qui peut être utilisée dans tous les objets qui comportent des expressions du LMD, tout comme n'importe quelle fonction prédéfinie du LMD.

Lorsqu'elle est utilisée dans une fonction du LMD, après l'opération de contrôle, un lien est établi entre les 2 objets. Ce lien est un lien de référence, ce qui signifie qu'il n'y a aucun impact entre les statuts des 2 objets. Toutefois, lorsqu'un contrôle récursif est effectué sur un objet qui utilise une fonction personnalisée, la fonction est également contrôlée.

Le lien entre les objets ne s'affiche pas dans le Navigateur de dépendances, car bien que les fonctions personnalisées soient des objets, elles sont traitées comme les autres fonctions.

Comportement des fonctions personnalisées

Import/Export

Lorsque vous importez/exportez un objet qui utilise une fonction personnalisée, la fonction personnalisée est aussi importée/exportée.

Envoi au Serveur

L'expression définie dans le corps de la fonction personnalisée est envoyée au serveur dans les :

  • Définitions et conditions des Pré-Calculs
  • Phrases de garnissage des Règles de Traductions
  • Prases de garnissage des Règles de Modification
  • Condition de schéma

Lorsque l'expression est envoyée au serveur, les appels à la fonction personnalisée sont remplacés par son expression contenant les paramètres réels. Si une fonction personnalisée est utilisée dans une Règle, et que cette Règle a été envoyée au serveur, la fonction personnalisée reste dans l'état contrôlé. Avant de modifier une fonction personnalisée, toute règle qui l'utilise doit être supprimée du serveur. La modification d'une fonction personnalisée utilisée par une Règle envoyée au serveur crée un état incohérent pour la règle. Utilisez l'action Commit pour forcer un envoi vers le serveur.

Si une erreur est détectée lors de l'envoi au serveur, l'opération échoue et l'erreur s'affiche dans le log d'envoi au serveur.

Toute les fonctions personnalisées sont remplacées par leurs expressions réelles dans le fichier mvt.mvt.

Gestion des droits

Les opération de création, suppression, mise à jour sont assujettis aux droits correspondants.

Related Links