CDW038

Dynaweb Report Writer Engine

Last Revised: 09/22/17

This program is similar to CDS038 except that it produces HTML output for use on a web page or email.

Note: The requirements for the HOVER global, the dwLib.js javascript library, and XX.js company specific javascript library have been eliminated.

CALL "CDW038", Y$, Y5$, Y5A$, HTML$, W038$, FILENAME$, KNO, KEYBEGIN$, KEYEND$, DISP$, WHERE$, SORTBY$, MODE$, LIMITVAL, SUBHEAD$, FOOT$, ENV$

CDW038
Y$ Standard task control variable.  The company name Y.COMPNAME$ will be included at the top of each page.  You can disable this by either clearing it (Y.COMPNAME$="") before calling CDW038 or by setting the global variable "$stdhead" which indicates a standard page heading is to be used.
Y5$ If passed as a non-blank value, Y5$ will appear in the page heading on a separate row below the company name (if present) using style sheet class 'title' if present, or cell background color #ccffff if not.
Y5A$ If passed as a non-blank value, Y5A$ will appear in the page heading on a separate row below Y5$ (if present) using style sheet class 'title' if present, or cell background color #ffffcc if not.
HTML$

HTML$ will contain the first page of output from CDW038 which contains the html table.  If the output is being sent in an email, then the output is typically printed to the channel opened by CDS084 as in PRINT (Y6.CH)HTML$.  If the output is being displayed on a web page, then after calling CDW038, HTML$ is ultimately passed to CDW999 which will send the output to the client browser.

Note that HTML$ will be null if there are no records in FILENAME$ that meet the conditions specified by either the WHERE$ clause or KNO, KEYBEGIN$ and KEYEND$.  In many cases, the line of code after the call to CDW038 sets HTML$ to some message when it comes back from CDW038 as null, i.e., IF LEN(HTML$)=0 THEN HTML$="No information to be displayed". In some cases it is beneficial to include the WHERE$ expressing to assist in debugging, i.e., IF LEN(HTML$)=0 THEN HTML$="No information to be displayed using WHERE clause ""+WHERE$+"""".

HTML$ will contain error messages with white text on a red background when CDW038 is unable to complete the task.  See error messages below.

W038$
W038.PRINTCOUNT$ If Y then the number of records included in the report will be show below the table.
W038.BLANKS_B If non-zero, a blank row will be inserted after each table row and before each call of W038.EXTRTN$.
W038.EXTRTN$ External program called after each record is processed.

Called using:
CALL W038.EXTRTN$,Y$,Y5$,Y5A$,HTML$,REC$
where REC$ is the record just processed, and HTML$ is the table prepared through this record. This option is useful when it is necessary to insert another table or other data below a table row.

W038.BLANKS_A If non-zero, a blank row will be inserted after each call of W038.EXTRTN$.
W038.BLANKS_EOR If non-zero, blank lines using <BR> will be added to the HTML at the end of the job
W038.PROGRESS$ If W, then after 100 records have been processed, the progress message "Preparing Report..." will be sent to the browser, and an asterisk after every additional 100 records processed.  This progress indicator can be used to prevent the client browser from timing out and displaying an error page.
W038.ROWSPERPAGE Indicates the number of data table rows that should appear on each page.  After CDW038 has built the html table, it calls CDW040 to separate the output into pages with links at the bottom of each page to enable navigation to any specific page.  See CDW040 for default values if W038.ROWSPERPAGE is passed as zero.  Set W038.ROWSPERPAGE to a negative number to cause the html output to replace the current page, clearing any progress indicators that might have been displayed as the report was prepared. The maximum value is 9999. Warning: creating large pages with thousands of rows can cause out-of-memory errors.
W038.ROWSHEAD If non-zero, then the heading row with the column headings will be inserted in the table after every W038.ROWSHEAD rows. Often set to 15 so that as the browser scrolls through the table, a heading row always appears somewhere on the view.
W038.USECLASS$
blank Include the class= attributes in the row tags as shown in the table below. This option should be used when a reference to an external style sheet is included in the resultant HTML. Note that CDW999 will include a reference to the default style sheet if one is specified in Dynaweb Configuration Maintenance (WMS).  Produces the shortest HTML code and is the preferred option when using an external style sheet can be used.
S Some email applications including Gmail and Hotmail have limited support for cascading style sheets (css). Our tests indicate that these applications do not support external style sheets, nor styles based on a class or id. However, they do support inline style attributes located inside an html tag, as well as style tags contained in the <head> section. This option will include a <style> section at the start of HTML$ which includes table, and td tags. Row based styles will be specified within each <tr> tag.
N The class= references shown below will not be included within the row tags. Each row and cell tag will include attributes inline.  This option creates the longest HTML so it should be used only when one of the other options cannot be used, as would be the case when the web page or email contains multiple tables with different styles.
Class names used by CDW038 and can be specified by an external style sheet
class= Usage
top Top row which contains company name & SUBHEAD$
title Title row which contains Y5$ and Y5A$
head Column heading row which contains column headings
rowodd Odd numbered rows
roweven Even numbered rows
foot Footer row which contains FOOT$
W038.INPUTROW$ When using the report as a form for data entry, i.e., DISP$ options segment described below includes an "I", setting INPUTROW$="Y" causes the row number to be appended to each field name.  For example, a field named POINTS will become POINTS1, POINTS2, POINTS3, etc. so that each row in the table has unique field names.  This is often the preferred option as it is easier to process the form.  In addition, the total number of rows will be returned in CGI.WMS_ROWS$.  You may also want to set W038.ROWSPERPAGE to a high number to prevent pagination.
W038.BGTOP$ 6 character background color to be used for top row of the table.  Top row contains company name from Y.COMPNAME$ with SUBHEAD$ passed to CDW038 below the company name.  If using a standard page heading specified using the "$stdhead" global, then the company name is excluded from the row.  You can also set Y.COMPNAME$="" before calling CDW038 to suppress the company name.  If not passed, the default background color of FFFFCC is used which is a light yellow.
W038.BGTITLE$ 6 character background color to be used for the title rows of the table.  The title rows appear below the top row and contains the information from Y5$ and Y5A$ passed to CDW038.  The default color is FFFF99 which is a medium yellow.
W038.BGHEAD$ 6 character background color to be used for the column heading row of the table.  The column heading row appears below the title rows.  The contents of the column headings comes from the template but can be overridden using the TITLE slot in DISP$.  The default color is FFFF66 which is a dark yellow.
W038.BGSUB$ 6 character background color to be used for sub-total rows.  The default color is FFFF99 which is a medium yellow.
W038.BGTOT$ 6 character background color to be used for the report total row.  The default color FFFF66 which is a dark yellow.
W038.BGFOOT$ 6 character background color to be used for the footer row of the table.  The footer row appears at the bottom of the table and is used for FOOT$ and links to page numbers within the document.  The default color is FFFF99 which is a medium yellow.
W038.TABLECLASS$ Used to specify the class of the html table.  This class should be defined in the style sheet.  If not passed, then the style sheet for the 'table' tag will be used.
W038.PLINK$

The text to be added to the base [DSN] (Dynaweb Script Name) when using hypertext links.  For example, set W038.PLINK$="p=WA012" to run program WA012 when link is clicked.  Dynaweb typically uses the p variable in the link to designate the program to be run, after WA010 performs basic web initialization.

PLINK$ can also be used to pass other field values to the linked program.  For example, if the program needs a temporary work file named WORKFIL$ created by the initial program, you could pass the work file name to the linked program WA012 in PLINK$ as in W038.PLINK$="p=WA012&wfil="+WORKFIL$.  The linked program can them determine the work file name by referencing CGI.WFIL$.

If the linked program also calls CDW038 to display records from the temporary work file, then it will retrieve the work file template from the data dictionary.  If the linked program does not use CDW038, then you can open the temporary work file and obtain the template using the "D" option in the fifth character of PAR$ when calling CDS095.

If the Data Dictionary file name for the work file is "IM040W." and W038.PLINK$ included "wfil="+WORKFIL$, then the following code can be used to read records from the temporary work file:

CALL "CDS095",IM040W,CGI.WFIL$,"YNYND",IM040W$
READRECORD (IM040W)IM040W$

FILENAME$ The file name of the primary data file.  The file can be type MKY, SKY, or DIR and requires a template.  FILENAME$ will be opened using either OPEN or SELECT.  If WHERE$, SORTBY$, or MODE$ is specified, then SELECT will be used and KNO, KEYBEGIN$, and KEYEND$ will be ignored.
KNO The KNUM of the file to be used.  Ignored if WHERE$, SORTBY$, or MODE$ is used.
KEYBEGIN$ The starting key or partial key in FILENAME$.  If passed as null, then the first record in the file will be used.  Ignored if WHERE$, SORTBY$, or MODE$ is used.
KEYEND$ The ending key or partial key in FILENAME$.  If passed as null, then KEYEND$ will be the same as KEYBEGIN$.  For example, in a file where the primary key includes a customer#, date, and invoice#, you could pass KEYBEGIN$ as the customer#, and KEYEND$ as null.  All records in the file with the first part of the key matching the customer# passed will be included.  Ignored if WHERE$, SORTBY$, or MODE$ is used.
DISP$ DISP$ contains field names to appear in the html table.  Each field is separated with the | symbol, and any optional elements of the field are separated by the \ symbol.  The complete format of each field is FILE.FIELD[INDEX]\TITLE\MASK\COL,ROW\OPTIONS\WHERE\SORTBY\LINKNAME\.  Each of the segments are described below.
Segment 1
FILE.FIELD[INDEX]
This field typically contains only a field name such as CUSTNO, NAME, DESC1, etc.  If FILE. is not specified, then it is assumed that the field occurs in the primary file specified by FILENAME$.

However, CDW038 can also include fields from related files.  Related files can be used when the primary key of the related file is a single field with the same name as any field in the primary file.  For example, if the key of the primary data file is CUSTNO+DATE+INVNO then all fields in the customer file, such as the customer name could be referenced by XXCM01.NAME where XXCM01 is the file name of the customer file.  See additional examples below.

FILE. can also be a program name, which will be called with an argument list of Y$,PRIMARY$,RELATED$ where Y$ is the standard task control variable, PRIMARY$ is the templated data structure for the primary file (FILENAME$), and RELATED$ is the templated data structure returned by the calling program.  The option is useful when certain calculations or file access is required to provide the data to be included in the output.  If the called program exits with an error 99, EXIT 99, then this signals CDW038 to skip this record.  This technique can be used when the conditions to include a record is based on some calculation or other logic from an external program that you can write.  The programs output fields must be defined in the data dictionary using the program name as the data dictionary file name.

If this field simply contains * then all fields (and all indexes of any repeating fields) will be included using the default TITLE and MASK.  The asterisk can also be used to include all fields in a related file or called program as in XXCM01.* or IC031.*.

The [INDEX] specified on repeating fields to indicate the specific INDEX desired, such as SALES[4][ALL] may also be specified as a shortcut for including all indexes of the repeating field.  When the repeating field has 12 elements where each element represents one month you can specify an INDEX of [ALL] and TITLE element (below) as Mth to cause short month names (Jan, Feb, Mar, ...) to be used as the TITLE for each column, or Month to cause long month names (January, February, March, ...) to be used as the TITLE for each column.

Segment 2
TITLE

Normally the TITLE is derived from the template and passed here as null, however you may override the TITLE by passing it in this position of DISP$.

You can also use the TITLE segment to create a hyperlink for the column, typically provided to enable sorting by column.  For example, to provide a hyperlink to program xxxx and pass variable col as 'NAME' specify the TITLE segment, as well as other arguments necessary to create the report such as arg1 and arg2:

<a href='[DSN]?p=xxxx&col=NAME&arg1=VALUE&arg2=VALUE'>Name</a>

Should the operator click on this link, then program xxxx will run which can check the value of the col variable and sort the data by the desired column.

Segment 3
MASK

Normally the MASK is also derived from the template and passed here as null, however you may override the MASK by passing it in this position of DISP$.  Since the template mask size may not be large enough for sub-totals or totals, a mask larger than that in the template is often used.  Date and time masks can also be used for date and numeric time and elapsed time fields.

For string variables, mask segment can also be used for a sub-string expression, instead of a mask.  For example, the mask segment could contain (1,10) or (5,10) or (5).

Segment 4
COL,ROW or FLDNAME

Normally, CDW038 will create a separate column for each field, with one row of data per record.  You can start another row using the same data record by specifying the COL and ROW or FLDNAME

Segment 5
OPTIONS
The OPTIONS element can contain the following characters.  Any other characters are ignored.
TTotal this numeric field. Totals are displayed in the last row of the table.
uSub-total and total this numeric field
SSub-total but do not total this numeric field
BDisplay field as blank if same as value in previous row.  This can improve the readability of the output by not repeating the same value over and over, especially in the leftmost columns of the output.
l(Lower case L) Override default field alignment and left justify this field
rOverride default field alignment and right justify this field.  CDW038 will right justify all numeric values by default.
cOverride default field alignment and center this field.  CDW038 will center by default, all date and time fields, as well as fields where the maximum field length is 5 or less.
wDo not wrap the contents of this cell to multiple lines (nowrap).
LCreate a hyperlink for this field.  The link value for date fields is always in julian date format.

If W038.PLINK$ begins with "http", then the link starts with W038.PLINK$.

If W038.PLINK$ does not begin with "http", the the link starts with STBL("SCRIPT_NAME").  If the SCRIPT_NAME includes a "?" then the link will include all characters through the last "?" followed by W038.PLINK$ otherwise a "?" and W038.PLINK$ is appended to the link.

If the LINKNAME element is not specified, then the current field name and value is appended to the link, as in &SONO=888222 or ?SONO=888222.  When LINKNAME is specified, then its field name and optionally its value are used in the link instead of the current field name and value. See Segment 8 LINKNAME for more details.

All template field types are supported including C, N, U, etc.  Leading and trailing blanks are removed from the link value for C type fields. 

A typical field with a link will result in html code such as:

<a href="http://dev.excellware.com/cgi-bin/ex.cgi?p=WA020&SONO=888222">888222</a>

bWhen used with the L hyperlink option, the lower case b indicates that the hyperlink should include "target=_blank" so that clicking the link will cause the resultant page to appear in a separate browser window or tab.
pIndicates that the cell data may also include cell formatting data, which precedes the data and is separated from the data using the pipe (|) character.  This feature allows the programmer to change the colors or other attributes of cells conditionally based on data values.  The valid cell formatting options are listed below.
bbold
iitalic
muse monospaced font
gxxxxxxbackground color xxxxxx
fxxxxxxforeground (text) color xxxxxx
sxxxset fonts size to xxx
blank followed by textadds text to cell style tag

For example, if the data field contains "bgff0000 font-family:Courier|Shipped", then the cell data (Shipped) will be displayed in bold (b), with a red cell background (gff0000), in the Courier font.  The html text generated will be: <td style="font-weight:bold; background-color:#ff0000; font-family:Courier">Shipped</td>.

mUse a monospaced font for this column. Only applies when either the 'p' option described above is not used, or if it is used, then there was no style specifications included in the data cell.
zShow zero value numbers as blank
IUse an input tag for operator entry in this field.  The input will be type text, with a name equal to the field name, with the size and maxlength set to the field size, and the value set to the current field value.  Example html: <input type='text' name='POINTS' size=4 maxlength=4 value='7'>.  Note the HTML output of CDW038 will require a <form> tag and attributes, a submit button, and a </form> tag to make the web page a form that can be submitted and processed by a bbx program.
HCreate a hidden input tag for this field.  Hidden input tags are included in CGI$ just like non-hidden inputs.  This is useful when using CDW038 to create an input form.  A key field or other row identifier can be marked with the H option to facilitate identifying the record key value when processing the form.  Note that the H and I options cannot be used on the same field.
Segment 6
WHERE

The contents of Segment 6 depend on the field type in Segment 1.

Segment 1Usage
File name

This segment is used when there are multiple records from a related file to be included.  It should contain the WHERE clause used by the SELECT verb to retrieve the related records.  If more than one field is to be retrieved from the same file, only the first field in DISP$ for that related file needs this segment.  Any data provided in subsequent fields for the same file will be ignored.

 

There WHERE clause can only refer to fields located in the primary file or the related file. It cannot refer to fields derived from a related file, nor from fields derived from an external program.

 

The fields from the primary file do not need to be qualified with the file name, so if file XXIM01 contains field ITEMNO, then these are all equivalent:

ITEMNO$

XXIM01.ITEMNO$

IM01.ITEMNO$

REC.ITEMNO$

 

For example, if the primary file XXIM01 contains items, and related file XXUM21 contains warehouse records with multiple records per item, to include all warehouse records for an item and show the warehouse code and quantity on hand from the warehouse file:

FILENAME$="XXIM01"

DISP$="ITEMNO|DESC1|XXUM21.WHS\\\\\XXUM21.ITEMNO$=ITEMNO$|XXUM21.QOH"


You may have multiple related files with WHERE clauses in the same DISP$ string.

 

Use option letter 's' described above to skip (exclude) the primary record when there are no records that meet the conditions of this WHERE clause.

Program nameWhen using externally called programs, normally the primary record is passed as input to the called routine.  This segment can be used to instruct CDW038 to pass one of the related file records to the called routine instead.  Place the file name of the record to be passed in this field, i.e., XXUM21 or UM21.
Segment 7
SORTBY
SORTBY is only used in conjunction with the WHERE option above and can be used to alter the sequence of the records processed in the related file.  For example, to change the sequence of the related records from the default warehouse code sequence to have the warehouse records with the highest quantity-on-hand shown first, then pass a SORTBY element as ADJN(-EXT.QOH) where the related external file is referred to as EXT$ and QOH is the field name for quantity-on-hand.  The ADJN() function is used when sorting numeric fields.  The leading "-" will change the sequence to highest-to-lowest.
Segment 8
LINKNAME

This element is only used in conjunction with the L (link) option described above.  It is needed when the hyperlink needs to refer to a different field name than the current field.

 

If field LINKNAME does not exist within the primary record, then the link field name is changed from the field name to the LINKNAME. For example if the field name is SONO and the value is 12345 then normally the link url would contain ...sono=12345. But if LINKNAME is set to orderno, then the link url would contain ...orderno=12345.

 

If field LINKNAME does exist within the primary record, then both the link and the value contained within the url link are set to that of the LINKNAME field. This feature is useful when the identifying key to the record is not a field displayed on the web page. For example, an internal ID of field name of SICNO is not included in DISP$, but that field and its value are needed in a hyperlink. The hyperlink could be attached to the SERIALNO field by setting LINKNAME to SICNO. Clicking on the hyperlink attached to the SERIALNO field, will result in a url that contains SICNO=[value_of_SICNO].

WHERE$

CDW038 normally uses arguments KNO, KEYBEGIN$, and KEYEND$ to determine which records in the file to be included. When the records desired cannot be accessed using that method, then a WHERE clause can be provided, which will use the SELECT verb to determine the records to be displayed.

 

Note that when using a WHERE clause, the KNO, KEYBEGIN$, and KEYEND$ arguments are ignored.

 

The WHERE clause can only refer to fields located in the primary data file. It cannot refer to fields in related files, nor fields derived from a called program.  In that situation, you can either create and populate a work file, then pass the work file name to CDW038.  In some cases you can use CDS038 to create a work file.

 

The fields within the WHERE clause do not need to be qualified with the file name. If primary data file XXIM01 contains field ITEMNO, then the following are equivalent:

ITEMNO$

XXIM01.ITEMNO$

IM01.ITEMNO$

REC.ITEMNO$

 

Since WHERE$ is a string, any quotes contained within the string must be doubled:

WHERE$ = "STATE$=""OH"" and SALES>0"

 

When the WHERE clause refers to fixed length numeric fields, i.e., U(3), I(3), N(6), you may achieve improved performance by using the string representation of the field instead of the numeric.

For example if the DATE field is a U(3) template type, then use:

WHERE$="DATE$>="""+BIN(JUL(2007,1,1),3)+""" AND DATE$<="""+BIN(JUL(2007,12,31),3)+""""

instead of:

WHERE$="DATE>="+STR(JUL(2007,1,1))+" AND DATE<="+STR(JUL(2007,12,31))"

 

Typically the data range is specified using variables, so if FRDATE and TODATE are the FROM/TO dates in julian format, then the following example could be used:

WHERE$="DATE$>="""+BIN(FRDATE,3)+""" AND DATE$<="""+BIN(TODATE,3)+""""

 

The best practice is to use hexadecimal constants so that the WHERE$ clause does not contain any binary characters:

WHERE$="DATE$>=$"+HTA(BIN(FRDATE,3))+"$ AND DATE$<=$"+HTA(BIN(TODATE,3))+"$"

 

Using a defined function can simplify further:

def fnd$(jdate) = "$" + hta(bin(jdate,3)) + "$"

where$ = "DATE>=" + fnd$(frdate) + " and DATE$<=" + fnd$(todate)

SORTBY$

Optional sortby clause also used with SELECT verb to control the sequence that records are displayed and to create sub-total rows.

 

Note that you must use SORTBY$ in order to create sub-total rows, even when the data file is pre-sorted.

 

Field names referenced within SORTBY$ that refer to the primary data file, do not require the file name, i.e., if the primary data file is XXIM01 and contains field ITEMNO, the following are all equivalent:
ITEMNO$

XXIM01.ITEMNO$

IM01.ITEMNO$

REC.ITEMNO$

 

SORTBY$ can include fields contained within the primary file, fields contained in related/external files, or even fields derived from a called program.

 

For example, to sort by descending sales (a B type field) within state, pass SORTBY$ as STATE$+ADJN(-SALES).

 

Note that when SORTBY$ is used, then KNO, KEYBEGIN$ and KEYEND$ are ignored.

 

Sub-totals are enabled by including a "T" or "S" in the OPTIONS segment described above, and by specifying a /S following the field name in SORTBY$ such as SORTBY$="STATE$/S+ADJN(-SALES)".

 

An unlimited number of sub-total levels can be enabled by additional /S codes in the SORTBY$ clause, i.e., SORTBY$="REGION$/S+STATE$/S+CITY$/S+CUSTNO$".

MODE$ MODE$ is passed to the SELECT verb.  The most popular use is for creating a log file describing the optimization logic used by SELECT.  To enable this option, pass MODE$ as "debug=tmp/cdw038.txt", and a text file will be created with optimization data.  You can review the optimization data to determine how BBx chooses the bests KNUM to use.  You have some options to override the default behavior of BBx by passing "opt=nowhere", "opt=nosort", or "opt=none".  Refer to the BBx documentation for the SELECT verb for additional details.  Note that when MODE$ is used, then KNO, KEYBEGIN$ and KEYEND$ are ignored.
LIMITVAL Optional limit to the number of records to be displayed.  For example, to limit the output to the top 50 customers based on sales, the LIMITVAL would be passed as 50.  Note that the LIMITVAL can be used whether the primary data file is opened using OPEN or SELECTLIMITVAL can also be passed during testing to reduce the size or the time to produce the output.
SUBHEAD$ This field can contain text that will appear in the first row, below the company name (Y.COMPNAME$).  It might contain the actual customer name or other report heading information.  Multiple lines can be passed using the html <BR> tag as a separator, as in Metal Mouldings<BR>Cleveland Division.  The SUBHEAD$ field uses the style sheet class 'top' or cell background color #ffffcc if not using a style sheet.
FOOT$ FOOT$ can be passed to CDW038 as html text that is appended to each page of the CDW038 output.  It typically would contain links to return to a menu and to logoff.  The footer text is placed in a separate row at the bottom of the table.  The style sheet class 'foot' will control the appearance of this row.  If not using a style sheet then CDW038 will use a cell background color of #ccffff.  Example: <a href=""/cgi-bin/em.cgi?p=WA020"">Report Entries</a> | <a href=""/cgi-bin/em.cgi"">Home</a> | <a href=""/cgi-bin/em.cgi?p=WA998"">Customer Selection</a> | <a href=""/cgi-bin/em.cgi?p=WA999"">Logout</a> | [HELP]. Quotes are doubled since this text is within a BBx string.
ENV$ The bbweb environment variable which can be passed to CDW038, but is not currently being used.

CDW038 produces an HTML table that consists of the following sections with style sheet class names shown.  The appearance of each section, including text and background color, is determined by the style sheet.  If you are not using a style sheet, or the class name does not exist, then the default colors listed will be used.  The classes shown are used on the table row tag, so the style sheet can contain either:

tr.top {background-color: #rrggbb}

or

.top {background-color: #rrggbb}

Other attributes including the font color, may be also assigned using the style sheet:

tr.title

        {
        background-color: red;
        color: white;
        font-family:verdana,arial,sans-serif;
        font-weight:600;
        }

class name Description Default Color
top Very top row of table, typically used for company name.  If the global variable $stdhead is present, then it will be placed in this row, otherwise Y.COMPNAME$ will be used with <strong> tag for emphasis.  In the same row, the SUBHEAD$ field will be added following a <br> tag. ffffcc
(very light yellow)
title Next row of table, contains report title from Y5$ ffff99
(light yellow)
title Next row of table, contains report sub-title from Y5A$ ffff99
(light yellow)
head Next row of the table contains column headings ffff66 (yellow)
rowodd The odd numbered rows are assigned this style sheet class so that you may have alternating row colors if desired uses body color
roweven Even numbered rows in table body uses body color
foot The first footer row is typically used for links to successive pages ccffff (blue)
foot The second footer row is typically used for links to other pages on the site ccffff (blue)
subtotal Rows containing subtotals 99ff99
total Row containing totals 99ff99
Error Messages
Message Corrective Action
Filename not specified Verify that FILENAME$ is non-blank
Invalid field name: _XXXX Field name shown is not supported in CDW308
Formatting Error with field XXXXX Problem parsing _FILL parameters (SIZE,CHAR$)
Unable to locate external field named XXXX in any external record Field name XXXX located in DISP$ must be a templated field contained within the primary record, a called program, or an external file that can be accessed using a key comprised of a single field.
Missing field name at XXXX Check to be sure there is a | symbol separating each field in DISP$
Index value of XXX is invalid for field name XXXX in file XXXX The index for a repeating field exceeds the number of repeating elements
CDW038 does not yet support the subtotal sortby expression XXXX Check SORTBY$ syntax.  Be sure string variables include the $.
Field name XXX is an invalid template field for file XXXX. Verify that the field name specified is contained in the template file if file XXXX is a data file, or in the data dictionary if XXXX is a program.
Error XX selecting records to be printed, with a table that includes FILENAME$, template, DISP$, WHERE$, Revised WHERE$ (after pre-processing), SORTBY$, Revised SORTBY$ (after pre-processing). This error indicates that a field specified in WHERE$ or SORTBY$ is not valid, or these clauses contain an invalid character, or in some cases, the fields in a record are too short to build the key for sorting.  If the fields being sorted are variable length, you may need to pad them out using expressions such as SORTBY$=REC.NAME$+FILL(30-LEN(REC.NAME$)).
Error XX selecting records from related file, including table information as described in above row Verify that the WHERE and SORTBY clauses contained in DISP$ are valid for the related file.
Error XX trying to open file name XXXX and retrieve template Unable to open primary data file FILENAME$ or retrieve template from global memory, template file, or data dictionary
Simple example with minimal parameters specified, and no style sheet
Y5$="Shipper Services"
FILENAME$="DSCW21"
CALL "CDW038",Y$,Y5$,Y5A$,HTML$,W038$,FILENAME$
Dynamo by Excellware
Shipper Services
Carrier Seq Service USF Air Max Lbs Max Ozs
FDX 1 Ground U N    
FDX 2 Home Delivery U N    
FDX 3 Express Saver U Y    
FDX 4 2 Day U Y    
FDX 5 Standard Overnight U Y    
FDX 6 Priority Overnight U Y    
FDX 7 First Overnight U Y    
INO 1 US Mail U N   15
OTH 1 Best Way U Y    
OTH 2 Will Call U N    
OTH 3 Our Truck U N    
UPS 1 Ground U N    
UPS 2 3 Day Select U Y    
UPS 3 2nd Day Air U Y    
UPS 4 2nd Day Air AM U Y    
UPS 5 Next Day Air Saver U Y    
UPS 6 Next Day Air U Y    
UPS 7 Next Day Early AM U Y    
USM 1 Best Way B N    
USM 2 Media Mail U N 4  
USM 3 First Class U N   13
USM 4 Parcel Post U N    
USM 5 Priority Mail U Y    
USM 6 Express Mail U Y    
USM 7 Airmail Letter Post F Y 4  
USM 8 Airmail Parcel Post F Y    
USM 9 Economy Letter Post F N 4  
USM 10 Economy Parcel Post F N    
USM 11 Global Priority Mail F Y    
USM 12 Global Express Mail F Y    
  141       12 28

Example:

Envelope Mart
BUSH ASSOCIATES, INC
Open Orders/Closed Orders/Quotations
Order Date Range: 07/20/04 to 08/19/04
Order# Order Date Your PO# Enduser PO# Whs Reference Form# Date Shipped Invoice Amount
160302 Wed 08/18/04 CLN-Q   Q #10 REG & WIND 2/0     890.00
160298 Wed 08/18/04 CLN-Q   Q CSI / CHEMICAL SOLVENTS CHE004 CHE004   447.50
160297 Wed 08/18/04 CLN-Q   Q CSI/CHEMICAL SOLVENTS #10 POLY CHE006   505.00
160159 Wed 08/18/04 CLN-Q   Q CA 10 X 13 1/0     662.30
160137 Wed 08/18/04 CLN-Q   Q A-2 CLASSIC CREST NAT.WHITE     83.79
159960 Tue 08/17/04 56497 MI-20396 E #14 Regular * BLANK STOCK BAR142 Est. Fri 08/20/04 450.00
159959 Tue 08/17/04 QUOTE VAL - PHONE   Q KIRKWOOD INDUSTRIES     172.38
159953 Tue 08/17/04 QUOTE   Q #10 WINDOW 3m & 5m     448.10
159544 Fri 08/13/04 QUOTE VAL - PHONE   Q #14 Regular * BLANK STOCK BAR142   450.00
159543 Fri 08/13/04 KRK   Q 9 X 12 BOOKLET UNPRINTED KRK     1674.00
159539 Fri 08/13/04 KRK   Q 9 X 12 BOOKLET COMOB 108 LOTS     12204.00
159015 Wed 08/11/04 CCF   Q 4-3/8 X 5-3/4     80.33
158186 Mon 08/09/04 55403 SONDRA ARTHUR E FERRO * INDEPENDENCE (POLYMER) FER833 Tue 08/10/04 16.47
1 2 Next page>
Report Entries | Home | Customer Selection | Logout | Help