Workflow Composer. Skriptreferanse. Mars

Like dokumenter
Workflow Composer. Skriptreferanse. Oktober 2003

Utgivelsesmerknad. Sikkerhetsinformasjon. Forsiktighetsregler og advarsler. Elektromagnetisk stråling. Lasermerknad

Document Distributor. Skripteksempler. Mars

Oversikt over Document Distributor

Document Distributor 1. Fordeler. Document Distributor

Oversikt over Document Portal

Forms Composer. Bruke Forms Composer. Oktober

Installere og bruke Document Distributor 1

Document Portal 1. Document Portal

Send driver. Administratorhåndbok

Installere og bruke Document Distributor

Skjemaer og favoritter

Øvingsforelesning 1 Python (TDT4110)

Kapittel 1 En oversikt over C-språket

Programmering Høst 2017

Del 1 En oversikt over C-programmering

Forms Composer. Document Producer 1. Document Producer

Sharpdesk Solution Sharpdesk Document Management Solution

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

Python: Valg og betingelser. TDT4110 IT Grunnkurs Professor Guttorm Sindre

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

MAT1030 Diskret matematikk

MAT1030 Diskret Matematikk

Programmeringsspråket C

MAT1030 Plenumsregning 1

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

INF 1000 høsten 2011 Uke september

INF1000 undervisningen INF 1000 høsten 2011 Uke september

Informasjon Eksamen i IN1000 og IN1001 høsten a) 1 poeng. 1b) 1 poeng. Tid. Oppgavene. Tillatte hjelpemidler. 30. november kl. 14.

Skann til RightFax. Administratorhåndbok

Beskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Unntak (exceptions) (Kap 6) Dictionaries (Kap. 9) Terje Rydland - IDI/NTNU

Læringsmål og pensum. if (be): else (not_to_be):

Betinget eksekvering og logiske tester i shell

Skann til RightFax. Versjon 2,0. Administratorhåndbok

if (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap.

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre,

TOD063 Datastrukturer og algoritmer

Eivind Gard Lund. 24. Mars 2009 Foilene bygger på 2009 utgaven av Andreas Svendsen

Python: Variable og beregninger, input og utskrift. TDT4110 IT Grunnkurs Professor Guttorm Sindre

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3

Utgivelsesmerknad. Sikkerhetsinformasjon. Forsiktighetsregler og advarsler. Elektromagnetisk stråling. Lasermerknader

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk. - 3rd edition: Kapittel 3. Professor Alf Inge Wang

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Plenumsregning 1. Kapittel 1. Roger Antonsen januar Velkommen til plenumsregning for MAT1030. Repetisjon: Algoritmer og pseudokode

Plenumsregning 1. MAT1030 Diskret Matematikk. Repetisjon: Algoritmer og pseudokode. Velkommen til plenumsregning for MAT1030

Norsk informatikkolympiade runde

Norsk informatikkolympiade runde

Informasjon Prøveeksamen i IN1000 høsten 2018

HP Easy Tools. Administratorhåndbok

AccuRead OCR. Administratorhåndbok

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.

Obligatorisk oppgave 4 i INF1010, våren 2014: "Leger og resepter" Versjon 1.1

Forelesning inf Java 5

INF Oblig 2 semantikksjekk og kodegenerering

Forelesning inf Java 5

Oversikt over. CopyCentre/ WorkCentre Pro. Systemet har noen utpregede fordeler som hjelper deg å få jobben gjort. WorkCentre Pro.

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster

INF5110. Oblig 2 presentasjon

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

MAT-INF 1100: Obligatorisk oppgave 1

Som en del av den kontinuerlige utviklingen av systemet vil Visma Software AS kunne endre sammensetningen av pakkeløsninger, moduler og funksjoner.

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

uniflow Brukerveiledning uniflow brukerveiledning

2 Om statiske variable/konstanter og statiske metoder.

Oversikt. INF1000 Uke 2. Repetisjon - Program. Repetisjon - Introduksjon

INF120: Oblig 3. Yngve Mardal Moe

Del 4 Noen spesielle C-elementer

Lynkurs i shellprogrammering under Linux

Del 2 Tabeller, arrays, strenger

Introduksjon til DARK assembly

Forelesningsquiz. Forelesning inf Java 5. Sett dere to (eller tre) sammen og besvar de fire spørsmålene på utdelt ark. Tid: 15 min.

Norsk informatikkolympiade runde

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2015

Del 3: Evaluere uttrykk

MAT-INF 1100: Obligatorisk oppgave 1

Obligatorisk oppgave 1 INF1020 h2005

Læringsmål og pensum. Oversikt

Verdens korteste grunnkurs i Excel (2007-versjonen)

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:

Kompatibilitetsveiledning for skriver, tilleggsutstyr og stativ. Laserskrivere

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

Velkommen til plenumsregning for MAT1030. MAT1030 Diskret matematikk. Repetisjon: Algoritmer og pseudokode. Eksempel fra boka. Eksempel

Utgivelsesmerknad. Lisensmerknad. Sikkerhetsinformasjon. Forsiktighetsregler og advarsler. Elektromagnetisk stråling

Oppgave 1 Hva tror du følgende program skriver ut til terminalen? Diskuter med gruppen.

Beskrivelse av programmeringsspråket Simpila INF Kompilatorteknikk Våren 2012

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak (exceptions) Utgave 3: Kap. 6. Terje Rydland - IDI/NTNU

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2016

Programvareoppdateringer Brukerhåndbok

Øvingsforelesning 5 Python (TDT4110)

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 v2008

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

UNIVERSITETET I OSLO

Brukerveiledning for ArkN4

Oversikt. INF1000 Uke 6. Objekter, pekere og null. Lese og skrive fra/til fil. Litt om objekter, pekere og null Filer og easyio. Litt mer om tekster

1. Hent NotaPlan Online Backup på 2. Trykk på Download i menyen og på Download i linjen med Notaplan Backup

6105 Windows Server og datanett

Transkript:

Workflow Composer Skriptreferanse Mars 2003 www.lexmark.com

Utgave: Mars 2003 Følgende avsnitt gjelder ikke for land der slike bestemmelser er uforenelig med gjeldende lover: LEXMARK INTERNATIONAL, INC., UTGIR DENNE PUBLIKASJONEN SOM DEN ER ( AS IS ) UTEN GARANTIER AV NOE SLAG, HVERKEN UTTRYKTE ELLER UNDERFORSTÅTTE, INKLUDERT, MEN IKKE BEGRENSET TIL, UNDERFORSTÅTTE GARANTIER FOR SALGBARHET ELLER EGNETHET TIL ET BESTEMT FORMÅL. I enkelte land og stater er ikke fraskrivelse av uttrykkelige eller underforståtte garantier tillatt i visse transaksjoner, så denne erklæringen gjelder kanskje ikke for deg. Denne publikasjonen kan inneholde tekniske unøyaktigheter eller typografiske feil. Informasjonen i dette dokumentet endres regelmessig. Slike endringer innarbeides i senere utgaver. Forbedringer eller endringer av de beskrevne produktene eller programmene kan finne sted når som helst. Kommentarer om denne publikasjonen kan sendes til Lexmark International, Inc., Department F95/032-2, 740 West New Circle Road, Lexington, Kentucky 40550, USA. I England og Irland sendes kommentarer til Lexmark International Ltd., Marketing and Services Department, Westhorpe House, Westhorpe, Marlow Bucks SL7 3RQ. Lexmark kan bruke og distribuere all informasjon du sender inn etter eget forgodtbefinnende, uten at det medfører noen forpliktelser overfor deg. I USA kan du kjøpe flere kopier av publikasjoner som er relatert til dette produktet ved å ringe 1-800-553-9727. I Storbritannia og Irland kan du ringe +44 (0)8704 440 044. I andre land kan du kontakte kjøpsstedet. Referanser i denne publikasjonen til produkter, programmer eller tjenester innebærer ikke at produsenten har til hensikt å gjøre disse tilgjengelige i alle land der selskapet driver virksomhet. Eventuelle referanser til et produkt, et program eller en tjeneste er ikke ment å angi eller antyde at bare det produktet, det programmet eller den tjenesten kan brukes. Funksjonelt tilsvarende produkter, programmer eller tjenester som ikke krenker eksisterende immaterielle rettigheter, kan brukes i stedet. Evaluering og verifisering av bruk av andre produkter, programmer eller tjenester enn dem som er uttrykkelig utpekt av produsenten, er brukerens ansvar. Lexmark og Lexmark med rutermerket er varemerker for Lexmark International, Inc., som er registrert i USA og/eller andre land. Copyright 2003 Lexmark International, Inc. Med enerett. RETTIGHETER FOR USAS MYNDIGHETER Denne programvaren og all medfølgende dokumentasjon under denne avtalen er kommersiell dataprogramvare og dokumentasjon som er utviklet utelukkende for private midler.

Innhold Innledning... 1 Hva er nytt i versjon 3.1?... 2 Strekkoder... 2 Tegngjenkjenning (OCR)... 2 Formset... 2 Lokale innstillinger... 2 Skrive ut... 3 Be brukeren om data... 3 Andre oppdateringer... 3 Workflow Composer... 3 Kapittel 1: Grunnlaget...5 Objekter... 5 Deklarere variabler... 6 Flytkontroll... 6 If/Then/Else... 6 Switch/Case... 7 Gjentatte uttrykk... 8 Loop... 8 Repeat... 9 Operatorer... 11 Matematiske... 11 Sammenligning... 12 Boolske... 13 Andre funksjoner... 14 Kortreferanse til objekter ved hjelp av "with"... 14 Avluse et skript... 14 Avbryte et skript på kjøretidspunktet... 15 i

Kapittel 2: Datatypeobjekter...16 Boolske (bool)... 17 Operatorer... 17 Dokument (doc)... 18 Metoder... 18 Operatorer... 21 Heltall (int)... 22 Metoder... 22 Operatorer... 23 Reelle tall (real)... 25 Metoder... 25 Operatorer... 26 Streng ()... 27 Metoder... 27 Operatorer... 31 Avbildning (map)... 34 Metoder... 34 Kapittel 3: Hjelpeobjekter...37 Boolsk tabell (boolarray)... 38 Metoder... 38 Dataset... 39 Metoder... 39 Heltallstabell (intarray)... 41 Metoder... 41 Utskriftsalternativer (printoptions)... 42 Metoder... 42 Alternativer... 42 Reell tabell (realarray)... 46 Metoder... 46 Strengtabell (array)... 47 Metoder... 47 ii

Tekstfil (textfile)... 49 Metoder... 49 Kapittel 4: Systemobjekter...55 Original... 56 Usertime... 56 Confirm... 59 Local... 61 Kapittel 5: Handlingsobjekter...62 BarcodeRead (Strekkode: Les)... 63 BarcodeWrite (Strekkode: Skriv)... 68 ConvertImageFormat (Bilde: Endre format)... 72 ConvertToDocument (Bilde: Konverter til Postscript eller PDF [bilde])... 77 DatabaseNotes (Groupware: Sjekk inn)... 79 Domino.Doc-handlinger... 82 DominoDocCheckIn (EDMS: Sjekk inn)... 83 DominoDocRetrieve (EDMS: Hent)... 88 Koble til Domino.Doc... 93 Navigere i et Domino.Doc-bibliotek... 93 EmailExchange (Email)... 95 EmailNotes (Email)... 98 EmailSMTP (Email)... 101 E-postadresser... 102 Mottakere og sendere... 103 FaxByPrinter (Faks)... 104 FTPget (FTP: Get)... 106 FTPput (FTP:Put)... 108 iii

GroupWise-handlinger... 110 GWMail (Email)... 111 GWDiscuss (Email)... 114 GWCheckIn (Groupware: Sjekk inn)... 117 ImageCombine (Bilde: Sett sammen i dokument)... 120 ImageCrop (Bilde: Beskjær)... 121 ImageDeskew (Bilde: Rettstill)... 123 ImageInvert (Bilde: Inverter)... 124 ImageMerge (Bilde: Overlegg)... 125 ImageRotate (Bilde: Roter)... 129 ImageSeparate (Bilde: Separer i dokument)... 131 ImageText (Bilde: Overlegg tekst)... 132 ImageToHTML (Bilde: Konverter til HTML)... 135 Teksttyper... 138 ImageToPDF (Bilde: Konverter til PDF [søkbar])... 139 Teksttyper... 141 ImageToRTF (Bilde: Konverter til RTF)... 142 Teksttyper... 144 ImageToText (Bilde: Konverter til tekst)... 145 Teksttyper... 148 LaunchExe (Start et annet program)... 149 Kontrollere returverdier... 151 MergeForm (Skjema: Flett inn i PDF)... 152 ODBC-handlinger... 153 Innledning... 153 ODBCWrite (ODBC-database: Skriv)... 154 ODBCRead (ODBC Database: Les)... 158 PrintByDriver (Skriv ut)... 163 iv

PrintForm (Skriv ut)... 164 Skrivertype... 165 PrintJob (Skriv ut)... 167 Utskriftsbekreftelse... 173 PrintURL (Skriv ut)... 174 SaveToFile (Lagre i fil)... 175 SharePoint... 179 SharePointWrite (EDMS: Sjekk inn)... 180 SharePointRead (EDMS: Hent)... 183 Kapittel 6: Ledetekster...189 Tabell-ledetekst (arrayprompt)... 191 Boolsk ledetekst (boolprompt)... 193 Heltallsledetekst (intprompt)... 194 Meldingsledetekst (messageprompt)... 196 Passordledetekst (passwordprompt)... 197 Strengledetekst (prompt)... 198 Tillegg A: ODBC-referanse...200 Programvarekrav og installasjon... 200 Lagre dokumenter i databasen... 201 Sette verdier inn i datokolonner... 201 Tillegg B: Strekkodereferanse...202 Codabar... 202 Code 2 of 5... 203 Code 3 of 9... 203 Code 93... 204 v

Code 128... 204 EAN-8... 205 EAN-13... 205 ITF... 206 Patch... 206 PDF-417... 206 UCC 128... 207 UPC-A... 207 UPC-E... 208 vi

Innledning Denne boken er en teknisk referanse for LDDScript 3.1, som er skriptspråket for produktsuiten Lexmark Document Solutions. Det forutsettes at du allerede har en viss kjennskap til dette språket. Hvis ikke, bør du først lese boken "Grunnleggende skriptutvikling" som ble installert sammen med dette produktet. Skriptreferansen er organisert slik: Kapittel 1, "Grunnlaget" - kort oversikt over hovedkomponentene i LDDScript. Hvis du vil ha detaljerte eksempler, kan du se boken "Grunnelggende skriptutvikling". Kapittel 2, "Datatypeobjekter" - informasjon om kompatible datatyper. Kapittel 3, "Hjelpeobjekter" - informasjon om objektene som brukes til å utføre vanlige operasjoner. Kapittel 4, "Systemobjekter" - informasjon om objektene som sender data med en jobb og gir tilbakemeldinger til sluttbrukeren. Kapittel 5, "Handlingsobjekter" - informasjon om objektene som utfører selve behandlingen av dokumentene som skal rutes, lagres i en database, skrives ut, osv. Kapittel 6, "Ledetekster" - informasjon om syntaksen og objektene som ber brukeren om data. Tillegg A, "ODBC-referanse" - informasjon om kommunikasjon med databaser fra et skript. Tillegg B, "Strekkodereferanse" - informasjon om de uilike strekkodene som støttes av LDDScript. 1

Hva er nytt i versjon 3.1? LDDScript 3.1 viderefører den samme syntaksen og de samme komponentene som med Lexmark Document Distributor versjon 2.0. Produktene som bruker skriptspråket er blitt utvidet, og inkluderer nå: Lexmark Document Distributor Lexmark Document Producer Lexmark Document Portal Skriptspråket fungerer med alle de tre produktene, og gir deg mulighet til å automatisere arbeidsflyten, produsere serverbaserte skjemaer og skrive ut tomme eller forhåndsutfylte skjemaer. Produktene kan fungere uavhengig av hverandre, eller de kan integreres for å skape en komplett dokumentløsning. Strekkoder Støtten for strekkoder i LDDScript er kraftig utvidet. Dette betyr at du kan bruke flere strekkodetyper og ha større kontroll over de kompatible strekkodene. I tillegg har LDDScript nå støtte for generering av strekkoder, slik at du kan legge inn strekkoder på innskannede dokumenter. Den tidligere ConvertBarcodeToText-handlingen er blitt erstattet av handlingene BarcodeRead og BarcodeWrite. Tegngjenkjenning (OCR) Funksjonaliteten for tegngjenkjenning i LDDScript er blitt vesentlig forbedret, og gir nå bedre gjenkjenningsresultater og bedre bevaring av dokumentets layout. Nå kan du velge mellom formatene HTML, RTF (rikt tekstformat, som kan brukes av de fleste tekstbehandlingsprogrammer), søkbart PDF-format og ren tekst. Den tidligere ConvertToText-handlingen er blitt erstattet av handlingene ImageToHTML, ImageToPDF, ImageToRTF og ImageToText. Formset Med Lexmark Document Producer kan ASCII- og RDI-utskriftsstrømmer dirigeres til og mottas av Document Server. Ved å bruke handlingene MergeForm og PrintForm, kan du flette dataene sammen med et PDF-skjema, og skrive ut resultatdokumentet direkte på en nettverksskriver. Alternativt, ved å bruke andre handlinger i LDDScript, kan de flettede resulat-formsetene arkiveres, fakses, osv. I tillegg kan brukere av Document Portal bli bedt om å angi informasjon, slik at formset som tidligere måtte fylles ut for hånd, nå kan skrives ut, ferdig forhåndsutfylt med den aktuelle informasjonen. Lokale innstillinger Når du skriver et skript, er det noen ganger ønskelig at administratoren kan konfigurere noen av innstillingene uten å måtte gjøre endringer i skriptet. En av nyhetene i denne versjonen er "lokale innstillinger". Skriptutvikleren kan definere lokale innstillinger (for eksempel skriverens IP-adresse, faksnumre, e-postservere, og så videre), og administratoren kan deretter endre slike innstillinger i Server Manager. Dette betyr at skriptutvikleren ikke trenger å kjenne til de tekniske detaljene for miljøet der skriptet skal kjøres, og administratoren trenger ikke å lære seg skriptspråket. Denne funksjonen erstatter kompileringsledetekstene (#prompt) som ble innført i LDDScript 2.0. 2

Skrive ut Alternativene for jobbstyring som er tilgjengelige ved utskrift av dokumenter, er blitt utvidet og inneholder nå flere alternativer for flere dokumenttyper. Nå kan du sende bildefiler som PDF, TIFF og JPEG direkte til skrivere som er utstyrt med ImageQuick-tillegget, og likevel angi utskriftsalternativer som dupleks, stifting, osv. I tillegg kan du sende tekstfiler og PostScript-filer til en hvilken som helst nettverksskriver, og ha flere muligheter mht. ferdiggjøring. De tidligere handlingene PrintIP, PrintASCII, PrintTIF og PrintPDF er blitt erstattet av PrintJob-handlingen. Be brukeren om data Muligheten for å be brukeren om data ved en multifunksjonsmaskin (MFP) eller arbeidsstasjon har gjennomgått en fullstendig overhaling i denne versjonen. I tillegg til et statisk sett med spørsmål, er det nå mulig å lage et dynamisk sett med spørsmål som endres basert på sluttbrukerens påloggingsinformasjon, brukerens svar på tidligere spørsmål, osv. Nå er det også mulig å verifisere svarene før en jobb sendes, eller hente en liste over mulige svar fra en database eller en annen kilde, og vise disse alternativene til brukeren. Med denne nye mekanismen kan du utvikle kraftige og fleksible skript, og automatisere arbeidsflyten på en mer effektiv måte. Andre oppdateringer Følgende tillegg og forbedringer er også tilgjengelig i denne versjonen: Tabeller (array) - lese/skrivetabeller er lagt til (se array, intarray, realarray, boolarray). ConvertImageFormat - du har nå mulighet til å konvertere fra PDF til andre bildeformater som TIFF og JPEG. Dokumenter - du kan nå opprette midlertidige filer som slettes automatisk når et skript er ferdig. ImageMerge - du kan nå angi generiske posisjoner (f.eks. Top Left) i stedet for bildepunktkoordinatene. Lotus Notes - det er nå støtte for EmailNotes og DatabaseNotes for ID-filer med passord. Avbildninger (maps) - du kan du opprette en streng-til-streng-avbildning. SaveToFile - du har nå mulighet til å opprette en katalog hvis den ikke finnes. Strenger - du kan nå søke/erstatte i en streng. Workflow Composer I tillegg til de nye og forbedrede mulighetene i skriptspråket, er sluttbrukerprogrammene også oppdatert i denne versjonen. Den tidligere Document Server Admin er blitt erstattet av Server Manager og Workflow Composer. Server Manager brukes til å behandle dokumentservere (Document Servers), multifunksjonsmaskiner (MFPer) og skript. Workflow Composer brukes til utvikling og vedlikehold av skript. Noen av de nye funksjonene i Workflow Composer er: Utløpsdatoer - skriptet slutter å fungere etter en bestemt dato. Hjelp - forbedret hjelpefunksjon gir rask tilgang til skriptreferansen. Passord - du kan passordbeskytte skript for å forhindre uautoriserte endringer. 3

Hurtigfyll - gir mulighet for å lagre og gjenbruke mye brukte operasjoner eller handlinger i skript. Skriptveiviser - forbedret grensesnitt gjør det raskere å opprette skript. Syntaksutheving - bedre leservennlighet og oversikt ved at nøkkelord og strenger kan vises i forskjellige farger. Hvis du vil vite mer om bruk av Workflow Composer, kan du se i hjelpefunksjonen for produktet. 4

1 Grunnlaget Objekter Et objekt er den grunnleggende byggesteinen i LDDScript. Et objekt inneholder egenskaper og metoder. En egenskap er en av de grunnleggende datatypeobjektene, for eksempel streng () eller heltall (integer). En egenskap kan ha ulike verdier, avhengig av hvordan objektet opererer. En metode er en funksjon som kalles opp for å operere på dataene. En metode kan motta parametre og returnere en verdi. Parametrene og returverdien er datatype- eller hjelpeobjekter. Punktumnotasjon brukes for å få tilgang til egenskapene og metodene for et objekt. Slik angir du verdien for en egenskap: Objektnavn.egenskapsnavn = verdi Slik kaller du opp en metode: Objektnavn.Metodenavn() Objektnavn.Metodenavn(param1, param2) returverdi = Objektnavn.Metodenavn(param1) LDDScript har støtte for fem objekttyper: Datatype (Data Type) - de mest grunnleggende objektene (alle egenskaper og de fleste variabler er av denne typen). Hjelp (Helper) - gir deg en enkel metode for å utføre noen vanlige operasjoner. System - behandler ikke dokumenter, men brukes til å motta inndata og gi tilbakemeldinger til brukeren. Handling (Action) - behandler dokumenter, og utfører blant annet arkivering, ruting og distribusjon. Resten av kapitlene i denne boken inneholder referanser for hver av objekttypene. 5

Deklarere variabler Alle variabler må deklareres før de kan brukes. Variabler kan ikke deklareres i "with"-blokker eller i logiske blokker som if/then eller løkker. Når du skal deklarere en variabel, angir du variabelens objekttype og navn. Eksempel: tekst int tall Du må følge visse regler når du gir navn til variabler: Navnene kan bare inneholde bokstaver, tall og understrek-tegn. Det første tegnet i navnet må være en bokstav. Navnet må være unikt innenfor skriptet. Det skilles ikke mellom store og små bokstaver i variabelnavn, slik at "Navn", "NAVN" og "navn" betraktes som det samme navnet. Navnet kan ikke være et reservert ord (et ord som har en spesiell betydning i skriptkompilatoren). Flytkontroll For at du skal kunne kontrollere utførelsen av skriptuttrykk, er det nødvendig å ha en eller annen form for flytkontroll-logikk. Skriptuttrykk kan utføres på tre måter: sekvensielt, selektivt eller gjentatt. Når det ikke brukes noen form for flytkontroll-logikk, utføres uttrykkene i den rekkefølgen de er oppført i skriptet. Hvis du vil ha selektiv utførelse av visse skriptuttrykk, kan du bruke if/then/else- eller switch/ case-uttrykk. Hvis du vil utføre skriptuttrykk gjentatte ganger, kan du bruke loop- og repeat-uttrykk. Disse uttrykkene for flytkontroll er omtalt i de neste avsnittene. If/Then/Else Den vanligste typen flytkontroll er muligheten for å utføre et uttrykk hvis en bestemt betingelse er sann. Denne muligheten er innebygd i Document Server gjennom if/then/else-komponentene. Det grunnleggende formatet er: if (bool-uttrykk) then uttrykk1 uttrykkn endif uttrykk1 til uttrykkn utføres bare hvis verdien av det boolske uttrykket i parenteser er TRUE. Noen ganger er det også behov for å evaluere ett sett med uttrykk hvis en betingelse er sann (TRUE), og et annet sett hvis den er usann (FALSE). Dette kan oppnås ved å bruke else-komponenten: if (bool-uttrykk) then uttrykka uttrykkc else uttrykkx uttrykkz endif uttrykka til uttrykkc utføres hvis verdien av det boolske uttrykket i parenteser er TRUE. I motsatt fall utføres uttrykkx til uttrykkz. 6

Switch/Case Noen ganger kan du ha mer enn én betingelse du vil kontrollere. Du kan gjøre det ved hjelp av flere If/Then-uttrykk. Med Switch/Case-uttrykket blir det enklere å gjøre flere sammenligninger: Switch med heltall Switch med streng switch (intvar) switch (var) case heltall1 case "streng1" uttrykka uttrykka uttrykkb uttrykkb case heltall2 case "streng2" uttrykkc uttrykkc uttrykkd uttrykkd default default uttrykke uttrykke uttrykkf uttrykkf endswitch endswitch Du kan bruke heltalls- eller strengverdier med switch/case-uttrykket. Den case-blokken som stemmer med variabelens verdi, blir utført. Hver case-blokk kan inneholde flere uttrykk, men bare én case-blokk blir utført. Hvis verdien til switch-variabelen ikke stemmer med noen av case-betingelsene, utføres default-blokken. Default-blokken er ikke obligatorisk. Hvis du vil bruke en default-blokk, må den imidlertid være den siste blokken. Eksempel på switch Multifunksjonsmaskiner (MFPer) har mulighet til å knytte jobber til kontoer, og "bokføre" eller statistikkføre jobbaktivitet. Når denne funksjonen er aktivert, må brukerne angi et kontonummer for å få tilgang til en profil. For dette eksemplet angir brukerne et avdelingsnummer når de bruker profiler. Dette eksemplet bruker et switch/case-uttrykk til å kontrollere avdelingsnummeret. CustomSubject // Bruk kontonummeret som et heltall int DeptNumber = original.useracct.asint() switch (DeptNumber) case 35 CustomSubject = "Document from Human Resources" case 41 CustomSubject = "Document from Legal Department" case 15 CustomSubject = "Document from Shipping Department" default CustomSubject = "Document from FooBar Company" endswitch with EmailSMTP.Server="mailserver.com".To="barbarab@foobar.com".From="LDDTrain@lexmark.com".Subject=CustomSubject.Message="Please read.".characterset=ldd_smtpcharset_us.attachments=original.document.go() endwith 7

Gjentatte uttrykk Hvert uttrykk i et skript utføres bare én gang. Ved å bruke repeat- og loop-uttrykkene kan du utføre den samme blokken med uttrykk flere ganger. Loop Bruk loop-uttrykket når du vil gjenta et sett med uttrykk et kjent antall ganger. Syntaks: loop (intteller from istart to islutt) uttrykk1 uttrykkn endloop der: intteller er en tidligere deklarert int-variabel istart er den heltallsverdien som int-variabelen intteller får når løkken starter islutt er en heltallsverdi som definerer maksimalverdien for intteller Ved å bruke en int-variabel som telleverk, gjentas løkken så mange ganger som angitt av verdiene istart/islutt. Du kan ha så mange uttrykk som du ønsker i loop-blokken. Loop-blokken avsluttes med endloop-uttrykket. Når løkken starter, får tellervariabelen intteller verdien som er angitt av istart. For hver gang loop-blokken utføres, øker verdien av intteller med 1. Dette fortsetter inntil verdien av intteller er større enn verdien av islutt. Det betyr at en løkke fra 1 til 10 gjentas inntil tellervariabelen har verdien 11. Verdien av istart må være mindre enn verdien av islutt. Heltallsvariabelen som brukes som tellervariabel må deklareres før den kan brukes i loop-uttrykket. Eksempel: Send et skannet dokument via e-post til ti kundeservicerepresentanter. I dette skriptet angis de EmailSMTP-egenskapene som er felles før e-postene sendes i loop-blokken. EmailAdd int LoopCount // Angi felles egenskaper for e-postene. with EmailSMTP.Subject="Customer Complaint".Server="mail.server.com".From="customer_service@foobar.com".Message="Please review this complaint".attachments=original.document.characterset=ldd_smtpcharset_us endwith loop (LoopCount from 1 to 10) EmailSMTP.To="CustRep" + LoopCount.AsString() + "@foobar.com" EmailSMTP.Go() endloop 8

Repeat Med repeat-uttrykket kan du utføre en blokk med uttrykk gjentatte ganger inntil et uttrykk blir sant. repeat (until bool-uttrykk) uttrykk1 uttrykkn endrepeat Repeat-uttrykket utfører blokken med uttrykk inntil verdien for det boolske uttrykket er TRUE. Du kan ha så mange uttrykk som du ønsker i repeat-blokken. Uttrykket endrepeat avslutter repeat-blokken. Hvis verdien av det boolske uttrykket er TRUE første gang det evalueres, vil løkken ikke bli utført. Eksempel: Dette skriptet bruker optisk tegngjenkjenning (OCR) til å kontrollere om noen av dokumentene som skannes inn av sluttbrukerne er konfidensielle. Hvis et dokument er konfidensielt, vil det ikke bli sendt via e-post. Det skannede bildet lagres i en fil, og en advarsel sendes til brukeren som har skannet inn det konfidensielle dokumentet. with ImageToText.input=original.document.TextType=LDD_TEXTTYPE_NORMAL.Language=LDD_LANG_ENGLISH.AllPages=TRUE.Go() endwith textfile tf OneLine, Submitter // Åpne resultatet av OCR-handlingen tf.open(imagetotext.output) bool bconfdoc = FALSE int icount, iend icount =1 iend = tf.getnumberlines() Submitter = original.username+ "@lexmark.com" // Kontroller hver linje for ordet "Confidential" repeat (until (bconfdoc OR (icount>=iend))) OneLine = tf.readline() if (OneLine.Contains("Confidential")) then bconfdoc = TRUE endif Count.Add(1) endrepeat 9

// Hvis det er et konfidensielt dokument, så lagre det og send en advarsel 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="Invalid Email Rejected".Message="Cannot email a confidential document".characterset=ldd_smtpcharset_us.go() endwith else with EmailSMTP.Server="mail.server.com".To="Receiver@abcxyz.com".From=Submitter.Subject="Scanned Document".Message="Here is the document you requested".characterset=ldd_smtpcharset_us.attachments=original.document.go() endwith endif 10

Operatorer Matematiske Disse operatorene brukes til å angi eller endre verdien til en variabel eller egenskap. Operator Symbol Beskrivelse Addisjon + For heltallsobjekter (int) og reelle objekter (real) adderes tallene på begge sider av "+" og den nye verdien returneres. For strengobjekter () har denne en lignende effekt som Concatenate-metoden. Den setter strengen til høyre sammen med strengen til venstre, og returnerer den nye strengen. For dokumentobjekter settes dokumentet til høyre sammen med dokumentet til venstre, og det nye dokumentet returneres. I alle tilfeller forblir variablene på begge sider uendret. Subtraksjon - For heltallsobjekter (int) og reelle objekter (real) subtraheres tallet til høyre fra tallet til venstre, og den nye verdien returneres. Variablene på hver side forblir uendret. Denne operatoren er ikke gyldig for andre objekttyper. Multiplikasjon * For heltallsobjekter (int) og reelle objekter (real) multipliseres tallene på begge sider av " * " og den nye verdien returneres. Variablene på hver side forblir uendret. Denne operatoren er ikke gyldig for andre objekttyper. Divisjon \ For heltallsobjekter (int) og reelle objekter (real) divideres tallet til venstre på tallet til høyre, og den nye verdien returneres. Variablene på hver side forblir uendret. Denne operatoren er ikke gyldig for andre objekttyper. Modulus % For heltallsobjekter (int) divideres tallet til venstre på tallet til høyre, og restverdien returneres. Variablene på hver side forblir uendret. Denne operatoren er ikke gyldig for andre objekttyper. Eksempel: 5/2 returnerer 1, siden 5 dividert med 2 er lik 2 og en rest på 1. 11

Sammenligning Disse operatorene brukes til å sammenligne verdiene av variabler eller egenskaper av samme type. Resultatet av sammenligningen er en boolsk verdi (TRUE eller FALSE). Du kan velge mellom symbolene som er oppført for en gitt operator. Operator Symboler Beskrivelse Mindre enn <, LT For heltall (int) og reelle tall (real) returneres TRUE hvis verdien på venstre side er mindre enn verdien på høyre side. For strenger () returneres TRUE hvis verdien på venstre side kommer før i alfabetet enn verdien på høyre side (inkludert små/store bokstaver). I motsatt fall returneres FALSE. Større enn >, GT For heltall (int) og reelle tall (real) returneres TRUE hvis verdien på venstre side er større enn verdien på høyre side. For strenger () returneres TRUE hvis verdien på venstre side kommer lenger bak i alfabetet enn verdien på høyre side (inkludert små/store bokstaver). I motsatt fall returneres FALSE. Mindre enn eller lik <=, LE For heltall (int) og reelle tall (real) returneres TRUE hvis verdien på venstre side er mindre enn eller lik verdien på høyre side. For strenger () returneres TRUE hvis verdien på venstre side kommer før i alfabetet enn verdien på høyre side (inkludert små/store bokstaver), eller hvis den er på samme plass. I motsatt fall returneres FALSE. Større enn eller lik >=, GE For heltall (int) og reelle tall (real) returneres TRUE hvis verdien på venstre side er større enn eller lik verdien på høyre side. For strenger () returneres TRUE hvis verdien på venstre side kommer lenger bak i alfabetet enn verdien på høyre side (inkludert små/store bokstaver), eller hvis den er på samme plass. I motsatt fall returneres FALSE. Lik ==, EQ (dobbelt likhetstegn) For heltall (int) og reelle tall (real) returneres TRUE hvis verdien på venstre side er lik verdien på høyre side. For strenger () returneres TRUE hvis verdien på venstre side er nøyaktig lik verdien på høyre side (inkludert små/store bokstaver). I motsatt fall returneres FALSE. Ikke lik!=, <>, NE For heltall (int) og reelle tall (real) returneres TRUE hvis verdien på venstre side ikke er lik verdien på høyre side. For strenger () returneres TRUE hvis verdien på venstre side ikke er nøyaktig lik verdien på høyre side (inkludert små/store bokstaver). I motsatt fall returneres FALSE. 12

Boolske Disse operatorene kan brukes til å bygge opp komplekse boolske uttrykk. Hver verdi på begge sider av operatoren må være en boolsk verdi (bool). Resultatet av den boolske operatoren er en boolsk verdi (TRUE eller FALSE). Du kan velge mellom symbolene som er oppført for en gitt operator. Operator Symboler Beskrivelse Og &, &&, AND Bruker den logiske OG-operatoren på to boolske verdier og returnerer resultatet. Eller,, OR Bruker den logiske ELLER-operatoren på to boolske verdier og returnerer resultatet. Negasjon!, NOT Bruker den logiske negasjonsoperatoren på to boolske verdier og returnerer resultatet. Tabellen under viser resultatet av AND- og OR-metoden ved å bruke: 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 Tabellen under viser resultatet av NOT-metoden ved å bruke: NOT bool1 bool 1 TRUE FALSE NOT FALSE TRUE 13

Andre funksjoner Kortreferanse til objekter ved hjelp av "with" Hvis du har en kodeblokk som arbeider med det samme objektet, kan det være tungvint å skrive det samme objektnavnet om igjen flere ganger. Dette kan du unngå ved å bruke with-uttrykket. Det generelle formatet er: with objektnavn.egenskap = verdi.egenskap = verdi.metode() endwith Du angir objektnavnet som skal brukes i with-uttrykket. Deretter kan du referere til enhver egenskap og metode for objektet ved å bruke "punktum" etterfulgt av egenskapens eller metodens navn. Dette brukes mest med handlingsobjekter. Avluse et skript Når et skript kjøres, kan handlingsobjektene skrive feilmeldinger og advarsler til loggen. Du kan også skrive dine egne meldinger til loggen for å gjøre det enklere å avluse skriptet. La oss for eksempel anta at du vil vite verdien av en variabel eller returverdien fra en metode. Bruk "debug"-uttrykket til å skrive meldingen til loggen. debug (msg) msg kan være en strengvariabel, en streng i anførselstegn eller et numerisk uttrykk. Nedenfor finner du noen eksempler: int index= 3 ErrorMsg = "Kunne ikke skrives ut" debug (index) debug (ErrorMsg) debug ("Jobb mottatt fra " + original.username) Hvert av disse uttrykkene skriver en melding til serverloggen. 14

Avbryte et skript på kjøretidspunktet Hvis du oppdager en feiltilstand under kjøringen av et skript, kan det være nyttig å ha en måte å stoppe skriptbehandlingen på. Du kan bruke exit-funksjonen til å oppnå dette: void exit( msg) Exit-funksjonen stopper skriptutførelsen. Den gir deg mulighet til å sende en streng som vises i serverens logg, på bekreftelsessiden eller i bekreftelsesdialogboksen. 15

2 Datatypeobjekter Alle data som brukes av Workflow Composer kan grupperes i seks ulike datatyper: Boolske (bool) Dokument (doc) Heltall (int) Avbildning (map) Reelle tall (real) Streng () Alle objektegenskaper er datatypeobjekter. I tillegg er de fleste variabler av denne typen. De neste sidene omhandler hvert av disse objektene. 16

Boolske (bool) Boolske objekter brukes for verdier som er logisk sanne eller usanne. De eneste gyldige verdiene for slike variabler er de reserverte ordene TRUE og FALSE. Dette objektet har ingen egenskaper. Følgende operatorer støttes: Operatorer Symbol Beskrivelse ==, EQ Lik <> Ikke lik &, AND Og, OR Eller!, NOT Negasjon = Tilordning 17

Dokument (doc) Dokumentobjektet brukes til å oppbevare en samling av bilder, tekst og andre formaterte filer. Alle filene i et dokumentobjekt trenger ikke å være av samme type - det kan inneholde ulike filer av forskjellige typer. En egenskap eller variabel er av denne typen hvis den deklareres som doc. Dokumentobjektet har ingen egenskaper. Metoder Syntaks bool AddDocument(doc dok1) bool AddFile( bane [, type]) bool SetFileLabel(int filnr, etikett) doc Copy() Beskrivelse Legger til et eksisterende dokument på slutten av dette dokumentet. dok1 - dokumentet som skal legges til En bool-verdi som angir om metoden var vellykket eller mislykket. Legger til en eksisterende fil på slutten av dette dokumentet. Denne metoden vil mislykkes hvis filen ikke eksisterer eller hvis den ikke kan leses. bane - fullt kvalifisert bane på serveren til filen som skal legges til type - hvis type ikke er angitt, vil filtypen i henhold til navnet på filen som legges til bli brukt, og hvis type er angitt, brukes den angitte verdien En bool-verdi som angir om metoden var vellykket eller mislykket. Angir etiketten for den angitte filen. Denne etiketten brukes som filnavn (minus filtypen) for å gi navn til vedlegg i e-poster eller databaser. Denne metoden mislykkes hvis filnr er ugyldig. filnr - filens indeks (filindekser starter med 1) etikett - etiketten som skal angis for den aktuelle filen (må følge reglene for filnavn siden den brukes som filnavn) En bool-verdi som angir om metoden var vellykket eller mislykket. Kopierer alle filene i dette dokumentet til et nytt dokument. Denne metoden lager en kopi av de faktiske filene, slik at det nå finnes to av dem. På dennen måten kan du gjøre endringer i ett av settene med filer uten at det påvirker det andre settet. Ingen Et dokument (doc) som inneholder en kopi av alle filene. 18

Syntaks doc CopyRange(int start, int slutt) doc GetFile(int filnr) doc GetFileRange(int start, int slutt) int GetDocumentSize() int GetFileSize(int filnr) Beskrivelse Kopierer de angitte filene i dette dokumentet til et nytt dokument. Denne metoden lager en kopi av de faktiske filene, slik at det nå finnes to av dem. På dennen måten kan du gjøre endringer i ett av settene med filer uten at det påvirker det andre settet. start - indeks for den første filen i dokumentet som skal kopieres (filindeksene starter på 1) slutt - indeks for den siste filen i dokumentet som skal kopieres Et dokument (doc) som inneholder en kopi av filene i det angitte området. Returnerer en referanse til den angitte filen. Dokumentet som returneres er ikke en kopi, så eventuelle endringer som gjøres i denne filen vil også påvirke originalfilen. Et tomt dokument returneres hvis filnr er ugyldig. filnr - indeks for filen som skal hentes (filindekser starter med 1) Et dokument (doc) som inneholder en referanse til den angitte filen. Returnerer en referanse til de angitte filene. Dokumentet som returneres er ikke en kopi, så eventuelle endringer som gjøres i disse filene vil også påvirke originalfilene. start - indeks for den første filen som skal hentes (filindekser starter med 1) slutt - indeks for den siste filen som skal hentes Et dokument (doc) som inneholder en referanse til de angitte filene. Returnerer den samlede størrelsen (i byte) av alle filene i dette dokumentet. Størrelsen null (0) returneres hvis det ikke er noen filer i dokumentet. Ingen Et heltall (int) med totalt antall byte i dette dokumentet. Returnerer størrelsen (i byte) på den angitte filen. Verdien null (0) returneres hvis filnr er ugyldig. filnr - indeks for filen som størrelsen skal hentes for (filindekser starter med 1) Et heltall (int) med størrelsen (i byte) på den angitte filen. 19

Syntaks int GetNumberFiles() GetDocumentType() GetFileLabel(int filnr) GetFileType(int filnr) void AddTempFile( typ) Beskrivelse Returnerer antall separate filer i dette dokumentet. Dette returnerer ikke antall sider. Ingen Et heltall (int) med antall filer i dette dokumentet. Returnerer typen (filformat eller filtype) for dokumentet. Hvis alle filene i dokumentet er av samme type, er dette dokumenttypen. Hvis ikke, er verdien en tom streng. Ingen En streng som inneholder dokumenttypen (filformat eller filtype) for dokumentet. Returnerer etiketten for den angitte filen. Etiketten brukes som filnavnet (minus filtypen) for vedlegg i e-poster eller databaser. En tom streng returneres hvis filnr er ugyldig. filnr - indeks for filetiketten som skal hentes (filindekser starter med 1) En streng som inneholder etiketten for den angitte filen. Returnerer typen (filformat eller filtype) for den angitte filen. En tom streng returneres hvis filnr er ugyldig. filnr - indeks for filtypen som skal hentes (filindekser starter med 1) En streng som inneholder verdien for filtypen for den angitte filen. Legger til en midlertidig fil i dokumentet. Filen vil bli slettet når skriptet avsluttes. typ - filtypen som skal gis til den midlertidige filen Ingen 20

Syntaks void Clear() void SetFileLabelAll( etikett) Beskrivelse Fjerner alle filer fra dokumentet. Ingen Ingen Angir etikettene for alle filene i dette dokumentet. Denne etiketten brukes som filnavn (minus filtypen) for å gi navn til vedlegg i e-poster eller databaser. etikett - etiketten som skal angis for alle filene (må følge reglene for filnavn siden den brukes som filnavn) Ingen Merk: For variabler av typen doc, er tilordning av variabelen bare en referanse. Med andre ord vil begge variablene peke på de samme "fysiske" filene som dokumentet består av. Når du gjør en endring i én av filene, vil den filen bli endret i begge dokumentene. Hvis du vil generere forskjellige kopier av filene til å arbeide med, må du bruke Copy- eller CopyRange-metoden for doc-objektet. Operatorer Symbol Beskrivelse + Legg til (samme som å kalle opp AddDocument) [] Indeks (samme som å kalle opp GetFile med den ene filen) = Tilordning (samme som å kalle opp GetFileRange med alle filene) 21

Heltall (int) Heltallsobjektet brukes for verdier som er tall uten desimaler. En egenskap eller variabel er av denne typen hvis den deklareres som int. Dette objektet har ingen egenskaper. Metoder Syntaks real AsReal() AsString() void Add(int tall) void Divide(int tall) Beskrivelse Konverterer og returnerer verdien av dette objektet som et real-objekt. Verdien for objektet endres ikke. Ingen Et real-objekt med verdien til dette objektet. Returnerer verdien av dette objektet som en streng (-objekt). Dette brukes ofte når verdien av heltallet skal brukes som en del av en streng. Ingen Et -objekt med verdien til dette objektet. Adderer tall til den aktuelle verdien. Verdien for dette objektet endres. tall - heltall som skal legges til den aktuelle verdien Ingen Dividerer den aktuelle verdien med tall. Verdien for dette objektet endres. tall - heltall som den aktuelle verdien skal divideres med Ingen 22

Syntaks void Mod(int tall) void Multiply(int tall) Beskrivelse Dividerer den aktuelle verdien med tall og setter verdien for dette objektet til restverdien etter (heltalls)divisjonen. tall - heltall som den aktuelle verdien skal divideres med Ingen Multipliserer den aktuelle verdien med tall. Verdien for dette objektet endres. tall - heltall som den aktuelle verdien skal multipliseres med Ingen Operatorer Symbol Beskrivelse <, LT Mindre enn >, GT Større enn <=, LE Mindre enn eller lik >=, GE Større enn eller lik ==, EQ Lik <>, NE,!= Ikke lik + Adder - Subtraher * Multipliser / Divider % Modulus (rest etter heltallsdivisjon) = Tilordning 23

Eksempler Uttrykk Verdi av X Kommentar int x 0 Deklarerer variabelen x = 5 5 Tilordner verdien 5 til x x.mod(2) 1 5/2 er lik 2 pluss restverdien 1 x.add(9) 10 x.subtract(2) 8 x.multiply(2) 16 x.divide(8) 2 x.asreal() 2 Returnerer 2.0 x.asstring() 2 Returnerer "2" Merk: De vanlige matematiske operatorene (+, -, *, /) kan også brukes. 24

Reelle tall (real) Reelle tall-objekter brukes for verdier som er tall med desimaler. En egenskap eller variabel er av denne typen hvis den deklareres som real. Dette objektet har ingen egenskaper. Metoder Syntaks int AsInt () AsString() void Add(real tall) void Divide(real tall) void Multiply(real tall) Beskrivelse Konverterer og returnerer verdien av dette objektet som et int-objekt. Verdien blir ikke avrundet, og eventuelle tall etter desimalpunktet blir avkortet. Verdien for objektet endres ikke. Ingen Et int-objekt med verdien til dette objektet. Returnerer verdien av dette objektet som en streng (-objekt). Dette brukes ofte når verdien av det reelle tallet skal brukes som en del av en streng. Ingen Et -objekt med verdien til dette objektet. Adderer tall til den aktuelle verdien. Verdien for dette objektet endres. tall - reelt tall som skal legges til den aktuelle verdien Ingen Dividerer den aktuelle verdien med tall. Verdien for dette objektet endres. tall - reelt tall som den aktuelle verdien skal divideres med Ingen Multipliserer den aktuelle verdien med tall. Verdien for dette objektet endres. tall - reelt tall som den aktuelle verdien skal multipliseres med Ingen 25

Operatorer Symbol Beskrivelse <, LT Mindre enn >, GT Større enn <=, LE Mindre enn eller lik >=, GE Større enn eller lik ==, EQ Lik <>, NE,!= Ikke lik + Adder - Subtraher * Multipliser / Divider = Tilordning 26

Streng () Strengobjektet brukes for verdier som er tekst. En egenskap eller variabel er av denne typen hvis den deklareres som. Dette objektet har ingen egenskaper. Metoder Syntaks bool Compare( streng1) bool CompareNoCase( streng1) doc AsDoc() int AsInt () Beskrivelse Sammenligner den aktuelle verdien av denne strengen med den angitte strengen. Denne sammenligningen skiller mellom store og små bokstaver. streng1 - strengen som den aktuelle verdien av denne strengen skal sammenlignes med Et bool-objekt med verdien TRUE hvis strengene er identiske (også mht. store og små bokstaver), og med verdien FALSE hvis de ikke er det. Sammenligner den aktuelle verdien av denne strengen med den angitte strengen. Denne sammenligningen skiller ikke mellom store og små bokstaver. streng1 - strengen som den aktuelle verdien av denne strengen skal sammenlignes med Et bool-objekt med verdien TRUE hvis strengene er identiske (ikke nødvendigvis mht. store og små bokstaver), og med verdien FALSE hvis de ikke er det. Returnerer verdien av dette objektet som et dokument (doc-objekt). Dokumentet vil ha én fil som inneholder teksten i den aktuelle strengen. Ingen Et doc-objekt med tekst som er lik den aktuelle verdien av denne strengen. Returnerer verdien av dette objektet som et heltall (int-objekt). Den aktuelle verdien leses frem til det første ikke-numeriske tegnet. Verdien som returneres er null (0) hvis strengen er tom eller hvis det første tegnet i strengen er ikke-numerisk. Verdien for strengen endres ikke. Ingen Et int-objekt med den aktuelle verdien av strengen konvertert til heltall. 27

Syntaks int Find( delstreng, int start) int Length() int Replace( gammel, ny, int start, bool bokstavstr, bool heleord) int ReplaceAll( gammel, ny, bool bokstavstr, bool heleord) Beskrivelse Søker i den aktuelle strengen etter første forekomst av delstreng. delstreng - delstrengen du vil søke etter start - indeksen i strengen der søket skal starte (verdien 1 angir at du vil starte i begynnelsen av strengen) Et int-objekt som angir startposisjonen for delstrengen i strengen (0 hvis delstrengen ikke blir funnet). Returnerer antall tegn i strengen. Ingen Et int-objekt som inneholder antall tegn i strengen. Søker i den aktuelle strengen, med start i den angitte indeksen, og erstatter første forekomst av den gamle strengen med den nye strengen. Du kan velge om søket skal skille mellom store og små bokstaver, og om det bare skal finne hele ord. gammel - strengen du vil søke etter ny - strengen som skal erstatte den gamle strengen bokstavstr - angir om søket skal skille mellom store og små bokstaver heleord - angir om søket bare skal finne hele ord, og ikke deler av ord Et heltall som angir indeksen for det første tegnet i strengen som er lik søkestrengen. 0 returneres hvis det ikke er noen treff. Søker i den aktuelle strengen, og erstatter alle forekomster av den gamle strengen med den nye strengen. Du kan velge om søket skal skille mellom store og små bokstaver, og om det bare skal finne hele ord. gammel - strengen du vil søke etter ny - strengen som skal erstatte den gamle strengen bokstavstr - angir om søket skal skille mellom store og små bokstaver heleord - angir om søket bare skal finne hele ord, og ikke deler av ord Et heltall som angir antall erstatninger som er gjort. 0 returneres hvis det ikke er noen treff. 28

Syntaks real AsReal() AsAlphaNumeric() AsLower() AsUpper () Left(int ant) Beskrivelse Returnerer verdien av dette objektet som et reelt tall (real-objekt). Den aktuelle verdien leses frem til det første ikke-numeriske tegnet. Numeriske tegn for reelle tall inkluderer desimalpunktet. Verdien som returneres er null (0.0) hvis strengen er tom eller hvis det første tegnet i strengen er ikke-numerisk. Verdien for strengen endres ikke. Ingen Et real-objekt med verdien av strengen som et reelt tall. Konverterer og returnerer den aktuelle verdien av strengen som en streng der bare de alfabetiske og numeriske tegnene er igjen. Alle andre tegn er fjernet. Verdien for strengen endres ikke. Ingen En streng som bare inneholder de alfabetiske og numeriske tegnene i innstrengen. Konverterer og returnerer den aktuelle strengen med bare små bokstaver. Eventuelle ikke-alfabetiske tegn blir ikke endret. Verdien for strengen endres ikke. Ingen En streng som er lik innstrengen, men med bare små bokstaver. Konverterer og returnerer den aktuelle strengen med bare store bokstaver. Eventuelle ikke-alfabetiske tegn blir ikke endret. Verdien for strengen endres ikke. Ingen En streng som er lik innstrengen, men med bare store bokstaver. Returnerer de første ant tegnene i denne strengen. Hvis ant er større enn lengden på strengen, returneres hele strengen. ant - antall tegn som skal hentes ut En streng som inneholder de første ant tegnene i innstrengen. 29

Syntaks Mid(int start, int ant) Right(int ant) array Separate( separator) void Concatenate( streng1) void TrimBoth() Beskrivelse Returnerer en delstreng av innstrengen med lengde ant som begynner fra tegn nummer start. Strengindekser begynner med 1. start - indeksen for det første tegnet som skal inkluderes i delstrengen ant - antall tegn som skal inkluderes i delstrengen (verdien null (0) angir resten av tegnene i strengen) En delstreng av innstrengen som inneholder tegnene i det angitte indeksområdet. Returnerer de siste ant tegnene i strengen. Hvis ant er større enn lengden på strengen, returneres hele strengen. ant - antall tegn som skal hentes ut En streng som inneholder de siste ant tegnene i innstrengen. Den aktuelle verdien av strengen gjennomsøkes etter separator-strengen. Hver gang den blir funnet, genereres det en ny streng minus separatorverdien. Når søket kommer til slutten av strengen, legges resten av strengen til som det siste elementet i tabellen. Hvis separatoren ikke blir funnet, returneres hele strengen som det første elementet i tabellen. separator - strengen som skal brukes som separatorverdi En tabell med strenger, der hvert element er en streng minus separatorverdien. Legger streng1 til verdien av den aktuelle strengen. streng1 - strengen som skal legges til Ingen Fjerner eventuelle hvite mellomrom fra begynnelsen og slutten av strengen. Hvite mellomrom inkluderer linjeskift, mellomrom og tabulatortegn. Verdien for den aktuelle strengen endres. Ingen Ingen 30

Syntaks void TrimLeft() void TrimRight() Beskrivelse Fjerner eventuelle hvite mellomrom fra begynnelsen av strengen. Hvite mellomrom inkluderer linjeskift, mellomrom og tabulatortegn. Verdien for den aktuelle strengen endres. Ingen Ingen Fjerner eventuelle hvite mellomrom fra slutten av strengen. Hvite mellomrom inkluderer linjeskift, mellomrom og tabulatortegn. Verdien for den aktuelle strengen endres. Ingen Ingen Operatorer Symbol Beskrivelse <, LT Mindre enn (skiller mellom små og store bokstaver) >, GT Større enn (skiller mellom små og store bokstaver) ==, EQ Lik (skiller mellom små og store bokstaver) <>, NE Ikke lik (skiller mellom små og store bokstaver) + Slå sammen (Concatenate) Eksempler: For strengen str som har verdien "ABC123abc:789": str.asalphanumeric() returnerer "ABC123abc789" str.asint() returnerer 0 str.aslower() returnerer "abc123abc:789" str.asreal() returnerer 0.0 str.asupper() returnerer "ABC123ABC:789" str.contains("123") returnerer TRUE str.find("123", 1) returnerer 4 str.length() returnerer 13 str.left(5) returnerer "ABC12" str.mid(6, 4) returnerer "3abc" str.right(4) returnerer ":789" 31

For strengen str som har verdien "12.45": str.asreal() returnerer 12.45 str.asint() returnerer 12 For strengen str som har verdien "This is a test of this.": str.replace("is", "was", TRUE, FALSE, 1) str.replace("is", "was", TRUE,TRUE, 1) str.replaceall("this", "that", FALSE,TRUE) str.replaceall("this", "that", TRUE, FALSE) returnerer 3 og endrer verdi til: "This is a test of this." returnerer 6 og endrer verdi til: "This was a test of this." returnerer 2 og endrer verdi til: "that is a test of that." returnerer 1 og endrer verdi til: "This is a test of that." 32

Escape-tegn Det er noen tegn som det av og til er behov for i strenger, som ikke kan representeres med vanlige tegn. For å kunne bruke slike tegn, støtter strengobjekter følgende escape-tegn. Symbol Beskrivelse ^n Windows ny linje ^l Unix linjeskift ^r Unix vognretur ^t Tab (tabulator) ^^ Caret ^xdd Heksadesimal (Hex) ^" Plasser anførselstegn i streng Hvis du vil bruke disse tegnene i en streng, kan du inkludere escape-tegnet innenfor anførselstegnene. Eksempel: str = "Linje 1^nLinje2^tTab til neste kolonne" msg = "Dette er den ^"første^" strengen i anførselstegn." 33

Avbildning (map) Avbildningsobjektet (map-objektet) inneholder en samling av nøkkel/verdi-par. Den gir deg mulighet til strukturere data på en brukerdefinert måte. Det er mulig å dele dataene videre inn i kategorier, som igjen kan ha sine egne nøkkel/verdi-par. Alle nøkler og verdier i et avbildningsobjekt er strenger. Datastrukturen er slik: nøkkel = verdi kategori.nøkkel = verdi kategori.underkategori.nøkkel = verdi Flere nivåer av kategorier er tillatt. Hver kategori må ha minst ett nøkkel/verdi-par. En egenskap eller variabel er av denne typen hvis den deklareres som map. Dette objektet har ingen egenskaper. Metoder Syntaks bool HasCategory( kategori) bool HasKey( nøkkel) map GetCategory( kategori) Beskrivelse Returnerer TRUE hvis den angitte kategorien finnes i avbildningen (map-objektet). Hvis du vil sjekke om en kategori har en underkategori, kan du skille kategori- og underkategori-navnene med et punktum. kategori - navnet på kategorien En bool-verdi som angir om kategorien finnes i avbildningen (map-objektet). Returnerer TRUE hvis den angitte nøkkelen finnes i avbildningen (map-objektet). Hvis du vil kontrollere om nøkkel/verdi-paret finnes i en bestemt kategori, kan du inkludere kategorinavnet som en del av nøkkelen, og bruke et punktum til å skille kategori- og nøkkelnavnet. nøkkel - navnet på nøkkelen En bool-verdi som angir om nøkkelen finnes i avbildningen (map-objektet). Returnerer et map-objekt med nøkkel/verdi-parene som tilhører den angitte kategorien. Hvis kategorien ikke finnes, returneres et map-objekt uten noen oppføringer. kategori - navnet på kategorien Et map-objekt med nøkkel/verdi-parene som tilhører den angitte kategorien. 34

Syntaks GetValue( nøkkel) array GetCategoryList() array GetKeyList() void AddItem( nøkkel, verdi) Beskrivelse Returnerer verdien av den angitte nøkkelen. Hvis du vil hente ut nøkkel/verdi-paret fra en bestemt kategori, kan du inkludere kategorinavnet som en del av nøkkelen, og bruke et punktum til å skille kategori- og nøkkelnavnet. Hvis den angitte nøkkelen ikke eksisterer, returneres en tom streng. nøkkel - navnet på nøkkelen Verdien av den angitte nøkkelen. Returnerer en liste over kategoriene på det øverste nivået i map-objektet. Hvis det ikke er noen kategorier, returneres en strengtabell (array) uten noen elementer. Ingen En liste over kategoriene på det øverste nivået i map-objektet. Returnerer en liste over nøklene på det øverste nivået i map-objektet. Hvis det ikke er noen nøkler på det øverste nivået, returneres en strengtabell (array) uten noen elementer. Ingen En liste over nøklene på det øverste nivået i map-objektet. Legger til nøkkel/verdi-paret i map-objektet. Hvis du vil legge nøkkel/verdi-paret inn i en bestemt kategori, kan du inkludere kategorinavnet som en del av nøkkelen, og bruke et punktum til å skille kategori- og nøkkelnavnet. Hvis kategorien ikke finnes, vil den bli opprettet. nøkkel - nøkkelen som skal legges til i map-objektet verdi - verdien som skal tilordnes nøkkelen Ingen. Eksempler: Slik kan du bygge opp et avbildningsobjekt (map-objekt) som har nøklene "firstname" og "lastname" på første nivå, og kategorien "address": map info info.additem("firstname", "john") info.additem("lastname", "doe") info.additem("address.street", "123 Main Street") info.additem("address.city", "Anywhere") info.additem("address.state", "KY") info.additem("address.zip,", "40000") 35