...
Bloc de code |
---|
/* ___ Déclarations _____________________________________________________________________ date myDate num_e(4,0) myYear num_e(2,0) myMonth num_e(2,0) myDay num_e(8,0) myDateNum /* ___ Code _____________________________________________________________________________ myYear = &date_annee(myDate) /* extrait l'année de la date myDate (l'année sera au format SSAA) myMonth = &date_mois(myDate) /* extrait le mois de la date myDate myDay = &date_jour(myDate) /* extrait le jour de la date myDate myDateNum = &date_to_num(myDate) /* convertit la date myDate au format numérique (format SSAAMMJJ) |
...
Bloc de code |
---|
/* ___ Déclarations _____________________________________________________________________ alpha( 100) fileAlias alpha( 10) fileMode alpha(5000) myAlpha image myImage num_bin_4 nb4ReturnCode /* ___ Code _____________________________________________________________________________ myAlpha = 'my text to be transformed to an image variable (2205) fileAlias = 'myTransformation' fileMode = 'w' charger_dll 'VATOOLBX.DLL' appeler_dll 'VATOOLBX.DLL' 'VaToolBxOpenFile' fileAlias myImage fileMode nb4ReturnCode appeler_dll 'VATOOLBX.DLL' 'VaToolBxWriteString' fileAlias myAlpha nb4ReturnCode appeler_dll 'VATOOLBX.DLL' 'VaToolBxCloseFile' fileAlias nb4ReturnCode decharger_dll 'VATOOLBX.DLL' /* la variable myImage contient le texte initialement contenu dans la variable myAlpha. |
...
La fonction VaToolBxRandom est utilisée pour generater une valeur aléatoire.
Le resultat est un nombre de type NUM_BIN_4 compris entre -2147483648 et 2147483647.
Pour avoir une valeur comprise entre 0 et X on peut utiliser les fonctions &VALEUR_ABSOLUE et &MODULO (voir l'example ci-dessous)
3 -
...
Exemple
Ancre | ||||
---|---|---|---|---|
|
Example to retrieve a value between 1 and Exemple de récupération d'une valeur comprise entre 1 et 10 :
Bloc de code |
---|
/* ___ Declarations _____________________________________________________________________ num_e(6,0) wTime num_bin_4 wSeedValue num_bin_4 wRandomValue /* ___ Code _____________________________________________________________________________ /* ___ GenerateGenérer aune seedvaleur valueinitiale ____________________________________________________________ time wTime wSeedValue = wTime callappeler_dll 'vatoolbx.dll' 'VaToolBxSeedRand' wSeedValue /* ___ GenerateGénérer aune randomvaleur valuealéatoire __________________________________________________________ call_dll 'vatoolbx.dll' 'VaToolBxRandom' wRandomValue /* ___ CalculateObtenir une avaleur valuecomprise betweenentre 1 andet 10 _______________________________________________ wRandomValue = &absolutevaleur_valueabsolue(wRandomValue) wRandomValue = &modulo(wRandomValue;10) wRandomValue = wRandomValue + 1 |
Dynamic program call
We can use the CALL instruction to call a dynamic program, with static or even dynamic parameters
...
...
Appel dynamique de programme
On utilisera l'instruction APPELER pour appeler dynamiquement un programme externe (ou une procédure publique), avec des paramètres statiques ou dynamiques
1 - Exemples d'appels dynamiques
Bloc de code |
---|
/* ___ Declarations _____________________________________________________________________ alpha( 10) wProgramObjectFileName alpha( 128) wProgramPublicProcedureName alpha(1000) wParameters num_e( 2,0) myParameterNum01 num_e( 2,0) myParameterNum02 /* ___ Code _____________________________________________________________________________ callappeler myProgram callappeler myProgram.myProcedure myParameterNum01 = 22 callappeler myProgram.myProcedure2 myParameterNum01 myParameterNum01= 22 myParameterNum02= 05 callappeler myProgram.myProcedure2 myParameterNum01 myParameterNum02 /* ___ Dynamic program name _______________ Appel dynamique de programme et de nom de procédure également dynamique ______________________________________________ wProgramObjectFileName = 'mypgm' callwProgramPublicProcedureName = 'myProcedure' appeler &wProgramObjectFileName .&wProgramPublicProcedureName wProgramObjectFileName = 'mypgm' call &wProgramObjectFileName.myProcedure /* ___ Dynamic program name and public procedure name ___________________________________ wProgramObjectFileNamewProgramPublicProcedureName = 'myProcedure2' myParameterNum01 = 'mypgm' wProgramPublicProcedureName = 'myProcedure' call22 appeler &wProgramObjectFileName.&wProgramPublicProcedureName wProgramObjectFileName = 'mypgm' wProgramPublicProcedureName = 'myProcedure2' myParameterNum01 = 22 call &wProgramObjectFileName.&wProgramPublicProcedureName myParameterNum /* ___ Dynamic program name, procedure name and parameters ______________________________ wProgramObjectFileName = 'mypgm' wProgramPublicProcedureName = 'myProcedure2' wParameters = '22 05' callappeler &wProgramObjectFileName.&wProgramPublicProcedureName &wParameters |
Users's attribute
...
Attributs de contexte utilisateur
La session web peut être utilisée pour stocker et récupérer des valeursUser session can be used to store and retrieve values.
Avertissement | ||
---|---|---|
| ||
It is only available in client part of a cloud generated program (not in a server part or in a server program or in a windows program). |
1 - Set an attribute value
| |
Ces instructions sont seulement utilisables dans la partie cliente d'un programme généré en mode "cloud" (ces instructions ne sont donc pas utilisables dans une partie serveur, dans un programme pur serveur ou encore dans un programme généré en mode windows). |
1 - Positionner une valeur sur un attribut
Pour affecteur une valeur à un attribut d'une session utilisateur on utilisera la fonction VaToolBxCloudSetUserAttribute de la vaToolBx To set a session private attribute value, we simply have to use the VaToolBxCloudSetUserAttribute fonction of the vaToolBx library :
Bloc de code |
---|
/* ___ Declarations _____________________________________________________________________ alpha( 50) wAttributeName alpha(256) wAttributeValue /* ___ Code _____________________________________________________________________________ wAttributeName = 'myLabel' /* Label Etiquette wAttributeValue = 'xxxyyyzzz' /* ValueValeur toque bel'on storedveut understocker thedans userla session (must be alpha value) callutilisateur (ce doit être une variable Alpha) appeler_dll 'VaToolBx' 'VaToolBxCloudSetUserAttribute' wAttributeName - wAttributeValue |
The scope of this setting is limited to the current session (logout / logon will destroy all values).
2 - Retrieve an attribute value
La portée de cette valeur est limitée à la session courante de l'utilisateur, soit celle de son bureau, une déconnexion aura pour effet de supprimer les valeurs du contexte de l'utilisateur.
2 - Récupérer la valeur d'un attribut
Afin de récupérer la valeur stockée pour un attribut de la session d'un utilisateur, on utilisera la fonction VaToolBxCloudGetUserAttribute de la vaToolBx To retrieve a session private attribute value, we simply have to use the VaToolBxCloudGetUserAttribute fonction of the vaToolBx library :
Bloc de code |
---|
/* ___ Declarations _____________________________________________________________________ alpha( 50) wAttributeName alpha(256) wAttributeValue num_bin_4 wAttributeLength /* ___ Code _____________________________________________________________________________ wAttributeName = 'myLabel' /* Label Etiquette wAttributeValue = *blank wAttributeLength = 256 /* SizeTaille de ofla thevariable wAttributeValue variable callappeler_dll 'VaToolBx' 'VaToolBxCloudGetUserAttribute' wAttributeName - wAttributeValue - wAttributeLength ifsi *returncode_coderetour = *normal /* wAttributeValue containscontient thela valuevaleur previouslypréalablement savedsauvegardée endfin |
3 -
...
Supprimer la valeur d'un attribut
Pour supprimer un attribut de la session d'une utlisateur, on utilisera la fonction VaToolBxCloudSetUserAttribute de la vaToolBx avec une valeur vide
...
To delete a session private attribute value, we simply have to use the VaToolBxCloudSetUserAttribute fonction of the vaToolBx library with a blank value :
Bloc de code |
---|
/* ___ Declarations _____________________________________________________________________ alpha( 50) wAttributeName alpha(256) wAttributeValue /* ___ Code _____________________________________________________________________________ wAttributeName = 'myLabel' /* Label Etiquette wAttributeValue = *blank /* *blank pour tosupprimer deletel'attribut thede labella fromsession thede userl's sessionutilisateur callappeler_dll 'VaToolBx' 'VaToolBxCloudSetUserAttribute' wAttributeName - wAttributeValue |
Management Rules
Management rules (MR) can be used if we don't want to repeat the same code on different parts of the code.
The management rule can have parameters and must be seen as a text that will be parsed inside the code.
1 - Parameters
The parameter 1 of the MR will be placed in place of the :01 value etc.
The :01 (:xx) value can be present multiple times inside the MR.
The :01 (:xx) value can be placed anywhere in the code, even to replace an Adelia order or part of it.
...
Règles de gestion
Les règles de gestion (RG) peuvent être utilisées quand on veut répéter le même code dans différentes parties d'un programme ou bien dans différents programmes et quand on a pas la possibilité d'utiliser des procédures.
Une règle de gestion peut avoir des paramètres et doit être vue comme un bloc de texte qui serait collé dans le code en remplaçant les paramètres par leur valeur explicite.
1 - Paramètres
Le paramètre 1 de la règle de gestion sera placé tel quel à la place de la valeur :01 de la règle de gestion, il en sera de même pour les paramètres suivants.
La valeur :01 (:xx) pourra être présente plusieurs fois dans le source de la règle de gestion.
La valeur :01 (:xx) pourra être placée n'importe où dans le code de la règle de gestion, même pour remplacer un ordre adelia ou une partie d'un ordre adelia.
Bloc de code | ||
---|---|---|
| ||
Bloc de code | ||
| ||
/* ___ ManagementRG Rule "MyMa_BeautifulBelle_MRRG" ________________________________________________ /* ___ DeclarationsDéclarations _____________________________________________________________________ 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 ifsi wcli_usr_:02 = *blank wcli_usr_:02 = *user endfin updmaj_sql client cli_usr_:02 = :wcli_usr_:02 sqlcode_mr = *sqlcode :06 insertinserer_mrrg BOL_TRC_:05('*DEBUG';'my beautiful MR, sqlCode : ' // sqlcode_mr ;1) :04 = sqlcode_mr |
2 -
...
Utilisation
Pour insérer une RG, on utilisera l'ordre INSERER_RG
...
To use a MR, we simply have to insert it with the INSERT_MR order
Bloc de code | ||
---|---|---|
| ||
/* ___ Code _____________________________________________________________________________ insertinserer_mrrg myma_beautifulbelle_mrrg(test;cre;'milkwater';mrReturnCode;C; ) insertinserer_mrrg myma_beautifulbelle_mrrg(test;maj;*blank;mrReturnCode;S;*) |
...
...
Objets graphiques
1 - get an object from his object name
...