Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

Avertissement

Ne pas indenter tout le source (CTRL+SHIFT+S) car cela perdrait les alignements manuels.


...

Declarations

1 -

...

Déclarations par référence

Pour déclarer des variables  il vaut mieux faire des déclarations en référence à une autre variable ou à une propriété (du MLD). Si l'entité n'est pas utilisée dans le programme, vous pouvez aussi indiquer à quelle entité appartient la propriété dans l'ordre REF.

Pour declarer des listes il vaut mieux faire référence à une entité (1 ou plusieurs entités si nécessaire

When  declaring variables  it is better to declare in reference to another variable or property (of an LDM). If the LDM is not used in the program, you can also specify that the property belongs to a LDM in the REF order.

When  declaring lists it is better to declare in reference to an LDM (1 or more LDM if needed).

Bloc de code
languageadelia
/* ___ VariablesDéclarations des declarationsvariables ___________________________________________________________ 
REF(A5_COD_ARTICLE) 			  w_COD_ARTICLE_1 										/* definingdéfinir la thevariable w_COD_ARTICLE_1 as the de la même façon que la propriété A5_COD_ARTICLE
REF(A5_COD_ARTICLE HL_ART_ALCOOL) w_COD_ARTICLE_2 										/* definingdéfinir la thevariable w_COD_ARTICLE_2 as the de la même façon que la propriété A5_COD_ARTICLE ofde thel'entité HL_ART_ALCOOL LDM
REF(w_COD_ARTICLE_2)			  w_COD_ARTICLE_3 										/* définir definingla thevariable w_COD_ARTICLE_3 as thede la même façon que la  variable w_COD_ARTICLE_2 variable

/* ___ ListsDéclarations des declarationslistes _______________________________________________________________
LISTLISTE LST_ART_ALC_1  *REF_LDMMLD(HL_ART_ALCOOL)												/* definingdéfinir aune listliste withavec alltoutes theles propertiespropriétés ofde thel'entité HL_ART_ALCOOL ldm
LISTLISTE LST_ART_ALC_2  *REF_LDMMLD(HL_ART_ALCOOL) *REF_LDMMLD(HL_ART_LANGUE) 					/* definingdéfinir aune listliste withavec alltoutes theles propertiespropriétés ofdes theentités HL_ART_ALCOOL ldm and theet HL_ART_LANGUE ldm
LISTLISTE LST_ART_ALC_3  *REF_LDMMLD(HL_ART_ALCOOL) *REF_LDMMLD(HL_ART_LANGUE) w_COD_ARTICLE_1		/* definingdéfinir aune listliste withavec alltoutes theles propertiespropriétés ofdes theentités HL_ART_ALCOOL ldm and theet HL_ART_LANGUE et ldmégalement plusla thevariable w_COD_ARTICLE_1 variable

2 -

...

Taille des variables

1 - Variables ALPHA

Les variables

...

de type Alpha peuvent avoir une taille comprise entre 1 et 8386552 .

La taille de la variable peut auss en

Alpha variables range from 1 to 8386552 .

The length can also be indicated in :

  • kilobytes (* 1024) by adding the suffix en ajoutant le suffixe "K" to the value (up to à la valeur (jusqu'à 8189K), orou bien
  • megabytes (* 1048576) by adding the suffix en ajoutant le suffixe "M" to the value (up to à la valeur (jusqu'à 7M)
Remarque
titleAttention
If Autant que possible, ALPHA variables must be declared in reference to another les variables de type ALPHA doivent être déclarées en référence à une propriété ou une autre variable.


Bloc de code
languageadelia
/* ___ Déclarations Variablesdes declarationsvariables ___________________________________________________________ 
ALPHA(    35) 			  MyVariable1
ALPHA(  2205) 			  MyVariable2
ALPHA(    5K) 			  MyVariable3
ALPHA(    7M) 			  MyVariable4

2 - Variables NUM_E

Les variables

...

de type  NUM_E variables are defined with a Total Length value and a decimal value sont définies par  la taille Totale de la variable et le nombre de décimales : NUM_E(totalLengthValueNombreDeChiffresAuTotal, decimalValue)nombreDeDécimales)

La taille totale de la variable numérique doit être comprise entre 1 et 63 .
La taille correspond au nombre total de chiffres (décimales comprises).
La valeur décimale est inclue dans le nombre total de chiffres.
Comme le nombre de décimales est inclue dans le nombre total de chiffre, le nombre de décimales sera inférieur ou égal au nombre total de chiffresThe total length value range from 1 to 63 .
The length value is the total number of digits.
The decimal value is included in the number of digits .
So, as the decimal value is included in the number of digits, the decimal value must be less than or equal to the length.

Remarque
titleAttention
If Autant que possible, les variables de type NUM_E variables must be declared in reference to another doivent être déclarées en référence à une propriété ou une autre variable.


Bloc de code
languageadelia
/* ___ Déclarations Variablesdes declarationsvariables ___________________________________________________________ 
NUM_E(   8,0) 			  MyNum1		/*  8 digitschiffres,  8 forpour thela integerpartie partentière, 0 forpour thela decimalpartie partdécimale
NUM_E(  15,3) 			  MyNum2	    /* 15 digitschiffres, 12 forpour thela integerpartie partentière, 3 forpour thela decimalpartie partdécimale
NUM_E(   5,5) 			  MyNum3        /*  5 digitschiffres,  0 forpour thela integerpartie partentière, 5 forpour thela decimalpartie partdécimale

Constants

Constants must be used in order to replace an hard coded value in a code.


...

Constantes

Les constantes sont utilisées pour remplacer une valeur "en dur".

Une constante peut être utilisée pour afficher un valeur texte, un code action, un code retourA constant can be used for a displayed text value, an action code value, a return code value, etc.

1 -

...

Définition

To define Pour définir a new constant, simply go the the L4G editor , Repository menu , Constant dictionary line (or press F9 )

Image Removed Image Removed

  • The name should be a representative name for the constant,
  • the value is what should replace the constant in the code,
  • the "Translatable constant checkbox is used when a constant must be translated (for example for a text value)

2 - Usage

constante, il suffiit d'aller dans menu Référentiel de l'éditeur L4G, séléctionner la ligne de menu Dictionnaire des constantes (ou bien d'appuyer sur F9).

Image Added Image Added

  • Le nom doit être représentatif de la valeur de la constante,
  • la valeur est ce qui va remplacer la constante dans le code,
  • la case à cocher "Constante traduisible" est à cocher pour les textes dont on voudra qu'ils soient extraits par le gestionnaire de traduction (par exemple pour les constantes textes affichées dans un écran)

2 - Utilisation

Exemples d'utilisations des constantes Examples of consant usages :

Bloc de code
/* ___ Code withoutsans constantsconstantes _____________________________________________________________
ifsi codeAction = 'CR'
  btn_action:texttexte = 'CreateCréer'
elsesinon
  btn_action:texttexte = 'ModifyModifier'
endfin
...
returnCode = 'EX'

/* ___ Code withavec constantsconstantes ______________________________________________________________
ifsi codeAction = _ACTION_CREATION
  btn_action:texttexte = _TEXT_CREATE
elsesinon
  btn_action:texttexte = _TEXT_MODIFY
endfin
...
returnCode = _RETURN_EXIT

...


...

Valeurs numeriques

1 -

...

Valeurs arrondies

Pour effectuer un calcul avec une valeur arrondie, on utilisera la lettre H juste avant le signe =. 
Sans l'opérateur H, le résultat serait tronqué.
La lettre H correspond à

...

To calculate a rounded value , we can use the letter  H in front of the = sign. 
Without the H operator the result will simply be truncated .
The H character instruction is for "Half adjustment".
Results in the range 0 to
Les resultats compris entre 0 et 0.49 will be rounded down to 0, and results between seront arrondis à 0, les resultats compris entre 0.50 and et 0.99 will be rounded up to seront arrondis à 1.


Bloc de code
/* ___ DeclarationsDéclarations _____________________________________________________________________
NUM_E( 3,0) x 
NUM_E( 3,0) y 

/* ___ Code _____________________________________________________________________________
x  = 2 / 3                          /* x will containcontiendra 0
y H= 2 / 3                          /* y will containcontiendra 1

2 -

...

Calcul du reste

To retrieves the remainder in a mathematical division we can use the remainder instruction
The instruction remainder must be placed immediately after the arithmetical expression of the division .

...

Bloc de code
/* ___ Declarations _____________________________________________________________________
DECL_PGM
   /* global variables, DS, lists, cursors, parameters declarations

INIT_PGM
   INITIALIZE WIN_2205			/* call the paragraph to load the data
   EXECUTE    WIN_2205          /* show the window to the user

WIN_2205
   DECLARATION
      /* window variables, DS, lists, cursors, parameters declarations
   INITIALIZATION
      /* code to execute before displaying the window
   WORK_WITH_EVENTS
     OBJECTS_EVENTS...
     BTN_VALIDATE
        LeftButtonClick
           VERIFY                /* call the verification paragraph
           VALIDATE              /* call the validation paragraph
           TERMINATE             /* end the window process
   VERIFICATION
      /* code to verify the data entered in the window by a user
      SEND_MSG *CLR_ALL          /* clear the error messages
      if [errorCondition for object ZZ_JLP]
         prepare_msg hl21734 ZZ_JLP
         init_msg ZZ_JLP
         anomaly      
      end
      ...
   VALIDATION
      /* code to store the data in the database after verification
      UPD_SQL or CREATE_SQL or ...


...

Procedures

1 - Definition

A procedure is a block of code we can call from inside a program or from outside a program if the procedure is public.

...

Bloc de code
titleExamples of code of a Management Rule
/* ___ Management Rule "My_Beautiful_MR" ________________________________________________

/* ___ Declarations _____________________________________________________________________
decl alpha( 50)              w:01_val
decl ref(cli_usr_:02 client) wCli_usr_:02
decl num_e(9,0)              sqlcode_mr

/* ___ Code _____________________________________________________________________________
wcli_usr_:02  = :03							
if wcli_usr_:02 = *blank 
	wcli_usr_:02 = *user
end
upd_sql client cli_usr_:02 = :wcli_usr_:02
sqlcode_mr = *sqlcode
:06 insert_mr BOL_TRC_:05('*DEBUG';'my beautiful MR, sqlCode : '//sqlcode_mr ;1)
:04 = sqlcode_mr 

2 - Usage

To use a MR, we simply have to insert it with the INSERT_MR order

...