Workflow Composer. Référence des scripts. Octobre 2003

Documents pareils
Workflow Composer. Référence des scripts. Mars

AccuRead OCR. Guide de l'administrateur

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Options des imprimantes multifonction MX4500, X7500

TP 1. Prise en main du langage Python

Initiation à la programmation en Python

Utilisation d objets : String et ArrayList

Algorithmique et Programmation, IMA

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP


Présentation du langage et premières fonctions

GLOSSAIRE DU SOUTIEN EN CAS DE RECOURS EN JUSTICE

Comment utiliser FileMaker Pro avec Microsoft Office

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

STAGE IREM 0- Premiers pas en Python

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

TP1. Outils Java Eléments de correction

Table des matières L INTEGRATION DE SAS AVEC JMP. Les échanges de données entre SAS et JMP, en mode déconnecté. Dans JMP

Java Licence Professionnelle CISII,

Les chaînes de caractères

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Introduction au langage C

Algorithmique et programmation : les bases (VBA) Corrigé

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Notions fondamentales du langage C# Version 1.0

Logiciel de capture et de gestion des flux de documents MOINS DE PAPIER, PLUS D EFFICACITÉ.

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Guide d utilisation. Version 1.1

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

EBS 204 E C B S. Publication : Novembre 96

Plate-forme de tests des fichiers XML virements SEPA et prélèvements SEPA. Guide d'utilisation

Utilitaires méconnus de StrataFrame

Cloud Portal for imagerunner ADVANCE

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

Présentation du PL/SQL

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Prise en main rapide

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

TD3: tableaux avancées, première classe et chaînes

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Initiation à la Programmation en Logique avec SISCtus Prolog

Glossaire des nombres

Mise à jour du logiciel de vidéo de Polycom

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Introduction à l algorithmique et à la programmation M1102 CM n 3

Compléments de documentation Scilab : affichage de texte et formatage de nombres

Créer le schéma relationnel d une base de données ACCESS

PROJET ALGORITHMIQUE ET PROGRAMMATION II

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

1. Structure d'un programme FORTRAN 95

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Numbers sur ipad. Atelier Formation Numbers sur ipad. [Notes extraitres de l'aide en ligne]

Atelier Formation Pages sur ipad Pages sur ipad

HighPush. document /06/2009 Révision pour version /11/2008 Revision pour la /10/2008 Documentation initiale.

Manuel Utilisateur Version 1.6 Décembre 2001

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

MODE OPERATOIRE OPENOFFICE BASE

RACCOURCIS CLAVIERS. DEFINITION : Une «combinaison de touches» est un appui simultané sur plusieurs touches.

Publipostage avec Calc

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Guide d utilisation commandes des pièces de rechange Rev.1.0.3

ACQUISITION. Traitement de l image. Classement. Préparation. Ouverture. Performance

Création et utilisation de formulaire pdf

Une introduction à Java

Conventions d écriture et outils de mise au point

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Unix/Linux I. 1 ere année DUT. Université marne la vallée

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Convers3 Documentation version Par Eric DAVID : vtopo@free.fr

Powershell. Sommaire. 1) Étude du cahier des charges 2) Veille technologique 3) Administration sur site 4) Automatisation des tâches d administration

Oracle Le langage procédural PL/SQL

L informatique en BCPST

OCL - Object Constraint Language

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

ARCHIVES DEPARTEMENTALES DE L'EURE ALEXANDRIE

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Logiciel de capture et de gestion des flux de documents MOINS DE PAPIER, PLUS D EFFICACITÉ.

Java DataBaseConnectivity

Langage Java. Classe de première SI

Programme Compte bancaire (code)

Durée estimée :1 journée Date de la réalisation : Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

Plan du cours. Historique du langage Nouveautés de Java 7

Bases de programmation. Cours 5. Structurer les données

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Gestion des documents avec ALFRESCO

COMPTABILITE SAGE LIGNE 30

Solutions du chapitre 4

< Atelier 1 /> Démarrer une application web

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1.

Logiciel de capture et de gestion des flux de documents MOINS DE PAPIER, PLUS D EFFICACITÉ. VOUS POUVEZ COMPTER SUR NOUS

Corrigé des TD 1 à 5

Services bancaires par Internet aux entreprises. Guide pratique pour : Rapports de solde Version

Transcription:

Workflow Composer Référence des scripts Pour afficher ou télécharger cette publication ou d'autres publications Lexmark Document Solutions, cliquez ici. Octobre 2003 www.lexmark.com

Edition : Octobre 2003 Le paragraphe suivant ne s'applique pas aux pays dans lesquels lesdites clauses ne sont pas conformes à la législation en vigueur : LEXMARK INTERNATIONAL, INC., FOURNIT CETTE PUBLICATION «TELLE QUELLE» SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE, Y COMPRIS MAIS SANS SE LIMITER AUX GARANTIES IMPLICITES DE QUALITE MARCHANDE OU D'ADEQUATION A UN USAGE SPECIFIQUE. Certains pays ou Etats n'admettent pas la renonciation aux garanties explicites ou implicites pour certaines transactions ; il se peut donc que cette déclaration ne vous concerne pas. Cette publication peut contenir des imprécisions techniques ou des erreurs typographiques. Des modifications sont périodiquement apportées aux informations qu'elle renferme ; ces modifications seront intégrées dans les éditions ultérieures de la publication. Des améliorations ou modifications des produits ou programmes décrits dans cette publication peuvent intervenir à tout moment. Adressez vos commentaires directement à Lexmark International, Inc., Department F95/032-2, 740 West New Circle Road, Lexington, Kentucky 40550, Etats-Unis. En Grande-Bretagne et en Irlande, adressez vos commentaires à Lexmark International Ltd., Marketing and Services Department, Westhorpe House, Westhorpe, Marlow Bucks SL7 3RQ. Lexmark peut utiliser ou distribuer les informations que vous fournissez, de la manière qui lui semble appropriée, sans encourir aucune obligation à votre égard. Vous pouvez vous procurer des exemplaires supplémentaires des publications relatives à ce produit en appelant le 1-800-553-9727. Au Royaume-Uni et en République d'irlande, appelez le +44 (0)8704 440 044. Dans les autres pays, veuillez contacter votre revendeur. Les références faites dans cette publication à des produits, programmes ou services n'impliquent pas l'intention du fabricant de les commercialiser dans tous les pays dans lesquels il est implanté. Toute référence à un produit, programme ou service n'implique pas que seul ce produit, programme ou service peut être utilisé. Tout produit, programme ou service équivalent au niveau fonctionnel ne violant aucun droit de propriété intellectuelle existant peut être utilisé en remplacement. L'évaluation et la vérification du fonctionnement en association avec d'autres produits, programmes ou services, à l'exception de ceux expressément désignés par le fabricant, incombent à l'utilisateur. ImageQuick, Optra, Lexmark et Lexmark avec le logo du diamant sont des marques de Lexmark International, Inc., déposées aux Etats-Unis et/ou dans d'autres pays. PostScript est une marque déposée d Adobe Systems Incorporated. Les autres marques sont la propriété de leurs détenteurs respectifs. Copyright 2003 Lexmark International, Inc. Tous droits réservés. DROITS DU GOUVERNEMENT AMERICAIN Ce logiciel et la documentation qui l'accompagne, fournis dans le cadre de cet accord, sont des logiciels commerciaux et de la documentation développés exclusivement à partir de fonds privés.

Table des Matières Chapitre 1 : Introduction... 1 Compatibilité... 2 Nouveautés de la version 3.2... 2 Chapitre 2 : Notions de base... 3 Objets... 3 Déclaration de variables... 4 Contrôle du flux... 4 If/Then/Else... 4 Switch/Case... 5 Instructions répétitives... 6 Loop... 6 Repeat... 7 Opérateurs... 9 Mathématiques... 9 Comparaison... 10 Booléens... 11 Autres fonctionnalités... 12 Abréviation d'un objet à l aide de «with»... 12 Débogage d un script... 12 Concaténation des commentaires et des lignes de code dans un script 13 Abandon d un script en cours d exécution... 13 Chapitre 3 : Objets type de données... 14 Booléen... 15 Opérateurs... 15 Document... 16 Méthodes... 16 Opérateurs... 20 Entier... 21 Méthodes... 21 Opérateurs... 22 iii

Réel... 24 Méthodes... 24 Opérateurs... 25 Chaîne... 26 Méthodes... 26 Opérateurs... 31 Table... 34 Méthodes... 34 Chapitre 4 : Objets d aide... 37 Tableau de booléens... 38 Méthodes... 38 Dataset... 39 Méthodes... 39 Tableau d entiers... 41 Méthodes... 41 Options d'impression... 42 Méthodes... 42 Options... 43 Tableau de réels... 47 Méthodes... 47 Tableau de chaînes... 48 Méthodes... 48 Fichier texte... 50 Méthodes... 50 Chapitre 5 : Objets système... 55 Original... 56 Usertime... 57 Confirmation... 60 Exemple de remplacement :... 63 Local... 64 Chapitre 6 :... 65 BarcodeRead (Codes à barres : Lire)... 66 BarcodeWrite (Codes à barrres : Ecrire)... 72 ConvertImageFormat (Images : Modifier Format)... 77 ConvertToDocument (Images : Convertir en Postscript ou Image PDF)... 82 Table des Matières iv

DatabaseNotes (Groupware : Réceptionner)... 84 Actions Domino.Doc... 87 DominoDocCheckIn (EDMS : Réceptionner)... 88 DominoDocCheckIn (EDMS : Récupérer)... 93 Connexion à Domino.Doc... 98 Navigation dans une bibliothèque Domino.Doc... 98 EmailExchange (Email)... 100 EmailNotes (Email)... 103 EmailSMTP (Email)... 106 Adresses de messagerie électronique... 108 Destinataires et expéditeurs... 109 Authentification... 110 FaxByPrinter (Fax)... 111 FTPget (FTP : Obtenir)... 113 FTPput (FTP : Placer)... 115 Actions GroupWise... 117 GWMail (Email)... 118 GWDiscuss (Email)... 122 GWCheckIn (Groupware : Réceptionner)... 125 ImageCombine (Images : Combiner dans Document)... 129 ImageCrop (Images : Découper)... 131 ImageInvert (Images : Inverser)... 134 ImageMerge (Images : Superposer)... 135 ImageRotate (Images : Pivoter)... 140 ImageSeparate (Images : Séparer dans document)... 142 ImageText (Images : Superposer Texte)... 143 ImageToHTML (Images : Convertir en HTML)... 148 Types de texte... 151 ImageToPDF (Images : Convertir en PDF [Consultable])... 152 Types de texte... 155 ImageToRTF (Images : Convertir en RTF)... 156 Types de texte... 159 ImageToText (Images : Convertir en Texte)... 160 Types de texte... 164 LaunchExe (Lancer un autre programme)... 165 Vérification des valeurs de retour... 168 MergeForm (Formulaires : Fusionner en PDF)... 169 Actions ODBC... 170 Table des Matières v

Introduction... 170 ODBCWrite (Base de données ODBC : Ecrire)... 171 ODBCRead (Base de données ODBC : Lire)... 176 PrintByDriver (Imprimer)... 183 PrintForm (Imprimer)... 186 Type d'imprimante... 188 Utilisation d une file d attente Windows... 188 PrintJob (Imprimer)... 191 Confirmation d impression... 198 PrintURL (Imprimer)... 199 SaveToFile (Enregistrer dans fichier)... 200 SharePoint... 204 SharePointWrite (EDMS : Réceptionner)... 205 SharePointRead (EDMS : Récupérer)... 209 Chapitre 7 : Invites... 216 Invite de type activation... 217 Invite de message... 218 Invite de type numérique... 219 Invite de type options (sélection multiple)... 221 Invite de type options (sélection unique)... 224 Invite de mot de passe... 225 Invite de type texte... 226 Annexe A : Référence ODBC 228 Configuration et besoins du logiciel... 228 Prise en charge des documents de la base de données... 229 Insertion de valeurs dans des colonnes de date... 230 Annexe B : Référence des codes à barres 231 Codabar... 231 Code 2 of 5... 232 Code 3 of 9... 233 Code 93... 233 Code 128... 234 EAN-8... 234 EAN-13... 235 Table des Matières vi

ITF... 235 Patch... 236 PDF-417... 236 UCC 128... 237 UPC-A... 237 UPC-E... 238 Annexe C : Référence des métadonnées 239 Options de numérisation... 239 Options de copie... 242 Options de fax... 245 Options de messagerie électronique/ftp... 246 Accès aux données de remplacement dans un script... 247 Table des Matières vii

1 Introduction Ce manuel fournit une référence technique pour LDDScript 3.2, le langage de création de script de la suite de produits Lexmark Document Solutions. Le manuel Référence des scripts est organisé de la manière suivante : Chapitre 2, «Notions de base» Présentation succincte des constructions de base de LDDScript. Chapitre 3, «Objets type de données» Informations relatives aux types de données pris en charge. Chapitre 4, «Objets d aide» Informations relatives aux objets utilisés pour exécuter des opérations courantes. Chapitre 5, «Objets système» Informations relatives aux objets qui fournissent les données associées au travail présenté ainsi que les réponses à l utilisateur. Chapitre 6, Informations relatives aux objets qui traitent effectivement les documents à acheminer, à stocker dans une base de données, à imprimer, etc. Chapitre 7, «Invites» Informations relatives à la syntaxe et aux objets qui invitent l utilisateur à fournir des données. Annexe A, «Référence ODBC» Informations relatives à la mise en interface avec des bases de données à partir d un script. Annexe B, «Références des codes à barres» Informations relatives aux codes à barres pris en charge par LDDScript. Annexe C, «Référence des métadonnées» Informations relatives aux propriétés des métadonnées qui sont renvoyées lorsqu un script remplace une opération normale de copie/fax/ message électronique d un MFP. Introduction 1

Compatibilité LDDScript 3.2 continue d utiliser la syntaxe et les constructions introduites dans Lexmark Document Distributor 2.0. La suite qui exploite le langage de script comprend : Lexmark Document Distributor Lexmark Document Producer Lexmark Document Portal Le langage de script est compatible avec tous ces produits et vous permet d automatiser votre flux de travail, de créer des formulaires basés sur le serveur et d imprimer des formulaires vierges ou précomplétés. Ces produits peuvent fonctionner de manière autonome ou être intégrés pour constituer une solution de document complète. Les scripts écrits pour LDD 2.x doivent être convertis or réécris pour fonctionner avec LDD 3.x. Les scripts écrits à l aide de Workflow Composer 3.1 peuvent être utilisés avec LDD 3.2 sans modification; à l exception des scripts qui utilisaient l action ImageDeskew qui a été supprimée de LDD 3.2. Nouveautés de la version 3.2 Les modifications suivantes ont été apportées dans la version 3.2 : La page de confirmation a été améliorée pour permettre l inclusion des représentations miniatures de toutes les pages numérisées. Par ailleurs, les questions et réponses saisies par l utilisateur au niveau du MFP peuvent aussi être incluses sur la page de confirmation. Le remplacement de l action de la page de confirmation par défaut est désormais possible, et la page de confirmation peut être envoyée par courrier électronique ou enregistrée dans un fichier, par exemple. L authentification a été ajoutée à l action EmailSMTP. L action ImageDeskew a été supprimée. Les performances de l action MergeForm ont été sensiblement augmentées. La prise en charge des files d attente Windows a été ajoutée à l action PrintForm. Introduction 2

2 Notions de base Objets Un objet est un bloc de construction élémentaire de LDDScript qui contient des propriétés et des méthodes. Une propriété est un des objets type de données de base tel qu une chaîne ou un entier. Différentes valeurs peuvent lui être affectées pour influencer le fonctionnement d un objet. Une méthode est une fonction destinée à agir sur les données. Une méthode peut avoir des paramètres et peut retourner une valeur. Les paramètres et les valeurs de retour sont des objets type de données ou des objets d aide. La notation à point est utilisée pour accéder aux propriétés et aux méthodes d un objet. Pour définir la valeur d une propriété : ObjectName.propertyName = valeur Pour appeler une méthode : ObjectName.MethodName() ObjectName.MethodName(param1, param2) returnvalue = ObjectName.MethodName(param1) LDDScript prend en charge cinq types d objet : Type de données Objets les plus élémentaires ; toutes les propriétés et la plupart des variables sont de ce type. Aide Fournit un moyen aisé d exécuter certains opérations courantes. Système Ne traite pas les documents ; cet objet sert à rassembler les entrées et fournit la réaction de l utilisateur. Action Traite des documents ; exécute l archivage, l acheminement, la distribution, etc. Les autres chapitres de ce manuel fournissent une référence aux objets de chaque type. Notions de base 3

Déclaration de variables Toutes les variables doivent être déclarées avant de pouvoir être utilisées. Il est toutefois impossible de déclarer des variables dans un bloc «with» ainsi que dans des blocs logiques tels que if/then ou loop. Vous déclarez une variable en spécifiant son type d objet et son nom. Par exemple : string text int num Pour affecter un nom à vos variables, vous devez respecter certaines règles : Le nom doit être constitué de lettres, chiffres et traits de soulignement. Le premier caractère du nom doit être une lettre. Ce nom doit être unique au sein du script. Les noms ne différencient pas les majuscules des minuscules, ce qui signifie que «Nom», «NOM» et «nom» sont considérés comme un même nom de variable. Le nom ne peut pas être un mot réservé (c est-à-dire un mot qui possède une signification particulière pour le compilateur de scripts). Contrôle du flux Pour contrôler l exécution des instructions du script, une certaine logique de contrôle de flux est nécessaire. Les instructions du script peuvent être exécutées de trois façons : successivement, sélectivement ou répétitivement. Lorsqu aucune logique de contrôle du flux n est utilisée, les instructions sont exécutées dans l ordre du script. Pour exécuter certaines instructions du script de manière sélective, vous pouvez utiliser des instructions if/then/else ou switch/case. Pour répéter l exécution des instructions de script, utilisez les instructions loop et repeat. If/Then/Else Le type de contrôle de flux le plus courant est celui qui exécute une instruction quand une condition déterminée est vraie. Cette aptitude est mise en oeuvre sur le Document Server à l aide de la structure if/then/else. Le format de base est le suivant : if (bool expression) then statement1 statementn endif statement1 à statementn ne sont exécutés que si l expression booléenne entre parenthèses a la valeur TRUE. Dans certains cas, il faut aussi évaluer un ensemble d instructions si une condition a la valeur TRUE et un autre si la valeur est FALSE. La structure else est utilisée à cette fin : if (bool expression) then statementa statementc else Notions de base 4

statementx statementz endif statementa à statementc sont exécutés si l expression booléenne entre parenthèses a la valeur TRUE ; sinon, statementx à statementz sont exécutés. Switch/Case Il arrive parfois que vous souhaitez vérifier plusieurs conditions. A cette, fin, utilisez plusieurs instructions If/Then. L instruction Switch/Case fournit un moyen aisé de réaliser plusieurs comparaisons : Integer switch String switch switch (intvar) switch (stringvar) case intval1 case "stringval1" statementa statementa statementb statementb case intval2 case "stringval2" statementc statementc statementd statementd default default statemente statemente statementf statementf endswitch endswitch L instruction Switch/Case accepte des valeurs d entier ou de chaîne. Selon la valeur de la variable, le bloc case correspondant à cette valeur est exécuté. Chaque bloc case peut contenir plusieurs instructions, mais un bloc case seulement est exécuté. Si la valeur de la variable switch ne correspond à aucun case, le bloc par défaut est exécuté. Le bloc par défaut n est pas requis. Néanmoins, s il est utilisé, il doit être le dernier bloc. Exemple d instruction Switch Les imprimantes multifonctions (MFP) possèdent une fonction de comptabilisation des travaux. Quand cette fonction est activée, les utilisateurs doivent spécifier un numéro de compte pour pouvoir accéder à un profil. Dans cet exemple, les utilisateurs spécifient un numéro de département pour utiliser des profils. Ce script d exemple exécute une instruction Switch/Case pour vérifier le numéro de département. string CustomSubject // Utilise le numéro de compte sous forme d entier int DeptNumber = original.useracct.asint() switch (DeptNumber) case 35 CustomSubject = "Document des Ressources Humaines" case 41 CustomSubject = "Document du Département Juridique" case 15 CustomSubject = "Document du Département Expédition" Notions de base 5

par défaut CustomSubject = "Document de votre société" endswitch with EmailSMTP.Server="mailserver.com".To="barbarab@foobar.com".From="LDDTrain@lexmark.com".Subject=CustomSubject.Message="Veuillez lire SVP.".CharacterSet=LDD_SMTPCHARSET_US.Attachments=original.document.Go() endwith Instructions répétitives Chaque instruction d un script n est exécutée qu une seule fois. Les instructions repeat et loop vous permettent toutefois d exécuter à plusieurs reprises le même bloc d instructions. Loop Pour répéter un jeu d instructions à une fréquence déterminée, utilisez l instruction loop. Syntaxe : loop (intcounter from istart to ifinish) statement1 statementn endloop où : intcounter est une variable d entier déclarée précédemment ; istart est une valeur d entier à affecter à intcounter au démarrage de l instruction loop ; ifinish est une valeur d entier qui correspond au maximum pour intcounter. En utilisant une variable d entier comme compteur, l instruction loop est répétée à la fréquence spécifiée dans l information istart/ifinish. Vous pouvez inclure dans le bloc loop autant d instructions que vous le souhaitez. Le bloc loop se termine avec l instruction endloop. L instruction loop commence avec la variable du compteur à laquelle est affectée la valeur indiquée par istart. A chaque exécution de loop, la valeur du compteur augmente d une unité (1). Les répétitions se poursuivent jusqu à ce que la valeur du compteur soit supérieure à celle de ifinish. Ainsi, une instruction loop de 1 à 10 est répétée jusqu à ce que le compteur prenne la valeur 11. La valeur de istart doit être inférieure à celle de ifinish. La variable d entier affectée au compteur doit être déclarée avant de pouvoir être utilisée dans l instruction loop. Notions de base 6

Exemple : Envoi par courrier électronique du document numérisé à l origine à dix représentants du service clientèle. Dans ce script, les propriétés EmailSMTP communes sont définies avant d envoyer les messages électroniques dans l instruction Loop. string EmailAdd int LoopCount // Configure les propriétés communes des messages électroniques. with EmailSMTP.Subject="Réclamation client".server="mail.server.com".from="customer_service@foobar.com".message="veuillez examiner cette réclamation".attachments=original.document.characterset=ldd_smtpcharset_us endwith loop (LoopCount from 1 to 10) EmailSMTP.To="CustRep" + LoopCount.AsString() + "@foobar.com" EmailSMTP.Go() endloop Repeat L instruction repeat permet d exécuter indéfiniment un bloc d instructions, jusqu à ce qu une expression prenne la valeur True. repeat (until bool expression) statement1 statementn endrepeat L instruction repeat exécute le bloc d instructions jusqu à ce que l expression booléenne prenne la valeur TRUE. Vous pouvez inclure dans le bloc loop autant d instructions que vous le souhaitez. Le bloc loop doit se terminer par l instruction endrepeat. Si la valeur initiale de l expression booléenne est true, loop n est pas exécuté. Exemple : Ce script utilise la reconnaissance optique des caractères (OCR) pour vérifier la confidentialité des documents numérisés par les utilisateurs. Si le document est confidentiel, il n est pas envoyé par courrier électronique. L image numérisée est enregistrée dans un fichier et un message d avertissement est transmis à l utilisateur qui a numérisé le document confidentiel. with ImageToText.input=original.document.TextType=LDD_TEXTTYPE_NORMAL.Language=LDD_LANG_ENGLISH.AllPages=TRUE.Go() endwith textfile tf string OneLine, Submitter Notions de base 7

// Ouvre les résultats de l action OCR tf.open(imagetotext.output) bool bconfdoc = FALSE int icount, iend icount =1 iend = tf.getnumberlines() Submitter = original.username+ "@lexmark.com" // Recherche le mot Confidentiel dans chaque ligne repeat (until (bconfdoc OR (icount>=iend))) OneLine = tf.readline() if (OneLine.Contains("Confidentiel")) then bconfdoc = TRUE endif icount.add(1) endrepeat // Enregistre le document s il est confidentiel et envoie un message d avertissement if (bconfdoc) then with SaveToFile.input=original.document.Path="c:\ebc.txt".AppendTimestamp=TRUE.Overwrite=FALSE.Go() endwith with EmailSMTP.Server="mail.server.com".To= Submitter.From="mailcheck@abcxyz.com".Subject="Message électronique non valide rejeté".message="un document confidentiel ne peut pas être transmis par courrier électronique".characterset=ldd_smtpcharset_us.go() endwith else with EmailSMTP.Server="mail.server.com".To="Receiver@abcxyz.com".From=Submitter.Subject="Document numérisé".message="voici le document demandé".characterset=ldd_smtpcharset_us.attachments=original.document.go() endwith endif Notions de base 8

Opérateurs Mathématiques Ces opérateurs permettent de définir ou de modifier la valeur d une variable ou d une propriété. Opérateur Symbole Addition + Pour les objets entier et réel, cet opérateur additionne les nombres de part et d autre du signe «+» et retourne la nouvelle valeur. Pour les objets chaîne, l effet produit par cet opérateur est similaire à celui de la méthode de concaténation. Il ajoute la chaîne de droite à celle de gauche et retourne la nouvelle chaîne. Pour les objets document, il ajoute le document de droite à celui de gauche et retourne le nouveau document. Dans tous les cas, les variables de part et d autre demeurent inchangées. Soustraction - Pour les objets entier et réel, cet opérateur soustrait le nombre de droite de celui de gauche et retourne la nouvelle valeur. Dans tous les cas, les variables de part et d autre demeurent inchangées. Cet opérateur n est pas valide avec les autres types d objet. Multiplication * Pour les objets entier et réel, cet opérateur multiplie les nombres de part et d autre du signe «*» et retourne la nouvelle valeur. Dans tous les cas, les variables de part et d autre demeurent inchangées. Cet opérateur n est pas valide avec les autres types d objet. Division / Pour les objets entier et réel, cet opérateur divise le nombre de gauche par celui de droite et retourne la nouvelle valeur. Dans tous les cas, les variables de part et d autre demeurent inchangées. Cet opérateur n est pas valide avec les autres types d objet. Modulo % Pour les objets entier et réel, cet opérateur divise le nombre de gauche par celui de droite et retourne le reste. Dans tous les cas, les variables de part et d autre demeurent inchangées. Cet opérateur n est pas valide avec les autres types d objet. 5%2, par exemple, retourne 1, puisque 5 divisé par 2 donne 2 avec un reste de 1. Notions de base 9

Comparaison Ces opérateurs permettent de comparer les valeurs de variables ou de propriétés de même type. Le résultat de la comparaison est une valeur booléenne (TRUE ou FALSE). Tous les symboles disponibles avec un opérateur peuvent être utilisés. Opérateur Symboles Inférieur à <, LT Pour les entiers et les réels, retourne TRUE si la valeur de gauche est inférieure à celle de droite. Pour les chaînes, retourne TRUE si la valeur de gauche vient avant celle de droite dans l ordre alphabétique (casse incluse). Sinon, l opérateur retourne la valeur FALSE. Supérieur à >, GT Pour les entiers et les réels, retourne TRUE si la valeur de gauche est supérieure à celle de droite. Pour les chaînes, retourne TRUE si la valeur de gauche vient après celle de droite dans l ordre alphabétique (casse incluse). Sinon, l opérateur retourne la valeur FALSE. Inférieur ou égal à <=, LE Pour les entiers et les réels, retourne TRUE si la valeur de gauche est inférieure ou égale à celle de droite. Pour les chaînes, retourne TRUE si la valeur de gauche vient avant celle de droite dans l ordre alphabétique ou si les deux valeurs sont identiques (casse incluse). Sinon, l opérateur retourne la valeur FALSE. Supérieur ou égal à >=, GE Pour les entiers et les réels, retourne TRUE si la valeur de gauche est supérieure ou égale à celle de droite. Pour les chaînes, retourne TRUE si la valeur de gauche vient après celle de droite dans l ordre alphabétique ou si les deux valeurs sont identiques (casse incluse). Sinon, l opérateur retourne la valeur FALSE. Egal à ==, EQ (double signe égal) Pour les entiers et les réels, retourne TRUE si la valeur de gauche est égale à celle de droite. Pour les chaînes, retourne TRUE si la valeur de gauche est identique en tous points (casse incluse) à celle de droite. Sinon, l opérateur retourne la valeur FALSE. Différent de!=, <>, NE Pour les entiers et les réels, retourne TRUE si la valeur de gauche est différente de celle de droite. Pour les chaînes, retourne TRUE si la valeur de gauche n est pas identique en tous points (casse incluse) à celle de droite. Sinon, l opérateur retourne la valeur FALSE. Notions de base 10

Booléens Ces opérateurs permettent de construire des expression booléennes complexes. Chaque valeur de part et d autre de l opérateur doit être une valeur booléenne. Le résultat de l opérateur booléen est une valeur booléenne (TRUE ou FALSE). Tous les symboles disponibles avec un opérateur peuvent être utilisés. Opérateur Symboles Et &, &&, AND Applique AND à deux valeurs booléennes pour obtenir le résultat booléen final. Ou,, OR Applique OR à deux valeurs booléennes pour obtenir le résultat booléen final. Non!, NOT Applique NOT à deux valeurs booléennes pour obtenir le résultat booléen final. Le tableau ci-dessous donne les résultats des méthodes AND et OR avec : bool1 AND bool2 bool1 OR bool2 bool 1 bool2 AND OR FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE TRUE FALSE FALSE TRUE TRUE TRUE TRUE TRUE Le tableau ci-dessous donne les résultats des méthodes NOT avec : NOT bool1 bool 1 TRUE FALSE NOT FALSE TRUE Notions de base 11

Autres fonctionnalités Abréviation d'un objet à l aide de «with» Quand une section de code fonctionne avec le même objet, il peut s avérer fastidieux de taper continuellement le même nom d objet. Vous pouvez l éviter en utilisant l instruction with. Son format général est le suivant : with objectname.property = value.property = value.method() endwith Vous déclarez d abord le nom de l objet à utiliser dans l instruction with, puis vous pouvez faire référence à n importe quelle propriété ou méthode de cet objet en spécifiant le «point» suivi du nom de la propriété ou de la méthode. Cette procédure est le plus fréquemment utilisée avec les objets action. Débogage d un script Pendant l exécution d un script, les objets action peuvent consigner des messages d erreur et d avertissement dans le journal. Vous pouvez aussi écrire vos propres messages dans ce journal pour faciliter le débogage de votre script. Vous souhaiterez peut-être connaître la valeur d une variable ou la valeur de retour d une méthode, par exemple. A cette fin, consignez votre message dans le journal à l aide de l instruction «debug». debug (msg) msg peut être une variable de chaîne, une chaîne entre guillemets ou une expression numérique. Voici quelques exemples : int index= 3 string ErrorMsg = "Echec de l impression" debug (index) debug (ErrorMsg) debug ("Travail reçu de " + original.username) Chacun de ces exemples consigne un message dans le journal du serveur. Notions de base 12

Concaténation des commentaires et des lignes de code dans un script Pour concaténer des commentaires dans un script, vous devez utiliser deux barres obliques («//») si le texte est renvoyé à la ligne. Par exemple : //Ce script faxe un original numérisé et l envoie à une base de données fournie par l utilisateur, //si la base de données n est pas prise en charge par le logiciel... Pour concaténer des lignes de code, vous devez utiliser un trait de soulignement («_»). Par exemple : str email="jean Dupont" doc ocr with EmailSMTP.Server=local.emailserver.To=email.From=email.Subject="Votre document numérisé".message="vous trouverez ci-joint votre document numérisé au format"_ "demandé.".characterset=ldd_smtpcharset_us.attachments=ocr.go() endwith Abandon d un script en cours d exécution Si vous détectez une condition d erreur pendant l exécution d un script, il peut s avérer utile de disposer d un moyen pour arrêter le traitement du script. Ce moyen, c est la fonction exit : void exit(string msg) La fonction exit arrête le traitement du script. Elle vous permet de passer une chaîne qui apparaît dans le journal du serveur ainsi que dans la page/boîte de dialogue de confirmation. Notions de base 13

3 Objets type de données Toutes les données exploitées par Workflow Composer peuvent être groupées en six types distincts : Booléen Document Entier Table Réel Chaîne Chaque propriété d objet correspond à un des objets type de données. En outre, la plupart des variables correspondent aussi à un des ces types. Vous trouverez ci-dessous une description de chacun de ces objets. Objets type de données 14

Booléen L objet booléen est utilisé avec des valeurs logiquement vraies ou fausses. Les seules valeurs valides de cette variable sont les mots réservés : TRUE et FALSE. L objet ne possède pas de propriété. Il prend en charge les opérateurs suivants : Opérateurs Symbole ==, EQ Egal à <> Différent de &, AND Et, OR Ou!, NOT Non = Affectation Objets type de données 15

Document L objet document sert à contenir une collection de fichiers image, texte et autres mises en forme. Tous les fichiers d un document ne doivent pas être du même type ; il peut contenir différents fichiers de types distincts. Une propriété ou une variable est de ce type lorsqu elle est déclarée comme doc. L objet document ne possède pas de propriété. Méthodes Syntaxe bool AddDocument(doc doc1) bool AddFile(string path [, string type]) void AddTempFile(string ext) void Clear() Ajoute un document existant à la fin de ce document. doc1 document à ajouter. Valeur booléenne indiquant le succès ou l échec. Ajoute un fichier existant à la fin de ce document. Cette méthode échoue si le fichier n existe pas ou s il ne peut pas être lu. path chemin d accès complet du fichier sur le serveur à ajouter. type s il n est pas spécifié, il est défini à l extension du fichier ajouté ; sinon, la valeur fournie est utilisée. Valeur booléenne indiquant le succès ou l échec. Ajoute un fichier temporaire au document. Le fichier est supprimé quand le script se termine. ext extension de fichier qui donne le fichier temporaire. Aucun Supprime tous les fichiers du document. Aucun Aucun Objets type de données 16

Syntaxe doc Copy() doc CopyRange(int start, int end) int GetDocumentSize() string GetDocumentType() Copies tous les fichiers de ce document dans un nouveau document ; en réalité, cette syntaxe crée une copie des fichiers, de sorte qu il existe deux copies des fichiers. Cela permet d apporter des modifications à un jeu de fichiers sans affecter l autre. Aucun Un document contenant une copie de tous les fichiers de la variable de document qui est copiée. Copies les fichiers spécifiés de ce document dans un nouveau document ; en réalité, cette syntaxe crée une copie des fichiers, de sorte qu il existe deux copies des fichiers. Cela permet d apporter des modifications à un jeu de fichiers sans affecter l autre. start index du premier fichier du document à copier ; les index de fichier commencent à 1. end index du dernier fichier du document à copier. Un document contenant une copie des fichiers inclus dans la plage spécifiée. Retourne la taille totale en octets de tous les fichiers de ce document. La taille zéro (0) est retournée si le document ne contient aucun fichier. Aucun Un entier spécifiant le nombre total d octets dans ce document. Retourne le type (format de fichier ou extension) du document. Si tous les fichiers du document sont du même type, la valeur correspond au type du document ; sinon, c est une chaîne vide. Aucun Une chaîne contenant le type (format de fichier ou extension) du document. Objets type de données 17

Syntaxe doc GetFile(int filenum) string GetFileLabel(int filenum) doc GetFileRange(int start, int end) int GetFileSize(int filenum) string GetFileType(int filenum) Retourne une référence au fichier spécifié ; le document retourné n étant pas une copie, toute modification qui lui est apportée affecte l original. Un document vide est retourné si filenum n est pas valide. filenum index du fichier à obtenir ; les index de fichier commencent à 1. Un document contenant une référence au fichier spécifié. Retourne l étiquette du fichier spécifié. L étiquette est utilisée comme nom de fichier (extension non comprise) pour les pièces jointes des messages électroniques ou des bases de données. Une chaîne vide est retournée si filenum n est pas valide. filenum index de l étiquette du fichier à obtenir ; les index de fichier commencent à 1. Une chaîne contenant l étiquette du fichier spécifié. Retourne une référence aux fichiers spécifiés ; le document retourné n étant pas une copie, toute modification apportée à ces fichiers affecte l original. start index du premier fichier à obtenir; les index de fichier commencent à 1. end index du dernier fichier à obtenir. Un document contenant une référence aux fichiers spécifiés. Retourne la taille en octets du fichier spécifié. La valeur zéro (0) est retournée si filenum n est pas valide. filenum index de la taille du fichier à obtenir ; les index de fichier commencent à 1. Un entier indiquant la taille en octets du fichier spécifié. Retourne le type (format de fichier ou extension) du fichier spécifié. Une chaîne vide est retournée si filenum n est pas valide. filenum index du type de fichier à obtenir ; les index de fichier commencent à 1. Une chaîne contenant la valeur du type de fichier spécifié. Objets type de données 18

Syntaxe int GetNumberFiles() bool SetFileLabel(int filenum, string label) void SetFileLabelAll(string label) Retourne le nombre de fichiers séparés dans ce document. Cette syntaxe ne retourne pas le nombre de pages. Aucun Un entier spécifiant le nombre de fichiers de ce document. Définit l étiquette du fichier spécifié ; celle-ci est utilisée comme nom de fichier (extension non comprise) pour nommer des pièces jointes dans un message électronique ou des bases de données. Cette méthode échoue si filenum n est pas valide. filenum index du fichier ; les index de fichier commencent à 1. label étiquette du fichier spécifié ; comme celle-ci est utilisée en tant que nom de fichier, elle doit respecter les règles de nomination des fichiers. Valeur booléenne indiquant le succès ou l échec. Définit les étiquettes de tous les fichiers de ce document ; celle-ci est utilisée comme nom de fichier (extension non comprise) pour nommer des pièces jointes dans un message électronique ou des bases de données. label étiquette donnant tous les fichiers ; comme celle-ci est utilisée en tant que nom de fichier, elle doit respecter les règles de nomination des fichiers. Aucun Remarque : Dans le cas des variables de type doc, l affectation de la variable est uniquement une référence. Cela signifie que les deux variables pointent vers le même jeu physique de fichiers constituant le document. Par conséquent, quand vous modifiez un des fichiers, il est changé dans les deux documents. Pour créer différentes copies de travail des fichiers, utilisez les méthodes Copy ou CopyRange de l objet doc. Objets type de données 19

Opérateurs Symbole + Addition (équivaut à appeler AddDocument) [] Index (équivaut à appeler GetFile en utilisant ce même fichier) = Affectation (équivaut à appeler GetFileRange en utilisant tous les fichiers) Objets type de données 20

Entier L objet entier est utilisé avec des valeurs numériques sans virgule décimale. Une propriété ou une variable est de ce type lorsqu elle est déclarée comme int. L objet ne possède pas de propriété. Méthodes Syntaxe void Add(int num) real AsReal() string AsString() void Divide(int num) Ajoute num à la valeur en cours. La valeur de cet objet est modifiée. num entier à ajouter à la valeur en cours. Aucun Convertit et retourne la valeur en cours de cet objet sous forme d objet réel. La valeur de cet objet n est pas modifiée. Aucun Un réel indiquant la valeur de cet objet. Retourne la valeur en cours de cet objet sous forme de chaîne. Cette syntaxe est fréquemment utilisée pour pouvoir employer la valeur de l entier dans une chaîne. Aucun Une chaîne indiquant la valeur de cet objet. Divise la valeur en cours par num. La valeur de cet objet est modifiée. num entier diviseur. Aucun Objets type de données 21

Syntaxe void Mod(int num) void Multiply(int num) Divise la valeur en cours par num et définit la valeur de cet objet avec le reste. num entier diviseur. Aucun Multiplie la valeur en cours par num. La valeur de cet objet est modifiée. num entier multiplicateur. Aucun Opérateurs Symbole <, LT Inférieur à >, GT Supérieur à <=, LE Inférieur ou égal à >=, GE Supérieur ou égal à ==, EQ Egal à <>, NE,!= Différent de + Addition - Soustraction * Multiplication / Division % Modulo (reste) = Affectation Objets type de données 22

Exemples Statement Valeur de X Commentaire int x 0 Déclare la variable x = 5 5 Affecte la valeur 5 à x x.mod(2) 1 5%2 donne 2 et retourne 1 x.add(9) 10 x.subtract(2) 8 x.multiply(2) 16 x.divide(8) 2 x.asreal() 2 Retourne 2.0. x.asstring() 2 Retourne «2». Remarque : Les opérateurs mathématiques standard (+, -, *, /) peuvent aussi être utilisés. Objets type de données 23

Réel L objet réel est utilisé pour des valeurs numériques avec virgule décimale. Une propriété ou une variable est de ce type lorsqu elle est déclarée comme real. L objet ne possède pas de propriété. Méthodes Syntaxe void Add(real num) int AsInt () string AsString() Ajoute num à la valeur en cours. La valeur de cet objet est modifiée. num réel à ajouter à la valeur en cours. Aucun Convertit et retourne la valeur en cours de cet objet sous forme d objet entier. La valeur n est pas arrondie ; les chiffres qui suivent la virgule décimale sont tronqués, le cas échéant. La valeur de cet objet n est pas modifiée. Aucun Un entier indiquant la valeur de cet objet. Retourne la valeur en cours de cet objet sous forme de chaîne. Cette syntaxe est fréquemment utilisée pour pouvoir employer la valeur du réel dans une chaîne. Aucun Une chaîne indiquant la valeur de cet objet. Objets type de données 24

Syntaxe void Divide(real num) void Multiply(real num) Divise la valeur en cours par num. La valeur de cet objet est modifiée. num réel diviseur. Aucun Multiplie la valeur en cours par num. La valeur de cet objet est modifiée. num réel multiplicateur. Aucun Opérateurs Symbole <, LT Inférieur à >, GT Supérieur à <=, LE Inférieur ou égal à >=, GE Supérieur ou égal à ==, EQ Egal à <>, NE,!= Différent de + Addition - Soustraction * Multiplication / Division = Affectation Objets type de données 25

Chaîne L objet chaîne est utilisé avec des valeurs de texte. Une propriété ou une variable est de ce type lorsqu elle est déclarée comme string. L objet ne possède pas de propriété. Méthodes Syntaxe string AsAlphaNumeric() doc AsDoc() int AsInt () Convertit et retourne la valeur en cours de la chaîne sous forme de chaîne contenant uniquement les caractères alphanumériques de la valeur en cours ; tous les autres caractères sont supprimés. La valeur de cette chaîne n est pas modifiée. Aucun Une chaîne contenant uniquement les caractères alphanumériques de la chaîne en cours. Retourne la valeur en cours de cette chaîne en tant que document. Le document possède un fichier contenant la valeur en cours de cette chaîne comme texte. Aucun Un document dont le texte est la valeur en cours de cette chaîne. Retourne la valeur en cours de la chaîne sous forme d entier. La valeur en cours est lue jusqu au premier caractère non numérique. La valeur retournée est zéro (0) si la chaîne est vide ou si le premier caractère n est pas numérique. La valeur de cette chaîne n est pas modifiée. Aucun Un entier avec la valeur en cours de la chaîne comme entier. Objets type de données 26

Syntaxe string AsLower() real AsReal() string AsUpper () bool Compare(string string1) Convertit et retourne la valeur en cours de cette chaîne en lettres minuscules seulement. Tous les caractères non alphabétiques demeurent inchangés. La valeur de cette chaîne n est pas modifiée. Aucun Une chaîne contenant la valeur en cours convertie en lettres minuscules seulement. Retourne la valeur en cours de la chaîne sous forme de réel. La valeur en cours est lue jusqu au premier caractère non numérique. Les caractères numériques des nombres réels incluent la virgule décimale. La valeur retournée est zéro (0,0) si la chaîne est vide ou si le premier caractère n est pas numérique. La valeur de cette chaîne n est pas modifiée. Aucun Un réel correspondant à la valeur en cours de la chaîne sous forme de réel. Convertit et retourne la valeur en cours de cette chaîne en lettres majuscules seulement. Tous les caractères non alphabétiques demeurent inchangés. La valeur de cette chaîne n est pas modifiée. Aucun Une chaîne contenant la valeur en cours convertie en lettres majuscules seulement. Compare la valeur en cours de cette chaîne à celle fournie. Cette comparaison tient compte de la casse. string1 chaîne à laquelle est comparée la valeur en cours de cette chaîne. Valeur booléenne TRUE si les chaînes sont identiques, y compris la casse des caractères alphabétiques ou valeur FALSE. Objets type de données 27

Syntaxe bool CompareNoCase(string string1) void Concatenate(string string1) int Find(string substring, int start) string Left(int count) int Length() Compare la valeur en cours de cette chaîne à celle fournie. Cette comparaison ne tient pas compte de la casse. string1 chaîne à laquelle est comparée la valeur en cours de cette chaîne. Valeur booléenne TRUE si les chaînes sont identiques, sauf la casse des caractères alphabétiques, ou valeur FALSE. Ajoute string1 à la valeur en cours de cette chaîne. string1 chaîne à ajouter Aucun Recherche la première occurrence de la souschaîne spécifiée dans la valeur en cours de cette chaîne. substring sous-chaîne à rechercher. start index du caractère dans cette chaîne à partir duquel la recherche doit commencer; la valeur 1 commence la recherche au début. Un entier indiquant la position de départ de la souschaîne dans cette chaîne ; 0 si la sous-chaîne est introuvable. Retourne les premiers caractères de count dans cette chaîne. Si count est supérieur à la longueur de la chaîne, la totalité de la chaîne est retournée. count nombre de caractères à obtenir Une chaîne contenant les premiers caractères count de la valeur en cours. Retourne le nombre de caractères dans cette chaîne. Aucun Un entier spécifiant le nombre de caractères de la chaîne. Objets type de données 28

Syntaxe string Mid(int start, int count) int Replace(string old, string new, int index, bool matchcase, bool wholeword) int ReplaceAll(string old, string new, bool matchcase, bool wholeword) Retourne une sous-chaîne de la chaîne en cours de longueur count commençant au caractère start. Les index de chaîne commencent à 1. start index du premier caractère à inclure dans la sous-chaîne. count nombre de caractères à inclure dans la sous-chaîne ; la valeur zéro (0) indique le reste des caractères de la chaîne. Une chaîne correspondant à la sous-chaîne de la valeur en cours et contenant les caractères inclus dans la plage spécifiée. Recherche la valeur en cours de la chaîne à partir de l index spécifié et remplace la première occurrence de l ancienne chaîne par la nouvelle. La recherche peut être basée sur le respect de la casse, voire même sur des mots entiers uniquement. old chaîne à rechercher. new chaîne qui doit remplacer l ancienne. index entrée du champ d index. matchcase indique si la recherche doit respecter la casse ou non. wholeword indique si la recherche doit porter sur des mots entiers uniquement et non sur des parties de mots. Un entier indiquant l index du premier caractère de la chaîne qui correspond à celle recherchée. La valeur 0 est retournée en l absence de correspondance. Recherche la valeur en cours de la chaîne et remplace toutes les occurrences de l ancienne chaîne par la nouvelle. La recherche peut être basée sur le respect de la casse, voire même sur des mots entiers uniquement. old chaîne à rechercher new chaîne qui doit remplacer l ancienne matchcase indique si la recherche doit respecter la casse ou non. wholeword indique si la recherche doit porter sur des mots entiers uniquement et non sur des parties de mots. Un entier indiquant le nombre de remplacements effectués. La valeur 0 est retournée en l absence de correspondance. Objets type de données 29

Syntaxe string Right(int count) stringarray Separate(string separator) void TrimBoth() Retourne les derniers caractères count de la chaîne. Si count est supérieur à la longueur de la chaîne, la totalité de la chaîne est retournée. count nombre de caractères à obtenir Une chaîne contenant les derniers caractères count de la valeur en cours. Recherche la chaîne separator dans la valeur en cours de la chaîne ; à chaque occurrence trouvée, une nouvelle chaîne est formée en enlevant la valeur de separator. Quand la fin de la chaîne est atteinte, la partie restante est ajoutée au dernier élément du tableau. Si separator est introuvable, la chaîne entière est retournée comme premier élément du tableau. separator chaîne utilisée comme valeur de séparateur. Un tableau de chaînes dont chaque élément est une chaîne sans le séparateur. Enlève les espaces blancs au début et à la fin de la chaîne. Les espaces blancs sont des caractères de saut de ligne, d espace ou de tabulation. La valeur de la chaîne en cours est modifiée. Aucun Aucun Objets type de données 30

Syntaxe void TrimLeft() void TrimRight() Enlève les espaces blancs au début de la chaîne. Les espaces blancs sont des caractères de saut de ligne, d espace ou de tabulation. La valeur de la chaîne en cours est modifiée. Aucun Aucun Enlève les espaces blancs à la fin de la chaîne. Les espaces blancs sont des caractères de saut de ligne, d espace ou de tabulation. La valeur de la chaîne en cours est modifiée. Aucun Aucun Opérateurs Symbole <, LT Inférieur à (comparaison avec la casse) >, GT Supérieur à (comparaison avec la casse) ==, EQ Egal à (comparaison avec la casse) <>, NE Différent de (comparaison avec la casse) + Concaténation Exemples : Chaîne str ayant la valeur «ABC123abc:789»: str.asalphanumeric() retourne «ABC123abc789» str.asint() retourne 0 str.aslower() retourne «abc123abc:789» str.asreal() retourne 0.0 str.asupper() retourne «ABC123ABC:789» str.contains("123") retourne TRUE str.find("123", 1) retourne 4 str.length() retourne 13 Objets type de données 31

str.left(5) retourne «ABC12» str.mid(6, 4) retourne «3abc» str.right(4) retourne ":789" Chaîne str ayant la valeur «12.45» : str.asreal() retourne 12.45 str.asint() retourne 12 Chaîne str ayant la valeur «La pomme n est pas la poire» : str.replace("est", "était", TRUE, FALSE, 1) retourne 3 et change la valeur en : «La pomme n est pas la poire.» str.replace("est", "était", 1, FALSE, TRUE) retourne 6 et change la valeur en : «La pomme n était pas la poire.» str.replaceall("pomme", "poire", FALSE,TRUE) retourne 2 et change la valeur en : «La poire n est pas la pomme.» str.replaceall("poire", "pomme", TRUE, FALSE) retourne 1 et change la valeur en : «La poire n est pas la pomme.» Objets type de données 32

Caractères d échappement Certains caractères devant figurer dans des chaînes ne peuvent pas être représentés à l aide de caractères ordinaires. A cette fin, les objets chaîne prennent en charge les caractères d échappement suivants : Symbole ^n Nouvelle ligne sous Windows ^l Saut de ligne sous Unix ^r Retour chariot sous Unix ^t Tabulation ^^ Caret ^xdd Hex ^" Insertion de guillemets dans la chaîne Pour utiliser ces caractères, placez le caractère d échappement entre guillemets. Par exemple : string str = "Ligne 1^nLine2^tTab à la colonne suivante" string msg = "Ceci est la ^"première^" chaîne entre guillemets." Objets type de données 33

Table L'objet table sert à contenir une collection de paires clé/valeur. Il permet de structurer des données d une certaine manière définie par l utilisateur. Il est également possible de subdiviser les données en catégories, auquel cas ces dernières peuvent ensuite avoir leurs propres paires clé/valeur. Toutes les clés et les valeurs de la table sont des chaînes. Les données sont présentées comme suit : key = valeur category.key = valeur category.subcategory.key = valeur Plusieurs niveaux de catégories sont autorisés. Chaque catégorie doit avoir au moins une paire clé/valeur. Une propriété ou une variable est de ce type lorsqu elle est déclarée comme table. L objet table ne possède pas de propriété. Méthodes Syntaxe void AddItem(string key, string value) map GetCategory(string category) stringarray GetCategoryList() Ajoute la paire clé/valeur à la table. Pour ajouter la paire clé/valeur à une catégorie spécifique, incluez le nom de la catégorie dans la clé, en les séparant par un point. Si la catégorie n existe pas, elle est créée. key clé à ajouter à la table. value valeur à affecter à la clé Aucun Retourne une table des paires clé/valeur qui appartiennent à la catégorie spécifiée. Si la catégorie n existe pas, une table sans entrée est retournée. category nom de la catégorie. Une table des paires clé/valeur qui appartiennent à la catégorie spécifiée. Retourne une liste des catégories de niveau supérieur de la table. S il n y a pas de catégorie, un tableau de chaînes sans élément est retourné. Aucun Une liste des catégories de niveau supérieur de la table. Objets type de données 34

Syntaxe stringarray GetKeyList() string GetValue(string key) bool HasCategory(string category) bool HasKey(string key) Retourne une liste des clés de niveau supérieur de la table. S il n y a pas de clé, un tableau de chaînes sans élément est retourné. Aucun Une liste des clés de niveau supérieur de la table. Retourne la valeur de la clé spécifiée. Pour obtenir la paire clé/valeur d une catégorie spécifique, incluez le nom de la catégorie dans la clé, en les séparant par un point. Si la clé spécifiée n existe pas, une chaîne vide est retournée. key nom de la clé. Valeur de la clé spécifiée. Retourne TRUE si la catégorie spécifiée figure dans la table. Pour vérifier si une catégorie possède une sous-catégorie, séparez les noms de catégorie et de sous-catégories par un point. category nom de la catégorie. Valeur booléenne indiquant si la catégorie figure dans la table. Retourne TRUE si la clé spécifiée figure dans la table. Pour vérifier si la paire clé/valeur figure dans une catégorie spécifique, incluez le nom de la catégorie dans la clé, en les séparant par un point. key nom de la clé. Valeur booléenne indiquant si la clé figure dans la table. Exemples : Création d une table dont les clés de premier niveau sont «firstname» et «lastname», et qui possède une catégorie «address»: map info info.additem("firstname", "jean") info.additem("lastname", "dupont") info.additem("address.street", "123 Rue Grande") info.additem("address.city", "Ici") info.additem("address.state", "KY") info.additem("address.zip,", "40000") Objets type de données 35