38 0 694KB
Safe X3
Support de formation Language Version 6
SAFE X3 LANGUAGE
Copyright © Sage 2009-2010
Page 2
SAFE X3 LANGUAGE
SOMMAIRE SOMMAIRE ................................................................................................................................................. 3 1.
LES VARIABLES ...................................................................................................................................... 4
2.
LES FONCTIONS ................................................................................................................................... 18
3.
LES VARIABLES SYSTEME ..................................................................................................................... 22
4.
ECLIPSE IDE ......................................................................................................................................... 25
5.
LES INSTRUCTIONS .............................................................................................................................. 29
6.
MESSAGE D’ERREUR OU D’AVERTISSEMENT ........................................................................................ 57
7.
GESTION DES TRACES .......................................................................................................................... 59
8.
OPTIMISATION DES REQUETES ............................................................................................................ 61
9.
OUTILS / UTILITAIRES .......................................................................................................................... 63
Copyright © Sage 2009-2010
Page 3
SAFE X3 LANGUAGE
1. LES VARIABLES
Les variables DECLARATION DE VARIABLES Syntaxe Etendue Type interne Global
Nom de variable
Dimension (si nécessaire) (nb ) ou ( nb1..nb2 )
Integer Shortint libelle Decimal Char Date Clbfile Blbfile
variable_name
Local
File
Table_name
occurences possibles
Local
Mask
Masque_name
occurences possibles
Local
LES VARIABLES DECLAREES SONT AUTOMATIQUEMENT INITIALISEES. L’INSTRUCTION RAZ RE-INITIALISE UNE VARIABLE. Copyright © Sage 2010
Sage X3 Language
3
Variables : nom de 12 caractères maximum constitué de lettres et/ou de chiffres le 1er caractère est obligatoirement une lettre Classes globales : Les variables Globales sont actives durant la session X3 de l’utilisateur. Une variable globale peut-être créée en cours de traitement. Elle ne sera pas supprimée automatiquement en fin de traitement. Pour la supprimer, il faudra faire un Kill de cette variable. Classes locales : Les variables Locales sont actives le temps du traitement courant •Connues uniquement du traitement courant ( ou sous-pro courant ) •classes [F] et [M] : étendue sur traitement courant et sous-pro. •sont connues de l’étiquette appelée par Gosub. Dimension : Il peut y avoir jusqu’à 4 dimensions. Les tables et les masques sont mono-dimensionnés, avec d’éventuelle occurrences comme dans les tableaux déroulants. Valeurs possibles pour shortint : -32 768 +32 767 Valeurs possibles pour libellé : 0 à 255
Copyright © Sage 2009-2010
Page 4
SAFE X3 LANGUAGE
Les variables DECLARATION DE VARIABLES Etendue des variables Etendue Type interne
Pérennité
Global
Integer ...
toute la session
Local
Integer
traitement courant
...
et étiquettes (appelées par Gosub)
File Mask
traitement courant étiquettes (appelées par Gosub) sous-programmes (appelés par Call)
Local
Sage X3 Language
Copyright © Sage 2010
4
Les variables (Les classes) Syntaxe Champ de table (classe [F], File)
Champ d'écran (classe [M], Mask)
Commentaires
[F:ABR]CHAMP [Ind] ABR = Abréviation Ind = Indice pour champ dimensionné [M:ABR]CHAMP[Ind]
ABR = Abréviation Ind = Indice pour champ dimensionné
La table doit avoir été ouverte avec l'abréviation ABR.
( ex. [F:BPC]BPCNUM )
Le masque doit avoir été ouvert avec l'abréviation ABR. ( ex. [M:BPC0]BPCNUM )
Variable locale (classe [L])
[L]VAR
VAR = Nom variable
Variables globales (classe [V])
[V]VAR
VAR = Nom variable
Le nom commence généralement par G (ex. GNBGAUCHE, GUSER).
Compteurs (classe [C])
[C]CPT
CPT = Nom compteur
Stockés dans la table APLCOM.
ABR = Abréviation
Champs techniques pour chaque tables ouvertes.
var = Nom variable
Nom en minuscules. Ces variables sont des mots-clés du langage. (ex. adxmother, mkstat).
Champ technique de table (classe [G], File)
[G:ABR]CHAMP
Variables Système (classe [S]) Langage Sage X3 Copyright © Sage 2010
Copyright © Sage 2009-2010
[S]var
Sage X3 Language
5
Page 5
SAFE X3 LANGUAGE
Champ table [F:ABR] Variable d’une table identifiée par son nom et l’abréviation de la table. Généralement l’abréviation du dictionnaire. Champ d’écran [M:ABR] Variable d’un écran identifiée par son nom et l’abréviation de l’écran. Visualisation du nom de la variable et de l’écran par la touche F6. Tableaux déroulants : Variable de bas de tableau, contient le nombre de lignes saisies. Visualisation de cette variable «bas de tableau » par F6, avec curseur sur le tableau sans être en saisie. Variables locales [L] Variables locales à un niveau de sous-programmes. Variables globales [V] Variables globales à la session. Chargées à l’ouverture de la session. [V]GUSER, [V]GLANGUE … utilisateur et langue de connexion [V]GFONCTION fonction courante Dictionnaire des variables (Développement / Dictionnaire données / Ouverture au paramétrage / Variables globales) Remarque Bien que pouvant être omise, il est préférable d’indiquer la classe de la variable. Si la classe n’est pas renseignée, la variable est recherchée dans la liste des classes.
Les variables >
Présentation : Classe [C] : Les compteurs − Cette classe permet : > La déclaration de compteurs fonctionnelles ou techniques dans un dictionnaire > Disponible sur toute la session > Stockage unique dans APLCOM > Maj variable dans une transaction > Lock pour éviter conflit > Rewrite pris en charge par le moteur Sage X3 − Le compteur est à renseigner dans le menu : Développement>Dictionnaire données>Ouverture au paramétrage>Variables de type compteur
− Exemple : > EXPORT, numéro de compteur incrémenté à chaque export depuis un modèle. Permet les exports différentiels.
Copyright © Sage 2010
Sage X3 Language
6
Les compteurs [C] Variables pouvant être dimensionnée. 99 maxi. Stockée dans la table APLCOM. Copyright © Sage 2009-2010
Page 6
SAFE X3 LANGUAGE
Variables superviseur ou fonctionnelle. Elles sont disponibles à tout instant sans être obligé de les déclarer ni de les charger depuis/vers la table APLCOM. Mise à jour d’un compteur Dans une transaction, il faudra le verrouiller avant de le mettre à jour La fin de transaction le déverrouille Exemple d’utilisation : traitement LECFIC pour créer un fichier trace ###################################################################### Trbegin [ACM] Lock NUMIMP If fstat=0 WNUMIMP = [C]NUMIMP [C]NUMIMP += 1 If fstat : Infbox « erreur sur compteur » : Endif Else Infbox « compteur verrouillé » Endif Commit ######################################################################
Les variables
> Présentation : Classe [G] : liée à une table − Cette classe permet : > D’obtenir les informations techniques d’une table > Cette classe est appelable pour toute table X3. − Exemple : > Le champ adxfname contient les champ de la table appelée, [G:BPR]adxfname contient donc BPRNUM,BPRNAM…
Copyright © Sage 2010
Sage X3 Language
7
Classe [G:xxx] Adxfname nom des champs d’une table Currind n° de la dernière clé utilisée Currlen nb de parties de clé à prendre en compte Filenume A ne pas utiliser Keylen nb d’octets utilisés pour chaque clé Keyname nom pour chaque clé Keyuniq 1 sans homonyme; 0 avec homonyme Copyright © Sage 2009-2010
Page 7
SAFE X3 LANGUAGE
Nbind Nbzon Tairec
nb de clés nb de champs taille enregistrement en nombre d’octets
Les variables DECLARATION DE VARIABLES Classe [L] & [V] : Variables dimensionnées •
Exemples : # Déclaration d’une variable locale de type integer de 8 éléments (numéroté de 0 à 7) Local Integer TABLNG(8) # Déclaration d’une variable locale de type date de 8 éléments (numéroté de 0 à 7) Local Date TABLNG(8) # Déclaration d’une variable locale de type string de 5 caractères Local Char LOCCHAR(5) # Déclaration d’une variable locale de type string de 8 éléments de 5 caractères (numéroté de 0 à 7) Local Char TABLIB (5)(8) # Déclaration d’une variable locale de type string de 8 éléments de 5 caractères (numéroté de 1 à 8) Local Char TABLIB (5)(1..8) SI LA LONGUEUR EST NON SPECIFIE, LA LONGUEUR PAR DEFAUT EST DE 30 CARACTERES. Copyright © Sage 2010
Sage X3 Language
8
Dimensionnement : On précise le nombre d’éléments ou une borne début et fin Dans le 1er cas, les éléments sont numérotés de 0 à … n-1 4 dimensions maximum : Local Integer COORD( I, J, K, L) Après une déclaration, une variable est toujours initialisée Integer, shortint, decimal : 0 Date : [0/0/0] Char : " "
Copyright © Sage 2009-2010
Page 8
SAFE X3 LANGUAGE
Les variables ALIMENTATION DE VARIABLES Opérations sur les numériques : # opérateurs disponibles pour champs numériques + - * / ^
Opérations sur les chaînes : # opérateurs disponibles pour les chaînes + •
Exemples : # Concaténation de chaînes de caractères Local Char WCHAR, WCHAR1, WCHAR2 WCHAR1 = «Erreur sur la table» WCHAR2 = «BPCUSTOMER» WCHAR = WCHAR1 – WCHAR2 Î «Erreur sur la table BPCUSTOMER» Copyright © Sage 2010
Sage X3 Language
9
Opération sur chaîne : Chaine+Chaine concatène deux chaînes. Chaine-Chaine concatène deux chaînes en ne laissant qu’un seul blanc. Opération sur numérique : num1 += num2 ajout de num2 à num1 num1 -= num2 retrait de num2 à num1 num1 *= num2 num1 est multiplié par num2. le résultat est dans num1 num1 /= num2 num1 est divisé par num2. le résultat est dans num1
Copyright © Sage 2009-2010
Page 9
SAFE X3 LANGUAGE
Les variables ALIMENTATION DE VARIABLES Opérations sur les dates : •
Exemples : # Alimentation d’une date à zéro et d’une autre au 31 décembre 2005 Local Date WDATE1, WDATE2 WDATE1 = [0/0/0] WDATE2 = [31/12/2005] # Différence entre 2 ( ex : NBJOUR = 30 ) Local Date WDATE1, WDATE2 Local Integer NBJOUR WDATE1 = [01/12/2005] WDATE2 = [31/12/2005] NBJOUR = WDATE2 – WDATE1 # Ajout ou soustraction d’un nombre de jours ( ex : WDATE2 = 15/01/2006 ) Local Date WDATE1, WDATE2 WDATE1 = [01/12/2005] WDATE2 = WDATE1 + 45
Copyright © Sage 2010
Sage X3 Language
10
Opérations sur date Date – Date donne un nombre de jours Date +/- nombre donne une date
Copyright © Sage 2009-2010
Page 10
SAFE X3 LANGUAGE
Les variables PARTICULARITE DU TRANSCLASSE Le trans-classe permet l’alimentation de chaque champ d'une classe des variables ([ F ] ou [ M ]) par ceux de même nom d'une autre classe ([ F ] ou [ M ])
[M:ABV1] = [F:TAB1] TABLE [F:TAB1]
MASK [M:ABV1] [F:TAB1] = [M:ABV1] [F:TAB2] = [F:TAB1]
TABLE1 [F:TAB1]
TABLE2 [F:TAB2] [F:TAB1] = [F:TAB2]
MASK1 [M:ABV1]
[M:ABV2] = [M:ABV1]
MASK2 [M:ABV2]
[M:ABV1] = [M:ABV2] Copyright © Sage 2010
Sage X3 Language
11
Trans-classe •D’une classe [F] vers une classe [M] et inversement •D’une classe [F] vers une autre classe [F] •D’une classe [M] vers une autre classe [M]
Copyright © Sage 2009-2010
Page 11
SAFE X3 LANGUAGE
Les variables PARTICULARITE DU TRANSCLASSE •
Exemple : Local File BPARTNER [BPR]
# Ouverture de la table BPARTNER
Read
# Lecture du premier enregistrement de la table
If
[F:BPR]BPR0 first [S]fstat = 0
# Si la lecture est bonne
# Assigner les valeurs de la table aux champs du masque : 1ere solution [M:BPR1] BPRSHO
=
[F:BPR]BPRSHO
[M:BPR1] BPRNAM(0)
=
[F:BPR]BPRNAM(0)
[M:BPR1] BPRNAM(1)
=
[F:BPR]BPRNAM(1)
[M:BPR1]CRY
=
[F:BPR]CRY
# Assigner les valeurs de la table aux champs du masque : 2nd solution [M:BPR1] = [F:BPR]
Copyright © Sage 2010
Sage X3 Language
12
Remarque : Un champ dimensionné se mouvemente poste par poste Le trans-classe mouvemente tous les postes des champs dimensionnés
Copyright © Sage 2009-2010
Page 12
SAFE X3 LANGUAGE
Les variables PARTICULARITE DU TRANSCLASSE AVANTAGES : ¾ En modifiant une table ou une structure de masque, il n'y a aucun besoin de modifier les programmes. ( intéressant pour le spécifique ) ¾ Champ dimensionné automatiquement alimenté pour tous les postes. ¾ Champ soumis à code activité automatiquement alimenté sans test préalable de présence du champ. COMPLEMENT : ¾ En plus du trans-classe, faire une alimentation champ par champ, pour les cas suivants : ¾ nom de champ différent ¾ champ absent de la classe d’origine Copyright © Sage 2010
Sage X3 Language
13
Le trans-classe est à favoriser surtout pour le standard.
Copyright © Sage 2009-2010
Page 13
SAFE X3 LANGUAGE
Les variables
> Bloc tableau d’un écran − Les lignes présents sur le bloc tableaux sont indicé de 1 à NBLIG, NBLIG étant la variable de bas de tableaux et contenant le nombre de lignes affichées. Nolign permet d’avoir le numéro de ligne courante. − Attention : Les indices commencent à 0, mais les lignes commencent à 1. On utilise la variable [s]nolign-1
− Exemple : > Factures de vente, l’information [M:SIH3]QTY(0), correspond à la quantité saisie sur la première ligne du tableau, nolign=1.
Copyright © Sage 2010
Sage X3 Language
14
Nolign-1 s’emploie pour indicer un champ d’un bloc tableau. Indice s’emploie pour indicer un champ dimensionné dans un bloc liste. Tout tableau dans un écran possède une variable de bas de tableau. Elle est déclarée dans la définition du bloc. Elle est à définir comme un champ saisissable, de type ABS Pour rendre le tableau invisible, mettre cette variable en invisible. Elle contient le nombre de lignes réellement saisies. F6 permet de connaître son nom quand on a le « focus » sur le tableau sans être en saisie.
Copyright © Sage 2009-2010
Page 14
SAFE X3 LANGUAGE
Les variables Bloc tableau d’un écran •
Exemple :
#--- Lecture des clients livrés et chargement de l’écran raz [M:BPC4]
[S]nolign=0 For [BPD]BPD0 Where [F]BPCNUM=[M:BPC0]BPCNUM [S]nolign += 1 [M:BPC4]
trans-classe ligne par ligne
= [F:BPD]
[M:BPC4]BPDNAM0(nolign-1) = [F:BPD]BPDNAM(0) [M:BPC4]BPDNAM1(nolign-1) = [F:BPD]BPDNAM(1)
complément de mise à jour
If dim([M:BPC4]REP0)>0 [M:BPC4]REP0(nolign-1) = [F:BPD]REP(0) endif If dim([M:BPC4]REP1)>0 [M:BPC4]REP1(nolign-1) = [F:BPD]REP(1) endif test présence des champs Next désactivables [M:BPC4]NBDLV =nolign variable de bas de tableau
Copyright © Sage 2010
Sage X3 Language
15
Trans-classe sur écran avec bloc tableau •il faut positionner la variable [S]nolign ( valeur 1 à ..) •faire une boucle pour faire alimenter chaque ligne du tableau par trans-classe •pas de nécessité de tester la présence d’un champ soumis à code activité Alimentation champ par champ •alimentation champ par champ se fait par l’indice [S]nolign-1 •nécessaire si nom de champs différent •nécessité de tester la présence d’un champ soumis à code activité
Copyright © Sage 2009-2010
Page 15
SAFE X3 LANGUAGE
Les variables Affecter une variable dont on construit le nom Assign exp_nom With exp_valeur Assign permet d'affecter une variable dont construit le nom
•
Exemple :
#--- chargement des 2 champs représentant [M:BPC4]REP0(nolign-1) = [F:BPD]REP(0) [M:BPC4]REP1(nolign-1) = [F:BPD]REP(1)
#--- ou utilisation assign For I= 0 to 10 Assign “[M:BPC4]REP”+num$(I)+”(nolign-1)” With [F:BPD]REP(I) Next
Sage X3 Language
Copyright © Sage 2010
16
Les variables Lire une variable dont on construit le nom Evalue
(exp_nom)
Evalue permet de lire une variable dont construit le nom
•
Exemple :
#--- chargement des 2 champs représentants [F:BPD]REP(0) = [M:BPC4]REP0(nolign-1) [F:BPD]REP(1) = [M:BPC4]REP1(nolign-1)
#--- ou utilisation evalue For I= 0 to 1 [F:BPD]REP(I) = evalue(“"+“[M:BPC4]REP”+num$(I)+”(nolign-1)”) Next
Copyright © Sage 2010
Copyright © Sage 2009-2010
Sage X3 Language
17
Page 16
SAFE X3 LANGUAGE
Les variables BLOB & CLOB •
Exemple :
# Déclaration d'une variable clob avec longueur par défaut Local Clbfile WWCLOB #
Déclaration d'une variable Local Clbfile WWCLOB( 3 )
clob
de
longueur
3
(
4094
caractères
maximum
)
# Déclaration d'un tableau de 2 clobs de longueur 3 Local Clbfile WWCLOB( 3 ) ( 2 ) # Déclaration d'un tableau de 2 clobs de longueur 3 Local Clbfile WWCLOB( 3 ) (0..1) # Affectation d’un clob par un autre clobclob [M:XXX]CLOB = [F:XXX]CLOB [M:XXX] = [F:XXX] # Affectation d’un clob par une variable char dimensionnée Local Char TEXTE (250)(1..100) For I=1 to 100 [M:XXX]CLOB += TEXTE(I) NEXT I
trans-classe fonctionne pour les Clobs & Blobs
# On affecte la variable TEXTE par le contenu du clobclob Local Char TEXTE (250)(1..100) Setlob TEXTE With [M:XXX]CLOB # On affecte le clob par la variable TEXTE. Local Char TEXTE (250)(1..100) Setlob [M:XXX]CLOB With TEXTE(1..100) Copyright © Sage 2010 Sage X3 Language
Blob et Clob : On peut passer un blob ou un clob en argument d’un Pour tester la présence d’un clob ou d’un blob, utiliser : LEN(champ_blob) > 0
18
sous-programme.
Nouveauté V5 : •Le clob est traité comme une chaîne de caractères. •On peut mouvementer une chaîne vers un clob ou inversement •On peut utiliser toute instruction dédiée aux chaînes pour les clobs
Copyright © Sage 2009-2010
Page 17
SAFE X3 LANGUAGE
2. LES FONCTIONS
Les fonctions LES CHAINES DE CARACTERES left$ ( chaîne, inb ) right$ ( chaîne, ipos ) mid$ ( chaîne, ipos, inb ) seg$ ( chaîne, ideb, ifin ) len ( chaîne ) val ( chaîne ) num$ ( nombre ) tolower ( chaîne ) toupper ( chaîne ) ctrans ( chaîne [, ci, co ] ) vireblc ( chaîne, ioption ) format$ ( cfmt, chaîne ) pat ( chaîne, cmodèle ) instr ( ipos, chaîne, cssch ) space$ ( inb ) string$ ( inb, chaîne ) ascii ( chaîne ) chr$ ( iascii ) parse ( chaîne [, btoken] ) evalue ( chaîne [,btoken] ) getenv$ ( chaîne )
Copyright © Sage 2010
Extrait les inb premiers caractères de chaîne Extrait les caractères de chaîne à partir de ipos Extrait les inb caractères de chaîne à partir de ipos Extrait la sous-chaîne comprise entre ideb et ifin Longueur de la chaîne Conversion d’une chaîne en numérique Convertit un nombre en chaîne Convertit une chaîne en minuscules Convertit une chaîne en majuscules Filtre les caractères de chaîne Supprime les blancs dans une chaîne Formatage de chaîne avec cfmt « Matching » de chaîne avec le modèle cmodèle Recherche cssch dans chaîne à partir de ipos Génère une chaîne constituée de inb blancs Génère inb fois chaîne Code ASCII du premier caractère de chaîne Retourne le caractère dont le code ASCII est iascii Analyse syntaxique de chaîne ( 0 si erreur ) Evaluation de l’expression contenue dans chaîne Retourne la valeur de la variable système définie dans chaîne
Sage X3 Language
20
Fonctions fréquemment utilisées left$, right$, mid$, num$, vireblc, format$, string$, evalue
Copyright © Sage 2009-2010
Page 18
SAFE X3 LANGUAGE
Les fonctions LES DATES date$ time$ time day ( date ) day$ ( date ) month ( date ) month$ ( date ) year ( date ) gdat$ ( ijour, imois, iannée ) nday ( date ) nday$ ( inbjour ) dayn ( date ) week ( date ) aweek ( isemaine, iannée ) eomonth ( date ) addmonth ( date, inb )
Retourne la date du jour (Serveur) Retourne l’heure courante sous la forme HH:MM :SS Heure courante en secondes Extrait le jour d’une date Retourne le nom du jour d’une date Extrait le mois d’une date Retourne le nom du mois d’une date Extrait l’année d’une date Retourne la date correspondant à [ijour/imois/iannée] Retourne le nombre de jours depuis le 1/1/1600 de date Convertit un nbre de jours depuis le 1/1/1600 en date Retourne le numéro de jour dans la semaine de date Retourne le numéro de semaine d’une date Date du début de la semaine numéro isemaine de iannée Retourne la date de la fin du mois d’une date Ajoute inb mois à une date
format$
Mise en forme d’une date
Copyright © Sage 2010
Sage X3 Language
21
Fonctions fréquemment utilisées date$, day, month, year, eomonth, addmonth, format$
Copyright © Sage 2009-2010
Page 19
SAFE X3 LANGUAGE
Les fonctions LES EXPRESSIONS NUMERIQUES abs ( nombre ) mod ( ientier, idiv ) rnd ( nombre ) sgn ( nombre ) sqr ( nombre ) ar2 ( nombre ) arr ( nombre, nprec ) fix ( nombre ) int ( nombre ) fac ( ientier ) anp ( in, ip ) cnp ( in, ip )
Valeur absolue Modulo Nombre aléatoire entre 0 et nombre (exclus) [-1,0,1] Retourne le signe d’un nombre [N] Racine carrée Arrondi de nombre à 2 décimales Arrondi de nombre à nprec près Troncature d’un nombre Partie entière d’un nombre Factorielle Arrangements de ip dans in Combinaisons de ip dans in
Format$
Mise en forme d’un nombre
Copyright © Sage 2010
Sage X3 Language
22
Les fonctions DIVERS find ( valeur, liste )
Recherche d’une valeur dans une liste
uni ( liste )
Retourne indice du premier doublon de liste
min ( liste )
Retourne la valeur minimale d’une liste
max ( liste )
Retourne la valeur maximale d’une liste
avg ( liste )
Moyenne arithmétique d’une liste
var ( liste )
Variance d’une liste
sum ( liste )
Somme d’une liste
prd ( liste )
Produit d’une liste
sigma( [var =] ideb, ifin, expr ) Sommation de expr avec var variant entre ideb et ifin [S]indcum
Copyright © Sage 2010
Copyright © Sage 2009-2010
Variable de boucle par défaut de sigma()
Sage X3 Language
23
Page 20
SAFE X3 LANGUAGE
Fonctions fréquemment utilisées find, min, max, sum Sum : Sum (nomvar) pour une variable dimensionnée, somme de tous les postes
Copyright © Sage 2009-2010
Page 21
SAFE X3 LANGUAGE
3. LES VARIABLES SYSTÈME
Les Variables système TABLE adxdlrec
nombre d’enregistrements effacés par l’instruction Delete
adxuprec
nombre d’enregistrements modifiés par l’instruction Update
fstat
statut de retour d’une instruction sur table
fileabre(5) (101)
abréviations des tables ouvertes
filename (255) (101) noms des tables ouvertes lockwait
nombre de secondes maximum pour une tentative de verrouillage
FICHIER SEQUENTIEL adxifs
séparateur de champs
adxirs
séparateur d’enregistrements
adxium
type de codage
Copyright © Sage 2010
Sage X3 Language
25
fstat : 0 ok 1 enregistrement verrouillé 2 à 5 erreur adxium : 50 ASCII 122 UCS2 autre UTF8
Copyright © Sage 2009-2010
Page 22
SAFE X3 LANGUAGE
Les Variables système EN SAISIE pcolor
couleur d’affichage du texte dans une zone au format ‘c’
currbox
liste gauche courante
indice
indice courant d’une zone dimentionnée
nolign
numéro de ligne courant dans un tableau déroulant
mkstat
statut d’erreur en saisie de zone
status
statut de retour suite à une saisie
adxgtb
Statut entrée ou sortie dans un tableau
DATE datesyst
date système
adxdcs
année de départ pour la saisie de date avec l’année sur 2 chiffres
Copyright © Sage 2010
Sage X3 Language
26
datesyst : Date saisie sur l’écran de connexion, utilisée pour les écritures, par exemple. Contrairement à date$ qui donne la date du jour délivrée par le serveur.
Copyright © Sage 2009-2010
Page 23
SAFE X3 LANGUAGE
Les Variables système APPLICATION nomap
application courante
adxmother
application mère
adxdir
répertoire d’installation du runtime
RESSOURCES adxmpr
nombre maximum de programmes résidents
adxmso
nombre maximum de fichiers séquentiels ouverts
adxmto
nombre maximum de tables ouvertes
adxmbm
nombre maximum de buffers message
adxmxl
nombre maximum d’éléments en liste de gauche
maxmem
taille maximum de mémoire allouée
Copyright © Sage 2010
Sage X3 Language
27
Notion d’héritage : Lorsqu’un exécutable fait appel à un traitement, ou table ..., ce dernier est recherché en fonction de la syntaxe : •dans le dossier spécifié s’il est précisé •dans le dossier courant [S]nomap(0) puis dans chacun des dossiers mères [S]adxmother(0..7) en tenant compte de l’ordre hiérarchique, jusqu’à ce qu’il trouve. •[S]adxmother(i) = [S]nomap(i+1)
Copyright © Sage 2009-2010
Page 24
SAFE X3 LANGUAGE
4. ECLIPSE IDE 4.1. DEFINITION Eclipse est un environnement de développement intégré libre, permettant de créer des projets de développement mettant en œuvre n'importe quel langage de programmation dont le langage L4G X3 par l’ajout d’un plugin.
4.2. INSTALLATION ET CONFIGURATION La dernière version d’éclipse est téléchargeable à deux adresses « Eclipse IDE for Java Developers » En interne : http://nina/projects/eclipse/galileo/eclipse-java-galileo-SR1-win32.zip En Externe : http://www.eclipse.org/downloads/ Une fois téléchargé, vous devez ensuite extraire le contenu téléchargé (ex: « C:\eclipse\ » ou « C:\eclipse\3.5\ »), puis installer une JVM (1.6 minimum), si celle-ci n’est pas présente sur votre machine http://java.sun.com/javase/downloads/index.jsp Pour connaitre la version qui sera utilisée par éclipse : Taper « Java -version » dans un prompt de commande.
4.3. INSTALLATION DU PLUGIN SAGE X3 Pour démarrer éclipse, cliquez sur l’exécutable « eclipse.exe » situé à la racine de votre dossier téléchargé. Une fois Eclipse lancé celui-ci vous demandera de renseigner le « workspace », c'est-à-dire le répertoire de travail. Ne mettez pas les workspaces dans un sous-répertoire de l’installation d’eclipse, car eclipse peut créer des répertoires au même niveau que le workspace. Créez un répertoire chapeau (ex: D:\workspaces\X3). Le déploiement du plugin repose sur une mise à jour via un accès HTTP. Modifier la configuration d’accès au réseau si besoin en passant par le menu « Window | Preferences » General > Network Connection. Les différentes options sont les suivantes : 6 Direct = pas de proxy 6 Native = informations fournies par le système » Ne fonctionne pas toujours suivant les proxys 6 Manual = informations saisies par l’utilisateur Une fois la configuration du réseau faite, vous devez ajouter l’adresse de mise à jour du plugin SAGE dans le menu « Help | Install New Software » Ajouter le nouveau site de mise à jour : 6 « Add... » 6 Name ⎝ SAFE X3 Studio Update Site 6 Location ⎝ http://pluginx3.sage.fr/safex3/studio/update/ (site externe) ou ⎝ http://uranus2:8080/safex3/studio/update (site interne) Depuis le Menu « Help | Install New Software » 6 Work with ⎝ Sélectionnez « SAFE X3 Studio Update Site » 6 Cochez « SAFE X3 Studio for Eclipse » Copyright © Sage 2009-2010
Page 25
SAFE X3 LANGUAGE
6 6 6 6
Cliquez sur « Next > », « Next > » Acceptez les termes de la licence Cliquez sur« Finish » Redémarrez lorsque vous y êtes invité
Une fois le site de mise à jour référencé et le plugin installé, il est possible d’aller recherché directement les mises à jour du plugin SAGE depuis le Menu « Help | Check for updates ». 6 Interroge tous les sites référencés pour vérifier si des mises à jour sont disponibles. 6 Revoir la sélection si vous le souhaitez. 6 Installez puis redémarrer. Attention : Si un avertissement sur un contenu non signé apparait, cliquer sur OK
4.4. CONFIGURATION DU PROJET Pour la création du projet, allez dans le menu « File | New | Project ... » 6 Sélectionner « SAFE X3 Project » 6 « Next > » 6 Donner un nom pour le projet (ex: myserver_DEMO) Dans le but d’établir une connexion entre Eclipse et le dossier X3, vous devez configurer l’accès d’éclipse avec les informations de connexion classique à un dossier X3. » Folder (ex: DEMO) » Hostname (ex: myserver) » Port (ex: 16000) » X3 User et X3 Password » Language (ex: FRA, ENG, ...) » User et Password (authentification OS) » Help ⎝ Ne saisir que si l’info n’est pas présente dans le fichier solution.xml 6 « Finish » Une fois le projet créé, Eclipse le sélectionne par défaut, vous devez maintenant ajouter les traitements à modifier dans votre projet dans le menu « File | Open SAFE X3 Source file... » 6 Sélectionner dans la liste 6 Filtrer la liste 6 Saisir directement le nom d’un traitement Il est aussi possible d’organiser votre projet des dossiers 6 Clic droit sur un projet, puis « New | Folder » 6 Sélectionner les fichiers puis 2 options : » Déplacement à la souris dans le dossier » Clic droit menu « Move... » Attention ! Commencer par désactiver le build automatique par le menu « Project | Build Automatically ». Le problème a été corrigé sur la V1.2
4.5. FONCTIONNALITES » » » »
Colorisation syntaxique modifiable au menu Window | Preferences puis SAFE X3 Studio | Editor Multi-fenêtrage Passage en plein écran (Ctrl + M) Complétion (Ctrl + Espace) sur les mots clés, les variables globales, les variables systèmes
Copyright © Sage 2009-2010
Page 26
SAFE X3 LANGUAGE
Complétion sur les champs des abréviations (Tables et Masques) déclarées dans le traitement (Local File, Local Mask) » Auto-fermeture des caractères fonctionnant par paires : ", ', ( et [ » Bulle d'aide (tables, masques, variables globales, menus locaux) » Templates de code et possibilité d'ajouter ses propres templates dans Window | Preferences puis SAFE X3 Studio | Templates » Commenter / dé-commenter (Ctrl + /) une ou plusieurs lignes à la fois » Indentation (Tab) d’une ou plusieurs lignes à la fois » Atteindre les étiquettes, les procédures et fonctions (y compris celles déclarées dans d'autres traitements) selon la position actuelle du curseur (F3) » Détection des erreurs de syntaxe à la saisie » Navigation dans l'historique des déplacements multi-fichiers (Alt + flèche gauche et Alt + flèche droite) » Historique local des modifications (Clic droit, puis Compare With | Local History...) » Comparaison fichier à fichier » Recherche multi-fichiers (Ctrl + H) dans les fichiers du workspace, d'un projet, ... Console d’évaluation » Variables Globales » Variables Système » Func ... Projet » Reconnexion automatique en cas de déconnexion réseau »
»
» 6 6
Personnaliser sa façon de travailler Menu « Window | Preferences » » Keys : Touches claviers (différents profils) » Connection : Connexion • Timeout • Lock refresh rate » Editor : Colorisations • Commentaires • Instructions • Etiquettes • Chaînes • Sous-programmes et fonctions » Http Service ⎝lien avec Client X3 » Locks : Verrous • Autoriser le déverrouillage (de ses propres verrous) • Autoriser le déverrouillage de tous les verrous » Templates : Modèle de code
Important ! 6 Ne pas utiliser le « rename » de fichiers » N’est pas répercuté sur le serveur 6 Suppression d’un fichier du projet » Ne supprime pas le fichier sur le serveur 6 Veiller à désactiver « Build Automatically » 6 Penser au « File | Reset object cache », bouton » Accéder à des éléments nouvellement créés
4.6. DIAGNOSTIQUER Pré-requis pour le fonctionnement d’Eclipse : 6 Serveur » Le traitement AXDTMAIN doit être présent dans le dossier de référence. » Ideclient.jar dans .../X3_PUB/X3_ROOT/X3CLI 6 Eclipse (poste client) » Java 1.6 Copyright © Sage 2009-2010
Page 27
SAFE X3 LANGUAGE
6 6
6 6 6 6
6 6 6
Client X3 (poste client) » Configuration ⎝ Menu « Outils | Options » Utilisateur X3 » Paramètre AECLIPSE à Oui ⎝ Active les interactions avec Eclipse • Chapitre « superviseur » • Groupe « DEV » Eclipse » 3.5 SR1 recommandé (Eclipse Platform 3.5.1) » Plugin SAFE X3 Studio version 1.0.2.200911161752 mini En autonome pour accès au serveur » Moteur >= 15r.120 Lancement Eclipse depuis Client X3 » Moteur >= 16r.114 » CLI.104 mini Exécution d’un traitement depuis Eclipse » Moteur >= 16r.115 » Superviseur >=16.002 » CLI.105 mini Eclipse V5 » Compilation sur X3 du traitement AXDTMAIN Mode debug et affichage des logs » eclipse -debug -consoleLog Menu « Help | About » , Puis « Installation Details » » Installed Software • Version des plugins (features) » Installation History • Visualiser et/ou revenir en arrière » Features • Liste des « features » » Plug-ins • Liste de tous les plugins » Configuration : configuration de démarrage d’Eclipse • Options de lancement • Version de la JVM • Plugins • .... • Voir le contenu de « Error Log »
Copyright © Sage 2009-2010
Page 28
SAFE X3 LANGUAGE
5. LES INSTRUCTIONS
Les instructions TABLES Classe [F] : ouverture et fermeture d’une table [Local] [& [&
File [ ] Where ] Order By { [ ( ) ] [ Asc | Desc ] ]
Ouverture de tables en précisant éventuellement : Abréviation Sélection d’enregistrements Ordre de parcours selon une clé ou en définissant un index sur des champs Close
[ Local ]
File
Classe [F] par défaut : 1ère table du dernier Local File
[ ]
Fermeture de tables ouvertes par File
Instruction CLALEV clalev () Permet de tester si une classe de variables de type fichier est accessible par un programme Exemple : If clalev([F:ITM])=0 : Local File Copyright © Sage 2010
ITMMASTER [ITM] : Endif
Sage X3 Language
29
Ouverture de table : •1 table ne peut pas être ouverte 2 fois sous la même abréviation dans 1 même traitement. •1 table peut être ouverte sous 2 abréviations différentes dans 1 même traitement ( 2 buffers ) •Ouverture d’une table d’un autre dossier : serveur:n°[email protected] Fermeture de table : •La fermeture traitement ferme les tables ouvertes dans ce traitement •File ferme toutes les tables précédemment ouvertes par un ordre File précédent. •Local File fortement conseillé car ne ferme pas ces tables. Clalev :
•retourne 1 si la classe est accessible. •retourne 0 si elle ne l’est pas.
Copyright © Sage 2009-2010
Page 29
SAFE X3 LANGUAGE
Les instructions TABLES Etendue de la Classe [F] •
Exemples : # Traitement principal Local File BPARTNER [BPR] Read [BPR]BPR0=« MARTIN » Call TOTO # -- le client MARTIN est toujours en ligne Call TATA # -- c’est le client DUPOND qui est maintenant en ligne End # Sous-programme TOTO ( ouverture d’un 2ème buffer ) Local File BPARTNER [BPR] Read [BPR]BPR0=« DUPOND » End # Sous-programme TATA ( ouverture de la table si elle n’est pas déjà ouverte ) If clalev([F:BPR])=0 : Local File BPARTNER [BPR] : Endif Read [BPR]BPR0=« DUPOND » End Copyright © Sage 2010
Sage X3 Language
30
Local file : •Si on ouvre une table dans un sous-programme avec une abréviation connue dans le traitement appelant, ouverture d’un 2ème buffer. •S’il n’y a pas d’utilité d’avoir ces 2 buffers, on évite de réouvrir une table déjà ouverte ( performance) •clalev([F:xxx])=0 indique que la table d’abréviation xxx n’est pas ouverte
Copyright © Sage 2009-2010
Page 30
SAFE X3 LANGUAGE
Les instructions TABLES Jointure de tables Link With [ ( ) ] = [ , … ] As [& Where ] [& Order By ] Permet de définir un ensemble de liens entre différentes tables, ainsi qu'une abréviation unique, pour accéder à ces tables en une seule instruction Read ou For.
Exemple :
& & & & &
Link [ITF] With [ITV]ITV0=[F:ITF]ITMREF;[F:ITF]STOFCY, [ITM]ITM0=[F:ITF]ITMREF As [LNK] Where [F:ITF]CUNFLG=2 & [F:ITF]STOFCY=[M:SBI1]FCY & [F:ITM]TCLCOD=[M:SBI1]TCLCODSTR Order By Key ITF1 For [LNK] [M:SBI2] = [F:ITM] [M:SBI2] = [F:ITV] [M:SBI2] = [F:ITF] Next
Copyright © Sage 2010
Link : • • • • • • • • • • •
Sage X3 Language
31
Table principale et tables liées (jusqu'à 8) doivent avoir été ouvertes au préalable Une jointure est de type extérieure gauche si l'on précise le caractère '=' Une jointure est de type stricte si l'on précise le caractère '~=‘ L'abréviation de lien ne permet pas d’écriture sur l’une ou l’autre des tables L’abréviation de lien ne contient que les champs de la table principale Æ utiliser l’abrev. Lien pour la lecture Æ utiliser l’abrev des tables pour les maj et suppression, et accéder ou maj les champs Il n'y a pas de classe [G] associées à l'abréviation de lien L'abréviation de lien doit être unique On peut définir un filtre (par Filter) sur un fichier de lien On peut définir un Link d'une table sur elle-même, et ainsi associé 2 enregistrements d'une même table On peut définir plusieurs liens (avec des abréviations différentes) sur une même table principale ( jusqu'à 8 ). La lecture d'un fichier dépassant 255 colonnes provoque une erreur en version DB2 (attention au link)
Copyright © Sage 2009-2010
Page 31
SAFE X3 LANGUAGE
Les instructions ACCES A LA BASE DE DONNEES Instruction READ Read [ ] [ ] [ ( ) ]First[ With Lockwait = ] Readlock Last Look Curr Prev Next = { < | > | = } Lecture d’un enregistrement d’un fichier sur un index avec verrou pour Readlock. Chargement de la classe [F] avec les valeurs des champs de l’enregistrement lu. Look permet de tester l’existence d’un enregistrement, de le rendre ‘enregistrement courant’ mais de ne pas le charger dans la classe [F]. Toujours tester la variable système [S]fstat.
Exemple : If clalev ([F:SLT])=0 Local File SALTRS [SLT] Endif Read [SLT]SLT0=4;[F:AWI]TRN If fstat Copyright © Sage 2010
Sage X3 Language
32
Read : •on utilise la clé définie par la clause Order By du File, du Filter ou du Link •sinon, l'une des clés définies en paramétrage de la table •Lorsqu'on utilise l'abréviation de lien, on lit un enregistrement du fichier principal selon la clé donnée puis un enregistrement dans chaque fichier lié selon la clé et le mode de lecture donnés dans Link.
Copyright © Sage 2009-2010
Page 32
SAFE X3 LANGUAGE
Les instructions ACCES A LA BASE DE DONNEES Instruction FOR-NEXT For [ [ ( ) ] ] [ & Where ] [ & With Lock | With Stability ] ... Next [ ]
[ From
To ]
permet de faire des boucles de lecture sur une table selon une clé donnée
Exemple : If clalev ([F:SOH])=0 Local File SORDER [SOH] Endif Trbegin [SOH] For [SOH]SOH0 Where ORDSTA = 1 & ORDDAT < [01/01/2005] Readlock [SOH]curr ... Next Commit Copyright © Sage 2010
Sage X3 Language
33
For ... Next : • On ne sort pas d'une boucle "For ... With Lock" ( ne pas utiliser ) • On peut imbriquer des boucles "For" sur le nombre de parties de la clé, de façon à définir des ruptures • La clause Where permet de réduire les enregistrements à traiter (important pour les performances) • La clause Where disparaît dès la fin de la boucle For • La lecture d'un fichier dépassant 255 colonnes provoque une erreur en version DB2 (attention au link)
Copyright © Sage 2009-2010
Page 33
SAFE X3 LANGUAGE
Les instructions ACCES A LA BASE DE DONNEES Instruction FOR-NEXT Possibilité d’ imbriquer des boucles "For" sur le nombre de parties de la clé, de façon à définir des ruptures.
Exemple :
If clalev ([F:SOP])=0 Local File SORDERP [SOP] Endif # La clé SOP0 est contituée des 3 champs : SOHNUM,SOPLIN,SOPSEQ # rupture sur le 1er champ : SOHNUM # l’indice s’il est précisé indique le nb de parties de clé à prendre en compte For [SOP]SOP0(1) For [SOP]SOP0 ...
Rupture sur le 1er champ de clé
Next Next
Sage X3 Language
Copyright © Sage 2010
34
Les instructions ACCES A LA BASE DE DONNEES Instruction FOR-NEXT Différence de comportement entre Oracle et SQL-server dans les boucles For, lorsqu'on créé des enregistrements vérifiant la clause where et dont la clé est supérieure à la clé courante : •
sous Oracle, ces enregistrements ne seront jamais relus
•
sous SQL-server, ils seront lus à leur tour (d'où un risque de boucle infernale...)
Exemple : # Clé KEY comprenant le champ CHP1 For [XXX]KEY with stability If CHP1 = 'AAA' CHP1 = 'BBB' Rewrite [XXX] endif Next Sous SQL-server, avec un curseur stable, on lit 2 lignes : 'AAA, 'CCC'. avec un curseur non stable ( donc sans précision de la clause stability) , on lit 3 lignes : ’AAA, 'BBB', 'CCC'. Sous Oracle, on lit systématiquement 2 lignes : 'AAA, 'CCC'. Copyright © Sage 2010
Copyright © Sage 2009-2010
Sage X3 Language
35
Page 34
SAFE X3 LANGUAGE
Les instructions ACCES A LA BASE DE DONNEES Restrictions Filter
Where [ Order By ]
Pose d’un filtre sur les enregistrements d’une table déjà ouverte par File en précisant éventuellement un ordre de parcours selon une clé existante ou une nouvelle clé définie dans le Order by.
Filter
dépositionne le filtre pour la table d’abréviation
Attention : Ne pas oublier de dé-positionner le filtre.
Copyright © Sage 2010
Sage X3 Language
36
Filter : • Un 2ème Filtre sur une même classe annule et remplace le filtre précédent. • Un filtre placé dans un sous-programme est toujours actif en retour dans le programme appelant (pas de niveau de localité)
Copyright © Sage 2009-2010
Page 35
SAFE X3 LANGUAGE
Les instructions MISE A JOUR DE LA BASE DE DONNEES Instruction WRITE Write
[ ]
Création d’un nouvel enregistrement avec les valeurs contenues dans la classe [F]
Exemple :
... [F] = [M] Trbegin [TEST] Write [TEST] If [S]fstat Rollback Else Commit
Copyright © Sage 2010
:# :# :# :# :#
trans-classe ( alimentation de la classe [F] ) début de la transaction écriture sur fichier en cas de problème quelconque la transaction est annulée
:# sinon elle est validée
Sage X3 Language
37
Transaction : Toute création, mise à jour ou suppression doit se faire à l’intérieure d’une transaction. En cours de transactions, les créations, modifications et suppressions ne sont pas visibles des autres utilisateurs. Write : • • • •
Une instruction Write ne modifie pas l'enregistrement courant. Il faut donc faire une lecture, si on veut se positionner sur ce nouvel enregistrement. Il n'est pas possible d'utiliser une abréviation de lien pour écrire un enregistrement. [S]fstat indique comment s’est passée l’opération sur la table.
Copyright © Sage 2009-2010
Page 36
SAFE X3 LANGUAGE
Les instructions MISE A JOUR DE LA BASE DE DONNEES Instruction REWRITE Rewrite
[ ] [ ] [ ( ) ] [|=] [ ] First Last Curr Prev Next =
Réécriture d’un enregistrement avec les valeurs contenues dans la classe [F]. Exemple : # Lecture d'un enregistrement pour modification du champ ZONE # Lecture sur le 1er champ de l’index CLE2 Trbegin TEST [TEST] Readlock [TEST]CLE2(1) = date$ If [S]fstat [TEST]ZONE += 100 Rewrite [TEST] Commit Else Rollback Endif Copyright © Sage 2010
Sage X3 Language
38
Rewrite : • l'enregistrement devient l'enregistrement courant de la table. • Il n'est pas possible d'utiliser une abréviation de lien pour réécrire un enregistrement. • La modification d'un enregistrement doit se faire à l'intérieur d'une transaction. • Conseil : verrouiller l’enregistrement par ReadLock
Copyright © Sage 2009-2010
Page 37
SAFE X3 LANGUAGE
Les instructions MISE A JOUR DE LA BASE DE DONNEES Instruction UPDATE Update &
[ ]
[ Where { }] With =
[ , ... ]
Mise à jour globale de champs d’une table avec des restrictions éventuelles. Cette instruction permet de faire automatiquement la lecture, le verrouillage, la réécriture et le déverrouillage sur les enregistrements.
Exemple :
# Mise à jour du champ FLGACTIF du fichier CLIENT # pour tous les enregistrements dont les zones DEBIT et CREDIT sont à 0. Local File CLIENT [CLI] Update [CLI] Where DEBIT = 0 and CREDIT = 0 and FLGACTIF 1 & With FLGACTIF = 1 # affichage du nombre d’enregistrements modifiés Infbox "enregistrements modifiés :"-[S]adxuprec
Copyright © Sage 2010
Sage X3 Language
39
Update : • réécrire des enregistrements d’une table avec les valeurs passées en paramètre • La clause Where permet de réduire les enregistrements à traiter (important pour les performances) • La clause Where disparaît dès la fin de l’Update • pour un ensemble d’enregistrements à modifier, Update est + rapide et - consommateur de Rollback. • ne peut pas se faire sur une abréviation de lien. • tentative de verrouillage sans limitation de durée, sans possibilité d’interrompre • conseil : verrouiller la table dans son ensemble par Lock [abrev] • nombre d’enregistrements modifiés indiqués par la variable [S]Adxuprec. • ATTENTION : on ne peut pas prédire le comportement d'une instruction Update qui affecterait un champ avec la valeur d'un champ lui-même affecté par Update. • Donc à utiliser sur un petit nombre d’enregistrement (MODIF)
Copyright © Sage 2009-2010
Page 38
SAFE X3 LANGUAGE
Les instructions MISE A JOUR DE LA BASE DE DONNEES Instruction DELETE Delete
[ ] [ ] [ ( ) ] [|=] [ ] Curr = Suppression d’un ou plusieurs enregistrements
Delete
[ ] [ ] [ ( ) ] [ Where
{} ]
Suppression des enregistrements sélectionnés Exemple : # Effacement de tous les enregistrements dont le numéro de facture est "00001001" # le numéro de facture est le 1er élément de la clé CLEFAC Delete [LIG] Where [LIG]NUMFAC = "00001001" # syntaxe équivalente Delete [LIG]CLEFAC(1) = "00001001" # autre syntaxe donnant le même résultat mais moins performante For [LIG]CLEFAC(1) Where [LIG]NUMFAC = "00001001" : Delete curr : Next
Copyright © Sage 2010
Sage X3 Language
40
Delete : • Ne modifie pas l'enregistrement courant (le contenu des variables de la classe [F] est toujours disponible). • [S]adxdlrec contient le nombre d'enregistrements effacés. • pas possible d'utiliser une abréviation de lien pour supprimer l’enregistrement d'une table. • Delete d’un enregistrement verrouillé reste en attente et poursuit sa suppression lorsque l'enregistrement se libère. (syntaxe 1) • Par contre, en inter-blocage ou syntaxe 2, le Delete arrête sa suppression et envoie un fstat=1. • Il est préférable de verrouiller l’enregistrement par ReadLock avant de le supprimer. • La clause Where permet de réduire les enregistrements à traiter (important pour les performances) • La clause Where disparaît dès la fin du Delete.
Copyright © Sage 2009-2010
Page 39
SAFE X3 LANGUAGE
Les instructions VERROUILLAGE, DEVEROUILLAGE Blocage logique Lock
{ | = }
[ With Lockwait = ]
Verrouillage d’un symbole dans la table APLLCK. Mise à jour de [S]fstat. Unlock
{ | = } Déverrouillage d’un symbole verrouillé par Lock.
[S]lockwait
Temps d’attente pour verrouillage : 0 Nombre de secondes d’attente
Exemple : # Lock fichier entête commande Local Char SYMBOLE(20) SYMBOLE = "SOH"+[F:SOH]SOHNUM Lock = SYMBOLE If fstat : infbox « enregistrement verrouillé » : Endif ... # --> déverrouillage de toutes les commandes For [SWD] SYMBOLE = "SOH"+[F:SWD]SOHNUM Unlock = SYMBOLE Next Copyright © Sage 2010 Sage X3 Language
41
blocage logique exemple en livraison automatique des commandes. Lock : Verrouillage d’un ou plusieurs symboles Doit se faire avant la transaction de mise à jour Symbole est constitué du code objet + clé enregistrement En cas d'insuccès, Lock réessaye tant que le nombre de secondes fixé par la variable [S]lockwait n'est pas écoulé En cas d'insuccès au bout du temps imparti, la variable système [S]fstat vaut 1. La syntaxe avec "With lockwait = " permet d'affecter momentanément [S]lockwait avec la valeur qui suit. Après quoi, [S]lockwait reprend sa valeur initiale contenu dans le paramètre TIMLCK ( chap. SUP ) Le nom de la table contenant les locks symbole est délivré par la variable [S]Adxtlk. ( a ne pas modifier )
Copyright © Sage 2009-2010
Page 40
SAFE X3 LANGUAGE
Les instructions VERROUILLAGE, DEVEROUILLAGE Blocage physique Lock
[ With Lockwait = ]
Verrouillage de tous les enregistrements d’une table. Mise à jour de [S]fstat.
Unlock < list_classe > Déverrouillage des enregistrements d’une table verrouillée par Lock ou Readlock.
Copyright © Sage 2010
Sage X3 Language
42
Blocage physique : • Verrouillage d’une ou plusieurs tables • Pour un enregistrement, le verrouillage se fait par l’instruction Readlock. • Dans une transaction, un enregistrement est déverrouillé par le Commit ou Rollback • Dans une transaction, le Unlock est inefficace • Il n'est pas possible d'utiliser l'abréviation de lien pour verrouiller une table • Echec d’un Lock si le même Lock ou si un enregistrement de cette table a déjà été verrouillé depuis un autre poste.
Copyright © Sage 2009-2010
Page 41
SAFE X3 LANGUAGE
Les instructions LES TRANSACTIONS Instruction TRBEGIN Trbegin
[] | "" [] | = Elsif I = Elsif I > Infbox Else Infbox Endif Copyright © Sage 2010
"I vaut 1" 1 Then Print "I est supérieur à 1" 0 : Print "I est nul" 0 "I est compris entre 0 et 1" "I est négatif" Sage X3 Language
46
Les instructions LES CONDITIONS Condition CASE L’instruction CASE permet de réaliser une structure de contrôle alternative en fonction de la valeur d'une expression donnée. Syntaxe :
Case expr_choix { When expr_v { , expr_v } [ instructions_1 ] [ When Default [ instructions_2 ] ] Endcase Paramètres : Elément Expr_choix Expr_v
Description Expression dont la valeur permet de choisir une alternative Expression dont la valeur est comparée à celle de expr_choix
Exemple : $ACTION Case ACTION When "OUVRE" When "FERME" ... When Default Endcase Return Copyright © Sage 2010
Copyright © Sage 2009-2010
: Gosub OUVRE : Gosub FERME
Sage X3 Language
From SUBBPCA From SUBBPCA
47
Page 45
SAFE X3 LANGUAGE
Les instructions LES ITERATIONS Itération FOR L’instruction FOR permet de réaliser des boucles d’affectation d’une variable. Syntaxe :
SYNTAXE 1
For variable_num = valeur_init To valeur_fin [ Step pas ] ..... instructions Next [ variable_num ]
SYNTAXE 2 For variable = liste_valeurs ..... instructions Next [ variable ] Paramètres : Elément variable_num valeur_init valeur_fin pas variable liste_valeurs
Description nom de variable de type numérique contenant la valeur de la boucle qui évolue à partir de ‘valeur_init’ par incrément de ‘pas’ valeur numérique initiale de la variable valeur numérique finale de la variable incrément ajouté à la variable à chaque itération (1 par défaut) nom de variable dont la valeur prendra successivement les valeurs de la liste liste d’expressions séparées par le caractère ‘,’
Copyright © Sage 2010
Sage X3 Language
48
Exemples : # affiche : 1 3.5 6 8.5 11 FIN=13.5 For I = 1 To 13 Step 2.5 Infbox num$(I) Next I Infbox "FIN="-num$(I) # affiche : FIN=15 For I = 15 To 12 Infbox num$(I) Next I Infbox "FIN="-num$(I) # affiche : 15 14 13 12 11 FIN=10 For I = 15 To 11 Step –1 Infbox I Next I Infbox "FIN="-num$(I) # affiche : A EF X ZZZ FIN=ZZZ For CHN="A","EF","X","ZZZ" Infbox CHN Next CHN Infbox "FIN="-CHN
Copyright © Sage 2009-2010
Page 46
SAFE X3 LANGUAGE
Les instructions LES ITERATIONS Itération WHILE L’instruction WHILE permet de réaliser des boucles tant qu'une condition est réalisée. Syntaxe : While expr_L ..... instructions Wend Paramètres : Elément Expr_L
Description Expression logique
Exemple : # Boucle de temporisation I = time # On fait des calculs en boucle avec un time-out de 10 secondes While I-time < 10 Gosub CALCUL Wend # Boucle infinie VRAI = 1 While VRAI # Boucle ... Wend Copyright © Sage 2010
Sage X3 Language
49
Remarque : Le traitement réalisé dans cette boucle ne doit pas faire de lecture de table (succession de read)
Copyright © Sage 2009-2010
Page 47
SAFE X3 LANGUAGE
Les instructions LES ITERATIONS Itération REPEAT L’instruction REPEAT permet de réaliser des boucles jusqu’à la réalisation d’une condition. Syntaxe :
Repeat ..... instructions Until expr_L Paramètres :
Elément Expr_L
Description Expression logique
Exemple :
# Saisie jusqu'à l'obtention d'un numéro de transsaction # Sortie si la condition est vérifiée Repeat Gosub LEC_TRANSAC If [F:STT]TRSNUM = "" : Call ERREUR(GMESSAGE) From GESECRAN : Endif Until [F:STT]TRSNUM ""
Copyright © Sage 2010
Sage X3 Language
50
Remarque : Le traitement réalisé dans cette boucle ne doit pas faire de lecture de table (succession de read)
Copyright © Sage 2009-2010
Page 48
SAFE X3 LANGUAGE
Les instructions LES ITERATIONS Itération BREAK L’instruction BREAK permet de sortir d’une ou plusieurs boucles. Syntaxe : Break [ exp_ent ] Paramètres : Elément exp_ent
Description Expression entière dont la valeur donne le nombre d’imbrications de boucles dont on veut sortir.
Exemple : # Recherche d'un élément dans une variable dimensionnée. La boucle est interrompue si on trouve cette valeur. Integer MATRICE(2,3) For I=0 To dim([V]MATRICE,1) - 1 For J=0 To dim([V]MATRICE,2) - 1 If [V]MATRICE = VALEUR [V]TROUVE = [V]VRAI Break 2 Endif Next J Next I Copyright © Sage 2010 Sage X3 Language 51
Les instructions LES ETIQUETTES Syntaxe $XXX … Return
XXX
: Nom de l’étiquette
Déclaration des paramètres Aucun
Exemple Gosub ACTION FROM SUBXXX
Copyright © Sage 2010
Copyright © Sage 2009-2010
# traitement SUBXXX $ACTION Case ACTION When "EXEC" Gosub EXEC Endcase Return
Sage X3 Language
52
Page 49
SAFE X3 LANGUAGE
Etiquette : Partie de programme adressable par l’instruction gosub Retour géré par l’instruction return Gosub : •Appel d’une étiquette définie ou nom dans le même traitement •Dans l’étiquette, on a tout le contexte du traitement appelant (même niveau de localité ) •En sortant de l’étiquette, l'instruction suivant le "Gosub" est exécutée.
Les instructions SOUS-PROGRAMME Syntaxe Subprog XXX (PAR1,..,PARn) End
XXX Par1 Parn
: Nom du sous programme : Premier paramètre : Nième paramètre
Déclaration des paramètres Value char PAR1() Variable integer PARn
Exemple # traitement TRTXXX
Local integer ZERR Call ZDAT ([31/12/2005],ZERR) From TRTXXX
Subprog ZDAT (DAT,ZERR) Value date Variable
DAT
integer ZERR
If DAT > date$ Endif Copyright © Sage 2010
Sage X3 Language
End
: ZERR = 1 :
53
Sous-programme : Appelé par l’instruction call Retour géré par l’instruction End Déclaration des paramètres : Value par valeur (c’est une constante ou une variable) En sortie du sous-programme, la valeur du paramètre n’est pas récupérée par le programme appelant. Variable par adresse ( c’est obligatoirement une variable ) En sortie du sous-programme, la valeur du paramètre est récupérée par le programme appelant.
Call : • •
Appel d’un sous-programme défini et du nom du traitement L'ordre des paramètres dans "call" est mis en correspondance avec ceux de Subprog.
Copyright © Sage 2009-2010
Page 50
SAFE X3 LANGUAGE
• • •
Dans le sous-programme, on a les classes [F] et [M], les variables globales du traitement appelant A chaque sous-programme, on aura une nouvelle classe [L] En sortant du sous-programme, l'instruction suivant le "Call" est exécutée.
From = TRTXXX (construit le nom du traitement) [MODIF]
Les instructions FONCTION Syntaxe Funprog XXX (PAR1,..,PARn)
XXX Par1 Parn résult
End résult
: : : :
Nom de la fonction Premier paramètre Nième paramètre Résultat renvoyé
Déclaration des paramètres Value char PAR1() Variable integer PARn
Exemple Funprog CHAR_(CLOB)
# récupérer un clob dans un chaîne de 255 caractères
Value Clbfile CLOB
Local Char RESULT(255)
Local Char CHAINE(255)
RESULT=Func CHAR_([F:TXC]TEXTE)
Setlob CHAINE With CLOB End CHAINE
Copyright © Sage 2010
Sage X3 Language
54
fonction : Appelé par l’instruction Func Retour géré par l’instruction End Sur l’instruction End un résultat est renvoyé au traitement appelant Caractéristiques identiques au sous-programme.
Copyright © Sage 2009-2010
Page 51
SAFE X3 LANGUAGE
Les instructions ECRANS Classe [M] : ouverture et fermeture d’un écran [Local]
Mask
[ ]
Ouverture d’un écran en précisant éventuellement : Abréviation Close
[ Local ]
Mask
[ ]
Instruction CLALEV clalev () Permet de tester si une classe de variables est accessible par un programme Exemple : If clalev([M:SOH0])=0 : Local Mask Copyright © Sage 2010
SOH0 [SOH0] : Endif
Sage X3 Language
55
Ouverture d’un écran •Normalement, on laisse faire l’ouverture par le superviseur Déclaration d’un écran dans l’applicatif
•pour stocker un ensemble de variable dans une même classe •La classe [M] est disponible sans passage de paramètres dans les sous-programmes •Il n’y a pas de niveau de localité : si écran ouvert dans un traitement et son sous-pro sous la même abrev, il n’y a qu’un buffer (fonctionnement différent des tables)
•rapidité ( travail en mémoire ) par rapport à une table de travail •utilisé notamment dans les stocks ( ex : STOSORW, STOENTW, STOWORK ) •on utilise des blocs tableaux et/ou invisibles •la validation d’écran est nécessaire Variables [M] passées en paramètres
•les menus locaux sont passés en integer •les variables de bas de tableaux en shortint •les autres champs numériques sont passés en décimal Attention :
•eviter les suppressions de lignes dans les tables d’écran ( très couteux ) •dimensionner un tableau par code activité
Copyright © Sage 2009-2010
Page 52
SAFE X3 LANGUAGE
Les instructions AFFICHAGE ET EFFACEMENT Instruction AFFZO Affzo
[ ]
[ ( ) ] -
- = | =
Affichage des zones d’un masque ouvert avec des restrictions éventuelles , irang : N° du bloc dans l’écran Exemples : Affzo [M:BPC1] Affzo [M:BPC1] BPCGRU,BPCBPSNUM Affzo [M:BPC1] 1-99
Instruction EFFZO Effzo
[ ]
[ ( ) ] -
- = | =
Effacement des zones d’un masque ouvert avec des restrictions éventuelles. Les zones concernées sont ensuite considérées comme non initialisées. Copyright © Sage 2010
Sage X3 Language
56
Affzo, Effzo etc... L’ordre utilisé est toujours celui découlant des rangs de saisie et de la position des champs à l'écran. Par conséquent, si on veut changer cet ordre d’affichage, il est nécessaire d'utiliser plusieurs instructions Affzo. Effzo La remise à zéro donne aux variables des valeurs dépendant du type, à savoir : • la chaîne vide "" pour une variable de type Char, • la date nulle [0/0/0] pour une variable de type Date, • la valeur 0 pour une variable numérique. • l'information 'champ non initialisé' est positionnée • c’est l’équivalent d’un Raz + affichage blancs dans commentaires + Affzo
Copyright © Sage 2009-2010
Page 53
SAFE X3 LANGUAGE
Les instructions GRISAGE / DEGRISAGE Instruction GRIZO Grizo [ ]
[ ( ) ] -
- = | = Grisage des zones d’un masque ouvert avec des restrictions éventuelles
Instruction DISZO Diszo [ ]
[ ( ) ] -
- = | = Permet de griser les zones de l’écran en conservant la signification des zones (conserve les tunnels)
Instruction ACTZO Actzo
[ ]
[ ( ) ] -
- = | = Dégrisage des zones d’un masque ouvert avec des restrictions éventuelles Copyright © Sage 2010 Sage X3 Language
57
Grizo : champ devient affiché et non saisissable, visuellement grisé ( police grise sur fond gris ) menu contextuel non accessible Diszo : champ devient affiché et non saisissable, visuellement grisé ( police noire sur fond gris ) menu contextuel accessible Actzo : le champ est réactivé. il redevient saisissable.
Copyright © Sage 2009-2010
Page 54
SAFE X3 LANGUAGE
Les instructions Ecran validé Instruction AFFZO - ACTZO Affzo
[ ]
Actzo
[ ]
Pour ces 2 instructions, lorsqu’on ne précise que la classe, l’écran est considéré valide. De ce fait, les actions de contrôle sur champ ne sont plus effectuées.
Instruction SETMOK Setmok
With exp
Exp=0 rend non valide,
Exp=1 rend valide.
Exemples : Pour laisser faire les contrôles sur champs, au superviseur : Affzo [M:BPC1] Setmok [M:BPC1] with 0 Ou Affzo [M:BPC1]1-99 Copyright © Sage 2010
Sage X3 Language
58
Affzo, Actzo Attention ! Affzo [classe] rend valide l’écran. Les contrôles ne sont donc pas effectués. Pour éviter cela, on utilisera la syntaxe indiquant un rang début et fin : Affzo [classe] - Setmok Instruction permettant d‘agir sur le statut validé de l‘écran.
Copyright © Sage 2009-2010
Page 55
SAFE X3 LANGUAGE
Les instructions Insertion / Suppression ligne dans bloc tableau Instruction Dela Dela Début, N [M]BASTAB Supression de N Lignes du tableau, à partir de la ligne Début. ( Début >= 0 ) La ligne entière du tableau est identifiée, par la variable de bas de tableau [M]BASTAB. Suite à cette suppression, il faut mettre à jour la variable de bas de tableau.
Instruction Insa Insa Début, N [M]BASTAB Insertion de N Lignes du tableau, à partir de la ligne Début. ( Début >= 0 ) La ligne entière du tableau est identifiée, par la variable de bas de tableau [M]BASTAB. Suite à cette insertion, il faut mettre à jour la variable de bas de tableau. Exemples : Suppression de la 6ème ligne du tableau, Insertion de la 11ème ligne du tableau, : Dela 5,1 [M]NBLIG [M]NBLIG -=1 Copyright © Sage 2010
Copyright © Sage 2009-2010
Insa 10,1 [M]NBLIG [M]NBLIG +=1 Sage X3 Language
59
Page 56
SAFE X3 LANGUAGE
6. MESSAGE D’ERREUR OU D’AVERTISSEMENT
Message d’erreur ou d’avertissement GESTION DES ERREURS Principe ONERRGO / RESUME Onerrgo [] [ From ] Débranchement en cas d’erreur vers l’étiquette déclarée dans le traitement. Permet de gérer la suite à exécuter après une erreur programme. Retour au traitement initial après l’instruction à l’origine de l’erreur par l’ordre Resume Onerrgo
Exemples : Onerrgo ERREUR Openi filpath("TXT","ZETEST","txt") ... Onerrgo End $ERREUR Infbox "erreur n°"-errn-errmes$(errn)-errm Infbox "erreur dans traitement"-errp-"en ligne"-errl Resume Copyright © Sage 2010
Sage X3 Language
61
onerrgo •si le traitement de gestion d’erreur se termine par End, le traitement est interrompu de façon définitive. •Le traitement de gestion d'erreur ne peut pas terminer une transaction ( niveau de localité) •S'il y a une transaction en cours quand l'erreur est détectée, elle est annulée automatiquement (Rollback) si le traitement se termine par End. •Onerrgo sans étiquette supprime la référence à une étiquette en cas d'erreur Fonctions associées : Errp: Nom du traitement à l’origine de l’erreur Errl : Ligne dans le traitement à l’origine de l’erreur Errn: N° de l’erreur X3 ErrMes$: Message d’erreur X3 Errm: Seconde partie du message d’erreur produit par X3
Copyright © Sage 2009-2010
Page 57
SAFE X3 LANGUAGE
Message d’erreur ou d’avertissement Afficher un message
Copyright © Sage 2010
Sage X3 Language
62
Affichage d’un champ numérique : infbox « nombre de commande »-num$([F:SQH]ORDNBR) Affichage d’un champ date : infbox « date commande »-num$([F:SQH]ORDDAT) Traitement lancé en mode BATCH Les instructions Infbox et Dbgaff ne sont pas supportées.
Copyright © Sage 2009-2010
Page 58
SAFE X3 LANGUAGE
7. GESTION DES TRACES
6. Gestion des traces TRACE A PARTIR D’UN TRAITEMENT Ouverture / Fermeture du fichier trace Local char TIT(30) :[L]TIT =‘’Formation langage ’’ If !GSERVEUR : Call OUVRE_TRACE(TIT) From LECFIC : Endif … If !GSERVEUR : Call FERME_TRACE From LECFIC : Endif
Ecriture dans la trace Call ECR_TRACE (‘’Bonjour’’,0) from GESECRAN Call ECR_TRACE (‘’Erreur:"- num$(NUERR),1) From GESECRAN
Lecture de la trace TRA=1 Call LEC_TRACE from LECFIC
Copyright © Sage 2010
Sage X3 Language
64
Ouverture & fermeture trace : Affectation d’un titre à la trace Ouverture et fermeture pour le mode interactif Ecriture : 1er paramètre : message à afficher 2ème paramètre : type message ( 0 informatif, 1 erreur ) 9 pour le vert, avertissement Ecriture d’un chemin : Par défaut, le caractère « \ » permet de passer à la ligne suivante dans un CALL ECR_TRACE, par exemple. Or, ce caractère peut être significatif dans un message, notamment lorsque l'on veut préciser un chemin d'accès. Par exemple : Call ECR_TRACE ("c:\temp\monfic.txt") From GESECRAN Le caractère « | » inhibe ce formatage jusqu’au prochain "|". L'idéal est donc d'encadrer les noms de fichier par des "|" dans le ECR_TRACE. Par exemple : Call ECR_TRACE ("|c:\temp\monfic.txt|") From GESECRAN
Copyright © Sage 2009-2010
Page 59
SAFE X3 LANGUAGE
Gestion des traces NOMMAGE DES FICHIERS TRACE fichier trace applicatif Les fichiers traces sont conservés dans le répertoire ..\dossiers\TRA Nom du fichier trace : Fnnnnnn.tra
( nnnnnn étant un compteur )
Impressions>Lecture traces
fichier trace géré par le superviseur en batch Les fichiers traces sont conservés dans le répertoire ..\runtime\SERVX3\TRA Nom du fichier trace : RQTnnn.tra
( nnn étant le requête batch )
Exploitation>Serveur batch>Gestion des requêtes Dans les deux cas, La variable GTRACE contient le nom du fichier trace actif. Copyright © Sage 2010
Copyright © Sage 2009-2010
Sage X3 Language
65
Page 60
SAFE X3 LANGUAGE
8. OPTIMISATION DES REQUÊTES
Optimisation des requêtes REGLES DE BASE 4Envoyer le moins de requêtes possibles à la base : • Privilégier la lecture par Link, à plusieurs lectures • Privilégier la boucle For, à une série de Read 4Eviter les or dans les requêtes • For [XXX] Where ENTIER=3 or ENTIER=4 or ENTIER=5 est moins bon que • For [XXX] Where ENTIER>=3 and ENTIER,>=,Options… » de la page de démarrage. − Paramétrage des sauvegardes automatique des traitements − Modification du nombre d’espace pour la tabulation. − Modification de la couleur des lignes des tableaux X3. − Modification Polices et styles d’écritures. − Paramétrage pour le lancement d’Eclipse à partir de X3.
Copyright © Sage 2010
Sage X3 Language
74
Prise en compte de ces paramètres : déconnexion et re-connexion Sauvegarde automatique : Traitement sauvegardé dans le répertoire temporaire associé à l’utilisateur windows connecté (c:\documents and settings\ ...), ceci toutes les n secondes. Indentation : Largeur de la marge gauche de l’éditeur de traitement 100 par défaut correspond à 1 caractère Nombre de fichiers listés : Nombre de fichiers listés dans la fenêtre de choix d’un traitement Tabulation : Permet une tabulation de n caractères Shift+Tab permet d’enlever une tabulation ( il faut avoir sélectionner la ligne entière )
Copyright © Sage 2009-2010
Page 67
SAFE X3 LANGUAGE
Outils / Utilitaires >
Debugger : lancement − Dans une fonction > menu ? / Aide au diagnostic / Debugger + saisie > menu ? / Aide au diagnostic / Dbg On > instruction dans un traitement Dbgaff − Paramètre utilisateur DBG : > « Paramétrage>Utilisateurs>Utilisateurs » Onglet Paramètres click droit sur ligne « superviseur développement » option « détail » > autorise ou pas l’accès au debugger par le menu Outils.
Sage X3 Language
Copyright © Sage 2010
75
Outils / Utilitaires >
Debugger : Utilisation > bouton ligne : pas à pas > bouton continuer : évite d’entrer dans les Call, Subprog et Func > bouton fin : arrête le debugger et continue le traitement −
Tableau des variables : > interrogation de variables ( 20 max. ) > Variables système ou locales du superviseur ne sont pas interrogeables (ex : nolign, valeur) > affichage automatique des paramètres passés en argument avec leur valeur.
−
Tableau des points d’arrêt : > on indique un point d’arrêt sous la forme traitement : ligne (traitement facultatif si traitement courant ) > nombre de points d’arrêt ( 10 max. ) > doit se placer sur une ligne réellement exécutée ( pas sur une ligne commentaire, ou sur Endif par exemple )
−
Source affiché : > visualisation du source par l’ascenseur > retour à l’instruction courante par l’option « ligne courante » du menu contextuel de la variable de bas de tableau
Copyright © Sage 2010
Copyright © Sage 2009-2010
Sage X3 Language
76
Page 68
SAFE X3 LANGUAGE
Outils / Utilitaires >
Debugger : Détail −
Il s’agit d’une vu de toutes les variables et classe accessible à un instant t de l’exécution du traitement.
− −
Modification des variables par click droit sur une variable. Affichages des variables accessibles pour une classe donnée, des écrans, des tables, des traitements et des fichiers ouverts.
Copyright © Sage 2010
Sage X3 Language
77
Le débuggeur est développé avec l'outillage de la plateforme Safe X3. Cet adhérence à l'outil lui apporte certaines limites et il faut éviter de l'utiliser pour pour observer : • • • •
Les valeurs des variables systèmes (nolign, indice, etc.), globales (GMESSAGE,...), locale (VALEUR) qui peuvent être faussées. les traitements lancés en batch les import/export (à cause de l'instruction Setmode qui détourne les instructions d'affichage) les web services
Pour pallier à ces limites : •
Il faut passer par une trace ou par l'instruction infbox selon les cas.
Copyright © Sage 2009-2010
Page 69
SAFE X3 LANGUAGE
Outils / Utilitaires >
Calculatrice − accès via dans une fonction : > menu ? / Aide au diagnostic / calculatrice − ce qu’elle permet : > évaluer des formules de calcul conformes au langage des expressions sage X3. > ex 1 : 3.14159+2.71828 > ex 2 : [BPC]BPCNUM valeur du champ > ex 3 : len([BPC]BPCNUM) longueur du champ − Fonction du menu contextuel : > historiques: affichage des dernières formules frappées > HISTCALC paramètre utilisateur définissant le nombre de formules à garder dans l’historique > décimales: nombre de décimales à utiliser > éditeur formules : aide pour la construction des formules > classes de variables : équivalent du bouton détail en debug
Copyright © Sage 2010
Sage X3 Language
78
Outils / Utilitaires >
Maintenance en lignes
Développement>Utilitaires>Maintenances>En lignes
− Permet la consultation, la modification, la création et la suppression d’un enregistrement d’une table. − les champs de clé primaire sont en en-tête − accessible aux utilisateurs ayant le profil d’administrateur ( paramètre ADMUSR chap. SUP )
>
Maintenance en colonnes
Développement>Utilitaires>Maintenances>En colonnes
− Permet la consultation et la modification sur plusieurs enregistrements (filtre possible) avec plusieurs colonnes définis au lancement. − les champs de clé primaire sont affichés et non saisissables/ − accessible aux utilisateurs ayant le profil d’administrateur ( paramètre ADMUSR chap. SUP ) − Attention dans les deux maintenances!! > pas de contrôle de cohérence des données > pas de contrôle de la valeur pour un champ de type menu local Copyright © Sage 2010
Copyright © Sage 2009-2010
Sage X3 Language
79
Page 70
SAFE X3 LANGUAGE
Trace : Un enregistrement est créé dans la table AESPION AESPION est visualisable par la maintenance, ou par une requête Trace sur table, clé, nature intervention, utilisateur, date, heure, fonction d’origine (GMAINT) Trace également dans le fichier espion.tra sous le répertoire tmp
Outils / Utilitaires >
Transaction système − Permet de paramétrer la mise à jour d’une ou plusieurs tables. − La MAJ peut être une création, une modification ou une suppression. − Possibilité de filtrer les enregistrement concernés par la transaction. − Renseignement de la table principale et de table liées à celle-ci. − Renseignement des paramètres. − Les paramètres seront à renseigner à l’exécution de la transaction. − Attention !! > pas de contrôle de cohérence des données > pas de contrôle de la valeur pour un champ de type menu local
Développement>Dictionnaire traitements>Transaction de mise à jours Copyright © Sage 2010
Sage X3 Language
80
Transaction système : paramétrage reste permanent création, modification ou suppression mise à jour d’un ou plusieurs champs d’une ou plusieurs tables possibilité de saisir des paramètres possibilité de filtrer des enregistrements Trace : pour chaque enregistrement modifié, un enregistrement est créé dans la table AESPION trace sur table, clé, nature intervention, utilisateur, date, heure, fonction d’origine (GESAMI) trace également dans le fichier espion.tra sous le répertoire tmp Utilisation des paramètres : la valeur des paramètres est stockée dans les variables V1 à V6 en fonction de l’ordre de déclaration dans le tableau des paramètres on peut définir jusqu’à 6 paramètres Sélections : constitution d’un filtre de sélection des enregistrements à traiter Mise à jour : liste des champs à modifier ces champs peuvent appartenir aux tables liées
Copyright © Sage 2009-2010
Page 71
SAFE X3 LANGUAGE
Cas de création d’enregistrement a manipuler avec précaution c’est en fait une duplication d’un enregistrement mise à jour : une ligne de création sur le champ clé, par enregistrement à créer on ne peut pas modifier certains champs dans cette même transaction sélection : pour sélectionner l’enregistrement à dupliquer variables : si utilisée pour alimenter la clé, elle ne doit pas être un type de donnée lié à l’objet
Outils / Utilitaires TRACE ORACLE ou SQL-SERVEUR accès via : menu ? / Aide au diagnostic / activation trace oracle menu ? / Aide au diagnostic / désactivation trace oracle
menu ? / Aide au diagnostic / activation trace sql-serveur menu ? / Aide au diagnostic / désactivation trace sqlserveur Activation trace : Lance le processus d’analyse Désactivation trace : arrête le processus et affiche la trace Vérifier, par exemple, qu’il n’y a pas :
FULL SCAN TABLE FULL SCAN INDEX
Copyright © Sage 2010
Copyright © Sage 2009-2010
Sage X3 Language
81
Page 72
SAFE X3 LANGUAGE
Outils / Utilitaires >
Timer − Permet l’affichage d’une trace d’exécution d’un traitement avec le nombre d’appels des routines, le temps d’exécution pour tous les appels et la pourcentage par rapport au temps total. − Accès dans une fonction via : > menu ? / Aide au diagnostic / activation timing > menu ? / Aide au diagnostic / lecture timing − activation timing : > ouvre la trace > possibilité de choisir l’emplacement et le nom de la trace > possibilité de tracer ou pas les Gosub − lecture timing : > arrête la trace et l’affiche à l’écran
Copyright © Sage 2010
Sage X3 Language
82
Outils / Utilitaires >
IDE Eclipse − Permet avec l’installation d’un plug-in X3 d’écrire des traitements X3. − Amélioration par rapport à l’éditeur de traitement X3 : > Auto-complétion > Coloration syntaxique > Utilisation de Template > Possibilité d’ajouter différents composant pour l’aide au développement, un SVN par exemple. > Possibilité de générer de la documentation à partir des traitements.
Copyright © Sage 2010
Copyright © Sage 2009-2010
Sage X3 Language
83
Page 73
SAFE X3 LANGUAGE
Outils / Utilitaires Eclipse IDE Installation: Télécharger Eclipse sur le site de sun : http://www.eclipse.org/downloads/ Téléchargez la JVM : http://java.sun.com/javase/downloads/index.jsp Téléchargez le plugin X3 : http://pluginx3.sage.fr/safex3/studio/update/ Puis installez le plugin : menu « help>Install new software… »
Création d’un projet Paramétrage : – – – – – –
Folder (ex: DEMO) Hostname (ex: myserver) Port (ex: 16000) X3 User et X3 Password Language (ex: FRA, ENG, ...) User et Password (authentification OS)
Insertion de traitement par la fonction « File>Open SAFE X3 Source file »
Copyright © Sage 2009-2010
Page 74
SAFE X3 LANGUAGE
Copyright © Sage 2009-2010
Page 75