0

6 La navigation dans le manuel de Kentika est réservée aux utilisateurs identifiés



Saisir un script

Ecrire un script

Préambule

Ce dialogue est proposé dans tous les cas où la création d'un script est proposée. Prenez connaissance de tout ce qui est dit à ce sujet avant de vous lancer dans l'écriture d'un script. Travaillez toujours sur une copie de votre base de données (et jamais en direct sur une base en exploitation) et recopiez votre script lorsqu'il aura passé avec succès une série de tests.

Cet outil n'a pas pour ambition de rivaliser avec les vrais éditeurs de programmation qu'un programmeur a l'habitude d'utiliser. Aussi, vous y trouverez un assistant de composition des formules les plus courantes mais la vérification syntaxique n'est pas aussi poussée que dans un logiciel dédié.

Présentation

 

Dialogue de création d'un script

La partie haute propose une série d'assistants permettant d'éviter (et donc de faire des erreurs) de taper les instructions les plus courantes.

Champ

Provoque l'affichage de l'assistant de sélection de champ.

Insère, après sélection du champ, la formule Valeur_Rubrique correspondant à la place du point d'insertion.

Exemple

Valeur_rubrique ("=141/(Documents)Descripteurs";"title=Mots clés;t_s= : ;v_x=<b> ;sep=^s ;end=^p ;encode=H")

Requête

Après sélection dans le pop-up de la table, propose la liste des requêtes enregistrées pour cette table. Après sélection, insère la formule permettant de provoquer l'exécution de la requête.

Exemple

Folder_Load (56;"=Documents : Documents du mois")

Croiser

Après sélection dans le pop-up de la table, propose la liste des rubriques de type lien pouvant être invoquées afin de provoquer une propagation des liens sélectionnés.

 

Sélection des liens à propager.

Exemple

Select_Xs ("3:=31;19;Référence (->Références)\=151;6;Auteurs (->Auteurs)")

Maquette

Propose la liste des maquettes par type afin de générer la syntaxe de l'ordre d'exécution de la maquette sélectionnée.

 

Sélection de la maquette et du type de sortie

Exemple

Tx:=Template_Exec ("LPER2";"Imprimante (print)")

4D

Propose l'ensemble des méthodes proposées par le langage 4D.

 

En début de liste : les mots clés.

En cliquant sur ce bouton tout en maintenant la touche Alt enfoncée, à la place des méthodes 4D c'est la liste de tous les champs de la base données qui est affichée. A n'utiliser qu'en connaissance de cause car vous pouvez provoquer une perte d'intégrité des données si vous intervenez directement au niveau de ces champs.

Script

Propose la liste des ressources scripts.

 

Liste des ressources scripts

Exemple

u_Exec4D ("AScript_Analyseur XML")

Trier

Propose le dialogue de création d'une formule de tri multi-critères.

Exemple

TRIER PAR FORMULE (Table(eList_FileNum)->;x80 (Valeur_Rubrique ("=41";"sort=on;conf=off"));<;x80 (Valeur_Rubrique ("=21";"sort=on;conf=off"));>)

Pop-up menu : puce grise en haut à droite

En cliquant sur cette puce, des options vous sont proposées.

 

Choix de la taille et option de remplacement

Si les caractères sont de petite taille, il arrive que l'on confonde des caractères. Augmenter la taille permet une meilleure lisibilité.

Vérifier la syntaxe

En cours de rédaction d'un script, une vérification de premier niveau vous est proposée. Si une erreur est détectée, un bip vous en avertit et l'expression douteuse est entourée par des puces.

Fonction spéciale pour l'international

Un script saisi dans une version utilise la syntaxe du langage dans la langue correspondant. Ce script ne peut être exécuté tel quel dans une autre langue si la syntaxe est différente. Lors de l'export et réimport de ce script, il passe par une traduction intermédiaire (opcode) qui lui assure une portabilité. Cette traduction en opcode est également disponible à partir de cet écran. Pour cela, il suffit de cliquer sur le bouton caché situé le premier mot en haut à gauche :

En cliquant sur ce bouton

 

Le script

Tcom1:=Selectionner dossier("Dossier PDF")

Si (OK=1)

TCom1:="Folder="+TCom1+";Template=PDF;archive"

CONFIRMER(TCom1)

Si (OK=1)

Imp_Folder(TCom1)

Fin de si

Fin de si

Devient

Tcom1:=XCD4D670("Dossier PDF")

XCM4D001(OK=1)

TCom1:="Folder="+TCom1+";Template=PDF;archive"

XCD4D162(TCom1)

XCM4D001(OK=1)

Imp_Folder(TCom1)

XCM4D003

XCM4D003

Quelques conseils et règles à respecter

Copier coller = le meilleur ami et le pire ennemi. Lorsque l'on colle une portion de code prise dans un autre script, on a tendance à être moins attentif à son contenu et il se peut que l'on introduise une erreur car le contexte d'exécution va être différent.

Lorsque l'on ouvre une condition, on peut oublier de la refermer ou de mal la refermer si l'on a des imbrications complexes. Aussi, dès que l'on tape le début d'une séquence, il est conseillé de taper tout de suite la fin.

Si ( condition à tester )

sinon

Fin de si

Les scripts sont traités par un interpréteur et ce dernier ne connait pas les variables locales. Il ne faut donc pas les utiliser. Une variable locale a son nom qui commence par $ (exemple : $Ident).

Au sein d'un script, aucune autorisation n'est contrôlée : on peut tout faire... et tout casser.

Le logiciel utilise une structure virtuelle plaquée sur une structure physique. Aussi, n'utilisez pas les champs physiques des tables documents, personnes, auteurs, références, revues, thesaurus car il y a de gros risques de perte d'intégrité. Il y a des méthodes spécifiques pour manipuler les données.

Inspirez-vous des exemples fournis sur le centre de ressources, ils sont tous vérifiés et validés. Si vous détectez une erreur ou une imprécision, n'hésitez pas à nous le faire remarquer.

Par rapport au langage 4D, voici quelques différences majeures :

ne pas écrire de longues lignes (limitez vous à 80 caractères),

évitez des imbrications d'appel trop importantes (utilisez des variables intermédiaires),

pas de support des variables locales,

l'instruction "sinon" n'est pas supportée au sein d'un "Au cas ou",

éviter d'utiliser les méthodes permettant d'accéder en direct aux enregistrements, préférez toujours les méthodes propres à l'application quand elles existent,

New process en début de ligne n'est pas un ordre 4D, il indique à l'application que le script doit s'exécuter dans un nouveau process (et donc rendre immédiatement la main au process dans lequel il s'exécute),

Num en début de ligne n'est pas un ordre 4D, il indique à l'application que le résultat fourni en $0 doit être une valeur numérique et non une valeur alpha-numérique.