Hi,
I tried to cut/paste the sample schema from a page found from
http://docs.hp.com/mpeix/onlinedocs/30391-90011/30391-90011.html,
and found I couldn't copy/paste the sample schema because
Netscape 4.7 wouldn't let me highlight the sample text.
The exact page is:
http://docs.hp.com/cgi-bin/fsearch/framedisplay?top=/mpeix/onlinedocs/30391-90011/30391-90011_top.html&con=/mpeix/onlinedocs/30391-90011/00/00/68-con.html&toc=/mpeix/onlinedocs/30391-90011/00/00/68-toc.html&searchterms=product&queryid=20010117-101801
(very long URL :)
The problem is, yep, more bad HTML. I think HP should *buy*
the CSEE HTML Validator company and require everyone inside
In case people are interested, the error messages and the HTML follow.
----
The following errors were reported by CSE HTML Validator Professional v4.50 (http://www.htmlvalidator.com/)
24. Error in line 94 at character 7: The "element" attribute is not valid for the "TABLE" element. The valid attributes for this element are: "align", "background", "bgcolor", "border", "bordercolor", "bordercolordark", "bordercolorlight",
"cellpadding", "cellspacing", "class", "clear", "cols", "datafld", "datapagesize", "datasrc", "dir", "frame", "gradangle", "gradcolor", "height", "hspace", "id", "lang", "language", "msimagelist", "nowrap", "onafterupdate", "onbeforeupdate", "onblur",
"onclick", "ondblclick", "ondragstart", "onfilterchange", "onfocus", "onhelp", "onkeydown", "onkeypress", "onkeyup", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onresize", "onrowenter", "onrowexit", "onselectstart", "rules",
"style", "summary", "title", "transparency", "valign", "vspace", "width", "xml:lang", and "xml:space".
28. Error in line 96 at character 6: The "id" or "name" attribute value "f06-01" has already been used in this document. A tag's "id" or "name" value ("name" only for certain elements such as "a") must be unique within the document. A tag cannot have an
"id" or, with certain elements, a "name" attribute value that has already been used. Note that the "id" values are not case sensitive (except when used to link to an anchor) and that "id" and some "name" attribute values share the same namespace.
29. Error in line 210 at character 21: The closing tag </TABLE> has extra text. Closing tags may only contain a slash followed by a tag.
34. Error in line 224 at character 2: The "TR" tag must be closed but the closing tag was not found.
35. Error in line 224 at character 2: The "TR" tag was found, but it is not valid due to where it is used. This element may be contained in "table". This element may not be contained in "tr". The tag is currently contained within another tag that may
not contain it.
38. Error in line 229 at character 2: The "TR" tag was found, but it is not valid due to where it is used. This element may be contained in "table". This element may not be contained in "tr". The tag is currently contained within another tag that may
not contain it.
39. Error in line 232 at character 2: The "TR" tag was found, but it is not valid due to where it is used. This element may be contained in "table". This element may not be contained in "tr". The tag is currently contained within another tag that may
not contain it.
40. Error in line 234 at character 2: The "TR" tag was found, but it is not valid due to where it is used. This element may be contained in "table". This element may not be contained in "tr". The tag is currently contained within another tag that may
not contain it.
41. Error in line 238 at character 2: The "TR" tag was found, but it is not valid due to where it is used. This element may be contained in "table". This element may not be contained in "tr". The tag is currently contained within another tag that may
not contain it.
42. Error in line 241 at character 6: The "TR" tag (opened in line 224) should be closed before the "TABLE" tag is closed (nesting error).
If you want to see how the line numbers / error messages correspond to the
HTML, here's the HTML text I ran through CSEE HTML Validator. Note:
I stripped off a few initial lines that (apparently incorrectly) preceded
the "<HTML>" line:
------------------------------cut here------------------------
<HTML>
<HEAD><base href="http://docs.hp.com//mpeix/onlinedocs/30391-90011/00/00/68-con.html">
<META NAME="ROBOTS" CONTENT="NONE">
<META NAME="DESCRIPTION" CONTENT="This section shows the model for the example programs that run against the ORDERS database. You may wish to skip this section if you are an experienced TurboIMAGE/XL programmer.">
<META NAME="KEYWORDS" CONTENT="">
<META NAME="RELEASE" CONTENT="MPE/iX 6.5">
<META NAME="COLLECTION" CONTENT="MPE/iX 6.5,Development Tools and Distributed Computing,MPE/iX and HP e3000 Technical Documentation,30391-90011">
<META NAME="BOOK" CONTENT="TurboIMAGE/XL Database Management System Reference Manual">
<META NAME="BOOKFRAME" CONTENT="30391-90011">
<META NAME="PUBDATE" CONTENT="Mar 2000">
<TITLE>Model Program</TITLE>
<LINK REL="STYLESHEET" HREF="../../../docs_style.css" TYPE="text/css">
<SCRIPT LANGUAGE="JAVASCRIPT">
<!--
var title=escape("TurboIMAGE/XL Database Management System Reference Manual")
var service="mpeix"
//
// open frameset if content opened alone
//
var tracktoc="30391-90011/../30391-90011/00/00/68-con.html"
if (top == self) self.location.href = "/cgi-bin/onlinedocs.py?mpn=30391-90011&service=mpeix&path=../30391-90011/00/00/68&title="+title+"";
//-->
</SCRIPT>
</HEAD>
<BODY BGCOLOR="white">
<!--stopindex-->
<TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="0">
<TR><TD ALIGN="LEFT" VALIGN="MIDDLE">
<NOBR><A HREF="../../00/00/1-con.html"><IMG SRC="../../../images/uparrow.gif" BORDER="0" HSPACE="3">
<FONT SIZE="2">TurboIMAGE/XL Database Management System Reference... </FONT></A></NOBR><BR>
</TD></TR>
</TABLE>
<TABLE CELLSPACING="0" CELLPADDING="0" BGCOLOR="WHITE" WIDTH="100%">
<TR><TD>
<NOBR><A HREF="../../00/00/67-con.html"><IMG SRC="../../../images/uparrow_below.gif" BORDER="0" HSPACE="3"></A>
<A HREF="../../00/00/67-con.html"><FONT SIZE="2">Host Language Access</FONT></A></NOBR>
</TD></TR>
</TABLE>
<!-- prev/next table-->
<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0" WIDTH="100%"><TR>
<TD VALIGN="top" WIDTH="50%" ALIGN="left">
<TABLE WIDTH="100%" CELLPADDING="0" CELLSPACING="0" BORDER="0">
<TR><TD VALIGN="top" ALIGN="left">
</TD></TR>
</TABLE>
</TD><TD VALIGN="top" WIDTH="50%" ALIGN="right">
<TABLE WIDTH="100%" CELLPADDING="0" CELLSPACING="0" BORDER="0">
<TR><TD VALIGN="top" ALIGN="right">
<A HREF="../../00/00/69-con.html"><FONT SIZE="2">ORDERS Database Model Program</FONT></A>
<A HREF="../../00/00/69-con.html"><IMG SRC="../../../images/rightarrow.gif" BORDER="0" HSPACE="3" VSPACE="2"></A>
</TD></TR>
</TABLE>
</TD></TR>
</TABLE>
<!--startindex-->
<!--start of fragment-->
<HR><P><FONT SIZE="5"><B>Model Program<A NAME="modelprogram"> </A></B></FONT></P><BR CLEAR="left"><IMG SRC="../../../images/pixel.gif" WIDTH="1" HEIGHT="7"><BR>This section shows the model for the example programs that
run against the ORDERS database. You may wish to skip this section
if you are an experienced TurboIMAGE/XL programmer.<P>The main entry point for the application is a numbered list
of functions that can be performed by calling the various routines.
Each routine is made up of one or more tasks that are implemented
through TurboIMAGE/XL intrinsic calls. Each call contains one or more
parameters, some of which are used to pass their assigned values
to TurboIMAGE/XL intrinsics. These values determine the outcome
of the intrinsic. Other parameters are used to receive data and
status information from TurboIMAGE/XL intrinsics.<P>This model attempts to familiarize you with generic techniques
for making TurboIMAGE/XL intrinsic calls. Additionally, the model
reiterates the importance of defining TurboIMAGE/XL transactions
for logging and recovery.<P>The conventions used throughout the model and the structure
of the program are explained immediately preceding the model program.
<P><FONT SIZE="4"><B>ORDERS Database Schema<A NAME="ordersdatabaseschema"> </A></B></FONT><BR CLEAR="left"><IMG SRC="../../../images/pixel.gif" WIDTH="1" HEIGHT="5"><BR><A HREF="#f06-01">ORDERS Database Schema Listing</A> contains the list file
output printed
when the schema of the sample ORDERS database is processed. This
schema is shown earlier in chapter 3, but is repeated here for easy
reference when reading through the model program. Use it to refer
to the data set and data item names used in the model program.<HR><TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3"><TR><TD VALIGN="top" ><IMG SRC="../../../images/noteicon.gif" BORDER="0"></TD><TD VALIGN="top">Because the Schema Processor, DBSCHEMA,
upshifts alphabetic
characters, programs must specify data set and data item names in
all uppercase characters. Take note of this if the programming language
you use does not require uppercase characters.</TD></TR>
</TABLE>
<HR><A NAME="f06-01"> </A><P><TABLE BORDER="0" CELLSPACING="0" CELLPADDING="5" ALIGN="left" element=FIGURE>
<TR><TD>
<B><FONT FACE="helvetica, arial" SIZE="2">Figure 1</FONT> ORDERS Database Schema Listing<A NAME="ordersdatabaseschemalisting"> </A><A NAME="f06-01"> </A></B><BR><PRE> PAGE 1
HEWLETT-PACKARD 30391C.05.00 TurboIMAGE/3000: DBSCHEMA TUE, JAN 11
$CONTROL LIST,LINES=46
$PAGE "SCHEMA FOR DATABASE ORDERS"
BEGIN DATABASE ORDERS;
PASSWORDS:
11 CREDIT; << CUSTOMER CREDIT OFFICE >>
12 BUYER; << BUYER - RESPONSIBLE FOR PARTS INVENTORY >>
13 SHIP-REC; << WAREHOUSE - SHIPPING AND RECEIVING >>
14 CLERK; << SALES CLERK >>
18 DO-ALL; << FOR USE BY MGMT >>
ITEMS: << IN ALPHABETICAL ORDER FOR CONVENIENCE >>
ACCOUNT, J2 ; << CUSTOMER ACCOUNT NUMBER>>
BINNUM, Z2 (/13); << STORAGE LOCATION OF PROD>>
CITY, X12 (12,13,14/11); << CITY>>
CREDIT-RATING, R2 (/14); << CUSTOMER CREDIT RATING>>
DATE, X6 ; << DATE (YYMMDD)>>
DELIV-DATE, X6 (/14); << DELIVERY DATE (YYMMDD)>>
DESCRIPTION, X20 ; << <font color="red"><b>PRODUCT</b></font> DESCRIPTION>>
FIRST-NAME, X10 (14/11); << CUSTOMER GIVEN NAME>>
INITIAL, U2 (14/11); << CUSTOMER MIDDLE INITIAL>>
LAST-NAME, X16 (14/11); << CUSTOMER SURNAME>>
LASTSHIPDATE, X6 (12/ ); << DATE LAST REC D(YYMMDD)>>
ONHANDQTY, J2 (14/12); << TOTAL <font color="red"><b>PRODUCT</b></font> INVENTORY>>
PRICE, J2 (14/); << SELLING PRICE (PENNIES)>>
PURCH-DATE, X6 (11/14); << PURCHASE DATE (YYMMDD)>>
QUANTITY, I (/14); << SALES PURCHASE QUANTITY>>
STATE, X2 (12,13,14/11); << STATE -- 2 LETTER ABB>>
STOCK#, U8 ; << <font color="red"><b>PRODUCT</b></font> STOCK NUMBER>>
STREET-ADDRESS, X26 (12,13,14/11); << NUMBER AND STREET ADDRESS>>
SUPPLIER, X16 (12,13/); << SUPPLYING COMPANY NAME>>
TAX, J2 (14/); << SALES TAX (PENNIES)>>
TOTAL, J2 (11,14/); << TOTAL AMOUNT OF SALE (PENNIES)>>
UNIT-COST, P8 (/12); << UNIT COST OF <font color="red"><b>PRODUCT</b></font>>>
ZIP, X6 (12,13,14/11); << ZIP CODE>>
SETS:
NAME: DATE-MASTER,AUTOMATIC,DISC1; <<DATE MASTER>>
ENTRY: DATE(3);
CAPACITY: 365;
NAME: CUSTOMER,MANUAL(14/11,18),DISC1; <<CUSTOMER MASTER>>
ENTRY: ACCOUNT(1),
LAST-NAME,
FIRST-NAME,
INITIAL,
STREET-ADDRESS,
CITY,
STATE,
ZIP,
CREDIT-RATING;
CAPACITY: 201;
PAGE 2 SCHEMA FOR DATABASE ORDERS
NAME: <font color="red"><b>PRODUCT</b></font>,MANUAL(13,14/12,18),DISC1;<<<font color="red"><b>PRODUCT</b></font> MASTER>>
ENTRY: STOCK#(2),
DESCRIPTION;
CAPACITY: 300;
NAME: SUP-MASTER,MANUAL(13/12,18),DISC1; <<SUPPLIER MASTER>>
ENTRY: SUPPLIER(1),
STREET-ADDRESS,
CITY,
STATE,
ZIP;
CAPACITY: 201;
NAME: INVENTORY,DETAIL(12,14/13,18),DISC2; <<INVENTORY DETAIL>>
ENTRY: STOCK#(<font color="red"><b>PRODUCT</b></font>),
ONHANDQTY,
SUPPLIER(!SUP-MASTER), <<PRIMARY PATH>>
UNIT-COST,
LASTSHIPDATE(DATE-MASTER),
BINNUM;
CAPACITY: 1800, 450, 10%;
NAME: SALES,DETAIL(11/14,18),DISC2; <<SALES DETAIL>>
ENTRY: ACCOUNT(CUSTOMER(PURCH-DATE)),
STOCK#(<font color="red"><b>PRODUCT</b></font>),
QUANTITY,
PRICE,
TAX,
TOTAL,
PURCH-DATE(DATE-MASTER),
DELIV-DATE(DATE-MASTER);
CAPACITY: 1800, 504, 112;
END.
DATA SET TYPE FLD PT ENTR MED MAXIMUM BLK BLK DISC
NAME CNT CT LGTH REC CAPACITY FAC LGTH SPACE
DATE-MASTER A 1 3 3 26 365 19 496 96
CUSTOMER M 9 1 41 52 201 7 365 96
<font color="red"><b>PRODUCT</b></font> M 2 2 14 31 300 16 497 80
SUP-MASTER M 5 1 31 42 201 12 505 80
INVENTORY D 6 3 20 32 1800 15 481 128
INITIAL CAPACITY: 450 INCREMENT ENTRIES: 45
SALES D 8 4 19 35 1008 14 491 160
INITIAL CAPACITY: 504 INCREMENT ENTRIES: 112
TOTAL DISC SECTORS INCLUDING ROOT: 672
NUMBER OF ERROR MESSAGES: 0
ITEM NAME COUNT: 23 DATA SET COUNT: 6
ROOT LENGTH: 1176 BUFFER LENGTH: 505 TRAILER LENGTH: 256
ROOT FILE ORDERS CREATED.</PRE></TD></TR>
</TABLE element=FIGURE><BR CLEAR="left">
<P><FONT SIZE="4"><B>Model Program Conventions<A NAME="modelprogramconventions"> </A></B></FONT><BR CLEAR="left"><IMG SRC="../../../images/pixel.gif" WIDTH="1" HEIGHT="5"><BR>The following conventions are used throughout the model.<TABLE BORDER="0"
CELLSPACING="0" CELLPADDING="3" ><TR><TD VALIGN="top" ALIGN="left" WIDTH="20"><FONT FACE="helvetica, arial" SIZE="2"><B>n</B></FONT></TD><TD> </TD><TD>Refers to the option number assigned to each function shown
in the main body of the program.</TD></TR>
<TR><TD VALIGN="top" ALIGN="left" WIDTH="20"> </TD><TD> </TD><TD>Indicates an intentional blank.</TD></TR>
<TR><TD VALIGN="top" ALIGN="left" WIDTH="195"><B>ACCESS</B></TD><TD> </TD><TD>Indicates the user access mode, or how the database
was opened for a particular routine. Note that for this model the
user access mode is always 1 (shared modify access).</TD></TR>
</TABLE>
<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="3" ><TR><TD VALIGN="top" ALIGN="left" COLSPAN="3"><I>Buffer_Name</I> <B>is made up of</B> <BR><I>data item name</I> <I>data item name</I> <I>data item name</I>
<I>data item name</I></TD><TR><TD VALIGN="top" ALIGN="left"><IMG SRC="../../../images/pixel.gif" width=195 HEIGHT="1"></TD><TD> </TD><TD>Indicates that a data structure is being used.
<I>Buffer_Name</I> is the name given to the structure,
and <I>data item name</I> is the name given to the
individual parts of that record.</TD></TR>
<TR><TD VALIGN="top" ALIGN="left" WIDTH="195"><B>BEGIN MAIN LINE</B></TD><TD> </TD><TD>Indicates the beginning of the main body of the
program.</TD></TR>
<TR><TD VALIGN="top" ALIGN="left" WIDTH="195"><B>BEGIN ROUTINE</B></TD><TD> </TD><TD>Indicates the beginning of a routine.</TD></TR>
<TR><TD VALIGN="top" ALIGN="left" WIDTH="195"><B>CALL</B> <I>procedure</I></TD><TD> </TD><TD>Calls the specific TurboIMAGE/XL intrinsic or internal procedure
to be used in this particular portion of the routine, and specifies
the values for each parameter.</TD></TR>
<TR><TD VALIGN="top" ALIGN="left" WIDTH="195"><B>CALLED BY</B></TD><TD> </TD><TD>Refers to that portion of the program which called
the routine.</TD></TR>
</TABLE>
<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="3" ><TR><TD VALIGN="top" ALIGN="left" WIDTH="195"><B>CALLS</B></TD><TD> </TD><TD>Specifies the TurboIMAGE/XL intrinsic (library procedure)
or the internal program procedure called by the routine. Note that
the intrinsics are listed in the order in which they are used in
the routine; as a result, some may be listed more than once. Note
that the mode for each call is also shown.</TD></TR>
<TR><TD VALIGN="top" ALIGN="left" WIDTH="195"><B>DISPLAY</B></TD><TD> </TD><TD>Displays any specified data.</TD></TR>
<TR><TD VALIGN="top" ALIGN="left" WIDTH="195"><B>END LOOP</B></TD><TD> </TD><TD>Indicates the end of an iterative block.</TD></TR>
<TR><TD VALIGN="top" ALIGN="left" WIDTH="195"><B>END MAIN LINE</B></TD><TD> </TD><TD>Indicates the end of the main body of the program.</TD></TR>
<TR><TD VALIGN="top" ALIGN="left" WIDTH="195"><B>END ROUTINE</B></TD><TD> </TD><TD>Indicates the end of a routine.</TD></TR>
<TR><TD VALIGN="top" ALIGN="left" WIDTH="195"><B>ERROR CHECKING</B></TD><TD> </TD><TD>If error found, calls a routine that checks the
contents of the status array to determine what action to take.</TD></TR>
<TR><TD VALIGN="top" ALIGN="left" WIDTH="195"><B>EXIT LOOP</B> <I>condition</I></TD><TD> </TD><TD>Indicates the condition which terminates an iteration.</TD></TR>
<TR><TD VALIGN="top" ALIGN="left" WIDTH="195"><B>Not_Used_Parm</B></TD><TD> </TD><TD>Indicates a dummy parameter when a particular intrinsic call
does not use a specific parameter.</TD></TR>
<TR><TD VALIGN="top" ALIGN="left" WIDTH="195"><B>OBJECTIVE</B></TD><TD> </TD><TD>States the purpose of each routine.</TD></TR>
<TR><TD VALIGN="top" ALIGN="left" WIDTH="195"><B>OBTAIN</B> <IMG BORDER="0" SRC="../../../images/lower/larr.gif"><CODE><B>user input</B></CODE></TD><TD> </TD><TD>Allows the user to enter the required information interactively.</TD></TR>
<TR><TD VALIGN="top" ALIGN="left" WIDTH="195"><B>OBTAIN</B> <I>parameter</I><IMG BORDER="0" SRC="../../../images/lower/larr.gif"><I>value</I></TD><TD> </TD><TD>Indicates the assignment of a value to a parameter.<HR><TABLE BORDER="0" CELLPADDING="0"
CELLSPACING="3"><TR><TD VALIGN="top" ><IMG SRC="../../../images/noteicon.gif" BORDER="0"></TD><TD VALIGN="top"><B>For Pascal programmers only: Note
that parameters cannot be odd-byte aligned.</B></TD></TR>
</TABLE>
<HR></TD></TR>
<TR><TD VALIGN="top" ALIGN="left" WIDTH="195"><B>RETURN</B></TD><TD> </TD><TD>Transfers control to the beginning of the iterative
block in which it is used.</TD></TR>
<TR><TD VALIGN="top" ALIGN="left" WIDTH="195"><B>START LOOP</B></TD><TD> </TD><TD>Indicates the beginning of an iterative block.</TD></TR>
</TABLE>
<HR>
<!--stopindex-->
<!-- prev/next table-->
<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0" WIDTH="100%"><TR>
<TD VALIGN="top" WIDTH="50%" ALIGN="left">
<TABLE WIDTH="100%" CELLPADDING="0" CELLSPACING="0" BORDER="0">
<TR><TD VALIGN="top" ALIGN="left">
</TD></TR>
</TABLE>
</TD><TD VALIGN="top" WIDTH="50%" ALIGN="right">
<TABLE WIDTH="100%" CELLPADDING="0" CELLSPACING="0" BORDER="0">
<TR><TD VALIGN="top" ALIGN="right">
<A HREF="../../00/00/69-con.html"><FONT SIZE="2">ORDERS Database Model Program</FONT></A>
<A HREF="../../00/00/69-con.html"><IMG SRC="../../../images/rightarrow.gif" BORDER="0" HSPACE="3" VSPACE="2"></A>
</TD></TR>
</TABLE>
</TD></TR>
</TABLE>
<!--startindex-->
<!--end of fragment--></BODY></HTML>
Stan Sieler [log in to unmask]
www.allegro.com/sieler/wanted/index.html www.allegro.com/sieler
|