IBM Buch

Verwaltung und Programmierung für OS/400

Angeben der Makro-HTML-Blöcke in einer Transaktion

Sie definieren die HTML-Blöcke, die Bestandteil Ihrer Transaktion sind, indem Sie eine Kennung, die Transaktionskennung, in der URL-Anforderung verwenden, mit der die HTML-Blöcke aufgerufen werden. Die Definition und Verwendung einer Transaktionskennung umfaßt drei Schritte:

  1. Definieren Sie die Transaktionskennung in Ihrem Makro.

  2. Rufen Sie die integrierte Funktion DTW_ACCEPT auf, um den Kennungsnamen an Net.Data und den Web-Server zu übergeben.

  3. Geben Sie die Kennung in der URL-Anforderung an, um den nächsten HTML-Block aufzurufen.

Gehen Sie wie folgt vor, um eine Transaktionskennung zu definieren:

  1. Definieren Sie im DEFINE-Abschnitt eine Variable für die Transaktionskennung. Beispiel:
    %DEFINE handle=""
    

  2. Generieren Sie wahlfrei eine eindeutige Transaktionskennung, indem Sie die integrierte Funktion DTW_RTVHANDLE() im DEFINE-Abschnitt angeben.

    Syntax: @DTW_RTVHANDLE(handle_name)

    Beispiel:

    @DTW_STATIC()
     
    %DEFINE handle = ""
    @DTW_RTVHANDLE(handle)
     
    

Die Transaktionskennung kann eine beliebige gültige Zeichenfolge sein. Die Funktion DTW_RTVHANDLE() generiert jedoch aus Sicherheitsgründen eine eindeutige Transaktionskennung, wodurch andere daran gehindert werden, ein Makro aufzurufen, das in Ihrer Transaktion ausgeführt wird.

Gehen Sie wie folgt vor, um eine Transaktionskennung für Net.Data anzugeben:

Geben Sie den Wert der Transaktionskennung für Net.Data mit der integrierten Funktion DTW_ACCEPT() an. Weil diese Kennung Bestandteil der HTTP-Kopfdaten ist, die an den Server gesendet werden, muß die Funktion DTW_ACCEPT() aufgerufen werden, bevor Ausgaben vom Makro generiert werden. Meistens stellt sie das erste Element in Ihrem HTML-Block dar.

Syntax: @DTW_ACCEPT(handle_name, ["timeout"])

Hierbei ist timeout ein wahlfreier Parameter, der die Anzahl der Sekunden angibt, die der Web-Server auf eine Antwort vom Browser warten soll, bevor die Transaktion beendet wird.

Sie können DTW_ACCEPT() innerhalb oder außerhalb eines HTML-Blocks aufrufen. Wenn die Funktion außerhalb eines HTML-Blocks aufgerufen wird, gelten die Transaktionskennung und das wahlfreie Zeitlimit für alle HTML-Blöcke im Makro.

Beispiel 1: Gibt eine Transaktionskennung an, damit nachfolgende URL-Anforderungen in dieser Transaktion ausgeführt werden

@DTW_STATIC()
 
%DEFINE handle = ""
@DTW_RTVHANDLE(handle)
 
 
%HTML(Block1){
@DTW_ACCEPT(handle)
 ...
%}

Wichtig: Wenn Sie DTW_ACCEPT() als erstes Element im HTML-Block aufrufen, müssen Sie sicherstellen, daß es keinen Leerraum zwischen der Zeile, in der die Anweisung %HTML angegeben ist, und dem Aufruf von DTW_ACCEPT() selbst gibt. Net.Data hält den Leerraum für Text, der an den Browser gesendet wird, und löst einen Fehler aus, weil der Aufruf von DTW_ACCEPT() erst gefunden wird, wenn Daten an den Browser gesendet wurden.

Beispiel 2: Gibt eine Transaktionskennung an, die für alle HTML-Blöcke im Makro gilt

@DTW_STATIC()
 
%DEFINE handle = ""
@DTW_RTVHANDLE(handle)
 
@DTW_ACCEPT(handle)
 
%HTML(Block1){
 ...
%}
 
%HTML(Block2){
 ...
%}

Gehen Sie wie folgt vor, um die Kennung anzugeben, wenn ein HTML-Block aufgerufen wird, der in Ihrer Transaktion ausgeführt werden soll:

Nachdem Sie eine Transaktionskennung generiert und die Funktion DTW_ACCEPT() aufgerufen haben, können nur URL-Adressen mit der betreffenden Transaktionskennung in Ihrer Transaktion ausgeführt werden. Die Transaktionskennung muß in der URL-Adresse direkt nach dem CGI-Programmnamen stehen.
Anmerkung:Wenn Sie die Anweisungen in Ihrem Code eingeben, muß die URL-Adresse im Code in einer Zeile stehen und darf keine Leerzeichen enthalten. Sie wurde hier jedoch zur besseren Lesbarkeit auf zwei Zeilen umbrochen.

Parameter:

server
Gibt den Namen des Web-Servers an. Wenn es sich bei dem Server um den lokalen Server handelt, kann der Server-Name übergangen und eine relative URL-Adresse verwendet werden.

Net.Data_invocation_path
Gibt Pfad und Dateinamen der ausführbaren Net.Data-Datei an. Zum Beispiel /cgi-bin/db2www/.

transaction_handle
Gibt an, welche URL-Adressen Bestandteil einer Transaktion sind, die von einem Net.Data-Makro eingeleitet wird. Diese Kennung wird durch Aufruf der integrierten Funktion DTW_RTVHANDLE ermittelt und muß nach Net.Data_invocation_path stehen.

filename
Gibt den Namen der Net.Data-Makrodatei an. Net.Data sucht diesen Dateinamen und versucht, ihn mit den Pfadanweisungen abzugleichen, die in der Initialisierungspfadvariablen MACRO_PATH definiert sind. Weitere Informationen hierzu finden Sie in MACRO_PATH.

block
Gibt den Namen des HTML-Blocks im angegebenen Net.Data-Makro an.

method
Gibt die für das Formular verwendete HTML-Methode an. Hierfür wird METHOD=POST empfohlen.

?name=val&...
Gibt einen oder mehrere wahlfreie Parameter an, die an Net.Data weitergegeben werden.

Normalerweise stellen Sie HTML-Programmverbindungen (Link) mit diesen URL-Adressen bereit oder geben die URL-Adresse in einem FORM ACTION-Befehl in Ihrem Makro an.

Beispiel 1: Ein typischer HTML-Block mit Programmverbindungen (Links) zu anderen Makroaufrufen, die in der gleichen Transaktion ausgeführt werden

@DTW_STATIC()
 ...
%define handle = ""
@DTW_RTVHANDLE(handle)
 
%html (report) {
@DTW_ACCEPT(handle)
 ...
<a href="/cgi-bin/db2www/$(handle)/qsys.lib/mylib.lib/
   macros.file/pcgi1.mbr/report2">continue</a><br>
<a href="/cgi-bin/db2www/$(handle)/qsys.lib/mylib.lib/
   macros.file/pcgi1.mbr/quit">quit</a><br>
%}
 

Beispiel 2: Ein typischer HTML-Block mit einer FORM ACTION-Verbindung mit einem anderen Makro

@DTW_STATIC()
 ...
%define handle = ""
@DTW_RTVHANDLE(handle)
 
%html(input) {
@DTW_ACCEPT(handle)
 ...
<form method=post action="/cgi-bin/db2www/$(handle)/qsys.lib/
mylib.lib/macros.file/pcgi1.mbr/report2">
<p>What type of hardware do you want to see?
<menu>
<li><input type="radio" name="hdware" value="MON" checked>Monitors
<li><input type="radio" name="hdware" value="PNT">Pointing devices
<li><input type="radio" name="hdware" value="PRT">Printers
<li><input type="radio" name="hdware" value="SCN">Scanners
</menu>
</form>
%}
 


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]