Points d'entrée > Module Superviseur > Script standard SERVSYS 

LANRUN : Modifier la langue de lancement d'une requête batch

Ce point d’entrée permet de modifier la langue à chaque lancement d'une requête par le serveur batch.

Aujourd’hui la tâche batch est lancée avec le code langue du serveur batch. Dans le cadre de solution multi-langues (mono ou multi-dossier) cela pose problème lors de l’étude des messages d’erreurs des imports (Car les messages générés par la fonction mess() sont dépendant du code langue de l’adonix lancé)

En effet le traitement SERVSYS recherche la langue utilisée par le serveur batch  stockée dans GLANGUE parmi la liste des langues définies sur le dossier. 

Exemple : soit une solution à N dossiers pour lesquels on déclare une langue de travail locale et une langue d’administration (ie : ESP-FRA, ENG-FRA). Si le serveur de batch est lancée avec la langue FRA, tous les messages sur tous les dossiers seront en français.
La demande est d'
avoir des message en Anglais sur un dossier ENG, les messages en espagnol sur un dossier SPA. Les messages d’administration resteront en Français sur le dossier Anglais et le dossier Espagnol.

Attention :

Le serveur batch qui s'execute sur le dossier SERVX3, utilise le traitement SERVSYS qui se trouve dans le répertoire TRT du dossier de référence standard X3.

Pour que ce point d'entrée soit pris en compte il faut que la déclaration du point d'entrée et le traitement spécifique associé soient dans le dossier de référence X3.
De plus, toutes les variables globales n'étant pas déclarées, il vaut mieux tester leur présence avant de les utiliser. Par exemple, les variable globales GLON* ne sont pas déclarées.

Contexte et mode de fonctionnement

Le point d’entrée LANRUN est appelé à chaque lancement d'une requête. Il est situé dans le sous-programme REQUETE du traitement SERVSYS :

Subprog REQUETE(PID)
Variable Char PID
Local Char LANGUE(5)
If clalev([F:ADS])=0 : Local File ADOSSIER [ADS] : Endif
Read [ADS]DOSSIER = [F:ABR]DOSSIER
GPE = 0
GPOINT = "LANRUN" : Gosub ENTREE From EXEFNC
If !GPE
 If dim([F:ABR]LAN)>0 & [F:ABR]LAN<>""
  LANGUE = [F:ABR]LAN
 Else
  LANGUE = [F:ADS]LANDEF
 Endif
 If find(LANGUE,[F:ADS]LAN(0..[F:ADS]NBRLAN-1))=0
  LANGUE = [F:ADS]LAN(0)
 Endif
Endif

Pour info, sous Unix, la tâche batch sera lancée en lançant (suivant les options) la commande système suivante:

EXEC_ENTREP="BATCH" RQT_ENTREP=NoRequête adonix -a -l LANGUE </tmp/serveur.ent >>/tmp/NoRequête.log 2>&1