Definizione di VBScript

 

In Microsoft Visual Basic Scripting Edition, il linguaggio di programmazione più recente della famiglia Visual Basic, sono disponibili funzioni per includere script in un'ampia gamma di ambienti diversi, tra cui script client Web in Microsoft Internet Explorer e script server Web in Microsoft Internet Information Server.

Facilità di apprendimento e di uso

Se si conosce già Visual Basic o Visual Basic, Applications Edition, VBScript risulterà estremamente semplice. In caso contrario, la fase di apprendimento di VBScript consentirà di acquisire le conoscenze sufficienti per imparare in modo semplice a programmare con tutti i linguaggi di programmazione della famiglia Visual Basic. Queste pagine Web includono informazioni complete su VBScript, ma non istruzioni sulle tecniche di programmazione. Per l'apprendimento delle tecniche di programmazione, vedere i volumi della serie Passo per passo di Microsoft Press.

Tecnologia ActiveX Scripting

VBScript comunica con applicazioni host tramite la tecnologia ActiveX™ Scripting, grazie alla quale nei browser e in altre applicazioni host non è necessario scrivere codice integrativo speciale per ciascun componente script. Questa tecnologia consente a un host di compilare script, di ottenere e richiamare punti di ingresso e di gestire lo spazio dei nomi disponibile per lo sviluppatore. Grazie alla tecnologia ActiveX Scripting i fornitori di linguaggi possono creare componenti run-time standard per le tecniche di script. Microsoft sta inoltre lavorando assieme a vari gruppi Internet per definire uno standard ActiveX Scripting che consenta di rendere intercambiabili i vari moduli di gestione per script. La tecnologia ActiveX Scripting viene utilizzata in Microsoft® Internet Explorer e in Microsoft® Internet Information Server.

VBScript in altre applicazioni e browser

Gli sviluppatori possono concedere gratuitamente licenze per l'implementazione di codice di VBScript da utilizzare nei prodotti creati. Microsoft sta creando implementazioni binarie di VBScript per l'API di Windows® a 32 e a 16 bit e per Macintosh®. VBScript è integrato con i browser Web. È inoltre possibile utilizzare VBScript e ActiveX Scripting come linguaggi di script di tipo generale in altre applicazioni.

 

Aggiunta di codice VBScript ad una pagina HTML

È possibile utilizzare l'elemento SCRIPT per aggiungere codice VBScript a una pagina HTML.

 

Tag <SCRIPT>

 

Il codice VBScript viene inserito all'interno dei tag <SCRIPT>. Una routine per la verifica di una data di consegna, ad esempio, appare nel modo seguente:

 

<SCRIPT LANGUAGE="VBScript">

<!--

Function CanDeliver(Dt)

CanDeliver = (CDate(Dt) - Now()) > 2

End Function

-->

</SCRIPT>

 

Il codice è racchiuso tra tag <SCRIPT> iniziali e finali. L'attributo LANGUAGE indica il linguaggio di script utilizzato. Dato che i browser supportano anche altri linguaggi di script, è necessario indicare quello utilizzato. Si noti inoltre che la funzione CanDeliver è racchiusa tra i tag di commento, ovvero <!-- e -->, in modo che il codice non venga visualizzato nei browser che non supportano il tag <SCRIPT>.

Dato che l'esempio corrisponde a una funzione generale non collegata a nessun controllo di form specifico, è possibile includervi la sezione HEAD della pagina:

 

 

<HTML>

<HEAD>

<TITLE>Immissione ordine</TITLE>

<SCRIPT LANGUAGE="VBScript">

<!--

Function CanDeliver(Dt)

CanDeliver = (CDate(Dt) - Now()) > 2

End Function

-->

</SCRIPT>

</HEAD>

<BODY>

...

 

È possibile utilizzare i blocchi SCRIPT in qualsiasi punto della pagina HTML, sia nella sezione BODY che nella sezione HEAD. È tuttavia consigliabile inserire tutto il codice script di utilizzo generale nella sezione HEAD, in modo che l'intero codice sia incluso in un'unica posizione. Questa operazione consente di leggere e decifrare tutto il codice prima di essere utilizzato da una chiamata dall'interno della sezione BODY.

Nel caso di form, si consiglia tuttavia di fornire codice script su una stessa riga per rispondere agli eventi di oggetti contenuti nel form. È, ad esempio, possibile incorporare codice script per rispondere alla pressione di un pulsante in un form:

 

 

<HTML>

<HEAD>

<TITLE>Verifica eventi dei pulsanti</TITLE>

</HEAD>

<BODY>

<FORM NAME="Form1">

<INPUT TYPE="Button" NAME="Button1" VALUE="Click">

<SCRIPT FOR="Button1" EVENT="onClick" LANGUAGE="VBScript">

MsgBox "Pulsante premuto"

</SCRIPT>

</FORM>

</BODY>

</HTML>

 

Quasi tutto il codice verrà visualizzato nelle routine Sub o Function e verrà richiamato solo quando il codice scritto ne determinerà l'esecuzione. È tuttavia possibile scrivere codice VBScript esternamente alle routine, ma sempre all'interno di un blocco SCRIPT. Questo codice viene eseguito una sola volta, quando la pagina HTML viene caricata. In questo modo, è possibile inizializzare i dati o modificare dinamicamente l'aspetto della pagina Web quando viene caricata.

Tipi di dati

Descrizione dei tipi di dati di VBScript

In VBScript è disponibile solo il tipo di dati Variant, un tipo di dati speciale che, a seconda della modalità in cui viene utilizzato, può includere vari tipi di informazioni. Il tipo di dati Variant, essendo l'unico disponibile, è il tipo di dati restituito da tutte le funzioni di VBScript.

Nella forma più semplice una variabile Variant può includere informazioni numeriche o stringhe. È equivalente a un numero se utilizzata in un contesto numerico e a una stringa se utilizzata in un contesto stringa. Ciò significa che, se si lavora con dati simili a valori numerici, VBScript interpreterà tali dati come numeri e verranno eseguite le operazioni più appropriate. In modo analogo, se si lavora con dati che possono essere solo stringhe, essi verranno gestiti come dati stringa. È tuttavia possibile fare in modo che i numeri vengano gestiti come stringhe racchiudendoli tra virgolette doppie (" ").

Sottotipi di variabili Variant

Oltre alla semplice classificazione di valore numerico o stringa, con le variabili Variant è possibile definire ulteriori distinzioni in base alla natura specifica delle informazioni numeriche. Se, ad esempio, si utilizzano informazioni numeriche che rappresentano una data o un orario insieme ad altri dati relativi alla data o all'orario, il risultato verrà sempre espresso come data o come orario. È tuttavia possibile utilizzare informazioni numeriche di vario tipo con dimensioni che vanno dai valori booleani ai numeri in virgola mobile di grandi dimensioni. Le varie categorie di informazioni che possono essere incluse in variabili Variant sono definite sottotipi. Nella maggior parte dei casi, i dati inseriti in variabili Variant vengono automaticamente gestiti nel modo più adatto.

Nella tabella seguente sono elencati i possibili sottotipi di variabili Variant.

Sottotipo

Descrizione

Empty

Variabile Variant non inizializzata. Il valore è 0 nel caso di variabili numeriche e una stringa di lunghezza zero ("") nel caso di variabili stringa.

Null

Variabile Variant che include dati non validi inseriti volutamente.

Boolean

Può contenere True o False.

Byte

Contiene un intero compreso tra 0 e 255.

Integer

Contiene un intero compreso tra -32.768 e 32.767.

Currency

Contiene un valore compreso tra -922.337.203.685.477,5808 e 922.337.203.685.477,5807.

Long

Contiene un intero compreso tra -2.147.483.648 e 2.147.483.647.

Single

Contiene un numero in virgola mobile e precisione singola compreso tra -3,402823E38 e -1,401298E-45 per valori negativi e tra 1,401298E-45 e 3,402823E38 per valori positivi.

Double

Contiene un numero in virgola mobile e precisione doppia compreso tra -1,79769313486232E308 e -4,94065645841247E-324 per valori negativi e tra 4,94065645841247E-324 e 1,79769313486232E308 per valori positivi.

Date (Time)

Contiene un numero che rappresenta una data compresa tra l'1 gennaio dell'anno 100 e il 31 dicembre del 9999.

String

Contiene una stringa di lunghezza variabile composta da un massimo di circa 2 miliardi di caratteri.

Object

Contiene un oggetto.

Error

Contiene un numero di errore.

Per le conversioni tra sottotipi è disponibile un'ampia gamma di funzioni di conversione. È inoltre possibile utilizzare la funzione VarType che restituisce informazioni sulla modalità di memorizzazione dei dati in una variabile Variant.

 

Costanti in VBscript

 

Definizione di costante

 

Una costante è un nome significativo non soggetto a modifiche utilizzato in sostituzione di un numero o di una stringa. In VBScript è possibile definire numerose costanti intrinseche. Per ulteriori informazioni sulle costanti intrinseche, consultare Riferimento al linguaggio VBScript.

 

Creazione di costanti

 

Per creare costanti in VBScript, è necessario utilizzare l'istruzione Const con cui vengono create costanti stringa o numeriche con nomi significativi, che è quindi possibile associare a valori letterali e utilizzare negli script. Ad esempio:

Const MyString = "Questa è la mia stringa."

Const MyAge = 49

 

Nell'esempio il valore letterale stringa è racchiuso tra virgolette doppie ("), il modo più chiaro per contraddistinguere i valori stringa dai valori numerici. È possibile rappresentare i valori letterali di data e ora racchiudendoli tra simboli di cancelletto (#), ad esempio:

Const CutoffDate = #6-1-97#

 

È consigliabile adottare una convenzione di denominazione in modo da contraddistinguere le costanti dalle variabili ed evitare quindi di riassegnare valori alle costanti durante l'esecuzione dello script. È possibile, ad esempio, utilizzare il prefisso "vb" o "con" per i nomi di costanti o assegnare nomi in maiuscolo. In entrambi i casi, è buona norma contraddistinguere le costanti dalle variabili per evitare possibili confusioni in script più complessi.

 

Operatori VBScript

In VBScript sono disponibili tutti gli operatori aritmetici, di confronto, di concatenemanto e logici.

Precedenza tra operatori

Quando in un'espressione si eseguono varie operazioni, ciascuna parte viene valutata e risolta secondo un ordine specifico definito precedenza tra operatori. Per ignorare l'ordine di precedenza in modo che determinate parti di un'espressione vengano valutate prima di altre, è necessario utilizzare le parentesi. Le operazioni racchiuse tra parentesi vengono sempre valutate per prime. All'interno delle parentesi tuttavia viene mantenuta la normale precedenza tra operatori.
Nelle espressioni che includono operatori di categorie diverse, vengono innanzitutto valutati gli operatori aritmetici, quindi gli operatori di confronto e infine gli operatori logici. Gli operatori di confronto hanno la stessa precedenza, ovvero vengono valutati da sinistra a destra nello stesso ordine in cui sono stati specificati. Gli operatori aritmetici e logici vengono valutati in base all'ordine di precedenza indicato nella tabella seguente.

Aritmetici

Di confronto

Logici

Descrizione

Simbolo

Descrizione

Simbolo

Descrizione

Simbolo

Elevamento a potenza

^

Uguaglianza

=

Negazione logica

Not

Negazione unaria

-

Disuguaglianza

<>

Congiunzione logica

And

Moltiplicazione

*

Minore di

<

Disgiunzione logica

Or

Divisione

/

Maggiore di

>

Esclusione logica

Xor

Divisione intera

\

Minore o uguale a

<=

Equivalenza logica

Eqv

Modulo aritmetico

Mod

Maggiore o uguale a

>=

Implicazione logica

Imp

Addizione

+

Equivalenza tra oggetti

Is

 

 

Sottrazione

-

 

 

 

 

Concatenamento di stringhe

&

 

 

 

 

Se in un'espressione vengono eseguite la moltiplicazione e la divisione oppure l'addizione e la sottrazione, ciascuna operazione verrà valutata nello stesso ordine in cui è indicata da sinistra verso destra.
L'operatore di concatenamento di stringhe (&) non è un operatore aritmetico, ma per quanto riguarda la precedenza segue tutti gli operatori aritmetici e precede tutti gli operatori di confronto. L'operatore Is è un operatore di confronto per riferimenti a oggetti, ovvero non esegue il confronto degli oggetti o dei corrispondenti valori, ma verifica semplicemente se due riferimenti sono relativi allo stesso oggetto.

Utilizzo di istruzioni condizionali

 

Controllo dell'esecuzione del programma

È possibile controllare il flusso di script tramite istruzioni  condizionali e istruzioni di ciclo. Con le istruzioni condizionali è possibile scrivere codice VBScript che consente di prendere decisioni e ripetere azioni. In VBScript sono disponibili le seguenti istruzioni

condizionali:

If...Then...Else

Select Case

Istruzione If...Then...Else

L'istruzione If...Then...Else consente di valutare se una condizione è True o False e, a seconda del risultato, di specificare una o più

istruzioni da eseguire. In genere la condizione corrisponde a un'espressione in cui due valori o due variabili vengono confrontati

tramite un operatore di confronto. Per informazioni sugli operatori di confronto, vedere Operatori di confronto. Le istruzioni

If...Then...Else possono essere nidificate in un numero qualsiasi di livelli di nidificazione.Esecuzione di istruzioni quando una condizione è True  Per eseguire una sola istruzione quando una condizione è True, è necessario utilizzare la sintassi a riga singola dell'istruzione

If...Then...Else, come illustrato nell'esempio riportato di seguito.

Nell'esempio la parola chiave Else viene omessa.

Sub FixDate()

Dim myDate

myDate = #2/13/95#

If myDate < Now Then myDate = Now

End Sub

 

Per eseguire più righe di codice, è necessario utilizzare la sintassi a righe multiple o a blocco, in cui è inclusa l'istruzione End If, come

illustrato nell'esempio riportato di seguito.

Sub AlertUser(value)

If value = 0 Then

AlertLabel.ForeColor = vbRed

AlertLabel.Font.Bold = True

AlertLabel.Font.Italic = True

End If

End Sub

Esecuzione di istruzioni specifiche quando una determinata condizione è True e di altre istruzioni quando la condizione è False

È possibile utilizzare un'istruzione If...Then...Else per definire due blocchi di istruzioni da eseguire l'uno quando la condizione è True e

l'altro quando la condizione è False.

 

Sub AlertUser(value)

If value = 0 Then

AlertLabel.ForeColor = vbRed

AlertLabel.Font.Bold = True

AlertLabel.Font.Italic = True

Else

AlertLabel.Forecolor = vbBlack

AlertLabel.Font.Bold = False

AlertLabel.Font.Italic = False

End If

End Sub

Scelta tra possibili situazioni

 

Aggiungendo nell'istruzione If...Then...Else proposizioni ElseIf, è possibile scegliere tra situazioni diverse. La funzionalità dell'istruzione If...Then...Else viene in tal modo estesa consentendo di controllare il flusso del programma in base a possibilità diverse.

Esempio:

Sub ReportValue(value)

If value = 0 Then

MsgBox value

ElseIf value = 1 Then

MsgBox value

ElseIf value = 2 then

Msgbox value

Else

Msgbox "Valore non compreso nell'intervallo valido."

End If

Per fornire più situazioni diverse, è possibile aggiungere il numero necessario di proposizioni ElseIf. Un utilizzo eccessivo di queste proposizioni può tuttavia creare un codice poco chiaro e contorto. Un metodo alternativo migliore consiste nell'utilizzare l'istruzione

Select Case.

Istruzione Select Case

La struttura Select Case rappresenta un'alternativa all'istruzione

If...Then...ElseIf per la selezione di un blocco di istruzioni specifico tra più blocchi diversi. La funzione dell'istruzione Select

Case è simile a quella dell'istruzione If...Then...Else, con la differenza tuttavia che il codice risulta più efficiente e di più facile lettura.

Una struttura Select Case include una singola espressione di testo valutata una sola volta all'inizio della struttura stessa. Il risultato dell'espressione viene quindi confrontato con i valori di ciascun blocco Case della struttura. Se viene individuata una corrispondenza,

il blocco di istruzioni associato al blocco Case specifico verrà eseguito.

Select Case Document.Form1.CardType.Options(SelectedIndex).Text

Case "MasterCard"

DisplayMCLogo

ValidateMCAccount

Case "Visa"

DisplayVisaLogo

ValidateVisaAccount

Case "American Express"

DisplayAMEXCOLogo

ValidateAMEXCOAccount

Case Else

DisplayUnknownImage

PromptAgain

End Select

A differenza della struttura Select Case con cui un'espressione viene valutata una sola volta all'inizio della struttura stessa, la struttura If...Then...ElseIf consente di valutare un'espressione diversa per ciascuna istruzione ElseIf. È possibile sostituire una struttura

If...Then...ElseIf con una struttura Select Case solo se con ciascuna istruzione ElseIf viene valutata la stessa espressione. esecuzione di cicli nel codice

Utilizzo di cicli per la ripetizione del codice

L'esecuzione di cicli consente di eseguire ripetutamente un gruppo di istruzioni. In alcuni cicli le istruzioni vengono ripetute fino a quando una condizione risulta False, mentre in altri vengono ripetute fino a quando una condizione risulta True. Esistono inoltre cicli in cui le istruzioni vengono ripetute un numero specifico di volte.In VBScript sono disponibili le seguenti istruzioni per l'esecuzione di cicli:

Do...Loop: le istruzioni vengono ripetute fino a quando una condizione risulta True.

While...Wend: le istruzioni vengono ripetute fino a quando una condizione risulta True.

For...Next: le istruzioni vengono ripetute il numero di volte specificato da un contatore.

For Each...Next: un gruppo di istruzioni viene ripetuto per ciascun elemento incluso nell'insieme di una matrice.

Cicli Do

È possibile utilizzare le istruzioni Do...Loop per eseguire un blocco di istruzioni un numero indefinito di volte. Le istruzioni vengono ripetute mentre una condizione è True oppure fino a quando risulta True. Ripetizione di istruzioni mentre una condizione è TruePer verificare una condizione in un'istruzione Do...Loop, è necessario utilizzare la parola chiave While. La verifica può essere eseguita prima dell'inizio del ciclo, come illustrato nell'esempio ChkFirstWhile riportato di seguito, oppure dopo almeno una esecuzione del ciclo, come illustrato nell'esempio ChkLastWhile. Nella routine ChkFirstWhile, se myNum è impostato su 9 anziché su 20, le istruzioni incluse nel ciclo non verranno mai eseguite. Nella routine ChkLastWhile, le istruzioni incluse nel ciclo vengono eseguite una sola volta, in quanto la condizione è già False.

Sub ChkFirstWhile()

Dim counter, myNum

counter = 0

myNum = 20

Do While myNum > 10

myNum = myNum - 1

counter = counter + 1

Loop

MsgBox "Il ciclo ha eseguito " & counter & " ripetizioni."

End Sub

 

Sub ChkLastWhile()

Dim counter, myNum

counter = 0

myNum = 9

Do

myNum = myNum - 1

counter = counter + 1

Loop While myNum > 10

MsgBox "Il ciclo ha eseguito " & counter & " ripetizioni."

End Sub

 

Ripetizione di un'istruzione fino a quando una condizione risulta True

Per verificare una condizione in un'istruzione Do...Loop, è possibile utilizzare la parola chiave Until in due modi diversi, ovvero la verifica può essere eseguita prima dell'inizio del ciclo, come illustrato nell'esempio ChkFirstWhile riportato di seguito, oppure dopo almeno una esecuzione del ciclo, come illustrato nell'esempio ChkLastWhile. Il ciclo viene ripetuto finché la condizione risulta False.

Sub ChkFirstUntil()

Dim counter, myNum

counter = 0

myNum = 20

Do Until myNum = 10

myNum = myNum - 1

counter = counter + 1

Loop

MsgBox "Il ciclo ha eseguito " & counter & " ripetizioni."

End Sub

 

Sub ChkLastUntil()

Dim counter, myNum

counter = 0

myNum = 1

Do

myNum = myNum + 1

counter = counter + 1

Loop Until myNum = 10

MsgBox "Il ciclo ha eseguito " & counter & " ripetizioni."

End Sub

 

 

Uscita da un'istruzione Do...Loop

Per uscire da una struttura Do...Loop, è possibile utilizzare l'istruzione Exit Do. Dato che l'uscita da tale struttura viene in genere eseguita solo in determinate situazioni, ad esempio per evitare la ripetizione infinita di un ciclo, l'istruzione Exit Do deve essere inclusa nel blocco di istruzioni True di un'istruzione If...Then...Else. Se la condizione è False, il ciclo viene eseguito normalmente.

Nell'esempio riportato di seguito, a myNum viene assegnato un valore in base al quale viene creato un ciclo infinito. L'istruzione If...Then...Else consente di verificare questa condizione, impedendo pertanto un'esecuzione all'infinito.

 

Sub ExitExample()

Dim counter, myNum

counter = 0

myNum = 9

Do Until myNum = 10

myNum = myNum - 1

counter = counter + 1

If myNum < 10 Then Exit Do

Loop

MsgBox "Il ciclo ha eseguito " & counter & " ripetizioni."

End Sub

Istruzione While...Wend

 

L'istruzione While...Wend deve essere utilizzata da utenti che ne conoscono la corretta applicazione. Dato che si tratta di un'istruzione poco flessibile, è consigliabile utilizzare invece l'istruzione Do...Loop.

Istruzione For...Next

L'istruzione For...Next consente di eseguire un blocco di istruzioni un numero specifico di volte. Nel caso di cicli, è necessario utilizzare una variabile contatore il cui valore viene aumentato o diminuito a ogni ripetizione del ciclo.

Nella routine riportata di seguito, ad esempio, la routine MyProc viene eseguita 50 volte. L'istruzione For specifica la variabile contatore x e il corrispondente valore iniziale e finale. L'istruzione Next consente di aumentare la variabile contatore con incrementi di una unità.

 

Sub DoMyProc50Times()

Dim x

For x = 1 To 50

MyProc

Next

End Sub

 

La parola chiave Step consente di aumentare o diminuire la variabile contatore del valore specificato. Nell'esempio riportato di seguito la variabile contatore viene incrementata di due unità a ogni ripetizione del ciclo. Al completamento del ciclo, il totale corrisponde alla somma di 2, 4, 6, 8 e 10.

Sub TwosTotal()

Dim j, total

For j = 2 To 10 Step 2

total = total + j

Next

MsgBox "Il totale è " & total

End Sub

Per diminuire la variabile contatore, è necessario utilizzare un valore Step negativo specificando un valore finale minore del valore iniziale. Nell'esempio riportato di seguito, la variabile contatore myNum viene diminuita di due unità a ogni ripetizione del ciclo. Al completamento del ciclo, il totale corrisponde alla somma di 16, 14, 12, 10, 8, 6, 4 e 2.

 

Sub NewTotal()

Dim myNum, total

For myNum = 16 To 2 Step -2

total = total + myNum

Next

MsgBox "Il totale è " & total

End Sub

 

Per uscire da un'istruzione For...Next prima che il valore del contatore abbia raggiunto il valore finale, è necessario utilizzare l'istruzione Exit For. Dato che l'uscita da un'istruzione For...Next viene in genere eseguita solo in determinate situazioni, ad esempio quando si verifica un errore, l'istruzione Exit For deve essere inclusa nel blocco di istruzioni True di un'istruzione If...Then...Else. Se la condizione è False, il ciclo viene eseguito normalmente.

Istruzione For Each...Next

L'istruzione For Each...Next è simile a For...Next, con la sola differenza che le istruzioni non vengono ripetute il numero di volte specificato, ma per ciascun elemento di un insieme di oggetti o per ciascun elemento di una matrice. Ciò risulta particolarmente utile quando non si conosce il numero di elementi di un insieme.

Nell'esempio di codice HTML riportato di seguito, il contenuto di un oggetto Dictionary viene utilizzato per inserire testo in varie caselle di testo.

<HTML>

<HEAD><TITLE>Forms and Elements</TITLE></HEAD>

<SCRIPT LANGUAGE="VBScript">

<!--

Sub cmdChange_OnClick

Dim d 'Crea una variabile

Set d = CreateObject("Scripting.Dictionary")

d.Add "0", "Atene" 'Aggiunge alcune chiavi ed elementi

d.Add "1", "Belgrado"

d.Add "2", "Cairo"

 

For Each I in d

Document.frmForm.Elements(I).Value = D.Item(I)

Next

End Sub

-->

</SCRIPT>

<BODY>

<CENTER>

<FORM NAME="frmForm"

 

<Input Type = "Text"><p>

<Input Type = "Text"><p>

<Input Type = "Text"><p>

<Input Type = "Text"><p>

<Input Type = "Button" NAME="cmdChange" VALUE="Fare clic qui"><p>

</FORM>

</CENTER>

</BODY>

</HTML>

 

Routine VBScript

 

Tipi di routine

In VBScript sono disponibili due tipi di routine, ovvero le routine Sub e le routine Function.

Routine Sub

Una routine Sub è una serie di istruzioni VBScript incluse tra le istruzioni Sub ed End Sub che eseguono azioni senza restituire alcun valore. In una routine Sub è possibile specificare argomenti, ovvero costanti, variabili o espressioni passate dalla routine che sta eseguendo una chiamata. Se non si specifica alcun argomento, nella corrispondente istruzione Sub è necessario includere parentesi vuote ().

Nella routine Sub riportata di seguito vengono utilizzate le due funzioni VBScript intrinseche, ovvero incorporate, MsgBox e InputBox, che consentono di richiedere informazioni all'utente. Viene quindi visualizzato il risultato di un calcolo basato sulle informazioni fornite ed eseguito in una routine Function creata in VBScript, come descritto nella sezione successiva.

 

Sub ConvertTemp()

temp = InputBox("Immettere la temperatura in gradi Fahrenheit.", 1)

MsgBox "La temperatura è pari a " & Celsius(temp) & " gradi C."

End Sub

 

 

Routine Function

 

Una routine Function è una serie di istruzioni VBScript incluse tra le istruzioni Function ed End Function. È simile a una routine Sub, ma a differenza di questa può restituire un valore. In una routine Function è possibile specificare argomenti, ovvero costanti, variabili o espressioni passate alla routine dalla routine chiamante. Se non si specifica alcun argomento, nella corrispondente istruzione Function è necessario includere parentesi vuote. Una routine Function restituisce un valore quando si assegna un valore al nome della routine in una o più istruzioni. Il tipo restituito di una routine Function è sempre Variant.

Nell'esempio riportato di seguito, la funzione Celsius consente di eseguire la conversione da Fahrenheit a Celsius. Quando la funzione viene richiamata nella routine Sub ConvertTemp, viene passata alla funzione una variabile contenente il valore dell'argomento. Il risultato del calcolo viene quindi restituito alla routine che ha eseguito la chiamata e visualizzato in una finestra di messaggio.

 

Sub ConvertTemp()

temp = InputBox("Immettere la temperatura in gradi Fahrenheit.", 1)

MsgBox "La temperatura è pari a " & Celsius(temp) & " gradi C."

End Sub

 

Function Celsius(fDegrees)

Celsius = (fDegrees - 32) * 5 / 9

End Function

 

 

Come includere e leggere dati dalle routine

 

I dati vengono passati alla routine tramite argomenti che fungono da segnaposto per i dati stessi. Agli argomenti è possibile assegnare un nome valido per le variabili. Quando si crea una routine utilizzando l'istruzione Sub o Function, è necessario far seguire il nome della routine da parentesi, all'interno delle quali vengono inseriti gli argomenti separati da una virgola. Nell'esempio seguente fDegrees è il segnaposto del valore da convertire passato alla funzione Celsius:

Function Celsius(fDegrees)

Celsius = (fDegrees - 32) * 5 / 9

End Function

 

Per ottenere dati da una routine, è necessario utilizzare routine Function che, a differenza delle routine Sub, possono restituire un valore.

Routine Sub e Function nel codice

Per utilizzare routine Function nel codice, è necessario includerle a destra delle assegnazioni di variabili oppure in un'espressione. Ad esempio:

Temp = Celsius(fDegrees)

or

MsgBox "La temperatura in gradi Celsius è pari a " & Celsius(fDegrees) & " gradi."

Per richiamare una routine Sub da un'altra routine, è sufficiente specificarne il nome insieme ai valori degli argomenti obbligatori, separati da una virgola. L'istruzione Call non è obbligatoria. Se viene utilizzata, è necessario racchiudere gli eventuali argomenti tra parentesi.

Nell'esempio seguente vengono eseguite due chiamate alla routine MyProc. Sebbene l'istruzione Call sia utilizzata nel codice di una sola chiamata, entrambe le chiamate eseguono la stessa operazione.

Call MyProc(primoarg, secondoarg)

MyProc primoarg, secondoarg

 

Nella chiamata in cui l'istruzione Call non è utilizzata, le parentesi sono state omesse.

Convenzioni di scrittura del codice VBscript

Convenzioni di scrittura del codice

Le convenzioni di scrittura del codice consentono di facilitare la scrittura del codice in Microsoft Visual Basic Scripting Edition. Tali convenzioni sono le seguenti:

·         Convezioni di denominazione per oggetti, variabili e routine

·         Convenzioni per l'aggiunta di commenti

·         Indicazioni generali per la formattazione e il rientro del testo

Lo scopo principale delle convenzioni di scrittura del codice è uniformare la struttura e lo stile di uno script o gruppo di script in modo che il codice risulti semplice da leggere e comprensibile a tutti. Grazie alla definizione di buone convenzioni è possibile ottenere codice sorgente preciso, leggibile e chiaro, in conformità con il codice di altri linguaggi e quanto più possibile intuitivo.

Convenzioni di denominazione delle costanti

Nelle versioni precedenti di VBScript non era disponibile alcun metodo di creazione di costanti definite dall'utente. Se utilizzate, le costanti venivano implementate come variabili e distinte dalle altre variabili con l'utilizzo dei caratteri maiuscoli. Le parole che componevano il nome venivano separate con un carattere di sottolineatura (_). Ad esempio:
USER_LIST_MAX
NEW_LINE
È ancora possibile utilizzare questo metodo per identificare le costanti, ma si consiglia di utilizzare uno schema di denominazione alternativo e l'istruzione Const per creare vere costanti. Questa convenzione consente di utilizzare un formato con caratteri maiuscoli e minuscoli in cui i nomi delle costanti sono preceduti dal prefisso "con", ad esempio:
conCostantePersonale

Convenzioni di denominazione delle variabili

Per motivi di leggibilità e uniformità, in VBScript i nomi delle variabili devono essere descrittivi e preceduti dai prefissi elencati nella tabella seguente.

Sottotipo

Prefisso

Esempio

Boolean

bln

blnFound

Byte

byt

bytRasterData

Date (Time)

dtm

dtmStart

Double

dbl

dblTolerance

Error

err

errOrderNum

Integer

int

intQuantity

Long

lng

lngDistance

Object

obj

objCurrent

Single

sng

sngAverage

String

str

strFirstName

Area di validità delle variabili

Nella tabella seguente sono elencate le aree di validità che è possibile associare alle variabili VBScript. È consigliabile scegliere sempre l'area di validità minima.

Area di validità

Posizione della dichiarazione della variabile

Visibilità

A livello di routine

Evento oppure routine Function o Sub