What is SMP00?
==============
SMP00 demonstrates the use of the YASP SGML-Parser
programming interface in building an SGML application.
SMP00, as it is, has been found a valuable tool to understand SGML.
However, the main goal is to furnish a working sample to enable
developers of YASP applications to start writing source code.

SMP00 runs on various operating systems: DOS, OS2 V1,
OS2 V2 (32 bits), AIX, VM/CMS, MVS.

SMP00 forms an integral part of the YASP Application Developper Package.

Getting Started with SMP00:
===========================
Enter SMP00, and (at the prompt) <?>.

Note: if you get the message:
      (T)YSP0017: Syntax file invalid or unreadable (code 3)
      for DOS, OS/2 V1.x and AIX issue: SMP00 /C /SLOCAL init.sgm
      for OS/2 V2 only, issue:          SMP00 /C /SLOCAL32 init.sgm
      for CMS and MVS issue:            SMP00 /C /SLOCAL s370init.sgm
Furthermore, do not forget to set up the DPATH environment variable
so that it points to the location of the ysp.txt message file.

More explanations about /c and /sXXXXX switches in SMP00:
=========================================================

By default, SMP00 runs in "production mode": this is the way
most end-users run SMP00.

The /c switch activates the "compilation mode".
The /s switch -- /sXXXXX, where XXXXX is a *name* --
tells SMP00 to use XXXXX.OCS to write/read the OCS
(an OCS is the compiled form of an SGML declaration.)

In "production mode" (end-user, /c option omitted):
  1) SGML Declaration:
     - if an SGML MD is found in the document, SMP00 does not store
       its compiled form (OCS) and uses a temporary file -- the /s
       option if any, is therefore irrelevant,
     - if *NO* SGML declaration is found, SMP00 uses:
       - XXXXX.OCS, if the option /sXXXXX was given,
       - otherwise, LOCAL.OCS
  2) Document Type Declaration
     - if the DTD contains a "meaningful" subset, SMP00 does not store
       its compiled form (ODT) and uses a temporary file,
     - if the DTD contains no subset, (or has an empty subset),
       an already compiled form is expected: SMP00 looks for
       a file named TTTTT.ODT, where TTTTT is the base document
       type as specified in the Document Type Declaration
     - if there is no DTD at all, SMP00 will try to guess the
       base document type from the first tag -- so you can start
       a document with just <general>.  This is an ISO extension.

  Brievly, in production modes, when an SGML and/or DTD are used,
  they apply to *this run* only, and no OCS/ODT are written
  -- old ODT/OCS are not clobbered.

In "compilation mode" (SGML expert, /c option specified):
  1) SGML Declaration:
     - if an SGML MD is found in the document, SMP00 stores
       its compiled form in
       - XXXXX.OCS, if the option /sXXXXX was given,
       - otherwise, USER.OCS
     - if *NO* SGML declaration is found, SMP00 uses:
       - XXXXX.OCS, if the option /sXXXXX was given,
       - otherwise, LOCAL.OCS
  2) Document Type Declaration
     Must contain at least an external identifier, or a
     "meaningful" subset to let YASP compile it.
     SMP00 stores this compiled form in TTTTT.ODT, where TTTTT is the
     base document type as specified in the Document Type Declaration.

Primary Entity
==============
When SMP00 is not followed by the filename of the primary
entity, it defaults to the keyboard.  Note that the system
identifier TERMINAL is known by SMP00 as being the keyboard.
It's sometimes helpful to define an entity with a sysid of
TERMINAL, and refer to it in your document instance.
