Gateway Http

Un breve cenno

Oggi World Wide Web (WWW) rappresenta uno dei più importanti mezzi di comunicazione esistenti a livello mondiale e quindi non stupisce che migliaia di aziende abbiano abbracciato questa strada e un numero ancora maggiore sia impaziente di seguirle.
WWW mette a disposizione una infinità di informazioni e viene sfruttato per gli scopi più disparati, dal supporto tecnico fino alla pubblicazione in linea di database.

Il funzionamento generale del WWW, semplificando, si fonda su transazioni: un Web browser connesso con protocollo TCP/IP ad un Web Server che esegue un "servizio" HTTP passa allo stesso una richiesta; successivamente il servizio in questione risponde alla richiesta trasmettendo al browser una pagina Web formattata secondo specifiche HTML.

Tale sistema di transazioni può essere "complicato" se viene introdotto il concetto di CGI (Common Gateway Interface).

Tutti i server Unix e la maggior parte di quelli Windows NT supportano CGI e cioè consentono di far girare sul server un programma o uno script in risposta alla richiesta HTTP di una pagina Web; la pagina quindi che viene spedita al browser viene modificata in base all'esecuzione del programma o dello script.

Esattamente questo meccanismo consente di effettuare ricerche sul database di information retrieval Highway e di ottenere risultati formattati e spediti al browser sotto forma di pagine HTML. Le implicazioni sono enormi: grazie a CGI un Web server può trasformarsi da fornitore meccanico di pagine Web in un sistema capace di reagire alle informazioni che riceve, restituendo dati frutto di una elaborazione intelligente.

Per ora WWW veicola soprattutto affascinanti pagine HTML, ricche di grafici e magari di suoni incorporati; risulta evidente comunque che la tendenza sarà quella di impiegarlo come mezzo di accesso a grandi database pubblici o privati e ad archivi di documenti.

Elenco dei moduli

H3.exe Interfaccia CGI Standard con il server WEB.
Hicgi.exe Processa le richieste di H3 interpretando gli script hl e utilizzando le funzioni di HSFUN per le operazioni sulla base dati.
Hssock.dll Interfaccia TCP/IP con HS32.
Hs32.exe  Motore di ricerca.
Hsmsg.dll  Estensione di Hs32.exe
Hicount.dll Controllo degli accessi.
Hicgi.ini Configurazioni generali CGI e archivi.

Installazione e configurazione di Highway Application Server

Per l'installazione dei programmi sul server si rimanda alla documentazione inerente l'installazione dell'ambiente Highway.

La configurazione dei programmi sul server è estremamente semplice:


Se le operazioni sopra descritte sono state effettuate correttamente è possibile vedere inferiormente l'icona di "Highway Application Server" (come da figura).

Highway Application Server gira sotto forma di servizio NT, quindi non richiede agli utenti un logon sul sistema.

Se accediamo tramite "Pannello di controllo" all'icona dei "Servizi" è possibile verificare nel relativo dialogo come "Highway Application Server" ("HighWay_HiCGI") sia stato installato correttamente come servizio.




Impostazioni del Server WEB

Il funzionamento di Highway Application Server presuppone l'utilizzo di un alias che mappi il direttorio fisico nel quale si trova il programma.

Per le istruzioni riguardo la costituzione di alias, si rimanda alla documentazione relativa al server Web che si intende utilizzare.

Compilazione di hicgi.ini

Segue una lista delle sezioni e delle voci configurabili del file "hicgi.ini" (posizionato nel direttorio di installazione di Windows NT). Il carattere ";" ad inizio riga è il carattere di commento e quindi le righe con tale carattere ad inizio riga non vengono interpretate.

; Parametri di configurazione non specifici di archivio(vengono usati
; se non sono presenti nella sezione specifica di archivio)
[Generico]

; htm da proporre in caso la ricerca non dia esito
Selezione Vuota =

; htm da proporre in caso di ricerca con attributi vuoti
Form Vuota =

; htm da proporre in mancanza della form di visualizzazione
Form Assente =

; htm da proporre in caso di errore sulla riga comandi di Highway Application Server
Parametro Errato o Mancante =

; htm da proporre in caso di riga comandi vuota
Nessun Parametro =

; htm da proporre in caso di errore nell'accesso all'archivio
Errore Apertura Archivio =

; htm da proporre in caso di errore durante la ricerca
Errore Ricerca =

; htm da proporre in caso di errore dovuto ad una interruzione del server
Errore Interruzione =

; htm da proporre in caso di errore di allocazione memoria
Memoria Insufficiente =

; htm da proporre in caso di immagine mancante
Errore Immagine =

; htm da proporre in caso vocabolario vuoto o errore nella preparazione
Errore Vocabolario =

; htm da proporre in caso di errore esecuzione rimando
Errore Collegamento =

; htm da proporre in caso di errore nel Browse Gerarchico
Errore Browse =

; htm da proporre in caso di errore caricamento documento
Errore Documento =

; htm da proporre in caso di accesso negato
Accesso Negato =

; l'impostazione di questo parametro comporta la sostituzione delle unità
; referenziate nel file relativamente ad archivi e file di script con la
; lettera specificata. Se impostato ad '*' la lettera di drive usata è
; quella dove risiede il programma. Se un archivio viene referenziato con
; il percorso completo, questo parametro viene cercato nella sezione [CGI]
; dell'ini di archivio ed il drive sostituito ad '*' è quello di archivio.
; percorso CD es: "/R|"
CDroot =

; Home directory. Nel file prodotto a seguito della elaborazione di una
; richiesta, ogni occorrenza della stringa "\"/" viene sostituita con
; "\"" + "file://" + CDroot + CDhome + "/"
; e ogni occorrenza della stringa "'/" viene sostituita con
; "'" + "file://" + CDroot + CDhome + "/".
; Se un archivio viene referenziato con il percorso completo, questo
; parametro viene cercato nella sezione [CGI] dell'ini di archivio e può
; essere impostato relativamente alla posizione dello stesso

; Home directory su CD. Nei file di script la stringa "\"/" viene
; sostituita con "\"" + "file://" + CDroot + CDhome + "/"
CDhome = /home

; per la conversione da point size alle unità HTML nei campi formattati:
; unità HTML = (pointsize - ps_offs) * ps_num / ps_den
ps_offs = 10
ps_num = 3
ps_den = 4

; riferimenti numerici ad archivi
[archivi]

1 = Archivio A
2 = Archivio B
3 = Archivio C

[server]

; log dettagliato delle richieste
Log Request = 0

; log dei comandi al server HS
Log Command = 0

; dimensione massima del file di log (in Mb)
Max Log Size = <valore numerico>

; numero massimo di file di log da ruotare (hicgi1.log, hicgi2.log, ecc...)
Max Log Save = <valore numerico>
(Default = 0)

; 0 = inibisce la scrittura del file di log
Log Mode = <valore numerico>

; le istanze in più
1 = ?

; istanze dedicate
2 = /fimport
3 = /fexport
; Sintassi
;n=[]
; Esempio
;7=/ase/fBoscienza?AUTORE=PIPPO&TITOLO=PAPERINO log.txt

; stili per la lettura dei file di profilo
; 1 -> hicgi.ini nella directory di sistema
; 2 -> cerca nella sezione [CGI] di archivio.ini
; 4 -> cerca nella sezione di archivio di hicgi.ini
style = 2

; caricamento di hzsock.dll
zlib = 1

; impostazione del canale (h3 deve condividere la stessa directory di Highway Application Server)
channel = 0

; direttorio temporaneo, letto da h3 in assenza delle variabili TEMP o TMP o TMPDIR nell'ambiente impostato dal WEB Server
temp = ""

; dimensione massima dei dati prodotti da una richiesta
Max Output = 134217728
espresso in bytes (corrispondente a 128 Mb).

Compilazione di nomearchivio.ini

; Parametri di configurazione specifici di archivio
[Nome Archivio]

; Percorso archivio, se assente viene usato l'identificativo di sezione
Path =

; htm da proporre per la ricerca
Form Selezione =

; htm da elaborare per la visualizzazione di un documento di una selezione
Form Documento =

; massimo numero di titoli per pagina
Max Titoli = 8

; htm da elaborare ad ogni pagina di titoli
Form Titoli =

; massimo numero di thumbnails per pagina
Max Thumbnails = 8

; htm da elaborare per la visualizzazione di una pagina di thumbnails
Form Thumbnails =

; massimo numero di righe di vocabolario
Max Righe Vocabolario = 12

; htm da elaborare per la visualizzazione di una pagina di vocabolario
Form Vocabolario =

; massimo numero di righe di browse
Max Righe Browse = 12

; htm da elaborare per la visualizzazione di una pagina di Browse
Form Browse =

; htm da elaborare per la visualizzazione di una pagina di thesaurus
Form Thesaurus =

; opzione per il caricamento dei rimandi sull'archivio
Carica Ancore = 0

; opzione per il caricamento dei rimandi anche su una pagina di titoli
Carica Ancore Titoli = 0

; opzione per la registrazione e il controllo degli accessi
Log User = 0 ; inibisce l'accesso ad utenti che non si siano autenticati presso il Web Server ; questo comportamento dipende dalla chiave style della sezione server
Log User = 2

Opzioni sulla riga di comando di Highway Application Server

H3[opzioni][[|]?[[!][<|>][*]]|[|]["]
ATTRIBUTO[|ATTRIBUTO[|...]]=VALORE[;[[!][<|>][*]]|[|]["]ATTRIBUTO[|ATTRIBUTO[|...]]=VALORE[;...]]]
 
Carattere Posizione Comporta Reso con la frase
! anteposto ad ATTRIBUTO negazione "NON ([ATTRIBUTO]=VALORE)"
< anteposto ad ATTRIBUTO una ricerca soddisfatta per valori <= VALORE "([ATTRIBUTO]={|VALORE})"
> anteposto ad ATTRIBUTO una ricerca soddisfatta per valori >= VALORE "([ATTRIBUTO]={VALORE|})"
| anteposto ad ATTRIBUTO una ricerca eseguita in OR qualora lo stesso identificativo di attributo sia ipetuto più volte.  
| Separatore fra attributi consente la ricerca di una chiave in OR fra attributi diversi "(([ATTRIBUTO1]=VALORE)  
O  
([ATTRIBUTO2]=VALORE))"
" anteposto ad ATTRIBUTO la delimitazione fra doppi apici di VALORE nella costruzione della frase di ricerca; codificare con &#34; in un testo html.  
 
* Introduce una delle seguenti parole chiave: 
VICINANZA fattore di vicinanza delle parole per ricerca in adiacenza. Indica il numero di parole che possono trovarsi fra due termini perchè questi siano considerati adiacenti.   
Se VALORE è maggiore di 0, verranno considerati validi i documenti per i quali le parole indicate siano in adiacenza fra loro nello stesso ordine indicato in frase.  
Viceversa se VALORE è negativo, verranno considerati validi tutti i documenti per i quali le parole sono in adiacenza indipendentemente dall'ordine in cui si presentano nel documento.
TIPORICERCA identifica le caratteristiche della ricerca (vds. profilo di ricerca di SFplus).  
VALORE può assumere uno dei valori di seguito indicati oppure una somma degli stessi: 
2 per la ricerca maschile/femminile/singolare/plurale
4 per la ricerca con utilizzo del thesaurus
8 per la ricerca per somiglianza
1 per la ricerca probabilistica
16 per l'ordinamento dell'esito della ricerca
32 per il raffinamento con la selezione corrente
64 per ricerca mediante regole di navigazione
128 per la ricerca dei documenti figli
I primi tre termini sono alternativi l'uno rispetto all'altro, quindi non può essere indicata una somma nella quale compaiano due di quei valori.
Ad esempio, se si desidera una ricerca per somiglianza, probabilistica e con ordinamento finale, indicare 25.
Questo parametro può essere usato anche per porre un limite al numero massimo di documenti selezionati.
Ad esempio volendo limitare a 100 il numero di documenti selezionati eseguendo una ricerca probabilistica, il valore da assegnare a TIPORICERCA è 100*256+1 (il byte meno significativo contiene i flag). 
ORDINAMENTO: VALORE contiene l'elenco degli attributi sulla base dei quali effettuare l'ordinamento. L'elenco degli attributi consiste nella lista dei nomi di attributo separati da ',' (virgola). Per indicare un ordinamento decrescente per un attributo, inserire il nome dell'attributo stesso in minuscolo; in caso contrario inserirlo in maiuscolo.
DATA(ATTRIBUTO
[,FORMATO]):
dichiara un campo di tipo data ed istruisce per una conversione di VALORE in una forma idonea alla ricerca sulla base di quanto dichiarato in FORMATO (assunto "g/m/a" se assente).



/A<nomeancora>

viene generata una URL con questa opzione per la esecuzione automatica dei rimandi associati a un documento.

Esempio:
<A HREF=%SCRIPT%/a%CURARC%/Aancora1>Vai al doc</A>


/a<archivio>

specifica il nome dell'archivio; è anche possibile usare un riferimento numerico se si predispone una sezione [Archivi] in HICGI.INI con voci del tipo: n = archivio.
Se nella sezione [CGI] di archivio è presente la voce CDRoot, viene interpretato anche un percorso completo ottenuto sostituendo il carattere '\' con '!' (es:'c:!archivi!test.sts')

Esempio:
<FORM ALIGN=CENTER METHOD=POST ACTION="%SCRIPT%/a1/t">


/B<nnn>

richiesta della pagina precedente di browse a partire dal doc fisico <nnn>.

Esempio:
<A HREF=%SCRIPT%/a%CURARC%/B100>


/b<nnn>

richiesta della pagina successiva di browse a partire dal doc fisico <nnn>.

Esempio:
<A HREF=%SCRIPT%/a%CURARC%/b1>


/C<nomecollegamento>

viene generata una URL con questa opzione per la esecuzione dei rimandi associati a un documento.

Esempio
<A HREF=%SCRIPT%/a%CURARC%/Aancora1/Cnomecollegamento>Vai al doc</A>


/d<nnn>

specifica il numero progressivo in base 1 del documento nella selezione al quale accedere oppure l'identificativo di documento in una pagina di browse.

Esempio:
<A HREF="%SCRIPT%/a%CURARC%/s%CURSEL%/d%EVAL%(max(%CURDOC%-%PERPAGE%+1,1))/t">"</A>


/e

rende disponibili anche le tuple vuote.
Se nella header "Content-type:" della richiesta HTTP viene specificato
<FORM enctype="multipart/form-data" le tuple vuote sono comunque disponibili.


/f<idfile>

richiede di processare il file dichiarato alla voce corrispondente in HICGI.INI nella sezione [Generico] o nella sezione specifica di archivio se usato con /a.

Esempio:
<nomearchivio.ini>
[CGI]
Form Selezione = hl\asiriqbe.hl
Form Titoli = hl\asiriqbe.hl
Form Documento = hl\asiriqbe.hl
Form Vocabolario = hl\idx.hl
Classificazione = hl\altro.hl
<Riga di comando>
<A HREF=%SCRIPT%/a4/fClassificazione>Classificazione</A>


/F<idfile>

come /f ma rende disponibile in %SELDATA% la frase di ricerca generata processando le coppie chiave/valore ricevute da una form o su riga di comando (vengono ignorate le chiavi con estensione .x o .y).

Commento:
Per passare coppie chiave-valore in riga di comando senza che vengano inserite in %SELDATA%, assegnare alle tuple nomi con estensione .x o .y.
Esempio: chiave1.x=valore1


/g<nomefile> (Obsoleta)

richiesta di trasferimento di un file: a seguito di un POST generato da una 'form' di selezione alcuni browser usano ancora POST per risolvere eventuali URL all'interno del documento tornato, con disappunto del server NCSA che si rifiuta di cooperare. Usare la URL (sostituendo '/' con '!') come argomento dello Script con questa opzione. Questo meccanismo viene usato automaticamente per le URL relative ai thumbnails dell'archivio.

Commento:
Per l'accesso alle immagini, definire nei 'mapping' del server WEB per ogni drive coinvolto un alias del tipo /C/ C:/ (MAIUSCOLO!)


/H

richiesta della pagina precedente del thesaurus.
Il nome dell'attributo e la chiave di partenza vanno specificati in una coppia <nomeattributo=valore>.

Esempio:
<A HREF="/h3/h3.exe/a1/H?SOGGETTI=Ultimo">


/h

richiesta della pagina successiva del thesaurus.
Il nome dell'attributo e la chiave di partenza vanno specificati in una coppia <nomeattributo=valore>.

Esempio:
<A HREF="/h3/h3.exe/a1/h?SOGGETTI=Radice">


/i<nnn>

richiesta di una pagina di thumbnails a partire dall'immagine <nnn>
(va usata unitamente a /a, /d e /s).

Esempio:
<A HREF="%SCRIPT%/a%CURARC%/s%CURSEL%/d%EVAL%(max(%CURDOC%-%PERPAGE%+1,1))/i1">"</A>


/p<nnn>

richiesta della <nnn>esima immagine di un documento
(va usata unitamente a /d e /s).

Esempio:
<A HREF="%SCRIPT%/a%CURARC%/s%CURSEL%/d%EVAL%(max(%CURDOC%-%PERPAGE%+1,1))/p5"></A>


/q<nomecampo=valore>

specifica una condizione per la frase di ricerca
(equivalente ad una coppia chiave=valore nella query-string).

Esempio:
<A HREF="%SCRIPT%/a%CURARC%/qATTRIBUTO=valore"></A>


/r<nnn>

usata unitamente a /p specifica il gruppo all'interno del documento.
In questo caso il valore in /p viene interpretato come indice di pagina all'interno del gruppo.

Esempio:
<A HREF="%SCRIPT%/a%CURARC%/s%CURSEL%/d%EVAL%(max(%CURDOC%-%PERPAGE%+1,1))/r2/p5"></A>


/S<frasericerca>

specifica il contenuto della frase di ricerca: valorizza %SELDATA% se presente in ingresso nella richiesta in corso di elaborazione; va valorizzato con %SELDATA% nella compilazione di un link che trasmetta il contenuto della frase di ricerca.

Esempio:
<a href="%SCRIPT%/a%CURARC%/t/S%SELDATA%">


/s<filesele>

specifica l'identificativo della selezione: valorizza %CURSEL% se presente in ingresso nella richiesta in corso di elaborazione; va valorizzato con %CURSEL% nella compilazione di un link che referenzi la selezione corrente.

Esempio:
<a href="%SCRIPT%/a%CURARC%/s%CURSEL%/d%EVAL%(%CURDOC%+%INDEX%)/S%SELDATA%">


/T<tabelle>

elenco delle tabelle abilitate nel browse gerarchico.

Esempio:
<A HREF=%SCRIPT%/a%CURARC%/B100/T2,4,11>


/t

usato con /s /d e /a comporta il caricamento dello script dichiarato alla voce 'Form Titoli' della sezione [CGI] dell'ini di archivio (se assente della sezione [Generico] di hicgi.ini) per la presentazione di una pagina di titoli dei documenti selezionati a seguito di una ricerca.

Esempio:
<FORM ALIGN=CENTER METHOD=POST ACTION="%SCRIPT%/a1/t">


/V

richiesta della pagina precedente del vocabolario.
Il nome dell'attributo e la chiave di partenza vanno specificati in una coppia <nomeattributo=valore.

Esempio:
<A HREF="%SCRIPT%/a%CURARC%/V?OGGETTO=ZZZZ"></A>


/v

richiesta della pagina succesiva del vocabolario.
il nome dell'attributo e la chiave di partenza vanno specificati in una coppia <nomeattributo=valore.

Esempio:
<A HREF="%SCRIPT%/a1/v?OGGETTO=AAAA">

N.B.: Le funzioni di vocabolario e thesaurus sono disponibili solo nella versione 32 e richiedono il modulo thlib.dll.

Il linguaggio degli script.

Segue un elenco alfabetico degli elementi del linguaggio.
Ogni elemento è preceduto da un termine che lo classifica in una delle seguenti categorie:

DECLARATION
il costrutto che segue è usato per la dichiarazione di una variabile o di una funzione.

DIRECTIVE
introduce una istruzione o un costrutto usati per il controllo della esecuzione. Un costrutto di questo tipo che delimiti un blocco di istruzioni, NON definisce una regione di visibilità per le variabili dichiarate al suo interno

FLOAT
una variabile di tipo FLOAT o una funzione che torna un oggetto di tipo FLOAT.

NUMBER
una variabile di tipo NUMBER o una funzione che torna un oggetto di tipo NUMBER.

STATEMENT
introduce una istruzione o un costrutto usati per il controllo della esecuzione. Un costrutto di questo tipo che delimiti un blocco di istruzioni, definisce una regione di visibilità per le variabili dichiarate al suo interno.

STRING
una variabile di tipo STRING o una funzione che torna un oggetto di tipo STRING.

VOID
una funzione che non ha un valore di ritorno.

N.B.: le espressioni fra [ ] si intendono opzionali.


NUMBER %4CALL%
Scopo Consente di eseguire una ricerca sui record del database oppure sul vocabolario verticale.

Sintassi %4CALL% (%STRING% parametro1, %STRING% parametro2, %STRING% parametro3, %STRING% parametro4, %NUMBER% parametro5)

le funzioni gestite, determinate da parametro1 sono:
"Cerca";
"ThVerticale".

La funzione Cerca:

1. "Cerca"
Costante che risolve la molteplicità d'uso della funzione %4CALL%.

2. Frase
Indica la frase di ricerca.
Ignorato in caso di ricerca dei documenti 'figli' (Tiporicerca=128);
In caso di ricerca mediante regole di navigazione (Tiporicerca=64) contiene l'identificativo della regola stessa.

3. Vicinanza
Esprime il fattore di vicinanza delle parole per ricerca in adiacenza e cioè indica il numero di parole che possono trovarsi fra due termini perchè questi siano considerati adiacenti.
Se viene espresso un VALORE maggiore di 0, verranno considerati validi i documenti per i quali le parole indicate siano in adiacenza fra loro nello stesso ordine indicato in frase. Viceversa se è negativo, verranno considerati validi tutti i documenti per i quali le parole sono in adiacenza indipendentemente dall'ordine in cui si presentano nel documento.
In caso di ricerca dei documenti 'figli' (Tiporicerca=128) contiene il numero fisico del documento 'padre'.
Ignorato in caso di ricerca mediante regole di navigazione (Tiporicerca=64)

4. Tiporicerca
Identifica le caratteristiche della ricerca (vds. profilo di ricerca di SFplus).
Può assumere uno dei valori di seguito indicati oppure una somma degli stessi:

I primi tre termini sono alternativi l'uno rispetto all'altro, quindi non può essere indicata una somma nella quale compaiano due di quei valori.
Ad esempio, se si desidera una ricerca per somiglianza, probabilistica e con ordinamento finale, indicare 25
Questo parametro può essere usato anche per porre un limite al numero massimo di documenti selezionati. Ad esempio volendo limitare a 100 il numero di documenti selezionati eseguendo una ricerca probabilistica, il valore da assegnare a TIPORICERCA è 100*256+1 (il byte meno significativo contiene i flag).

5. AttributiSort
Contiene l'elenco degli attributi sulla base dei quali effettuare l'ordinamento.
L'elenco degli attributi consiste nella lista dei nomi di attributo separati da ',' (virgola). Per indicare un ordinamento decrescente per un attributo, inserire il nome dell'attributo stesso in minuscolo; in caso contrario inserirlo in maiuscolo.
Ignorato in caso di ricerca dei documenti 'figli' (Tiporicerca=128)
In caso di ricerca mediante regole di navigazione (Tiporicerca=64) contiene il nome del file di selezione o il range dei documenti fisici (espresso con la sintassi '*<Inizio>*<Fine>') che identificano il punto di partenza della navigazione.

Valore restituito valore numerico
In caso di esito positivo (valore di ritorno diverso da zero), in uscita vengono impostate di conseguenza le variabili %TOTSEL%, %CURSEL% e %SELDATA% mentre %CURDOC% conserva il valore precedente.

Vedere anche %TOTSEL%, %CURSEL%, %SELDATA%, %CURDOC%, %CURSELPATH%, %GETTEMPFILENAME%, %DOCTITLE%

Esempio:

%STRING%(fraseric, "")
%STRCPY%(fraseric, "[TABELLA]=\"<nometabella>\")"
%4CALL%("Cerca", fraseric, 1, 0, "")

La funzione ThVerticale:

1. "ThVerticale"
Costante che risolve la molteplicità d'uso della funzione %4CALL%.

2. Attributo
indica il nome dell'attributo;

3. ChiavePosizionamento
consente di specificare il termine sul quale cercare di posizionarsi;

4. Direzione
specifica la direzione (1 verso il basso e 2 verso alto);

5. NumElementi
indica il numero massimo di elementi da tornare;

6. ParteComune (opzionale)
indica un valore che deve essere comune a tutti gli elementi ritornati dalla funzione.

Valore restituito valore alfanumerico

torna 0 in caso di errori, altrimenti il 1 (Falso=0, Vero=1).
In uscita, se la richiesta ha esito positivo, vengono valorizzate di conseguenza le variabili relative agli indici (
%VITEMS%, %VITEM%, ...)

Esempio

%STRING%(kpos, "")
%STRING%(kcommon, "")
%NUMBER%(ndir, 0)
%STRCPY%(kpos, " A*")
%STRCPY%(kcommon, " ")
%NUMCPY%(ndir, 1)
%4CALL%("ThVerticale", %CURATTR%, kpos, ndir, %MAXVITEMS%, kcommon)


NUMBER %5CALL%
Scopo Consente di eseguire una ricerca sul Thesauro gerarchcico oppure sul Browse gerarchcico.

Sintassi %4CALL% (%STRING% parametro1, %STRING% parametro2, %STRING% parametro3, %NUMBER% parametro4, %NUMBER% parametro5, %STRING% parametro6)

le funzioni gestite, determinate da parametro1 sono:
"ThGerarchico";
"BrowseGerarchico".

La funzione ThGerarchico:

1. "ThGerarchico"
Costante che risolve la molteplicità d'uso della funzione %5CALL%.

2. Attributo
Indica l'attributo che si intende interrogare sul Thesauro gerarchico;
(1 rappresenta verso il basso; 2 verso l'alto).

3. ChiavePosizionamento
Indica la chiave sulla quale posizionarsi all'atto dell'apertura del Thesauro

4. Direzione
Indica la direzione verso la quale orientare le ricerca rispetto alla chiave di posizionamento

5. NumElementi
Indica il numero massimo di elementi che si vuole ricevere di ritorno dalla interrogazione al Thesauro.

6. Relazioni
Lista, separata da spazi, delle tipologie di relazioni, in forma sintetica, che si intende filtrare rispetto alla richiesta. Le tipiche tipologie di relazioni che si possono richiedere al modulo Thesauro sono :

per esempio:
     forma sintetica                     forma estesa
   -----------------------------------------------------------
        NT                             "Termini specifici"
        BT                             "Termini generici"
        RT                             "Termini in relazione"
        SN                             "Note"
        SN                             "Utilizzare"
        UF                             "Utilizzato per"
        VI                             "Vincolato a"
        ICO                            "Classifica"
        IC                             "Classificato in"
        IN                             "In"

Le tipologie di relazioni che si possono instaurare fra i vari termini dichiarati al Thesauro in realta non pongono limiti (la lista sopra indicata è un tipico esempio di relazioni) : l'utente può generare i propri personali tipi di relazione fra i termini dichiarandoli nel file <nomearchivio>.dsp. Per maggiori informazioni Consultare il manuale del Thesauro.

Valore restituito valore numerico
Torna 0 in caso di errore generico.
In caso di esito positivo vengono valorizzate le variabili %PARENT%, %REL%() e %CHILD%(), mentre %VITEMS% contiene il numero totale di relazioni trovate e %VITEM%() contiene il valore delle chiavi individuate.

Vedere anche %CHILD%, %HIER%, %INVREL%, %PARENT%, %REL%, %RELDESCR%, %RELNOTE%, %RELPOS%, %THSCOUNT%, %THSDELETE%, %THSGREATER%, %THSGROWSELE%, %THSINSERT%, %THSITEM%, %THSKEYS%, %THSNEXT%, %THSPREV%, %THSREAD%, %THSREL2KEY%, %THSRELDESCR%, %THVDELETE%, %THVINSERT%, %THVNEXT%, %THVPREV%, %THVREAD%, %TOTREL%

Esempio
%NUMBER%(ret, %5CALL%("ThGerarchico", "INDIR", "Piazza", 1, 10, "BT, NT"))
%IF%(ret)
 %REPEAT%(1, %VITEMS%)
  %WRITE%(%ITEM%)
 %ENDREPEAT%
%ENDIF%

Program output
Piazza dei Mille
Piazza del Popolo
....

Annotazioni

Dalla release 3.2.5.6 di Highway Application Server è consentita l'interrogazione del thesauro dei vincolati anche se residente sul file <nomearchivio>.thv;
sono necessarie le seguenti impostazioni generali:

Esempio

La funzione BrowseGerarchico:

1. "ThGerarchico"
Costante che risolve la molteplicità d'uso della funzione %5CALL%.

2. Stato
documento di riferimento e, opzionalmente, la selezione con cui limitare la navigazione (codificata come da riga comandi e preceduta del carattere '@') e lo stato del BrowseGerarchico separati da virgola.
Per meglio specificare, all'interno del parametro Stato, possono essere strutturate le informazioni suddette; risulta chiaro che la composizione di Stato con queste modalità, deve essere fatta concatenando i valori all'interno di una variabile, che diverrà poi il parametro Stato, e che Highway Application Server provvederà a distinguere durante l'elaborazione interna della chiamata %5CALL%.
p.es. startdoc, [@sele], stato
Per selezione si instende il valore tipico di %SELPATH%, che restringerà la selezione all'insieme dei documenti idonei.

3. Tebelle
l'elenco delle tabelle utili (id numerico) separate da virgola, una stringa vuota implica tutte le tabelle.

4. Documento
identifica il documento da esplodere/implodere;
-1 se non è specificato.

5. Modo
può aasumere i seguenti valori :

6. NumElementi
numero massimo di elementi da tornare.

Valore restituito valore numerico
Torna 0 in caso di errore generico.
Torna 1 in caso di esito positivo; verranno valorizzate le variabili
%BITEMS%, %BITEM%, %BSTAT%

Vedere anche %BDOC%, %BEXP%, %BFIRST%, %BITEM%, %BITEMS%, %BLAST%, %BPURE%, %BSONS%, %BUPDATE%, %BBROTHERS%, %BINVALID%

Esempio
%STRING%(stato, "")
%STRCPY%(stato, %NUMDOC%)
%STRCAT%(stato, ",")
%STRCAT%(stato, %BSTAT%)
<!-- esegue una richiesta di browse gerarchico a partire dal documento
indicato con %NUMDOC%; esegue la ricerca su tutte le tabelle;
espande il ramo individuato da %NUMDOC%; esegue un posizionamento sul
browse gerarchico; ritorna il numero di elementi indicati dalla variabile
abientale d'archivio-->

%IF%(%5CALL%("BrowseGerarchico", stato, "", %NUMDOC%, 7, "Max Righe Browse"))
 <!-- elaborazione righe ritornate dalla 5CALL -->
%ELSE%
 <!--errore generico -->
%ENDIF%


STRING %ANSI2OEM%
Scopo Converte una stringa da formato ANSI in formato OEM.

Sintassi
%STRING% %ANSI2OEM% (%STRING% valore)

Descrizione Dato un valore in formato ANSI, viene restituito un valore in formato OEM.
In particolare vengono convertite le lettere con valore ASCII superiore a 127.

Valore restituito valore alfanumerico
Torna una stringa valorizzata in caso di conversione avvenuta;
Torna stringa vuota in caso di errore generico.

Vedere anche %OEM2ANSI%, Funzioni di conversione

Esempio
%STRING%(str, "Bogotà, città Venezuelana")<br>
%WRITE%(%ANSI2OEM%(str))

Program output
Bogot…, citt… Venezuelana


NUMBER %ADMIN%
Scopo Consente di inibire/ripristinare l'accesso all'archivio corrente

Sintassi
%NUMBER% %ADMIN% (%NUMBER% mode,
    %number% timeout)

Descrizione %ADMIN% viene usato per inibire e per ripristinare l'accesso all'archivio corrente.
Mode assume il valore 0 per inibire e 1 per ripristinare.
Timeout, espresso in secondi, imposta l'intervallo di tempo fra il momento della richiesta di inibire/ripristinare l'accesso e il momento in cui la richiesta viene effettivamente eseguita dal server.

Valore restituito valore numerico
Torna 0 in caso di errore generico.
Torna 1 in caso di successo.

Vedere anche %DBLOCK%, %DBUNLOCK%

Esempio
%ADMIN%(0, 30)


FLOT %ATOF%
Scopo Consente di convertire un valore in formato stringa in un valore a virgola mobile.

Sintassi
%FLOAT% %ATOF% (%STRING% valore)

Descrizione %ATOF% consente di convertire un valore numerico espresso in formato stringa nel corrispettivo valore numerico decimale a virgola mobile.

Valore restituito valore numerico decimale a virgola mobile.
Torna 0 in caso di errore generico o stringa vuota.

Vedere anche %FTOA%, Funzioni di conversione

Esempio
%ATOF%("25,8987")

Program output
25,8987


NUMBER %ATOI%
Scopo Consente di convertire un valore stringa in un valore numerico.

Sintassi
%NUMBER% %ATOI% (%STRING% valore)

Descrizione consente di convertire un valore numerico espresso in formato stringa nel corrispettivo tipo %NUMBER%.
Il tentativo di convertire una stringa che rappresenta un numero con virgola, genera un valore intero troncando, senza arrotondamenti, la parte decimale

Valore restituito valore numerico
Torna 0 in caso di errore generico.

Vedere anche %ITOA%. Funzioni di conversione

Esempio
%STRING%(n_int1, "123456")<br>
%STRING%(n_int2, "123456,333")<br>
%STRING%(n_int3, "123456,999")<br>
%WRITE%(%ITOA%(%ATOI%(n_int1)))<br>
%WRITE%(%ITOA%(%ATOI%(n_int2)))<br>
%WRITE%(%ITOA%(%ATOI%(n_int3)))

Program output
123456
123456
123456


NUMBER %ATTACHADD%
Scopo genera un identificativo numerico unico d'archivio relativo al file indicato.

Sintassi
%NUMBER% %ATTACHADD% (%STRING%* idout,
    %STRING% nomefile)

Descrizione consente di ottenere un identificativo univoco, a livello d'archivio, che potrà essere utilizzato per associare un qualsiasi tipo di file ad un documento.
idout è una variabile, che dovrà essere dichiarata dal chiamante, che verrà valorizzata dal server al momento della chiamata alla %ATTACHADD%.
nomefile deve contenere percorso + nomefile + estensione (o comunque identificare in modo non ambiguo) dell'allegato che si intende creare.
Verificato il valore di ritorno della funzione, che ci conferma il buon esito dell'operazione, salvare l'idout in un apposito attributo del documento con il quale desideriamo eseguire l'associazione (tipicamente idout andrebbe salvato in un attributo multiistanza che consente la gestione di più allegati).
La chiamata alla funzione con esito positivo esegue una copia del file allegato al documento in un sottodirettorio dell'archivio con lo stesso nome dell'archivio.
In questo sottodirettorio saranno organizzati da Highway Application Server gli allegati.
Il file originale potrà essere rimosso.
E' necessario che un archivio sia aperto e che il documento al quale si intende associare i/il documenti/o sia aperto in modalità inserimento o modifica.

Valore restituito valore numerico
Torna 0 in caso di errore generico;
Torna 1 in caso di operazione avvenuta con successo.

Vedere anche %ATTACHCHG%, %ATTACHGET%

Esempio
%STRING%(idAdd, "")<br>
%IF%(%ATTACHADD%(idAdd, "c:\App32\myapp\allegati\allegato1.doc"))
 <!-- operazioni di salvataggio di idAdd sul documento --br>
%ENDIF%


NUMBER %ATTACHCHG%
Scopo sostituire i file allegati ad un documento.

Sintassi
%NUMBER% %ATTACHCHG% (%STRING% id,
    %STRING% nomefile)

Descrizione Tramite l'uso di queSta funzione è possibile eseguire una sostituzione dei file precedentemente allegati ad un documento tramite la %ATTACHADD%.
I parametri richiesti individuano il riferimento all'allegato da sostituire (id ottenuto dalla precedente operazione di %ATTACHADD%) e il nome del nuovo file, completo di percorso ed estensione, da allegare (nomefile).
L'identificativo numerico che individua una allegato dovrà essere gestito dall'applicazione, quindi andrà salvato in un opportuno attributo del documento stesso.
Highway Application Server non tiene traccia di questo legame, si occupa di salvare e recuperare l'allegato individuato dall' id senza conoscere a quale documento si riferisca.
Ad operazione ultimata con esito positivo, verrà eliminato il precedente file e sarà salvata una copia di del file indicato.
I file allegati saranno salvati in un sottodirettorio dell'archivio ('<nomearchivio>/000000') all'interno del quale sarano gestiti eventuali sottodiretori.
Per quanto riguarda l'eventuale indicizzazione dei file allegati, questa deve essere gestita dall'applicazione mediante l'uso delle funzionalità offerta da Highway Imaging Control; e proprio a causa delle problematiche che si incontrano nella sostituzione del testo da indicizzare, la %ATTACHCHG% non consente la sostituzione di allegati indicizzabili.
Allo scopo è definita una impostazione nel file <nomearchivio>.ini:
[ALLEGATI]
substext=<lista suffissi nomi file>

nella quale indicare i tipi di file per i quali è consentita la sostituzione (p.e. 'gif', 'jpeg', 'jpg' ...).

Valore restituito valore numerico
Torna 0 in caso di errore generico.
Torna 1 in caso di operazione eseguita correttamente.

Vedere anche %ATTACHADD%, %ATTACHGET%

Esempio
%STRING%(id, "")
<!-- prelevo il pid dall'attributo predisposto a conservare l'associazione documento-allegato, che sarà multiistanza per ovvi motivi -->
%STRCPY%(id,%ATTROW%(<nomeattributo>, <riga>))
%IF%(%ATTACHCHG%(id, "c:\App32\myapp\allegati\nuovo_allegato.jpg"))
 <!-- operazioni di scrittura sul documento del id associato all'allegato -->
%ENDIF%


NUMBER %ATTACHGET%
Scopo Permette di ottenere percorso + nomefile + estensione associato all'identificativo indicato

Sintassi
%NUMBER% %ATTACHGET% (%STRING% nomefile,
    %STRING% idin)

Descrizione consente di recuperare il nome del file allegato associato al documento corrente con l'identificativo idin.
nomefile è una variabile di tipo stringa, che dovrà essere dichiarata dal chiamante, che verrà valorizzata in uscita.
Il contenuto di nomefile sarà un percorso completo che indica il file allegato.
idin contiene l'identificativo univoco, a livello d'archivio, che punta al file allegato che otteremo in nomefile.

Valore restituito valore numerico
Torna 0 in caso di errore generico;
Torna 1 in caso di operazione avvenuta con successo.

Vedere anche %ATTACHADD%, %ATTACHCHG%

Esempio
%STRING%(pid, "")
%STRING%(nomefile, "")
%STRCPY%(pid,%ATTROW%(<nomeattributo>, <riga>))
%ECHOOFF%%ATTACHGET%(nomefile, pid)%ECHON%


NUMBER %ATTRGROUP%
Scopo consente di identificare il gruppo di appartenenza di un determinato attributo

Sintassi
%NUMBER% %ATTRGROUP% (%NUMBER% indicetabella,
    %NUMBER% indiceattributo)

Descrizione Permette di leggere l'identificativo di gruppo di appartenenza di un determinato attributo individuato tramite gli indici della tabella di appartenenza e dell'attributo stesso.

Valore restituito valore numerico
Torna identificativo in base 1 del gruppo di apparteneneza;
Torna 0 in caso di errore generico o in caso di attributo che non appartiene ad alcun gruppo.

Vedere anche %GROUPS%, %PERGROUP%

Esempio
%WRITE%(%ITOA%(%ATTRGROUP%(%NUMTABELLA%("TABELLA1"), %NUMATTR%(%NUMTABELLA%("TABELLA1"), "ATTR1"))))

Program output
5


STRING %ATTRIB%
Scopo Restituisce il contenuto dell'attributo specificato

Sintassi
%STRING% %ATTRIB% (%STRING% nome_attributo[,
    %STRING% to_crlf[,
    %NUMBER% flg_html]])

Descrizione utilizzato per recuperare il contenuto di una attributo del documento corrente.
nome_attributo contiene il nome dell'attributo di cui vogliamo visualizzare il valore.
Il suo contenuto viene restituito sostituendo le sequenze di CR-LF con quanto indicato in to_crlf, opzionalmente inviato come secondo parametro o con il tag <BR> se questo non è stato indicato.
Se non diversamente specificato (dal flg_html), i caratteri speciali del formato html (per esempio i tag) non saranno interpretati dal browser.
to_crlf viene utilizzato solitamente per riformattare il contenuto di attributi a lunghezza variabile ("Multiriga" e "Multistanza").
flg_html consente di indicare quale tipo conversione vogliamo applicare al contenuto dell'attributo.
Impostandolo a 0 (zero) indicheremo ad Highway Application Server che i tag html contenuti devono essere interpretati;
al contrario, impostando flg_html = 1 (default) i tag html contenuti diverranno semplice testo non interpretato dal browser.
flg_html viene utilizzato quando si intende utilizzare il contenuto dell'attributo come 'codice' html interpretato.

Valore restituito valore alfanumerico
Torna il contenuto dell'attributo indicato.

Vedere anche %FATTRIB%, %ATTRVAL%

Esempio
%ATTRIB%(AUTORI)

Program output
<A href="c:\homepage\Pietro Galli.html">Pietro Galli</A><BR>
<A href="c:\homepage\Fiorenza Gini.html">Fiorenza Gini</A><BR>
<A href="c:\homepage\Filippo Bigotti.html">Filippo Bigotti</A>

Esempio
%ATTRIB%(AUTORI,"; ")

Program output
<A href="c:\homepage\Pietro Galli.html">Pietro Galli</A>; <A href="c:\homepage\Fiorenza Gini.html">Fiorenza Gini</A>; <A href="c:\homepage\Filippo Bigotti.html">Filippo Bigotti</A>

Esempio
%ATTRIB%(AUTORI, "; ", 0)

Program output
Pietro GalliFiorenza GiniFilippo Bigotti


NUMBER %ATTRINFO%
Scopo Restituisce informazioni sulle proprietà dell'attributo indicato

Sintassi
%NUMBER% %ATTRINFO% (%NUMBER% indicetabella,
    %NUMBER% indiceattributo)

Descrizione utilizzato per richiedere ad Highway Seerver informazioni sulle proprietà di un determinato attributo.
I parametri numerici devono contenere gli indici della tabella e dell'attributo (indiceattributo = 0 rappresenta l'dentificativo della tabella).
Il valore ottenuto sarà la somma binaria dei valori delle proprietà indicate nella seguente tabella.
Chiave 0x00000001
Multiriga 0x00000002
Seriale 0x00000004
Obbligatorio 0x00000008
Derivante 0x00000010
CheckLimits 0x00000020
MultiFont 0x00000040
MultiIstanza 0x00000080
IWord 0x00000100
Esterno 0x00000200
Editabile 0x00000400
Multivalore 0x00000800
Esterno rich. 0x00001000
LegaAdEikon 0x00002000
Tabellare 0x00004000
Immagini 0x00010000
ImgTit 0x00020000
le proprietà non direttamente mappabili fra quelle esposte dagli attributi attraverso il modulo CREA_ARC sono rintracciabili nella sezione Programmazione di base fra le impostazioni eseguibili tramite <nome_archivio>.ini
Per la verifica delle singole proprietà bisognerà procedere al confronto binario fra il valore ottenuto tramite la %ATTRINFO% e la corrispondente costante esadecimale associata alla proprietà della quale vogliamo ottenere informazioni.
Dal confronto binario otterremo un valore di ritorno booleano:
Vero indica che l'attributo verifica la proprietà espressa con la costante esadecimale;
Falso indica che l'attributo non ha questa proprietà.

Valore restituito valore numerico
Torna la somma, in formato esadecimale, dei valori delle proprietà dell'attributo inicato.

Vedere anche %NUMTABELLA%, %NUMATTR%

Esempio
%NUMBER%(idtab, 0)
%NUMBER%(idattr, 0)
%NUMBER%(infoattr, 0)
%NUMCPY%(idtab, %NUMTABELLA%(<nometabella>))
%NUMCPY%(idattr, %NUMATTR%(idtab, <nomeattributo>))
%NUMCPY%(infoattr, %ATTRINFO%(idtab, idattr))
<!-- verifico se questo attributo è multiistanza -->
%IF%(infoattr & 0x00000080)
  <!-- vero, attributo multiistanza -->
%ELSE%
  <!-- falso, attributo NON multiistanza -->
%ENDIF%


NUMBER %ATTRMAXSIZE%
Scopo Restituisce la dimensione massima disponibile per il contenuto dell'attributo specificato

Sintassi
%NUMBER% %ATTRMAXSIZE% (%NUMBER% indicetabella,
    %NUMBER% indiceattributo)

Descrizione utilizzato per richiedere al server qual'è il numero massimo di caratteri che possono essere contenuti nell'attributo indicato.
indice_tabella in base 0;
indice_attributo in base 1 (0 si riferisce all'identificativo di tabella e ritorna sempre 1).

Valore restituito valore numerico
Torna la lunghezza massima consentita del valore digitabile.
Torna 0 per attributi a lunghezza variabile.
Torna -1 per errore generico.
Per indice_attributo = 0 torna 1.

Vedere anche %ATTRSIZE%, %NUMTABELLA%, %NUMATTR%

Esempio
%ATTRMAXSIZE%(1, %NUMATTR%(1, "AUTORE"))

Program output
<!-- dimensione massima attributo AUTORE = 128 caratteri -->
128

Esempio
%ATTRMAXSIZE%(1, %NUMATTR%(1, "DESCRIZIONE"))

Program output
<!-- l'attributo DESCRIZIONE è un multiriga (lunghezza variabile) -->
0


STRING %ATTRNAME%
Scopo Restituisce il nome dell'attributo specificato

Sintassi
%STRING% %ATTRNAME% (%NUMBER% indice_tabella,
    %NUMBER% indice_attributo)

Descrizione consente di recuperare il nome dell'attributo individuato dall'indice della tabella e dell'attributo.
indice_tabella in base 0;
indice_attributo in base 1 (0 si riferisce all'identificativo di tabella e ritorna sempre "TIPOREC").

Valore restituito valore alfanumerico
Torna il nome dell'attributo indicato.
Torna stringa vuota se gli indici indicati non fanno riferimento ad una tabella o attributo esistente.

Vedere anche %NUMATTR%, %NUMTABELLA%

Esempio
%NUMBER%(idtab, %NUMTABELLA%("DOCUMENTI"))
%REPEAT%(0, %TOTATTR%(idtab))
 %ATTRNAME%(idtab, %index%)<br>
%ENDREPEAT%

Program output
TIPOREC
NRECORD
ATTR1
ATTR2
ATTR3
ATTR4
ATTR5


STRING %ATTROW%
Scopo Restituisce il contenuto di una determinata riga dell'attributo multiistanza o multiriga specificato.

Sintassi
%STRING% %ATTROW% (%STRING% nome_attributo,
    %NUMBER% numero_riga)

Descrizione usato per visualizzare il contenuto di una specifica riga indicata in numero_riga di un attributo multiistanza o multiriga all'interno di una form HTML.
numero_riga in base 1.
utilizzato per estrarre singole istanze/righe da attributi di tipo "Multistanza" o "Multiriga".

Valore restituito valore alfanumerico
Torna il contenuto della riga dell'attributo indicato.
Torna stringa vuota se in numero_riga inesistente.
Torna un errore di compilazione se numero_riga = 0.

Vedere anche %ATTROWS%, %NUMROWS%, %CHKROWS%

Esempio
<!-- per essere certi che un attributo sia vuoto
ne estraggo il contenuto sostituendo i caratteri di \r\n di fine riga
con nessuna altro carattere -->
%IF%(%STRLEN%(%ATTRIB%("ATTR1", "")))
 <!-- l'attributo non è vuoto -->
 %REPEAT%(1, %ATTROWS%("TELEFONO"))
  %ATTROW%("TELEFONO", %INDEX%)
 %ENDREPEAT%
%ENDIF%

Program output
051 45 08 44 051 45 19 42

Annotazioni

Vedi %CHKROWS%, Vedi Esempio


NUMBER %ATTROWS%
Scopo Restituisce il numero di righe dell'attributo specificato.

Sintassi
%NUMBER% %ATTROWS% (%STRING% nome_attributo)

Descrizione usato per conoscere il numero di righe di un attributo ("Multiriga" o "Multistanza").
torna il numero dir CR-LF se la prima riga non è vuota, altrimenti il numero di CR-LF - 1.

Valore restituito valore numerico
Torna il numero delle righe (valorizate e non) dell'attributo.
Torna sempre 1 se l'attributo specificato non è ne Multistanza ne Multiriga.
Torna sempre 0 in caso di errore generico.

Vedere anche %ATTROW%, %NUMROWS%, %CHKROWS%

Esempio
%NUMBER%(nrighe, %ATTROWS%("ATTR1"))
%REPEAT%(1, nrighe)
 %IF%(%STRLEN%(%ATTROW%("ATTR1", %INDEX%)) && %INDEX% == 1)
  %NUMCPY%(nrighe, nrighe + 1)
  %CONTINUE%
 %ENDIF%
 %ATTROW%("ATTR1", %INDEX%)<br>
%ENDREPEAT%

Program output
<!-- si suppone che la prima riga sia vuota -->
<valore riga 2>
<valore riga 3>
....
<valore riga n>

Annotazioni

Vedi %CHKROWS%, Vedi Esempio


NUMBER %ATTRSIZE%
Scopo Restituisce la dimensione, in bytes, dell'attributo specificato.

Sintassi
%NUMBER% %ATTRSIZE% (%STRING% nome_attributo)

Descrizione torna la dimensione in bytes, del contenuto di nome_attributo.
Per dimensione in bytes si intende l'effettivo spazio allocato per contenere il valore dell'attributo così com'è mostrato a video più tutti i caratteri speciali utilizzati per gli eventuali cr/lf, il carattere nullo di fine stringa, eventuali extra-bytes richiesti per attributi con proprietà particolari (multifont).
Il calcolo fornito dalla %ATTRSIZE% torna il numero di bytes che compongono il contenuto originale dell'attributo, escluse eventuali sostituzioni eseguite tramite la %ATTRIB% o altre funzioni che eseguono conversioni prima di stampare a video.
Si precisa inoltre che, in caso di attributi di tipo numerico o data, la dimensione tornata da %ATTRSIZE% è data dalla rappresentazione in formato stringa del dato.

Valore restituito valore numerico
Torna la lunghezza del valore memorizzato nell'attributo indicato.

Vedere anche %STRLEN%

Esempio
<!-- attributto multiistanza
contiene:
valore1\r\n
valore2\r\n -->
%ATTRSIZE%("ATTR1")

Program output
18

Esempio
<!-- attributto multifont
contiene: valore1 -->
%ATTRSIZE%("ATTR1")

Program output
208

Esempio
<!-- attributto monovalore
contiene: valore1 -->
%ATTRSIZE%("ATTR1")

Program output
7


NUMBER %ATTRTYPE%
Scopo Restituisce la tipologia dei dati gestiti dall'attributo indicato.

Sintassi
%NUMBER% %ATTRTYPE% (%NUMBER% indice_tabella,
    %NUMBER% indice_attributo)

Descrizione consente di richiedere al server la tipologia dei dati che possono essere gestiti dall'attributo individuato mediante gli indici della tabella e dell'attributo stesso;
indice_tabella in base 0
indice_attributo in base 1 (0 si riferisce all'identificativo di tabella).
La base dati HIGHWAY gestisce dati di tipo 'Numerico', 'Alfanumerico' e 'Data'.
Il tipo dei dati di un attributo viene determinato al momento della creazione della struttura della base dati stessa.
Ogni successiva modifica, se vi sono documenti presenti, comporta una reindicizzazione dell'archivio che convertirà i dati da un tipo verso un altro.
Il valore ottenuto dalla %ATTRTYPE% corrisponderà ad una delle seguenti costanti esadecimali:
Alfanumerico 0x0001
Numerico 0x0002
Data 0x0004

Un confronto fra il valore ottenuto e i valori suddetti determinerà la tipologia dei dati gestiti dall'attributo.
Dal confronto binario otterremo un valore di ritorno booleano:
Vero indica che l'attributo è del tipo indicato nel confronto;
Falso indica che l'attributo non è del tipo indicato nel confronto.

Valore restituito valore numerico
Torna il valore, in formato esadecimale, corrispondente al tipo di dato memorizzabile nell'attributo indicato.

Vedere anche %ATTRINFO%

Esempio %NUMBER%(idtab, 0)
%NUMBER%(idattr, 0)
%NUMBER%(tipoattr, 0)
%NUMCPY%(idtab, %NUMTABELLA%(<nometabella>))
%NUMCPY%(idattr, %NUMATTR%(idtab, <nomeattributo>))
%NUMCPY%(tipoattr, %ATTRINFO%(idtab, idattr))
<!-- verifico il tipo di dato di questo attributo -->
%IF%(tipoattr & 0x0001)
 <!-- vero, attributo alfanumerico -->
%ELIF%(tipoattr & 0x0002)
 <!-- vero, attributo numerico -->
%ELSE%
 <!-- vero, attributo data -->
%ENDIF%


STRING %ATTRVAL%
Scopo Restituisce il valore contenuto nell'attributo del documento corrente.

Sintassi
%STRING% %ATTRVAL% (%NUMBER% indice_attributo[,
    %NUMBER%* livello])

Descrizione consente di recuperare il contenuto dell'attributo indicato.
indice_attributo contiene l'indice dell'attributo, in base 1, del quale si intende recuperare il contenuto (0 si riferisce all'identificativo di tabella).
livello è una variabile numerica, che deve essere dichiarata dall'utente, che verrà valorizzata con un identificativo numerico che rappresenta la tipologia della base dati corrente.
Su basi dati Highway assume sempre il valore 0.

Valore restituito valore alfanumerico
Torna il contenuto dell'attributo indicato.
Torna "0" in caso di errore generico.

Vedere anche %ATTRIB%

Esempio
%STRING%(idtab, %NUMTABELLA%("UTENTI"))
%NUMBER%(livello, 0)
%STRING%(val, %ATTRVAL%(%NUMATTR%(idtab, "UTENTE"), livello))
%IF%(livello != 0)
<!-- base dati HIGHWAY -->
%WRITE%(val)
%ENDIF%

Program output
Utente1


NUMBER %BBROTHERS%
Scopo Verificare che il ramo del livello specificato prosegua oltre il documento corrente.

Sintassi %BBROTHERS%(%NUMBER% riga, %NUMBER% livello)

Descrizione usato per verificare se il ramo del livello specificato del BrowseGerarchico prosegue oltre il documento corrente e quindi per verificare che l'eleemnto corrente abbia almeno un documento 'fratello'.
riga indica la riga del Browse Gerarchico sulla quale si trova il documento del quale vogliamo verificare la prosecuzione oltre livello.
livello indica il livello del ramo indicato da riga oltre il quale vogliamo verificare la prosecuzione.

Valore restituito valore numerico
Ritorno 0 indica che oltre livello non vi è prosecuzione del ramo.
Ritorno 1 indica che oltre livello il ramo prosegue con un documento 'fratello' del termine identificato da riga.

Vedere anche funzioni BrowseGerarchico

Esempio
%REPEAT%(0, %MAXBITEMS%)
%IF% (%BBROTHERS%(%INDEX%, %BLEV%(%INDEX%))))
 <IMG src="piu.gif">
%ELSE%
 <IMG src="meno.gif">
%ENDIF%
%BITEM%(%INDEX%)
%ENDREPEAT%

Program output
<!-- procedure comunali -->


NUMBER %BDOC%
Scopo Determinare il numero fisico di un documento identificato da un elemento di un Browse Gerarchico.

Sintassi %BDOC%(%NUMBER% riga)

Descrizione usato per ottenere il numero fisico di un documento identificato da un elemento di una visualizzazione gerarchica.
riga rappresenta l'elemento del Browse Gerarchico a cui fare riferimento, cioè il valore del contatore delle righe in quella posizione rispetto alle righe individuate dalla chiamata %5CALL%(BrowseGerarchico) o dall'opzione di riga di comando /b(o /B).
Il valore del documento fisico ritornato dalla funzione potrà essere utilizzato per il caricamento del documento stesso.

Valore restituito valore numerico
Torna il numero fisico del documento.
Torna -1 in caso di errore generico.

Vedere anche %CURDOC%, funzioni BrowseGerarchico

Esempio
%REPEAT%(0, %MAXBITEMS%)
 <A href="%SCRIPT%/a%CURARC%/s%CURSEL%/d%BDOC%(%INDEX%)>%BITEM%(%INDEX%)</A>
%ENDREPEAT%


NUMBER %BEXP%
Scopo Stabilire se l'elemento di BrowseGerarchico in esame è espanso, cioè se mostra i documenti figli.

Sintassi %BEXP%(%NUMBER% riga)

Descrizione usato per stabilire se la gerarchia di un determinato elemento sia già stata esplosa oppure sia ancora compressa. Un elemento si dice esploso quando il browse gerarchico mostra i termini figli, come in una struttura a direttori (tipica di 'Gestione risorse' di Windows)
Un ritorno uguale a 0 indica che l'elemento identificato da riga non è esploso;
1 indica che la struttura gerarchica in questo punto è già stata espansa.

Valore restituito valore numerico
Torna 1 se la albero gerarchico del termine è esploso.
Torna 0 se la albero gerarchico del termine è compresso.

Vedere anche %BBROTHERS%, funzioni BrowseGerarchico

Esempio
%IF%(%BEXP%(INDEX))
 <!-- elemento già esplosa -->
%ELSE%
 <!-- espando la struttura -->
%ENDIF%


NUMBER %BFIRST%
Scopo Determinare se l'elemento identificato dal BrowseGerarchico sia il primo della gerarchia.

Sintassi %BFIRST%(%NUMBER% riga)

Descrizione usato per verificare che il documento corrente sia il primo nella gerarchia.

Valore restituito valore numerico
Torna 1 se l'elemento indicato da riga è il primo dell'albero gerarchico.
Torna 0 se l'elemento indicato da riga non è il primo dell'albero gerarchico.

Vedere anche %BLAST%, funzioni BrowseGerarchico

Esempio
%IF%(%BFIRT%(%INDEX%))
 <!-- primo livello gerarchico -->
%ELSE%
 <!-- livello superiore al primo -->
%ENDIF%


STRING %BIN2HEX%
Scopo convertire in formato esadecimale un determinato valore in formato binario.

Sintassi %BIN2HEX%(%STRING% string_with_hex_value)

Descrizione dato un buffer di tipo %STRING% che contiene una valore binario, la BINH2EX ne converte il contenuto in un valore esadecimale e lo memorizza in una stringa che viene tornata al chiamante.

Valore restituito valore alfanumerico
Torna il valore di buffer convertito in esadecimale.
Torna un buffer di tipo %STRING% contenente l'esito della conversione.

Vedere anche %HEX2BIN%, Funzioni di conversione

Esempio
vedi %HEX2BIN%


NUMBER %BINVALID%
Scopo Determinare se il documento specificato sia cancellato o inaccessibile.

Sintassi %BINVALID%(%NUMBER% riga)

Descrizione usato per testare l'inaccessibilità ad un documento e cioè se questo è stato cancellato o risulta inaccessibile per altri motivi.

Valore restituito valore numerico
Torna 1 se il documento identificato da riga è cancellato o inaccessibile.
Torna 0 se il documento identificato da riga è disponibile.

Vedere anche funzioni BrowseGerarchico

Esempio
%NUMBER%(ret, 0)
%NUMCPY%(ret, %5CALL%("BrowseGerarchico", "0", "", -1, 1, %MAXBITEMS%))
%IF%(ret)
 %REPEAT%(1, %BITEMS%)
  %IF%(%BINVALID%(%INDEX%) != 0)
   %BITEM%(%INDEX%)
  %ENDIF%
 %ENDREPEAT%
%ENDIF%


NUMBER %BITAND%
Scopo Eseguire la somma binaria di due valori numerici.

Sintassi %BITAND%(%NUMBER% n1, %NUMBER% n2)

Descrizione usato eseguire la somma binaria fra due valori numerici.
Utile per verificare le proprietà degli attributi.

Valore restituito valore numerico
Torna la somma binaria di n1 e n2.
Torna 0 in caso di errore generico.

Vedere anche Operatori

Esempio
%NUMBER%(idtab, 0)
%NUMBER%(idattr, 0)
%NUMBER%(infoattr, 0)
%NUMBER%(prop, 0)
%NUMCPY%(idtab, %NUMTABELLA%(<nometabella>))
%NUMCPY%(idattr, %NUMATTR%(idtab, <nomeattributo>))
%NUMCPY%(infoattr, %ATTRINFO%(idtab, idattr))
  <!-- somma dei valori di attrinfo per le proprietà 'chiave' e 'obbligatorio' -->
%NUMCPY%(prop, %BITAND%(1, 80))
<!-- verifico questo attributo -->
%IF%(infoattr & prop)
  <!-- vero, attributo chiave e obbligatorio -->
%ELSE%
  <!-- falso, attributo NON chiave E/O NON obbligatorio -->
%ENDIF%


STRING %BITEM%
Scopo Restituisce il titolo corrispondente al documento identificato sul BrowseGerarchico.

Sintassi %BITEM%(%NUMBER% riga)

Descrizione viene usato per visualizzare il titolo corrispondente ad un documento associato all'elemento specificato da riga.

Valore restituito valore alfanumerico
Torna il valore del titolo.
Torna stringa vuota in caso di errore generico o titolo vuoto.

Vedere anche %BITEMS%, %MAXBITEMS%, funzioni BrowseGerarchico

Esempio
<!-- dopo avere eseguito una 5CALL
al BrowseGerarchico -->
%REPEAT%(1, %BITEMS%)
 %ITOA%(%INDEX%).)%BITEM%(%INDEX%)
%ENDREPEAT%

Program output
1. valore 1
2. valore 2
....
n. valore n


NUMBER %BITEMS%
Scopo Determinare il numero corrente di elementi referenziati da una chiamata alla %5CALL%("BrowseGerarchico").

Sintassi %BITEMS%

Descrizione E' una variabile numerica che contiene il numero degli elementi recuperati da una precedente chiamata alla %5CALL%("BrowseGerarchico")

Valore restituito valore numerico
Torna il numero di elementi estratti.
Non viene compilato dal modulo Highway Application Server in caso di errore generico.

Vedere anche %BITEM%, %MAXBITEMS%, funzioni BrowseGerarchico

Esempio

%REPEAT%(1, %BITEMS%)
 %ITOA%(%INDEX%).)%BITEM%(%INDEX%)
%ENDREPEAT%

Program output
1. valore 1
2. valore 2
....
n. valore n


NUMBER %BLAST%
Scopo Determinare se l'elemento individuato da BrowseGerarchico è l'ultimo della gerarchia.

Sintassi %BLAST%(%NUMBER% riga)

Descrizione usato per verificare se il documento individuato da BrowseGerarchico è l'ultimo della gerarchia.

Valore restituito valore numerico
Torna 1 se l'elemento indicato da riga è l'ultimo dell'albero gerarchico.
Torna 0 se l'elemento indicato non è l'ultimo dell'albero gerarchico.

Vedere anche %BFIRST%, funzioni BrowseGerarchico

Esempio
%IF%(%BLAST%(%INDEX%))
 <!-- pulsante disabilitato di navigazione alla pagina successiva -->
%ELSE%
 <!-- pulsante abilitato di navigazione alla pagina successiva -->
%ENDIF%


NUMBER %BLEV%
Scopo Determinare il livello gerarchico di un elemento.

Sintassi %BLEV%(%NUMBER% riga)

Descrizione usato per determinare il livello gerarchico di un elemento; il livello viene calcolato in base 1.

Valore restituito valore numerico
Torna il livello gerarchico dell'elemento individuato da riga
In caso di errore generico non viene compilato dal modulo Highway Application Server.

Vedere anche funzioni BrowseGerarchico

Esempio
%NUMBER%(lev, 0)
%REPEAT%(....)
 %NUMCPY%(lev, %BLEV%(%INDEX%))
 %REPEAT%(1, lev)
  %WRITE%("-")%WRITE%(%BLEV%(%INDEX%(1)))<br>
 %ENDREPEAT%
%ENDREPEAT%

Program output
-elemento1 <!-- %bfirst% = 1; %blev% = 1 -->
--elemento2 <!-- %blev% = 2 -->
--elemento3 <!-- %blev% = 2 -->
---elemento3 <!-- %blev% = 3 -->
--elemento <!-- %blast% = 1%blev% = 1 -->


NUMBER %BLOADDOC%
Scopo Rende disponibili i dati del documento specificato.

Sintassi %BLOADDOC%(%NUMBER% doc[, %NUMBER% caricaancore[, %NUMBER% azioniarichiesta = 1[, %NUMBER% lock = 0)

Descrizione consente il caricamento del documento identificato da doc che assume valenze diverse in base al contesto in cui viene utilizzato: se esiste una selezione corrente, %CURDOC% identifica la posizione del documento fra quelli selezionati, diversamente rappresenta il numero fisico univoco del documento all'interno della base dati.
caricaancore carica le 'ancore' relative al documento indicato; assume i seguenti valori :

Il funzionamento di questo parametro dipende da quanto indicato nel <nomearchivio>.ini oppure nell'sfplus.ini alla sezione [HS] nella riga DirLink.
Se DirLink = no il motore HS scarta qualsiasi richiesta di caricamento delle ancore.
azioniarichiesta indica al motore HS di eseguire le azioni indicate nel <nomearchivio>.ini relative agli attributi con proprietà 'esterno a richiesta'.
lock può assumere i seguenti valori:
0 : il documento viene caricato senza essere bloccato;
1 : richiede il blocco del documento.
Per sbloccare il documento impostare il parametro flags = 2 in SAVEDOC o chiamare UNLOCKDOC.
In caso di esito positivo sarà possibile accedere ai dati del documento.
%BLOADDOC% viene usato in alternativa a %LOADDOC% quando si presume necessario testare il corretto caricamento di un documento.

Valore restituito valore numerico
Torna 1 in caso di caricamento avvenuto correttemente.
Torna 0 in caso di errore generico.

Vedere anche %NEWDOC%, %DOCTITLE%, %SAVEDOC%, %LOADDOC%, %INVALIDATEDOC%, %LOCK%, %UNLOCK%, %UNLOCKDOC%

Esempio
%INVALIDATEDOC%
%IF%(%BLOADDOC%(%INDEX%))
 <!-- operazioni di lettura dei dati del documento -->
 %ATTRIB%("NRECORD")
 %ATTRIB%("NOME")
 ...
%ELSE%
 <!-- errore di caricamento del documento -->
%ENDIF%


NUMBER %BPURE%
Scopo Determinare se l'elemento identificato ha un unico 'padre'.

Sintassi %BPURE%(%NUMBER% riga)

Descrizione usato per verificare se il l'elemento individuato da riga nel TH gerarchico ha un unico padre.

Valore restituito valore numerico
Torna 1 in caso il documento individuato abbia un solo 'padre'.
Torna 0 in caso il documento individuato abbia più di un 'padre'.
Non viene compilato dal modulo Highway Application Server in caso di errore generico.

Vedere anche funzioni BrowseGerarchico


STATEMENT %BREAK%
Scopo terminare un ciclo %LOOP% o %REPEAT% durante la sua esecuzione.

Sintassi %BREAK%

Descrizione usato per interrompere l'esecuzione di un ciclo %LOOP% ... %ENDLOOP% o %REPEAT% ... %ENDREPEAT% durante la sua esecuzione.
Spesso viene utilizzato come uscita da un ciclo infinito (con condizione sempre vera), che si interrompe al verificarsi di una determinata condizione.

Valore restituito nessuno.

Vedere anche %CONTINUE%

Esempio
%LOOP%
 %IF% (<condizione di uscita>)
  %BREAK%
 %ENDIF%
%ENDLOOP%


NUMBER %BSONS%
Scopo Determinare se il documento individuato ha elementi 'figli'.

Sintassi %BSONS%(%NUMBER% riga)

Descrizione usato per determinare se il documento individuato dall'elemento riga di BrowseGerarchico ha documenti 'figli'.

Valore restituito valore numerico
Torna 1 in caso l'elemento individuato abbia 'figli'.
Torna 0 in caso l'elemento individuato non abbia 'figli'.

Vedere anche funzioni BrowseGerarchico

Esempio
%REPEAT%(1, %BITEMS%)
%IF%(%BSONS%(%INDEX%))
 %WRITE%("+")
%ENDIF%
%BITEM%(%INDEX%)<br>
%ENDREPEAT%

Program output
elemento 1 + elemento 2   elemento 3 ....


STRING %BSTAT%
Scopo Variabile alfanumerica di ambiente contenente lo stato corrente del browse gerarchico.

Sintassi %BSTAT%

Descrizione viene usato in combinazione con le altre funzioni del browse gerarchico;
la variabile %BSTAT% viene aggiornata automaticamente dal sistema in base alle operazioni di posizionamento, implosione ed esplosione che vengono effettuate in fase di visualizzazione gerarchica dei documenti.
Tipicamente lo stato di un elemento è riferito alla condizione di visualizzazione del'elemento:
esploso (visualizza i termini figli) o compresso (visualizza solo i termini padri).
Può ritornare un valore composto da <@fileselezione, stato> in base a quanto specificato nella %5CALL%("BrowseGerarchico", ...).

Valore restituito valore alfanumerico
Torna lo stato del Browse Gerarchico (preceduto opzionalmente da un @nome_file_selezione);
Torna stringa vuota in caso di errore generico.

Vedere anche %5CALL%, %BUPDATE%

Esempio
%STRING%(statobth, "")
%STRCPY%(statobth, %BSTAT%)


NUMBER %BUPDATE%
Scopo Aggiornare lo stato del browse gerarchico.

Sintassi %BUPDATE%( %STRING% *stato, %NUMBER% child, %NUMBER% deleted[, %NUMBER% nonno)

Descrizione aggiorna lo stato del browse gerarchico a seguito di una concellazione (deleted = 1) o di un inserimento (deleted = 0) di una relazione 'padre-figlio' fra i documenti individuati da parent e child; nonno è il padre di parent e va specificato (se esiste) in caso di inserimento (deleted = 0).
In caso di cancellazione, se deleted == 2 vengono eliminati dallo stato anche tutti i riferimenti che discendono da child.
stato assumerà il valore di dociniziale[,@selezione],stato se così impostato nella chiamata alla %5CALL%.

Valore restituito valore numerico
Torna 1 se l'operazione di aggiornamento è andata a buon fine;
Torna 0 in caso di errore generico.

Vedere anche %BSTAT%, funzioni BrowseGerarchico

Esempio
%BUPDATE%(%PARENT%(%INDEX%),%CHILD%(%INDEX%), 0)


STRING %BYTEORDER%
Scopo individuare il tipo di architettura del processore utilizzato.

Sintassi %BYTEORDER%

Descrizione consente di individuare la tipologia del processore utilizzato.
Una tipica situazione in cui si rende necessario l'uso di questa funzione è il caso in cui si rende necessaria una operazione binaria: il processore Intel pone il byte meno significativo a sinistra, mentre Motorola utilizza il byte di destra.

Valore restituito valore alfanumerico
Torna "I" su piattaforma di tipo Intel (gli indirizzi puntano al byte meno significativo);
Torna "M" su piattaforma Motorola ...

Vedere anche %PLATFORM%, %SIZEOFNUMBER%


STRING %CHILD%
Scopo Determinare il termine 'figlio' di una relazione gerarchica del thesauro.

Sintassi %CHILD%(%NUMBER% riga)

Descrizione usato per determinare il termine 'figlio' individuato da riga di una relazione gerarchica in una pagina di Thesauro.

Valore restituito valore alfanumerico
Torna il termine figlio se l'operazione è andata a buon fine.
Torna stringa vuota in caso di errore generico.

Vedere anche %PARENT%, funzioni Thesauro

Esempio <!-- Posizionamento sul thesauro -->
%STRING%(figlio, "")
%IF%(%5CALL%("ThGerarchico", %KEYVAL%(Attr.x), %KEYVAL%(Value.x), 1, "100", "NT"))
 %REPEAT%(1, %VITEMS%)
 <A href="%SCRIPT%/a%CURARC%/f<alias di questa pagina>?Attr.x=%CURATTR%;Value.x=%VITEM%(%INDEX%)">
  %VITEM%(%INDEX%)
 </A>
 %STRCPY%(figlio, %CHILD%(%INDEX%))
 %IF%(%STRLEN%(figlio) > 0 )
  %WRITE%(" - ")
  <A href="%SCRIPT%/a%CURARC%/f<alias di questa pagina>?Attr.x=%CURATTR%;Value.x=%WRITE%(figlio)">
   Vai a termine Figlio
  </A>
 %ENDIF%
 %ENDREPEAT%
%ENDIF%

Program output
elemento 1
elemento 2 - Vai a termine Figlio
elemento 3 - Vai a termine Figlio
elemento 4
...
elemento n - Vai a termine Figlio


NUMBER %CHKIMPORT%
Scopo Verifica il corretto stato di una base dati.

Sintassi %CHKIMPORT%

Descrizione utilizzato per verificare il corretto stato di indicizzazione dell'archivio corrente precedentemente una operazione di importazione/esportazione dati.

Valore restituito valore numerico
Torna 1 in caso il controllo non abbia verificato inconguenze od errori.
Torna 0 in caso di errore generico.

Vedere anche %RMINDEX%, %MKINDEX%

Esempio
%IF%(%CHKIMPORT%)
 <!-- procedere all'operazione di importazione/esportazione -->
%ELSE%
 %WRITE%("Si è verificato un errore durante una operazione di controllo")
%ENDIF%


NUMBER %CHKROWS%
Scopo daterminare il numero di righe di cui è/sono composto/i il/i buffer indicato/i.

Sintassi %CHKROWS%(%STRING% eol, %NUMBER% eolfill, %STRING% param1[,...])

Descrizione consente di recuperare il numero di istanze presenti in un determinato buffer (tipicamente del contenuto di attributi multiistanza di gruppo e non o di attributi Multiriga).
Per il corretto svolgimento di questo compito, è necessario che la funzione in oggetto esegua prima un allineamento, mediante verifica ed eventuale correzione, del numero delle istanze del/i buffer specificato/i.
Per l'uso di questa funzione è necessario riversare il contenuto degli attributi multiistanza dello stesso gruppo in altrettante variabili (<param1>,<param2><...>) che saranno utilizzate per eseguire i controlli e, se indicato da eolfill, l'allineamento.
Per eseguire questa operazione il modulo Highway Application Server verifica che tutte le variabili <param...> contengano lo stesso numero di istanze.
Se eolfill = 1 significa che in caso di difformità sul numero di righe rilevate fra le variabili <param...> controllate, queste saranno anche allineate mediante l'aggiunta di righe di istanza vuote a quelle che difettano rispetto al numero massimo individuato.
Il controllo sul numero di righe si basa sul valore eol che la funzione utilizza per determinare la fine di una riga di istanza (ed anche per eventuali aggiunte di nuove righe).

Valore restituito valore alfanumerico Torna il numero massimo di righe individuato nelle singole variabili <parm...>.
Torna 0 in caso di errore generico.

Vedere anche %NUMROWS%, %ATTROWS%, %ATTROW%

Esempio
 <!-- attributi MultiIstanza del gruppo 4:
  INDIR, SEDE, CAP, LOCAL, PROV, REGIONE, NAZIONE -->
%NUMBER%(grouprows,0)
  <!-- copia del contenuto degli attributi nelle rispettive variabili -->
%STRING%(b_indirizzo,%ATTRIB%("INDIR"))
%STRING%(b_sede,%ATTRIB%("SEDE"))
%STRING%(b_cap,%ATTRIB%("CAP"))
%STRING%(b_local,%ATTRIB%("LOCAL"))
%STRING%(b_prov,%ATTRIB%("PROV"))
%STRING%(b_regione,%ATTRIB%("REGIONE"))
%STRING%(b_nazione,%ATTRIB%("NAZIONE"))
%NUMCPY%(grouprows, %CHKROWS%("\r\n",1,b_indirizzo, b_sede, b_cap,
   b_sede, b_local, b_prov, b_regione, b_nazione))
%IF%(grouprows)
 <!--ciclo sulle istanze -->
 %REPEAT%(1,grouprows)
  <!--fai qualcosa -->
 %ENDREPEAT%
%ENDIF%

Annotazioni

L'uso degli attributi multiistanza, per coloro che già conoscono la tecnologia HIGHWAY o se applicato ad una base dati esistente sviluppata per l'uso con SfPlus, è leggermente cambiato.
Le singole righe degli attributi multiistanza sono separate da due caratteri non stampabili, cioè il 'newline' ed il 'carriage return', codificati in esadecimale in 0x0D e 0x0A, in ASCII in 0x10 e 0x13, in sequenza di escape con \r e \n.
Questi caratteri speciali vengono posti al termine della riga quando viene premuto il tasto Enter (o Return che dir si voglia).
Sfplus e Highway Application Server (per ragioni tecniche qui non discutibili) vanno in conflitto sulla gestione dell'ultima riga:
Sfplus non vi pone \r\n, mentre Highway Application Server la pretende !!
Il problema si risolve filtrando il contenuto dei campi multiistanza attravesro la funzione %CHKROWS% che esegue un allineamento riportando i caratteri \r\n sull'ultima istanza e, se applicata a tutti gli attributi multiistanza di un medesimo gruppo, provvede anche ad eseguire un controllo ed un allineamento delle righe sui singoli attributi.
Esempio


NUMBER %CHGPWD%
Scopo Modificare la password di un determinato utente dell'ambiente Highway.

Sintassi %CHGPWD%(%STRING% username, %STRING% oldpwd, %STRING% newpwd)

Descrizione Modifica la password corrente (oldpwd) dell'utente specificato (username) sostituendola con quella indicata in newpwd.
Questa operazione è controllata da Highway Server che si occupa di verificare che vengano rispettati i diritti di accesso al database degli Utenti.

Valore restituito valore numerico
Torna 1 in caso la modifica della password sia stata eseguita corretteamente.
Torna 0 se la modifica della password non è stata effettuata.

Vedere anche %ADMIN%, %EXTRAQ%, %USERADDR%, %USERCREDIT%, %USERNAME%, %WEBUSER%

Esempio
%IF%(utente, vecchiapassword, nuovapassword)
 <!-- La password di highway è stata modificata -->
%ELSE%
 <!-- La password di highway è stata modificata -->
   recuperare %LASTERRORSTRING% per mostrare una piccola
   descrizione del tipo di errore che si è verificato>
%ENDIF%


NUMBER %CLASSCOPY%
Scopo Copiare il contenuto di una stringa origine, fino al carattere separatore 'spazio', in una stringa di destinazione.

Sintassi %CLASSCOPY%(%STRING%* dest, %STRING% source)

Descrizione Copia il contenuto di source, fino al primo carattere 'spazio' (0x20), su dest.
Se source non contiene spazi, viene copiata interamente.
Se source è vuota fallisce l'operazione di copia.

Valore restituito valore numerico
Torna 1 se l'operazione di copia è andata a buon fine.
Torna 0 se non sono stati copiati caratteri.

Vedere anche Funzioni di elaborazione sui tipi primitivi

Esempio
%STRING%(src, "Associazione Informatica")
%STRING%(dest, "")
%CLASSCOPY%(dest, src)
%WRITE%(dest)

Program output
Associazione


NUMBER %CLOCK%
Scopo Misurare l'intervallo di tempo di sistema trascorso dall'inizio del processo corrente, misurato in ticks.

Sintassi %CLOCK

Descrizione Misura la quantità di 'ticks' trascorsi dall'inizio del processo corrente. L'unità di misura 'ticks' è dipendente dalla piattaforma.

Valore restituito valore numerico
Torna il numero dei ticks trascorsi.
Torna -1 in caso di errore.

Vedere anche %TIME%


NUMBER %CLOSEARC%
Scopo Chiudere la connessione con l'archivio corrente.

Sintassi %CLOSEARC%(%STRING% nomearchivio)

Descrizione esegue la chiusura di un archivio aperto con %OPENARC%("<nomearchivio>").
Non essendo consentita l'apertura di più archivi simultaneamente, si intende che <nomearchivio> sia %CURARC%.

Valore restituito valore numerico
Torna 1 in caso la chiusura dell'archivio sia stata eseguita corretteamente.
Torna 0 in caso di errore.

Vedere anche %OPENARC%

Esempio
%IF%(%CLOSEARC%(%CURARC%))
 <!-- ... -->
%ELSE%
 <!-- Errore in chiusura archivio -->
%ENDIF%


NUMBER %CLOSEDIR%
Scopo libera le risorse associate alla richiesta di lettura di un direttorio.

Sintassi %CLOSEDIR%(%NUMBER% dirhandle)

Descrizione Consente ad Highway Application server di liberare le risorse occupate dalla precedente chiamata a %OPENDIR%.
dirhandle è l'identificativo delle risorse impiegate che ha inizializzato e tornato la %OPENDIR%

Valore restituito valore numerico
Torna 0 in caso di errore generico.

Vedere anche %OPENDIR%, %READDIR%


NUMBER %CLOSEFILE%
Scopo Chiudere il file indicato.

Sintassi %CLOSEFILE%(%NUMBER% fileid)

Descrizione Chiude il file identificato da fileid.
fileid è l'identificativo del file ritornato dalla %OPENFILE% o da %CREATEFILE%.

Valore restituito valore numerico
Torna 1 in caso la chiusura del file sia stata eseguita corretteamente.
Torna 0 in caso di errore.

Vedere anche %OPENFILE%, %CREATEFILE%, %DELEFILE%

Esempio
%IF%(%CLOSEFILE%(<id del file>))
 <!-- ... -->
%ELSE%
 <!-- Errore in chiusura file -->
%ENDIF%


STATEMENT %CONTINUE%
Scopo Passare all'iterazione successiva all'interno di un ciclo.

Sintassi %CONTINUE%

Descrizione Consente, all'interno di un ciclo %LOOP% o %REPEAT%, di passare all'iterazione successiva saltando le eventuali righe di codice che si trovano fra l'istruzione %CONTINUE% e l'istruzione di %ENDLOOP% o %ENDREPEAT%.
Questa istruzione può essere utilizzata per eseguire un'elaborazione su di un insieme completo di elementi dello stesso tipo, e con %CONTINUE% di saltare gli elementi eccezionali rispetto all'insieme.

Valore restituito nessuno

Vedere anche %BREAK%

Esempio
Supponiamo di dover modificare il contenuto dei documenti di una selezione creati in una certa data:
%REPEAT%(1, %TOTSEL%)
 %IF%(%BLOADDOC%(%INDEX%))
  %IF%(%STRCMP%(%ATTRIB%("DATACREAZ"), "20000101"))
   <!-- questo documento non è stato creato in data odierna -->
   %CONTINUE%
  %ELSE%
   <!-- Elaborazione del dcoumento creato in data odierna -->
  %ENDIF%
 %ENDIF%
%ENDREPEAT%


NUMBER %CREATFILE%
Scopo Creare il file specificato.

Sintassi %CREATEFILE%(%STRING% nomefile)

Descrizione Crea il file specificato, se esistente, ne imposta la lunghezza a 0, torna l'identificativo del file da usare nelle funzioni che ne fanno richiesta e in ultimo nella %CLOSEFILE%.
nomefile può essere un percorso completo o una voce dichiarata nella sezione [CGI] di <nomearchivio>.ini o nella sezione [Generico] di hicgi.ini. Se nomefile non viene risolto, Highway Application Server esegue un tentativo di risoluzione cercando all'interno del file di profilo.
Se anche questo non risolve nomefile, Highway Application Server verifica il primo carattere: se è "/" (oppure "\" in NT e non è indicata la lettera di drive) allora viene eseguito un ulteriore tentativo di risoluzione rispetto al direttorio dello script corrente.

Valore restituito valore numerico
Torna un valore identificativo del file.
Torna 0 in caso di errore generico.

Vedere anche %CLOSEFILE%, %DELEFILE%, %OPENFILE%, Funzioni System e Ambiente

Esempio
%NUMBER%(idfile, 0)
%NUMCPY%(idfile, %CREATEFILE%("c:\\temp\\prova.hl"))
%IF%(idfile > 0)
 <!-- esegui elaborazione del file -->
%ELSE%
 <!-- errore in creazione file -->
%ENDIF%


NUMBER %CREATEPROCESS%
Scopo Eseguire un programma esterno.

Sintassi %CREATEPROCESS%(%STRING% programma, %STRING% comandi, %NUMBER% console)

Descrizione Consente di eseguire un programma (.exe) esterno in un processo proprio.
programma è il nome e percorso completo del file eseguibile;
comandi sono i parametri per la riga di comando;
console se 0 nasconde la finestra di programma, 1 la rende visibile.

Valore restituito valore numerico
Torna 1 in caso di esito positivo.
Torna 0 in caso di errore.

Vedere anche %DETACH%, %PID%, %PRGARGV%, %SYSTEM%, %VERSION%

Esempio
%IF%(%CREATEPROCESS%("c:\\programmi\\3D Informatica\\highway\\client\\sfutil.exe", "/Ugestore /Ac:\\app32\\archivi\\archivio1", 1)))
 <!-- eseguito sfutil.exe -->
%ELSE%
 <!-- errore in esecuzione di sfutil.exe -->
%ENDIF%


STRING %CTIME%
Scopo Recuperare data e ora corrente.

Sintassi %CTIME%

Descrizione Consente di recuperare data e ora di sistema della macchina sulla quale risiede Highway Application Server in formato <giorno della settimana in lettere> <mese in lettere> <giorno del mese in cifre> <ora>:<minuti>: <secondi> <anno>.

Valore restituito valore alfanumerico
Torna data e ora di sistema racchiusi in un tipo stringa.
Torna stringa vuota in caso di errore.

Vedere anche %TIME%, %CURDATE%

Esempio
%WRITE%(%CTIME%)

Program output
Fri Sep 22 16:17:49 2000


STRING %CURARC%
Scopo Restituisce l'identificativo numerico corrispondente all'archivio corrente.

Sintassi %CURARC%

Descrizione variabile d'ambiente che contiene l'identificativo numerico corrispondente all'archivio.
Highway Application Server identifica gli archivi mappati nell'hicgi.ini con un numero progressivo in base 10 oppure con un alias letterale.
Gli identificativi, numerici o letterali, riconosciuti ppossono essere utilizzato nella riga di comando del browser o per la proprietà href dei tag Anchor.
Non è consentito richiedere ad Highway Application Server l'identificativo letterale degli archivi mappati.

Valore restituito valore numerico
Torna l'identificativo numerico dell'archivio indicato nella sezione [Archivi] del hicgi.ini.
Torna 0 in caso di errore generico.

Vedere anche %CURATTR%, %CURDOC%, %CURDATE%, %CURGRP%, %CURSEL%, %CURSCRIPT%, %CURSELPATH%

Esempio
<A HREF="/h3/h3.exe/a%CURARC%">torna in ricerca</A>


STRING %CURATTR%
Scopo Restituisce il nome dell'attributo corrente, previo accesso ad una bancadati.
Tipicamente utilizzato all'interno di una pagina di vocabolario.

Sintassi %CURATTR%

Descrizione può essere utilizzato all'interno di una form per la visualizzazione del vocabolario e restituisce il nome dell'attributo corrente.

Valore restituito valore alfanumerico
Torna il nome dell'attributo corrente.
Torna stringa vuota in caso di errore generico.

Vedere anche %CURARc%, %CURDOC%, %CURDATE%, %CURGRP%, %CURSEL%, %CURSCRIPT%, %CURSELPATH%

Esempio
<TITLE>Vocabolario dell'attributo %CURATTR%</TITLE>

Program output
Vocabolario dell'attributo TITOLO


STRING %CURDATE%
Scopo Restituisce la data corrente (data di sistema).

Sintassi %CURDATE%

Descrizione usato per ottenere la data di sistema in formato "aaaammgg" dal Server sul quale Highway Application Server è in esecuzione;
viene utilizzata solitamente in combinazione con %DATE$% per ottenere una data formattata (p.e. "gg/mm/aaaa").

Valore restituito valore alfanumerico
Torna la data di sistema racchiusa in una stringa.
Torna stringa vuota in caso di errore generico.

Vedere anche %TIME%, %CTIME%

Esempio
%CURDATE%

Program output

Esempio
%DATE$%(%CURDATE%, "gg/mm/aaaa")

Program output


NUMBER %CURDOC%
Scopo variabile d'ambiente contenente l'identificativo numerico del documento.

Sintassi %CURDOC%

Descrizione variabile numerica di ambiente contenente l'identificativo di un documento che assume diversa valenza in base all'esistenza di una selezione corrente: se %CURSEL% o %CURSELPATH% contengono una selezione, %CURDOC% rappresenta la posizione del documento all'interno della selezione, diversamente identifica il numero fisico del documento corrente.
La disponibilità della variabile d'ambiente sarà subordinata alla selezione corrente.

Valore restituito valore numerico
Torna la posizione del documento nella selezione corrente.

Vedere anche %CURSEL%, %TOTSEL%, /d

Esempio
%IF% (%TOTSEL% == 1)
 <!-- il file di selezione contiene un solo documento -->
%ELSE%
 %IF% (%CURDOC% == 1)
  %CURDOC%
  <A HREF = "%SCRIPT%/a%CURARC%/s%CURSEL%/d%EVAL%(%CURDOC%+1)">
   Vai al documento successivo
  </A>
 %ELSE%
  %IF% (%CURDOC% == %TOTSEL%)
   <A HREF = "%SCRIPT%/a%CURARC%/s%CURSEL%/d%EVAL%(%CURDOC%-1)">
    Vai al documento precedente
   </A>
  %ELSE%
   <A HREF = "%SCRIPT%/a%CURARC%/s%CURSEL%/d%EVAL%(%CURDOC%+1)">
    Vai al documento successivo
   </A>
  %ENDIF%
 %ENDIF%
%ENDIF%


NUMBER %CURGRP%
Scopo Determinare l'identificativo numerico del corrente gruppo di immagini.

Sintassi %CURGRP%

Descrizione è una variabile numerica di lavoro che contiene il progressivo in base 1 nella lista di gruppi di immagini associate al documento corrente.
Il corretto funzionamento di %CURGRP% è subordinato ai parametri /P e /R in riga di comando.

Valore restituito valore numerico.
Torna il valore numerico identificativo del gruppo di immagini corrente.
se le immagini del documento corrente non sono raggruppate in gruppi, torna il valore numerico identificativo dell'ultimo gruppo di immagini individuato oppure 1.
Torna 0 in caso di errore generico.

Vedere anche %GROUPS%, %MAXTHUMBS%, %PERGROUP%, %PERPAGE%, %THUMB%, %IMAGES%, %IMAGEURL%, %IMAGEPATH%, %THUMBURL%, %ATTACHADD%, %ATTACHGET%, %ATTACHCHG%, %CURTHUMB%

Esempio
%NUMBER%(thisgroup, 0)
%NUMBER%(precthisgroup, 0)
%REPEAT%(1, %TOTSEL%)
 %IF%(%BLOADDOC%(%CURDOC% + %INDEX%))
  %REPEAT%(1, %IMAGES%)
   %NUMCPY%(thisgroup, %CURGRP%)
   %IF%(thisgroup != precthisgroup)
    %IF%(%INDEX% != 1)
     </TD></TR>
     </TABLE>
    %ENDIF%
    <TABLE>
    <TR><TD>
    %WRITE%(%IMAGEPATH%(%INDEX%))
   %ELSE%
    <BR>%WRITE%(%IMAGEPATH%(%INDEX%))
   %ENDIF%
   %NUMCPY%(precthisgroup, thisgroup)
  %ENDREPEAT%
  </td></tr>
  </TABLE>
 %ENDIF%
%ENDREPEAT%

Program output
DOC1
C:\IMG\IMG1.GIF
C:\IMG\IMG2.GIF

DOC2
C:\IMG\IMG3.GIF
C:\IMG\IMG4.GIF
C:\IMG\IMG5.GIF

DOCn
C:\IMG\IMGn.GIF


STRING %CURSEL%
Scopo variabile d'ambiente contenente il percorso completo del file di selezione corrente formattato per essere inserito nella riga di comando del browser o in un href di un tag Anchor.
Il file di selezione corrente risiede nel direttorio individuato con %CURSELPATH% sulla macchina server sulla quale risiede Highway Application Server

Sintassi %CURSEL%

Descrizione Consente di recuperare il nome e percorso completo del file contenente la selezione corrente formattata per essere inserita nei parametri della riga di comando del browser o di un href di un tag Anchor allo scopo di inviarlo ad uno script hl.

Valore restituito valore alfanumerico
Torna nome e percorso completo del file di selezione corrente.
Torna stringa vuota in caso di errore generico.

Vedere anche %CURSELPATH%, %EDITSEL%, %TEMPDIR%, %GETTEMPFILENAME%, /s

Esempio

<!-- salvo la selezione corrente -->
%STRING%(selcorrente, %CURSEL%)
<!-- eseguo una ricerca alternativa -->
%4CALL%("Cerca", <frase_ricerca>, 1, 16, <lista_attributi_sort>)
%IF%(%TOTSEL% > 0)
 <!-- se la nuova ricerca ha trovato documenti, pongo l'utente in condizione di andare alla rispettiva lista titoli... -->
 <A href="%SCRIPT%/a%CURARC%/s%CURSEL%/t" >Nuova ricerca</A>
%ELSE%
 <!-- ...altrimenti lascio la possibilità di recuperare la precedente selezione -->
 <A href="%SCRIPT%/a%CURARC%/s%WRITE%(selcorrente)/t" >Torna alla ricerca precedente</A>
%ENDIF%

Program output
Titoli nuova ricerca
Precedente ricerca


STRING %CURSCIPT%
Scopo rilevare l'alias del file processato in riga di comando.

Sintassi %CURSCRIPT%

Descrizione Consente di richiedere ad Highway Application Server l'alias del file processato con un /f o /F.

Valore restituito valore alfanumerico
Torna stringa vuota in caso di errore generico.

Vedere anche /F, /f

Esempio
%IF%(%strcmp%("Form Titoli", %CURSCRIPT%) == 0)
 %INCLUDE%("titoli_ana.hl")
%ELIF%(%strcmp%("frm_titoli", %CURSCRIPT%) == 0)
 %INCLUDE%("frm_titoli_ana")
%ENDIF%


STRING[*] %CURSELPATH%
Scopo variabile d'ambiente contenente il nome e percorso completo del file di selezione corrente in formato DOS.

Sintassi %CURSELPATH%

Descrizione consente di recuperare il nome e percorso completo (in formatoi DOS) del file nel quale Highway Application Serrver salva i risultati della selezione corrente che tipicamente risiede sul server su cui è installato il servizio omonimo.

Valore restituito valore alfanumerico
Torna il nome e percorso completo del file di selezione corrente in formato DOS.
Torna stringa vuota in caso di errore generico.

Vedere anche %CURSEL%, %EDITSEL%, %TEMPDIR%, %GETTEMPFILENAME%, /s

Esempio
<!-- salvo la selezione corrente -->
%STRING%(selcorrente, %CURSELPATH%)
<!-- eseguo una ricerca alternativa -->
%4CALL%("Cerca", <frase_ricerca>, 1, 16, <lista_attributi_sort>)
%IF%(%TOTSEL% = 0)
 %STRCPY%(%CURSELPATH%, selcorrente)
%ENDIF%
%REPEAT%(1, %TOTSEL%)
 %DOCTITLE%(%CURDOC% + %INDEX%)<BR>
%ENDREPEAT%


NUMBER %CURTHUMB%
Scopo Determinare l'identificativo numerico dell'immagine corrente in formato diapositiva.

Sintassi %CURTHUMB%

Descrizione variabile numerica che contiene il progressivo calcolato in base 1 nella lista di immagini in formato diapositiva associate al documento o al gruppo corrente.

Valore restituito valore numerico
Torna identificativo numerico della diapositiva.
Torna 0 in caso di errore generico.

Vedere anche %GROUPS%, %MAXTHUMBS%, %PERGROUP%, %PERPAGE%, %THUMB%, %IMAGES%, %IMAGEURL%, %IMAGEPATH%, %THUMBURL%, %ATTACHADD%, %ATTACHGET%, %ATTACHCHG%, %CURGRP%

Esempio
%IF%(%BLOADDOC%(%CURDOC%))
 <A href=%THUMBURL%(%CURTHUMB%)>Dispositiva<A>
....
%ENDIF%

Program output
Diapositiva


STRING %DATE%
Scopo Formatta il contenuto dell'attributo di tipo "DATA" specificato in formato data.

Sintassi %DATE%(%STRING% nome_attributo [, %STRING% formato="gg/mm/aa"])

Descrizione usato per formattare il contenuto dell'attributo specificato in nome_attributo in formato data.
formato è un parametro opzionale; se non specifiato viene utilizzata in automatico la forma "gg/mm/aa".

Sintassi per formato data
gg giorno in 2 cifre
mm mese in 2 cifre
aa anno in 2 cifre
aaaa anno in 4 cifre
separatore viene mantenuto quello indicato in 'formato'

Valore restituito valore alfanumerico
Torna la data formattata.
Torna una stringa vuota se l'attributo specificato non contiene una data.

Vedere anche %DATE2ATTR%, %DATE2JD%, %DATE$%, Vedi funzioni Formattazione

Esempio
%DATE%("DATA_INS")

Program output
01/10/00

Esempio
%DATE%("DATA_INS", "gg/mm/aaaa")

Program output
01/10/2000

Esempio
%DATE%("DATA_INS", "gg.mm.aaaa")

Program output
01.10.2000


STRING %DATE2ATTR%
Scopo Convertire una data da formato internazionale al formato Highway.

Sintassi %DATE2ATTR%(%STRING% data[, %STRING% formato="gg/mm/aaaa"])

Descrizione Converte una data da un tipico formato internazionale con separatori, al formato Highway.
Se l'anno viene espresso con un numero di cifre minore di quattro, viene automaticamente completato sulla base della data corrente.
Ad esempio, nel corso dell'anno 1999 %DATE2ATTR%("1/2/93") torna "19930201" mentre nel corso dell'anno 2000 torna "20930201".
L'uso di formato indicata ad Highway Application Server in che formato è espresso data;
per ottenere un risultato coerente è quindi necessario che data e formato siano coerenti l'uno rispetto all'altro.

Valore restituito valore alfanumerico
Torna una stringa contenente una data in formato Highway ricostruita, se indicato, in base a formato.
Torna una stringa vuota in caso di errore generico.

Vedere anche %DATE%, %DATE2JD%, %DATE$%, Vedi funzioni Formattazione

Esempio
%DATE2ATTR%("05/10/99")

Program output
19991005

Esempio
%DATE2ATTR%("05/10/99", "aaaa/gg/mm")

Program output
00059910 errata corrispondenza fra il valore di data e l'indicazione del suo formato


NUMBER %DATE2JD%
Scopo converte una data in formato Highway ("AAAAMMGG") in un valore numerico idoneo per operazioni di calcolo fra date.

Sintassi %DATE2JD%(%STRING% data)

Descrizione converte una data espressa nel formato Highway (AAAAMMGG) in un valore numerico idoneo per eseguire operazioni di calcolo fra date.

Valore restituito valore numerico
Torna un valore numerico effetto della conversione nel formato stringa.
Torna 0 in caso di errore generico.

Vedere anche %DATE%, %DATE2ATTR%, %DATE$%, Vedi funzioni Formattazione

Esempio
<!-- impostare validità documento %CURDATE% += 3 anni -- >
Validità documento <INPUT type="test" name="VAL_DOC" value="(%DATE$%(%DATE2JD%(%CURDATE%)+(3*365)), "gg/mm/aaaa")">

Program output

Validità documento 


STRING %DATE$%
Scopo Formattare una stringa in formato data.

Sintassi %DATE$%(%STRING% stringa [, %STRING% formato])

Descrizione Consente di formattare una stringa che contiene una data valida nel formato data indicato.
stringa contiene un valore rappresentativo di una data.
formato indica il formato nel quale si intende rappresentare la data: vedi Sintassi formato
Se non viene specifiato alcun formato, viene utilizzata in automatico la forma "gg/mm/aa".

Valore restituito valore alfanumerico
Torna la data formattata.
Torna una stringa vuota se la stringa specificata non contiene una data.

Vedere anche %DATE%, %DATE2ATTR%, %DATE2JD%, Vedi funzioni Formattazione

Esempio
%DATE$%(%CURDATE%)

Program output


NUMBER %DBLOCK%
Scopo Consente l'accesso esclusivo all'archivio indicato.

Sintassi %DBLOCK%(%STRING% arcname, %STRING% partialupdatewillfollow)

Descrizione istruzione che permette di accedere all'archivio indicato da arcname in modo esclusivo.
Viene tipicamente utilizzata in caso di operazioni di importazione dati che richiedono che l'archivio si trovi in una condizione statica.
Eseguendo una operazione di importazione per un aggiornamento, HS consente di rimandare al client le operazioni di catalogazione (partialupdatewillfollow = 1) e quindi di eseguire in modo più veloce l'importazione dei documenti.
Al termine delle operazioni di importazione è necessario che il client richieda ad Highway Server di eseguire una catalogazione dell'archivio.

Valore restituito valore numerico
Torna 1 se l'apertura del database in modo esclusivo è andata a buon fine.
Torna 0 in caso di errore generico.

Vedere anche %DBUNLOCK%, %LOCK%, %UNLOCK%, %UNLOCKDOC%


NUMBER %DBUNLOCK%
Scopo Consente di sbloccare l'accesso esclusivo all'archivio indicato.

Sintassi %DBUNLOCK%(%STRING% arcname)

Descrizione istruzione che permette di sbloccare l'archivio indicato da arcname precedentemente bloccato con %DBLOCK%.

Valore restituito valore numerico
Torna 1 se l'archivio indicato è stato sbloccato correttamente.
Torna 0 in caso di errore generico.

Vedere anche %DBLOCK%, %LOCK%, %UNLOCK%, %UNLOCKDOC%


NUMBER %DELEFILE%
Scopo Cancella il file specificato.

Sintassi %DELEFILE%(%STRING% nomefile)

Descrizione Consente di cancellare il file indicato in nomefile.
nomefile deve contenere un riferimento univoco al file: percorso completo + nomefile + estensione (oppure un alias indicato nell'hicgi.ini o nel .ini nella sezione [CGI]).

Valore restituito valore numerico
Torna 1 se la cancellazione è stata eseguita correttamente
Torna 0 in caso di errore generico.

Vedere anche Funzioni di System e Ambiente

Esempio
<!-- Form Documento -->
%IF%(%BLOADDOC%(%CURDOC%) == 0)
 %ECHOOFF%
 %STRING%(filetemp, "")
 %STRING%(filetemp_ext, ".html")
 %GETTEMPFILENAME%(filetemp, filetemp_ext)
 %NUMBER%(hftemp, %CREATEFILE%(filetemp))
 %IF%(hftemp)
  %STRING%(bufftemp, "")
  %STRCAT%(bufftemp, "<html><head><title>Errore</title></head>")
  %STRCAT%(bufftemp, "<body>Errore in caricamento documento")
  %STRCAT%(bufftemp, "<form method=\post\" action=\"%SCRIPT%/a%CURARC%/s%FILESEL%/ffrm_titoli?file=")
  %STRCAT%(bufftemp, filetemp)
  %STRCAT%(bufftemp, "\"><br><input value=\"Torna ai titoli\" type=\"submit\"></body></html>")
  %CLOSEFILE%(hftemp)
 %ECHOON%
  <script>
   document.location = location.protocol + '//' + location.host + '%write%(filetemp)';
  </script>
 %ENDIF%
%ENDIF%
<!-- frm_titoli -->
%IF%(%STRLEN%(%KEYVAL%(file)))
 %DELEFILE%(file)
%ENDIF%
....
<!-- lista titoli -->


NUMBER %DELETEDOC%
Scopo Cancella il documento specificato appartenente alla selezione corrente.

Sintassi %DELETEDOC%(%NUMBER% documento)

Descrizione Consente di cancellare il documento indicato in documento.
documento si riferisce al progressivo in base 1 della selezione corrente.

Valore restituito valore numerico
Torna 1 se la cancellazione è stata eseguita correttamente
Torna 0 in caso di errore generico.

Vedere anche %DELETENUMDOC%, %NEWDOC%, %SAVEDOC%

Esempio

<!-- ciclo sui documenti della selezione -->
%REPEAT%(0, %TOTSEL%)
 %IF%(<condizione di cancellazione>)
 <!-- cancellazione del documento corrente -->
  %IF%(%DELETEDOC%(%INDEX%) == 0)
   <!-- errore in cancellazione -->
  %ENDIF%
 %ENDIF%
%ENDREPEAT%


NUMBER %DELETENUMDOC%
Scopo Cancellazione di un documento generico.

Sintassi %DELETENUMDOC%(%NUMBER% numdoc)

Descrizione Utilizzato per cancellare un documento della base dati identificato dal suo numero fisico.
numdoc si riferisce al numero fisico del documento, che è un identificativo univoco interno al database, che si incrementa automaticamente eseguendo nuovi inserimenti.
L'ordine dei numeri fisici di un archivio rispecchia l'ordine in cui i documenti sono stati inseriti nel database.

Valore restituito valore alfanumerico
Torna 1 in caso di cancellazione avvenuta correttamente.
Torna 0 in caso di errore generico.

Vedere anche %DELETEDOC%, %NEWDOC%, %SAVEDOC%

Esempio
<!-- cancellazione dell'ultimo documento della base dati -->
%IF%(%STRLEN%(%CURDOC%))
 %DELETENUMDOC%(%TOTDOCA%)
%ENDIF%


NUMBER %DERIVA%
Scopo scatena gli automatismi di Highway Server associati all'archivio.

Sintassi %DERIVA%(%STRING% nomeattributo, %NUMBER% numeroriga)

Descrizione Consente di scatenare gli automatismi associati all'archivio corrente (vedi Definizioni delle azion).
Se nomeattributo è una stringa vuota ("") consente di scatenare le azioni su tutto il documento.
numeroriga indica l'azione che deve essere eseguita, in base alla numerazione progressiva indicata nel <nomearchivio>.ini alla sezione [HS].

Valore restituito valore numerico
Torna 1 se le operazioni di derivazione eseguite da Highway Server sono state eseguite correttamente.
Torna 0 in caso di errore generico.

Vedere anche %CHKIMPORT%, %MKINDEX%, %MKTITLES%, %RMINDEX%

Esempio

<!-- scatena le azioni su tutti gli attributi del doc corrente -->
%REPEAT%(0, %TOTSEL%)
 %IF%(%BLOADDOC%(%INDEX%))
  %DERIVA%("", 1)
 %ENDIF%
%ENDREPEAT%


VOID %DETACH%
Scopo chiude la connessione con il Web Server ma contiua a processare la richiesta corrente.

Sintassi %DETACH%

Descrizione Consente di disconnettersi dal server Web, e di continuare a processare lo script corrente fino alla sua conclusione.
A seguito di una chiamata a DETACH sarà possibile ristabilire la connessione solo tramite l'esecuzione di una nuova Url di Highway Application Server.

Valore restituito nessuno.

Vedere anche %ECHOON%, %ECHOOFF%, %CREATEPROCESS%, %IGNOREECHO%, %SLEEP%

Esempio

<!-- supponiamo di dovere eseguire una procedura di stampa dei -->
<!-- documenti esito di una selezione su un file di testo; dopo che
l'utente avrà avviato la procedura verrà costruita run-time una pagina
di inizio del processo di stampa e visualizzata dal browser contenente
un link ad una pagina di stato d'avanzamento -->
%DETACH%
<!-- codice procedurale che esegue la stampa -->
<!-- ciclicamente verrà costruita una nuova pagina (collegata dal
link suddetto) che conterrà <META HTTP-EQUIV="refresh" CONTENT=10>
(che consente un refresh automatico ogni 10 secondi) ed i nuovi dati
relativi allo stato d'avanzamento delle operazioni in corso-->

Program output
Stampati 10 documenti
<!-- dopo 10 secondi avviene un refresh automatico -->
Stampati 18 documenti


STRING %DOCARC%
Scopo consente di recuperare il nome dell'archivio del documento indicato (solo per selezioni multi-Archivio).

Sintassi %DOCARC%(%NUMBER% progr_sele)

Descrizione Utilizzata con selezioni multiarchio, consente di reperire il nome dell'archivio dal quale proviene il documento indicato da progr_sele.
progr_sele assume il valore progressivo in base alla selezione corrente.

Valore restituito valore alfanumerico
Torna il nome dell'archivio così come indicato nell'hicgi.ini.
Torna una stringa vuota in caso di errore generico o in caso la selezione corrente non sia l'esito di una interrogazione multiarchivio.

Vedere anche %CURARC%

Esempio
<!-- stralcio di codice per la visualizzazione dei titoli di una selezione multiarchivio -->
 %STRING%(alias_arch_mo, "ArcStatMo")
 %STRING%(alias_arch_bo, "ArcStatBo")
 %STRING%(alias_arch_fi, "ArcStatFI")
 %STRING%(arch_mo, "Archivio di Stato di Modena")
 %STRING%(arch_bo, "Archivio di Stato di Bologna")
 %STRING%(arch_fi, "Archivio di Stato di Firenze")
 %REPEAT%(1, %TOTSEL%)
  %IF%(%STRCMP%(alias_arch_mo, %DOCARC%(%CURDOC% + %INDEX%)) == 0)
   [%WRITE%(arch_mo)] - %DOCTITLE%(%CURDOC% + %INDEX%)<br>
  %ELIF%(%STRCMP%(alias_arch_bo, %DOCARC%(%CURDOC% + %INDEX%)) == 0)
   [%WRITE%(arch_bo)] - %DOCTITLE%(%CURDOC% + %INDEX%)<br>
  %ELIF%(%STRCMP%(alias_arch_fi, %DOCARC%(%CURDOC% + %INDEX%)) == 0)
   [%WRITE%(arch_fi)] - %DOCTITLE%(%CURDOC% + %INDEX%)<br>
  %ELSE%
   [%WRITE%(DOCARC(%CURDOC% + %INDEX%))] - %DOCTITLE%(%CURDOC% + %INDEX%)<br>
  %ENDIF%
 %ENDREPEAT%

Program output
[Archivio di Stato di Modena] Lettera del Papa al Reggente
[Archivio di Stato di Modena] Statuto della città di Modena
[Archivio di Stato di Firenze] Atto di non belligeranza ...
[ArcStatPr] Bibliografia di Borso D'Este
[Archivio di Stato di Bologna] Disegni tecnici ...
...


NUMBER %DOCRELINSERT%
Scopo inserire una relazione fra due determinati documenti.

Sintassi %DOCRELINSERT%(%NUMBER% relaz, %NUMBER% doc1, %NUMBER% doc2 [, %NUMBER% doc, %NUMBER% tab1, %NUMBER% tab2])

Descrizione inserisce una relazione relaz fra due documenti doc1 e doc2 che ne rappresentano i numeri fisici ottenuti con %NUMDOC%.
relaz può assumere i seguenti valori:
1 dal documento padre al documento figlio
2 fra documenti fratelli;
in base all'ordine di inserimento, porta al precedente
4 fra documenti fratelli;
in base all'ordine di inserimento, porta al successivo
8 dal documento figlio al documento padre

doc viene utilizzato nel caso si crei una relazione fra due documenti già in relazione di PADREFIGLIO.
Assume il numero fisico del documento figlio di doc1 nel caso in cui doc compaia nel BrowseGerarchico dopo doc2 e doc sia legato a doc2 con la relazione FIGLIOPADRE.
tab1 e tab2 rappresentano gli indici delle tabelle di appartenenza di doc1 e doc2 e devono essere valorizzati in caso si intenda eseguire navigazione ristrette alle tabelle.

Valore restituito valore numerico
Torna 1 in caso la relazione sia stata inserita correttamente.
Torna 0 in caso di errore generico.

Vedere anche %DOCRELDELETE%, %DOCRELGETSEL%, %DOCRELNAVIGATE%, %DOCRELSETROOT%, %DOCRELSELECT%, %DOCRELEMPTY%

Esempio
%IF%(%DOCRELINSERT%(1, %CURDOC%, %EVAL%(%CURDOC% + %INDEX%),
     %EVAL%(%CURDOC% + %INDEX% + 1), %NUMTABELLA%("tabella1"),
     %NUMTABELLA%("tabella2")) == 0)
<!-- segnalare errore durante la generazione di una relazione -->
%ENDIF%


NUMBER %DOCRELDELETE%
Scopo cancella una relazione fra due documenti.

Sintassi %DOCRELDELETE%(%NUMBER% relaz, %NUMBER% doc1, %NUMBER% doc2)

Descrizione cancella una relazione relaz fra due documenti doc1 e doc2 che ne rappresentano i numeri fisici ottenuti con %NUMDOC%.
relaz può assumere i seguenti valori:
1 dal documento padre al documento figlio
2 fra documenti fratelli;
in base all'ordine di inserimento
4 fra documenti fratelli;
in base all'ordine di inserimento
8 dal documento figlio al documento padre
64 rimuove tutte le relazioni che legano a doc1 altri documenti

Valore restituito valore numerico
Torna 1 in caso la relazione sia stata eliminata correttamente.
Torna 0 in caso di errore generico.

Vedere anche %DOCRELINSERT%, %DOCRELGETSEL%, %DOCRELNAVIGATE%, %DOCRELSETROOT%, %DOCRELSELECT%, %DOCRELEMPTY%

Esempio
%IF%(%DOCRELDELETE%(1, %CURDOC%, %EVAL%(%CURDOC% + %INDEX%), 1) == 0)
<!-- segnalare errore in fase di cancellazione di una relazione -->
%ENDIF%


NUMBER %DOCRELGETSEL%
Scopo recuperare i documenti esito di una nevigazione multipla generata da più documenti di partenza.

Sintassi %DOCRELGETSEL%(%STRING% *data, %NUMBER% *total, %NUMBER% pos [, %STRING% filesele)

Descrizione consente di recuperare le singole navigazioni prodotte da una lista di documenti eseguita dalla %DOCRELSELECT%.
filesele rappresenta il file di selezione ritornato dalla %DOCRELSELECT%.
pos indica il numero progressivo della ramificazione della navigazione multipla eseguita da %DOCRELSELECT%.
data e total sono le variabili che il chiamante dovrà dichiarare e che %DOCRELGETSEL% valorizzerà rispettivamente con la lista dei numeri fisici (separati da ',' (virgola) dei documenti esito della ramificazione della navigazione indicata da pos - e con il totale dei documenti che la compongono.

Valore restituito valore numerico
Torna 1 in caso di esito positivo,
Torna 0 in caso di errore generico.

Vedere anche %DOCRELDELETE%, %DOCRELINSERT%, %DOCRELNAVIGATE%, %DOCRELSETROOT%, %DOCRELSELECT%, %DOCRELEMPTY%

Esempio
vedi %DOCRELSELECT%


NUMBER %DOCRELNAVIGATE%
Scopo consente la navigazione fra i documenti della base dati.

Sintassi %DOCRELNAVIGATE%(%NUMBER% relaz, %NUMBER% startdoc [, %STRING% tabelle [, %NUMBER% docpadre [, %STRING% buffer]]])

Descrizione consente di navigare all'interno della base dati attraverso quanto indicato in startdoc che rappresenta il numero del documento di partenza rispetto alla sua posizione all'interno del file di selezione, e da relaz che indica il tipo di relazione che insiste fra startdoc ed il documento di arrivo.
relaz può assumere i seguenti valori: vedi %DOCRELINSERT%

La navigazione all'interno dell base dati può essere ristretta ad un solo gruppo di tabelle indicate attraverso il loro nome alfanumerico e separate da ',' (virgola) nel parametro tabelle.
Al fine di rendere univoca la navigazione verso il documento di arrivo, è opportuno, ma non obbligatorio, indicare il numero fisico (ricavato tramite %NUMDOC%) del 'padre' di startdoc (nel caso quest'ultimo sia figlio di più padri) nel parametro docpadre.
buffer può contenere la chiave di relazione generata tramite la %THSREL2KEY% allo scopo di eliminare ambiguità rispetto al documento di arrivo;
buffer, in uscita dalla %DOCRELNAVIGATE% conterrà la chiave di relazione fra startdoc ed il documento di arrivo.

Valore restituito valore numerico
Torna il numero fisico del documento di arrivo se trovato.
Torna 0 in caso di nessun documento in relazione con startdoc.
Non viene compilato dal modulo Highway Application Server in caso di errore generico.

Vedere anche %DOCRELDELETE%, %DOCRELGETSEL%, %DOCRELINSERT%, %DOCRELSETROOT%, %DOCRELSELECT%, %DOCRELEMPTY%

Esempio
%NUMBER%(docfinish, %DOCRELNAVIGATE%(%CURDOC%, 1, "TABELLA1,TABELLA2"))
%IF%(docfinish > 0)
 %IF%(%BLOADDOC%(docfinish))
 <!-- visualizzare il documento di arrivo -->
 %ENDIF%
%ELSE%
 <!-- nessun documento soddisfa la relazione richiesta rispetto a %CURDOC% -->
%ENDIF%


NUMBER %DOCRELSETROOT%
Scopo impostare un documento radice sulla base dati corrente.

Sintassi %DOCRELSETROOT%(%NUMBER% doc)

Descrizione Consente di impostare doc (numero fisico individuato con %NUMDOC%) come documento radice della base dati corrente.
Per documento radice si intende il documento dal quale originariamente derivano tutte le relazioni esitenti nell'archivio %CURDOC%.

Valore restituito valore numerico
Torna 1 se l'operazione è stata eseguita correttamente.
Torna 0 in caso di errore generico.

Vedere anche %DOCRELDELETE%, %DOCRELGETSEL%, %DOCRELNAVIGATE%, %DOCRELINSERT%, %DOCRELSELECT%, %DOCRELEMPTY%


NUMBER %DOCRELSELECT%
Scopo consente di effettuare una selezione dei documenti oggetto di una navigazione specifica rispetto ad un file di selezione oppure ad un intervallo di documenti spEcificato con idonea sintassi.

Sintassi %DOCRELSELECT%(%STRING% *filesele|range, %NUMBER% *total [, %STRING% sezione|%NUMBER% regola)

Descrizione permette, a partire da un file di selezione o da un intervallo di documenti, di eseguire una navigazione in base a regole specifiche indicate da regola, se indicato, oppure in base alla regola generale.
regola, opzionale, se numerico può assumere i seguenti valori:
1 regola "NAVIGA * DISCESA * ."
3 regola "NAVIGA NOPARENT * DISCESA * ."
5 corrispondente alla regola "NAVIGA * SALITA * ."
7 corrispondente alla regola "NAVIGA NOPARENT * SALITA * ."

Se regola è una stringa, specifica il nome di una regola di navigazione.
Le regole, eventualmente espresse con più regole elementari, debbono essere elencate nel loro ordine naturale indicando, in assenza di una stringa di identificazione, un numero progressivo, oppure la stringa di identificazione seguita da un carattere '_' e dal numero progressivo (per ulteriori informazioni sulle regole di navigazione si rimanda a 'Programmazione di base' nella sezione [RELAZ] di <nomearchivio>.ini che deve obbligatoriamente esistere ed essere conforme alla base dati.
*filesele|range viene valorizzato prima della chiamata alla %DOCRELSELECT% per indicare il documento\i dal\i quali eseguire la navigazione.
Può specificare un file di selezione o un intervallo di numeri fisici di documenti con la sintassi '*<Inizio>*<Fine>' (entrambi gli estremi vengono compresi).
Per indicare un solo documento la sintassi diviene '*<Inizio>*<Inizio>'.
La %DOCRELSELECT% ne sovrasciverà il contenuto inserendovi il nome del file di selezione che contiene la lista delle ramificazioni generate dalla navigazione (p.e. se in input filesele contiene i documenti 'A', 'B' e 'C', in output filesele conterrà una selezione complessa composta dai documenti generati dalla navigazione rispetto ad 'A', una ulteriore lista di documenti generati dalla navigazione rispetto a 'B' ecc...).
Per referenziare questa selezione nel modo consueto, è necessario copiare su %CURSELPATH% il parametro in uscita, e quindi usare %CURSEL% come argomento di "/s" nei collegamenti che lo richiedono.
In total, dichiarato e inizializzato dal chiamante, troveremo indicato il numero delle ramificazioni generate dalla navigazione.
filesele e total potranno essere utilizzati dalla %DOCRELGETSEL% per estrarre le liste dei documenti che generano la navigazione.

Valore restituito valore numerico
Torna 1 in caso di elaborazione eseguita correttamente.
Torna 0 in caso di errore generico.

Vedere anche %DOCRELDELETE%, %DOCRELGETSEL%, %DOCRELNAVIGATE%, %DOCRELSETROOT%, %DOCRELINSERT%, %DOCRELEMPTY%

Esempio

<!-- esempio di nomearchivio.ini -->
[RELAZ]
1=NAVIGA "TABELLA1" DISCESA "TABELLA2" .
<nomeregola>_1 = NAVIGA "TABELLA1" DISCESA "TABELLA3" .
<nomeregola>_2 = NAVIGA "TABELLA3" DISCESA "TABELLA2" .
%STRING%(frase, "([TABELLA]=\"TABELLA1\") E ([CAMPO1]=\"VALORE1\")")
%IF%(%4CALL%(frase, 1, 16, "CAMPO1"))
 %NUMBER%(total, 0)
 %STRING%(range, %CURSELPATH%)
  <!-- esempio 1 in alternativa a esempio 2 -->
 %IF%(%DOCRELSELECT%(range, total))
  <!-- esempio 2 in alternativa a esempio 1 -->
 %IF%(%DOCRELSELECT%(range, total, "<nomeregola>"))
  %NUMBER%(totdoc, 0)
  %STRING%(fileselforindex, "")
  %REPEAT%(1, total)
   %IF%(%DOCRELGETSEL%(fileselforindex, totdoc, %INDEX%, range))
    %REPEAT%(1, totdoc)
     <!-- mostra i documenti della navigazione
       dell'index-esimo doc estratto da frase -->
    %ENDREPEAT%
   %ENDIF%
  %ENDREPEAT%
 %ENDIF%
%ENDIF%


NUMBER %DOCRELEMPTY%
Scopo elimina le relazioni fra i documenti dell'intera base dati.

Sintassi %DOCRELEMPTY%

Descrizione cancella tutti i vincoli di relazione esistenti fra i documenti dell'archivio corrente.

Valore restituito valore numerico
Torna 1 se l'operazione è andata a buon fine.
Torna 0 in caso di errore generico.

Vedere anche %DOCRELDELETE%, %DOCRELGETSEL%, %DOCRELNAVIGATE%, %DOCRELSETROOT%, %DOCRELSELECT%, %DOCRELINSERT%


STRING %DOCTITLE%
Scopo Viene usato per ottenere direttamente da Highway Server il titolo del documento specificato secondo le regole espresse.

Sintassi %DOCTITLE%(%NUMBER% numero_documento)

Descrizione usato quando si vuole ottenere direttamente da Highway Server il titolo di un documento.
La composizione del titolo di un determinato documento deve essere indicata nel <nome_archivio32>.ini, sezione [Titoli], chiave ComposizioneTitolo.
Se non è stata prevista alcuna frase di ComposizioneTitolo, il server restituisce il nome della tabella di appartenenza del documento.
numero_documento rappresenta il numero progressivo in base 1 del documento all'interno del file di selezione, se esiste una selezione corrente, oppure il numero fisico del documento.

Valore restituito valore alfanumerico
Torna il titolo del documento indicato oppure il nome della tebella di appartenenza.
Torna 0 in caso di errore generico.

Vedere anche %BLOADDOC%

Esempio
%REPEAT%(1, %PERPAGE%)
 %DOCTITLE%(%CURDOC% + %INDEX%)
%ENDREPEAT%


VOID %ECHOOFF%
Scopo inibisce la scrittura sul file in uscita.

Sintassi %ECHOOFF%

Descrizione viene utilizzato tipicamente prima di una elaborazione che si intende rendere invisibile al browser.
Dopo l'istruzione ECHOOFF il modulo Highway Application Server occulta qualsiasi tipo di output verso la pagina html che viene generata dal file hl in corso d'elaborazione.

Valore restituito nessuno.

Vedere anche %ECHOON%, %DETACH%, %IGNOREECHO%, %OUTPUTTO%

Esempio
%ECHOOFF%
<!-- la write successiva non produrra alcun output -->
%WRITE%("Manda al browser questa frase di debug !")
%ECHOON%
<!-- la write successiva scrive sulla pagina in composizione -->
%WRITE%("Manda al browser questa frase di debug !")

Program output
Manda al browser questa frase di debug !


VOID %ECHOON%
Scopo abilitare la scrittura sul file in uscita.

Sintassi %ECHOON%

Descrizione consente di visualizzare l'output delle operazioni in corso eseguite da Highway Application Server.
Dopo un istruzione %ECHOON% verranno inviate verso la pagina html i ritorni delle funzioni non catturati dalle procedure, le istruzioni di scrittura del file html che verrà inviato al browser ed eventuali errori di compilazione.

Valore restituito nessuno.

Vedere anche %ECHOOFF%, %DETACH%, %IGNOREECHO%, %OUTPUTTO%

Esempio
vedi %ECHOOFF%


NUMBER %EDITSEL%
Scopo consente di modificare/generare un file di selezione

Sintassi %EDITSEL%(%NUMBER% opcode, %STRING%* data)

Descrizione Tramite questa funzione è possibile creare o modificare una file di selezione.
opcode seleziona il tipo di operazione da compiere.
data contiene eventuali dati di ingresso / uscita.
I dati numerici vanno espressi, e vengono ritornati, in forma binaria (vedi %ITOM%/%MTOI% per le modalità di scrittura / lettura di dati binari su un oggetto %STRING%).
La selezione su cui operare può essere omessa in ingresso nel caso in cui sia stata impostata una selezione corrente; in questo caso si ha lo stesso effetto impostandone il valore a %CURSELPATH%.
La tabella che segue descrive l'impostazione dei dati in ingresso e i valori restituiti in uscita in funzione del tipo di operazione richiesta.

opcode data descrizione
  ingresso uscita  
0 nessuno selezione crea una selezione vuota;
in uscita il secondo parametro contiene il nome del file di selezione creato
1 totale
numero doc
[...]
[selezione]
nessuno aggiunge uno o più documenti a un file di selezione;
in ingresso il secondo parametro contiene in forma binaria il totale dei documenti da aggiungere alla selezione, il numero fisico di ogni documento da aggiungere, e opzionalmente il nome del file di selezione da modificare
2 [selezione] totale
numero doc
[...]
torna l'elenco dei documenti apparteneti ad una selezione;
in ingresso va indicato opzionalmente il nome del file di selezione da leggere;
in uscita il secondo parametro contiene in forma binaria il totale dei documenti nella selezione e a seguire il numero fisico di ogni documento appartenente alla stessa
4 numero doc
[selezione]
totale
numero doc
[...]
cerca in una selezione il progressivo corrispondente a un documento dato (base 1);
in ingresso va indicato il numero fisico del documento da cercare e opzionalmente il nome del file di selezione da leggere;
in uscita il secondo parametro contiene in forma binaria il totale dei documenti nella selezione e a seguire il numero fisico di ogni documento appartenente alla stessa;
il valore di ritorno se maggiore di 0 fornisce il progressivo cercato.
0x7f indice doc
[selezione]
nessuno elimina un documento da una selezione;
il secondo parametro in ingresso deve contenere l'indice nella selezione del documento da scartare in forma binaria e a seguire opzionalemnte il nome del file di selezione
0x80 [selezione] nessuno se usato in OR con uno dei valori precedenti di opcode imposta la selezione creata o modificata come corrente;
se usato come opcode prevede come unico parametro in ingresso il nome del file di selezione da impostare come selezione corrente

Valore restituito valore numerico
Torna 0 in caso di errore generico o parametro non valido.
Torna >= 1 in caso di operazione riuscita.


DECLARATION %ENDFUNC%
Scopo delimitare la fine del corpo di una funzione.

Sintassi %ENDFUNC%

Descrizione chiude il corpo di una funzione che inizia con %FUNC%.

Valore restituito nessuno.

Vedere anche %FUNC%

Esempio
<!-- funzione che ritorna i primi 2 caratteri di param1 -->
%FUNC% %STRING% %nomefunc% (%STRING% param1)
 %RETURN% %MID%(param1, 0, 2)
%ENDFUNC%


VOID %ENDSKIP%
Scopo terminare un commento.

Sintassi %ENDSKIP%

Descrizione consente di terminare un commento, oppure di terminare una parte di codice che non deve essere eseguita.
A differenza dei commenti tipici dell'html (<!-- commento -->), l'uso di %SKIP% e %ENDSKIP% consente di alleggerire la pagina html che il modulo Highway Application Server manda in output, perchè la parte racchiusa fra queste istruzioni viene scartata totalmente.

Valore restituito nessuno.

Vedere anche %SKIP%

Esempio
%SKIP% informazioni riservate allo sviluppatore %ENDSKIP%


NUMBER %EVAL%
Scopo valutare e calcolare un'espressione numerica.

Sintassi %EVAL%(%NUMBER% espressione_da_valutare)

Descrizione consente di valutare espressioni numeriche anche annidate fra all'interno di parentesi.
espressione_da_valutare deve essere rappresentato da valori numerici.
Se in espressione_da_valutare sono presenti variabili di tipo stringa dovranno essere opportunamente convertite mediante %ITOA% o %FTOA%.

Valore restituito valore numerico
Torna il risultato del calcolo eseguito.
In caso di errore, l'espressione non viene compilata dal modulo Highway Application Server.

Vedere anche %PARSE%

Esempio
%WRITE%(%ITOA%(%EVAL%((124*56/2)+1)))

Program output
3473


VOID %EXIT%
Scopo terminare il processo corrente.

Sintassi %EXIT%

Descrizione consente di terminare il processo corrente.
Per processo corrente si intende la terminazione del modulo Highway Application Server.

Valore restituito nessuno.

Vedere anche %RETURN%


STRING %EXTRAQ%
Scopo recupera informazioni sulle eventuali restrizioni ai documenti del utente corrente.

Sintassi %EXTRAQ%

Descrizione consente di recuperare le restrizioni dell'utente corrente sulla base dati.
Queste informazioni sono memorizzate in un archivio Highway (HiCnt32.sts) e vengono automaticamente utilizzate da Highway Server al momento della compilazione della frase di ricerca.

Valore restituito valore alfanumerico
Torna una frase di ricerca che indica le eventuali restrizioni d'accesso oppure una stringa vuota se non vi sono restrizioini.
In caso di errore generico l'istruzione non viene compilata.

Vedere anche %WEBHOME%, %WEBUSER%


STRING %FATTRIB%
Scopo visualizzare un attributo multifont mantenendo le caratteristiche di formattazione esistenti.

Sintassi %FATTRIB%(%STRING% nomeattributo)

Descrizione Consente di recuperare il contenuto dell'attributo specificato, di tipo multifont, mantenendo le caratteristiche di formattazione originali (grassetto, italico, giustificazione,...).
Attenzione all'uso di funzioni che necessitano o leggono la dimensione degli attributi multifont: infatti, in coda al buffer dell'attributo sono memorizzate le informazioni della formattazione che falsano le dimensioni del valore contenuto.

Valore restituito valore alfanumerico
Torna la stringa valorizzata con il contenuto alfanumerico dell'attributo indicato.
in caso di errore generico l'istruzione non viene compilata.
Utilizzato con un attributo NON multifont assume il comportamento di %ATTRIB%.

Vedere anche %ATTRIB%

Esempio
<!-- esempio del contenuto dell'attributo
Documento
Titolo -->
%FATTRIB%(<nomeattr>)

Program output
Documento
Titolo


NUMBER %FILESIZE%
Scopo Restituisce la dimensione del file specificato.

Sintassi %FILESIZE%(%STRING% nomefile)

Descrizione utilizzato per ottenere la dimensione in byte di un file specifico.
nomefile va specificato con percorso completo ed estensione, e, se nomefile viene digitato in chiaro nello script, le barre separatrici dei direttori nel percorso completo devono essere tradotte in caratteri di escape.
p.e. "c:\winnt\explorer.exe" diventa "c:\\winnt\\explorer.exe".
Se nomefile non viene risolto, Highway Application Server esegue un tentativo di risoluzione cercando all'interno del file di profilo. Se anche questo non risolve nomefile, Highway Application Server verifica il primo carattere: se è "/" (oppure "\" in NT) e non è indicata la lettera di drive allora viene eseguito un ulteriore tentativo di risoluzione rispetto al direttorio dello script corrente.

Valore restituito valore numerico
Torna la dimensione del file specificato.
Torna 0 in caso di errore generico.

Vedere anche %FILEDATE%, %OPENFILE%, %CLOSEFILE%, %CREATEFILE%, %READFILE%, %WRITEFILE%, %RENFILE%

Esempio
<!-- esempio di visualizzazione di un collegamento
   che mostra la dimensione del file linkato -->
...
Visualizza immagine (<A href="/<aliasIIS>/<nomefile.ext>">%ITOA%(%FILESIZE%("/<aliasIIS>/<nomefile.ext>")) bytes</A>)

Program output
Visualizza immagine (123554 bytes)


STRING %FILEDATE%
Scopo recupera data e ora relativa all'ultima modifica del file specificato.

Sintassi %FILEDATE%(%STRING% nomefile)

Descrizione consente di recuperare la la data e l'ora dell'ultima operazione di salvataggio eseguita sul file specificato da nomefile.
nomefile va specificato con percorso completo ed estensione, e, se nomefile viene digitato in chiaro nello script, le barre separatrici dei direttori nel percorso completo devono essere tradotte in caratteri di escape.
p.e. "c:\winnt\explorer.exe" diventa "c:\\winnt\\explorer.exe".


Se nomefile non viene risolto, Highway Application Server esegue un tentativo di risoluzione cercando all'interno del file di profilo.
Se anche questo non e nomefile, Highway Application Server verifica il primo carattere: se è "/" (oppure "\" in NT e non è indicata la lettera di drive) allora viene eseguito un ulteriore tentativo di risoluzione rispetto al direttorio dello script corrente.

Valore restituito valore numerico
Torna la dimensione del file specificato.
In caso di errore generico l'istruzione non viene compilata.

Vedere anche %FILESIZE%, %OPENFILE%, %CLOSEFILE%, %CREATEFILE%, %READFILE%, %WRITEFILE%, %RENFILE%

Esempio
%FILEDATE%("<nomefile.ext>")

Program output
27/09/1999 08:47:08


NUMBER %FILLATTR%
Scopo Assegnare ad un attributo specificato un determinato valore.

Sintassi %FILLATTR%(%STRING% nomeattributo, %STRING% valore)

Descrizione viene usato, per assegnare un valore ad un attributo facente parte del documento corrente.
Utlizzato in fase di modifica o inserimento di un documento.

Valore restituito valore numerico
Torna 1 in caso di operazione eseguita correttamente.
Torna 0 in caso di errore generico.

Vedere anche %NEWDOC%, %SAVEDOC%, %FILLBINATTR%

Esempio
%IF%(%NEWDOC%(%TABNAME%(1), 1))
 %FILATTR%("CAMPO1", "<valore>")
 %FILATTR%("CAMPO2", "<valore>")
 %FILATTR%("CAMPO3", "<valore>")
 %SAVEDOC%
%ENDIF%


NUMBER %FILLBINATTR%
Scopo Assegnare ad un attributo specificato un determinato valore in formato binario.

Sintassi %FILLBINATTR%(%STRING% nomeattributo, %STRING% valore_binario)

Descrizione viene usato, per assegnare un valore in formato binario ad un attributo facente parte del documento corrente.
Utlizzato in fase di modifica o inserimento di un documento.

Valore restituito valore numerico
Torna 1 in caso di operazione eseguita correttamente.
Torna 0 in caso di errore generico.

Vedere anche %NEWDOC%, %SAVEDOC%, %FILLATTR%

Esempio
%IF%(%NEWDOC%(%TABNAME%(1), 1))
 %FILATTR%("CAMPO1", "<valore>")
 %FILABINTTR%("CAMPO2", %HEX2BIN%("<valore>"))
 ...
 %SAVEDOC%
%ENDIF%


DECLARATION %FLOAT%
Scopo dichiaraRE e inizializzaRE una variabile di tipo numerico a virgola mobile.

Sintassi %FLOAT%(%STRING% nomevar, %STRING% value)

Descrizione dichiara una variabile di tipo numerico a virgola mobile e la inizializza con value.
value deve contenere un valore convertibile in numerico.
Una variabile può essere dichiarata ovunque ma non come argomento di una funzione (predefinita o non).
La visibilità di una variabile cessa all'uscita del contesto nel quale è stata dichiarata, sia esso il corpo di una funzione o la regione delimitata da una istruzione di controllo del flusso, ad eccezione di %IFSYM% ed %IFNSYM%.

Valore restituito nessuno

Vedere anche %STRING%, %NUMBER%

Esempio
%STRING%(cambio, "")
<!-- chg_lit_to_euro è un alias dichiarato nella sezione generico del file hicgi.ini che corrisponde al valore del cambio fra Lira ed Euro -->
%IF%(%PROFILE% (cambio, "chg_lit_to_euro", "Generico"))
 %FLOAT%(val_cambio, cambio)
%ENDIF%


VOID %FLOATCPY%
Scopo copiare il contenuto di una variabile numerica a virgola mobile in un'altra variabile dello stesso tipo.

Sintassi %FLOATCPY%(%FLOAT% *dest, %FLOAT% valore)

Descrizione copiare il contenuto di una variabile numerica a virgola mobile in un'altra variabile dello stesso tipo.

Valore restituito nessuno

Vedere anche %FTOA%, %FTOI%, %NUMCPY%, %STRCPY%

Esempio
%FLOAT%(fl1, 12.5)
%FLOAT%(fl2, 10.5)
%write%(%FTOA%(%FLOATCPY%(fl1, fl2)))

Program output
23

Esempio
%FLOAT%(fl1, 3.75)
%write%(%FTOA%(%FLOATCPY%(fl1, 0.26)))

Program output
4.01


STRING %FTOA%
Scopo convertire valori numerici a virgola mobile in formato stringa.

Sintassi %FTOA%(%FLOAT% nomevar [, %STRING% formato)

Descrizione esegue una conversione in formato stringa del contenuto della variabile numerica a virgola mobile nomevar.
Il parametro opzionale formato indica a %FTOA% come deve essere visualizzato il risultato della conversione.
I valori che possono essere utilizzati sono :
%[opzioni] [lunghezza] [.precisione] tipo
tipo f intero a virgola mobile con forma [-]dddd.dddd dove dddd rappresenta uno o più valori numerici
  e intero a virgola mobile con forma [sign]dd.dddd dove dd rappresenta due valori numerici e dddd rappresenta uno o più valori numerici; sign è '+' o '-'
opzioni - allinea a sinistra il risultato all'interno di 'lunghezza' (diversamente allinea a destra)
  + mette sempre il segno (+/-) (diversamente mette il segno solo se negativo)
  blank mette uno spazio prima del valore
  # forza a mettere sempre il punto decinmale
lunghezza <valore> numero minimo di caratteri di che compongono la conversione
.precisione .<valore> numero minimo di caratteri decimali di che compongono la conversione

Valore restituito valore alfanumerico
Torna una stringa contenente la conversione effettuata.
In caso di errore generico l'istruzione non viene compilata.

Vedere anche %ITOA%, %ATOI%, %FTOI%

Esempio
%WRITE%(%FTOA%(123.225456, "%+10.2f"))

Program output
   +123.23 con 3 spazi iniziali


NUMBER %FTOI%
Scopo convertire valori numerici a virgola mobile in valori numerici interi.

Sintassi %FTOI%(%FLOAT% nomevar)

Descrizione consente di convertire il valore numerico a virgola mobile di nomevar in un valore intero, senza arrotondamento, troncando la parte decimale.

Valore restituito valore numerico
Torna un valore intero troncando la parte decimale.
In caso di errore generico l'istruzione non viene compilata.

Vedere anche %ITOA%, %ATOI%, %FTOA%

Esempio
WRITE%(%ITOA%(%FTOI(123.925456)))

Program output
123


NUMBER %FREQ%
Scopo ottenere il numero delle occorrenze di un determinato termine all'interno dell'indice corrente.

Sintassi %FREQ%(%NUMBER% riga)

Descrizione permette di verificare, successivamente ad una chiamata al vocabolario verticale di un determinato attributo, il numero delle occorrenze del termine identificato con riga sull'intera base dati limitatatamente all'attributo corrente.
Viene utilizzato in combinazione con %VITEM% all'interno di un ciclo per visualizzare l'indice verticale di un attributo.

Valore restituito valore numerico
Torna il numero delle occorrenze memorizzate all'interno del vocabolario verticale per l'attributo corrente.
In caso di errore generico l'istruzione non viene compilata.

Vedere anche %VITEM%, %VITEMS%, %MAXVITEMS%

Esempio
<table border=1 width=96%>
%REPEAT% (1,%VITEMS%)
<TR><TD>
%IF% (gt(%FREQ%(%INDEX%),1))
<A HREF="%SCRIPT%(/a%CURARC%/t?%CURATTR%=%22%VITEM%(%INDEX%)%22)">
[%FREQ%(%INDEX%)]
</A>
%ELSE%
[%FREQ%(%INDEX%)]
%ENDIF%
</TD>
<TD>
<A HREF="%SCRIPT%(/a%CURARC%?%CURATTR%=%22%VITEM%(%INDEX%)%22)">
%VITEM%(%INDEX%)
</A>
</TD></TR>
%ENDREPEAT%
</TABLE>

Program output
[241] AFFRESCO
[101] ALABASTRO
[91] AVORIO INTAGLIATO
[...] ...


DECLARATION %FUNC%
Scopo dichiarazione di una propria funzione in Highway Language.

Sintassi %FUNC% %NUMBER% [*] | %STRING% [*] | %FLOAT% [*] | %VOID% <nomefunzione> ( [%NUMBER%[*]| %FLOAT%[*]| %STRING%[*] parm_1[, ..., %NUMBER%[*]| %FLOAT%[*]| %STRING%[*] parm_N]])

Descrizione consente di dichiarare una funzione propria con i comandi CGI, ed inserirla all'interno di uno o più script.
La regione di visibilità di una funzione è sempre globale, anche se può essere definita all'interno di un blocco.
La sintassi dei comandi mostra le modalità di dichiarazione:
%FUNC% constrassegna l'inizio della funzione.
Di seguito va indicato il tipo di dato che la funzione ritorna al chiamante.
La perte successiva è il nome vero e proprio della funzione, quello con il quale verrà richiamata all'interno dello script CGI.
All'interno delle parentesi tonde che terminano la parte dichiarativa della funzione, va indicata la lista dei parametri (tipo e nome)
Il nome della funzione, nel contesto di utilizzo dei caratteri % quali terminatori delle parole chiave per il CGI (default), se NON viene dichiarato racchiuso fra questi terminatori, al momento della chiamata dovrà essere delimitato da caratteri % perchè il modulo Highway Application Server lo riconosca come parola riservata.
Il corpo della funzione si chiude con %ENDFUNC%.

Valore restituito dipendente dalla dichiarazione.
In caso di errore generico non viene compilata.

Vedere anche %ENDFUNC%,

Esempio
%FUNC% %NUMBER% fattoriale (%NUMBER% n)
 %IF%(n<3)
  %RETURN%(n)
 %ENDIF%
 %RETURN%(n*fattoriale(n-1))
%ENDFUNC%

%WRITE%(fattoriale(2))<br>
%WRITE%(fattoriale(3))<br>

Program output
2
6


NUMBER %FWDMAIL%
Scopo replicare una mail ad un nuovo destinatario.

Sintassi %FWDMAIL%( %STRING% server, <!-- nome del server smtp --> %STRING% toaddr, <!-- e-mail destinatario --> %STRING% fromname, <!-- mittente --> %STRING% fromaddr, <!-- e-mail mittente --> %STRING% replyaddr, <!-- e-mail per replica messaggio --> %STRING% organization, <!-- organizzazione per replica messaggio --> %STRING% subject, <!-- oggetto --> %STRING% text, <!-- testo --> %STRING% message, <!-- messaggio originale con header --> %NUMBER% timeout) <!-- timeout(sec.) spedizione -->

Descrizione tramite questa funzione è possibile re-indirizzare una mail esistente verso un nuovo indirizzo.

Valore restituito valore numerico
Torna 1 in caso di esito positivo.
Torna 0 in caso di errore generico.

Vedere anche %GETMAIL%, %SENDMAIL%

Esempio
%STRING%(fromname,"")
%STRING%(fromaddr,"")
%STRING%(subject,"")
%STRING%(date,"")
%STRING%(message,"")
%STRING%(text,"")
%NUMBER%(total,)
%IF%(%GETMAIL%("<pop3.domain.it>", "<user>", "<psw>,
    fromname, fromaddr, subject, date, message, text,
    total, 1, 4096, 0, 360))
 %IF%(%FWDMAIL%("<pop3.domaindest.it>", "<indirdest>",
     "<nomemittente>", "<indirmittente>"
     "<nuovoindir>", "", subject,
     "Ti invio per conoscenza la seguente mail:",
     message, 360)
  <!-- esegui script di avvenuta spedizione correttamente -->
 %ELSE%
  <!-- esegui script di spedizione non eseguita -->
 %ENDIF%
%ENDIF%


STRING %GETENV%
Scopo torna la stringa associata alla variabile di ambiente passata come argomento.

Sintassi %GETENV%(%STRING% var)

Descrizione consente di leggere il valore delle variabili ambientali del sistema operativo, di cui bisogna conoscere l'esistenza ed il nome.

Valore restituito valore alfanumerico.
Torna stringa vuota in caso di errore generico.

Esempio
%GETENV%("WINDIR")

Program output
c:\windows


NUMBER %GETFILE%
Scopo permette di copiare localmente un file da una locazione remota.

Sintassi %GETFILE%(%STRING% filedest, %STRING% url, %STRING% user, %STRING% psw [, %STRING% *header], %NUMBER% timeout [, %STRING% proxy, %NUMBER% pport [, %STRING% puser, %STRING% ppsw]])

Descrizione Utilizzata per copiare in locale, nella webroot, un file referenziato da url.
Sono gestiti solo i protocolli HTTP e FTP.

  • filedestcontiene il body della risposta HTTP o il file richiesto via FTP (verrà creato oppure se esistente verrà sovrascritto);
  • url contiene la url da eseguire;
  • psw contiene la password per l'autenticazione sul server indicato in url;
  • *header è un parametro opzionale, identificato da un buffer dichiarato precedentemente, che contiene la header HTTP della risposta;
  • timeout tempo di attesa della risposta espresso in secondi;
  • proxy è un parametro opzionale, gestito solo per il protocollo HTTP, che identifica il proxy che intercede all'esecuzione della url;
  • pport è un parametro opzionale, rispetto all'uso di proxy, che identifica la porta sulla quale avviene l'autenticazione sul proxy;
  • puser è un parametro opzionale, rispetto all'uso di proxy, che identifica il nome dell'utente riconosciuto dal proxy;
  • ppsw è un parametro opzionale, rispetto all'uso di proxy, che identifica la password dell'utente puser di proxy.

Valore restituito valore numerico
Torna 0 in caso di operazione eseguita con successo;
Torna -1 o un codice di errore specifico, se disponibile, in caso di errore.

Vedere anche %HTTPPOST%

Esempio
%GETFILE%("c:\\temp\\locale.txt", "ftp://pippo.pluto.net:21/pub/esempio.txt", "anonymous","someone@somewhere",60)


NUMBER %GETKEYS%
Scopo cercare le chiavi di ricerca di un attributo relative alla selezione corrente.

Sintassi %GETKEYS%(%STRING% nomeattributo [, %STRING% buffer [, %NUMBER% html = 0]])

Descrizione legge le chiavi di ricerca di un determinato attributo, o in buffer se indicato, rispetto alla selezione corrente, e le scrive nelle variabili d'ambiente %QKPOS%, %QKLEN% e %QKNUM%.
nomeattributo deve comunque essere valorizzato, anche nel caso venga indicato buffer per i riferimenti necessari alla verifica delle caratteristiche delle chiavi. In caso di esito positivo, vengono valorizzati gli array %QKPOS% e %QKLEN% rispettivamente con gli offset e le lunghezze delle chiavi trovate. Il numero totale delle chiavi trovate è invece indicato in %QKNUM%.
html diverso da zero consente di filtrate le parti del testo comprese fra "<" e ">" e fra "<script>" e "</script>".

Valore restituito valore numerico
Torna il numero di chiavi trovate.

Vedere anche %QKPOS%, %QKLEN%, %QKNUM%

Esempio


NUMBER %GETMAIL%
Scopo scaricare una mail dal server di posta.

Sintassi %GETMAIL%( %STRING% server, <!-- server pop --> %STRING% user, <!-- utente pop --> %STRING% password, <!-- password --> %STRING% *frommname, <!-- nome sender --> %STRING% *fromaddr, <!-- indirizzo sender --> %STRING% *subject, <!-- oggetto --> %STRING% *date, <!-- data --> %STRING% *message, <!-- messaggio --> %STRING% *text, <!-- messaggio (textplain) --> %NUMBER% *total, <!-- totale messaggi rimasti --> %NUMBER% index, <!-- progressivo messaggio da leggere (1 il + vecchio) --> %NUMBER% maxsize, <!-- dimensione massima messaggio --> %NUMBER% remove, <!-- != 0 cancella il messaggio letto --> %NUMBER% timeout) <!-- timeout in secondi -->

Descrizione Consente di prelevare dal server di posta il messaggio individuato.

Valore restituito valore numerico
Torna 0 se non ci sono messaggi.
Torna 1 se OK.
Torna < 0 in caso di errore generico.

Vedere anche %FWDMAIL%, %SENDMAIL%


NUMBER %GETPROFILE%
Scopo legge le impostazioni del file di inizializzazione d'archivio o del modulo Highway Application Server.

Sintassi %GETPROFILE%(%STRING% *val, %STRING% key, %STRING% sect)

Descrizione legge in val il valore associato alla chiave key nella sezione sect; se c'è un archivio corrente la ricerca avviene prima nel file di configurazione di archivio; in caso di chiave non trovata o in assenza di un archivio corrente la ricerca procede nel file di configurazione di Highway Application Server.

Valore restituito valore numerico
Torna il numero di caratteri copiati in caso di esito positivo.
Torna 0 in caso di errore generico.

Vedere anche %PROFILE%


NUMBER %GETTEMPFILENAME%
Scopo Ottenere da Highway Application Server un nome di file univoco.

Sintassi %GETTEMPFILENAME%( %STRING% *dest, %STRING% ext)

Descrizione Consente di ottenere un nome di un file univoco, calcolato da Highway Application Server completo di percorso e di estensione
L'estensione è rappresentata dal parametro ext, mentre il percorso è calcolato in base a quello che viene riconosciuto da Highway Application Server come il direttorio per i file temporanei.
Di norma, per installazioni tipiche, nelle quali i servizi Highway Server e Highway Application Server condividono lo stesso direttorio dei temporanei, questo percorso è dato da %TEMPDIR%/hwtemp.
Il direttorio dei temporanei viene impostato da Highway Application Server all'atto dell'installazione del servizio omonimo.
Se esistono le variabili ambientali TEMP o TMP o TEMPDIR dell'utente System della macchina server su cui avviene l'installazione, il direttorio dei FILE temporanei diverrà <valorevariabileambientale>/HwTemp.
In alternativa è possibile impostare un direttorio dei temporanei dal file di impostazione dell'Highway Application Server, dall'Hicgi.ini, indicando nella sezione [Server] la chiave TEMP associata ad un percorso esistente.
Questo sistema viene utilizzato di norma quando non è consentito il riavvio della macchina server che consentirebbe di rendere attive le impostazioni rilevate durante l'installazione.
%GETTEMPFILENAME% non crea nessun file, ne calcola solo il nome.
Il parametro *dest rappresenta una variabile di tipo %STRING% che deve essere creata dal chiamante, e che verrà valorizzata con il nome + percorso + estensione del file generato dalla %GETTEMPFILENAME%.

Valore restituito valore numerico.
Torna 0 in caso di errore generico.
Torna 1 in caso di successo

Vedere anche %TEMPDIR%, %CREATEFILE%

Esempio
%STRING%(file,"")
%STRING%(ext,"tmp")
%NUMBER%(hf, 0)
%NUMBER%(ret, %GETTEMPFILENAME%(file, ext))
%IF%(ret)
 %NUMCPY%(hf, %CREATEFILE%(file))
 %IF%(hf)
  <!-- elaborazione -->
  %IF%(%CLOSEFILE%(hf) == 0)
   <!-- errore chiusura file -->
  %ENDIF%
 %ELSE%
  <!-- errore creazione file -->
 %ENDIF%
%ELSE%
 <!-- errore in gettempfilename -->
%ENDIF%


NUMBER %GROUPS%
Scopo Variabile numerica di ambiente contenente il numero di gruppi definiti per le immagini associate al documento corrente.

Sintassi %GROUPS%

Descrizione assume valore diverso da 0 se esiste almeno una immagine associata al documento attuale.

Valore restituito valore numerico
Torna 0 in caso di nessuna immagine associata al documento.
Torna il numero dei gruppi di immagin associate al documento.

Vedere anche %CURGRP%, %PERGROUP%

Annotazioni

L'associazione delle immagini ad un documento con la definizione del gruppo di appartenenza è retaggio di archivi provenienti dall'ambiente Highway che fanno uso del modulo Eikon


STRING %HEX2BIN%
Scopo convertire in formato binario un determinato valore in formato esadecimale.

Sintassi %HEX2BIN%(%STRING% string_with_hex_value)

Descrizione dato un buffer di tipo %STRING% che contiene un valore esadecimale, la HEX2BIN ne converte il contenuto in un valore binario e lo memorizza in una stringa che viene tornata al chiamante.

Valore restituito valore alfanumerico
Torna un buffer di tipo %STRING% contenente l'esito della conversione.
In caso di errore generico non viene compilata dal modulo Highway Application Server.

Vedere anche %BIN2HEX%, %OEM2ANSI%, %ansi2oem%

Esempio
<!-- Documento client
genero la chiave di relazione per l'elemento Radice -->
%STRING%(key, "")
%IF%(%THSREL2KEY%(key, "Radice", "Termini specifici", ""))
 <!-- converto la chiave in formato esadecimale -->
 %STRCPY%(key, %BIN2HEX%(key))
 <A HREF="%SCRIPT%/a%CURARC/fForm+Thesaurus?KEY.x=%WRITE%()">Radice</A>
%ENDIF%
<!-- Documento server
prelevo la chiave di relazione e cerco l'elemento Radice -->
%STRING%(key, "")
%STRCPY%(key, %HEX2BIN%(%KEYVAL%(KEY.x))
%IF%(%THSGREATER%(key, key) == 3)
 ...


NUMBER %HIER%
Scopo torna in ndocs gli identificativi fisici (separati da "\n") e in titles i titoli (separati da "\n") dei documenti che compongono la gerarchia che conduce dalla radice al documento fisico indicato.

Sintassi %HIER%(%NUMBER% ndoc, %STRING% *titles, %STRING% *ndocs)

Descrizione consente di recuperare la lista dei documenti che compongono la gerarchia di ndoc a partire dal documento dichiarato come radice.
Le variabili precedentemente dichiarate titles e ndocs saranno valorizzate rispettivamente con le stringhe di titolo e i numeri fisici dei documenti che la compongono.
ndoc rappresenta il numero fisico del documento.

Valore restituito valore numerico
Torna 1 in caso di operazione eseguita con successo.
Torna 0 in caso di errore generico.

Vedere anche %BFIRST%, %BLEV%, %BSON%, %BLAST%, %BDOC%


STRING %HTTP_HOST%
Scopo torna il valore della variabile di ambiente HTTP_HOST.

Sintassi %HTTP_HOST%

Descrizione Contiene il valore impostato dal client nella header "Host:",
Dovrebbe contenere uno degli alias con i quali è noto il server HTTP ovvero il nome specificato dal client nella sua richiesta.
Ad esempio un client che invia la richiesta "http://www.serverhost.com:8000/foo.html" dovrebbe indicare "www.serverhost.com" nella header. Se assente viene restituito il valore della variabile SERVER_NAME.

Valore restituito valore alfanumerico
Torna stringa vuota in caso di errore generico.


NUMBER %HTTPPOST%
Scopo esegue una richiesta HTTP verso un server remoto.

Sintassi %HTTPPOST%( %STRING% url, <!-- url --> %STRING% header, <!-- intestazioni aggiuntive --> %STRING% body, <!-- corpo --> %NUMBER% bodylen, <!-- dimensione body --> %STRING% user, <!-- utente login --> %STRING% pass, <!-- password login --> %STRING% *outhdr, <!-- intestazione risposta --> %STRING% *result, <!-- risposta --> %NUMBER% timeout [, <!-- tempo attesa risposta (sec.) --> %STRING% proxy, <!-- nome proxy --> %NUMBER% pport [, <!-- porta proxy --> %STRING% puser, <!-- utente login proxy --> %STRING% ppsw]]) <!-- password login proxy -->

Descrizione consente di eseguire una url verso un server remoto.

Valore restituito valore numerico
Torna 0 in caso di operazione eseguita con successo;
Torna -1 o un codice di errore specifico, se disponibile, in caso di errore.

Vedere anche %GETFILE%


NUMBER %HWCOUNT%
Scopo utilizzato da Highway Application Server nella chiamata a funzioni di librerie esterne

Sintassi %HWCOUNT%

Descrizione viene valorizzato in uscita da una chiamata ad una funzione di libreria esterna con il numero dei parametri ritornati dalla funzione richiesta con %HWCUSTOM% o %HWLIB%

Valore restituito valore anumerico
Torna il numero dei parametri ritornati dalla funzione di libreira esterna invocata.

Vedere anche %HWCUSTOM% %HWLIB%


NUMBER %HWCUSTOM%
Scopo richiede l'esecuzione della funzione specificata della libreria di archivo (nomearchivio.dll/.so).

Sintassi %HWCUSTOM%(%STRING% nomefunzione, %STRING% parametri)

Descrizione Consente di utilizzare le funzioni dichiarate in una determinata libreria che prende il nome dell'archivio corrente.
Ad Highway Server è demandato il compito di inizializzare e terminare la libreria indicata.
In uscita, se non vi sono errori, vengono valorizzati %HWOUT%(%INDEX%) e %HWCOUNT%.

Valore restituito valore numerico
Torna un valore diverso da zero se l'operazione è stata eseguita con successo;
Torna 0 in caso di errore generico.

Vedere anche %HWOUT%, %HWCOUNT%, %HWLIB%


NUMBER %HWLIB%
Scopo richiede l'esecuzione della funzione specificata della libreria indicata.

Sintassi
%STRING% HWLIB (%NUMBER% flags
    %STRING% funzione
    %STRING% parametri)

Descrizione come %HWCUSTOM% permette di eseguire un funzione contenuta in una libreria, ma a differenza di %HWCUSTOM% consente di specificare il nome della libreria da utilizzare.
flags
valori descrizione
0 la libreria viene scaricata in uscita dalla funzione
0x04 la libreria viene scaricata solo al termine del processo
In uscita, se l'operazione si è svolta con successo, vengono impostati %HWCOUNT% e %HWOUT%(indice) valorizzando rispettivamente il numero di parametri tornati e il loro valore.

Valore restituito valore numerico
Torna un valore diverso da 0 in caso di successo
Torna 0 in caso di errore generico.

Vedere anche %HWOUT%, %HWCUSTOM%, %HWCOUNT%


STRING %HWOUT%
Scopo consente di accedere ad un riferimento ad un parametro in uscita.

Sintassi
%STRING% %HWOUT% (%NUMBER% indice)

Descrizione Utilizzato dopo una chiamata ad una funzione eseguita con %HWCUSTOM% O %HWLIB% riceve i riferimenti ai parametri in uscita della funzione chiamata.
indice è espresso in base 1.

Valore restituito valore alfanumerico
Torna una stringa valorizzata con i parametri tornati.
Torna una stringa vuota in caso di errore generico.

Vedere anche %HWCUSTOM%, %HWLIB%, %HWCOUNT%


NUMBER %IDXGREATER%
Scopo data una chiave di riferimento, consente di leggere la chiave successiva del vocabolario verticale.

Sintassi
%NUMBER% %IDXGREATER% (%STRING% *d
    %STRING% s)

Descrizione Data una chiave di posizionamento s consente di richiedere ad Highway Server la chiave successiva del vocabolario verticale dell'attributo corrente.
In *d, precedentemente dichiarata dallo script chiamante, sarà memorizzata la chiave successiva a quella indicata in s.
(direzione di interrogazione: verso il basso)

Valore restituito valore numerico.
Torna 0 in caso di fine lista.
Torna 1 in caso la chiave in d NON ha come radice s.
Torna 2 in caso la chiave in d ha come radice s.
Torna 3 in caso trovata esattamente s.
Torna < 0 in caso di errore.

Vedere anche %IDXNEXT%, %IDXPREV%

Esempio
%IF%(%4CALL%("ThVerticale", <nomeattr>, <valore>, <direzione>, %MAXVITEMS%, ""))
 %STRCPY%(keyth, "")
 %numcpy%(keyon, 0)
 %IF%(idxgreater(keyth, %VITEM%(1)) == 3)
  %STRCPY%(keyth, "")
  %IF%(idxprev(keyth))
   <!-- prima pagina -->
   <A href="..."><img src="primapagina.gif"></A>
   <!-- pagina precedente -->
   <A href="..."><img src="paginaprecedente.gif"></A>
  %ELSE%
   <!-- prima pagina disabilitata-->
   <A href="..."><img src="primapagina_gray.gif"></A>
   <!-- pagina precedente disabilitata-->
   <A href="..."><img src="paginaprecedente_gray.gif"></A>
  %ENDIF%
 %ENDIF%
 %STRCPY%(keyth, "")
 %numcpy%(keyon, 0)
 %IF%(idxgreater(keyth, %VITEM%(%VITEMS%)) == 3)
  %STRCPY%(keyth, "")
  %IF%(idxnext(keyth))
   <!-- pagina successiva -->
   <A href="..."><img src="paginasuccessiva.gif"></a>
   <!-- ultima pagina -->
   <A href="..."><img src="ultimapagina.gif"></A>
  %ELSE%
   <!-- pagina successiva disabilitata-->
   <A href="..."><img src="paginasuccessiva_gray.gif"></a>
   <!-- ultima pagina disabilitata-->
   <A href="..."><img src="ultimapagina_gray.gif"></A>
  %ENDIF%
 %ENDIF%
%ENDIF%


NUMBER %IDXNEXT%
Scopo legge la chiave successiva del vocabolario verticale (rispetto alla posizione corrente).

Sintassi
%NUMBER% IDXNEXT (%STRING% *d)

Descrizione Consente di recuperare la successiva chiave di vocabolario verticale.
Highway Application Server inizializza, al primo accesso al vocabolario verticale, un descrittore che mantiene un riferimento alla chiave corrente.
Invocando %IDXNEXT% senza precedenti chiamate di posizionamento (vedi %IDXGRATER%) la chiave ritrovata corrisponderà alla chiave successiva a quella corrente.
Se il descrittore è attualmente posizionato al termine del vocabolario verticale, sarà tornato il primo termine della lista.

Valore restituito valore numerico
Torna un valore diverso da 0 in caso di esito positivo;
Torna 0 in caso di errore generico.

Vedere anche %IDXGREATER%, %IDXPREV%

Esempio
(vedi %IDXGREATER%)


NUMBER %IDXPREV%
Scopo legge la chiave precedente del vocabolario verticale (rispetto alla posizione corrente).

Sintassi
%NUMBER% IDXPREV (%STRING% *d)

Descrizione Invocando %IDXPREV% senza aver precedentemente invocato alcuna funzione di posizionamento, si otterra la chiave precedente alla chiave corrente (quella sulla quale il descrittore del file indice è attualmente posizionato).
d dovrà essere dichiarato dallo script chiamante sarà valorizzato al ritorno della chiamata.

Valore restituito valore numerico
Torna un valore diverso da 0 in caso di esito positivo;
Torna 0 in caso di errore generico.

Vedere anche %IDXGREATER%, %IDXNEXT%

Esempio
(vedi %IDXGREATER%)


VOID %IGNOREECHO%
Scopo disabilita l'ascolto delle successive istruzioni di ECHO sullo script in elaborazione.

Sintassi
%VOID% IGNOREECHO

Descrizione consente di intervenire in un determinato script disabilitando qualsiasi successiva istruzione di ECHO.
Utilizzato in fase di debug per mandare in output l'esecuzione dello script indipendentemente dalle condizioni di ECHO impostate successivamente.

Valore restituito nessun valore

Vedere anche %DETACH%, %ECHOON%, %ECHOOFF%

Esempio
...
%IGNOREECHO%
%ECHOOFF% utilizzare in fase di debug<br>
%SKIP% Frase di ricerca %ENDSKIP%
%SELDATA%
%ECHOON%
...

Program output
utilizzare in fase di debug
(([CAMPO]=VALORE))


NUMBER %IMAGES%
Scopo Variabile d'ambiente che contiene il numero di immagini associate al documento corrente.

Sintassi
%NUMBER% %IMAGES%

Descrizione variabile dell'ambiente Highway Application Server disponibile a seguito del caricamento di un documento tramite %BLOADDOC%, che consente di rilevare il numero delle immagini allegate ad un documento.
Questa istruzione rileva le immagini che sono state allegate ad un determinato documento mediante l'uso di Eikon in applicazioni native (ambiente Highway).
La gestione delle immagini allegate mediante l'uso di Highway Imaging Control consente di determinare il numero delle immagini allegate ad un determinato documento mediante chiamata alla funzione %ATTROWS% per l'attributo dedicato a contenerne i riferimenti.

Valore restituito valore numerico
Torna il numero delle immagini associate al documento.
Torna 0 se non vi sono immagini associate al documento.
Non viene compilato in caso di errore generico.

Vedere anche %IMAGEPATH%, %IMAGEURL%, %THUMB%, %THUMBURL%

Esempio
%IF%(%IMAGES%)
 %REPEAT% (1,%IMAGES%)
  <IMG SRC="%IMAGEURL% (%INDEX%)">Immagine nr. %INDEX%<BR>
 %ENDREPEAT%
%ELSE%
 nessuna immagine presente<BR>
%ENDIF%

Program output
Immagine nr. 1
Immagine nr. 2


STRING %IMAGEURL%
Scopo Variabile ambientale alfanumerica contenente l'URL della immagine allegata.

Sintassi
%STRING% %IMAGEURL% (%NUMBER% pagina[,
    %NUMBER% gruppo])

Descrizione Permette di recuperare la URL dell'immagine individuata da %INDEX%, prelevandola dalla lista delle immagini associate al documento, precedentemente caricato tramite la %BLOADDOC%.

Valore restituito valore alfanumerico
Torna una stringa con la URL dell'immagine indicata.
Torna una stringa vuota in caso di errore generico.

Vedere anche %THUMBURL%

Esempio
(vedi %IMAGES%)


STRING %IMAGEPATH%
Scopo Variabile ambientale alfanumerica contenente il percorso DOS della immagine allegata.

Sintassi
%STRING% %IMAGEPATH% (%STRING% pagina[,
    %STRING% gruppo])

Descrizione Permette di recuperare il percorso DOS dell'immagine individuata da %INDEX%, prelevandola dalla lista delle immagini associate al documento corrente.
Chiaramente il percorso sarà relativo alla locazione nella quale il server memorizza i file-immagine.

Valore restituito valore alfanumerico
Torna una stringa contenente un percorso + nomefile + estensione in caso di esito positivo;
Torna stringa vuota in caso di errore generico.

Vedere anche %IMAGEURL%


DIRECTIVE %INCLUDE%
Scopo Processa ed include il file specificato

Sintassi
  %INCLUDE% (%STRING% nomefile)

Descrizione usato per processare ed includere all'interno della form corrente il file specificato. nomefile rappresenta un identificativo di file dichiarato nella sezione [CGI] nel file <nomearchivio>.ini oppure nella sezione [GENERICO] di hicgi.ini.

Valore restituito nessuno


NUMBER[*] %INDEX%
Scopo variabile ambientale numerica contenente l'indice di una lista di elementi dello stesso tipo.

Sintassi
%NUMBER%[*] %INDEX% [%NUMBER% indiceloop]

Descrizione variabile ambientale numerica che rappresenta l'indice di riferimento di una lista di elementi.
Usata nei loop (%REPEAT%...%ENDREPEAT%);
il parametro opzionale va usato per referenziare indici di loop più esterni: 1 indica il loop corrente (default che non necessita di essere indicato), 2 quello immediatamente più esterno e così via.

Valore restituito valore numerico
Torna il valore dell'elemento richiesto all'interno di un ciclo loop.

Vedere anche Cicli

Esempio
%REPEAT%(1, %TOTSEL%)
 %INVALIDATEDOC%
 %IF%(%BLOADDOC%(%CURDOC% + %INDEX%))
  %IF%(%IMAGES%)
   %REPEAT%(1, %IMAGES%)
    <IMG src="%THUMBURL%(%INDEX%)" alt="%DOCTITLE%(%CURDOC%+%INDEX%(2))"></A>
   %ENDREPEAT%
  %ENDIF%
 %ENDIF%
%ENDREPEAT%


VOID %INVALIDATEDOC%
Scopo forza il caricamento del documento alla prossima richiesta.

Sintassi
VOID %INVALIDATEDOC%    

Descrizione Indica ad Highway Application Server che alla prossima chiamata della %LOADDOC% o %BLOADDOC%, il documento deve essere caricato direttamente dal database e non dall'eventuale precedente cache.
Consente quindi di essere certi che i dati che saranno disponibili sono quelli che in quel momento sono memorizzati nella base dati, e non quelli precaricati da una precedente lettura dello stesso documento.

Valore restituito nessuno

Vedere anche %LOADDOC%, %BLOADDOC%


VOID %INVALIDATEARC%
Scopo forza l'apertura dell'archivio alla prossima richiesta.

Sintassi
VOID %INVALIDATEARC%    

Descrizione Come per la %INVALIDATEDOC%, indica ad Highway Application Server che la prossima richiesta di accesso all'archivio corrente dovrà ricaricare il relativo archivio.
Permette di essere certi dell'attualità dei dati e della struttura dell'archivio a cui si intende accedere.

Valore restituito nessuno

Vedere anche %OPENARC%, %CLOSEARC%


NUMBER %INVREL%
Scopo torna il progressivo della relazione inversa dell'elemento indicato.

Sintassi
%NUMBER% %INVREL% (%NUMBER% pos)

Descrizione torna il progressivo, in base 1, nell'elenco delle relazioni di thesaurus associato alla relazione reciproca della relazione individuata da pos.

Valore restituito valore numerico
Torna un valore numerico maggiore di 0;
Torna -1 se la relazione non ha reciprocità.

Vedere anche %REL%, %RELSINT%, %RELPOS%, %RELDESCR%


STRING %ITOA%
Scopo converte un valore numerico in una stringa.

Sintassi
%STRING% %ITOA% (%NUMBER% espressionenumerica
    %NUMBER% base)

Descrizione Dato un valore numerico, consente di ottenerne la rappresentazione in formato stringa.
base rappresenta la base numerica verso la quale eseguire la conversione (p.e. ottale, decimale, esadecimale ...)
Su piattaforma UNIX non sono gestiti valori di base diversi da 8,10 o 16.

Valore restituito valore alfanumerico
Torna 0 in caso di errore generico.

Vedere anche %ATOI%

Esempio
%NUMBER%(n1, 16)
%WRITE%(%ITOA%(n1, 8))<br>
%WRITE%(%ITOA%(n1, 10))<br>
%WRITE%(%ITOA%(n1, 16))<br>

Program output
20
16
10


STRING %ITOM%
Scopo torna la rappresentazione binaria di un numero intero.

Sintassi
%STRING% %ITOM% (%NUMBER% n)

Descrizione Utilizzata per ottenere la rappresentazione binaria di un numero intero n.
Ad esempio su piattaforma Intel 32 %ITOM%(3) torna i quattro byte: 03 00 00 00.
Il tipo %STRING% è idoneo anche alla rappresentazione di dati binari.
La funzione strlen() in questo caso torna la dimensione dell'area di memoria occupata e non viene disturbata dalla presenza di zeri.

Valore restituito valore alfanumerico
Torna una stringa che rappresenta il valore convertito; Non viene compilata l'istruzione in caso di errore generico.

Vedere anche %MTOI%, %BIN2HEX%, %HEX2BIN%

Esempio
%NUMBER%(n, 3)
%WRITE%(%ITOM%(n))

Program output
03 00 00 00


STRING %JD2DATE%
Scopo converte una data dal formato numerico di calcolo al formato Highway: "aaaammgg".

Sintassi
%STRING% %JD2DATE% (%NUMBER% date)

Descrizione Utilizzata per la riconversione di una data codificata con %DATE2JD% in formato numerico idoneo per il calcolo fra date, nel formato data di Highway.

Valore restituito valore alfanumerico
Torna una stringa che rappresenta la conversione dell'argomento ricevuto.

Vedere anche %DATE12JD%, %DATE%, %DATE$%, %DATE2ATTR%, %CURDATE%

Esempio
%NUMBER%(ndate, %DATE2JD%("20001128"))
%WRITE%(%ITOA%(ndate))<br>
%JD2DATE%(ndate)

Program output
2451876
20001128


VOID %KEYCHR%
Scopo imposta il carattere usato nella delimitazione delle istruzioni del linguaggio di script.

Sintassi
VOID %KEYCHR% (%STRING% carattere)

Descrizione consente di modificare il carattere utilizzato per delimitare le parole chiave del linguaggio di script Highway Language;
La modifica del carattere separatore delle parole chiave avrà effetto immediatamente dopo l'istruzione %KEYCHR% e terminerà la sua efficacia al termine dello script nel quale è stata inserita (l'effetto si ripercuote anche sugli script inclusi).

Valore restituito nessuno

Esempio
%STRING%(var, "")
%KEYCHR%("")
STRCPY(var,"prova")
...
KEYCHR("_")
_STRCAT_(var,"prova2")


STRING %KEYSEPAR%
Scopo torna i separatori per l'attributo specificato.

Sintassi
%STRING% %KEYSEPAR% (%STRING% attributo)

Descrizione Richiede ad Highway Application Server i caratteri separatori previsti per l'attributo indicato in attributo.
Sono previsti caratteri separatori solo per gli attributi dichiarati Multivalore.

Valore restituito valore alfanumerico
Torna una stringa che contiene i caratteri separatori oppure una stringa vuota;
Non viene compilata in caso di errore generico.

Vedere anche %ATTRINFO%, %ATTRTYPE%

Esempio
%STRING%(separatori, "")
%NUMBER%(idtab, %NUMTABELLA%("TABELLA1"))
%NUMBER%(idattr, %NUMATTR%(idtab, "ATTRIBUTO1"))
%NUMBER%(infoattr, %ATTRINFO%(idtab, idattr))
%IF%(infoattr & 0x00000800)
 %STRCPY%(separatori, %KEYSEPAR%("ATTRIBUTO1"))
 ...
%ENDIF%


STRING [*] %KEYVAL%
Scopo recupera il valore di una coppia chiave-valore.

Sintassi
%STRING% %KEYVAL% (%STRING% chiave)

Descrizione Consente di richiedere il valore di una determinata coppia chiave-valore, cioè di una variabile dichiarata in riga di comando del browser o di un link

Valore restituito valore alfanumerico
Torna una stringa con il valore assegnato alla chiave;
In caso di chiave ripetuta, torna il valore assegnato alla prima istanza della chiave;
Torna una stringa vuota in caso di errore generico o chiave vuota o non presente.

Vedere anche %KEYNAME%, %TUPLEKEY%, %TUPLEVAL%

Esempio
data una riga di comando del tipo:
http;//www.miocomputer.it/h3/h3.exe/anomearchivio?coppia1=valore1;coppia2=valore2
%KEYVAL%("coppia1")
%KEYVAL%("coppia2")
%KEYVAL%("coppia3")

Program output
valore1
valore2


NUMBER %KEYFILE%
Scopo torna la dimensione dei dati associati ad un <input type="file">

Sintassi
%NUMBER% %KEYFILE% (%STRING% chiave)

Descrizione Consente di verificare il contenuto della coppia chiave-valore originata da un tag di tipo <INPUT type="file"> sulla pagina html del client purchè nel tag <form> della pagina stessa sia stato dichiarato ENCTYPE="multipart/text-data".
In base al valore ritornato dalla %KEYFILE% si potrà determinare l'esistenza di un file allegato.
Utilizzata per inviare al server web una quantità di dati non consentita in riga di camando oppure per la gestione di file allegati senza l'ausilio di Highway Imaging Control.

Valore restituito valore numerico
Torna la dimensione in bytes del file allegato;
Torna 0 in caso di errore generico o di nessun file associato alla coppia chiave-valore.

Vedere anche %KEYWRITE%, %KEYAPPEND%

Esempio
%IF%(%KEYFILE%("file"))
 %STRING%(nomefilesuhost, "")
 %STRING%(nomefilesuclient, %KEYVAL%("file"))
 %NUMBER%(pos, %STRSTR%(nomefilesuclient, ".") + 1)
 %GETTEMPFILENAME%(nomefilesuhost, %MID%(nomefilesuclient, pos, -1))
 %KEYWRITE%("file", nomefilesuhost)
%ENDIF%


NUMBER %KEYWRITE%
Scopo scrive il contenuto del file ricevuto su un file locale, svuotandolo se già valorizzato.

Sintassi
%NUMBER% %KEYWRITE% (%STRING% chiave,
    %STRING% nomefile)

Descrizione Consente di salvare in un file, sul web server, il contenuto di un file ricevuto dal client.
Highway Application Server scrive il contenuto del file rilevato dalla coppia chiave-valore indicata in chiave nel file indicato in nomefile; se nomefile non è vuoto, sarà sovrascritto con il nuovo valore.
Per l'invio di file da parte del client, deve essere dichiarato un tag <FORM> con la proprieta ENCTYPE="multipart/form-data" ed un tag <INPUT> con type="file"

Valore restituito valore numerico
Torna il numero di bytes scritti se l'operazione è andata a buon fine;
Torna -1 in caso di errore.

Vedere anche %KEYFILE%, %KEYAPPEND%

Esempio
(vedi vedi %KEYFILE%)


NUMBER %KEYAPPEND%
Scopo scrive in coda ad un file esistente il contenuto del file ricevuto.

Sintassi
%NUMBER% %KEYAPPEND% (%STRING% chiave,
    %STRING% nomefile)

Descrizione Consente di salvare in coda ad un file esistente, sul web server, il contenuto di un file ricevuto dal client.
Highway Application Server apre un file esistente con il nome indicato in nomefile in modalità "append" e vi scrive il contenuto del file rilevato dalla coppia chiave-valore indicata in chiave.
Per l'invio di file da parte del client, deve essere dichiarato un tag <FORM> con la proprieta ENCTYPE="multipart/form-data" ed un tag <INPUT> con type="file"

Valore restituito valore numerico
Torna il numero di bytes scritti se l'operazione è andata a buon fine;
Torna -1 in caso di errore.

Vedere anche %KEYFILE%, %KEYWRITE%

Esempio
%STRING%(nomefilesuhost, "")
%IF%(%KEYFILE%("file"))
 %IF%(%STRLEN%(nomefilesuhost))
  %IF%(%PROFILE%(nomefilesuhost, "file4file", "Generico")==0)
   %IF%(%GETTEMPFILENAME%(nomefilesuhost, ".txt"))==0)
    %INCLUDE%("ErrOnSaveData")
   %ENDIF%
  %ENDIF%
 %ENDIF%
 %IF%(%STRLEN%(nomefilesuhost))
  %KEYAPPEND%("file", nomefilesuhost)
 %ENDIF%
%ENDIF%


NUMBER[*] %LASTERRORNUMBER%
Scopo recupera il codice numerico associato all'ultimo errore

Sintassi %LASTERRORNUMBER%

Descrizione Consente di rilevare il codice identificativo dell'ultimo errore rilevato.

Valore restituito valore numerico
Torna l'identificativo numerico dell'ultimo errore rilevato.
Torna 0 in caso di errore generico.

Vedere anche %LASTERRORSTRING%


STRING %LASTERRORSTRING%
Scopo recupera la descrizione dell'ultimo errore rilevato.

Sintassi %LASTERRORSTRING%

Descrizione variabile di sola lettura che consente di recuperare il messaggio associato all'ultimo errore rilevato relativamente ad una richiesta verso Highway Server identificata da %LASTERRORNUMBER%.

Valore restituito valore alfanumerico
Torna il messaggio associato all'ultimo errore rilevato.
Torna una stringa vuota in caso di errore generico.

Vedere anche %LASTERRORNUMBER%


STRING %LASTUPDATE%
Scopo stringa con data e ora dello script corrente nel formato gg/mm/aaaa hh:mm:ss.

Sintassi
%STRING% %LASTUPDATE%    

Descrizione COnsente di accedere ad informazioni sui file relativamente agli script in esecuzione.
%LASTUPDATE% consente di rilevare la data e l'ora in cui sono stati aggiornati gli script in esecuzione.

Valore restituito valore alfanumerico
Torna data e ora in formato dell'ultima modifica eseguita sul file-script in esecuzione.
Torna stringa vuota in caso di errore generico.

Vedere anche %FILEDATE%, %FILESIZE%, %FILEATTR%


STRING %LEFTTRIM%
Scopo Processa la stinga specificata rimuovendo spazi, tabulazioni, carriage return e new line iniziali.

Sintassi
%STRING% %LEFTTRIM% (%STRING% stringa)

Descrizione usato per rimuovere spazi, TAB, CR ed LF in testa ad una stringa specificata.

Valore restituito valore alfanumerico
Torna una stringa dalla quale sono stati rimossi spazi, tabulazioni, carriage return e new line nella parte iniziale;
Torna una stringa vuota in caso di errore generico.

Vedere anche %RIGHTTRIM%, %MID%

Esempio
%STRING%(testa, "Highway")
%STRING%(coda, " Application Server")
%WRITE%(testa)%WRITE%(coda)<br>
%WRITE%(testa)%WRITE%(%LEFTTRIM%(coda))

Program output
Highway     Application Server
HighwayApplication Server


VOID %LOADDOC%
Scopo rende disponibili i dati del documento specificato

Sintassi
VOID %LOADDOC% (%NUMBER% documento)

Descrizione Esegue il caricamento del documento corrente valorizzando le relative variabili ambientali come %CURDOC% e rendendo disponibili i contenuti degli attributi.
A differenza di %BLOADDOC%, questa funzione non ritorna nessuna conferma sul corretto caricamento del corrente.

Valore restituito nessuno.

Vedere anche %BLOADDOC%


NUMBER %LOCK%
Scopo blocca l'archivio corrente.

Sintassi
%NUMBER% %LOCK%    

Descrizione Blocca l'archivio corrente, impedendo l'accesso a qualsiasi istanza di Highway Application Server fino alla successiva chiamata di %UNLOCK% o fino a che non vengono terminate tutte le sue istanze.
L'esecuzione di %LOCK% quando l'archivio è già bloccato, genera un valore di ritorno che indica errore proprio perchè l'archivio è già bloccato.

Valore restituito valore numerico
Torna 1 se l'operazione è andata a buon fine;
Torna 0 in caso di errore generico o di archivio già bloccato.

Vedere anche %UNLOCK%, %DBLOCK%, %DBUNLOCK%


NUMBER %LOCKFILE%
Scopo imposta o rimuove un blocco sul file identificato.

Sintassi
%NUMBER% %LOCKFILE% (%NUMBER% fileid
    %NUMBER% mode[
    %NUMBER% count])

Descrizione blocca l'accesso al file identificato da fileid fino alla successiva chiamata a %LOCKFILE% con mode=2.
mode assume i seguenti valori:
valore descrizione
0 richiede il blocco del file restando in attesa fino al completamento dell'operazione
(fino a 10 secondi su piattaforma NT)
1 non attende se l'operazione non viene completata al primo tentativo
2 sblocca il file


count su alcune piattaforme UNIX viene ignorato;
su piattaforma NT specifica il numero di bytes da bloccare a partire dalla posizione corrente;
se omesso il blocco viene esteso a tutto il file.

Valore restituito valore numerico
Torna 0 in caso di operazione eseguita con successo;
Torna -1 in caso di errore generico.


VOID %LOGWRITE%
Scopo scrive lo specificato messaggio sul file di log indicato.

Sintassi
VOID %LOGWRITE% (%STRING% messaggio
    %NUMBER% mode)

Descrizione Consente di spedire un messaggio al file di log redatto da Highway Application Server.
messaggio contiene il messaggio da scrivere sul file di log;
mode indica su quale file deve essere scritto messaggio e può assumere i seguenti valori:
valore descrizione
1 scrive sul file di log dell'applicazione
2 non scrive sulla finestra di console
4 scrive sul file di log di sistema

Valore restituito nessuno

Vedere anche %KEYWRITE%, %WRITE%, %OUTPUTTO%

Esempio
%logwrite%("scrivi su hicgi.log", 1)
%logwrite%("non scrivere sulla finestra di console", 2)
%logwrite%("scrivi sul file di log di sistema, se esiste e se viene redatto", 4)


STRING %MASK%
Scopo Codifica di caratteri

Sintassi %MASK%(%STRING% data, %STRING% seed, %NUMBER% mode)

Descrizione Torna la codifica di data secondo il seme seed.
mode può assumere i seguentoi valori:

  • mode = 0
    garantisce la stampabilità dei dati se in ingresso sono stampabili;
    versioni di Highway Application Server >= 3.2.5.3 producono risultati diversi dalle versioni precedenti per stringhe conteneti caratteri al di sopra di 127;
  • mode = 1
    non garantisce la stampabilità dei dati in uscita.
Tipicamente utilizzata per crittare determinate informazioni che possono essere rese in chiaro, tramite la %UNMASK%, solo se si è a conoscenza della modalità con cui l'informazione è stata crittata.

Valore restituito valore alfanumerico
Torna stringa vuota in caso di errore generico.

Vedere anche %UNMASK%

Esempio
%STRING%(msg2cript, "Importo base dell'appalto: £ 130.000.000")
%STRING%(keycode, "3D Informatica")
%STRING%(msgcoded, "")
%NUMBER%(mode, 1)
%STRCPY%(msgcoded, %MASK%(msg2cript, keycode, mode))
%WRITE%(msgcoded)<br>
<!-- chi conosce la chiave di decodifica 'keycode' può leggere il valore criptato -->
%STRCPY%(msg2cript, %MASK%(msgcoded, keycode, mode))
%WRITE%(msgcoded)<br>

Program output
I\Qv[InVxZuUnWD Li MVY(hH eOVvxNyQD'Xe`xqVZD^I Ywo+8T I£O ^(N)`.q4p1k5f5E. 3w9.,
Importo base dell'appalto: £ 130.000.000


NUMBER %MAXBITEMS%
Scopo numero massimo di voci visualizzate per pagina di browse gerarchico.

Sintassi
%NUMBER% %MAXBITEMS%    

Descrizione Variabile dell'ambiente Highway che rappresenta il numero massimo di elementi visualizzabili in una pagina di BrowseGerarchico.
Tipicamente utlizzata con l'istruzione %REPEAT% per eseguire il loop sugli elementi da visualizzare in uno script hl.
E' previsto un valore di default = 12, di norma indicato in hicgi.ini

Valore restituito valore numerico
Torna il numero degli elementi visualizzabili oppure il valore di default.

Vedere anche %MAXTHUMBS%, %MAXVITEMS%, %MAXTHUMBS%, compilazione di nomerachivio.ini

Esempio
%IF%(%5CALL%("BrowseGerarchico", stato, "", %NUMDOC%, 7, "Max Righe Browse"))
 %REPEAT%(1, %MAXBITEMS%)
  ...
 %ENDREPEAT%
%ENDIF%


NUMBER %MAXTHUMBS%
Scopo Variabile numerica di ambiente contenente il numero massimo di thumbnails (dispositive) visualizzabili all'interno di una pagina di indici.

Sintassi
%NUMBER% %MAXTHUMBS%    

Descrizione contiene il numero massimo di thumbnails (dispositive) visualizzabili all'interno di una pagina di indici.


E' previsto un valore di default = 12, di norma indicato in hicgi.ini

Valore restituito valore numerico
Torna il numero degli elementi visualizzabili oppure il valore di default.

Vedere anche %MAXVITEMS%, %MAXBITEMS%, compilazione di nomerachivio.ini


NUMBER %MAXVITEMS%
Scopo Variabile numerica di ambiente contenente il numero massimo di voci visualizzabili all'interno di una pagina di vocabolario.

Sintassi
%NUMBER% %MAXVITEMS%    

Descrizione contiene il numero massimo di elementi visualizzabili all'interno di una pagina di vocabolario.
E' previsto un valore di default = 12, di norma indicato in hicgi.ini

Valore restituito valore numerico
Torna il numero degli elementi visualizzabili oppure il valore di default.

Vedere anche %MAXTHUMBS%, %MAXBITEMS%, compilazione di nomerachivio.ini


VOID %MEMCPY%
Scopo Copia il contenuto di una variabile all'interno di un'altra variabile, a partire dalla posizione specificata

Sintassi
VOID %MEMCPY% (%STRING%* s1
    %STRING%* s2
    %NUMBER% from)

Descrizione Copia il contenuto di s2 all'interno di s1 , partendo da una posizione from (base 0) relativa a s1.
s1 viene sovrascritta a partire da from e se necessario, viene ampliata la porzione di memoria occupata.

Valore restituito nessuno

Vedere anche %MEMSET%, %STRCPY%, %STRCAT%

Esempio
%STRING%(var1, "Highway Protocol")
%STRING%(var2, "Application Server")
%MEMCPY%(var1, var2, 7)
%WRITE%(var1)

Program output
Highway Application Server


NUMBER %MEMCMP%
Scopo esegue il confronto di un indicato numero di caratteri in modo case sensitive fra due stringhe indicate.

Sintassi
%NUMBER% %MEMCMP% (%STRING*% s1
    %STRING%* s2
    %NUMBER% n)

Descrizione Confronta, in modo case sensistive, il contenuto di s1 con s2 dei primi n caratteri.

Valore restituito valore numerico
Torna: s1<s2 -> <0, s1==s2 -> 0, s1>s2 -> >0.

Vedere anche %MEMICMP%, %STRCMP%, %STRICMP%

Esempio
%ITOA%(%MEMCMP%("Highway","Language", 7))
%ITOA%(%MEMCMP%("Language","Highway", 7))
%ITOA%(%MEMCMP%("Language","language", 8))

Program output
-1
1
-1


NUMBER %MEMICMP%
Scopo esegue il confronto di un indicato numero di caratteri in modo case insensitive fra due stringhe indicate.

Sintassi
%NUMBER% %MEMICMP% (%STRING%* s1
    %STRING%* s2
    %NUMBER% n)

Descrizione Confronta, in modo case insensistive, il contenuto di s1 con s2 dei primi n caratteri.

Valore restituito valore numerico
Torna: s1<s2 -> <0, s1==s2 -> 0, s1>s2 -> >0.

Vedere anche %MEMCMP%, %STRCMP%, %STRICMP%

Esempio
%ITOA%(%MEMCMP%("Highway","Language", 7))
%ITOA%(%MEMCMP%("Language","Highway", 7))
%ITOA%(%MEMCMP%("Language","language", 8))

Program output
-1
1
0


VOID %MEMSET%
Scopo Esegue la copia di un carattere, per un numero di volte impostato, su un altra stringa, partendo dalla posizione indicata.

Sintassi
VOID %MEMSET% (%STRING%* s1
    %STRING%* s2
    %NUMBER% from
    %NUMBER% count)

Descrizione Consente di eseguire copiare s1 in s2 per un numero di volte espresso da count (base 1), partendo dalla posizione indicata da from (base 0) .
Se s1 contiene più di un carattere, verrà replicato il primo carattere di s1.

Valore restituito nessuno.

Vedere anche %STRCHG%, %CLASSCOPY%

Esempio
%STRING%(p, "prova")
%MEMSET%(p, "cz", 2, 10)

Program output
prcccccccccc


STRING %MID%
Scopo Estrae una sottostringa di un numero di caratteri indicato partendo da una determinata posizione.

Sintassi
%STRING% %MID% (%STRING% s
    %NUMBER% start
    %NUMBER% count)

Descrizione usata per estrarre da una stringa di partenza s un certo numero di caratteri count (base 1) a partire da una certa posizione start (base 0).
Se count viene posto a -1, viene estratta una sottostringa a partire da start fino a fine s

Valore restituito valore alfanumerico
Torna una sottostringa;
Non viene compilata in caso di errore generico.

Vedere anche %MEMCPY%

Esempio
%STRING%(h, "Highway Language")
%STRING%(h2, "")
%STRCPY%(h2, %MID%(h, 8, 8))
%WRITE%(h2)<br>
%STRCPY%(h2, %MID%(h, 8, -1))
%WRITE%(h2)

Program output
Language
Language


NUMBER %MKINDEX%
Scopo rigenera l'indice dell'archivio corrente.

Sintassi
%NUMBER% %MKINDEX%    

Descrizione mediante questo comando è possibile rigenerare il vocabolario verticale.
Di norma si rende necessario ricostruire il vocabolario verticale di un database a seguito di cancellazione di documenti, per eliminare gli elementi con ricorrenza uguale a zero; oppure a seguito di malfunzionamenti nella visualizzazione o nella ricerca.
Prima di eseguire una rigenerazione del vocabolario verticale, è consigliato un blocco completo del database oppure si consiglia di creare un agent da scatenare in momenti di inattività.

Valore restituito valore numerico
Torna 1 in caso di esito positivo;
Torna 0 in caso di errore generico.

Vedere anche %ADMIN%, %DBLOCK%, %LOCK%, %MKTITLES%

Esempio
%STRING%(head, "")
%STRING%(body, "")
%STRING%(enddoc, "</body></html>")

%STRCAT%(head, "<html><head>")
%STRCAT%(head, "<title>Aggiornamento indici</title>")
%STRCAT%(head, "<head>")
%STRCAT%(body, ""<body>")
%WRITE%(head)
%WRITE%(body)
%IF%(%OPENARC%("<aliasarchivio>") == 0)
 %IF%(%DBLOCK%("<aliasarchivio>", 0))
  %IF%(%MKINDEX%)
   %WRITE%("Aggiornamento eseguito con successo")
  %ELSE%
   %WRITE%("Errori in aggiornamento.")
  %ENDIF%
  %IF%(%DBUNLOCK%("<aliasarchivio>") == 0)
   %WRITE%("Fallito sblocco del database")
  %ENDIF%
 %ELSE%
  %WRITE%("Fallito apertura esclusiva database")
 %ENDIF%
 %IF%(%CLOSEARC%("<aliasarchivio>") == 0)
  %WRITE%("Errore in fase di chiusura archivio")
 %ENDIF%
%ELSE%
 %WRITE%("Errore in fase di apertura archivio")
%ENDIF%
%WRITE%(enddoc)


NUMBER %MKTITLES%
Scopo Esegue la rigenerazione dei titoli dell'archivio corrente.

Sintassi
%NUMBER% %MKTITLES%    

Descrizione Consente la rigerazione della stringhe del titolo del database corrente.
L'uso delle stringhe dei titoli (memorizzate in <nomearchivio>.tit e <nomearchivio>.tip) consente, soprattutto in applicazione con elevato numero di documenti, di velocizzare le operazioni di ritorno della ricerca.
Highway Server, dopo aver eseguito una ricerca, anzichè aprire tutti i documenti selezionati per estrarre e costruire run-time le stringhe dei titoli, esegue un posizionamento nei suddetti file ed estrae le stringhe dei titoli da questi, accedendo al database solo al momento della richiesta di visualizzazione del documento.
Per operazioni di questo tipo è consigliato applicare il blocco totale del database o la generazione di un agent da scatenare in momenti di inattività.

Valore restituito valore numerico
Torna 1 in caso di esito positivo;
Torna 0 in caso di errore generico.

Vedere anche %MKINDEX%

Esempio
vedi %MKINDEX% sostituendo %MKINDEX% con %MKTITLES%


NUMBER %MOD%
Scopo Individua il resto di una divisione fra numeri interi.

Sintassi
%NUMBER% %MOD% (%NUMBER% a
    %NUMBER% b)

Descrizione Esegue la divisione fra due numeri interi e torna il resto.
Utile per individuare se il dividendo a è esattamente divisibile per il divisore b, o per sapere se il divisore b è un multiplo esatto del dividendo a

Valore restituito valore numerico
Torna un numero intero resto della divisione;
Non viene compilato in caso di errore generico.

Vedere anche %EVAL%


NUMBER %MTOI%
Scopo converte una rappresentazione binaria

Sintassi
%NUMBER% %MTOI% (%STRING%* s
    %NUMBER% offset)

Descrizione Dato un valore in formato binario rappresentato da *s, si ottiene il corrispettivo valore numerico, tornato in un buffer %STRING%;
offset rappresenta la posizione sul buffer dalla quale iniziare a leggere il valore da convertire.

Valore restituito valore alfanumerico
Torna il valore convertito.
In caso di errore, la riga di codice non verrà compilata

Vedere anche %HEX2BIN%, %BIN2hEX%

Esempio
%MTOI%("\x03\x00\x00\x00")s

Program output
3


NUMBER %NEWDOC%
Scopo Crea il buffer e la struttura per l'inserimento di un nuovo documento

Sintassi
%NUMBER% %NEWDOC% (%STRING% nomeatabella[,
    %NUMBER% seriali = 1])

Descrizione usato per inserire un nuovo documento all'interno di una tabella (nometabella) specificata nell'archivio corrente.
In realtà viene allocato lo spazio fisico su disco, preparata la struttura e inizializzati i valori seriali (se non richiesto esplicitamente con seriali = 0) per il successivo inserimento di un nuovo documento sul database.
L'inserimento vero e proprio avviene solo all'atto del salvataggio del buffer generato con questa funzione.

Valore restituito valore numerico
Torna 1 in caso di esito positivo;
Torna 0 in caso di errore generico.

Vedere anche %SAVEDOC%, %FILLATTR%, %FILLBINATTR%

Esempio
%IF%(%NEWDOC%(%KEYVAL%("TIPOREC"), 1) == 0 )
 %ECHOON%%INCLUDE%(ERR_NEWDOC.HL")%ECHOOFF%
 %RETURN%
%ELSE%
 %REPEAT%(1,%NUMTUPLES%)
  %IF%( %FILLATTR%(%TUPLEKEY%, %TUPLEVAL%) == 0 )
   %ECHOON%%INCLUDE%("ERR_SAVEATTR.HL")%ECHOOFF%
   %RETURN%
  %ENDIF%
 %ENDREPEAT%
%ENDIF%
%IF%(%SAVEDOC% <= 0)
 %ECHOON%%INCLUDE%("NO_SAVED.HL")%ECHOOFF%
%ELSE%
 %ECHOON%%INCLUDE%(QBE.HL")
%ENDIF%


NUMBER %NEXTLINE%
Scopo legge una nuova riga sul file indicato

Sintassi
%NUMBER% %NEXTLINE% (%STRING% buffer
    %NUMBER% fileid)

Descrizione Legge dal file identificato da fileid la successiva riga non vuota rispetto alla corrente posizione del descrittore attivo e la scrive in buffer.

Valore restituito valore numerico
Torna il numero dei bytes letti in caso di esito positivo;
Torna 0 in caso di errore generico o fine file.

Vedere anche %READFILE%, %OPENFILE%, %CLOSEFILE%, %WRITEFILE%

Esempio
%STRING%(buffer, "")
%NUMBER%(fileid, 0)
%NUMCPY%(fileid, %OPENFILE%("<nomecompletofile>"))
%IF%(fileid != 0)
 <SELECT name="tipo_info">
  <OPTION value=""></OPTION>
  %LOOP%
   %IF%(%NEXTLINE%(buffer, fileid) > 0)
    <OPTION value="%WRITE%(buffer)">%WRITE%(buffer)</OPTION>
   %ELSE%
    %BREAK%
   %ENDIF%
  %ENDLOOP%
 </SELECT>
%ENDIF%
%CLOSEFILE%(fileid)

Program output


NUMBER %NUMATTR%
Scopo torna l'identificativo numerico associato all'attributo e alla tabella specificati.

Sintassi
%NUMBER% %NUMATTR% (%NUMBER% indicetabella
    %STRING% nomeattributo)

Descrizione Consente di recuperare il numero identificativo individuato da indicetabella e da nomeattributo.
La struttura dei database Highway è racchiusa in un array bidimensionale nel quale il primo indice (base 0) identifica la tabella di provenienza ed il secondo (base 1) è associato agli attributi che ne fanno parte.
Nell'indice 0 del secondo elemento è memorizzato l'indice identificativo della tabella di apprtenenza.
Per maggiori chiarimenti vedere l'esempio allegato.

Valore restituito valore numerico
Torna l'indice numerico di riferimento;
Torna -1 in caso di errore generico.

Vedere anche %NUMTABELLA%

Esempio
%NUMBER%(idtab, 0)
%NUMBER%(idattr, 0)
%REPEAT% (0, %TOTTAB% - 1)
 %NUMCPY%(idtab, %INDEX%)
 Tabella : %TABNAME%(idtab);
 Indice : %WRITE%(%ITOA%(%NUMTABELLA%(%TABNAME%(idtab))))<br>
 %REPEAT%(0, %TOTATTR%(idtab) - 1)
  %NUMCPY%(idattr, %INDEX%)
  Attributo : %ATTRNAME%(idtab, idattr);
  Indice : %WRITE%(%ITOA%(%NUMATTR%(idtab, %ATTRNAME%(idtab, idattr))))
 %ENDREPEAT%
%ENDREPEAT%

Program output
Tabella : TAB1 Indice : 0
Attributo : TIPOREC Indice : 0
Attributo : TITOLO Indice : 1
Attributo : NRECORD Indice : 2
Attributo : ALLEGATI Indice : 3
Attributo : ATTR4 Indice : 4
Attributo : ATTR_MI Indice : 5
Attributo : ATTR_MF Indice : 6


DECLARATION %NUMBER%
Scopo dichiarare una variabile di tipo numerico e inizializzarla con un determinato valore.

Sintassi
DECLARATION %NUMBER% (%STRING% nome
    %NUMBER% valore)

Descrizione Consente di dichiarare una variabile di tipo numerico inizializzandola con un determinato valore.
Una variabile può essere dichiarata ovunque ma non come argomento di una funzione (predefinita e non) o di una istruzione di controllo del flusso. La visibilità di una variabile cessa all'uscita del contesto nel quale è stata dichiarata sia esso il corpo di una funzione o la regione delimitata da una istruzione di controllo del flusso ad eccezione di %IFSYM% ed %IFNSYM%.

Esempio
%NUMBER% (totale,0)
%NUMBER% (parziale,totale)
%NUMBER% (centinaia,totale/100)


VOID %NUMCPY%
Scopo Assegna un valore numerico intero ad una variabile numerica di tipo intero.

Sintassi
VOID %NUMCPY% (DECLARATION nome_variabile,
    %NUMBER% valore_numerico)

Descrizione consente di assegnare un valore di tipo numerico intero ad una variabile dichiarata dall'utente dello stesso tipo.

Valore restituito nessuno.

Vedere anche %NUMBER%, %EVAL%, %STRCPY%

Esempio
%NUMBER%(contatore,0)
%WRITE%(%ITOA%(contatore))
%NUMCPY%(contatore, 10)
%WRITE%(%ITOA%(contatore))

Program output
0
10


NUMBER %NUMDOC%
Scopo Restituisce l'identificativo numerico del documento corrente

Sintassi
%NUMBER% %NUMDOC%    

Descrizione Richiede ad Highway Server il numero fisico del documento corrente.
I documenti delle base dati Highway sono contrassegnati in modo univico dal valore seriale che assume l'attributo NRECORD; ma siccome questo attributo, pur essendo fortemente consigliato, non è obbligatorio che faccia parte di un database, l'identificazione, in modo univoco, di un documento all'interno di un database avviene attraverso un numero fisico progressivo che rappresenta anche l'ordine di inserimento dei documenti sulla base dati, nonchè il valore di ordinamento in caso di selezioni non ordinate per alcun valore.
Nell'ambito della modalità inserimento, il valore del numero fisico, cioè il valore di ritorno della %NUMDOC%, corrisponde a zero.

Valore restituito valore numerico
Torna il numero fisico del documento in caso di operazione eseguita correttamente.

Vedere anche %NUMDOCS%, %DELETENUMDOC%, %BLOADDOC%, %LOADDOC%


NUMBER %NUMDOCS%
Scopo ottenere il numero di documenti referenziati da una specifica chiave sull'attributo corrente

Sintassi %NUMDOCS%(%STRING% k)

Descrizione Data una specifica chiave k di vocabolario, consente di interrogare Highway Application Server sul numero di documenti referenziati.
L'interrogazione avviene in riferimento all'attributo corrente %CURDOC%.

Valore restituito valore numerico
Torna 0 in caso di errore generico o attributo non chiave.

Vedere anche %FREQ%

Esempio


NUMBER %NUMROWS%
Scopo Restituisce il numero di righe dell'attributo specificato.

Sintassi
%NUMBER% %NUMROWS% (%STRING% nome_attributo)

Descrizione usato per conoscere il numero di righe di un attributo ("Multiriga" o "Multistanza").

Valore restituito valore numerico
Torna il numero di CR-LF + 1.

Vedere anche %ATTROWS%, %CHKROWS%

Esempio
%ATTRIB%(AUTORI)<br>
%NUMROWS%(AUTORI)<br>

Program output
Gianni Bianchi
Giulio Rossi
Mario Verdi
3

Esempio
%ATTRIB%(AUTORI)<BR>
%NUMROWS%(AUTORI)<BR>

Program output

Gianni Bianchi
Giulio Rossi
3


NUMBER %NUMTABELLA%
Scopo Determinare l'identificativo numerico della tabella specificata.

Sintassi
%NUMBER% %NUMTABELLA% (%STRING% nometabella)

Descrizione usato per determinare l'identificativo numerico della tabella specificata calcolato in base 0.

Valore restituito valore numerico
Torna un valore > = 0 in caso di esito positivo;
Torna un valore < 0 in caso di errore.

Vedere anche %TOTTAB%, %TABLES%, %TABNAME%


NUMBER[*] %NUMTUPLES%
Scopo variabile numerica d'ambiente contenente il numero totale delle coppie chiave/valore ricevute dallo script corrente.

Sintassi
%NUMBER%[*] %NUMTUPLES%    

Descrizione variabile numerica dell'ambiente Highway Application Server contenente il numero totale delle coppie chiave/valore passate allo script corrente a seguito di una richiesta ricevuta da una form o da riga di comando

Valore restituito valore numerico
Torna un valore numerico intero in caso di esito positivo;
in caso di errore generico viene generato un errore di compilazione.

Vedere anche %TUPLEKEY%, %TUPLEVAL%

Esempio
%NUMTUPLES%<BR>
%REPEAT%(1,%NUMTUPLES%)
<B>CHIAVE:</B>'%TUPLEKEY%(%INDEX%)',<B>VALORE:</B>'%TUPLEVAL%(%INDEX%)'<BR>
%ENDREPEAT%

Program output
4
CHIAVE:CHIAVE1,VALORE:VALORE1
CHIAVE:CHIAVE2,VALORE:VALORE2
CHIAVE:CHIAVE3,VALORE:VALORE3
CHIAVE:CHIAVE4,VALORE:VALORE4


STRING %OEM2ANSI%
Scopo converte una stringa dal formato OEM (DOS) verso il formato ANSI (WINDOWS).

Sintassi
%STRING% %OEM2ANSI% (%STRING% s)

Descrizione consente di convertire una stringa in formato OEM (tipicamente DOS) nel formato utilizzato dai sistemi Windows.
Consente d convertire caratteri come 'à', 'è' ecc... nella loro forma normale; certi caratteri vengono elaborati dal sistema operativo in valori a 8 bit che consente di visualizzare caratteri codificati in valori inferiori a 127; le lettere accentate ed altri caratteri particolari sono memorizzate in formato ANSI che consente codifiche con valori fino a 255.

Valore restituito valore alfanumerico
Torna una stringa valorizzata in caso di conversione avvenuta correttamente.


NUMBER %OPENARC%
Scopo apre l'archivio specificato.

Sintassi
%NUMBER% %OPENARC% (%STRING% nomearchivio)

Descrizione apre l'archivio specificato in nomearchivio che deve indicare il percorso completo dei <file>.sts che rappresenta l'archivio Highway che si intende aprire.

Valore restituito valore numerico
Torna 1 in caso di operazione eseguita correttamente;
Torna 0 in caso di errore generico.


NUMBER %OPENDIR%
Scopo cerca all'interno di un direttorio i file e i direttori che soddisfano il percorso specificato.

Sintassi
%NUMBER% OPENDIR (%STRING% percorso,
    %STRING%* nomefile[,
    %NUMBER% attributi])

Descrizione Utilizzata per leggere il direttorio indicato con percorso, che assume il valore del nome (di file o direttorio) che si intende ritrovare completo di path DOS/UNIX.
E' consentito l'uso di caratteri jolly ('*' o '?') con le stesse valenze dell'ambiente DOS/UNIX.
Se il valore in percorso, oppure se la valorizzazione della variabile stessa, avviene in chiaro, le barre separatrici in formato DOS ('\') devono essere convertite in caratteri di escape ('\\').
nomefile viene valorizzato con il nome del primo file/direttorio, se presente, che soddisfa i criteri impostati.
Il ritorno in nomefile rappresenta un percorso relativo a quanto indicato in percorso.
attributi non è attualmente implementato su tutte le piattaforme, e quindi se ne rimanda l'utilizzo ad una futura release.

Valore restituito valore numerico
Torna un identificativo da usarsi nelle successive richieste con %READDIR%() e infine con %CLOSEDIR%().
Torna 0 se non è stato trovato nessun file o direttorio idoneo.

Vedere anche %READDIR%, %CLOSEDIR%

Esempio
<!-- loop che legge i file presenti nel direttorio c:\temp -->
%STRING%(path, "c:\\temp\\*")
%STRING%(file, "")
%NUMBER%(ret, 0)
%NUMBER%(rett, 0)
%NUMCPY%(ret, %OPENDIR%(path, file))
%IF%(ret == 0)
 <!-- direttorio/file non individuato -->
%ELSE%
 %LOOP%
  %STRCPY%(file, "")
  %NUMCPY%(rett, %READDIR%(ret, file))
  %IF%(rett)
   <!-- elaborazione -->
  %ELSE%
   %BREAK%
  %ENDIF%
 %ENDLOOP%
%ENDIF%

Program output
.
..
highway.log
d6h3a.temp
d6h4f.temp
d6h61.temp
d6h6a.temp ...


NUMBER %OPENFILE%
Scopo apre un determinato file e ritorna un identificativo.

Sintassi %OPENFILE%(%STRING% nomefile [, %STRING% modo])

Descrizione utilizzata per aprire, o creare se il parametro 'modo' lo comporta, il file specificato in nomefile e per ottenere un identificativo da utilizzarsi nelle funzioni che ne fanno richiesta e per la %CLOSEFILE% al termine delle operazioni.
nomefile può essere un percorso completo o una voce dichiarata nella sezione [CGI] di <nomearchivio.ini> o nella sezione [Generico] di hicgi.ini.
Per il significato di modo consultare la documentazione relativa alla funzione fopen() della libreria C della piattaforma in uso.
modo, su piattaforma Windows, può assumere i seguenti valori:
"r" Apre in letture.
Se il file non esiste o non viene trovato, la %OPENFILE% fallisce
"w" Apre un file vuoto in scrittura.
Se il file esiste, il suo contenuto sarà distrutto
"a" Apre in scrittura in accodamento.
Non viene eliminato il carattere di EOF fino al momento in cui viene scritto qualcosa nel file. Se il file non esiste, viene creato un nuovo file.
"r+" Apre in lettura/scrittura.
Il file deve esistere.
"w+" Apre un file vuoto in lettura/scrittura.
Se il file esiste, il suo contennuto andrà distrutto.
"a+" Apre in lettura e in scrittura in accodamento.
La scrittura nel file rimuove il carattere di EOF, che viene ripristinato al salvataggio delle operazioni. Se il file non esiste, ne viene creato uno nuovo.
Se nomefile non viene risolto, Highway Application Server esegue un tentativo di risoluzione cercando all'interno del file di profilo.
Se anche questo non risolve nomefile, Highway Application Server verifica il primo carattere: se è "/" (oppure "\" in NT e non è indicata la lettera di drive) allora viene eseguito un ulteriore tentativo di risoluzione rispetto al direttorio dello script corrente.

Valore restituito valore numerico
Trona un identificativo numerico se operazione eseguita con successo;
Torna 0 in caso di errore generico.

Vedere anche %CLOSEDIR%, %CLOSEFILE%, %CREATEFILE%, %DELEFILE%, %FILEDATE%, %FILESIZE%, %GETPROFILE%, %GETTEMPFILENAME%, %LOCKFILE%, %NEXTLINE%, %OPENDIR%, %PROFILE%, %READDIR%, %READFILE%, %RENFILE%, %TEMPDIR%, %WRITE%, %WRITEFILE%, %WRITELINE%, %WRITEPROFILE%


VOID %OUTPUTTO%
Scopo redirige l'uscita di %WRITE% sul file identificato da filehandle.

Sintassi
VOID %OUTPUTTO% (%NUMBER% filehandle)

Descrizione Consente di utilizzare un file come canale di output nell'utilizzo della %WRITE%.
Di norma %WRITE% scrive la risposta che verrà trasmessa dal server HTTP al chiamante (anche se l'ECHO e stato inibito con %ECHOOFF%).
Se l'argomento di questa funzione è un handle di file valido (avuto con %OPENFILE% o %CREATEFILE%), %WRITE% scrive sul file in questione e produce lo stesso effetto di %WRITEFILE% su filehandle.
La chiusura (%CLOSEFILE%) del file o una chiamata ad %OUTPUTTO% con argomento 0 ripristina il normale comportamento di %WRITE%.

Valore restituito nessuno.

Vedere anche %WRITE%

Esempio
%STRING%(filename, "")
%IF%(%GETTEMPFILENAME%(filename, ".txt"))
 %NUMBER%(filehandle, %OPENFILE%(filename, "a"))
 %OUTPUTTO%(filehandle)
 %WRITE%("Scrive su un file di log.")
 %CLOSEFILE%(filehandle)
%ENDIF%
%WRITE%("Scrive sulla pagina html in composizione")


STRING %PARSE%
Scopo interpreta il valore alfanumerco passato come parametro.

Sintassi
%STRING% %PARSE% (%STRING% stringa[,
    %STRINGA% keychr])

Descrizione Highway Application Server interpreta stringa risolvendo le eventuali istruzioni memorizzate nel parametro;
keychr è un parametro opzionale che indica il carattere separatore delle eventuali parti da interpretare.
Se non indicato s'intende il carattere separatore di default ('%').

Valore restituito valore alfanumerico
Torna una stringa con il contenuto dell'interpretazione eseguita in caso di operazione eseguita correttamente;
Torna un errore di compilazione in caso di errore generico.

Vedere anche %QSTRING%, %STR2HTML%, %MASK%

Esempio
%PARSE%("L'Attributo %ATTRNAME%(0,4) contiene %ATTRIB%(%ATTRNAME%(0,4))")

Program output
L'Attributo ATTR1 contiene VALORE1


STRING %PARENT%
Scopo primo termine di una relazione gerarchica in una pagina di Thesaurus.

Sintassi
%STRING% %PARENT% (%NUMBER% riga)

Descrizione usato per determinare il primo termine di una relazione gerarchica in una pagina di Thesaurus.
riga indica il termine di riferimento per il quale si intende risalire fino al termine padre della catena gerarchica.

Valore restituito valore alfanumerico
Torna il termine padre della gerarchia di riferimento;
Torna stringa vuota in caso di errore generico.

Vedere anche %CHILD%


NUMBER %PCLOSE%
Scopo Attende che il ritorno del processo generato con %POPEN% termini per chiudere il flusso dei valori di ritorno.

Sintassi
%NUMBER% %PCLOSE% (%NUMBER% stream)

Descrizione Dopo l'esecuzione di un comando che prevede la scrittura sullo standard output (come ad esempio potrebbe essere un DIR) tramite la %POPEN%, %PCLOSE% chiude il flusso di dati che la suddetta operazione ha generato.

Valore restituito valore numerico
Torna 1 in caso di operazione eseguita correttamente;
Torna -1 in caso di errore generico.

Vedere anche %POPEN%


NUMBER %PERGROUP%
Scopo Variabile numerica di ambiente contenente il numero di immagini facenti parte del gruppo specificato.

Sintassi
%NUMBER% %PERGROUP% (%NUMBER% numerogruppo)

Descrizione utilizzato per determinare il numero di immagini che fanno parte del gruppo indicato in numerogruppo relativamente al documento corrente.

Valore restituito valore numerico
Torna un valore numerico intero in caso di operazione eseguita correttemante.


Torna -1 in caso di errore generico.

Vedere anche %GROUPS%, %CURGRP%


NUMBER %PERPAGE%
Scopo Variabile numerica di ambiente che contiene il numero massimo di documenti rappresentabili all'interno di una pagina di titoli.

Sintassi
%NUMBER% %PERPAGE%    

Descrizione utilizzato per determinare quale è il numero massimo di titoli rappresentabili all'interno di una pagina.
Questo valore è di norma indicato nella sezione [CGI] del <nomearchivio>.ini (per personalizzazioni che riguradano i singoli archivi) oppure nella sezione [Generico] di Hicgi.ini (per impostazioni a livello di server).

Valore restituito valore numerico
Torna un valore numerico intero superiore a zero in caso di operazione eseguita correttamente.


Torna -1 in caso di errore generico.

Vedere anche %MAXBITEMS%, %MAXTHUMBS%, %MAXvITEMS%

Esempio
%REPEAT%(1, %PERPAGE%)
 %DOCTITLE%(%INDEX%)
%ENDREPEAT%


NUMBER %PID%
Scopo variabile numerica di ambiente che rappresenta l'identificativo univoco del processo Highway Application Server in corso.

Sintassi
%NUMBER% %PID%    

Descrizione Richiede ad Highway Application Server il numero identificativo del processo nel quale è eseguito.

Valore restituito valore numerico
Torna un valore numerico intero in caso di successo;
Torna -1 in caso di errore generico.


STRING %PLATFORM%
Scopo variabile numerica intera di ambiente che rappresenta la piattaforma sulla quale si sta operando.

Sintassi
%STRING% %PLATFORM%    

Descrizione consente di richiedere ad Highway Application Server la piattaforma sulla quale sta operando.
Il valore della stringa di ritorno identifica il tipo di piattaforma: "WINDOWS" o "UNIX".

Valore restituito valore alfanumerico
Torna una stringa valorizzata con "WINDOWS" o "UNIX";
Torna una stringa vuota in caso di errore.

Vedere anche %BYTEORDER%, %SIZEOFNUMBER%


NUMBER %POPEN%
Scopo Ritorna un flusso di dati sullo standard output dal comando specificato

Sintassi
%NUMBER% %POPEN% (%STRING% command[,
    %STRING% mode)

Descrizione Invia un comando, specificato con command, ad un processo esterno e riceve il flusso dati che questo invia allo standard output.
mode specifica le modalità di ritorno del flusso dati in uscita dal processo avviato.
Valori consentiti per mode
valore descrizione
r Il processo chiamante può leggere il flusso dati di ritorno
w Il processo chiamante può scrivere sullo standard output flusso dati di ritorno
b Leggi il flusso dati di ritorno in modo binario
t Leggi il flusso dati di ritorno in modo ascii

Valore restituito valore numerico
Torna un valore numerico intero in caso di operazione eseguita correttamente.
Torna NULL in caso di errore generico.

Vedere anche %POPEN%


STRING %PRGARGV%
Scopo torna il corrispondente argomento ricevuto da Highway Application Server.

Sintassi
%STRING% %PRGARGV% (%NUMBER% indice)

Descrizione legge sulla riga di comando ricevuta da Highway Application Server il parametro indicato da indice(in base 0)

Valore restituito valore alfanumerico
Torna una stringa valorizzata in caso di esito positivo
Torna una stringa vuota in caso di errore o fine lista.


NUMBER %PROFILE%
Scopo Legge determinati valori dal file di configurazione dell'archivio corrente

Sintassi %PROFILE%(%STRING% *dest, %STRING% chiave[, %STRING% sezione="CGI"|"Generico"])

Descrizione Legge dal file di configurazione dell'archivio corrente il valore associato alla chiave copiandolo in dest che dovrà essere preventivamente dichiarato dal chiamante.
Per archivio corrente si intende l'ultimo aperto dalla %OPENARC% oppure dal flag /a in riga di comando; se non vi sono archivi aperti, si intende quello indicato nella sezione [Generico] dell'HiCgi.ini (default).
sezione è un parametro opzionale che indica la sezione del file di impostazione dalla quale prelevare il valore associato a chiave;
sezione può assumere esclusivamente i valori sopra indicati.

Valore restituito valore numerico
Torna 1 in caso sia stata trovata e letta correttamente la chiave indicata.
Torna 0 in caso di errore generico.

Vedere anche %GETPROFILE% %WRITEPROFILE%

Esempio
Impostazione negli script dei percorsi per le immagini

file.ini dell'archivio corrente:
[CGI]
pathimg = |

Script:
%STRING%(percorso, "")
%IF%(%profile%(percorso, pathimg, "CGI"))
 <IMG src="%write%(percorso)/logo.gif">
%ELSE%
 <P>3D Informatica Srl
%ENDIF%


STRING %QKEYS%
Scopo Visualizza i termini indicati nella frase di ricerca indicando inoltre l'indice di enumerazione delle chiavi di riferimento.

Sintassi
%STRING% %QKEYS%    

Descrizione Consente di recuperare informazioni sui termini indicati in frase di ricerca, riportando, con ognuno di essi, l'indice della chiave di appartenenza.
Per indice della chiave si intende il valore di enumerazione delle chiavi all'interno del database (vedi Configurazione attributi/Chiave).

Valore restituito valore alfanumerico
Torna una stringa valorizzata in caso di esito positivo;
Torna una stringa vuota in caso di errore generico.

Vedere anche %QKPOS%, %QKLEN%, %QKNUM%

Esempio
<!-- prelevo dal vocabolario verticale dell'attributo
chiave ATTRIBUTO1 i seguenti valori:
abete (occorrenze sui documenti : 3)
abitazione (occorrenze sui documenti : 1)
acacia (occorrenze sui documenti : 2)

prelevo dal vocabolario verticale dell'attributo
chiave ATTRIBUTO2 i seguenti valori:
milano (occorrenze sui documenti : 1)
roma (occorrenze sui documenti : 1)

all'atto della visualizzazione dell'esito della ricerca ... -->
%QKEYS%
...

Program output
[15]abete[15]abitazione[15]acacia[22]milano[22]roma


NUMBER %QKPOS%
Scopo recupera la posizione iniziale, all'interno dell'attributo inizializzato con %GETKEYS%, delle occorrenze delle chiavi di ricerca trovate.

Sintassi
%NUMBER% %QKPOS% (%NUMBER% indice)

Descrizione Tipicamente utilizzata per evidenziare, nella visualizzazione dei documenti, i termini inseriti nella frase di ricerca ritrovati all'interno di un determinato attributo.
L'utilizzo dei valori espressi da %QKPOS% è subordinato alla chiamata di inizializzazione di %GETKEYS% relativamente all'attributo sul quale si desidera operare.
indice esprime l'occorrenza, all'interno dell'attributo oggetto dell'elaborazione, dei termini della frase di ricerca che si desidera evidenziare.
In pratica, all'atto della visualizzazione di un documento, per i singoli attributi, bisogna chiamare la funzione di inizializzazione %GETKEYS%, quindi eseguendo un ciclo %REPEAT% da 1 a %QKNUM%, determinare le parti del contenuto dell'attributo che si intende evidenziare: ogni occorrenza determinata dall'indice di %REPEAT% fornisce con %QKPOS% l'offset iniziale e con %QKLEN% la lunghezza della parte de evidenziare.

Valore restituito valore numerico
Torna un numero intero >= 0 in caso di esito positivo;
Torna -1 in caso di errore generico.

Vedere anche %QKNUM%, %QKPOS%

Esempio
%IF%(%BLOADDOC%(%CURDOC%))
 %IF%(%ATTRSIZE%("ATTRIBUTO1"))
  %IF%(%GETKEYS%("ATTRIBUTO1") && %QKNUM%% )
   %STRING%(valore,%ATTRIB%("ATTRIBUTO1"))
   %STRING%(val,%MID%(valore,0,%QKPOS%(1)))
   %REPEAT%(1,%QKNUM%)
    %STRCAT%(val,"<font color=#ff6000>")
    %STRCAT%(val, %MID%(valore, %QKPOS%(%INDEX%), %QKLEN%(%INDEX%)))
    %STRCAT%(val,"</font>")
    %STRCAT%(val, %MID%(valore, %QKPOS%(%INDEX%)+%QKLEN%(%INDEX%), %QKPOS%(%INDEX%+1)-(%QKPOS%(%INDEX%)+%QKLEN%(%INDEX%))))
   %ENDREPEAT%
  %ELSE%
   %ATTRIB%("ATTRIBUTO1")
  %ENDIF%
 %ENDIF%
%ENDIF%


NUMBER %QKLEN%
Scopo recupera la lunghezza, rispetto alla posizione iniziale determinata con %QKPOS%, delle occorrenze delle chiavi di ricerca trovate all'interno dell'attributo inizializzato con %GETKEYS%.

Sintassi
%NUMBER% %QKLEN% (%NUMBER% indice)

Descrizione Tipicamente utilizzata per evidenziare, nella visualizzazione dei documenti, i termini inseriti nella frase di ricerca ritrovati all'interno di un determinato attributo.
L'utilizzo dei valori espressi da %QKLEN% è subordinato alla chiamata di inizializzazione di %GETKEYS% relativamente all'attributo sul quale si desidera operare.
indice esprime l'occorrenza, all'interno dell'attributo oggetto dell'elaborazione, dei termini della frase di ricerca che si desidera evidenziare.
Per ulteriori informazioni vedi %QKPOS%

Valore restituito valore numerico
Torna un numero intero >= 0 in caso di esito positivo;
Torna -1 in caso di errore generico.

Vedere anche %QKPOS%, %QKNUM%

Esempio
vedi %QKPOS%


NUMBER %QKNUM%
Scopo recupera il numero delle occorrenze dei termini in frase di ricerca presenti all'interno di un determinato attributo inizializzato con %GETKEYS%.

Sintassi
%NUMBER% %QKNUM%    

Descrizione Tipicamente utilizzata per evidenziare, nella visualizzazione dei documenti, i termini inseriti nella frase di ricerca ritrovati all'interno di un determinato attributo.
L'utilizzo dei valori espressi da %QKLEN% è subordinato alla chiamata di inizializzazione di %GETKEYS% relativamente all'attributo sul quale si desidera operare.
Consente di determinare il numero delle chiavi indicate in frase di ricerca ritrovate all'interno dell'attributo nel quale viene eseguita la chiamata

Valore restituito valore numerico
Torna un numero intero >= 0 in caso di esito positivo;
Torna -1 in caso di errore generico.

Vedere anche %QKLEN%, %QKPOS%

Esempio
vedi %QKLEN%


STRING %QSTRING%
Scopo converte in forma idonea per query string.

Sintassi
%STRING% %QSTRING% (%STRING% stringa)

Descrizione Esegue una conversione dei caratteri 'speciali' presenti all'interno di stringa per renderla idonea ad essere eseguita nella frase di ricerca.

Valore restituito valore alfanumerico
Torna una stringa valorizzata in caso di esito positivo;
Torna una stringa vuota in caso di errore generico.

Vedere anche %STR2HTML%


NUMBER %READDIR%
Scopo legge il nome del file o del direttorio succesivo che soddisfa i criteri impostati con la precedente chiamata ad %OPENDIR%()

Sintassi
%NUMBER% %READDIR% (%NUMBER% dirhandle,
    %STRING%* nomefile)

Descrizione Consente di proseguire la lettura dei nomi file/direttori presenti in un determinato direttorio iniziata con una precedente chiamata a %OPENDIR%.
dirhandle è il valore tornato dalla precedente chiamata ad %OPENDIR%();
nomefile viene valorizzato in uscita con il nome del prossimo file o direttorio trovato, inteso come percorso parziale, che soddisfa il percorso indicato nella precedente %OPENDIR%

Valore restituito valore numerico
Torna un valore diverso da 0 se la lettura ha esito positivo.
Torna zero se non sono presenti altri file.

Vedere anche %OPENDIR%, %CLOSEDIR%


NUMBER %READFILE%
Scopo legge il numero di bytes richiesto dal file specificato.

Sintassi
%NUMBER% %READFILE% (%STRING% buffer,
    %NUMBER% size,
    %NUMBER% fileid)

Descrizione Consente di leggere un numero di bytes determinato con size dal file identificato da fileid.
L'esito della lettura da file viene memorizzato nella variabile buffer.
fileid è ottenuto da una precedente chiamata di apertura o creazione file (%OPENFILE% o %CREATEFILE%).

Valore restituito valore numerico
Torna il numero dei bytes letti in caso di esito positivo;
Torna -1 in caso di errore generico.

Vedere anche %OPENFILE%, %CREATEFILE%, %NEXTLINE%


NUMBER %REFRESHHIER%
Scopo mantenere aggiornata la posizione gerarchica di un documento

Sintassi
%NUMBER% %REFRESHHIER% (%NUMBER% ndoc,
    %STRING% attr)

Descrizione Mantiene aggiornato in modo continuativo l'attributo attr con il valore della relazione gerarchica PADREFIGLIO a partire dal documento ndoc.
Si assume che l'attributo attr sia predisposto a contenere il valore numerico che identifica la gerarchia.

Valore restituito valore numerico
Torna un valore numerico che identifica il rapporto gerarchico;
Torna 0 in caso di errore generico.


STRING %REL%
Scopo Variabile alfanumerica ambientale che contiene il descrittore di una relazione gerarchica in una pagina di thesaurus

Sintassi
%STRING% %REL% (%NUMBER% riga)

Descrizione usato per ottenere il descrittore di una relazione gerarchica in una pagina di thesaurus indicato da riga.

Valore restituito valore alfanumerico
Torna una stringa valorizzata con il termine indicato in caso di esito positivo;
Torna una stringa vuota in caso di errore generico.

Vedere anche %INVREL%, %RELPOS%


STRING %RELDESCR%
Scopo torna la descrizione della relazione di thesaurus dell'elemento specificato.

Sintassi
%STRING% %RELDESCR% (%NUMBER% pos)

Descrizione consente di richiedere la descrizione della relazione di thesaurus individuata dal numero progressivo dell'elemento di una pagina ricavato mediante una chiamata alla %5CALL%("THGerarachico") interna allom script in esecuzione oppure con una richiesta di Thesauro Gerarchico in riga di comando (/h o /H).

Valore restituito valore alfanumerico
Torna una stringa correttamente valorizzata in caso di esito positivo.
Torna una stringa vuota in caso di errore generico.

Vedere anche %RELPOS%, %RELSINT%


NUMBER %RELNOTE%
Scopo torna l'identificativo della relazione usata per le Note.

Sintassi
%NUMBER% %RELNOTE%    

Descrizione Consente di recuperare la descrizione della relazione utilizzata per le Note, come da dichiarazione alla voce 'Note' nella sezione [Relazioni] del <nomearchivio>.dsp

Valore restituito valore numerico
Torna un valore superiore a 0 in caso di errore generico;
Torna <= 0 in caso di errore generico.

Vedere anche %REL%, %RELPOS%


NUMBER %RELPOS%
Scopo torna il progressivo numerico della relazione individuata.

Sintassi
%NUMBER% %RELPOS% (%STRING% descr)

Descrizione Consente di individuare il valore progressivo numerico in base 1 dall'elenco delle relazioni di thesaurus corrispondente alla relazione la cui descrizione è descr.

Valore restituito valore numerico
Torna un valore numerico superiore a 0 se la descrizione non è presente.
Torna -1 se la descrizione non è presente.
Torna 0 in caso di errore generico.


STRING %RELSINT%
Scopo ottenere la relazione sintetica di un determinato documento.

Sintassi
%STRING% %RELSINT% (%NUMBER% pos)

Sintassi %RELSINT%(%NUMBER% pos)

Descrizione Utilizzato per recuperare, da Highway Application Server, la relazione, in forma sintetica, che lega il documento identificato dalla sua posizione (pos) nel Browse Gerarchico.
Mediante %RELPOS% è possibile passare dalla forma sintetica a quella estesa.

Valore restituito valore alfanumerico
Torna descrizione sintetica della relazione se l'operazione ha esito positivo;
Torna stringa vuota in caso di errore generico.


NUMBER %RENFILE%
Scopo permette di cambiare nome ad un file specificato.

Sintassi
%NUMBER% %RENFILE% (%STRING% old,
    %STRING% new)

Descrizione Tipicamente si tratta della versione Highway Application Server del più noto comando "RENAME" del DOS.
Consente di rinominare un file (identificato da old) con un nuovo nome (specificato in new).
I nomi dei file indicati come parametri alla funzione in oggetto si intendono comprensivi di persorso ed estensione.

Valore restituito valore numerico
Torna 1 in caso di esito positivo;
Torna 0 in caso di errore generico.

Vedere anche %GETTEMPFILENAME%, %CREATEFILE%


VOID %RETFILE%
Scopo istruisce Highway Application Server per il ritorno del file identificato.

Sintassi
VOID %RETFILE% (%STRING% url/filename[,
    %NUMBER% remove = 0[,
    %STRING% headers="Content-type:
application/octet-stream"]])

Descrizione Consente di istruire Highway Application Server sul comportamento da assume all'atto della richiesta di invio di un file o di esecuzione di una URL da parte del Client.
url/filename deve referenziare una risorsa valida per il server, o in altre parole l'indirizzo "http://hostname/url" deve essere valido.
Se url/filename referenzia un file accessibile al programma, remove, se diverso da zero, richiede la cancellazione del file trasferito, mentre headers permette di specificare delle header da aggiungere alla risposta http.
L'echo o la scrittura esplicita di dati nel corso della richiesta corrente viene perso.

Valore restituito nessun valore.

Vedere anche %HTTPPOST%


STATEMENT %RETURN%
Scopo interrompe l'esecuzione dello script e ritorna al chiamante o esce dallo script.

Sintassi
STATEMENT %RETURN%    

Descrizione Se utilizzato all'interno di una funzione, torna un valore del tipo dichiarato per la stessa (%NUMBER%[*]|%STRING%[*]|%FLOAT%[*]|VOID); all'esterno di una funzione interrompe l'esecuzione dello script nel punto corrente.

Valore restituito
dipende dal contesto in cui viene utilizzato.

Vedere anche %BREAK%


STRING %RIGHTTRIM%
Scopo Processa la stinga specificata rimuovendone caratteri in coda.

Sintassi
%STRING% %RIGHTTRIM% (%STRING% stringa)

Descrizione viene usato per rimuovere spazi, TAB, CR ed LF in coda ad una stringa specificata.

Valore restituito valore alfanumerico
Torna stringa epurata dei caratteri spazio, TAB CR e LF in coda.

Vedere anche %LEFTTRIM%, %MID%


NUMBER %RMINDEX%
Scopo rimuove il file indice dell'archivio corrente.

Sintassi
%NUMBER% %RMINDEX%    

Descrizione Elimina gli indici dell'archivio corrente.
Tipicamente utilizzata a seguito di una importazione che all'atto del salvataggio del documento mantenga Flags = 1 (NoCataloga), oppure per le normali manutenzioni che consentono di eliminare definitivamente dagli indici i termini che non hanno occorrenze sulla base dati.
E' anche una delle operazioni che si eseguono quando vi sono problemi in fase di ricerca (gli indici potrebbero essere danneggiati).

Valore restituito valore numerico
Torna 1 in caso di cancellazione eseguita correttamente;
Torna 0 in caso di errore generico.


STRING %SAFEKEY%
Scopo modifica la chiave indicata sulla base dei separatori impostati per l'attributo specificato.

Sintassi
%STRING% %SAFEKEY% (%STRING% key,
    %STRING% attributo)

Descrizione Consente di modificare il valore di una determinata coppia chiave-valore in base ai separatori indicati per l'attributo specifico.
key rappresenta il nome della coppia chiave-valore che si intende codificare;
attributo indica l'attributo sorgente dal quale saranno prelevati i caratteri separatori che saranno utilizzati per la codifica.

Valore restituito valore alfanumerico
Torna una stringa correttamente codificata in caso di esito positivo;
Torna una stringa vuota in caso di errore generico.

Vedere anche %STR2HTML%, %QSTRING%


NUMBER %SAVEDOC%
Scopo Effettua il salvataggio del documento corrente.

Sintassi
%NUMBER% %SAVEDOC% [(%NUMBER% Flags=0,
    %NUMBER% Deriva=0)]

Descrizione Consente di salvare in modo definitivo il documento corrente sul database, quindi su disco.
Il documento corrente potrebbe essere un documento caricato, mediante la %BLOADDOC%, da una selezione esito di una ricerca, o mediante il numero di documento fisico, oppure un nuovo documento che diviene il documento corrente all'atto della creazione del buffer che lo deve contenere (con una chiamata a %NEWDOC%).
I parametri opzionali assumono il seguente valore:
param valore descrizione
Flags 1 (NoCataloga) tipicamente utilizzato durante importazioni o procedure che eseguono operazioni dispendiose e per le quali è preferibile demandare la catalogazione (vedi indicizzazione) al termine della elaborazione in corso.
Questa condizione è valida solo all'atto di inserimento di nuovi documenti (quindi p.e. in fase di importazione con aggiornamento completo);
importazioni in aggiornamento (parziale o tatale) o documenti esistenti in stato di modifica, saranno comunque catalogati all'atto del salvataggio.
  2 (Locked) Informa Highway Server che il documento del quale si sta richiedendo il salvataggio, è stato bloccato all'atto del caricamento (mediante il flag lock della %BLOADDOC%) e che quindi, per le normali operazioni che devono essere eseguite, questa operazione non deve essere rifatta da parte di Highway Server.
  4 (NoLoadArc) Informa Highway Server che l'archivio corrente è stato in precedenza bloccato (mediante %LOCK% o %DBLOCK%) e che quindi, per le operazioni che Highway Server dovrà eseguire in seguito, l'archivio si trova in questo ststo.
Tipicamente è una opzione utilizzata in fase di importazione o comunque per procedure che apportano aggiornamenti sostanziali al database.
  4 (NoLoadArc) Informa Highway Server che l'archivio corrente è stato in precedenza bloccato (mediante %LOCK% o %DBLOCK%) e che quindi, per le operazioni che Highway Server dovrà eseguire in seguito, l'archivio si trova in questo ststo.
Tipicamente è una opzione utilizzata in fase di importazione o comunque per procedure che apportano aggiornamenti sostanziali al database.
  16 (ChkSeriali) Opzione tipica di salvataggio di un nuovo documento che ha allocato il buffer necessario con una %NEWDOC% con il flag seriali = 0, e che quindi richiede ad Highway Server di valorizzare correttamente i valori seriali presenti sul documento in questione.
Tipica situazione che si presenta importando in aggiornamento completo o per inserimento di nuovo documento.
  32 (NoUpdate) Anche questa opzione è tipica delle importazioni in aggiornamento parziale.
Ponendo Flags a 32, si richiede ad Highway Server di assumere che i documenti che violano il vincolo di univocità, non sovrascrivano il documento preesistente, ma che sia creato un nuovo documento posto in coda al database.
Questa situazione viene notificata da Highway Server mediante scrittura sul file "warnings.txt", generalmente posto nel direttorio dei temporanei.
  64 (PartialUpd) Opzione tipica delle operazioni di importazione in aggiornamento parziale.
Gli attributi che non sono indicati nel file da importare (quelli che fisicamente non compaiono) non saranno sovrascritti con un valore vuoto; operazione che invece viene eseguita normalmente in caso di importazione in aggiornamento completo.
I suddetti valori possono essere utilizzati in combinata, sommandoli fra di loro per combinare insieme una serie di comportamenti che si intende richiedere ad Highway Server durante una operazione di salvataggio.
Deriva 0 indica ad Highway Server di non scatenare le azioni (vedi Definizione delle azioni) che valorizzano gli attributi derivati (vedi Proprietà Derivato).
  1 indica ad Highway Server di scatenare le azioni che valorizzano gli attributi derivati prima del salvataggio del documento.

Valore restituito valore numerico
Torna un identificativo univoco del documento (numero fisico) in caso di esito positivo;
Torna un valore <= 0 in caso di errore generico.

Vedere anche %BLOADDOC%, %MKINDEX%


STRING %SCRIPT%
Scopo rappresenta l'URL dello script nel quale è dichiarato.

Sintassi
%STRING% %SCRIPT%    

Descrizione Se utilizzato senza l'uso dei flag tipici della riga di camando nell'ambito di una elaborazione web, rappresenta la variabile d'ambiente CGI "SCRIPT_NAME" (p.e. '/h3/h3.exe').
L'utilizzo tipico è rappresentato dalla dichiarazione delle URL all'interno degli script per gli oggetti anchor e per le action dei tag <FORM>
P.e. <A href="%script%/a%curarc%/Form+Selezione">Vai alla pagina di ricerca</A>.
Mentre vale "null" se utilizzato durante una elaborazione dalla riga di comando di una shell (tipicamente l'uso di "hicgi.exe -x:" digitato al prompt di una shell (DOS, UNIX, ...)).

Valore restituito valore alfanumerico
In ambito WEB:
Torna una stringa con il contenuto della variabile CGI "SCRIPT_NAME" in caso di successo
In ambito SHELL:
Torna una stringa valorizzata con "null" in caso di successo
Torna una stringa vuota in caso di errore.


NUMBER %SEL2DOC%
Scopo torna il numero fisico del documento della selezione indicato.

Sintassi
%NUMBER% %SEL2DOC% (%NUMBER% n,
    %STRING% sel)

Descrizione Consente di recuperare il numero fisico (che è un valore numerico intrinseco ed univoco che identifica ogni singolo documento) dalla selezione corrente %CURSEL%.

Valore restituito valore numerico
Torna un valore numerico >= 0 in caso di successo.
Torna -1 in caso di errore.

Vedere anche %NUMDOC%, %NUMDOCS%, %CURSEL%


STRING %SELDATA%
Scopo variabile alfanumerica di ambiente contenente la frase di ricerca della selezione corrente.

Sintassi
%STRING% %SELDATA%    

Descrizione Contiene la frase di ricerca, nella forma e nella sintassi tipiche di Highway Server, eseguita per la determinazione della selezione corrente.

Valore restituito valore alfanumerico
Torna una stringa correttamente valorizzata in caso di esito positivo.
Torna una stringa vuota in caso di errore generico.

Vedere anche /F, %CURSEL%


NUMBER %SENDMAIL%
Scopo inviare una e-mail.

Sintassi
%NUMBER% %SENDMAIL% (%STRING% serversmtp,
    %STRING% toaddr,
    %STRING% fromname,
    %STRING% fromaddr,
    %STRING% replyaddr,
    %STRING% organization,
    %STRING% subject,
    %STRING% text,
    %NUMBER% timeout,
    %STRING% attachfile[,
    %STRING% attachname[,
    %STRING% mimetype]])

Descrizione

      serversmtp,   // server smtp
      toaddr,       // indirizzo e-mail destinatario
      fromname,     // nome sender
      fromaddr,     // indirizzo e-mail sender
      replyaddr,    // replay to e-mail
      organization, // organizzazione
      subject,      // oggetto
      text,         // testo messaggio
      timeout       // timeout in secondi
      attachfile    // elenco dei file (visibili al porcesso)
      attachname    // elenco dei nomi da trasmettere
      mimetype      // elenco dei tipi MIME
Gli ultimi tre parametri contengono uno o più elementi separati da '"' (doppi apici).
Se il parametro attachname è assente o contiene un elemento vuoto, il nome trasmesso per il corrispondente allegato viene ricavato dal parametro attachfile.
Se il parametro mimetype non è presente o contiene un elemento vuoto, il tipo MIME dell'allegato viene impostato a: "application/octet-stream".
Indipendentemente dal tipo MIME dichiarato, la codifica nel messaggio è sempre impostata a "Content-Transfer-Encoding: base64".

Valore restituito valore numerico
Torna 1 in caso di elaborazione eseguita con successo.
Torna 0 in caso di errore generico.

Vedere anche %GETMAIL%, %FWDMAIL%


NUMBER %SIZEOFNUMBER%
Scopo ottenere la dimensione in byte del tipo %NUMBER%

Sintassi
%NUMBER% %SIZEOFNUMBER%    

Descrizione Consente di recuperare la dimensione del tipo %NUMBER% espresso in byte, quindi lo spazio di memoria occupato da un tipo %NUMBER% dipendente dalla piattaforma sulla quale viene evasa la richiesta.

Valore restituito valore numerico
Torna 0 in caso di errore generico.

Vedere anche %BYTEORDER%

Esempio %STRING%(msg, "Dimensione occupata da un intero ")
%IF%(%STRICMP%(%BYTEORDER%, "I") == 0)
 <!-- macchina Intel -->
 %STRCAT%(msg, "(CPU Intel) : ")
 %STRCAT%(msg, %ITOA%(%SIZEOFNUMBER%))
 %STRCAT%(msg, " bytes.
")
 %WRITE%(msg)
%ENDIF%

Program output
Dimensione occupata da un intero (CPU Intel) : 4 bytes.


VOID %SKIP%
Scopo Highway Application Server scarta la parte di codice racchiusa fra i marcatori %SKIP% e %ENDSKIP%.

Sintassi
VOID %SKIP%    

Descrizione L'uso di %SKIP% richiede richiede l'uso del contrapposto %ENDSKIP%; la parte di codice dello script in fase di elaborazione da parte di Highway Application Server racchiusa fra questi marcatori viene ignorata e scartata durante la composizione del file di output.
Si raccomanda di fare attenzione al posizionamento dei suddetti marcatori per non lasciare blocchi di codice incompleti: per esempio un %REPEAT% senza il corrispondente %ENDREPEAT%; una condizione di codice incompleto di questo tipo può causare comportamenti imprevedibili.

Valore restituito nessuno

Vedere anche %ENDSKIP%, %ECHOON%, %ECHOOFF%, %DETACH%


VOID %SLEEP%
Scopo sospende l'esecuzione per i secondi specificati.

Sintassi
VOID %SLEEP% (%NUMBER% secondi)

Descrizione Sospende l'esecuzione dello script in esecuzione per il numero di secondi specificato.

Valore restituito nessuno

Vedere anche %DETACH%


STRING %STR2HTML%
Scopo converte una stringa codificando i caratteri ambigui per HTML.

Sintassi
%STRING% %STR2HTML% (%STRING% stringa[,
    %STRING% crlf])

Descrizione Converte singolarmente i caratteri di stringa ambigui per il formato HTML, cioè tutti i caratteri che vengono codificati in valori superiori ai 128 bit e i caratteri utilizzati dal formato HTML ('&', '"', '<', '>').
Il parametro opzionale crlf indica in che modo codificare i caratteri di fine riga tipici degli attributi multiistanza o multiriga ('\r\n').
Tipicamente viene utilizzata per le stringhe che vengono inviate mediante una submit() o un link; oppure che vengono ricevute da uno script.
In pratica viene utilizzata per il trattamento delle coppie chiave-valore da e verso gli script.

Valore restituito valore alfanumerico
Torna una stringa codificata in caso di esito positivo
Torna una stringa vuota in caso di errore generico.

Vedere anche %QSTRING%, %BIN2HEX%

Esempio
<!-- p.e. dato un attributo multiistanza <TEL>:
   <direttore>051 55555\r\n
   <presidente>051 66666\r\n -->
%ATTRIB%(TEL)
%STRING%(value, %STR2HTML%(%ATTRIB%(TEL)))
%WRITE%(value)
%STRING%(value, %STR2HTML%(%ATTRIB%(TEL), "<br>"))
%WRITE%(value)

Program output
051 55555 051 66666
<direttore>051 55555 <presidente>051 66666
<direttore>051 55555
<presidente>051 66666


VOID %STRBEGIN%
Scopo Anteporre il contenuto di una variabile alfanumerica ad una variabile alfanumerica preesistente.

Sintassi
VOID %STRBEGIN% (%STRING% s1,
    %STRING% s2)

Descrizione Utilizzata per comporre una stringa mediante la concatenazione di due variabili alfanumeriche preesistenti. %STRBEGIN% consente di inserire all'inizio di s1 il valore proveniente da s2.

Valore restituito nessuno.

Vedere anche %STRCAT%, %STRCHG%, %STRCPY%, %STRICHG%, %MEMCPY%, %MEMSET%, %MID%, %LEFTTRIM%, %RIGHTTRIM%

Esempio
%STRING%(s1, "casa in collina")
%STRCPY%(s1,"La ")

Program output
La casa in collina


VOID %STRCAT%
Scopo concatenare il valore di una varibile ad un'altra.

Sintassi
VOID %STRCAT% (%STRING% str1,
    %STRING% str2)

Descrizione consente di concatenare il contenuto di str2 al valore di str1.
Al termine dell'operazione di copia viene aggiunto il carattere terminatore (\x0).

Valore restituito nessuno.

Vedere anche %STRBEGIN%, %STRCPY%, %STRCHG%, %STRICHG%, %STRLOWER%, %STRUPPER%, %MEMCPY%, %MEMSET%, %MID%, %LEFTTRIM%, %RIGHTTRIM%

Esempio
%STRING%(str1, "3D")
%STRING%(str2, "Informatica")
str1 = %WRITE%(str1)
str2 = %WRITE%(str2)
%STRCAT%(str1, " ")
%STRCAT%(str1, str2)
str1 = %WRITE%(str1)

Program output str1 = 3D
str2 = Informatica

str1 = 3D Informatica


VOID %STRCHG%
Scopo modificare determinate parti di una variabile

Sintassi
VOID %STRCHG% (%STRING% str,
    %STRING% tosubst
    %STRING% subst)

Descrizione consente di sostituire, in str, il valore tosubst con il valore subst. Il confronto, all'interno di str, di tosubst è case sensitive.

Valore restituito nessuno.

Vedere anche %STRBEGIN%, %STRCAT%, %STRCPY%, %STRICHG%, %STRLOWER%, %STRUPPER%, %MEMCPY%, %MEMSET%, %MID%, %LEFTTRIM%, %RIGHTTRIM%

Esempio
%STRING%(str1, "<a>Rossi Mario</a><A>Via Verdi, 4</A>")
%STRING%(str2, "<a>")
%STRING%(str3, "<A>")
str1 = %WRITE%(str1)
%STRCHG%(str1, str2, str3)
str1 = %WRITE%(str1)

Program output
str1 = <a>Rossi Mario</a><A>Via Verdi, 4</A>
str1 = <A>Rossi Mario</a><A>Via Verdi, 4</A>


NUMBER %STRCMP%
Scopo confronto di due stringhe sensibile alla capitalizzazione.

Sintassi
%NUMBER% %STRCMP% (%STRING% s1,
    %STRING% s2)

Descrizione Esegue un controllo di uguaglianza, carattere per carattere, fra s1 e s2.
Il confronto viene interrotto quando non viene verificata l'uguaglianza fra i due caratteri correntemente in fase di confronto, cioè quando il confronto genera un valore diverso da zero.
L'esito del confronto viene codificato come segue:
valore descrizione
< 0 il carattere su s1 ha un valore ascii inferiore al carattere in s2
0 il carattere su s1 ha un valore ascii uguale al carattere in s2
> 0 il carattere su s1 ha un valore ascii superiore al carattere in s2

Valore restituito valore numerico
Torna 0 in caso di perfetta uguaglianza;
Torna <> 0 in caso di disparità fra i valori confrontati.

Vedere anche %STRICMP%

Esempio
%STRING%(s1, "FraseDaConfrontare")
%STRING%(s2, "FrasedaConfrontare")
%WRITE%(%ITOA%(%STRCMP%(s1, s2)))

Program output
-32


NUMBER %STRCOUNT%
Scopo torna il numero di occorrenze di una determinata stringa all'interno di un'altra.

Sintassi
%NUMBER% %STRCOUNT% (%STRING% s1,
    %STRING% s2)

Descrizione Consente di determinare quante volte è verificata l'occorrenza di una stringa s2 all'interno di un'altra stringa s1.
Il controllo viene eseguito in modo sensibile alla capitalizzazione, e torna un valore numerico in base 1.

Valore restituito valore numerico
Torna un valore numerico >= 0 in caso di operazione eseguita correttamente;
Torna -1 in caso di errore generico.

Vedere anche %STRICOUNT%, %STRSTR%, %STRISTR%, %STRSTRFROM%, %STRISTRFROM%


VOID %STRCPY%
Scopo copiare il contenuto di una variabile in un'altra.

Sintassi
VOID %STRCPY% (%STRING% s1,
    %STRING% s2

Descrizione Consente di eseguire una copia del contenuto di str2 dentro str1, sovrascrivendone il valore esistente.
Viene copiato anche il carattere terminatore (\x0) di fine buffer.

Valore restituito nessuno.

Vedere anche %STRBEGIN%, %STRCAT%, %STRCHG%, %STRICHG%, %STRLOWER%, %STRUPPER%, %MEMCPY%, %MEMSET%, %MID%, %LEFTTRIM%, %RIGHTTRIM%

Esempio
%STRING%(str1, "Questa è la stringa 1.")
%STRING%(str2, "Questa è la stringa 2.")
str1 = %WRITE%(str1)
str2 = %WRITE%(str2)
%STRCPY%(str1, str2)
str1 = %WRITE%(str1)
str2 = %WRITE%(str2)

Program output str1 = Questa è la stringa 1.
str2 = Questa è la stringa 2.

str1 = Questa è la stringa 2.
str2 = Questa è la stringa 2.


VOID %STRICHG%
Scopo modificare determinate parti di una variabile

Sintassi
VOID %STRCHG% (%STRING% s1,
    %STRING% s2)

Sintassi %STRICHG% (%STRING% str, %STRING% tosubst, %STRING% subst)

Descrizione consente di sostituire, in str, il valore tosubst con il valore subst. Il confronto, all'interno di str, di tosubst è case insensitive.

Valore restituito nessuno.

Vedere anche %STRBEGIN%, %STRCAT%, %STRCPY%, %STRCHG%, %STRLOWER%, %STRUPPER%, %MEMCPY%, %MEMSET%, %MID%, %LEFTTRIM%, %RIGHTTRIM%

Esempio
%STRING%(str1, "<a>Rossi Mario</a><A>Via Verdi, 4</A>")
%STRING%(str2, "<A>")
%STRING%(str3, "<A>")
str1 = %WRITE%(str1)
%STRICHG%(str1, str2, str3)
str1 = %WRITE%(str1)

Program output
str1 = <a>Rossi Mario</a><A>Via Verdi, 4</A>
str1 = <A>Rossi Mario</a><A>Via Verdi, 4</A>


NUMBER %STRICMP%
Scopo confrontare il contenuto di due stringhe

Sintassi
%NUMBER% %STRICMP% (%STRING% s1,
    %STRING% s2)

Descrizione esegue un confronto, insensibile al formato, carattere per carattere delle due stringhe s1 e s2;
si interrompe al primo carattere che non verifica il confronto.

Valore restituito valore alfanumerico
s1 è minore di s2 : torna -1;
s1 è uguale a s2 : torna 0;
s1 è maggiore di s2 : torna 1.

Vedere anche %STRCMP% %MEMCMP% %MEMICMP% %STRPBRK% %STRSPN%

Esempio
%STRING%(s1, "Highway Application Server")
%STRING%(s2, "highway application server")
%NUMBER%(ret, 0)
%NUMCPY%(ret ,%STRICMP%(s1, s2))
%IF%(ret)
 <--! esegui qualcosa -->
%ENDIF%


NUMBER %STRICOUNT%
Scopo torna il numero di occorrenze, indipendentemente dalla capitalizzazione, di una determinata stringa all'interno di un'altra.

Sintassi
%NUMBER% %STRICOUNT% (%STRING% s1,
    %STRING% s2)

Descrizione Consente di determinare quante volte è verificata l'occorrenza di una stringa s2 all'interno di un'altra stringa s1.
Il controllo viene eseguito in modo NON sensibile alla capitalizzazione, e torna un valore numerico in base 1.

Valore restituito valore numerico
Torna un valore numerico >= 0 in caso di operazione eseguita correttamente;
Torna -1 in caso di errore generico.

Vedere anche %STRCOUNT%, %STRSTR%, %STRISTR%, %STRSTRFROM%, %STRISTRFROM%


DECLARATION %STRING%
Scopo dichiara una variabile di tipo stringa e la inizializza con il valore indicato.

Sintassi
DECLARATION %STRING% (%STRING% nomestringa,
    %STRING% valore)

Descrizione Una variabile può essere dichiarata ovunque ma non come argomento di una funzione (predefinita e non).
La visibilità di una variabile cessa all'uscita del contesto nel quale è stata dichiarata sia esso il corpo di una funzione o la regione delimitata da una istruzione di controllo del flusso ad eccezione di %IFSYM% ed %IFNSYM%.
All'interno di una costante stringa, le sequenze '\r', '\n', '\\', '\"', '""', '\xnn' vengono interpretate come CR (0x0d), LF (0x0a), '\', '"', '"', e 0xnn.

Valore restituito nessuno

Vedere anche %NUMBER%, %FLOAT%


NUMBER %STRISTR%
Scopo cerca una determinata stringa all'interno di un'altra.

Sintassi
%NUMBER% %STRISTR% (%STRING% s1,
    %STRING% s2[,
    %NUMBER% n = 1])

Descrizione Data una stringa s1, consente di cercare al suo interno la stringa s2.
Il confronto avviene in modo insensibile alla capitalizzazione, ed il valore di ritorno rappresenta la posizione iniziale in cui viene verificata l'occorrenza; e viene espresso in base 0 perchè rappresenta una posizoine dell'array di caratteri di cui è composto s1.
Il terzo parametro, opzionale, consente di richiedere ad Highway Application Server di verificare l'ennesima presenza di s2 all'interno di s1 (tipicamente utilizzata al posto della %STRSTRIFROM%).
Se il terzo parametro non viene indicato, questi assume il valore di default = 1.

Valore restituito valore numerico
Torna >= 0 in caso di occorrenza trovata;
Torna -1 in caso di errore generico o occorrenza non trovata.

Vedere anche %STRSTR%, %STRISTRFROM%


NUMBER %STRISTRFROM%
Scopo cerca la prima occorrenza di una stringa all'interno di un'altra, partenda da una determinata posizione.

Sintassi
%NUMBER% %STRISTRFROM% (%STRING% s1,
    %STRING% s2
    %NUMBER% from)

Descrizione Viene utlizzata per effettuare ricerche di valori alfanuumerici all'interno di una determinata parola/frase.
La ricerca di s2 in s1 avviene a partire dalla posizione indicata in from.
Se from è negativo la ricerca avviene in senso opposto (verso indici minori).
%STRISTRFROM% è case-insensitive ed il valore ritornato rappresenta un indice e quindi viene rappresentato in base 0.

Valore restituito valore numerico
Torna >= 0 in caso di occorrenza trovata;
Torna -1 in caso di occorrenza NON trovata o errore generico.

Vedere anche %STRISTR%, %STRSTRFROM%


NUMBER %STRLEN%
Scopo torna il numero di caratteri della stringa indicata.

Sintassi
%NUMBER% %STRLEN% (%STRING% s)

Descrizione Consente di recuperare il numero di caratteri di cui è composta la stringa indicata.
Nel conteggio saranno compresi anche gli eventuali caratterti di fine riga ("\r\n").
Il carattere che determina la fine di un buffer che contiene una stringa è rappresentato dal carattere \null (non individuabile se non con un compilatore).

Valore restituito valore numerico
Torna >= 0 in caso di operazione eseguita correttamente;
Torna -1 in caso di errore generico.

Vedere anche %NUMROWS%


STRING %STRLOWER%
Scopo Converte una stringa o parte di essa in caratteri minuscoli.

Sintassi
%STRING% %STRLOWER% (%STRING% stringa,
    %NUMBER% first,
    %NUMBER% count)

Descrizione Trasforma un certo numero di caratteri in formato minuscolo:
stringa rappresenta il buffer da convertire;
first è l'indice che rappresenta il primo carattere che subisce la trasformazione (base 0);
count indica il numero di caratteri che saranno convertiti (-1 per indicare fino a fine stringa).

Valore restituito valore alfanumerico
Torna una stringa convertita in caratteri minuscoli.

Vedere anche %STRUPPER%


NUMBER %STRPBRK%
Scopo torna la posizione, in una determinata stringa, del primo fra i caratteri rappresentati in un set specificato.

Sintassi
%NUMBER% %STRPBRK% (%STRING% s,
    %STRING% charset)

Descrizione Consente di individuare un carattere, facente parte di un set, all'interno di una stringa.
charset indica un gruppo di caratteri dei quali si desidera individuare le occorrenze all'interno del buffer spcificato con s.

Valore restituito valore numerico
Torna la posizione in base 0 del primo carattere in s che si trova in charset.
Torna -1 in caso di errore generico.

Vedere anche %STRSPN%

Esempio
%STRING%(buff, "Dalle 24 del 31/12/2000 inizia l'anno 2001")
%STRING%(set, "0123456789")
%WRITE%(%ITOA%(%STRPBRK%(buff, set)))

Program output
6


NUMBER %STRSPN%
Scopo torna la lunghezza di una sottostringa in un buffer composta interamente dei caratteri di un indicato set.

Sintassi
%NUMBER% %STRSPN% (%STRING% s,
    %STRING% charset)

Descrizione Consente di determinare un sottoinsieme di caratteri all'interno di una data stringa.
s è il buffer nel quale viene eseguita la ricerca;
charset rappresenta il set di caratteri del quale si vuole trovare riferimento.
%STRSPN% cerca in s la prima occorrenza di caratteri facenti interamente parte di charset.
La ricerca deve essere verificata a partire dal primo carattere di s.
Il confronto è case sensitive.

Valore restituito valore numerico
Torna la lunghezza della sottostringa individuata;
Torna 0 se il primo carattere di s non fa parte di charset;
Torna -1 in caso di errore generico.

Vedere anche %STRPBNK%

Esempio
%STRING%(s, "proviamo ad usare questo buffer")
%STRING%(cs, "")
%STRCPY%(cs, "prima")
%WRITE%(%ITOA%(%STRSPN%(s, cs)))<br>
%STRCPY%(cs, "poi")
%WRITE%(%ITOA%(%STRSPN%(s, cs)))<br>
%STRCPY%(cs, "POI")
%WRITE%(%ITOA%(%STRSPN%(s, cs)))

Program output
2
1
0


NUMBER %STRSTR%
Scopo Cerca all'interno di una stringa un'occorrenza di una ulteriore stringa.

Sintassi
%NUMBER% %STRSTR% (%STRING% s1,
    %STRING% s2[,
    %NUMBER% n = 1])

Descrizione Cerca s2 in s1.
se non viene specificato n, la ricerca viene terminata quando viene verificata la prima occorrenza oppure a fine stringa;
Diversamente viene cercata l'ennesima occorrenza (in base 1).

Valore restituito valore numerico
Torna l'indice del primo carattere dell'occorrenza indicata;
Torna -1 in caso di errore generico o di stringa non trovata.

Vedere anche %STRISTR%, %STRISTRFROM%, %STRISTRFROM%


NUMBER %STRSTRFROM%
Scopo cerca la prima occorrenza di una stringa all'interno di un'altra, partenda da una determinata posizione.

Sintassi
%NUMBER% %STRSTRFROM% (%STRING% s1,
    %STRING% s2,
    %NUMBER% from)

Descrizione Cerca una stringa s2 all'interno di s1 a partire dalla posizione indicata da from.
from esprime un indice in base 0.
La ricerca è case sensitive.
Se from è negativo la ricerca avviene in senso opposto (verso indici minori).

Valore restituito valore numerico
Torna l'indice del primo carattere dell'occorrenza verificata in caso di esito positivo
Torna -1 in caso di errore generico o di occorrenza non trovata.

Vedere anche %STRISTRFROM%, %STRISTR%, %STRSTR%


STRING %STRUPPER%
Scopo Converte in maiuscolo una determinata stringa o parte di essa.

Sintassi
%STRING% %STRUPPER% (%STRING% stringa,
    %NUMBER% first,
    %NUMBER% count)

Descrizione Consente di convertire count caratteri in formato maiuscolo di stringa partendo dall'indice first.
first rappresenta l'indice di stringa (base 0);
count è invece espresso in base 1 perchè indica il numero di caratteri da convertire; se vale -1 indica fine stringa

Valore restituito valore alfanumerico
Torna una stringa convertita in caratteri maiuscoli per la parte indicata.

Vedere anche %STRLOWER%


NUMBER %SYSTEM%
Scopo esegue il comando specificato invocando l'interprete dei comandi.

Sintassi
%NUMBER% %SYSTEM% (%STRING% command)

Descrizione Consente di eseguire un comando di shell.
In command viene espresso come sarebbe digitato in riga di comando.
La forma, chiasramente, dipende dal sistema operativo del web server sul quale sta correntemente girando Highway Application Server.

Valore restituito valore numerico
Torna <> 0 in caso di operazione eseguita correttamente;
Torna 0 in caso di errore generico.

Vedere anche %CREATEPROCESS%


STRING %TABLES%
Scopo Variabile alfanumerica ambientale che contiene l'elenco delle tabelle dell'archivio corrente.

Sintassi
%STRING% %TABLES%    

Descrizione Utilizzato in ambito di navigazione gerarchica.
Consente di recuperare la lista degli indici delle tabelle per le quali è consentita la navigazione in ambito Browse Gerarchico precedentemente impostatata da riga di camndo con un /T<listaindicitabelle>.
L'uso per il quale è stata generata questa variabile ambientale è tipico dei link che scorrono le pagine di browse gerarchico: consente quindi di riprendere l'eventuale restrizione di navigazione sulle tabelle imposta nella pagina di provenienza.

Valore restituito valore alfanumerico
Torna una stringa che contiene la lista degli indici, separati da virgole, delle tabelle sulle quali è consentita la navigazione.

Vedere anche /T

Esempio
<!-- pagina caricata con una url del tipo
   %script%/a%curarc%/s%cursel%/d%curdoc%/T1,2 -->
<!-- link alla pagina successiva di browse gerarchico -->
<a href="%script%/a%curarc%/s%cursel%/d%curdoc%/T%tables%">pagina successiva</a>


STRING %TABNAME%
Scopo Recupera il nome della tabella identificata.

Sintassi
%STRING% %TABNAME% (%NUMBER% indicetabella)

Descrizione Consente di ottenere da Highway Application Server il nome della tabella identificata da indicetabella (in base 0) dell'archivio corrente.

Valore restituito valore alfanumerico
Torna una stringa valorizzata in caso di esito positivo.
Torna una stringa vuota in caso di errore generico.

Vedere anche %TOTTAB%, %NUMTABELLA%

Esempio
%WRITE%(%ITOA%(%TOTTAB%))<BR>
%REPEAT%(0, %TOTTAB% - 1)
 %TABNAME%(%INDEX%) (%NUMTABELLA%(%TABNAME%(%INDEX%)))<BR>
%ENDREPEAT%

Program output
3
TABELLA1 (1)
TABELLA3 (2)
TABELLA2 (3)


STRING %TEMPDIR%
Scopo Torna il path del direttorio indicato dalla variabile ambientale TEMP o TMP o TMPDIR.

Sintassi
%STRING% %TEMPDIR%    

Descrizione Consente di recuperare il percorso completo indicato dalla variabile ambientale TEMP o TMP o TEMPDIR del sistema operativo del Web Server sul quale è in esecuzione Highway Application Server.
La suddetta variabile sarà impostata automaticamente all'atto dell'installazione dei servizi highway (Highway Server e Highway Application Server), previo riavvio del computer.
Sarò a cura dell'operatore che esegue l'installazione creare fisicamente il direttorio corrispondente.
In caso di utilizzo locale di Highway Server e Highway Application Server non installati come servizi, l'impostazione della variabile ambientale TEMP|TMP|TEMPDIR dovrà essere eseguita manualmente (con S.O. Windows 95/98 mediante istruzione nell'autoexec.bat SET TEMP = C:\TEMP
con S.O. Windows NT Workstation, 2000, NT Server, mediante Pannello di Controllo/Sistema/Ambiente/Variabili di sistema).
Per eseguire una verifica delle impostazioni correnti, aprire una sessione DOS, o più genericamente una shell, e digitare SET senza alcun parametro, verrà mostrata una lista delle correnti variabili ambientali del sistema operativo

Valore restituito valore alfanumerico
Torna una stringa che contiene un percorso completo in caso di operazione avvenuta con successo o vuota se non esiste alcuna delle variabili ambientali suddette.

Vedere anche %GETENV%, %GETTEMPFILENAME%


NUMBER %THSCOUNT%
Scopo individuare il numero di relazioni che compongono l'elemento individuato.

Sintassi
%NUMBER% %THSCOUNT% (%STRING% data,
    %NUMBER% pos)

Descrizione data rappresenta un buffer di chiavi di un determinato attributo (valorizzato con una chiamata alla %THSKEYS% della quale è il primo parametro in ingresso).
pos rappresenta la posizione (base 1) dell'elemento del quale si intende richiedere il numero delle relazioni che lo compongono, all'interno del Thesauro.

Valore restituito valore numerico
Torna il numero di relazioni che compongono l'elemento individuato.
Torna -1 in caso di errore generico.

Vedere anche %THSKEYS%


NUMBER %THSDELETE%
Scopo cancella la chiave individuata.

Sintassi
%NUMBER% %THSDELETE% (%STRING% s)

Descrizione Consente di eliminare la chiave indicata da s dal Thesuro.
Sarà opportuno verificare, prima di eseguire la cancellazione, che non vi siano termini figli 'legati' al termine che si intende elimnare.

Valore restituito valore numerico
Torna 1 in caso di cancellazione eseguita correttamente;
Torna 0 in caso di errore generico.

Vedere anche %THSINSERT%, %THVDELETE%, %THVINSERT%


NUMBER %THSGREATER%
Scopo legge la chiave maggiore o uguale a quella indicata.

Sintassi
%NUMBER% %THSGREATER% (%STRING%* s,
    %STRING% d)

Descrizione Interroga il modulo Thesauro per richiedere la chiave uguale o maggiore a quella indicata in d.
In s verrà scritta la chiave identificata.
E' necessario eseguire un test sul valore di ritorno per verificare che tipo di valore trovare in s.

Valore restituito valore numerico
valore descrizione
0 raggiunta la fine della lista dei termini
1 la chiave ritornata in s non ha come radice la chiave indicata in d
2 la chiave ritornata in s ha come radice la chiave indicata in d
3 la chiave s ritornata corrisponde esattamente alla chiave indicata in d
< 0 errore generico

Vedere anche %THSPREV%, %THVPREV%, %THSNEXT%, %THVNEXT%


NUMBER %THSGROWSELE%
Scopo espande la selezione corrente dei termini di Thesauro per contenere gli elementi, le relazioni e la profondità indicate.

Sintassi
%NUMBER% %THSGROWSELE% (%STRING% in,
    %STRING%* out,
    %STRING% separ,
    %NUMBER% flags,
    %STRING% rules)

Descrizione in contiene gli elementi ai quali applicare l'espansione separati da separ;
il formato da mantenere sarà <termine><separ><termine>...
out conterrà la nuova selezione;
flags implementato per scopi futuri; da impostare a 0;
rules specifica quali relazioni, e con che profondità, applicare per alla nuova selezione; il formato sarà composto da <relaz.abbreviata><separ><profondita(intero)><separ>....

Valore restituito valore numerico
Torna il numero degli elementi tornati in out in caso di esito positivo
Torna <= 0 in caso di errore generico.

Esempio
%STRING%(separ, "\n")
%STRING%(in, "")
%STRING%(out, "")
%STRING%(rules, "")
%NUMBER%(flags, 0)

%STRCAT%(in, "termine1")
%STRCAT%(in, separ)
%STRCAT%(in, "termine2")
%STRCAT%(in, separ)
%STRCAT%(in, "termine3")
%STRCAT%(in, separ)
%STRCAT%(in, "termine4")

<!-- espande con NT su due livelli e BT ed RT ad un livello -->
%STRCAT%(rules, "NT\n2\nBT\n1\nRT\n1")

%THSGROWSELE%(in, out, separ, flags, rules)


NUMBER %THSINSERT%
Scopo eseguire l'inserimento di un termine nel Thesauro.

Sintassi
%NUMBER% %THSINSERT% (%STRING% s)

Descrizione Consente di inserire un nuovo termine nel modulo Thesauro dell'attributo corrente.

Valore restituito valore numerico
valore descrizione
0 inserimento eseguito correttamente
> 0 se il termine già esite
< 0 errore generico

Vedere anche %THVINSERT%, %THSDELETE%, %THVDELETE%


STRING %THSITEM%
Scopo Recuperare un determinato elemento di un determinato buffer di chiavi.

Sintassi
%STRING% %THSITEM% (%STRING% data,
    %NUMBER% pos
    %NUMBER% lev)

Descrizione Dato un buffer di chiavi (valorizzato con una chiamata alla %THSKEYS% della quale è il primo parametro in ingresso) consente di recuperare un particolare elemento di data indicando il livello lev (base 1) e la posizione pos (base 1).

Valore restituito valore alfanumerico
Trona il termine individuato;
Torna una stringa vuota in caso di errore generico.

Vedere anche %THSGREATER%, %THSNEXT%, %THSPREV%


NUMBER %THSKEYS%
Scopo recupera un buffer di chiavi di un determinato attributo dal modulo Thesauro.

Sintassi
%NUMBER% %THSKEYS% (%STRING%* out,
    %STRING% attr,
    %NUMBER%* count,
    %NUMBER% flags,
    %STRING% vrels,
    %STRING% xrels,
    %STRING% common,
    %STRING% start,
    %STRING% lastrel)

Descrizione Consente di fare una interrogazione al modulo Thesauro. I parametri assumono questo significato:
valore descrizione
*out è una variabile già inizializzata che verrà valorizzata dalla chiamata a %THSKEYS% per contenere le chiavi identificate
attr attributo sul quale eseguire l'interrogazione
*count questo parametro andrà valorizzato per indicare il numero di termini da leggere;
in uscita indicherà il numero dei termini letti
vrels descrizione abbreviata delle relazioni visibili
xrels descrizione abbreviata delle relazioni da espandere
common descrizione abbreviata delle relazioni dal percorso comune
start chiave di posizionamento
vrels relazione da cercare sull'ultimo termine

Valore restituito valore numerico
Torna 0 in caso di esito positivo;

Torna un valore <> 0 in caso di errore generico.

Vedere anche %THSREAD%, %THVREAD%


NUMBER %THSKEY2REL%
Scopo ricava la chiave relativa ad una determinata relazione

Sintassi
%NUMBER% %THSKEY2REL% (%STRING%* s,
    (%STRING%* t1,
    %STRING%* rel,
    %STRING%* t2)

Descrizione Decodifica la chiave s generando i termini e la relazione relativi

Valore restituito valore numerico
Torna <> 0 in caso di esito positivo;
Torna 0 in caso di errore generico.

Vedere anche %THSREL2KEY%


NUMBER %THSNEXT%
Scopo legge la chiave successiva alla chiave corrente dell'attributo corrente.

Sintassi
%NUMBER% %THSNEXT% (%STRING%* d)

Descrizione Consente di interrogare il modulo Thesauro sul termine successivo a quello correntemente puntato relativamente all'attributo corrente.
In d sarà memorizzato il termine individuato

Valore restituito valore numerico
Torna un intero <> da 0 in caso di esito positivo;
Torna 0 in caso di errore generico.

Vedere anche %THVNEXT%, %THSPREV%, %THVPREV%, %THSGREATER%


NUMBER %THSPREV%
Scopo legge la chiave precedente alla chiave corrente dell'attributo corrente.

Sintassi
%NUMBER% %THSPREV% (%STRING%* d)

Descrizione Consente di interrogare il modulo Thesauro sul termine precedente a quello correntemente puntato relativamente all'attributo corrente.
In d sarà memorizzato il termine individuato

Valore restituito valore numerico
Torna un intero <> da 0 in caso di esito positivo;
Torna 0 in caso di errore generico.

Vedere anche %THVNEXT%, %THSNEXT%, %THVPREV%, %THSGREATER%


NUMBER %THSREAD%
Scopo legge la chiave corrente dell'attributo corrente.

Sintassi
%NUMBER% %THSREAD% (%STRING%* s)

Descrizione Consente di interrogare il modulo Thesauro sul termine correntemente puntato relativamente all'attributo corrente.
In s sarà memorizzato il termine individuato

Valore restituito valore alfanumerico
Torna un intero <> da 0 in caso di esito positivo;
Torna 0 in caso di errore generico.

Vedere anche %THVREAD%, %THSKEYS%


NUMBER %THSREL2KEY%
Scopo costruisce la chiave che genera la relazione indicata.

Sintassi
%NUMBER% %THSREL2KEY% (%STRING%* d,
    %STRING% t1,
    %STRING% rel,
    %STRING% t2,

Descrizione Codifica la chiave d composta dal termine e dalle relazioni indicati

Valore restituito valore numerico
Torna <> 0 in caso di esito positivo;
Torna 0 in caso di errore generico.

Vedere anche %THSKEY2REL%


STRING %THSRELDESCR%
Scopo Recuperare la descrizione relativa al termine individuato.

Sintassi
%STRING% %THSRELDESCR% (%STRING% data,
    %NUMBER% pos,
    %NUMBER% lev)

Descrizione Interroga il modulo Thesauro per recuperare la descrizione della relazione del termine individuato.
data rappresenta la selezione dei termini corrente rispetto all'attributo corrente (valorizzato con una chiamata alla %THSKEYS% della quale è il primo parametro in ingresso);
lev rappresenta il livello del termine che si intende individuare;
pos rappresenta la posizione del termine.

Valore restituito valore alfanumerico
Torna una stringa valorizzata con la descrizione estesa della relazione associata al termine individuato;
Torna una stringa vuota in caso di errore generico.

Vedere anche %THSKEYS%


NUMBER %THSRELPOS%
Scopo recupera la posizione numerica della relazione associata al termine individuato rispettivamente alla lista delle relazioni contemplate dall'archivio corrente.

Sintassi
%NUMBER% %THSRELPOS% (%STRING% data,
    %NUMBER% pos,
    %NUMBER% lev)

Descrizione Le relazioni compatibili con un deteminato archivio sono dichiarate alla sezione [Relazioni] del file <nomearchivio>.dsp vedi "Relazioni Espicative".
Tramite la %THSRELPOS% è posiibile recuperare l'indice della relazione individuata.
data rappresenta una selezione di termini (valorizzato con una chiamata alla %THSKEYS% della quale è il primo parametro in ingresso);
pos rappresenta la posizione del termine da individuare all'interno di data;
lev è l'ulteriore coordinata che consente di individuare un termine all'interno di data.

Valore restituito valore numerico
Torna un valore numerico > 0 in caso di esito positivo.
Torna 0 in caso di errore generico.

Vedere anche %THSRELDESCR%


NUMBER %THVDELETE%
Scopo Eliminare una chiave dal thesauro dei vincolati

Sintassi %THVDELETE%(%STRING% s)

Descrizione Consente di eliminare una chiave dal thesauro dei vincolati.

Valore restituito valore numerico
Torna 1 in caso di cancellazione avvenuta con successo;
Torna 0 in caso di errore generico.

Vedere anche %THSDELETE%

HR>

NUMBER %THVINSERT%
Scopo Inserire una chiave nel thesauro dei vincolati.

Sintassi %THVINSERT%(%STRING% s)

Descrizione Consente di eseguire un inserimento nel thesauro dei vincolati.

Valore restituito valore alfanumerico
Torna > 0 se la chiave esiste già;
Torna 0 in caso di operazione eseguita con successo;
Torna < 0 in caso di errore generico

Vedere anche %THSINSERT%


NUMBER %THVNEXT%
Scopo leggere la chiave successiva alla posizione corrente sul thesauro vincolati

Sintassi %THVNEXT%(%STRING%* d)

Descrizione Consente di interrogare Highway Application Server per ottenere la chiave del termine vincolato successivo rispetto alla posizione corrente.

Valore restituito valore numerico
Torna dicerso da 0 in caso di esito positivo.

Vedere anche %THSNEXT%

HR>

NUMBER %THVPREV%
Scopo leggere la chiave precedente alla posizione corrente sul thesauro vincolati

Sintassi %THVPREV%(%STRING%* d)

Descrizione Consente di interrogare Highway Application Server per ottenere la chiave del termine vincolato precedente rispetto alla posizione corrente.

Valore restituito valore numerico
Torna dicerso da 0 in caso di esito positivo.

Vedere anche %THSPREV%

HR>

NUMBER %THVREAD%
Scopo leggere una determinata chiave nel thesauro dei vincolati.

Sintassi %THVREAD%(%STRING% S)

Descrizione Consente di cercare una deteminata chiave s sul theasauro dei vincolati.
Utilizzata tipicamente per eseguire un posizionamento, per verificare l'esistenza di una deteminata chiave.

Valore restituito valore numerico
Torna 1 in caso chiave trovata
Torna 0 in caso di errore generico o chiave assente.

Vedere anche %THSREAD%


NUMBER %THUMB%
Scopo Variabile numerica ambientale per la determinazione della diapositiva associata ad una immagine

Sintassi
%NUMBER% %THUMB% (%NUMBER% numero_pagina[,
    %NUMBER% gruppo])

Descrizione usato per testare l'esistenza della diapositiva relativa ad una determinata immagine (collegata al documento).
Se il valore restituito è "1" significa che esiste la diapositiva.
Naturalmente questo tipo di test ha significato solo se si parla di immagini (e diapositive) collegate al documento con il metodo implicito.

Valore restituito valore numerico
Torna 1 in caso di esito positivo;
Torna 0 in caso di errore generico.

Vedere anche %THUMBURL%, %IMAGES%, %IMAGEURL%

Esempio
%REPEAT% (1,1)
 %IF% (%THUMB%(%INDEX%))
  <!-- esiste Thumbnail -->
  %THUMB%(%INDEX%)<BR>
 %ELSE%
  <!--non esiste Thumbnail -->
  %THUMB%(%INDEX%)<BR>
 %ENDIF%
%ENDREPEAT%

Program output
<!-- non esiste Thumbnail --> 0<BR>


STRING %THUMBURL%
Scopo Ottenere l'Url per la diapositiva specificata.

Sintassi
%STRING% %THUMBURL% (%NUMBER% numero_pagina[,
    %NUMBER% gruppo])

Descrizione usato per ottenere l'Url di una diapositiva.
Naturalmente questo tipo di test ha significato solo se si parla di immagini (e Diapositive) collegate al documento con il metodo implicito.

Valore restituito valore alfanumerico
Torna una stringa che contiene una URL in caso di esito positivo.
Torna una stringa vuota in caso di errore generico.

Vedere anche %THUMB%, %IMAGES%, %IMAGEURL%

Esempio
%REPEAT% (1,1)
 <IMG SRC="%THUMBURL% (%INDEX%)"><BR>
 "%THUMBURL% (%INDEX%)"<BR>
%ENDREPEAT%

Program output

"Z:\IMMAGINI\SYMBOL\000002C.GIF"


NUMBER %TIME%
Scopo Ottenere il numero di secondi trascorsi dal 01/01/1970 00:00:00 rispetto all'ora di sistema corrente.

Sintassi
%NUMBER% %TIME%    

Descrizione Consente di utilizzare il sistema di riferimento universale per il calcolo del tempo trascorso;
Il riferimento è il numero di secondi trascorsi dalla mezzanotte dal 01 Gennaio 1970 rispetto l'ora di sistema del PC sul quale viene evocata questa funzione (tipicamente il web server).

Valore restituito valore numerico
Torna un valore intero in caso di esito positivo.
Torna 0 in caso di errore generico.

Vedere anche %CTIME%, %CLOCK%


NUMBER %TOTREL%
Scopo numero di relazioni di Thesauro dichiarate nell'archivio corrente.

Sintassi
%NUMBER% %TOTREL%    

Descrizione Consente di interrogare il modulo Thesauro sul numero di relazioni che legano i termini presenti all'interno dell'archivio corrente.

Valore restituito valore numerico
Torna un intero numerico positivo in caso di elaborazione eseguita orrettamente;
Torna -1 in caso di errore generico.

Vedere anche %REL%, %RELDESCR%, %RELNOTE%, %RELPOS%, %RELSINT%


NUMBER %TOTSEL%
Scopo Variabile numerica ambientale che contiene il numero totale di documenti esito di una selezione.

Sintassi
%NUMBER% %TOTSEL%    

Descrizione Tipicamente utilizzato dopo una chiamata alla %4CALL% o dopo una submit() proveniente da un Form Selezione.
Contiene il numero di documenti che fanno parte della selezione corrente, identificata da %CURSEL%.

Valore restituito valore numerico
Torna un intero > 0 in caso di selezione corrente con esito positivo.
Torna 0 in caso di errore generico o selezione con nessun documento trovato.

Vedere anche %CURSEL%, %TOTDOC%, %TOTDOCA%, %TOTCANC%

Esempio
%IF% (equ(%TOTSEL%,1))
 " 1 " /1
%ELSE%
 %IF% (equ(%CURDOC%,1))
  <A href="%SCRIPT%/a%CURARC%/s%CURSEL%/d%EVAL%(%CURDOC%+1)">
Successivo
</A>
 %ELSE%
  %IF% (equ(%CURDOC%,%TOTSEL%))
   <A HREF = "%SCRIPT%/a%CURARC%/s%CURSEL%/d%EVAL%(%CURDOC%-1)">
    Precedente
   </A>
  %ELSE%
   <A HREF = "%SCRIPT%/a%CURARC%/s%CURSEL%/d%EVAL%(%CURDOC%-1)">
    Precedente
   </A>
   <A HREF = "%SCRIPT%/a%CURARC%/s%CURSEL%/d%EVAL%(%CURDOC%+1)">
    Successivo
   </A>
  %ENDIF%
 %ENDIF%
%ENDIF%


NUMBER %TOTATTR%
Scopo numero totale degli attributi presenti nella tabella specificata.

Sintassi
%NUMBER% %TOTATTR% (%NUMBER% indicetabella)

Descrizione Consente di individuare quanti di attributi è composta la tabella indicata.
indicetabella esprime un indice della lista delle tabelle che fanno parte dell'archivio corrente in base 0.
Il numero degli attributi viene espresso in base 1, ed è incrementato di una unità perchè l'attributo con indice 1 si riferisce al TIPOREC che contiene l'dentificativo della tabella di appartenenza.

Valore restituito valore numerico
Torna un valore numerico intero superiore a 0 in caso di esito positivo;
Torna -1 in caso di errore generico.

Vedere anche %TOTTAB%


NUMBER %TOTCANC%
Scopo variabile ambientale che contiene il numero totale dei documenti cancellati nell'archivio corrente.

Sintassi
%NUMBER% %TOTCANC%    

Descrizione I documenti cancellati non sono fisicamente rimossi dalla base dati; vengono contrassegnati come tali e continuano a fare parte dell'archivio fino a che non si interviene con una compattazione dell'archivio da eseguire con il modulo SFUtil.
%TOTCANC% esprime il numero totale dei documenti che presentano questo contrassegno e fanno ancora parte dell'archivio corrente.
Questa condizione di documenti cancellati, ma non rimossi risulta particolarmente utile per recuperare cancellazioni evvenute erroneamente o divenute tali.
Mediante il modulo Hs_tools è possibile recuperare i documenti contrassegnati come cancellati (chiaramente questa operazione ha senso solo se eseguita prima di una compattazione dell'archivio).
I documenti cancellati, che in ambiente Highway a 16 bit facevano parte dei documenti esito di una selezione, in ambiente Highway Application Server non rientrano in %TOTDOC%.

Valore restituito valore numerico
Torna > 0 in caso di presenza di documenti cancellati.

Vedere anche %TOTDOC%, %TOTDOCA%

Vedere anche %TOTDOC%, %TOTDOCA%, %TOTSEL%


NUMBER %TOTDOC%
Scopo variabile ambientale che contiene il numero totale dei documenti cancellati e non dell'archivio corrente.

Sintassi
%NUMBER% %TOTDOC%    

Descrizione Consente di richiedere ad Highway Server il numero dei documenti che fanno parte dell'archivio corrente.
Il valore immagazzinato in questa variabile comprende sia i documenti attivi dell'archivio, sia i documenti contrassegnati come cancellati, ma non ancora fisicamente eliminati dal database.

Valore restituito valore numerico
Torna un numero intero >= 0.

Vedere anche %TOTDOCA%, %TOTSEL%, %TOTCANC%


NUMBER %TOTDOCA%
Scopo variabile ambientale che contiene il numero totale dei documenti catalogati nell'archivio corrente.

Sintassi
%NUMBER% %TOTDOCA%    

Descrizione In questa variabile è memorizzato il numero totale dei documenti dell'archivio correttemente catalogati, con esclusione dei documenti contrassegnati come cancellati e non ancora fisicamente eliminati.

Valore restituito valore numerico
Torna un valore intero >= 0.

Vedere anche %TOTSEL%, %TOTCANC%, %TOTDOC%


NUMBER %TOTKEYS%
Scopo numero totale delle chiavi dell'archivio corrente.

Sintassi
%NUMBER% %TOTKEYS%    

Descrizione Rappresenta il numero totale delle chiavi presenti negli indici dell'archivio.
Si intendono comprese anche le chiavi con occorrenza zero, quelle relative a documenti cancellati (fisicamente o solo contrassegnati come tali) o che comunque non trovano più riferimento sui dati.
L'eliminazione delle chiavi con occorrenza zero avviene mediante compattamento dei vocabolari che si può eseguire con la %RMINDEX% e la seguente %MKINDEX%, oppure mediante l'uso del modulo esterno SFUtil

Valore restituito valore numerico
Torna un valore numerico >= 0.

Vedere anche %RMINDEX%, %MKINDEX%


NUMBER %TOTTAB%
Scopo numero totale delle tabelle dell'archivio corrente (base 1).

Sintassi
%NUMBER% %TOTTAB%    

Descrizione Accede alla struttura del database per richiedere ad Highway Server il numero totale delle tabelle che fanno parte dell'archivio corrente.
Il valore di ritorno è rappresentato in base 1, mentre un ciclo che fa uso di questo dato per enumerare i cicli dovrà fare riferimento ad un valore in base 0 per eccedere agli indici dell'array delle tabelle dell'archivio.

Valore restituito valore numerico
Torna un intero positivo > 0.

Vedere anche %TABLES%, %TABNAME%


NUMBER %TUPLEFILE%
Scopo informazioni sulla dimensione del/i file eventualmente associato/i ad un input di tipo file.

Sintassi
%NUMBER% %TUPLEFILE% (%NUMBER% indice)

Descrizione Consente di eseguire un loop sulle coppie chiave-valore ricevute allo scopo di individuare file inviati mediante <input type="file"> dalla form del chiamante.
Infatti la lettura del valore di ritorno di una coppia chiave-valore che si riferisce ad un file allegato indica il numero di bytes ricevuti.
Un valore di ritorno uguale a zero può indicare un tag input di tipo file non valorizzato o una coppia chiave valore di tipo diverso (p.e. text, radio, ecc...).
Il ciclo da eseguire è comunque sempre enumerato da %NUMTUPLES%, ma per la particolarità dell'elaborazione che viene eseguita sulle coppie chiave-valore è tipicamente utilizzato in uno script dedicato al salvataggio dei file allegati in una procedura di salvataggio documento nuovo o modificato.

Valore restituito valore numerico
Torna un valore numerico >= 0 in caso di esito positivo.
Torna -1 in caso di errore generico.

Vedere anche %KEYFILE%, %KEYWRITE%, %KEYAPPEND%, %KEYVAL%, %TUPLEKEY%, %TUPLEVAL%, %TUPLEWRITE%

Esempio
%STRING%(nomefile, "")
%STRING%(idout, "")
%STRING%(buff, "")
%REPEAT%(1, %NUMTUPLES%)
 %IF%(%TUPLEFILE%(%INDEX%) > 0)
  %IF%(%GETTEMPFILENAME%(nomefile, "TMP"))
   %IF%(%TUPLEWRITE%(%TUPLENAME%(%INDEX%), nomefile)>0)
    %IF%(%ATTACHADD%(idout, nomefile))
     %STRCAT%(buff,idout)
     %STRCAT%(buff,"\r\n")
    %ENDIF%
   %ENDIF%
  %ENDIF%
 %ENDIF%
%ENDREPEAT%


STRING[*] %TUPLEKEY%
Scopo Variabile alfanumerica ambientale che contiene il nome di una chiave nella corrispondente coppia chiave-valore

Sintassi
%STRING%[*] %TUPLEKEY% (%NUMBER% index)

Descrizione usato in combinazione con %NUMTUPLES% e %TUPLEVAL% per ottenere il nome di una chiave nella corrispondente coppia chiave/valore passata allo script a seguito di una richiesta da form e/o su riga comando.

Valore restituito valore alfanumerico
Torna una stringa valorizzata in caso di esito positivo.
Torna una stringa vuota in caso di errore generico o di chiave non valorizzata.

Vedere anche %KEYFILE%, %KEYWRITE%, %KEYAPPEND%, %KEYVAL%, %TUPLEFILE%, %TUPLEVAL%, %TUPLEWRITE%

Esempio

%REPEAT%(1, %NUMTUPLES%)
 %TUPLENAME%(%INDEX%):%TUPLEVAL%(%INDEX%)
%ENDREPEAT%


STRING %TUPLEVAL%
Scopo Variabile alfanumerica ambientale che contiene il valore di una chiave nella corrispondente coppia chiave-valore

Sintassi
%STRING% %TUPLEVAL% (%NUMBER% indice)

Descrizione usato in combinazione con %NUMTUPLES% e %TUPLEVAL% per ottenere il valore di una chiave nella corrispondente coppia chiave/valore passata allo script a seguito di una richiesta da form e/o su riga comando.

Valore restituito valore alfanumerico
Torna una stringa valorizzata in caso di esito positivo.
Torna una stringa vuota in caso di errore generico o di chiave non valorizzata.

Vedere anche %KEYFILE%, %KEYWRITE%, %KEYAPPEND%, %KEYVAL%, %TUPLEFILE%, %TUPLEKEY%, %TUPLEWRITE%


NUMBER %TUPLEWRITE%
Scopo torna il numero di bytes scritti sul file indicato.

Sintassi
%NUMBER% %TUPLEWRITE% (%NUMBER% indice,
    %STRING% fileout)

Descrizione Utilizzato insieme a %TUPLEWRITE% per leggere i file ricevuti in input dal chiamante (mediante valorizzazione di tag input di tipo file).
indice rappresenta il valore corrispondente della enumerazione delle coppie chiave-valore;
fileout è l'identificativo di file, precedentemente creato, sul quale scrivere.

Valore restituito valore numerico
Torna un valore intero > 0 che indica i bytes scritti in caso di esito positivo.
Torna -1 in caso di errore generico.

Vedere anche %KEYFILE%, %KEYWRITE%, %KEYAPPEND%, %KEYVAL%, %TUPLEFILE%, %TUPLEKEY%, %TUPLEVAL%

Esempio
vedi %TUPLEFILE%


NUMBER %UNLOCKDOC%
Scopo sbloccare un determinato documento

Sintassi %UNLOCKDOC%[(%NUMBER% numdoc)]

Descrizione Consente di sbloccare un documento precedentemente bloccato tramite la %BLOADDOC% impostata con il 4° parametro = 1

Valore restituito valore numerico
Torna 1 in caso esito positivo
Torna 0 in caso di errore generico.

Vedere anche %BLOADDOC%, %DBLOCK%, %DBUNLOCK%, %LOCK%, %UNLOCK%


NUMBER %UNLOCK%
Scopo sblocca l'archivio corrente.

Sintassi
%NUMBER% %UNLOCK%    

Descrizione Consente l'accesso all'archivio corrente precedentemente bloccato con %LOCK%.
Di norma il blocco dell'archivio corrente viene eseguito quando si eseguono operazioni di aggiornamento/manutenzione all'intera base dati.

Valore restituito valore numerico
Torna 1 in caso di sblocco avvenuto correttamente;
Torna 0 in caso di errore generico.

Vedere anche %LOCK%, %DBLOCK%, %DBUNLOCK%


STRING %UNMASK%
Scopo torna la decodifica di un valore precedentemente codificato.

Sintassi
%STRING% %UNMASK% (%STRING% data,
    %STRING% seed[,
    %NUMBER% mode = 0])

Descrizione Consente di decodificare un valore codificato, convertendolo nel valore originale.
Per riconvertire data occorre essere a conoscenza del seme seed utilizzato per la codifica.
L'uso di modo permette di assicurare, al valore codificato, di essere stampato a video, purchè lo sia già il valore prima della codifica.
mode può assumere i seguentoi valori:
valore descrizione
0 garantisce la stampabilità dei dati se in ingresso sono stampabili;
versioni di Highway Application Server >= 3.2.5.3 producono risultati diversi dalle versioni precedenti per stringhe contenenti caratteri rappresentabili al di sopra di 127 bit;
1 non garantisce la stampabilità dei dati in uscita.
Tipicamente utilizzata per crittare determinate informazioni che possono essere rese in chiaro solo se si è a conoscenza della modalità con cui l'informazione è stata crittata.

Valore restituito valore alfanumerico
Torna una stringa codificata in caso di esito positivo.
Torna una stringa vuota in caso di errore generico.

Vedere anche %MASK%


STRING %USERADDR%
Scopo indirizzo IP del client o del proxy che ha inoltrato la richiesta.

Sintassi
%STRING% %USERADDR%    

Descrizione Consente di recuperare l'indirizzo IP del client che esegue la corrente richiesta ad Highway Application Server.
Se la richiesta proviene da un client protetto da un proxy, l'indirizzo IP che viene recuperato è quello del proxy.

Valore restituito valore alfanumerico
Torna una stringa valorizzata con un indirizzo IP in caso di esito positivo.
Torna una stringa vuota in caso di errore generico.

Vedere anche %USERNAME%, %USERCREDIT%


STRING %USERNAME%
Scopo Variabile alfanumerica che contiene il nome dell'utente dell'ambiente Highway collegato.

Sintassi
%STRING% %USERNAME%    

Descrizione usato per ottenere il nome dell'utente Highway correntemente autenticato che ha eseguito la corrente richiesta ad Highway Application Server

Valore restituito valore alfanumerico
Torna una stringa che contiene il nome dell'utente.
Torna una stringa vuota in caso di errore generico.

Vedere anche %USERADDR%, %USERCREDIT%, %WEBUSER%


NUMBER %USERCREDIT%
Scopo Variabile alfanumerica ambientale che contiene il credito registrato dell'utente

Sintassi
%NUMBER% %USERCREDIT%    

Descrizione usato per ottenere la contabilizzazione (il credito residuo) dell'utente correntemente collegato che sta eseguendo la richiesta;
tale funzionalità; è disponibile se è attivo modulo di conteggio degli accessi del server WEB e se l'utente è registato nel database degli utenti Highway.

Valore restituito valore numerico
Torna un valore numerico intero in caso di esito positivo.
Torna -1 in caso di errore generico.

Vedere anche %USERNAME%


STRING %VERSION%
Scopo versione corrente di Highway Application Server.

Sintassi
%STRING% %VERSION%    

Descrizione Richiede il numero della versione corrente espresso come indicato

       versione corrente: 100000000 * versmajor +
                            1000000 * versminor +
                               1000 * release   +
                                      build

Valore restituito valore alfanumerico
Torna una stringa valorizzata come indicato.
Torna una stringa vuota in caso di errore generico.


STRING %VITEM%
Scopo Variabile alfanumerica ambientale che contiene il termine del vocabolario corrispondente ad una determinata riga

Sintassi
%STRING% %VITEM% (%NUMBER% riga)

Descrizione usato per visualizzare un determinato termine del vocabolario (verticale o gerarchico) corrispondente al valore indicato in riga.
Viene reso disponibile dopo una chiamata alla %4CALL%("ThVerticale") o alla %5CALL%("ThGerarchico").
riga indica l'elemento della lista dei valori estratti da una delle suddette chiamate.

Valore restituito valore alfanumerico
Torna una stringa valorizzata con l'elemento indicato.
Torna una stringa vuota in caso di errore generico.

Vedere anche %MAXVITEMS%, %4CALL%, %5CALL%, %PARENT%, %REL%, %CHILD%, %VITEMS%, %FREQ%


NUMBER %VITEMS%
Scopo Variabile numerica ambientale che contiene il numero di voci attualmente visualizzabili nella pagina corrente del vocabolario.

Sintassi
%NUMBER% %VITEMS%    

Descrizione impostato in uscita da una chiamata alla %4CALL%("ThVerticale",..)/%5CALL%("ThGerarchico",...).
In base al numero di elementi trovati, può avere un valore minore o ugale al numero di elementi richiesti (il quinto parametro nelle due suddette funzioni), e specifica il massimo valore che può essere usato come indice in %VITEM%.

Valore restituito valore numerico
Torna il numero degli elementi individuati in caso di esito positivo.
Torna -1 in caso di errore generico.

Vedere anche %MAXVITEMS%, %4CALL%, %5CALL%, %PARENT%, %REL%, %CHILD%, %VITEM%


STRING %WEBHOME%
Scopo Individuare un direttorio locale al server web, riconosciuto dallo stesso per determinate richieste dal client.

Sintassi
%STRING% %WEBHOME%    

Descrizione sostituito con la stringa dichiarata alla voce 'webhome' nella sezione specifica di <nomearchivio>.ini o [Generico] del hicgi.ini.
Rappresenta un percorso locale al server web al quale fare riferimento durante le elaborazioni.
Tipicamente utilizzato per la costruzioni di pagine che si aggiornano continuamente (p.e. pagine che rappresentano lo stato di avenzamento di operazioni come potrebbero essere una importazione, un indicizzazione, ecc..).
Scrivendo una pagina in %WEBHOME% con un metatag del tipo <META HTTP-EQUIV="refresh" CONTENT=10> e riscrivendola di continuo durante una elaborazione lunga, possiamo sfruttare il meccanismo di refresh del browser per ricaricare una pagina che si modifica in continuazione, mostrando, per esempio, lo stato di avanzamento di una operazione.

Valore restituito valore alfanumerico
Torna il calore assegnato all'alias "webhome.

Vedere anche %%

Esempio
%STRING%(head, "")
%STRING%(body, "")
%STRING%(nomefile, "")
%NUMBER%(idfile, 0)
%STRCAT%(head, "<html><head><title>TITOLO</title>")
%STRCAT%(head, "<META HTTP-EQUIV=\"refresh\" CONTENT=10></head>")
%REPEAT%(1, %TOTDOC%)
 <!-- includere script di importazione -->
 %STRCPY%(body, "<body>")
 %STRCAT%(body, "Importati ")
 %STRCAT%(body, %itoa%(%index%))
 %STRCAT%(body, "documenti.")
 %STRCPY%(body, "</body>")
 %STRCPY%(body, "</html>")
 %STRCPY%(nomefile, %WEBHOME%)
 %IF%(strcmp(%MID%(nomefile,strlen(nomefile)-1,1),"\\"))
  %STRCAT%(nomefile,"\\")
 %ENDIF%
 %STRCAT%(nomefile,"statoimp.html")
 %NUMCPY%(idfile, %CREATEFILE%(nomefile))
 %IF%(idfile)
  %WRITEFILE%(nomefile, strlen(nomefile), head)
  %WRITEFILE%(nomefile, strlen(nomefile), body)
 %ENDIF%
%ENDREPEAT%
...


STRING %WEBUSER%
Scopo nome con il quale l'utente si è validato presso il WEB Server.

Sintassi
%STRING% %WEBUSER%    

Descrizione Rappresenta il nome dell'utente correntemente collegato che ha eseguito la corrente richiesta ad Highway Application Server; inteso come il nome utilizzato in fase di autenticazione (di login);
disponibile anche se Log User = 0.

Valore restituito valore alfanumerico
Torna una stringa che contiene il nome dell'utente che ha eseguito il login presso il server amministratore di dominio (tipicamente il login di accesso alla rete locale o al server web per l'utilizzo dei servizi da questo resi disponibili o al proxy se presente).
Torna una stringa vuota in caso di errore generico.

Vedere anche %USERNAME%


STRING[*] %WORKBUF% (Obsoleta)
Scopo variabile alfanumerica di lavoro.
Intenzionalmente creata per memorizzare dati quando Highway Application Server non consentiva di creare variabili utente.

Sintassi
%STRING%[*] %WORKBUF%    

Descrizione Rappresenta un'area di memoria predefinita nella quale l'utente può immagazzinare i propri dati.
Divenuta obsolta da quando è stata implementata la possibilità di dichiarare variabili da parte dell'utente programmatore.

Valore restituito valore alfanumerico.

Vedere anche %WORKNUM%


NUMBER[*] %WORKNUM% (Obsoleta)
Scopo variabile numerica di lavoro.
Intenzionalmente creata per memorizzare dati quando Highway Application Server non consentiva di creare variabili utente.

Sintassi
%NUMBER%[*] %WORKNUM%    

Descrizione Rappresenta un'area di memoria predefinita nella quale l'utente può immagazzinare i propri dati.
Divenuta obsolta da quando è stata implementata la possibilità di dichiarare variabili da parte dell'utente programmatore

Valore restituito valore numerico.

Vedere anche %WORKBUF%


VOID %WRITE%
Scopo scrive sul file di output il contenuto indicato nel parametro.

Sintassi
VOID %WRITE% (%STRING% buffer)

Descrizione consente di scrivere sul file di output, in compilazione per il processo corrente da parte di Highway Application Server, il contenuto del parametro inviato.
Tipicamente viene utilizzata per scrivere il contenuto delle variabili definite dall'utente nelle pagine che Highway Application Server scrive per inviarle al Client.
Infatti una variabile definita dll'utente il cui nome non sia racchiuso fra doppi segni di percento (%) non viene riconosciuta se non quando viene utilizzata come parametro delle funzioni proprie di Highway Application Server.
Se il contenuto di una determinata variabile, il cui nome non è racchiuso fra simboli di percento (%), deve essere stampata sulla pagina di output, deve essere utilizzata la funzione %WRITE%.
Infatti questa funzione scrive sul file di output anche in condizioni di %ECHOOFF%, risultando particolarmente comoda quando si desidera scrivere in una sezione racchiusa da %ECHOOFF% e %ECHOON%.

Valore restituito nessuno

Vedere anche %OUTPUTTO%, %LOGWRITE%, %WRITELINE%, %WRITEPROFILE%


NUMBER %WRITELINE%
Scopo Scrive una nuova riga in accodamento sul file indicato.

Sintassi
%NUMBER% %WRITELINE% (%STRING% buffer,
    %NUMBER% fileid)

Descrizione Consente di scrivere su file una riga, automaticamente terminata con un '\r\n', in coda al contenuto esistente.
Naturalmente, prima di eseguire una operazione di scrittura è necessario aprire un file esistente, o crearne uno nuovo.
buffer non deve essere terminato con un CRLF, perchè questa operazione viene eseguita da Highway Application Server, salvo che non sia nelle intenzioni del programmatore di raddoppiare i caratteri di fine riga con l'effetto di raddoppiare l'interlinea.

Valore restituito valore numerico
Torna il numero dei bytes scritti in caso di scrittura avvenuta correttamente;
Torna -1 in caso di errore generico.

Vedere anche %WRITEFILE%, %READFILE%, %PROFILE%, %NEXTLINE%


NUMBER %WRITEFILE%
Scopo Scrive sul file locale specificato.

Sintassi
%NUMBER% %WRITEFILE% (%STRING% buffer,
    %NUMBER% size,
    %NUMBER% fileid)

Descrizione Consente di scrivere su un determinato file.
Previa apertura o creazione del file sul quale si intende intervenire, valorizzare buffer per indicare i valori da scrivere su file; spcificare size per indicare la dimensione, in bytes, da scrivere e indicare in fileid il file su cui scrivere mediante l'handle ottenuto con il comando di apertura o creazione file.

Valore restituito valore numerico
Torna un valore numerico intero che indica il numero di bytes scritti in caso di esito positivo.
Torna -1 in caso di errore generico.

Vedere anche %WRITE%, %READFILE%, %PROFILE%

Esempio
<!-- Esempio di esportazione su file del documento corrente -->
%IF%(%BLOADDOC%(%CURDOC%))
 %NUMBER%(fileid, %CREATEFILE%("C:\TEMP\EXPORTREC.TXT"))
 %NUMBER%(idtab,%NUMTABELLA%("TABELLA1"))
 %IF%(fileid)
  %STRING%(buffer, "")
  %REPEAT%(1, %TOTATTR%(idtab))
   %STRCAT%(buffer, %ATTRNAME%(%INDEX%, idtab))
   %STRCAT%(buffer, ": ")
   %STRCAT%(buffer, %ATTRIB%(%ATTRNAME%(%INDEX%, idtab))
   %STRCAT%(buffer, "\r\n")
  %ENDREPEAT%
  %WRITEFILE%(buffer, %STRLEN%(buffer), fileid)
  %IF%(%CLOSEFILE%(fileid)==0)
   %WRITE%("Errore in fase di scrittura.")
  %ENDIF%
 %ENDIF%
%ENDIF%


NUMBER %WRITEPROFILE%
Scopo Scrive sul file di impostazioni di configurazione dell'archivio corrente.

Sintassi
%NUMBER% %WRITEPROFILE% (%STRING% val,
    %STRING% key
    %STRING% sect)

Descrizione Consente di modificare o inserire chiavi e valori sul file di impostazione di configurazioni dell'archivio correntemente aperto.
val inidica il valore che assume la chiave indicata in key.
key indica la chiave sulla quale intervenire (la parte prima del segno di uguaglianza).
In sect viene dichiarata, senza l'uso delle tipiche parentesi quadre ('[',']'), il nome della sezione della quale faranno parte key e val.
Sia key che sect se non sono presenti vengono creati; diversamente l'operazione sarà eseguita in sovrascrittura della chiave o sezione preesistente.

Valore restituito valore numerico
Torna 1 in caso di scrittura eseguita.
Torna 0 in caso di errore generico.

Vedere anche %PROFILE%, %GETPROFILE%

Condizioni

Quando viene processata un form HTML, così come avviene in molti linguaggi di programmazione, le istruzioni contenute sono esaminate una per una, dalla prima all'ultima. Questo modo di operare è detto "sequenza top-down" e non è possibile interromperla per saltare ad altre istruzioni contenute all'interno della stessa form. La sequenza top-down può essere variata con le condizioni e i cicli. Al primo gruppo appartengono le strutture %IF%...%ENDIF% e %ONATTR%...%ENDATTR%.

L'altro gruppo sarà esaminato nelle pagine successive.

La figura sotto riportata illustra lo schema a blocchi della struttura %IF%...%ENDIF% (il ramo "altrimenti" è rappresentato dall'opzione %ELSE%, mentre il ramo "altrimenti se" è rappresentato da %ELIF%) e della struttura %ONATTR%...%ENDATTR% (il ramo "altrimenti è rappresentato dall'opzione %ATELSE%).

STATEMENT %IF% (condizione1)
processato se la condizione1 è vera (risultato diverso da zero)
[%ELIF% (condizione2)
processato se la condizione2 è vera (risultato diverso da zero)] ...
[%ELIF% (condizioneN)
processato se la condizioneN è vera (risultato diverso da zero)]
[%ELSE%
processato se nessuna condizione è verificata (risultato uguale a zero)]
%ENDIF%

STATEMENT %ONATTR% (nomeattributo, "VALOREattributo")

processato se il contenuto di nomeattributo è VALOREattributo

[%ATELSE%

processato se il contenuto di nomeattributo non è VALOREattributo]

%ENDATTR%

DIRECTIVE %IFSYM%(%STRING% nomesimbolo)  processato se è stata dichiarata una variabile o una funzione con il nome specificato

%ENDSYM%

%IFNSYM%(%STRING% nomesimbolo)  processato se NON è stata dichiarata una variabile o una funzione con il nome specificato

%ENDNSYM%

Cicli

Per variare la sequenza top-down, l'esecuzione di un blocco di istruzioni può essere ripetuta quante volte si desidera con la struttura ciclica %REPEAT%...%ENDREPEAT%.

La figura sotto riportata illustra lo schema a blocchi per %REPEAT%...%ENDREPEAT%.

STATEMENT %REPEAT% (valore_iniziale,valore_finale)

blocco di istruzioni

%ENDREPEAT%

STATEMENT %LOOP%

uscita solo con %BREAK%

%ENDLOOP%

Le espressioni numeriche

Le espressioni numeriche possono fare uso di operatori e di funzioni.

Operatori
"||"OR logico
"&&"AND logico
"|"OR a bit
"&"AND a bit
"!="disuguaglianza
"=="uguaglianza
">="maggiore o uguale
">"maggiore
"<="minore o uguale
"<"minore
"+"addizione
"-"sottrazione
"*"moltiplicazione
"/"divisione
"^"elevamento a potenza

Funzioni
 
Funzione Descrizione Risultato Esempio
abs(num) Processa l'espressione numerica num e calcola il valore assoluto della stessa. Il valore assoluto di una espressione numerica. abs(10,2) torna 10 

abs(-32,4) torna -32

cond(num1,num2,num3) Verifica che l'espressione numerica num1 sia diversa da "0". Se num1 è diverso da "0" il risultato sarà l'espressione numerica num2, altrimenti num3. cond(10,100,200) torna 100 

cond(-30,100,200) torna 100 

cond(0,100,200) torna 200

equ(num1,num2) Confronta le espressioni numeriche num1 e num2 e verifica che num1 sia esattamente uguale a num2. Se num1 e num2 sono esattamente uguali il risultato sarà "1" ; in caso contrario "0". equ(100,100) torna 1 

equ(20,100) torna 0 

equ(100,20) torna 0

gt(num1,num2) Confronta le espressioni numeriche num1 e num2 e verifica che num1 sia maggiore a num2. Se num1 è maggiore di num2 il risultato sarà "1" ; in caso contrario "0". gt(10,100) torna 0 

gt(10,10) torna 0 

gt(100,10) torna 1

gte(num1,num2) Confronta le espressioni numeriche num1 e num2 e verifica che num1 sia maggiore uguale a num2. Se num1 è maggiore o uguale a num2 il risultato sarà "1" ; in caso contrario "0". gte(10,100) torna 0 

gte(10,10) torna 1 

gte(100,10) torna 1

lt(num1,num2) Confronta le espressioni numeriche num1 e num2 e verifica che num1 sia minore a num2. Se num1 è minore di num2 il risultato sarà "1" ; in caso contrario "0". lt(10,100) torna 1 

lt(10,10) torna 0 

lt(100,10) torna 0

lte(num1,num2) Confronta le espressioni numeriche num1 e num2 e verifica che num1 sia minore uguale a num2. Se num1 è minore o uguale a num2 il risultato sarà "1" ; in caso contrario "0". lte(10,100) torna 1 

lte(10,10) torna 1 

lte(100,10) torna 0

max(num1,num2) Confronta le espressioni numeriche num1 e num2 e stabilisce quale delle due espressioni è più grande. Il risultato sarà num1 o num2 a seconda di quale delle due espressioni risulti essere più grande. max(10,100) torna 100 

max(100,10) torna 100

min(num1,num2) Confronta le espressioni numeriche num1 e num2 e stabilisce quale delle due espressioni è più piccola. Il risultato sarà num1 o num2 a seconda di quale delle due espressioni risulti essere più piccola. min(10,100) torna 10 

min(10,100) torna 10

sqrt(num1) radice quadrata.    

exp(num1) esponenziale.    

log(num1) logaritmo decimale.    

ln(num1) logaritmo naturale.    

sin(num1) seno.    

cos(num1) coseno.    

tan(num1) tangente.    

asin(num1) arcoseno.    

acos(num1) arcocoseno.    

atan(num1) arcotangente.    

sinh(num1) seno iperbolico.    

cosh(num1) coseno iperbolico.    

tanh(num1) tangente iperbolico.    



Costanti numeriche predefinite

Nome Valore Descrizione
e 2.71828182845905 numero di Nepero
pi 3.14159265358979 pi greco, rapporto fra circonferenza e diametro
d2r 0.0174532925199433 un grado in radianti
r2d 57.2957795130823 un radiante in gradi


Esempio di 'form' di QBE con opzioni per la ricerca

Nell'esempio che segue ATTR e un generico attributo di tipo 'Data'

<FORM METHOD="POST" ACTION="/cgi-win/hiweb.exe/a8/t">

<INPUT SIZE=60 NAME="*DATA(ATTR)"> Data == (g/m/a)<br>

<INPUT SIZE=60 NAME="&gt;*DATA(ATTR)"> Data &gt;= (g/m/a)<br>

<INPUT SIZE=60 NAME="&lt;*DATA(ATTR)"> Data &lt;= (g/m/a)<br>

<br>

<INPUT SIZE=60 NAME="@"> Ricerca Libera <br>

<br>

<INPUT NAME=*TIPORICERCA TYPE=radio value=2>

maschile/femminile/singolare/plurale <br>

<INPUT NAME=*TIPORICERCA TYPE=radio value=4> thesaurus <br>

<INPUT NAME=*TIPORICERCA TYPE=radio value=8> somiglianza <br>

<INPUT NAME=*TIPORICERCA TYPE=checkbox value=1> probabilistica <br>

Ordinamento

<SELECT NAME="*ORDINAMENTO">

<OPTION value="">nessuno

<OPTION value="ATTR">per Data crescente

<OPTION value="attr">per Data decrescente

</SELECT><br>

<INPUT TYPE="reset" VALUE="Clear Form">

<INPUT TYPE="submit" VALUE="Submit Query">

</FORM>

N.B. Usare &#34; per la codifica dei doppi apici " se è necessario delimitare il valore di un attributo con doppi apici in un campo di input predefinito, come nella SELECT seguente:

<SELECT NAME="TABELLA">

<OPTION VALUE="NORMATIVA">normativa

<OPTION VALUE="&#34;PRASSI AMMINISTRAT.&#34;">

prassi amministrativa

<OPTION VALUE="GIURISPRUDENZA">giurisprudenza

<OPTION VALUE="BIBLIOGRAFIA">bibliografia

<OPTION VALUE="DOTTRINA">dottrina

<OPTION VALUE="PRONTUARIO">prontuario

<OPTION VALUE="VIOLAZIONI">violazioni

<OPTION VALUE="STORICO">storico

<OPTION VALUE="MCTC">m.c.t.c.

</SELECT>

 

Esempio di 'form' di inserimento

L'input necessario potrebbe essere fornito da una 'form' analoga a quella vista per l'interrogazione con una ACTION che referenzi il file contenente queste istruzioni ad esempio:

ACTION = "%SCRIPT%/a%CURARC%/fsavedoc?TIPOREC=TABELLA"

La voce 'savedoc' va dichiarata nella sezione specifica di archivio di HICGI.INI:

savedoc = c:\archivio\cgiforms\salvadoc.htm

Nell'esempio vengono referenziate altre 'form' che vanno dichiarate in modo analogo:

errore assegnazione attributo = c:\archivio\cgiforms\errfill.htm

errore creazione doc = c:\archivio\cgiforms\errnew.htm

errore salvataggio doc = c:\archivio\cgiforms\errsave.htm

inserimento ok = c:\archivio\cgiforms\ins_ok.htm

oppure possono essere gestite all'interno della stessa 'form'.

L'informazione relativa alla tabella è necessaria per la creazione di un nuovo documento.

Il primo ciclo cerca il nome della tabella che va usato come parametro nella creazione del nuovo documento.

Il ciclo più interno assegna ad ogni attributo il valore corrispondente verificando la presenza di errori. La variabile %WORKNUM% viene usata per segnalare una situazione di errore.

%NUMCPY%(%WORKNUM%,0)

%REPEAT% (1,%NUMTUPLES%)

%IF% (stricmp(%TUPLEKEY%(%INDEX%),"TIPOREC"))

%ELSE%

%NUMCPY%(%WORKNUM%,1)

%IF% (%NEWDOC%(%TUPLEVAL%(%INDEX%)))

%REPEAT%(1,%NUMTUPLES%)

%IF% (%FILLATTR%(%TUPLEKEY%(%INDEX%),
%TUPLEVAL%(%INDEX%)))

%ELSE%

%NUMCPY%(%WORKNUM%,0)

%NUMCPY%(%INDEX%,%NUMTUPLES%)

%INCLUDE%("errore assegnazione attributo")

%ENDIF%

%ENDREPEAT%

%ELSE%

%NUMCPY%(%WORKNUM%,0)

%INCLUDE%("errore creazione doc")

%ENDIF%

%NUMCPY%(%INDEX%,%NUMTUPLES%)

%ENDIF%

%ENDREPEAT%

%IF% (%WORKNUM%)

%IF% (gt(%SAVEDOC%,0))

%INCLUDE%("ins_ok")

%ELSE%

%INCLUDE%("errore salvataggio doc")

%ENDIF%

%ENDIF%

 

Esempio di evidenziazione chiavi di ricerca

%STRCPY%(%WORKBUF%(1),%ATTRIB%("testo"))

%IF%(%GETKEYS%("testo"),%WORKBUF%(1))

<A NAME=TESTO0></A>

%MID%(%WORKBUF%,0,%QKPOS%(1))

%REPEAT%(1,%QKNUM%)

%SKIPP% evidenziazione con ancore alle occorrenze
precedente/successiva

%ENDSKIPP%

<A NAME=TESTO%INDEX% HREF=#TESTO%EVAL%(%INDEX%-1)>&lt;</A>

%MID%(%WORKBUF%,%QKPOS%(%INDEX%),%QKLEN%(%INDEX%))

<A HREF=#TESTO%EVAL%(%INDEX%+1)>&gt;</A>

%SKIPP% alternativamente evidenziazione con colore

<font color=#ffff00>

%MID%(%WORKBUF%,%QKPOS%(%INDEX%),%QKLEN%(%INDEX%))

</font>

%ENDSKIPP%

%MID%(%WORKBUF%,%QKPOS%(%INDEX%)+%QKLEN%(%INDEX%),
%QKPOS%(%INDEX%+1)-(%QKPOS%(%INDEX%)+%QKLEN%(%INDEX%)))

%ENDREPEAT%

<A NAME=TESTO%EVAL%(%QKNUM%+1)></A>

%ELSE%

%WORKBUF%(1)

%ENDIF%

Controllo degli accessi

Il controllo degli accessi richiede:
· il modulo HICOUNT.DLL;

· un archivio dedicato dichiarato nella sezione [HICOUNT] di HIGHWAY.INI alla voce 'UserArcname';

· la impostazione a 1 o 2 della voce 'Log User' nella sezione specifica di archivio di HICGI.INI. L'impostazione a 2 della voce 'Log User' inibisce l'accesso agli utenti che non si dichiarano al server WEB.
Il controllo viene effettuato solo per gli utenti che si dichiarano al server WEB e gestisce le funzioni di:
· richiesta titoli;

· richiesta documento;

· richiesta immagini associate alla base dati.