Report Blocks

Use the REPORT block language construct to format and display data output from a FUNCTION block. This output is typically table data, although any valid combination of text, macro variable references, and function calls can be specified. A table name can optionally be specified on the REPORT block. Except for SQL and ODBC language environments, if you do not specify a table name, Net.Data uses the table data from the first output table in the FUNCTION parameter list.

The REPORT block has three parts, each of which is optional:

Example:

%REPORT{
<h2>Query Results</h2>
<p>Select a name for details.
<table border=1>
  <tr>
    <td>Name</td>
    <td>Location</td></tr>
  %ROW{
  <tr>
    <td>
<a href="/cgi-bin/db2www/name.d2w/details?name=$(V1)&loc;=$(V2)">$(V1)</a>
    </td>
    <td>$(V2)</td>
  </tr>
  %}
</table>
%}

REPORT Block Guidelines

Use the following guidelines when creating REPORT blocks:

Example: Customizing a Report

The following example shows how you can customize report formats using special variables and HTML tags. It displays the names, phone numbers, and FAX numbers from the table CustomerTbl:

%DEFINE SET_TOTAL_ROWS="YES"
...
  %FUNCTION(DTW_SQL) custlist() {
    SELECT Name, Phone, Fax FROM CustomerTbl
    %REPORT{
<i>Phone Query Results:</i>
<br />
=====================
<br />
    %ROW{
Name: <b>$(V1)</b>
<br />
Phone: $(V2)
<br />
Fax: $(V3)
<br />
------------------------------
<br />
    %}
    Total records retrieved: $(TOTAL_ROWS)
  %}
%}

The resulting report looks like this in the Web browser:

Phone Query Results:
====================
Name: Doen, David
Phone: 422-245-1293
Fax: 422-245-7383
------------------------------
Name: Ramirez, Paolo
Phone: 955-768-3489
Fax: 955-768-3974
------------------------------
Name: Wu, Jianli
Phone: 525-472-1234
Fax: 525-472-1234
------------------------------
Total records retrieved: 3

Net.Data generated the report by:

  1. Printing Phone Query Results: once at the beginning of the report. This text, along with the separator line, is the header part of the REPORT block.
  2. Replacing the variables V1, V2, and V3 with their values for Name, Phone, and Fax respectively for each row as it is retrieved.
  3. Printing the string Total records retrieved: and the value for TOTAL_ROWS once at the end of the report. (This text is the footer part of the REPORT block.)

Multiple REPORT Blocks

You can specify multiple REPORT blocks within a single FUNCTION or MACRO FUNCTION block to generate multiple reports with one function call.

Typically, you would use multiple REPORT blocks with the DTW_SQL language environment with a function that calls a stored procedure, which returns multiple result sets (see Stored Procedures). However, multiple REPORT blocks can be used with any language environment to generate multiple reports.

To use multiple REPORT blocks, place a result set name on the stored procedure CALL for each result set. If more result sets are returned from the stored procedure than the number of REPORT blocks you have specified, and if the Net.Data built-in function DTW_DEFAULT_REPORT = "MULTIPLE", then default reports are generated for each table that is not associated with a report block. If no report blocks are specified, and if DTW_DEFAULT_REPORT = "YES", then only one default report will be generated. Note that for the SQL language environment only, a DTW_DEFAULT_REPORT value of "YES" is equivalent to a value of "MULTIPLE".

Examples

The following examples demonstrate ways in which you can use multiple report blocks.

To display multiple reports using default report formatting:

Example 1: DTW_SQL language environment

%DEFINE DTW_DEFAULT_REPORT = "MULTIPLE"
%FUNCTION (dtw_sql) myStoredProc () {
     CALL myproc (table1, table2)  %}

In this example, the stored procedure myproc returns two result sets, which are placed in table1 and table2. Because no REPORT blocks are specified, default reports are displayed for both tables, table1 first, then table2.

Example 2: MACRO_FUNCTION block. In this example, two tables are passed into the MACRO_FUNCTION block. When DTW_DEFAULT_REPORT="MULTIPLE" is specified, Net.Data generates reports for both tables.

%DEFINE DTW_DEFAULT_REPORT = "MULTIPLE"
%MACRO_FUNCTION multReport (INOUT tablename1, tablename2) { 
%}

In this example, two tables are passed into the MACRO_FUNCTION multReport. Again, Net.Data displays default reports for the two tables in the order in which they appear in the MACRO FUNCTION block parameter list, table1 first, then table2.

Example 3: DTW_REXX language environment

%DEFINE DTW_DEFAULT_REPORT = "YES"
%FUNCTION (dtw_rexx) multReport (INOUT table1, table2) {
     SAY 'Generating multiple default reports...<br />'   
%}

In this example, two tables are passed into the REXX function multReport. Because DTW_DEFAULT_REPORT="YES" is specified, Net.Data displays a default report for the first table only.

To display multiple reports by specifying REPORT blocks for display processing:

Example 1: Named REPORT blocks

%FUNCTION(dtw_sql) myStoredProc () {
   CALL myproc (table1, table2)
 
   %REPORT(table2) { 
     ...    
     %ROW {  ....   %}   
     ...
   %}
   
   %REPORT(table1) {     
     ...
     %row {  ....   %} 
     ...
   %}
%}

In this example, REPORT blocks have been specified for both of the tables passed in the FUNCTION block parameter list. The tables are displayed in the order they are specified on the REPORT blocks, table2 first, then table1. By specifying a table name on the REPORT block, you can control the order in which the reports are displayed.

Example 2: Unnamed REPORT blocks

%FUNCTION(dtw_sql) myStoredProc  () {
   CALL myproc   
   
   %REPORT {
     ...    
     %ROW {  ....   %}  
     ...
   %} 
   %REPORT {    
     ...    
     %ROW {  ....   %}     
     ...  
   %}  
%}

In this example, REPORT blocks have been specified for both of the tables passed in the FUNCTION block parameter list. Because there are no table names specified on the REPORT blocks, reports are displayed for the two tables in the order in which they are returned from the stored procedure.

To display multiple reports using a combination of default reports and REPORT blocks:

Example: A combination of default reports and REPORT blocks

%DEFINE DTW_DEFAULT_REPORT = "MULTIPLE"
%FUNCTION(dtw_system) editTables (INOUT table1, table2, table3) {  
    %REPORT(table2) {    
    ...      
    %ROW {  ....   %}    
    ...   
  %}    
%}

In this example, only one REPORT block is specified. Because the block specifies table2, and table2 is the second result set listed on the CALL statement, the second result set is used to display the report. Because there are fewer REPORT blocks specified than the number of result sets returned from the stored procedure, default reports are then displayed for the remaining result sets: first, a default report for the first result set, table1; then a default report for the third result set, table3. One output table is specified, table1, which can be used for processing later in the macro.

Guidelines and Restrictions for Multiple REPORT Blocks

Use the following guidelines and restrictions when specifying multiple REPORT blocks in a FUNCTION or MACRO_FUNCTION block.

Guidelines:

Restrictions:


[ Top of Page | Previous Page | Next Page | Index ]