I blocchi HTML definiscono la disposizione della pagina Web, le variabili di riferimento e le funzioni di chiamata. I blocchi HTML vengono utilizzati come entry e exit point dalla macro. Un blocco HTML è sempre specificato nella richiesta di richiamo di Net.Data ed ogni macro deve contenere almeno un blocco HTML.
Il primo blocco HTML nel file di macro di esempio è chiamato INPUT. Questo blocco contiene l'HTML per un modulo semplificato con un campo di immissione.
%{ ********************** Blocco HTML: immissione ************************%}
%HTML (INPUT) { <--- Identifica il nome di questo blocco HTML.
<html>
<head>
<title>$(page_title)</title> <--- Notare la sostituzione della variabile.
</head><body>
<h1>Input Form</h1>
Today is @today() <--- Questa riga contiene una chiamata ad una funzione.
<FORM METHOD="post" ACTION="output"> <--- Quando viene inoltrato questo modulo,
viene chiamato il blocco "output" HTML.
Immettere alcuni dati per trasferirsi a un programma REXX:
<INPUT NAME="input_data" <--- "input_data" viene definito quando il modulo
TYPE="text" SIZE="30"> viene inoltrato
e può essere riportato in un punto qualsiasi
in questa macro. Esso viene inizializzato
qualunque sia l'immissione
dell'utente nel campo di immissione.
<p>
<INPUT TYPE="submit" VALUE="Enter">
< hr>
<p>
[
<a href="/">Home page</a>]
</body><html>
%} <--- Chiude il blocco HTML.
L'intero blocco viene delimitato dall'identificativo del blocco HTML, %HTML (INPUT) {...%}. INPUT identifica il nome di questo blocco. Può trattarsi di un nome qualsiasi. La tag HTML <title> contiene un esempio di sostituzione di variabile. Il valore della variabile page_title viene sostituito nel titolo del modulo.
Questo blocco contiene anche una chiamata di funzione. L'espressione @today() è una chiamata alla funzione today. Questa funzione viene definita nel blocco FUNCTION precedentemente descritto. Net.Data inserisce il risultato della funzione today, la data corrente, nel testo HTML nella stessa ubicazione in cui è ubicata l'espressione @today().
Il parametro ACTION dell'istruzione FORM fornisce un esempio di navigazione tra i blocchi HTML o tra le macro. Facendo riferimento al nome di un altro blocco nel parametro ACTION si accede a quel blocco quando il modulo viene inoltrato. Tutti i dati di immissione da un modulo HTML vengono trasferiti al blocco come variabili implicite. Ciò è operativo nel caso di un singolo campo di immissione definito su questo modulo. Quando il modulo viene inoltrato, i dati immessi in questo campo vengono trasferiti al blocco di emissione HTML nella variabile input_data.
E' possibile accedere ai blocchi HTML in altri file di macro con un riferimento relativo se i file di macro si trovano sullo stesso server Web. Ad esempio, il parametro ACTION ACTION="../othermacro.d2w/main" accede al blocco HTML definito principale nel file di macro othermacro.d2w. Inoltre tutti i dati immessi nel modulo vengono trasferiti a questa macro nella variabile input_data.
Quando viene richiamato Net.Data, la variabile viene trasferita come parte dell'URL. Ad esempio:
<a href="/cgi-bin/db2www/othermacro.d2w/main?input_data=value">Next macro</a>
Non è necessario definire le variabili di ambiente per ricevere i dati di immissione, come è invece necessario con la maggior parte dei programmi CGI. Net.Data gestisce automaticamente le variabili di ambiente. E' necessario solo fare riferimento ai nomi delle variabili.
Il blocco HTML successivo nell'esempio è il blocco Output. Esso contiene le tag HTML e le istruzioni della macro di Net.Data che definiscono l'emissione elaborata dalla richiesta del blocco INPUT.
%{ ********************** Blocco HTML: emissione ************************%}
%HTML(OUTPUT) {
<html>
<head>
<title>$(page_title)</title> <--- Più sostituzione.
</head><body>
<h1>Output Page</h1>
<p>@rexx1(input_data) <--- Questa riga contiene una chiamata
alla funzione rexx1
che trasferisce l'argomento "input_data".
<p>
< hr>
<p>
[
<a href="/">Home page</a> |
<a href="input">Previous page</a>]
%}
Come nel caso del blocco INPUT, questo blocco è uno standard HTML con le istruzioni della macro di Net.Data per sostituire le variabili ed una chiamata di funzione. Anche in questo caso la variabile page_title viene sostituita nell'istruzione title. E come prima questo blocco contiene una chiamata di funzione. In questo caso viene chiamata la funzione rexx1 a cui viene trasferito il contenuto della variabile input_data, ricevuta dal modulo definito nel blocco Input. E' possibile trasferire tutte le variabili che si vuole da e su una funzione. La definizione della funzione stabilisce il numero e i tipi di variabili trasferite.