SX302-Safe X3 Language v6 [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

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