Archive-Date: Sun, 02 Apr 1995 19:54:37 CDT
Sender: owner-litprog@SHSU.edu
From: night648@aol.com (Night648)
Subject: Re: Window Interupts
Date: 2 Apr 1995 20:48:10 -0400
Message-ID: <3lngka$2ge@newsbf02.news.aol.com>
Reply-To: LitProg@SHSU.edu, night648@aol.com (Night648)
To: LitProg@SHSU.EDU

I'm trying to make a TSR (written in assembly) that will run in windows. 
I want
it to be activated by a keystroke, but windows replaces the 09h interupt
with its
own I guess? :(   Could someone e-mail me either a lists of interupts I
can hook
through an assembly program (that won't be taken over by windows or that
can
be activated once in windows) or on how to solve my problem with the 09h
int.

E-mail Please.
Thanx in Advance.
================================================================================
Archive-Date: Mon, 03 Apr 1995 10:29:08 CDT
Sender: owner-litprog@SHSU.edu
From: cnas30@ccsun.strath.ac.uk (E. St. John-Olcayto)
Subject: LP and Certification
Date: 3 Apr 1995 14:54:19 GMT
Message-ID: <3lp26r$fhf@rockall.cc.strath.ac.uk>
Reply-To: LitProg@SHSU.edu, cnas30@ccsun.strath.ac.uk
Keywords: ISO 9000, TickIT, certification
To: LitProg@SHSU.EDU

I' looking for comments from people/organisatrions who have used or intend
to use LP as part of the certification procedure for software quality
assurance standards suchas ISO 9000 (the S/W part), TickIT (UK std I think)
and other intl. stds.
Thanks,
Ender. #include<std_disclaimer.>
---
================================================================================
Archive-Date: Mon, 03 Apr 1995 12:30:53 CDT
Sender: owner-litprog@SHSU.edu
From: p86@aixterm1.urz.uni-heidelberg.de (mahilata)
Reply-To: LitProg@SHSU.edu, p86@AIXTERM1.URZ.UNI-HEIDELBERG.DE
Subject: cleaner hyper[f]web
Date: 3 Apr 1995 15:30:37 GMT
Message-ID: <3lp4at$sm6@sun0.urz.uni-heidelberg.de>
Keywords: hypertex, web, Bhattacharya
To: LitProg@SHSU.EDU


I did make true my (half) promise of last week, probe into fweave
and came up with something which may be applied at least to
pascal web, cweb, spiderweb since they are of common origin.
I did it for fweb.


first the hyperfweave.ch:

=================================================================
  --  --  hyperfweave.ch  --  --




@x
@ Here is a macro that outputs a module number in decimal notation.  The
number to be converted by |out_mod| is known to be less than |def_flag|, so
it cannot have more than five decimal digits.  If the module is changed, we
output~`\.{\\*}' just after the number.

@<Part 2@>=@[
 
SRTN out_mod FCN((n))
	sixteen_bits n C1("Module number.")@;
{
char s[6];

sprintf(s,"%u",n); OUT_STR(s);

if(chngd_module[n]) OUT_STR("\\*");
}
@y
@ Here is a macro that outputs a module number in decimal notation.  The
number to be converted by |out_mod| is known to be less than |def_flag|, so
it cannot have more than five decimal digits.  If the module is changed, we
output~`\.{\\*}' just after the number.

This one surrounds the module number by a macro call. It is up to
some fwebmac modification what to do with it. The intended use
is to hypertex a web. See |'Hyperfweb.tex'| for reference.

@<Part 2@>=@[
 
SRTN out_mod FCN((n))
	sixteen_bits n C1("Module number.")@;
{
char s[6];

sprintf(s,"\\HySR{%u}",n); OUT_STR(s);

if(chngd_module[n]) OUT_STR("\\*");
}
@z

=================================================================



second the new Hyperfweb.tex

=================================================================
%  --  --  Hyperfweb.tex  --  --
%
% This one does the hame thing for fweb as Tanmoy Bhattacharyya's
%  hyperweb.tex does for Pascal web but without the input hacking hacks
%
% It rather assumes an fweave where every occurrence of a module number
%  is screened by a macro call, so that the macros downbelow
%  only have to swich meaning of one macro, according to context
%
% Please note that this is a supplement not a replacement
%  for fwebmac.sty
%
%
\input hyperbasics
\def\HySRnull#1{#1}
\let\HySR=\HySRnull
\def\HySRef#1{\hyperref{}{section}{#1}{#1}}
%
%
%
%
%


\def\note#1#2.{\WY\noindent{\let\HySR=\HySRef
	\hangindent2em\baselineskip10pt\eightrm#1~#2.\par}}



\def\startsection{\WQ\noindent{\let\*=\empty\bf\hyperdef\hypernoname
                   {section}{\modstar}{\let\*=\lapstar\modstar.}%
\ifx\includefile\empty\else\ [{\tt\includefile}]\fi\quad}}


\def\WX#1:#2\X#3\X{\ifmmode\gdef\XX{\null$\null}\else\gdef\XX{}\fi
	\XX$\langle\,$#2{\let\HySR=\HySRef
		\eightrm\kern.5em#1}$\,\rangle^{\rm #3}$\XX}


\def\lheader{\mainfont\hyperdef\hypernoname{page}{\the\pageno}%
             {\the\pageno}\eightrm\qquad\Whead\hfill\Wtitle\qquad
	\ifnum\pageno=\contentspageno\else
		\tensy x\mainfont\Wmodno
	\fi}


\def\rheader{\ifnum\pageno=\contentspageno\else
		\tensy x\mainfont\Wmodno
	\fi
	\eightrm\qquad\Wtitle\hfill\Whead
	\qquad\mainfont\hyperdef\hypernoname{page}{\the\pageno}%
             {\the\pageno}}


\newbox\hyperbox
\newif\iffooter\footertrue


\def\normaloutput#1#2#3{
	\ifodd\pageno\hoffset=\pageshift\fi
	\shipout\vbox
		{
		\vbox to\fullpageheight
			{
			\iftitle\global\titlefalse
			\else \hbox to\pagewidth
				{\vbox to10pt{}%
				\ifidenticalpageheads#2\else
				\ifodd\pageno
					#3% Pg nos alternate left \& right.
				\else#2\fi
				\fi
				}%	
			\fi
			\vfill#1% Parameter |#1| is the page itself.
			\iffooter\vfill\copy\hyperbox\fi
			}
		}
	\global\advance\pageno by1}


{\boxmaxdepth=0pt\relax\global
\setbox\hyperbox\hbox to \pagewidth{GO TO:\hfil\hyperref{}{page}{1}{first 
      page}\hfil\hyperref{}{section}{INDEX}{Index}\hfil\hyperref{}{section}%
      {SECTIONS}{Section Names}\hfil\hyperref{}{section}{CONTENTS}{Contents}}}
\iffooter\advance\pageheight by -\ht\hyperbox\setpage\relax\fi


\def\Winx{\par\vskip6pt plus 1fil
	\let\HySR=\HySRef
        \write\cont{}% Ensure that the contents file isn't empty
        \closeout\cont % The contents information has been fully gathered
        \output{\ifpagesaved\normaloutput{\box\Sbox}\lheader\rheader\fi
                \global\setbox\Sbox=\page \global\pagesavedtrue}
        \pagesavedfalse \eject % Eject the page-so-far and predecessors
        \setbox\Sbox\vbox{\unvbox\Sbox}% Take it out of its box
        \vsize=\pageheight \advance\vsize by -\ht\Sbox % The remaining height
        \hsize=.5\pagewidth \advance\hsize by -10pt
                % Column width for the index (20pt between cols)
        \parfillskip 0pt plus .6\hsize % Try to avoid almost empty lines
        \def\lr{L}% This tells whether the left or right column is next
        \output{\if L\lr\global\setbox\Lbox=\page \gdef\lr{R}
                \else\normaloutput{\vbox to\pageheight{\box\Sbox\vss
                \hbox to\pagewidth{\box\Lbox\hfil\page}}}\lheader\rheader
                \global\vsize\pageheight\gdef\lr{L}\global\pagesavedfalse\fi}
%%  \message{Index:}
	\parskip 0pt plus .5pt
	\outer\def\:##1, {\par\hangindent2em\noindent##1:\kern1em}% Index entry
	\def\[##1]{$\underline{##1}$}% Underlined index item
	\def\(##1){$^{\rm ##1}$}% Language marker
	\hyperdef\hypernoname{section}{INDEX}{}%
	\let\Windexspace\medskip % Spacing between letter groups in index.
	\rm \rightskip0pt plus 2.5em \tolerance 10000 \let\*=\lapstar
	\hyphenpenalty 10000 \parindent0pt}


\def\Wfin{\par\vfill\eject
	\ifpagesaved\null\vfill\eject\fi % Output a null index column
	\if L\lr\else\null\vfill\eject\fi % Finish the current page
	\parfillskip 0pt plus 1fil
	\def\rhead{NAMES OF THE SECTIONS}
	\output{\normaloutput\page\lheader\rheader}
	\setpage
	\hyperdef\hypernoname{section}{SECTIONS}{}%
	\def\note##1##2.{\quad{\eightrm##1 ##2.}}
	\def\WU{\note{Used in }}% Cross-reference for uses of sections
	\def\:{\par\hangindent 2em}\let\*=*}



\def\Wcon{\par\vfill\eject
	\rightskip 0pt \hyphenpenalty 50 \tolerance 200
	\setpage
	\output{\normaloutput\page\lheader\rheader}
	\titletrue % Prepare to output the table of contents
	\hyperdef\hypernoname{section}{CONTENTS}{}
	\pageno=\contentspageno \def\rhead{TABLE OF CONTENTS}
	\topofcontents
	\catcode`\@=11
	\hbox to\hsize{\hfil Section\hbox to3em{\hss Page}}
	\def\WZ##1##2##3##4{\hbox to\hsize{\kern##1em\ignorespaces##2
		\leaders\hbox to .5em{.\hfil}\hfil\ %
		\let\preserve=\*\let\*=\empty
		\hyperref{}{section}{##3}{\let\*=\preserve##3}%
		\hbox to3em{\hss\hyperref{}{page}{##4}{##4}}}}
	\let\WIM\WIN % Restore the proper definition.
	\readcontents\relax % Read the contents info.
	\botofcontents
	\FWEBend}
=================================================================

 -- mahilata
================================================================================
Archive-Date: Mon, 03 Apr 1995 20:02:39 CDT
Sender: owner-litprog@SHSU.edu
From: Tom Mackenzie <tomm@bnr.ca>
Reply-To: LitProg@SHSU.edu, tomm@BNR.CA
Subject: Web/Weave/Tangle for FrameBuilder(Maker)
Date: 3 Apr 1995 21:48:01 GMT
Message-ID: <3lpqeh$37l@bcarh8ab.bnr.ca>
To: LitProg@SHSU.EDU

Is there a public domain or 3rdparty implementation of the 
WEB system of Structured Documentation for Frame Builder or Maker?

Is there one for SGML or HTML?

Tomm

================================================================================
Archive-Date: Wed, 05 Apr 1995 01:17:46 CDT
Sender: owner-litprog@SHSU.edu
From: murth@aol.com (Murth)
Subject: Shareware Complier
Date: 4 Apr 1995 19:36:36 -0400
Message-ID: <3lsl64$6kh@newsbf02.news.aol.com>
Reply-To: LitProg@SHSU.edu, murth@aol.com (Murth)
To: LitProg@SHSU.EDU

Could someone send me the ftp site name or the program itself to:
Murth@aol.com

Thanks in advance
 Patrick
================================================================================
Archive-Date: Wed, 05 Apr 1995 01:20:00 CDT
Sender: owner-litprog@SHSU.edu
From: noy@OCF.Berkeley.EDU (David Noy)
Reply-To: LitProg@SHSU.edu, noy@OCF.BERKELEY.EDU
Subject: Reading the COM port, how do i do it right?
Date: 5 Apr 1995 02:04:12 GMT
Message-ID: <3lstqs$2bu@agate.berkeley.edu>
To: LitProg@SHSU.EDU

Newsgroups: comp.dcom.modems
Subject: data transfer rate and settings for modem and com port (help me)
Summary: 
Expires: 
Sender: 
Followup-To: 
Distribution: 
Organization: U. C. Berkeley Open Computing Facility
Keywords: 
Cc: 

I am developing software which requires reading a device off of the
com port.. 	If  I use windows' terminal program and
set the data settings to 7e1 9600 baud then the data comes
in correctly, if I read in the data myself at a much faster speed
using repeated calls to inpw(com1_address) in C I get garbage...

Can anyone suggest to me how I can adjust my sampling rate to match
9600 baud if that is necessary (in the source code) and how I can take
in the data from the com port which I thought was 8n1 and convert the
data which is comming in 7e1... 


ANY HELP WOULD BE GREATLY APPRECIATED!!

-DAVE NOY
U.C. BERKELEY PLANT ECOLOGY AND PHYSIOLOGY LAB

================================================================================
Archive-Date: Wed, 05 Apr 1995 01:27:56 CDT
Sender: owner-litprog@SHSU.edu
From: duncan@yc.estec.esa.nl (Duncan Gibson)
Reply-To: LitProg@SHSU.edu, duncan@YC.ESTEC.ESA.NL
Subject: Summary: Is there a complete documentation system? Part 2/6
Message-ID: <D6ItqC.IBr@yc.estec.esa.nl>
Date: Tue, 4 Apr 1995 17:25:23 GMT
To: LitProg@SHSU.EDU


From: Bill Davis <wdavis@dw3f.ess.harris.com>

|> Documents used in large projects, whether the projects involve
|> software, manufacturing processes, or complex pieces of hardware such
|> as skyscrapers and the space shuttle, usually run to hundreds and
|> thousands of pages. To make the documentation manageable, it is
|> normally divided into a series of smaller documents. Typically these
|> documents tend to be written by different groups of people, all
|> involved in their own fields, and the documents tend to duplicate
|> definitions for things, or describe interfaces between groups, systems
|> or objects from both sides of the interface.

The documents produced will depend on the work process used for a
project. In large US government contract projects, there are often
standards specified in the contract.

|> Does anyone know whether there is a documentation system which
|> supports a more object oriented view of such large projects? For
|> example, if the hardware uses a switch, then the attributes of the
|> switch are only described in one place. If the mechanical structures
|> people need to know about the dimensions and weight of the switch, the
|> information is retrieved from the switch document. If the electrical
|> engineers need to find out what the operating parameters of the switch
|> are, they get that information from the switch document. Of course
|> there are all sorts of questions about configuration control for the
|> documents if the switch manufacturer changes some of the properties of
|> the switch and higher documents need to be consistent.

I have worked on projects where the switch gets described in multiple
documents. This may initially seem like a disadvantage, but when each
document describes only the attributes of interest, then any switch can
be substituted which meets the specified criteria. This is an
over-simplified statement, but it shows the advantage of not having a
single switch description.

|> We've been wracking our brains trying to work out who would even know
|> about such a system - hence the assorted newsgroups - and apart from a
|> vague assumption that this is the sort of thing that companies involved
|> in huge manufacturing/construction projects might be interested in, we
|> don't even have a handle on where to start looking. Does anyone have
|> any ideas at all?

You could document something in the same way that NASA documents the
space shuttle. You could document something the way an aircraft company
documents a new airplane. The big question is whether you want that
type of documentation. The more basic question you need to ask is "Why
am I going to document this?" Detailed answers to that question tell
you what you need in your documentation system. You may find that you
have different audiences and thus need to describe the same switch in
different documents from the point of view of the reader. The operator
of a piece of equipment will have a different view of the switch from
the designer. They will have different needs.

|> There are quite a few ways in which I have idly considered that it
|> could be done. It could boil down to an object oriented approach to
|> documentation, but maybe without the information hiding that OO
|> software systems tend to use. or maybe it's a documentation system
|> built on top of a huge database with the means of naming objects and
|> their attributes from the database. You could also consider it to be
|> the ultimate in hypertext documents. I really don't know where to
|> start thinking about such a system.

Information hiding is similar to the idea of multiple views in a
database. It has the same value when used properly because it provides
a way to speak to different audiences.

Decide what you are trying to accomplish with your documentation. Then
you will be better able to determine what you need.

Bill Davis wdavis@dw3f.ess.harris.com

###########################################################################
###########################################################################
This is my article, not my employer's, with my opinions and my disclaimer!
--
Duncan Gibson, ESTEC/YCV, Postbus 299, 2200AG Noordwijk, The Netherlands
Tel: +31 1719 84013   Fax: +31 1719 12142  Email: duncan@yc.estec.esa.nl
================================================================================
Archive-Date: Wed, 05 Apr 1995 01:28:08 CDT
Sender: owner-litprog@SHSU.edu
From: duncan@yc.estec.esa.nl (Duncan Gibson)
Reply-To: LitProg@SHSU.edu, duncan@YC.ESTEC.ESA.NL
Subject: Summary: Is there a complete documentation system? Part 1/6
Message-ID: <D6Itnx.IA0@yc.estec.esa.nl>
Date: Tue, 4 Apr 1995 17:23:56 GMT
To: LitProg@SHSU.EDU


I recently posted an article to a wide range of newsgroups asking for
information for details about any documentation systems which used an
"object oriented" approach to the documents themselves. I have had one
of the best responses I have ever had to a request for information.

In trying to track down this information, so many people expressed their
interest in such a documentation system, and it was surprising how many
said "it's such a simple and obvious idea, there must be something out
there that can do what you want" but were then unable to come up with
anything more concrete. Nevertheless, these people usually had some
useful contacts who were then able to help me out.

I would like to post a summary of the information that I have collected
in the last two weeks. I am merely the "gopher" and have already passed
this information on to the person who really wanted it, so I havn't
followed up on any of these suggestions personally. As a result, I have
no experience of using any of these products and techniques, nor can
I give any specific recommendations.

The replies that I had ranged from general comments about deciding what
the documentation system is really intended for, pointers to various
research work in the area, information about hypertext systems and tools
encompassing SGML and database systems. I have attempted to incorporate
as many of the relevant replies into this summary as possible. In most
cases I have removed any quotation of my original article to save space
so I apologise if some points may not be clear from the reply. You will
need to read them in conjuntion with the original which you can find at
the bottom of this particular article. I have grouped the relies into
related topics and have split the complete summary over several parts:

    Part1:  Introduction to the summary (this article)
    Part2:  General comments about documentation systems
    Part3:  Research work on such documentation systems
    Part4:  Product information: 1
    Part5:  Product information: 2
    Part6:  Product information: 3

I would like to thank all of those people who took the time and effort
to reply, even those whose contribution didn't make it into the summary
because it duplicated someone else's, or who merely pointed me in the
direction of someone else who knew more:

    "Bill Davis" <wdavis@dw3f.ess.harris.com>
    "Claude L. Bullard" <bullardc@source.asset.com>
    "Jared L. Black" <erpdjlb@moment.unocal.com>
    "Kevin Johnson" <krj@kevin.world.std.com>
    "Steven R. Newcomb" <srn@techno.com>
    Arthur Seaton <arthur@aiai.edinburgh.ac.uk>
    Bill Davis <wdavis@dw3f.ess.harris.com>
    Bradley Yearwood <bny@crl.com>
    Digitome Ltd <digitome@iol.ie>
    Fred K Weil <fredw@fred1.demon.co.uk>
    Jan Grootenhuis <jang@xs4all.nl>
    John Krieger <john.krieger@srs.gov>
    John Mertl/MSL <John_Mertl@newman.microstar.com>
    Mark Bullock <100273.722@compuserve.com>
    Mike McNamara <mike@xyvuk.com>
    alain godbout <sherpa@sherpa.synpase.net>
    anallon@nile.slate.tdtech.com
    aq083@freenet.carleton.ca (J. Arnold Free)
    bill.fernandez@documentum.com (Bill Fernandez)
    david@inf.rl.ac.uk
    design@mr.net (Mark Wright)
    dick@blaze.csci.csusb.edu (Dr. Richard Botting)
    freeman-eric@CS.YALE.EDU (Eric Freeman)
    haim@cc.bellcore.com (Haim Kilov)
    iphase!digi!talisman!garylion@uunet.uu.net
    jdking@space.honeywell.com
    jdry@aol.com (Jdry)
    jflavin@rain.org ()
    john.newton@documentum.com (John Newton)
    john@thunderstone.com (John Turnbull)
    kjs@ebt.com (Kent Summers)
    kevind@zNET.com (Kevin Dick)
    kirchh@aol.com
    kliang@mercury.raynet.com (Kevin Liang)
    lupl@ensae.ericsson.se (Luitzen Planting)
    meldahl@idt.unit.no
    mvulpe@i4i.org (Michel Vulpe)
    nagarajg@versant.com
    parnas@qusunt.crl.McMaster.CA (David Parnas)
    paula@texcel.no (Paula Angerstein)
    robert@unisql.unisql.com (Robert Albach)
    sampson@nile.slate.tdtech.com (Mark Sampson)
    seixas@wolf.itg.ti.com (John Seixas)
    suthers+@pitt.edu
    tinkrkel@america.net (Kelly Caldwell)
	vam@inf.rl.ac.uk

Please note that I tried to ask for permission via email to repost
all of the replies which I received. Unfortunately some of the email
didn't get through, so I do not feel able to include those people's
contributions. This is a bit of a shame, because there are several
interesting replies. If these people are reading, please follow-up
this summary and post your replies.

So, I hope that everyone out there will find this summary useful.

Cheers
Duncan

This is my article, not my employer's, with my opinions and my disclaimer!
--
Duncan Gibson, ESTEC/YCV, Postbus 299, 2200AG Noordwijk, The Netherlands
Tel: +31 1719 84013   Fax: +31 1719 12142  Email: duncan@yc.estec.esa.nl

###########################################################################
###########################################################################

Newsgroups: alt.cad,comp.databases.object,comp.groupware,
    comp.infosystems,comp.object, comp.programming.literate,
    comp.software-eng,comp.specification,comp.text,comp.text.sgml,
    sci.engr.civil,sci.engr.manufacturing,sci.engr.mech,
    sci.space.shuttle
Subject: Question: is there a complete documentation system?

Firstly I apologise for the wide cross-section of newsgroups, and I know
that this might not be completely relevant to all of them, but I did
choose them carefully.

Documents used in large projects, whether the projects involve software,
manufacturing processes, or complex pieces of hardware such as
skyscrapers and the space shuttle, usually run to hundreds and thousands
of pages.  To make the documentation manageable, it is normally divided
into a series of smaller documents.  Typically these documents tend to
be written by different groups of people, all involved in their own
fields, and the documents tend to duplicate definitions for things, or
describe interfaces between groups, systems or objects from both sides
of the interface.

Does anyone know whether there is a documentation system which supports
a more object oriented view of such large projects?  For example, if the
hardware uses a switch, then the attributes of the switch are only
described in one place.  If the mechanical structures people need to
know about the dimensions and weight of the switch, the information is
retrieved from the switch document.  If the electrical engineers need to
find out what the operating parameters of the switch are, they get that
information from the switch document.  Of course there are all sorts of
questions about configuration control for the documents if the switch
manufacturer changes some of the properties of the switch and higher
documents need to be consistent.

We've been wracking our brains trying to work out who would even know
about such a system - hence the assorted newsgroups - and apart from a
vague assumption that this is the sort of thing that companies involved
in huge manufacturing/construction projects might be interested in, we
don't even have a handle on where to start looking.  Does anyone have
any ideas at all?

There are quite a few ways in which I have idly considered that it could
be done.  It could boil down to an object oriented approach to
documentation, but maybe without the information hiding that OO software
systems tend to use.  or maybe it's a documentation system built on top
of a huge database with the means of naming objects and their attributes
from the database.  You could also consider it to be the ultimate in
hypertext documents.  I really don't know where to start thinking about
such a system.

Cheers
Duncan

This is my article, not my employer's, with my opinions and my disclaimer!
--
Duncan Gibson, ESTEC/YCV, Postbus 299, 2200AG Noordwijk, The Netherlands
Tel: +31 1719 84013   Fax: +31 1719 12142  Email: duncan@yc.estec.esa.nl
================================================================================
Archive-Date: Wed, 05 Apr 1995 01:28:12 CDT
Sender: owner-litprog@SHSU.edu
From: duncan@yc.estec.esa.nl (Duncan Gibson)
Reply-To: LitProg@SHSU.edu, duncan@YC.ESTEC.ESA.NL
Subject: Summary: Is there a complete documentation system? Part 3/6
Message-ID: <D6ItrL.ICI@yc.estec.esa.nl>
Date: Tue, 4 Apr 1995 17:26:08 GMT
To: LitProg@SHSU.EDU


From: parnas@qusunt.crl.McMaster.CA (David Parnas)

For the last 5 - 8 years, my group and I have been researching the 
topic of documentation and proposed both definitions of documents
and some new notations for use in them. I feel confident in saying
that our approach, while conventional in some ways, is quite consistent
with OO approaches.  However, our emphasis has been on the use of 
conventional mathematical concepts in this documentation.

Prof. David Lorge Parnas
Communications Research Laboratory
Department of Electrical and Computer Engineering
McMaster University, 
Hamilton, Ontario  Canada L8S 4K1

Telephone: 905 525 9140 Ext. 27353
Telefax:   905 521 2922
Telephone at home: 905 648 5772
Telefax at home: 905 648 5943
email: parnas@triose.crl.mcmaster.ca

###########################################################################
###########################################################################

From: dick@blaze.csci.csusb.edu (Dr. Richard Botting)

I'm note sure if there is any tool capable of the job.  The research is 
hardly of the ground yet!

My Masters Student Graham Tyack in the 1970's at Brunel University, London, UK
did some preliminary work on a design data base for large scale
system: such as: A coffe pot or an Airfield control system.

You might try the following book which is also heading in the same
direction:
Dasgupta 91, Subrata Dasgupta, Design Theory and Computer Science: 
    Processes and Methodology of Computer Systems Design, Cambridge U 
    Press NY NY 1991(Tracts in theoretical Comp Sci),  engineering 
    methodology, Reviews: CR9207-0475,  Am Math Monthly V100n4(Apr 93)
    page 423

The term object oriented is a little misleading here since the idea
of documenting a thing once and then refereing to it else where is
found in data bases, data dictionaries, and some 1980's software
design methods.

You might get some ideas from:
Klein 93, Mark Klein, Capturing Design Rationale in a Concurrent 
    Engineering Teams , IEEE Computer Magazine V26n1(Jan 93)pp39-47

Tracz Coglianese & Young 93, Will Tracz & Lou Coglianese & Patrick 
    Young<tracz@vnet.ibm.com>, A Domain-Specific Software Architecture
    Engineering Process Outline, ACM SIGSOFT Software Engineering Notes
    V18n2(Apr 93)pp40-49, Teamware Process Programming Language and 
    diagrams

Nerson 92, Jean-Marc Nerson, Applying Object-Oriented Analysis and Design,
    (Special Issue: Modelling) Comm ACM V35n9(Sep 92)pp63-74

For software only, the Feb issue of IEEE Trans on Software Engineering
has a paper on design documenttion with hypertext and objects.
The SIGCSE Software Engineering notes have had several papers
on the value of hypertext in (software)design.
My experiments with the rather over-simple WWW hypertext system and language
make hypertext an attractive proposition.  The link in my signature
leads into a immature hypertext web of documentation... explore if
you can.  It'll be like wanering around a laboratory when experiments are
going on however.... because it *is* my lab.

As you can see this is a topic I'm interested in... please
let me (or the comp.specification newsgroup) what you find.

--
dick@csci.csusb.edu=rbotting@wiley.csusb.edu.
Disclaimer::=`CSUSB may or may not agree with this message`.
Copyright(1995)::=Copy this freely but include the following link to the
<a href="http://www.csci.csusb.edu/dick/signature.html">author's 
    signature</a>

###########################################################################
###########################################################################

From: haim@cc.bellcore.com (Haim Kilov)

Yes. These are the right questions about managing the _intellectual
contents_ of documents. I don't know about a documentation system for
doing so (yet), but we have recently published in Bellcore a
description of the problems and some possible solutions based on
information modeling. There have been also conference and journal
publications. Obviously, system vendors are welcome!

Here's an abstract of this Bellcore document:

ST-2011, A Document Management Model, has been released in 
December 1994.

This publication presents a document management model used to 
understand and manage (telecommunications) documents of any 
kind. The model is essential, in particular, for those who wish to 
become content providers. It applies both to traditional paper 
documents and to hypertext and hypermedia ones, but 
concentrates on the currently used traditional documents. The 
model clearly distinguishes between three big viewpoints: the 
intellectual content, the logical layout, and the physical 
presentation. The model clearly separates the concerns of document 
semantics (explicit concept map) from the concerns of document 
architectonics (logical layout): the business meaning of the 
information does not depend on its presentation. The concepts and 
approach presented in this publication are neutral with respect to 
tools and technology used for document management.

Document users -- including document authors and managers -- 
acknowledge the need to understand documents by precisely 
specifying their intellectual contents. It has been stressed by many 
that businesses do not want or need fancy documents: they need 
solution of their business problems.

All documents, regardless of medium (paper or electronic), have 
essentially the same semantic properties that have to be understood 
and explicitly dealt with. It is known how to understand and specify 
information semantics in other application areas, and this 
knowledge can be reused, leading to success and customer 
satisfaction. As a result, a document user (including the author!) 
will be able to understand, explicitly specify, and reuse the business 
meaning -- the intellectual content -- of the information contained 
in documents.

This model is based on general information modeling concepts that 
have been developed in Bellcore and successfully used in other 
application areas, most notably, in telecommunications, with the 
goal of exposing appropriate business rules.

The audience of this ST includes all kinds of document users: 
document authors, readers, browsers, and managers. It includes 
also specialists in standardization, in particular, technology (e.g., 
SGML) standardization.

To obtain, call Bellcore customer service 1-800-521-2673, or fax
908-336-2559.

-Haim Kilov
haim@cc.bellcore.com

###########################################################################
###########################################################################

From: duncan@yc.estec.esa.nl

I talked to 'Toria Burril at RAL. They are currently working
one extension to HTML to provide ways of printing a flat 
document from an HTML tree. You can find info in:

    http://www.cis.rl.ac.uk/proj/www/docs/lightweight

She also said that it might be worth contacting Owl International
about their GUIDE product, or just ask for info. No contact details
yet, although I should be able to find something in BYTE or one
of those journals.

###########################################################################
###########################################################################

From: vam@inf.rl.ac.uk

There shouldn't be a problem in advertising the Lightweight
paper URL providing people realise that it's on-going research
so likely to change. (But then many things do this anyway!)

    Victoria

###########################################################################
###########################################################################

From: John Krieger <john.krieger@srs.gov>

This sounds like a good application for the Standard Generalized Markup
Language (SGML). I didn't see your post in comp.text.sgml, so you might
want to trim it a bit and try there. Specifically, some people in the
STEP/PDES community are working on some of these kinds of issues.

On another tack, several years ago I and a couple of colleagues
developed tools for diagrams and procedures that linked into an
object-oriented database such that when you created a diagram or
procedure, you incorporated references to all of the objects. When the
diagrams or procedures were displayed, you could perform operations on
the objects (e.g., start a pump, close a valve).

Let me know if you would like more info; I may be able to provide some.

John Krieger, Westinghouse

###########################################################################
###########################################################################

From: Jan Grootenhuis <jang@xs4all.nl>

I am not aware of all your exact requirements, but the following must be
interesting.

Some years ago, a Han Schouten made a data model of SGML.  This enables
one to store an SGML document in a semantically equivalent database, and
giving you the best of both worlds.  His work was published in the last
SGML UG Bulletin, and discussed in Eric van Herwijnen's Practical SGML,
_First_ Edition.  Han and I built a prototype for Oracle Europe's R&D.
However, Oracle's R&D Director and Han Schouten changed jobs, and our
work was probably shelved; however, we still have all code.  Han's ideas
were also used to make a product SGML-DB used by Aerospatiale in France.
I would be very interested in diwscussing this approach with you, if you
like.

Regards,
Jan
-- 
Jan Grootenhuis    Kralenbeek 1873    1104 KJ  AMSTERDAM    The Netherlands 
Tel/fax (+31)20-699.89.66   Internet jang@xs4all.nl

###########################################################################
###########################################################################

This is my article, not my employer's, with my opinions and my disclaimer!
--
Duncan Gibson, ESTEC/YCV, Postbus 299, 2200AG Noordwijk, The Netherlands
Tel: +31 1719 84013   Fax: +31 1719 12142  Email: duncan@yc.estec.esa.nl
================================================================================
Archive-Date: Wed, 05 Apr 1995 01:28:16 CDT
Sender: owner-litprog@SHSU.edu
From: duncan@yc.estec.esa.nl (Duncan Gibson)
Reply-To: LitProg@SHSU.edu, duncan@YC.ESTEC.ESA.NL
Subject: Summary: Is there a complete documentation system? Part 6/6
Message-ID: <D6Itx7.IFv@yc.estec.esa.nl>
Date: Tue, 4 Apr 1995 17:29:30 GMT
To: LitProg@SHSU.EDU


From: paula@texcel.no (Paula Angerstein)

Mr. Gibson,

I believe you have spoken with Tushar Patel at Texcel briefly about
out product Information Manager. I am the principal architect and
project manager for Information Manager. I read with interest your
recent posting on the net about the possibilities of managing
documents as a set of objects. We have been thinking along these
lines for several years based on requirements we have experienced
with large manufacturing-based companies. I believe we are
releasing one of the first commercially viable systems for 
integrating document management with engineering data, logistics
information, and product support information.

I would like to speak further with you about your requirements.
I'm not the "sales rep" (that will come later), but I'd like
to see how your needs fit into what we've seen with other
companies. Let me know if it is okay to phone you, and if so,
when it is convenient.

Meanwhile, I'm sending you an email version of the Information
Manager Product Overview. I'll get some nice-looking copy to
you by post.

Looking forward to talking with you,

Paula Angerstein
Texcel UK
phone: +44 1753 833111
email: paula@texcel.no

Information Manager Product Overview        Texcel International
====================================        ====================

Texcel's Information Manager (IM) is an integrated suite of applications
built around an SGML repository. Information Manager provides complete
support for authoring, management, reuse, and auditing of documents and
their constituent parts.

End-user packages for workflow, collaborative authoring, electronic
review, dynamic document assembly, document query and browsing, and
repository administration are all included as a part of Information
Manager.

Key concepts
------------

Reusing information, business processes, software, and expertise is the
key to leveraging existing investments. Taking advantage of new and
enabling technology equips you to respond efficiently and rapidly to
evolving requirements.

Information Manager is designed to increase productivity and reduce
overall cost of document authoring, management, and production through a
combination of robust software components, a well-defined open
architecture, adherence to international standards, and built-in
extensible business processes. The result is a configurable system that
carefully balances turnkey functionality with the necessary
extensibility and customization capabilities to support large scale,
site-specific solutions without having to "reinvent the wheel" with each
system, site, project, or document.

Standards compliance
--------------------

Information Manager adheres to existing and emerging standards wherever
possible to ensure the quality and longevity of its components as well
as to open up the system to popular third-party tools, databases, and
applications:

      - Information Manager rigorously supports the Standard Generalized Markup
    Language (SGML)

      - The data model is compliant with the Object Management Group (OMG)
    object model

      - ANSI SQL2 compliant access is supported between client and repository
    and between repository and third-party RDBMSs

      - The workflow applications comply with the Workflow Management Coalition
    reference model.
 

Product Component Overview
==========================

While each component of Information Manager offers a competitive
solution to a subset of a broader set of requirements, it is Information
Manager taken as a whole that enables new and innovative ways of
managing the business of document authoring, management, and production.
The following sections provide an outline of these components.

Collaborative authoring
-----------------------

Document authoring has traditionally been limited to copying material
from older documents, altering that material, and, of course, creating
original material. The Information Manager authoring package enables
workgroups of authors to work concurrently on documents while being
automatically tied into unlimited bodies of previous work. The ability
to share information, version portions of documents, and stay current
with collaborative efforts frees the author to focus attention on
authoring rather than ancillary tasks of coordination and
administration. Specifically, the authoring tool provides:

Check-out with access control

    Check-out process finds documents and fragments in the repository

    External objects (SGML entities) are automatically included

    Verification of author's access privileges by project, role within
    project, and document content

Compound document editing

    Text

    Graphics

    Tables

    Equations

Document and DBMS Queries

    Interactive assembly of contents

    Query application retrieves and coordinates relevant components and
    metadata in the repository
    
    Configurable display window provides familiar and consistent interface
    to documents

    User access is defined result-by-result permitting updatable, read-only,
    and copy-on-demand objects

Full SGML compliance

    Real-time context-sensitive editing ensures consistent document
    structure and full SGML compliance

    Guided editing simplifies authoring by dynamically indicating 
    contextually valid document objects

    Show or hide SGML markup

    Outline-based editing and navigation based on SGML elements

Highly flexible and extensible

    Automatically supports any SGML DTD

    Configurable menus and key mappings support site-specific interface
    guidelines

Tracks document and component revisions

    Check-in of work generates new versions tied to version history
    simplifying collaborative work

    Version review permits browsing and reuse of earlier work, supplemental
    comments, and project-related metadata

Document query and browsing
---------------------------

Authoring is further enhanced by advanced database query capabilities
carefully crafted to operate over large volumes of highly structured
data. With Information Manager, users can find information no matter how
deeply it is buried in a document anywhere in the repository.

Extended Query Support

    All SGML constructs are completely accessible and referencable within a
    query

    Search criteria can be based upon content, attribute values, structure
    (context) within one or more documents, or any combination in this
    computationally complete query tool

    Automatic query optimization based upon type of query and cost-based
    optimizer assures scalability

Easy to use

    Predefined queries can appear as menu choices
    
    Graphical user interface generates user-defined queries
    
    Advanced syntax for experts

Dynamic document assembly
-------------------------

Documents that assemble themselves automatically out of elements in the
repository are an important component in the complete life-cycle of a
document set, especially for documents dependent on rapidly changing
data or that need to be produced periodically. Document assembly
improves the accuracy and integrity of documents while improving
productivity through automation of repetitive tasks. Information Manager
offers a robust document assembly tool wherein templates dynamically
retrieve document fragments and content via embedded queries, including
the following features:

Improved accuracy, integrity, and productivity

    Assembly template can contain boilerplate contents with which
    dynamically retrieved content is intermixed

    Any document fragment, individual element, or attribute value anywhere
    in the repository can be retrieved as content

    Completed document is fully SGML compliant and can be published (in
    print or online) by any SGML-aware publishing system

    Assembled document can be automatically placed in work queue for further
    review (see next section)

Workflow Management
-------------------

As the authoring and production of documents becomes more complex and
the interaction among authors, documents, and viewers becomes more
sophisticated and immediate, a reliable and configurable tool to manage
document life-cycles and collaborative business processes becomes
critical. Information Manager automatically tracks and routes documents
as they move from desk to desk during their life-cycle based on a
captured model of your organization and business processes.

The workflow solution is comprised of sub-components corresponding to
the functional areas detailed in the Workflow Management Coalition
reference model. Each functional area has a standard API for
programmatic interaction with the workflow engine. In addition, rich
user interfaces are used to define processes; enter, modify, and query
the state of any workflow object; and register users, projects, and
roles. The following applications constitute Information Manager's
workflow solution.

Process definition tool 

    Graphic design tool models workflows of your business processes

    Conditional workflows support parallel tracks with automatic
    synchronization of sub-tasks and dependencies
    
    Subprocesses within a workflow provide a hierarchical set of dependent
    tasks

    Business process validation rules automatically detect inconsistencies
    such as redundancies and loops

    Metadata and user-defined attributes are easily assigned to tasks and
    objects supporting complex and site-specific configurations

Work queue

    Work queue acts as a primary user interface for authors and reviewers
    displaying tasks, their status, upcoming deadlines, owners, and
    descriptions

    Configurable GUI interface presents customized or standard presentation
    of tasks

    Work queue entries can be sorted by project, priority, status, or on any
    user-defined attribute

    Task status highlighted with color for easy identification of critical
    events and tasks

    All Information Manager tools can be automatically invoked providing
    single interface

    Deadline and other user defined notification can be sent to any
    individual or role in real time or through email

    Upcoming workload and what-if scenarios can be generated

    Forms-based interface allows altering routing and behaviors of specific
    tasks within broader projects

Workflow management tool

    Enables managers to create or alter workflows
    
    Assigns users to tasks

    Sets attribute and other user defined values

    Establishes deadlines and milestones

    Enables audit trail data capture

    Generates status reports

    Connects to third-party reporting tools

Electronic review
-----------------

As documents are routed from person to person and documents are
versioned across collaborative workgroups, an integrated tool to capture
comments and correction and pass them along "in context" adds
significant value to the entire process. Information Manager's 
comprehensive electronic review tool set enables authors, editors, and
managers to iteratively review documents for comment and alteration.

As an integrated part of Information Manager, the electronic review tool
takes advantage of query and viewing capabilities to allow the reviewer
to include in the actual comments such information as replacement text,
more accurate references, and supporting documentation. Additionally,
comments can be automatically generated by permitting a reviewer to
"edit" a copy of the document; comments are automatically generated
based on the difference between the true document and the temporary
copy, an intuitive and powerful interface to improve the productivity of
both the reviewer and the author applying the suggested changes.

Reviewer creates comments

    Comments can be attached to any element of a document (for example, a
    paragraph, section, or chapter), conveying the scope of the comment

    Review document is retrieved as read-only to protect the original
    document

    Comments are SGML documents themselves, ensuring consistency and maximum
    reuse

    Automatic initialization of comment fields, such as those identifying
    the reviewer and date

    Suggested revisions stored as fully marked-up SGML content permitting
    immediate inclusion by author if suggested content is accepted

    Auto-commenting turns edits overlaid on the read-only document into
    comments

Author reviews comments

    Comments indicated in document by configurable icon

    Point-and-click in document to read comments

    Listing of comments based on parameters such as priority, reviewer, and
    date

    Assign disposition to comment, such as accepted or rejected, triggering
    workflow actions

    Reply to reviewers with explanations, improving communication

    Status of comment, such as pending or closed, automatically maintained
    and fed to workflow

Author updates documents

    Accepting a comment can automatically update the document with suggested
    revision and alter status of comment

    Differencing a revised document with earlier versions improves accuracy
    and completeness

    A history of comments and their disposition is maintained for auditing
    and recovery

Repository architecture
-----------------------

Tracking and managing thousands of documents, business processes, and
the metadata associated with document life-cycle management requires a
robust, scalable, and secure datastore. The Repository Manager serves as
the central data management tool for Information Manager. 

Supporting the unique requirements of large volumes of highly structured
documents requires a specialized model and access mechanism based on the
best of both document and database technology. The answer can be found
in the latest generation of DBMS technology known as Object-Relational
Database Management Systems (ORDBMS). The principle behind ORDBMS
technology is straightforward:  incorporate advanced object-oriented
modeling constructs by extending and evolving the proven data management
and query processing techniques of RDBMS. This melding results in a DBMS
with mature security, scalability, and recovery capabilities able to
support mission-critical applications while providing the required
modeling to support the complexity of highly structured documents.

Information Manager's repository is fully object-relational and as a
result can efficiently offer the following features:

Open Architecture

    SGML documents can be easily inserted, updated, versioned, and
    retrieved, making the repository truly SGML-centric in its design

    Full element and entity management is supported to any depth or variety

    DTDs are specially recognized objects and thus maintain a version
    history through check-in and check-out

    Access to external databases is inherently supported including 2-phase
    commit where available

Access control

    Privilege checking at the repository and application levels

    Hierarchical projects with inheritance of roles and privileges are
    inherently supported

Content management

    Full version history maintenance is automatically generated

    Shared content across documents is easily done

    Inter-document links is also a natural component of the repository

Application development features

    Arbitrary, application-defined metadata permits extensible management
    functionality

    Event notification to standard and application-defined protocols

    Full SGML-addressing query language with sensitivity to the difficult
    issues of mixing content and contextual selection criteria

    Structure-based retrieval and update at a programmatic level for 
    navigational operations

Repository administration
-------------------------

The administration of a specialized document repository requires tools
specialized for the job. Information Manager provides comprehensive
tools for managing the repository, including the creation of projects,
roles, and users, all with a fully graphical user interface.
Specifically, the repository administration tool offers:

Manage users and privileges

    Add or delete users

    Alter permissions and passwords

SGML input

    Install or unload DTDs

    Search file systems and load selected SGML documents

    Associate a document with its DTD and appropriate application files such
    as a FOSI

Audit trail generation

    Track different levels of activity, ranging from project creation to
    read access of a document or fragment

    Generate configurable reports on the access history for any elements in
    the repository

    Search and sort on any access history data

Workflow

    Assign roles within a workflow

    Create or alter the workflow process

    Associate workflow with document types

    Create and assign triggers for notification on user-defined events

Database management

    Monitor and optimize database usage

    Add database volumes

    Archive and dearchive to offline storage

Application architecture
------------------------

In order to assure that Information Manager is open to any application,
an API and a central broker called the Application Manager are included
for advanced development and integration.

Application Manager

    Simple but flexible communication channel that supports communication
    and notification between the Repository Manager and between multiple
    applications

    Message format is application-independent

    Launching of applications upon receipt of targeted message

    Channels are multi-threaded and can interoperate with more than one
    application at a time

Information Manager in action
=============================

Because Information Manager is highly flexible and configurable, any
particular customization illustrates only one way the system can be put
to use. Following is one example of how Information Manager is used in
various ways throughout the life-cycle of a set of documents.

A workgroup of authors produces a set of reports every month on funds
managed by a financial services company. Using IM's authoring tool, an
author uses last month's report for a financial regulatory agency as a
"template" for this month's report. The template automatically brings
with it the appropriate legal boilerplate through its shared content
feature that retrieves paragraphs maintained by the legal department.
Daily values of funds over the last month are automatically drawn from
the financial SQL databases using IM's external database referencing
features.

Creating new information
------------------------

IM's authoring tool then provides an ideal environment for generating
new material. SGML context-sensitive editing ensures the reports have
all the required information in the proper order. When writing up the
summary of the effect of the discovery of a new drug on the fund's
performance, the author can find out quickly through IM's easy-to-use
query interface whether discovery of a drug has been included as part of
an impact assessment on this fund before. If so, the author can copy in
the relevant material and edit it, or even simply reference an existing
paragraph or diagram using the shared content feature.

Several authors can work on a report at the same time, one perhaps
writing up the fund results and another doing the analysis. Each author
simply checks out the relevant section of material for editing.
Meanwhile, the responsible lawyer can retrieve the entire report for
viewing to quickly determine if there are any figures that need
particular attention this month.

Reviewing and updating
----------------------

As authors check in their sections noting that they are ready for review
through the work queue, IM routes the sections to the lawyers and other
reviewers through predefined workflows to ensure the material is
authorized and correct. Reviewers are automatically notified that
material is awaiting their review via their work queues. IM's electronic
review tool provides the easy-to-use mechanism for reviewing the
sections and attaching comments. When the author receives notification
that his section is either approved or needs comments addressed, he can
use the electronic review tool to browse the comments and apply them as
necessary.

When all sections have completed the proper review cycles and have been
noted as approved, the report is routed to the production department for
distribution.

Automatic assembly
------------------

Having completed the report submitted to the financial regulatory
agency, IM is now used to automatically pull together the shareholder
report. Through the document assembly tool, much of the regulatory
report is dynamically retrieved into the appropriate sections of the
shareholder report. The assembled report is routed to the fund's manager
for addition of introductory remarks.

Traceability and accountability
-------------------------------

For the year-end review of the fund by the regulatory agency, IM is used
to gather the appropriate documents, recreating versions as they were
delivered or as they were developed. The author and approver of every
section, indeed paragraph, are determined as necessary.

System Profile
==============

The Information Manager runs on the following Unix servers:

    - Sun SPARCstation under Sun OS 4.1.1, 4.1.2 or 4.1.3, or Solaris 2
    - IBM RS/6000 under AIX 3.2
    - HP 9000 Series 700/800 under HPUX
    - DEC Alpha under OSF/1
    - PC under Windows 3.1 (Client only)

Minimum site requirements
-------------------------

The following are minimum site requirements:

    Information Manager can run either as a stand-alone system, or as a
    client/server system. Client processes and the server process may run on
    the same or different machines, potentially of different types.

    A minimum of 16 Mbytes of main memory is recommended for the stand-alone
    version and for each process of the client/server version.

    A minimum of 32 Mbytes of swap space is recommended for the stand-alone
    version and for each process of the client/server version.

    The network protocol for TCP/IP must be available to run the
    client/server version for communication of clients and server. The
    server and clients must be connected by an installation network.

###########################################################################
###########################################################################

This is my article, not my employer's, with my opinions and my disclaimer!
--
Duncan Gibson, ESTEC/YCV, Postbus 299, 2200AG Noordwijk, The Netherlands
Tel: +31 1719 84013   Fax: +31 1719 12142  Email: duncan@yc.estec.esa.nl
================================================================================
Archive-Date: Wed, 05 Apr 1995 01:28:21 CDT
Sender: owner-litprog@SHSU.edu
From: duncan@yc.estec.esa.nl (Duncan Gibson)
Reply-To: LitProg@SHSU.edu, duncan@YC.ESTEC.ESA.NL
Subject: Summary: Is there a complete documentation system? Part 4/6
Message-ID: <D6Itu0.IDr@yc.estec.esa.nl>
Date: Tue, 4 Apr 1995 17:27:35 GMT
To: LitProg@SHSU.EDU


From: Fred K Weil <fredw@fred1.demon.co.uk>

Information on SGML databases can be found here.

http://galt.cs.nyu.edu/students/m-rd0107/sgmldbms.html. 

Some supplier information

I am giving UK contacts as I assume from your address that you are in 
Holland

Documentum
Jane Sherry
Rank Xerox
Tel +44 1707 352235
Fax +44 1707 352497

Xyvision
Stuart MacRae
Tel +44 1753 820565
Fax +44 1753 694944

Trimco
Alan Turner
Tel +44 181 579 8788
Fax +44 181 566 2422

Interleaf UK
Tel +44 1932 356800
Fax +44 1932 356810

Texcel
David Bragg
Tel +44 1753 833111
Fax +44 1753 854090

###########################################################################
###########################################################################

From: john.newton@documentum.com (John Newton)

In response to your inquiry on the Net, we are a maker of Object-Oriented 
Enterprise Document Management Systems. Our architecture is client-server 
based with clients on Windows, Mac and Unix and servers on various flavors 
of Unix with NT coming soon. We expose the class hierarchy to the user as 
well as to the developer. We also have a graphical user interface to make it 
easy for end-users to manipulate and search for this information. For 
application developers there is Document-Object-Oriented version of SQL 
called DQL that allows the enumeration of classes as well as hierarchical 
structures such as a documentation bill of materials.

We are concentrating our development and marketing efforts in the 
manufacturing area. Our first customer was Boeing with the technical 
documentation on the 777 aircraft.

If you would like more information, you can contact our European 
Headquarters at:

        Documentum International
        Stockley Park Business Centre
        The Arena Forum, Stockley Park
        Uxbridge, Middlesex UB11 1AA
        UK

        +44 1 81 899 1743

Regards,
John Newton
Director, Product Development
Documentum

###########################################################################
###########################################################################

From: bill.fernandez@documentum.com (Bill Fernandez)

Greetings--

The company I work for makes such a system.  For example it is used by
pharmeceutical companies around the world to manage their new-drug
applications, which are half a million pages long.  Boeing and other
manufacturing companies also use our system.  I'm in the engineering
department, but I'll supply our main office phone number and address below,
and they should be able to steer you to the European sales office that
handles The Netherlands.  Good Luck.  --Bill

Documentum, Inc.
4683 Chabot Drive #102
Pleasanton, CA 94588
USA

Tel: 510-463-6800

or try

Documentum Software Europe, Ltd.
in England

Tel: 44 181 899 1743

###########################################################################
###########################################################################

From: kirchh@aol.com

Duncan -

Project Xanadu, started in the '60s by visionary Ted Nelson (coiner of the
terms 'hypertext' and 'hypermedia'), considered this kind of problem. 
Xanadu was taken on by Autodesk (makers of Autocad) in 1988, I believe,
and then cut loose in 1992.  Things get a little hazy here - I gather the
commercialization of the Xanadu server fell to a newly formed company
called Memex, changed to Filoli in 1994 (email: try Gary Olsen -
Olson@filoli.com).  When I last checked, the current incarnation of the
product was called AIDEMemoir.  It was touted as being a multimedia
database, with support for all data types, versioning ('editions'), huge
databases, full hypermedia linking, full action audit trail, etc.

I recommend the Xanadu FAQ, found in
rtfm.mit.edu/pub/usenet-by-hierarchy/comp/groupware/Xanadu_World_Publishin
g_Repository_Frequently_Asked_Questions.

Other (somewhat less exotic) systems which might be worth a look:

 - Documentum, a Xerox spinoff specializing in document management: try
Tom Witmer at (201) 845-5300; tell him Trilon referred you.

 - Interleaf RDM, Intellecte, and WorldView: all document management
products from Interleaf.  Try 800-955-5323.  We've had trouble getting in
touch with knowledgeable people there, but give it a shot - their products
sound intriguing.

 - Virtual Notebook, from the ForeFront group: A shared multimedia
notebook metaphor of sorts, with hypertext linking, real-time document
conferencing.  713-961-1101.  My latest info is from December '93, but
I've seen their name pop up now and again.

 - OpenMind: a client-server document management system.  Gives users
several views of the information: Explorer View, for navigating
customizable subsections; Transcript View, which presents threaded
discussions; Search View, for full-text queries; and Track View, which
identifies new information on specific topics.  OpenMind can display files
created by 150 applications; users can launch, modify and save documents
locally without having the creating program.   Windows NT servers, Windows
clients, supposed to have Mac clients in October '94 ($995/server,
$295/Windows client;Digital Communications Associates (404) 475-8380)
[info from 8/94]

 - MediaSphere: Doc mgmt system, centered on Adobe PDF (Acrobat format);
uses Sybase, Sun server, Mac, Windows clients; Full-text; uses their own
nat'l language search engine; "help publishers of electronic and paper
documents search through text, images, audio, and video using natural
language queries"  ($64,000 to $112,000; Cascade, (508) 794-8000) [info
from 10/94]

Start with those - if you don't get anywhere, write and I'll rustle up
some more.  If you do get somewhere, let me know what you find out.

--Daniel Kirchheimer
Director of Technology
Trilon, Inc.

###########################################################################
###########################################################################

From: Bradley Yearwood <bny@crl.com>

Symbolics had a documentation system called Concordia which ran in
their Lisp machine environment.  It appeared to support the notion of
sharing common objects across multiple documents.

Concordia was described in a paper in IEEE Computer or IEEE Micro
circa 1987-1988.  I cannot recall the author's name.

I am not certain whether Concordia is among the surviving fragments (if
any) of Symbolics.

Brad Yearwood    bny@crl.com
Cotati, California

###########################################################################
###########################################################################

From: jdry@aol.com (Jdry)

For large paper trails, and or organization,  I have seen a great object
oriented program.  Metaphase Series 2, resold by SDRC (and others).  It is
a data management system that will be enterprise wide.  It sits ontop of
Oracle and will be available ontop of other databases.  You can access the
database from Unix, Windows and Mac.

Call SDRC at 1-800-543-0869

Jonathan Dry
Designworks/USA
jdry@aol.com

###########################################################################
###########################################################################

From: "Jared L. Black" <erpdjlb@moment.unocal.com>

I have seen a system on UNIX called PDMS (plant design and management system)
that may be what you are interested in.  It is from a UK company, CAD CENTRE;
the only office I know of is in Houston Texas, USA.  Their number is
713-977-1231, and the contact is Irv Levine.
J. Black

###########################################################################
###########################################################################

From: kevind@zNET.com (Kevin Dick)

The need that you describe would, in my opinion, fall under the category of
Product Information Management (PIM) systems.  These systems can track
documents in any format, arbitrary relationships between these documents, and
the flow of these documents through the product development process.

I am a consultant to Objectivity (maker of the Objectivity/DB ODBMS) and I know
they have at least two customers who use Objectivity/DB as the storage engine
for their commercially offered PIM system.  I believe the names of these
companies are Adra and Matra.  Unfortunately, I do not have contact information
for these companies.  However, you can contact Objectivity and find out.

They are located in Mountain View, CA, USA.  Their phone number is
(415) 254-7100.  The best person to ask would be the Director of Marketing,
Craig Woods.  His email is craig@objy.com

Hope this helps,

Kevin Dick

###########################################################################
###########################################################################

From: duncan@yc.estec.esa.nl

I also received received information from Zwany de Graaf of Objectivity Europe
In addition to the information from Kevin Dick (above), she also sent me some
information about MATRIX. 

    "MATRIX is an Information Management System for all kinds of applications.
    It includes a comprehensive workflow management cpapbility, which allows
    you to track any document and related images through your organisation.
    It operates with existing software on existing hardware in a fully
    distributed environment."

Her address is:

    Zwany de Graaf
    Objectivity Europe
    Rondedans 3
    2907 AA Capelle a/d IJssel
    The Netherlands
    Tel/Fax: +31 104 583 986

###########################################################################
###########################################################################

From: sampson@nile.slate.tdtech.com (Mark Sampson)

We were forwarded your request via Versant (our OODB supplier). 
They felt that what you were describing in your message is what
we supply in our SLATE tool (System Level Automation Tool for 
Engineers).  SLATE was designed to support the Systems Engineering
process--the capture of customer requirements, translation of those
requirements into detailed design specifications, and generation of
documents from that analysis.  SLATE was built on top of a multi-user
Versant OODB, is integrated with Framemaker, and has a GUI specifically 
tailored for the System Architects/Engineers that allows them 
to perform trade-off studies, document the results of those studies,
and then manage projects to conform to those requirements.

I will contact our European representatives and have them contact
you and supply you with further information.  In the mean time I 
suggest you browse our WWW Home page at:

http://www.slate.tdtech.com

or you can contact me or any or our marketing/sales folks directly via email 
or phone:

sampson@slate.tdtech.com
(214)669-9937

Regards from Texas,
Mark Sampson
TD Technologies
(214)669-9937
sampson@slate.tdtech.com

###########################################################################
###########################################################################

From: freeman-eric@CS.YALE.EDU (Eric Freeman)

Hi, you might check into the CALS software project that is (was) done
under DARPA or NRL. I've located the web site with CALS information:

http://navysgml.dt.navy.mil/cals.html

and I'm assuming you are already aware of OLE and OpenDoc.

Thanks,

Eric

###########################################################################
###########################################################################

From: seixas@wolf.itg.ti.com (John Seixas)

There used to be a tool called Context, which was specifically made to
order for this purpose.  It was used by Boeing in Sattle to handle
manufacture and maintenance of aircraft.  It is ny understanding that
the company (Mentor Graphics) no longer supports this tool.  The next
best tool that I know of is Interleaf (UK +44 1932 356800, US 1 800 688
5151).  It is set up to handle large interconnected sets of documents,
and their Active Link Tool (bundled with the latest release 6.x) should
support your hypertext needs.

###########################################################################
###########################################################################

From: kjs@ebt.com (Kent Summers)

We have a complete SGML-based e-publishing solution (that is,
everything but the authoring component, several good ones of which we
have integrated). BTW, the Context guys now work for EBT on Dynabase,
our object-oriented SGML mgmt system built atop ODI's objectstore.
email 'info@ebt.com' for more information.

###########################################################################
###########################################################################

From: "Claude L. Bullard" <bullardc@source.asset.com>

The current threads on adding procedural constructs to SGML and the
questions about supporting documents used in large projects (which I call
enterprise-wide documents), are interesting because they are the same
issues from some perspectives.  Since Kent Summers mentions that EBT is now
the proud employer of some portions of the former Context Inc developers
(Mentor Graphics spin-off company, not to be confused with InContext),
there are some *war stories* that might be of interest.  BTW, Kent, you
have a coup in that group.  They were in 1989, one of the most forward
looking groups I knew and I learned much from them.  Most of my outlook on
what is *possible* with document systems was initially formed by that
system and those people.

At GE, we worked with the Context group to develop one of the first and
most successful CALS authoring and delivery systems.  To be honest, the
acceptance of SGML by Context was grudging, but Charlie Sorgi published a
paper on the subject that was direct and extremely prescient as he
described most of the advantages and disadvantages of using SGML.  Charlie
coined the term "SGML Nazis" which was his view of standards groups.
Still, they did an excellent job of tieing SGML to the side of the existing
system.  Historically, at a certain point in development as they were about
six years ahead of the market, the original developers went on to work on
the "object" projects for Mentor, and the SGML system languished, was
broken (hardwiring tags was then and is now the single biggest stumbling
block for OOPSMen), and was abandoned.  Doing SGML for *real* with the
Context system would have required complete redesign of the formatting
engine which was a WYSIWYG system with a very powerful scripting language.
The database side of the design, which was Greg Lloyd's baby at the time,
was very powerful but somewhat hard to set up and maintain and seemingly,
difficult to integrate with the SGML *bag* on the system design.  It did
work with care.

However, the scripting language integration was superior.  I used some of
those concepts to design the MID.  With it, we were able to take the
original scripts given to us by Context, extend them, and completely
automate the production of SGML documents and raster-based hypermedia.  The
results of the customization efforts achieved by technical writers with
very shallow programming backgrounds were astonishing.  Interfaces to the
LSAR database and automatic document construction (No Hands, Ma!  Honest!!)
were achieved.  The capabilities that WebHeads find astonishing were common
fare and it was possible to manage the documents as well as the graphics.
While the implementation of SGML was rudimentary, it implemented the 10%
that does 90% of the work.

DTDs were used to parameterize the editors so each author worked with only
the constructs they needed for a document type.  The SGML could be hidden
or visible.  The print version worked without the need for a FOSI, and the
system could be maintained and extended by the technical writing staff.
The project delivered complete documents ahead of the hardware, and at
validation/verification, it was the TMs that were used to test the hardware
as they were superior in every respect to the other CDRL-required data
products.  We got a 10 for 1 improvement in productivity, and at the end,
were mainly just entering information on lazy days while the tools did the
grunt work.  For a frankly, very small up front investment of time and
learning, we possessed an extremely powerful production tool.  The works
that I published (Enterprise Engineering and Beyond the Book Metaphor) were
based on the lessons learned from that system.

My point here is that script integration can provide much of the
capabilities that Ms. Holstege and Mr. Prescod are debating.  Scripting is
a way to create highly interactive environments to support mission
configured enterprise performances.  Had the Context developers gone
further with their SGML product development (for example, support for
entities ... sigh, the same mistake being made by the Web developers),
Mentor would own the document management market at this time.  It has been
said, that their closest competitor at the time, Datalogics, was greatly
relieved when Context closed its doors.

I've yet to see a system that can come close to what was achieved there and
I have looked.  I feel like Arne Saknussen on this one: follow the signs to
the center of the Earth.  I've been there and testify on my bleached bones.

It would be interesting if some of the former Context employees could
compare their current work with SGML products and their work at Context.
While I don't usually support application mongering, the experience of
these individuals is unique and could offer great insight into what is
technically possible and where the "rocks are".

Len Bullard

###########################################################################
###########################################################################

From: Mike McNamara <mike@xyvuk.com>

Let me introduce myself and my Company, I am Mike McNamara, Operations Manager
for the European Offcie of Xyvision Inc., a Boston, USA based company. Xyvision
is a UNIX software house specialising in software for Publication Production 
"Parlance Publisher" (XPP) and Document Management "Parlance Document Manager"
(PDM).

We sell our software into two main market areas; 1) Commercial Printing and
Publishing for the production of Books, Learned Journals, Legal/Medical
Looseleaf publications, Directories, Cataloguesand and Telephone Directories
and 2) Corporate markets for Product Support Documentation such as Technical
Documentation for Aerospace, Electronics, Utilities companies.

We do have a WWW server setup which has a full set of information available,
this can be found http://www.xyvision.com and in particular how PDM deals with
"objects" and what can be done to them, I have included one one of those pages to
this email.

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 

Xyvision Publishing Systems

Xyvision designs and markets two products for publishing professionals
Parlance Publisher and Parlance Document Manager.

Parlance Publisher goes beyond traditional composition and pagination systems by
automating the entire publishing process--from input of text and graphics to
output of fully composed paginated pages, film separations, or electronic output.
Designed to operate in an open publishing environment, Parlance Publisher
accepts most text, database, and graphic formats; enables live links to
UNIX-based graphics programs, and outputs to a variety of post-processing
applications including imposition software, electronic page turners, and online
viewers. Its speed, power, and background processing capabilities have earned
Parlance Publisher the reputation as the most versatile and powerful composition
system available today. 

Parlance Document Manager (PDM) is a client/server information management system
that stores document elements as information modules in a central database,
allowing these elements to be shared and reused in multiple documents. PDM
supports modules of varying sizes and formats, including SGML, and provides
version control, built-in workflow, and content management that automate
editorial processes for large, complex publishing projects. It is well suited
for use in publishing environments with large amounts of text, graphics, and
other data that are formatted and published in multiple versions or on multiple media. 

Xyvision software runs on Sun(R) SPARC(TM)stations and servers under Sun OS and
Solaris(TM), IBM(R) RS/6000 servers under AIX(TM), and DEC(R) servers under
ULTRIX(R).

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

We also have a distributor in the Netherland. I have sennt a copy of this email
to Marcel Croese, the Slaes Manager of Mahez B.V. If you need to call them, the 
telephone number is +31-20-587-2222.

Looking at the brief comment made in your email, I think that Xyvision does have
a product that would meet you requirements, with that in mind I would like to
send you a set of brochures if you can send me your address.

Please feel free to call/email/fax me if you need more information.

Regards

*  Michael J. McNamara                 Tel: +44-1753-820565 *
*  Senior Operations Manager, Europe           Fax: +44-1753-694944 *
*  Xyvision Ltd,                 Mobile: +44-385-313352 *
*  246 Bedford Ave.          e-mail: mike.mcnamara@xyvision.com *
*  Slough, Berkshire.               Compuserve: 100013,3502 *
*  SL1 4RJ. U.K.                            *

###########################################################################
###########################################################################

From: mvulpe@i4i.org (Michel Vulpe)

Infrastructures Company Introduction

Thank you for your interest in Infrastructures products.  The following
information  provides an introduction to our products and philosophy.
Infrastructures was formed to address the single most important issue
facing business' today, management of information as an intellectual asset.
We offer database products that use native SGML object management
technology to reuse information providing a system solution that develops,
manages, and delivers complex documents independent of format, platform, or
application.

Management of Intellectual Assets -- An Introduction

The primary use of computers by far is for document processing.  According
to Dataquest (San Jose, CA), 98% of business computer users employ word
processing software on their personal computers and many use their PCs only
for word processing.  Industry analysts, note that at least 80% of
corporate electronic information is in the form of documents, as opposed to
structured database records.  Because of advances in word processor
technology, documents are no longer merely an electronic analog to paper,
but rather dynamic, modular, multimedia entities.  The current software
file/application paradigm can create the information, but manages it very
poorly or not at all.  Any attempt to reuse the information requires a
duplication of the original environment.

The user community is driven by the need to manage its intellectual assets
as a result of frustration with the growing glut of information that was
expensive to manufacture and cannot be financially managed or tracked.
Infrastructures' VISion technology advances the information management
paradigm beyond the inherent limitations of files and applications.  By
combining the structured world of database technology with word processors
and networks, Infrastructures creates an environment that fulfills the
promise of technology as a means of improving productivity.

Many organizations have access to large volumes of information. Relatively
few can economically transform those knowledge resources into valuable
products. The constant challenge for these organizations is to:

        > reuse their information resources
        > make their knowledge base accessible,
        > extend the useful lifetime of the information,
        > be capable of tailoring the knowledge to a specific user, and
        > create information that is not dependent on any specific media.
Despite the cost of developing and publishing computer-based information
products, rarely do these products leverage the information assets of the
organization. The ability to economically reuse underlying information
components is the key. Infrastructures provides a database environment
integrating the underlying resources of text, images, and other materials
into logical information products that can be delivered on paper or
electronically via the Internet.

Infrastructures Information Management Systems - The VISion

Product Overview

The VISion=A9 product family is an on-line client/server Document
Manufacturing System that uses Virtual Information Space technology or
VIS=A9. Built with the Application Development Tool Kit, it is designed to
manage the efficient transformation of raw information into various useful
information products. VISion products apply the discipline of the
manufacturing environment to the business of document production, imposing
clearly defined standards for both format and content, promoting
reusability of components, and enforcing communication among all those
involved in the process of building a document. VISion guides a document
through every stage of its evolution, from a primary draft to a finished,
published document.

VISion gives its users electronic access to all the information components
used in constructing document information: text, graphics, comments,
approvals, and annotations. VISion combines groupware mail distribution
functions with the structure of a document to create a framework for
collaborative development.

VISion stores, in a full function DBMS, each version of a document together
with all the approvals, comments, and annotations associated with each
stage. It also stores information on all its users, their organizational
relationships, and the roles they play in building various documents.

The VISion Product Family

The Infrastructures' VISion family of products has been designed to provide
a clearly defined implementation path.  Building on the existing database
and communications infrastructure, this implementation path offers two
major advantages for Infrastructures' customers; functionality and
migration strategy.

The VISion family consists of three products: the first is a relatively
inexpensive way for an organization to take the initial  step into a world
of information manufacturing and management. The next two steps compliment
the first, moving in stages to exploit "virtual information space" or VIS
technology to its fullest. Nothing is lost along the way. Staged
implementation entails no waste of money or resources.

The path begins with VISion 1; a system that offers simple, database-driven
document management with automated distribution of documents.  VISion 2
provides the user with SGML support, logical decomposition of documents,
and algorithmic composition capabilities.  Finally, VISion 3 technology
manages documents as collections of reusable information objects or logical
documents in a virtual information space, allowing communication between
VISion Servers in either replication mode or as virtual information servers
similar to the way the World Wide Web (WWW) uses HTML documents.

=46inally, VISion is a complete document development, management, and
distribution environment. Using tools resident on the desktop, the system
builds a structured environment that allows an information product to be
electronically distributed and maintained.  VISion offers the ability to
manipulate and link low level information objects or components without the
limitations imposed by the traditional document/file paradigm and supports
the following features:

        > authoring using your current desktop tools (including SGML/HTML)
        > document management (versioning, archiving, and approval)
        > media-independent publishing (paper, on-line, CD-ROM)
        > multi-media development
        > electronic distribution over existing Email systems
        > virtual document development

The VISion Remote Client is a companion to the VISion Server and  interacts
with the server over public access networks such as the Internet or over
local area networks.  Together, these two products introduce a
client/server solution dramatically improving traditional composition-based
approaches to information management.

Productivity Improvements

The rational for adopting a systematic approach is economic in nature as
the cost of developing information products increases.  Gaining a
productivity enhancement by automating the labor intensive aspects of the
information development process and reducing the number of process steps is
desirable.  Infrastructures' systems establish a systematic method to
maximize information reuse, automate composition and output, and allow the
exchange of information electronically.  If you would like additional
information, please contact an Infrastructures representative.

To Contact Infrastructures

In the US:
990 Hayman Place
Los Altos, CA  94024
tel 415.969.7363
fax 415.969.7003
Internet: syoung@i4i.org

In Canada:
330 Dupont Street
Suite 302
Toronto, Ontario M5R 1V9
tel 416.920.6489
fax 416.920.6493
Internet mvulpe@i4i.org

###########################################################################
###########################################################################

This is my article, not my employer's, with my opinions and my disclaimer!
--
Duncan Gibson, ESTEC/YCV, Postbus 299, 2200AG Noordwijk, The Netherlands
Tel: +31 1719 84013   Fax: +31 1719 12142  Email: duncan@yc.estec.esa.nl
================================================================================
Archive-Date: Wed, 05 Apr 1995 01:28:27 CDT
Sender: owner-litprog@SHSU.edu
From: duncan@yc.estec.esa.nl (Duncan Gibson)
Reply-To: LitProg@SHSU.edu, duncan@YC.ESTEC.ESA.NL
Subject: Summary: Is there a complete documentation system? Part 5/6
Message-ID: <D6ItvM.IEt@yc.estec.esa.nl>
Date: Tue, 4 Apr 1995 17:28:34 GMT
To: LitProg@SHSU.EDU



From: "Steven R. Newcomb" <srn@techno.com>

Sounds like you're looking for HyTime.  I'm attaching first a letter
about HyTime, and second a letter about HyMinder, our implementation
of HyTime.  

Best regards,

       Steven R. Newcomb | TechnoTeacher, Inc.
  direct +1 716 389 0964 | (courier: 3800 Monroe Avenue, 
    main +1 716 389 0961 |  Pittsford, NY 14534-1330 USA)
     fax +1 716 389 0960 | P.O. Box 23795
Internet: srn@techno.com | Rochester, New York 14692-3795 USA

********************************************************************************

(The remainder of) This letter contains information about SGML,
HyTime, and related matters.  It is intended to help you find the
information you are looking for.  We send this letter to people like
yourself who inquire about various matters.  This letter does not
discuss TechnoTeacher products and services and it is not trying to
sell you anything.  At your request we will gladly send you
information about our International HyTime Workshop series (which is
the best way to learn HyTime available today) and our HyMinder
SGML/HyTime engine technology, a unique all-in-one SGML and HyTime
services library of C++ classes.

Best regards,

NOTE NEW ADDRESS, PHONE NUMBERS:
       Steven R. Newcomb | TechnoTeacher, Inc.
  direct +1 716 389 0964 | (courier: 3800 Monroe Avenue, 
    main +1 716 389 0961 |  Pittsford, NY 14534-1330 USA)
     fax +1 716 389 0960 | P.O. Box 23795
Internet: srn@techno.com | Rochester, New York 14692-3795 USA
********************************************************************************

                    HyTime, SGML, etc.

``HyTime'' is the nickname of the ISO/IEC International Standard
10744:1992, whose long name is ``Hypermedia/Time-based Structuring
Language.''  It provides a worldwide standard technical framework for
integrated open hypermedia, including the ``SMDL'' Standard Music
Description Language (ISO/IEC Committee Draft 10743).

There is as yet only one authoritative reference work on HyTime:
the HyTime standard itself.  Copies of the standard can be obtained
from your nation's standards organization.  In the United States, this
is the American National Standards Institute (ANSI), 13th Floor, 11
West 42nd Street, New York, New York 10036-8002 USA (tel: +1 212 642
4900, fax: +1 212 398 0023, Cable: Standards, New York, International
Telex: 42 42 96 ANSI UI, D-U-N-S 07-329-4837.  Last we heard, the ANSI
price of the 10744 standard was $98.

Introductory articles about HyTime can be found in the November 1991
issue of _Communications of the ACM_, and in the July 1991 issue of
_IEEE Computer_.  These articles are slightly inaccurate in some
details; they were written prior to HyTime's final version as adopted
the following year.

One book about HyTime has appeared: _Making Hypermedia Work_, by Steven
DeRose and David Durand, published by Wolters Kluwer.  This book is
well regarded in some respects, but its many technical errors and its
tendency to confound addressing with linking make it unreliable as a
reference work on the subject of HyTime.  We are told that the authors
have a new edition in the works that will appear shortly.

Another book is in press at this writing: _Practical Hypermedia_, by
Eliot Kimber, published by Simon & Schuster.  We have seen drafts of
this book and we like what we have seen.  It is likely to be reliable,
since it appears in a series edited by Charles Goldfarb, who chaired
the HyTime committee.

Courses, workshops, and conferences on HyTime (and SGML, see below),
as well as on other topics of interest to the information industry,
are presented by the Graphic Communications Association (GCA).  For
more information, please contact the GCA at 100 Daingerfield Road, 4th
Floor, Alexandria, Virginia 22314-2228 (tel: +1 703 519 8160, fax: +1
703 548 2867, Telex: 510-600-0899, Internet: mern@well.sf.ca.us).
Among its many other SGML-related services and activities, the GCA
publishes a directory of commercially available SGML tools, software,
and services.

``SGML'' is the nickname of the ISO/IEC International Standard
8879:1986, whose long name is ``Standard Generalized Markup
Language.''  SGML, which forms the basis of a number of standards
including HyTime, allows all kinds of information to be interchanged
among dissimilar information processing systems.  In effect, HyTime
extends SGML by providing a set of ``SGML architectural forms,'' whose
syntax and semantics are standardized by HyTime, and which allows
system-independent expression of hyperlinks, information addresses,
placement of information objects in time and space, etc.

The standard, authoritative reference work on SGML is Charles Goldfarb's
_The SGML Handbook_, published by Oxford University Press.  We
highly recommend this book, which contains the verbatim text of the
ISO 8879 standard itself, along with considerable explanatory text.

The ``SGML Users' Group'' is an international body which performs a
number of important functions in promulgating the understanding and
use of SGML, including sponsoring conferences and special interest
groups, publishing public domain information, etc.  To join the SGML
Users' Group, contact Stephen G.  Downie, Secretary, SGML Users'
Group, c/o SoftQuad Inc., 56 Aberfoyle Cres., Suite 810, Toronto,
Ontario, Canada M8X 2W4 (tel: +1 416 239 4801, fax: +1 416 239 7105).
Other questions, concerns, and issues should be brought to the
attention of Ms. Pamela L. Gennusa, President, International SGML
Users Group, c/o Database Publishing Systems Ltd., 608 Delta Business
Park, Great Western Way, Swindon, Wiltshire SN5 7XF, United Kingdom
(tel: +44 793 512 515, fax: +44 793 512 516, Internet:
dpsl!plg@visionware.co.uk).

``SGML SIGhyper'' is the nickname of the SGML Users' Group's ``Special
Interest Group on Hypertext and Multimedia,'' which is the HyTime SIG.
For more information about SGML SIGhyper, please contact Mr. Erik
Naggum, Chairman, SGML SIGhyper, Naggum Software, Irisveien 12, POB
1570 Vika, 0118 Oslo, Norway (tel: +47 2295 0313, fax: +47 2216 2350,
Internet: erik@naggum.no).  SGML SIGhyper maintains an FTP site, as
part of its mission to promulgate information about HyTime.  The FTP
site is

     ftp.ifi.uio.no in the directory ``pub/sgml/SIGhyper.''  This 
     site is sponsored by the Department of Informatics at the 
     University of Oslo, Norway.
     
At this site can be found, among other things:

*    Free SGML parsers for a variety of platforms.  These
     parsers are unsupported, and they do not support all of the
     features of SGML, but they really do work and they are quite
     useful.
     
*    An excellent bibliography of SGML source materials, created
     and maintained by Robin Cover.
     
*    A catalog of HyTime architectural forms (i.e., the HyTime
     meta-DTD, which constitutes the formal description of HyTime
     itself).
     
*    Other items of interest, such as draft CApH advisory
     documents.
     
``comp.text.sgml'' is a Usenet discussion group which is an absolute
must for anyone who is serious about SGML or HyTime.  If you can not
receive this news group in the usual way, you can request to have it
forwarded to your e-mail address daily.  Please send such requests to
the Internet address ``comp-text-sgml-request@naggum.no.''  (To
contribute articles to comp.text.sgml, you can send them to
``comp-text-sgml@news.naggum.no.'')  Copies of the comp.text.sgml
archives can be recovered by anonymous FTP from ftp.ifi.uio.no.

<TAG>, published monthly, is the only regular source of information
for the SGML industry: articles, reviews, product news, tutorials,
standards updates, user group information, case studies, and useful
technical tips and information.  <TAG> is designed to be an objective
voice of the SGML community; it accepts no advertising and encourages
frank and open debate on the issues faced by the information
publisher.  Please contact SGML Associates at +1 303 680 0875, fax: +1
303 680 4906, or Internet: tag@sgml.com.

``CApH'' is the nickname of the GCA Research Institute's (GCA-RI)
``Conventions for the Application of HyTime'' activity.  This is an
open industrial design committee whose purpose is to develop and
publish advisory documents showing how HyTime can be used in
particular contexts to do represent particular things, such as indexes
based on knowledge bases, licensing information, tabular data, etc.
etc.  For more information about CApH, contact the GCA at the address
given above.

Another fascinating HyTime application is the US Department of
Defense's ``Metafile for Interactive Documents (MID)'' initiative,
intended to allow all databases of technical information for weapons
systems to be ``plug-compatible'' (as it were) with all Interactive
Electronic Technical Manual (IETM) delivery systems.  A report about
this work dated November 1994 is available via anonymous FTP from
navysgml.dt.navy.mil in the pub/ietm/mid directory.  This directory is
also accessible from the NAVY DTD/FOSI Repository via the Wide World
Web via http://navysgml.dt.navy.mil/ (Point of Contact for the NAVY
DTD/FOSI Repository is Betty Harvey, CDNSWC Code 183, Bethesda, MD
20084-5000 or via email: harvey@oasys.dt.navy.mil  .)

The ``Davenport Group'' is a group of Unix system vendors and vendors
of related hardware, software, and services whose purposes include the
creation of SGML-based conventions for representing online software
documentation.  Some public participation is permitted.  For more
information, please contact Dale Dougherty, c/o O'Reilly & Associates,
Inc., 103A Morris Street, Sebastopol, California 95472 USA (tel: +1
707 829 0515 or +1 800 998 9938 (home office: +1 707 829 3762 or +1
707 829 3762), fax: +1 707 829 0104, Internet: dale@ora.com) or Ralph
Ferris, c/o Fujitsu Open Systems Solutions, Inc., 6121 Hollis Street,
Emeryville, California 94608-2092 USA (tel: +1 510 652 6200 x421, fax
+1 510 652 5532, Internet: ralph@ossi.com).

``SGML Open'' ``is a non-profit, international consortium of
providers of products and services, dedicated to accelerating the
further adoption, application and implementation of SGML, the
international standard for open interchange of documents and
structured information objects.  SGML Open provides its members with
an open forum to discuss market needs and directions, and to recommend
guidelines for product interoperability.  The consortium receives,
coordinates and disseminates information describing SGML
methodologies, technologies, and implementations.''  For more
information, contact Larry Bohn, President, SGML Open, c/o Interleaf,
Prospect Place, 9 Hillside Avenue, Waltham, MA 02154 (tel: +1 617 290
0710, fax: +1 617 290 4943).

Some Implementations of HyTime:

``HyMinder,'' a HyTime engine.  (TechnoTeacher, Inc., P. O. Box 23795
Rochester, New York 14692-3795 USA. hyminder@techno.com.)

``HyOctane,'' a HyTime engine.  (Interactive Media Group, Center for
Productivity Enhancement, University of Massachusetts--Lowell, One
University Avenue, Lowell, Massachusetts 01854 USA. buford@uml.edu.)

``ObjectSGML,'' a HyTime/SGML parser. (Information Technology Research
Center, Yuan-Ze Institute of Technology, 135 Far East Road, Neiti,
Taoyuan, TAIWAN R.O.C.  cssmju@cs.yzit.edu.tw.)

``SoftQuad Explorer,'' a HyTime document editor/browser.  (SoftQuad
Inc., 56 Aberfoyle Crescent, Suite 810, Toronto, Ontario, CANADA M8X
2W4, +1 416 239 4801, fax +1 416 239 7105, linda@sq.com, Applelink:
SoftQuad.)

Some HyTime consultants and other HyTime-related service providers:

High Text S.A.R.L., 5, rue d'Alsace, 75010 Paris, FRANCE, +33 1 4205
9315, fax: +33 1 4205 9248, MBIEZUNSKI@MCIMail.com

Martin Hensel Corporation, 233 Needham Street, Newton, Massachusetts
02164 USA, +1 617 527 3230, fax +1 617 527 1929,
71542.510@compuserve.com

Passage Systems Inc., 9971 Quail Boulevard, Suite 903, Austin, Texas
78758 USA, +1 512 339 1400, fax +1 512 339 3618, kimber@passage.com.

TechnoTeacher, Inc., (courier: 3800 Monroe Avenue, Pittsford, NY
14534-1330 USA), P.O. Box 23795, Rochester, New York 14692-3795 USA,
+1 716 389 0961, fax +1 716 389 0960, hyminder@techno.com.

Best regards,

NOTE NEW ADDRESS, PHONE NUMBERS:
       Steven R. Newcomb | TechnoTeacher, Inc.
  direct +1 716 389 0964 | (courier: 3800 Monroe Avenue, 
    main +1 716 389 0961 |  Pittsford, NY 14534-1330 USA)
     fax +1 716 389 0960 | P.O. Box 23795
Internet: srn@techno.com | Rochester, New York 14692-3795 USA

********************************************************************************
********************************************************************************

Thanks for your interest in TechnoTeacher's HyMinder SGML/HyTime
engine.  It can take the sting out of adding HyTime and SGML
compliance to your C++ applications, because it can handle all the
chores involved in parsing (importing), changing, reorganizing,
processing, validating, and exporting information represented
according to the ISO SGML and HyTime standards.  In other words,
application programmers can concentrate on the application-specific
portions of their software, and still equip their applications with an
ability to read and write information that can participate in the
worldwide mainstream of information processing.

This product, by itself, is useful only to C++ programmers.  HyMinder
has no end-user interface, although many applications can be readily
built by adding a user interface.

We are now shipping version 0.8.x of the HyMinder engine to customers
whose planning cycles require that they begin evaluations as soon as
possible.  We will provide to these early customers all updates
(including documentation improvements and bug fixes) until version
1.0, which they will also receive, and for one year thereafter,
without additional charge.

The HyMinder engine is the only SGML system available which was
designed specifically to support the heavy demands of HyTime (ISO/IEC
10744) processing, while also supporting a comprehensive array of SGML
functionalities.  It is built to serve as the SGML-handling substrate
of any application that requires any portion of the semantic
processing implied by the HyTime standard, e.g., hyperlinking,
scheduling and extended document management and validation.

Best regards,

       Steven R. Newcomb | TechnoTeacher, Inc.
  direct +1 716 389 0964 | (courier: 3800 Monroe Avenue, 
    main +1 716 389 0961 |  Pittsford, NY 14534-1330 USA)
     fax +1 716 389 0960 | P.O. Box 23795
Internet: srn@techno.com | Rochester, New York 14692-3795 USA

enc:  HyMinder Technical Information sheet
      HyMinder License Information sheet
      sample MarkMinder/HyMinder system application: Browse.cc

*******************************************************************************

            HyMinder Technical Information

TechnoTeacher, Inc.'s HyMinder HyTime engine is for those who wish to
write applications that can create and/or process hypermedia documents
represented in the internationally standard HyTime language, and for
those who wish to create object-oriented SGML applications or retrofit
existing applications so that data can be interchanged in the form of
SGML documents.

The HyMinder HyTime engine is a C++ library which offers an
easy-to-use and comprehensive API to the information contained in SGML
and HyTime documents.  When using the HyMinder system, programmers can
regard each syntactic and semantic construct (described by the SGML
and HyTime standards) as a persistent C++ object, and all such objects
can be manipulated, altered, validated, and/or automatically exported
as SGML/HyTime-conforming documents.

The HyMinder system incorporates TechnoTeacher's MarkMinder SGML
engine, which contains an SGML parser and exporter and allows editing
and validation of DTDs, elements, and attributes while in database
form.  The MarkMinder engine's SGML database technology allows it to
rapidly and randomly read, write, and/or alter the structures,
attribute values, contents, etc. of several databased SGML documents
simultaneously.

The HyMinder HyTime engine's object classes add the hyperlinking,
scheduling, and extended document management and validation facilities
of HyTime to the MarkMinder SGML engine substrate.  The HyMinder
engine performs validation and processing tasks that are specified and
implied by the HyTime standard, such as verifying the compliance of
elements with HyTime architectural forms, resolving hyperlinks,
providing anchor notification, providing traversal services between
separate documents, responding to queries expressed in HyTime's query
language (HyQ), assisting applications in managing the rendition of
events in time- and space-based documents, etc.

Version 0.8.2 of the HyMinder C++ library is currently available on
SPARCs running SunOS 4.1.x with GNU g++ 2.x, for SPARCs running
Solaris 2.x with SPARCompiler C++ 3.0.1, and for 80386 and 80486
machines running Linux 0.99.14 (libc 4.4.4) with GNU g++ 2.x.  Support
for other platforms is planned, and an MS Windows version is about to
be released; please make your needs known.

TechnoTeacher, Inc.
 (courier: 3800 Monroe Avenue,
 Pittsford, NY  14534-1330 USA)
P.O. Box 23795
Rochester, New York 14692-3795 USA
voice +1 716 389 0961
fax +1 716 389 0960
Internet: HyMinder@techno.com

Anticipated HyTime Module Support:

Version                 | 0.8  | 0.9  | 1.0  | 2.0  
Base                    |  p   |  p   |  p   | c 
Measurement             |  p   |  p   |  p   | c 
Location Address        |  p   |  p   |  p   | c 
Hyperlinks              |  p   |  p   |  p   | c 
Scheduling              |      |      |  p   | c  
Rendition               |      |      |  p   | c  

Anticipated HyTime Module Option Support:

Version          | 0.8  | 0.9  | 1.0   | 2.0 
             BASE MODULE
context          |      |      |       | c 
lextype          |      |      |       | c 
HyLex            |      |      |       | c 
lexord           |      |      |       | c 
refctl           |      |  c   |  c    | c 
exidrefs         |      |  c   |  c    | c 
dvlist           |      |      |  c    | c 
desctxt          |      |      |  c    | c 
activity         |      |  c   |  c    | c 
dcnatts          |      |      |  c    | c 
xpropdef         |      |      |       | c 
HyPD             |      |      |       | c 
unparsed         |      |      |       | c 
          MEASUREMENT MODULE
dimref           |      |      |       | c 
markfun          |      |  p   |   p   | c 
HyOp             |      |  p   |   p   | c 
HyFunk           |      |  p   |   p   | c 
homogran         |      |      |       | c 
fcsmdu           |      |      |       | c 
axismdu          |      |      |       | c 
           LOCATION ADDRESS MODULE
multloc          | p    |  c   |   c   | c 
spanloc          |      |      |       | c 
anysgml          |      |      |       | c 
anydtd           | c    |  c   |   c   | c 
mixspace         |      |      |       | c 
coordloc         | p    |  p   |   p   | c 
pathloc          |      |  c   |   c   | c 
relloc           | p    |  p   |   p   | c 
notsrc           |      |      |       | c 
query            | p    |  p   |   p   | c 
HyQ              | p    |  p   |   p   | c 
mixcase          |      |      |       | c 
bigmatch         |      |      |       | c 
uassert          |      |      |       | c 
          HYPERLINKS MODULE
manyanch=NUMBER  | c     |  c   |  c   | c 

          SCHEDULING MODULE
manyaxes=NUMBER  |      |      |       | c 
splitfcs         |      |      |       | c 
grpdex           |      |      |       | c 
accanch          |      |      |       | c 
exrecon          |      |      |       | c 
calspec          |      |      |       | c 
juldate          |      |      |       | c 
           RENDITION MODULE
modify           |      |      |       | c 
patch            |      |      |       | c 
project          |      |      |       | c 
profun           |      |      |       | c 
scaleref         |      |      |       | c 

Table key: p=partial; c=complete.

Support for the Scheduling and Rendition modules of HyTime will begin
with version 1.0.

*******************************************************************************

             HyMinder License Information

Licenses: The terms and conditions of specific Developer Licenses and
Application Licenses are contained in written agreements.  (The
information in this circular is subject to modification by changes,
additions and deletions without notice.)  Not shown in the fee
schedules below are shipping fees, media charges (a nominal charge for
each actual copy of the HyMinder library and documentation on magnetic
media), applicable taxes, and the additional costs of optional
technical services.

Developer Licenses: A HyMinder Developer License consists of the right
to use the HyMinder library for the purpose of developing applications
that contain and/or use the HyMinder engine, and for testing such
applications prior to distribution or deployment for use.  This
nonexclusive, nontransferable license is good for a year at a time and
allows for the use of the HyMinder library by one named person (or,
alternatively, by one named machine to be used only by one person
during any one period of time).  Each Developer License is provided
for one specific computer platform.

Pricing: A HyMinder Developer License may be purchased
annually for $5,500 [all amounts are shown in US dollars]
plus $1,000 per developer (for a minimum of $6,500), with the total
Developer License fees not to exceed $25,000 per year per software
development site.  Developer License fees include the cost of
maintenance, all updates and new releases, technical support, and ten
Distributable End User Licenses.

Schedule of Developer License Fees:

($5,500 plus $1,000 per developer [minimum of $6,500])
number of developers  |   price per year 
     1                |   $ 6,500  
     2                |   $ 7,500  
     5                |  $ 10,500  
    10                |  $ 15,500  
20 or more            |  $ 25,000  

Unlimited Single Application Licenses: A HyMinder Unlimited Single
Application License consists of the right to incorporate all or any
portion of the HyMinder library in an unlimited number of copies of
exactly one application, a description of which forms part of the
license agreement.

Pricing: A HyMinder Unlimited Single Application License may be
purchased for $65,000.  Each new Application costs an additional
$65,000, with the total cost of Application Licenses not to exceed
$250,000 per licensee.  A license for unlimited numbers of copies of
an unlimited number of applications may be purchased for $250,000.

Schedule of Unlimited Single Application License Fees:

($65,000 per application)
number of applications     |   price     
     1                     |    $65,000   
     2                     |   $130,000   
     3                     |   $195,000   
4 or more                  |   $250,000   

Note: The applicable Developer License Fee must be paid annually for
the continuation of maintenance.

Refunds: License fees, and all taxes based on license fees, are
refundable if all copies are destroyed and all original materials are
returned to TTI within thirty days after the materials are first
delivered to Licensee's address.  No other charges are refundable.

TechnoTeacher, Inc.
 (courier: 3800 Monroe Avenue, 
  Pittsford, NY  14534-1330 USA) 
P.O. Box 23795 
Rochester, New York 14692-3795 USA 
voice +1 716 389 0961 
fax +1 716 389 0960 
Internet: HyMinder@techno.com
********************************************************************************

A sample HyMinder engine application: Browse.cc

Here is a sample session running the Browse.cc program (source code
attached below).  Browse.cc provides a very primitive user interface
to a small portion of the HyMinder engine's functionality.  In this
session, the SGML document "poems.doc" (attached below) is browsed.

(Please note that the Browse.cc program is not a product.  It is
merely intended to demonstrate a small portion of the MarkMinder and
HyMinder API, a portion which contains only some of data retrieval
methods of those systems, and none of the data and metadata storage
and editing methods.)

***

% browse poems.doc                    // first session begins here.
Element:  GI: "POEMDOC":1             // starts at document element
browse> ?                             // get help info
[H]     Go to the hub node
[P]     Go to parent
[N]     Go to first child
[F]     Go to next sibling
[B]     Go to previous sibling
[A]     Show anchors (for a link)     // see second session, below
[L]     Show links (for an anchor)    // see second session, below
[?]     Show this help screen
[Q]     Quit
Element:  GI: "POEMDOC":1
browse> n                             // go to first child element
Element:  GI: "POEM":1  ID: "WALRUS"
browse> n
Element:  GI: "TITLE":1
browse> n
Pseudo-element:  "The Walrus and the Carpenter^M  "
browse> p                             // go to parent element
Element:  GI: "TITLE":1
browse> f                             // go to next sibling
Element:  GI: "AUTHOR":1
browse> n
Pseudo-element:  "Lewis Carroll^M  "
browse> p
Element:  GI: "AUTHOR":1
browse> f
Element:  GI: "LI":1
browse> n
Pseudo-element:  ""The time has come," the Walrus said.^M  "
browse> p
Element:  GI: "LI":1
browse> f
Element:  GI: "LI":2
browse> n
Pseudo-element:  ""To speak of many things:^M  "
browse> p
Element:  GI: "LI":2
browse> f
Element:  GI: "LI":3
browse> f
Element:  GI: "LI":4
browse> f
Element:  GI: "LI":5
browse> f
Element:  GI: "LI":6
browse> f
Element:  GI: "LI":6      // ^G: bell rings; no next sibling
browse> p
Element:  GI: "POEM":1  ID: "WALRUS"
browse> f
Element:  GI: "POEM":2  ID: "JABWOCK"
browse> q                   // quit
%

***

The second session, below, demonstrates the use of the HyMinder system
(the MarkMinder system as enhanced for HyTime processing) in Browse.cc
to traverse a link to a named element in another document, and back
again.

***

% browse annot.doc                  // second session begins here
Element:  GI: "ANNOTDOC":1
browse> n
Element:  GI: "P":1
browse> n
Pseudo-element:  "In this poem, "
browse> f
(LINK) Element:  GI: "POEMREF":1  ID: ""
browse> f
Pseudo-element:  " Lewis^MCarroll seemingly utters utter nonsense."
browse> p
Element:  GI: "P":1
browse> n
Pseudo-element:  "In this poem, "
browse> f
(LINK) Element:  GI: "POEMREF":1  ID: ""
browse> n
(ANCHOR) Pseudo-element:  "Jabberwocky"
browse> l                     // go to link of this anchor
(LINK) Element:  GI: "POEMREF":1  ID: ""
browse> a                     // show anchors of this link
Choose an Anchor:
[ 0]    Cancel
[ 1]  (ANCHOR) Pseudo-element:  "Jabberwocky"
[ 2]  (ANCHOR) Element:  GI: "POEM":2  ID: "JABWOCK"
Anchor? 2                     // go to other document
(ANCHOR) Element:  GI: "POEM":2  ID: "JABWOCK"
browse> n
Element:  GI: "TITLE":2
browse> n
Pseudo-element:  "Jabberwocky^M  "
browse> p
Element:  GI: "TITLE":2
browse> p
(ANCHOR) Element:  GI: "POEM":2  ID: "JABWOCK"
browse> l                      // go to link of this anchor
(LINK) Element:  GI: "POEMREF":1  ID: ""
browse> a                      // show anchors of this link
Choose an Anchor:
[ 0]    Cancel
[ 1]  (ANCHOR) Pseudo-element:  "Jabberwocky"
[ 2]  (ANCHOR) Element:  GI: "POEM":2  ID: "JABWOCK"
Anchor? 1
(ANCHOR) Pseudo-element:  "Jabberwocky"
browse> p                      
(LINK) Element:  GI: "POEMREF":1  ID: ""
browse> b
Pseudo-element:  "In this poem, "
browse> p
Element:  GI: "P":1
browse> p
Element:  GI: "ANNOTDOC":1   // we're back where we started
browse> q
%

***

The third session, below, demonstrates the use of the HyMinder system
(the MarkMinder system as enhanced for HyTime processing) in Browse.cc
to traverse a link in a HyTime document (annot.doc) to an unnamed
element in an SGML document (poems.doc), and back again.  The remote
anchor is specified using the HyQ query language.  (Note: HyQ, which
is part of the ISO 10744 HyTime standard, is the only internationally
standardized query language for use with SGML documents.)  The query
is found in the nameloc element (id=walrus3) at the end of the
"annot.doc" element.

***

% browse annot.doc
Element:  GI: "ANNOTDOC":1
browse> n
Element:  GI: "P":1
browse> f
Element:  GI: "P":2
browse> n
Pseudo-element:  "In "
browse> f
(LINK) Element:  GI: "POEMREF":2  ID: ""
browse> n
(ANCHOR) Pseudo-element:  "line 3"
browse> p
(LINK) Element:  GI: "POEMREF":2  ID: ""
browse> f
Pseudo-element:  " of the^M"
browse> f
(LINK) Element:  GI: "POEMREF":3  ID: ""
browse> n
(ANCHOR) Pseudo-element:  "poem"
browse> p
(LINK) Element:  GI: "POEMREF":3  ID: ""
browse> f
Pseudo-element:  ", sealing wax may mean the wax^Mthat seals the hulls of ships, but probably not."
browse> p
Element:  GI: "P":2
browse> n
Pseudo-element:  "In "
browse> f
(LINK) Element:  GI: "POEMREF":2  ID: ""
browse> a
Choose an Anchor:
[ 0]    Cancel
[ 1]  (ANCHOR) Pseudo-element:  "line 3"
[ 2]  (ANCHOR) Element:  GI: "LI":3
Anchor? 2
(ANCHOR) Element:  GI: "LI":3
browse> n
Pseudo-element:  "Of shoes and ships and sealing wax,^M  "
browse> p
(ANCHOR) Element:  GI: "LI":3
browse> p
(ANCHOR) Element:  GI: "POEM":1  ID: "WALRUS"
browse> p
Element:  GI: "POEMDOC":1
browse> n
(ANCHOR) Element:  GI: "POEM":1  ID: "WALRUS"
browse> n
Element:  GI: "TITLE":1
browse> f
Element:  GI: "AUTHOR":1
browse> f
Element:  GI: "LI":1
browse> f
Element:  GI: "LI":2
browse> f
(ANCHOR) Element:  GI: "LI":3
browse> l
(LINK) Element:  GI: "POEMREF":2  ID: ""
browse> a
Choose an Anchor:
[ 0]    Cancel
[ 1]  (ANCHOR) Pseudo-element:  "line 3"
[ 2]  (ANCHOR) Element:  GI: "LI":3
Anchor? 1
(ANCHOR) Pseudo-element:  "line 3"
browse> p
(LINK) Element:  GI: "POEMREF":2  ID: ""
browse> p
Element:  GI: "P":2
browse> p
Element:  GI: "ANNOTDOC":1
browse> q
%

***

Below is the full text of poems.doc:

***

<!DOCTYPE poemdoc [

  <!ELEMENT poemdoc - O (poem)*>

  <!ELEMENT poem - O (title, author, li*) >
  <!ATTLIST poem id ID #IMPLIED>

  <!ELEMENT li - O (#PCDATA)>
  <!ELEMENT (title,author) - O (#PCDATA)>

]>

<poemdoc>

<poem id = walrus>
  <title>The Walrus and the Carpenter
  <author>Lewis Carroll
  <li>"The time has come," the Walrus said.
  <li>"To speak of many things:
  <li>Of shoes and ships and sealing wax,
  <li>Of cabbages and kings,
  <li>And why the sea is boiling hot,
  <li>And whether pigs have wings.
</poem>

<poem id = jabwock>
  <title>Jabberwocky
  <author>Lewis Carroll
  <li>"Beware the Jabberwock, my son,
  <li>The jaws that bite,
  <li>The claws that catch;
  <li>Beware the jubjub bird, and shun
  <li>The frumious bandarsnatch."
</poem>

</poemdoc>

***

Below is the full text of annot.doc:

***

<!DOCTYPE annotdoc [

  <!ELEMENT annotdoc - O ( p | poemref | nameloc)* >
  <!ELEMENT p - O ( #PCDATA | poemref)* >

  <!ELEMENT poemref - O ( #PCDATA) >
  <!ATTLIST poemref 
    HyTime     NAME     #FIXED           clink
    id         ID       #IMPLIED
    linkend    IDREF    #REQUIRED
  >

  <!ELEMENT nameloc - O ( nmlist | HyQ)* >
  <!ATTLIST nameloc
    id          ID        #REQUIRED
    HyTime      NAME      #FIXED          nameloc
    ordering    (ordered|noorder)         noorder
    set         (set|notset)              notset
    aggloc      (aggloc|agglink|nagg)     agglink
  >

  <!ELEMENT nmlist - O ( #PCDATA) >
  <!ATTLIST nmlist
    HyTime      NAME                      nmlist
    nametype    (entity|element|unified)  element
    obnames     (obnames|nobnames)        nobnames
    docorsub    ENTITY    #IMPLIED
  >

  <!NOTATION HyQ PUBLIC "+//ISO/IEC 10744:1992//NOTATION HyTime Query Notation//EN" >
  <!ELEMENT HyQ - O ( #PCDATA) >
  <!ATTLIST HyQ
    HyTime      (nmquery|mrkquery)        nmquery
    notation    NAME      #FIXED          HyQ
    qdomain     IDREFS    #IMPLIED
    args        IDREFS    #IMPLIED
  >

  <!ENTITY poems SYSTEM "poems.doc" CDATA SGML>
  <!NOTATION SGML PUBLIC 
   "+//ISO/IEC 8879:1986//NOTATION Standard Generalized Markup Language//EN">
]>

<annotdoc>

<p>In this poem, <poemref linkend=jabloc>Jabberwocky</poemref> Lewis
Carroll seemingly utters utter nonsense.</p>

<p>In <poemref linkend=walrus3>line 3</poemref> of the
<poemref linkend=walrus>poem</poemref>, sealing wax may mean the wax
that seals the hulls of ships, but probably not.</p>

<!-- Gets "Jabberwocky" from poems.doc --> 
<nameloc id=jabloc><nmlist element docorsub=poems>jabwock</nmlist></nameloc>

<!-- Gets "Walrus and the Carpenter" from poems.doc -->
<nameloc id=walrus><nmlist element docorsub=poems>walrus</nmlist></nameloc>

<!-- Gets the third line from "Walrus" -->
<nameloc id=walrus3><HyQ qdomain=walrus>
  Listloc( Select( Relloc( DOMROOT DOMROOT CHILDREN)
                   EQ( Proploc( CAND GI EMPTY) "LI"))
           3 1)
</HyQ></nameloc>

***

Below is the full source code of Browse.cc:

***

-- begin Makefile --
# 
#         NAME: Makefile
#      PROJECT: Example document browsing application with 
#               very primitive user interface.
#  DESCRIPTION: An example use of the HyMinder system, `Browse' allows
#               a user to interactively browse an SGML/HyTime
#               document.
# 
#            Copyright (C) 1994 TechnoTeacher, Inc.
#
# RCS INFO:  $Id: Makefile,v 1.1 1995/01/04 18:01:27 peter Exp peter $

# Prefix for include, lib and executable files
PREFIX=/usr/techno/hyminder

# HyMinder include files path.
INCLUDEDIR=$(PREFIX)/include

# HyMinder library path.
LIBDIR=$(PREFIX)/lib

# Executables path.
BINDIR=$(PREFIX)/bin

# C++ compiler and options.
CXX = g++
CCOPTIONS = -g -Wall

# Linker options.
LDOPTIONS = -g

###################################################
# You shouldn't need to change anything below here.

PROG = browse
OBJS = Browse.o
CXXFLAGS = $(CCOPTIONS) -I$(INCLUDEDIR)
LDFLAGS = $(LDOPTIONS) -L$(LIBDIR)
LIBS = -lhyminder -lmarkminder -lmmexport -lmmparser -lhmentitymanager \
       -lhmdocobj -lhmdtd -lhmsgmldecl -lhmruleman -lhmdb -lhmutil \
       -lidf -lkeyf

all: $(PROG)

$(PROG): $(OBJS)
    $(CXX) $(LDFLAGS) -o $@ $^ $(LIBS)

clean:
    -rm -f *.o $(PROG)
-- end Makefile --

-- begin Browse.cc --
// 
// MODULE NAME: Browse.cc
//     PROJECT: Example document browsing application with 
//              very primitive user interface.
// DESCRIPTION: An example use of the HyMinder system, `Browse' allows
//              a user to interactively browse an SGML/HyTime
//              document.
// 
//  Copyright (C) 1993, 1994 TechnoTeacher, Inc.  All rights reserved.
//
// Permission to reproduce and share this material is granted only for
// purposes of evaluating the MarkMinder and/or HyMinder systems by
// potential licensees of those systems, provided that no changes are
// made to this material in any copy, and also provided that this notice
// is reproduced with every copy.  No other use of this material is
// permitted.
//
// (Please note that the browse program is not a product.  It is merely
// intended to demonstrate a small portion of the MarkMinder and HyMinder
// API, a portion which contains only some of data retrieval methods of
// those systems, and none of the data and metadata storage and editing
// methods.)
// 

#include <HMError.h>
#include <HMErrorHandler.h>
#include <HMFile.h>
#include <HMDocObj.h>
#include <HMDocumentDatabase.h>
#include <HMNode.h>
#include <HMAttributeValue.h>
#include <HMHyMinder.h>
#include <HMHyMinderDefaultCallback.h>
#include <HMHyTimeIndex.h>
#include <HMNodePtrLinkedList.h>
#include <HMIntStack.h>
#include <HMLinkHandler.h>
#include <HMDataObject.h>
#include <HMLinkend.h>
#include <HMLinkendPtrList.h>
#include <HMIlink.h>
#include <HMClink.h>

// Browse application class.
class Browse {
    
    // Contains the exit status of the most recently called method.
    HMError e;

    // Pointer to the application's callback object.
    HMHyMinderApplicationCallback * callback;
    
    // Pointer to the application's HyMinder object.
    HMHyMinder * hyMinder;
    
    // Pointer to the hub document's document element.
    HMNodePtr hubNode;
    
    // Prints out the relevent data for a node.  (e.g. its GI, unique id,
    // data content, ...)
    int GetChoice( char * prompt, int max);
    
    // Prints out the relevent data for a node.  (e.g. its GI, unique
    // id, data content, ...)
    HMError PrintNode( HMNodePtr & node);
    
    // Given an ilink in `ilinkNode', `GetAnchorFromIlink' retrieves the
    // anchors the link points to and allows the user to select one; it
    // is returned in `anchorNode'.  `GetAnchorFromIlink' assumes that
    // `linkNode' is an ilink, i.e. no sanity checking is performed.
    HMError GetAnchorFromIlink( HMNodePtr & ilinkNode, HMNodePtr & anchorNode);

    // Given a clink in `clinkNode', `GetAnchorFromClink' retrieves the
    // anchors the link points to and allows the user to select one; it
    // is returned in `anchorNode'.  `GetAnchorFromClink' assumes that
    // `linkNode' is a clink, i.e. no sanity checking is performed.
    HMError GetAnchorFromClink( HMNodePtr & clinkNode, HMNodePtr & anchorNode);

    // Given a linkend, `GetNodeFromLinkend' retrieves the
    // anchors the linkend points to and allows the user to select one; it
    // is returned in `anchorNode'.
    HMError GetAnchorFromLinkend( HMLinkend & linkend, HMNodePtr & anchor);
    
  public:
    
    // Constructor.  Opens the document database `docName' and allows
    // the user to browse it.
    Browse( HMUChar * docName);
    
    // Destructor.  Deletes the HyMinder object if it has been
    // instantiated.
    TildeBrowse();
    
    // At an anchor, retrieves the links that point to it and allows
    // the user to select one, which is returned in `link'.
    HMError GetLink( HMNodePtr & anchor, HMNodePtr & link);
    
    // At a link, retrieves the anchors the link points to and allows
    // the user to select one, which is returned in `anchor'.
    HMError GetAnchor( HMNodePtr & link, HMNodePtr & anchor);
    
    // Returns the exit status of the most recently called method.
    inline HMError Status() { return e;}
    
    // Prints any accumulated error messages in the global hmError object.
    void PrintErrors();

    // Prints out a menu of recognized commands.
    void Help();
};

// Prints any accumulated error messages in the global hmError object.
void
Browse::
PrintErrors()
{
    // Print accumulated errors to standard error.
    hyMinder->PrintErrors( HMstderr);
}

// Constructor.  Opens the document database `docName' and allows the
// user to browse it.
Browse::
Browse( HMUChar * docName)
{
    // Create a callback object to give to HyMinder.
    callback = new HMHyMinderDefaultCallback;

    // Intantiate a HyMinder object, passing it the source system
    // identifier object of the hub document database.
    hyMinder = new HMHyMinder( callback);

    // Instantiate a system identifier object, passing it the system
    // identifier object of the session and hub document database.
    HMSystemIdentifier systemIdentifier;
    systemIdentifier.Assign( docName);

    // Open the session and hub document databases.
    if ( e = hyMinder->OpenSession( systemIdentifier)) {
        HMstderr.Printf( "Error occured while opening session or hub database \"%s\"\n", docName);
        return;
    }

    // Perform HyTime engine processing on the document.  This allows
    // the engine to create hypermedia indexes of the document to
    // speed rendition. 
    if ( e = hyMinder->DoEngineProcessing()) {
        HMstderr.Printf( "Error(s) occured while doing HyTime engine processing\n");
        return;
    }

    // Print out non-fatal errors accumulated by engine processing.
    PrintErrors();

    // Start browsing at the document element of the hub document.
    HMNodePtr node;
    if ( e = hyMinder->GetHubNode( node)) {
        HMstderr.Printf( "Couldn't get hub node: error %d\n", e);
    return;
    }

    // The main loop of the application.  Describe the current node as
    // pointed to by `node', and then wait for a command.  The
    // procedure associated with command makes `tmpNode' point to a
    // new node, which if not null is assigned to `node' at the end of
    // the loop, thus completing the cycle.
    HMNodePtr tmpNode;
    int command;
    for (;;) {

        // Print out the current node.
        if ( e = PrintNode( node)) return;

        // Prompt the user for a command.
        HMstdout.Printf( "browse> ");

        // Wait for a command.
        command = getchar();

        // Catch any extra characters entered up to and including a newline.
        while ( getchar() != '\n');

        // Process the command.
        switch ( command) {

          case 'h':
          case 'H':
            // Return to the hub node.
        if ( e = hyMinder->GetHubNode( tmpNode)) {
        HMstderr.Printf( "Couldn't get hub node: error %d\n", e);
        tmpNode = 0;
        }
            break;

          case 'p':
          case 'P':
            // Go to the parent of the current node.
            tmpNode = node->GetParent();
            break;
            
          case 'b':
          case 'B':
            // Go to the previous sibling of the current node.
            tmpNode = node->GetPrevSib();
            break;
            
          case 'f':
          case 'F':
            // Go to the next sibling of the current node.
            tmpNode = node->GetNextSib();
            break;
            
          case 'n':
          case 'N':
            // Go to the first child of the current node.
            tmpNode = node->GetFirstChild();
            break;
            
          case 'a':
          case 'A':
            // Choose an anchor of the current node, which must be a link.
            if ( e = GetAnchor( node, tmpNode)) return;
            break;

          case 'l':
          case 'L':
            // Choose a link of the current node, which must be an anchor.
            if ( e = GetLink( node, tmpNode)) return;
            break;

          case '?':
            // Print out a menu of commands.
            Help();
            // Stay at the current node.
            tmpNode = node;
            break;

          case 'q':
          case 'Q':
            // Exit from the program.
            return;
            break;
        }

        // Set the current node to the node pointed to by tmpNode,
        // unless it's null, in which case beep (or do the equivalent
        // thereof).
        if ( tmpNode) node = tmpNode;
        else putchar(0x07);
    }
}

// Destructor.  Deletes the HyMinder object if it has been
// instantiated.
Browse::
TildeBrowse()
{
    // Close the session database.
    if ( e = hyMinder->CloseSession())
      HMstderr.Printf( "Error occured while closing session database: error %d\n", e);

    // Delete the HyMinder object if it has been instantiated.
    if ( hyMinder)
      delete hyMinder;

    // Delete the callback object after deleting the HyMinder object,
    // as HyMinder may need to use the callback object duing deletion.
    if ( callback)
      delete callback;
}

// Prints to standard output a menu of recognized commands.
void
Browse::
Help()
{
    HMstdout.Printf( "\
[ H]\tGo to the hub node\n\
[ P]\tGo to parent\n\
[ N]\tGo to first child\n\
[ F]\tGo to next sibling\n\
[ B]\tGo to previous sibling\n\
[ A]\tShow anchors (for a link)\n\
[ L]\tShow links (for an anchor)\n\
[ ?]\tShow this help screen\n\
[ Q]\tQuit\n");
}

// At an anchor, retrieves the links that point to it and allows
// the user to select one, which is returned in `link'.
HMError
Browse::
GetLink( HMNodePtr & anchor, HMNodePtr & link)
{
    // Test to see if `anchor' is really an anchor.  If not, return a
    // null ponter in link, but otherwise return ok.
    if ( !hyMinder->GetLinkHandler()->IsAnchor( anchor)) {
        link = 0;
        return e = HM_OK;
    }
    
    // An `HMNodePtrLinkedList' uses the HyMinder object to resolve
    // nodes over multiple documents.
    HMNodePtrLinkedList links( hyMinder);
    HMIntStack linkendNumbers;
    HMIntStack whichInAggregate;
    
    // Get all links which point to the node `anchor'.  `links',
    // `linkendNumbers', and `whichAggregates' are parallel arrays
    // where `links' contains the link nodes, `linkendNumbers'
    // contains the linkend number of `anchor' within each link, and
    // `whichInAggregate' contains the number of `anchor' within its
    // aggregate location link, if any.
    if ( e = hyMinder->GetLinkHandler()->GetLinks( anchor, links, linkendNumbers, whichInAggregate)) {
        HMstderr.Printf( "Error occured while getting links from an anchor.\n");
        return e;
    }
    
    // `HMNodePtrItemPtr' objects are used to index
    // `HMNodePtrLinkedList' objects.
    HMNodePtrItemPtr p;
    
    // If there is only one link to choose from, go directly to that
    // link, otherwise create a menu of links and ask the user to
    // select one.
    if ( links.Count() == 1) {
        
        // Set `link' to the first link.  `p' must be used to hold the
        // object returned from `links.First()' in order to avoid
        // having it go out of scope before using it to index `links'
        // to get the actual node.
        link = links.GetNodePtr( p = links.First());
        
    } else {
        
        // Start a link menu.
        HMstdout.Printf( "Choose a Link:\n");
        HMstdout.Printf( "[ 0]\tCancel\n");
        
        // Loop though the links, creating a menu. `p' is used to
        // index `links', and `i' is used to index the linkend and
        // aggregate numbers.
        int i = 0;
        for ( p = links.First(); p; p = links.Next( p)) {
            
            // Print menu, linkend, and aggregate numbers.
            HMstdout.Printf( "[%2d]  (%d,%d) ", i+1,
                            linkendNumbers[ i], whichInAggregate[ i]);
            
            // Print information about the link.
            PrintNode( link = links.GetNodePtr( p));
            
            i++;
        }
        
        switch ( i = GetChoice( "Link? ", links.Count())) {
            
          case -1:
            // Got EOF; Exit.
            return e = HM_MACHINE_ENDS;
            
          case 0:
            // If the user entered 0, return the anchor as the link, i.e.
            // stay at the anchor.  Otherwise return the selected link.
            link = anchor;
            break;
            
          default:
            link = links.GetNodePtr( p = links.Select( i - 1));
            break;
        }
    }

    // Everything went ok.
    return e = HM_OK;
}

// Given a link in `linkNode', `GetAnchor' retrieves the anchors the
// link points to and allows the user to select one, which is returned
// in `anchorNode'.  Otherwise `anchorNode' is set null.
HMError
Browse::
GetAnchor( HMNodePtr & linkNode, HMNodePtr & anchorNode)
{
    // Find out what `linkNode' really is and do the appropriate thing.
    switch ( hyMinder->GetArchitecturalForm( linkNode) ) {

      case hme_hytime_ilink:
        return e = GetAnchorFromIlink( linkNode, anchorNode);

      case hme_hytime_clink:
        return e = GetAnchorFromClink( linkNode, anchorNode);

      default:
        // If it's not a link, return a null ponter in anchorNode, but
        // otherwise return ok.
        anchorNode = 0;
        return e = HM_OK;
    }
}

// Given an ilink in `linkNode', `GetAnchorFromIlink' retrieves the
// anchors the link points to and allows the user to select one, which
// is returned in `anchorNode'.  `GetAnchorFromIlink' assumes that
// `linkNode' is an ilink, i.e. no sanity checking is performed.
HMError
Browse::
GetAnchorFromIlink( HMNodePtr & ilinkNode, HMNodePtr & anchorNode)
{
    // Create an `HMIlink' object out of `ilinkNode'.
    HMIlink ilink( hyMinder, ilinkNode);

    // Create a menu of anchors and ask the user to select one.
    // Start the anchor menu.
    HMstdout.Printf( "Choose an anchor:\n");
    HMstdout.Printf( "[ 0]  Cancel\n");

    // Loop though the anchors, creating a menu.
    for ( int i = 0; i < ilink.GetLinkends().Count(); i++) {

        // Print menu number and anchrole of anchor.
        HMstdout.Printf( "[%2d]  anchrole=\"%s\"\n", i+1, ilink.GetLinkends()[ i]->GetAnchorRole().Str());
    }

    // `GetChoice()' prints out its first argument, then asks the user
    // for a number between 0 and its second argument.
    switch ( i = GetChoice( "Anchor? ", ilink.GetLinkends().Count())) {

      case -1:
        // Got EOF; Exit.
        return e = HM_MACHINE_ENDS;

      case 0:
        // If the user entered 0, return the link as the anchor, i.e.
        // stay at the link.  Otherwise return the selected anchor.
        anchorNode = ilinkNode;
        break;

      default:
        return e = GetAnchorFromLinkend( *ilink.GetLinkends()[ i - 1], anchorNode);
    }

    // Everything went ok.
    return e = HM_OK;
}

// Given an ilink in `linkNode', `GetAnchorFromIlink' retrieves the
// anchors the link points to and allows the user to select one, which
// is returned in `anchorNode'.  `GetAnchorFromIlink' assumes that
// `linkNode' is an ilink, i.e. no sanity checking is performed.
HMError
Browse::
GetAnchorFromClink( HMNodePtr & clinkNode, HMNodePtr & anchorNode)
{
    // Create an `HMIlink' object out of `ilinkNode'.
    HMClink clink( hyMinder, clinkNode);

    // Create a menu of anchors and ask the user to select one.
    HMstdout.Printf( "Choose an anchor:\n");
    HMstdout.Printf( "[ 0]  Cancel\n");
    HMstdout.Printf( "[ 1]  anchrole=\"%s\"\n", clink.GetRefMark().GetAnchorRole().Str());
    HMstdout.Printf( "[ 2]  anchrole=\"%s\"\n", clink.GetRefSub().GetAnchorRole().Str());
    
    int i;
    // `GetChoice()' prints out its first argument, then asks the user
    // for a number between 0 and its second argument.
    switch ( i = GetChoice( "Anchor? ", 2)) {

      case -1:
        // Got EOF; Exit.
        return e = HM_MACHINE_ENDS;

      case 0:
        // If the user entered 0, return the link as the anchor, i.e.
        // stay at the link.  Otherwise return the selected anchor.
        anchorNode = clinkNode;
        break;

      case 1:
        return e = GetAnchorFromLinkend( clink.GetRefMark(), anchorNode);

      case 2:
        return e = GetAnchorFromLinkend( clink.GetRefSub(), anchorNode);
    }

    // Everything went ok.
    return e = HM_OK;
}

// Given a linkend, `GetNodeFromLinkend' retrieves the
// anchors the linkend points to and allows the user to select one; it
// is returned in `anchorNode'.
HMError
Browse::
GetAnchorFromLinkend( HMLinkend & linkend, HMNodePtr & anchorNode)
{
    HMNodePtrItemPtr p = linkend.GetAnchorNodes().First();
    
    // If the anchor is an aggregate, and there is more than one node
    // in the list, create a menu and allow the user to select one.
    // Otherwise take the first node on the list.
    if ( linkend.IsAggregate() && linkend.GetAnchorNodes().Count() > 1 ) {
        
        // Create a menu of aggregate members; This assumes that aggtrav="agg".
        HMstdout.Printf( "Choose an aggregate member:\n");
        HMstdout.Printf( "[ 0]  Cancel\n");
        for (int i = 1; linkend.GetAnchorNodes().GetNodePtr( p); i++) {
            HMstdout.Printf( "[%2d]  ", i);
            PrintNode( linkend.GetAnchorNodes().GetNodePtr( p));
            p = linkend.GetAnchorNodes().Next( p);
        }
        
        // `GetChoice()' prints out its first argument, then asks the user
        // for a number between 0 and its second argument.
        switch ( i = GetChoice( "Node? ", linkend.GetAnchorNodes().Count())) {

          case -1:
            // Got EOF; Exit.
            return e = HM_MACHINE_ENDS;
            
          case 0:
            // If the user entered 0, set anchorNode to 0, in effect
            // cancelling traversal.
            anchorNode = 0;
            break;
            
          default:
            // Get the appropriate node.
            p = linkend.GetAnchorNodes().Select( i - 1);
            anchorNode = linkend.GetAnchorNodes().GetNodePtr( p);
            break;
        }
        
    } else {
        
        switch ( linkend.GetAnchorNodes().Count()) {
            
          case 1:
            // Get the appropriate node.
            anchorNode = linkend.GetAnchorNodes().GetNodePtr( p);
            break;
            
          case 0:
            // Empty list.
            anchorNode = 0;
            HMstdout.Printf( "No nodes at this anchor!\n");
            break;
            
          default:
            // Somehow got multiple nodes at a non-aggregate anchor;
            // Print out the offending nodes and return.
            anchorNode = 0;
            HMstdout.Printf( "More than one node at a non-aggregate anchor!\n");
            for (int i = 1; linkend.GetAnchorNodes().GetNodePtr( p); i++) {
                HMstdout.Printf( "Node %2d:  ", i);
                PrintNode( linkend.GetAnchorNodes().GetNodePtr( p));
                p = linkend.GetAnchorNodes().Next( p);
            }
            break;
        }
    }
    
    return e = HM_OK;
}

// `GetChoice()' prints out its first argument, then asks the user
// for a number between 0 and its second argument.
int
Browse::
GetChoice( char * prompt, int max)
{
    // Get a number from the user from 0 to the number of anchors available.
    int choice = -1;
    while ( choice < 0 || choice > max) {
        HMstdout.Printf( prompt);
        switch ( scanf( "%d", &choice) ) {

          case EOF:
            // Exit.
            return -1;

          case 0:
            // `scanf' failed; clear any characters entered up to and
            // including a newline so we can try again.
            while ( getchar() != '\n');
            choice = -1;
            break;

          default:
            break;
        }
    }
    // Catch any extra characters entered up to and including a newline.
    while ( getchar() != '\n');

    return choice;
}

// Prints out the relevent data for a node.  (e.g. its GI, unique id,
// data content, ...)
HMError
Browse::
PrintNode( HMNodePtr & node)
{

    // If this node is a link, display the fact.
    HMArchitecturalForm af = hyMinder->GetArchitecturalForm( node);
    if ( af == hme_hytime_ilink || af == hme_hytime_clink) {
        HMstdout.Printf( "(LINK) ");
    }

    // If this node is an anchor, display the fact.
    if ( hyMinder->GetLinkHandler()->IsAnchor( node)) {
        HMstdout.Printf( "(ANCHOR) ");
    }

    // Display the in different ways depending on the type of node it
    // is.
    switch ( node->GetType()) {
        
      case hme_node_type_element:
        // This node is an element.
        {
            // Show that this is an element.
            HMstdout.Printf( "Element:");

            // Get the element's GI and print it out.
            HMName name;
            if ( e = node->GetGi( name)) {
                HMstderr.Printf( "Error occured while getting GI from a node.\n");
                return e;
            }
            HMstdout.Printf( "  GI: \"%s\":%d", name.Str(), node->GetOccurrenceNumber());

            // Get the element's unique identifier, if it has one, and
            // print it out.
            HMAttributeValue attributeValue;
            if ( e = node->GetAttributeValue( hme_id, attributeValue)) {
                if ( e != HM_ATTRIBUTE_NOT_FOUND &&
                    e != HM_NO_ATTRIBUTES_DEFINED) {
                    HMstderr.Printf( "Error occured while getting ID from a node.\n");
                    return e;
                }
            } else HMstdout.Printf( "  ID: \"%s\"", attributeValue.Str());
        }
        break;
        
      case hme_node_type_pelement:
        // This node is a psuedo-element. (e.g. PCDATA)
        {
            // Show that this is a psuedo-element.
            HMstdout.Printf( "Pseudo-element:");

            // Get the psuedo-element's data and print it out.
            HMReplaceableData data;
            if ( e = node->GetData( data)) {
                HMstderr.Printf( "Error occured while getting data from a node.\n");
                return e;
            }
            HMstdout.Printf( "  \"%s\"", data.Str());
        }
        break;
        
      default:
        // Anything else is either illegal or unimplemented.
        HMstdout.Printf( "Node type %d not implemented.", node->GetType());
        break;
    }
    
    // Finish the line.
    HMstdout.Printf( "\n");
    
    return e = HM_OK;
}

int
main( int argc, char ** argv)
{
    // Check that we have exactly one argument.
    if ( argc != 2) {
        HMstderr.Printf( "\
Usage:   %s <doc>\n\
Where <doc> is a MarkMinder/HyMinder document database.\n", argv[0]);
        return 1;
    }
    
    // Run the application, passing the first argument to the program
    // as the document filename.
    Browse browse( ( HMUChar *) argv[1]);

    // Print any error messages accumulated while running the
    // application.
    browse.PrintErrors();

    // If a serious error occured, report it and exit with a non-zero
    // exit status.  Otherwise, exit with a zero exit status.
    if ( browse.Status()) {
        HMstderr.Printf( "%s: Error %d\n", argv[0], browse.Status());
        return 1;
    } else return 0;
}
-- end Browse.cc --

###########################################################################
###########################################################################

This is my article, not my employer's, with my opinions and my disclaimer!
--
Duncan Gibson, ESTEC/YCV, Postbus 299, 2200AG Noordwijk, The Netherlands
Tel: +31 1719 84013   Fax: +31 1719 12142  Email: duncan@yc.estec.esa.nl
================================================================================
Archive-Date: Wed, 05 Apr 1995 06:19:05 CDT
Sender: owner-litprog@SHSU.edu
From: mars@asiaonline.net (Michael Yau)
Reply-To: LitProg@SHSU.edu, mars@ASIAONLINE.NET
Subject: HELP: problem in C
Date: 5 Apr 1995 11:13:14 GMT
Message-ID: <3ltu0a$6dh@news.asiaonline.net>
To: LitProg@SHSU.EDU

Hello,

I am using Borland C++ 3.1 to compile the following program.

If I compile with :   bcc -ms prg   (the result is ok!)
However,
if I compile with :   bcc -ml prg   (the result is unexpected!)

Would you mind help me to solve the problem please ?

#include <stdio.h>
#include <io.h>
#include <fcntl.h>
#include <conio.h>

struct menu_stru {
  unsigned int x, y;
  unsigned int key;
  unsigned int keypos1;
  unsigned int keypos2;
};

void AddItem(struct menu_stru Item)
{  // nothing in here!
}

void main()
{
  menu_stru item[10];
  unsigned char buf[4000];
  int handle, i;

  handle = open("a.dat", O_BINARY|O_RDONLY);
  read(handle, (unsigned char *)buf, 4000);
  close(handle);

  for (i=0; i<4000; i++) printf("%c", buf[i]);

  AddItem(item[0]); // if delete this line, everything will OK
}

File "a.dat" is a binary file and full of char. 'A' and
the file size is 4000 bytes (no problem in this file)

Please Reply to mars@asiaonline.net

Best Regards,
mars@asiaonline.net

================================================================================
Archive-Date: Wed, 05 Apr 1995 07:58:03 CDT
Sender: owner-litprog@SHSU.edu
Message-ID: <9504051257.AA11302@ceop1.rederio.br>
To: LitProg@SHSU.edu
From: "Chun Yin Hsu" <CHSU@NOVELL.NCE.UFRJ.BR>
Reply-To: LitProg@SHSU.edu, CHSU@NOVELL.NCE.UFRJ.BR
Date: Wed, 5 Apr 1995 09:56:30 GMT-3
Subject: Re: HELP: problem in C

> From:          mars@asiaonline.net (Michael Yau)
> Reply-to:      LitProg@SHSU.edu, mars@ASIAONLINE.NET
> Subject:       HELP: problem in C
> Date:          5 Apr 1995 11:13:14 GMT
> To:            LitProg@SHSU.EDU

> Hello,
> 
> I am using Borland C++ 3.1 to compile the following program.
> 
> If I compile with :   bcc -ms prg   (the result is ok!)
> However,
> if I compile with :   bcc -ml prg   (the result is unexpected!)
> 
> Would you mind help me to solve the problem please ?
> 
> #include <stdio.h>
> #include <io.h>
> #include <fcntl.h>
> #include <conio.h>
> 
> struct menu_stru {
>   unsigned int x, y;
>   unsigned int key;
>   unsigned int keypos1;
>   unsigned int keypos2;
> };
> 
> void AddItem(struct menu_stru Item)
> {  // nothing in here!
> }
> 
> void main()
> {
>   menu_stru item[10];
>   unsigned char buf[4000];
>   int handle, i;
> 
>   handle = open("a.dat", O_BINARY|O_RDONLY);
>   read(handle, (unsigned char *)buf, 4000);
>   close(handle);
> 
>   for (i=0; i<4000; i++) printf("%c", buf[i]);
> 
>   AddItem(item[0]); // if delete this line, everything will OK
> }
> 
> File "a.dat" is a binary file and full of char. 'A' and
> the file size is 4000 bytes (no problem in this file)
> 
> Please Reply to mars@asiaonline.net
> 
> Best Regards,
> mars@asiaonline.net
> 
> 
================================================================================
Archive-Date: Wed, 05 Apr 1995 08:07:38 CDT
Sender: owner-litprog@SHSU.edu
From: cjmb@signal.dra.hmg.gb (Christopher Booth)
Subject: Re: An extended web language 1 of 3
Date: 5 Apr 1995 09:17:50 GMT
Message-ID: <3ltn7u$gea@signal.dra.hmg.gb>
Reply-To: LitProg@SHSU.edu, cjmb@signal.dra.hmg.gb
To: LitProg@SHSU.EDU


In article <3l60os$l92@infosrv.edvz.univie.ac.at>, dillo@stieltjes.smc.univie.ac.at (Dieter Baron) writes:

[ snip ]

> Somehow this whole problem (at least if the documents are of the same
> structure) reminds me of writing code that is meant to compile on
> different platforms.  The approach of your language is analogous to
> #ifdefs that say which parts to include on what platform (in what
> view).  With a larger number of platforms and larger documents, this
> approach becomes unwieldy -- at least in my expierience.  But maybe a
> folding editor would help, displaying only the parts relevant to the
> current view.  Anyone to write an Emacs mode?

[ snip ]

	I have the source code of a folding mode for emacs
written originally by Jamie Lokier (u90jl@ecs.ox.ac.uk is a
probably out-of-date address.)  Mail me and I'll send it to you,
or I'll post if I get a lot of replies,

	Chris.
-- 
-------------------------------------------------------------
		      Christopher Booth
    DRA Malvern, St Andrews Road, Malvern.  WR14 3PS.  UK
	      Internet: cjmb@signal.dra.hmg.gb
Tel: +44 (0)1684 896400               Fax: +44 (0)1684 894389
    My opinions are not necessarily those of DRA Malvern
-------------------------------------------------------------

================================================================================
Archive-Date: Wed, 05 Apr 1995 20:32:17 CDT
Sender: owner-litprog@SHSU.edu
From: smurf@SmurfIX1.igd.fhg.de (Christian Kumpf)
Reply-To: LitProg@SHSU.edu, smurf@SMURFIX1.IGD.FHG.DE
Subject: Re: Debugging with literate programming
Date: 05 Apr 1995 01:45:59 GMT
Message-ID: <SMURF.95Apr5034559@SmurfIX1.igd.fhg.de>
To: LitProg@SHSU.EDU

In article <3lecdm$7b5@news.rwth-aachen.de> dak@tabaqui.informatik.rwth-aachen.de (David Kastrup) writes:

   >I would appreciate your comments on debugging with LP tools

   Using noweb, gcc and gdb, I can debug directly in the source. However, I head

Same with CWEB, gcc and gdb. Especially inside Emacs it's very
comfortable. The only problem is, that gcc reorders the code with
optimization turned on, so expect a jumping cursor (but this happens
to plain c as well).

Christian
================================================================================
Archive-Date: Sat, 08 Apr 1995 00:26:55 CDT
Sender: owner-litprog@SHSU.edu
From: norman@flaubert.bellcore.com (Norman Ramsey)
Reply-To: LitProg@SHSU.edu, norman@FLAUBERT.BELLCORE.COM
Subject: Re: Web/Weave/Tangle for FrameBuilder(Maker)
Date: 8 Apr 1995 04:58:23 GMT
Message-ID: <3m555f$n59@lowell.bellcore.com>
CC: tomm@bnr.ca
To: LitProg@SHSU.EDU

In article <3lpqeh$37l@bcarh8ab.bnr.ca>, Tom Mackenzie  <tomm@bnr.ca> wrote:
>Is there [web] for SGML or HTML?

noweb supports HTML.  It's not clear what `supporting SGML' means; you
need to generate markup for a particular DTD...

Norman
================================================================================
Archive-Date: Sat, 08 Apr 1995 03:32:57 CDT
Sender: owner-litprog@SHSU.edu
From: evexanalyt@aol.com (EvexAnalyt)
Subject: PC Device Driver Programmer need
Date: 6 Apr 1995 09:59:20 -0400
Message-ID: <3m0s3o$lfh@newsbf02.news.aol.com>
Reply-To: LitProg@SHSU.edu, evexanalyt@aol.com (EvexAnalyt)
To: LitProg@SHSU.EDU

Looking for a programmer to write a dll for DAQ

(609)921-1391
================================================================================
Archive-Date: Sat, 08 Apr 1995 04:33:57 CDT
Sender: owner-litprog@SHSU.edu
From: dscifi@aol.com (DSciFi)
Subject: Need cheap Smalltalk
Date: 7 Apr 1995 12:10:02 -0400
Message-ID: <3m3o4q$cda@newsbf02.news.aol.com>
Reply-To: LitProg@SHSU.edu, dscifi@aol.com (DSciFi)
To: LitProg@SHSU.EDU

I would like to find a cheap version of Smalltalk for PC environment.
Either MS-DOS or OS/2 to use to learn about objects and Smalltalk. 

Thanks.

================================================================================
Archive-Date: Sat, 08 Apr 1995 19:26:32 CDT
Sender: owner-litprog@SHSU.edu
From: artm115834@aol.com (ArtM115834)
Subject: Help me help my son
Date: 8 Apr 1995 18:21:38 -0400
Message-ID: <3m729i$6di@newsbf02.news.aol.com>
Reply-To: LitProg@SHSU.edu, artm115834@aol.com (ArtM115834)
To: LitProg@SHSU.EDU

My son (14 years old) is very interested in computers, and he'd like to
learn hoe to program.  Can anyone suggest a text--book or video, perhaps? 
Please respond via email.  I don't stop by here too often.  Thanks.
--Art Michaels (ARTM115834@aol.com)
================================================================================
Archive-Date: Mon, 10 Apr 1995 15:26:40 CDT
Sender: owner-litprog@SHSU.edu
From: izadneg@postoffice.utas.edu.au
Reply-To: LitProg@SHSU.edu, izadneg@POSTOFFICE.UTAS.EDU.AU
Subject: seek help in turbo vision
Date: 10 Apr 1995 06:09:27 GMT
Message-ID: <3mai2o$75v@franklin.cc.utas.edu.au>
To: LitProg@SHSU.EDU


================================================================================
Archive-Date: Mon, 10 Apr 1995 15:26:42 CDT
Sender: owner-litprog@SHSU.edu
From: izadneg@postoffice.utas.edu.au
Reply-To: LitProg@SHSU.edu, izadneg@POSTOFFICE.UTAS.EDU.AU
Subject: seek help in turbo vision
Date: 10 Apr 1995 06:16:09 GMT
Message-ID: <3maif9$79e@franklin.cc.utas.edu.au>
To: LitProg@SHSU.EDU


================================================================================
Archive-Date: Mon, 10 Apr 1995 15:26:46 CDT
Sender: owner-litprog@SHSU.edu
From: cmpgrad10@postoffice.sandybay.utas.edu.au
Reply-To: LitProg@SHSU.edu, cmpgrad10@POSTOFFICE.SANDYBAY.UTAS.EDU.AU
Subject: SEEK HELP- CLARIFICATION
Date: 10 Apr 1995 07:09:37 GMT
Message-ID: <3maljh$8ul@franklin.cc.utas.edu.au>
To: LitProg@SHSU.EDU


================================================================================
Archive-Date: Mon, 10 Apr 1995 23:39:41 CDT
Sender: owner-litprog@SHSU.edu
From: Weiqi Gao <weiqigao@crl.com>
Reply-To: LitProg@SHSU.edu, weiqigao@CRL.COM
Subject: Re: seek help in turbo vision
Date: 11 Apr 1995 04:32:20 GMT
Message-ID: <3md0ok$pl3@nntp.crl.com>
To: LitProg@SHSU.EDU

izadneg@postoffice.utas.edu.au wrote:
>
> 
Whatever topic you want help with, you can get it from Kaare Christian's
book Borland C++ Techniques & Utilities.

By the way, you can get better help in the 
comp.os.msdos.programmer.turbo-vision group.

Weiqi Gao
weiqigao@crl.com
================================================================================
Archive-Date: Tue, 11 Apr 1995 11:29:41 CDT
Sender: owner-litprog@SHSU.edu
Date: Mon, 10 Apr 1995 21:54:16 -0400 (EDT)
From: Gary Chiasson <ai641@freenet.toronto.on.ca>
Reply-To: LitProg@SHSU.edu, ai641@FREENET.TORONTO.ON.CA
Subject: Tic-Tac-Toe game needed
To: LitProg@SHSU.EDU
Message-ID: <Pine.3.89.9504102154.A27214-0100000@bloor>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

Could you please send me the game Tic-Tac-Toe for use in Turbo C++.  
Thanks! 
                                            G.C.


================================================================================
Archive-Date: Tue, 11 Apr 1995 16:53:28 CDT
Sender: owner-litprog@SHSU.edu
From: adelucia@remus.rutgers.edu (Apple-O)
Reply-To: LitProg@SHSU.edu, adelucia@REMUS.RUTGERS.EDU
Subject: seeking help with linear hashing algorithm in C
Date: 11 Apr 1995 16:36:41 -0400
Message-ID: <3mep8p$6nk@remus.rutgers.edu>
To: LitProg@SHSU.EDU

I'm a student writing a program that should read records as input (with fields like name, address, etc) and save them do disk using linear hashing. I have never programmed a hashing algorithm and there is very little documentation on linear (vs extended or any other kind) hashing. If someone could lend me a clue things would probably move a little faster...


================================================================================
Archive-Date: Wed, 12 Apr 1995 02:41:41 CDT
Sender: owner-litprog@SHSU.edu
Date: Wed, 12 Apr 95 09:36:21 +0200
From: ddw@miscrit.be (Dominique de Waleffe)
Reply-To: LitProg@SHSU.edu, ddw@MISCRIT.BE
Message-ID: <9504120736.AA19373@miscrit.be>
To: LitProg@SHSU.edu, adelucia@REMUS.RUTGERS.EDU
Subject: seeking help with linear hashing algorithm in C
References: <3mep8p$6nk@remus.rutgers.edu>

  >>> "Apple-O" == Apple-O  <adelucia@remus.rutgers.edu> writes:

Apple-O> I'm a student writing a program that should read records as
Apple-O> input (with fields like name, address, etc) and save them do
Apple-O> disk using linear hashing. I have never programmed a hashing
Apple-O> algorithm and there is very little documentation on linear
Apple-O> (vs extended or any other kind) hashing. If someone could
Apple-O> lend me a clue things would probably move a little faster...

Go to your library and get books on algorithms and data structures:
Knuth (probably Volume 2),
Sedgewick (check name spelling),
Gotlieb&Gotlieb,

You should find what you need.
D.

-- 
Dominique de Waleffe
Mission Critical, Wijnegemhofstraat 199, B-3071 Erps-Kwerps (Belgium)
Phone: +32 2 759 95 60  Fax: +32 2 759 27 60
email: ddw@acm.org, ddw@miscrit.be 
PGP key fingerprint: F9 CC 23 74 44 62 7C F3  8C 12 DF 71 BB 60 54 98
================================================================================
Archive-Date: Wed, 12 Apr 1995 09:48:08 CDT
Sender: owner-litprog@SHSU.edu
From: hbflyer@aol.com (HB Flyer)
Subject: Job Opportunity
Date: 12 Apr 1995 10:23:14 -0400
Message-ID: <3mgnoi$fae@newsbf02.news.aol.com>
Reply-To: LitProg@SHSU.edu, hbflyer@aol.com (HB Flyer)
To: LitProg@SHSU.EDU

Client:		Major Fortune 150 Company
Project:		Project Leader, Systems Engineering
Location:		Southeastern, PA

Responsibilities:
This individual will be responsible for the Project Leadership and
Management  for the development of complex labeling systems which will
ultimately be sold to a variety of customers, in the retail, commercial
and industrial marketplace.  As the Project Leader / Manager this
individual will have the ultimate responsibility for delivery of product
to the customer.

The successful individual will be responsible for working with the
customer from the initial specification of the system through the delivery
and acceptance of the final product.  They will straddle the line between
the Customer , Sales, and Engineering. Develop proposals and costing to
submit to client;  manage resources assigned to develop product; test /
verify product to assure adherence to customer  specifications; install
final product at customer location.

Qualifications:
BSEE with a minimum of 10 years post-graduate experience, preferably from
an industrial background.
Well developed Project Leadership skills. 
Experience in one or more of the following  technologies:
Bar Code scanners
Printers
Process controllers
Hands-on C language programming experience a must, Clipper is a plus.
PC / microprocessor experience
Excellent presentation skills
PERT / GANT development experience
Mechanical aptitude

The individual must have excellent communication skills, be a "Team
Player", and have a bit of an entrepreneur flair.  They have to be able to
wear many hats, from sales to engineering, and be capable of "holding the
line" with both the customer and within the Client. 

Growth Potential:
Overall Company:  
Client is at the forefront of technology and is often leading the way in
the application of this technology to the distribution industry.  With the
application of their proven technologies to the Shipping industry, the
company will continue to gain market share. 

Position Specific:
This position will give the right individual the chance to diversify his
or her skills across other areas, i.e. sales, marketing, as well as stay
current with leading edge technologies.  

For more information contact:
HB Associates, 500 Heather Circle, Villanova, PA, 19085 or 610-964-8137,
Fax is 610-964-9138 
Mr. Pete Webster or Mr. Luis Salva.  Also Hbflyer@aol.com or Cserve
71410,2425




================================================================================
Archive-Date: Wed, 12 Apr 1995 12:28:33 CDT
Sender: owner-litprog@SHSU.edu
From: wware@world.std.com (Will Ware)
Reply-To: LitProg@SHSU.edu, wware@WORLD.STD.COM
Subject: Yet another LP toolkit
Message-ID: <D6xLy0.3LM@world.std.com>
Date: Wed, 12 Apr 1995 17:01:12 GMT
To: LitProg@SHSU.EDU

I have been cobbling together some LP tools for the programming
environment at work (PCs running Windows, Word, Borland Turbo C).
The stuff I have come up with is available at ftp.std.com in the
/pub/wware directory. Some of it is "marketing hype" that I used
to sell the LP paradigm to my boss and coworkers. (It worked;
they like it.) It's available for anybody who wants to tinker with
it, and I would especially appreciate any feedback from people
who've used LP for years and can tell me where I'll run into
problems I haven't anticipated. I plan to use this stuff for a
fairly large software effort at work, so this kind of feedback
would be very helpful. TIA and all that.
-- 
=====================================================================
"Government is not reason. It is not eloquence. It is a force. Like
fire, a dangerous servant and a fearful master." - G. Washington
Will Ware <wware@world.std.com> PGP fp 45A8722CD14910CC F0CF48FB93BF7289
================================================================================
Archive-Date: Sat, 15 Apr 1995 19:45:59 CDT
Sender: owner-litprog@SHSU.edu
From: daniels222@aol.com (DanielS222)
Subject: My computer made me stressed & depressed--positive ions
Date: 15 Apr 1995 20:13:27 -0400
Message-ID: <3mpnf7$joa@newsbf02.news.aol.com>
Reply-To: LitProg@SHSU.edu, daniels222@aol.com (DanielS222)
To: LitProg@SHSU.EDU

Hello Netters,

On 2/14/95 CBS Evening News with Connie Chung, Dr. Bob Arnot did a story
about negative ions and their effect on mood.  They talked about a study
done at Columbia University where exposure to a high density negative ion
generator was as effective in treating winter depression as medication.

I became very interested because I have suffered from depression and
anxiety for years, and I did some research on the benefits of negative
ions.  

This research turned out to be especially interesting to me because I
found a newspaper article discussing the fact that computer monitors emit
positive ions - the opposite of negative ions.  The article says computer
monitors give off large amounts of positive ions and can actually cause
depression, stress, fatigue, etc. in people who sit in front of computers
a lot - like all of us Netters - and that we need negative ion
replenishment.  

After reading the article, I realized that I always felt especially
irritable, stressed, and depressed after long days in front of my
computer.

In doing the research, I found that negative ions have shown to be
therapeutic for stress, irritability, fatigue, depression, etc.  So I
purchased a small, high density generator and it has given me substantial
relief from my symptoms.  

If any of you would like me to e-mail you that newspaper article, the
transcript of the CBS news story, as well as the other research that I
have compiled, just e-mail me at DanielS222@aol.com.


-dan
================================================================================
Archive-Date: Sun, 16 Apr 1995 00:54:29 CDT
Sender: owner-litprog@SHSU.edu
From: shields@tembel.org (Michael Shields)
Reply-To: LitProg@SHSU.edu, shields@TEMBEL.ORG
Subject: Re: My computer made me stressed & depressed--positive ions
Date: 16 Apr 1995 05:25:58 -0000
Message-ID: <3mq9p6$1hh@yage.tembel.org>
To: LitProg@SHSU.EDU

In article <3mpnf7$joa@newsbf02.news.aol.com>,
DanielS222 <daniels222@aol.com> wrote:
> This research turned out to be especially interesting to me because I
> found a newspaper article discussing the fact that computer monitors emit
> positive ions - the opposite of negative ions.  The article says computer
> monitors give off large amounts of positive ions and can actually cause
> depression, stress, fatigue, etc. in people who sit in front of computers
> a lot - like all of us Netters - and that we need negative ion
> replenishment.  
> 
> After reading the article, I realized that I always felt especially
> irritable, stressed, and depressed after long days in front of my
> computer.

Or perhaps you were just irritable because you had spent a long time
indoors sitting down staring at a screen?  Try taking a walk once an hour.

Followups to comp.human-factors, where it makes sense.
-- 
Shields.
================================================================================
Archive-Date: Sun, 16 Apr 1995 17:42:51 CDT
Sender: owner-litprog@SHSU.edu
From: quixote@netcom.com (Don Hosek - Quixote Digital Typography)
Reply-To: LitProg@SHSU.edu, quixote@NETCOM.COM
Subject: What c.p.l is (was Re: My computer made me stressed & depressed--positive ions)
Message-ID: <quixoteD75FpG.12H@netcom.com>
Date: Sun, 16 Apr 1995 22:27:16 GMT
To: LitProg@SHSU.EDU

Perhaps there should be a weekly posting (automated) that explains
what comp.programming.literate is about. I'd also suggest a daemon
that maintains a database of posters to the group and upon their first
posting to the group, mails them this message. That'd at least keep
people from posting off topic more than once. I imagine someone with a
modicum of shell programming ability could pull this off without too
much difficulty.

Now to get back to writing a new tex.ch from the ground up...

-dh
-- 
Don Hosek           "I'm thinking this somehow elevates my rank in the herd and 
Quixote Digital Typography          improves my mating possibilities." -Dilbert
Publishers of _Serif: The Magazine of Type and Typography_
909-621-1291                              Current reading: _Hosea_ (Andersen,
FAX: 909-625-1342                         Freedman), _Antologia de
dhosek@quixote.com                        Cuentos Mexicanos II_ (Millau, ed.)
================================================================================
Archive-Date: Mon, 17 Apr 1995 04:24:36 CDT
Sender: owner-litprog@SHSU.edu
From: dak@messua.informatik.rwth-aachen.de (David Kastrup)
Reply-To: LitProg@SHSU.edu, dak@MESSUA.INFORMATIK.RWTH-AACHEN.DE
Subject: Re: What c.p.l is (was Re: My computer made me stressed & depressed--positive ions)
Date: 17 Apr 1995 09:09:31 GMT
Message-ID: <3mtb8b$7cu@news.rwth-aachen.de>
To: LitProg@SHSU.EDU

quixote@netcom.com (Don Hosek - Quixote Digital Typography) writes:

>Now to get back to writing a new tex.ch from the ground up...

Which has not much to do with comp.programming.literate as well...
--
David Kastrup, Goethestr. 20, D-52064 Aachen        Tel: +49-241-72419
  Email: dak@pool.informatik.rwth-aachen.de         Fax: +49-241-79502
================================================================================
Archive-Date: Mon, 17 Apr 1995 13:06:15 CDT
Sender: owner-litprog@SHSU.edu
From: tlightman@aol.com (TLightman)
Subject: visual programming
Date: 17 Apr 1995 13:41:27 -0400
Message-ID: <3mu987$gtf@newsbf02.news.aol.com>
Reply-To: LitProg@SHSU.edu, tlightman@aol.com (TLightman)
To: LitProg@SHSU.EDU

I am currently sorking on a paper comparing and contrasting visual
programming and traditional coding.  Any suggestions, personal
experiences, or advice where to further research the topic would be
greatly appreciated!  Thanks.  Please send messages via e-mail.  
================================================================================
Archive-Date: Tue, 18 Apr 1995 05:16:37 CDT
Sender: owner-litprog@SHSU.edu
From: Michal Gomulinski <s146028@ia.pw.edu.pl>
Reply-To: LitProg@SHSU.edu, s146028@IA.PW.EDU.PL
Subject: WEB++
Date: 18 Apr 1995 09:29:32 GMT
Message-ID: <3n00ps$6pd@gemini.coi.pw.edu.pl>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 7bit
To: LitProg@SHSU.EDU

Hi literate programmers! 
 
Could anyone tell me how to write big C++ literate programs, using CWEB. 
I mean how to deal with programs in multiple files and a lot of ".h" files as it   
usually is done in C++ programming.  
The natural way in writing CWEB files is to put everything into one file, but I   
don't think it is the best solution. 
 
Thanks for answer! 
 
Michal Gomulinski 
(M.Gomulinski@elka.pw.edu.pl) 


================================================================================
Archive-Date: Tue, 18 Apr 1995 11:19:00 CDT
Sender: owner-litprog@SHSU.edu
From: scherer@genesis.informatik.rwth-aachen.de (Andreas Scherer)
Reply-To: LitProg@SHSU.edu, scherer@GENESIS.INFORMATIK.RWTH-AACHEN.DE
Subject: Re: WEB++
Date: Tue, 18 Apr 1995 18:02:16
Message-ID: <scherer.114.00120A35@genesis.informatik.rwth-aachen.de>
To: LitProg@SHSU.EDU

In article <3n00ps$6pd@gemini.coi.pw.edu.pl> Michal Gomulinski <s146028@ia.pw.edu.pl> writes:

>Could anyone tell me how to write big C++ literate programs, using CWEB. 
>I mean how to deal with programs in multiple files and a lot of ".h" files as it   
>usually is done in C++ programming.  
>The natural way in writing CWEB files is to put everything into one file, but I   
>don't think it is the best solution. 

Writing a single CWEB document and utilizing the `@(filename@>' feature of 
CTANGLE is one way to deal with large software systems consisting of 
multiple source files and associated header files.  I personally like
this approach and both CTANGLE and CWEAVE are large enough even in their 
standard flavour.

The other way is to write a CWEB document for each of the C(++) modules.
An extensive example for this approach is the C(--) implementation of
`The Stanford GraphBase' by Donald Knuth.  He wrote more than 30 CWEB 
modules for the associated C modules.  He used the `multiple output' 
mechanism for header files in case that external declarations had to be 
exported from a C module.  The documentation for this collection of
Literate Programs comes as a book of the name `The Stanford GraphBase', 
where each software module forms a major part or chapter of the printed 
documentation.  The `local' indexes created by CWEAVE were collected in a 
single index for the whole book, so inter-module references are possible.

In connection with a well-written `Makefile' the second approach can save a 
lot of time in the development phase, because neither the whole CWEB source 
has to be processed by CTANGLE (or CWEAVE) nor have all the C modules 
created automatically to be recompiled after each modification.

Regards,

-- Andreas Scherer
Aachen University of Technology, Germany
<scherer@genesis.informatik.rwth-aachen.de>
================================================================================
Archive-Date: Wed, 19 Apr 1995 05:24:45 CDT
Sender: owner-litprog@SHSU.edu
From: dc@cage.rug.ac.be (Denis Constales)
Reply-To: LitProg@SHSU.edu, dc@CAGE.RUG.AC.BE
Subject: Noweb trouble with hyphens in LISP
Date: 18 Apr 1995 13:18:33 GMT
Message-ID: <3n0e79$fmq@infoserv.rug.ac.be>
To: LitProg@SHSU.EDU

Hi. Question: how to configure/hack noweb so that it does not consider
a Common LISP function name like add-to-set as a use of "add", "to"
and "set"? I have a quick and dirty solution that seems to work
(translate all - to _ before finduses, then all _ back to -), but
maybe there's a simple, legal, elegant way of doing that too? 
(N.B. I use the command
  noweave -delay -index
and prefer to supply @ %def information myself.) 
 
Thanks in advance for any help, by Usenet or e-mail. Cheers, D.C.
--
Dr. Denis Constales
dcons@world.std.com
Denis.Constales@rug.ac.be
================================================================================
Archive-Date: Wed, 19 Apr 1995 13:07:37 CDT
Sender: owner-litprog@SHSU.edu
From: trbonerd@athena.mit.edu (Stuart H Schaefer)
Reply-To: LitProg@SHSU.edu, trbonerd@ATHENA.MIT.EDU
Subject: HELP - Software Patents
Date: 19 Apr 1995 17:53:32 GMT
Message-ID: <3n3ims$3qm@senator-bedfellow.MIT.EDU>
To: LitProg@SHSU.EDU

Hi,

I am an MIT EE/Computer Science student working on a project studying software
and patents.  I am in need of your input to an on-line discussion of this 
topic.  Also, if you are an able programmer, I need your skill in solving
a programming exercise as part of the study.  If you are able to use the
Web, check out the URL: 

http://www.mit.edu:8001/people/trbonerd/patents/study.html

If not and you are interested in participation, or have input to the discussion,
email me at trbonerd@athena.mit.edu and I can mail you a description of the 
project and current topics of debate.

Any questions, comments, or suggestions?  Email me at trbonerd@athena.mit.edu

Thank You

Stuart Schaefer
trbonerd@athena.mit.edu

P.S. If I violated the rules of this newsgroup, please let me know.....



Distribution: world
Followup-To: 
From: trbonerd@athena.mit.edu (Stuart H Schaefer)
Organization: Massachusetts Institute of Technology
Subject: 
Keywords: 

================================================================================
Archive-Date: Wed, 19 Apr 1995 16:57:04 CDT
Sender: owner-litprog@SHSU.edu
From: przemek@rrdjazz.nist.gov (Przemek Klosowski)
Reply-To: LitProg@SHSU.edu, przemek@RRDJAZZ.NIST.GOV
Subject: Re: visual programming (answer with c.p.l. overtones)
Date: 19 Apr 1995 17:31:58 GMT
Message-ID: <PRZEMEK.95Apr19133158@rrdjazz.nist.gov>
To: LitProg@SHSU.EDU

In article <3mu987$gtf@newsbf02.news.aol.com> tlightman@aol.com (TLightman) writes:

   I am currently sorking on a paper comparing and contrasting visual
   programming and traditional coding.  Any suggestions, personal
   experiences, or advice where to further research the topic would be
   greatly appreciated!  Thanks.  Please send messages via e-mail.  


(Please don't get upset at lack of group charter: there is a  c.p.l 
connection---see below).

That depends on what you mean by visual programming. If you mean
visual construction of visual elements of your program (a la Visual
Basic), it is useful, but not revolutionary. If you mean completely
graphical 'dataflow' programming (operations as icons on the screen,
linked by lines describing the flow of data), it is an enticing idea,
which in practice dies a death of a thousand cuts. Simple operations
are very easy to set up (e.g., read in file->massage data->display), I
haven't yet seen a system which would gracefully scale up to
realistically complicated programs.

I guess the visual nature of such languages makes annoyingly explicit
the complicated nature of data flow in real-world problems. Old style
programming languages (helped, of course, by literate programming
techniques) by necessity force the use of abstraction, hiding the
complexity. My present thinking is that the relation of traditional
and visual programming is similar to the relation of a book to a
picture---some books can be described by a set of pictures, but most
can't.

I suppose that abstraction-related features of literate programming
tools could alleviate that, if only someone could figure out how
to apply them to to visual programming environments. 
--
			przemek klosowski (przemek@rrdstrad.nist.gov)
			Reactor Division (bldg. 235), E111
			National Institute of Standards and Technology
			Gaithersburg, MD 20899,      USA

			(301) 975 6249
================================================================================
Archive-Date: Wed, 19 Apr 1995 19:56:31 CDT
Sender: owner-litprog@SHSU.edu
From: norman@flaubert.bellcore.com (Norman Ramsey)
Reply-To: LitProg@SHSU.edu, norman@FLAUBERT.BELLCORE.COM
Subject: Re: Noweb trouble with hyphens in LISP
Date: 19 Apr 1995 21:21:01 GMT
Message-ID: <3n3urt$2fn@lowell.bellcore.com>
CC: Denis Constales <dc@cage.rug.ac.be>
To: LitProg@SHSU.EDU

In article <3n0e79$fmq@infoserv.rug.ac.be>,
Denis Constales <dc@cage.rug.ac.be> wrote:
>Hi. Question: how to configure/hack noweb so that it does not consider
>a Common LISP function name like add-to-set as a use of "add", "to"
>and "set"? 

On or around line 19 of finduses.nw, you will find definitions of
SYMBOLS and ALPHANUM.  Move the - from SYMBOLS to ALPHANUM and this
problem should be solved.

If I ever get funding to move ahead with noweb 3, this sort of thing
will be easier to configure on a per-program basis.

Norman
================================================================================
Archive-Date: Thu, 20 Apr 1995 00:10:43 CDT
Sender: owner-litprog@SHSU.edu
From: sorkan@aol.com (Sorkan)
Subject: Re: Help me help my son
Date: 19 Apr 1995 20:28:35 -0400
Message-ID: <3n49rj$1b3@newsbf02.news.aol.com>
Reply-To: LitProg@SHSU.edu, sorkan@aol.com (Sorkan)
To: LitProg@SHSU.EDU

Depending on what language he wishes to learn programming in.
I my opinion, as a computer programmer, Pascal is a good starting point
because it is a structured language and straight forward.  Once you get a
handle on pointers, data structures (lists, trees, stacks, queues), then
you can move to the next (and current language) which is C.  There are
many book in the market by many different authors illustrating points of
the language.  But one would also need the development software to try out
the examples (one of ways to get handle of the language).  

C is a bit harder to grasp when one does not have any kind of programming
background.  This is because C lets you get away with almost anything. 
Some related problems are incorrect use of pointers.  Therefore learning a
easier programming language does help because then you can compare things
done one way with things done a different way.

There are also many software development packages out in the market too
such as: Turbo Pascal V7.0, Borland C/C++ (and variations on these two
kinds of compilers/libraries provided by other companies too).  You could
also check if local community colleges offer such courses for low rates.

later!!
Sorkan@aol.com
================================================================================
Archive-Date: Thu, 20 Apr 1995 02:35:45 CDT
Sender: owner-litprog@SHSU.edu
From: thesilence@aol.com (TheSilence)
Subject: memory address of text font
Date: 20 Apr 1995 02:04:15 -0400
Message-ID: <3n4tgv$87d@newsbf02.news.aol.com>
Reply-To: LitProg@SHSU.edu, thesilence@aol.com (TheSilence)
To: LitProg@SHSU.EDU

I know that the text font is somewhere in memory, just like text video
memory (segment B800H) and that it's 4096 bytes, holds 256 characters... i
know how to access memory, i just need to know where it is.
-shadow master
================================================================================
Archive-Date: Thu, 20 Apr 1995 17:22:43 CDT
Sender: owner-litprog@SHSU.edu
From: lbliao@alumni.caltech.edu (lbliao)
Reply-To: LitProg@SHSU.edu, lbliao@ALUMNI.CALTECH.EDU
Subject: HOW TO WRITE A WINDOW AND A POP-UP MENU INTERFACE WITH CURSOR
Date: 20 Apr 1995 18:32:05 GMT
Message-ID: <3n69b5$f78@gap.cco.caltech.edu>
To: LitProg@SHSU.EDU

Dear Netters,

I am trying to learn how to write a pop-up menu for a simple
program. I know C, and can learn visual basic, but will prefer C, and
assembly.

I need to make pop-up menus, that can be accessed by clicking with a
mouse or with Alt-key etc. This is very common art among the
practitioners. That is why every program today in the market has it,
but I am totally ignorant about it. I am writing this for windows, DOS
and Unix/Linux. I would highly appreciate any pointers, towards papers
in journals, books, development-tool-kits that are available and that
you have personal experience of.

Some of the questions that these should address are:

How to read the coordinates on click of mouse?  How to represent a
moving cursor on the screen?  How to communicate the click of the
mouse to the program?  How to redraw the window?  How to make the
sound on pop-up of menu?  How to keep track of all things?  How to
modularise and write well such a program?

I would highly appreciate your pointers. If I get enough info, I will
post a summary with due credit. Please reply via email.

Many thanks

Lily


If this is not the appropriate news groups pls make a suggestion.


================================================================================
Archive-Date: Thu, 20 Apr 1995 17:39:15 CDT
Sender: owner-litprog@SHSU.edu
From: jwills@melpar.esys.com (Jeffrey M. Wills)
Reply-To: LitProg@SHSU.edu, jwills@MELPAR.ESYS.COM
Subject: Where's the FAQ?
MIME-Version: 1.0
Date: Thu, 20 Apr 1995 15:48:32 GMT
Message-ID: <D7CBwy.Lso@melpar.esys.com>
To: LitProg@SHSU.EDU

The subject line says it all.  I'm actually looking for URLs and so on for 
sources of noweb and cweb, but access to the FAQ might well provide 
that.

Thanks:

Dr. Jeff

================================================================================
Archive-Date: Fri, 21 Apr 1995 16:32:30 CDT
Sender: owner-litprog@SHSU.edu
From: pmljr@aol.com (PMLJr)
Subject: Microsoft DMF diskette format
Date: 20 Apr 1995 21:52:37 -0400
Message-ID: <3n7355$bu9@newsbf02.news.aol.com>
Reply-To: LitProg@SHSU.edu, pmljr@aol.com (PMLJr)
To: LitProg@SHSU.EDU

I am trying to find out diskette format information on Microsofts' new DMF
format. All new software is issued in this format and it cannot be copied
by normal means.  I have not tried a sector by sector assembly routine as
I have noticed 4 clusters per sector on the 1.44Mb diskette.

Does anyone have any info on this subject?  Are their any programs in
existence which can copy these diskettes?

send mail to PMLJR@aol.com
================================================================================
Archive-Date: Fri, 21 Apr 1995 16:32:48 CDT
Sender: owner-litprog@SHSU.edu
From: fst@nimo.claircom.com (Fariborz Skip Tavakkolian)
Reply-To: LitProg@SHSU.edu, fst@NIMO.CLAIRCOM.COM
Subject: CWEB Questions
Date: Thu, 20 Apr 1995 07:28:52 GMT
Message-ID: <FST.95Apr20002852@nimo.claircom.com>
To: LitProg@SHSU.EDU


I could not find the answers to the following questions in the FAQ.
These questions are specifically regarding CWEB 3.4, but would also be of
general interest.  Here they are:

(1) Can one change the C code format (style) of the CWEAVE output?
    (chunks started by @c as well as |...| chunks).

(2) Could the C code segments be made to use different type faces of a
    constant width font family?  (i.e. bold, slanted, ... what else
    can be there with constant width fonts?)

Any insight is appreciated.  RTFWD (Woven Document) does not count :-)

-fst
--
				 -----***-----
			  Fariborz ``Skip'' Tavakkolian
	     AT&T Wireless Services, Aviation Communications Division
				 fst@claircom.com
================================================================================
Archive-Date: Fri, 21 Apr 1995 16:34:36 CDT
Sender: owner-litprog@SHSU.edu
From: Michael Tautenhahn <mta@informatik.tu-chemnitz.de>
Reply-To: LitProg@SHSU.edu, mta@INFORMATIK.TU-CHEMNITZ.DE
Subject: Any information to UNITY ?
Date: 21 Apr 1995 08:12:02 GMT
Message-ID: <3n7pci$l4l@pyrrhus-f.hrz.tu-chemnitz.de>
To: LitProg@SHSU.EDU

Who has heart about programming language UNITY. We are looking for
some information about it. We would be pleased if anybody can help
us with facts, books, Internet resources and other material to
UNITY.

Thank's

------------------------------------------
  Michael Tautenhahn
  Faculty of Computer Science
  University of Technology Chemnitz, FRG
  mta@informatik.tu-chemnitz.de
------------------------------------------

================================================================================
Archive-Date: Fri, 21 Apr 1995 16:35:43 CDT
Sender: owner-litprog@SHSU.edu
From: wware@world.std.com (Will Ware)
Reply-To: LitProg@SHSU.edu, wware@WORLD.STD.COM
Subject: Postscript-output weaver?
Message-ID: <D7DsJM.IFI@world.std.com>
Date: Fri, 21 Apr 1995 10:45:22 GMT
To: LitProg@SHSU.EDU

I picked up a book on Postscript, and it looks pretty straightforward. Is
anybody aware of something like CWEAVE that would directly produce
Postscript output (rather than going the TeX->dvips route)? Much
appreciated.

I saw an idea on here a few days ago to have the FAQ posted weekly by
some automatic mechanism. It sounds like a good way to filter out at
least some of the non-literate programming questions. It might make
more people curious to try out LP. It would have to be better than
the hundredth post from somebody asking how to read coordinates off
their mouse or what address their VGA board lives at.
-- 
=====================================================================
"Government is not reason. It is not eloquence. It is a force. Like
fire, a dangerous servant and a fearful master." - G. Washington
Will Ware <wware@world.std.com> PGP fp 45A8722CD14910CC F0CF48FB93BF7289
================================================================================
Archive-Date: Fri, 21 Apr 1995 19:22:51 CDT
Sender: owner-litprog@SHSU.edu
From: norman@flaubert.bellcore.com (Norman Ramsey)
Reply-To: LitProg@SHSU.edu, norman@FLAUBERT.BELLCORE.COM
Subject: Re: CWEB Questions
Date: 21 Apr 1995 19:49:18 GMT
Message-ID: <3n927u$231@lowell.bellcore.com>
CC: Fariborz Skip Tavakkolian <fst@nimo.claircom.com>
To: LitProg@SHSU.EDU

In article <FST.95Apr20002852@nimo.claircom.com>,
Fariborz Skip Tavakkolian <fst@nimo.claircom.com> wrote:
>(1) Can one change the C code format (style) of the CWEAVE output?
>    (chunks started by @c as well as |...| chunks).
>
>(2) Could the C code segments be made to use different type faces of a
>    constant width font family?  (i.e. bold, slanted, ... what else
>    can be there with constant width fonts?)

Spidery Web was designed to simplify these kinds of typographic
manipulations.  Its author discourages its use, but some people still
use it and like it.  Available from CTAN.

Norman
================================================================================
Archive-Date: Sat, 22 Apr 1995 17:32:30 CDT
Sender: owner-litprog@SHSU.edu
From: kbyte@aol.com (Kbyte)
Subject: Borland C++ by Kaare Christian
Date: 22 Apr 1995 17:44:49 -0400
Message-ID: <3nbtch$frq@newsbf02.news.aol.com>
Reply-To: LitProg@SHSU.edu, kbyte@aol.com (Kbyte)
To: LitProg@SHSU.EDU

I am also interested in C++. Am working very slowly thru examples in book.
Am using BORLAND TURBO C++/Visual. I have gotten some of his/hers ?
examples to run on my 486 but just could not get "Find Files Stage 3"
example to link. I was very disappointed. But I also recommend this Book. 
================================================================================
Archive-Date: Sun, 23 Apr 1995 21:11:36 CDT
Sender: owner-litprog@SHSU.edu
From: rmcnicol@achilles.net (Rodger McNicoll)
Reply-To: LitProg@SHSU.edu, rmcnicol@ACHILLES.NET
Subject: Re: HOW TO WRITE A WINDOW AND A POP-UP MENU INTERFACE WITH CURSOR
Date: 23 Apr 1995 20:29:33 GMT
Message-ID: <3nedbd$mae@centaur.achilles.net>
To: LitProg@SHSU.EDU

In article <3n69b5$f78@gap.cco.caltech.edu>, lbliao@alumni.caltech.edu (lbliao) says:
>
>Dear Netters,
>
>I am trying to learn how to write a pop-up menu for a simple
>program. I know C, and can learn visual basic, but will prefer C, and
>assembly.
>
>I need to make pop-up menus, that can be accessed by clicking with a
>mouse or with Alt-key etc. This is very common art among the
>practitioners. That is why every program today in the market has it,
>but I am totally ignorant about it. I am writing this for windows, DOS
>and Unix/Linux. I would highly appreciate any pointers, towards papers
>in journals, books, development-tool-kits that are available and that
>you have personal experience of.
>
>Some of the questions that these should address are:
>
>How to read the coordinates on click of mouse?  How to represent a
>moving cursor on the screen?  How to communicate the click of the
>mouse to the program?  How to redraw the window?  How to make the
>sound on pop-up of menu?  How to keep track of all things?  How to
>modularise and write well such a program?
>
>I would highly appreciate your pointers. If I get enough info, I will
>post a summary with due credit. Please reply via email.
>
>Many thanks
>
>Lily
>
>
>If this is not the appropriate news groups pls make a suggestion.
>
>


Theres a really good book on the market called "Yeach yourself Advanced C in 21 days"
I found it to be very useful.   Hope this helps.  This only covers the keystrokes 
and not the mouse part of it all.  

Jeremy
================================================================================
Archive-Date: Sun, 23 Apr 1995 21:26:33 CDT
Sender: owner-litprog@SHSU.edu
From: bruceg9171@aol.com (BruceG9171)
Subject: i want to start programming but don't know where to start
Date: 23 Apr 1995 21:55:45 -0400
Message-ID: <3nf0f1$9b0@newsbf02.news.aol.com>
Reply-To: LitProg@SHSU.edu, bruceg9171@aol.com (BruceG9171)
To: LitProg@SHSU.EDU

I want to start programming but i have know idea where to start could
somebody help me in the right direction


thanx

P.S. please E-mail me
================================================================================
Archive-Date: Mon, 24 Apr 1995 04:30:17 CDT
Sender: owner-litprog@SHSU.edu
From: maavl@cwi.nl (Marc van Leeuwen)
Reply-To: LitProg@SHSU.edu, maavl@CWI.NL
Subject: Re: CWEB Questions
Message-ID: <D7J8FL.9E0@cwi.nl>
Date: Mon, 24 Apr 1995 09:16:33 GMT
To: LitProg@SHSU.EDU

In article <FST.95Apr20002852@nimo.claircom.com>, fst@nimo.claircom.com
(Fariborz Skip Tavakkolian) writes:

|> I could not find the answers to the following questions in the FAQ.
|> These questions are specifically regarding CWEB 3.4, but would also be of
|> general interest.  Here they are:
|> 
|> (1) Can one change the C code format (style) of the CWEAVE output?
|>     (chunks started by @c as well as |...| chunks).

In CWEB, the style variations supported are very limited: the only choice is
whether or not to use the `-f' command line options that avoids forced line
breaks after each statement. In CWEBx, a variant of CWEB that allows more
flexibility (available from the CTAN and LPA archives), there is a more
extensive set of such switches, that allow for other style variations such
as different brace styles; moreover, the grammar rules that control layout
are well isolated and documented, so that more exotic style wishes may also
be accomodated with some more effort. Most of these changes do not affect the
code in `|...|' very much though, since 2-dimensional formatting is disabled
there anyway.

|> (2) Could the C code segments be made to use different type faces of a
|>     constant width font family?  (i.e. bold, slanted, ... what else
|>     can be there with constant width fonts?)

Yes, this is simple, provided you can find or make such fonts (the Computer
Modern family is capable of producing a huge variety of fonts, and all of
them at a constant width if desired). The macros for formatting (cwebmac.tex)
just select fonts with {\it ...} (for multi-character identifiers), $...$
(single character identifiers), {\bf ...} (keywords) of {\tentex ...}
(strings etc.); this can easily be changed by a few (re)definitions after
the `\input cwebmac' line (which is automatically inserted at the top of
your .tex files).

However, I can see very little reason to want mono-spaced fonts in C-code
segments. It is like asking if you can use such fonts in TeX's math mode:
the answer is yes, but the output will still not look as if it were produced
by a typewriter (which is probably what you intended), because all kinds of
subtle spacing is being introduced that is not part of the fonts. In fact
the CWEAVE output uses math mode spacing for rendering C expressions. Now
with a sufficient amount of effort TeX may be told to suppress all its math
spacing activities, but then you are really working hard to undo all the
things that CWEAVE has laboriously put in there. If you really want
unformatted or minimally formatted output, it is better to use a tool based
on the ``verbatim or almost-verbatim'' philosophy for displaying code
fragments (e.g., noweb, nuweb, funnelweb).

Marc van Leeuwen
================================================================================
Archive-Date: Mon, 24 Apr 1995 06:13:35 CDT
Sender: owner-litprog@SHSU.edu
From: raczy@delirium.lifl.fr (Come Raczy)
Reply-To: LitProg@SHSU.edu, raczy@DELIRIUM.LIFL.FR
Subject: C++ Templates and FWEB
Date: 24 Apr 1995 08:03:19 GMT
Message-ID: <RACZY.95Apr24100323@delirium.lifl.fr>
To: LitProg@SHSU.EDU

Hi,

I tried to use C++ templates and FWEB didn't seem to
manage them correctly. Problems arise when I use or
specify the generic class. FWEAVE doesn't understand
what I want, and makes really awfull things:
	- poor indentation
	- errors in the index file (with operator ^)
	- fweave hangs up
	- ...
It seems that it's the angle bracketed notation for the 
generic class wich makes trouble.

Any solution? I didn't see it in the FAQ.

Here is a program wich can't be weaved with fweb 1-40 for LaTeX
If you kill the definition  "friend Myclass<T> operator ^ ..."
you can fweave it but in a bad way.

============Beginning of test.web===========
@c++
@*Try it.
xxxxx

@a
@<Template@>@;
int main(void){
MyClass<int> cc;
}

@ @<Template@>=

template <class T>
class MyClass{

public:
    friend Myclass<T> operator ^ (Myclass<T> &v1, Myclass<T> &v2);
    Myclass(void);
    Myclass(const int v[3]);
    MyClass(const Myclass<T> &v);
private:
    <T> xxx[3];
};

@*Index.
============End of test.web===========

please reply by e-mail at: raczy@lifl.fr
I'll post a compilation of the answers.

Come Raczy
================================================================================
Archive-Date: Mon, 24 Apr 1995 08:28:39 CDT
Sender: owner-litprog@SHSU.edu
Date: Mon, 24 Apr 95 9:28:11 EDT
From: Lee Wittenberg <leew@pilot.njin.net>
Reply-To: LitProg@SHSU.edu, leew@PILOT.NJIN.NET
To: LitProg@shsu.edu
Subject: Anybody out there?
Message-ID: <CMM-RU.1.4.798730091.leew@pilot.njin.net>

I've noticed a complete absence of traffic on this discussion group in
the past month or so.  Is the line really dead, or have I been kicked
off, for some as yet unexplained reason?

		-- Lee

------------------------------------------------------------------------
Lee Wittenberg              | I have always considered grown-ups to be
Computer Science Department | figures of fun, ... and have never been
Kean College of New Jersey  | deceived by their hypocracies.
Union, NJ   07083           | 
                            | -- Anita Loos
leew@pilot.njin.net         |    "The Biography of a Book" (1963)
------------------------------------------------------------------------
================================================================================
Archive-Date: Mon, 24 Apr 1995 09:41:49 CDT
Sender: owner-litprog@SHSU.edu
From: dak@tabaqui.informatik.rwth-aachen.de (David Kastrup)
Reply-To: LitProg@SHSU.edu, dak@TABAQUI.INFORMATIK.RWTH-AACHEN.DE
Subject: Re: C++ Templates and FWEB
Date: 24 Apr 1995 14:08:26 GMT
Message-ID: <3ngbcq$cn3@news.rwth-aachen.de>
To: LitProg@SHSU.EDU

raczy@delirium.lifl.fr (Come Raczy) writes:

:Hi,

:I tried to use C++ templates and FWEB didn't seem to
:manage them correctly. Problems arise when I use or
:specify the generic class. FWEAVE doesn't understand
:what I want, and makes really awfull things:
:	- poor indentation
:	- errors in the index file (with operator ^)
:	- fweave hangs up
:	- ...
:It seems that it's the angle bracketed notation for the 
:generic class wich makes trouble.

Considering the mess C++ syntax poses, I doubt you can correctly
parse scraps. Complete C++ compilers have problems in identifying
a complete program cleanly, and isolated scraps are harder.

Switch to a non-pretty-Printing WEB, or a less awful programming
language (with regard to complicated syntax) than C++.

Or pray that the tools will catch up with the mess C++ is
continously getting more and more like.
--
David Kastrup, Goethestr. 20, D-52064 Aachen        Tel: +49-241-72419
  Email: dak@pool.informatik.rwth-aachen.de         Fax: +49-241-79502
================================================================================
Archive-Date: Wed, 26 Apr 1995 09:20:08 CDT
Sender: owner-litprog@SHSU.edu
From: Michal Gomulinski <s146028@ia.pw.edu.pl>
Reply-To: LitProg@SHSU.edu, s146028@IA.PW.EDU.PL
Subject: Re: C++ Templates and FWEB
Date: 26 Apr 1995 11:05:36 GMT
Message-ID: <3nl9e0$t63@gemini.coi.pw.edu.pl>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 7bit
To: LitProg@SHSU.EDU

raczy@delirium.lifl.fr (Come Raczy) wrote: 
>Hi, 
> 
>I tried to use C++ templates and FWEB didn't seem to 
>manage them correctly. Problems arise when I use or 
>specify the generic class. FWEAVE doesn't understand 
>what I want, and makes really awfull things: 
>	- poor indentation 
>	- errors in the index file (with operator ^) 
>	- fweave hangs up 
>	- ... 
>It seems that it's the angle bracketed notation for the  
>generic class wich makes trouble. 
 
 
The same problems are with CWEB v3.0. It sometimes formates C++ 
code with templates so the begining "<" is correct (\langle) 
but the closing one is normal, awfull ">". 
 
Cweave has also some problems with handling derived classes which is the  
popular thing and it should be formated correctly.  
 
Michal Gomulinski 
(M.Gomulinski@elka.pw.edu.pl) 


================================================================================
Archive-Date: Wed, 26 Apr 1995 09:20:10 CDT
Sender: owner-litprog@SHSU.edu
From: Michal Gomulinski <s146028@ia.pw.edu.pl>
Reply-To: LitProg@SHSU.edu, s146028@IA.PW.EDU.PL
Subject: best weaver
Date: 26 Apr 1995 11:13:40 GMT
Message-ID: <3nl9t4$t63@gemini.coi.pw.edu.pl>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 7bit
To: LitProg@SHSU.EDU

Hi literate programmers! 
 
I'm trying to write my programs (C++) literate and I'm now  
using CWEB by Knuth&Levy but it isn't the best tool, or I can't use 
it well.  
 
Maybe someone could tell me some better WEB system. My requirements are: 
 
- C++ support, 
- handling of non ASCII chars (like CWEB does) --- it is because 
  I'd like to use Polish in my documentation and Polish letters are  
  encoded in 127-256 range. 
- DOS executables would be better than anly UNIX support, because  
  I have an access to several DOS C++ compilers and editors and in  
  UNIX I have only GNU C++ 
 
I read here about FWEB, GLASGOW etc. but do they meet my requirements ? 
(I ca't check, because it is a lot of code on CTAN archive and ftp is so  
slow ;-) ) 
 
 
Regards 
  Michal Gomulinski 
  (M.Gomulinski@elka.pw.edu.pl) 


================================================================================
Archive-Date: Wed, 26 Apr 1995 10:29:45 CDT
Sender: owner-litprog@SHSU.edu
From: sp106@york.ac.uk ("stephen")
Reply-To: LitProg@SHSU.edu, sp106@YORK.AC.UK
Subject: Noweb and html.
Date: 26 Apr 1995 14:21:24 GMT
Message-ID: <3nlkt4$gqi@mailer.york.ac.uk>
To: LitProg@SHSU.EDU

I have just started using noweb, tempted by its' ability to produce
html, and my first attempt was to rewrite a ~2000 line program that was
written in C to produce html documentation.  This seems to work fine
(although I still have a few things to sort out).  There is however one
thing I have not yet been able to do.  If I am using CWEB then I may
cite chunks so;

@ We do this, then that, then |<Something else...>|.
@c
;

And the ``code'' in the ||'s is expanded to look like a proper citation
and given the chunk number so I can look it up.

I haven't yet got noweb to do anything like this.  Ideally I would like
the ability to cite a chunk so that a html link is put in my text that
refers to it.

Is this possible?

stephen

--

###################################################
# sp106@york.ac.uk # http://www.york.ac.uk/~sp106 #
# Shapes in the drink like Christ                 #
# Cracks in the pale blue wall                    #
###################################################


================================================================================
Archive-Date: Wed, 26 Apr 1995 12:41:14 CDT
Sender: owner-litprog@SHSU.edu
Date: Wed, 26 Apr 1995 13:27:20 -0400
From: Brian Fuller <brian@emma.com>
Reply-To: LitProg@SHSU.edu, brian@EMMA.COM
Message-ID: <199504261727.AA06546@bo.Emma.COM>
To: LitProg@SHSU.EDU
Subject: CWEB installation

I have received the uuencoded binary files that would give me CWEB.  I
have never used CWEB before, nor have I ever installed software.  If
someone could please give me some help, I'd be grateful.  I have a Sun
360 with Unix operating system.
Thanks in advance.

Brian Fuller
Berlin NY
brian@emma.com
================================================================================
Archive-Date: Wed, 26 Apr 1995 13:19:57 CDT
Sender: owner-litprog@SHSU.edu
Date: Wed, 26 Apr 95 14:19:34 EDT
From: Lee Wittenberg <leew@pilot.njin.net>
Reply-To: LitProg@SHSU.edu, leew@PILOT.NJIN.NET
To: LitProg@SHSU.edu, s146028@ia.pw.edu.pl
Subject: Re: best weaver
Message-ID: <CMM-RU.1.4.798920374.leew@pilot.njin.net>

Michal Gomulinski writes:

> I'm trying to write my programs (C++) literate and I'm now  
> using CWEB by Knuth&Levy but it isn't the best tool, or I can't use 
> it well.  
>  
> Maybe someone could tell me some better WEB system. My requirements are: 
>  
> - C++ support, 
> - handling of non ASCII chars (like CWEB does) --- it is because 
>   I'd like to use Polish in my documentation and Polish letters are  
>   encoded in 127-256 range. 
> - DOS executables would be better than anly UNIX support, because  
>   I have an access to several DOS C++ compilers and editors and in  
>   UNIX I have only GNU C++ 

noweb is always a good choice.  C++ support is implicit, as it is
language-independent, and it is available for DOS (I use it for C++
under DOS, myself).  As to the non-ASCII character support, a simple
filter for notangle that converts the nonstandard characters should be
very simple to write.

		-- Lee

------------------------------------------------------------------------
Lee Wittenberg              | I have always considered grown-ups to be
Computer Science Department | figures of fun, ... and have never been
Kean College of New Jersey  | deceived by their hypocracies.
Union, NJ   07083           | 
                            | -- Anita Loos
leew@pilot.njin.net         |    "The Biography of a Book" (1963)
------------------------------------------------------------------------
================================================================================
Archive-Date: Wed, 26 Apr 1995 14:51:39 CDT
Sender: owner-litprog@SHSU.edu
From: jcalcote@novell.com (John Calcote)
Reply-To: LitProg@SHSU.edu, jcalcote@NOVELL.COM
Subject: dos CTANGLE.EXE
Date: 26 Apr 1995 17:04:15 GMT
Message-ID: <3nluef$2s3@grok.provo.Novell.COM>
MIME-Version: 1.0
To: LitProg@SHSU.EDU

I'm having a devil of a time getting bootstrapped.

Will someone please email me a copy of ctangle.exe that works with big 
memory?

Thanks in advance!

John Calcote

================================================================================
Archive-Date: Wed, 26 Apr 1995 20:47:57 CDT
Sender: owner-litprog@SHSU.edu
From: jeffw15@aol.com (JeffW15)
Subject: $$$$$$$$$$$$  M A K E   M O N E Y   E A S Y $$$$$$$$$$$$$$$$
Date: 26 Apr 1995 19:45:25 -0400
Message-ID: <3nmlul$50e@newsbf02.news.aol.com>
Reply-To: LitProg@SHSU.edu, jeffw15@aol.com (JeffW15)
To: LitProg@SHSU.EDU


**********************************
F A S T   E A S Y   M O N E Y ! !
**********************************

This thing WORKS!!  I've tried it
before and it's incredible!  All
you do is send away a very small
sum of money, and in about 2
months the money will start piling
in!  Everyone wants $$$, so why
not just take a look at the file
attached to this letter, if it
appeals to you, go for it, if it
doesn't, then just forget about
it.  It's gotta be the easiest
way to earn some cash, a lot of it!
If you don't want to take the time
to read the letter or copy it to
a file, email JeffW15@aol.com and
I'll send it via. email.  I'll
send to internet addresses too.
************
Here it is:*
************

   Thank you very much for responding to my advertisement. A
short while after you begin this program you will realize what
a remarkable money machine this is. Nine days after my sponsor began
advertising on line, he received 32 envelopes. Each sender had
enclosed $5.00. Forty seven days after his first advertisement
appeared on line, the total receipts had risen to $17,654. He ran 15
ads for a two-week period and during that time, sent this file to   168
people. He stopped sending the file after he had received 23 envelopes;
each one contained $5.00.

"I've just begun to run the program again and I'm amazed at how
predictable it is. The results appear to be slightly ahead of last time".


Read the whole report and I'm sure you will want to start building your
list immediately...I sure did!!!

Your only risk in participating in this program is the $10.00 that
you send to the list members and the few dollars that it cost to
advertise and transmit the file to those who respond. You'll get
that back in the first few envelopes. After that...

$$$$$$$$$$$$$$$$$$$ ... IT'S PURE PROFIT! ... $$$$$$$$$$$$$$$$$$$

Remember, the program works because of the honesty of the participants.

SEND YOUR 6 ENVELOPES (WITH A TOTAL OF $10.00) THE DAY YOU BEGIN THE PLAN.

WORK THE PROGRAM HONESTLY AND DILIGENTLY AND YOU WILL REAP GREAT REWARDS.


	      GO FOR IT! YOU WILL NEVER REGRET IT!

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

You may have seen a MUCH LONGER, LONGER, LONGER
version of this program on-line.  This is the SHORT VERSION!
NO letters needed and very inexpensive to E-Mail.

	   DON'T MISS THE BOAT ON THIS ONE.

	    IT'S TOO EASY AND THE MONEY'S

		      GREAT.

Before you say no and just hit the old delete button try
thinking about it like this.  You could take a chance and
make alot of money, or you could take the $10 to McDonalds
and grab a burger.  I was one of those, don't get me wrong
today you have to be,then I tried it.

I did all the RIGHT things, such as ADVERTISE, ADVERTISE,
ADVERTISE and before you know it I was paying taxes on alot
more money than in the past.

Basically, it is a list of 10 people who have already decided
paying taxes is alot more enjoyable than eating burgers. They
joined by mailing money to others.  When you join you must mail
out $10 total.  You join by mailing $1 to #1,2,3,4,5 AND mailing $5 to 
#10.

You then edit the file to remove the name in #1.  Move all the
other nine names up one spot leaving #10 blank.  Then you add
your name next to #10.  YOU THEN PLACE CLASSIFIED AD'S ON-LINE.
Place your AD's on any BBS that you have access to and you'll
have greater success.

When you get responses, you send them this entire file AS IS.
Since you are then #10 on their lists, they will send you $5
per person that joins.  You then move up to #9.  When others
join after them, you become #8, and so on.

When you reach #5, you will then be receiving $1 from
thousands of people who joined way after you since the list
expands geometrically (see diagram in the SUMMARY at end).

If only two people join after you, you get your $10 back in a
week.  Anything after that is pure PROFIT.

Thousands of people have made BIG money with this program, as
much as hundreds of thousands of dollars in two months!!

DON'T MISS OUT JOIN NOW, just follow the green-brick road!

WHAT IT COSTS:
-------------
It costs $10 to join.

WHAT YOU DO:
-----------
READ THIS FILE COMPLETELY BEFORE USING IT!
It is an EXCELLENT PROGRAM and if you use it, you are agreeing
to ALL the terms in THE AGREEMENT at the end.  Have fun making
LOTS OF MONEY!  I am.

1.  STORE THIS FILE  - described below.
2.  MAIL $10 TOTAL OUT to people on the list - described below.
3.  UPDATE THE LIST - add your name to it as described below.
4.  PLACE ADS ON-LINE.
5.  MAIL THIS FILE VIA E-MAIL - to all responses to your ad.
    until 20 of the responses have JOINED - described below.
6.  WAIT FOR THE MONEY TO ROLL IN - spend it as you wish.

WHAT TO EXPECT:
--------------

1.  YOU WILL RECEIVE $5 FROM EACH PERSON WHO JOINS UNDER YOUR
    NAME.  You get your $10 back IMMEDIATELY as #10 and here's
    the beauty of it...with ONLY TWO PEOPLE joining under you!!
2.  YOU WILL RECEIVE $1 FROM EACH OF THOUSANDS OF PEOPLE inb   two months.

As each person joins, the names on the list move
    up and when YOUR NAME reaches position #5 you will receive
    $1 from thousands of people who have joined way after you.
    The sooner you join the better.

HIGHLIGHTS:
----------
1.  Investment required:   $10.

2.  Limited distribution:  You will stop sending the file when
			  20 PEOPLE HAVE JOINED IMMEDIATELY UNDER YOU.

3.  Editing prohibited:    You MAY NOT change ANYTHING in this
			   file, other than deleting name #1,
			   moving the names up one and adding
			   your own name as #10.
4.  Upgrading allowed:     You MAY use this file if you
			   currently have any previous versions
			   of the long file BUT YOU MUST STILL
			   PAY #10 the $5 unless you already
			  paid #10 for any other version.

5.  Step-by-step info:     To help newcomers joining.

6.  3-Point Checklist:     To ensure you did everything right.

7.  5-Point Agreement:     a) If you send file out, you agree to all
			   b) If you don't agree, you MAY NOT
			      send out this file to anyone.


		INSTRUCTIONS
		------------

Welcome to the world of Mail Order!

This home business is a little different than most mail-order
businesses.  Your product is not solid and tangible, but
rather a service.

Basically, you are in the business of developing Mailing Lists.
Many large corporations are happy to PAY BIG BUCKS for quality
mailing lists.

The money YOU WILL MAKE from the mailing lists are secondary to the
income which is made from people like yourself requesting that
they be included in that list.

WHAT YOU WILL NEED:  Get the following SIX items BEFORE starting:
-------------------

1.  6 Envelopes - preferably business size
2.  6 Stamps - 32 cents each
3.  6 Pieces of paper - large enough for one sentence
4.  A Pen
5.  1 $5.00 bill   (U.S. currency)
6.  5 $1.00 bills  (U.S. currency)

When you have stored this entire file, read it, and have
everything you need above, follow the six sections below to begin.
Now, Let's Go!  Isn't this fun?  It should be and you should be
getting very excited at this point.

1)  STORE THIS FILE 


2)  MAIL $10 TOTAL OUT:
    ------------------

DO THESE STEPS IN ORDER:

1. Address six envelopes to the names in the following
   positions:  1, 2, 3, 4, 5, 10

      NOTE: The last envelope goes to name 10 (TEN)
	    (NOT name #6) IS RIGHT!

2. Place a stamp on each envelope.
3. Write the following on each of the six pieces of paper:       PLEASE 
ADD
MY NAME TO YOUR MAILING LIST.
4. Insert each piece of paper in each envelope.
5. Insert a $1.00 bill in envelopes to: names 1, 2, 3, 4, 5.
6. Insert the $5.00 bill in the last envelope to name 10.
7. Seal the six envelopes.
8. Mail the six envelopes.

THIS IS A LEGITIMATE SERVICE THAT YOU ARE REQUESTING.

YOU ARE PAYING $1 FOR THIS SERVICE TO EACH OF #1 - 5,
AND $5 TO #10).

If you did the eight steps above, go to 3 below.  If you have
not done the eight steps above, go back and do them NOW BEFORE
going to step three below!

3)  UPDATE THE LIST AS FOLLOWS:
    --------------------------
    If you have NOT done everything in (2) above you CANNOT
    continue!  Go back to (2) above and AFTER you've done
    EVERYTHING there come back here to this section!

    1. REMOVE the name that appears as #1 on the list.
    2. MOVE the other nine names up one position. (#2 will
       become #1 and #3 will become #2, etc.)     
    3. PLACE YOUR NAME, ADDRESS AND ZIP CODE IN THE #10
       POSITION.

    4.  PLACE ON-LINE ADS:
    -----------------
    It is ABSOLUTELY CRITICAL for you to ADVERTISE ON-LINE and
    to E-MAIL THIS COMPLETE FILE to people responding to YOUR
    advertisements.

    IF YOU DON'T advertise, you CANNOT generate responses AND
    THEREFORE, YOUR name (in the #10 position when you SEND
    the file) will NEVER move up and you will NEVER make
    money!  You  M U S T advertise on-line.  If you advertise
    EXACTLY where you found this advertisement and in other
    CATEGORIES on the bulletin board, you will generate LOTS
    of responses (you REPLIED to my ad didn't you?).

   THE FOLLOWING IS STRONGLY RECOMMENDED:

1.  SPACE AND CAPITALIZE YOUR SUBJECT. EXAMPLE:

	N E T W O R K   M A R K E T I N G!

	This separates your ad from the clutter of everyone
	else's (since most people rarely use spaces between
	the letters). The reader will spot your ad because it
	S T A N D S  O U T and will respond.

    2.  USE EYE-CATCHING PHRASES:  F  R  E  E   M  O  N  E  Y
	Who can resist responding to this?  Did YOU?  Make the
	subject irresistible.  Spur the reader's curiosity.

    3.  KEEP THE AD VERY BRIEF: EX: Press REPLY for THE BEST
	easy cash information.  This saves you money in
	advertising.  The shorter the better.  Again, you
	responded and I saved money advertising.  And so will YOU too.

Don't worry about using the exact same ad as the one you
read when you responded to my ad.  You have my permission.
I won't lose anything by it.  If anything, my name will
move that much faster up the list.  So will YOURS, when the
next person to reply to YOUR AD receives the file EASYCA from YOU.

Use this exact same file, BUT YOU MAY NOT ALTER ITS CONTENTS,
FORMAT, STRUCTURE, ETC., IN ANY WAY, MANNER, OR FORM OTHER THEN
TO DELETE THE NAME IN THE #1 POSITION, MOVE ALL THE OTHER NAMES
UP ONE POSITION, AND ADD YOUR OWN NAME IN THE #10 POSITION.

This means:
YOU MAY USE this file, BUT YOU MAY NOT ADD ANYTHING ELSE to it
OR TAKE AWAY ANYTHING ELSE from it OR CHANGE ANYTHING ELSE IN IT.
NOT one DOT.

Why?  Because this file has been thoroughly TESTED, REVISED, and
RETESTED in market studies, and the results indicate that MORE
THAN 98.3% OF THE PEOPLE RECEIVING THIS UNALTERED FILE WILL JOIN!

Any alterations in this file at all, will NOT improve your
response rate and will probably DRASTICALLY REDUCE RESPONSE
RATE FROM 98.3% TO LESS THAN 13%!!

Don't try to reinvent the wheel, it's already been invented
just ROLL with it!

For those of you still skeptical, why do you think there are so
many variations of this file in CIS?  Because they've all been
tried, and revised, and THIS ONE, is the one that EVOLVED from
those, and will PULL IN THE GREATEST RESPONSE.

Go ahead, if you want, try the others, you'll soon see you are
wasting precious time, money and the positive response rate won't
even come CLOSE to THIS one.

5)  MAIL THIS FILE VIA E-MAIL:
    ------------------------
   E-Mail this entire file AS IS when you get responses to
    your on-line ads UNTIL YOU HAVE 20 PEOPLE WHO JOINED under
    you.  NOT everyone who receives the file will join.  But
    most will.  

    HOW TO MAIL THE FILE:
    After you get E-Mail responding to your ad, you need to SEND
    them this ENTIRE FILE AS IS.  Since you already saved it. Just BE    
SURE
TO NOTE THE ID# of the person responding.

  
6)  WAIT FOR THE MONEY TO ROLL IN:
    -----------------------------
    As soon as people responding to YOUR ads join YOUR list,              
 
    THEY WILL EACH BE SENDING YOU THE $5 bill.  So, for
    example, in a 2-week period, if you get 100 responses to
    join under you, you'll receive 100 x $5 = $500.

    Not bad considering you invested only $10 right!  You may
    get less or LOTS MORE.  At any rate, WHEN ONLY two PEOPLE
    JOIN YOU'LL HAVE YOUR $10 BACK!!  (This will happen A LOT
    SOONER than you think, within a week you'll already be
    EVEN.)

    PLEASE NOTE:  This is a TEAM effort.  Everyone must adhere
    to the rules.  If YOU send out to 500 responses who join,
    you'll make 500 x $5 = $2,500 BUT the list will SLOW DOWN    since 
there
will be less people available to join and the
    BIG money is with the $1 bills IN THE LONG RUN, NOT the $5
    bills in the SHORT RUN!

    You WANT to allow others to join UNDER PEOPLE UNDER YOU so
    that the list can FLY!  That's why it is SO IMPORTANT to
    STOP SENDING THE FILE ONCE YOU HAVE 20 PEOPLE WHO SIGNED
    ON IMMEDIATELY UNDER YOU.  HOW DO YOU KNOW WHEN TO STOP
    SENDING FILES OUT?  WHEN YOU HAVE RECEIVED 20 $5 BILLS    ($100)!  
Of
course you may be receiving plenty of $1 bills
    in the meantime.  That's O.K.  Keep sending files out UNTIL
    you receive 20 $5 BILLS!

    You start at #10 and when your name reaches #5, you will be
    on thousands of lists.  IF YOU DO NOT PUT YOURSELF IN #10,
    YOU WILL NOT RECEIVE THE $5 FROM EACH AND EVERY PERSON YOU
    SEND THIS FILE TO (WHO IS ALSO REQUIRED TO SEND $5. TO #10.
    THAT'S YOU ON THEIR LIST)!

    WITHIN 60 DAYS YOU WILL RECEIVE OVER $50,000.00 IN CASH!!!
    ----------------------------------------------------------

    KEEP A COPY OF THIS FILE FOR YOURSELF so that you can use
    it AGAIN AND AGAIN whenever you need money.  As soon as you
    mail out these letters you are automatically in the mail-
    order business and SOME PEOPLE WILL BE SENDING YOU $1 to be
    placed on your mailing list and THE PEOPLE YOU SEND THE
    FILE TO, WILL BE SENDING YOU $5 to also be placed on your
    mailing list.  This list can then be rented to a mailing
    list broker that can be found in the Yellow Pages for
    additional income on a regular basis.  The list will become
    MORE VALUABLE AS IT GROWS in size.

    This is a service.  This is perfectly legal.  If you have
    any doubts, refer to Title 18, Sec. 1302 & 1341 of the
    postal lottery laws.

NOTE: Make sure you retain EVERY name and address sent to you,
      either on computer or hard copy, but DO NOT discard the
      notes ("Please add my name to your mailing list.") they
      send you.  This is PROOF that you are truly providing a
      service and should the IRS or some other Government
      agency question you, you can provide them with this proof!
	       BEGIN LIST OF PARTICIPANTS
		--------------------------
      
	   
	   
        1.  Jason Calloway ($1)
	    2400 20th Ave. NW
	    #11-B
	    Olympia, WA 98502                         
       
        2.  John Carleton ($1)
	    3815 Morehead Ave.
	    Chico, CA 95928
	     
        3.  Simon Talbot  ($1)
	    90 Payne Street
	    Boyanup, West Australia 6237

        4.  Ethan C. Allen  ($1)                              
	    30225 18th Ave SW                              
	    Federal Way, WA 98023                        
      
        5.  Ken Mah  ($1)
	    1857 Dandini Circle
	    San Jose, CA 95128

        6.  Ken Hanscom 
	    24255 PCH#1044
	    Malibu, CA 90263-1044 

        7.  James W. Sibley IV  
	    2230 So. Interlocken Dr.
	    Evergreen, CO 80439

        8.  Fred Ewan        
	    909 Keith Avenue
	    Spring Lake Heights, NJ  07762      
	
        9. Matthew Jakubiak 
	    P.O. Box 66
	    Hothckiss, CO  18419

       10. Jeff Weinstein  ($5)
           1911 Central Ave.
           Wilmette, IL 60091

   END LIST OF PARTICIPANTS

		      SUMMARY
		      -------
1.  FILE this file as EASYCASH or any other name for 
    this very special file.

2.  MAIL $10 TOTAL OUT:  Do the 8 steps in Section 2.

3.  UPDATE THE LIST:     Do the 3 steps in Section 3.

4.  PLACE ADS all over the bulletin boards.  The more the better.
      a.  NOTE ID#s of everyone when you get inquiries to your ads.

5.  E-MAIL THIS EXACT FILE TO OTHERS.
6.  WAIT FOR THE MONEY:

    When the $1 bills starts rolling in, in about 4 - 5 weeks,
    be ready for it!  (Don't forget that the $5 bills will
    begin rolling in MUCH SOONER: give it a week, but don't be
    surprised if in 3 - 4 DAYS you start getting them as you
    well should! -- a few days after people you send the file
    to read it and join by sending you $5.)
   If you send the file to 10 people who join, and they all
    send to 10 who join, and those 10 send to 10, etc., this
    is how fast your name will move to #1:

			    DIAGRAM
			    -------

      THEY SEND TO        YOUR #    ON THIS MANY LISTS
YOU SEND TO 10                            10    10
THE $5 ROLL IN:             10             9    100      =$50.00
			   100             8    1000
			  1000             7    10000
			 10000             6    100000
			100000             5    1000000
THE MONEY ROLLS IN:    1000000             4    10000000 = $$$!!
		      10000000             3    100000000
		     100000000             2    1000000000
		    1000000000             1    10000000000

Now let's get REAL here...YOU'RE NOT going to receive BILLIONS
of dollars despite how good the numbers look.

Why not?  Because, unfortunately, SOME OF YOU are NOT going to
DO IT.  So of course, those won't get ANY money BUT the VAST
MAJORITY OF YOU WILL DO IT (over 98.3% positive response): send
the money and the files out.  YOU WILL DEFINITELY RECEIVE MONEY.

However, no matter how good in theory, sooner or later the process
breaks down so INSTEAD OF RECEIVING BILLIONS OR MILLIONS, you'll
only receive a few thousand or hundred thousand or so.  But at
that point, WHO REALLY CARES?  That's MORE MONEY THAN MOST PEOPLE
MAKE IN A YEAR IN A FULL-TIME JOB!

And when the money finally stops, guess what?, you can do it
ALL OVER AGAIN!!

7.   HAVE FUN depositing the money in your bank account.

		     CHECKLIST
		     ---------
1.  Did you mail $1 to each of #1, 2, 3, 4, 5?
2.  Did you mail $5 to #10 only?
3.  Did you place on-line advertisements?

If you DID ALL of the above, YOU'RE READY to receive responses
and mail this file out and receive money.

If you MISSED ANY OF THE 3 STEPS in the checklist above, DO
THEM RIGHT AWAY so you can begin to receive responses and thus
receive money.

		  THE AGREEMENT
		  -------------

1.  You agree that you will send out a $1 bill to each of the
    names listed in positions #1, 2, 3, 4, 5 AND that you will
    send out a $5 bill to the name listed in position #10 only,
    for a total investment of $10, BEFORE sending this file to
    anyone or posting it on any bulletin board.

2.  You agree to use this file exactly as when you received it
    in accordance with Section 4) Place On-line Ads.  That is,
    you agree you will not alter this file, unless you're merely
    moving the names from positions 1-9 up one position, in
    order, and adding your own name to position #10.

3.  You agree that you will stop sending this file when you have
    20 PEOPLE who JOINED immediately under you so that the names
    can move up MUCH faster so EVERYONE can make money faster.
    Including YOU.

Now if you haven't enrolled, go back to the checklist and DO IT NOW!
Remember...you only use $10 to make $thousands!!!

Good Fortune
 
================================================================================
Archive-Date: Wed, 26 Apr 1995 21:56:09 CDT
Sender: owner-litprog@SHSU.edu
From: David Bradley <bradley@erinet.com>
Reply-To: LitProg@SHSU.edu, bradley@ERINET.COM
Subject: Re: $$$$$$$$$$$$  M A K E   M O N E Y   E A S Y $$$$$$$$$$$$$$$$
Date: 27 Apr 1995 01:55:32 GMT
Message-ID: <3nmtik$cs2@news.erinet.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 7bit
To: jeffw15@aol.com
To: LitProg@SHSU.EDU

Just a thought, one might also want to contemplate how they'd spend the   
money in prison.  I believe pyramid schemes are illegal. 
 
--  
David Bradley 
bradley@erinet.com 


================================================================================
Archive-Date: Thu, 27 Apr 1995 17:38:34 CDT
Sender: owner-litprog@SHSU.edu
From: scherer@genesis.informatik.rwth-aachen.de (Andreas Scherer)
Reply-To: LitProg@SHSU.edu, scherer@GENESIS.INFORMATIK.RWTH-AACHEN.DE
Subject: Re: dos CTANGLE.EXE
Date: Thu, 27 Apr 1995 17:24:46
Message-ID: <scherer.117.00116A3A@genesis.informatik.rwth-aachen.de>
To: LitProg@SHSU.EDU

In article <3nluef$2s3@grok.provo.Novell.COM> jcalcote@novell.com (John Calcote) writes:

>I'm having a devil of a time getting bootstrapped.
>Will someone please email me a copy of ctangle.exe that works with big
>memory?

Try the CTANGLE.EXE in

   ftp.uni-stuttgart.de:/pub/systems/amiga/aminet/dev/c/cwebbin.lha

Don't worry about the `Amiga' stuff, this archive really contains the MSDOS 
binaries for CTANGLE, CWEAVE, and WebMERGE.  All three were tested and 
successfully used on IBM 286, Compaq 386, and Compaq 486.  Except for a 
reduction of the 270,000 byte field to 170,000 bytes, everything else is 
totally left unchanged, so bootstrapping should be possible.

BTW, these executables are directly associated with my personal port of
Levy/Knuth CWEB 3.3, called CWEB 3.3 [p11a], also available in the directory 
mentioned above, but also at the relevant CTAN location.  The C++ code in 
cweb33p11a.lha (or cweb3.3p11a.tar.gz respectively) compiles smoothly with 
Borland C++ 3.1.

Enjoy,

Andreas Scherer
Aachen University of Technology, Germany
<scherer@genesis.informatik.rwth-aachen.de>
================================================================================
Archive-Date: Thu, 27 Apr 1995 18:02:44 CDT
Sender: owner-litprog@SHSU.edu
From: jacob@dannug.dk (Jacob Nielsen)
Reply-To: LitProg@SHSU.edu, jacob@DANNUG.DK
Subject: Re: Postscript-output weaver?
Date: 26 Apr 1995 22:16:29 GMT
Message-ID: <JACOB.95Apr27001629@jnext>
To: LitProg@SHSU.EDU

>>>>> "Will" == Will Ware <wware@world.std.com> writes:

Will> I picked up a book on Postscript, and it looks pretty
Will> straightforward. Is anybody aware of something like CWEAVE
Will> that would directly produce Postscript output (rather than
Will> going the TeX->dvips route)? Much appreciated.

It may look simple, but it isn't for your purpose :-) 

Why would you want to use PostScript as a formatting engine?
PostScript wasn't created as a language for writing text but as a
language for placing graphics on a page (and an extremely powerful one
at that). If you want to produce good-looking output, you have to tell
PostScript where to place each character. TeX, on the other hand, is a
formatting engine (which outputs in DVI which we translate to
PostScript for the benefit of our printers).

If you want PostScript directly from CWEAVE, the way to go is to get
TeX to output PostScript directly.

PS: Anyone know the current status of noweb, nuweb and the emacs mode
for nuweb?

Regards,

Jacob
--
Jacob Nielsen
jacob@dannug.dk
================================================================================
Archive-Date: Fri, 28 Apr 1995 18:53:08 CDT
Sender: owner-litprog@SHSU.edu
From: edstrom@Bubo.hmsc.orst.edu (John Edstrom)
Reply-To: LitProg@SHSU.edu, edstrom@BUBO.HMSC.ORST.EDU
Subject: FAQ
Date: 28 Apr 1995 17:04:17 GMT
Message-ID: <3nr76h$f5p@gaia.ucs.orst.edu>
To: LitProg@SHSU.EDU

Is there a FAQ for this group somewhere?  If not, what is a good
starter's text?

je

-----
 John Edstrom | edstrom @ slugo.hmsc.orst.edu

 http://bubo.hmsc.orst.edu/~edstrom
 "Lurker" at BioMOO (bioinfo.weizmann.ac.il:8888)

 Hatfield Marine Science Center
 2030 S. Marine Science Drive
 Newport, Oregon     97365-5296
 wk: (503) 867 0197
 fx: (503) 867 0138








================================================================================
Archive-Date: Fri, 28 Apr 1995 19:02:39 CDT
Sender: owner-litprog@SHSU.edu
From: gbailey@vms1.tamu.edu (Guy Bailey)
Reply-To: LitProg@SHSU.edu, gbailey@VMS1.TAMU.EDU
Subject: Re: FAQ
Date: 28 Apr 1995 18:47 CDT
Message-ID: <28APR199518475630@vms1.tamu.edu>
To: LitProg@SHSU.EDU

In article <3nr76h$f5p@gaia.ucs.orst.edu>, edstrom@Bubo.hmsc.orst.edu (John Edstrom) writes...
>Is there a FAQ for this group somewhere?  If not, what is a good
>starter's text?
> 
Here is the WWW URL for the LP web pages:

http://info.desy.de/www/LitProg.html

Here is the WWW URL for the LP FAQ:

http://ftp.desy.de/pub/faq/web/FAQ.txt

Guy Bailey
gbailey@tamu.edu
================================================================================
Archive-Date: Sat, 29 Apr 1995 01:01:38 CDT
Sender: owner-litprog@SHSU.edu
From: norman@flaubert.bellcore.com (Norman Ramsey)
Reply-To: LitProg@SHSU.edu, norman@FLAUBERT.BELLCORE.COM
Subject: Re: Noweb and html.
Date: 29 Apr 1995 03:44:04 GMT
Message-ID: <3nscm4$7sr@lowell.bellcore.com>
CC: sp106@york.ac.uk
To: LitProg@SHSU.EDU

In article <3nlkt4$gqi@mailer.york.ac.uk>, stephen <sp106@york.ac.uk> wrote:
>I have just started using noweb, [and why doesn't [[<<chunk name>>]]
>produce the proper cross reference, such as]
>a html link is put in my text that
>refers to it.

It's a bug, it's a bug, it's a bug.

The reason I haven't just fixed it is that I still haven't figured out
exactly what lexical analysis should be used to support it.  For
example, I surely don't want to parse:
  
  A line quoting [[<<add one to [[x]]>>]].

as

  @text A line quoting 
  @quote
  @text <<add one to [[x
  @endquote
  @text >>]].

But I surely also want to parse

  A line saying shift [[x]] by writing [[x << 1]] or [[x >> 1]].

as

  @text A line saying shift
  @quote
  @text x
  @endquote
  @text  by writing
  @quote
  @text x << 1
  @endquote
  @text  or
  @quote
  @text x >> 1
  @endquote
  @text .

So, if somebody can come up with a plausible state machine or other
lexing technique, I'll get this fixed in noweb.
================================================================================
Archive-Date: Sat, 29 Apr 1995 08:41:08 CDT
Sender: owner-litprog@SHSU.edu
Date: Sat, 29 Apr 95 9:40:42 EDT
From: Lee Wittenberg <leew@pilot.njin.net>
Reply-To: LitProg@SHSU.edu, leew@PILOT.NJIN.NET
To: LitProg@SHSU.edu, edstrom@Bubo.hmsc.orst.edu
Subject: Re: FAQ
Message-ID: <CMM-RU.1.4.799162842.leew@pilot.njin.net>

John Edstrom asks:

> Is there a FAQ for this group somewhere?  If not, what is a good
> starter's text?

LitProg-FAQ is a file in the CTAN archives (the tex-archive directory
at ftp.shsu.edu in the US) under the help directory).

		-- Lee

------------------------------------------------------------------------
Lee Wittenberg              | I have always considered grown-ups to be
Computer Science Department | figures of fun, ... and have never been
Kean College of New Jersey  | deceived by their hypocracies.
Union, NJ   07083           | 
                            | -- Anita Loos
leew@pilot.njin.net         |    "The Biography of a Book" (1963)
------------------------------------------------------------------------
================================================================================
Archive-Date: Sat, 29 Apr 1995 10:31:31 CDT
Sender: owner-litprog@SHSU.edu
From: mkmartin@cts.com
Reply-To: LitProg@SHSU.edu, mkmartin@CTS.COM
Subject: CLIENT/SERVER PROGRAMMING
Content-Type: TEXT/PLAIN; charset=US-ASCII
Date: Sat, 29 Apr 1995 13:48:20 GMT
Message-ID: <NEWTNews.29841.799163778.mkmartin@mkmartin.cts.com>
MIME-Version: 1.0
To: LitProg@SHSU.EDU


I work for a firm that is venturing into the client/server area.  We have been 
programming in COBOL and XBASE languages.  

Can anybody out their recommend a language that would be relatively easy to 
learn based on our previous experience?

We have already purchased Oricle7 to be used as the SQL server.  I am 
considering PowerBuilder, Visual BASIC, SQLWindows and Oricle's development 
tools.

Thanks for reading this article.


================================================================================
Archive-Date: Sat, 29 Apr 1995 10:58:06 CDT
Sender: owner-litprog@SHSU.edu
From: corb@aol.com (Corb)
Subject: Detecting Fixed Position Tables in Unformatted Text
Date: 29 Apr 1995 11:43:57 -0400
Message-ID: <3ntmrt$4o2@newsbf02.news.aol.com>
Reply-To: LitProg@SHSU.edu, corb@aol.com (Corb)
To: LitProg@SHSU.EDU

   I receive a number of text database feeds from numerous outside
vendors.  I would like to display these using a proportional font.  This
would be easy except for the following.  Some of the pages have columns of
information in them which I would like to keep aligned.  The feeds only
contain text, spaces, and newlines. There are no tabs or other indicators
to show that something is a table, the items are aligned simply by placing
more newlines before the text.

   I realize no algorithm could perfectly detect whether something is in a
column.  I am looking for some sort of weighting to indicate the
probability of it being in a column.  For instance, the more spaces that
precede a character might increase the probability of it being formatted. 
If the item above or below it has a high weighting, this too might
increase its weighting.  If the newline on this line is in a earlier
column than a normal line, that too might increase the weighting by a
small amount.  If there are other high weighted items on this line, that
too might increase the weight.  A numerical character also might increase
the weight. Based on the weighting, I can hedge the positioning of the
text.  If the weighting is  low, I use full proportional positioning, the
higher the weighting the more I go to fixed positioning.  By hedging the
position based on the weight, I don't have to have a perfect solution.

   I am sure I am not the first to hit this problem.  Does anyone know of
books or articles I could start looking at for this or have ideas for a
solution?  I haven't read much on fuzzy logic, would that be a useful
approach?  My concept is that it is obvious to a human which items are in
tables.  I'm trying to figure out what information that is based on.  

 (Note: the outside vendors have been approached about adding tabs or some
other  formatting information.  There is no hope for them to do this, nor
is there an alternate source for the data.)  I couldn't find any FAQ's on
this area - any suggestions where to look? Thanks in advance for any
responses!!
================================================================================
Archive-Date: Sat, 29 Apr 1995 17:12:01 CDT
Sender: owner-litprog@SHSU.edu
From: cnemmick@aol.com (CNEmmick)
Subject: RE: Just getting started
Date: 29 Apr 1995 02:35:54 -0400
Message-ID: <3nsmoa$132@newsbf02.news.aol.com>
Reply-To: LitProg@SHSU.edu, cnemmick@aol.com (CNEmmick)
To: LitProg@SHSU.EDU

Hello!  I'm graduating from my high school in about a month, and I'll be
taking the A.P. (Advanced Placement) Computer Science test in about two
weeks.  The test is held in Pascal, which at the current moment, I am very
knowledgeable in.  I have aquired Borland C++, and have been working in it
slightly with a beginner's book.  Of the great C++ and C programmers out
here in the net, what is some of the most important things I must learn
that aren't taught in your basic manual?
Please E-Mail me or post it on this message.

Thanks,

CNEmmick
Young Programmer
================================================================================
Archive-Date: Sun, 30 Apr 1995 05:57:40 CDT
Sender: owner-litprog@SHSU.edu
From: briggs@alamo.net (Briggs Reschke)
Reply-To: LitProg@SHSU.edu, briggs@ALAMO.NET
Subject: Re: Just getting started
Message-ID: <D7uBoG.81s@alamo.net>
Date: Sun, 30 Apr 1995 09:00:11 GMT
To: LitProg@SHSU.EDU

CNEmmick (cnemmick@aol.com) wrote:
: Hello!  I'm graduating from my high school in about a month, and I'll be
: taking the A.P. (Advanced Placement) Computer Science test in about two
: weeks.  The test is held in Pascal, which at the current moment, I am very
: knowledgeable in.  I have aquired Borland C++, and have been working in it
: slightly with a beginner's book.  Of the great C++ and C programmers out
: here in the net, what is some of the most important things I must learn
: that aren't taught in your basic manual?
: Please E-Mail me or post it on this message.

Pointers.  Learn about using pointers - passing them as arguments to functions,
pointer arithmetic, pointers to pointers to pointers to pointers to pointers,  
etc...

================================================================================
Archive-Date: Sun, 30 Apr 1995 06:13:57 CDT
Sender: owner-litprog@SHSU.edu
From: raczy@delirium.lifl.fr (Come Raczy)
Reply-To: LitProg@SHSU.edu, raczy@DELIRIUM.LIFL.FR
Subject: Re: C++ Templates and FWEB
Date: 30 Apr 1995 09:52:16 GMT
Message-ID: <RACZY.95Apr30115217@leffe.lifl.fr>
To: LitProg@SHSU.EDU

   Hi,

Here are the answers, and a partial solution for the problem.

In article <RACZY.95Apr24100323@delirium.lifl.fr>
raczy@delirium.lifl.fr (Come Raczy) writes:
>  The problem was to get a nice output, using FWEAVE on
>  C++ generic classes. FWEAVE doesn't seem to understand
>  the notation : MyClass<T>.

I just got two kind of answers:

   1) "Don't use C++! Even C++ compilers have problems to 
      understand this messy syntax."
      OK, a lot of C++ features may be obtained with C, if
      you use efficiently the preprocessor. Moreover, with
      FWEAVE you cand overload identifiers and operators,
      so C and FWEAVE can be more efficient than C++.

   2) "Don't use FWEAVE! Switch to a non-pretty-printing WEB."
      OK, emacs cant help you to create "nice" code, then turn
      on FWEAVE's language independant mode (Cheer up! Flee!:-)). 

So I'tried to find the minimal tricks to get what I need. The 
solution that I hold back uses FWEB's internal macros. For each
generic class named "MyClass" I define a macro:

@M @-GenericMyClass MyClass<T>

It seems to work fine with FWEB 1.40. here is an example:

Note: I use @/ at the end of each line "template <class T>"
instead of @; because there is less space between the lines,
but it wouls work with @; too.

============Beginning of test.web===========
@*Main.
@f @-cout int
@a
#include <iostream.h>
@<Declaration of |MyClass|@>@;
@<Implementation of |MyClass|@>@;

int main(void){
MyClass<int> cc(1,2,3);
cout << cc << "\n";
return 0;
}

@*Description of $MyClass$.

@*1Definition.

@f MyClass int
@f GenericMyClass MyClass
@M @-GenericMyClass @[MyClass<@-T>

@<Declaration of |MyClass|@>=

template <class T>@/
class MyClass{
public:
	MyClass(const GenericMyClass &x);
	friend ostream &operator <<(
		ostream &os, const GenericMyClass &x);
private:
	T v[3];
};

@*1Implementation.

@<Implementation of |MyClass|@>=

template <class T>@/
GenericMyClass::MyClass(const GenericMyClass &x){
for(int i=0; i<3; i++) v[i]=x(i);
}

template <class T>@/
ostream &operator <<(ostream &os, const GenericMyClass &x){
return(cout << "[" << x.v[0] <<", "<<x.v[1]<<", "<<x.v[2]<<"]");}

@*INDEX.
===============End of test.web==============

Hope this helps.

Come Raczy
e-Mail: raczy@lifl.fr
================================================================================
Archive-Date: Sun, 30 Apr 1995 10:59:13 CDT
Sender: owner-litprog@SHSU.edu
From: przemek@rrdjazz.nist.gov (Przemek Klosowski)
Reply-To: LitProg@SHSU.edu, przemek@RRDJAZZ.NIST.GOV
Subject: Re: CLIENT/SERVER PROGRAMMING
Date: 30 Apr 1995 15:59:04 GMT
Message-ID: <PRZEMEK.95Apr30115904@rrdjazz.nist.gov>
To: LitProg@SHSU.EDU

In article <NEWTNews.29841.799163778.mkmartin@mkmartin.cts.com> mkmartin@cts.com writes:

   I work for a firm that is venturing into the client/server area.  We have been 
   programming in COBOL and XBASE languages.  

   Can anybody out their recommend a language that would be relatively easy to 
   learn based on our previous experience?

Since you asked this question in comp.programming.literate, the
obligatory answer is that it doesn't matter what language you use, as
long as you use literate programming tools to write your programs. For
introduction to literate programming, see e.g. D. Knuth 'Literate
programming', The Computer Journal, 27(2):97--111, May 1984.
--
			przemek klosowski (przemek@rrdstrad.nist.gov)
			Reactor Division (bldg. 235), E111
			National Institute of Standards and Technology
			Gaithersburg, MD 20899,      USA

			(301) 975 6249