Included with the DB2 extenders is a Net.Data macro file named extender.d2w. When run by a Web server, the macro file executes SQL statements that call DB2 extender UDFs. The macro file returns results that are displayed by a Web browser. As Figure 24 shows, each result page also displays the SQL statement that is run to produce the result. Figure 25 shows the contents of the sample Net.Data macro file.
To run the sample Net.Data macro file, enter the following URL from a Web browser: http://your server/cgi-bin/db2www/extender.d2w/startHere
where your server is the name of your Web server.
Figure 24. Web application that runs the Sample Net.Data macro file
![]() |
Figure 25. Net.Data sample macro file
%{ ------------------------------------------------------------------------ %} %{ Copyright International Business Machines Corporation, 1998. %} %{ All rights reserved. %} %{ %} %{ Sample Net.Data macro which shows how to call image, audio, and video %} %{ extender UDFs. %} %{ %} %{ To run, put this macro in your MACRO_PATH root, make sure the tmplobs %} %{ directory exists under your web server's document root, and create %} %{ the database to be used when running the extender sample programs %} %{ 'enable' and 'populate'. Run 'enable' and 'populate'. If you name your %} %{ database something other than 'testdb2', you'll need to change the %} %{ definition of DATABASE below. The extender environment variable %} %{ DB2MMEXPORT needs to be set for the instance used by Net.Data to point %} %{ to the webserver's <document root>/tmplobs directory. Then restart DB2 %} %{ and the extenders to have the variable take effect. %} %{ If you are not running Net.Data's Connection Manager, you'll need to %} %{ provide the LOGIN and PASSWORD to the database. If these instructions %} %{ seem unfamiliar to you, you should read the Net.Data documentation at %} %{ http://www.software.ibm.com/data/netdata/docs (or the extender documen- %} %{ tation on the extender sample programs). %} %{ %} %{ To disable the showing of SQL statements, change the value of SHOWSQL %} %{ below to "no". %} %{ ------------------------------------------------------------------------ %} %{ ------------------------------------------------------------------------ %} %{ Definitions section %} %{ ------------------------------------------------------------------------ %} %define{ DATABASE="testdb2" SHOWSQL="yes" %} %{ ------------------------------------------------------------------------ %} %{ SQL functions %} %{ ------------------------------------------------------------------------ %} %function (DTW_SQL) startHereSQL(){ select artist, title, stock_no, price from sobay_catalog %REPORT{ <table border="2" bgcolor="#b1b1b1"> <tr><th>Artist <th> Title <th> Stock<th> Number <th> Price </tr> %ROW{ <tr><td> $(V_artist) <td> $(V_title) <td> $(V_stock_no) <td> $(V_price) <tr> %} </table> %} %} %function (DTW_SQL) addThumbsSQL(){ select cast(mmdbsys.thumbnail(covers) as blob(10000)), cast(mmdbsys.thumbnail(video) as blob(3000)), mmdbsys.comment(music), artist, title, price, stock_no from sobay_catalog %REPORT{ <table border="2" bgcolor="#b1b1b1"> <tr><th>Cover <th>Video <th>Audio <th>Artist <th>Title <th>Price </tr> %ROW{ <tr><td>< a href="showCover?stock_no=$(V_stock_no)"><img src="$V1)"></a> <td>< a href="getVideo?stock_no=$(V_stock_no)"><img src="$V2)"></a> <td>< a href="getAudio?stock_no=$(V_stock_no)&filename=$V3")>[Listen]</a> <td> $(V_artist) <td> $(V_title) <td> $(V_price) </tr> %} </table> %} %} %function (DTW_SQL) showCoverSQL(){ select cast(mmdbsys.content(covers, 'GIF') as blob(150000)), mmdbsys.format(covers) from sobay_catalog where stock_no = '$(stock_no)' %REPORT{ %ROW{ <img src="$(V1) "> <br><br><b>Original image format: $(V2)</b>%} %} %} %{ The following Content call depends on DB2MMEXPORT being set properly to point to the tmplobs directory under the web server's document root. %} %function (DTW_SQL) showVideoSQL(){ select mmdbsys.comment(video), mmdbsys.content(video, mmdbsys.comment(video), 1), mmdbsys.format(video) from sobay_catalog where stock_no = '$(stock_no)' %REPORT{ %ROW{ <a href="/tmplobs/$(V1)"><i><b> Play Video Clip></b></i></a> <br><br><b>Format: $(V3) <br>(Note: NT/Win95 may not come with a decompressor<br>for this video format. OS/2 Warp does.)</br> %} %} %} %{ The following Content call depends on DB2MMEXPORT being set properly to point to the tmplobs directory under the web server's document root. %} %function (DTW_SQL) showAudioSQL(){ select mmdbsys.comment(music), mmdbsys.content(music, mmdbsys.comment(music), 1), mmdbsys.format(music) from sobay_catalog where stock_no = '$(stock_no)' %REPORT{ %ROW{ < a href="/tmplobs/$(V1) "<i><b>Play Audio Clip</b></i></a> <br><br><b>Format: $(V3)</b> %} %} %} %{ ------------------------------------------------------------------------ %} %{ HTML sections %} %{ E.g., http://<your server>/cgi-bin/db2www/extender.d2w/startHere %} %{ -------------------------------------------------------------------------%} %{ E.g., http:// %{ E.g., http:// %HTML(startHere){ <html> <head><title>UDB Extenders Macro Sample: Simple Row Listing</title></head> <body bgcolor="#ffffff"> <font color="#3300ff" size="3"><b>If no data appears below, you might need to run the UDB Extender sample programs <i>enable</i> and <i>populate</i>. This first HTML section of the extender.d2w macro simply retrieves all the traditional data for all the rows in the UDB Extenders' sample database. %if ( "$(SHOWSQL)" == "yes" || "$(SHOWSQL)" == "YES" ) <br><br> By default, every page generated by this macro shows the SQL used to generate that page. Here is the SQL statement for this page: %else <br> %endif </b></font> <br>@startHereSQL() <br><b>Click < a href="addThumbs"><i>here</i></a> to display thumbnails and links to image/audio/video data.</b> </body> </html> %} %HTML(addThumbs){ <html> <head><title>UDB Extenders Macro Sample: Add Thumbnails</title></head> <body bgcolor="#ffffff"> <font color="#3300ff" size="3"><b>This page adds album cover thumbnails and links to display the multimedia content of the database. To access the multimedia content: <ul> <li> Click on a thumbnail of a CD cover to view a full-size image <li> Click on a "video thumbnail" to view a video <li> Click on a "[Listen]" link to listen to an audio clip </ul> </b></font> @addThumbsSQL() <br><b>Click < a href="startHere"><i>here</i></a> to go back to the first page.</b> </body> </html> %} %HTML(showCover){ <html> <head><title>UDB Extenders Macro Sample: Cover for item $(stock_no)</title></head> <body bgcolor="#ffffff"> <font color="#3300ff" size="3"><b>For this page, the macro gets a full-size cover image, converting the image format to GIF so that a browser can show it: </b></font><br><br> <table width="400" border="2" bgcolor="#b1b1b1" cellpadding="5"> <tr><td align=center> @showCoverSQL() <tr><td align=center> <b>Stock Number: $(stock_no)</b> </table> <br><b>Go <a href="addThumbs"><i>back</i></a>.</b> </body> </html> %} %HTML(getVideo){ <html> <head><title>UDB Extenders Macro Sample: Video clip for item $(stock_no)</title></head> <body bgcolor="#ffffff"> <font color="#3300ff" size="3"><b>From this page, you can view a video clip: </b></font><br><br> <table width="400" border="2" bgcolor="#b1b1b1" cellpadding="5"> <tr><td align=center> @showVideoSQL() <tr><td align=center> <b>Stock Number: $(stock_no)</b> </table> <br><b>Go <a href="addThumbs"><i>back</i></a>.</b> </body> </html> %} %HTML(getAudio){ <html> <head><title>UDB Extenders Macro Sample: Audio clip for item $(stock_no)</title></head> <body bgcolor="#ffffff"> <font color="#3300ff" size="3"><b>From this page, you can listen to an audio clip: </b></font><br><br> <table width="400" border="2" bgcolor="#b1b1b1" cellpadding="5"> <tr><td align=center> @showAudioSQL() <tr><td align=center> <b>Stock Number: $(stock_no)</b> </table> <br><b>Go <a href="addThumbs"><i>back</i></a>.</b> <body> </html> %} |