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

			 *****************************
			 *	 Help System	     *
			 *  Mechanical Engineering   *
			 *****************************

This file contains  help screens for all commands and  functions, as well as for
some  macros  and  miscellaneous  topics.  This is the	file  used  by the  HELP
function.  As such, it should have the name 'help'.

You can introduce new HELP screens by editing this file,  following  the pattern
here.  A caret (^)  marks  the	beginning  of a new  screen.  The word	directly
following  the caret is the primary  keyword.  This  should be unique  (keep the
file in	 alphabetical  order and this will be easy).  What follows are secondary
keywords.  If you ask for HELP with the primary	 keyword,  you get that	 screen.
Within HELP, using the N (Next)	 command  shows you other screens that have that
keyword as one of their secondaries.

A screen is usually  delimited by a line of '=', but this is only a  convention.
A screen can be arbitrarily  short or long, as the HELP user can easily navigate
within the file with the cursor motion keys.

The conventions for the syntax diagrams are:

  (OPTION)     Options	are given in  parentheses  and	capitalized.  These  are
	       words that must be entered exactly as given.

  |parameter|  Parameters are written between bars, and not usually capitalized.
	       These are words that describe the input	required, e.g.	|number|
	       or |filename|.  They may also refer to other syntax  diagrams, as
	       with |select|.

^OLD

All keywords marked with (OLD) are only for compatibility to older revisions and
will be removed in future releases.  Don't use these for new macros.

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

^FEEDBACK_INDICATOR
^INQ_SELECTED_ELEM
^KEYWORD_STAT
^LIST_KEYWORDS
^LIST_MENUS
^MACRO_STAT
^MEMORY_STAT
^MENU_BUFFER
^PERF_MON_OFF
^PERF_MON_ON
^RETAIN_RASTER
^CONVERT_TO_HP_SYMBOLS

Undocumented Keywords:

The following  keywords are for HP internal use only, they should not be used by
customers:

  FEEDBACK_INDICATOR
  INQ_SELECTED_ELEM
  KEYWORD_STAT
  LIST_KEYWORDS
  LIST_MENUS
  MACRO_STAT
  MEMORY_STAT
  MENU_BUFFER
  PERF_MON_OFF
  PERF_MON_ON
  RETAIN_RASTER
  CONVERT_TO_HP_SYMBOLS


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

^AUTO_NEW_SCREEN
AUTO_NEW_SCREEN function

---->(AUTO_NEW_SCREEN)---->+------>(ON)----->+---->
			   |		     |
			   `------>(OFF)---->'

The  AUTO_NEW_SCREEN  function  allows  to  select  if an  automatic  NEW_SCREEN
operation  should  take  place  after  exposing  (uncovering)  the  ME  System's
X-window.  This automatic  NEW_SCREEN operation will only occur if the ME System
is 'interactive', eg, accepting user input from the locator device.

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

^BEEP TONE
BEEP function

---->(BEEP)---->

BEEP produces an audible tone.	See also TONE.

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

^BITMAP_TO_FILE DUMP_SCREEN PRINT

BITMAP_TO_FILE function

-->(BITMAP_TO_FILE)--->,
		       |
   ,<------------<-----'
   |
   `-+---------------------------->+->-+-------------->+--->|destination|-->
     |				   |   |	       |
     +-->(PORT)------>|pnt|------->+   +-->(DEL_OLD)-->+
     |				   |  
     `-->(BOX)-->|pnt1|-->|pnt2|-->'   

BITMAP_TO_FILE writes the contents of the graphics screen to the specified file.

 -- default:     If no  option  is  given,  the  complete  screen is sent to the
		 specified destination.  If the file specified already exists an
		 error message is issued, otherwise a new file is created.

 -- PORT:        With this  option you must  select  the port to be written to a
		 file.  The system  will  accept a pick in a  partially  covered
		 port for identification.

 -- BOX:         With this option you must  indicate  the two  corners of a box.
		 The  contents  of  the  box  will  be  sent  to  the  specified
		 destination.

 -- DEL_OLD:     If the file  specified  already  exists,  its old  contents  is
		 overwritten.

 -- destination: String specifying the destination file.

EXAMPLES:   BITMAP_TO_FILE  '|pcltrans -I -d7.5 -h10.0 -C -a4 -g1.85 > /dev/rlp'
	    will  send the  complete  screen to a pipe,  where the  pcltrans
	    command is invoked.

	    BITMAP_TO_FILE  BOX 0,0 150,300  '/tmp/bitmap_file'  the contents of
	    the box 0,0 150,300 is sent to a regular file.


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

^CANCEL ESC STOP INTERRUPT BREAK
^ABORT
^Meview_cancel

CANCEL command

---->(CANCEL)---->

CANCEL	cancels	 the current  activity	of the system and  returns to the 'Enter
command' prompt.  Partially  processed	macros and input files are aborted.  Any
typeahead is cleared.  All memory used for temporary storage is released.

The CANCEL command is  automatically  executed  whenever the STOP, ESC, or BREAK
key is pressed.

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

^CATALOG DETAIL_INFO SORT REVERSE_SORT SCREEN SELECT CATALOG_LAYOUT CATFILE
^CATALOG FILE_NAME PHYS_NAME FILE_SIZE CREATE_DATE
^CATALOG MODIFY_DATE ACCESS_DATE NUM_ACCESS FILE_TYPE PROG_NAME
^CATALOG PROG_REV FILE_DESC
^Meview_catalog

CATALOG function

			 ,<---------------------------,
			 v			      ^
(CATALOG)-->|directory|->+--------------------------->+--->|output_spec|-->
			 |			      |
			 +->(DETAIL_INFO)------------>+
			 |			      |
			 +->(SORT)---------+->|item|->+
			 |		   |	      |
			 +->(REVERSE_SORT)-'	      |
			 |			      |
			 `->(SELECT)--|expression|--->'

|expression|

--->|item|-------+-------->+------>|value|------>
		 |	   |
		 +->(=)--->+
		 |	   |
		 +->(<>)-->+
		 |	   |
		 +->(>)--->+
		 |	   |
		 +->(<)--->+
		 |	   |
		 +->(>=)-->+
		 |	   |
		 `->(<=)-->'

CATALOG	 outputs a catalog  listing  of the  named  directory  to the  specified
destination.

The options allow you to

   -- choose the format of the output

   -- determine the order of the listing

   -- say which files should be listed

If you	omit  them,  the  format  is  the  one	defined	 by  CATALOG_LAYOUT  and
DEFINE_CATALOG.	 The files are listed in alphabetical  order.  Every file in the
directory is included.

Example:

	CATALOG 'dirname' SCREEN

With  DETAIL_INFO,  the normal format is not used.  Instead, all  information is
listed for each file, one item of information per line.

Example:

	CATALOG 'dirname' DETAIL_INFO SCREEN

With SORT and  REVERSE_SORT, you give an item name, and the listing is sorted on
that item.  The item name must be a string.  You can use this  option  more than
once; the second sort option then specifies the ordering of files that are alike
under the first sort option, and so on.	 See  DEFINE_CATALOG for the permissible
item names.

Example:

	CATALOG 'dirname' SORT 'FILE_TYPE'
			  REVERSE_SORT 'MODIFY_DATE' SCREEN

With SELECT, you say which files in the directory  should appear in the listing.
You do this by giving an item name, then saying	 what values that item can take.
For example,

	SELECT 'FILE_TYPE' 'Dir'

selects	 the  directories.  The item  name  must be a  string.	The  value  is a
string,	 except for the items  FILE_SIZE and  NUM_ACCESS,  where it is a number.
For the items that are dates (CREATE_DATE, MODIFY_DATE,	 ACCESS_DATE), the value
is  normally in the form  'DD-Mmm-YY  hh:mm:ss'.  If you omit the year or month,
you get the  current  one.  If you omit	 the  date,  you get 1.	 If you omit the
hh:mm:ss, you get midnight.  The value can contain wildcards; thus

	SELECT 'FILE_NAME' 'A*'

selects	 the files whose  names	 begin with 'A'.  See SELECT  (the entry in this
help file for element selection) for a description of wildcards.

SELECT also allows a  relational  operator  between the item name and the value.
Thus

	SELECT 'ACCESS_DATE' < '01-Jan-85'

selects the files not accessed in 1985 or later, and

	SELECT 'FILE_SIZE' > 10240

selects files larger than 10Kb.	 The operators can also be used with names; here
'<' means 'earlier in an alphabetical ordering', etc.

You can use  SELECT  more than once.  The  resulting  files  satisfy  all of the
selection criteria.

CATALOG  provides  information  about  all items  described  in  DEFINE_CATALOG.
Because some  information  is not available  from the host operating  system, it
must be maintained  separately in a file named  'hp_catfile'.  There is one such
file in each directory where you have

	-- written a file
	-- read a file
	-- produced a catalog listing

These files can usually be ignored.  The  exception is when they appear in spool
directories.  The  spooler  may try to print  them,  although  they are not text
files.

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

^CATALOG_LAYOUT CATALOG FILES
CATALOG_LAYOUT command

			  ,--------<---------,
			  |		     |
---->(CATALOG_LAYOUT)---->+---->|string|---->+---->(END)---->

CATALOG_LAYOUT specifies the layout of the catalog information given by CATALOG.
See also  DEFINE_CATALOG,  which  says	what is to be  printed	in the	rows and
columns specified by the layout.

The string  defines  the number of columns  and the width of each  column in the
layout.	 Within the string, the columns are separated by bars (|).  The width of
each  column is the same as the	 number	 of  characters	 between  the bars.  The
actual characters are irrelevant, and are usually blanks or numbers.

CATALOG_LAYOUT	describes the layout for a single catalog entry (file).	 You can
specify	 more  than  one  string  if you want  more  than  one	line of	 catalog
information per file.

Example:

    CATALOG_LAYOUT  '12345678901|12345|123456|1234567890|1234567|1234' END

This defines a catalog	format with 6 columns.	The column  widths are 11, 5, 6,
10, 7, and 4.

See also CATALOG.

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

^CHECK_ERROR TRAP_ERROR ERROR_STR ON_ERROR
CHECK_ERROR ===> number

    Returns 1 if one or more  errors  were  trapped  since  the last  TRAP_ERROR
    function call, otherwise  returns 0.  CHECK_ERROR also resets error handling
    back to the default behaviour (stopping in case of errors).
     
See also the note by TRAP_ERROR    

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

^CLOSE_FILE OPEN_INFILE OPEN_OUTFILE READ_FILE WRITE_FILE FILES
CLOSE_FILE function

---->(CLOSE_FILE)---->|number|---->

CLOSE_FILE closes the specified file.  See also OPEN_INFILE and OPEN_OUTFILE.

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

^COLOR RGB HSL
^RGB_COLOR
^HSL_COLOR
^BLACK TM_COLOR_BLACK
^RED TM_COLOR_RED
^GREEN TM_COLOR_GREEN
^YELLOW TM_COLOR_YELLOW
^BLUE TM_COLOR_BLUE
^MAGENTA TM_COLOR_MAGENTA
^CYAN TM_COLOR_CYAN
^WHITE TM_COLOR_WHITE
Color functions

---->+---->(RGB_COLOR)---+----->|red|------>|green|------>|blue|---->+---->
     |			 |					     |
     |			 `-----------------|pnt_3d|----------------->+
     |								     |
     +---->(HSL_COLOR)---+-->|hue|--->|saturation|--->|luminosity|-->+
     |			 |					     |
     |			 `-----------------|pnt_3d|----------------->+
     |								     |
     +---->(RED)---------------------------------------------------->+
     |								     |
     +---->(GREEN)-------------------------------------------------->+
     |								     |
     +---->(YELLOW)------------------------------------------------->+
     |								     |
     +---->(BLUE)--------------------------------------------------->+
     |								     |
     +---->(MAGENTA)------------------------------------------------>+
     |								     |
     +---->(CYAN)--------------------------------------------------->+
     |								     |
     +---->(WHITE)-------------------------------------------------->+
     |								     |
     `---->(BLACK)-------------------------------------------------->'

  red, green, blue, hue, saturation, luminosity:  number (0..1)

If the	option	pnt_3d is used	then the  x,y,z	 values	 represent  the 3 single
numbers red(x),green(y),blue(z) or hue(x),saturation(y),luminosity(z).

The COLOR functions  specify the color attribute used by all commands  belonging
to the same group as the currently  active command.  If the COLOR  functions are
used inside the LINE command for  example,  they  specify the color of all newly
created	 geometric  elements, if they are used during the DIM_LINE  command, all
future	dimension  elements will be affected.  BLACK, RED, GREEN,  YELLOW, BLUE,
MAGENTA, CYAN, and WHITE directly  specify one of the 8 primary	 colors, for any
non-primary  color use RGB_COLOR and specify the red, green, and blue  intensity
(range 0..1) or use HSL_COLOR  and specify the hue,  saturation	 and  luminosity
(range 0..1).

The standard colors have the following rgb and hsl values:

	    r g b     h	 s l
	    -----    -------
 BLACK	  : 0 0 0     x	 x 0	 (x = don't care)
 RED	  : 1 0 0     0	 1 1
 GREEN	  : 0 1 0    2/6 1 1
 YELLOW	  : 1 1 0    1/6 1 1
 BLUE	  : 0 0 1    4/6 1 1
 MAGENTA  : 1 0 1    5/6 1 1
 CYAN	  : 0 1 1    3/6 1 1
 WHITE	  : 1 1 1     x	 0 1

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

^COMMENT
comment

->( { )-->+							+->( } )->
	  |							|
	  +-->| any sequence of char not containing } or *) |-->+
	  |							|
->( (* )->+							+->( *) )->

Comments  are  sequences  of  characters  inserted  into  the  input  stream  as
documentation.	They are ignored by the system.

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

^CONFIGURE_EDITOR EDITOR
CONFIGURE_EDITOR function

->(CONFIGURE_EDITOR)->|command escape chr|->|left margin|->|right margin|->

The  CONFIGURE_EDITOR  function is used to set the configuration of the built-in
screen editor.	It is most useful within the startup file.

Command escape chr is a one character string or string expression specifying the
character which turns into the editor command mode.  Any character except (0..9,
A..Z, a..z, ^, ., !, ?)	 may be used.  The initial  value of the command  escape
character is $.

Left margin and right  margin are numbers  greater than zero and less than a crt
type dependent value (85 for low resolution crts, 128 for high resolution crts).
The initial  values of the margins are 1 and 79.  Margins are used by the adjust
paragraph commands.

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

^CONTROLZ_IS_EOF LOAD
CONTROLZ_IS_EOF function

---->(CONTROLZ_IS_EOF)---->+------>(ON)----->+---->
			   |		     |
			   `------>(OFF)---->'

The  CONTROLZ_IS_EOF  function	allows	the user to chose  whether a  CONTROL  Z
character should be interpreted as an end-of-file  condition or as a normal data
byte.

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

^COPY_FILE COPY_DIRECTORY FILES RECURSIVE
COPY_FILE function

->(COPY_FILE)-|source_name|->+-+-------+-+-+-------+-+-------+->|dest_name|->
			     | |       | | |	   | |	     |
			     | |       | | |	   | |	     |
			     | `<-{1}<-' | `->{3}->' `->{4}->'
			     |		 |
			     |		 |
			     `--->{2}--->'

{1}--->(SELECT)--->|expr|--->

|expr|

--->|item|-------+-------->+------>|value|------>
		 |	   |
		 +->(=)--->+
		 |	   |
		 +->(<>)-->+
		 |	   |
		 +->(>)--->+
		 |	   |
		 +->(<)--->+
		 |	   |
		 +->(>=)-->+
		 |	   |
		 `->(<=)-->'

{2}--->(RECURSIVE)--->

{3}--->(SCREEN)--->

{4}--->(DEL_OLD)--->

The COPY_FILE  function  copies the specified  source files to the  destination.
The file  'hp_catfile'  is  considered  to be a system file and cannot be copied
with this function.

 -- default:  If the dest file	already	 exists,  an error  message  is	 issued,
    otherwise the dest file is created.

 -- DEL_OLD:  If the dest file  already  exists, its old contents are lost.  The
    file 'hp_catfile' cannot be overwritten.

Wildcards can be used in  source_name.	See SELECT (the entry in this help file)
for a description of wildcards.

See  CATALOG  (the entry in this help file) for a  description	of the	'SELECT'
option and see DEFINE_CATALOG for a description of |expr|.

With the option 'RECURSIVE' you can copy files, empty directories and entire non
empty  directories  (that means trees).	 Without the option  'RECURSIVE' you can
only copy files.

The option  'SCREEN'  enters the built-in  editor (see EDITOR) and allows you to
verify the list of selected files and directories; any changes in the screen are
ignored.  With an unsuccessful exit (STOP/BREAK) from the editor you do not copy
anything.

With this  function you cannot copy to device files, block special files or char
special files.

Files with  filenames  less or equal than 60 characters	 can be copied from file
systems	 with short file  names to file	 systems  with long  filenames	and vice
versa.	However, if the filename is longer than 60 characters,	the  destination
has to support long filenames, otherwise, the file cannot be copied.

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

^CREATE_DIRECTORY FILES
CREATE_DIRECTORY function

-->(CREATE_DIRECTORY)--->|directory name|---->

CREATE_DIRECTORY creates a new directory.

If the directory already exists, an error message is issued.  The directory name
is not entered in 'hp_catfile'.  The directory name must follow the rules of the
file system.

WARNING:

Any directory name will  automatically  be truncated if it exceeds 14 characters
in length.

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

^CURRENT_DIRECTORY CD CURRENT DIRECTORY TM_FILE_2 SM_FILE_2
^Meview_set_dir

CURRENT_DIRECTORY function

---->(CURRENT_DIRECTORY)---->|string|---->

CURRENT_DIRECTORY  changes  the	 current  directory  (other  terms  are:  prefix
directory, default directory, MSI) to the directory specified by string.

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

^CURRENT_MENU CURRENT_TMENU 
CURRENT_MENU function

---->(CURRENT_MENU)--->|string|---->

CURRENT_MENU   sets  the  name  of  the  current  screen  menu.  All  supsequent
MENU_LAYOUT  and MENU  functions are assigned to this current  screen menu until
the next CURRENT_MENU call is done.

Later calls of  CURRENT_MENU  with the name  specified  by string  activate  the
specific screen menu.

Note : The system starts up with CURRENT_MENU ""

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

^CURRENT_TMENU CURRENT_MENU 
CURRENT_TMENU function

---->(CURRENT_TMENU)--->|string|---->

CURRENT_TMENU  sets  the  name  of  the  current  tablet  menu.  All  supsequent
MENU_LAYOUT  and MENU  functions are assigned to this current  tablet menu until
the next CURRENT_TMENU call is done.

Later calls of  CURRENT_TMENU  with the name  specified  by string  activate the
specific tablet menu.

Note : The system starts up with CURRENT_TMENU ""

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

^DEFINE MACRO PARAMETER LOCAL END_DEFINE
DEFINE function

   |
   v
(DEFINE)
   |
   v
|macro name|
   |
   v
   +---------------<-----------------,
   |				     |
   v				     |
   +-->(PARAMETER)-->|param. name|-->'
   |
   v
   +----------------<-----------------,
   |				      |
   v				      |
   +-->(LOCAL)-->|local macro name|-->'
   |
   v
   +-----<-------,
   |		 |
   v		 |
   +-->|token|-->'
   |
   v
(END_DEFINE)
   |
   v

DEFINE	(re)defines  the named macro.  See NAME for a description of permissible
macro names.  The same rules apply for names used with PARAMETER and LOCAL.

You invoke a macro without  parameters	by simply giving its name.  The computer
then  evaluates the macro body.	 The body can be any series of tokens that makes
sense in the context  where the macro is used.	It might be a list of  commands,
as in this example:

	DEFINE Quit
	  STORE ALL DEL_OLD 'workfile'
	  EXIT CONFIRM
	END_DEFINE

Or it might be a token that makes sense only in a larger context:

	DEFINE P
	  100,100
	END_DEFINE

A macro body can also invoke other macros, or even (re)define them.

A macro body  should NOT contain  calls to INPUT or TINPUT.  The system will not
complain about such macros, but they will not behave as you expect.

A macro with  parameters is invoked by giving the macro name, then the values of
the named parameters.  These values may be expressions.	 An example:

	definition:

	   DEFINE Double
	   PARAMETER p
	   (PNT_XY p p)
	   END_DEFINE

	invocation:

	   LINE Double 0 Double 100

This example  defines a macro  "Double"	 which takes a number as parameter,  and
whose  evaluation  produces a point with that number as both X and Y coordinate.
Parentheses are required either in the definition or in the invocation,	 because
"PNT_XY p p" is an expression which is being used where a token is required.

A macro with  parameters  is normally  used only  within  files or within  other
macros.	 It is possible to invoke such macros from the	keyboard,  in which case
the system  prompts the user for each  parameter.  But usually, if a macro is to
get input  from the user, it uses the READ  function  instead  of the  parameter
mechanism,  both  because of READ's extra  flexibility,	 and because READ always
reads from the user, regardless of the macro context.

Parameters and names  declared LOCAL are visible only within the current  macro.
All other  names are global.  Parameters  and local names do not  conflict  with
global macros having the same name.

The other functions that define macros are LET and READ.

Between DEFINE and END_DEFINE,	and only there, any of the following  constructs
may be used instead of a simple token:

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

^IF ELSE_IF ELSE END_IF
IF ... ELSE_IF ... ELSE ... END_IF construct

---->(IF)---->|boolean expression|---->+-------->--------+---->,
				       |		 |     |
				       |		 |     |
				       `--<--|token|--<--'     |
							       |
,-------------------------------<------------------------------'
|
v
+-------------------------------<------------------------------------,
|								     |
v								     |
+---->(ELSE_IF)---->|boolean expression|---->+-------->--------+---->'
|					     |		       |
|					     |		       |
|					     `--<--|token|--<--'
v
+---->(ELSE)---->+-------->--------+---->,
|		 |		   |	 |
|		 |		   |	 |
|		 `--<--|token|--<--'	 |
v					 |
+----------------------<-----------------'
|
v
+---->(END_IF)---->

The boolean  expressions  are evaluated in order; if any expression is true, the
tokens associated with it are executed, and this terminates the whole construct.
If a  boolean  expression  evaluates  to 0,  it	 is  considered	 false.	 If  the
evaluation is non-zero, it is considered true.	(Note that a boolean  expression
can be constructed  with numeric or string  expressions	 separated by relational
operators, as well as with a numeric expression.)

The last ELSE part handles the 'none of the above' or default case where none of
the other  conditions was satisfied.  Sometimes	 there is no explicit action for
the  default; in that case the	trailing  ELSE can be omitted, or it may be used
for error checking to catch an 'impossible' condition.

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

^LOOP EXIT_IF END_LOOP
LOOP ... EXIT_IF ... END_LOOP construct

	      ,-----------<--------------<------------,
	      |					      |
--->(LOOP)--->+---------------|token|---------------->+--->(END_LOOP)--->
	      |					      |
	      +----(EXIT_IF)-->|boolean_expression|-->+
	      |					      |
	      `------------>--------------------------'

This construct defines a loop which is repeated until the boolean  expression in
an EXIT_IF clause evaluates to be logical true (evaluates to a non-zero	 value).
Any number of EXIT_IF  clauses may be placed within the construct to escape from
the loop.  The only  restriction  upon the  placement of the EXIT_IF  clauses is
that they must not be part of any other	 construct  which is nested  within  the
LOOP ...  END_LOOP construct.

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

^REPEAT UNTIL
REPEAT ... UNTIL construct

--->(REPEAT)--->+------->-------+->--(UNTIL)->--|boolean expression|--->
		|		|
		|		|
		`--<-|token|--<-'

This construct defines a loop which is repeated until the boolean  expression in
the UNTIL clause evaluates to be logical true (evaluates to a non-zero value).

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

^WHILE END_WHILE
WHILE ... END_WHILE construct

--->(WHILE)--->|boolean expression|--->+------->-------+->-(END_WHILE)--->
				       |	       |
				       |	       |
				       `--<-|token|--<-'

This  construct	 defines  a loop  which	 is  executed  as  long	 as the	 boolean
expression  in the WHILE  clause  evaluates to be logical true	(evaluates  to a
non-zero value).

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

^DEFINE_CATALOG CATALOG DEFINE FILE_NAME PHYS_NAME FILE_SIZE CREATE_DATE
^DEFINE_CATALOG MODIFY_DATE ACCESS_DATE NUM_ACCESS FILE_TYPE PROG_NAME
^DEFINE_CATALOG PROG_REV FILE_DESC

DEFINE_CATALOG function

		      ,-------->---------,
		      |			 |
		      |			 |
-->(DEFINE_CATALOG)---+-->|display_text|-+->|item_name|-->,
							  |
		       ,-----------------<----------------'
		       |
		       `-->|row|---->|column|------->

DEFINE_CATALOG defines what information is to be printed by CATALOG.  The number
of columns,  their width, and their  assignment	 to rows must  already have been
specified with	CATALOG_LAYOUT.	 DEFINE_CATALOG	 tells CATALOG how to fill these
fields.

The display text (a string) is the text printed at the top of the listing  above
the field  with the given row and  column  number.  Both row and  column  number
refer to the format for a single entry determined by CATALOG_LAYOUT,  and not to
row and column numbers of the catalog listing  itself.	The item name tells what
should be printed in the  specified  field.  Item names are strings, and must be
one of the following:

		FILE_NAME
		PHYS_NAME
		FILE_SIZE
		CREATE_DATE
		MODIFY_DATE
		ACCESS_DATE
		NUM_ACCESS
		FILE_TYPE
		PROG_NAME
		PROG_REV
		FILE_DESC

If the display text is omitted, the item name is used as the display text.

FILE_NAME  is the name	given by the user  when the file was  created.

PHYS_NAME is the name of the file used by the host operating  system.  These are
normally the same, but can be different	 if the user creates a file using a name
not acceptable to the host.  Within ME Series programs this difference should be
invisible,  but when you look at the  directory	 from  another	program,  you of
course see the physical name.

FILE_SIZE is the size of the file in bytes.

CREATE_DATE,  MODIFY_DATE,  and ACCESS_DATE tell when the file was created, last
modified, and last accessed, respectively.  The output is in the form '01-Jan-85
06:35:22'.

NUM_ACCESS  tells how many  times the file has been  accessed.	When the file is
created, NUM_ACCESS is 0.

FILE_TYPE  gives  the  type of	file,  as  seen	 by the	 operating  system.  The
possibilities are:

	Block		Block special file
	Char		Character special file
	Dir		Directory
	Fifo		Fifo
	Netw		Network
	Reg		Regular file
	Srm		Shared Resource Manager
	?		Anything else

PROG_NAME and PROG_REV give the name and revision of the program that  generated
the file.

FILE_DESC tells the type of information in the file.  The possibilities are:

	Bitmap		from BITMAP_TO_FILE
	Catalog		from CATALOG
	Data		from OPEN_OUTFILE
	Echo		from ECHO
	Env		from SAVE_ENVIRONMENT
	Font.BI		from STORE_FONT
	Font.IL		from SAVE_FONT
	Gdump		from DUMP_SCREEN
	HPGL		from PLOT
	HPGL2		from PLOT
	log		from LOAD and  STORE of	 binary	 and MI files in case of
			     errors
	Macro.BI	from STORE_MACRO
	Macro.IL	from SAVE_MACRO
	Menu		from SAVE_MENU
	Model.IL	from SAVE
	Model.MI	from STORE and STORE MI
	Part.lst	from PARTS_LIST
	Query		from QUERY,  STRUCTURE,	 WHERE_USED (ME Data  Management
			     System)
	Sys.cat		additional catalog information (hp_catfile)
	Techo		from TECHO
	Text		from EDIT_FILE
	Tmenu		from SAVE_TMENU
	Trace		from TRACE
	Viewport	from SAVE_VIEWPORT

================================================================================
^DEFINE_KEY DEFINE KEY FUNCTIONKEY SOFTKEY CHARACTERS TEXT FONT CHR DIAMETER
^DEFINE_KEY DEGREE PLUSMINUS

DEFINE_KEY function

---->(DEFINE_KEY)---->|number|---->|string|---->

DEFINE_KEY  defines a Special Function Key (other terms are Soft Key or Function
Key).  Number is the key number and must be in the range from 1 to 8.  String is
the string  constant or string	expression  which is to be substituted	for each
activation of the Special Function Key.

A common use for this  function	 is to define the special  function  keys as the
degree, diameter and plus/minus	 signs.	 These three  characters are supplied in
most text fonts as the following characters:

  degree       (#14"0"#15)
  diameter     (#14"1"#15)
  plus/minus   (#14"2"#15)

Therefore  to  define  the  special  function  keys  f1, f2 and f3 as the  three
characters, you must enter:

  DEFINE_KEY 1 (#14"0"#15)
  DEFINE_KEY 2 (#14"1"#15)
  DEFINE_KEY 3 (#14"2"#15)

You can now press  the	respective  key each  time you	require	 the  respective
dimension  symbol  when adding text to your  drawing  when using the SCREEN text
option .  See the TEXT command for more details on the special characters.

================================================================================
^DELETE_MACRO DELETE MACRO

DELETE_MACRO function

---->(DELETE_MACRO)---->+---->|macro name|---->+---->
			|		       |
			`---->(ALL)------------'

DELETE_MACRO deletes the specified macro or ALL macros.

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

^DELETE_MENU DELETE MENU

DELETE_MENU function

---->(DELETE_MENU)---->

DELETE_MENU deletes the screen menu definition.	 As this function is mainly used
in  personality	 macros it does not  automatically  remove the menu from the crt
screen.

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

^DELETE_TMENU DELETE TABLET MENU

DELETE_TMENU function

-->(DELETE_TMENU)-->

DELETE_TMENU deletes the tablet menu definition.

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

^DISPLAY
DISPLAY function

---->(DISPLAY)---->|token|---->

DISPLAY	 evaluates a token,  displays  the result in the display  line, and then
waits for the user to press any key or to  digitize  any point	with the  tablet
stylus.	 Token	may be a  number, a point, a  string,  a macro	name, a name, an
expression, ...

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

^DISPLAY_NO_WAIT
DISPLAY_NO_WAIT function

---->(DISPLAY_NO_WAIT)---->|token|---->

DISPLAY_NO_WAIT	 evaluates a token and displays the result in the display  line.
It  does  not  wait  for any  user  action,  and the  displayed	 value	will  be
overwritten  by the prompt of the next input  request.	Token may be a number, a
point, a string, a macro name, a name, an expression, ...

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

^DUMP_SCREEN PORT BOX DUMP_SCREEN_DEFAULTS PRINT OpenSpool
^DUMP_SCREEN LASERJET PAINTJET
^Dump_screen_box
^Dump_screen_port
^Dump_screen_screen
^Crprt
^Rprt
^View_screen_dump
^DUMP_SCREEN Set_sys_dump_screen_background Set_sys_dump_screen_color
^DUMP_SCREEN Dump_screen_defaults_color Dump_screen_defaults_bw

DUMP_SCREEN function

-->(DUMP_SCREEN)--->,
		    |
   ,<---------------'
   |
   `-+---------------------------->+->-+-------------->+->|destination|-->
     |				   |   |	       |
     +-->(PORT)------>|pnt|------->+   +-->(DEL_OLD)-->+
     |				   |   |	       |
     `-->(BOX)-->|pnt1|-->|pnt2|-->'   `-->(APPEND)--->'

DUMP_SCREEN  writes the contents of the graphics  screen to the specified  file.
If the	dump_screen  defaults  are not changed, the system will used the default
power-up settings to write the specified file (see DUMP_SCREEN_DEFAULTS).

 -- default:	 If no option is given, the  complete  screen is  printed to the
		 specified  destination.  If the file  specified  already exists
		 and is not a special  device file, an error  message is issued,
		 otherwise a new file is created.

 -- PORT:        With this  option you must select the port to be  printed.  The
		 system  will  accept a pick in a  partially  covered  port  for
		 identification.

 -- BOX:         With this option you must  indicate  the two  corners of a box.
		 The  contents  of  the  box  will  be  sent  to  the  specified
		 destination.

 -- DEL_OLD:	 If the file  specified	 already  exists,  its old  contents  is
		 overwritten.

 -- APPEND:	 If the file specified	already exists, the information	 will be
		 appended  to the  end of the  file,  otherwise	 a new	file  is
		 created.

 -- destination: String specifying the destination file.
		 A legal  destination  name may start with the HP-UX pipe symbol
		 '|' to send the print data  directly to a HP-UX  process.  This
		 provides a simple way to transfer  the print data to a spooler.
		 example:  '| np -q Paintdump' will send the print data directly
		 to  the  HP  OpenSpool/UX   spooler  with  a  configured  queue
		 Paintdump.  (See HP OpenSpool/UX)


EXAMPLES:   DUMP_SCREEN  '/dev/rlp'  the  complete  screen  is sent to the local
	    printer.

	    DUMP_SCREEN  PORT  50,50  '|lp -s -onb  -oraw  -dlaserjet'  the port
	    containing  the  device  coordinates  50,50 is dumped  to a  spooled
	    printer.

	    DUMP_SCREEN BOX 0,0 150,300 '/tmp/dump_file' the contents of the box
	    0,0 150,300 is dumped to a regular file.

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

^DUMP_SCREEN_DEFAULTS IMAGE_FIT DUMP_SCREEN SCREEN_DUMP 
^DUMP_SCREEN_DEFAULTS defaults PRINT pipe lp np OpenSpool
^DUMP_SCREEN LASERJET PAINTJET
^DUMP_SCREEN Dump_screen_box Dump_screen_port Dump_screen_screen
^Crprt
^Rprt
^Set_sys_dump_screen_background
^Set_sys_dump_screen_color
^Dump_screen_bw
^Dump_screen_color
^Dump_screen_defaults_color 
^Dump_screen_defaults_bw

DUMP_SCREEN_DEFAULTS function

---->(DUMP_SCREEN_DEFAULTS)--->,
			       |
      ,<-----------------------'
      |
      `->+-->(ON)--->+-->+-->(ON)--->+---+--->|resolution number|--->,
	 |	     |	 |	     |   |			     |
	 `-->(OFF)-->'	 `-->(OFF)-->'   `------->(IMAGE_FIT)------->+        
							             |
	 ,----<--------------------<------------------<--------------'
	 |
	 `---->|length number|----->|width number|------------->

DUMP_SCREEN_DEFAULTS  sets the	parameters  for the  DUMP_SCREEN  function.  The
power-up settings are:

DUMP_SCREEN_DEFAULTS OFF OFF 106 10.0 6.5

 -- COLOR:	 (ON)  (OFF) Use ON to obtain a colored	 printout  of the entire
		 screen.  Note:	 you must  select OFF if you do not have a color
		 printer connected to your system.

 -- BACKGROUND:  (ON) (OFF) If the background color is BLACK and you select OFF,
		 the background color will not be sent to the printer.

 -- RESOLUTION:	 |resolution number|
		 Number of dots per inch.  The default setting is 106.
		   Thinkjet:	   96 dots per inch
		   Paintjet:	  180 dots per inch
		   Deskjet:	  300 dots per inch
		   Laserjet:	  300 dots per inch

 -- IMAGE_FIT:   (IMAGE_FIT)  If you use this  option, the output  image will be
		 scaled for the best fit on the size of media  defined  by paper
		 length and paper width.

		 WARNING:  The  IMAGE_FIT  option  will only work with  printers
		 which support these feature.  Currently is this feature only on
		 the Paintjet XL available.

 -- PAPER:	 |length number|  |width number|
		 Length and width of the paper sheet in inch.
		 For example:
		   Thinkjet:      	        length = 10	 width = 6.5  
		   Laserjet:    (A4 size)	length = 10.5	 width = 8.0 
		   Deskjet:     (A4 size)	length = 10.5	 width = 8.0 
		   Paintjet:    (A4 size)	length = 10.5	 width = 8.0
		   Paintjet XL: (A3 size)	length = 16.0	 width = 10.5

		 So You can set the default Width and Length higher than we have
		 done in the PAPER  block.  But  actually  we only  support  the
		 settings above.

If SCREEN DUMP is invoked from the plot menu the  settings for colored  and/or
black and white printer are taken from in the file "defaults".
Adapt the macros Crprt and Rprt for the DUMP_SCREEN  destination  and the macros
Dump_screen_defaults_color and Dump_screen_defaults_bw for the DEFAULTS.

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

^ECHO
ECHO function

---->(ECHO)---->+------------------>+---->+---->|filename|--->+---->
		|		    |	  |		      |
		+---->(DEL_OLD)---->+	  `------>(OFF)------>'
		|		    |
		`---->(APPEND)----->'

ECHO opens or closes the ECHO file.  If an ECHO file is open, a copy of all user
input is written there.

With OFF, the current  ECHO file is closed.  With a filename,  the current  ECHO
file is closed  and a new one with the given name is opened.  The  filename  may
specify a disc file or a device file.

 -- default:  If the file specified  already exists, an error message is issued,
	      otherwise a new file is created.

 -- DEL_OLD:  If the file specified already exists, its old contents are lost.

 -- APPEND:   If the file  specified  already  exists, the  information	 will be
	      appended to the end of the file, otherwise a new file is created.

The ECHO file is in a form  readable by INPUT.	However,  INPUTting an ECHO file
does not as a rule produce the same  results as the actions  that  produced  the
ECHO  file.  The  primary  reason is that  points  are	represented  in the file
without	 any  indication  of the  viewport in which they were  digitized.  Since
digitized  points are transformed by catching,	while points read with INPUT are
not, the effect is  different.	Another	 reason is that user  syntax  errors are
written	 to the ECHO file  along  with	correct	 input.	 If a file with a syntax
error is later	read by INPUT, the syntax  error will cause the rest of the file
to be discarded.

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

^EDITOR CONFIGURE_EDITOR SCREEN MARKERS EDIT_PORT
^AC AF AJ C D H L M O R SE SL SM SR W RECALL_BUFFER
EDITOR

This section describes the built-in screen editor, invoked by many commands.

  MARKERS:
  ^				    first line
  .				    current line
  !				    last line
  0..9				    user defined

  COMMANDS:
  marker			     go to marked line
  'string'			     go to next occurrence of 'string'
  ? ['keyword']			     display help
  AC				     adjust center paragraph
  AF				     adjust fill paragraph
  AJ				     adjust justify paragraph
  C marker1 marker2		     copy text block
  D marker			     delete text block
  H ['keyword']			     display help
  L 'filename'			     load 'filename'
  M marker1 marker2		     move text block
  N				     repeat last 'string' search
  O 'filename' [marker]		     (over)write 'filename'
  R [V] ['string1' ['string2']] [marker]
				     replace 'string1' with 'string2'
  SE 'character'		     set command escape character
  SL				     set left margin
  SM 0..9			     set marker
  SR				     set right margin
  W 'filename' [marker]		     write 'filename'

To exit the editor  normally,  press  CONTROL D.  To abort the editing  session,
producing an unsuccessful exit, press ESC or BREAK.
Attention  all  compressed  binary MI file, or all other  binary  files, will be
damaged when using the editor on this files and pressing CONTROL D to store this
files.

To add or change  text,  move the  cursor to the right  place and type.  You can
also use the keys labeled INS LN, DEL LN, and so on.

To enter an editor command, type the command escape character, normally $.  This
puts the  cursor on the  command  input  line,  ready to accept a  command.  The
commands are described in the following paragraphs.

A marker alone	positions  the cursor at column 1 on the marked line.  The three
markers ^, ., and !  mark the  first,  current,	 and last  lines,  respectively.
They are  always  defined,  and	 cannot be  changed.  The digits 0 to 9 are user
markers.  They are  undefined  when you enter the screen  editor, but may be set
with the Set  Marker  command.	If a line with a user  marker is  deleted,  that
marker becomes undefined.

A  string  alone  positions  the  cursor  at the  first	 character  of the  next
occurrence  of the string.  Strings must be  delimited	by any non  alphanumeric
character ( ^ .	 !  ?  and the command	escape	character  may not be used).  In
this document single quotes are used to delimit strings.

The ?  command displays the manual section  describing the given keyword.  If no
keyword is specified,  then the manual section	describing  the screen editor is
displayed.  Leaving the manual causes the editor to resume execution.

The Adjust Center  command  centers each line of the current  paragraph	 between
left and right	margins.  Paragraphs  are  sections of text  delimited	by blank
lines.

The Adjust Fill	 command  fills the  current  paragraph	 between  left and right
margins, moving words between lines as necessary.  It provides a smooth left and
a ragged right margin.	The  indentation  of the first line of the  paragraph is
not changed.  Paragraphs are sections of text delimited by blank lines.

The Adjust  Justify  command first does the same as the Adjust Fill command.  It
then uses an  intelligent  algorithm to insert	blanks until all lines extend to
the right margin.  Paragraphs are sections of text delimited by blank lines.

The Copy command  copies the text block from and  including  the current line to
and including  the line marked by marker1.  The copy is inserted  after the line
marked by marker2.

The Delete command deletes the text block from and including the current line to
and including the line marked by marker.

The Help command is exactly the same as the ?  command.

The Load command inserts the text stored in the specified file after the current
line.

The Move command moves the text block from and including the current line to and
including the line marked by marker1.  The new location is after the line marked
by marker2.  Source and destination must not overlap.

The Next command repeats the last string search.

The Overwrite  command writes the text block from and including the current line
to and	including  the line  marked  by	 marker	 to the	 specified  file.  If no
destination  marker is specified, then the whole file is written,  regardless of
where the cursor is.  Any old file with the same name is lost.

The Replace command  replaces  'string1' with 'string2'.  'V' enables the Verify
option.	 If Verify is on, you can  choose  whether  or not to make a  particular
replacement.  'string1'	 defaults  to the last	used  search  string.  'string2'
defaults to the last used  'string2'.  If no  destination  marker is  specified,
then only a single replacement is done, otherwise all strings from the cursor up
to the end of the marked line are replaced.

The Set Escape	command	 redefines the command escape  character.  Any character
except	(0..9,	A..Z,  a..z, ^, ., !, ?)  may be used.	The new	 command  escape
character  stays in effect until the session is terminated.  Termination  of the
screen	editor only does not cause the command	escape	character to be changed.
The initial value of the command escape character (at system startup time) is $.

The Set Left margin command sets the left margin to the current cursor position.
Margins are used by the adjust paragraph commands.

The Set Marker command sets the specified marker to the current line.

The Set Right  margin  command	sets the  right	 margin	 to the	 current  cursor
position.  Margins are used by the adjust paragraph commands.

The Write command is exactly like the Overwrite command, except that it does not
allow you to overwrite an existing file.

The  command  escape  character	 may be used as	 delimiter  between  two  editor
commands given on the same line to resolve ambiguities.	 Example:

      W 'myfile' $ 1

This writes the whole file to 'myfile' and then positions the cursor on the line
marked by marker 1.

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

^EDIT_ENVIRONMENT ENVIRONMENT TM_SET_UP SM_SET_UP
EDIT_ENVIRONMENT function

---->(EDIT_ENVIRONMENT)---->

EDIT_ENVIRONMENT  allows  you to edit a list  of  commands  that  establish  the
current	 environment  (dimension  defaults,  units,  hatch  pattern,  etc.).  An
unsuccessful  exit (ESC) leaves the  environment  unchanged.  A successful  exit
(CTRL D) causes the equivalent of an INPUT of the edited list.

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

^EDIT_FILE FILES
EDIT_FILE function

---->(EDIT_FILE)---->|filename|--->

EDIT_FILE  allows you to edit the named text file with the built-in  editor (see
EDITOR).

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

^EDIT_MACRO MACRO
EDIT_MACRO function

---->(EDIT_MACRO)---->+---->|macro name|---->+---->
		      |			     |
		      `---->(ALL)------------'

EDIT_MACRO  allows the named macro or all macros to be edited with the	built-in
editor (see EDITOR).

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

^EDIT_PORT EDITOR
EDIT_PORT function

--->(EDIT_PORT)---.
		  |
  .---------------'
  |
  |
  +->|background color|-+-|border color|-+-|text color|-+->|cursor color|-.
  |			|		 |		|		  |
  v			v		 v		v		  |
  +<--------------------+<---------------+<-------------+<----------------'
  |
  |
  +--->|border width|---+--->|inner border width|---.
  |			|			    |
  v			v			    |
  +<--------------------+<--------------------------'
  |
  |
  `--->|corner point|--->|opposite corner point|--->

The EDIT_PORT  function defines the viewport used by the built-in screen editor.
By making the  EDIT_PORT  smaller  than the screen  size much time is saved when
starting the editor.

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

^END TM_END
^Meview_end

END command

---->(END)---->

END terminates	the current  command or function.  If you are in a function that
has  interrupted  another  function  or	 command,  it is only  this most  recent
function that is terminated.

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

^ENTER
ENTER function

---->(ENTER)---->|token|---->

ENTER  evaluates a token and puts the result of the  evaluation	 in the keyboard
entry line for further editing and usage.  Token may be a number, a point (which
is not	caught,	 even if it comes  from the  tablet or mouse), a string, a macro
name, a name, an expression, ...

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

^ERROR_LOG
ERROR_LOG function

---->(ERROR_LOG)------>+------>(ON)----------->+---->
		       |		       |
		       +------>(OFF)---------->+
		       |		       |
		       +------>(CLEAR)-------->+
		       |		       |
		       +----->-|number|->----->+
		       |		       |
		       +---->|output_spec|---->+

The ERROR_LOG facility saves warnings and error messages generated by the system
in internal memory.  Purpose of this facility is to allow the system to continue
operation if a warning or a non-severe  error is issued by a part of the system.
However,  severe errors will be displayed  immediately and the system will abort
execution of any command or macro.

Options:

	ON		enables saving of warnings / error messaged (default)

	OFF		disables saving of warnings / error messages

	CLEAR           clears the internal error log memory

	number          defines the maximum  number of lines that are saved.  If
			more  messages  are   generated,   the  oldest  will  be
			overwritten.  A positive  number  will  enable the error
			log, otherwise the log will be disabled, and a following
			ERROR_LOG  ON will have no  effect,  until the number of
			lines is set to a positive value again.

	output_spec     outputs the error log stored in memory to the  specified
			destination.

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

^ERROR_STR CHECK_ERROR TRAP_ERROR ON_ERROR
ERROR_STR ===> string

    Returns the first error  message  issued by the system after error  trapping
    was enabled by TRAP_ERROR.

    Note :   The returned error message is  multilingual!

See also the note by TRAP_ERROR

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

^EXIT CONFIRM TM_CONFIRM ABORT
^Meview_exit

EXIT command

---->(EXIT)---->(CONFIRM)---->

The EXIT command terminates the session, returning control to the host operating
system.	 It must be CONFIRMed to prevent an accidental exit.

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

^EXPRESSIONS
^EXPRESSION
expressions

An expression  is a  description  of  operations  to be performed on  constants,
variables,  or	functions.  An expression  has a type and, after  evaluation,  a
value.	An expression  may be used anywhere in the command  syntax  instead of a
simple token if it is enclosed in parentheses.

Expressions are evaluated by following rules of precedence:

  (  )				       highest
  any other operator/function		  ^
  ^  **					  |
  *  /	DIV  MOD  AND			  |
  +  -	OR  EXOR			  |
  =  <>	 >  <  >=  <=			lowest

Operations of same precedence are evaluated left to right.

Built-in functions and operators:

^(
(expression) ===> token

    An expression has to be enclosed in	 parentheses to have the same meaning as
    a  simple  token.  Parentheses  may	 also be used  to  force  any  order  of
    evaluation.

^*
number * number ===> number
number * point ===> point
number * point_3d ===> point_3d
point * number ===> point
point_3d * number ===> point_3d

    Multiplication of numbers, scaling of points (vectors).

^+
+ token ===> token
number + number ===> number
point + point ===> point
point_3d + point_3d ===> point_3d
string + string ===> string

    Identity  and addition for number and points  (vectors),  concatenation  for
    strings.

^-
- number ===> number
- point ===> point
- point_3d ===> point_3d
number - number ===> number
point - point ===> point
point_3d - point_3d ===> point_3d

    Negation and subtraction.

^/
number / number ===> number
point / number ===> point
point_3d / number ===> point_3d

    Division of numbers, scaling of points (vectors).

^<
number < number ===> number
string < string ===> number

    Comparison for less than.  Returns 1 if true and 0 if false.

^<=
number <= number ===> number
string <= string ===> number

    Comparison for less than or equal to.  Returns 1 if true and 0 if false.

^<>
token <> token ===> number

    Comparison for inequality.	Returns 1 if true and 0 if false.

^=
token = token ===> number

    Comparison for equality.  Returns 1 if true and 0 if false.

^>
number > number ===> number
string > string ===> number

    Comparison for greater than.  Returns 1 if true and 0 if false.

^>=
number >= number ===> number
string >= string ===> number

    Comparison for greater than or equal to.  Returns 1 if true and 0 if false.

^^ **
number ^ number ===> number
number ** number ===> number

    Exponentiation.  The first number must be positive.

^ABS
ABS number ===> number
ABS point ===> number
ABS point_3d ===> number

    Returns  the  absolute  value of the number	 argument  or the  length of the
    vector from the origin to the argument point.

^AND
number AND number ===> number

    Returns 1 if both arguments are different from 0, otherwise returns 0.

^ANG
ANG point ===> number

    Returns the angle  between the X axis and the vector  from the origin to the
    argument point.  As always, the current angle units are used.

^ARCCOS
ARCCOS number ===> number

    Returns  the  principal  value of the angle which has a cosine  equal to the
    argument.  As always, the current angle units are used.

^ARCSIN
ARCSIN number ===> number

    Returns  the  principal  value of the  angle  which has a sine  equal to the
    argument.  As always, the current angle units are used.

^ARCTAN
ARCTAN number ===> number

    Returns the	 principal  value of the angle which has a tangent  equal to the
    argument.  As always, the current angle units are used.

^CHR
CHR number ===> string

    Returns a single character	string which has an ordinal value defined by the
    argument.

^COS
COS number ===> number

    Returns the cosine of the argument.	 As always, the current	 angle units are
    used.

^DATE TIME
DATE ===> string

    Returns date and time in the following format: '26-Oct-85 10:26:58'.

^DIV
number DIV number ===> number

    Returns the integer portion of the quotient of the dividend and the divisor.

^EXOR
number EXOR number ===> number

    Returns 1 if one and only one argument equals 0, otherwise returns 0.

^EXP
EXP number ===> number

    Returns e (2.718...) raised to the power of the argument.

^FALSE
FALSE ===> number

    Returns 0.

^FRACT
FRACT number ===> number

    Returns a number greater than or equal to zero and less than 1, representing
    the 'fractional  part' of the value of its argument.  For all X, X = INT X +
    FRACT X

^INQ
INQ <inq_index> ===> number		 (inq_index =	1 -    9)
		     point		 (inq_index = 101 -  109)
		     point_3d		 (inq_index = 201 -  209)
		     string		 (inq_index = 301 -  309)
		     command		 (inq_index = 401 -  409)
		     function		 (inq_index = 501 -  509)
		     option		 (inq_index = 601 -  609)
		     arithmetic function (inq_index = 801 -  809)

    inq_index:	number, range see above

    INQ returns an element of a built-in  system array.	 The possible values for
    the	 index	and the	 resulting  types  are	shown in the  above  table.  For
    example, (INQ 5) is a number and (INQ 105) is a point.

    INQ is useful only in connection with a function that writes  something into
    the array; you call one of these  functions	 first, then use INQ to retrieve
    the information.  Once the information has been written, it can be retrieved
    any	 number of times (as long as you don't call a function	that  overwrites
    it, of  course).  It is an error to attempt to retrieve  information  from a
    slot  that has not	been  written.	INQ is	intended  for use  primarily  in
    macros.

    The	 action	 of these  functions  (with  respect  to the  system  array)  is
    described  below; the action of INQ_ENV and INQ_ELEM is  described	in their
    individual	sections.  Each description gives an array index, and tells what
    information is written at this index.

implicit value settings:
-----------------------

+-------------------------------------------------------------------------+
| function/command   | <inq_index> | result				  |
+--------------------+-------------+--------------------------------------|
|MEASURE_COORDINATE  |	    1	   | 101 (implicit inq code)		  |
|		     |	  101	   | point				  |
+--------------------+-------------+--------------------------------------|
| MEASURE_DISTANCE   |	    1	   | 102 (implicit inq code)		  |
|		     |	    2	   | 0 distance measure mode direct	  |
|		     |		   | 1 distance measure mode horizontal	  |
|		     |		   | 2 distance measure mode vertical	  |
|		     |	    3	   | last measured distance		  |
+--------------------+-------------+--------------------------------------|
|  MEASURE_LENGTH    |	    1	   | 103 (implicit inq code)		  |
|		     |	    2	   | last measured length		  |
+--------------------+-------------+--------------------------------------|
|   MEASURE_ANGLE    |	    1	   | 104 (implicit inq code)		  |
|		     |	    2	   | last measured angle		  |
+--------------------+-------------+--------------------------------------|
|   MEASURE_AREA     |	    1	   | 105 (implicit inq code)		  |
|		     |	    2	   | last measured area			  |
+--------------------+-------------+--------------------------------------|
|   MEASURE_RADIUS   |	    1	   | 106 (implicit inq code)		  |
|		     |	    2	   | last measured radius		  |
+--------------------+-------------+--------------------------------------|
|   READ	     |	    1	   | 110 (implicit inq code)		  |
|		     |	    2	   | digitized viewport (0..16)		  |
|		     |	    301	   | name of digitized viewport 	  |
+-------------------------------------------------------------------------+

^INT
INT number ===> number
INT point ===> point
INT point_3d ===> point_3d

    Returns the greatest integer which is less than or equal to the value of its
    argument.  For all X, X = INT X + FRACT X

^LEN
LEN string ===> number
LEN point ===> number
LEN point_3d ===> number

    Returns  the length of a string or the length of the vector	 from the origin
    to the argument point.

^LG
LG number ===> number

    Returns the decimal logarithm (base 10) of its argument.

^LN
LN number ===> number

    Returns the natural logarithm (base e) of its argument.

^LWC
LWC string ===> string

    Returns a string  formed by replacing any  uppercase  characters  with their
    corresponding lowercase character.

^MIRR MIRROR
MIRR point number ===> point

    Returns the point (vector)	mirrored about a virtual mirror line.  The angle
    between the X axis and this virtual	 mirror line is specified by number.  As
    always, the current angle units are used.

^MOD
number MOD number ===> number

    Returns the remainder of a division.  For all X, X MOD Y = X-(X DIV Y)*Y.

^NOT
NOT number ===> number

    Returns 1 if the argument equals 0, and otherwise returns 0.

^NUM
NUM string ===> number

    Returns the ordinal value of the first character in the argument string.

^OR
number OR number ===> number

    Returns 1 if one or both  arguments are different from 0, otherwise	 returns
    0.

^PI
PI ===> number

    Returns an approximate value for pi (~3.14159265358979).

^PNT_RA
PNT_RA number number ===> point

    Returns a 2d point	(vector) with a length defined by the first and an angle
    to the X axis defined by the second argument.

^PNT_XY
PNT_XY number number ===> point

    Returns a 2d point	(vector) with a x-coordinate  defined by the first and a
    y-coordinate defined by the second argument.

^PNT_XYZ
PNT_XYZ number number number ===> point_3d

    Returns a 3d point	(vector)  with an  x-coordinate	 defined by the first, a
    y-coordinate defined by the second, and a z-coordinate  defined by the third
    argument.

^POS
POS string string ===> number

    Returns the first position of a substring (second  argument) within a string
    (first  argument).	If the substring is not contained in the string, returns
    0.

^RND
RND ===> number

    Returns a  pseudo-random  number greater than or equal to zero and less than
    1.

^ROT ROTATE
ROT point number ===> point

    Returns  the point	(vector)  rotated  about the  origin  (0,0) by the given
    angle.  As always, the current angle units are used.

^ROUND
ROUND number ===> number
ROUND point ===> point
ROUND point_3d ===> point_3d

    Returns the argument value rounded to the nearest integer value.

^RPT
RPT string number ===> string

    Returns a string containing number copies of the string argument.

^SGN
SGN number ===> number

    Returns -1 if the argument is negative, 0 if the argument is 0, and 1 if the
    argument is positive.

^SIN
SIN number ===> number

    Returns the sine of the argument.  The current angle units are used.

^SNID
SNID ===> string

    Returns the product number and the serial number of a HPHIL security  device
    or of the computer if no HPHIL security device is present.	If there is more
    than one  security	device,	 SNID  returns the number of the last one on the
    loop.

^SQR
SQR number ===> number

    Returns the argument value multiplied by itself.

^SQRT
SQRT number ===> number

    Returns the square root of its argument.

^STR
STR token ===> string

    Returns in a string the ASCII  representation  of the argument.  The reverse
    function of STR is VAL.

^SUBSTR
SUBSTR string number number ===> string

    Returns a substring of a string (first  argument),	starting at the position
    defined  by the  second  argument  and having a length  defined by the third
    argument.  The first  character is at position 1.  It is an error  (beep) if
    either number is out of range.

^TAN
TAN number ===> number

    Returns the tangent of the argument.  As always, the current angle units are
    used.

^TIME DATE
TIME ===> number

    Returns the number of seconds since midnight.

^TRIM
TRIM string ===> string

    Returns a string  formed by stripping  all leading and trailing  blanks from
    the argument.

^TRUE
TRUE ===> number

    Returns 1.

^TRUNC
TRUNC number ===> number
TRUNC point ===> point
TRUNC point_3d ===> point_3d

    Returns the argument value truncated to its integer part.  TRUNC -3.7 is -3.

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

^TYPE
TYPE token ===> qualifier

    Returns the type of the token specified. The possible return values are:

	COMMAND
	FUNCTION
	QUALIFIER
	PSEUDO_COMMAND
	SYMBOL
	STRING
	NUMBER
	PNT
	PNT3
	ILLEGAL


Note:

It is not  possible  to ask for the type of a macro or an  arithmetic  function.
The following example describes the problems that will occur if you try to enter
a TYPE for a macro or an arithmetic function.

      Example:

	DEFINE A 1,1 END_DEFINE
	  or
	LET A 1,1
	  define exactly the same A

DISPLAY  (TYPE  A)  returns  PNT in both  cases  because  the  macro  A will  be
evaluated.  If the macro A contains  more than one  "value",  TYPE A will return
the wrong result because the system  evaluates the macro and produces a sequence
of items.

      Example :

	DEFINE A LINE 0,0 10,10 END_DEFINE

Whenever A is typed, it is  evaluated  to "LINE 0,0 10,10" as  expected , but in
the case of DISPLAY (TYPE A) the macro A will also be evaluated and will produce
a DISPLAY (TYPE LINE 0,0 10,10)  sequence that, of course, will fail because the
system expects a closing  bracket after the LINE command.  As the macro language
does NOT supply a mechanism  to  suppress  macro  evaluation,  every  macro will
always be evaluated as mentioned  above.  Therefore the TYPE function only makes
sense if it is applied to macros that represent a single value (e.g.  a point, a
string etc.)

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

^UPC
UPC string ===> string

    Returns  a string  formed  by  replacing  each  lowercase  character  by its
    corresponding uppercase character.

^VAL
VAL string ===> token

    Returns  the  token	 whose	ASCII  representation  is given by  string.  The
    reverse function of VAL is STR.

^X_OF
X_OF point ===> number
X_OF point_3d ===> number

    Returns the x-coordinate of the argument point (vector).

^Y_OF
Y_OF point ===> number
Y_OF point_3d ===> number

    Returns the y-coordinate of the argument point (vector).

^Z_OF
Z_OF point_3d ===> number

    Returns the z-coordinate of the argument point (vector).

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

^FILE_NAME
File name

     ---->|string|---->

The file  specification  (named  |file_name|  in the syntax  diagrams)  can be a
string naming a regular file, a device file, or a program.

If the first  character of |string| is not the '|' character,  |string| is taken
to be the name of a regular  file or a device  file.  If the first  character of
|string|  is the '|'  character,  the rest of  |string|  is taken  to be a shell
command.  This allows to pipe the output of a command to the standard input of a
shell  command,  or  vice  versa,  to use  the  output  of a  shell  command  as
inputstream for a command.

Example:

   CATALOG '.' '| lp'

   allows you to pipe the catalog-listing to the line-printer.

   DEFINE pwd
   LOCAL p
     OPEN_INFILE 1 '| pwd'
     READ_FILE 1 p
     CLOSE_FILE 1
     DISPLAY p
   END_DEFINE

   is a macro which allows you to display the current directory.

If |string| is taken to be a  filename,  trailing  blanks are  trimmed and it is
checked whether it is a valid file name to the operating  system.  The length of
this  logical  filename  could be up to 60  characters  on file  systems,  which
doesn't support long filenames  otherwise the length limitation is given through
the file system.  If a file is created with a name longer than 60 characters, no
additional   catalog   information   is   stored   in  the   'hp_catfile'   (see
DEFINE_CATALOG).

If a  filename  is used which is  greater  than 14  characters  long, it will be
re-named  in HP-UX so that it is no  longer  than 14  characters.  However  if a
CATALOG is  performed  the file name will  appear as it was typed in by the user
provided the 'hp_catfile' has not been deleted or corrupted.

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

^HELP HELP_PORT KEYWORD
^Meview_help
HELP function

		,---->|empty string|---->,
		|			 |
---->(HELP)---->+			 +---->
		|			 |
		`------->|keyword|------>'

The HELP function  displays the manual page  describing the required  'keyword'.
If an empty  string  is	 given	instead	 of a  keyword,	 then  the  manual  page
describing the current command/function (if any) is selected.

Inside the HELP function the following subfunctions are available:

  ^	    displays the first page of the help file
  !	    displays the last page of the help file
  ?	    displays the page describing the HELP function
  N	    displays the next page describing the current KEYWORD
  KEYWORD   displays the page describing KEYWORD

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

^HELP_PORT HELP
HELP_PORT function

--->(HELP_PORT)---.
		  |
  .---------------'
  |
  |
  +->|background color|-+-|border color|-+-|text color|-+->|cursor color|-.
  |			|		 |		|		  |
  v			v		 v		v		  |
  +<--------------------+<---------------+<-------------+<----------------'
  |
  |
  +--->|border width|---+--->|inner border width|---.
  |			|			    |
  v			v			    |
  +<--------------------+<--------------------------'
  |
  |
  `--->|corner point|--->|opposite corner point|--->

The  HELP_PORT	function  defines the  viewport	 used by the HELP  function.  By
making	the  EDIT_PORT	smaller	 than the  screen  size much time is saved  when
calling for help.

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

^INPUT FILES
INPUT function

---->(INPUT)---->|string|---->

INPUT temporarily redirects the input stream from the keyboard, tablet, or mouse
to the named text file.	 This file may contain any valid  commands.  INPUT files
may be nested.	The INPUT  function  should not be used inside macros.	An error
in an INPUT file causes all pending input to be discarded.

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

^INQ_ENV INQ
INQ_ENV function

---->(INQ_ENV)----><inq_code>---->

The INQ_ENV function is used with the INQ command in order to obtain information
about the system.  INQ_ENV sets the following  values,	depending on the inquiry
code, which must be in the range 0..12:

+-------------------------------------------------------------------------+
| <inq_code> | <inq_index> | result					  |
|============+=============+==============================================|
|     0	     |	    1	   | 0 (inq code)				  |
|	     |	    2	   | version number				  |
|	     |	  301	   | version string				  |
|------------+-------------+----------------------------------------------|
|     1	     |	    1	   | 1 (inq code)				  |
|	     |	    2	   | current viewport, range 0..16		  |
|	     |	  101	   | lower left coordinate of curr viewport in	  |
|	     |		   | pixels					  |
|	     |	  102	   | upper right coordinate			  |
|------------+-------------+----------------------------------------------|
|     2	     |	    1	   | 2 (inq code)				  |
|	     |	  101	   | lower left point of current window		  |
|	     |	  102	   | upper right point of current window	  |
|------------+------------------------------------------------------------|
|     3	     |	    1	   | 3 (inq code)				  |
|	     |	    2	   | current viewport catch range in pixels	  |
|	     |	    3	   | current no_viewport catch range in units	  |
|	     |	  603	   | current catch mode				  |
|	     |	  201	   | current geometry color			  |
|	     |	  301	   | current geometry linetype			  |
|	     |	  202	   | current construction color			  |
|	     |	  302	   | current construction linetype		  |
|	     |	  203	   | current text color				  |
|	     |	  204	   | current hatch color			  |
|	     |	  304	   | current hatch linetype			  |
|	     |	  205	   | current dim color				  |
|	     |	  206	   | current dim text color			  |
|------------+------------------------------------------------------------|
|     4	     |	    1	   | 4 (inq code)				  |
|	     |	  301	   | plotter name				  |
|------------+------------------------------------------------------------|
|     5	     |	    1	   | 5 (inq code)				  |
|	     |	    2	   | 1 if plotter viewport inq successful, else 0 |
|	     |	    3	   | plotter viewport width			  |
|	     |	    4	   | plotter viewport height			  |
|------------+------------------------------------------------------------|
|     6	     |	    1	   | 6 (inq code)				  |
|	     |	    2	   | mm per length unit   			  |
|	     |	    3	   | radian per angle unit			  |
|	     |	    4	   | drawing scale				  |
|------------+------------------------------------------------------------|
|     7	     |	    1	   | 7 (inq code)				  |
|	     |	  101	   | lower left point of the current part	  |
|	     |	  102	   | upper right point of the current part	  |
|	     |	  103	   | lower left point of the current part	  |
|	     |	  104	   | upper right point of the current part	  |
|	     |	  301	   | partname of the current part		  |
|------------+------------------------------------------------------------|
|     8	     |	    1	   | 8 (inq code)				  |
|	     |	    2	   | number of fonts defined			  |
|	     |	    3	   | number of global infos strings defined	  |
|	     |	    4	   | number of current infos strings defined	  |
|	     |	  301	   | name of the current font			  |
|------------+------------------------------------------------------------|
|     9	     |	    1	   | 9 (inq code)				  |
|	     |	    2	   | underlength of this font definition	  |
|	     |	    3	   | height of this font definition		  |
|	     |	    4	   | width of this font definition		  |
|	     |	  301	   | name of the first/next font after inq_env 8  |
|	     |	  302	   | first/next global info string after inq_env 8|
|	     |	  303	   | first/next curr info string after inq_env 8  |
|------------+------------------------------------------------------------|
|    10	     |	    1	   | 10 (inq code)				  |
|	     |	    2	   | crt type					  |
|	     |		   |  = 5: 98542A  512 x  400 x	 1 display board  |
|	     |		   |  = 6: 98543A  512 x  400 x	 4 display board  |
|	     |		   |  = 7: 98544A 1024 x  768 x	 1 display board  |
|	     |		   |  = 8: 98545A 1024 x  768 x	 4 display board  |
|	     |		   |  = 9: 98547A 1024 x  768 x	 6 display board  |
|	     |		   |  =12: 98720A 1280 x 1024 x	 4 display system |
|	     |		   |  =13: 98720A 1280 x 1024 x	 8/16 display	  |
|	     |		   |				      system	  |
|	     |		   |  =15: 98720A 1280 x 1024 x 24/32 display	  |
|	     |		   |				      system	  |
|	     |		   |  =16: 98549A 1024 x  768 x	 6 display board  |
|	     |		   |  =17: 98550A 1280 x 1024 x	 8 display board  |
|	     |		   |  =18: X11 Window System			  |
|	     |		   |  =19: 98730A 1280 x 1024 x	 4 display system |
|	     |		   |  =20: 98730A 1280 x 1024 x	 8/16 display	  |
|	     |		   |				      system	  |
|	     |		   |  =22: 98730A 1280 x 1024 x 24/32 display	  |
|	     |		   |				      system	  |
|	     |		   |  =30: 98705A 1280 x 1024 x 8 display system  |
|	     |		   |  =31: 98705B 1280 x 1024 x 16 display system |
|	     |		   |  =32: 98736  1280 x 1024 x 24 display system |
|	     |	    3	   | tablet type				  |
|	     |		   |  = 0: no tablet connected			  |
|	     |		   |  = 2: 46087 tablet				  |
|	     |		   |  = 3: 46088 tablet				  |
|	     |		   |  = 4: 45911a tablet			  |
|	     |	    4	   | operating system				  |
|	     |		   |  = 1: Pascal Workstation			  |
|	     |		   |  = 2: HP-UX				  |
|	     |	  101	   | lower left coordinate of graphics area	  |
|	     |	  102	   | upper right coordinate of graphics area	  |
|	     |	  103	   | width and height of pixel font		  |
+------------+-------------+----------------------------------------------+
|    12      |      1      | 12 (inq code)                                |
|            |      3      | current text adjust (1-9)                    |
|            |      4      | current text line spacing (factor of height) |
|            |      5      | current text ratio (width/height)            |
|            |      6      | current text size (user units)               |
|            |      7      | current text slant (user angular units)      |
|            |      8      | current text angle (user units)              |
|            |    302      | current text font name                       |
|            |    601      | current text frame (OFF, BOX, BALLOON)       |
|            |    602      | current text fill (OFF or ON)                |
+-------------------------------------------------------------------------+

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

^KNOB KNOBS KNOB_BOX VIRTUAL KNOB_BOX_FACTOR WINDOW
KNOB_BOX

If a knob box is present  then knob input will be taken from the  physical  knob
box.

If a knob box is not present the locator (tablet, mouse or xlocator) can be used
to simulate one knob at a time and numbers can be used for knob  selection.  The
knobs are numbered 1 through 9 in the same manner as the numeric keypad  (bottom
row 1-3, middle row 4-6, top row 7-9).

To use the locator as a knob first enter a command or function that expects knob
input  (such as WINDOW  KNOB_BOX).  Then  select a knob by pressing a number key
(1-9).  The locator  should now be moved in a circular  manner around the center
of the locator input area.  Another knob can be selected by pressing a different
number key.  When  finished  using the knobs any other key should be pressed, or
the locator should be picked.

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

^KNOB_BOX_FACTOR KNOB KNOBS KNOB_BOX VIRTUAL
KNOB_BOX_FACTOR

Enter SELECT_KNOB, RELATIVE or knob_box factor for all knobs

--->KNOB_BOX_FACTOR--->+
		       |
  +<--------<----------+      
  |                                                        
  +--------->------------->------------>+->-+-------->------- -+-->(factor)-->
  |				        |   |                  |
  +-->(SELECT_KNOB)-->--(knob number)---+   +--->(RELATIVE)--->+


Enter  KNOB_BOX_FACTOR  and enter a numerical value to change the sensitivity of
the knobs.

Enter  SELECT_KNOB  to  select a  specific  knob to which  the  factor  applies,
otherwise all knobs are set.

Enter RELATIVE to specify the new number relative to the last setting.

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

^LET MACRO
LET function

---->(LET)---->|macro_name|---->|token or expression|---->

LET (re)defines a macro.  See NAME for a description of permissible macro names.
If an  expression  is given instead of a simple	 token, the  expression	 will be
evaluated and the resulting token will be assigned to the macro.

Examples:
   LET A 2	      set the value of A to 2
   LET B (A + A * 3)  set the value of B to (A+A*3).  Note that	 parentheses are
		      required whenever an expression is used as a token.

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

^LINEPATTERN
^SOLID
^DASHED
^LONG_DASHED
^DOT_CENTER
^DASH_CENTER
^PHANTOM
^CENTER_DASH_DASH
^DOTTED
LINEPATTERN functions

--->+--->(LINEPATTERN)--->|linetype pattern string|--->+--->
    |						       |
    +--->(SOLID)-------------------------------------->+
    |						       |
    +--->(DASHED)------------------------------------->+
    |						       |
    +--->(LONG_DASHED)-------------------------------->+
    |						       |
    +--->(DOT_CENTER)--------------------------------->+
    |						       |
    +--->(DASH_CENTER)-------------------------------->+
    |						       |
    +--->(PHANTOM)------------------------------------>+
    |						       |
    +--->(CENTER_DASH_DASH)--------------------------->+
    |						       |
    `--->(DOTTED)------------------------------------->'

LINEPATTERN  specifies the current  linetype for the components	 which are to be
created with the current  active  command  (LINE  C_LINE  HATCH).  For the eight
standard patterns the SOLID ..	DOTTED functions can be used.

The linepattern_string represents the linetype in a visible form with characters
'0' and '1'.

The standard linetype functions are equivalent to the following patterns:

  SOLID		    : '1111111111111111'
  DASHED	    : '1111111100000000'
  LONG_DASHED	    : '1111111111100000'
  DOT_CENTER	    : '1111111111111010'
  DASH_CENTER	    : '1111111111110110'
  PHANTOM	    : '1111111111101010'
  CENTER_DASH_DASH  : '1111111111010110'
  DOTTED	    : '1010101010101010'

The linetype also affects the way point elements (from POINT) are drawn.  To see
the possibilities, change the linetype and watch the status line.

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

^LIST_MACRO_NAMES MACRO
LIST_MACRO_NAMES function

---->(LIST_MACRO_NAMES)---->|output_spec|---->

LIST_MACRO_NAMES  outputs  the	names of all  currently	 defined  macros  to the
specified destination.	Secured macros are indicated by '(*)'.

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

^STRING QUOTE
string

    ,<-------------<----------------------------<---------------------,
    |								      |
    |			 ,<----| any character |<----,		      |
    |			 |			     |		      |
    |			 |			     |		      |
--->+--->+---->( ' )---->+-------------------------->+-->( ' )-->+--->+--->
	 |							 ^
	 |		 ,<----| any character |<----,		 |
	 |		 |			     |		 |
	 |		 |			     |		 |
	 +---->( " )---->+-------------------------->+-->( " )-->+
	 |							 ^
	 |							 |
	 `---->( # )---->+---->| any character |---------------->+
			 |					 ^
			 |     +<------------------+		 |
			 |     |		   ^		 |
			 |     v		   |		 |
			 `---->+---->| digit |---->+------------>'

A string is a sequence of  characters.	It  consists of any  combination  of the
following:

 -- A sequence of ASCII printable  characters enclosed in single or double quote
    marks.

 -- A sharp symbol ( # ) followed by a single character.

 -- A sharp  symbol ( # ) followed by an integer  number  which	 represents  the
    ASCII value of a character.

The printable characters  appearing between the single or double quote marks are
those  ASCII  characters  assigned  graphics  and  encoded by ordinal  values 32
through 126 and 161 through 254.

A letter or symbol after a sharp symbol is  equivalent	to a control  character.
For example, #G or #g encodes CTRL-G, the bell character.  The system interprets
the letter or symbol according to the expression chr(ord(letter) mod 32).  Thus,
the ordinal value of G is 71; modulus 32 of 71 is 7; and the ASCII value of 7 is
the bell.

A number after a sharp symbol must be in the range 0..255.  It directly	 encodes
any  ASCII  character,	 printing  or  non-printing.  For  example,  the  string
#65#66#67 is equivalent to the string 'ABC'.

A single quote in a string  delimited by single	 quotes is denoted by two single
quotes.

A double quote in a string  delimited by double	 quotes is denoted by two double
quotes.

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

^LOAD_MACRO STORE_MACRO MACRO
LOAD_MACRO function

---->(LOAD_MACRO)---->|file_name|---->

LOAD_MACRO loads all macros stored in the named file into memory.

The file must be the output of an earlier  STORE_MACRO.	 If a macro was	 secured
with  SECURE_MACRO  before it was stored, it will not be visible after	loading,
although it will be fully operational.

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

^LOAD_MODULE
LOAD_MODULE command

---->(LOAD_MODULE)---->|string|---->

The LOAD_MODULE command activates the specified application module.

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

^MATCH
MATCH string string ===> number

    Returns 1 if the first  string is matched by the  pattern  specified  by the
    second string,  otherwise  returns 0.  The pattern may contain  wildcards as
    follows:

    *     Matches any string including the null string.

    ?     Matches any single character.

    [...] Matches  any one of the  enclosed  characters.  A pair  of  characters
          separated  by - matches  any  character  lexically  between  the pair,
          inclusive.  A NOT operator, !, can be specified immediately  following
          the left  bracket to match any single  character  not  enclosed in the
          brackets.

    \     Removes any special meaning of the following character.

          Any other character matches itself.

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

^MEMORY
MEMORY

If you run out of memory completely, the system gives you a SYSTEM ERROR message
to that effect.	 IF THIS  HAPPENS, YOU SHOULD  *IMMEDIATELY*  STORE WHAT YOU ARE
WORKING	 ON, EXIT, AND	RE-ENTER  THE  SYSTEM.	You can then try to free up some
space  by  deleting  part of the  drawing,  unused  fonts,  or	whatever.  It is
important  to store and exit after  running out of memory, as the system  cannot
recover from this error a second time.

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

^MENU ICON
MENU function

-->(MENU)-->+---->|display_color|---->+---->|background_color|---->,
	    |			      |				   |
	    v			      v				   v
	    +<------------------------+<---------------------------'
	    |
	    v
	    +---->|display_text|---->+---->|action_text|---->,
	    |			     |			     |
	    v			     v			     v
	    +<-----------------------+<----------------------'
	    |
	    v
	    +---->|row|---->|column|----------------------------->,
	    |							  |
	    v							  v
	    `->(BOX)->|startrow|->|startcol|->|endrow|->|endcol|->+---->

MENU  defines the  appearance  and the action of screen menu slots.  Unspecified
items retain their old	(previous)  values.  The crt screen is not updated every
time the MENU  function	 is  invoked,  but  rather  when the next user	input is
requested.  The	 UPDATE_SCREEN	or  NEW_SCREEN	functions  may be  used to  show
changes immediately.

display_color:	  color of the text or drawing in the menu slot
background_color: color of the menu slot background
display_text:	  text defining the appearance of the menu slot (see below)
action_text:	  text used as input if the menu slot is picked
row:		  row number of the selected menu slot
col:		  column number of the selected menu slot
startrow:	  row number of the first selected menu slot
startcol:	  column number of the first selected menu slot
endrow:		  row number of the last selected menu slot
endcol:		  column number of the last selected menu slot

Instead of entering a row and column  number pair, you can digitize the required
menu slot.

If the first character of the display_text has an ordinal value of 255, then the
display_text is not displayed literally, but it is interpreted as a graphic menu
icon command  string.  The format of such a graphic menu icon command string is:

   ,<----------------------------------------+<------------------------,
   |					     ^			       ^
   |					     |			       |
   v					     v			       |
-->+-->|move opcode|-->|x_move|-->|y_move|-->+-->|x_draw|-->|y_draw|-->+-->

move opcode:			 character with ordinal value 255.
x_move, y_move, x_draw, y_draw:	 characters with ordinal values of 0..254.

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

^MENU_LAYOUT MENU
MENU_LAYOUT function

		       ,<-------------------------,
		       |			  ^
		       v			  |
---->(MENU_LAYOUT)---->+---->+------------->+---->+---->|point|---->+---->
			     |		    |	  |		    |
			     +-->(UPPER)--->+	  `----->(END)----->'
			     |		    |
			     +-->(LOWER)--->+
			     |		    |
			     +-->(RIGHT)--->+
			     |		    |
			     +-->(LEFT)---->+
			     |		    |
			     +-->|height|-->+
			     |		    |
			     `-->|string|-->'

MENU_LAYOUT  defines  the shape and the	 location  of a crt  menu.  Height  is a
number	specifying the height of the next menu row in pixels.  The default value
for height is the  character  height (the exact value is  depending  on the font
used).	String contains	 information about the menu width and the arrangement of
the menu slots.	 There must be one string per row of the menu.	Within a string,
menu slots are	separated by a bar '|'.	 The number of	characters  between bars
shows the width (in characters) of the corresponding slot; the actual characters
are irrelevant, and are typically  blanks or digits.  If no string is given, the
existing menu layout is moved to the specified	location.  The default	location
is the LOWER RIGHT corner.

As the	MENU_LAYOUT  function is mostly used in personality  macros, it does not
automatically  remove any old screen  menu from the crt screen.	 The  display of
the new screen	menu is	 deferred  until the next user input is	 requested.  The
UPDATE_SCREEN or NEW_SCREEN functions may be used to show changes immediately.

The MENU_LAYOUT function initializes all menu slots with the following values:

  display_color:      WHITE
  background_color:   BLACK
  display_text:	      ''
  action_text:	      ''

You then use MENU to change these values.

Example:

  MENU_LAYOUT UPPER RIGHT
      '123456789012| | | | |  '
      '		   | | | | |  '
   50 '		   |	      '
      '		   |	      '
  END

This  defines a menu in the upper  right  corner of the	 screen.  There are four
lines in the menu,  each the width of 23  characters.  The first two lines  have
six slots,  the	 second,  two.	The first slot in each row can	contain up to 12
characters.  The third line is 50 pixels high.

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

^NAME KEYWORD MACRO
name

---->|letter|---->+--------->--------+---->
		  ^		     v
		  |		     |
		  +<----|letter|<----+
		  |		     |
		  ^		     v
		  +<----|digit|<-----+
		  ^		     |
		  |		     v
		  +<------(_)<-------+

This  describes	 the syntax of a macro name.  Macros are defined by DEFINE, LET,
and READ.

Names must begin with a letter;	 subsequent  characters can be letters, numbers,
or underbar (_).  Included in letters are the standard	ASCII letters as well as
the extended ASCII characters from (CHR 161) through (CHR 254).

It is usually  advisable  to avoid  macro  names that are the same as  keywords,
which are the names  known to the  system on  startup.	However,  if you  really
must, it is possible to redefine a keyword to a certain	 extent.  Normally,  you
can type macro	names in upper or lower case, or even  mixed;  keywords	 must be
either upper or lower case.  If you want to define a macro with the same letters
as a keyword,  you must avoid  typing the macro name in one case.  For	example,
'LINE' and 'line' are always  keywords, but 'Line' is available as a macro name.
Once defined, the macro 'Line' can be invoked (and could have been defined) with
any mixture of upper and lower case letters.

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

^NETUNAM LAN FILES
NETUNAM function

---->(NETUNAM)---->|network special file|---->|username:password|---->

The NETUNAM function sets up user authentication for file access on a particular
remote HP-UX system.  |network  special file| is a string which  identifies  the
remote system.  |username:password|  is a string  representing  the user's login
name and  password  (if  required)  for the  remote  system.  A colon is used to
separate the login name from the password.  The login  information  is passed to
the remote HP-UX system for immediate verification.  It is used for the duration
of the session to determine  the access  rights for all remote file  accesses to
that system.  Series 300 computers can have a maximum of 20 RFA connections  per
process.  Connections  can be freed by executing the NETUNAM  function  with the
network  special  file for the  computer  with  which  you are  terminating  the
connection and the empty string for the login.

Example:
  NETUNAM '/net/PC_Design1' 'john:deadbolt'

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

^NEW_SCREEN TM_PORT_REDRAW_ALL
NEW_SCREEN function

---->(NEW_SCREEN)---->

NEW_SCREEN redraws the entire crt screen.

See also DISPLAY_LIST with option REGENERATE.

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

^NUMBER
number

--->+---------->+--->+--------------------->(.)-------->|integer|--->+
    |		|    |						     |
    +--->(-)--->+    +--->|integer|--->+---------------------------->+
				       |			     |
				       +--->(.)--->+---------------->+
						   |		     |
						   +--->|integer|--->+
								     |
								     v
			       +<------------------------------------+
			       |
			       +------------------------------------------>
			       |
			       +-->(E)-->+->+---------->+--->|integer|---->
			       |	 |  |		|
			       +-->(L)-->+  +--->(+)--->+
			       |	 |  |		|
			       +-->(e)-->+  +--->(-)--->+
			       |	 |
			       +-->(l)-->+

integer

---->+---->|digit|---->+---->
     ^		       v
     +--------<--------+

The format of a number is as shown.  The possible exponent  specifiers (E, L, e,
or l) all have the same effect.

The exponent range supported is approximately  -300 to 300.  However, the system
often computes the product of, say, point  coordinates, which means that -150 to
150 is a more realistic exponent range.

Data accuracy is approximately 12 decimal places, in both environments.

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

^ON_ERROR
ON_ERROR function

---->(ON_ERROR)---->|string|---->

The  string  specified	with  the  ON_ERROR  function  is used as  input  at the
occurrence  of the next	 error.	 Once used in this way, the string is  discarded
and ON_ERROR  must be used again to reenable this feature.  To disable an active
ON_ERROR issue the ON_ERROR function with an empty argument string.

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

^OpenSpool HP OpenSpool/UX SPOOL SPOOLER NP NPUI LP LPSTAT LPCANCEL
^OpenSpool PLOT DUMP_SCREEN PLOT_DESTINATION pipe Prt Rprt Cprt Crprt

HP OpenSpool/UX

HP OpenSpool/UX is a standard  distributed  output management system that queues
and sends  your  files to a plotter or  printer.  This  software  provides  easy
access to any printer or plotter configured on your network.  It features a menu
driven  interface and a sophisticated  online help system.  This product is sold
separately (Product Number B1900A).

HP OpenSpool/UX offers many other helpful features such as:

* Setting plotting/printing priorities.
* Viewing plotting/printing requests.
* Changing and deleting queued plotting/printing requests.
* Handling of fonts.
* Handling of preprinted forms.
* Selecting different paper sizes.
* Creating templates for repetitive tasks.

For more information on HP OpenSpool/UX  
refer to the manuals supplied with this product.

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

^OPEN_INFILE OPEN_OUTFILE CLOSE_FILE READ_FILE WRITE_FILE FILES NO_DELAY
OPEN_INFILE function

---->(OPEN_INFILE)---->|number|-->-+---------------+------>|filename|---->
                                   |               |
                                   +->(NO_DELAY)->-+

OPEN_INFILE  first  closes any open file with the same id number  and then opens
the named file for reading by the  READ_FILE  function.	 Number is an integer in
the range from 1 to 10 which is used for all subsequent references to this file.

NO_DELAY  controls the behavior of the system if 'filename' is a named pipe.  It
affects the behavior of the OPEN_INFILE and READ_FILE functions.

Without  NO_DELAY,  an  OPEN_INFILE  of a named  pipe will  wait  until an other
process opens the pipe for writing.  After  OPEN_INFILE  returns,  lines of text
can be read from the pipe  using  the  READ_FILE  function.  If a the  READ_FILE
returns  'END-OF-FILE',  this means that the process  writing  into the pipe has
closed its output.

With  NO_DELAY,  the  OPEN_INFILE  will  return  immediately.  If  there is data
available in the pipe, subsequent calls to the READ_FILE  function will return a
line of text each, but if READ_FILE returns  'END-OF-FILE'  this only means that
there is currently no data in the pipe.  If data is later  written into the pipe
again, the READ_FILE function will again return a line of text.

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

^OPEN_OUTFILE OPEN_INFILE CLOSE_FILE READ_FILE WRITE_FILE FILES
OPEN_OUTFILE function

--->(OPEN_OUTFILE)--->|number|--->+------------------>+--->|filename|---->
				  |		      |
				  +---->(DEL_OLD)---->+
				  |		      |
				  +---->(APPEND)----->+

OPEN_OUTFILE  first  closes any open file with the same id number and then opens
the named file for writing by the WRITE_FILE  function.	 Number is an integer in
the range from 1 to 10 which is used for all subsequent references to this file.
The file may be a printer.

 -- default:  If the file specified  already exists, an error message is issued,
    otherwise a new file is created.

 -- DEL_OLD:  If the file specified  already  exists, its old contents are lost,
    otherwise a new file is created.

 -- APPEND:  If the file  specified  already  exists,  the  information	 will be
    appended to the end of the file, otherwise a new file is created.

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

^OUTPUT_SPEC
Output specification

---->+-----+--->(SCREEN)-------+-------------------->+---->
     |     |                   |                     |
     |     +--->(PROMPT_LINE)--+                     |
     |						     |
     +---->+------------------>+---->|file_name|---->+
	   |		       |
	   +---->(DEL_OLD)---->+
	   |		       |
	   +---->(APPEND)----->+

The output  specification (named |output_spec| in the syntax diagrams) specifies
the destination of the output  produced by the command or function.  This can be
either SCREEN or a string naming a regular file, a device file, or a program.

(SCREEN)      The output will be sent to the built-in screen editor for viewing.
	      All changes made to the text will be ignored.

(PROMPT_LINE) The output  will be  displayed  line-by-line  in the  prompt  line
	      without  entering the built-in  screen editor.  This may be useful
	      if only a few lines of output are to be displayed.

|file_name|  See FILE_NAME

(DEL_OLD)    This will first delete any already existing file named by |string|.

(APPEND)     If the file named by |string|  does  already  exist, the new output
	     will be  appended  to the  previous  contents of that file.  If the
	     file does not exist before, it will be newly created.

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

^OUTPUT_HP15 OUTPUT_HP16
OUTPUT_HP15 function

---->(OUTPUT_HP15)---->

OUTPUT_HP16 function

---->(OUTPUT_HP16)---->

OUTPUT_HP15  switches  the output mode for kanji text to HP15 code,  OUTPUT_HP16
switches it to HP16 code.  Regardless of this current  kanji output mode you can
always read HP15 and HP16 codes from all files.

The default  mode on HP-UX is HP15.  The default mode on Pascal  Workstation  is
HP16.

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

^PASSWORD
PASSWORD function

---->(PASSWORD)---->|string|---->

The PASSWORD function is used to enter the enable password into the system.

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

^VECTOR POINT POINT_3D
point token

---->|number|---->( , )---->|number|---->

point_3d token

---->|number|---->( , )---->|number|---->( , )---->|number|---->

A point is given by X,Y coordinates, a point_3d is given by X,Y,Z coordinates.

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

^PROMPT_LIST
PROMPT_LIST function

---->(PROMPT_LIST)---->+------>(ON)----------->+---->
		       |		       |
		       +------>(OFF)---------->+
		       |		       |
		       +------>(CLEAR)-------->+
		       |		       |
		       +---->|output_spec|---->+

The PROMPT_LIST	 facility may save up to 500 system prompts in internal	 memory.
If more prompts are generated, the oldest are overwritten.

Options:

	ON		enables saving of prompts (default)

	OFF		disables saving of prompts

	CLEAR		clears the internal prompt list memory

	output_spec	outputs the internal prompt list memory to the specified
			destination

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

^PURGE_FILE PURGE_DIRECTORY FILES RECURSIVE CONFIRM TM_CONFIRM
PURGE_FILE function

-->(PURGE_FILE)->|filename|->+-+------------------>+->+->+-->(CONFIRM)->+->
			     | ^		    | ^	 |		^
			     | |		    | |	 |		|
			     | |		    v |	 v		|
			     | +<-|expr|-(SELECT)<-+  |	 '-->(SCREEN)-->'
			     |			      |
			     v			      |
			     '--->(RECURSIVE)-------->'

|expr|

--->|item|-------+-------->+------>|value|------>
		 |	   |
		 +->(=)--->+
		 |	   |
		 +->(<>)-->+
		 |	   |
		 +->(>)--->+
		 |	   |
		 +->(<)--->+
		 |	   |
		 +->(>=)-->+
		 |	   |
		 +->(<=)-->+

PURGE_FILE  purges the specified  files from the mass storage  medium.  The file
'hp_catfile'  is  considered  to be a system file and cannot be purged with this
function.

Wildcards  can be used in  filenames.  See SELECT  (the entry in this help file)
for a description of wildcards.

See  CATALOG  (the entry in this help file) for a  description	of the	'SELECT'
option and see DEFINE_CATALOG for a description of |expr|.

With the option	 'RECURSIVE' you can purge files, empty	 directories  and entire
non empty  directories	(that means trees).  Without the option	 'RECURSIVE' you
can purge only files and empty directories.

The option  'SCREEN'  enters the built-in  editor (see EDITOR) and allows you to
verify the list of selected files and directories; any changes in the screen are
ignored.  With an  unsuccessful  exit  (STOP/BREAK)  from the editor  you do not
purge anything.

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

^READ MACRO LITERAL QUALIFIER NUMBER STRING PNT PNT3 PNT_MM PNT_PIXEL PROMPT
^READ FEEDBACK DEFAULT
^READ RUBBER_LINE RUBBER_LINE_HORIZONTAL RUBBER_LINE_VERTICAL
^READ RUBBER_LINE_ANG RUBBER_BOX RUBBER_CIRCLE_CEN RUBBER_CIRCLE_2_PTS
^READ RUBBER_ARC_BEG_END RUBBER_ARC_CEN_BEG RUBBER_ARC_CEN_END
READ function

->(READ)->|tokentype|->|prompt|->|feedback|->|default|->|macro name|-->

|tokentype|:

     +<--------------------------------------+
     v					     |
---->+---->+-------------------------->+---->+---->
	   |			       |
	   +---->(LITERAL)------------>+
	   |			       |
	   +---->(COMMAND)------------>+
	   |			       |
	   +---->(FUNCTION)----------->+
	   |			       |
	   +---->(QUALIFIER)---------->+
	   |			       |
	   +---->(PSEUDO_COMMAND)----->+
	   |			       |
	   +---->(ARITHM_FUNCTION)---->+
	   |			       |
	   +---->(SYMBOL)------------->+
	   |			       |
	   +---->(MACRO)-------------->+
	   |			       |
	   +---->(STRING)------------->+
	   |			       |
	   +---->(NUMBER)------------->+
	   |			       |
	   +---->(PNT)---------------->+
	   |			       |
	   +---->(PNT3)--------------->+
	   |			       |
	   +---->(PNT_MM)------------->+
	   |			       |
	   +---->(PNT_PIXEL)---------->+

|prompt|:

---->+----------------------------->+---->
     |				    |
     +---->|string|---------------->+
     |				    |
     +---->(PROMPT)---->|token|---->+
     |				    |
     +---->(LAST_PROMPT)----------->+

|feedback|:

-->+------------------------------------------------------------------>+-->
   |								       |
   +->(RUBBER_LINE)------------>|start point|------------------------->+
   |								       |
   +->(RUBBER_LINE_HORIZONTAL)->|start point|------------------------->+
   |								       |
   +->(RUBBER_LINE_VERTICAL)--->|start point|------------------------->+
   |								       |
   +->(RUBBER_LINE_ANG)-------->|start point|-->|angle|--------------->+
   |								       |
   +->(RUBBER_BOX)------------->|corner point|------------------------>+
   |								       |
   +->(RUBBER_CIRCLE_CEN)------>|center point|------------------------>+
   |								       |
   +->(RUBBER_CIRCLE_2_PTS)---->|1. periph point|-->|2. periph point|->+
   |								       |
   +->(RUBBER_ARC_BEG_END)----->|begin point|-->|end point|----------->+
   |								       |
   +->(RUBBER_ARC_CEN_BEG)----->|center point|-->|begin point|-------->+
   |								       |
   +->(RUBBER_ARC_CEN_END)----->|center point|-->|end point|---------->+
   |				                                       |
   +->(LAST_FEEDBACK)------------------------------------------------->+

|default|:

---->+------------------------------>+---->
     |				     |
     +---->(DEFAULT)---->|token|---->+

READ  (re)defines  a macro.  See NAME for a  description  of  permissible  macro
names.

The READ request is always  directed to the user.  If the READ	function is used
within a macro, macro execution is suspended until the READ request is satisfied
by entering a legal token or expression,  after which the execution of the macro
is resumed.

|tokentype|  specifies	the type of data to be	entered by the user.  If a token
type is not  specified,	 then only STRING,  NUMBER, PNT, and PNT3 are permitted.
LITERAL	 means that any token is accepted and directly	assigned to |macro name|
without being evaluated.  Otherwise, the token is evaluated.  If the result is a
command and COMMAND was not specified in |tokentype|, macro execution is aborted
and the command is executed.  If the result is a function  and FUNCTION	 was not
specified  in  |tokentype|,  the  function is  executed,  then the READ	 request
resumed.

2-D points may be digitized.  When using PNT_MM, the point is measured in tablet
millimeter  units (origin is the lower left corner of the tablet surface).  When
using  PNT_PIXEL,  the point is measured in crt pixel units (origin is the lower
left corner of the crt screen).	 When using PNT or no type  specifier, the point
is measured in the current model units and it is caught using the current  catch
mode and range. Also the INQ arrary will be fill with the viewportnumber (INQ 2)
and viewportname (INQ 301) of the picked port.

The prompt is used as prompt for the READ  request.  If the  prompt is  omitted,
the system uses a default prompt ('Enter  <macro_name>').  By using  LAST_PROMPT
the system uses the last active prompt before the READ function was invoked.

A feedback option may be specified.  The various kinds of possible  feedback and
the  required  parameters  are  listed in the  syntax  diagram  above.  By using
LAST_FEEDBACK  the system uses the last active feedback before the READ function
was invoked.

The DEFAULT option evaluates its parameter and puts the result into the keyboard
entry  line.  Pressing	RETURN will then enter the  (possibly  edited)	value to
satisfy the READ request.

Macro_name  may be any	identifier  not	 reserved  by the  system for  commands,
functions, options, etc.

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

^READ_FILE OPEN_INFILE OPEN_OUTFILE CLOSE_FILE WRITE_FILE FILES
READ_FILE function

---->(READ_FILE)---->|number|---->|macro name|---->

READ_FILE  reads one line of text from the specified  file and assigns this line
as a string to the  named  macro.  If  READ_FILE  hits the end of the file,  the
string 'END-OF-FILE' will be assigned to the macro.  See also OPEN_INFILE.

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

^RECALL_BUFFER EDITOR
RECALL_BUFFER function

---->(RECALL_BUFFER)---->+------>(ON)----------->+---->
			 |			 |
			 +------>(OFF)---------->+
			 |			 |
			 +------>(CLEAR)-------->+
			 |			 |
			 +---->|output_spec|---->+

The RECALL_BUFFER facility may save up to 63 input lines in internal memory.  If
more lines are typed in, the oldest are overwritten.

Options:

	ON		enables saving of input lines (default)

	OFF		disables saving of input lines

	CLEAR		clears the internal recall buffer memory

	output_spec	outputs	 the  internal	 recall	 buffer	 memory	 to  the
			specified destination

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

^RUN GRAPHIC SHELL
RUN function

---->(RUN)---->+------------------>+---->|shell command line|---->
	       |		   |
	       +---->(GRAPHIC)---->+

The RUN function starts the HP-UX shell program.

If  the  string  'shell  command  line'  is  empty  (null   string),  the  shell
interactively  requests commands from the user.  Execution of the command 'exit'
or input of CONTROL D causes the shell to terminate.

If the string 'shell command line' is not empty, it is passed as argument to the
shell program.  The shell terminates  automatically  after execution of 'command
line'.

Termination  of the shell causes  operation to resume at the same point where it
was  suspended.  If no option is specified, the contents of the graphics  screen
is saved and alpha mode is enabled  before  starting  the  shell.  If the option
GRAPHIC is given, the graphics  screen is not saved and alpha mode is not turned
on.  If the option  GRAPHIC is  specified,  the shell command  should not output
anything to the alpha or graphics screen.


Example:

 -- RUN 'mkdir newdir'      calls  the	system	 program  mkdir	 to  create  the
			    directory 'newdir'.

 -- RUN 'vi myfile'	    calls  the	system	 editor	 vi  to	 edit  the  file
			    'myfile'.

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

^SAVE_ENVIRONMENT ENVIRONMENT
SAVE_ENVIRONMENT function

---->(SAVE_ENVIRONMENT)---->|output_spec|---->

SAVE_ENVIRONMENT  outputs the  environment  to the  specified  destination.  The
format is readable by INPUT.  See also EDIT_ENVIRONMENT.

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

^SAVE_MACRO STORE_MACRO MACRO
SAVE_MACRO function

---->(SAVE_MACRO)---->+---->|macro name|---->+---->|output_spec|---->
		      |			     |
		      +----->(ALL)---------->+

SAVE_MACRO  outputs the named macro or ALL macros to the specified  destination.
The format is readable by INPUT.

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

^SAVE_MENU MENU
SAVE_MENU function

---->(SAVE_MENU)---->|output_spec|---->

SAVE_MENU   outputs  the  current  screen  menu	  definition  to  the  specified
destination.  The format is readable by INPUT.

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

^SAVE_TMENU TABLET MENU
SAVE_TMENU function

---->(SAVE_TMENU)---->|output_spec|---->

SAVE_TMENU   outputs  the  current  tablet  menu  definition  to  the  specified
destination.  The format is readable by INPUT.

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

^SEARCH FILES PATH
SEARCH command

---->(SEARCH)---->+----------------->+---->(END)---->
		  |		     |
		  +<----|string|<----+

SEARCH	specifies the  directories in the search list.	The  directories in this
list are searched (in the order here  specified)  when a file that the system is
trying to read is not found in the current directory.

At  system  startup  time  the  search  list  is  initialized  by the  following
algorithm:

 -- the  search  list is  initialized  to the  value  of the  HP-UX  environment
    variable MEDIR.

 -- if MEDIR is not defined, the search list is initialized to the same absolute
    path (starting with '/') which was used to start the program.

 -- if MEDIR is not defined, and no absolute path was used to start the program,
    the search list is initialized to '.'.

The search list may be edited using the EDIT_ENVIRONMENT function.

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

^SECURE_MACRO MACRO
SECURE_MACRO function

---->(SECURE_MACRO)---->+---->|macro name|---->+---->
			|		       |
			+-------->(ALL)------->+

SECURE_MACRO  protects the named macro or ALL macros from being listed,	 edited,
saved, or traced.  Secured macros may be stored with STORE_MACRO.

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

^STATLINE_RESET
STATLINE_RESET

STATLINE_RESET  activates  the status line  again, if it has been  automatically
disabled.  This  happens if a error  occurs  during an update of the status line
(i.e.  if the current part is undefined).
You should fix the reason for the error before calling STATLINE_RESET.

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

^STORE_MACRO SAVE_MACRO MACRO
STORE_MACRO function

-->(STORE_MACRO)-->+-->|macro name|-->+-->+-------------->+-->|file_name|->
		   |		      |	  |		  |
		   +------>(ALL)----->+	  +-->(DEL_OLD)-->+

STORE_MACRO  stores the named macro or ALL macros to the specified  destination.
It uses an internal  binary  format.  STORE_MACRO  can store both  unsecured and
secured macros.	 Files created by STORE_MACRO may only be read by the LOAD_MACRO
function.  They cannot be INPUT.  See also SAVE_MACRO.

 -- default:  If the file specified  already exists, an error message is issued,
    otherwise a new file is created.

 -- DEL_OLD:  If the file specified already exists, its old contents are lost.

The format used by  STORE_MACRO	 depends on the revision of the program.  A file
created with one revision may not be loadable with another revision.  Or, it may
produce unexpected results when the macros are executed.  To avoid this problem,
keep copies in text form of all macros, even if you use the binary form from day
to day for speed.  Such a copy can always be  (re)generated  by	 SAVE_MACRO,  as
long as no macros have been secured with SECURE_MACRO.

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

^TABLET_RESET RESET TABLET
TABLET_RESET function

---->(TABLET_RESET)---->

TABLET_RESET  asks the system to re-establish  contact with the tablet.	 This is
required  if the tablet is  accidentally  turned off (turn it back on first), or
when an interface failure occurs.

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

^TECHO TABLET ECHO
TECHO function

---->(TECHO)---->+------------------>+---->+---->|filename|--->+---->
		 |		     |	   |		       |
		 +---->(DEL_OLD)---->+	   +------>(OFF)------>+
		 |		     |
		 +---->(APPEND)----->+

TECHO  opens or closes	the  TECHO  file.  If a TECHO  file is open, all  points
digitized  on the tablet or read with TINPUT are written to the named file.  The
points are specified in the tablet coordinate system (units millimeters,  origin
lower left), just as in TINPUT or TMENU.  The format is readable by TINPUT.

With OFF, the current TECHO file is closed.  With a filename, the current  TECHO
file is closed	and a new one with the given name is opened.  The  filename  may
specify a disc file or a device file.

 -- default:  If the file specified  already exists, an error message is issued,
    otherwise a new file is created.

 -- DEL_OLD:  If the file specified already exists, its old contents are lost.

 -- APPEND:  If the file  specified  already  exists,  the  information	 will be
    appended to the end of the file, otherwise a new file is created.

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

^TINPUT TABLET FILES
TINPUT function

---->(TINPUT)---->+----------------->+---->|string|---->
		  |		     |
		  +---->|number|---->+

TINPUT switches cursor tracking from the tablet to the file specified by string.
Points	specified  in the file are  interpreted	 just as  though  they	had been
digitized  on the tablet.  Normally  the file is the output of a previous  TECHO
(see TECHO for format information).

Number (default 1) specifies the number of points to be interpolated between two
digitized  points; this affects the cursor  feedback only.  TINPUT files may not
be nested.  The TINPUT	function  should not be used inside macros.  If TECHO is
active,	 then all points  read from the TINPUT	file will also be written to the
TECHO file.

Note that  changing the tablet or screen menu can  invalidate  old TECHO  files,
since points that digitized menu slots may now be interpreted differently.

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

^TMENU TRACKING TABLET MENU
TMENU function

---->(TMENU)---->+---->(TRACKING)---->|point|---->|point|-------------->+->
		 |							|
		 +---->|point|---->+---------------->+---->|string|---->+
				   |		     |
				   +---->|point|---->+

TMENU defines the tablet menu.

TMENU TRACKING	redefines the tracking area on the tablet.  After execution, the
crt screen is mapped onto this area.

To define a new tablet menu field, you enter opposite corners of the field, then
give the action text.

To  redefine an existing  field, you enter a point  anywhere  in the field, then
give the action text.

Points may be  specified in the tablet	coordinate  system  (units  millimeters,
origin lower left), or may be picked with the stylus on the tablet.

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

^TOKEN
token

-->-+-->|command|------->+-->
    |			 |
    |-->|option|-------->|
    |			 |
    |-->|arithm funct|-->|
    |			 |
    |-->|symbol|-------->|
    |			 |
    |-->|identifier|---->|
    |			 |
    |-->|string|-------->|
    |			 |
    |-->|number|-------->|
    |			 |
    |-->|point|--------->|
    |			 |
    |-->|point_3d|------>|
    |			 |
    |-->|name|---------->|
    |			 |
    '-->|expression|-----'

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

^TONE NOTE BEEP
TONE function

-->(TONE)-->+-->|frequency|-->|duration|-->|amplitude|-->+-->(END)-->
	    ^						 |
	    |						 v
	    +<-------------------------------------------+

The TONE function generates one or more audible tones with specific  parameters.
Frequency is in Hz, duration in seconds, and amplitude in the range from 0 to 1.
See also BEEP.

Note:

Significance,  range and  resolution  of the  parameters  depend  on the  actual
hardware used.

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

^TRACE DEBUG
TRACE function

---->(TRACE)---->+------------------>+---->+---->|string|---->+---->
		 |		     |	   |		      |
		 +---->(DEL_OLD)---->+	   +------>(OFF)----->+
		 |		     |
		 +---->(APPEND)----->+

TRACE  opens or closes	the TRACE  file.  If a TRACE file is open, a copy of all
tokens processed by the system	(including macro bodies and expression	results)
is written there.

With OFF, the current TRACE file is closed.  With a filename, the current  TRACE
file is closed	and a new one with the given name is opened.  The  filename  may
specify a disc file or a device file.

 -- default:  If the file specified  already exists, an error message is issued,
    otherwise a new file is created.

 -- DEL_OLD:  If the file specified already exists, its old contents are lost.

 -- APPEND:  If the file  specified  already  exists,  the  information	 will be
    appended to the end of the file, otherwise a new file is created.

TRACE  files are useful for  debugging	macros or menus (send the output to your
alpha  screen, if you have one).  Although  they are text files, they are rarely
readable by INPUT, since macro bodies appear  directly after the macro name, and
expression results directly after the expression.

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

^TRAP_ERROR CHECK_ERROR ERROR_STR ON_ERROR
TRAP_ERROR function

---->(TRAP_ERROR)---->

The  TRAP_ERROR  function  changes the  behaviour  in case of an error.  Without
TRAP_ERROR  all  execution  will be stopped  when an error  occurs,  this is the
default set. 
After  TRAP_ERROR  is enabel the fact that an error has  happened is just noted,
but execution does not stop, if the error is caused by wrong input.

See also CHECK_ERROR and ERROR_STR.

Note:  If the error for example  caused by calling  undefined  macros, errors in
       expressions  or system errors from the  operating  system, the  execution
       will stop in all cases.


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

^UPDATE_SCREEN
UPDATE_SCREEN function

---->(UPDATE_SCREEN)---->

UPDATE_SCREEN displays any previous primitives that are not yet displayed due to
device or driver buffering.  It also forces an update of the status line and the
crt menu.  This	 function is only useful if executed from a macro or input file.

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

^VERSION REVISION
VERSION function

-->(VERSION)-->

VERSION displays version information.

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

^WAIT
WAIT function

---->(WAIT)---->|number|---->

The WAIT  function  causes  the	 computer  to wait  approximately  the number of
seconds specified.

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

^WRITE_FILE OPEN_INFILE OPEN_OUTFILE CLOSE_FILE READ_FILE FILES
WRITE_FILE function

---->(WRITE_FILE)---->|number|---->|token|---->

WRITE_FILE  evaluates  a token and  writes  its value as one line of text to the
specified file.	 Token may be a number, a point, a string, a macro name, a name,
an expression, ...  See also OPEN_OUTFILE.

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

================================================================================
================================================================================
^STATUS_LINE
^STATUS

status line

The status line holds  information  about the current  status of the system.  An
example of the status line may be seen below.

-10.000 12.131 DHtC + ------ S 1 all 1:1 deg 10mm 3:0-1234-7891

-10.000  12.131 - the current X and Y  coordinates  of the cursor in the current
		  units.

	   DHtC - SHOW  STATUS.  Shows the  current  status of the SHOW  options
		  Dimension,   Hatch,   Text   and   Construction.  Upper   case
		  characters denote that the option is on, conversely lower case
		  characters  indicate  that the option has been  switched  off.
		  The  default  is for all  options  ON.  See  SHOW for  further
		  details.

              + - Point type.

         ------ - Line and color type. See LINEPATTERN.

	      S - Splitting ON/OFF. See SPLITTING.

	      1 - Current layer number. See SHOW. 

            all - Catch mode. See CATCH. 

	    1:1 - Drawing scale. See DRAWING_SCALE.

            deg - Current angle units. See UNITS.

	   10mm - Current ruler/grid spacing and dimension units.  See UNITS and
		  GRID_FACTOR.

             3: - Part level. See INIT_PART.

    0-1234-7891 - Active part. See EDIT_PART.

================================================================================
^Tm_create
^Tm_create_1
^Tm_screen_create_1
^Tm_screen_create_2

Create menu

The  create  menus  allow  the user to  enter  in to the  drawing  mode.  Lines,
circles,  arcs,  ellipses  and  splines may be used to produce a drawing.  Other
functions such as chamfering and filleting also reside in this menu.

================================================================================
^Tm_dimension_1
^Tm_dimension_2
^Tm_screen_dimension_1
^Tm_screen_dimension_2

Dimension menu

The dimension  menus allow the user to perform any of the following  operations,
dimension  drawings,  delete  dimensions,  change  and  modify  dimensions,  set
dimension units and format, convert the dimensions of a drawing.

================================================================================
^Tm_hatch
^Tm_screen_hatch

Hatch menu

The hatch menu allows the user to re-define  the  hatching  parameters,  hatch a
drawing, delete and modify existing hatching.


================================================================================
^Tm_text
^Tm_text_1
^Tm_screen_text_1
^Tm_screen_text_2

Text menu

The text  menu  enables  the user to add,  delete,  change  and  modify  text on
drawings.  The text font may also be changed.

================================================================================
^Tm_file
^Tm_file_1
^Tm_screen_file_1
^Tm_screen_file_2

File menu

The file menus  permit  the user to load and save a variety of  different  files
such as drawings,  parts and text files.  In addition  functions such as viewing
the contents of a directory, sorting and updating directories are catered for in
this menu.

================================================================================
^Tm_plot PLOT DUMP_SCREEN
^Tm_screen_plot
^Sm_screen_plot_1
^Sm_plot
^Sm_plot_configuration
^Sm_plot_configuration_update
^Sys_plot_configuration_dtab
^Tm_plot Dump_screen_box Dump_screen_port Dump_screen_screen
^Tm_plot Set_sys_dump_screen_background Set_sys_dump_screen_color
^Tm_plot Plot_do
^Tm_plot Plot_enter_filename_prefix_and_update
^Tm_plot Plot_enter_plotscale_and_update Set_sys_plot_plotscale
^Tm_plot Plot_enter_plotter_type_and_update
^Tm_plot Plot_enter_rotate_and_update
^Tm_plot Plot_enter_two_pts_and_update Set_sys_plot_source
^Tm_plot Plot_enter_user_format_and_update
^Tm_plot Set_sys_plot_as_displayed
^Tm_plot Set_sys_plot_center
^Tm_plot Set_sys_plot_filename_delold Set_sys_plot_filename_generate
^Tm_plot Set_sys_plot_format

Plot menus

The  plot  menus  allow  the user to  specify  a set of plot  parameters  before
starting  the plot  procedure.  Screen  dumps are also  available  from the plot
menu.  Use the plot configuration menu to select a predefined plot configuration
first.  The name of the selected  plot  configuration  is indicated  on the plot
menu to the right of the START PLOT menu entry.  If you want to invoke plots via
the menu you should not try to set plot  parameters by entering  plot  functions
via the keyboard.  The default values for the plot menus are defined in the file
"defaults".

================================================================================
^Tm_modify
^Tm_screen_modify

Modify menu

This menu provides the user with  functions such as move, rotate,  mirror, scale
and  transform.  One or more  drawing  elements  may be modified at any one time
using these commands.

================================================================================
^Tm_parts_1
^Tm_screen_parts_1
^Tm_screen_parts_2

Parts menu

A complexed  drawing may be drawn using several  'parts' which may be considered
as  sub-drawings,  each part may exist  more than once in the  overall  drawing.
This menu allows the user to create,  edit,  rename,  smash,  share and list the
various parts which are contained in the drawing.

Some of these  commands  are  duplicated  on the  tablet  at the top right  hand
corner.

================================================================================
^Tm_set_up
^Tm_screen_set_up_1
^Tm_screen_set_up_2

Setup menu

The Setup menu allows the user to change some of the default  options used, such
as the units and drawing scale.


================================================================================
^TM_SYMBOLS COMPOSITE NORMAL
^TM_SYMBOLS_1
^TM_SCREEN_SYMBOLS_1
^TM_SCREEN_SYMBOLS_2
^SYMBOLS_NORMAL
^SYMBOLS_COMPOSITE
^SYMBOLS_STRAIGHT
^SYMBOLS_FLAT
^SYMBOLS_ROUND
^SYMBOLS_CYLINDER
^SYMBOLS_LINE
^SYMBOLS_SURFACE
^SYMBOLS_POSITION
^SYMBOLS_CONCENTRIC
^SYMBOLS_ANGULAR
^SYMBOLS_SQUARE
^SYMBOLS_PARALLEL
^SYMBOLS_CIRCULAR
^SYMBOLS_TOTAL
^SYMBOLS_BOX_3
^SYMBOLS_BOX_5
^SYMBOLS_BOX_7
^SYMBOLS_BOX_1
^SYMBOLS_BOX_2
^SYMBOLS_DIAMETER
^SYMBOLS_M
^SYMBOLS_L
^SYMBOLS_S
^SYMBOLS_P
^SYMBOLS_TEXT
^SYMBOLS_SYMBOL
^SYMBOLS_POINT

Symbols menu

Standard geometric  tolerancing symbols are provided in this menu in the form of
individual  symbols.  They are usually combined with  tolerancing or descriptive
text.  The size of the symbol is related directly to the size of the text set in
the TEXT menu.

Each symbol is enclosed  within a box with the exception of the text, target and
modifiers.  Various  sizes of box  have  been  provided  to  enable  the user to
enclose these features manually.

Two TYPES of symbol may be  selected,  COMPOSITE  and NORMAL, the default  being
NORMAL.  The COMPOSITE  symbol is twice the size of a NORMAL  symbol and usually
precedes a double  line of  tolerancing  information  (See the user  manual  for
further details).

================================================================================
^Tm_info
^Tm_screen_info

Info menu

This  allows the user to assign text to layers or parts in the 2D  drawing.  The
text is not displayed on the screen with the parts but it is held  separately in
memory.


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

^ADD_CURRENT_INFO CURRENT_INFO SCREEN INFO CURRENT TM_LAYER_CURRENT
ADD_CURRENT_INFO command

			    ,------------------,
			    v		       |
---->(ADD_CURRENT_INFO)---->+---->(SCREEN)---->+---->
			    |		       |
			    '---->|string|---->'

ADD_CURRENT_INFO  adds  the  given  text to the  current  info.  The text can be
entered as a string, or, using the SCREEN option, with the built-in  editor (see
EDITOR).  The info is accumulated until you leave the command.

The  current  info is the info  added  to each  element.  Drawing  elements  are
assigned to layers by using the INFO  commands.  Each  element is  assigned  the
info  'LAYER:  layernumber'.  By using this  command,  the current  layer may be
changed.

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

^ADD_ELEM_INFO SCREEN INFO SM_INFO TM_LAYER_ADD
ADD_ELEM_INFO command

			 ,----------------------------------------,
			 | ,------------------,	    ,-----------, |
			 v v		      |	    v		| |
---->(ADD_ELEM_INFO)---->+-+---->(SCREEN)---->+---->+->|select|-+-+->
			   |		      |
			   '---->|string|---->'

ADD_ELEM_INFO  adds the given  text to the info of the  selected  elements.  The
text can be entered as a string, or, using the SCREEN  option, with the built-in
editor (see EDITOR).  The info is  accumulated  until you select  elements.  The
accumulated info is added to each element selected.  If you enter more info, the
old info is discarded.

This command may be used to copy the elements of one layer to another.

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

^APT NC TM_DATA_EXCHANGE_NC
APT command

-->(APT)-->|filename|--->

Apt generates a file in the APT input  language  (used by NC  programs).  If any
geometry in the active part has been labeled  with the LABEL  command,  the file
describes that geometry;  otherwise, it describes all the geometry in the active
part.  See also COMPACT, NCGL.

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

^ARC THREE_PTS CEN_BEG_END CEN_RAD_ANG PER_RAD_ANG PARALLEL SMOOTH DIAMETER
ARC command

	 ,--------------------------------------------------------------,
	 |			 ,----------------------------------,	|
	 v			 v				    |	|
-->(ARC)-+--+->(THREE_PTS)-----+-+->|end pnt1|->|end pnt2|->|arc pnt|---+-->
	 |  |		       ^					|
	 |  '------------------'					|
	 |								|
	 |		    ,------------------<-------------------,	|
	 |		    v					   |	|
	 +------(DIAMETER)--+-->--|beg pnt|------|end pnt|---------+----+
	 |								|
	 |		  ,---------------------------------,		|
	 |		  v				    |		|
	 +->(CEN_BEG_END)-+->|center|->|beg pnt|->|end pnt|-+---------->+
	 |							        |
	 |		  ,-------------------------------------------,	|
	 |		  v					      |	|
	 +->(CEN_RAD_ANG)-+-|center|->|rad|->-|b-ang/pnt|-|e-ang/pnt|-+>+
	 |			      |pnt|				|
	 |								|
	 |		  ,----------------------------------------,	|
	 |		  v					   |	|
	 +->(PER_RAD_ANG)-+->|arc pnt|->|rad|->|b-ang|->|opp-ang|--+--->+
	 |				|pnt|				|
	 |								|
	 |			       ,-------------------,		|
	 |			       v		   |		|
	 +->(PARALLEL)->|existing arc|-+->|pnt on new arc|-+----------->+
	 |				  |--distance----|		|
	 |								|
	 |			      ,------------------------,	|
	 |			      v			       |	|
	 '->(SMOOTH)->|end pt of elem|->|end pnt of new arc|->-+------->'

ARC creates an arc.

All arcs are  counterclockwise.  That is, a bug crawling from the begin point to
the end point would be crawling counterclockwise along the arc.

THREE_PTS creates an arc with the given end points through the third point.

DIAMETER creates a half circle from beg_pnt to end_pnt.

CEN_BEG_END  creates an arc with the given center point, from the begin point to
the end point.  If the begin and end points are not the same  distance  from the
center point, the end point is corrected.

CEN_RAD_ANG  creates an arc with the given center,  radius, begin angle, and end
angle.  The  radius  and the begin and end  angles  may also be  specified  with
points.

PER_RAD_ANG creates an arc through the given point, with the given radius, begin
angle, and opening  angle.  The radius and the begin angle may be specified with
a point.  The  opening  angle may be  positive  (counterclockwise)  or  negative
(clockwise).  The arc chosen is the one bisected by the peripheral point.

PARALLEL  creates an arc parallel to the given one.  If you indicate a point, an
arc  through  that point is  created.  If you enter a  distance,  an arc at that
distance  from the  original  one is created.  Positive  distances  create  arcs
outside the original one; negative distances, inside.

SMOOTH  creates  an arc  tangential  to the given  element,  ending at the given
point.  With each further point, it creates a new arc tangential to the previous
one.  If no such arc exists, it is because the tangent  and the  imaginary  line
between  the two input  points  coincide;  in this  case, the  system  creates a
tangential line.

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

^AREA_PROPERTY FACE DENSITY AREA MEASURE TM_MEASURE_AREA_PROP
AREA_PROPERTY command

---(AREA_PROPERTY)-+->-----------+
                   |             |
                   +->-|density|-+-|pnt on face|-+--|output_spec|--+--->
                   |             |               |                 |
                   +-<-----------+               |                 |
                   |                             |                 |
                   +-<---------------------------+                 |
                   |                                               |
                   +-<---------------------------------------------+



                density

                -->-+->-(DENSITY)---+
                    |               |
                    +->-------------+-|density value|-->--


                output_spec
                    
                -->-+->-(SCREEN)-------------------+
                    |                              |
                    +->-(DEL_OLD)--+               |
                    |              |               |
                    +->-(APPEND)---+               |     
                    |              |               |
                    +->------------+--|file spec|--+-->--



AREA_PROPERTY calculates the following properties for every selected area:

  (noh)       - the number of holes 
  (rho)       - the density of the area
  (P)         - the perimeter length 
  (A)         - the area
  (Cx, Cy)    - the center of area (= center of mass)
  (u, v)      - the  directions  of  the  principal  axes (the principal  axes 
                are given by the  center of area and these directions)
  (Icu, Icv)  - the second  moment of area about the principal  axes through
	        the center of area (also referred to as moment of inertia)
  (Ix, Iy)    - the second moment of area about the coordinate system axes
	        (also referred to as moment of inertia)
  (Ixy)       - the  torsional  second  moment of area about the  coordinate
		system axes (also referred to as product of moments of inertia)
  (Zcu, Zcv)  - the section moduli about the principal axes
  (Du, Dv)    - the distances from the neutral axes to the extreme fibers
  (Rcu, Rcv)  - the radii of gyration with respect to the center of area
  (phi)       - the angle between coordinate system and principal axes

The output can be  directed  either to screen or to file.  In case of screen the
built-in editor is called.

The default value for DENSITY is 1.  This may be altered by invoking the DENSITY
command  and/or  entering  the  density  value  required.  The  density  must be
specified  before a face is picked,  otherwise the default value or the previous
value is assumed.  The  density  value is re-set to 1 after the area  properties
have been written to the screen or a file.

Area  property  only works in the current part.  For shared parts, only faces of
the (unmodified) original part may be selected.

Holes in the area are recognized and subtracted automatically.

All values printed out refer to the user coordinate system.

The center of area is marked as '*' on the screen.

If several areas are selected, the following  values are calculated in addition:

  (A)         - the sum of all areas 
  (Cx, Cy)    - the common  center of area
  (Mx, My)    - the common  center of mass
  (u, v)      - the  directions  of  the  principal  axes (the principal axes
                are given by the  center of area and these directions)
  (Icu, Icv)  - the second  moment of area about the principal  axes through
		the center of area (also referred to as moment of inertia) 
  (Ix, Iy)    - the second moment of area about the coordinate system axes
                (also referred to as moment of inertia)
  (Ixy)       - the  torsional  moment of area about the  coordinate  system
	        axes (also referred to as product of moments of inertia)
  (Rcu, Rcv)  - the radii of gyration with respect to the center of area
  (phi)       - the angle between coordinate system and principal axes

The common center of area is marked as '+' on the screen.
The common center of mass is marked as 'o' on the screen.

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

^ARROW_FILL ARROW LEADER_LINE FILL
ARROW_FILL function

---->(ARROW_FILL)--->+---->(ON)----->+---->
		     |		     |
		     +---->(OFF)---->+

ARROW_FILL  controls  the filling of arrows in  dimensions  (compatibility)  and
leader lines.

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

^CATCH SNAP PERMANENT ALL VERTEX ELEM INTERSECTION CENTER OFF RANGE GRID
^CATCH NO_VIEWPORT_RANGE SIZE CURSORSIZE
^TM_CATCH_ALL_2D_ITEMS TM_CATCH_INTERS TM_CATCH_ELEMENT TM_CATCH_OFF
^TM_CATCH_OUTPUT_2D TM_CATCH_RULER_SLASH_GRID TM_CATCH_VERTEX
^TM_CATCH_CENTER TM_CATCH_RANGE



CATCH function

	    ,-->(PERMANENT)--,
	    |		     |
-->(CATCH)--+------->--------+-->(ALL)--------------------------+-->
			     |					|
			     +-->(VERTEX)---------------------->+
			     |					|
			     +-->(ELEM)------------------------>+
			     |					|
			     +-->(INTERSECTION)---------------->+
			     |					|
			     +-->(CENTER)---------------------->+
			     |					|
			     +-->(OFF)------------------------->+
			     |					|
			     +-->(GRID)------------------------>+
			     |					|
			     | ,----->-----,			|
			     | |	   |			|
			     +-+-(RANGE)->-+->|range|---------->+
			     |					|
			     `-->(NO_VIEWPORT_RANGE)-->|range|->'

The CATCH function sets the catching  mode.  This mode controls how input points
are  interpreted,  and allows the user to select a point on the  screen  without
having to put the cursor  directly on that point.  The system catches to a point
only if it lies  within the  (imaginary)  circle  around  the edges of the small
cursor.

The  catching  mode is only  set for the  next  pick.  If  option  PERMANENT  is
selected, the chosen catch mode stays in effect until changed. The options RANGE
and NO_VIEWPORT_RANGE, however, are not affected by PERMANENT. They always keep 
their range values until they are changed again.

ALL is the default.  It looks for a vertex, then for an intersection, then for a
grid point, then for an element  (point  anywhere on an element).  If it finds a
vertex within the catch range, it catches to the closest such vertex; otherwise,
it proceeds with  intersections  and so on similarly.  Vertices are normally end
points of arcs,  splines, or straight  elements,  though with SHOW VERTEX ON you
can see (and catch to) a few additional  vertices.  Intersections can be between
any two elements, or between an element and the ruler.  If the system can't find
any of these, it uses the input point as given.

VERTEX,  INTERSECTION, GRID, and ELEM allow you to say what kind of catching you
want, saving some time over the more general ALL option.  CENTER  catches to the
center of  circles  and arcs, and  midpoints  of lines; in this  case, it is the
element  that you pick with the  cursor,  and not the  midpoint.  OFF turns  off
catching  completely.  These  options are  normally in force for only one catch,
after  which  the  mode  switches  automatically  back to  ALL.  If you use  the
PERMANENT  option, the  selected  catch mode stays in effect until you change it
again.


OFF allows you to enter all points without any correction.

The definition of "grid points" varies,  depending on the catch mode and whether
you have a ruler,  dot or line  grid, or no grid at all.  If the  catch  mode is
GRID,  the  grid  points  are the ones you  would  see if you  turned a grid on,
whether you have  actually  done so or not.  You are reminded of this by the x-y
display in the status line, which hops from grid point to grid point as you move
the cursor  around.  If the catch mode is ALL, then the grid points are only the
ones you see.  That is, if you have a line or dot grid on your screen, those are
the grid  points; if you have a ruler, the grid points are only the ticks on the
axes; if you have neither grid nor ruler, there are no grid points.

It is an error  (beep)  to set the catch  mode to  INTERSECTION,  VERTEX,  GRID,
CENTER or ELEM, and then try to catch to something else.

The RANGE option allows you to change the catch range.  The argument is the size
of the new range in pixels.  The small cursor changes to match this new range.

Normally there is no catching if points are read from the keyboard,from  macros,
or from files.  With the option  NO_VIEWPORT_RANGE  you can specify  the search-
range in user units to allow catching on this kind of point entry.

Switching to the large cursor has no effect on the catch range or mode.

The catch mode (but not the range) is irrelevant  when the digitized  points are
used to identify elements, as in DELETE, for example.

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

^CHAMFER TWO_PTS VERTEX DIST_DIST DIST_ANG
CHAMFER command

	     ,-----------------------------------------------------------,
	     |								 |
	     |	,-------------------------------------,			 |
	     v	v				      |			 |
-->(CHAMFER)-+--+-->(TWO_PTS)-+------>|pnt1|-->|pnt2|-+------------------+->
	     |	|	      ^						 ^
	     |	'-------------'						 |
	     |								 |
	     |		 ,---------------------------------,		 |
	     |		 v				   |		 |
	     +->(VERTEX)-+->|distance|-+--->|vertex point|-+------------>|
	     |		 |	       ^				 |
	     |		 '-------------'				 |
	     |		    ,------------------------------------,	 |
	     |		    v					 |	 |
	     +->(DIST_DIST)-+-|dist1|--|dist2|-+-|elem1|-|elem2|-+------>|
	     |		    |		       ^			 |
	     |		    '------------------'			 |
	     |		   ,-------------------------------------------, |
	     |		   v					       | |
	     '->(DIST_ANG)-+->|distance|-|angle|-+->|elem1|->|elem2|---+-'
			   |			 ^
			   '---------------------'

CHAMFER creates a chamfer.  Internally, all chamfers are just lines.

TWO_PTS  creates a chamfer at the two given  points, each of which must lie on a
line, arc, circle, or fillet.

DIST_ANG creates a chamfer that begins at the given distance from the corner, at
the given angle with respect to the first  element.  The first element must be a
line; the second may be a line, arc, circle, or fillet.

VERTEX creates a chamfer across a vertex.  The "distance" argument tells how far
from the vertex the chamfer should be along each line.  The vertex point must be
a place where two lines end.

DIST_DIST  accepts two distances,  then two elements.  The chamfer begins on the
first   element  and  ends  on  the  second.  The  distance   from  the  element
intersection  point to the chamfer beginning is "dist1", and the distance to the
chamfer end is "dist2".  The elements must be lines.

Once you enter a distance (VERTEX), two distances (DIST_DIST), or a distance and
an angle  (DIST_ANG),  these values are  remembered as defaults,  even after you
have left the command.

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

^CHANGE_COLOR COLOR TM_COLOR_CHANGE_COLOR
CHANGE_COLOR command

				 .----------------.
				 v		  |
--->(CHANGE_COLOR)--->|color|--->+--->|select|--->+--->

CHANGE_COLOR  changes the color of the selected elements.  You cannot change the
color of parts, though you can change the color of elements  within a part.  See
color functions for the possible colors.

See also SHOW, which can temporarily change the color of selected elements.

See also CHANGE_HATCH_PATTERN.

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

^CHANGE_CURRENT_INFO CURRENT_INFO INFO CURRENT TM_LAYER_CURRENT
CHANGE_CURRENT_INFO function

---->(CHANGE_CURRENT_INFO)---->|old string|---->|new string|---->

CHANGE_CURRENT_INFO  looks at all strings in the current  info, and  changes any
that match  old_string into  new_string.  Old_string may contain  wildcards (see
SELECT for a list).  If new_string is empty, the matched strings are deleted.

The current info is the info added to every newly created element, this includes
the layer number of the  element.  Therefore  this command may be used to change
from one layer to another.

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

^CHANGE_ELEM_INFO INFO TM_LAYER_CHANGE
CHANGE_ELEM_INFO command
						       ,-------<-------,
						       |	       |
--->(CHANGE_ELEM_INFO)-->|old string|-->|new string|-->+-->|select|--->+-->

CHANGE_ELEM_INFO looks at all info of the selected elements, and changes strings
that match  old_string into  new_string.  Old_string may contain  wildcards (see
SELECT for a list).  If new_string is empty, the matching strings are deleted.

This command may be used to move elements  from one layer to another,  since the
layer number of an element is represented as info.

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

^CHANGE_FILLET FILLET
CHANGE_FILLET command

				   ,-------------,
				   v		 ^
-->(CHANGE_FILLET)-->|new radius|--+-->|select|--+-->

CHANGE_FILLET  changes the radius of the selected  fillets.  If new_radius is 0,
the fillet is removed and the corner reconstructed.

Before  CHANGE_FILLET can do its work, it must be able to recognize the geometry
attached to the fillet.  If you have deleted or otherwise  disturbed  one of the
tangential  elements,  the command may report a failure.  In this case, you must
manually remove the fillet, reconstruct the corner, then use FILLET with the new
radius.

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

^CHANGE_GLOBAL_INFO INFO
CHANGE_GLOBAL_INFO function

---->(CHANGE_GLOBAL_INFO)---->|old string|---->|new string|---->

CHANGE_GLOBAL_INFO is like CHANGE_ELEM_INFO, except that the requested change is
applied to every element in memory.

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

^CHANGE_HATCH_ANGLE HATCH ANGLE
CHANGE_HATCH_ANGLE command

					,-------------,
					v	      ^
---->(CHANGE_HATCH_ANGLE)---->|number|--+-->|select|--+-->

CHANGE_HATCH_ANGLE changes the angle of the selected hatch.  See HATCH_ANGLE.

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

^CHANGE_HATCH_COLOR HATCH COLOR
CHANGE_HATCH_COLOR command

					,--------------,
					v	       ^
---->(CHANGE_HATCH_COLOR)----->|color|--+--->|point|---+-->

CHANGE_HATCH_COLOR  changes the color of the selected hatch .If the pattern used
by the hatch  has more then one color the  simple  pattern  nearest  to point is
changed.  See CURRENT_HATCH_PATTERN.

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

^CHANGE_HATCH_DIST HATCH DISTANCE
CHANGE_HATCH_DIST command

				       ,-------------,
				       v	     ^
---->(CHANGE_HATCH_DIST)---->|number|--+-->|select|--+-->

CHANGE_HATCH_DIST   changes   the   distance   of   the   selected   hatch.  See
HATCH_DISTANCE.

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

^CHANGE_HATCH_LINETYPE HATCH LINETYPE
CHANGE_HATCH_LINETYPE command

					      ,--------------,
					      v		     ^
---->(CHANGE_HATCH_LINETYPE)----->|linetype|--+--->|point|---+-->

CHANGE_HATCH_LINETYPE changes the linetype of the selected hatch .If the pattern
used by the hatch has more then one linetype the simple pattern nearest to point
is changed.  See CURRENT_HATCH_PATTERN.

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

^CHANGE_HATCH_PATTERN CURRENT HATCH PATTERN CONFIRM TM_CONFIRM
CHANGE_HATCH_PATTERN command

			    ,---------------,
			    v		    |
->(CHANGE_HATCH_PATTERN)--+-+->|offset|	    |
			  |	   v	    |
			  |	| dist |    |
			  |	   v	    |
			  |	|angle |    |
			  |	   v	    |
			  |	|color |    |
			  |	   v	    |
			  |	|linetype|->+-->(CONFIRM)-,
			  |				  | ,-----------,
			  |				  v v	        ^
			  '-------------->|point|---------+-+->|select|-+->

CHANGE_HATCH_PATTERN   changes   the   pattern  of  the   selected   hatch  (see
CURRENT_HATCH_PATTERN).  You can specify the pattern  directly, with one or more
repetitions of the five hatch pattern  parameters, or you can pick a point on an
existing hatch, in which case you get the pattern there.

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

^CHANGE_HATCH_REF_PT REF_PT HATCH
CHANGE_HATCH_REF_PT command

					,-------------,
					v	      ^
---->(CHANGE_HATCH_REF_PT)---->|point|--+-->|select|--+-->

CHANGE_HATCH_REF_PT  changes the  reference  point of the  selected  hatch.  See
HATCH_REF_PT.


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

^CHANGE_LEADER_ARROW LEADER_ARROW ARROW LEADER ARROW_TYPE DOT_TYPE SLASH_TYPE 
^TRIANGLE_TYPE NONE DOT SLASH TRIANGLE ARROW_SIZE SIZE
CHANGE_LEADER_ARROW command

                                                 +----------------+
                                                 v                |
-->(CHANGE_LEADER_ARROW)--->+-(ARROW_TYPE)----+--+--|selection|-->+---->
		            |                 ^ 
		            +-(DOT_TYPE)------+
			    |		      |
			    +-(SLASH_TYPE)----+
			    |		      |
			    +-(TRIANGLE_TYPE)-+
			    |		      |
			    +-(NONE)----------+

CHANGE_LEADER_ARROW changes the terminators of the selected leader_lines.

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

^CHANGE_LEADER_ARROW_SIZE LEADER_ARROW ARROW LEADER ARROW_TYPE DOT_TYPE 
^SLASH_TYPE TRIANGLE_TYPE NONE DOT SLASH TRIANGLE ARROW_SIZE SIZE
CHANGE_LEADER_ARROW_SIZE command


                                                +----------------+
                                                v                |
-->(CHANGE_LEADER_ARROW_SIZE)---->|number|----->+--|selection|-->+---->


CHANGE_LEADER_ARROW_SIZE   changes   the  size  of  the   selected   leader_line
terminators.

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

^CHANGE_LINETYPE LINETYPE TM_LINETYPE_CHANGE_LINETYPE
CHANGE_LINETYPE command

				       .----------------.
				       v		|
--->(CHANGE_LINETYPE)--->|linetype|--->+--->|select|--->+--->

CHANGE_LINETYPE  changes  the  line  type of  selected  elements,  which  may be
construction  geometry  or real  geometry.  See  LINEPATTERN  functions  for the
possible linetypes.

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

^CHANGE_PART_REF_PT REF_PT LOAD DRAWING_SCALE PARTS

CHANGE_PART_REF_PT function

---->(CHANGE_PART_REF_PT)---->|point|---->

CHANGE_PART_REF_PT   changes  the  reference  point  of  the  active  part.  The
reference  point is used in three  places.  First,  when you LOAD a drawing as a
subpart, you choose a location  point for the subpart.  The subpart's  reference
point  is  placed  at  that  location.  Second,  when a part  is a  symbol,  the
reference  point is the point that remains fixed  relative to the geometry  when
you change the drawing scale.  Third, when you bring a part into the active part
with  GATHER, you are  sometimes  asked for a location  point.  In this case, as
with LOAD, it is the reference point that goes there.

Before you change the part  reference  point, it is the lower left corner of the
part box.  If you change the part  reference  point, then delete all elements in
the part, your change is forgotten.

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

^CHANGE_TEXT TEXT CHANGE
CHANGE_TEXT command

				  ,------------,
				  v	       |
-->(CHANGE_TEXT)--+-->|new line|-+-+->|select|--+-->
		  |		 ^
		  `--->(SCREEN)--'

CHANGE_TEXT  changes one or more  existing  texts to new text.  Single  line and
multi line text is possible..

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

^CHANGE_TEXT_ADJUST TEXT ADJUST
CHANGE_TEXT_ADJUST command

				    ,-------------,
				    v		  |
-->(CHANGE_TEXT_ADJUST)-->|number|--+-->|select|--+-->

CHANGE_TEXT_ADJUST  changes the adjust  parameter of a selected text.  The range
for the adjust number is [1..9] (see TEXT_ADJUST).

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

^CHANGE_TEXT_ANGLE TEXT ANGLE TM_TEXT_2 SM_TEXT_2
CHANGE_TEXT_ANGLE command

					    ,-------------,
					    v		  |
-->(CHANGE_TEXT_ANGLE)-+->|number|--------->+-->|select|--+-->
		       |		    ^
		       |		    |
		       +->|point|-->|point|-+

CHANGE_TEXT_ANGLE  changes the angle of the selected text (see TEXT_ANGLE).  The
angle is specified by a value or by two points.

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

^CHANGE_TEXT_FILL TEXT FILL
CHANGE_TEXT_FILL command

				  ,-------------,
				  v		|
-->(CHANGE_TEXT_FILL)--+-->(ON)-->+-->|select|--+---->
		       |	  ^
		       '-->(OFF)--'

CHANGE_TEXT_FILL turns filling of the selected text on or off.  See TEXT_FILL.

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

^CHANGE_TEXT_FONTNAME TEXT FONT
CHANGE_TEXT_FONTNAME command

					     +------------------+
					     v			|
---->(CHANGE_TEXT_FONTNAME)---->|string|---->+---->|select|---->+---->

CHANGE_TEXT_FONTNAME  changes the font of the selected  text.  If the font named
is not in memory, the text will appear as boxes until the font is loaded.

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

^CHANGE_TEXT_FRAME BOX BALLOON TEXT FRAME
CHANGE_TEXT_FRAME command

				       ,-------------,
				       v	     |
-->(CHANGE_TEXT_FRAME)--+-->(OFF)------+-->|select|--+---->
			|	       ^
			|-->(BOX)----->|
			|	       |
			+-->(BALLOON)->+

CHANGE_TEXT_FRAME changes the frame of the selected text.  See TEXT_FRAME.

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

^CHANGE_TEXT_LINESPACE TEXT
CHANGE_TEXT_LINESPACE command

				       ,-------------,
				       v	     |
-->(CHANGE_TEXT_LINESPACE)-->|number|--+-->|select|--+-->

CHANGE_TEXT_LINESPACE  changes the spacing  factor between lines of the selected
multi-line   text.  The  distance   between  the   baselines   of  the  text  is
linespace*size.

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

^CHANGE_TEXT_RATIO TEXT RATIO
CHANGE_TEXT_RATIO command

				   ,-------------,
				   v		 |
-->(CHANGE_TEXT_RATIO)-->|number|--+-->|select|--+-->

CHANGE_TEXT_RATIO  changes the ratio between  character  width and height in the
selected text.  The height  remains  constant, and the width changes to fit this
new ratio.

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

^CHANGE_TEXT_SIZE TEXT SIZE
CHANGE_TEXT_SIZE command

				  ,-------------,
				  v		|
-->(CHANGE_TEXT_SIZE)-->|number|--+-->|select|--+-->

CHANGE_TEXT_SIZE  changes the character  size of the selected  text.  The number
given is the new text  height.  The  text  width  is  updated  according  to the
element's text ratio (see TEXT_RATIO).

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

^CHANGE_TEXT_SLANT TEXT SLANT
CHANGE_TEXT_SLANT command

				   ,-------------,
				   v		 |
-->(CHANGE_TEXT_SLANT)-->|number|--+-->|select|--+-->

CHANGE_TEXT_SLANT changes the slant of the selected text.  The new slant must be
between -80 and 80 degrees.  See TEXT_SLANT.

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

^CHANGE_VIEWPORT_COLOR BACKGROUND_COLOR BORDER_COLOR TEXT_COLOR CURSOR_COLOR
^CHANGE_VIEWPORT_COLOR COLOR VIEWPORT
CHANGE_VIEWPORT_COLOR function

-->(CHANGE_VIEWPORT_COLOR)->--+------------>|background color|----->------+-->
                              |                                           |
                              |                                           |
     ,-----------<------------'                                           ^
     |                                                                    |
     +->-(CURRENT)->-,   ,--------------------<------------------,        |
     |               |   |                                       |        |
     +->-|number|-->-+->-+------------>-----------+->|new color|-+->(END)-'
     |               |   |                        |
     +->-|pnt_2d|-->-'   v                        ^
     |                   |                        |
     `------->-----------+->-(BACKGROUND_COLOR)->-+
                         |                        |
                         +->---(BORDER_COLOR)--->-+
                         |                        |
                         +->----(TEXT_COLOR)---->-+
                         |                        |
                         `->---(CURSOR_COLOR)--->-'
                       

CHANGE_VIEWPORT_COLOR changes the background color of the current viewport.  See
COLOR for a list of colors.

CHANGE_VIEWPORT_COLOR  has two different  modes of operation :

If background  color is entered  directly after  invocation of the function, the
system will set the background  color of the viewport to that color and will set
the other  viewport  colors to defaults  depending  on the  viewport  background
color.  This behavior is maintained for compatibility with previous revisions.

If you either select a viewport or enter one of the qualifiers  mentioned above,
the system will allow you to enter the  different  colors  individually.  Colors
that  you  do  not  change  explicitly,  will  keep  their  values.  (Example  :
CHANGE_VIEWPORT_COLOR  CURSOR_COLOR WHITE END will set the cursor color to white
and will leave all other colors unchanged).

CURRENT indicates that you want to change color(s) of the current viewport.  You
can use this  qualifier  to  indicate  that you want to use the  second  mode of
operation.  You can  also  select a  viewport  by  picking  or by  entering  the
viewport number.

Use the qualifiers BACKGROUND_COLOR, BORDER_COLOR, TEXT_COLOR or CURSOR_COLOR to
indicate  which  particular  color you want to change.  If you do not use one of
these  qualifiers,  the system will allow you to enter the colors in turn, until
you have  completed you input by entering END or you enter any new command.  Use
CANCEL to abort the function, leaving all viewport colors unchanged.

Note :

If you enter a new background  color in the second mode of operation, there will
be NO  automatic  calculation  of the other  colors as this is done in the first
mode.  Example  :  If you have a  cursor  color  of  WHITE  and you  change  the
background  color to WHITE too, the system will not adjust any of the colors, so
you will get a WHITE cursor on a WHITE background.

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

^CHANGE_VIEWPORT_SIZE SIZE VIEWPORT TM_PORT_CHANGE_SIZE
^TM_PORT_LARGE_SLASH_SMALL
^Viewport_switch
CHANGE_VIEWPORT_SIZE function

-->(CHANGE_VIEWPORT_SIZE)-->|new corner point|-->|new opposite corner point|-->

CHANGE_VIEWPORT_SIZE  changes the size of the current  viewport.  The new corner
points may be specified in the crt pixel  coordinate  system (origin lower left,
each pixel one  unit), or may be  digitized  on the crt  screen.  This  function
tries to keep the current  window  settings, but minor changes are  necessary if
the aspect ratio is changed.  See CREATE_VIEWPORT for more information.

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

^CHAR_LAYOUT TEXT FONT BREAK
CHAR_LAYOUT command

		   +<------------------------------------------+
		   |					       ^
		   |		  ,--------------,	       |
		   v		  v		 |	       |	
-->(CHAR_LAYOUT)-->+-->|string|---+-->|point|--+-+------------>+-->(END)-->
				  |	       ^ |	       ^
				  '-->(BREAK)--' '-->|number|--'

CHAR_LAYOUT  (re)defines  the  character(s)  of the current font.  The character
strokes are defined in terms of an  imaginary  grid  measuring  250 x 250 units,
whose origin is the lower left corner.

String  describes  the character to be defined.  For 8 bit fonts, the  character
range is from #0 to #255.

Point describes a point on the grid.  Its range is integer 0..250,0..250.

BREAK is an option to lift the pen and move it to next point.

Number  gives the real width of the  character  including  the space to the next
character.  It is in grid units with the integer range 0..250.  Default value is
width parameter of the DEFINE_FONT function.

A maximum of 250 points or BREAKs are accepted per character.

If you use  characters  of a font which  have not been  previously  defined  the
system will display them as boxes.

See DEFINE_FONT for the mapping of grid units to user units.

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

^CIRCLE CENTER DIAMETER THREE_PTS PARALLEL TAN2_PT
CIRCLE command

	     ,-----------------------------------------------------------,
	     |					   ,---------------,	 |
	     v					   v		   |	 |
-->(CIRCLE)--+--+-->(CENTER)----+-->|center point|-+-|per point|-+-+-----+->
	     |	|		^		   |		 |	 |
	     |	`---------------'		   `--|radius|---'	 |
	     |								 |
	     |			,------------------<-------------------, |
	     |			v				       | |
	     +------(DIAMETER)--+-->--|end point1|---|end point2|------+-+
	     |								 |
	     |			,------------------<-----------------,	 |
	     |			v				     |	 |
	     +-->(THREE_PTS)----+->|per pnt|-->|per pnt|-->|per pnt|-+-->+
	     |								 |
	     |					   ,--------------------,|
	     |					   v			||
	     +->(PARALLEL)->|pnt on exist. circ|-+->|pnt on new circ|-+-++
	     |					 v		      ^  |
	     |					 `-----|distance|-----'  |
	     |							         |
	     |		  ,------------------------<-------------------, |
	     |		  v					       | |
	     `->(TAN2_PT)-+-|apptan pnt1|->-|apptan pnt2|-+--|radius|--+-'
							  |	       |
							  `-|position|-'

CIRCLE creates a circle.

TWO_PTS  creates  a circle  with the  given  center  and  radius  or center  and
peripheral point.

THREE_PTS creates a circle through the three given points.

PARALLEL makes a new circle parallel to the given circle/arc/fillet  through the
given  point or at the given  distance.  Positive  distances  mean  that the new
circle will be outside the old one, and negative distances, inside.

TAN2_PT makes a circle  tangential to two other  elements, with the given radius
or through the given peripheral point.  The approximate  tangent points are used
both to identify the  elements  and to decide which of the  possible  tangential
circles was intended.  If the two elements are parallel  lines, the systems asks
for a peripheral point to determine which circle to create.  If the two elements
are  concentric  circles,  arcs, fillets, or c_circles,  the system asks for the
angle formed by the center of the old circles and the center of the new.

The  result of  TAN2_PT  depends  on  whether  the third  input is a radius or a
peripheral point.  With a peripheral point, the result is really a circle.  With
a radius, the result is a circle if  SPLITTING  is off.  If it is on, the result
is a "split"  circle, i.e., two arcs forming a circle whose  vertices are at the
tangent points.

Because of limited  accuracy in the  algorithms  that  calculate  tangents,  the
system occasionally announces that the requested tangent does not exist, when in
fact it does.  In these  cases, try  varying  the input  points, or use  another
option to construct the circle.

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

^COLOR OLD 
COLOR function (OLD)

-->(COLOR)--+-->(BLACK)---->+-->
	    |		    ^
	    |-->(BLUE)----->|
	    |		    |
	    |-->(CYAN)----->|
	    |		    |
	    |-->(GREEN)---->|
	    |		    |
	    |-->(MAGENTA)-->|
	    |		    |
	    |-->(RED)------>|
	    |		    |
	    |-->(WHITE)---->|
	    |		    |
	    '-->(YELLOW)----'

COLOR sets the current  geometry  and text color.  The current  color is the one
used for all newly created elements except  construction  lines and construction
circles, whose current color is set by C_COLOR, and hatching, set by HATCH_COLOR
(old).  See also CURRENT_DIM_TEXTS.

Use LINE (TEXT) |color functions| END for new macros.

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

^COMPACT NC TM_DATA_EXCHANGE_NC
Compact macro

-->(Compact)-->|filename|--->

Compact  generates a file in the COMPACT input  language  (used by NC programs).
If any geometry in the active part has been labeled with the LABEL  command, the
file  describes  that geometry;  otherwise, it describes all the geometry in the
active part.  See also APT, NCGL.

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

^CONVERT_SPLINE MIN_RADIUS MAX_RADIUS MIN_LENGTH UNDO BIARC SPLINE TM_UNDO

CONVERT_SPLINE command

		     ,-----------------------------,
		     v				   |
-->(CONVERT_SPLINE)--+-->|select|---+----------+---+------>
		     |		    |	       |   |
		     |		    +--(UNDO)--+   |
		     |				   |
		     +-->(MIN_RADIUS)-->|number|-->+
		     |				   |
		     +-->(MAX_RADIUS)-->|number|-->+
		     |				   |
		     +-->(MIN_LENGTH)-->|number|-->+
		     |				   |
		     +-->(KEEP_POINTS)------------>+
		     |                             |
		     '------------->|resolution|---'

CONVERT_SPLINE  converts  the  selected  spline to a biarc, a series of arcs and
lines.  CONVERT_SPLINE  tries to  create  lines  and  arcs as long as  possible,
therefore  the original  spline points may no longer be the begin and end points
of the lines and arcs.

MIN_RADIUS is the minimum radius of the arcs.

MAX_RADIUS is the maximum  radius of the arcs.  Curves with a larger  radius are
replaced  by lines  instead of arcs.  Setting  MAX_RADIUS  to 0 produces a biarc
with only lines.

MIN_LENGTH  is the minimum  length of an arc or line.  Setting  this number high
minimizes the number of elements created, at the expense of accuracy.

KEEP_POINTS  forces all lines and arcs which extend over the user defined spline
points to be split at these points.

The  resolution  is the maximum  number of elements  created per spline  segment
(that  portion of the spline  between two user data points).  The default is 10;
accepted values are 1..10.

UNDO restores the splines most recently converted.

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

^CREATE_DETAIL DETAIL PARTS
CREATE_DETAIL command

-->(CREATE_DETAIL)--->|magnify fac.|--+-->|box|-----+--|p1|-->|p2|--->
				      |		    |
				      '-->|part|----'

CREATE_DETAIL  creates a detail  view of  existing  geometry,  magnified  by the
requested factor.  The magnified geometry is placed in a part directly under the
top part.  This detail part is assigned an automatically  generated default name
in the sequence '.1', '.2', and so on.  Although the geometry is magnified,  any
dimensions  present,  or any that you add later,  give the  measurements  BEFORE
magnification.

To specify the  existing  geometry,  you can either  identify a part or indicate
opposite  corners of a box.  You then show  where the detail  part  should go by
indicating points p1 and p2.  The detail is scaled around p1, then moved from p1
to p2.

The  magnification  factor is the factor by which the  geometry as you see it is
scaled to produce the detail.  For  example, if you are  working  with a drawing
scale of 2:1, and ask for a  magnification  factor  of 5, the  detail  will be 5
times bigger than the selected  geometry,  producing  an effective  scale in the
detail of 10:1.

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

^CREATE_SUBPART PARTS
CREATE_SUBPART command

				    ,-------------,
				    v		  ^
-->(CREATE_SUBPART)--->|part name|--+-->|select|--+-->

CREATE_SUBPART  creates  a new part  within  the  active  part,  using  existing
elements.

To make an empty part, see INIT_PART and INIT_SUBPART.

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

^CREATE_VIEWPORT VIEWPORT TM_PORT_CREATE BACKGROUND BORDER CURSOR COLOR
CREATE_VIEWPORT function

--->(CREATE_VIEWPORT)---.
			|
  .---------------------'
  |
  |
  +->|background color|-+-|border color|-+-|text color|-+->|cursor color|-.
  |                     |                |              |                 |
  v                     v                v              v                 |
  +<--------------------+<---------------+<-------------+<----------------'
  |
  |
  +--->|border width|---+--->|inner border width|---.
  |                     |                           |
  v                     v                           |
  +<--------------------+<--------------------------'
  |
  |
  `--->|corner point|--->|opposite corner point|--->.

The inner border width is currently ignored.

CREATE_VIEWPORT  creates a new  viewport.  See COLOR for a list of  colors.  The
corner points may be specified in the crt pixel coordinate  system (origin lower
left, each  pixel one  unit), or may be  digitized  on the crt  screen.  The new
viewport will be made the current viewport.  You can have up to 16 viewports.

If a viewport is partially or totally covered by other ports its visual contents
will not be updated by any operation.  Digitizing in partially covered viewports
is  not  possible.  Exceptions  are  the  CURRENT_VIEWPORT  and  DELETE_VIEWPORT
functions, which will accept a pick in a partially  covered viewport to identify
this viewport.  To update the visual  contents of a partially  covered  viewport
use either the  NEW_SCREEN  function,  which will update all  information on the
screen, or use the  CURRENT_VIEWPORT  function, which will update and make fully
visible one specific viewport.

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

^CS RELATIVE ABSOLUTE GRID GRID_FACTOR RULER COORDINATE COORDINATESYSTEM
^COORDINATESYSTEM
COORDINATE SYSTEM

This section describes the various coordinate systems used for input.

The coordinate system is irrelevant when you digitize a point with the tablet or
mouse.  However,  if you enter a length or an angle, or you  enter a point  with
the  keyboard  (or from a macro or file),  the  program  must  have  some way to
interpret this data.

The  ABSOLUTE  system is the  simplest,  but only  rarely  used.  It has a fixed
origin, and its X and Y axes are always  horizontal and vertical.  The units are
set by the UNITS command, and are originally millimeters.

The RELATIVE system, also called the input coordinate system, is the one used by
practically  every  command and function in HP-ME.  For example, if you say LINE
0,0  50,50,  you  refer  to the  input  coordinate  system.  You  can  see  this
coordinate system by turning on the RULER.  The arms of the ruler show the axes.
Ignore the ruler ticks for the time being.

On startup, the relative and absolute  systems are the same.  You can change the
relative  system in two ways:  with UNITS, or with the CS commands (all of which
have names  beginning  "CS_").  If you say UNITS INCHES, the unit distance along
each axis  becomes 1 inch  instead of 1 mm.  UNITS  also  changes  the  absolute
system, as mentioned above.

The  second way to change the  relative  system is with the CS  commands.  These
allow you to specify an origin, as well as a direction and length for each axis.
These  commands  (and only these)  accept the  options  ABSOLUTE  and  RELATIVE,
allowing you to specify these points,  angles, and lengths in either  coordinate
system.  The CS commands change only the relative system.  For example,  CS_AXIS
2,0 0,2 says that the unit  distance  along  each axis is 2.  In this  case, the
specification  was absolute, so we get,  assuming  UNITS  INCHES, 2 inches.  The
absolute  unit is 1 inch, and the relative unit is 2 inches.  If,  incidentally,
we now say UNITS MM, the absolute unit is 1 mm, and the relative unit is 2 mm.

Almost every command and function uses the input coordinate  system to interpret
angles,  lengths, and  non-digitized  points.  (The only exceptions are commands
that deal with  devices,  like the tablet or the screen.)  Angles are assumed to
be relative to the X axis (which  might be tilted).  Lengths, in any  direction,
are assumed to be relative to the unit distance along the X axis (which might be
different  from  that  along  the  Y  axis).  Points  are   interpreted  in  the
conventional way.

Now let's  consider  the ruler  ticks.  The  ticks  are on the user  grid,  also
displayable  with  DOT_GRID and  LINE_GRID.  The  relationship  between the unit
distance (of the input coordinate  system) and the distance between ticks is set
by  GRID_FACTOR.  At system  startup,  the grid factor is 10, so the ruler ticks
are 10 mm  apart.  GRID_FACTOR  20 makes  the  ruler  ticks 20 mm  apart.  Using
GRID_FACTOR has no effect on either coordinate system; it just changes where the
grid points are.

What is the  effect  of UNITS or the CS  commands  on the grid  points  or ruler
ticks?  UNITS, although it changes both coordinate systems, has no effect on the
grid points.  The grid factor is  automatically  changed to keep the grid points
where they  were.  The CS  commands,  on the other  hand, do not change the grid
factor, and so can change the spacing of the grid points.  An example:

	startup			   grid distance 10 mm
	UNITS INCHES		   grid distance 10 mm
	GRID_FACTOR 1		   grid distance 1 inch
	GRID_FACTOR 2		   grid distance 2 inches
	CS_AXIS 2,0 0,2		   grid distance 4 inches

The status line has useful information about the input coordinate system and the
grid  factor.  The X/Y  feedback  on the left  shows  coordinates  in the  input
coordinate  system.  The only  exception is when you have said  ABSOLUTE in a CS
command; here you see absolute  coordinates.  The units  displayed are the units
of the input coordinate system.  When these units are non-standard, you see only
"usr".  Just  before  the  units  display  is the grid  factor.  This  factor is
suppressed if there is no grid or ruler, or if the grid factor does not fit into
the 7 columns provided.

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

^CS_AXIS CS AXIS RELATIVE ABSOLUTE GRID RULER TM_RULER_SLASH_GRID_ISOM_TOP
^TM_RULER_SLASH_GRID_ISOM_FRONT TM_RULER_SLASH_GRID_ISOM_SIDE
CS_AXIS function

--->(CS_AXIS)--{1}--+-->|vec1|----------+-{1}--+-->|vec2|------------->
		    |			|      |		    |
		    |			|      |		    |
		    `-->|ang1|->|len1|--'      `-->|ang2|->|len2|---'

{1}
   ,----------<---------------,
   |                          |
---+-+----------------------+-+----->
     |			    |
     +--->(RELATIVE)------->+
     |			    |
     '--->(ABSOLUTE)------->'

CS_AXIS  redefines the axes of the input  coordinate  system, leaving the origin
fixed.  You define  first the X axis, then the Y axis, in both cases either with
a point (vector from 0,0) or an angle and length.

The default input method is ABSOLUTE.  See also CS.

CS_AXIS  does not change the input  coordinate  system until after all input has
been  interpreted; thus RELATIVE when specifying the Y axis means that the input
is relative to the system that was in effect before CS_AXIS was invoked.

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

^CS_MIRROR CS MIRROR GRID RULER
CS_MIRROR function

--->(CS_MIRROR)---->|axis number|------------->

The axis of the input coordinate system identified by number (1 is the X axis, 2
the Y axis) is reflected about the other axis.

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

^CS_REF_PT CS REF_PT RELATIVE ABSOLUTE MIX GRID RULER TM_RULER_SLASH_GRID_MOVE
^TM_RULER_SLASH_GRID_RESET
CS_REF_PT function

		 ,-----------------,
		 |		   ^
		 v		   |
--->(CS_REF_PT)--+-->(RELATIVE)----+
		 |		   ^
		 v		   |
		 |-->(ABSOLUTE)----'
		 v
		 +-->(MIX)-->|point1|-->|point2|--+->|point3|--,
		 |				  |	       |
		 |				  '->|value|---+
		 v					       |
		 '------------|point|--------------------------+---->

CS_REF_PT  changes the origin of the input coordinate  system.  You can indicate
the   origin   directly,   or   with   MIX.   MIX   generates   the   point   by
pnt1+value*(pnt2-pnt1)  or by dropping a  perpendicular  from point3 to the line
through  point1 and point2.  The default input method is ABSOLUTE.  See also CS.

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

^CS_ROTATE CS ROTATE RELATIVE ABSOLUTE GRID RULER TM_RULER_SLASH_GRID_TURN_ABS
^TM_RULER_SLASH_GRID_TURN_REL
CS_ROTATE function

		 ,-----------------,
		 |		   ^
		 v		   |
--->(CS_ROTATE)--+-->(RELATIVE)----+
		 |		   ^
		 v		   |
		 |-->(ABSOLUTE)----'
		 v
		 +-->|angle|------------->

CS_ROTATE rotates the input coordinate system about its origin.  You specify the
angle of the X axis in the new system.  ABSOLUTE  (the  default)  means that the
angle is  relative  to the  horizontal;  RELATIVE,  that it is  relative  to the
current system.

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

^CS_SET CS SET RELATIVE ABSOLUTE TWO_PTS THREE_PTS GRID RULER
^TM_RULER_SLASH_GRID_PLACE
CS_SET function

	     ,--------------,
	     ^		    v
-->(CS_SET)--+--(TWO_PTS)-->+--{1}--|org pt|--{1}--|X pt|--------------->
	     |
	     +--(THREE_PTS)--{1}--|org pt|--{1}--|X pt|--{1}--|Y pt|---->

{1}
-----+----------------------+------->
     |			    |
     +--->(RELATIVE)------->+
     |			    |
     '--->(ABSOLUTE)------->'

CS_SET changes both the origin and the angle of the axes of the input coordinate
system.  With  TWO_PTS, you indicate the origin and any point on the X axis; the
angle between X and Y axis remains  unchanged.  With THREE_PTS, you indicate the
origin and points on the X and Y axes, respectively.  CS_SET does not change the
units along the axes.

The default input method is ABSOLUTE.  See also CS.

CS_SET changes the input coordinate  system after each input point.  Between the
origin  input and the X point  input, the origin is moved.  Between  the X point
input and the Y point input (THREE_PTS  only), the coordinate  system is rotated
to pass  through  the new X point.  You must take this into  account  if you use
RELATIVE for any input after the first.

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

^CURRENT_FONT I_SET_FONT TEXT CURRENT FONT
CURRENT_FONT function

---->(CURRENT_FONT)---->|fontname|---->

CURRENT_FONT selects the font used for new texts.  If the font is not in memory,
new text is drawn as boxes until the font is loaded.  The system  supplies  nine
fonts.  The three  standard  fonts that are  available  on the  screen  menu are
'hp_i3098_v',  'hp_d17_v' and 'hp_block_v'.  'hp_i3098_v'  compares exactly with
DIN 6776.

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

^CURRENT_HATCH_PATTERN NONE CURRENT HATCH PATTERN CONFIRM TM_CONFIRM
^CURRENT_HATCH_PATTERN I_HATCH_IRON I_HATCH_STEEL I_HATCH_COPPER STANDARDS
CURRENT_HATCH_PATTERN function

			     ,---------------,
			     v		     |
->(CURRENT_HATCH_PATTERN)--+-+->|offset|     |
			  |	    v	     |
			  |	 | dist |    |
			  |	    v	     |
			  |	 |angle |    |
			  |	    v	     |
			  |	 |color |    |
			  |	    v	     |
			  |	 |linetype|->+-->(CONFIRM)--,
			  |				    |
			  |				    v
			  '---------------->(NONE)----------+->

CURRENT_HATCH_PATTERN  defines the current hatch  pattern,  which is the pattern
used for newly created hatches.  NONE means that there is no current pattern, in
which  case hatch  lines are  determined  by the  current  hatch  angle,  color,
distance, reference point, and linetype.

A hatch pattern consists of one or more simple  patterns, sets of parallel lines
that are  superimposed  in each hatch.  Each simple pattern is determined by the
offset,  distance,  angle,  color,  and  linetype  specified.  Several  of these
parameters are interpreted relative to the current hatch parameters.  The offset
is from the hatch reference  point (set by  HATCH_REF_PT)  to a hatch line.  The
distance is the distance  between the lines, relative to the hatch distance (set
by  HATCH_DISTANCE).  That  is, if  the  hatch  distance  is  10,  and  distance
specified is 2, then the  distance  between the lines in this simple  pattern is
20.  The angle is added to the hatch angle (set by  HATCH_ANGLE)  to produce the
angle of the hatch lines.

There are some standard hatch patterns defined for steel, iron and copper.

Once a hatch has been created, it has a pattern, regardless of whether a current
pattern  existed  at the time of its  creation.  Thus, a second  way to create a
current hatch pattern is to say  GET_PROPERTIES  and identify a hatch.  Once you
have a current pattern,  HATCH_COLOR (old) and HATCH_LINETYPE (old) seem to have
no effect on new hatches, since each pattern, including the current one, has its
own color and linetype.  HATCH_COLOR (old) and  HATCH_LINETYPE  (old) affect new
hatches only when no current pattern exists.


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

^CURRENT_VIEWPORT CURRENT VIEWPORT TM_PORT_CURRENT
CURRENT_VIEWPORT function

->(CURRENT_VIEWPORT)--->+---->|digitized point within a viewport|---->+--->
		        |					      |
			+---->|viewport id number|------------------->+

CURRENT_VIEWPORT  sets the current  viewport.  The current  viewport  is the one
affected by REDRAW, WINDOW, LAST_WINDOW, RECALL_WINDOW, STORE_WINDOW, SHOW_PART,
VIEW, CHANGE_VIEWPORT_COLOR, and CHANGE_VIEWPORT_SIZE.

Identifying   the  id  number  of  a   viewport   automatically   executes   the
CURRENT_VIEWPORT function.

The current  viewport is always fully visible and uptodate.  This is enforced by
automatically  moving  it on top of  the  viewport  stack  if it was  previously
covered by other viewports.  See CREATE_VIEWPORT for more information.

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

^CURSOR SMALL LARGE CURSORSIZE SIZE SMALL LARGE
^TM_RULER_SLASH_GRID_CURSOR_LG_SLASH_SMALL
CURSOR function

-->(CURSOR)---+-->(SMALL)-->+---->
	      |		    ^
	      '-->(LARGE)---'

The  CURSOR  function  selects  the SMALL or the LARGE  cursor.  The size of the
small cursor is determined by the catch range.  The large cursor  extends to the
viewport boundaries.

The  choice of  cursor  has no effect  on  catching.  In  particular,  it is not
possible to use the ruler and the large cursor to emulate a grid.

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

^C_CIRCLE CIRCLE CENTER DIAMETER THREE_PTS PARALLEL TAN_PT_PT TAN2_PT TAN3
^TAN_CENTER CONSTRUCT
^TM_CONSTRUCT_13
^TM_CONSTRUCT_17
^TM_CONSTRUCT_21
^TM_CONSTRUCT_14
^TM_CONSTRUCT_18
^TM_CONSTRUCT_15
^TM_CONSTRUCT_19
^TM_CONSTRUCT_16
C_CIRCLE command

	     ,----------------------------------------------------------,
	     |					     ,-------------,	|
	     v					     v		   |	|
->(C_CIRCLE)-+--+-->(CENTER)------+-->|center point|-->|per point|-+----+->
	     |	|		  ^		       |--radius-|	|
	     |	'-----------------'				        |
	     |		    ,------------------<-------------------,    |
	     |		    v				           |    |
	     |->(DIAMETER)--+-->--|end point1|-->|end point2|------+--->|
	     |							        |
	     |		    ,--------------------------------------,    |
	     |		    v				           |    |
	     |->(THREE_PTS)-+->|per pnt|-->|per pnt|-+-|per pnt|-+-+--->|
	     |				       	     |	         |	|
	     |					     '--|radius|-'	|
	     |								|
	     |					   ,-----------------,  |
	     |					   v		     |  |
	     |->(PARALLEL)->|pnt on circ elem|-+->|pnt on new circ|-++->|
	     |				       |		    |   |
	     |				       '-----|distance|-----'   |
	     |							        |
	     |		      ,--------------------------------------,  |
	     |		      v					     |  |
	     |->(TAN_PT_PT)-+->|apptan pnt1|->-|point|-+--|point|--+-+->|
	     |					       |	   |    |
	     |					       '--|radius|-'    |
	     |							        |
	     |							        |
	     |		  ,-----------------------<------------------,  |
	     |		  v					     |  |
	     |->(TAN2_PT)-+-|apptan pnt1|-|apptan pnt2|-+->|radius|--+->|
	     |						|	     |  |
	     |						'-|position|-'  |
	     |							        |
	     |		,--------------------------------------------,  |
	     |	       v					     |  |
	     |->(TAN3)-+->|apptan pnt1|->|apptan pnt2|-|apptan pnt3|-+->|
	     |							        |
	     |		      ,-------------------------------------,   |
	     |		      v				            |   |
	     '-->(TAN_CENTER)-+---|apptan point|-->|center|-------->+---'

C_CIRCLE creates construction circles.

CENTER  creates a  c_circle  with the given  center  and  radius  or center  and
peripheral point.

DIAMETER creates a c_circle with the given points at the end of a diameter.

PARALLEL makes a new c_circle  concentric to the given element through the given
point or at the given  distance.  Positive  distances mean that the new c_circle
will be outside the element, and negative distances, inside.  The element may be
a circle, arc, fillet, or c_circle.

TAN2_PT makes a c_circle tangential to two other elements, with the given radius
or through the given peripheral  point.  If the two elements are parallel lines,
the systems asks for a peripheral point to determine which circle to create.  If
the two elements are concentric circles, c_circles, arcs, or fillets, the system
asks for the angle formed by the center of the old circles and the center of the
new.

THREE_PTS  creates a c_circle  through  the three  given  peripheral  points, or
through  the two given  peripheral  points  and with the  given  radius.  In the
latter case there are two possible  c_circles; the one chosen is to the right of
the (imaginary) line from the first point to the second.

TAN_PT_PT  creates a c_circle  tangential  to the  selected  element and passing
through  the given  points or  passing  through  the given  point with the given
radius.

TAN3 creates a circle tangential to the three selected elements.

TAN_CENTER creates a circle tangential to the identified  element with the given
center.

With the  tangential  options, the  approximate  tangent points are used both to
identify the elements and to decide which tangential circle was intended.

Because of limited  accuracy in the  algorithms  that  calculate  tangents,  the
system occasionally announces that the requested tangent does not exist, when in
fact it does.  In these  cases, try  varying  the input  points, or use  another
option to construct the circle.

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

^C_COLOR COLOR OLD
C_COLOR function (OLD)

-->(C_COLOR)--+-->(BLACK)---->+-->
	      |		      ^
	      |-->(BLUE)----->|
	      |		      |
	      |-->(CYAN)----->|
	      |		      |
	      |-->(GREEN)---->|
	      |		      |
	      |-->(MAGENTA)-->|
	      |		      |
	      |-->(RED)------>|
	      |		      |
	      |-->(WHITE)---->|
	      |		      |
	      '-->(YELLOW)----'

C_COLOR sets the current color for construction  geometry.  The current color is
the one given to newly created c_circles and c_lines.

Use C_LINE |color functions| END for new macros.

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

^C_LINE TWO_PTS HORIZONTAL VERTICAL PARALLEL PERPENDICULAR TAN_PT TAN2
^PT_ANG BISECT ANG_BISECT LINE
^TM_CONSTRUCT_1
^TM_CONSTRUCT_5
^TM_CONSTRUCT_9
^TM_CONSTRUCT_2
^TM_CONSTRUCT_6
^TM_CONSTRUCT_10
^TM_CONSTRUCT_3
^TM_CONSTRUCT_7
^TM_CONSTRUCT_4
^TM_CONSTRUCT_8
C_LINE command

	   ,-----------------------------------------------------------,
	   |		     ,--------------------------------,	       |
	   v		     v				      |	       |
->(C_LINE)-+-->(TWO_PTS)-----+-->|point 1|------>|point 2|--+----------+--->
	   |		     ^					       ^
	   |---->------------'					       |
	   |							       |
	   |		     ,--------------------------------,	       |
	   |		     v				      |	       |
	   |-->(HORIZONTAL)--+--+--->|point|-----+-------------------->|
	   |			|		 |		       |
	   |			+---|distance|---+		       |
	   |		     ,--------------------------------,	       |
	   |		     v				      |	       |
	   |-->(VERTICAL)----+--+--->|point|-----+-------------------->|
	   |			|		 |		       |
	   |			+---|distance|---+		       |
	   |							       |
	   |		  ,---------------+<------------------,	       |
	   |		  | ,--<-----,	  |		      |	       |
	   |		  | |	     |	  v		      |	       |
	   |->(PARALLEL)--+-+-|dist|-+-->-+-|elem|---->|pnt|--+---+--->|
	   |		  |					  |    |
	   |		  |			    +---<-----+	  |    |
	   |		  |			    |	      |	  |    |
	   |		  '-------------->--|elem|--+->|pnt|--+---'    |
	   |							       |
	   |							       |
	   |		       ,------------------------------------,  |
	   |		       v				    |  |
	   |-->(PERPENDICULAR)-+->|element pnt|-->-		    |  |
	   |			     ->--|pnt to drop the perpend.|-+->|
	   |							       |
	   |		  ,---------------------------------,	       |
	   |		  v				    ^          |
	   |-->(TAN_PT)---+-->|apptan pnt|----+---|point|---+-------->-|
	   |				      v		    ^	       |
	   |				      '---|angle|---'	       |
	   |							       |
	   |		    ,-------------------------------,	       |
	   |		    v				    |	       |
	   |-->(TAN2)-------+--|apptan pnt|-->|apptan pnt|--+--------->|
	   |							       |
	   |				   ,-----------------,         |
	   |				   v		     | 	       |
	   |-->(PT_ANG)-------+->|beg pnt|-+--+->|angle|--+--+-------->|
	   |				      |		  |	       |
	   |				      '--|point|--'	       |
	   |		     ,---------------------------------------, |
	   |		     v				             | |
	   |->(BISECT)-------+>--+->----+-|beg pnt|-+-+-|end pnt|-+--+-|
	   |			 |				       |
	   |		      (|frac|)			               |
	   |							       |
	   |		     ,---------------------------------------, |
	   |		     v				             | |
	   '->(ANG_BISECT)---+-+--|center|-+->|pnt1|-+-+-|pnt2|--+---'-'
			       |	   |	     | |	 |
			    (|frac|)	   '-|angle|-' '-|angle|-'

C_LINE creates construction lines.

TWO_PTS creates a c_line through the two given points.

PARALLEL creates c_lines parallel to a given c_line or line.  There are two ways
to use this  option.  With method 1, you  identify  the element to which the new
c_lines  should be parallel,  then you  indicate  points  through  which the new
c_lines  should  go.  With  method  2, you enter  distances,  then  identify  an
element, then indicate which side of the element is to be the positive one.  The
distances are all measured from the existing element.

PERPENDICULAR  creates a c_line  through the given point,  perpendicular  to the
given element.

TAN_PT makes a c_line  tangential to the selected element and either through the
given point or at the given angle.  The  approximate  tangent point is used both
to identify the element and to determine  which tangent is desired.  The element
may be a c_circle, circle, arc, or fillet.

TAN2  creates  a c_line  tangential  to two  elements.  Again,  the  approximate
tangent  points  determine  which  tangent  is  desired.  The  elements  may  be
c_circles, circles, arcs, or fillets.

VERTICAL and HORIZONTAL create vertical or horizontal  c_lines through the given
points or at the given  distances  from the origin.  Unlike  other  inputs  that
specify angles,  VERTICAL and HORIZONTAL are independent of the input coordinate
system.

PT_ANG  creates a c_line through the given start point at the given angle, which
may also be specified by a point.

BISECT  creates  perpendicular  bisectors  if you omit the  fraction or give the
fraction 0.5.  Otherwise, the resulting c_line is perpendicular to the (possibly
imaginary) line between the two given points, and the intersection point is pnt1
+ frac*(pnt2 - pnt1).

ANG_BISECT  works like BISECT, except that it divides  angles  instead of lines.
After the optional  fraction, you specify the vertex of the angle to be divided,
then, for each ray that forms the angle,  either a point on the ray or the angle
formed by the ray.

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

^C_LINETYPE LINETYPE OLD
C_LINETYPE function (OLD)

-->(C_LINETYPE)--+-->(SOLID)------------->+-->
                 |                        |
		 |-->(DASHED)------------>|
		 |		          |
		 |-->(LONG_DASHED)------->|
		 |		          |
		 |-->(DOT_CENTER)-------->|
		 |		          |
		 |-->(DASH_CENTER)------->|
		 |		          |
		 |-->(PHANTOM)----------->|
		 |		          |
                 |-->(CENTER_DASH_DASH)-->|
		 |		          |
		 `-->(DOTTED)------------>'

C_LINETYPE  sets  the  current  linetype  for  construction  geometry,  that is,
c_circles  and c_lines.  The current  linetype is the one used for newly created
elements.

Use C_LINE |linepattern functions| END for new macros.

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

^DEFINE_FONT TEXT DEFINE FONT
DEFINE_FONT function

---->(DEFINE_FONT)--->|string|--->|underlength|--->|height|--->|width|---->

DEFINE_FONT  defines a new font with the given  name.  It  becomes  the  current
font.  Characters  are specified with the  CHAR_LAYOUT  command, on an imaginary
250 x 250 grid,  with the  origin at the  lower  left.  In  conventional  fonts,
underlength  is the  distance  on this  grid from 0 to the  bottom  of a capital
letter.  This is the  length  of  descenders,  as in 'g' or 'j'.  Height  is the
height of capital  letters, and width the default width, both  specified in grid
units.

A typical font might have an underlength of 6, and height and width both 20.  In
this case,  CHAR_LAYOUT  would  specify  that 'A' began at 0,6.  X values  would
range from 0 to 20, and y values from 0 to 26.

A font need not contain letters; it may contain symbols, for example.  Thus, the
real  significance  of  underlength,  height, and width have  nothing to do with
letters.  Underlength specifies the text baseline, which is used for positioning
the  reference  point  with  respect to the grid (see  TEXT_ADJUST).  Height and
width  specify  the mapping  from grid units to user units.  Vertically,  height
grid units are mapped to the text size  (specified by TEXT_SIZE).  Horizontally,
width grid  units are  mapped to the text  width  (specified  by  TEXT_SIZE  and
TEXT_RATIO).

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

^DELETE UNDO TM_DELETE_2D TM_UNDO CONFIRM TM_CONFIRM
^Meview_del_all

DELETE command

		,<------(UNDO)--------,
		|		      |
		|<--------------------|
		v		      |
-->(DELETE)--+--+------|select|-------+--+-->
	     |				 ^
	     '--->(ALL)-->(CONFIRM)------'

DELETE  deletes the selected  element(s).  Construction  lines and  construction
circles are only deleted if you did not select any texts or other  geometry like
lines, arcs or circles together with the construction geometry elements.

DELETE ALL CONFIRM deletes all elements in the active part.

If you have deleted one or more  elements,  and you have not yet left the delete
command, the following two options are available:

 CANCEL restores all the deleted elements and exits.

 UNDO restores the element(s) most  recently  selected	for delete.

You can UNDO as much as you like, but only over the elements  deleted during the
current delete command.  Similarly,  CANCEL  restores only the elements  deleted
during the current command.  Once you leave the command, it's too late.

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

^DELETE_CURRENT_INFO CURRENT_INFO DELETE CURRENT INFO
DELETE_CURRENT_INFO function

-->(DELETE_CURRENT_INFO)-->

DELETE_CURRENT_INFO deletes the current info.  The current info is that added to
each new element.

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

^DELETE_ELEM_INFO DELETE ELEM INFO
DELETE_ELEM_INFO command

		      ,-----------,
		      v		  |
-->(DELETE_ELEM_INFO)-+->|select|-+->

DELETE_ELEM_INFO deletes all info of the selected element(s).

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

^DELETE_FONT TEXT DELETE FONT CONFIRM TM_CONFIRM
DELETE_FONT function

---->(DELETE_FONT)---->+---->|string|---------------+---->
		       |			    ^
		       +---->(ALL)---->(CONFIRM)----+

DELETE_FONT  deletes  the  definition  of the font with the given name.  If this
font is used by any text, the system  default font (boxes instead of characters)
is used thereafter.  The system default font 'hp_def_font' cannot be deleted.

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

^DELETE_HATCH DELETE HATCH UNDO TM_UNDO CONFIRM TM_CONFIRM
DELETE_HATCH command

		   ,<---(UNDO)-----------,
		   |			 |
		   |<--------------------|
	           v			 |
-->(DELETE_HATCH)--+--+--|select|--------+-+-->
		   |			   ^
		   '-->(ALL)-->(CONFIRM)---'

DELETE_HATCH deletes the selected hatch.

ALL CONFIRM deletes all hatches in the active part.

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

^DELETE_LABEL DELETE LABEL NC CONFIRM TM_CONFIRM
DELETE_LABEL command

		      +--(GLOBAL)-->+
		      |		    |
---->(DELETE_LABEL)---+-------------+--->(CONFIRM)---->

DELETE_LABEL  removes all label information  generated by the LABEL command from
the active part.  With the additional  qualifier GLOBAL the label information is
removed from all parts.

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

^DELETE_VIEWPORT DELETE VIEWPORT TM_PORT_DELETE CURRENT_VIEWPORT
DELETE_VIEWPORT function

---->(DELETE_VIEWPORT)---->+--->|digitized point within a viewport|->+---->
			   | 					     |
			   +--->|viewport id number|---------------->+
			   |					     |
			   +--->(ALL)------------------------------->+

DELETE_VIEWPORT  deletes  the  specified  viewport.  If ALL is  given,  then all
viewports  are  deleted.  If  DELETE_VIEWPORT  deletes the  current  viewport no
viewport  is the  current.  For  selecting a viewport as the current one you can
either pick the viewport number or use CURRENT_VIEWPORT.  See CREATE_VIEWPORT or
CURRENT_VIEWPORT for more information.

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

^DIMENSION TM_DIMENSION TM_DIMENSION_1 TM_DIMENSION_2
DIMENSION

For help with dimensioning, use HELP with a specific command, or HELP DIMENSION,
which brings you here, followed by the N (Next)  command.  Using N will take you
to the  beginning of each block of  dimension  commands  (e.g., those  beginning
"DIM_" or "CHANGE_DIM_" or CURRENT_DIM_").

A dimension is always  associated  with one or more ELEMENTS (e.g.  lines, arcs)
and NEVER to VERTICES only.  Picking a vertex  directly  causes the dimension to
be  associated  randomly  to one of the  ELEMENTS at the  vertex.  If any of the
ELEMENTS  a  dimension  is  associated  with  is  removed  through  deletion  or
modification,  then the  dimension  will also be deleted.  When the ELEMENTS are
modified, the dimension value automatically adjusts to reflect the modification.
The location of the  dimensions is always  indicated in the middle of their text
box.

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

^DOT_GRID CS GRID
^TM_RULER_SLASH_GRID_DOT_GRID_ON
^TM_RULER_SLASH_GRID_DOT_GRID_OFF
DOT_GRID function

	       ,--------------------------------,
	       |				|
	       v				|
--->(DOT_GRID)-+->|point or viewport number|----+-->+-->(ON)---,
	       |				^   |	       |
	       +->(ALL)-------------------------+   '-->(OFF)--+-->
	       |				|
               '->|color|---------------------->'
               |                                |
	       '------------------------------->'

DOT_GRID  turns  the dot grid on or off in the  specified  viewport(s)  .  If no
viewport is specified the grid is turned on or off in the current viewport .  If
the LINE_GRID is active in the specified viewport(s) , it is turned off.

The location of the grid points is  determined by the input  coordinate  system,
set by the  commands  beginning  with  "CS_",  and  the  grid  spacing,  set  by
GRID_FACTOR.  You can catch to the grid if the  catch  mode is ALL or GRID,  see
CATCH for more information.


The drawing of the grid is suppressed in viewports where there are too many grid
points.

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

^DRAWING_SCALE SCALE SYMBOL TEXT DIMENSION PLOT
DRAWING_SCALE function

--->(DRAWING_SCALE)--->|scale factor|--->

     scale factor: number

DRAWING_SCALE  scales the geometry a the specified factor.  Texts,  dimensioning
text, and symbols are not  changed.  The effect is seen best when  plotting.  To
scale everything when plotting use the plot scale factor.

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

^EDIT_CURRENT_INFO CURRENT_INFO CURRENT INFO
EDIT_CURRENT_INFO function

-->(EDIT_CURRENT_INFO)-->

EDIT_CURRENT_INFO enters the built-in editor (see EDITOR) and allows you to edit
the  current  info,  which  is the  info  assigned  to  every  new  element.  An
unsuccessful  exit  (BREAK or ESC)  from the  editor  leaves  the  current  info
unchanged.

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

^EDIT_ELEM_INFO INFO
EDIT_ELEM_INFO command

		     ,------------------,
		     v			|
-->(EDIT_ELEM_INFO)--+--->|id pnt|----->+-->
		     |			^
		     '--->|partname|----'

EDIT_ELEM_INFO  allows you to edit the info of the identified element, using the
built-in  editor (see EDITOR).  An  unsuccessful  exit (BREAK or ESC) leaves the
info as it was.

If you identify the element with id_pnt, it need not be in the active  part.  If
you use a partname the part can be anywhere.

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

^EDIT_PART PARENT TOP PARTS SM_PARTS_2D TM_PARTS_EDIT TM_PARTS_1 SM_PARTS_1 
^SM_PARTS
EDIT_PART command

-->(EDIT_PART)--+->|part name|-----+-->
		|		   ^
		|--->|point|------>|
		|		   |
		|--->(PARENT)----->|
		|		   |
		'----->(TOP)-------'

EDIT_PART  changes  the  active  part to the one  designated.  This is  required
before you can change (add, delete, modify) elements in that part.

When  followed by a part name  (string),  it changes the active part to the part
with that name.

With  PARENT,  the new active part is the parent of the old one.  If there is no
parent (i.e., you are already at the top of the drawing),  EDIT_PART  PARENT has
no effect.

With TOP, the new active part is the top of the drawing, also known as the root.

With the point  option, you pick either a boxed  part,  which then  becomes  the
active  part, or any other type of  element,  in which case the part  containing
that element becomes the active part.

The name of the active  part is shown in the status  line,  along with the level
number,  measuring  from the top,  which  is at level 0.  An 'S' in place of the
level number means that the part is shared.

A side effect of EDIT_PART is that all parts with no elements are  automatically
deleted.  (Since  parts are  elements, a part  containing  a part is not a "part
with no  elements".)  The two  exceptions  are the top  part,  which  cannot  be
deleted, and the part you want to edit.  For example, suppose you are not in the
top part, and you say  DELETE  ALL  CONFIRM.  The  active  part, say 'X', is now
empty.  As soon as you move  out of 'X' with  EDIT_PART,  'X'  will be  silently
deleted.  Another  example:  you use GATHER  (without the COPY  option) to bring
everything  from part 'Y' into the active  part 'X'.  Part 'Y' is now empty, but
it will not be deleted until the next  EDIT_PART.  Furthermore, if you have made
a mistake,  and realize  this, you can always say  EDIT_PART  'Y' and gather the
elements back where they belong.

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

^EDIT_TEXT TEXT 
EDIT_TEXT command
		     ,-----------------,
		     v		       |
---->(EDIT_TEXT)---->+---->|point|---->+---->

EDIT_TEXT  allows you to edit the  identified  text in the  screen  editor  (see
EDITOR).

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

^ELLIPSE ELL_VVP ELL_CAR ELL_CPP
ELLIPSE macro

-->(Ell_vvp)-->|end of axis|--->|other end of axis|-->|periph pt|---->

-->(Ell_car)-->|center|-->|maj axis ang|-->|maj rad|-->|min rad|---->

-->(Ell_cpp)-->|center|-->|periph pt|-->|periph pt|---->

ELLIPSE draws splines that approximate ellipses.

With Ell_vvp you indicate  opposite  points of an axis (major or minor),  then a
peripheral point.

With  Ell_car,  you  indicate a center  point, then the angle of the major axis,
then the major and minor radius.

With Ell_cpp, you indicate the center point and two peripheral points.

It is not possible to draw  elliptical  arcs  directly;  you must first draw the
ellipse,  then convert it to a biarc with  CONVERT_SPLINE,  then delete what you
don't want, possibly splitting elements in the process.

ELLIPSE  is  actually  only the name of a menu slot; the three  macros are named
Ell_vvp, Ell_car, and Ell_cpp.

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

^END_PART PARTS TM_PARTS_END
END_PART command

--->(END_PART)--->

END_PART is exactly the same as EDIT_PART PARENT.

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

^EQUIDISTANCE CONTOUR PARALLEL UNDO TM_UNDO
EQUIDISTANCE command

				    ,--(UNDO)<-.
				    v	       |
		   ,----+-----------+----------+--------------------,
		   |	|					    |
		   |	|	,----------------,		    |
		   v	v	v	         |  		    |
->(EQUIDISTANCE)->-+|d|-+->|p0|-+-+->-|cmpnt|--+-+->(END)->|side|---+-->
				  |    	       |
				  `-<-(UNDO)-<-'

EQUIDISTANCE creates equidistance / parallel contour.

First enter the  distance  value d which the  parallel  contour  will take, then
specify the reference  contour by identifying  the start point p0 of contour and
contour  elements.  The system will allow you to skip elements  along a contour,
as long as you do not skip more than one element past any branch points.

The included  elements, these may be lines, arcs, fillets or circles, must be in
the active  part.  For the case of open  contour,  enter END when the  reference
contour is defined.  Specify the side of the parallel contour to complete the 
input information. If you specify the side relative to an arc or a fillet then
think of this arc or fillet as if it was a circle and pick either inside or 
outside the circle to create the parallel contour inside or outside the arc or 
fillet. If you specify the side of the parallel contour relative to a line then
simply treat it like an infinite line and pick left or right of this infinite 
line.

Enter UNDO to remove the most recently created contour.

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

^MAX_FEEDBACK

-->(MAX_FEEDBACK)--------->|number|---------->

With  MAX_FEEDBACK  you can specify how much  element  tracking  you want in the
MODIFY and STRETCH command  (default is 20 feedback  points).  Tracking one line
costs two feedback points, one arc five points.

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

^FILES
Files produced automatically

Some  commands,  functions, or macros can produce  temporary  files.  To prevent
name conflicts, avoid using the following filenames:

	Name		Produced by
	~~~~		~~~~~~~~~~~
	hp_catfile	reading and writing files
	log		reading file in MI format
	work1		NC and FE programs
	work2.ASC	"
	nclog		"
	mdsi		"

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

^FILLET LITERAL BLEND TM_CREATE_2 SM_CREATE_2 UNDO TM_UNDO
FILLET command

	    ,----------------------------------------------------------,
	    |		  ,------------------------------------------, |
	    v		  v					     ^ ^
->(FILLET)-+-->|radius|-+-+->|pnt on 1st elem|--->|pnt on 2nd elem|--+-+-->
	    v		^ |					     ^ |
	    +-----------' '-------->|vertex pnt|---------------------' |
	    |							       |
	    '-->(LITERAL)-->|center pt|-->|beg pt|-->|end pt|-->-------'

FILLET makes a fillet with the given radius tangent to the two selected elements
or to the  two  elements  that  end in  the  selected  vertex  point.  See  also
KEEP_CORNER.

FILLET has no UNDO option, but it is possible to reconstruct  the corner in most
cases by using CHANGE_FILLET with radius 0.

The LITERAL option is useful when you need a fillet, know exactly where it goes,
and don't want to worry about the  tangential  elements.  For human  users, this
situation rarely arises, but for program-generated  commands (like the output of
the SAVE command), it is convenient.

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

^FOLLOW MEASURE
^TM_RULER_SLASH_GRID_FOLLOW_ON
^TM_RULER_SLASH_GRID_FOLLOW_OFF
FOLLOW function

-->(FOLLOW)--+--->(ON)----,
	     |		  |
	     '--->(OFF)---+---->

FOLLOW turns  following on and off.  With  following on, the origin of the input
coordinate  system  (and  thus of the ruler or grid)  moves so that it is always
equal to the most recently input point of geometric  meaning.  In this mode, the
coordinates  of each point are relative to the  coordinates of the previous one.
With following off, the input coordinate system remains constant.

Most points "of geometric  meaning" are points used to indicate  vertices of new
components,  although  the  origin  follows  a few  points  that  don't fit this
definition -- end points of the translation  vector in MODIFY MOVE, for example.

During the measure functions follow is off.

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

^GATHER PART PARTS TM_PARTS_GATHER COPY
GATHER command

-->(GATHER)--+-----------+--+--------+--|name or pnt or box|--...
	     |		 |  |	     |
	     +--COPY-----+  +--PART--+

	...--+----------------+-->
	     |		      |
	     +--|pt1|--|pt2|--+
	     |		      |
	     '-----|pt|-------'

GATHER brings elements into the active part.  The elements must already exist in
another part.

The  element is  selected  as  follows.  If you enter a name, the part with that
name  is  gathered.  If  you  identify  a  part  box,  that  part  is  gathered.
Otherwise, you identify an element that is not a part.  In this case, if you use
the PART option, the part  containing  this element is gathered; if not, you get
the element  itself.  You can also  identify a group of elements by entering the
opposite corners of a box; this is possible only without the PART option.

Without the COPY  option,  the element  selected  is removed  from its part, and
inserted in the active part, without its location  changing.  You may not gather
a part above the current part in this case.

With the COPY option, the selected element  remains, and you get a copy of it in
the  active  part.  In this  case, you must say where the copy is to be  placed.
Normally, you give a begin and end point of a translation  vector, as with MOVE.
The  exception  is when you have  selected a shared part that appears  more than
once in the  drawing,  and you select it by name  instead  of picking a specific
instance.  In this case, you get a box hanging on your cursor, and you pick only
one point,  namely,  the point where the part  reference  point is to be placed.
The result is a copy of the shared part as it was originally  constructed, i.e.,
without any scale, rotation, mirror, etc.

The current  implementation  is limited in the following  ways.  If you GATHER a
dimensioned  element, the dimension is lost.  If you GATHER  elements  forming a
hatch  contour,  the hatch is  preserved  only if you gather all the elements at
once, in a box.  These limitations do not apply when you GATHER entire parts.

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

^GET_ELEM_INFO INFO
GET_ELEM_INFO function

---->(GET_ELEM_INFO)---->|pnt on elem|---->

GET_ELEM_INFO  changes  the  current  info to be the  same  as the  info  of the
identified  element.  The element  need not be in the active  part.  The current
info is the info added to every new element.

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

^GET_PROPERTIES PROPERTIES LINETYPE COLOR HATCH TEXT PROP SIZE 
^GET_PROPERTIES TM_PROP_GET
GET_PROPERTIES function

---->(GET_PROPERTIES)---->|point on element|---->

GET_PROPERTIES  changes the current  properties to be the same as the properties
of the identified element.  The element need not be in the active part.

The current properties are the ones set by the following functions:

  real geometry (not construction geometry)
      LINE <color> END
      LINE <linetype> END

  construction geometry
      C_LINE <color> END
      C_LINE <linetype> END

  hatch
      CURRENT_HATCH_PATTERN
      HATCH_ANGLE
      HATCH_DISTANCE
      HATCH_REF_PT

  text
      TEXT <color> END
      CURRENT_FONT
      TEXT_ADJUST
      TEXT_ANGLE
      TEXT_FILL
      TEXT_FRAME
      TEXT_LINESPACE
      TEXT_RATIO
      TEXT_SIZE
      TEXT_SLANT

GET_PROPERTIES  changes only  properties  that the identified  element has.  For
example,  GET_PROPERTIES  from a text leaves the current hatch information as it
was.

The current properties are used for every new element of the corresponding type.
They can also be assigned to existing elements with PUT_PROPERTIES.

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

^GRID_FACTOR GRID SPACING TM_RULER_SLASH_GRID_SPACING
GRID_FACTOR function

--->(GRID_FACTOR)--->|value|---->

GRID_FACTOR  specifies the distance (in current  units, of course)  between grid
points or ruler  ticks.  This  function  has no  effect on the input  coordinate
system.

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

^HATCH AUTO MANUAL FACE SM_HATCH UNDO TM_UNDO
HATCH command

	 ,----------------------------------------------------------,
	 |							    |
	 | ,----------,						    |
	 v |	      v						    |
->(HATCH)+-+>(AUTO)---+-----|pnt in face |---------------- ,	    |
	 |						   |	    |
	 |	     ,---------------------------------,   |	    |
	 |	     |				       |   |	    |
	 |	     +--------------(UNDO)-------------+   |	    |
	 |	     |				       |   |	    |
	 |	     |		,------------,	       |   |	    |
	 |	     v		v	     |	       ^   v	    ^
	 '->(MANUAL)-+->|point|-+-->|point|--+-->(END)-+>--+>-------+--->
				|	     ^		   v	    ^
				|-->(UNDO)---|		   |	    |
				v	     |		   '-(UNDO)-'
				'-->(VERTEX)-'

HATCH creates hatches, possibly with inner contours.

With AUTO (the  default),  you indicate a point inside the outer contour but not
in any inner  contour.  The inner  contours are found  automatically.  Automatic
hatch functions only if:

	-- all elements in the contour are in the active part
	-- the contour has no gaps
	-- each vertex of the contour is a vertex of all elements there

With  MANUAL, you specify the points on the hatch  boundaries  yourself -- first
the outer  contour,  then the inner  ones.  To include an element in a  contour,
identify  an end  point,  then  a  point  in  the  middle.  To  include  further
(connected)  elements,  identify  each one in the middle.  The system will allow
you to skip  elements  along a contour, as long as you do not skip more than one
element  past any branch  points.  The included  elements  must be in the active
part.  Enter END when all hatch boundaries, outer and inner, are defined.

UNDO works as follows :  In the AUTO option it removes  the last  hatch.  In the
MANUAL option it removes  points when creating a contour.  Finally once you have
ENDed a hatch, using UNDO removes the entire hatch.

Use VERTEX to make  clear,  that you do not want to  include  an  element in the
contour, but specify a hatch boundary point on an element.

If you change a contour of a hatched face by inserting new components, the hatch
is not necessarily  updated.  In this case, you need to delete the old hatch and
create a new one.  Example:  create a  rectangle  an  hatch  it.  Insert  a line
which splits the rectangle to two  rectangles.  Hatch the rectangle again with a
different angle.  The hatch will follow the old contour, not the new contour.

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

^HATCH_ANGLE ANGLE
HATCH_ANGLE function

-->(HATCH_ANGLE)---->|value|---->

HATCH_ANGLE  sets the  current  hatch  angle.  This  angle  is used  for all new
hatches, and is the angle between the X axis and the hatch pattern.

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

^HATCH_COLOR COLOR OLD
HATCH_COLOR function (OLD)

-->(HATCH_COLOR)--+-->(BLACK)---->+-->
	          |		  ^
		  |-->(BLUE)----->|
		  |		  |
		  |-->(CYAN)----->|
		  |		  |
		  |-->(GREEN)---->|
		  |		  |
		  |-->(MAGENTA)-->|
		  |		  |
		  |-->(RED)------>|
		  |		  |
		  |-->(WHITE)---->|
		  |		  |
		  '-->(YELLOW)----'

HATCH_COLOR sets the current hatch color, which is used for all new hatches.

Use HATCH |color functions| END for new macros.

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

^HATCH_DIST DISTANCE
HATCH_DIST function

-->(HATCH_DIST)---->|value|---->

HATCH_DIST  sets the  current  hatch  distance.  This  distance  is usually  the
distance between hatch lines, but see also  CURRENT_HATCH_PATTERN.  This affects
new hatches.

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

^HATCH_LINETYPE LINETYPE OLD
HATCH_LINETYPE function (OLD)

-->(HATCH_LINETYPE)--+-->(SOLID)------------->+-->
		     |			      |
		     |-->(DASHED)------------>|
		     |			      |
		     |-->(LONG_DASHED)------->|
		     |			      |
		     |-->(DOT_CENTER)-------->|
		     |			      |
		     |-->(DASH_CENTER)------->|
		     |			      |
		     |-->(PHANTOM)----------->|
                     |                        |
                     |-->(CENTER_DASH_DASH)-->|
		     |			      |
		     `-->(DOTTED)------------>'

HATCH_LINETYPE sets the current hatch linetype, which is used for new hatches.

Use HATCH |linepattern functions| END for new macros.

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

^HATCH_REF_PT REF_PT HATCH
HATCH_REF_PT function

-->(HATCH_REF_PT)---->|point|---->

HATCH_REF_PT  sets the current hatch  reference  point.  Normally, a line of the
hatch   pattern   passes   through   the   reference   point   (but   see   also
CURRENT_HATCH_PATTERN).

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

^HP_DSLINK NC
HP_DSLINK macro  

-->(HP_DSLINK)---->|filename|---->

Hp_dslink  generates  HP_DESIGNLINK  data  describing the geometry of the active
part.  The maximum length of the file name is 9 characters.

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

^FE_LINK FE TM_DATA_EXCHANGE_FE
^HP_FE
FE_LINK command

---->(FE_LINK)---->|filename|---->

FE_LINK  generates  HP_FE data  describing the geometry of the active part.  The
maximum length of the file name is 3 characters; the first must be a letter, and
the others either letters or digits.

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

^INIT_PART PARTS TM_PARTS_INIT
INIT_PART command

-->(INIT_PART)--+--|part name|--+->
		v		^
		'---------------'

INIT_PART creates a new, empty part in the top part, and then changes the active
part to be the new one.  The name  parameter  is optional; if omitted, a default
name is supplied.

INIT_PART has exactly the same effect as EDIT_PART TOP followed by INIT_SUBPART.

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

^INIT_SUBPART PARTS
INIT_SUBPART command

-->(INIT_SUBPART)----|part name|---->

INIT_SUBPART  creates a new, empty part in the active part, and then changes the
active part to be the new one.

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

^INQ_ELEM INQ
INQ_ELEM function

---->(INQ_ELEM)---->|point on element|---->

INQ_ELEM writes information about the identified element into the system inquiry
array.  It can then be  retrieved  with INQ (see  INQ).  To  retrieve  the  info
strings associated with the identified element use INQ_ENV (see INQ_ENV).

INQ_ELEM sets the following values, depending on the element type:

+-------------------------------------------------------------------------+
| function/command | <inq_index> | result				  |
+------------------+-------------+----------------------------------------+
| INQ_ELEM	   |	  1	 | 107 (inq code)			  |
|                  |      9      | number of info strings of element      |
|		   |	201	 | element color			  |
|		   |	301	 | element linetype			  |
|		   |	403	 | element type				  |
|                  |    900      | first info string of element           |
|                  |    901      | next info string of element            |
|.........................................................................|
| if element type = POINT						  |
|.........................................................................|
|		   |	101	 | point				  |
|.........................................................................|
| if element type = LINE						  |
|.........................................................................|
|		   |	101	 | begin point				  |
|		   |	102	 | end point				  |
|.........................................................................|
| if element type = CIRCLE						  |
|.........................................................................|
|		   |	  3	 | radius				  |
|		   |	101	 | center point				  |
|		   |	102	 | peripheral point			  |
|.........................................................................|
| if element type = ARC							  |
|.........................................................................|
|		   |	  3	 | radius				  |
|		   |	  4	 | begin angle				  |
|		   |	  5	 | end angle				  |
|		   |	101	 | center point				  |
|		   |	102	 | peripheral begin point		  |
|		   |	103	 | peripheral end point			  |
|.........................................................................|
| if element type = FILLET						  |
|.........................................................................|
|		   |	  3	 | radius				  |
|		   |	  4	 | begin angle				  |
|		   |	  5	 | end angle				  |
|		   |	101	 | center point				  |
|		   |	102	 | peripheral begin point		  |
|		   |	103	 | peripheral end point			  |
|.........................................................................|
| if element type = C_LINE						  |
|.........................................................................|
|		   |	101	 | center point				  |
|		   |	  3	 | angle with X axis			  |
|.........................................................................|
| if element type = C_CIRCLE						  |
|.........................................................................|
|		   |	101	 | center point				  |
|		   |	  3	 | radius				  |
|.........................................................................|
| if element type = TEXT                                                  |
|.........................................................................|
|                  |      3      | text adjust (1-9)                      |
|                  |      4      | text line spacing                      |
|                  |      5      | text ratio (width/height)              |
|                  |      6      | text height (user units)               |
|                  |      7      | text slant (user angular units)        |
|                  |      8      | text angle (user angular units)        |
|                  |    101      | text origin point                      |
|                  |    302      | text font name                         |
|                  |    601      | text frame (OFF, BOX, BALLOON)         |
|                  |    602      | text fill (OFF or ON)                  |
|                  |    902      | First text string of text              |
|                  |    903      | Next text string of text               |
|.........................................................................|
| if element type = END							  |
|	       no elem with the above types found at <point>		  |
+------------------+-------------+----------------------------------------+

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

^ISOMETRIC
ISOMETRIC command

->-(ISOMETRIC)----(select front elem)---|ref pnt|----|dest pnt|---,
								  |
	      ,---------------------------------------------------'
	      |
	      '---(select side elem)-----|ref pnt|----|dest pnt|--,
								  |
	      ,---------------------------------------------------'
	      |
	      '---(select top  elem)-----|ref pnt|----|dest pnt|----->

ISOMETRIC helps you create an isometric view of a three-dimensional  object.  It
assumes that you have already created  orthogonal  views of the front, side, and
top.  You first  identify  the front  view, then say where it should go, then do
the same with the side and top views.  You  identify a view by enclosing it in a
box, or, if the view is a part, by identifying the part directly.  If you make a
box with nothing in it, the system skips to the next element  selection; in this
way you can omit one or more of the three views.

The  result  of  ISOMETRIC  is in most  cases  only an  approximation  of a true
isometric view, since the system only understands two dimensions.  You must then
manually  finish the drawing.  In this  process, the  following  commands may be
useful:  MODIFY  MOVE  COPY to add  missing  edges  to the  drawing;  SPLIT  and
CHANGE_LINETYPE  to draw hidden  lines;  CONVERT_SPLINE  to change  splines into
biarcs, which can then be split (circles,  arcs, and fillets in the original are
converted to splines in the isometric view).

If a view  is a  shared  part,  then  it  transformed  in  such a way  that  the
dimensioning  values reflect the dimensions of the part before using  ISOMETRIC.
This special attribute is noted in the parts list (TREE option).

An isometric  view has a vertical Z axis, and X and Y axes 30 degrees  above the
horizontal.  Other views with different  configurations  can be made with MODIFY
AFFINE; a macro can make the process more automatic.

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

^KEEP_CORNER FILLET CHAMFER CORNER
KEEP_CORNER function

-->(KEEP_CORNER) --+--(ON)---+---->
		   |	     |
		   +--(OFF)--+

KEEP_CORNER  affects how FILLET and CHAMFER  behave.  KEEP_CORNER  ON means that
the corner being  blended will remain a corner.  KEEP_CORNER  OFF means that the
lines or arcs between the fillet or chamfer and the corner being rounded will be
deleted.

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

^LABEL NC
LABEL command

---->(LABEL)---->|select|---->

LABEL  generates  label  information  for the selected  points, lines, arcs, and
circles in the active  part.  This label  information  consists of texts next to
the selected elements, and new info attached to the elements.  Old info, even if
produced by the LABEL command, is left undisturbed.

The info  produced by the LABEL  command is normally  used by the NC macros Act,
Compact, and Ncgl, though it is available, through MI, for other  postprocessors
too.

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

^LAST_WINDOW WINDOW TM_WINDOW_LAST
LAST_WINDOW function

---->(LAST_WINDOW)---->

LAST_WINDOW  restores  the  previous  window of the current  viewport.  See also
STORE_WINDOW and RECALL_WINDOW.

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

^LEADER_ARROW ARROW LEADER ARROW_TYPE DOT_TYPE SLASH_TYPE TRIANGLE_TYPE NONE
^DOT SLASH TRIANGLE ARROW_SIZE SIZE
LEADER_ARROW function

-->(LEADER_ARROW)->+----------->+--->+--(ARROW_TYPE)---+---->
		   |		|    |		       |
		   +--|number|--+    +--(DOT_TYPE)-----+
				     |		       |
				     +--(SLASH_TYPE)---+
				     |		       |
				     +-(TRIANGLE_TYPE)-+
				     |		       |
				     +--(NONE)---------+

LEADER_ARROW  specifies the termination used for new leader_lines.  The optional
number specifies the arrow size.  The default is ARROW_TYPE, size 3.5 mm.

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

^LEADER_LINE LINE BREAK LEADER ARROW LEADER_ARROW UNDO TM_UNDO
LEADER_LINE command

		 +------------------------------------------------------+
		 |	    +----------------------------------+	|
		 |	    |				       |	|
->(LEADER_LINE)--v-|point|--v---+---------+-|point|-+--------+-+->(END)-+->
				|	  |	    |	     |
				+-(BREAK)-+	    +-(UNDO)-+

LEADER_LINE  creates a leader line.  You specify a begin point, then one or more
vertices  of the line,  terminated  by END.  The end  point is given  the  arrow
specified by LEADER_ARROW.

UNDO  removes  the most  recent  line  segment.  BREAK  specifies  that the next
segment is to be invisible.

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

^LINE POLYGON RECTANGLE TWO_PTS HORIZONTAL VERTICAL PARALLEL PERPENDICULAR
^TANGENT TAN_PT TAN2 PT_ANG_DIST
LINE command

	   ,----------------------------------------------------------,
	   |		     ,--------------------------------,	      |
	   v		     v				      |	      |
-->(LINE)--+-->(TWO_PTS)-----+-->|begin point|-->|end point|--+-------+-->
	   |			^				      ^
	   +--------------------'				      |
	   |							      |
	   |		     ,-------------------------------------,  |
	   |		     v					   |  |
	   |-->(HORIZONTAL)--+-|begin point|----+--|end point|---+-+->|
	   |					|		 |    |
	   |					+---|distance|---+    |
	   |		     ,-------------------------------------,  |
	   |		     v					   |  |
	   |-->(VERTICAL)----+-|begin point|----+--|end point|---+-+->|
	   |					|		 |    |
	   |					+---|distance|---+    |
	   |							      |
	   |							      |
	   |		  ,----------------<------------------,	      |
	   |		  | ,--<-----,			      |	      |
	   |		  | |	     |			      |	      |
	   |->(PARALLEL)--+-+-|dist|-+-->---|elem|---->|pnt|--+---+-->|
	   |		  |					  |   |
	   |		  |			    +---<-----+	  |   |
	   |		  |			    |	      |	  |   |
	   |		  '-----------------|elem|--+->|pnt|--+---'   |
	   |							      |
	   |							      |
	   |		       ,---------------------------------,    |
	   |		       v				 |    |
	   |-->(PERPENDICULAR)-+->|elem|--|pnt1|--+------------+-+--->|
	   |					  |	       ^      |
	   |					  +-+-|pnt2|-+-'      |
	   |					    |	     ^        |
	   |					    '|length|'        |
	   |							      |
	   |				  ,------------,	      |
	   |				  v	       |	      |
	   |-->(POLYGON)-->|start point|--+-->|point|--+------------->|
	   |							      |
	   |		      ,------------<-----------,	      |
	   |		      v			       |	      |
	   |-->(RECTANGLE)----+->|point 1|-->|point 2|-+------------->|
	   |							      |
	   |		       ,------------<-------------,	      |
	   |		       |			  |	      |
	   |-->(TAN_PT)--------+-->|apptan pnt|-->|point|-+---------->|
	   |							      |
	   |		    ,---------------<---------------,	      |
	   |		    v				    |	      |
	   |-->(TAN2)-------+->|apptan pnt|-->|apptan pnt|--+-------->|
	   |							      |
	   |				  +-----------<------------,  |
	   |				  v			   |  |
	   '-->(PT_ANG_DIST)--->|beg pnt|-+-|angle|--+--+-|length|-+--'
					  |	     |	|	   |
					  '-|point|--'	'-|point|--'

LINE creates lines.

TWO_PTS creates a line with the given begin and end points.

HORIZONTAL  and VERTICAL  create  horizontal  and vertical  lines with the given
begin and end points; the end point is projected accordingly.  Instead of an end
point, you can enter a length.

PARALLEL creates lines parallel to a given line.  There are two ways to use this
option.  With method 1, you identify  the element to which the new lines  should
be parallel,  then you indicate  points  through  which the new lines should go.
With method 2, you enter  distances,  then  identify an element,  then  indicate
which side of the  element is to be the  positive  one.  The  distances  are all
measured from the existing element.

PERPENDICULAR  creates a line  from the given  pnt1 to the  identified  element,
perpendicular  to this  element.  If pnt1 is on the element, the end of the line
must be specified either by pnt2 or a length.

RECTANGLE makes a rectangle parallel to the axes of the current input coordinate
system.  The two  input  points  are  opposite  corners  of the  rectangle.  The
rectangle is really just four independent lines.

POLYGON  creates a  sequence  of  connected  lines  with the given  end  points.
POLYGON is only an input aid; the lines created are independent.

TAN_PT creates a line  tangential to the selected  element, from that element to
the given  point.  The  approximate  tangent  point is used both to identify the
element  and to  determine  which  tangent  is  desired.  The  element  may be a
c_circle, circle, arc, or fillet.

TAN2 makes a line tangent to two curved  elements.  Again, the approximate  tan-
gent points determine which tangent solution is used.

PT_ANG_DIST  creates a line from the given start  point, at the given angle with
respect to the X axis, and with the given  length.  The angle or the length  may
be specified with points.

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

^LINETYPE OLD
^TM_LINETYPE_SOLID
^TM_LINETYPE_DASHED
^TM_LINETYPE_DOT_CENTER
^TM_LINETYPE_PHANTOM
^TM_LINETYPE_DOTTED
^TM_LINETYPE_LONG_DASHED
^TM_LINETYPE_DASH_CENTER
^TM_LINETYPE_CENTER_DASH_DASH
^TM_LINETYPE_SET_LINETYPE
LINETYPE function (OLD)

-->(LINETYPE)--+-->(SOLID)------------->+-->
	       |		        |
	       |-->(DASHED)------------>|
	       |		        |
	       |-->(LONG_DASHED)------->|
	       |		        |
	       |-->(DOT_CENTER)-------->|
	       |		        |
	       |-->(DASH_CENTER)------->|
	       |		        |
	       |-->(PHANTOM)----------->|
	       |		        |
	       |-->(CENTER_DASH_DASH)-->|
	       |		        |
	       `-->(DOTTED)------------>'

LINETYPE  specifies  the current  linetype,  which is used for all new  elements
except hatches (see HATCH_LINETYPE) and construction  geometry (see C_LINETYPE).

The linetype also affects the way point elements (from POINT) are drawn.  To see
the possibilities, change the linetype and watch the status line.

Use LINE |linepattern functions| END for new macros.

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

^LINE_GRID CS GRID TM_RULER_SLASH_GRID_LINE_GRID_ON
^TM_RULER_SLASH_GRID_LINE_GRID_OFF
LINE_GRID function

	       ,--------------------------------,
	       |				|
	       v				|
-->(LINE_GRID)-+->|point to identify viewport|--+-->+-->(ON)---,
	       |				^   |	       |
	       +->(ALL)-------------------------+   '-->(OFF)--+-->
	       |				|
               '->|color|---------------------->'
               |                                |
               '->|linetype|------------------->'
               |                                |
	       '------------------------------->'

LINE_GRID turns the line grid on or off.  The meaning of the options is the same
as in DOT_GRID.  If the DOT_GRID is active in the specified  viewport(s) , it is
turned off.

The location of the grid lines is determined by the input coordinate system, set
by the commands  beginning with "CS_", and the grid spacing, set by GRID_FACTOR.
You can catch to  intersections  of the grid  lines if the catch  mode is ALL or
GRID, see CATCH  for more  information.  It is not  possible  to catch to a grid
line otherwise, or to an intersection between a grid line and an element.

The drawing of the grid is suppressed in viewports where there are too many grid
points.

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

^LIST_FONTS TEXT FONT
LIST_FONTS function

---->(LIST_FONTS)---->

LIST_FONTS  gives on the screen a list of all fonts  defined and all fonts used.
It also gives the name of the current font.  Editing the list has no effect.

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

^LIST_GLOBAL_INFO INFO
LIST_GLOBAL_INFO function

-->(LIST_GLOBAL_INFO)-->

LIST_GLOBAL_INFO  lists all info used by all  elements  in memory.  Editing  the
list has no effect.  The current  info is present  only if it has  already  been
assigned to some element.

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

^LOAD SUBPART ABSOLUTE MI DRAWING FILES STORE PARTS TM_FILE_1 SM_FILE_1
^Meview_load

LOAD command

					      .----------------------->.
					      |			       |
-->(LOAD)--->+---------------->+->|filename|--+----->(ABSOLUTE)------->+-->
	     |		       |	      |			       |
	     `--->(SUBPART)--->'	      `--->|location point|--->'

LOAD  loads a part  from the  named  file into  memory.  The file must have been
created with STORE, or it must be an MI file, normally created with STORE MI.

SUBPART  means  that  the  new  part  is to be a  subpart  of the  active  part.
Otherwise, LOAD automatically chooses one of the following options:

 -- If the top part is empty  and the new part is not  shared  than the new part
    replaces  the top part.  If the new part is shared  the part is loaded as if
    you had said SUBPART.

 -- If the top is not empty the new part is loaded as a subpart of the top part.

Except  of the  first  case,  you  must  specify  where  the  new  part is to be
positioned  geometrically.  You do this by either  saying  ABSOLUTE,  which says
that the new part should have the same location as it did when you stored it, or
by  indicating  a location  point.  If you  indicate a location  point, the part
reference point (see CHANGE_PART_REF_PT) is placed there.

If you load a part  directly into the top part, the drawing  scale is taken from
the drawing scale of the loaded part.  Otherwise,  the loaded part is adapted to
the current drawing scale.

The file format description of the loaded file is written into the system 
inquiry array (see INQ) and you can get it using INQ 301.
For binary files you will get a string like e.g. "BINARY 16".
For MI files the string looks like e.g.   "MI 2.02 HP ME10 Rev. 04.00 30-Aug-90"

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

^LOAD_FONT STORE_FONT TEXT FONT
LOAD_FONT command

---->(LOAD_FONT)---->|file name|---->

LOAD_FONT  loads all text fonts  stored in the named file into memory.  The file
must be the output of an earlier STORE_FONT.

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

^MAPPING MODIFY STRETCH COPY
Mapping options in MODIFY and STRETCH

This section describes the mapping options MOVE, ROTATE, MIRROR, SCALE, SIMILAR,
and AFFINE in the MODIFY and STRETCH commands.

In each option,  DEL_OLD means that the original  geometry is modified, and COPY
means that the  geometry is copied  before  modification.  The default is always
DEL_OLD.

Each option  also  accepts a repeat  factor.  The repeat  factor  tells how many
times the  modification  should be repeated.  Thus, a COPY with repeat  factor 5
results in 5 copies, plus the  original.  You can also use a repeat  factor with
DEL_OLD for (primitive) kinematic investigations.  For example, you can ROTATE a
robot arm a little at a time to see at what point it touches some other element.

It is possible to select elements, then apply several  transformations  to them,
within one  invocation  of MODIFY or STRETCH.  If you are working  this way, and
you  change  the repeat  factor,  this  factor  stays in effect  for  subsequent
modifications,  until you leave the  command.  The  exception  is MIRROR,  which
always sets the repeat factor back to 1.

The  descriptions  somewhat  loosely  speak of  "elements";  with  STRETCH it is
sometimes only one end of an element that is modified.

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

^MOVE COPY MULTIPLE
MOVE option
	   ,--------<-------------,
	   |			  |
	   +->-(repeat factor)----+
	   |			  |
	   +->-(COPY)----->-------+
	   |			  |
	   +->-(DEL_OLD)-->-------+
	   |
-->(MOVE)--+--+->-(TWO_PTS)--+->-|begin point|--->---|end point|---------->
	   |  |		     |
	   |  `------->------'
	   |
	   +->-(HORIZONTAL)->--|horizontal distance|--------->------------>
	   |
	   |
	   +->-(VERTICAL)-->---|vertical distance|----------->------------>
	   |
	   |					+--------<----------+
	   |					|		    |
	   `->-(MULTIPLE)--->--|begin point|->--+->-|end point|-----+----->

MOVE moves the selected elements from one place to another.

With TWO_PTS you specify a begin and end point of the move.

With  HORIZONTAL  and  VERTICAL,  you say how far the  elements  should be moved
horizontally or vertically.  The distance can also be negative, producing a move
to the left (HORIZONTAL) or down (VERTICAL).

MULTIPLE is used to create  multiple  copies (with COPY).  It is equivalent to a
series of TWO_PTS, with the new begin point the same as the old end point.

Example:  MODIFY (select) MOVE VERTICAL 10 moves the selected  elements 10 units
up.

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

^ROTATE COPY
ROTATE option
	    ,--------<-------------,
	    |			   |
	    +---(repeat factor)----+
	    |			   |
	    +-----(COPY)----->-----+
	    |			   |
	    +-----(DEL_OLD)-->-----'
	    |
-->(ROTATE)-+-+(CENTER)+--|fix point|-->-+->----|angle|---------+--------->
	    | |	       |		 |			|
	    | `--------'		 `--|point1|--|point2|--'
	    |
	    `->(TWO_PTS)--|ref point|--|imref point|--+->-|angle|-----+--->
						      |		      |
						      `-|pnt1|-|pnt2|-'

ROTATE rotates the elements about a fixed point.

With  CENTER,  you  indicate a fixed  point and an angle.  The angle can also be
indicated  with two points.  In this case, the system uses the angle between the
two points with respect to the fixed point.

TWO_PTS  includes  a MOVE as well as a  ROTATE.  The  elements  are  moved  from
ref_point to imref_point, then rotated around imref_point as in CENTER.

Example:  MODIFY ROTATE 50,50 60 (select)  rotates the selected  elements around
the point 50,50 by the angle 60.

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

^MIRROR COPY
MIRROR option

	    ,--------<-------------,
	    |			   |
	    +-----(COPY)----->-----+
	    |			   |
	    +-----(DEL_OLD)-->-----'
	    |
-->(MIRROR)-+--+->-(TWO_PTS)--+->-----|pnt1|---->---|pnt2|----->---------->
	    |  |	      |
	    |  `------->------'
	    |
	    +->-(HORIZONTAL)->---|pnt|----->------------------------------>
	    |
	    +---(VERTICAL)--->---|pnt|----->------------------------------>
	    |
	    `---(CENTER)----->---|pnt|----->------------------------------>

MIRROR  mirrors  the  elements  across a given line or point.  The line or point
need not exist in the drawing.

With TWO_PTS, you give two points on the mirror line.

HORIZONTAL  and VERTICAL  mirror about  horizontal  and vertical  mirror  lines,
respectively.  The input is a point on the line.

CENTER is a point  reflection, and has the same effect as a 180 degree  rotation
around the given point.

Example:  MODIFY  (select)  MIRROR 0,0 1,1 mirrors the  elements  about the line
through 0,0 and 1,1.

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

^SCALE COPY
SCALE option
	    ,--------<-------------,
	    |			   |
	    +->-(repeat factor)----+
	    |			   |
	    +->---(COPY)----->-----+
	    |			   |
	    +->---(DEL_OLD)-->-----+
	    |
-->(SCALE)--+-+->-(CENTER)--+-->--|fix point|--+----|scale factor|----+--->
	    | |	            |		       |		      |
	    | `------>------'		       `--|point1|--|point2|--'
	    |
	    `->(TWO_PTS)--|ref point|-|imref point|-+--|scale factor|->-+->
						    |		        |
						    `-|point1|-|point2|-'

SCALE scales the elements with respect to a fixed point.

With CENTER, you give the fix point, then a scale  factor.  The factor 2 doubles
the elements sizes; the factor .5 or -2 halves them.  You can specify the factor
with two points; the  resulting  scale moves  whatever was at the first point to
the second point.

TWO_PTS is a MOVE,  then a SCALE.  The  elements  are moved  from  ref_point  to
imref_point, then scaled about imref_point as in CENTER.

Example:  Suppose you want to scale a rectangle  symmetrically around its center
by a factor of 2.  Find the center point (possibly by drawing construction lines
as diagonals), then say MODIFY (select rectangle) SCALE (indicate center) 2.

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

^SIMILAR COPY
SIMILAR option
	    ,--------<-------------,
	    |			   |
	    +->-(repeat factor)----+
	    |			   |
	    +->---(COPY)----->-----+
	    |			   |
	    +->---(DEL_OLD)-->-----'
	    |
-(SIMILAR)--+->-|pnt1|----|pnt2|--->---|ipnt1|----|ipnt2|----------------->

SIMILAR  has the  same  effect  as a  MOVE,  ROTATE,  and  SCALE  together.  The
resulting  geometry  has the  same  shape  as the  original,  but it may  have a
different size, point in a different direction, and lie somewhere else.

You  indicate  first two points, then two image  points.  SIMILAR maps the first
point onto the first image point, and the second onto the second.

SIMILAR can be useful for fitting a part into a drawing.  You indicate first two
points on the part, then the two places where these points should go.

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

^AFFINE ISOMETRIC DIMETRIC TRIMETRIC COPY
AFFINE option

	    ,--------<-------------,
	    |			   |
	    +->-(repeat factor)----+
	    |			   |
	    +->---(COPY)----->-----+
	    |			   |
	    +->---(DEL_OLD--->-----'
	    |
(AFFINE)->--+--|pnt1|->-|pnt2|---|pnt3|---|ipnt1|---|ipnt2|---|ipnt3|----->

AFFINE  is the most  general  transformation  in the  system.  It maps the first
three  points to the second three  points.  For  example, if you indicate  three
points of a triangle,  the second three  points tell where each end point of the
triangle is to go.  Depending on the input, this can produce any of the previous
transformations, as well as a scale in only one direction (e.g., along one axis,
but not the other) that distorts circles into ellipses.

A useful  visualization  of an affine mapping is this.  Think of the first three
points as being the  origin,  unit X vector,  and unit Y vector of a  coordinate
system.  The next  three  points  are then the same  points of a new  coordinate
system.

AFFINE can mimic the results of any of the previous transformations.  Assuming a
rectangular  coordinate  system and degrees as the angle  measure, the following
are equivalent:

      AFFINE: 0,0 1,0 0,1  1,1 2,1 1,2	and MOVE 0,0 1,1
      AFFINE: 0,0 1,0 0,1  0,0 0,1 -1,0 and ROTATE 0,0 90
      AFFINE: 0,0 1,0 0,1  0,0 1,0 0,-1 and MIRROR HORIZONTAL 0,0
      AFFINE: 0,0 1,0 0,1  0,0 2,0 0,2	and SCALE 0,0 2

An example of an effect not obtainable by the other transformations:

      AFFINE 0,0 1,0 0,1  0,0 2,0 0,3

scales along the X axis by 2 and along the Y axis by 3.

AFFINE can also be used to produce axonometric projections, including isometric,
dimetric, and trimetric:

ISOMETRIC  front view: AFFINE 0,0 -1,0 0,1  0,0 COS(150),SIN(150) 0,1
	   side view : AFFINE 0,0 1,0 0,1   0,0 COS(30),SIN(30) 0,1
	   top view  : AFFINE -1,0 0,1 0,0  COS(150),SIN(150) COS(30),
                                            SIN(30) 0,0

DIMETRIC   front view: AFFINE 0,0 -1,0 0,1  0,0 COS(173),SIN(173) 0,1
	   side view : AFFINE 0,0 1,0 0,1   0,0 0.5*COS(45),0.5*SIN(45) 0,1
	   top view  : AFFINE -1,0 0,1 0,0  COS(173),SIN(173) 0.5*COS(45),
					    0.5*SIN(45) 0,0

TRIMETRIC  front view: AFFINE 0,0 -1,0 0,1  0,0 0.75*COS(126),0.75*SIN(126) 
                                            0,1
	   side view : AFFINE 0,0 1,0 0,1   0,0 0.75*COS(17),0.75*SIN(17) 
                                            0,1
	   top view  : AFFINE -1,0 0,1 0,0  0.75*COS(126),0.75*SIN(126)
					    0.75*COS(17),0.75*SIN(17) 0,0

Parameters for other axonometric views can be found in books on the subject.

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

^MEASURE_ANGLE MEASURE ANGLE TM_MEASURE_ANGLE
MEASURE_ANGLE function

---->(MEASURE_ANGLE)---->|pnt 1st elem|----->|pnt 2nd elem|----->

MEASURE_ANGLE  measures the angle between the two identified  elements (with the
exception of splines,  unless they are  converted  to a series of arcs and lines
using the  CONVERT_SPLINE  command  before the angle is measured).  The angle is
measured from the first element to the second, counterclockwise.

If the system is being used  interactively, the value is written in the keyboard
input buffer so it can be used as input without retyping.

The value is also written into the system  inquiry  array (see INQ).  During the
measure functions ruler follow is off.

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

^MEASURE_AREA MEASURE AREA TM_MEASURE_AREA_PROP
MEASURE_AREA function

---->(MEASURE_AREA)---->|id_point|---->

MEASURE_AREA  measures the area enclosed by the identified  circle, arc, spline,
or fillet.

If the system is being used  interactively, the value is written in the keyboard
input buffer so it can be used as input without retyping.

The value is also written into the system  inquiry  array (see INQ).  During the
measure functions ruler follow is off.

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

^MEASURE_COORDINATE MEASURE COORDINATE TM_MEASURE_POINT
MEASURE_COORDINATE function

---->(MEASURE_COORDINATE)---->|point|---->

MEASURE_COORDINATE measures the coordinates of the indicated point.

If the system is being used  interactively, the value is written in the keyboard
input buffer so it can be used as input without retyping.

The value is also written into the system  inquiry  array (see INQ).  During the
measure functions ruler follow is off.

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

^MEASURE_DISTANCE MEASURE DISTANCE HORIZONTAL VERTICAL TM_MEASURE_DIST
^MEASURE_DISTANCE TM_MEASURE_DIST_HORIZ TM_MEASURE_DIST_VERT 
MEASURE_DISTANCE function

->(MEASURE_DISTANCE)->+----------------->+->|xy id_point|->|xy id_point|-->
		      |		         |
		      +-->(HORIZONTAL)-->+
		      |		         |
		      `--->(VERTICAL)----'

MEASURE_DISTANCE measures the distance between the indicated points.  HORIZONTAL
or VERTICAL  specifies the horizontal or vertical  distance; this is independent
of the input coordinate system.

If the system is being used  interactively, the value is written in the keyboard
input buffer so it can be used as input without retyping.

The value is also written into the system  inquiry  array (see INQ).  During the
measure functions ruler follow is off.

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

^MEASURE_LENGTH MEASURE LENGTH TM_MEASURE_LENGTH
MEASURE_LENGTH function

---->(MEASURE_LENGTH)---->|id_point|---->

MEASURE_LENGTH  measures the length of the identified line, circle, arc, fillet,
or spline.

If the system is being used  interactively, the value is written in the keyboard
input buffer so it can be used as input without retyping.

The value is also written into the system  inquiry  array (see INQ).  During the
measure functions ruler follow is off.

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

^MEASURE_RADIUS MEASURE RADIUS TM_MEASURE_RADIUS
MEASURE_RADIUS function

---->(MEASURE_RADIUS)---->|id_point|---->

MEASURE_RADIUS measures the radius of the identified circle, arc or fillet.

If the system is being used  interactively, the value is written in the keyboard
input buffer so it can be used as input without retyping.

The value is also written into the system  inquiry  array (see INQ).  During the
measure functions ruler follow is off.

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

^MERGE SPLIT
MERGE command

	    ,----------------------------------------------,
	    v						   ^
-->(MERGE)--+-->|elem 1|--->|elem 2|---+-->|merge pnt|---->+---->
				       |		   ^
				       '-------------------'

MERGE  causes two  elements to be merged  into a single one.  Currently  you can
only merge two lines into a line, two fillets  into a fillet or a circle, or two
arcs into an arc or a circle.  The merge is only  allowed  where it makes sense,
e.g., the lines must point in the same  direction  and have a common end  point,
and the arcs or  fillets  must  have the same  center  and  radius.  If two arcs
forming a circle are merged, the user must  choose one of the two common  points
for the merge to take place; the other point is left as the peripheral  point of
the resulting circle.

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

^MODIFY MIRROR MOVE ROTATE SCALE SIMILAR AFFINE COPY
^TM_MODIFY SM_MODIFY TM_MODIFY_2D SM_MODIFY_2D UNDO TM_UNDO

MODIFY command

	     +--------<-------------+
	     |			    |
-->(MODIFY)--+->---|select|----->---+-->
	     |			    |
	     +->---|MOVE|------>----+
	     |			    |
	     +->---|ROTATE|---->----+
	     |			    |
	     +->---|MIRROR|---->----+
	     |			    |
	     +->---|SCALE|----->----+
	     |			    |
	     +->---|SIMILAR|--->----+
	     |			    |
	     +->---|AFFINE|---->----+
	     |			    |
	     +->---(UNDO)------>----+
	     |			    |
	     +->---(COPY)------>----+
	     |			    |
	     +->---(DEL_OLD)--->----+
	     |			    |
	     +->-(repeat factor)->--+

MODIFY  modifies  elements with MOVE, ROTATE, MIRROR, SCALE, SIMILAR, or AFFINE.
See MAPPING for a description of these transformations, including the syntax.

There are two ways to use MODIFY.  You can select elements, then subject them to
one or more  modifications,  or you can  specify  a  modification,  then  select
elements  one  or  more  times.  If  you  want  only  one   selection   and  one
modification, they can come in either order.

With  DEL_OLD, the selected  elements are  transformed;  with COPY, it is a copy
that is transformed. The default is DEL_OLD.

UNDO helps you undo  mistakes.  With  DEL_OLD,  UNDO  applies the reverse of the
most recent  transformation  to the selected  elements.  With COPY, UNDO deletes
the  copies (1 or more,  depending  on the  repeat  factor)  created by the most
recent transformation.  It is rarely possible to UNDO more than once.

But  attention,  you cannot say UNDO if you  haven't  selected or  modified  any
elements.

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

^NCGL NC TM_DATA_EXCHANGE_NC
Ncgl macro

---->(Ncgl)---->|filename|---->

Ncgl  generates a file in the NCGL input language (used by NC programs).  If any
geometry in the active part has been labeled  with the LABEL  command,  the file
describes that geometry;  otherwise, it describes all the geometry in the active
part.  See also APT, COMPACT.

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

^ORIGIN
^TM_RULER_SLASH_GRID_ORIGIN_ON
^TM_RULER_SLASH_GRID_ORIGIN_OFF
ORIGIN function


	     ,--------------------------------,
	     |				      |
	     v				      |
--->(ORIGIN)-+->|point or viewport number|----+-->+-->(ON)---,
	     |				      ^   |	     | 
	     +->(ALL)-------------------------+   '-->(OFF)--+-->
	     |				      |
	     '------------------------------->'

ORIGIN turns the symbol for the input coordinate  system origin on or off in the
specified  viewport(s) .  If no viewport is specified the symbol is turned on or
off in  the  current  viewport  .  If the  RULER  is  active  in  the  specified
viewport(s) , it is turned off.

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

^OVERDRAW I_OVERDRAW
OVERDRAW macro
				  ,---------------------------------,
				  v				    ^
---->(I_overdraw)---|begin pt|----+--->|pt on elem|-->|seg end pt|--+-->

OVERDRAW  lets you draw a series  of  connected  lines  and arcs (a biarc)  over
construction  geometry.  You  first  indicate  the begin  point of the  contour.
Then,  for each line or arc that you  want, you  identify  either a c_line  or a
c_circle for the contour to follow, then the end point of the line or arc.  When
you identify a c_circle, there are two possible directions for the contour.  The
system chooses the direction suggested by your identification point.

OVERDRAW is actually only the name of a menu slot; the macro name is I_overdraw.

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

^PARTS TM_PARTS TM_PARTS_1 TM_PARTS_2 TM_PARTS_2D
Parts

This section is a brief  introduction  to parts.  For help with  specific  parts
commands,  use HELP with the command  name, or say HELP PARTS and then use the N
(Next) command of the help system.

A part is an element that contains  other  elements.  Thus parts group  elements
together.  Don't take the name "part" too literally.  The elements  grouped into
a part  needn't  have any  physical  meaning;  they are simply  grouped  for the
purposes of the drawing.

Parts  impose  a  hierarchy  on the  elements  of a  drawing.  At the top of the
hierarchy is a part named  (initially)  "Top".  The top part is the only element
that does not belong to a part.  It is present in every drawing, even before you
add any elements, and cannot be deleted.

Except  for the top  part, all  elements  belong to  exactly  one  part.  A part
belonging  to another  is known as its  "child";  similarly,  a part  containing
another is its "parent".  Unlike human families, a part child never has more (or
less) than one parent.

One (and only one) part in the hierarchy is called the "active  part".  The name
of this part is shown in the status line.  EDIT_PART  lets you choose which part
is  active.  The  active  part  is the  part  in  which  all  new  elements  are
automatically  placed.  Furthermore,  you can only delete or modify  elements in
the  active  part.  (There  are a  very  few  exceptions  to  these  two  rules:
CREATE_DETAIL  and LOAD can both produce elements in other parts, and GATHER can
remove elements from other parts.)

There are two ways to make a new part.  You can create the geometry, then impose
a parts  structure on it, or you can create the parts first, then fill them with
geometry.  CREATE_SUBPART  is the command for the first  method.  INIT_PART  and
INIT_SUBPART are the commands for the second.

Once you have a parts  structure,  GATHER  allows you to move elements  from one
part to another.

SMASH_SUBPART deletes a part but retains its elements.

Except for the commands  already  mentioned,  which are all commands that change
the parts structure, there are few special commands for manipulating parts.  The
reason is  simple:  parts  are  elements,  just as, say,  lines  are, and can be
manipulated  with the same  commands  as other  elements.  To delete a line, for
example,  you say  DELETE,  then  identify  the line.  To delete a part, you say
DELETE and identify the part.  You identify the part by digitizing  any geometry
in it.

The fact that parts have several layers of structure  introduces some complexity
into the process of  identifying  elements.  The problem is that (unless you use
SHOW_PART) there is nothing on the screen that corresponds to a part itself; you
see only the geometry that it contains.  Thus, without some  convention  imposed
by the system, there would be no way to  unambiguously  identify a part with the
tablet or mouse.  (You can always  enter the name of the part, but this is often
less  convenient).  If you  digitize  a line,  for  example,  and you are in the
DELETE  command, do you want to delete the line, or the part  containing  it, or
that part's parent, or ...?

To make the  identification  unambiguous, we use the parts  structure  itself to
impose the following convention.  We assume that you always want elements in the
active  part.  Thus,  if a line  is  contained  in part A, and  part A is in the
active  part, and you say DELETE and  identify the line, then we assume you want
to delete  part A.  Part A is, at this  level, a single  entity  that  cannot be
treated  as  individual  elements.  Of  course,  you can always  make part A the
active part; then the members of part A can be  manipulated  individually.  This
is the reason for the rule, mentioned  above, that you can only delete or modify
parts in the active part.

Unfortunately,  this  identification  convention  is not  completely  consistent
throughout  the  system.  Sometimes  the  convention  would make  little  sense.
Consider EDIT_PART, for example.  We want to use EDIT_PART to edit a part on the
screen.  We  would  like to  digitize  the  new  part.  It  would  be a  serious
limitation  to require  that we could only  identify  parts in the active  part.
Therefore,  EDIT_PART  has its own rules about how parts are  identified,  rules
that allow you to identify  parts  anywhere in the parts  tree.  There are other
commands that do not follow the "only in active part"  convention, but they all,
like  EDIT_PART,  are ones that do not change your drawing  data.  Commands that
change your data (modify, delete, change text parameters, convert splines, etc.)
are in general limited to the active part only.

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

^PARTNAME PARTS NAME
part name

			     ,-----------------------,
			     v			     ^
--+--'/'--+-->|simple name|--+--'/'-->|simple name|--+-->
  v	  ^		     v			     ^
  '-------'		     '-----------------------'

A part name is a series of one or more simple names  separated  by slashes,  and
possibly beginning with a slash.  A simple name can contain any character except
slash.

Each part has a simple  name.  If this simple name is unique,  then the name can
be used to identify the part, and no slashes are needed, regardless of where the
active part is.  Simple names need not be unique, however, so the slash notation
is used to give each part an  unambiguous  name.  The naming scheme is very much
like the HP-UX file tree.  'abc' names a part in the active part.  '/' names the
top-level  part  (root).  'abc/def'  names  the part def in the  part abc in the
active part.  '/abc/def' is similar, except abc is found in the top part instead
of the current directory.

Within a part name, '..'  refers to the parent of the part named so far, and '.'
refers to the part  itself.  If these  constructs  appear at the  beginning of a
part name, the active part is considered the "part named so far".  Thus, '.'  is
a way of naming the  active  part  without  having to  remember  its real  name,
'../xxx'  names a part 'xxx'  which is a sibling of the active  part, and so on.
If the part named so far is the top, then '..'  is the same as '.'.

Currently  no checks are made to ensure that parts have  unique  names  within a
given  directory.  Furthermore,  when a part is copied, the copy has exactly the
same name as the old part.  Thus, it is possible that a part has no  unambiguous
name, and so must be  identified  in some other way, e.g., by picking an element
belonging to it.

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

^PARTS_LIST TREE PARTS
PARTS_LIST function

-->(PARTS_LIST)--+-->(TREE)--+--+----------------(SCREEN)-----------+-->
		 v	     ^	|				    |
		 +-->(ALL)---'	'--+-----------+--|file specifier|--'
	         |           |     |           |
	         '-----------'     +-(DEL_OLD)-+
				   |	       |
				   '-(APPEND)--'

PARTS_LIST  normally shows the parts in the active part whose names do not begin
with '.', along with a count of how many times each part occurs.

With the TREE  option,  all parts are  listed;  the  indentation  shows the part
structure.  A '[*]'  shows which part is the active one.  Symbols and  isometric
views are labeled as such, and the shared parts are numbered.

With the ALL option the ME30 system parts are also shown. 

SCREEN sends the output to the  built-in  editor (see  EDITOR).  Otherwise,  the
output is sent to the file  specified.  With DEL_OLD, a file of the same name is
overwritten without comment.  With APPEND, the parts list goes at the end of the
named file, if it exists; otherwise, a new one is created.  With neither DEL_OLD
nor APPEND, the presence of a file with the same name is an error.

You can get a parts list into the drawing as follows.

 -- Send a parts list of either type to the screen editor.

 -- Edit  the  list as  required,  then  use the O or W  command  to  write  the
    information to a temporary file.  Leave the editor.

 -- Invoke the TEXT  command with the option  SCREEN.  You are now in the editor
    again.

 -- Load the temporary file with the L command, then leave the editor.

You now have a block text on your cursor, containing the parts list.

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

^PICK_VP_PNT READ INQ
PICK_VP_PNT function


---->(PICK_VP_PNT)--->---|number|--->---|string|--->---|point|---->


Emulate  interactive  user pick in a specific  viewport,  defined by number  and
viewportname.
To  be  used  in  conjunction   with  READ  PNT  function,   which  returns  the
viewportnumber (INQ 2) and name (INQ 301).

See also READ

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

^PLOT AS_DISPLAYED CURRENT_WINDOW ALL OFF OFFSET ROTATE DEFAULT DRAWING
^PLOT Set_sys_plot_format Plot_enter_user_format_and_update
^PLOT Plot_enter_plotscale_and_update
^TM_PLOT SM_PLOT
^Plot_do
^Plot_enter_rotate_and_update
^Plot_enter_two_pts_and_update
^Set_sys_plot_as_displayed
^Set_sys_plot_source
^Plot_zero
^Plot_ninety
^View_plot_start
PLOT command

->(PLOT)->+------------->+->+----------------->+->+----------------->+--.
	  |		 |  |		       |  |		     |  |
	  `->|offs_pnt|->'  `->|rotate_angle|->'  `->(AS_DISPLAYED)->'  |
								        |
       .----------------------------------------------------------------'
       |
       +--->(DEFAULT)--->|string|---.
       |			    |
       +<---------------------------'
       |
       `--->+----------->+--->+----------------->(ALL)---------------->+-->
	    |		 |    |					       |
	    `-->(OFF)--->'    +------------->(CURRENT_WINDOW)--------->+
			      |					       |
			      +---------------->|string|-------------->+
			      |					       |
			      `--->(TWO_PTS)--->|ll pnt|--->|ur pnt|-->'


PLOT  generates  a plot data which is usually  sent to a spooler  directly.  The
spooler program sends the plot data to the plotter device.  The plot menu allows
you to specify  most of the plot options  interactively.  When you invoke a plot
using the START  PLOT  entry in the plot menu, the PLOT  command  will be called
using the options set according to the  highlighted  items on the plot menus and
according to the plot settings defined in the file "defaults".

offs_pnt:  point  (default  0,0)

Causes the drawing to be moved on the paper by a specified amount in user units.
This can be used to move the drawing so that it coincides  with label  fields on
the plot paper.

rotate_angle: number (default 0)

Gives the rotation angle of the drawing on the paper in current  angular  units.
In the plot menu use ROTATE ANG to specify this angle.

DEFAULT

Puts a string  containing plot commands (HPGL or HPGL2) into the plot data after
initialization  and before any  drawing  element is  plotted.  This is useful to
change the plot speed or other global plotter parameters.

AS_DISPLAYED

Means that the  drawing is to be  plotted  according  to the show  status of the
current viewport, with construction  geometry,  spotlighting, vertex points, and
part boxes.  This option  tells HOW to plot the  drawing,  but not WHAT to plot.
In the plot menu use Curr Show in CONTENTS to set this option.

If  AS_DISPLAYED  is not  specified  the model is  plotted  as a normal  drawing
suppressing   vertex  points,   spotlighting,   show  changes,  part  boxes  and
construction geo, but including all geometry and dimensioning.  In the plot menu
use  Drawing  in  CONTENTS  to  get a plot  according  to the  standard  drawing
conventions.

OFF
No paper advance before plotting.

ALL
CURRENT_WINDOW
string
TWO_PTS ll_pnt, ur_pnt
This group of options tells WHAT to plot.

 -- ALL means the entire drawing, starting at the top part.
    In the plot menu use All in OUTPUT to set this option.

 -- CURRENT_WINDOW means only that part viewed (see VIEW command) in the current
    viewport.  Only  elements  within the  window of the  current  viewport  are
    plotted.  In the plot menu use Viewport in OUTPUT to set this option.

 -- A string means that the  characters  of the string are sent  directly to the
    plot  destination;  no model  data is  plotted  and the soft  limits  on the
    plotter are not changed.

 -- Two points  specify a box;  elements  within this box  (starting  at the top
    part) are plotted.  In the plot menu use Box in OUTPUT to specify this box.

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

^DEFAULTS PATTERN IRON STEEL COPPER PLOT P1 P2
^DEFAULTS AS_DISPLAYED PLOT_ROTATE OFFSET FORMAT
^DEFAULTS PLOTTER_TYPE HPGL HPGL2 Mustread_plotdefs GENERATE ORIGIN PLOT_SCALE 
^DEFAULTS Sys_plot_emulate_758x Add_new_plotters Plot_hpgl2_8colors
^DEFAULTS PLOT_DESTINATION HPIB CURRENT_WINDOW
^DEFAULTS np lp OpenSpool
^DEFAULTS Plot_do
^DEFAULTS Plot_enter_filename_prefix_and_update
^DEFAULTS Plot_enter_plotscale_and_update
^DEFAULTS Plot_enter_plotter_type_and_update
^DEFAULTS Plot_enter_rotate_and_update
^DEFAULTS Plot_enter_two_pts_and_update
^DEFAULTS Plot_enter_user_format_and_update
^Set_sys_plot_default
^Set_sys_plot_id_name
^DEFAULTS Set_sys_plot_center
^Set_sys_plot_plotscale
^DEFAULTS Set_sys_plot_source
^Set_sys_plot_source_ll
^Set_sys_plot_source_ur
^DEFAULTS Set_sys_plot_as_displayed
^Set_sys_plot_rot
^Set_sys_plot_offset_x
^Set_sys_plot_offset_y
^Set_sys_plot_format_width
^Set_sys_plot_format_height
^DEFAULTS Set_sys_plot_format
^Reset_sys_plot_configuration Sys_plot_configuration_dtab
^Set_sys_plot_configuration Sm_plot_configuration Sm_plot_configuration_update
^Sm_screen_plot_configuration
^DEFAULTS Set_sys_plot_type
^DEFAULTS Set_sys_plot_filename_prefix 
^DEFAULTS Set_sys_plot_filename_delold 
^Set_sys_plot_filename_generate
^Plot_a4 
^Plot_a3
^Plot_a2
^Plot_a1
^Plot_a0
^Plot_A
^Plot_B
^Plot_C
^Plot_D
^Plot_E
^Prt
^Rprt
^Cprt 
^Crprt 
^Dump_screen_defaults_color
^Dump_screen_defaults_bw
^Set_sys_dump_screen_background
^Set_sys_dump_screen_color
^DEFAULTS Dump_screen_box Dump_screen_port Dump_screen_screen

The file "defaults"  contains  default values and settings used for plotting and
screen  dumping and some  predefined  hatch  patterns  (iron, steel and copper).
Several of the plot values can be changed in the plot menu.  The following  list
gives default  settings from the file  "defaults".  Each macro  command is given
with its parameters if any and followed by a short description:

Set_sys_dump_screen_background ON
  This value determinates  whether the background color is printed or not when a
  screen dump is invoked from the plot menu.  The highlight for Background or No
  Background indicates the current setting of this option in the plot menu.

Set_sys_dump_screen_color ON
  This value determinates  whether the print out is directed to a color or black
  and white printer when a screen dump is invoked from the plot menu.
  The DUMP_SCREEN_DEFAULTS are set according to the the macro 
    Dump_screen_defaults_color or
    Dump_screen_defaults_bw.
  The highlight for Color or Black & White indicates the current setting of this
  option in the plot menu.


Set_sys_plot_default ''
  String to be used for the DEFAULT option in the PLOT command.

Set_sys_plot_id_name 'N'
  The string 'N' can be replaced by the HP-UX terminal  number or the user name.
  When  plotting,  the  specified  string is used to build up the complete  plot
  destination  string if the  Generate  Name option from the plot  configuration
  menu is selected.

Set_sys_plot_center ON
  This value is used for the  PLOT_CENTER  function and the highlight for Center
  or Left indicates the current setting of the POSITION option in the plot menu.

Set_sys_plot_plotscale 1
  This  value is used as the scale  factor in the  PLOT_SCALE  function  and its
  current  value is  displayed to the right of SCALE entry in the plot menu.  (A
  value of 0 means Fit.)

Set_sys_plot_source ALL
  Sets  ALL,  CURRENT_WINDOW  or  TWO_PTS  for  PLOT.  The  current  setting  is
  highlighted as All, Viewport or Box at the OUTPUT option of the plot menu.

Set_sys_plot_source_ll 0,0 
Set_sys_plot_source_ur 100,100
  If the plot source is set to TWO_PTS (Box) these two values are used to define
  the boxed area (lower left and upper right corner of the box).

Set_sys_plot_as_displayed (FALSE)
  This value  determinates  whether the AS_DISPLAYED  option in the PLOT will be
  used or not.  The  highlight  for Drawing or Curr Show  indicates  the current
  setting of the CONTENTS option in the plot menu.

Set_sys_plot_rot 0 
  Set the rotation angle for PLOT in radian angular units.  The current value is
  displayed  in  current  angular  units to the right of ROTATE  ANG in the plot
  menu.

Set_sys_plot_offset_x 0
Set_sys_plot_offset_y 0
Set_sys_plot_format_width 266.75
Set_sys_plot_format_height 185
  The above values are used as defaults when you select Userformat as PAPER SIZE
  in the plot menu.

Set_sys_plot_format 'A4'
  Format name to select the offsets and paper size (hard  limits)  from the file
  'plotdefs'.  See plotdefs for more information.

Reset_sys_plot_configuration
  Resets the plot configuration table before setting plot configurations.

Set_sys_plot_configuration 'Spool7550'
  This value  defines the name for a plot  configuration.  A plot  configuration
  consists of the following items:
    * Plotter type
    * Plot destination
    *   Delete Old / New File option for the plot destination.
    *   Generate Name / Original Name option for the plot destination.
    * (This list might be added to with future releases.)
  If the  specified  name  exists  the  selected  configuration  is made  active
  otherwise a new plot configuration is defined.  The current plot configuration
  name and its settings are highlighted on the plot configuration menu.

Set_sys_plot_type '7550'
  This value defines the name of the selected  plotter type for the current plot
  configuration.  The currently  selected  plotter type is displayed in the plot
  configuration menu.

Set_sys_plot_filename_prefix '/me10/spooldir1/p'
  This name is used as a name  prefix for the plot  destination  of the  current
  plot configuration.  When plotting is invoked from the menu a system generated
  string will be added if plot  destination  name  generation has been selected.
  The   PLOT_DESTINATION   is   then   set   to   the   resulting   string.  See
  PLOT_DESTINATION  for allowed plot destination  names.  The user selected plot
  destination name is displayed in the plot configuration menu.

Set_sys_plot_filename_delold (FALSE)
  This value  determinates  whether the DEL_OLD option for the  PLOT_DESTINATION
  will be used or not.  The highlight  for Delete Old or New File  indicates the
  current setting in the plot configuration menu.

Set_sys_plot_filename_generate  (TRUE)  
  This value  determinates  whether the plot destination name generation will be
  used or not.  If the value is set to (FALSE)  only the name  prefix is used as
  the plot  destination.  If the  value is set to (TRUE) a string  build up from
  the format  name  (Sys_plot_format),  the node id  (Sys_plot_id_name)  and the
  current  time is  appended  to the plot  destination  name  prefix.

  (Example: '/me10/spooldir1/pA4_N_140640' or 'prefix_E_id_093621' )

  This  destination  name  generation is only available when the plot is invoked
  via the START PLOT  entry in the plot menu.  The  highlight  for Gener Name or
  Original Name indicates the current setting in the plot configuration menu.


Hint for macro programmers:
  Use only the  "Set_sys_..."  macros to change the values and use the according
  'Sys_...'  macros to read the values.  If you are using  macro  programs  with
  statements  like  (LET   Sys_plot_type   7585)  you  should  change  these  to
  (Set_sys_plot_type '7585').


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

^PLOTDEFS PLOT FORMAT DEFAULTS FRAME DIN A4 A3 A2 A1 A0 
^PLOT_FORMAT HARDLIMITS
^PLOTDEFS Set_sys_plot_format
^PLOTDEFS Set_sys_plot_configuration Sm_plot_configuration
^PLOTDEFS Set_sys_plot_offset_x Set_sys_plot_offset_y
^PLOTDEFS Set_sys_plot_format_width Set_sys_plot_format_height
^PLOTDEFS PLOTTER_TYPE Set_sys_plot_type
^Mustread_plotdefs

The file "plotdefs"  contains offsets and hard limits for all plotters and paper
formats.  This file is  always  read  when you  invoke a plot via the plot  menu
entry START PLOT.  If the file  "plotdefs"  has changed  during your session you
have to enter the following line interactively:
LET Mustread_plotdefs (TRUE)


The following format is used (all sizes are in mm):

width_tolerance height_tolerance
'format name' 'plotter names' x_offset y_offset format_width format_height
...
''

The width and height  tolerances are subtracted from the format width and format
height values respectively.

If the format width is smaller than the format height, the plot is rotated by 90
degrees.

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

^PLOTTER_TYPE ADD CENTER PLOTTER SPOOL Plot_enter_plotscale_and_update
^Set_sys_plot_type Set_sys_plot_configuration Sm_plot_configuration 
^PLOTTER_TYPE PLOT_TRANSFORMATION RESET
^HPGL
^HPGL2
^7440         7440A
^7470A        7470
^7475A        7475
^7550A        7550
^7570A        7570
^7580B        7580 7580A
^7585B        7585 7585A
^7586B        7586
^7595         7595A
^7596         7596A
^DM/SX        7595B
^DM/RX        7596B
^DM/MX        7599A
^7600/240D    240D 7627 7627A
^7600/240E    240E 7628 7628A
^7600/250     250
^7600/255     255
^7600/355     355
^LASERJET/III LJ/III
^PAINTJET/XL  PJ/XL
PLOTTER_TYPE function

--->(PLOTTER_TYPE)-->+-------->|plotter name|-------------------------------+->
		     |                                                      |
                     `->(ADD)->+---------->+----------->+->|plotter names|--'
               	               |           |            |
			       +->(HPGL)-->+->(CENTER)->'
		               |                        |
                               `------->(HPGL2)-------->'

PLOTTER_TYPE  specifies  the  type  of  plotter  you  want  to use  next.  After
selecting  a new plotter you should  reset the  PLOT_TRANSFORMATION.  If you are
using  the  plot  menu  you  have  to  specify  the  PLOTTER  TYPE  in the  plot
configuration  menu.  When you select a plot configuration the plotter type will
be set  accordingly  and the  PLOT_TRANSFORMATION  will  RESET  to the  plotters
default.

The plotter name is a string, and must be one of the following:

  supported plotter devices for Hewlett Packard Graphics Language (HPGL) 

	  plotter name   | alternative names
          ---------------+------------------
          '7440'         | '7440A'
          '7470A'        | '7470'
          '7475A'        | '7475'
          '7550A'        | '7550'
          '7570A'        | '7570'
          '7580B'        | '7580' '7580A'
          '7585B'        | '7585' '7585A'
          '7586B'        | '7586'
          '7595'         | '7595A'
          '7596'         | '7596A'

  supported plotter devices for Hewlett Packard Graphics Language 2 (HPGL2) 

	  plotter name   | alternative names
          ---------------+------------------
          'DM/SX'        | '7595B'
          'DM/RX'        | '7596B'
          'DM/MX'        | '7599A'
          '7600/240D'    | '240D' '7627' '7627A'
          '7600/240E'    | '240E' '7628' '7628A'
          '7600/250'     | '250'
          '7600/255'     | '255'
          '7600/355'     | '355'
          'LASERJET/III' | 'LJ/III'
          'PAINTJET/XL'  | 'PJ/XL'
  
          Note that some of the HPGL2 plotters 
	  can also be configured to use HPGL language.


PLOTTER_TYPE  ADD  defines  a new  plotter  with the  specified  plotter  names.
Plotter  names  have to be given as one  string  with one or more  names for the
plotter separated with a comma (,).  The first name will be used for the plotter
name  inquire,  all other names may be used as  alternative  names.  For the new
plotter you can specify the plotter language (HPGL or HPGL2) and the position of
the origin (CENTER) if it is in the center of the paper (four quadrant plotter).
The  default  language  is HPGL and the  default  origin  lies in the lower left
corner of the paper (one quadrant plotter).


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

^PLOT_CENTER CENTER ON OFF PLOT_VIEWPORT
^Set_sys_plot_center
^Plot_left

PLOT_CENTER function

--->(PLOT_CENTER)--->+--->(ON)---->+--->
		     |		   |
		     `--->(OFF)--->'

PLOT_CENTER  centers  the drawing in the plotter  viewport:  Center  (ON) or not
center  (OFF).  See  PLOT_VIEWPORT.  If you are using the plot  menu you have to
specify the POSITION there accordingly.

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

^PLOT_DESTINATION DESTINATION DEL_OLD SPOOL
^PLOT_DESTINATION Reset_sys_plot_configuration Set_sys_plot_configuration
^Plot_enter_filename_prefix_and_update Sm_plot_configuration
^Set_sys_plot_filename_prefix Set_sys_plot_id_name
^Set_sys_plot_filename_delold Set_sys_plot_filename_generate
^PLOT_DESTINATION pipe lp np OpenSpool 

PLOT_DESTINATION function

--->(PLOT_DESTINATION)--->+---------------->+--->|plot destination name|--->
			  |		    |
			  `--->(DEL_OLD)--->'

PLOT_DESTINATION defines where the plot should be sent.  You enter the name of a
plot  file.  You must enter DEL_OLD  to delete an existing plot file.

A legal plot  destination  name may start with the HP-UX pipe symbol '|' to send
the plot  data  directly  to a HP-UX  process.  This  provides  a simple  way to
transfer the plot data to a spooler other than the ME plotspooler.  
Example:  '| np -q  ColorElectro'  will send the plot  data  directly  to the HP
OpenSpool/UX   spooler   with  a   configured   queue   ColorElectro.  (See   HP
OpenSpool/UX).  You will get a error  message when the transfer to the specified
HP-UX process was not  successful  (for example when using wrong options for the
HP-UX process).  The DEL_OLD option has no effect when piping a plot.

If you are using the plot menu you have to specify the PLOT  DESTINATION  in the
plot configuration  menu.  There you also can specify the DEL_OLD option via the
Delete  Old  menu  entry.  When  you  select  a  plot   configuration  the  PLOT
DESTINATION,  the Delete Old and Generate  Name option will be set  according to
the selected configuration.

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

^PLOT_FORMAT FORMAT FWIDTH FHEIGHT HARDLIMITS PLOTDEFS PLOT FORMAT DEFAULTS 
^Set_sys_plot_format
^Plot_enter_user_format_and_update
^PLOT_FORMAT Set_sys_plot_offset_x Set_sys_plot_offset_y
^PLOT_FORMAT Set_sys_plot_format_width Set_sys_plot_format_height

PLOT_FORMAT function

--->(PLOT_FORMAT)--->|fwidth|--->|fheight|--->

PLOT_FORMAT  defines the maximum  plotting area (hard limits) which can be used.
See PLOT_VIEWPORT for further information.  The width and height is specified in
user units.

If you are using the plot menu you have to  specify  the plot  format  using the
PAPER SIZE entry in the plot menu.  For all predefined  paper sizes (A-E, A4-A0)
the valid sizes are read from the file  "plotdefs".  See plotdefs for a detailed
description of the file format.

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

^PLOT_LINETYPE_LENGTH LINETYPE ALL

PLOT_LINETYPE_LENGTH function

--->(PLOT_LINETYPE_LENGTH)--->+--->|length1|---> ... --->|length7|--->+--->
			      |					      |
			      +----->|linetype|--->+----->|length|--->'
			      |			   |
			      `------->(ALL)------>'

PLOT_LINETYPE_LENGTH  specifies  the length of the pattern (user units) for each
linetype.  You can enter seven  different  lengths, one for each linetype except
solid;  see  LINETYPE  for  the  correct  order.  You can  also  enter a  single
linetype/length pair, or, with ALL, a single length for all linetypes.

If you are  using the plot menu you have to  specify  the plot  linetype  length
using the LTYPE LEN entry in the plot menu.

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

^PLOT_PEN_TABLE OLD

PLOT_PEN_TABLE function (OLD)

-->(PLOT_PEN_TABLE)--->|transformation row for solid|--->.
		  .<-------------------------------------'
		  `--->|transformation row for dashed|--->.
		  .<-------------------------------------'
		  `--->|transformation row for long_dashed|--->.
		  .<-------------------------------------------'
		  `--->|transformation row for dot_center|--->.
		  .<------------------------------------------'
		  `--->|transformation row for dash_center|--->.
		  .<-------------------------------------------'
		  `--->|transformation row for phantom|--->.
		  .<---------------------------------------'
		  `--->|transformation row for center_dash_dash|--->.
		  .<------------------------------------------------'
		  `--->|transformation row for dotted|------------->

PLOT_PEN_TABLE  controls the mapping of linetypes and colors to plotter pens and
plotter  linetypes.  For each  linetype, in the above  order, you enter a string
describing the transformation.

The  transformation  row for a  linetype  is a string  consisting  of 8 pairs of
characters,  one for each  color.  The first  character  in the pair  names  the
plotter  linetype,  'A'..'H'  for solid to dotted, and the second  gives the pen
number.  The character pairs can be delimited by blanks.

The plot pen table normally supplied with the system is listed below.  Note that
it is the default  table with one  exception:  cyan phantom  lines are mapped to
pen 0, which means that they are not plotted.  The plotter  frames  available on
the Setup menu use this  color/linetype  combination,  which is why they are not
plotted.

PLOT_PEN_TABLE
	     {BLACK	RED   GREEN  YELLOW    BLUE MAGENTA    CYAN   WHITE}
	     {	  0	  1	  2	  3	  4	  5	  6	  7}
{A SOLID}	'A0	 A2	 A4	 A3	 A7	 A6	 A5	 A1'
{B DASHED}	'B0	 B2	 B4	 B3	 B7	 B6	 B5	 B1'
{C LONG_DASHED} 'C0	 C2	 C4	 C3	 C7	 C6	 C5	 C1'
{D DOT_CENTER}	'D0	 D2	 D4	 D3	 D7	 D6	 D5	 D1'
{E DASH_CENTER} 'E0	 E2	 E4	 E3	 E7	 E6	 E5	 E1'
{F PHANTOM}	'F0	 F2	 F4	 F3	 F7	 F6	 F0	 F1'
{G CENTER_DASH_}'G0	 G2	 G4	 G3	 G7	 G6	 G5	 G1'
{H DOTTED}	'H0	 H2	 H4	 H3	 H7	 H6	 H5	 H1'

Use PLOT_TRANSFORMATION for new macros.

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

^PLOT_TRANSFORMATION COLOR LINEPATTERN PEN RESET ALL SAME PENNUMBER HPGL HPGL2

PLOT_TRANSFORMATION function

--->(PLOT_TRANSFORMATION)--->+---------------->(RESET)---------------->+-->
 .<--------------------------'					       ^
 +------------------>(ALL)---------------------.		       |
 |					       v		       |
 `-->|first linetype|--+-->|second linetype|---+		       |
		       v		       |		       |
 .<--------------------+<----------------------'		       |
 |								       |
 +------------------>(ALL)------------------------.		       |
 |						  |		       |
 +----------------->|color|---------------------->+		       |
 |						  |		       |
 `--->|first red int|---->|second red int|---.	  |		       |
 .<------------------------------------------'	  |		       |
 `-->|first green int|-->|second green int|--.	  |		       |
 .<------------------------------------------'	  v		       |
 `-->|first blue int|---->|second blue int|------>+		       |
 .<-----------------------------------------------'		       |
 |								       |
 +------->(SAME)------>+----------------------->|pen|------------------'
 |		       ^
 `--->|new linetype|---'

first linetype, second linetype, new_linetype: LINEPATTERN functions
first red/green/blue, second red/green/blue intensity: number (range 0..1)
color: COLOR functions
pen: number

The function PLOT_TRANSFORMATION defines a mapping for all elements during plot,
which have,  firstly, a linetype  equal to the first  linetype or between,  (and
including), the first and second linetypes, and secondly, an equal element color
or an element  color  within  the color  cube  defined  by the first and  second
red/green/blue  intensities.  All  these  elements  are  plotted  with  the  new
linetype and with the specified  pen.  Instead of specifying the linetype  range
SOLID DOTTED ALL can be used.  Also use ALL for color to specify the whole color
cube (0 1 0 1 0 1).  If the new linetype  should be the same as the old linetype
then  SAME  can be  specified  for the  new  linetype.  The  PLOT_TRANSFORMATION
function  can be used more than once to specify  different  transformations.  If
the last  specified  plot  transformation  includes  the  range of a  previously
defined plot  transformation then the previous  transformation is overwritten by
the new one.  All elements which results in a plot transformation with pen equal
0 are not plotted.  The  specified  pen number must be valid with respect to the
plotter to be used.

The default plot transformation  (accomplished by PLOT_TRANSFORMATION  RESET) is
depending on the plotter  language  (HPGL or HPGL2) which is set for the current
plotter:

                                      HPGL  (HPGL2)
PLOT_TRANSFORMATION ALL ALL SAME        1     (1)
PLOT_TRANSFORMATION ALL BLACK SAME      0     (0)
PLOT_TRANSFORMATION ALL RED SAME        2     (2)
PLOT_TRANSFORMATION ALL GREEN SAME      4     (3)
PLOT_TRANSFORMATION ALL YELLOW SAME     3     (4)
PLOT_TRANSFORMATION ALL BLUE SAME       7     (5)
PLOT_TRANSFORMATION ALL MAGENTA SAME    6     (6)
PLOT_TRANSFORMATION ALL CYAN SAME       5     (7)
PLOT_TRANSFORMATION PHANTOM CYAN SAME   0     (0)

Due to a limitation of some plotter  devices PHANTOM and  CENTER_DASH_DASH  line
types are plotted the same by default.

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

^SCREEN_TRANSFORMATION COLOR LINEPATTERN RESET ALL SAME
SCREEN_TRANSFORMATION function

--->(SCREEN_TRANSFORMATION)--->+------------>(RESET)------>+---->
 .<----------------------------'			   ^
 +------------------->(ALL)---------------------.	   |
 |						v	   |
 `-->|first linetype|-->+-->|second linetype|---+	   |
			v			|	   |
 .<---------------------+<----------------------'	   |
 |							   |
 +------------------->(ALL)---------------------.	   |
 v						v	   |
 +------------------>|color|------------------->+	   |
 |						|	   |
 `--->|first red int|---->|second red int|---.	|	   |
 .<------------------------------------------'	|	   |
 `-->|first green int|-->|second green int|--.	|	   |
 .<------------------------------------------'	v	   |
 `-->|first blue int|---->|second blue int|---->+	   |
 .<---------------------------------------------'	   |
 v							   |
 +------->(SAME)------>+----+------->(SAME)------->+-------'
 |		       ^    |			   ^
 `--->|new linetype|---'    `----->|new color|-----'

first linetype, second linetype, new_linetype: LINEPATTERN functions
first red/green/blue, second red/green/blue intensity: number (range 0..1)
color, new color: COLOR functions

The function SCREEN_TRANSFORMATION defines a mapping for all elements during the
normal  redraw, which have,  firstly, a linetype equal to the first  linetype or
between, (and including), the first and second linetypes, and secondly, an equal
element color or an element color within the color cube defined by the first and
second  red/green/blue  intensities.  All these  elements are drawn with the new
linetype and with the specified new color.  Instead of  specifying  the linetype
range SOLID DOTTED ALL can be used.  Also use ALL for color to specify the whole
color  cube (0 1 0 1 0 1).  If the new  linetype  should  be the same as the old
linetype  then SAME can be  specified  for the new  linetype.  If the new  color
should be the same as the element  color then SAME can be specified  for the new
color.  The SCREEN_TRANSFORMATION function can be used more than once to specify
different transformations.  If the last specified screen transformation includes
the  range of a  previously  defined  screen  transformation  then the  previous
transformation is overwritten by the new one.

The default screen transformation (SCREEN_TRANSFORMATION RESET) is such that all
elements are drawn in their own color and linetype attributes.

The input of SCREEN_TRANSFORMATION RESET is the same as
	     SCREEN_TRANSFORMATION ALL ALL SAME SAME.

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

^PLOT_SCALE SCALE SYMBOL TEXT DIMENSION AUTO FIT DRAWING_SCALE 
^Plot_enter_plotscale_and_update
^Set_sys_plot_plotscale
^Plot_factor_value

PLOT_SCALE function

--->(PLOT_SCALE)--->+--->|scale factor|--->+--->
		    |			   |
		    `------>(AUTO)-------->'

scale factor: number

PLOT_SCALE  sets the  factor  by  which  the  entire  drawing  (including  text,
dimensioning,   and  symbols)  is  scaled   before   being   plotted.  See  also
DRAWING_SCALE,  which leaves text,  dimensioning,  and symbols  unchanged.  AUTO
means that the drawing is to be automatically  fitted into the plotter viewport.
See also PLOT_VIEWPORT.

If you are using the plot menu you have to  specify  the plot  scale  using  the
SCALE entry in the plot menu.  You can also  specify the AUTO option via the Fit
menu entry.

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

^PLOT_VIEWPORT OFFSET VWIDTH VHEIGHT FORMAT HARDLIMITS SOFTLIMITS P1 P2
^PLOT_VIEWPORT Set_sys_plot_format
^PLOT_VIEWPORT Set_sys_plot_format_width Set_sys_plot_format_height
PLOT_VIEWPORT function

--->(PLOT_VIEWPORT)--->+-------------------->(FORMAT)----------------->+-->
		       |					       |
		       `-->|xoffset|->|yoffset|->|vwidth|->|vheight|-->'

   xoffset,yoffset,vwidth,vheight: number in user units

PLOT_VIEWPORT  locates the plotter  viewport  (soft  limits)  within the maximum
plotting area (hard limits,  specified by PLOT_FORMAT).  The soft limits must as
a minimum partially overlap the hard limits.  The layout is as follows:

      physical paper area
      +___________________________________________________________________
      |	 maximum plotting area (hard limits)				 |
      |	 +_____________________________________________________________	 |
      |	 |							  ^   |	 |
      |	 |							  |   |	 |
      |	 |			  plotter viewport (soft limits)  |   |	 |
      |	 |			  +__________________ P2	  |   |	 |
      |	 |			  |<----vwidth----->| ^		  |   |	 |
      |	 |			  |		    | |		  |   |	 |
      |	 |			  ^y		    | vheight	  |   |	 |
      |	 |			  |   x		    | |		  |   |	 |
      |	 |<------xoffset--------->|___>_____________| v	       fheight|	 |
      |	 |		       P1 ^				  |   |	 |
      |	 ^y			  |				  |   |	 |
      |	 |			  yoffset			  |   |	 |
      |	 |(0,0) x		  |				  |   |	 |
      |	 |______>_________________v_______________________________v___|	 |
      |	 <------------------------fwidth------------------------------>	 |
      |__________________________________________________________________|

FORMAT means that the soft limits should be the same as the hard limits.
If you are using the plot menu the FORMAT option is used.

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

^POINT MIX SM_CREATE SM_CREATE_1 TM_CREATE TM_CREATE_1
POINT command

-->(POINT)--+-->|point|--+-->-----------------------------------------+--->
	  | ^		 |					      |
	  | '------------'		,----<---,                    |
	  |				|        |                    |
	  '-(MIX)->--|pnt1|->--|pnt2|->-+-|frac|-+---->---------------'
                                          |pnt |

POINT creates point  elements.  You indicate where the element  should go either
directly or with MIX.  MIX takes two  (ordinary)  points and  generates  a point
element,  either  with a  fraction  or a  third  point.  With  a  fraction,  MIX
generates the point pnt1 + frac*(pnt2 - pnt1).  With a third point, MIX uses the
perpendicular  projection of this point on the imaginary  infinite  line between
the first two points.

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

^PROBLEM TROUBLE
A Few Simple Problems and their Solutions

Cannot draw any geometry (or construction geometry).

 -- Be sure the current color isn't black.  Black  elements are  invisible.  Try
    LINE WHITE END and C_LINE WHITE END.

 -- Be sure you  haven't  used VIEW in such a way that your  active  part is not
    visible.  Try VIEW TOP.

Hatching not visible.

 -- Be  sure  the  hatch   color   isn't   black.  Use  HATCH   <color>  or  see
    CURRENT_HATCH_PATTERN.

 -- Be  sure  the  hatch   distance  is  small   enough.  See   HATCH_DIST   and
    CURRENT_HATCH_PATTERN.

Cannot turn on the grid.

 -- If there are too many grid  points in a  viewport,  the grid is  suppressed.
    Zoom  in  closer  with  WINDOW  ZOOM,  or  change  the  grid  spacing   with
    GRID_FACTOR.

Cannot select an element (computer beeps).

 -- Commands that modify elements  usually require that these elements be in the
    active part.  Use EDIT_PART to change your active part.

 -- Check the catching mode.  If you set it to, say, INTERSECTION, then it is an
    error to try to catch to anything but an intersection.  Try CATCH ALL.

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

^PUT_PROPERTIES PROPERTIES PROP
^TM_PROP_PUT
PUT_PROPERTIES command

			  +<-----------------+
			  |		     |
---->(PUT_PROPERTIES)---->+---->|select|---->+---->

PUT_PROPERTIES  changes the properties  (color,  linetype,  etc) of the selected
elements to be the current ones.  For a complete  list of which  properties  are
affected, see GET_PROPERTIES.

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

^RECALL_WINDOW WINDOW TM_WINDOW_RECALL
RECALL_WINDOW function

---->(RECALL_WINDOW)---->

RECALL_WINDOW  changes the window of the current  viewport to the window  stored
with STORE_WINDOW.  See also LAST_WINDOW.

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

^REDRAW TM_WINDOW_REDRAW
REDRAW function

---->(REDRAW)---->

REDRAW redraws the contents of the current viewport.

See also DISPLAY_LIST with option REGENERATE.

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

^RENAME_PART PARTS TM_PARTS_RENAME
RENAME_PART command

---->(RENAME_PART)---->|new name|---->

RENAME_PART  gives a new name to the  active  part.  The  name  must be a simple
name,  without  '/'s; the  exception is that if you are at the top part, you can
rename it to '/'.

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

^RENOVATE CENTER CURRENT ZOOM LAST_WINDOW STORE_WINDOW RECALL_WINDOW 
^RENOVATE ALL_ACTIVE AS_DISPLAYED FIT PAN_SEL TWO_PTS CHECK_WINDOW
^TM_WINDOW	
^Set_pan_vector
^Pan_forward
^Pan_backward

  RENOVATE

	Function:  Restores the contents of (selected) viewports by drawing from
	the 2D data structures.

        Syntax

			,->-(TWO_PTS)--|point|--|point2|--------,
			|                                       |
			+->-(PAN_SEL)--|point|--|screen point|--+
			|                                       |
			+->-(FIT)-------------------------------+
			|                                       |
			+->-(AS_DISPLAYED)----------------------+
			|                                       |
	->-(RENOVATE)->-+->-(CENTER)->-|new center pnt|---------+->-,
			|                                       |   |
			+->-(ZOOM)->-|scale factor|-------------+   |
			|                                       |   |
			+->-(LAST_WINDOWS)----------------------+   |
			|                                       |   |
			+->-(STORE_WINDOWS)---------------------+   |
			|                                       |   |
			`->-(RECALL_WINDOWS)--------------------'   |
								    |
	       ,----------------------------------------------------'
	       |        
	       |            ,->-(ALL)--------->-,
	       |            |                   |
	       |            +->-|id viewport|->-+
	       |            |                   |
	       `---------->-+->-(CURRENT)----->-+------------------>
			    |                   |
			    `--------->---------'   
			     (only one viewport)


        Parameters

           TWO_PTS

	      Draws a new window with  specified  points as lower left and upper
	      right corner in the specified ports.

           PAN_SEL

	      Moves the  drawing in the  specified  ports.  The first  digitized
	      point moves to screen point.

           AS_DISPLAYED

	      With this option a simple redraw in specified ports will be done.
	      See also DISPLAY_LIST with option REGENERATE.

           FIT

	      Fits all of the current drawing in specified ports.

           ZOOM

	      Scales all of the current  drawing in  specified  ports by a given
	      scale factor.

           CENTER

	      With  this  option  the  indicated  point  is made the  center  of
	      drawings in specified ports.

           LAST_WINDOWS

	      Recalls the last window in specified ports.

           STORE_WINDOWS

              Stores the current window in specified ports.

           RECALL_WINDOWS

	      Changes the windows in  specified  ports to the windows  stored by
	      RENOVATE STORE_WINDOW.


           ALL

              Affects all active viewports.

           CURRENT

              Affects current viewport.


        Description

	RENOVATE  works like redraw or window  function  affecting all specified
	viewports.

================================================================================
^RULER CS GRID
^TM_RULER_SLASH_GRID_RULER_ON
^TM_RULER_SLASH_GRID_RULER_OFF
RULER function

	    ,--------------------------------,
	    |				     |
	    v				     |
--->(RULER)-+->|point or viewport number|----+-->+-->(ON)---,
	    |				     ^   |	    | 
	    +->(ALL)-------------------------+   '-->(OFF)--+-->
	    |				     |
	    '------------------------------->'

RULER turns the ruler on or off in the specified  viewport(s)  .  If no viewport
is  specified  the ruler is turned on or off in the  current  viewport .  If the
ORIGIN is active in the  specified  viewport(s)  , it is turned  off.  The ruler
origin  and axes are  determined  by the  input  coordinate  system,  set by the
commands  beginning with "CS_".  The location of the axis ticks is determined by
the input  coordinate  system and by the ruler spacing, set by GRID_FACTOR.  You
can  catch to a ruler  tick, or to an  intersection  between  the  ruler  and an
element; see CATCH for details.

The drawing of the ticks is  suppressed  in  viewports  where they are too close
together.

See also FOLLOW.

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

^SAVE INPUT
SAVE command

-->(SAVE)--+---------------+-->|filename|-->
	   |		   ^
	   +-->(DEL_OLD)-->+
           |               |
	   `-->(APPEND)--->'

SAVE saves the  drawing in memory to the named  file,  using the normal  command
input  language.  The output is in a form readable by INPUT.  The output of SAVE
contains the current DRAWING_SCALE.

With DEL_OLD, an existing file of the same name is overwritten  without comment.
With  APPEND,  output is added to the end of the named file, if it exists.  With
neither option, it is an error if the named file already exists.

SAVE  does not save  dimensioning  or  hatching.  The  saving  of  shared  parts
including  detail  parts  and  isometric  parts  is  rejected.  They  have to be
unshared or smashed  before SAVE.  For these  reasons,  SAVE is not suitable for
archiving; use STORE or STORE MI for this purpose.

INPUT of a file  created with SAVE will change some system  states:  all current
layer  information  will be deleted (as with the  DELETE_CURRENT_INFO  command),
SPLITTING and SPOTLIGHT are set to ON.

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

^SAVE_FONT STORE_FONT TEXT FONT
SAVE_FONT function

-->(SAVE_FONT)-+->|fontname|-+->+--------------+-->|filename|-->
	       |	     ^	|	       ^
	       '--->(ALL)----'	|-->(APPEND)-->|
				|	       |
				`-->(DEL_OLD)--'

SAVE_FONT saves the named font or ALL fonts to the named file.  The output is in
a form readable by INPUT.  Fontname and filename are strings.

If the file  already  exists, it is an error,  unless you use  DEL_OLD, in which
case the old file is  deleted,  or APPEND, in which case the  output is added to
the end of the old file.

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

^SAVE_VIEWPORT VIEWPORT CREATE_VIEWPORT
SAVE_VIEWPORT function

---->(SAVE_VIEWPORT)---->|output_spec|---->

SAVE_VIEWPORT   outputs  the  current  viewport  definitions  to  the  specified
destination.  The format is readable by INPUT.

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

^SELECT SELECTION IMPLICIT AND OR EXOR NOT ADD SUBTRACT GLOBAL
^TM_SELECTION_SELECT_2D_LIST UNDO TM_UNDO CONFIRM TM_CONFIRM

select

--->+--------------->{implicit selection}----------------------------+--->
    |								     ^
    |								     |
    |								     |
    |		 ,-----------------------------------,		     |
    |		 v				     ^		     |
    `->(SELECT)->+->{selection}-->+---->+----------->+-->(CONFIRM)---'
		 |		  ^	|--AND------>|
		 `--->(UNDO)------'	|--OR------->|
					|--EXOR----->|
					|--NOT------>|
					|--ADD------>|
					`--SUBTRACT->'

{implicit selection}

-->+----------->+-->+-------------------+->+--->|pt on vertex|------->+--->
   |		^   |		        ^  |		 	      ^
   `->(GLOBAL)->'   |-->(POINTS)------->|  |->(ELEM)-+                |
		    |-->(LINES)-------->|  |         v                |
		    |-->(ARCS)--------->|  |-------->+->|pt on elem|->|
		    |-->(FILLETS)------>|  |			      |
		    |-->(CIRCLES)------>|  |-->|pts of box|---------->|
		    |-->(TEXTS)-------->|  |			      |
		    |-->(SPLINES)------>|  |-->(ALL)----------------->|
		    |-->(C_LINES)------>|  |			      |
		    |-->(C_CIRCLES)---->|  |-->(VERTEX)->|pt|-------->|
		    |-->(PARTS)-------->|  |			      |
		    |-->(LEADER_LINES)->|  |-->(BOX)->|pts of box|--->|
		    |-->(HATCHING)----->|  |			      |
		    |-->(DIMENSIONS)--->|  |-->(INFOS)--|string|----->|
		    |-->(GEO)---------->|  |			      |     	
		    `-->(C_GEO)-------->'  `-->|part name|----------->'

{selection}

-->+----------->+-->+-------------------+->+-->|pt on vertex|-------->+--->
   |		^   |		        ^  |		 	      ^
   `->(GLOBAL)->'   |-->(POINTS)------->|  |->(ELEM)-+                |
		    |-->(LINES)-------->|  |         v                |
		    |-->(ARCS)--------->|  |-------->+->|pt on elem|->|
		    |-->(FILLETS)------>|  |		 	      |
		    |-->(CIRCLES)------>|  |-->|pts of box|---------->|
		    |-->(TEXTS)-------->|  |		 	      |
		    |-->(SPLINES)------>|  |-->(ALL)----------------->|
		    |-->(C_LINES)------>|  |		 	      |
		    |-->(C_CIRCLES)---->|  |-->(VERTEX)->|pt|-------->|
		    |-->(PARTS)-------->|  |		 	      |
		    |-->(LEADER_LINES)->|  |-->(BOX)->|pts of box|--->|
		    |-->(HATCHING)----->|  |			      |
		    |-->(DIMENSIONS)--->|  |-->(INFOS)--|string|----->|
		    |-->(GEO)---------->|  |			      |
		    `-->(C_GEO)-------->'  |-->|part name|----------->|
					   |			      |
					   |-->|color|--------------->|
                                           |			      |     	
                                           `-->|linetype|------------>'
                         

Selection  is used  within  many  commands to select the  elements  on which the
command will operate.  In this help file, the syntax  diagrams for such commands
always use the word "select".

There are basically two ways to select elements,  corresponding to the first two
diagrams  above.  You can make the  selection  directly,  or you can say  SELECT
first  and  CONFIRM  at the end.  Both  methods  use the same  basic  selection,
designated above by "{selection}", which we consider first.

The basic selection  consists of an optional type specifier,  listed in the left
column of {selection},  followed by something from the right column.  Assume for
the moment  that the type  specifier  is omitted.  The  possible  inputs  (right
column) are then either a point, an option, or a part name.

If the input is a point, its meaning  depends on where it is.  If the point lies
on a vertex, all elements ending in that vertex are selected.  Otherwise, if the
point is on an element,  that element is selected.  Otherwise,  the point is the
corner of a box, and you must then enter the opposite  corner,  selecting  every
element  within the box.  You can force a point to be interpreted as selecting a
vertex or a box with the options VERTEX and BOX.  If you select  elements by box
then construction  geometry elements will only be selected if there are no other
elements  included in the box.  Otherwise you can enter C_GEO  explicitly or you
can pick the construction geometry elements directly.

Other possible  inputs are ALL, a color, a linetype, a part name, or INFOS.  ALL
selects  all  elements  (in the active  part, as  always).  A color  selects all
elements with that color, and similarly with  linetype.  A part name selects the
named  part.  INFOS must be followed by a string;  all  elements  having an info
matching the string are selected.  The string may contain wildcards, as follows:

    *	  Matches any string including the null string.
    ?	  Matches any single character.
    [...] Matches  any one of the  enclosed  characters.  A pair  of  characters
	  separated  by - matches  any  character  lexically  between  the pair,
	  inclusive.  A NOT operator, !, can be specified immediately  following
	  the left  bracket to match any single  character  not  enclosed in the
	  brackets.
    \	  Removes any special meaning of the following character.
	  Any other character matches itself.

Now consider the left column of  {selection}.  This column acts as a modifier to
whatever was selected with the right column,  discarding  those  elements not of
the specified  type.  In this column, C_GEO means c_lines and c_circles, and GEO
means everything else in the list except texts and hatching.  A few examples:

	DELETE ALL		Deletes all elements.
	DELETE C_GEO ALL	Deletes all construction geometry.
	DELETE LINES ALL	Deletes all lines.

The situation is  complicated  by the fact that each command  tells  {selection}
what types it cares to see.  Thus,  CONVERT_SPLINE  accepts  only  splines,  and
almost no command accepts  HATCHING.  The computer beeps if none of the elements
identified by the right-column input have the expected type.

The  second  selection  method is to say  SELECT  at the  beginning,  make  your
selection, then say CONFIRM at the end.  Here the basic selection process is the
same as in method 1.  The differences are three.

First, the selected elements are highlighted.  This is slower, but in some cases
safer.

Second, you can say UNDO to undo the result of the previous  selection,  as long
as you  have  not yet said  CONFIRM.  Actually,  even  using  method  1, you can
sometimes say UNDO, as some commands (e.g.  DELETE) themselves accept UNDO.

And third, you can use the logical options (ADD, SUBTRACT, etc.).  These options
are described  below.  In the  description  "current  result" means the elements
currently  highlighted, and "elements selected next" means the elements selected
with the next invocation of {selection}.

 AND results in a logical AND (set  intersection)  of the current result and the
    elements selected next.

 ADD adds the elements selected next to the current result.  This is the default
    if no logical options (other than NOT) are specified between two invocations
    of {selection}.

 OR results in a logical OR (set union) of the current  result and the  elements
    selected next.

 EXOR results in a logical EXOR of the current result and the elements  selected
    next.

 SUBTRACT removes the elements selected next from the current result.

 NOT makes the current result unselected.  All other elements become the current
    result.

Note that the type specifier in the left column of {selection} is valid only for
that invocation.  Thus, DELETE SELECT LINES GREEN ADD YELLOW CONFIRM deletes all
green lines and all yellow elements of any type.

If you enter the qualifier GLOBAL before an invocation of {selection} this means
that the selected  elements of that invocation of {selection} need not be in the
active part otherwise {selection} only finds elements in the active part.  Using
the qualifier  GLOBAL means further that the following  {selection}  prefers the
elements of a part to the part  itself e.g.  if you select a whole part in a box
you get the part itself (without GLOBAL) or its elements (with GLOBAL).  You can
see the difference if you work with highlighting.  The logical option NOT always
works globally.  An example:

DELETE SELECT
  BOX  |pts of box| ......................  box with cmpnts in the active part
  ADD GLOBAL BOX  |pts of box| ...........  box with cmpnts from any part
  ADD GLOBAL VERTEX  |pt| ................  vertex somewhere in a part
  ADD VERTEX  |pt| .......................  vertex in the active part only
  SUBTRACT BOX	|pts of box| .............  box in the active part only
  ADD  |pt| ..............................  cmpnt in the active part only
  SUBTRACT GLOBAL  |pt| ..................  cmpnt somewhere in a part
CONFIRM END

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

^SHARE_PART UNSHARE_PART SHARE PARTS
SHARE_PART command

		   ,----------------------,
		   v			  ^
---->(SHARE_PART)--+-->|part identifier|--+-->

part identifier:
	part name
	point on a part box
	point on a geometry element (selects the containing part)

SHARE_PART  causes the identified part to become shared.  When a part is shared,
and you copy it (with GATHER or MODIFY  COPY), the  original  part and the copy,
though they look distinct on the screen, actually use the same geometry.

The  advantages  of sharing are a) you save memory, b) moves,  copies,  rotates,
etc.  of the part are  significantly  faster, and c) any changes you make to the
shared part are reflected in all its instances .  See also UNSHARE_PART .

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

^SHOW LAYER VERTEX
^TM_SHOW_2
^TM_SHOW_3
^TM_SHOW_4
^TM_SHOW_5
^TM_SHOW_6
^TM_SHOW_LAYER
^TM_SHOW_INFO
^TM_SHOW_TEXT
^TM_SHOW_ALL
^Show_label_on
^Dimension_on
^Dimension_off
^Show_text_on
^Show_text_off
^Show_hatch_on
^Show_hatch_off
^Show_all_on

SHOW function

--->(SHOW)--->+-->+--->(VERTEX)---->+------>+--->(ON)--->+-->+--->
	      |   |                 ^       |	         ^   ^
	      |   `-->(DIMENSIONS)--'	    `--->(OFF)---'   |
	      |						     |
	      `-------->|select|------->+------->(OFF)------>+
				        |	 	     |
				        +------->(BOX)------>+
				        |		     |
				        +------>|color|----->+
				        |		     |
				        `-------->(ON)------>'

SHOW allows you to selectively turn on and off various elements, or to show them
in different colors or only the outline as a box.  Items that are turned off are
not  drawn  on the  screen,  nor can you  catch to them or  select  them in, for
example,  the  DELETE  command  (except  by  selecting  ALL).  Items  set  to  a
particular  color are drawn in that color; they revert to their  original  color
when you use the ON option.  See color  functions  for  specifying  the  desired
color.

See SELECT for an explanation  of the options  available in the  selection.  The
selection  in show  cannot  select to parts  (with  part  name or pick part box)
because show operates only on the elements.

The info  option  allows  you to think  of the  elements  as being in  different
layers,  each  layer with its own  associated  info.  The tablet or screen  menu
offers  CURRENT,  ADD, and CHANGE  commands  under the rubric  LAYER;  these are
really macros that invoke the appropriate info commands, giving to an element in
layer n the info "LAYER:  n".  Since  layers are  implemented  with infos, it is
perfectly reasonable for an element to be on more than one layer, or in no layer
at all.

Elements  behave  differently;  SHOW can turn  off  existing  elements,  but new
elements are always visible.

SHOW VERTEX ON turns on all vertices of visible elements.  Vertex catching works
a little  differently  in this case.  With SHOW  VERTEX ON, you can catch to any
visible  vertex.  With SHOW VERTEX OFF, you cannot  catch to vertices of unshown
elements,  nor can you catch to center  points of  circles  or arcs,  peripheral
points of circles,  internal  support points (i.e.,  support  points between the
first  and  last) of  splines,  vertices  of  construction  lines or the  origin
vertices of texts.  This sounds complicated, but in general the rule is that you
cannot catch to that which you cannot see.

The status line shows the visibility of dimension (D), c_geo (C) , hatch (H) and
texts (T).  If there is any  element of one of these  groups  invisible  (except
dimension),  then the  corresponding  group  letter  is  shown  in  lower  case,
otherwise in upper case.  If show  dimensions  off/on is used then the dimension
letter is always lower/upper case independent of the number of dimensions.

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

^SHOW_PART PARTS BOX PART_BOX
SHOW_PART function

		  ,--------------------,
		  v		       ^
---->(SHOW_PART)--+-->|level number|---+----->
		  |		       |
		  +----->(ALL)---------+
		  |		       |
		  +-->|point on part|--+
		  |		       |
		  +--->|part name|-----'
		  |			     ,--------------------,
		  |			     v			  ^
		  +------>(PART_BOX)---------+-->|point|----------+-->
					     |			  |
					     +--->|part name|-----'

SHOW_PART  changes  the  way  parts  are  displayed  in  the  current  viewport.
SHOW_PART  can make a boxed part visible, and vice versa.  A boxed part is drawn
as a box just big enough to include  all its  elements,  which are not drawn.  A
visible part is drawn by drawing each of its elements.

If you enter a level  number, all parts down to that level are visible,  and the
deeper  ones are  boxed.  The  levels  are  counted  beginning  from  the top of
whatever  part is being  viewed in the  viewport  (normally  the top  part); the
top-level  elements  there are at level 1.  ALL makes all parts visible.  If you
identify a boxed  part, it becomes  visible.  If you give a part name, that part
becomes visible.

SHOW_PART  PART_BOX  causes  visible  parts  to  become  boxed.  After  entering
PART_BOX,  you  identify  an element  (which may itself be a part), and the part
containing  that element  becomes boxed.  Alternatively,  you enter a part name,
and the named part becomes boxed.

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

^SMASH_SUBPART PARTS TM_PARTS_SMASH
SMASH_SUBPART command
		      ,-------------,
		      v		    ^
---->(SMASH_SUBPART)--+-->|select|--+-->

SMASH_SUBPART  brings all the  elements in the  selected  part,  which must be a
subpart of the active  part, into the  active  part, and  deletes  the  subpart.
SMASH_SUBPART  does not move the elements in space; it only deletes one level of
part structure.

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

^SPLINE NATURAL DAMP TANGENTIAL CYCLIC PERIODIC UNDO TM_UNDO
SPLINE command

	   ,------------------------------------------------------------,
	   |			  ,-----------------------------------, |
	   |			  | ,------------------------,	      | |
	   v			  v v			     |	      | |
->(SPLINE)-+->(NATURAL)-------+-+-+-+-+--|data pnt|--------+-+->(END)-+-+->
	   |		      ^	|     |		           ^
	   +------------------'	|     |->(DAMP)->|damping|-|
	   |			|     |		           |
	   +->(TANGENTIAL)->{1}-+     `--->(UNDO)--------->'
	   |			|
	   +->(PERIODIC)------->+
	   |			|
	   `-->(CYCLIC)-------->'

{1}---->|angle_1|-->|angle_2|-->

SPLINE  creates a rational  cubic  spline, a special  type of smooth  curve that
passes  through  the  given  data  points.  A spline  must  have at least  three
different data points.  Four types of spline are possible:

    NATURAL - The spline has zero  acceleration  at its end points.  This is the
    default type.

    TANGENTIAL  - The start and end  angles  are  specified  by the user.  A bug
    moving along the spline from begin to end would be traveling at these angles
    at the begin and end points.

    PERIODIC - The begin and end angles are the same.

    CYCLIC - The begin  point and end  points  are the same,  and the  spline is
    smooth  there.  With this  option, you can omit the end point, as it will be
    automatically supplied.

You must say END to indicate the end of each spline.

DAMP  controls  the damping  factor at each data point.  Increasing  the damping
factor  makes the spline more  rigid.  Each data point has its own  factor.  The
default  is 0.  Once you enter a damping  factor, it  applies to all  subsequent
data points, until you use DAMP again.

UNDO backs up over entered data points.  It is only possible if you have not yet
said END.

Once a spline is created, it is not possible to change the damping factor of one
or more data points  directly.  If you must do so, it may be convenient  to SAVE
the spline to a file, then edit the  damping  values in the file, then INPUT it.
Otherwise, you must create the spline again.

See also CONVERT_SPLINE.

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

^SPLIT MERGE
SPLIT command
	    ,--------------------------,
	    v			       ^
-->(SPLIT)--+-->|elem|----->|point|--+-+-->
	    |			       |
	    +-->|select|------->-------+

SPLIT splits elements.  Only lines, circles, arcs, and fillets can be split.

There are two ways to use SPLIT.  With method 1, you  identify an element,  then
indicate  a point on the  element  where it is to be split.  With  method 2, you
select a group of  elements,  and all lines,  circles,  arcs, and fillets in the
group are split at every  intersection  with  other  lines,  circles,  arcs, and
fillets in the group.  Split only works on elements in the active part.

Splitting  a circle  results in two arcs.  The two  resulting  vertices  are the
split  point and the  original  vertex of the  circle.  In this as well as other
cases, SHOW VERTEX ON can be useful.

See also MERGE.

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

^SPLITTING
SPLITTING function

-->(SPLITTING)--+---(ON)----+--------->
		|	    |
		'---(OFF)---'

SPLITTING turns automatic splitting and merging ON or OFF.

Automatic splitting/merging has the following effects:

 -- Whenever  a new  element  is  created,  the system  checks to see if its end
    points lie on other  elements.  If so, it splits the other elements there if
    possible (see SPLIT).

 -- With each DELETE (except  DELETE ALL), if the deleted  element shared an end
    point with two other elements, these two are merged if possible (see MERGE).

 -- With CIRCLE  TAN2_PT, the resulting  "circle" is actually two arcs forming a
    circle, whose vertices are the tangent points.

These operations keep contours clean (important for automatic  hatching), at the
expense  of search  time,  which can be  considerable  in a  viewport  with many
elements.

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

^SPOTLIGHT PARTS LINETYPE COLOR
SPOTLIGHT function

-->(SPOTLIGHT)----+--(ON)---+---->
		  |	    |
		  +--(OFF)--+

SPOTLIGHT causes all geometry outside the active part to be drawn in magenta and
with dotted lines.  It is intended to help you remember where the active part is
when you have a drawing  with a complex  part  structure.  Spotlighting  changes
only the display, and not the drawing itself.

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

^STORE MI ALL DEL_OLD
STORE command

-->(STORE)-->+------>+-+--->(ALL)------>+-->+------------>+->|file name|-->
	     |	     | |		|   |	          |
	     `-(MI)->' `-->|partname|-->'   `->(DEL_OLD)->'

STORE stores the drawing to the named file.  If the named file  already  exists,
you must use the DEL_OLD option.  STORE can produce either of two formats.

The MI  option  causes  the  drawing  to be stored in MODEL  INTERFACE  STANDARD
format.  The MI file syntax is published in the  Interfacing  Manual which makes
the files  suitable for long-term  storage and  interfacing  to other  software.
Without the MI option, the default file format is compressed  MI.  The resulting
file is  approximately  60% of the size of an equivalent  uncompressed  MI file.
(Subsequent  decompression  of the file may be  achieved  under  your  operating
system using the  Lempel-Ziv-Walsh  utility "compress",  available in the public
domain.)  The  compressed  format is  recommended  for short term storage and in
situations where storage space is at a premium.

Files in either format are readable with LOAD.

ALL means to store the  entire  drawing,  from the top part  down.  You can also
name a part, and only that part will be stored.

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

^STORE_FONT SAVE_FONT LOAD_FONT TEXT FONT
STORE_FONT function

-->(STORE_FONT)-->+-->|font name|-->+-->+-------------->+-->|file name|-->
		  |		    |	|		|
		  +------>(ALL)---->+	+-->(DEL_OLD)-->+

STORE_FONT  stores  the named  font or ALL fonts to the named  file.  It uses an
internal  binary  format.  Files  created by STORE_FONT  may only be read by the
LOAD_FONT command.  They cannot be INPUT.  See also SAVE_FONT.

 -- default:  If the file specified  already exists, an error message is issued,
    otherwise a new file is created.

 -- DEL_OLD:  If the file specified already exists, its old contents are lost.

The format used by STORE_FONT  depends on the revision of HP-ME.  A file created
with one  revision  may not be loadable  with  another  revision.  To avoid this
problem,  keep copies in text form of all fonts, even if you use the binary form
from  day  to day  for  speed.  Such  a copy  can  always  be  (re)generated  by
SAVE_FONT.

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

^STORE_WINDOW WINDOW TM_WINDOW_STORE
STORE_WINDOW function

-->(STORE_WINDOW)-->

STORE_WINDOW  stores the window  coordinates of the current  viewport.  A window
stored  with   STORE_WINDOW  can  be  recalled  with   RECALL_WINDOW.  See  also
LAST_WINDOW.

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

^STRETCH MOVE ROTATE MIRROR SCALE SIMILAR AFFINE UNDO TM_UNDO COPY
STRETCH command

	     +<---------------------+
	     |			    |
	     +<-----(GLOBAL)<-------+
	     |			    |
-->(STRETCH)-+->-(pnt1)-+>-------+--+-->
	     |		|	 |  |
	     |		+-(pnt2)-+  |
	     |			    |
	     +->---|MOVE|------>----+
	     |			    |
	     +->---|ROTATE|---->----+
	     |			    |
	     +->---|MIRROR|---->----+
	     |			    |
	     +->---|SCALE|----->----+
	     |			    |
	     +->---|SIMILAR|--->----+
	     |			    |
	     +->---|AFFINE|---->----+
	     |			    |
	     +-----(UNDO)-----------+
	     |			    |
	     +-----(COPY)-----------+
	     |			    |
	     +-----(DEL_OLD)--------+
	     |			    |
	     +---(repeat factor)----+

STRETCH  stretches  lines,  circles, arcs, splines, and  leader_lines.  Possible
stretch  transformations  are definable with use of MOVE, ROTATE, MIRROR, SCALE,
SIMILAR,  or AFFINE.  See MAPPING for a  description  of these  transformations,
including the syntax.

Stretching  a line  means  that  one end is kept  fixed,  and the  other  moved.
Stretching a circle consists of moving the peripheral  point, holding the center
point fixed;  neither of these  points is normally  visible,  but SHOW VERTEX ON
makes them so.  Stretching  an arc means that one  vertex  moves,  and the other
stays  fixed; the  resulting  arc has the same  opening  angle as the  original.
Stretching  splines  and  leader_lines  means that one or more data  points of a
spline (use SHOW VERTEX ON to see them) or vertex  points of a  leader_line  are
moved while the others stay fixed.

There are two ways to identify  the  elements  to be  stretched.  First, you can
identify  a vertex.  Once you have  selected a  transformation  (e.g.  MOVE; see
MAPPING),  the  vertex is moved, and the  elements  ending  there are  stretched
accordingly.  Second, you can  indicate  two  corners of a box.  Elements  whose
vertices are all within the box are modified as with MODIFY.  Elements  with one
vertex  inside the box and the other  outside are  stretched so that the outside
vertex  remains  fixed.  (Splines  and  leader_lines  may have several  vertices
inside or  outside  the box.)  If you enter  the  qualifier  GLOBAL  before  you
identify a vertex or before you indicate  the second  corner of the box then the
selected  elements need not be in the active part,  otherwise they have to be in
the active part.  The  qualifier  GLOBAL only  influences  one vertex or one box
therefore  you have to enter GLOBAL each time you want to select  elements  from
parts other than the active part.

As with MODIFY, you can mix element  selection and  transformation  selection in
any order.

With  DEL_OLD, the selected  elements are  transformed;  with COPY, it is a copy
that is transformed.  The default is DEL_OLD.

If you  request a stretch of an  element  that would  produce  an  impermissible
result,  for  example  a line  of  length  0, the  system  leaves  that  element
unchanged.

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

^SYMBOL_PART PARTS SIZE DRAWING_SCALE PLOT REF_PT SM_SYMBOLS
SYMBOL_PART command

			     ,----------------------,
			     v			    ^
---->(SYMBOL_PART)--+--------+-->|part identifier|--+-->
		    v	     ^
		    '->(OFF)-'

part identifier:
	part name
	point on a part box
	point on a geometry element (selects the containing part)

SYMBOL_PART  causes  the  selected  part to  become a symbol.  A symbol  behaves
exactly like a part, except that, like  dimensioning and text, its size relative
to the plotter paper does not change with the  DRAWING_SCALE  command.  A useful
symbol, for example, might be a rectangle  around the edge of the plotter paper.

The point on a symbol that is fixed  relative to other elements is the reference
point of the part.  See CHANGE_PART_REF_PT.

Symbols  are most  conveniently  created  when the drawing  scale is 1.  You can
STORE  them to a file,  the LOAD  them  into  whatever  drawing  requires  them,
regardless of drawing scale.

With the OFF option, you pick a symbol, and it becomes a normal part again.

The system is supplied with a number of finishing symbols,  available by picking
SYMBOLS  on the menu.  These are just  characters  in a special  font,  and have
nothing to do with symbol parts.

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

^TEXT SIZE HP_SYMBOLS SYMBOLS TM_TEXT TM_TEXT_1 SM_TEXT SM_TEXT_1
^TM_SYMBOLS_1 TM_SYMBOLS_2 TM_SYMBOLS SM_SYMBOLS_1 SM_SYMBOLS_2
TEXT command

	   ,-----------------------------------,
	   | ,-------------, ,--------------,  |
	   v v		   | v		    |  |
-->(TEXT)--+-+-->|string|--+-+---->|point|--+--+-->
	     v		   ^
	     `->(SCREEN)---'

TEXT creates texts.

The text can be entered as a string, or by saying  SCREEN, which puts you in the
built-in  editor (see EDITOR).  You can define  multi-line  text blocks,  either
with the SCREEN  option, or by  entering  the lines as  consecutive  strings.  A
string  must  contain  at least one  character.  You then  indicate  one or more
points  where the text is to go; it is the text  origin  that is placed at these
points (see TEXT_ADJUST).

The  appearance of the text is affected by  TEXT_ANGLE,  TEXT_FILL,  TEXT_FRAME,
TEXT_LINESPACE  (multi-line texts only), TEXT_RATIO,  TEXT_SIZE, and TEXT_SLANT,
not  to  mention  by  the  text  fonts  themselves,  which  are  definable  with
DEFINE_FONT and CHAR_LAYOUT.

A new text font "hp_symbols" has been introduced that contains some special text
symbols like diameter sign, plus/minus sign, degree sign, minute sign and second
sign.  Characters  from this text font have to be preceded by an ASCII 14 (shift
out)  character and have to be followed by an ASCII 15 (shift in) character when
used in a text string.  The  characters 32 to 96 are reserved for future use and
should be not  customized.  Here is a short example for the use of  "hp_symbols"
characters in a text string:

("An angle of 30 degrees can be written as 30"#14"0"#15"0"#14"3"#15"0"#14"4"#15)

The current contents of "hp_symbols" are:

ASCII position 48 (value '0') contains the degree sign.
ASCII position 49 (value '1') contains the diameter sign.
ASCII position 50 (value '2') contains the plus/minus sign.
ASCII position 51 (value '3') contains the minute sign.
ASCII position 52 (value '4') contains the second sign.

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

^TEXT_ADJUST ADJUST
TEXT_ADJUST function

-->(TEXT_ADJUST)-->|number|-->

TEXT_ADJUST specifies the position of the text origin for new texts.  The origin
is a vertex  point,  visible  and  catchable  with SHOW  VERTEX ON, which can be
useful for alignment.

The number gives the location point according to the following pattern:

	     7	8  9
	     4	5  6
	     1	2  3

For example, if the text is a capital letter:

       1  lower left corner of letter
       5  center of letter
       9  upper right corner of letter

The default adjust value is 1.

Adjust  points 1, 2, and 3 are always on the text  baseline,  below  which, in a
conventional  font,  letters like 'g' and 'j' extend.  Adjust points 7, 8, and 9
are  determined  by the  height of the  characters  in the  text, and not by the
default height of the font (see DEFINE_FONT).

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

^TEXT_ANGLE ANGLE
TEXT_ANGLE function

-->(TEXT_ANGLE)-+->|angle|-------------+-->
		|		       ^
		'-->|point|-->|point|--'

TEXT_ANGLE  specifies  the current text angle,  which is measured  between the X
axis and the text  baseline.  The angle can also be  specified  with two points.
This angle is used for all new texts.

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

^TEXT_FILL FILL
TEXT_FILL function

-->(TEXT_FILL)--+-->(ON)---+-->
		|	   ^
		'-->(OFF)--'

TEXT_FILL  turns the  filling of  characters  ON (drawn  solid) or OFF  (outline
only).  The default is OFF.  This  affects new texts, but only those in fillable
fonts.  A font is  fillable  if every  character  in it consists  only of closed
polygons.

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

^TEXT_FRAME BOX BALLOON FRAME
TEXT_FRAME function

-->(TEXT_FRAME)-+-->(OFF)---------+-->
		|		  ^
		|-->(BOX)-------->|
		|		  |
		+-->(BALLOON)---->+

TEXT_FRAME  sets the current  text frame  type.  This is the frame type used for
new texts.  OFF is no frame at all, BOX a rectangular frame, and BALLOON a frame
with rounded  corners.  If the text has one or two  characters on a single line,
BALLOON is a circle.  The default is OFF.

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

^TEXT_LINESPACE LINESPACE
TEXT_LINESPACE function

-->(TEXT_LINESPACE)-->|number|--->

TEXT_LINESPACE  sets the current  linespacing, which is used for new texts.  The
distance  between  baselines of a multi-line  text is  linespace*text_size.  The
default is 2.2.

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

^TEXT_RATIO RATIO WIDTH HEIGHT SIZE TEXT_SIZE
TEXT_RATIO function

-->(TEXT_RATIO)-->|number|-->

TEXT_RATIO  sets the current  ratio of  character  width to height.  This is the
ratio used for new texts.  The default is 1.  The text height is  determined  by
TEXT_SIZE.

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

^TEXT_SIZE SIZE
TEXT_SIZE function

-->(TEXT_SIZE)-->|number|-->

TEXT_SIZE  sets the current text height, which is used for new texts.  As usual,
this number is in user units.  The text size is normally the height of a capital
letter (see DEFINE_FONT).  The default is 3.5 mm.

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

^TEXT_SLANT SLANT
TEXT_SLANT function

-->(TEXT_SLANT)-->|number|-->

TEXT_SLANT  sets the current text slant,  which is the slant used for new texts.
The slant is the deviation of an 'I' from its usual  position  perpendicular  to
the  baseline.  The  permissible  range is -80..80  degrees  (in user  units, of
course), where a positive angle denotes a forward slant.

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

^UNDO TM_UNDO
UNDO qualifier

UNDO can be used in certain  commands  and  functions.  It resumes the  previous
state.  Examples are:
	  CONVERT_SPLINE
	  DELETE
	  DELETE_HATCH
	  EQUIDISTANCE
	  HATCH
	  LEADER_LINE
	  MODIFY
	  SPLINE
	  STRETCH
	  DIM_CHAIN
	  DIM_DATUM_SHORT
	  DIM_DATUM_LONG
	  DIM_COORD
	  selection

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

^UNITS
UNITS function

---->(UNITS)---->+----------------->+---->+---->(CM)------->+---->
		 |		    |	  |		    |
		 +---->|number|---->+	  +---->(METERS)--->+ 
					  |		    |
					  +---->(KM)------->+
					  |		    |
					  +---->(MM)------->+
					  |		    |
					  +---->(UM)------->+
					  |		    |
					  +---->(INCHES)--->+
					  |		    |
					  +---->(FEET)----->+
					  |		    |
					  +---->(YARDS)---->+
					  |		    |
					  +---->(MILES)---->+
					  |		    |
					  +---->(MILS)----->+
					  |		    |
					  +---->(UINCHES)-->+
					  |		    |
					  +---->(DEG)------>+
					  |		    |
					  +---->(GRD)------>+
					  |		    |
					  +---->(RAD)------>+

UNITS  specifies  the current units of measure for  distances  and angles.  With
very few exceptions, commands and functions assume that all distance, angle, and
coordinate input is in these units.  The default is MM and DEG.

UM is micro-meters, UINCH micro-inches, DEG degrees, GRD grads (sometimes called
gradians), and RAD radians.

The  optional  number can be used to create new units.  For example,  UNITS 5 MM
allows you to work in 5mm units.

UNITS does not change the size of any existing elements.  It does not change the
spacing of grid points or ruler ticks.  It does change the unit distance in both
the absolute and the input coordinate system; see CS for details.

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

^UNSHARE_PART SHARE_PART UNSHARE PARTS
UNSHARE_PART command

		     ,-----------------------------------,
		     v					 ^
---->(UNSHARE_PART)--+-->|name or pnt to identify part|--+-->

UNSHARE_PART takes a shared part and makes it unshared.	 See SHARED_PART.

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

^VIEW PARTS TM_PARTS_2 SM_PARTS_2
VIEW command

-->(VIEW)----------+->|part name|-----+-->
		   |		      ^
		   |--->|point|------>|
		   |		      |
		   |--->(PARENT)----->|
		   |		      |
		   '----->(TOP)-------'

VIEW causes the  selected  part to be viewed in the  current  viewport.  You can
select the part in several ways -- by entering its name, by identifying  its box
if it is boxed,  by  identifying  any  element  in it  (except  a part) if it is
visible, or by entering PARENT or TOP.

The name of the viewed part is shown in the upper-left  corner of each viewport.

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

^WINDOW FIT ZOOM CENTER PAN KNOB_BOX DYNAMIC CHECK_WINDOW
^TM_WINDOW_FIT TM_WINDOW_PAN TM_WINDOW_NEW
^TM_WINDOW_CENTER TM_WINDOW_ZOOM 
^Set_zoom_factor
^Zoom_in
^Zoom_out
^Sm_window_menu_layout
^WINDOW Window_center Window_center_dynamic Window_zoom Window_zoom_dynamic
^WINDOW Window_new Window_new_dynamic Window_pan Window_pan_dynamic
^WINDOW Window_curr_viewport Window_sel_viewport
^WINDOW Window_display_list Window_redraw Window_knob_box
^WINDOW Window_last Window_store Window_recall Window_fit

WINDOW function

-->(WINDOW)-+-------------+-+->| point 1 |-->| point 2 |--------------------+-->
	    |             | |					            |
	    +->(DYNAMIC)->' |->(ZOOM)-->| scale factor |------------------>-|
	    |               |					            |
	    |               |->(CENTER)-->| new center point |------------>-|
	    |               |					            |
	    |               '->(PAN)-->| drawing pnt |-->| screen point |->-|
	    |                                                               |
	    +---->---------------------(FIT)------------------------------>-|
	    |                                                               |
	    '---->-------------------(KNOB_BOX)--------------------------->-'

WINDOW  allows the user to control what part of the drawing will be shown in the
current viewport.

With two points, it changes the window to the box  determined  by the two points
(possibly stretching the box to fit the shape of the viewport).

With FIT, it fits the entire drawing into the port.

With ZOOM, it scales the window by the factor  given.  WINDOW ZOOM 2 zooms in by
a factor of 2; WINDOW ZOOM -2 and WINDOW ZOOM .5 both zoom out by a factor of 2.

With  CENTER, the point given is made the center of the new window.

With PAN, the  window  is moved so that the  drawing  point  coincides  with the
screen point.

With DYNAMIC, a dynamic redraw of the current viewport is done while the user is
defining the window.

With  KNOB_BOX, the knob box (if present) is activated, and by turning the knobs
the user can change the window by panning  horizontally,  panning vertically and
zooming  in/out.  KNOB_BOX is similar to option  DYNAMIC, a dynamic redraw shows
the window currently defined.  The definition of the window with the knob box is
finished when the user presses the tablet stylus or any key on the keyboard.

The WINDOW  function has been  designed for all  practical  drawing  techniques.
However, if you  attempt  freak  zooms/windows  the system may report an integer
overflow error (for example if you zoom in on an element whose size is more than
1,000,000  times the  window  size).  You  should be able to  recover  from such
errors  by  windowing  out.  Also note  that  although  spline  elements  appear
strangely on the screen if you use a large zoom, in the data  structure they are
accurately represented.

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

^CHECK_WINDOW WINDOW RENOVATE CHECK_WINDOW function


-->--(CHECK_WINDOW)-->--+-->----(ON)----->--+---------->
                        |                   |
                        +-->--(WARNING)-->--+
                        |                   |
                        +-->----(OFF)---->--+

The CHECK_WINDOW function enables / disables the built-in window check mechanism
which  (by  default)   rejects   extremely  large  or  small  window   settings.
CHECK_WINDOW applies for both the WINDOW and RENOVATE function.

ON  (default)  enables the window check  mechanism.  If the user tries to set an
extremely  large or extremely  small  window, the system will BEEP and reject to
set the  window.  This may abort a running  macro.  However,  in most  practical
drawing and designing techniques, the user will not reach this limit.

WARNING  also  enables  the window  check  mechanism,  but  extreme  windows  as
mentioned  above will not be rejected by the system.  The system  will only BEEP
to inform you that you are leaving the safe window  area, and that you might get
unpredictable drawing results on the screen.

OFF  disables  the window  check  mechanism.  The system will  accept any window
without a BEEP,  however the system may report an integer  overflow or  floating
point exception  error due to software and hardware  limitations.  You should be
able to recover  from such a  situation  by  resetting  the window to  practical
values.

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

^CHECK_DIM_DETAIL DIMENSION DETAIL
CHECK_DIM_DETAIL function


-->--(CHECK_DIM_DETAIL)-->--+-->----(ON)----->--+---------->  
                            |                   |
                            +-->----(OFF)---->--+

The CHECK_DIM_DETAIL function enables / disables the built-in dimension checking
mechanism.  By default a warning is  displayed,  if a  geometrical  element in a
detail part is  dimensioned  from the parent part.  A detail part created with a
scale factor can only be dimensioned  correctly  with the  corresponding  detail
part  scale, if it is the active  part.  If the parent part is the active  part,
the dimension value uses the drawing scale and not the detail scale.

ON (default)  enables the  dimension  checking  mechanism.  If the user tries to
dimension  an element in a detail part when the parent part is the active  part,
the system will display a warning, which has to be acknowledged.  This may abort
a  running  macro.  However,  there  are only a few  cases  where  this  type of
dimensioning is used.

OFF disables the dimension  checking  mechanism.  So no warning is displayed, if
elements in a detail part are  dimensioned  while the parent part is active.  So
macros are not aborted.

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

^DISPLAY_LIST
DISPLAY_LIST function

                        ,-->--(REGENERATE)-->--| threshold |---------->-,
                        |                                               |
-->--(DISPLAY_LIST)-->--+--{1}--+-->--(ON)---------------------------->-+-->
                                |                                       |
                                '-->--(OFF)--------------------------->-'


         ,-----------<------------,
         |                        |
{1} -->--+------------------------+-->+--->
         |                        |   | 
         +-->-| id viewport |-->--'   |
         |                            |
         '-->------(ALL)------->------'


The  DISPLAY_LIST  function  enables / disables the use of display  list for the
selected  viewports.  Viewports  with a  display  list  can be  redrawn  faster,
especially  if  accelerated  graphics  hardware is  available.  Two  numbers are
displayed  in the lower left hand corner of the  viewports  that have  display a
list  enabled.  The left number is the total size of the display  list in bytes.
The right hand  number is the size, in bytes, of that part of the  display  list
used for  deleted  elements.  Thus you can see how much  memory  is used for the
display list and how much is "wasted" for deleting elements (overhead).

With ON, display  list(s) are (newly)  created for the selected  viewports.  For
each selected viewport, a REDRAW is invoked, and all geometry (lines, arcs etc.)
is stored in the corresponding  display list.  If the user selects  DISPLAY_LIST
ON for a viewport  that has already a display list  attached,  the display  list
will be cleared (deleted) and then regenerated.

With OFF, the display lists (if present) in the selected viewports are deleted.

With  REGENERATE,  the display lists (if present) in the selected  viewports are
regenerated  if the ratio of "wasted"  (for  deleting)  and total size of memory
used for the single display list exceeds the specified overhead  threshold.  The
threshold must be a number between 0.0 and 1.0.  A value of 0.0 will  regenerate
the selected  display list if it contains ANY deleted  elements, and a threshold
value of 1.0 will never regenerate a display list.

The threshold set with the  REGENERATE  option is only taken into account by the
functions  NEW_SCREEN, REDRAW, and RENOVATE with option AS_DISPLAYED.  Dependent
on the  current  value  of  the  threshold  (default  is  0.0)  these  functions
regenerate the display lists under the conditions described above.

However, the user must be aware of :

- Display  lists  consume a large amount of memory, since they hold each line or
  arc that is  contained in the drawing.  Even if the user has set a window that
  shows only a small  portion of the drawing, the display list will  contain the
  whole drawing,  because the user may want to use the WINDOW  DYNAMIC or WINDOW
  KNOB_BOX function for fast viewing (zooming out, panning etc.)

- Each  line of a HATCH  will be a line in the  display  list, so this  may also
  consume a large amount of memory.

- Display lists should NOT be used, if large portions of the drawing are changed
  (by MODIFY,  STRETCH  etc.),  because for each  modified line the display list
  will  contain the  original  line, a line (in  background  color) to erase the
  original line, and the new (modified)  line, so a MODIFY ALL will increase the
  size of the display list by a factor of 3.  Changing the  spotlight  will have
  the same effect,  because all lines or arcs will be added to the display  list
  with their new color.

We recommend that you use display lists only for fast viewing and windowing of a
relatively  static drawing, and to switch off the display list if large parts of
the  drawing  are to be  changed.  If you change  the  drawing,  but want to use
display lists  permanently,  we recommend that you  regenerate the display lists
after some time by using DISPLAY_LIST ON for the selected viewports.

Note that it is not  possible  to use 2D display  lists and 2D HIDDEN  LINE view
mode in the same viewport.

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

^ARC_RESOLUTION
ARC_RESOLUTION function


-->--(ARC_RESOLUTION)--->---| resolution |--->


When using display list (see also  DISPLAY_LIST), arcs and circles are converted
to polygons before they are inserted into the display list, because polygons can
be drawn very fast, especially by accelerated graphics hardware.

With the  ARC_RESOLUTION  function the user can control the precision of arcs on
the screen ( if display lists are used ).

The valid range for ARC_RESOLUTION is between 3 and 360, default is 72. 
A value of 3 means that a full circle will be displayed as a triangle.

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

^SELECT_DIM_ARROW ARROW RELATIVE ABSOLUTE FILL DOT SLASH JIS DIMENSION
^SELECT_DIM_ARROW ARROW_TYPE DOT_TYPE SLASH_TYPE JIS_TYPE FILL_ON FILL_OFF
^SELECT_DIM_ARROW BOTH_ARROW FIRST_ARROW SEC_ARROW
SELECT_DIM_ARROW function

		      +--------<--------+---<----+--<--+
		      |			|	 |     |
-->(SELECT_DIM_ARROW)-v---------------+-v-----^--v-----^-+-(ARROW_TYPE)-+->
		      |		      |	|     |  |     | |		|
		      +-(BOTH_ARROW)--+	+-{1}-+  +-{2}-+ +-(DOT_TYPE)---+
		      |		      |			 |		|
		      +-(FIRST_ARROW)-+			 +-(SLASH_TYPE)-+
		      |		      |			 |		|
		      +-(SEC_ARROW)---+			 +-(JIS_TYPE)---+
							 |		|
							 +----(NONE)----+

{1} ---+-(RELATIVE)-|factor|-+-->     {2} ---+-(FILL_ON)--+-->
       |		     |		     |		  |
       +-(ABSOLUTE)-|size|---+		     +-(FILL_OFF)-+

SELECT_DIM_ARROW  function  specifies the current  dimension  line  termination.
RELATIVE  controls  the  size of the  terminator  relative  to the main  (first)
dimension character size.  ABSOLUTE allows the setting of the terminator size in
current units.  Fill controls the filling of arrows in all dimensions.

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

^CHANGE_DIM_ARROW ARROW RELATIVE ABSOLUTE FILL DOT SLASH JIS DIMENSION
CHANGE_DIM_ARROW command

		        +-------<-------+--------<--------+
		        |		|                 |
-->(CHANGE_DIM_ARROW)->-+->----{1}------+->-|selection|---+-->


{1}

-+------->-------+-+------->------+-+----->------+-+---------->----------+->
 |		 | |	          | |	         | |		         |
 +-(BOTH_ARROW)--+ +-(ARROW_TYPE)-+ +-(FILL_ON)--+ +-(RELATIVE)-|factor|-+
 |		 | |	          | |	         | |		         |
 +-(FIRST_ARROW)-+ +-(DOT_TYPE)---+ +-(FILL_OFF)-+ +-(ABSOLUTE)-| size |-+
 |		 | |	          |
 +-(SEC_ARROW)---+ +-(SLASH_TYPE)-+
                   |	          |
		   +-(JIS_TYPE)---+
		   |	          |
		   +----(NONE)----+

CHANGE  DIM_ARROW  changes the  current  dimension  line  termination.  RELATIVE
controls  the size of the  terminator  relative  to the main  (first)  dimension
character  size.  ABSOLUTE  allows  you to set the  terminator  size in  current
units.  Fill controls the filling of arrows in all dimensions.

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

^CURRENT_DIM_TEXTS MAIN FONT COLOR ABSOLUTE RELATIVE SLANT RATIO DIMENSION
^CURRENT_DIM_TEXTS DIM_ALL MAIN_ALL MAIN_NUM MAIN_TOL SEC_ALL SEC_NUM SEC_TOL
^CURRENT_DIM_TEXTS SYMBOL HP_SYMBOLS
CURRENT_DIM_TEXTS function

-->(CURRENT_DIM_TEXTS)---+-------------+---+-(FONT)-------|font|-----+-->
			 |	       |   |			     |
			 +-(DIM_ALL)---+   +-(ABSOLUTE)---|size|-----+
			 |	       |   |			     |
			 +-(MAIN_ALL)--+   +-(RELATIVE)---|factor|---+
			 |	       |   |			     |
			 +-(MAIN_NUM)--+   +-(RATIO)------|ratio|----+
			 |	       |   |			     |
			 +-(MAIN_TOL)--+   +-(SLANT)------|slant|----+
			 |	       |   |                         |
			 +-(SEC_ALL)---+   +------|color|------------+
			 |	       |   
			 +-(SEC_NUM)---+  
			 |	       |   
			 +-(SEC_TOL)---+  
			 |	       |
			 +-(PREFIX)----+
			 |	       |
			 +-(POSTFIX)---+

CURRENT_DIM_TEXTS  allows you to change the current attributes for all dimension
texts.  First the kind of  dimension  text (eg.:  prefix,  tolerance,  etc.)  is
selected  (default  DIM_ALL)  then  dimension  font,  text  size  (ABSOLUTE  and
RELATIVE), text ratio and text slant can be set.

RELATIVE  controls the size of the  dimension  text relative to the main (first)
dimension character size.  ABSOLUTE allows the setting of the terminator size in
current units.

Setting for MAIN_NUM should always be absolute.

Current  dimension text colors can also be set using this  function.  See COLORS
for a list of colors.

MAIN_NUM means VALUE     of main dimension
MAIN_TOL means TOLERANCE of main_dimension
MAIN_ALL means MAIN_NUM and MAIN_TOL

SEC_NUM means VALUE     of second dimension
SEC_TOL means TOLERANCE of second_dimension
SEC_ALL means SEC_NUM and SEC_TOL

DIM_ALL means MAIN_ALL and SEC_ALL

A new text font "hp_symbols" has been introduced that contains some special text
symbols like diameter sign, plus/minus sign, degree sign, minute sign and second
sign.  Characters  from this text font have to be preceded by an ASCII 14 (shift
out)  character and have to be followed by an ASCII 15 (shift in) character when
used in a text string.  The  characters 32 to 96 are reserved for future use and
should be not  customized.  Here is a short example for the use of  "hp_symbols"
characters in a text string:

("An angle of 30 degrees can be written as 30"#14"0"#15"0"#14"3"#15"0"#14"4"#15)

The current contents of "hp_symbols" are:

ASCII position 48 (value '0') contains the degree sign.
ASCII position 49 (value '1') contains the diameter sign.
ASCII position 50 (value '2') contains the plus/minus sign.
ASCII position 51 (value '3') contains the minute sign.
ASCII position 52 (value '4') contains the second sign.

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

^CHANGE_DIM_TEXTS  MAIN FONT COLOR ABSOLUTE RELATIVE SLANT RATIO DIMENSION
CHANGE_DIM_TEXTS command

	            +---------------+---------------------+-------------,
         	    |		    |		          |	        |
(CHANGE_DIM_TEXTS)--+------------+--+-(FONT)----|font|----v-|selection|-+->
		    |	         |  |		          |
		    +-(DIM_ALL)--+  +-(ABSOLUTE)-|size|---+
		    |	         |  |		          |
		    +-(MAIN_ALL)-+  +-(RELATIVE)-|factor|-+
		    |	         |  |		          |
	            +-(MAIN_NUM)-+  +-(RATIO)----|ratio|--+
		    |	         |  |		          |
		    +-(MAIN_TOL)-+  +-(SLANT)----|slant|--+
	            |	         |  |                     |
		    +-(SEC_ALL)--+  +---|color|-----------+
		    |	         |   
		    +-(SEC_NUM)--+  
		    |	         |   
		    +-(SEC_TOL)--+ 
		    |	         |
		    +-(PREFIX)---+
		    |	         |
		    +-(POSTFIX)--+

CHANGE_DIM_TEXTS  function  allows you to change  the  attributes  for  existing
dimension  texts.  First the kind of  dimension  text (eg,:  prefix,  tolerance,
etc.)  is selected  (default  DIM_ALL) then dimension  font, text size (ABSOLUTE
and RELATIVE), text ratio and text slant can be set.  Finally standard selection
is used to define the dimensions the change shall work upon.

RELATIVE  controls the size of the  dimension  text relative to the main (first)
character  size.  ABSOLUTE  allows the setting of the terminator size in current
units.

Settings for MAIN_NUM, DIM_ALL and MAIN_ALL should always be absolute.

MAIN_NUM means VALUE     of main dimension
MAIN_TOL means TOLERANCE of main_dimension
MAIN_ALL means MAIN_NUM and MAIN_TOL

SEC_NUM means VALUE     of second dimension
SEC_TOL means TOLERANCE of second_dimension
SEC_ALL means SEC_NUM and SEC_TOL

DIM_ALL means MAIN_ALL and SEC_ALL

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

^DIM_TEXT_ORIENTATION HORIZONTAL VERTICAL PARALLEL PERPENDICULAR DIMENSION
DIM_TEXT_ORIENTATION function

-->(DIM_TEXT_ORIENTATION)-----+---(HORIZONTAL)------+----->
			      |			    |
			      +---(VERTICAL)--------+
			      |			    |
			      +---(PARALLEL)--------+
			      |			    |
			      +---(PERPENDICULAR)---+

DIM_TEXT_ORIENTATION  specifies the  orientation of the texts of new dimensions.
The text may be horizontal, vertical, parallel or perpendicular to the dimension
line.

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

^DIM_TEXT_LOCATION ABOVE BELOW ON DIMENSION
DIM_TEXT_LOCATION function

-->(DIM_TEXT_LOCATION)-----+---(BELOW)---+----->
			   |		 |
			   +---(ON)------+
			   |		 |
			   +---(ABOVE)---+

DIM_TEXT_LOCATION  specifies  that the text  for the new  dimensions  should  be
below, on, or above the dimension line.

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

^ROTATE_DIM_TEXT DIMENSION
ROTATE_DIM_TEXT command

		       +------------------+---------------+
		       |		  |		  |
-->(ROTATE_DIM_TEXT)---v--|rotate_angle|--v--|selection|--+---->

ROTATE_DIM_TEXT  rotates the  identified  dimension text by the given angle, but
always corresponding to the original dimension text location.

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

^DIM_POSTFIX POSTFIX DIMENSION
DIM_POSTFIX function

-->(DIM_POSTFIX)--+------------------------+---|'string'|------->
		  |			   |
		  +-(TEXT_SCALE)--|scale|--+

DIM_POSTFIX allows you to add a	 postfix  string  to  a	 dimension  text.

With  TEXT_SCALE,  you can specify  the scaling of the  postfix  relative to the
normal dimension text.  (This qualifier is used for compatibility only; see also
CURRENT_DIM_TEXTS function).

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

^LAST_POSTFIX POSTFIX DIMENSION
LAST_POSTFIX function

-->(LAST_POSTFIX)--->

LAST_POSTFIX allows you to use the last postfix as current postfix.

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

^ADD_DIM_POSTFIX POSTFIX DIMENSION
ADD_DIM_POSTFIX command

		     ,-----<------+-------<-------,
		     |		  |		  |
-->(ADD_DIM_POSTFIX)-+->-|string|-+->-|selection|-+---->

ADD_DIM_POSTFIX  allows you to add a postfix to an  existing  dimension.  If any
postfix already exist, it will be replaced by a new postfix.

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

^DELETE_DIM_POSTFIX POSTFIX DIMENSION
DELETE_DIM_POSTFIX command

			  +------<------+
			  |		|
-->(DELETE_DIM_POSTFIX)->-+-|selection|-+--->

DELETE_DIM_POSTFIX allows you to delete an identified postfix.

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

^EDIT_DIM_POSTFIX POSTFIX DIMENSION
EDIT_DIM_POSTFIX command

-->(EDIT_DIM_POSTFIX)-->|point|-->

EDIT_DIM_POSTFIX allows you to edit the postfix of the identified dimension
text.

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

^DIM_PREFIX PREFIX DIMENSION
DIM_PREFIX function

-->(DIM_PREFIX)-+------------------------+--|'string'|---------->
		|			 |
		+-(TEXT_SCALE)--|scale|--+

DIM_PREFIX allows you to add a	prefix	string	to  a  dimension  text.

With  TEXT_SCALE,  you can  specify  the scaling of the prefix  relative  to the
normal dimension text.  (This qualifier is used for compatibility only; see also
CURRENT_DIM_TEXTS function) .

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

^LAST_PREFIX PREFIX DIMENSION 
LAST_PREFIX function

-->(LAST_PREFIX)--->

LAST_PREFIX  allows you to use the last prefix as current prefix.

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

^ADD_DIM_PREFIX PREFIX DIMENSION
ADD_DIM_PREFIX command

		     +-----------+--------------+
		     |		 |		|
-->(ADD_DIM_PREFIX)--v--|string|-v--|selection|-+---->

ADD_DIM_PREFIX  allows  you to add a prefix  to an  existing  dimension.  If any
prefix already exist, it will be replaced by new prefix.

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

^DELETE_DIM_PREFIX PREFIX DIMENSION
DELETE_DIM_PREFIX command

			+-------------+
			|	      |
-->(DELETE_DIM_PREFIX)--v-|selection|-+--->

DELETE_DIM_PREFIX  allows you to delete an identified prefix.

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

^EDIT_DIM_PREFIX PREFIX DIMENSION
EDIT_DIM_PREFIX command

-->(EDIT_DIM_PREFIX)-->|point|-->

EDIT_DIM_PREFIX  allows you to edit the prefix of the identified  dimension
text.

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

^DIM_FRAME BOXED BALLOONED DIMENSION
DIM_FRAME function

---->(DIM_FRAME)-----+---(ON)-------+---->
		     |		    |
		     +---(OFF)------+
		     |		    |
		     +--(BOXED)-----+
		     |		    |
		     +--(BALLOONED)-+

DIM_FRAME  says whether a frame around the dimension text should be present (ON)
or  absent  (OFF).  Default  for ON is  BOXED;  The  type  of  frame  (BOXED  or
BALLOONED) can also be selected.

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

^CHANGE_DIM_FRAME BOXED BALLOONED DIMENSION
CHANGE_DIM_FRAME command

		       +-------------------+-------------+
		       |		   |		 |
-->(CHANGE_DIM_FRAME)--v--+---(OFF)------+-v-|selection|-+----->
			  |		 |
			  +---(BOXED)----+
			  |		 |
			  +--(BALLOONED)-+

CHANGE_DIM_FRAME allows you to change the type of the identified frames.

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

^EDIT_DIM_TEXT DIMENSION
EDIT_DIM_TEXT command

-->(EDIT_DIM_TEXT)-->|point|-|string|-->

EDIT_DIM_TEXT  allows you to edit the  identified  dimension  text.  An unedited
text  displays a value that  automatically  adjusts  to changes in the  attached
geometry;  naturally an edited text does not have this feature.  To convert back
to the original state, see CANCEL_EDIT_DIM_TEXT.

If the dimension has a limit tolerance, you can change the limit values by using
EDIT_DIM_TOLERANCE.  The EDIT_DIM_TEXT command works only on the dimension value
text which will be displayed after the limit tolerance is deleted.

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

^CANCEL_EDIT_DIM_TEXT  DIMENSION
CANCEL_EDIT_DIM_TEXT command

-->(CANCEL_EDIT_DIM_TEXT)----|point|--->

CANCEL_EDIT_DIM_TEXT  undoes  the  result  of  EDIT_DIM_TEXT.  It  restores  the
identified  dimension to its original  state,  where the value is  automatically
calculated from the attached geometry.

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

^DIM_FORMAT  DIMENSION
DIM_FORMAT  function

-->(DIM_FORMAT)----------+-(MM)--------------------------+---|string|---->
			 |				 |
			 +-(MT)--------------------------+
			 |				 |
			 +-(CM)--------------------------+
			 |				 |
			 +-(KM)--------------------------+
			 |				 |
			 +-(INCHES)----------------------+
			 |				 |
			 +-(FRACT_INCH)-------+----------+
			 |		      |		 |
			 |		      +-|number|-+
			 |				 |
			 +-(FT_FR_INCH)-------+----------+
			 |		      |		 |
			 |		      +-|number|-+
			 |				 |
			 +-(FT_FR_IN_SIGN)----+----------+
			 |		      |		 |
			 |		      +-|number|-+
			 |				 |
			 +-(FT_FR_IN_TEXT)----+----------+
			 |		      |		 |
			 |		      +-|number|-+
			 |				 |
			 +-(DEGREE)----------------------+
			 |				 |
			 +-(RADIAN)----------------------+
			 |				 |
			 +-(DEG_MIN_SEC)-----------------+
			 |				 |
			 +-(GRADIAN)---------------------+

DIM_FORMAT  allows you to specify the units to be used in a dimension  value for
line and angular dimensions and the format of this value will be displayed.

The 'number' in the non-metric  units  specifies the  denominator to be used for
the dimension value (2,4,8,16,32,64).

The 'string' specifies the format of all dimension values.  For example, you may
choose:

 -- Decimal point or comma

 -- Right  zero   suppression   after  decimal   point.  For  example,  if  zero
    suppression  is  selected,  and 4 decimal  places  are  printed,  a value of
    23.1200 will appear as 23.12.

 -- Left zero suppression before decimal point if the value is less than 1.

 -- A '+' in the first position means signed.

The string must contain  either a '.'  or a ',',  signifying a decimal  point or
decimal  comma.  If the first digit of the string is not equal to '0', left zero
suppression is selected.  Right zero  suppression  will be selected, if the last
digit  after the point or comma is not equal to '0' or no digit is present.  The
number of digits after the point or comma gives the decimal place.

Examples:

 -- '0,' means decimal comma, left zero suppression off, right zero  suppression
    on.

 -- '.2' means decimal point, left zero  suppression on, right zero  suppression
    on.

 -- '1.2' means decimal point, left zero  suppression on, right zero suppression
    on.

 -- '1.1230'  means  decimal  point,  left  zero   suppression  on,  right  zero
    suppression off.  Decimal place 4.

 -- '+1.1231'  means  decimal  point,  left  zero  suppression  on,  right  zero
    suppression on.  Decimal place 4, signed.

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

^CHANGE_DIM_FORMAT DIMENSION
CHANGE_DIM_FORMAT command

		       +-----------------+------------------+---------------+
		       |		 |		    |		    |
->(CHANGE_DIM_FORMAT)--v-+-------------+-v-+-------------+--v--|selection|--+-->
			 |	       |   |		 |
			 +-(DIM_ALL)---+   +--|string|---+
			 |	       |   |		 |
			 +-(MAIN_ALL)--+   +--|number|---+
			 |	       |
			 +-(MAIN_NUM)--+
			 |	       |
			 +-(MAIN_TOL)--+
			 |	       |
			 +-(SEC_ALL)---+
			 |	       |
			 +-(SEC_NUM)---+
			 |	       |
			 +-(SEC_TOL)---+

CHANGE_DIM_FORMAT allows you to change the format of an existing dimension.  The
type of  value  can be  selected  (default  MAIN_NUM).  For  string  and  number
definition see DIM_FORMAT.

MAIN_NUM means VALUE     of main dimension
MAIN_TOL means TOLERANCE of main_dimension
MAIN_ALL means MAIN_NUM and MAIN_TOL

SEC_NUM means VALUE     of second dimension
SEC_TOL means TOLERANCE of second_dimension
SEC_ALL means SEC_NUM and SEC_TOL

DIM_ALL means MAIN_ALL and SEC_ALL

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

^CURRENT_DIM_UNITS MAIN_DIM SEC_DIM DIMENSION
^CURRENT_DIM_UNITS MM INCHES CM FRACT_INCH MT FT_FR_INCH KM FT_FR_IN_SIGN DEGREE
^CURRENT_DIM_UNITS FT_FR_IN_TEXT RADIAN DEG_MIN_SEC GRADIAN NONE
CURRENT_DIM_UNITS function

 ->(CURRENT_DIM_UNITS)--+--(MAIN_DIM)--+-(MM)---------------+----->
			|	       |		    |
			|	       +-(MT)---------------+
			|	       |		    |
			|	       +-(CM)---------------+
			|	       |		    |
			|	       +-(KM)---------------+
			|	       |		    |
			|	       +-(INCHES)-----------+
			|	       |		    |
			|	       +-(FRACT_INCH)-------+
			|	       |		    |
			|	       +-(FT_FR_INCH)-------+
			|	       |		    |
			|	       +-(FT_FR_IN_SIGN)----+
			|	       |		    |
			|	       +-(FT_FR_IN_TEXT)----+
			|	       |		    |
			|	       +-(DEGREE)-----------+
			|	       |		    |
			|	       +-(RADIAN)-----------+
			|	       |		    |
			|	       +-(DEG_MIN_SEC)------+
			|	       |		    |
			|	       +-(GRADIAN)----------+
			|				    |
			|				    |
			+--(SEC_DIM)---+-(MM)---------------+
				       |		    |
				       +-(MT)---------------+
				       |		    |
				       +-(CM)---------------+
				       |		    |
				       +-(KM)---------------+
				       |		    |
				       +-(INCHES)-----------+
				       |		    |
				       +-(FRACT_INCH)-------+
				       |		    |
				       +-(FT_FR_INCH)-------+
				       |		    |
				       +-(FT_FR_IN_SIGN)----+
				       |		    |
				       +-(FT_FR_IN_TEXT)----+
				       |		    |
				       +-(DEGREE)-----------+
				       |		    |
				       +-(RADIAN)-----------+
				       |		    |
				       +-(DEG_MIN_SEC)------+
				       |		    |
				       +-(GRADIAN)----------+
				       |		    |
				       +-(NONE)-------------+


CURRENT_DIM_UNITS  allows you to set the units for linear and angular dimensions
to be used for the next  dimensions  to be  created.  The units for the main and
secondary elements can be set separately.

MM  -  Millimeters  (MM  are  the  default  option).  

MT  -  Meters  

CM  - Centimeters 

KM - Kilometers 

INCHES - Inches

FRACT_INCH - Fractional inches.  This option displays dimensions in whole inches
and fractions of an inch.

FT_FR_INCH - Feet and  fractional  inches.  This option  displays  dimensions in
terms of feet, inches and fractions of an inch.  The highest  denominator of the
fraction must be input (e.g.  4 will produce whole numbers,  halves and quarters
of an inch).

FT_FR_IN_SIGN  - Feet and  fractional  inches  with sign.  This option  displays
dimensions  in terms of feet,  inches and  fractional  inches  with the feet and
inches signs ( e.g.  1' 1 1/2" ).  The highest denominator of the fractions must
be input (e.g.  4 will produce whole numbers, halves and quarters of an inch).

FT_FR_IN_TEXT  - Feet and  fractional  inches  in  text.  This  option  displays
dimensions in feet, inches and fractions of an inch.  With this option FT and IN
are  used as  abbreviations  for feet  and  inches  ( e.g.  12FT 3 1/2IN ).  The
highest  denominator value for the fractional inches must be input (e.g.  4 will
give whole numbers, halves and quarters of an inch).

DEGREE - Sets angle dimension units to degrees.

RADIAN - Sets angle dimension units to radians.

DEG_MIN_SEC - Sets angle dimension units to degrees minutes and seconds.

GRADIAN - Sets angle dimension units to grads (sometimes called gradians).

NONE - Switches  off dual  dimensioning.  SEC_DIM  followed  by NONE  returns to
single dimensioning.

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

^CONVERT_DIM_UNIT DIMENSION
CONVERT_DIM_UNIT command



-->(CONVERT_DIM_UNIT)-+
                      |
       +--------------+
       |
       |
       +--->+<-------------------------------------------+<----------------+
            |                                            ^                 ^
            |                                            |                 |
            v-+-(MAIN_DIM)-+-(MM)------------------------+-->+-|selection|-+->
              |            |                             |   ^             |
              |            +-(MT)------------------------+   |             v
              |            |                             |   +-------------+
              |            +-(CM)------------------------+
              |            |                             |
              |            +-(KM)------------------------+
              |            |                             |
              |            +-(INCHES)--------------------+
              |            |                             |
              |            +-(FRACT_INCH)-------|number|-+
              |            |                             |
              |            +-(FT_FR_INCH)-------|number|-+
              |            |                             |
              |            +-(FT_FR_IN_SIGN)----|number|-+
              |            |                             |
              |            +-(FT_FR_IN_TEXT)----|number|-+
              |            |                             |
              |            +-(DEGREE)--------------------+
              |            |                             |
              |            +-(RADIAN)--------------------+
              |            |                             |
              |            +-(DEG_MIN_SEC)---------------+
              |            |                             |
              |            +-(GRADIAN)-------------------+
              |                                          |
              |                                          |
              +-(SEC_DIM)--+-(MM)------------------------+
                           |                             |
                           +-(MT)------------------------+
                           |                             |
                           +-(CM)------------------------+
                           |                             |
                           +-(KM)------------------------+
                           |                             |
                           +-(INCHES)--------------------+
                           |                             |
                           +-(FRACT_INCH)-------|number|-+
                           |                             |
                           +-(FT_FR_INCH)-------|number|-+
                           |                             |
                           +-(FT_FR_IN_SIGN)----|number|-+
                           |                             |
                           +-(FT_FR_IN_TEXT)----|number|-+
                           |                             |
                           +-(DEGREE)--------------------+
                           |                             |
                           +-(RADIAN)--------------------+
                           |                             |
                           +-(DEG_MIN_SEC)---------------+
                           |                             |
                           +-(GRADIAN)-------------------+
                           |                             |
                           +-(NONE)----------------------+

CONVERT_DIM_UNITS is used to change the units for linear and angular dimensions.
The units for the main and secondary elements can be converted  separately.  The
option NONE is used to switch off dual dimensioning.

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

^DIM_COLOR COLOR DIMENSION
DIM_COLOR function

-->(DIM_COLOR)---|color|--->

DIM_COLOR set the color of the extension and the dimension lines.
See COLOR for a list of colors.

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

^CHANGE_DIM_COLOR COLOR DIMENSION
CHANGE_DIM_COLOR command

                         ,----------------+---------------,
                         |                |               |
-->(CHANGE_DIM_COLOR)----v-|new_color|----v--|selection|--+---->

CHANGE_DIM_COLOR  changes the color of the extension- and dimension lines of the
selected dimensions.  See COLOR for a list of colors.

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

^MODIFY_DIM_LINES BREAK STAGGERED RESET DIMENSION
MODIFY_DIM_LINES command

                    +--------------------------------------------------+
                    |                                                  |
(MODIFY_DIM_LINES)--v-+------------------------------------------------+-->
                      |                                                |
                      |             +----------+---------------------+ |
                      |             |          |                     | |
                      +-(BREAK)-----v-|dim_id|-v-|from_pnt|-|to_pnt|-+-+
                      |                                                |
                      |              +-------------------------------+ |
                      |              |                               | |
                      +-(STAGGERED))-v-|dim_id|-|pnt1|-|pnt2|-|pnt3|-+-+
                      |                                                |
                      |                                                |
                      |                                                |
                      +-(RESET)--------|dim_id|---|selection|----------+

MODIFY_DIM_LINES  allows you to put breaks  into an existing  dimension  entity.
Breaks  can be  put  into  dimension  and  extension  lines.  You  identify  the
dimension to be modified (by picking the text of the  dimension)  and define the
distance to be blanked by two points.

With option  STAGGERED you can bend the  extension  line to make space for other
elements on your drawing.  After  identifying the dimension (by it's value) pick
points  1, 2, and 3 as shown  below to move the  line  from its  current  1 -> 2
position to the new 1 -> 3 position.  The  dimension  line may only be staggered
once.

               |   |
            2  .   . 3
staggered:     |  /
               | /
            1  ./
               |

Radius, diameter, arc and angle dimensions cannot be staggered.

RESET  restores the  condition of the dimension  without any breaks or staggered
lines.  Any  modification  of the dimension or its related  geometry  resets the
Staggers and Breaks.

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

^DIM_BROKEN DIMENSION 
DIM_BROKEN function

-->(DIM_BROKEN) --+--(ON)---+---->
                  |         |
                  +--(OFF)--+

DIM_BROKEN  tells how the dimension  lines are to be drawn if the dimension text
does not fit inside the dimension extension lines.  DIM_BROKEN ON means that the
dimension  lines are not  connected;  DIM_BROKEN  OFF means that they are.  This
applies to all new dimensions.

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

^DIM_DATUM_STEP DIMENSION
DIM_DATUM_STEP function

-->(DIM_DATUM_STEP)----|number|---->

DIM_DATUM_STEP  specifies  the  space  between  the  dimension  lines of a datum
dimension.  This value is used for new datum dimensions, and can even be changed
within a DIM_DATUM command.

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

^DIM_MIN_SPACE DIMENSION
DIM_MIN_SPACE function

-->(DIM_MIN_SPACE)----|number|---->

DIM_MIN_SPACE  sets the minimum  space  between the geometry  and the  dimension
lines for new dimensions.

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

^DIM_EXTENSION_LENGTH DIMENSION
DIM_EXTENSION_LENGTH function

-->(DIM_EXTENSION_LENGTH)----|number|---->

DIM_EXTENSION_LENGTH  sets  the  length  between  the  arrow  and the end of the
extension line for new dimensions.

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

^DIM_TEXT_GAP DIMENSION
DIM_TEXT_GAP function

-->(DIM_TEXT_GAP)----|number|---->

DIM_TEXT_GAP sets the gap between the dimension text and dimension lines for new
dimensions.

Example:

   |<------ 4711 ------>|
   |       ^    ^       |
           "gaps"

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

^DIM_TEXT_SPACE DIMENSION
DIM_TEXT_SPACE function

-->(DIM_TEXT_SPACE)----|number|---->

DIM_TEXT_SPACE sets the space between the dimension text and dimension lines for
new dimensions.

Example:
            4711
                 I"space"
   |<----------------->|
   |                   |


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

^DIM_OFFSET_LINE DIMENSION
DIM_OFFSET_LINE function

---->(DIM_OFFSET_LINE)---->|non_negative_number|---->

DIM_OFFSET_LINE  specifies the offset of the dimension  extension  line from the
dimension line.  This applies to new dimensions.

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

^DIM_OFFSET_POINT DIMENSION
DIM_OFFSET_POINT function

---->(DIM_OFFSET_POINT)---->|non_negative_number|---->

DIM_OFFSET_POINT  specifies the offset of the dimension  extension line from the
geometry.  This applies to new dimensions.

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

^DIM_ANGLE DIRECT OPPOSITE ADJACENT ADJACENT_POS ADJACENT_NEG DIMENSION
DIM_ANGLE command

                    +----->-----+   +---------------<-------------------+
                    |           |   |                                   |
-->(DIM_ANGLE)--v---+-(DIRECT)--+-+-+-|line_1|--|line_2|-|location_pnt|-+->
                |                 |
                +---(OPPOSITE)----+
                |                 |
                +--(ADJACENT_POS)-+
                |                 |
                +--(ADJACENT_NEG)-+

DIM_ANGLE  creates an angle  dimension.  You identify two lines, then a location
point for the  dimension  text.  The lines must not be parallel and the location
point must not be at the intersection of the two lines.

To specify how the two arms of an angle should be dimensioned  use the following
options:

DIRECT, OPPOSITE,  ADJACENT_POS, and ADJACENT_NEG.  The four different positions
are:

                         DIRECT
                      \          /
                       .2        .1
                        \      /
                         \    /
           ADJACENT_POS   \  /  ADJACENT_NEG
                           \/

                        OPPOSITE

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

^DIM_ARC DIMENSION
DIM_ARC command

              +----------------------------------+
              |                                  |
-->(DIM_ARC)--v---|elem_1|--|elem_2|--|loc_pnt|--+--->

DIM_ARC  creates an arc dimension.  You identify the end points of an arc (or of
two arcs, as long as they have the same  center  and  radius),  then  indicate a
point for the dimension text.

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

^DIM_CHAIN  HORIZONTAL PARALLEL PERPEND_TO_LINE PARALLEL_TO_LINE UNDO AUTO 
^MANUAL DIMENSION TM_UNDO
DIM_CHAIN command

                 +---------------------------------------------------+
                 |                                                   |
                 |                                                   |
-->(DIM_CHAIN) --v---{1}--------------+----{2}--+-------+--------+---+-->
                                      |         |       |        |
                                      +----{3}--+       +-(UNDO)-+

{1}--->--------------------------------+---->
      |                                |
      +-(HORIZONTAL)-------------------+
      |                                |
      +-(VERTICAL)---------------------+
      |                                |
      +-(PARALLEL)---------------------+
      |                                |
      +(PERPEND_TO_LINE)---|line|------+
      |                                |
      +(PARALLEL_TO_LINE)--|line|------+

{2}--->--+(AUTO)+-|beg_elem|--|end_elem|--|loc_pnt|--+----->----------+-->
         v      ^                                    v                ^
         '------'                                    | +---<--------+ |
                                                     | |            | |
                                                     +-+-|end_elem|-+-+

                               +--------<----------------+
                               |                         |
{3}--->--(MANUAL)--|beg_elem|--+--|end_elem|--|loc_pnt|--+----->

DIM_CHAIN creates chain  dimensioning.  The dimension between any two points may
be horizontal,  vertical,  parallel to the direction  specified between beg_elem
and end_elem or  perpendicular/parallel  to a reference  line  identified.;  the
default is PARALLEL.  UNDO removes the dimension element most recently  created.

With both MANUAL and AUTO, beg_elem and end_elem are the begin and end points of
the  dimension,  and loc_pnt is the location of the  dimension  line.  With AUTO
(the default), you give loc_pnt only once; the system then automatically chooses
the loc_pnt for  subsequent  dimensions.  With  MANUAL,  you give an loc_pnt for
each  dimension.  It is possible to mix AUTO and MANUAL within the same command.

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

^DIM_DATUM_LONG HORIZONTAL PARALLEL PERPEND_TO_LINE PARALLEL_TO_LINE UNDO AUTO 
^MANUAL DIMENSION TM_UNDO
DIM_DATUM_LONG command

                                +------------------------------------+
                                |                                    |
-->(DIM_DATUM_LONG)----{1)------v-----+----{2}--+-------+--------+---+-->
                                      |         |       |        |
                                      +----{3}--+       +-(UNDO)-+

{1}--->--------------------------------+---->
      |                                |
      +-(HORIZONTAL)-------------------+
      |                                |
      +-(VERTICAL)---------------------+
      |                                |
      +-(PARALLEL)---------------------+
      |                                |
      +(PERPEND_TO_LINE)---|line|------+
      |                                |
      +(PARALLEL_TO_LINE)--|line|------+

{2}--->--+(AUTO)+-|beg_elem|--|end_elem|--|loc_pnt|--+----->-----------+-->
         v      ^                                    v                 ^
         '------'                                    | +---<---------+ |
                                                     | |             | |
                                                     +-+-|end_elem|--+-+

                               +---------------<---------+
                               |                         |
{3}--->--(MANUAL)--|beg_elem|--+--|end_elem|--|loc_pnt|--+----->

DIM_DATUM_LONG  creates datum  dimensioning with long base lines.  The dimension
between any two points may be  horizontal,  vertical,  parallel to the direction
specified between beg_elem and end_elem or perpendicular/parallel to a reference
line  identified.; the default is PARALLEL.  See also  DIM_DATUM_STEP  to define
the datum step.  Use MANUAL to locate the dimension  texts manually  (default is
AUTO).

With both MANUAL and AUTO, beg_elem and end_elem are the begin and end points of
the  dimension,  and loc_pnt is the location of the  dimension  line.  With AUTO
(the default), you give loc_pnt only once; the system then automatically chooses
the loc_pnt for  subsequent  dimensions.  With  MANUAL,  you give an loc_pnt for
each  dimension.  It is possible to mix AUTO and MANUAL within the same command.

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

^DIM_DATUM_SHORT HORIZONTAL PARALLEL PERPEND_TO_LINE PARALLEL_TO_LINE UNDO AUTO 
^MANUAL DIMENSION TM_UNDO
DIM_DATUM_SHORT command

                                +------------------------------------+
                                |                                    |
-->(DIM_DATUM_SHORT)---{1)------v-----+----{2}--+-------+--------+---+-->
                                      |         |       |        |
                                      +----{3}--+       +-(UNDO)-+

{1}--->--------------------------------+---->
      |                                |
      +-(HORIZONTAL)-------------------+
      |                                |
      +-(VERTICAL)---------------------+
      |                                |
      +-(PARALLEL)---------------------+
      |                                |
      +(PERPEND_TO_LINE)---|line|------+
      |                                |
      +(PARALLEL_TO_LINE)--|line|------+

{2}--->--+(AUTO)+-|beg_elem|--|end_elem|--|loc_pnt|--+----->-----------+-->
         v      ^                                    v                 ^
         '------'                                    | +---<---------+ |
                                                     | |             | |
                                                     +-+-|end_elem|--+-+

                               +---------------<---------+
                               |                         |
{3}--->--(MANUAL)--|beg_elem|--+--|end_elem|--|loc_pnt|--+----->

DIM_DATUM_SHORT  creates datum dimensioning with short base lines.The  dimension
between any two points may be  horizontal,  vertical,  parallel to the direction
specified between beg_elem and end_elem or perpendicular/parallel to a reference
line  identified.; the default is PARALLEL.  See also  DIM_DATUM_STEP  to define
the datum step.  Use MANUAL to locate the dimension  texts manually  (default is
AUTO).

With both MANUAL and AUTO, beg_elem and end_elem are the begin and end points of
the  dimension,  and loc_pnt is the location of the  dimension  line.  With AUTO
(the default), you give loc_pnt only once; the system then automatically chooses
the loc_pnt for  subsequent  dimensions.  With  MANUAL,  you give an loc_pnt for
each  dimension.  It is possible to mix AUTO and MANUAL within the same command.

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

^DIM_COORD HORIZONTAL PARALLEL PERPEND_TO_LINE PARALLEL_TO_LINE UNDO AUTO MANUAL
^DIM_COORD ANSI ISO NO_STANDARD TM_UNDO DIMENSION
DIM_COORD command

                                         +------------------------------+
                                         |                              |
-->(DIM_COORD) --+---------------+--{1}--v--+--{2}--+------+--------+---+-->
                 |               |          |       |      |        |
                 +-(ANSI)--------+          +--{3}--+      +-(UNDO)-+
                 |               |
                 +-(ISO)---------+
                 |               |
                 +-(NO_STANDARD)-+

{1}--->--------------------------------+---->
      |                                |
      +-(HORIZONTAL)-------------------+
      |                                |
      +-(VERTICAL)---------------------+
      |                                |
      +-(PARALLEL)---------------------+
      |                                |
      +(PERPEND_TO_LINE)---|line|------+
      |                                |
      +(PARALLEL_TO_LINE)--|line|------+

{2}--->--+(AUTO)+-|beg_elem|--|end_elem|--|loc_pnt|--+----->-----------+-->
         v      ^                                    v                 ^
         '------'                                    | +---<---------+ |
                                                     | |             | |
                                                     +-+-|end_elem|--+-+

                               +---------------<---------+
                               |                         |
{3}--->--(MANUAL)--|beg_elem|--+--|end_elem|--|loc_pnt|--+----->

DIM_COORD  creates  coordinate  dimensioning.  Using  the  option  ANSI you will
obtain coordinate  dimensions with horizontal dimension text and no terminators.
Using the  option  ISO you will  obtain  coordinate  dimensions  with the  first
terminator of arrow type DOT and the second terminator of arrow type ARROW.  You
can change the arrows by the SELECT_DIM_ARROW  function as long as the DIM_COORD
command  is  active.  The  system  will keep the arrow  setting  for  coordinate
dimensions independent of the arrows set for the other dimension types.

For ANSI and ISO a zero  dimension  is  created  to  display  the  origin of the
coordinate  dimension.  This  zero  dimension  can be  deleted  separately.  The
dimension  between any two points may be horizontal,  vertical,  parallel to the
direction specified between beg_elem and end_elem or perpendicular/parallel to a
reference line identified; the default is PARALLEL.  See also  DIM_DATUM_STEP to
define  the datum  step.  Use  MANUAL to locate  the  dimension  texts  manually
(default is AUTO).

With both MANUAL and AUTO, beg_elem and end_elem are the begin and end points of
the  dimension,  and loc_pnt is the location of the  dimension  line.  With AUTO
(the default), you give loc_pnt only once; the system then automatically chooses
the loc_pnt for  subsequent  dimensions.  With  MANUAL,  you give an loc_pnt for
each  dimension.  It is possible to mix AUTO and MANUAL within the same command.

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

^DIM_LINE HORIZONTAL PARALLEL PERPEND_TO_LINE PARALLEL_TO_LINE DIMENSION
DIM_LINE command

                 +----------------------<------------------+
                 |                                         |
 -->(DIM_LINE)->-+->------------------------------+->-{1}--+-->
                 |                                |
                 +->-(HORIZONTAL)-----------------+
                 |                                |
                 +->-(VERTICAL)-------------------+
                 |                                |
                 +->-(PARALLEL)--+---->------+----+
                 |               |           |    |
                 |               +->-|angle|-+    |
                 |                                |
                 +->-(PERPEND_TO_LINE)---|line|---+
                 |                                |
                 +->-(PARALLEL_TO_LINE)--|line|---+

if not PARALLEL:

{1}----->|beg_elem|-->|end_elm|-->|loc_pnt|-->

if PARALLEL:

{1}-+-->--+->|beg_elem|-+-->--+->|end_elm|-+-->--+->|loc_pnt|----->
    |     |             |     |            |     |
    +-{2}-+             +-{2}-+            +-{2}-+

    {2}----->(PROJ_ANGLE)--->|angle|----->

DIM_LINE creates a single line dimension.  The dimension  between any two points
may be  horizontal,  vertical,  parallel  to  the  direction  specified  between
beg_elem and end_elem or perpendicular/parallel  to a reference line identified.
The default is PARALLEL.  The angle value at the PARALLEL option is used to turn
the extension lines (to be used e.g.  for dimensioning isometric drawings).

The dimension between beg_elem and end_elem will be placed at the loc_pnt.

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

^DIM_RADIUS CENTER_LINE DIMENSION DIM_RADIUS_LINE
DIM_RADIUS  command

                 +-------------------------------------------+
                 |                                           |
-->(DIM_RADIUS)--v--+------------------+--|elem|--|loc_pnt|--+--->
                    |                  |
                    +-(CENTER_LINE)----+
                    |                  |
                    +-(NO_CENTER_LINE)-+

DIM_RADIUS  creates a radius  dimension.  You first  identify an arc, circle, or
fillet, then  indicate the dimension  text  location.  Option  CENTER_LINE  (and
NO_CENTER_LINE  respectively)  allows the dimension  line to be connected to the
center  point or not.  The  loc_pnt  must not be at the  center of the  circular
element.  Default is CENTER_LINE.

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

^DIM_DIAMETER ANSI ISO CENTER_LINE NO_CENTER_LINE DIMENSION
DIM_DIAMETER command

                              +-------------------------------------------+
                              |                                           |
-->(DIM_DIAMETER)-+--------+--v--+------------------+--|elem|--|loc_pnt|--+--->
                  |        |     |                  |
                  +-(ANSI)-+     +-(CENTER_LINE)----+
                  |        |     |                  |
                  +-(ISO)--+     +-(NO_CENTER_LINE)-+

DIM_DIAMETER  creates  a  diameter  dimension.  Using the  option  ANSI you will
obtain  dimensions with the diameter sign prefix.  To reset to the default of no
diameter sign, use the option ISO.

You first  identify a circle, arc, or fillet, then  indicate the text  location.
Option CENTER_LINE (and NO_CENTER_LINE  respectively)  allows the dimension line
to be  connected  to the center  point or not.  The  loc_pnt  must not be at the
center of the circular element.  Default is CENTER_LINE.

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

^DIM_TOLERANCE NO_TOL LIMIT UPPER_LOWER PLUS_MINUS TEXT_SCALE
DIM_TOLERANCE function

-->(DIM_TOLERANCE)--{1}--+----(LIMIT)------|upper_tol|--|lower_tol|--+
                         |                                           |
                         +----(UPPER_LOWER)--------{2}---------------+
                         |                                           |
                         +----(PLUS_MINUS)---------{3}---------------+

{1}----+------------------------+------------->
       |                        |
       +-(TEXT_SCALE)--|scale|--+

{2}----+---|upper_tol|--+--+--|lower_tol|--+-->
       |                |  |               |
       +---|'string'|---+  +---|'string'|--+

{3}-----+--|plus_minus_tol|--+--->
        |                    |
        +-----|'string'|-----+

DIM_TOLERANCE   selects  the  tolerance  type  used  for  new  dimensions.  With
UPPER_LOWER  or  PLUS_MINUS,  the  tolerance  value can be either a number  or a
string  containing up to 24 characters.  TEXT_SCALE  specifies the ratio between
the text size of the tolerance and that of the normal  dimension value (OLD, for
compatibility only).

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

^EDIT_DIM_TOLERANCE TOLERANCE NO_TOLERANCE DIMENSION
EDIT_DIM_TOLERANCE command

                         ,---------------------------------,
                         v                                 |
-->(EDIT_DIM_TOLERANCE)--+--+-------------------+->|point|-+-|tolerance|-->
                            |                   ^
                            `-->(NO_TOLERANCE)--'

EDIT_DIM_TOLERANCE  allows you to edit the tolerance of the identified dimension
text.  NO_TOLERANCE  will  remove  the  existing  tolerance  of  the  identified
dimension.

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

^ADD_DIM_TOLERANCE TOLERANCE DIMENSION
ADD_DIM_TOLERANCE command

-->(ADD_DIM_TOLERANCE)---+-(LIMIT)----------{1}------------+-|selection|-->
                         |                                 |
                         +-(UPPER_LOWER)----{2}------------+
                         |                                 |
                         +-(PLUS_MINUS)-----{3}------------+

{1}----+--|upper_limit|-+--+-|lower_limit|-+-->
       |                |  |               |
       +---|'string'|---+  +---|'string'|--+

{2}----+---|upper_tol|--+--+--|lower_tol|--+-->
       |                |  |               |
       +---|'string'|---+  +---|'string'|--+

{3}-----+--|plus_minus_tol|--+--->
        |                    |
        +-----|'string'|-----+

ADD_DIM_TOLERANCE  lets you add a tolerance to the identified  dimension.  Limit
tolerance  strings can only be entered if the dimension  text value has not been
edited.

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

^DELETE_DIM_TOLERANCE TOLERANCE DIMENSION
DELETE_DIM_TOLERANCE command

-->(DELETE_DIM_TOLERANCE)--->|selection|---->

DELETE_DIM_TOLERANCE  allows  you to  delete  the  tolerance  of the  identified
dimension.

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

^CONVERT_DIM_TOLERANCE TOLERANCE DIMENSION
CONVERT_DIM_TOLERANCE command

                           +-------------------------+------------------+
                           |                         |                  |
->(CONVERT_DIM_TOLERANCE)--v--+-------------------+--v--|selection|-----+->
                              |                   |
                              +----(LIMIT)--------+
                              |                   |
                              +----(UPPER_LOWER)--+
                              |                   |
                              +----(PLUS_MINUS)---+

CONVERT_DIM_TOLERANCE changes an existing tolerance to a different type selected
by LIMIT, UPPER_LOWER or PLUS_MINUS.  Converting dimension tolerances from or to
limit  tolerances is only allowed, if the dimension text value and the tolerance
text has not been edited.

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

^LAST_TOLERANCE TOLERANCE DIMENSION
LAST_TOLERANCE function

-->(LAST_TOLERANCE)-------->

Copies the last tolerance to the current tolerance.

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

^MOVE_DIMENSION TEXT_ONLY DIMENSION TM_DIMENSION_2 SM_DIMENSION_2
MOVE_DIMENSION command

                 +----------------------<--------------------------+
		 |                                                 |
(MOVE_DIMENSION)-+->-+->-------------+-|id_pnt|->-|move_pnt|----+--+-->  
		     |               |                          |
		     +->-(TEXT_ONLY)-+                          | 
		     |                                          | 
		     +->-(ROTATE_DIM_TEXT)->-|angle|->-|id_pnt|-+

The  MOVE_DIMENSION is used to move the dimension lines and text.  If the option
TEXT_ONLY is invoked,  then the  dimension  lines are retained in their  current
position  but  the  text  is  moved  to  a  point   defined  by  the  user.  The
ROTATE_DIM_TEXT  option will rotate the text only to an angle  specified  by the
user.  The angle of rotation is measured from the dimension line.

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

^DIM_TEXT_HOLE HATCH
DIM_TEXT_HOLE command

                      ,--------------,
                      |              |
                      v              |
-->(DIM_TEXT_HOLE)-->-+--->|point|---+-->

DIM_TEXT_HOLE  makes  holes in an existing  hatch for the  identified  dimension
texts.  Later  changes to the dimension  text do not affect the size or position
(i.e.  after STRETCH) of the hatch hole.

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

^DIM_CURSOR_POSITION  LINE_POS TEXT_POS DIMENSION
DIM_CURSOR_POSITION function

-->(DIM_CURSOR_POSITION)-----+--->(TEXT_POS)----+----->
                             |                  |
                             +--->(LINE_POS)----+

The  DIM_CURSOR_POSITION  function  allows you to specify  the  position  of the
cursor when locating  dimensions.  The option TEXT_POS  places the cursor in the
middle of the dimension text.  LINE_POS places the cursor on the dimension line.
This option only works if DIM_TEXT_LOCATION is ABOVE or BELOW and simplifies the
task of for example aligning dimension lines.

The default setting of DIM_CURSOR_POSITION is TEXT_POS.

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

^DIM_CATCH_RANGE  DIMENSION
DIM_CATCH_RANGE function

-->(DIM_CATCH_RANGE)--|number|------>

The DIM_CATCH_RANGE function allows you to set the catch range of dimension text
to middle  of the  extension  lines.  The  argument  is the new range  (positive
number) in current units.

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

^DIM_UPDATE APPROVE DIMENSION
DIM_UPDATE command

		 +-------------------------------------------+
		 |                                           |
		 v                                           |
-->(DIM_UPDATE)--+-->|number|-->+--------------+-->|select|--+-->
		                |              ^
		                |              |
		                +-->(MARK)-----+
		                |              |
		                +-->(APPROVE)--+

When loading a annotated  drawing the system  tries to display  data in the same
way as it was displayed  before storage.  If drawings are loaded which have been
created  using an older  version of the system,  the  dimension  components  may
change their  appearance if the drawing is modified,  because the calculation of
the drawing data may have been changed in the meantime.

The DIM_UPDATE  command is used to find, mark and process dimension  components,
whose appearance would change after recalculation.

The command has two states:

  - MARK sets the state for  finding  and  marking  dimension  whose  appearance
    change. The MARK state is the default state if the command is entered.

  - APPROVE sets the state for approving marked graphics representations.

If the state has been changed, the new state is valid until the state is changed
again.

In the  MARK  state  the  graphics  representation  of  the  selected  dimension
components is recalculated; if the new representation  differs from the old one,
the corresponding  component is marked (by the associated text "DIM_UPDATE") and
drawn in the highlight color of DIM_UPDATE.  This highlight color is the current
color during the command and will  therefore be modified by all color  functions
which are called while DIM_UPDATE is active.  The number of dimension components
which have been marked  during the  lifetime of the command is written  into the
first number field of the inquire array and can be accessed  directly  after the
command (by INQ 1).

The resolution of the  comparison can be changed by specifying a number which is
interpreted  using the current  selected unit; the default  resolution is 0.1mm.
If resolution is changed, the new value is kept as the default if  DIM_UPDATE is
called  again.  The scaling of a  dimension  component  does not  influence  the
resolution.

The option  APPROVE  allows  approval of the  current  appearance  of  dimension
components.  If the  component  is marked by  DIM_UPDATE,  the mark is  deleted,
otherwise  the  component is just  updated  without  comparing  the new graphics
representation with the old one.

The marked dimension components keep their mark until they are approved or until
any modification is applied to the dimension or the underlying component.  It is
therefore useful to correct the graphics  representation of all marked dimension
components  before any other  command which could affect the marked  dimensions.
The  drawing  can be stored  and  reloaded  at any time  without  loosing  these
markings.

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

^DIM_TEXT_FRAME_COLOR_MODE LINE_COLOR TEXT_COLOR
DIM_TEXT_FRAME_COLOR_MODE Function

-->(DIM_TEXT_FRAME_COLOR_MODE)--+-->(TEXT_COLOR)--+-->
		                |                 ^
		                |                 |
		                +-->(LINE_COLOR)--+

This function  allows the user to specify the  dependency of the dimension  text
frame color on either the dimension main text color or the dimension line color.

The global text frame color is directly coupled to the corresponding color which
is  specified  by  DIM_TEXT_FRAME_COLOR_MODE.  If the  main  text  color  or the
dimension color of a dimension component is changed, the frame color of the text
changes when DIM_TEXT_FRAME_COLOR_MODE is set accordingly.

For example, if DIM_TEXT_FRAME_COLOR_MODE is set to LINE_COLOR, then a change of
the line color of a dimension component will also change the text frame color of
this  component,  whereas a change of the main text  color has no effect  on the
text frame color.

The default setting of DIM_TEXT_FRAME_COLOR_MODE is TEXT_COLOR.

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

^CHANGE_DIM_TEXT_COLOR
^DELETE_DIMENSION
^DIM_2ND_DEC_PLACE
^DIM_2ND_NUMBER_FORMAT
^DIM_ARROW
^DIM_CONVERT_UNIT
^DIM_DATUM
^DIM_DEC_PLACE
^DIM_DEG_MIN_SEC
^DIM_FONT
^DIM_FT_INCH_SIGN
^DIM_LINES_COLOR
^DIM_NUMBER_FORMAT
^DIM_SCALE
^DIM_TEXT_COLOR
^DIM_TEXT_RATIO
^DIM_TEXTSIZE
^DIM_UNITS DIMENSION

The following dimensioning functions are maintained for compatibility reasons:

  CHANGE_DIM_TEXT_COLOR     use CHANGE_DIM_TEXT for new macros
  DELETE_DIMENSION          use DELETE for new macros
  DIM_2ND_DEC_PLACE         use DIM_FORMAT for new macros
  DIM_2ND_NUMBER_FORMAT     use DIM_FORMAT for new macros
  DIM_ARROW                 use SELECT_DIM_ARROW for new macros
  DIM_CONVERT_UNIT          use CONVERT_DIM_UNIT for new macros
  DIM_DATUM                 use DIM_DATUM_LONG or DIM_DATUM_SHORT for new macros
  DIM_DEC_PLACE             use DIM_FORMAT for new macros
  DIM_DEG_MIN_SEC           use CURRENT_DIM_UNITS for new macros
  DIM_FONT                  use CURRENT_DIM_TEXTS for new macros
  DIM_FT_INCH_SIGN          use CURRENT_DIM_UNITS for new macros
  DIM_LINES_COLOR           use CHANGE_DIM_COLOR for new macros
  DIM_NUMBER_FORMAT         use DIM_FORMAT for new macros
  DIM_SCALE                 obsolete for new macros
  DIM_TEXT_COLOR            use CURRENT_DIM_TEXTS for new macros
  DIM_TEXT_RATIO            use CURRENT_DIM_TEXTS for new macros
  DIM_TEXTSIZE              use CURRENT_DIM_TEXTS for new macros
  DIM_UNITS                 use CURRENT_DIM_UNITS for new macros

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

^EXTENSION_LINE
^FT_FRACT_INCH
^FT_INCH_SIGN
^FT_INCH_TEXT
^LONG_BASE_LINE
^MM_OVER_INCH
^NO_EXTENSION_LINE
^NO_SIGN
^SHORT_BASE_LINE DIMENSION

The following qualifiers are maintained for compatibility reasons:

  EXTENSION_LINE
  FT_FRACT_INCH
  FT_INCH_SIGN
  FT_INCH_TEXT
  LONG_BASE_LINE
  MM_OVER_INCH
  NO_EXTENSION_LINE
  NO_SIGN
  SHORT_BASE_LINE

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


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

^ADD_ATTRIBUTE DEFINE_CLASS DELETE_CLASS
ADD_ATTRIBUTE command
				     +<-----------------+
				     v			|
-->(ADD_ATTRIBUTE)-->|class name|->--+->{attribute-def}-+---(CONFIRM)---->

{attribute-def}

-->|attribute name|-+-----------+->|attribute type|-->
		    v		|
		    +->(INDEX)->+

Use this command to add attriutes to an existing class.  A variable amount of
attributes of different types may be defined.  The supported attribute types and
the meaning of the INDEX qualifier are listed in the description of the
DEFINE_CLASS command.  All attribute names must be unique within a class.

security: command can be invoked by PRIV 1 users if and only if no other users
	  are connected

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

^ARCHIVE RESTORE BACKUP
ARCHIVE command

	      +-----(NEXT)-----+
	      v		       ^
-->(ARCHIVE)->+->{element_id}->+->+----------+-+---------------+-------+
			          v	     ^ v	       ^       |
			          +->(KEEP)->+ +->(RECURSIVE)->+       |
								       |
+----------------------------------------------------------------------+
|
+-+------------+->|dest|->+-----------+-->
  v	       ^          v	      ^
  +->(SCREEN)->+          +->|label|->+

{element id}

-->|element name|--+-------------------------------------------------------+->
		   v							   |
		   +->(SEL_OLD)--+->|revision string|->|version number|-+->+
				 |					|
				 +->|revision string|------------------>+
				 |					|
				 +->|version number|------------------->+

ARCHIVE  stores the selected elements and all files related to the elements in
'dest'.  Elements which have been archived without the KEEP option cannot be
modified until they are restored from the archive.

WARNING:  The destination file is overwritten without warning.  It is not
	  possible to append further archive information to an already existing
	  archive destination file or to an already filled archive tape.

The archive  label  allows the user to give an  identifier  to the archive.  The
label  option  is only  available  if the KEEP  option  has not been  used.  The
archive  label may be used to list all the  elements  on a  particular  archive,
without having to actually read the physical media.

ARCHIVE might be used for different reasons:

- ARCHIVE can be used to remove files related to an element without removing the
  element.  If files  related to an element are not needed on line, the  element
  can be archived (without the KEEP option), removing the related files from the
  storage  area.  With large files or a great  number of files, this result in a
  substantial savings in disc space.

- ARCHIVE can be used to perform  selective backup of elements and their related
  files, or as a means of copying  elements  and their  related  files  from one
  database to another.

Options:

- default:   The  selected  elements  and  their  related  files  are  stored to
	     'destination'.  The  information  about the elements  and the files
	     related to them is still  available  in the database but it is also
	     stored on the archive  medium.  If more than one element is related
	     to a file  which will be  archived,  a copy of the file is made for
	     those elements which are not being  archived, and the original file
	     is copied to the archive medium.

- RECURSIVE: Each of the selected  elements and recursively all elements related
	     to them are archived.

- KEEP:      the files  related to the selected  elements are only copied to the
	     destination, not moved.  The element isn't marked as archived.

The option  SCREEN  enters the	built-in  editor (see  EDITOR) and allows you to
verify the list of  selected  elements;	 any changes in the screen are	ignored.
With an unsuccessful exit (STOP/BREAK) from the editor nothing is archived.

Element-selection:

-- default: The newest	version and current  revision of the element is assumed.

-- SEL_OLD: If more than one  revision/version	of an  element	exist,	revision
	    string and/or  version  number of the newest one is prompted and can
	    be overwritten or accepted.

You can't archive an element with a reserved file related to it.

Elements which have been archived without the KEEP option are protected  against
the following changes:

   -  relating elements or files to them
   -  loading them
   -  checking out files related to them

Users with remove permission can remove archived elements.

Only one user may do an ARCHIVE or a RESTORE at a time.  If  another  archive or
restore is already active, no other ARCHIVE or RESTORE  commands will be allowed
until the running ARCHIVE completes.

ARCHIVE writes its output in the "cpio -c" format.  If the destination file is a
device  file the raw  device  file name  (/dev/rct/c0)  must be  specified.  The
output  file/device  for ARCHIVE must be an absolute  path (begin with a leading
'/').

security:
To archive an element,  the user needs write or special  permission  for
the element.


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

^BACK Sm_option_back
BACK menu selection

This HP-DMS menu selection brings back the ME10/ME10v/ME30 menu that was
active when you entered HP-DMS.

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

^BACKUP ARCHIVE RESTORE Sm_data_management_backup Sm_backup_menu
BACKUP command

-->(BACKUP)->|logfile1|-+->(CONFIRM)-->+->|destination|--->
			|	       |
			+->|logfile2|->+

The  database  and  all  related  files  are  copied  to  'destination',   where
'destination'  is the name of a  destination  file (e.g.  device file) where all
backed up information is held.  The 'destination'  must be an absolute path.  If
the destination file already exists it is overwritten.  

No other user may  access the  database  during the  BACKUP.  To  prevent  other
HP-DMS  clients  from  connecting  to the server  during  backup, a lock file is
created on the server named <database  configuration  file>".lock"  (usually the
file  name  will be  "medb.lock").  In  order  to  create  this  lock  file  and
successfully  complete  the backup, the user under  which the server  process is
running  ("medmgr")  must have  read,  write,  and  execute  permission  for the
database directory and all storage area directories.

If the database has been  created with the dual	 logging  option, both	logfiles
must be specified for a complete backup.

The logfiles have to be specified  with an absolute  path.  For ease of use, the
menu button BACKUP uses the macro variables  Sys_db_logfile1 and Sys_db_logfile2
for the two logfile names.  These variables should be set in the customize file,
along with the Sys_server_node and Sys_database macros.

BACKUP  writes its output in the "cpio -c"  format.  The files are stored on the
destination  with  their  absolute  path  name.  To reload a backup  copy  (e.g.
because of a disk crash), you must be the root user.  Once logged in as
root use the appropriate command listed below:

    'tcio -iv destination | cpio -icuvd'
    (if you have stored your backup copy on a cartridge tape)

    'cpio -icuvd < destination'
    (if you have  stored  your backup  copy on another medium than a
    cartridge tape)

(refer to the corresponding  Unix manuals for complete  descriptions of cpio and
tcio)

With these HP-UX  commands,  the database and all related  files are restored to
their original  locations.  With the cpio -u option, all files will be restored,
even those which are newer than the backup files.  This means the whole database
on your server and all files in all storage areas are  overwritten by the backup
copies.  If any of the  files in the  database  directory  need to be  restored,
restore all the files to keep the database files consistent with one another.

If you only want to reload one file (e.g.  one  corrupt  drawing  file) from the
backup, look for its physical  name  (attribute  PHYS_NAME) in the data base and
for the storage  path of the  storage  area on which the file  resides.  Specify
these parameters in the form '/storage_path/phys_name' as parameter 'pattern' in
the sequence

    'cpio -icuvd pattern < destination'

If the destination file is a device file you have to specify the raw device file
name (e.g.  /dev/rct/c1).

security: command  can be  invoked  by level 1 users  only  and only if no other
	  users are connected.  You have be the root user to restore the files.


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

^CHECKIN CHECKOUT CATALOG CREATE_ELEMENT CREATE_STORAGE_AREA AREA AS 
CHECKIN command

-->(CHECKIN)->|source name|-+--------+-->+
			    |	     v	 |
			    +<-{sel}-+	 |
					 v
		 +<----------------------+
		 |
		 +>+----------+-+---------+-+-+----------------+-+->(CONFIRM)->
		   v	      | v	  | | v		       | v
		   +->(KEEP)->+ +->{sta}->+ | +->{element id}->+ +->(SCREEN)-->
					    |
					    +>{create}----------------->

{sel}--->(SELECT)--->|expr|--->

|expr|

--->|item|-------+-------->+------>|value|------>
		 |	   |
		 +->(=)--->+
		 |	   |
		 +->(<>)-->+
		 |	   |
		 +->(>)--->+
		 |	   |
		 +->(<)--->+
		 |	   |
		 +->(>=)-->+
		 |	   |
		 +->(<=)-->+

{sta}

-->(AREA)--->|area name|--->

{create}

-->(AS)->|class name|-+
		      |
     +----------------+
     | 
     +--+---------------+--+-----------------+--+-(CONFIRM)->+-+->{att}->
	v               |  |                 |  |            | |
        +->|rev string|-+  +->|vers number|->+  +-(SCREEN)-->+ +-------->

{att}

  +<---------------------------------------+
  v					   |
  +->|attribute name|-+->|attribute value|-+
  |		      |			   ^
  |		      +->(NULL)----------->+
  v					   |
--+----------------------------------------+-->(CONFIRM)->
  |
  |
  |
  |	      +<-------------------+
  |	      v			   |
  +->(PROMPT)-+->|attribute value|-+------------------->
 	      |			   |
	      +->(NULL)----------->+


{element id}

-->|element name|--+-------------------------------------------------------+->
		   v							   |
		   +->(SEL_OLD)--+->|revision string|->|version number|-+->+
				 |					|
				 +->|revision string|------------------>+
				 |					|
				 +->|version number|------------------->+

A set of files may be  specified  to be  checked  in.  This  means the files are
stored in one of the storage areas and the information about it is stored in the
database.

If a corresponding hp_catfile entry exists for a file, the info available in the
hp_catfile is stored in the database.  If no hp_catfile  entry  exists, only the
file info, available from the operating system, is stored in the database.

The user may specify an element to which files should be related.

NOTE: It is  recommended  that a file be related to one and only one element and
      vice-versa.  See the RELEASE command for more information.

To checkin a file and relate it to an element is possible only if the element is
not archived.

-- default:  If the file  already  exists in the  database, an error  message is
	     displayed  if the file was not  reserved  by the same user  before,
	     otherwise the file is checked in under its filename

-- KEEP:  Indicates  whether  to keep the  original  HP-UX  file.  Default is NO
          KEEP.

-- AREA: The user can specify  which  storage  area to have the file  physically
	 located.  Default:  current  storage area.  However if the file already
	 exists and is  overwritten,  it resides in the storage  area  specified
	 when the file was created.

-- element: An element  may be  specified  to which the file  should be related.
	    The named element must exist in the database.

-- AS: It can be specified  that the files should be checked in AS elements of a
       specific  class.  This means  elements  of this  class are  automatically
       created,  whereby the element  name is the same as the  filename.  If the
       specified  class allows  revisioning,  the revision  string may be given.
       The  same  if  versioning  is  defined  for  this  class.  If a  revision
       string/version  number is given, these are set for all created  elements.
       If no revision string/version number is given, defaults are assumed.  The
       files are then  checked in for these  elements.  Attribute  values can be
       set for all  attributes  defined for the  corresponding  class.  The same
       values are set for all the created  elements.  The permission mask, owner
       and group for each created  element is derived from the UNIX  permissions
       of the corresponding file.

Element-selection:

-- default:  The newest version and current revision of the element is assumed.

--  SEL_OLD: If more than one  revision/version  of an element  exist,  revision
	     string and/or version  number of the newest one is prompted and can
	     be overwritten or accepted.

File-selection:

With SELECT, you can choose which files in the  directory  should be checked in.
You do this by giving an item name, then  saying  what values  that item  should
match.

For example,

	SELECT 'FILE_TYPE' 'Model.MI'

selects	 the MI files.	 The item name must be a string.  The value is a string,
except for the items  FILE_SIZE and  NUM_ACCESS,  where it is a number.  For the
items  that are dates (  CREATE_DATE,  MODIFY_DATE,  ACCESS_DATE),  the value is
normally in the form  'DD-Mmm-YY  hh:mm:ss'.  If you omit the year or month, you
get the  current  one.  If you omit the date, it defaults to 1.  If you omit the
hh:mm:ss, it defaults to midnight.  The value may contain wildcards; thus

	SELECT 'FILE_NAME' 'A*'

selects	 the files whose  names	 begin with 'A'.  See SELECT  (the entry in this
help file for element selection ) for a description of wildcards.

SELECT also allows a  relational  operator  between the item name and the value.
Thus

	SELECT 'ACCESS_DATE' < '01-Jan-85'

selects the files whose ACCESS_DATE string is less than '01-Jan-85'.

	SELECT 'FILE_SIZE' > 10240

selects files larger than 10Kb.	 The operators can also be used with names; here
'<' means 'earlier in an alphabetical ordering', etc.

You can use  SELECT  more than once.  The  resulting  files  satisfy  all of the
selection criteria.

The items you can select on are strings, and must be one of the following:

		FILE_NAME
		PHYS_NAME
		FILE_SIZE
		CREATE_DATE
		MODIFY_DATE
		ACCESS_DATE
		NUM_ACCESS
		FILE_TYPE
		PROG_NAME
		PROG_REV
		FILE_DESC

The option  'SCREEN'  enters the built-in  editor (see EDITOR) and allows you to
verify the list of selected  files; any changes in the screen are ignored.  With
an unsuccessful exit (STOP/BREAK) from the editor nothing is checked-in.

security:  Command may not be invoked by PRIV 4 users.  To checkin files related
	   to a specific element, WRITE-permission for this element is required.


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

^CHECKOUT CHECKIN UNRESERVE RESERVE DEL_OLD FILE
CHECKOUT command

-->(CHECKOUT)-->{sel}--+-------------+--+-------------+-->|location|-->
		       v	     |	v	      |
		       +->(RESERVE)->+	+->(DEL_OLD)->+

{sel}

-->+->(FILE)->|file name|------------------>+-->
   |					    |
   +->{element id}->+---------------------->+
		    |			    |
		    +->(FILE)->|file name|->+

{element id}

-->|element name|--+-------------------------------------------------------+->
		   v							   |
		   +->(SEL_OLD)--+->|revision string|->|version number|-+->+
				 |					|
				 +->|revision string|------------------>+
				 |					|
				 +->|version number|------------------->+

Command to get local copies of the specified files.

The selected  files are copied to the specified "location" directory.

element options:

-- default: The newest	version and current  revision of the element is assumed.

--  SEL_OLD: If more than one  revision/version	 of an element	exist,	revision
	     string and/or version  number of the newest one is prompted and can
	     be overwritten or accepted.

file options:

-- default:  If the dest  files	 already  exists  an error  message  is	 issued,
	     otherwise the dest file(s) are created.

--  DEL_OLD:  If the dest file already exists in the destination  directory, its
	      old content is overwritten.

-- RESERVE: Reserve for UPDATE.  The status of the specified file is changed to
	    reserved.  Only one user may  reserve a file at a time.  Default  is
	    READ_ONLY.

-- {element id}:  The element related to the file to be checked out.
		  To get all the files related to a specific
		  element, only the element name has to be given.

Note: It's only	 possible to checkout  files of an element if the element is not
      archived.

Note: If a file is related to an element, you MUST specify the element FIRST
      and then the file name in order for the system to properly identify the
      file to be checked out.  Refer to the following diagram:

 -------------				  In order to determine which "myfile"
|  myfile | 0 |				  to CHECKOUT, an element name MUST be
 -------------				  specified in order to checkout the
					  second or the third "myfile".  If
 -------------		 -------------	  no element name is given then the
|  myfile | 1 |---------| myelement_a |	  first "myfile" is checked out as it
 -------------		 -------------	  has no relationships to any elements.

 -------------		 -------------
|  myfile | 3 |---------| myelement_b |
 -------------	   |	 -------------
		   |	 -------------
		   -----| myelement_c |
		   |	 -------------
		   |	 -------------
		   -----| myelement_d |
			 -------------


security:

READ access is required for the element if it is related to the file to be
checked out.

WRITE access is needed to reserve it.


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

^CONNECT DISCONNECT
CONNECT command

-->(CONNECT)-+-----+->|server node|->|database-environment on server node|---->
	     |	   |
	     |	   +--------------------+
	     |	                        |
	     +->(ALLBASE)-------------->+
	     |				|
	     +->(HP_SQL)--------------->+
	     |				|
	     +->(ORACLE)->|oracle_sid|->+

The user is connected with a database server which resides on the server node.

To establish a connection to an ORACLE database, the ORACLE option must be
chosen.  ALLBASE is the default if no option is chosen.  ORACLE requires that
the ORACLE system identifier (see your System Administrator).

To  establish  a  connection  to the  server  node,  the  server  node has to be
specified.  This may be done through:  - the hostname - the internet  address of
the host - the string "local", if the server is running on the same machine.
The server node can be specified along with the port on the server at which the
connection will be made if the desired port is not the default, 9898:

	"local:9900"

The database  environment  identifies the  DBEnvironment in which the session is
established.  An  absolute  pathname  should be  given, so that the  server  can
connect to the database  independent of where it is installed.  (For Explanation
of the DBEnvironment see also the SQL-manual of HPSQL/300 or ALLBASE.)

NOTE: If databases other than from HPSQL/300 or ALLBASE are used, the parameters
      may change!

This  command has to be invoked	 before any of the other  listed  commands.  The
user and group	identification	is done	 automatically	(Series 300, 800).  It's
taken from the user's login on HP-UX.

If the user is already	connected to a database, this connection is closed and a
new one is established.

- security: only  authorized  users may	 connect to the	 database.  (An entry of
	    username and privilege level for this user must be found in the
	    table MEDMGR.SU)


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

^CREATE_ELEMENT DEFINE_CLASS PROMPT NULL Sm_data_management_manage
CREATE_ELEMENT command

					   +---------->
					   |
-->(CREATE_ELEMENT)->|class|->(element id)-+->{att}--->

{element id}

-->|element name|--+-----------------------------------------+->
		   |					     |
		   +->|revision string|->|version number|-+->+
		   |					  |
		   +->|revision string|------------------>+
		   |					  |
		   +->|version number|------------------->+

{att}

 +<---------------------------------------+
 v					  |
 +->|attribute name|-+->|attribute value|-+
 |		     |			  ^
 |		     +->(NULL)----------->+
 v					  |
-+----------------------------------------+-->(CONFIRM)->
 |
 |
 |
 |	     +<-------------------+
 |	     v			  |
 +->(PROMPT)-+->|attribute value|-+------------------->
	     |			  |
	     +->(NULL)----------->+

An element of the specified class is created.

The element  name must be specified,  and if the  element's class  allows
revisioning  and/or  versioning,  the revision	string and/or the version number
must also be entered whereby the last revision/version is prompted as the 
defaults.

If there are additional attributes describing an element of the given class, the
user can insert the values for the selected attributes.

OWNER and GROUP of the element are  automatically  set, in  accordance  with the
current user.  The element gets the default permission mask if it's set,
otherwise it defaults to '---', which means only specific users  can  access  
the  element  (see also description of access-rights).

security:
Command may not be invoked by PRIV 4 users.


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

^CREATE_STORAGE_AREA
CREATE_STORAGE_AREA command

---->(CREATE_STORAGE_AREA)---->|area name|---->|directory|---->

A new  storage	area is created.  The area names must be unique.  
The directory must be specified  as an absolute path name on the server node.

NOTE: Make sure that the  MEDMGR user has write-access to the directory in
      which the area is created.  The directory must NOT already exist, as it
      will be created during the CREATE_STORAGE_AREA command.

security: command can be invoked by PRIV 1 users only


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

^DB_LOAD UNRESERVE LOAD Tb_load
DB_LOAD command

 -->(DB_LOAD)->+------------>+-+-------------+--{element id)->-+---------+->
	       v	     | v	     |		       v	 |
	       +->(RESERVE)->+ +->(SUBPART)->+		       +->{loc}->+

 {loc}

 ->-+--->(ABSOLUTE)----->+-->
    v			 |
    +->|location point|->+

{element id}

-->|element name|--+----------(CONFIRM)------------------------------------+->
		   v							   |
		   +->(SEL_OLD)--+->|revision string|->|version number|-+->+
				 |					|
				 +->|revision string|------------------>+
				 |					|
				 +->|version number|------------------->+


DB_LOAD  loads a drawing  as a subpart of the current part or as the
current part if no parts are loaded.  The named element may be of the
class ASSEMBLY or DRAWING, or of a part class.  When the specified element 
is a part or assembly,  HP-DMS checks for drawings of that part/assembly.  
If only one drawing exists, this drawing is loaded automatically.  If more than 
one exists, the list of drawings is displayed and the user can select 
one to load.

If several revisions/versions of the drawing or part exist, the newest one is
loaded if  CONFIRM  is given.	The  SEL_OLD  option  allows the user to select 
an older revision/version of the drawing or part. In this case the current
revision/version is prompted as default.

DB_LOAD searches for a file related to the specified  drawing which has the 
same name as the drawing itself and which has the file description Model.MI.

SUBPART means that the new part is to be a subpart of the active part.
Otherwise, LOAD automatically chooses one of the following options:

 -- If the top part is empty and the new part is not shared then the new part
    replaces the top part.  If the new part is shared the part is loaded as a
    SUBPART.

 -- If the top is not empty the new part is loaded as a subpart of the top part.

Except for the first case,  you must specify where the new part is to be
positioned geometrically.  You do this by either saying  ABSOLUTE,  which 
says that the new part should have the same location as it did when you 
stored it, or by indicating a location point.  If you indicate a location
point, the part reference point (see CHANGE_PART_REF_PT) is placed there.

If you load a part directly into the top part, the drawing scale is taken
from the drawing scale of the loaded part.  Otherwise,  the loaded part is
adapted to the current drawing scale.

RESERVE	 reserve for UPDATing.  The status of the specified drawing file is 
	 changed to "reserved".	 Only one user may reserve a specific 
	 drawing at a time.  Default is READ_ONLY.

security: READ-access for the drawing is needed to load it and WRITE-access
	  for the drawing is needed to load and reserve it.


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

^DB_SET_DEFAULT
DB_SET_DEFAULT command

-->(DB_SET_DEFAULT)-+->(AREA)-------->|area name|------->
		    |
		    +->(REVISION)---->|revision string|->
		    |
		    +->(PERMISSIONS)->|permission mask|->

Command to set some system defaults.

options:

-- AREA: The default storage area is set to the specified area.  This area
	 must currently exist.

-- REVISION: The default revision string is set.

-- PERMISSIONS: The default permission mask is set.  The owner column may 
		NOT be set to 'r' or '-' for the default.

security: command may only be invoked by PRIV 1 users


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

^DB_STORE ALL AREA SCAN_ALL SCAN_PART PART DETAIL_INFO NULL Sm_data_management_store
DB_STORE command

Syntax:

-->(DB_STORE)-+-->(ALL)------+-+--------->+-+--------+->{drawing id}-->
	      |		     ^ |	  ^ |	     |
	      +-->|partname|-+ +->{scan}->+ +-{sta}->+

{scan}

--+->(SCAN_PART)->+->+-----------------+->
  v		  |  v		       |
  +->(SCAN_ALL)-->+  +->(DETAIL_INFO)->+

{sta}

-->(AREA)--->|area name|--->

{drawing id}

--+->(CURRENT)------------------------------------------------------+-->
  |								    |
  +->|drawing name|-->------------+-+->--------------+--+->-------+-+
		  v		  | v		     |	v	  |
		  +->|rev string|-+ +->|vers number|-+	+->{att}->+

Revision string and version number have to be specified if the class 'drawings'
is defined with	 REVISIONING and VERSIONING.  Otherwise only one of them or none
has to be specified, depending on how the class 'drawings' was defined.

CURRENT can be specified if you want to store the drawing with its original 
name.

{att}

 +<---------------------------------------+
 v					  |
 +->|attribute name|-+->|attribute value|-+
 |		     |			  ^
 |		     +->(NULL)----------->+
 v					  |
-+----------------------------------------+-->(CONFIRM)->
 |
 |
 |
 |	     +<-------------------+
 |	     v			  |
 +->(PROMPT)-+->|attribute value|-+------------------->
	     |			  |
	     +->(NULL)----------->+

Command, which provides:

 - The storage of an MI-file in a storage area.

 - If the drawing  doesn't exist, an element of class drawing is created.  If it
   exists already and was reserved before by the same user, it is overwritten

 - The file gets the same name as the drawing itself.

 - The file is related to the drawing.

 - The corresponding file information is stored in the database tables.

 - Attributes  can be set or updated  for the  drawing	itself.	 If there are no
   user-defined	 attributes defined for the class drawings, no attributes can be
   set.

 - The ME - parts - tree may be stored in the database using  SCAN_PART  or
   SCAN_ALL.  Then for each part a pre-classification will be done, if the part
   is not  already  stored in the  database.  To do this, all part classes are
   shown and for each of the parts the user must specify the class to which it
   belongs.  Revision and / or Version have to be specified  for each part, only
   if the corresponding class is defined with REVISIONING/VERSIONING.

-  If the name of an ME-part  starts with '.', the part itself and its	subparts
   are not stored in the database.  The same applies if the  qualifier	CONTINUE
   is given.

 options:

 - If the ALL option is given,	everything  is stored from the top-part	 down in
   one single drawing.

 - If a	 partname  is given,  this part is  considered	to be the  top-part  and
   everything is stored from this part down in one single drawing.

 - The option  SCAN_PART  allows the user to specify  that he wants to store the
   top-part as a part in the database  and that the drawing has to be related to
   that part.

 - The parts-tree  either from the top-part down (All) or from a given part down
   can be scanned and stored in the database (SCAN_ALL).

 - With the option  DETAIL_INFO,  it can be specified that the attributes  are
   prompted for each part in the parts-tree  (SCAN_ALL/SCAN_PART  together  with
   DETAIL_INFO).

 - If no  DETAIL_INFO  option  is given,  but  either  the  option  SCAN_ALL  or
   SCAN_PART  partname, a table is displayed where all chosen  parts in the
   parts-tree ( SCAN_ALL = all and  SCAN_PART = part only) are shown.  Displayed
   are the name,  revision  and	 version of each part, a status,  whether it was
   newly created, or whether it already exists, and the information, whether the
   attribute values of the user-defined attributes are set, copied from an older
   version,  or	 not  yet  set.	 The  user  is	asked  to  either  CONFIRM  this
   information,	 or to enter  the name of a part, in order to have a look at the
   attribute values of that part and set or update these values.

 - AREA: If a new file is newly created, it is stored in the named storage area.
	 Default: current storage area. However if the file is overwritten, it
	 resides in the storage area specified when the file was newly created.

security:  The	 command   may	not  be	  invoked   by	users,	 who  only  have
	   read-permission.


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

^DB_STORE_LAYOUT AREA
DB_STORE_LAYOUT command

Syntax:

->(DB_STORE_LAYOUT)->{drawing id}-+--------+-{element id}->
				  |	   |
				  +-{sta}->+

{sta}

-->(AREA)--->|area name|--->

{drawing id}

-->|drawing name|-+->------------------+-+->-----------------+->+-------->+-->
		  v		       | v		     |	v	  |
		  +->|revision string|-+ +->|version number|-+	+->{att}->+

Revision string and version number have to be specified, if the class 'drawings'
is defined with	 REVISIONING and VERSIONING.  Otherwise only one of them or none
has to be specified, depending on, how the class 'drawings' was defined.


{element id}

-+->|model name|-+-+-------------------------------------------------------+->
 v		 | v							   |
 +->|part name|--+ +->(SEL_OLD)--+->|revision string|->|version number|-+->+
				 |					|
				 +->|revision string|------------------>+
				 |					|
				 +->|version number|------------------->+

{att}

 +<---------------------------------------+
 v					  |
 +->|attribute name|-+->|attribute value|-+
 |		     |			  ^
 |		     +->(NULL)----------->+
 v					  |
-+----------------------------------------+-->(CONFIRM)->
 |
 |
 |
 |	     +<-------------------+
 |	     v			  |
 +->(PROMPT)-+->|attribute value|-+------------------->
	     |			  |
	     +->(NULL)----------->+

Command, which provides the storage of a 2D-Layout for a given part
or model. This includes:

 - The storage of an MI-file in a storage area.

 - If the drawing  doesn't exist, an element of class drawing is created.  If it
   exists already and was reserved before by the same user, it is overwritten.

 - The file gets the same name as the drawing itself.

 - The file is related to the drawing.

 - The corresponding file information is stored in the database tables.

 - Attributes  can be set or  updated  for  the	 drawing  itself  if  there  are
   user-defined attributes specified for the class 'drawings'.

 - The	drawing is related to the  specified  model or part,  which must already
   exist.

option:

 - AREA: If a new file is created it is stored in the named storage area.
	 Default: current storage area.

security:  The	 command   may	not  be	  invoked   by	users,	 who  only  have
	   read-permission.


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

^DEFINE_CLASS ADD_ATTRIBUTE DELETE_CLASS REVISIONING VERSIONING RELEASABLE PART DEFINE_TREE Sm_data_management_admin
DEFINE_CLASS command

	        +<-------------(NEXT)-----------------------------+
	        |						  |
	        |		    +<--------------+ +<--------+ |
	        |      	            v     	    | v	        | ^
-(DEFINE_CLASS)-+----------+>|name|-+---------------+-+---------+-+->(CONFIRM)->
	        v          |	    v		    | |	        |
	        +->(PART)->+	    +>(REVISIONING)>+ +->{att}->+
				    |		    |
				    +>(VERSIONING)->+
				    |		    |
				    +>(RELEASABLE)->+

{att}

-+->|attribute name|-+-----------+->|attribute type|--+-->
		    v		|
		    +->(INDEX)->+

New classes of elements are defined. All class names must be unique.

Two categories of classes may be specified, part classes and non-part classes.

Part classes  are  defined when	 the  option	 PART  is  given.  To  define  a
part_class  means, that all elements of the defined class are  basically  parts,
which are classified through the defined class.

- Part elements may be components of part lists

- Part elements may be related to other part elements, no DEFINE_RELATION has to
  be done among part classes

- Part   elements  are	created	 automatically,	 if a  DB_STORE	 with the option
  SCAN_ALL or SCAN_PART.

- An  element  may only be deleted  if it's not related to another element as
the child in that relationship, as this would change the structure of the
parent element.

A variable  amount of  attributes  of  different  types may be defined	for each
class.	Which attribute-types are supported depends on the database used.

For HPSQL/300, ALLBASE or ORACLE, the supported types are:

CHAR(n)		 Character string of fixed length n where n is an integer from 1
		 to 255.

VARCHAR(n)	 Character  string of variable length no greater than n, where n
		 must be an integer from 1 to 255.

DECIMAL(p[,s])	 Fixed-point  decimal number with a precision (maximum number of
		 digits	 excluding  sign and decimal  point) no greater	 than p,
		 where p is 1 through  15, and a scale	(number of digits to the
		 right of the decimal) of s, where s is from 0 through p.  E and
		 L notation  are not allowed in the  specification  of a decimal
		 value.

FLOAT		 Long floating point number.  The range of negative numbers that
		 can be represented is -1.797E+308 to -2.225E-308.  The range of
		 positive  numbers  that can be	 represented  is  2.225E-308  to
		 1.797E+308.  E notation may be used to specify FLOAT values.

INTEGER		 Integer in the range of -2147483647 to 2147483647

SMALLINT	 Integer in the range of -32768 to 32767

DATE             ALLBASE: (transformed by HP-DMS to the ALLBASE DATETIME
		 datetype) String of the form 'YYYY-MM-DD HH:MI:SS.FFF' 
		 where YYYY represents the calendar year, MM is the month, and 
		 DD is the day of the month, HH the hour, MI the minute,
		 SS the second, FFF is thousandths of a second.  The range is 
		 from 000-01-01 00:00:00.000 to 999-12-31 23:59:59.999.

		 ORACLE: Character and number data consisting of
		 Century, Year, Month, Day, Hour, Minute, and Second.
		 See the ORACLE SQL syntax manual for complete
		 formatting, date arithmetic and Julian date methods.

The qualifier  INDEX may be specified for each attribute.  It allows an index to
be created for that attribute.	If an index is created for a specific attribute,
the performance of queries accessing this attribute is considerably increased.

Note: The maintenance of the INDEX costs additional disc-space.

Since each  element is	identified  through  its name, the  attribute  "NAME" is
automatically  added to the  attribute	list.  It is defined as a 255  character
string.

The other system-defined attributes are:

The  options  REVISIONING  and	VERSIONING  define  whether  revisioning  and/or
versioning for the elements of that class have to be allowed and supported.

With the option	 RELEASABLE it can be specified  whether elements of that class
can be released.

security: command can be invoked by  PRIV 1 users if and only if no other users
	  are connected.


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

^DEFINE_RELATION PART DEFINE_CLASS
DEFINE_RELATION	 command

					 +<---------------+
					 v		  |
-->(DEFINE_RELATION)-+->|parent class|-+-+->|child class|-+->(CONFIRM)---->
		     |		       | |		  ^
		     +--->(PART)------>+ +-->(PART)------>+

Command to specify valid  relations  among classes.  Only if a relation on class
level is defined, a relation on element level can be created.

NOTE: All part classes are implicitly related to all other part classes.

If the qualifier PART is given, all part classes are considered.

Example:

  DEFINE_RELATION PART 'drawings' CONFIRM

defines a relationship	between all part classes  and drawings, so that drawings
may be related to all part elements.

security: Command can be invoked by  PRIV 1 users if and only if no other users
	  are connected


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

^DELETE_CLASS DEFINE_CLASS ADD_ATTRIBUTE
DELETE_CLASS command

		  +---------+
		  v	    |
-->(DELETE_CLASS)-+->|name|-+-(CONFIRM)---->

One or more existing class definition are deleted.

NOTE: You CANNOT delete a class that contians elements.  The elements must
      first be deleted using REMOVE.

security: Command can be invoked by  PRIV 1 users if and only if no other users
	  are connected


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

^DISCONNECT CONNECT
DISCONNECT command

-->(DISCONNECT)---->

The database  session is closed, and the  database server  itself is no
longer running.  All HP-DMS commands may only be invoked as long as a database
connection exists.


================================================================================
^INQ_DB Function Show_connection
INQ_DB Function

<INQ_DB>----->|inq_code|---->

The INQ_DB function is used to return information about the drawing which
is loaded and the database to which the program is connected.


+-------------------------------------------------------------------------+
| <inq_code> | <inq_index> | result 					  |
|============+=============+==============================================|
|       0    |             |  software version information                |
|	     |      1	   |  0 (inquire code)                            |
|	     |      2	   |  version number for DMS                      |
|	     |    301	   |  version string for DMS                      |
|------------+-------------+----------------------------------------------|
|       1    |             |  information about DB connection             |
|            |      1	   |  1 (inquire code)                            |
|            |      2	   |  database connected & type                   |
|            |             |	    =0 not connected                      |
|            |             |	    =1 Allbase                            |
|            |             |	    =2 ORACLE (TM)                        |
|            |    301	   |  hostname of server                          |
|            |    302	   |  database name (Allbase only)                |
|------------+-------------+----------------------------------------------|
|       2    |             |  information about loaded drawing            |
|            |      1	   |  2 (inquire code)                            |
|            |      2	   |  was drawing loaded from DMS                 |
|            |             |     1=yes, 0=no                              |
|            |      3	   |  was drawing reserved?                       |
|            |             |     1=yes, 0=no                              |
|            |      4	   |  revisioning active?                         |
|            |             |     1=yes, 0=no                              |
|            |      5	   |  versioning active?                          |
|            |             |     1=yes, 0=no                              |
|            |      6	   |  version number                              |
|            |    301	   |  drawing name                                |
|            |    302	   |  revision string                             |
|            |    303	   |  class name                                  |
+------------+-------------+----------------------------------------------+

Example:
  INQ_DB 1
  DISPLAY (INQ 2)

  will display 0 if not connected, 1 if allbase, 2 if ORACLE(TM)

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

^HP-DMS Tm_data_management Sm_data_management Meview2dm
HP-DMS (product)

HP-DMS is a collection of programs within ME10/30 that manage drawings and other
product  information you have stored in a relational  database.  HP-DMS provides
an interface between the ME10/30 software and the relational database where your
product information is stored.

HP-DMS consists of:

 - HP-DMS  Design  Information  Management  - Links  your  ME10/30  system and a
   relational database.

   HP-DMS lets you manage your design data by:  

   - Storing, relating and accessing parts, data and drawings 

   - Querying for information in the database 

   - Backing up and archiving files 

   - Setting access  permissions so that only certain people can access  certain
     information 

   - Specifying revision and version control for drawings and other information

   - Releasing a part or assembly for  production and ensuring that all drawings
     and files  accociated  wiht the released  item are  protected  from further
     changes 

   - Extracting drawing infromation form the database for automatic placement on
     ME10/30 title blocks.

 - Bill of  Materials  Processor  - Lets you  create  and edit a parts  list and
   format that information for output on a drawing, in a file, or to the screen

 - Classification  Module - Lets you  organize  your data  within the  database.
   Classification simplifies the data search and retrieval process, and provides
   enhanced querying capabilities.

 - Server Software - Maintains the  communication  between the HP-DMS client and
   the relational database (HP ALLBASE/SQL or ORACLE RDBMS).


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

^LAST_QUERY_RESULTS
LAST_QUERY_RESULTS function

-->(LAST_QUERY_RESULTS)---->

The result table of the last query is shown, however no new query is done on the
database.  So the shown  values are really only the results of the query done in
the past and may have changed meanwhile through other users.

================================================================================
 
^LOAD 
^Sm_data_management_load
LOAD menu

The LOAD menu allows access to the HP-DMS load functions.  These
include DB_LOAD, DB_LOAD_3D, CHECKOUT and UNRESERVE. 

================================================================================
 
^MANAGE 
^Sm_data_management_manage
MANAGE menu

The MANAGE menu allows access to the HP-DMS management functions.  These
functions allow the user to create, remove, release, unrelease and update
elements.  See CREATE_ELEMENT, MOVE_ELEMENT, RENAME_ELEMENT,
UPDATE_ELEMENT, REMOVE MODIFY_RELATIONSHIP, RELEASE and UNRELEASE.

================================================================================
 
^ADMIN 
^Sm_data_management_admin
ADMIN menu

The ADMIN menu allows access to the HP-DMS database administration functions.
These functions allow the user to define classes, relate classes, create
attributes, delete classes, create storage areas, set user privileges,
update statistics on ALLBASE or set defaults for area, revision, and permission
See DEFINE_CLASS, ADD_ATTRIBUTE, DEFINE_RELATION, DELETE_CLASS,
MODIFY_USER, UPDATE_STATISTICS, CREATE_STORAGE_AREA, and
DB_SET_DEFAULT.

================================================================================
 
^BACKUP 
^Sm_data_management_backup
BACKUP menu

The BACKUP menu allows the user to do database backups, archive elements and
restore elements.  See BACKUP, ARCHIVE and RESTORE.

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

^MODIFY_RELATIONSHIP RETAIN_RELATIONSHIP
MODIFY_RELATIONSHIP command

                                        +<------------+
                                        |             |
(MODIFY_RELATIONSHIP)-----{element id}--+-->{parent}--+-->(CONFIRM)-->
                                        |             |
                                        +-->{child}---+
{element id}

-->|element name|--+-------------------------------------------------------+->
                   |                                                       |
                   +->(CURRENT)--------------------------------------------+
		   v							   |
		   +->(SEL_OLD)--+->|revision string|->|version number|-+->+
				 |					|
				 +->|revision string|------------------>+
				 |					|
				 +->|version number|------------------->+

{parent}
--->(PARENT)--+-------------------->(ALL)------------------->+---->
              |                                              |
              +---->(parent element id)-+->|quantity|->+->-->+
                                        |              |
                                        +--->(ALL)---->+

{child}
--->(CHILD )--+------------------>(ALL)-------------------->+---->
              |                                             |
              +---->(child element id)-+->|quantity|->+->-->+
                                       |              |
                                       +--->(ALL)---->+

The  MODIFY_RELATIONSHIP  Command will modify the quantity of relationships  
between one element and any or all of its relatives.

Selecting the SEL_OLD option allows you to select an older (non-current) 
version of the element, the parent element or the child element.

By choosing  PARENT you will modify the  quanitity  of  relationships with 
the parent element.  A specific parent or ALL may be specified.

By choosing CHILD you will modify the quanitity of relationships with the 
child element.  A specific child or ALL children may be specified.

Quantity can be any positive number.

The value of quantity is considered the total number of links that the
element should have to the parent/child element after the command has been
executed.  If the element  already  had a link or  links  to the  parent/child,
these  links  are ignored.

Permissions for modifying relationships are the same as relating elements.

If the user is modifying child  relationships,  the user's  permission to modify
the  element  is  checked  immediately.  After  all  of  the  child
relationships  have been  identified,  the permission to modify the  
element is checked again.

As each child  relationship  is about to be modified , the two classes  involved
are checked to see if a defined relationship between them exists.

If the user is modifying parent  relationships,  the user's permission to modify
the  parent is  checked  immediately.  If the user does not have  permission  to
modify this parent, an error will be given.

As each  parent  relationship  is about to be modified,  the two  classes
involved are checked to see if a defined relationship between them exists.  Then
the permission to modify each parent is checked again.

Logical  tables are used to display all the  parents or  children  of the 
element.  The  logical  tables can be  modified  as many times as the user would
like.  Only when the user has specified  CONFIRM will any changes be made in the
database.

If there is an unexpected system failure, all changes for the current  execution
of the MODIFY_RELATIONSHIP command will be rolled back.


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

^MODIFY_USER REMOVE_USER 
MODIFY_USER command


                  +<---------------------------------+
	          |				     |
                  |                +<-------------+  |
                  |                |              |  |
--->(MODIFY_USER)-+--|user login|--+--|priv num|--+--+->


MODIFY_USER creates a new user and/or sets the privilege of an existing user.

|user login| is the user's login name.

|priv num| is the new  privilege  number for the user for the specified
product.  Its  range  is 0 - 4, 0  implies  no  privilege.  A  default
privilege  of 4 will be set for the  new  user  for all  the  products.
Then,  you will be  prompted  for the  privilege  settings  for all the
relevant products one by one.

An HP-DMS privledge level of 1 is required to use this command.

While the commands are executing they keep a logical table "dms_su_table" 
filled with up-to-date information about the users' privilege level.


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

^MOVE_ELEMENT RENAME_ELEMENT CREATE_ELEMENT
MOVE_ELEMENT command

-->(MOVE_ELEMENT)-+-----------+->{element id}->|new class|->(CONFIRM)--->
                  |           |
                  +->(FORCE)->+

{element id}

-->|element name|--+-------------------------------------------------------+->
                   |                                                       |
                   +->(CURRENT)--------------------------------------------+
		   v							   |
		   +->(SEL_OLD)--+->|revision string|->|version number|-+->+
				 |					|
				 +->|revision string|------------------>+
				 |					|
				 +->|version number|------------------->+


This command moves ALL revisions and versions of an element from one class to
another.

An element of the specified class is created.

The element  name must be specified,  and if the  element's class  allows
revisioning  and/or  versioning,  the revision	string and/or the version number
must also be entered whereby the last revision/version is prompted as the 
defaults.

If there are additional attributes describing an element of the given class, the
user can insert the values for the selected attributes.

OWNER and GROUP of the element are  automatically  set, in  accordance  with the
current user.  The element gets the default permission mask if it's set,
otherwise it defaults to '---', which means only specific users  can  access  
the  element  (see also description of access-rights).

A user must have write PRIV_1, PRIV_2 and ownership, or PRIV_3 and write 
permission to move an element.

All revisions and versions of an element will be moved to the new class, 
if possible.

If the user does NOT have permission to move all rev/ver of the element, 
NO element rev/vers will be moved and the command will abort.

If the user does NOT have permission to modify all parents of all rev/vers
of this element, then NO rev/vers will be moved and the command will abort.

The owner of the element revs/vers will be changed to the user's login 
during the move.

An element can be moved to a new class, even though some or all of it's 
user-defined attributes, some or all revisions and/or versions, and 
some or all of its relationships to other elements may be lost.

As many of the user_defined attributes will be moved as can be matched.  

Two user-defined attributes of different classes match if the attribute 
names match exactly and the data types are the same.  Exceptions to
this are moving an INT to a FLOAT, a CHAR to a VARCHAR, and a VARCHAR
to a CHAR.

If the destination class does not have all the same user-defined attributes 
the data will simply be discarded.  If, in the case of CHARs and VARCHARs, 
the length of the field is not the same, the string will be truncated when it 
is moved.

If the element has revisioning, versioning, releasing, or all three and 
the destination class does not have the corresponding configuration,
then only the following element rev/vers will be moved and the rest will
be deleted.  (See charts below.)

                                  SOURCE CLASS
DESTINATION  |  Rv Vr Rl    Rv Rl    Vr Rl    Rv Vr     Rv       Vr       Rl
CLASS        +---------------------------------------------------------------+ 
Rv Vr Rl     |     ok        1        2	       3        4        5        6  |
             +---------------------------------------------------------------+ 
Rv Rl        |	   7	     ok       2        8        3        5        6  |
Vr Rl        |	   9         10       ok       11       12       3        6  |
Rv Vr        |	   ok        1        2        ok       4        5        6  |
             +---------------------------------------------------------------+ 
Rv           |	   7         ok       2        7        ok       5        6  |
Vr           |	   9         10       ok       9        10       ok       6  |
Rl           |	   13        13       13       13       13       13       ok |
             +---------------------------------------------------------------+

option = 0 - okay
	 1 - move only 1 version of each revision
	 2 - move only 1 revision, but all versions of that revision
	 3 - no releasable elements with new class
	 4 - move only 1 version of each revision, no releasable elements with 
	     new class
	 5 - move only 1 revision, but all versions of that revision, no 
	     releasable elements with new class
	 6 - move only 1 rev/ver of element
	 7 - move all revs, set version to 1 on each
	 8 - move all revs, set version to 1 on each, no releasable elements 
	     with new class
	 9 - move all vers, set the revision string to the default rev string
	10 - move only 1 version, set the revision string to the default rev 
	     string
	11 - move all vers, set the revision string to the default rev string, 
	     no releasable elements with new class
	12 - move only 1 version, set the revision string to the default rev 
	     string, no rel elements with new class
	13 - only one element to move, set the revision string to the default 
	     rev string and the version to 1

option
------
0, 3, 13	move ALL revisions and versions of the element, setting 
		revision strings and version numbers if needed.

2, 5, 9, 11	move ALL versions of the revision specified, setting revision 
		strings and version numbers if needed.
		delete all remaining revisions and versions from old class

1, 4, 7, 8, 10, 12
		move  the  given  version  of  each  revision,   setting
		revision  strings and version numbers if needed.  delete
		all  remaining  revisions  and versions from old class 

6               move  the  specific  rev/ver  of  the  element,  setting
		revision  strings and version numbers if needed.  delete
		all  remaining  revisions and versions from old class 

If the element has  relationships to other elements that are not allowed
in the new class, these relationships will simply be removed.  All other
relationships to this element will be moved with the element.

If the FORCE option has not been set, the user will see any or all of the
following warning messages before they are prompted to enter CONFIRM:

Warning: Some infos for <element> cannot be moved to the new class and will be 
discarded.

Warning: Some relationships to <element> cannot be moved to the new class and 
will be discarded.

Warning: Some revisions/versions of <element> cannot be moved and will be 
deleted.

Warning: The new class does not support releasing.

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

^NAMED_QUERIES Sm_data_management_query
NAMED VS. UNNAMED QUERIES (concepts)

HP-DMS  queries may be either named or unnamed.  Different  commands are used to
access  these two types of  queries.  The  following  commands  are for  unnamed
queries:

  QUERY  QUERY_AREAS  QUERY_CLASSES  QUERY_FILES  SQL_QUERY  STRUCTURE  WHERE_USED

All of the other query commands work with named queries:

  QUERY_ADD_CLASS  QUERY_ADD_COLUMN  QUERY_ADD_SELECT  QUERY_ADD_SORT  QUERY_COPY

  QUERY_CREATE  QUERY_CREATE_CLASSIFICATION  QUERY_DELETE  QUERY_DELETE_CLASS

  QUERY_DELETE_COLUMN  QUERY_DELETE_SELECT  QUERY_DELETE_SORT  QUERY_DESTINATION

  QUERY_DIRECTION  QUERY_EXECUTE  QUERY_FILE_NAME  QUERY_LEVELS  QUERY_LIST

  QUERY_MODIFY_CLASS  QUERY_MODIFY_COLUMN  QUERY_MODIFY_SELECT  QUERY_MODIFY_SORT

  QUERY_REFRESH  QUERY_RENAME  QUERY_SAVE  QUERY_SELECT_TABLE_NAME  QUERY_SET_SELECT

  QUERY_SORT_TABLE_NAME  QUERY_START_ELEMENT  QUERY_START_REVISION QUERY_START_VERSION
  
  QUERY_TABLE_NAME  QUERY_TREE_CHILD_NODE QUERY_TREE_ELEMENTS  QUERY_TREE_PARENT_NODE
  
  QUERY_TYPE  QUERY_USER_TABLE_NAME

An unnamed  query lasts only for the duration of one commands.  Each command has
many  options  that allow you to specify all of the  information  for the query,
including class names, element names, select conditions, sort order, and display
options.  If you want to repeat the query with minor changes, you must input the
entire specification again.

In  contrast,  you must use several  simple  named  query  commands to specify a
single  query.  The advantage of named queries is that after you have  initially
specified  the query  options,  you may later make  incremental  changes  to the
specification  without  repeating the  unchanged  portion.  For example, you may
edit a named query to add a class,  delete a display  column, or modify a select
condition.

You may create many named queries.  Then, you may re-execute any query simply by
entering its name, not its specification.  There is a high degree of consistency
between the various named query  commands for elements,  files, areas,  classes,
attributes and structures.  For example, all of the named query commands support
sorting options, where some of the corresponding unnamed query commands do not.

Named queries support more complex select  conditions than unnamed queries.  The
conditions  may include  NOT.  They may be grouped,  using  square  brackets  as
parentheses.  For more information about this capability, see  QUERY_SET_SELECT.

Some named query commands operate on a single query (for example, QUERY_EXECUTE,
QUERY_SAVE,  QUERY_ADD_SORT,  etc.)  Other commands deal with the master list of
queries (for example, QUERY_SAVE ALL, QUERY_DELETE ALL, QUERY_LIST etc.)

The named query commands do not support the "DETAIL_INFO" vertical output format
(one attribute per line).  The named query commands do not assist with selection
of classes by restricting input to only PARTS classes.


Detailed differences for STRUCTURE / WHERE_USED
-----------------------------------------------

The unnamed query commands allow you to specify a separate select  condition for
the  starting  class (or group of classes)  and for each  destination  class (or
group  of  classes).  The  named  query  commands  allow  only a  single  select
condition for all classes.  The named query  commands  allow only a single start
element (without select conditions), not a starting class.

The unnamed query  commands do not allow you to specify sort  conditions  and do
not do any default  sorting.  The named query  commands  allows you to specify a
sort  condition.  The condition is applied  within each level of the  hierarchy.
To optimize performance, the named query commands do not do any default sorting.


Detailed differences for Files / Elements_to_files / Files_to_elements
----------------------------------------------------------------------

The unnamed  query  commands  include  three file query  modes.  The simple mode
outputs  all  selected   files,   regardless   of  any  related   elements.  The
ELEMENTS_TO_FILES  mode outputs all selected files.  Following each file record,
a record is output for each  related  element (if any) that  matches the element
select conditions.  The  FILES_TO_ELEMENTS  mode outputs all selected  elements.
Following each element record, a record is output for each related file (if any)
that matches the file select conditions.

The named FILES query  provides two modes.  The simple mode is equivalent to the
simple  QUERY_FILES  command.  You select the  related  elements  mode by adding
class  names to the class  list.  The  related  elements  mode  outputs a single
record for each related pair of files and elements.

The ELEMENTS_TO_FILES mode allows you to specify a separate select condition for
the starting  files and for each  destination  class (or group of classes).  The
FILES_TO_ELEMENTS mode allows you to specify a separate select condition for the
starting class (or group of classes) and for the  destination  files.  The named
query commands  allow only a single select  condition for the query.  The select
condition may include file attributes and/or element attributes.

The unnamed query  commands do not allow you to specify sort  conditions  and do
not do any default  sorting.  The named FILES query allows you to specify a sort
condition.  The  condition  is applied  within each level of the  hierarchy.  To
optimize performance, the named query command does not do any default sorting.

By default, the  ELEMENTS_TO_FILES  option shows all  revisions  and versions of
elements  related to the selected files.  By default, the named FILES query only
displays current versions of elements.  In either case, you may specify a select
condition to see only the revisions and versions that you wish.


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

^QUERY_CREATE
QUERY_CREATE function

--->(QUERY_CREATE)-->|query name|--->

Creates a query with type  ELEMENTS.  If you want a different type of query, you
should set the type  before  editing any other query  attributes.  To change the
type, see the  QUERY_TYPE  command.  If the named  query  already  exists, it is
re-initialized.  The class,  select,  sort and display  lists are  cleared.  The
default display mode is selected.


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

^QUERY_CREATE_CLASSIFICATION
QUERY_CREATE_CLASSIFICATION function

--->(QUERY_CREATE_CLASSIFICATION)-+------------+---->|query name|--->
				  |            |
				  +-(ELEMENTS)-+

Creates a named  query for  CLASSIFICATION  module.  If the named query  already
exists, it is  re-initialized.  With ELEMENTS option, the query can only be used
for querying class elements  otherwise, it is applicable only for querying nodes
from  CLASSIFICATION  tree.  Upon  creation, the class, select, sort and display
lists are cleared.  The default display mode is selected.


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

^QUERY_TYPE
QUERY_TYPE function

--->(QUERY_TYPE)-->|query name|--+-->(ELEMENTS)------->+-->
                                 |                     |
		                 +-->(FILES)---------->+
                                 |                     |
		                 +-->(STRUCTURES)----->+
                                 |                     |
		                 +-->(CLASSES)-------->+
                                 |                     |
		                 +-->(ATTRIBUTES)----->+
                                 |                     |
		                 +-->(AREAS)---------->+

Sets  the  type of a  query.  Re-initializes  all  fields  and  attributes.  Any
previously  entered query  attributes  are reset to their default  values.  This
command should immediately follow the QUERY_CREATE command.

To generate a top-down  STRUCTURE  query, you use the STRUCTURES query type with
direction set to DOWN (the default).  To generate a bottom-up  WHERE_USED query,
you use the STRUCTURES query type and set the direction to UP.

For queries similar to the ELEMENTS_TO_FILES  and  FILES_TO_ELEMENTS  options of
the  QUERY_FILES  command,  you use the FILES query type and add the classes for
the related elements.


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

^QUERY_DELETE
QUERY_DELETE command

--->(QUERY_DELETE)--->+--->|query name|--->+--->(CONFIRM)--->
                      |                    |
                      +------->(ALL)------>+

Deletes a single query or all defined  queries.  Enter the name of the query you
wish to delete, or select the option ALL.  Select CONFIRM.  The query is cleared
to default values.


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

^QUERY_EXECUTE
QUERY_EXECUTE function

--->(QUERY_EXECUTE)--->|query name|--->

Queries the database and displays the results.  You will see a running  count of
records read.  The data is output in the previously selected display mode.  (See
QUERY_DESTINATION for more information about display options.)


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

^QUERY_SAVE
QUERY_SAVE function

--->(QUERY_SAVE)--->+--->|query name|--->+--->|output spec|--->
                    |                    |
                    +------->(ALL)------>+

Stores the  specification  of the query to a file or displays  it on the screen.
The  format is  compatible  with the INPUT  command.  The  'output  spec' may be
SCREEN, PROMPT_LINE, DEL_OLD, APPEND, or a file name.  The query specifications,
including output options,  selected classes, select  conditions, sort conditions
and display columns, are stored.  The query results are not stored.


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

^QUERY_LIST
QUERY_LIST function

--->(QUERY_LIST)--->|output spec|--->

Lists all defined  queries to a file or displays  the list on the  screen.  Only
the query names are  displayed.  The 'output  spec' may be SCREEN,  PROMPT_LINE,
DEL_OLD,  APPEND, or a file name.  The list of defined  queries is output to the
specified destination.


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

^QUERY_COPY
QUERY_COPY function

--->(QUERY_COPY)--->|source query name|--->|destination query name|--->

Makes a copy of the  specified  query.  You first enter the name of an  existing
query,  then you enter a name for the copy.  The copy name must not  refer to an
existing query.  The new copy becomes the current query.


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

^QUERY_RENAME
QUERY_RENAME function

--->(QUERY_RENAME)--->|old query name|--->|new query name|--->

Renames the  specified  query.  You first  enter the name of an existing  query,
then you  enter a new  name for that  query.  The new  name  must not  refer  to
another existing query.  The name of the query is updated.


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

^QUERY_REFRESH
QUERY_REFRESH function

--->(QUERY_REFRESH)--->|query name|--->

Selects the  specified  query as the current  query and updates a logical  table
with the complete  specification for this query.  The other named query commands
automatically  update  portions of the logical  table data with values that they
modify.


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

^QUERY_START_ELEMENT QUERY_START_REVISION QUERY_START_VERSION
QUERY_START_ELEMENT function

--->(QUERY_START_ELEMENT)--->|query name|-->|element name|-->

Sets the  starting  element for a  STRUCTURES  query.  Also  selects the current
revision and version of that element.


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

^QUERY_START_REVISION QUERY_START_ELEMENT
QUERY_START_REVISION function

--->(QUERY_START_REVISION)--->|query name|-->|revision string|-->

Sets the starting revision string for a STRUCTURES  query.  If the element class
does not allow revisioning, the new value is ignored.


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

^QUERY_START_VERSION QUERY_START_ELEMENT
QUERY_START_VERSION function

--->(QUERY_START_VERSION)--->|query name|-->|version number|-->

Sets the starting  version number for a STRUCTURES  query.  If the element class
does not allow versioning, the new value is ignored.


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

^QUERY_LEVELS
QUERY_LEVELS function

--->(QUERY_LEVELS)--->|query name|--->+--->|max. level|--->+--->
                                      |                    |
                                      +------>(ALL)------->+

Sets the maximum number of levels to display for a STRUCTURES query.


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

^QUERY_DIRECTION
QUERY_DIRECTION function

--->(QUERY_DIRECTION)--->|query name|--->+--->(DOWN)--->+--->
                                         |              |
                                         +--->(UP)----->+

Sets the direction of search for a STRUCTURES  query.  If the direction is DOWN,
the query shows subassemblies of the starting element  (lower-level  elements in
the structure).  If the direction is UP, the query shows major assemblies  where
the  starting  element is used  (higher-level  elements in the  structure).  The
default search direction for new queries is DOWN.


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

^QUERY_ADD_CLASS
QUERY_ADD_CLASS function

--->(QUERY_ADD_CLASS)--->|query name|--->+--->|new class name|--->+--->(END)--->
                                         |                        |
                                         +<-----------------------+

Adds a list of classes to the  specified  query.  Wildcards  are allowed for the
new class name.  You may not enter  classes for AREAS and CLASSES  queries.  The
class list must be set for ELEMENTS, ATTRIBUTES,  RELATED_CLASSES and STRUCTURES
queries.  To display  elements  related to files, simply add the desired classes
to a FILES query.


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

^QUERY_DELETE_CLASS
QUERY_DELETE_CLASS function

--->(QUERY_DELETE_CLASS)--->|query name|--->+--->|previous class name|--->+--->
                                            |                             |
                                            +----------->(ALL)----------->+

Deletes one class or all classes from the specified query.


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

^QUERY_MODIFY_CLASS
QUERY_MODIFY_CLASS function

--->(QUERY_MODIFY_CLASS)--->|query name|--->+
                                            |
+<------------------------------------------+
|
+--->|previous class name|--->|new class name|--->

Substitutes one class for another in the class list for the specified query.


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

^QUERY_ADD_SELECT
QUERY_ADD_SELECT function

--->(QUERY_ADD_SELECT)--->|query name|--->+
                                          |
+<----------------------------------------+
|
|    +<---------------------------------------+
|    |                                        ^
|    v                                        |
+--->+------------>+--->|select condition|--->+--->(END)--->
     |             |
     +--->(AND)--->+
     |             |
     +--->(OR)---->+

|select condition|:

--->|attribute name|--->+------------->+--->+--->|string|--->+--->
                        |              |    |                |
                        +--->( =  )--->+    +--->|number|--->+
                        |              |    |                |
                        +--->( <> )--->+    +---->(NULL)---->+
                        |              |
                        +--->( >  )--->+
                        |              |
                        +--->( <  )--->+
                        |              |
                        +--->( >= )--->+
                        |              |
                        +--->( <= )--->+

Adds a list of select  conditions to the specified query.  Wildcards are allowed
for string values.  You first select an attribute name and a relational operator
(=, <>, >, >=, <, <=).  The default  operator is '='.  You should enter a number
or string value  appropriate to the type of attribute you selected.  You may add
any number of conditions,  separated with AND and OR, then terminate the command
with END.

For ELEMENTS and FILES queries, by default only the current revision and version
of each element is displayed.  To see old  revisions and versions, you may enter
a select condition on either revisions or versions, or both.


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

^QUERY_MODIFY_SELECT
QUERY_MODIFY_SELECT function

--->(QUERY_MODIFY_SELECT)--->|query name|--->+
                                             |
+<-------------------------------------------+
|
+--->|previous select condition|--->|new select condition|--->

|select condition|:  See QUERY_ADD_SELECT.

Substitutes  one select  condition for another in the select  condition list for
the specified query.  Enter the select condition that you want to change just as
for  QUERY_ADD_SELECT.  Then  enter a new select  condition.  The new  condition
replaces the old condition in the list.


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

^QUERY_DELETE_SELECT
QUERY_DELETE_SELECT function

--->(QUERY_DELETE_SELECT)--->|query name|--->+
                                             |
+<-------------------------------------------+
|
+--->+--->|previous select condition|--->+--->
     |                                   |
     +-------------->(ALL)-------------->+

|select condition|:  See QUERY_ADD_SELECT.

Deletes one select condition or all select  conditions from the specified query.
You specify the select condition the same as you did for  QUERY_ADD_SELECT.  The
condition is removed from the list.


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

^QUERY_SET_SELECT
QUERY_SET_SELECT function

--->(QUERY_SET_SELECT)--->|query name|--->|select factor|--->

|select factor|:

    +----->(NOT)----->|select factor|------>+
    |                                       |
--->+--------->|select condition|---------->+--->
    |                                       |
    +--->( [ )--->|select expr|--->( ] )--->+

|select expr|:

    +<---+<---(AND)<---+<---+
    |    |             |    |
    |    +<---(OR)<----+    |
    |                       |
--->+--->|select factor|--->+--->

|select condition|:  See QUERY_ADD_SELECT.

The  QUERY_SET_SELECT  command allows more complex select  conditions than those
that you can create with QUERY_ADD_SELECT,  including NOT and grouping.  You may
group select conditions by entering square brackets as you would use parentheses
in a mathematical expression.

The  QUERY_SET_SELECT  command places the current select expression in the input
line.  You may edit the  expression  with the editing keys (such as Insert char,
Delete char and the arrow keys).


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

^QUERY_ADD_SORT
QUERY_ADD_SORT function
                                     +<-------------------------+
                                     |                          ^
                                     v                          |
-->(QUERY_ADD_SORT)-->|query name|-->+-->|sort specification|-->+-->(END)-->

|sort specification|:

--+---------------+--->|attribute name|--->
  |               |
  +-->(REVERSE)-->+
  |               |
  +-->(NORMAL)--->+

Adds a list of sort  conditions  to the  specified  query.  The  REVERSE  option
causes  sorting in  descending  order for the  following  attribute  names.  The
NORMAL option restores sorting to ascending  order.  END terminates the command.

If you do not specify any sort  conditions,  by default the query  results  will
generally be sorted in ascending  order, based on the first  display  field that
you specify.  However,  for ELEMENTS and FILES  queries,  the results are always
grouped  first by class  name.  Other sort  conditions  only apply  within  each
class.  That means that CLASS is ignored as a sort  attribute  for  ELEMENTS and
FILES queries.

You may not sort STRUCTURES  queries by the STRUCTURE_DMS  field.  This field is
ignored as a sort condition.  You may not specify sort conditions for ATTRIBUTES
or RELATED_CLASSES queries.  The output order is specified by the system.

You may use the POST SORT  operation to sort or re-sort the query  results table
after the query has completed.


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

^QUERY_DELETE_SORT
QUERY_DELETE_SORT function

--->(QUERY_DELETE_SORT)--->|query name|-->+--->|sort attribute name|--->+--->
                                          |                             |
                                          +----------->(ALL)----------->+

Deletes one sort condition or all sort conditions from the specified query.  The
selected attributes are removed from the list.


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

^QUERY_MODIFY_SORT
QUERY_MODIFY_SORT function

--->(QUERY_MODIFY_SORT)--->|query name|--->+
                                           |
+<-----------------------------------------+
|
+--->|previous sort attribute name|--->|new sort value|--->

|sort value|:

--->+---------------->+--->|sort attribute name|--->
    |                 |
    +--->(REVERSE)--->+

Substitutes  one sort  condition for another in the sort condition  list for the
specified query.  You do not need to specify the sort direction (NORMAL/REVERSE)
for the previous sort condition.  For the new sort condition, you should specify
no direction to select NORMAL,  ascending sort, or REVERSE to select  descending
sort.


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

^QUERY_ADD_COLUMN
QUERY_ADD_COLUMN function

--->(QUERY_ADD_COLUMN)-->|query name|-->+-->|attribute name|-->+-->(END)-->
                                        |                      |
                                        +<---------------------+

Adds a list of display columns to the specified query.  You may enter any number
of attribute names to display, then use END to terminate the command.


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

^QUERY_DELETE_COLUMN
QUERY_DELETE_COLUMN function

--->(QUERY_DELETE_COLUMN)-->|query name|-->+-->|previous attribute name|-->+-->
                                           |                               |
                                           +------------>(ALL)------------>+

Deletes one display column or all display columns from the specified  query.  To
remove a single  attribute,  enter the previously  entered  display column name.
The attribute name is removed from the list.  The option ALL removes all display
columns.


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

^QUERY_MODIFY_COLUMN
QUERY_MODIFY_COLUMN function

--->(QUERY_MODIFY_COLUMN)--->|query name|--->+
                                             |
+<-------------------------------------------+
|
+--->|previous attribute name|--->|new attribute name|--->

Substitutes  one display  column for another in the display  column list for the
specified  query.  You first  enter the display  column that you want to change,
then you enter a new  attribute  name.  The new attribute  name replaces the old
attribute name in the list.


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

^QUERY_DESTINATION
QUERY_DESTINATION function

--->(QUERY_DESTINATION)--->|query name|--->+-->(DEFAULT_TABLE)----->+--->
                                           |                        |
			                   +-->(TABLE)------------->+
                                           |                        |
                                           +-->(USER_TABLE)-------->+
                                           |                        |
                                           +-->(SCREEN)------------>+
                                           |                        |
                                           +-->(FILE)-------------->+
                                           |                        |
                                           +-->(DEL_OLD)----------->+
                                           |                        |
                                           +-->(APPEND)------------>+
                                           |                        |
                                           +-->(PROMPT_LINE)------->+

Selects the type of output  destination for later query  execution.  Other named
query commands specify the actual file names and table names.

To direct output to the full HP-DMS  screen,  select  SCREEN.  The next time you
query the database, the results are displayed in the system screen editor.

To direct output to a new file, first select FILE, then use the  QUERY_FILE_NAME
command to enter the name of a new file.  The next time you query the  database,
the results are stored in the selected file.

To store output in a file that may already exist, first select DEL_OLD, then use
the  QUERY_FILE_NAME  command  to enter  the name of a file.  The next  time you
query the  database, the old copy of the file is deleted if it already  existed,
and the results are stored in the selected file.

To add output to a file that may already  exist, first  select  APPEND, then use
the  QUERY_FILE_NAME  command  to enter  the name of a file.  The next  time you
query the database, the results are added to the end of the selected file.

To  output  to  a  logical  table,  first  select   USER_TABLE,   then  use  the
QUERY_USER_TABLE_NAME  command to enter the name of an existing  logical  table.
The next time you query the  database,  the  results are output to the  selected
tables.  The  Display  Table name is  ignored.  The  results  are not  displayed
unless you explicitly connect a display table to the logical table.

To output to a  pre-formatted  display  table, first select  TABLE, then use the
QUERY_TABLE_NAME  command to enter the name of an existing  display  table.  You
should have  previously  specified the desired title strings,  borders,  colors,
column widths, etc.  You may optionally use the QUERY_USER_TABLE_NAME command to
enter  the name of an  existing  logical  table.  The next  time you  query  the
database, the results are displayed to the selected tables.

To restore the default  output  mode, select  DEFAULT_TABLE.  If you changed the
display table name, you may use the  QUERY_TABLE_NAME  command to enter the name
of the original  display  table.  If you changed the logical  table, you may use
the  QUERY_USER_TABLE_NAME  command  to enter the name of the  original  logical
table.  The next time you query the  database, the results are  displayed in the
selected tables with default title strings, borders, colors and column widths.

To direct  output to the HP-DMS prompt line, select  PROMPT_LINE.  The next time
you query the  database,  the results  are  displayed  one line at a time on the
prompt line.  After each line of output is displayed,  you must press any key to
continue to the next line.


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

^QUERY_FILE_NAME
QUERY_FILE_NAME function

--->(QUERY_FILE_NAME)--->|query name|--->|output file name|--->

Selects the name of the file to use for later query execution.  The file name is
used in  connection  with the FILE, DEL_OLD and APPEND query  destinations.  See
QUERY_DESTINATION for more information.


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

^QUERY_TABLE_NAME
QUERY_TABLE_NAME function

--->(QUERY_TABLE_NAME)--->|query name|--->|output display table name|--->

Selects  the name of the display  table to use for later  query  execution.  The
file  name is  used  in  connection  with  the  DEFAULT_TABLE  and  TABLE  query
destinations.  The   default   display   table   name   for   new   queries   is
'dms_qry_results_disp'.  See QUERY_DESTINATION for more information.


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

^QUERY_USER_TABLE_NAME
QUERY_USER_TABLE_NAME function

--->(QUERY_USER_TABLE_NAME)--->|query name|--->|output logical table name|--->

Selects  the name of the logical  table to use for later  query  execution.  The
file name is used in connection  with the  DEFAULT_TABLE,  TABLE and  USER_TABLE
query   destinations.  The  default  logical  table  name  for  new  queries  is
'dms_qry_results_tab'.  See QUERY_DESTINATION for more information.


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

^QUERY_SORT_TABLE_NAME
QUERY_SORT_TABLE_NAME function

--->(QUERY_SORT_TABLE_NAME)--->|query name|--->|sort logical table name|--->

This table is used by Classification queries to display sort conditions.


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

^QUERY_SELECT_TABLE_NAME
QUERY_SELECT_TABLE_NAME function

--->(QUERY_SELECT_TABLE_NAME)--->|query name|--->|select logical table name|--->

This table is used by Classification queries to display select conditions.


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

^REMOVE_USER MODIFY_USER
REMOVE_USER command

--->(REMOVE_USER)--|user_login|--(CONFIRM)

REMOVE_USER removes a user's access to HP-DMS entirely.

|user login| is the user's login name.

An HP-DMS privledge level of 1 is required to use this command.

While the commands are executing they keep a logical table "dms_su_table" filled
with up-to-date information about the users' privilege level.


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

^RENAME_ELEMENT CREATE_ELEMENT
RENAME_ELEMENT Command 

->(RENAME_ELEMENT)-+----------+->|element name|->|new element name|->(CONFIRM)
                   |          |
                   +->(COPY)->+


This command renames or copies an element, including ALL revisions and versions
of that element.

With the COPY option, all revs and vers of the element are copied to the new
element name.

Without the COPY option, all revs and vers of the element are renamed to the
new name.

The new element name must be unique and must not currently exist.

security:  A PRIV level of 3 or greater and WRITE permission is needed for 
           ALL revisions and version of the element


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

^STRUCTURE WHERE_USED QUERY CLASS RECURSIVE DEFAULT_TABLE TABLE Query_pick_6 Query_pick_7 Query_pick_8 Show_drawings_to_part Show_parts_structure Show_sons_to_element Query_pick_3 Query_pick_4 Query_pick_5
STRUCTURE function


--->(STRUCTURE)----+----+--------------------------------------------+
                   |    |                                            |
--->(WHERE_USED)---+    +->(RECURSIVE)------------------------------>+    
	                |                                            |
	                +->(RECURSIVE_TO)->|level number|----------->+   
							             |
							             v
+<-------------------------------------------------------------------+
|
+->{source element id}-----------------------------------------------+
|                                                                    |
+->(CLASS)->|source class name|-->{source element restrictions}----->+
							             |
							             v
+<-------------------------------------------------------------------+
|
+->{destination class selection}->{destination restrictions}->(CONFIRM)---+
							                  |
							                  v
+<------------------------------------------------------------------------+
|
|  +-----------------------+
|  v                       ^
+->+->|display attribute|->+->(CONFIRM)->{output options}-->





{element id}

-->|element name|--+-------------------------------------------------------+->
		   v							   |
		   +->(SEL_OLD)--+->|revision string|->|version number|-+->+
				 |					|
				 +->|revision string|------------------>+
				 |					|
				 +->|version number|------------------->+



STRUCTURE is a "top-down" query to display hierarchical structures.

For more information  about  selection,  restriction and output options, see the
QUERY function.

You may  specify  either a single  starting  element by name, or a selection  of
elements  from a source  class.  If you choose the top  element by name, you may
use the SEL_OLD  option to choose a  particular  revision  and  version.  If you
indicate a class  name, only the  structure  for the most  recent  revision  and
version are displayed.  One structure is displayed for each selected  element of
the source class.

Each  displayed  structure  consists  of the  starting  element  with all of its
related  elements.  If you  choose  the  RECURSIVE  option,  all  levels  of the
relation  hierarchy are displayed.  If you choose the  RECURSIVE_TO  option, you
may  indicate  the  maximum  number  of levels  you wish to see.  If you  choose
neither of these options, only one level of hierarchy is displayed.

The displayed  structure only includes the types of elements you select from the
destination classes.

If a middle level of the structure  includes an element that is not selected for
display,  elements  at lower  levels may still be  displayed,  if they match the
destination class specification.

You must specify the order of the attributes to be displayed for the elements of
the destination classes.

If you do not include the STRUCTURE_DMS attribute, the structure of each element
is  indicated by  indenting  the first  display  field one space per level.  For
example, if the top element in an  assembly  had two  subassemblies  and each of
those  subassemblies  had  three  sub-subassemblies,  the  first  display  field
(typically NAME) would be indented as follows:

  NAME
  =========
  Top
   SubA
    SubSubB
    SubSubC
    SubSubD
   SubE
    SubSubF
    SubSubG
    SubSubH

You may instead  choose the  STRUCTURE_DMS  attribute  to display the  structure
number of each element, relative to the top element of the structure.

The  structure  number for the top element of a structure is one.  The structure
number for any other element is the number of its parent, followed by a sequence
number,  beginning with one.  For example, if the top element in an assembly had
two subassemblies  and each of those  subassemblies had three  sub-subassemblies
(as above), the structure numbers would be:

  NAME          STRUCTURE_DMS
  ===========================
  Top           1
  SubA          1.1
  SubSubB       1.1.1
  SubSubC       1.1.2
  SubSubD       1.1.3
  SubE          1.2
  SubSubF       1.2.1
  SubSubG       1.2.2
  SubSubH       1.2.3

If a particular element is used more than once in a given part of the structure,
you may  display the number of  occurances  with the  QUANTITY_DMS  option.  For
example, if the wagon  assembly uses four wheels and the tricycle  assembly uses
three wheels, the output might include the following lines:


  NAME          QUANTITY_DMS
  ==========================
  Wagon         1
   Wheel        4
  Tricycle      1
   Wheel        3


Security:

  You  should  have  read  permissions  for all of the  source  and  destination
  elements  to be  displayed.  If you don't  have read  permission  for a source
  element, no structure is displayed  for that  element.  If you don't have read
  permission for a destination  element, it is not displayed, but other elements
  that it contains may be displayed.


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

^T-BLOCK 
^Sm_tb_menu_1 
^Sm_tb_menu_2
T-BLOCK menu

The T-BLOCK menu gives you access to the TITLE BLOCK functions of
HP-DMS.  These functions allow you to relate drawings title block
entries to entries in the database.

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

^UNRELEASE RELEASE
UNRELEASE Command 

->(UNRELEASE)--->-{elem sel}->


{elem sel}


-+->|element name|--------------------->+->
 |                                      |
 | +<--------------------+              |
 v v                     |              |
 +-+->(SELECT)--->|expr|-+-(SCREEN)---->+
			 |              |
			 +->(CONFIRM)-->+

|expr|

---->|att|-------+-------->+------>|value|------>
		 |         |
		 +->(=)--->+
		 |         |
		 +->(<>)-->+
		 |         |
		 +->(>)--->+
		 |         |
		 +->(<)--->+
		 |         |
		 +->(>=)-->+
		 |         |
		 +->(<=)-->+

In order for the user to unrelease an element they must either be privilege
1, or be privilege 2 and the owner or have special permissions.

The status of the selected elements and of all files related to them is 
changed to unreleased.  Unreleased elements and their related files may 
now be changed.

Constraints:

Only those elements may be unreleased, where:
   the class-definition includes the RELEASABLE option
   and the element must exist in the  database (not archived).

Elements  that  are not released will be ignored without complaint by
this command.

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

^WHERE_USED STRUCTURE QUERY CLASS RECURSIVE DEFAULT_TABLE TABLE Query_pick_3 Query_pick_4 Query_pick_5 Show_where_used_recursive Show_fathers_to_element Query_pick_6 Query_pick_7 Query_pick_8
WHERE_USED function


--->(WHERE_USED)->  (same as STRUCTURE command)


WHERE_USED is a "bottom-up" query to display hierarchical structures.

For more information  about  selection,  restriction and output options, see the
QUERY function.

You may  specify  either a single  starting  element by name, or a selection  of
elements from a source  class.  If you choose the starting  element by name, you
may use the SEL_OLD option to choose a particular  revision and version.  If you
indicate a class  name, only the  structure  for the most  recent  revision  and
version are displayed.  One structure is displayed for each selected  element of
the source class.

Each  displayed  structure  consists  of the  starting  element  with all of the
elements to which it is related.  If you choose the RECURSIVE option, all levels
of the relation hierarchy are displayed.  If you choose the RECURSIVE_TO option,
you may  indicate  the maximum  number of levels you wish to see.  If you choose
neither of these options, only one level of hierarchy is displayed.

The displayed  structure only includes the types of elements you select from the
destination classes.

If a middle level of the structure  includes an element that is not selected for
display,  elements at higher  levels may still be  displayed,  if they match the
destination class specification.

You must specify the order of the attributes to be displayed for the elements of
the destination classes.

If you do not include the STRUCTURE_DMS attribute, the structure of each element
is  indicated by  indenting  the first  display  field one space per level.  For
example, if the bottom element was used in two  subassemblies  and each of those
subassemblies  was used in three top-level  assemblies,  the first display field
(typically NAME) would be indented as follows:


  NAME
  =========
  Bottom
   SubA
    TopB
    TopC
    TopD
   SubE
    TopF
    TopG
    TopH


You may instead  choose the  STRUCTURE_DMS  attribute  to display the  structure
number of each element, relative to the bottom element of the structure.

The  structure  number  for the  bottom  element  of a  structure  is  one.  The
structure number for any other element is the number of its parent,  followed by
a sequence number, beginning with one.  For example, if the bottom element in an
assembly was used in two subassemblies and each of those  subassemblies was used
in three top-level assemblies (as above), the structure numbers would be:


  NAME          STRUCTURE_DMS
  =======================
  Bottom        1
  SubA          1.1
  TopB          1.1.1
  TopC          1.1.2
  TopD          1.1.3
  SubE          1.2
  TopF          1.2.1
  TopG          1.2.2
  TopH          1.2.3



If a particular element is used more than once in a given part of the structure,
you may  display the number of  occurances  with the  QUANTITY_DMS  option.  For
example, if the wagon  assembly uses four wheels and the tricycle  assembly uses
three wheels, the output might include the following lines:



  NAME          QUANTITY_DMS
  ==========================
  Wheel         1
   Wagon        4
   Tricycle     3


Security:

  You  should  have  read  permissions  for all of the  source  and  destination
  elements  to be  displayed.  If you don't  have read  permission  for a source
  element, no structure is displayed  for that  element.  If you don't have read
  permission for a destination  element, it is not displayed, but other elements
  that it contains may be displayed.

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

^QUERY_CAPABILITIES 
^Sm_data_management_query
QUERY_CAPABILITIES (concepts)

The HP-DMS query commands  provide easy access to many types of data stored in a
relational database.

HP-DMS helps you manage design data and manufacturing  documentation  throughout
the life of the  product,  which may include  several  revisions.  The  database
maintains information needed to generate part lists for ME10 and ME30 designs.

You may store detailed part  attributes, such as sizes, materials and cost.  You
may then create lists of items  matching  various  selection  criteria.  You may
display  tables  of  information  on the  screen or  output  it to a file or the
printer.

HP-DMS helps you  maintain a history of product  changes.  This  information  is
useful for  answering  questions  about  current and past  products:  structure,
designer,  date  of  creation,  released  by,  released  when,  archived  where,
revisions, versions, etc.

You can generate hierarchical  descriptions of products and their subassemblies.
You can cross reference subassemblies to find out where they are used.

You can keep your  documentation  consistent  by  maintaining  lists of  aspects
(cuts) files that are affected if the model changes.

The query  capabilities that HP-DMS offers are similar to the CATALOG  functions
available  within  ME10/ME30.  In particular,  the query commands allow the same
types of  pattern  matching  as the  CATALOG  command  for  selecting  groups of
objects.  This pattern matching uses special 'wildcard' characters.

The HP-DMS commands  provide easy access to the database for common  operations.
For certain  difficult  problems, you may bypass the common  commands and access
the data directly through the SQL query language.


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

^QUERY QUERY_AREAS QUERY_CLASSES QUERY_FILES SQL_QUERY STRUCTURE WHERE_USED PART SELECT DETAIL_INFO SORT REVERSE_SORT DEFAULT_TABLE TABLE NULL AND OR Sm_data_management_query Query_pick_1 Query_pick_2 Show_drawings Show_models Show_parts Show_elements_of_
QUERY function

--->(QUERY)--->{class selection}--->{attribute options}--->(CONFIRM)-+
								     |
	                                     +-----------------------+
	                                     |
	                                     +->{output options}--->




{class selection}

-->+----------+--+->|class name or pattern|---------------------------->+----->
   |          |  |                                                      |
   +->(PART)->+  +->(CLASS)->+->|class name or pattern|->+->(CONFIRM)-->+
			     ^                           v 
			     +<--------------------------+
								



{attribute options}

  +--------------------------------------+
  v                                      ^
--+---+->{display format}----------->+---+--->
      |                              |
      +->{restrictions}------------->+
      |                              |
      +->{sort order}--------------->+





{display format}

       +------------------------+
       v                        ^   
-->+-->+->|display attribute|-->+-->+->
   |                                | 
   +-->(DETAIL_INFO)--------------->+
			   
			      


{restrictions}

--+-----------------------------+->
  |                             |
  +->(SELECT)->+->{expression}->+
               ^                v
               +<---(AND)-------+
               |                |
               +<---(OR)--------+


{expression}

-->|attribute name|->+-------->+--->+->|string value or pattern|-->+----->
		     |         |    |                              |
		     +->(=)--->+    +->|numeric value|------------>+
		     |         |    |                              |
		     +->(<>)-->+    +->(NULL)--------------------->+
		     |         |
		     +->(>)--->+
		     |         |
		     +->(<)--->+
		     |         |
		     +->(>=)-->+
		     |         |
		     +->(<=)-->+




{sort order}

   +-----------------------------------------+
   v                                         ^
-->+---------------------------------------->+->
   |                                         |  
   +->(SORT)--------->+-->|sort attribute|-->+
   |                  |                   
   +->(REVERSE_SORT)->+                 



{output options}

+->+->(DEFAULT_TABLE)--------------------------------------------->+----->
   |                                                               |
   +->(SCREEN)---------------------------------------------------->+
   |                                                               |
   +->(PROMPT_LINE)----------------------------------------------->+
   |                                                               |
   +->{file specification}---------------------------------------->+
   |                                                               |
   +->(TABLE)------------------------+----+->|display table|------>+
   |                                 |    |                        |   
   +->(USER_TABLE)->|logical table|->+    +->(DEFAULT_TABLE)------>+
					  |                        |
					  +->(END)---------------->+



{file specification}

--+----------------+---|filename|--->
  |                |
  +-->(DEL_OLD)----+
  |                |
  +-->(APPEND)-----+




QUERY produces a listing of elements belonging to one or more classes. 

Sample output:


NAME                REVISION  VERSION CLASS   PLATING  CREATE_DATE
=================== ========= ======= ======= ======== =================
R07_JJ              A.00            3 Rivet   nickel   89/04/01 09:43:52
R19_JJ              A.00            3 Rivet   nickel   89/05/21 11:33:23
R19_K_3             A.00            3 Rivet   copper   89/04/11 01:43:32
R99_KK              A.00            1 Rivet   copper   89/08/20 01:05:42
R99_KK              B.00            1 Rivet   copper   89/09/05 05:33:04


By default, the query  function  looks only for the  element(s)  with the newest
revision and version.  If you want to see other  versions,  you may select based
on the attributes REVISION and VERSION.


  SECURITY  
  ========

If you do not have read permission for an element, it is not displayed.



  STRING PATTERNS AND SPECIAL (WILDCARD) CHARACTERS
  =================================================

You may specify  patterns for strings (for example,  class names,  element names
and attribute  names) with special  (wildcard)  characters, such as '*' and '?'.
The '*' character  matches any number of  characters.  The '?'  matches  exactly
one arbitrary character.  The following examples show various uses for patterns:



  strings that BEGIN with 'box'
    'box*'

  strings that END with 'box'
    '*box'

  strings that CONTAIN 'box'
    '*box*'

  strings that are five letters long, STARTING with 'box'.
    'box??'

  strings that are five letters long, ENDING with 'box'.
    '??box'



See the CATALOG command for additional patterns for matching strings.


  CLASS SELECTION 
  ===============

You may select one class name, a class name  pattern, or a list of class  names.
You may  choose the class  names  from the set of all  classes or  restrict  the
search to part  classes  only (using the PART  option).  You may enter a list of
class names, or patterns with special (wildcard) characters.


  DISPLAY FORMAT 
  ==============

To choose the  attributes  to display,  simply  enter the atribute  names in the
desired  order.  Normally, each query item is diplayed on one row of the screen,
or is stored in one record of the  selected  file or display  table.  Attributes
are arranged in columns,  with the  attribute  name as the column title  string.
You may display the same attribute in multiple output display columns.

If you specify the DETAIL_INFO  option, the normal format is not used.  Instead,
all  information  is listed for each item, one  attribute  per line.  If you use
this option, the output of your query may only be directed to the screen or to a
file.



  RESTRICTIONS 
  ============

You may specify combinations of attribute values to limit the selection of items
to be displayed.  For example, you could select all items with a desired  weight
and  diameter,  or all  items  created  on a certain  date.  You may use  string
patterns with either the '=' operator or the '<>' operator.

If you want to specify more than one search  condition ( either for  restricting
or for extending  the set of result  records ) you may combine them by using the
logical  operators  AND and OR.  AND  restricts  the set of result  records.  OR
extends the set of result records.

If you specify three or more search conditions combined by the operators AND and
OR, the first  two  conditions  are  combined  first,  then the  result  of that
combination is combined with the third, and so on.  That means that if you typed
search conditions and operators as follows:

   Search1 Op1 Search2 Op2 Search3 Op3 Search4

they would be grouped as:

   (((Search1 Op1 Search2) Op2 Search3) Op3 Search4)

For  example,  you are looking for all  drawings,  which are archived  and which
belong to "peter" or to "paul" then you must specify the  following  sequence of
search conditions:

    'OWNER' = 'peter' OR 'OWNER' = 'paul' AND  'ARCHIVE_DATE' <> NULL

If you would specify the same search conditions with the same logical  operators
but in the sequence

    'ARCHIVE_DATE' <> NULL AND 'OWNER' = 'paul' OR 'OWNER' = 'peter'

you would get all drawings  which belong to "paul" and which are  archived  plus
all ( not only the  archived  ) drawings  which  belong to  "peter".  The reason
therefore is that internally the first sequence is evaluated as

    (( 'OWNER' = 'peter' OR 'OWNER' = 'paul' ) AND 'ARCHIVE_DATE' <> NULL )

whereby the second sequence is evaluated as

    (( 'ARCHIVE_DATE' <> NULL AND 'OWNER' = 'paul' ) OR 'OWNER' = 'peter' )

The sequence of the  specified  search  conditions  is important  for the set of
result records.


Different classes may define the same attribute name to have different types and
precisions.  The system  allows you to enter  either a string or a number as the
selection  value  for  any  attribute.  There  is no  type  checking  as you are
entering  select  values.  However, the data type is checked for each class when
the query command is sent to the database.



  SORT ORDER 
  ==========

To sort the output in ascending  (increasing)  order, you enter the SORT option,
then  the  attribute  name.  To  sort  in  descending  order,  you  may  use the
REVERSE_SORT  option.  You can use either option more than once; the second sort
option  specifies  the  ordering of records  that are alike under the first sort
option, and so on.  The sort attributes do not need to be displayed.

If you do not specify  any sort  conditions,  the items are sorted in  ascending
order on the first displayed column.

When  multiple  classes are combined in one query  command, the output is always
grouped by class.  The sort conditions  that you specify are applied  separately
within each class.  You may not specify  sorting by class name  within the query
command.  However, you may use the SORT_LTAB  command to sort the results  table
by any  combination  of  attributes  (including  class name) after the query has
completed.


  OUTPUT OPTIONS 
  ==============

Query output may be sent to a table, the SCREEN, or to a file.  To use an output
file that already  exists, you must use DEL_OLD,  which deletes the old file, or
APPEND, which causes the new output to be written at the end of the old file.

If the output is sent to SCREEN, to a file or to the DEFAULT_TABLE the format of
the output ( the width of the  columns  and the column  headers ) are  specified
automatically depending on the whole width of the screen, on the table width and
on the width of the attributes that you selected for display.

The  normal  total  display  width for  output  to the  screen  or a file is 124
characters.  The total width for the default table depends on the arrangement of
the screen viewports (normally 80 characters).

To customize the table output format, you must first create a display table with
the desired size, position and labels.  Then when you use the query command, you
select the TABLE option and enter the name of the table.

Normally,  the data is  stored in the  'query_results'  logical  table.  You may
instead choose the  USER_TABLE  option to specify a different data storage area.
By default, user tables are not displayed on the screen.  If you want to display
the user table, you may also specify the  DEFAULT_TABLE  option or the name of a
display table.

If you instead  specify  the END  option, the output is stored in the user table
without  assigning  a display  table to it.  If you have  previously  assigned a
display  table for this user table  (with a previous  query  command or with the
TABLE_LAYOUT or CONNECT_TABLE  command), the output is displayed, but the column
layout and titles are not modified.  If no display table is assigned to the user
table, the output is not displayed.


  NUMBER OF RECORDS READ
  ======================

As records are  retrieved  from the  database,  you will see a running  count of
items  read.  The count may differ from the actual  number of result  lines, for
the following reasons:

  - You may not have access permission to view some elements.

  - Some of the  records  read  from  the  database  may not  match  the  select
    conditions or class restrictions.

  - Some records read from the  database may only  contain  null  fields.  These
    records are not displayed.

  - If multiple  structures  contain the same  substructure, the substructure is
    only read from the database  once, but is displayed on multiple lines of the
    output.

The query  commands  complete  without any error message if no entries match the
specification.  The default display table lists the number of entries found.


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

^QUERY_AREAS Show_areas
QUERY_AREAS function

--->(QUERY_AREAS)--->{attribute options}--->(CONFIRM)--->{output options}--->





QUERY_AREAS produces a listing of storage areas.

Sample output:


AREA_NAME            PATH                            CURRENT          
==================== =============================== ======= 
DMS_area             /users/admin/me10/storage             1 


See the QUERY function for more information about selection,  attribute
options and output.


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

^QUERY_CLASSES Show_classes Show_class_att
QUERY_CLASSES function


->(QUERY_CLASSES)->+->(ATTRIBUTES)--+-->{class selection}--+->{output options}
                   |                |                      |
                   |                +--+                   |
		   |                   |                   |
		   +->(RELATED_CLASS)->+                   |
		   |                                       |
		   +->{attribute options}-->(CONFIRM)----->+




QUERY_CLASSES performs several functions:

1) You can display class definitions,  including system defined and user
defined attributes.  Each definition includes the attribute type (string,
integer, decimal, or float).  For string attributes, the maximum length
is displayed.  For decimal attributes,  the scale and precision are 
displayed.  To access this function, pick the ATTRIBUTES option and enter
a set of classes.

   Sample output:

   Class        Attribute        Type     Length   Scale     Precision         
   ============ ================ ======== ======== ========= ========= 
   drawings     NAME             String        255                                     
   drawings     REVISION         String          8                                     
   drawings     VERSION          Integer                                                   
      .
      .
   drawings     BACKEDUP_LAST    String         18                                     


2) You can display parent/child relationships between classes.  To access 
   this function, pick the RELATED_CLASS option and enter a set of classes.

   Sample output:

   Parent_Class                      Child_Class                    
   ================================= =============================== 
   models                            drawings


3) You can produce a list of classes and their system defined attributes.
   With this command you can determine whether the elements of a given 
   class are releasable,  may have revisions and versions, and whether
   the class is a part class.  You may initiate this function by picking
   the  SELECT,  SORT, or REVERSE_SORT  attribute options or by entering
   the name of a class attribute to display.

   Sample output:

   CLASS_NAME            PART REVISIONING VERSIONING  RELEASABLE          
   ===================== ==== =========== =========== =========== 
   Rivets                   1           1           1           1 
   drawings                 0           1           1           1 
   models                   0           1           1           1 


See the QUERY function for more information about selection,  attribute
options and output.


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

^QUERY_FILES Query_files_file_to_ele_1 Query_files_all_1 Query_files_ele_to_file_1 Show_files_to_element Show_elements_reserved Query_pick_9 Query_pick_10 Query_pick_11 Query_pick_12
QUERY_FILES function


->(QUERY_FILES)->+--->{attribute options}--->(CONFIRM)--->{output options}-->
		 |                                               
		 +->(ELEMENTS_TO_FILES)->{elements_to_files}->+
		 |                                            |
		 +->(FILES_TO_ELEMENTS)->{files_to_elements}->+ 
							      |
		 +<-------------------------------------------+
		 |
		 |  +-----------------------+
		 |  v                       ^
		 +->+->|display attribute|->+->(CONFIRM)-->{output options}-->



{elements_to_files}

-->{file restrictions}--+
			|
            +-----------+
	    |
            +-->+->{class selection}-->{element restrictions}-+->(CONFIRM)-->
                |                                             |
                ^                                             v
                +---------------------------------------------+




{files_to_elements}

-->-+->{element id}--------------------------------------------------->+
    |                                                                  |
    +->(CLASS)->|class name|->{element restrictions}------------------>+
								       |
    +------------------------------------------------------------------+
    |
    +->(FILE)->{file restrictions}---->



{element id}

-->|element name|--+-------------------------------------------------------+->
		   v							   |
		   +->(SEL_OLD)--+->|revision string|->|version number|-+->+
				 |					|
				 +->|revision string|------------------>+
				 |					|
				 +->|version number|------------------->+



QUERY_FILES  produces a listing of files, a listing of files  belonging  to some
specified  elements  or a listing of  elements  to which  some  specified  files
belong.

The QUERY_FILES  command  include  three file query  modes:

  1) The simple mode  outputs all  selected  files,  regardless  of any  related
elements.

  2) The ELEMENTS_TO_FILES mode outputs all selected files.  Following each file
record, a record is output for each  related  element (if any) that  matches the
element select conditions.  The  ELEMENTS_TO_FILES  mode allows you to specify a
separate select condition for the starting files and for each destination  class
(or group of classes).  By default, the  function  displays  all  revisions  and
version of the elements.

  3) The  FILES_TO_ELEMENTS  mode outputs all selected elements.  Following each
element  record, a record is output for each related file (if any) that  matches
the file select conditions.  You may specify a separate select condition for the
starting class (or group of classes) and for the destination files.  By default,
the function  looks only for the source  elements  with the newest  revision and
version.  If you  want  to see  other  versions,  you may  select  based  on the
attributes REVISION and VERSION.


See the QUERY function for more information about selection,  attribute  options
and output.

Security:  Your permissions are only checked if you are using one of the options
FILES_TO_ELEMENTS or  ELEMENTS_TO_FILES.  You must have read permissions for the
elements to which the files are related.  Using  FILES_TO_ELEMENTS, you only see
the  files  related  to  elements  for  which you have read  permissions.  Using
ELEMENTS_TO_FILES,  you  only see the  elements  which  have  relations  to your
specified files and for which you have read permissions.


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

^RELATE FILE REMOVE
RELATE command

		     +<-(NEXT)<-------------------------------+
		     v					      ^
-->(RELATE)->{ele}---+->(FILE)->|file name|-------------------+->(CONFIRM)-->
		     |					      |
		     +->{element id}->+---------------------->+
				      |			      |
				      +->(FILE)->|file name|->+

{element id}

-->|element name|--+-------------------------------------------------------+->
		   v							   |
		   +->(SEL_OLD)--+->|revision string|->|version number|-+->+
				 |					|
				 +->|revision string|------------------>+
				 |					|
				 +->|version number|------------------->+

A  hierarchical  relationship  between the Top element and a variable  number of
other  elements  or files can be  created.  The first  given  element is the Top
element.  It is  checked  whether a  relation  between the top element and the 
given  elements  may be created (see also DEFINE_RELATION command).

There may be several relations between elements, which means, one element can be
a component of another  element more than once.  However,  there may be only one
relationship between an element and a file.

'Filename' in the railroad  diagram above refers to a file  currently  stored in
the  database in a storage  area.  It is the name of the file which was given at
the time it was checked in or db_stored.

All elements and files must exist in the database.

Note: The  relations  may only be  defined,  if the Top element is not marked as
      archived.

element options:

-- default:  The newest version and current  revision of the element is assumed.

--  SEL_OLD: If more than one  revision/version	 of an element	exist,	revision
	     string and/or version  number of the newest one is prompted and can
	     be overwritten or accepted.

security: WRITE permission for the Top element is needed.


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

^RELEASE SELECT DEL_VERSIONS
RELEASE command

->(RELEASE)-->+------------------+-(elem sel)->
	      v			 |
	      +->(DEL_VERSIONS)->+

{elem sel}

-+->|element name|--------------------->+->
 |                                      |
 | +<--------------------+              |
 v v                     |              |
 +-+->(SELECT)--->|expr|-+-(SCREEN)---->+
			 |              |
			 +->(CONFIRM)-->+

|expr|

---->|att|-------+-------->+------>|value|------>
		 |	   |
		 +->(=)--->+
		 |	   |
		 +->(<>)-->+
		 |	   |
		 +->(>)--->+
		 |	   |
		 +->(<)--->+
		 |	   |
		 +->(>=)-->+
		 |	   |
		 +->(<=)-->+

The status of the selected  elements and of all files related to them is changed
to released.  Released	elements and the related files may not be changed.  

If a file is related to different  elements, it is copied and the original 
belongs to the element,  which has just been released, and the copy is related 
to the other elements.

If the DEL_VERSIONS option is used, then all other versions of the revision of 
the element to be released are deleted.  The version number of the released
element will be forced to 1.

NOTE:  It is for this reason that relating a file to more than one element
       is NOT recommended.

Constraints:

Only those elements may be released where:

- the class definition includes the RELEASABLE option

- all related child elements, which can be released, have been released

- if  revisioning  is  allowed:	 the  revision string must not be NULL at
  release time

- if  revisioning  and	versioning  is allowed:	 only one  version of a specific
  revision may be released

- if versioning is allowed without  revisioning:  only one version of an element
  may be released

The element must exist in the  database.

For element selection, see the UPDATE_ELEMENT command.

security: SPECIAL permission is required to release the element


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

^REMOVE SELECT FILE LINKS
REMOVE command

-->(REMOVE)--+--->{element id}-------------------------------+->(CONFIRM)->
	     |                 				     |
	     |                      +----------------------->+
             |                      |                        |
             +->(FILE)->|file name|-+-{element id}---------->+
             |                                               |
             |                            +---------------+  |
	     v		                  |               |  |
	     +->(LINKS)--->{elem sel}--->-+-{element id}->+->+
	     |
	     +--->{select}------------------------------------------------>

{elem sel}

--+->{element id}--+-->
  |                |
  +->{select}------+

{element id}

-->|element name|--+-------------------------------------------------------+->
		   v							   |
		   +->(SEL_OLD)--+->|revision string|->|version number|-+->+
				 |					|
				 +->|revision string|------------------>+
				 |					|
				 +->|version number|------------------->+

{select}

   +<--------------------+
   v                     |
 --+->(SELECT)--->|expr|-+-(SCREEN)-------->+->
			 |                  |
			 +->(CONFIRM)------>+

{elem sel}

   +<--------------------+
   v                     |
 --+->(SELECT)--->|expr|-+-(SCREEN)-------------------------------------->+
			 |                                                |
			 +->(CONFIRM)------------------------------------>+

|expr|

---->|att|-------+-------->+------>|value|------>
		 |	   |
		 +->(=)--->+
		 |	   |
		 +->(<>)-->+
		 |	   |
		 +->(>)--->+
		 |	   |
		 +->(<)--->+
		 |	   |
		 +->(>=)-->+
		 |	   |
		 +->(<=)-->+


element options:

--  CURRENT: The most recent revision/verison of the element

--  SEL_OLD: If more than one revision/version of an element exists, revision
	     string and/or version number of the most current element is
	     prompted and may be overwritten or accepted.

Command to delete elements, files, or links to elements.

The elements and files must exist in the database.

Selection of elements: see UPDATE_ELEMENT command

Note: An  element  may only be deleted  if it's not a child of  another  element
      (related to another  element as the child of that  element)  because  this
      would  change  the  structure  of the  parent  element.  The LINKS to the
      parent must be removed first before the element itself can be removed.

-- LINKS: links to other elements can be deleted.  All elements that one element
	  is linked to are  displayed, and can be selected, so that the 
	  relationships to these elements are deleted.

-- FILE:  only  one  single  file can be  deleted at a time.  If the  file  
	  belongs  to an element, the element may to be specified in order to
	  help the user identify the file.

	  The following diagrams illustrate how the REMOVE FILE command works
	  in different scenarios:

	BEFORE

 -------------				  This is the current state of element-
|  myfile | 0 |				  to-file relationships to "myfile".
 -------------				  All AFTER scenarios begin with this
					  setup.
 -------------		 -------------
|  myfile | 1 |---------| myelement_a |
 -------------		 -------------

 -------------		 -------------
|  myfile | 3 |---------| myelement_b |
 -------------	   |	 -------------
		   |	 -------------
		   -----| myelement_c |
		   |	 -------------
		   |	 -------------
		   -----| myelement_d |
			 -------------

	If you do this:
	    REMOVE FILE 'myfile' 'myelement_c' CONFIRM

	AFTER

 -------------
|  myfile | 0 |
 -------------

 -------------		 -------------
|  myfile | 1 |---------| myelement_a |
 -------------		 -------------	  The effect of this command was to
					  remove the element-to-file link
 -------------		 -------------	  between 'myfile' and 'myelement_c'.
|  myfile | 2 |---------| myelement_b |   'myfile' was NOT removed because it
 -------------	   |	 -------------    is still related to 'myelement_b'
		   |	 -------------    and 'myelement_d'.
		   |    | myelement_c |
		   |	 -------------    Notice the file reference count on
		   |	 -------------    this last 'myfile' is now 2.
		   -----| myelement_d |
			 -------------

	If you do this:
	    REMOVE FILE 'myfile' 'myelement_a' CONFIRM

	AFTER

 -------------	
|  myfile | 0 |
 -------------		 -------------	  The effect of this command was to
			| myelement_a |	  remove the element-to-file link
			 -------------	  between 'myfile' and 'myelement_a'.
					  At this point the file reference
 -------------		 -------------	  count for the middle 'myfile' was 0,
|  myfile | 3 |---------| myelement_b |   so we also REMOVE 'myfile', as we
 -------------	   |	 -------------	  cannot have more than one 'myfile'
		   |	 -------------    with a file reference count of 0.
		   -----| myelement_c |
		   |	 -------------
		   |	 -------------
		   -----| myelement_d |
			 -------------

	If you do this:
	    REMOVE FILE 'myfile' CONFIRM

	AFTER

 -------------		 -------------    The effect of this command was to
|  myfile | 1 |---------| myelement_a |   remove the first 'myfile' which had
 -------------		 -------------    a file reference count of 0.

 -------------		 ------------- 
|  myfile | 3 |---------| myelement_b |
 -------------	   |	 -------------
		   |	 -------------
		   -----| myelement_c |
		   |	 -------------
		   |	 -------------
		   -----| myelement_d |
			 -------------

NOTE:  If a file has no related elements (file reference count of 0), then 
       simply specify the filename when performing an operation on it.
       If a file has an element related to it, you MUST specify both the
       filename AND the element name, revision, and version to uniquely
       identify the file you are referring to (refer to the above examples).

security:
SPECIAL  permission is needed to delete an element, and WRITE access
is needed to remove single files.  To delete  relations to other elements, WRITE
permission for the parent elements are needed.


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

^RESTORE ARCHIVE BACKUP RECURSIVE
RESTORE command

			 +---(NEXT)-----+
			 v	        ^
-->(RESTORE)->|source|->++>{element id}-+->+-+-------------+-+---------------+-+
			|	           | |	           | |               | |
			+----->(ALL)------>+ +->(DEL_OLD)->+ +->(RECURSIVE)->+ |
						                               |
+------------------------------------------------------------------------------+
|
+-+------------------------+->+------------+->(CONFIRM)--->
  |	                   |  |	           |
  +->(AREA)->|area name|-->+  +->(SCREEN)->+

{element id}

-->|element name|--+-------------------------------------------------------+->
		   v							   |
		   +->(SEL_OLD)--+->|revision string|->|version number|-+->+
				 |					|
				 +->|revision string|------------------>+
				 |					|
				 +->|version number|------------------->+

RESTORE  recovers of archived  elements and their related files from 'source' to
the  database.  'source'  is the  name of a  source  file  (device  file)  where
previously archived  information is held.  The 'source'  file/device for RESTORE
must be an absolute path (begin with a leading '/').

Immediately  after  specification of the source file, the archive is read, and a
list of all  elements  archived in 'source'  are shown in a table.  The user may
then select individual element names from the displayed table.

RESTORE  uses the contents of 'source' to update  elements in the  database  and
copies related files to the current  storage area.  If an element to be restored
doesn't  exist in the data base, a new  element  will be  created  with the same
attribute values as the restored one.

Options:

- default:   If an element to be restored doesn't exist in the data base and the
	     element's class is defined in the data base, the element is created
	     and its related  files are copied  into the  storage  area.  If the
	     selected element already exists in the data base and is the same as
	     that on the source, the files related to the restored  elements are
	     copied into the current  storage area and the element  archive date
	     and  archive  label are reset to NULL.  Other  user and the  system
	     defined attributes of an existing element are not updated.

- DEL_OLD:   If a selected  element  doesn't exist in the database it is created
	     and  the  corresponding  files  are  copied  into  the  current  or
	     specified  storage area.  If the selected element already exists in
	     the data base and is the same as that on the source  (archive  date
	     and archive  label are equal) the files  related to the element are
	     copied  into  the  storage  area.  The  values  of the user and the
	     system  defined  attributes of a restored  element are updated with
	     the values on the source.  If the option  RECURSIVE  is also given,
	     the  element's  relationships  are also  updated  from the archive.

	     If DEL_OLD is specified,  existing  elements are  overwritten  from
	     'source'.  Unless the option  RECURSIVE is used,  relationships  to
	     other elements remain unchanged.

- AREA:      The user can specify where related files are to be stored.  Default
	     is the current storage area.

- RECURSIVE: If none of the  elements  which should be restored  from source has
	     been  archived  with  option  RECURSIVE  then  the  option  has  no
	     additional  effect.  Otherwise,  if at least one  element on source
	     has  been  archived  with  option  RECURSIVE  each of the  selected
	     elements and recursively all elements related to them are restored.
	     The relationships between restored elements which are newly created
	     in the data base are built up  corresponding  to the  relationships
	     stored on source.  Relationships of restored elements which already
	     exist in the data base are only  replaced  in the data  base by the
	     new ones if additionally option DEL_OLD has been specified.

The SCREEN  option  enters the  built-in  editor (see  EDITOR) and allows you to
verify the list of  selected  elements;  any changes in the screen are  ignored.
With an unsuccessful exit (STOP/BREAK) from the editor nothing is restored.  For
each element, it is shown if it already  exists in the database or not and which
elements are linked to this element on the archive medium.

Element-selection:

-- default:  The newest version and current revision of the element is assumed.

--  SEL_OLD: If more than one  revision/version  of an element  exist,  revision
	     string and/or version  number of the newest one is prompted and can
	     be overwritten or accepted.

If the command can't be completely executed, nothing is changed in the database.

Only one user may do an ARCHIVE or a RESTORE at a time.  If  another  archive or
restore is already active, no other ARCHIVE or RESTORE  commands will be allowed
until the running RESTORE completes.

RESTORE reads its input in the "cpio -c" format.  If the source file is a device
file you have to specify the raw device file name (e.g.	 /dev/rct/c1).

security:
To restore  an element  which  does not exist in the  database,  the user  must
have privilege-3 status.  To restore an element  which  already  exists in the 
database the user needs WRITE-permission for the element.


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

^RETAIN_RELATIONSHIP RELATE
RETAIN_RELATIONSHIP command

(RETAIN_RELATIONSHIP)-+---------+->(old element id)-->(new element id)--+
                      |         |                                       |
		      +->(COPY)-+     +---------------------------------+
				      |
				      +-----+->(parent)-+-> CONFIRM --->
                                            |           |
                                            +->(child)--+

{element id}

-->|element name|--+-------------------------------------------------------+->
		   v							   |
		   +->(SEL_OLD)--+->|revision string|->|version number|-+->+
				 |					|
				 +->|revision string|------------------>+
				 |					|
				 +->|version number|------------------->+

 {parent}
 --> PARENT --+--------------------> ALL ------------------->+---->
              |                                              |
              | +-<---------------------------------------+  |
              | |                                         |  |
              +-+-->(parent element id)-+->|quantity|->+->+->+
                                        |              |
                                        +---> ALL ---->+

 {child}
 --> CHILD ---+------------------> ALL -------------------->+---->
              |                                             |
              | +-<--------------------------------------+  |
              | |                                        |  |
              +-+-->(child element id)-+->|quantity|->+->+->+
                                       |              |
                                       +---> ALL ---->+


Move  or  copy  some  or  all of the  PARENT  and/or  CHILD
relationships from the source element to the destination element.

SEL_OLD is used to select an older  version of the  element.  The default is the
most current version.

ALL is used to  specify  all of the  parents  or  children  related  to the  old
element.

Permissions for retaining relationships are the same as relating elements.

Quantity  can be any  positive  number.  If  the  COPY  option  was not chosen,
quantity relationship links will be removed from the source element and moved to
the  destination  element.  The value of quantity is considered the total number
of links that the destination  element should have to the parent/child  element
after the operation.
If the  destination  element  already  had a link or links to the  parent/child,
these  links are  ignored.  If  quantity  is  greater  than the  number of links
currently  linked to the source  element,  the  result  will be that the  source
element  now has  zero  links.  The  destination  element  will,  however,  have
"quantity" links.

If the COPY option was chosen, the source element will remain  unchanged and the
destination element will have a total of quantity relationship links.

Logical  tables are used to display all the  parents or  children  of the source
element.  The  logical  table can be  modified  as many times as the user  would
like.  Only until the user has specified CONFIRM will any changes be made in the
database.

If there is an unexpected system failure, all changes for the current  execution
of the RETAIN_RELATIONSHIP command will NOT be made.

security:
Write access for the parent element, source element, and destination element
is needed depending on a move or copy operation.


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

^UNRESERVE DB_LOAD CHECKOUT
UNRESERVE command

-->(UNRESERVE)---+->(FILE)->|file name|-------------------+->(CONFIRM)-->
		 |					  |
		 +->{element id}->+---------------------->+
				  |			  |
				  +->(FILE)->|file name|->+

{element id}

-->|element name|--+-------------------------------------------------------+->
		   v							   |
		   +->(SEL_OLD)--+->|revision string|->|version number|-+->+
				 |					|
				 +->|revision string|------------------>+
				 |					|
				 +->|version number|------------------->+

Command to unreserve  single files or all files which belong to an element and
which have been reserved by a former DB_LOAD or CHECKOUT with option RESERVE 
and which should be marked as unreserved in the database without a further
change.


security: to use this command you must be a privilege-1  user or you must be the
	  person who has reserved the file and has additionally write permission
	  for the element to which the file is related.


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

^UPDATE_ELEMENT INFOS OWNER GROUP PERMISSIONS REVISION NULL SELECT PROMPT
UPDATE_ELEMENT command

-->(UPDATE_ELEMENT)--+->(INFOS)------->{elem sel}->+-{attribute list}---->
		     |				   |
		     |				   +--------------------->
		     |
		     +->(OWNER)------->{elem sel}->|owner name|---------->
		     |
		     +->(GROUP)------->{elem_sel}->|group name|---------->
		     |
		     +->(PERMISSIONS)->{elem_sel}->|permission mask|----->
		     |
		     +->(REVISION)---->{elem_sel}->|revision string|->--->

{elem sel}

--+-{element id}-+->
  v              |
  +--{ select }--+

{element id}

-->|element name|--+-------------------------------------------------------+->
		   v							   |
		   +->(SEL_OLD)--+->|revision string|->|version number|-+->+
				 |					|
				 +->|revision string|------------------>+
				 |					|
				 +->|version number|------------------->+

{select}
   +<--------------------+
   v                     |
 --+->(SELECT)--->|expr|-+-(SCREEN)-------->+->
			 |                  |
			 +->(CONFIRM)------>+

|expr|

---->|att|-------+-------->+------>|value|------>
		 |	   |
		 +->(=)--->+
		 |	   |
		 +->(<>)-->+
		 |	   |
		 +->(>)--->+
		 |	   |
		 +->(<)--->+
		 |	   |
		 +->(>=)-->+
		 |	   |
		 +->(<=)-->+

{attribute list}

 +<---------------------------------------+
 v					  |
 +->|attribute name|-+->|attribute value|-+
 |		     |			  ^
 |		     +->(NULL)----------->+
 v					  |
-+----------------------------------------+-->(CONFIRM)->
 |
 |
 |
 |	     +<-------------------+
 |	     v			  |
 +->(PROMPT)-+->|attribute value|-+------------------->
	     |			  |
	     +->(NULL)----------->+

element options:

--  CURRENT: The most recent revision/verison of the element

--  SEL_OLD: If more than one revision/version of an element exists, revision
	     string and/or version number of the most current element is
	     prompted and may be overwritten or accepted.

Command  to  update  the  values  of  the  user  defined  attributes  and  some
system-defined attributes on each of the selected elements

options:

-- REVISION:   The  revision string  can be set to a new one if revisioning  for
	       this  element  is  allowed.  SPECIAL  access for the  element  is
	       required.

-- OWNER:      The owner can be changed. WRITE access is needed and the new
	       owner MUST be in the MEDMGR.SU table.

-- GROUP:      The group can be changed. WRITE access is needed and the new
	       group must be a valid HP-UX group (see /etc/groups).

-- PERMISSIONS:The  permission - mask can be changed.  SPECIAL access is needed
	       if NOT the owner of the element.  If a PRIV 3 user and the owner
	       of the element, the permission string can be set to any
	       combination of 'w', 'r', and '-', but not 's'.  A PRIV 2 owner
	       can set the permission string to be any combination of 's', 'w'
	       'r', or '-'.

-- INFOS:      The attribute values of the element may be updated.  The user can
	       select only specific attributes by picking the names in the table
	       or by entering the attribute names manually.  If the PROMPT-mode
	       is  selected,  the user is asked to enter an attribute value  for
	       each attribute.	The option NULL resets the attribute  value.  No
	       attributes can be set, if there are no attributes defined for the
	       corresponding class of the element.  WRITE access is needed.

Element selection:

An easy selection can be done by typing only the name.	The newest  revision and
version of this element is selected.

With SELECT, you can specify a set of elements	which should be	 considered.  If
you want to do an update on more than one element the update is done for each of
the selected elements separately
- if the  attribute  values  should be updated (option INFOS)
- if the revision should be changed (option  REVISION).
In all the other cases (OWNER,	GROUP,	PERMISSIONS)  the update is done for ALL
selected elements.

The selection is done by giving an attribute  name, then saying what values that
attribute will match.

For example,

	SELECT 'Class' 'parts'

selects all  elements of class	'parts'.  The  attribute  name must be a string.
The value is a string, except for the attributes VERSION and TOTAL where it is a
number.	 For the items that are dates (CREATE_DATE, ARCHIVE_DATE, RELEASE_DATE),
the value is expected in the form 'YY/Mmm/DD hh:mm:ss'.

All values can contain wildcards; thus

	SELECT 'NAME' 'A*'

selects	 the  elements	whose  names  begin  with  'A' .

SELECT also allows a  relational  operator  between the	 attribute  name and the
value.	Thus

	SELECT 'CREATE_DATE' < '85/01/01'

selects the elements not created in 1985 or later, and

	SELECT 'VERSION' > 3

selects elements with version numbers  larger than 3.  The operators can also be
used with names; here '<' means 'earlier in an alphabetical ordering', etc.

NOTE: If wildcards  are used in strings, only the operators ' = ' and ' <> ' are
      allowed.

You can use SELECT more than once.  The	 resulting  elements  satisfy all of the
selection criteria.

The attributes you can select on are strings, and must be one of the  following:

		NAME
		REVISION
		VERSION
		CREATE_DATE
		CLASS
		ARCHIVED_DATE
		ARCHIVE_LABEL
		RELEASE_DATE
		RELEASED_BY
		OWNER
		GROUP
		TOTAL

The option  'SCREEN'  enters the built-in  editor (see EDITOR) and allows you to
verify the list of  selected  elements;	 any changes in the screen are	ignored.
With an	 unsuccessful  exit  (STOP/BREAK)  from	 the  editor  you do not  update
anything.

security: see for each option separately


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

^UPDATE_STATISTICS
UPDATE_STATISTICS command

-->(UPDATE_STATISTICS)---->

This command will update  ALLBASE  system  tables with  statistical  information
about the other  tables  in the  database.  This  command  should be used  after
adding indexed attributes to classes with the DEFINE_CLASS or ADD_ATTRIBUTE  
commands.  It should also be used when you want to determine how much space is 
left in each table.

NOTE:  This command is not applicable for ORACLE and will do nothing if chosen
while connected to an ORACLE database.


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

^SQL_QUERY DETAIL_INFO Show_history_of_element Show_defaults
SQL_QUERY function


-->(SQL_QUERY)-+-------------------+->|sql_string|-->{output options}-->
	       |                   |
               +-->(DETAIL_INFO)-->+




With this  command,  you may  execute any SQL query  which is  supported  by the
underlying  database.  (See the  description  of the SELECT  command  in the SQL
Reference manual of your database).

For more  information  about output options and the DETAIL_INFO  option, see the
QUERY function.


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

^TABLE_LAYOUT
TABLE_LAYOUT command

-(TABLE_LAYOUT)-|TABLE_NAME|-+
			     |
     +-----------------------+
     |
     |
     |	 +------------------------<------------------------+
     |	 |			                           |
     ----+-|DISP COLOR|------------------------------------+->{layout}->
	 |					           |
	 +-|BACKG COLOR|-----------------------------------+
	 |					           |
	 +-(WIDTH)------|WIDTH_VAL|------------------------+
	 |					           |
	 +-(HEIGHT)------|HEIGHT_VAL|----------------------+
	 |					           |
	 +-(ROWS)------|ROW_VAL|---------------------------+
	 |					           |
	 +-(FRAME_WIDTH)------|FRAME_WIDTH_VAL|------------+
	 |					           |
	 |		       +------<------+	           |
	 |		       |	     |	           |
	 +-(HORIZONTAL)----+-(OFF)-------+-----------------+
	 |		       |	     |	           |
	 |		       +-|LINE COLOR|+	           |
	 |		       |	     |	           |
	 |		       +-|LINE TYPE|-+	           |
	 |		       |	     |	           |
	 |		       +-------------+	           |
	 |					           |
	 |               +------<------+	           |
	 |	         |             |	           |
	 +-(VERTICAL)----+-(OFF)-------+-------------------+
	 |               |             |	           |
	 |	         +-|LINE COLOR|+	           |
	 |	         |             |	           |
	 |	         +-|LINE TYPE|-+	           |
	 |	         |             |	           |
	 |	         +-------------+	           |
	 |					           |
	 |		   +------<-------+	           |
	 |		   |	          |	           |
	 +-(SCROLL_BAR)----+-|DISP COLOR|-+--+-|WIDTH_VAL|-+
	 |                 |	          |  |             |
	 |                 +-|BACKG COLOR|+  +-------------+
	 |	           |	          |                |
	 |	           +--------------+	           |
	 |					           |
	 +-|POINT1|----+-|POINT2|-+------------------------+
	 |	       |          |		           |
	 |	       +----------+		           |
	 |					           |
	 +-|LOGICAL_TABLE_NAME|----------------------------+
	 |					           |
	 +-------------------->----------------------------+

{layout}

	   +------------------------------<----------------------------+
	   |							       |
	   |		       +---------------<---------------+       |
	   |		       |			       |       |
->---------+-(TITLE_LAYOUT)----+-|HEIGHT_VAL|-+--|LAYOUT_STR|--+--(END)+-(END)->
	   |		       |	      |		       |       |
	   |		       +--------------+		       |       |
	   |		       |			       |       |
	   |		       +-------------------------------+       |
	   |							       |
	   +-(COLUMN_LAYOUT)----+-|HEIGHT_VAL|+-----|LAYOUT_STR|-------+
	   |			|	      |			       |
	   |			+-------------+			       |
	   |							       |
	   +-----------------------------------------------------------+

This command allows you to create a new table with given shape and location.

Note:

- An existing  unsecured table with the given name will be replaced.  However, a
  secured table can not be overwritten by this command.

- Table width,	given in  characters,  can be  fractional.  It should be greater
  than a certain  minimum  width.  If not specified,  minimum width will be used
  for fitting the table.

- Table height, given in  characters,  can be  fractional.  It should be greater
  than a certain minimum height.  If not specified,  minimum height will be used
  for fitting the table.

- Rows is useful  only	when  width and	 height of the table are not  explicitly
  given.  Table will be created with a certain number of data rows, which can be
  fractional.

- Table can have a frame width of 0 or 1 or 2.

- Point1 is the lower left corner of the table.	 If not given, lower left corner
  of screen is used.

- Point2 is the second corner of the table.

- Logical  table  is the name of the  logical  table  for  this	 display  table.
  Default logical table name is the same as display table name.

- If data row height is not specified, default character height will be used.

- Layout  string  gives the number of slots for title or data column.  Slots are
  separated  with bars(|).  Number of  characters  within each slot indicate the
  width of the slot.

			EXAMPLE

			    TABLE_LAYOUT   'newTab'
					   100,100  400,400
					   TITLE_LAYOUT
						'    |	    |	  '
					    30	'	|	  '
					   END
					   COLUMN_LAYOUT
						'    |	    |	  '
			    END

- This defines a table with lower left corner and upper right corner points.

- Table has two title  rows,  first row has three and second  row has two slots.
  Height of second row is 30 pixels.

- There are three data columns.

			    TABLE_LAYOUT   'newTab'
					   100,100  width 30.0 height 28.5
					   TITLE_LAYOUT
						'    |	    |	  '
					    30	'	|	  '
					   END
					   COLUMN_LAYOUT
						'    |	    |	  '
			    END

- Same	table  is  defined  with a width of 30	characters  and	 height	 of 28.5
  characters.

			    TABLE_LAYOUT   'newTab'
					   RED GREEN
					   SCROLL_BAR  BLUE WHITE 10
					   HORIZONTAL  GREEN DASHED
					   VERTICAL    OFF
					   ROWS	    20.2
					   SCROLL BAR
					   TITLE_LAYOUT
						'    |	    |	  '
					    30	'	|	  '
					   END
					   COLUMN_LAYOUT
						'    |	    |	  '
			    END

-  Same	 table has 20.2 data  rows.  Any  fractional  row space is padded to the
   last row.


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

^SHOW_TABLE
SHOW_TABLE function

 --(SHOW_TABLE)----+-(ON)-+->+->|table_id|-+->
		   |	  |  |		   |
		   +-(OFF)+  +-->(ALL)---->+

This function is used to display or erase an existing table.


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

^DELETE_TABLE
DELETE_TABLE command

 --(DELETE_TABLE)-+-|table_id|-+----(CONFIRM)-
		  |	       |
		  +-->(ALL)--->+

This command  allows you to delete an existing	unsecured  table.  Tables can be
secured by the user or by the program.


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

^CHANGE_TABLE_SIZE CHANGE_TABLE_SIZE

 --(CHANGE_TABLE_SIZE)-|table_id|-----|POINT1|------|POINT2|-

This  function	allows you to change the size of existing  tables  which are not
secured against size change internally by the program.

Note:  - Width and height should be greater than certain minimum  dimensions for
	 every table.


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

^MOVE_TABLE
MOVE_TABLE function

			     +----------<----------+
			     |			   |
 --(MOVE_TABLE)-|table_id|---+-|POINT|------|POINT|+-----(END)-
			     |			   |
			     +-(UPPER)+---+-(OF)+--+
			     |	      |	  |	|  |
			     +-(LOWER)+	  +-----+  |
			     |	      |		   |
			     +-(RIGHT)+		   |
			     |	      |		   |
			     +-(LEFT)-+		   |
			     |			   |
			     +---------------------+

This function allows you to move an existing table to a specific location on the
screen.

Only those tables not secured by the program against move can be relocated.

Note:

- Table move options get added until END is input.

- Two points are the reference and destination move points.

- Upper will move the table to the top of the screen or top of other table.

- Lower	 will move the table to the  bottom of the  screen  or	bottom	of other
  table.

- Right will move the table to the right of the screen or right of other table.

- Left will move the table to the left of the screen or left of other table.


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

^TABLE_TITLE
TABLE_TITLE function

-(TABLE_TITLE)-|table_id|-+
			  |
   +----------------------+
   |   +--------------------------------------<------------------------+
   |   |        						       |
   +---+---|DISP COLOR|------------------------------------------------+>(END)->
       |							       |
       +-|BACKG COLOR|-------------------------------------------------+
       |							       |
       +-|DISPLAYTEXT|-+-|ACTIONTEXT|+-+-(BOX)-|ROW|-|COL|-|ROW|-|COL|-+
       |		  |		| |			       |
       |		  +-------------+ +-|ROW|-|COL|--------------->+
       |				|			       |
       +--------------------------------+			       |
       |							       |
       +----------------------------->---------------------------------+

This  function	allows you to set the  attributes  of title slots of an existing
table which is not secured by the program for changes in title.

Note:

- Backg-color is the color of title slot, disp color is the color of the display
  text.

- Display  text is any	valid  text  string.  Special  meaning	is  attached  to
  characters @s# appearing in the display string.  These will be replaced by the
  extra string with given number from logical table.

     Ex. If  display  text is 'Units = @s3' and	 logical  table's  extra  string
	 number 3 is  'Meters'	then the  actual  display  text will be 'Units =
	 meters'.

- Action  text is the  command	text  emitted  when  slot is  picked.  Syntax is
  similar to display text.

- Box can be used to set  attributes of multiple slots in one pass.  Row and col
  are the title cell row and column.

		EXAMPLE

		    TABLE_TITLE	  'newTab'
			RED GREEN  'LINE' 'LINE_CMD'  2 3
		    END

- Example defines slot in 2 row and 3 column to have a green  background and red
  text color.  Display text is 'LINE' whereas action text is 'LINE_CMD'.

	   TABLE_TITLE	'newTab'
		GREEN WHITE 'UNITS' '@s1' BOX 1 1 4 3
	   END

- Example  defines  slots  from	 row  1 to 4 in	 columns  1 to 3 to  have  white
  background,  green  text,  'UNITS'  display  text and '@s1' to be  replaced by
  logical table's extra string 1 action text.


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

^TABLE_COLUMN
TABLE_COLUMN function

 --(TABLE_COLUMN)-|table_id|-+
                             |
             +---------------+ 
             |
             |   +-------------------<------------------+
             |   |				        |
             |   |		     +---------<--------+
             |   |                   |		        |
             +---+-(COLUMN)-|COLNUM|-+-|DISP COLOR|-----+--(END)->
		 |			                |
		 +-|BACKG COLOR|------------------------+
		 |			                |
		 +-(FORMAT)-+-|FORMATPRECISION|---------+
		 |	    |		                |
		 |	    +--|FORMATSTRING|-----------+
		 |			                |
		 +-(CENTER)-----------------------------+
		 |			                |
		 +-(LEFT)-------------------------------+
		 |			                |
		 +-(RIGHT)------------------------------+
		 |			                |
		 +-|ACTIONTEXT|-------------------------+
		 |			                |
		 +-|LOGICAL TABLE COLUMN|---------------+

TABLE_COLUMN  sets the	attributes  of the cells in data  columns of an existing
unsecured table.  Trying to change a secured table will give an error.

Note:

- Column number is the display table column number for attribute setting.

- Disp-Color is the text display  color,  Backg-Color  is the column  background
  color.

- Format precision gives the number of significant  figures to use in displaying
  table data.  Default format precision is half width of the column.

- Format string gives the format of output  floating  point numbers for optional
  leading sign, optional leading zero suppression, number of digits to the right
  of the decimal, radix point character, and optional trailing zero suppression.

  The string must contain either a '.'  or a ',',  signifying a decimal point or
  decimal  comma.  If there are no digits to the left of the  point or comma, or
  value is equal 0, left zero  suppression is selected.  Right zero  suppression
  will be  selected,  if the last digit after the point or comma is not equal to
  '0' or no digit is  present.  The  number of digits  after the  point or comma
  gives the decimal place.

  Examples:

     -- '1,'  means  decimal  comma,  left  zero  suppression  off,  right  zero
	 suppression on.

     --  '.2'  means  decimal  point,  left  zero  suppression  on,  right  zero
	 suppression off.

     -- '1.2'  means  decimal  point,  left zero  suppression  off,  right  zero
	 suppression off.

     -- '1.1230'  means  decimal  point, left zero  suppression  off, right zero
	 suppression on.  Decimal place 4.

     -- '+1.1231'  means decimal  point, left zero  suppression  off, right zero
	 suppression off.  Decimal place 4, signed.

- Center adjusts the display data centered in the column.

- Left displays data left justified in the column.

- Right displays data right justified in the column.

- Action text is any valid text string	emitted	 when a cell in this data column
  is picked.  Special  meaning is attached to  characters  @s#	appearing in the
  action  string.  These will be replaced by the extra string with given  number
  from logical table.

  Ex. If action text is 'Units = @s3' and logical  table's extra string number 3
      is 'Meters' then the actual action text will be 'Units = meters'.

  Special meaning is also attached to @v# characters in action string.	They are
  replaced by data in the  logical  table  column  whose  number is given by the
  characters but in same logical table row as the cell picked.

  Ex. If action text is 'Units = @v3' and logical  table's data in column 3 same
      row as picked cell is SI then actual text will be 'Units = SI'.

- Logical  table  column is the column	number to be shown on the display  table
  column.

	      EXAMPLE

		    TABLE_COLUMN   'newTab'
			COLUMN 1
			RED GREEN
			3
			'LINE'
			LEFT
			FORMAT 2
		    END

- Example  defines all cells in display	 column 1 to have red text color,  green
  background  color,  display  column 3 from logical table, use 'LINE' as action
  text, adjust data left  justified in column with 2 decimal  digits if the data
  is a floating point number.

	 TABLE_COLUMN	'newTab'
			COLUMN 2
			'LINE @s1 @v2'
	 END

- Example  defines  action text to be 'LINE @s4 @v2'.  If logical  tables  extra
  string 4 is  'TWO_PNT'  and data in column 2 of logical  table is 33.33,  then
  action text will be 'LINE TWO_PNT 33.33'.


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

^CONNECT_TABLE
CONNECT_TABLE function

 --(CONNECT_TABLE)-->|table_id|----|LOGTABLENAME|->

This function allows you to connect a display table to a logical table.


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

^SAVE_TABLE
SAVE_TABLE function

 --(SAVE_TABLE)-+->|table_id|-+->
		|	      |
		+-->(ALL)---->+

This  function	allows	you to save a display  table  set up in a file.	 Display
table can be recreated just by using 'input' command on file.


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

^PRINT_TABLE
PRINT_TABLE function

 --(PRINT_TABLE)-+->|table_id|-+->
		 |	       |
		 +-->(ALL)---->+

This function allows you to print a display table in a file.


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

^TABLE_SCROLL_STEP
TABLE_SCROLL_STEP function

 --(TABLE_SCROLL_STEP)--+->|table_id|-+--+-(DEFAULT)+
			|	      |	 |	    |
			+-->(ALL)---->+	 +-|NUM|----+

This function  allows you to set the scroll step of a display  table while using
the scroll bar gadget boxes.

Note:

- Default  will set the scroll step to be the number of data rows in the display
  table.

- Negative  number will make table  scroll in opposite	direction  from the same
  gadget box.


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

^SECURE_TABLE
SECURE_TABLE function

 --(SECURE_TABLE)-+->|tablename|-+-----(CONFIRM)-
		  |		 |
		  +-->(ALL)----->+

This  function	allows you to secure a display	table  against	deletion.  After
securing, table can never be deleted or redefined.


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

^LTAB  COLOR_LTAB CREATE_LTAB  DELETE_LTAB DELETE_LTAB_ROW
^LTAB  HIGHLIGHT_LTAB  LTAB_COLUMNS  LTAB_ROWS  LTAB_TITLES       
^LTAB  POP_DOWN_LTAB   POP_UP_LTAB   READ_LTAB  SAVE_LTAB      
^LTAB  SCROLL_LTAB     SECURE_LTAB   SELECT_FROM_LTAB  
^LTAB  WRITE_LTAB      SORT_LTAB

CREATE_LTAB  creates new user  tables.  Other  commands  produce an error if the
table is not  created  first.  Data  stored in user  tables can be  accessed  by
logical table access functions.

During  functions  which modify the table, such as WRITE_LTAB, the table will be
temporarily locked against deletion.  This prevents the table from being deleted
while the command is operating on it.

A read-only user table named  "sys_user_tables"  exists which contains the names
of all user tables in column 1.


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

^CREATE_LTAB
CREATE_LTAB function

--->(CREATE_LTAB)---+----------+--+-------------+---|name|-->
                    |          |  |             |
                    +--|rows|--+  +--|columns|--+

Creates a new logical table.  If the table already exists, no error is given and
the command is ignored.

The user should  provide an  estimate  of the number of rows and  columns in the
table if possible.  These optional  parameters  serve as a hint to the system to
make the table  perform as  efficiently  as  possible.  However, if more rows or
columns are needed, the table will  automatically  re-size, with an  appropriate
performance penalty during the resize operation.

Executing  this command on a user table which already exists is effectively  the
same as  deleting  all data in the table.  An error will be generate if table is
secured against writing (SECURE_LTAB  READONLY).  When the table exists, the row
and column hints may be used to readjust the existing table to the new size.


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

^DELETE_LTAB
DELETE_LTAB function

--->(DELETE_LTAB) --+---|name|----+->
                    |             |
                    +---(ALL)-----+

Deletes  the user  table  named.  If the table is secured  or  currently  locked
during use, an error will be generated.

ALL will delete all user tables except those locked for use or secured.


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

^SECURE_LTAB
SECURE_LTAB function

--->(SECURE_LTAB)---+---------------+--|name|---->
                    |               |
                    +--(READ_ONLY)--+

Secures the user table named.  A secured user table  cannot be deleted.  This is
useful if macros expect the table to exist, but need to change its contents.

If the  option  READ_ONLY  is  specified,  values  in the user  table  cannot be
changed.  This is useful to  create  data  that  cannot  be  changed  once it is
created.


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

^DELETE_LTAB_ROW
DELETE_LTAB_ROW function

--->(DELETE_LTAB_ROW)----|name|---+---|row|---+--->
                                  |           |
                                  +---(ALL)---+

Deletes the  indicated row from the named user table.  ALL deletes all rows from
the table.  If a row specified does not exist, no error will be generated.

An error will be generated if the table is secured against writing  (SECURE_LTAB
READ_ONLY).


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

^INSERT_LTAB_ROW
INSERT_LTAB_ROW function

--->(INSERT_LTAB_ROW)----|name|----|row|---|number|---->

Inserts  rows into the named user  table.  |row| is the row below  which the new
rows are  added.  |number|  is the number of rows to insert.  To insert  rows at
the beginning of the table, use 0 as the reference row.

An error will be generated if the table is secured against writing  (SECURE_LTAB
READ_ONLY).


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

^WRITE_LTAB
WRITE_LTAB function

--->(WRITE_LTAB)--|name|--+--|row|--------|col|---+--|value|--->
                          |                       |
                          +--(TITLE)--|number|----+

Writes new values to the named user table.

|row| and |col| indicate a location in the data area of the logical
table.

(TITLE) and |number| indicate a title string.  Titles values may be specified as
numbers.  These values can be read using READ_LTAB function.

|value| may be a string or number; other token types will generate an error.

An error will be generated if the table is secured against writing.


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

^COLOR_LTAB
COLOR_LTAB function

--->(COLOR_LTAB)--|ltab_name|--{specifier}-->


{specifier}

        ->-+--|row|-----|column|--+-+-|Display Color|-+-+-|Backg Color|-+-
           |                      | |                 | |               |
           +--(ROW)-----|number|--+ +-(DEFAULT)-------+ +-(DEFAULT)-----+
           |                      |
           +--(COLUMN)--|number|--+
           |                      |
           +--(ALL)---------------+
           |                      |
           +--(TITLE)-+-|number|--+   
		      |           |
		      +-(ALL)-----+

Change the color of the indicated position in the title and the data area of the
logical  table.  Both,  background  color  as  well  as  display  color  can  be
specified,  or set to DEFAULT in which case, the colors  from the display  table
are applied on the area.

Other qualifiers and options are same as HIGHLIGHT_LTAB.


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

^HIGHLIGHT_LTAB
HIGHLIGHT_LTAB function

--->(HIGHLIGHT_LTAB)-|ltab_name|-+--|row|-----|column|--+--+-(ON)---+---->
                                 |                      |  |        |
                                 +--(ROW)-----|number|--+  +-(OFF)--+
                                 |                      |  |        |
                                 +--(COLUMN)--|number|--+  +-(MARK)-+
                                 |                      |
                                 +--(ALL)---------------+
                                 |                      |
                                 +--(TITLE)-+-|number|--+
					    |           |
					    +-(ALL)-----+

Change the  highlight  state of the  indicated  position in the data area of the
named user table.

ON indicates that the element will be highlighted (inverse video);

OFF indicates it will not be highlighted.

MARK indicates it will be marked with an inner box.

|row| & |column| specify a single element.

ROW & number specify an entire row.

COLUMN & number specify an entire column.

ALL specifies all elements in the table.

TITLE allows a cell  containing a title string to be highlighted.  If a cell has
more than one title string  displayed,  the highlight  state from the last title
string is taken. ALL will highlight all cells displaying title strings.

HIGHLIGHT_LTAB  may be used with tables  secured  against  writing  (SECURE_LTAB
READ_ONLY).


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

^SORT_LTAB
SORT_LTAB function

                         +----------<--------------------+
                         |                               |
--->(SORT_LTAB)--|name|--+--------->--------+--|column|--+--(CONFIRM)-->
                         |                  |
                         +--(REVERSE_SORT)--+

SORT_LTAB  sorts a user table  based upon the  columns  specified.  REVERSE_SORT
reverses the order of the sorting for the next column specified.

Sort order (precedence) of differing types in the same column is:

        NULL values
        numbers
        strings

An error will be generated if the table is secured against writing.


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

^READ_LTAB
READ_LTAB arithmetic function

--->(READ_LTAB)--|name|--+--|row|---------|col|---+-------->
                         |                        |
                         +--(TITLE)---|number|----+

READ_LTAB responds with the value in the named logical table.

|row| and |col| specify an element in the data area of the table.

TITLE and |number| specify a title string (also known as an "extra string").

The returned  value may be a string or number.  If no value is specified for the
requested element, an empty string ("") will be returned.

Example:

    Read the fourth column from the first row and assign it to the
    macro "my_value":

    LET my_value (READ_LTAB 'mytable' 1 4)


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

^SELECT_FROM_LTAB
SELECT_FROM_LTAB function

--->(SELECT_FROM_LTAB)--|source table|--{sel}--{output}-->

{sel}

--+------------+--|column|-----+---------+--+----|string|--+--->
  |            |               |         |  |              |
  +--(COLUMN)--+               +--(=)----+  +----|number|--+
                               |         |
                               +--(<>)---+
                               |         |
                               +--(>)----+
                               |         |
                               +--(<)----+
                               |         |
                               +--(>=)---+
                               |         |
                               +--(<=)---+

{output}

-----+---(END)--------------------+------>
     |                                |
     +--+------------+--|dest table|--+
        |            |
        +--(APPEND)--+

SELECT_FROM_LTAB performs a select operation on the source table.  It places the
row numbers of matching  records in a logical  table  called  "sys_select",  and
optionally  copies the selected row to |dest  table|.  The  selection  condition
consists  of a column  to  match,  an  operator,  and a value to match  against.
Selection  conditions are similar to those used by CATALOG.  COLUMN is optional,
and is included to make the command easier to read.

Output consists of column 1 in the  "sys_select"  table,  containing the numbers
rows  selected  from |source  table|.  Each time  SELECT_FROM_LTAB  is executed,
previous  contents of "sys_select"  are overwritten.  "sys_select" is created by
the system and cannot be modified by the user.

If END is specified, the only output is the row number written to  "sys_select".

If |dest table| is also specified, row numbers are placed in  "sys_select",  and
the selected rows are copied to the user table specified as |dest table|.  |dest
table| must have been created before SELECT_FROM_LTAB.  |source table| and |dest
table| may be the same user  table.  Records  are copied to |dest  table| in the
order in which  they are  found.  Specify  APPEND  to  append  records  to |dest
table|.

By specifying a source and destination table and a select condition such as "1 =
'*'",  one  table   can  be   copied   to   another.  By   repeatedly   applying
SELECT_FROM_LTAB, multiple select conditions can be applied to one table.

Example:

    To select all rows in the user table "data_points" where column 1
    is greater than 10, use:

        SELECT_FROM_LTAB "data_points" COLUMN 1 > 10 END

    Assuming "data_points" contains:

            1   20
            5   25
            10  11
            22  17
            43  13

    After the command "sys_select" will contain:

            4
            5

    To also copy the rows to the user table "large_points" use:

      SELECT_FROM_LTAB "data_points" COLUMN 1 > 10 "large_points"


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

^LTAB_ROWS
LTAB_ROWS arithmetic function

--->(LTAB_ROWS)---|name|-->

LTAB_ROWS responds with the number of rows in the named logical table.


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

^LTAB_COLUMNS
LTAB_COLUMNS arithmetic function

--->(LTAB_COLUMNS)--|name|-->

LTAB_COLUMNS responds with the number of columns in the named logical table.


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

^LTAB_TITLES
LTAB_TITLES arithmetic function

--->(LTAB_TITLES)--|name|-->

LTAB_TITLES  responds  with the  number of title  strings  in the named  logical
table.


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

^POP_UP_LTAB
POP_UP_LTAB function

--->(POP_UP_LTAB)--|name|-->

Causes the named logical  table to "pop up" at the next  available  opportunity.
Pop up requests are buffered until the users is prompted for interactive  input.


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

^POP_DOWN_LTAB
POP_DOWN_LTAB function

--->(POP_DOWN_LTAB)--|name|-->

Causes the named  logical table to "pop down".  Pop down actions are  unbuffered
as opposed to pop up actions.


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

^SCROLL_LTAB
SCROLL_LTAB function

--->(SCROLL_LTAB)--|name|--|row|--->

Scrolls display tables connected to the named logical table so the specified row
is at the top of the display.


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

^SAVE_LTAB
SAVE_LTAB function

--->(SAVE_LTAB)--|name|--|output spec|-->

Saves the named  logical table to "output  spec" (see help for  OUTPUT_SPEC  for
details).  Output  consists of WRITE_LTAB  commands  necessary to re-create  the
data in the logical table.  The table name specified the WRITE_LTAB  commands is
the name of the table  being  saved.  However,  since  secured  user  tables and
internal DMS tables cannot be overwritten  while, the output file may need to be
modified to be used with INPUT.


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

^TB_CURRENT_DRAWING
TB_CURRENT_DRAWING

  (TB_CURRENT_DRAWING)-->|drawing name|--+------>--------+-+-------->-------+->
		                         v               | v                | 
				         +->|rev string|-+ +->|vers number|-+

TB_CURRENT_DRAWING allows the user to change the drawing element to
which the current drawing is referencing.  A table will be displayed for
the user to pick the drawing to be made current if NAME, REVISION,
and/or VERSION are not supplied.  The current drawing will be
highlighted on the screen.

Revision string and version number have to be specified if the class 'drawings'
is defined with  REVISIONING and VERSIONING.  Otherwise only one of them or none
has to be specified, depending on how the class 'drawings' was defined.

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

^TB_GET_DRAW_VALUES Tb_get_values
TB_GET_DRAW_VALUES

  (TB_GET_DRAW_VALUES)->

TB_GET_DRAW_VALUES retrieves the attribute values for the current
drawing.  They are placed in the title block logical table.

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

^TB_SETUP_TABLE Tb_initialize
TB_SETUP_TABLE

  (TB_SETUP_TABLE)--|ltab_name|->

TB_SETUP_TABLE defines Title Block text references (TR) for all drawing 
class attributes.  It also creates the title block logical table.

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

^TR_ASSIGN Bom_assign Tb_assign
TR_ASSIGN command

  (TR_ASSIGN)-|ltab_name|-+->-|TR_name|-+-|point|-+->
                          |             |         |
                          +-<--(UNDO)---+-<-------+
                          |                       |
                          +-<---------------------+

Assign a test reference (INFO attribute) to a text string on the
current drawing.

You use the ASSIGN command typically when you are creating a template for a
standard title block.

This command does NOT retrieve any data from HP-DMS, it simply assigns a text
reference to a selected text in the drawing.

This command is often followed by the TR_UPDATE command to update the 
assigned texts in the drawing with the data in the database referenced by the
text references.

NOTE:  This command can only assign a text reference to a text in the current
       drawing.

You must specify a logical table where you want your text references to be
placed.

Enter the name of the text reference or choose it from the table and then
identify the selected text in the drawing.

Use UNDO to undo the last selection.

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

^TR_CHANGE_CASE_CONV
TR_CHANGE_CASE_CONV command

  (TR_CHANGE_CASE_CONV)---+->-|UPPER|---+---+->-|point|--+--->
                          |             |   |            |
                          +->-|LOWER|---+   +-<-(UNDO)---+
                          |             |   |            |
                          +->--|OFF|----+   +-<----------+

This command changes the character case-convention rule for an existing text
reference (TR).

You are first prompted to select one of three settings, UPPER, LOWER, or OFF. 
Choosing UPPER means the data referenced by a TR is to be converted to upper 
case.  Choosing LOWER would do the opposite.  OFF means no case-conversion is
done.

You are then prompted for the assigned text whose case-conversion rule you want
to change.

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

^TR_CHANGE_LINES
TR_CHANGE_LINES command

  (TR_CHANGE_LINES)------|number|-------+->-|point|--+--->
                                        |            |
                                        +-<-(UNDO)---+
                                        |            |
                                        +-<----------+

This command changes the maximum number of lines to be displayed for an
existing text reference (TR).

You are first prompted to input a number for the maximum number of lines to be
displayed.

If you specify 0, no lines will be dislayed.

If your data is longer than the space available (width plus the number of lines)
then the data is truncated when it is displayed.

The way to wrap data to subsequent lines is specified by the setting of 
WORD_WRAP (see the TR_WORD_WRAP command).

You are then prompted for the assigned text whose number of lines you would 
like to change.

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

^TR_CHANGE_PRECISION
TR_CHANGE_PRECISION command

  (TR_CHANGE_PRECISION)---|number|------+->-|point|--+--->
                                        |            |
                                        +-<-(UNDO)---+
                                        |            |
                                        +-<----------+

This command changes the maximum number of decimal places allowed in an
existing text reference (TR).

You are first prompted to input a number for the maximum number of decimal
places allowed.

This command is only valid for TRs with numeric data.

If a numeric value has less decimal places than specified by 'number', then
additional "0"s are appended to the end.

You are then prompted to select the assigned text for this change.

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

^TR_CHANGE_WIDTH
TR_CHANGE_WIDTH command

  (TR_CHANGE_WIDTH)--+->-|number|--+----+->-|point|--+--->
                     |             |    |            |
                     +->--(ALL)----+    +-<-(UNDO)---+
                                        |            |
                                        +-<----------+

This command changes the maximum number of characters allowed per line of an
existing text reference (TR).

You are first prompted for a number to specify the maximum number of characters 
in each line of a TR.

If you specify ALL, then all the data is displayed on one line.

The new width specified, along with the values specified for the LINES and
PRECISION options, determine the actual number of characters displayed.

You are then prompted for the assigned text whose width you want to change.

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

^TR_CHANGE_WORD_WRAP
TR_CHANGE_WORD_WRAP command

  (TR_CHANGE_WORD_WRAP)---+->--(ON)-----+---+->-|point|--+--->
                          |             |   |            |
                          +->--(OFF)----+   +-<-(UNDO)---+

This command changes the word wrap rule for an existing text reference (TR).

You are first prompted to input either ON or OFF for the word wrap rule.

If you specify ON, the data reference by the TR is wrapped to the following
lines when the data exceeds the width value.  Wrapping is done in whole-word
increments.

If you specify OFF, no word wrapping is done and the data displayed will be
exactly the WIDTH value long.

You are then prompted for the assigned text whose word-wrap rule you want
to change.

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

^TR_EXTRACT_VALUE
TR_EXTRACT_VALUE command

(TR_EXTRACT_VALUE)--|Source LTAB|--|Destination LTAB|

TR_EXTRACT_VALUE extracts the value of all the text elements which
reference the source logical table and places the results in the
destination logical table.  The first column of the logical table
contains the text reference from the INFO, the second contains the
actual text string visible in ME 10/30.

TR_EXTRACT_VALUE will be used by the BOM Formatter to extract position
numbers from the drawing and place them in a logical table for
manipulation.

If the first column of the destination table already contains the text
reference from the INFO string, then the ME 10 text with that INFO is
placed in the second column of that row.  If more than one reference to
the INFO string is made, only one of the text values will be copied into
the logical table.  If more than one copy of the INFO string is in the
destination logical table, all the copies will have the text value
attached to them.  If the text reference from the INFO string is not in
the table, it is appended to the table.

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

^TR_SET_CASE_CONV
TR_SET_CASE_CONV command

  <TR_SET_CASE_CONV>---+->-(UPPER)---+--->
                       |             |
                       +->-(LOWER)---+
                       |             |
                       +->--(OFF)----+

This command sets the character case-convention rule for all subsequebtly
assigned text references (TRs).

You are prompted to select one of three settings, UPPER, LOWER, or OFF. 
Choosing UPPER means the data referenced by a TR is to be converted to upper 
case.  Choosing LOWER would do the opposite.  OFF means no case-conversion is
done.

Case conversion defaults to OFF when youfirst start the system.

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

^TR_SET_LINES
TR_SET_LINES command

  <TR_SET_LINES>--------|number|------>

This command sets the maximum number of lines to be displayed for all
subsequently assigned text references (TRs).

You are prompted to input a number for the maximum number of lines to be
displayed.

If you specify 0, no lines will be dislayed.

If your data is longer than the space available (width plus the number of lines)
then the data is truncated when it is displayed.

The way to wrap data to subsequent lines is specified by the setting of 
WORD_WRAP (see the TR_WORD_WRAP command).

Lines is defaulted to 1 when you first start the system.

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

^TR_SET_PRECISION
TR_SET_PRECISION command

  <TR_SET_PRECISION>-----|number|----->

This command sets the maximum number of decimal places allowed in all
subsequently assigned text references (TRs).

You are prompted to input a number for the maximum number of decimal
places allowed.

This command is only valid for TRs with numeric data.

If a numeric value has less decimal places than specified by 'number', then
additional "0"s are appended to the end.


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

^TR_SET_WIDTH
TR_SET_WIDTH command

  <TR_SET_WIDTH>----+->-|number|--+--->
                    |             |
                    +->--(ALL)----+

This command sets the maximum number of characters allowed per line of all
subsequently assigned text references (TRs).

You are prompted for a number to specify the maximum number of characters 
in each line of a TR.

If you specify ALL, then all the data is displayed on one line.

The new width specified, along with the values specified for the LINES and
PRECISION options, determine the actual number of characters displayed.

Width defaults to ALL when you first start the system.

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

^TR_SET_WORD_WRAP
TR_SET_WORD_WRAP command

  <TR_SET_WORD_WRAP>---+->-(ON)----+--->
                       |           |
                       +->-(OFF)---+

This command sets the word wrap rule for all subsequently assigned text 
references (TRs).

You are prompted to input either ON or OFF for the word wrap rule.

If you specify ON, the data reference by the TR is wrapped to the following
lines when the data exceeds the width value.  Wrapping is done in whole-word
increments.

If you specify OFF, no word wrapping is done and the data displayed will be
exactly the WIDTH value long.

The word wrap rule defaults to ON when you first start the system.

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

^TR_SHOW
TR_SHOW command

  <TR_SHOW>------+->------(ALL)-----------+->
                 |                        |
                 +->-(SELECT)->|point|----+

This command shows the information about the text references (TRs) in the
current drawing in a table so that you can check if the data is exactly as
required.

Use the ALL option to show all TRs.

Use the SELECT option to show information about a specific TR.

The information displayed in the table will include the name of the text
references and their formats (case-conversions, lines, precision, width and
word wrap).

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

^TR_UNASSIGN Tb_unassign
TR_UNASSIGN command

  (TR_UNASSIGN)-----+->-|point|--+---->
                    |            |
                    +-<-(UNDO)---+
                    |            |
                    +-<----------+

This command does the opposite of the TR_ASSIGN comamnd.  You can use the 
TR_UNASSIGN command to remove a text reference from a referenced text in the
current drawing.

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

^TR_UPDATE Bom_resequence Bom_posno Tb_update Tb_draw_names Tb_draw_values
TR_UPDATE command

               +-<--------------+
               |                |
  (TR_UPDATE)--+->--------------+---+->-|ltab_name|--+--->
               |                |   |                |
               +->---|point|----+   +->--------------+
               |                |
               +->-|column #|---+
               |                |
               +->--(CURRENT)---+

This command updates Title Block text references in the current drawing.

NOTE:   It is important to remember that you cannot retrieve data to update
	the text references in the current drawing if you have not previously
	stored that drawing in HP-DMS.

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


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

^ADD_TREE_ATTRIBUTE DEFINE_TREE TREE CLASSIFICATION
ADD_TREE_ATTRIBUTE command

				         +<------------------+
				         |                   |
--->(ADD_TREE_ATTRIBUTE)--->|tree name|--+-------------------+-->(CONFIRM)--->
				         |                   |
			                 +->{attribute def}--+

{attribute def}

-->|attribute name|-->+-----------+--->|attribute type|--->
	              |           |
	              +->(INDEX)--+

Add new attributes to all nodes of a classification  tree.  Each attribute value
is  initialized  to NULL for the  existing  nodes.  Any new  nodes  created  are
assigned the tree attributes with NULL values.

After adding  attributes,  the tree becomes the current tree for any  subsequent
node operations.

Definition  of INDEX and  attribute  types is given  under  DEFINE_TREE  command
description.

A classification privilege level of 1 is required to use this command.

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

^CLASSIFICATION 
^Sm_cnc_menu_1 
^Sm_cnc_menu_2
CLASSIFICATION menu

The CLASSIFICATION menu allow the user to access the CLASSIFICATION Application
of HP-DMS.  CLASSIFICATION allows the user to build and search a class
heirarchy.  This enables faster searching for parts and easier
differentiation among similiar parts.

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

^CREATE_TREE_LINK REMOVE_TREE_LINK TREE CLASSIFICATION
CREATE_TREE_LINK command

--->(CREATE_TREE_LINK)->{parent node}-->{child node}--->

{parent node},{child node}

---+->|name|-------------+--->
   |                     |
   +->(TOP)--------------+
   |                     |
   +->(LAST)-------------+
   |                     |
   +->(CURRENT)----------+
   |                     |
   +->(BACK)-->|steps|---+

Create  a  new  link   between  a  parent  and  a  child  node  in  the  current
classification tree.

An existing node can be specified by typing its name or picking it from a table.
Option TOP specifies the top node of the current tree, which also is the name of
the current tree.  Option  CURRENT  specifies the current node in the history of
the node  queries.  Option LAST gives the last current  node, BACK  identifies a
node queried earlier by given steps in the history.

Both the nodes must  already be existing in the current  tree.  Only one link is
allowed  between the parent and the child  node.  Error  occurs if addition of a
link creates a cycle in the tree.

A classification privilege of 2 is required to use this command.


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

^CREATE_TREE_NODE REMOVE_TREE_NODE UPDATE_TREE_NODE NODE CLASSIFICATION
CREATE_TREE_NODE command

--->(CREATE_TREE_NODE)-+---------->|parent node|--->|child node name|----+
		       |           				         v 
		       +->(CLASS)->|parent node|--->|class name|-------->+   
								         v
		       +<------------------------------------------------+
		       |
		       +-->{attribute list}--->

{parent node}

---+->|name|-------------+--->
   |                     |
   +->(TOP)--------------+
   |                     |
   +->(LAST)-------------+
   |                     |
   +->(CURRENT)----------+
   |                     |
   +->(BACK)-->|steps|---+

{attribute list}

   +<----------------------------------------+
   |                                         |
---+->|attribute name|-+-->|attribute value|-+-->(CONFIRM)--->
   |                   |                     |
   |                   +-->(NULL)------------+
   |
   |           +<-------------------+
   |           |                    |
   +->(PROMPT)-+->|attribute value|-+---->
               |                    |
               +->(NULL)------------+

Add a child node to an existing node in the current  classification tree and set
the  attribute  values for the newly  created  node.  With the CLASS  option, an
HP-DMS  existing  class name must be given for the child  node.  All node  names
must be unique in one classification tree.

An existing node can be specified by typing its name or picking it from a table.
Option TOP specifies the top node of the current tree, which also is the name of
the current tree.  Option  CURRENT  specifies the current node in the history of
the node  queries.  Option LAST gives the last current  node, BACK  identifies a
node queried earlier by given steps in the history.

Two attributes, NAME and TYPE are defined by the system for every node.  NAME is
set to the user  specified  child node name or the  HP-DMS  class  name and TYPE
attribute value is set to

'TOP'             for the top node, 
'CLASS'           for the class nodes,
'NODE'            for all other nodes.

Just  like any  other  attributes,  NAME and TYPE  can  also be used in the node
queries.

Node  attribute  values  can  be set  by  giving  the  attribute  name  and  the
corresponding  attribute  value.  With the PROMPT option, system prompts for the
attribute  values, one attribute at a time.  Initially, all attribute values are
set to NULL.

A classification privilege of 2 is required to use this command.


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

^CURRENT_TREE TREE CLASSIFICATION 
CURRENT_TREE function

--->(CURRENT_TREE)--->|tree name|---->

Set a tree  to be  the  current  classification  tree.  All  editing  and  query
commands operate on the nodes of the current classification tree.

All classification users can use this command.


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

^DEFINE_TREE REMOVE_TREE ADD_TREE_ATTRIBUTE TREE CLASSIFICATION
DEFINE_TREE command

	                         +<------------------+
	       		         |                   |
--->(DEFINE_TREE)-->|tree name|--+-------------------+-->(CONFIRM)--->
			         |                   |
			         +->{attribute def}--+

{attribute def}

-->|attribute name|-->+-----------+--->|attribute type|--->
	              |           |
	              +->(INDEX)--+

Creates a new classification tree in the system.  The newly created tree becomes
the current tree for any  subsequent  node  operations.  Also, a top node of the
tree is  created  by the  system  which has the same name as the tree.  All tree
names in the system must be unique.

Two  attributes,  NAME and TYPE are defined by the system for all newly  created
nodes in the tree.  Any  additional  attributes  can be created by giving unique
attribute name and one of the database supported  attribute types.  See
DEFINE_CLASS for supported attribute types.

These  attributes are assigned to the nodes during the creation time and initial
attribute values are set to NULL.

Option INDEX can be used to create a database index on the attribute to speed up
the queries using that attribute.  However, indexing consumes more disc space in
the database.

A classification privilege of 1 is required to use this command.


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

^MOVE_TREE_NODE NODE CLASSIFICATION
MOVE_TREE_NODE command

--->(MOVE_TREE_NODE)-->{child node}-->{old parent node}-->{new parent node}--->

{child node}, {old parent node}, {new parent node}

---+->|name|-------------+--->
   |                     |
   +->(TOP)--------------+
   |                     |
   +->(LAST)-------------+
   |                     |
   +->(CURRENT)----------+
   |                     |
   +->(BACK)-->|steps|---+

Move  a  child  node  from  one  parent   node  to  the  other  in  the  current
classification  tree.  All nodes must  already be present in the  current  tree.
After a successful move, a new link gets established between the new parent node
and the child node  whereas the link  between  the old parent node and the child
node is deleted.

An existing node can be specified by typing its name or picking it from a table.
Option TOP specifies the top node of the current tree, which also is the name of
the current tree.  Option  CURRENT  specifies the current node in the history of
the node  queries.  Option LAST gives the last current  node, BACK  identifies a
node queried earlier by given steps in the history.

A classification privilege of 2 is required to use this command.


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

^NODE_QUERY_PAGE MAKE_QUERY_PAGE REMOVE_QUERY_PAGE CLASSIFICATION
NODE_QUERY_PAGE function

--->(NODE_QUERY_PAGE)--+-------------+->|node name|-+--------+--+
		       |             |              |        |  |
		       +->(ELEMENTS)-+              +->(ADD)-+  |
							        v
		     +------------------------------------------+
                     |
		     |  +<-------------------+
		     v  |                    |
                     +->+->|query page name|-+-->(END)-->
		        |                    |
                        +------------------->+

Associate  new query  pages with a node name for the  default  node and  element
queries.  Option  ELEMENTS is used for element  queries on a node otherwise node
queries are assumed. Query pages to be associated must be present in the system.
Any query page associated with a node name is secured against deletions.

A node name  string  must be given to  associate  the query  pages.  Option  ADD
associates  more query pages to the node name  otherwise all the previous  query
page  associations  with the node  name are  cleared  and new  associations  get
defined.

During a default  query,  pages for the node name are used to extract  attribute
names  to query  and  their  display  characteristics.  If no  query  pages  are
associated  with the node name, query pages for the top node in the current tree
are  used,  and  if  they  too  are  not   available,   a   special   node  name
'cnc_reserved_node' defined by the system is used for the query pages.

Any classificaition user can use this command.


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

^QUERY_TREE_CHILD_NODE NODE QUERY_CREATE_CLASSIFICATION CLASSIFICATION Bom_find_class Cnc_menu_show_children
QUERY_TREE_CHILD_NODE function

--->(QUERY_TREE_CHILD_NODE)-->|node query name|-->|elem query name|--+
								     v
     +<--------------------------------------------------------------+
     |
     |  +<--------+
     |  |         |
     +--+->{node}-+-->(END)--->

{node}

---+->|name|-------------+--->
   |                     |
   +->(TOP)--------------+
   |                     |
   +->(LAST)-------------+
   |                     |
   +->(CURRENT)----------+
   |                     |
   +->(BACK)-->|steps|---+

Query child nodes of a given node in the current  classification tree.  When the
node being queried is an HP-DMS class, elem query conditions are used, otherwise
node query conditions are used. Querying a node makes the next current node.

An existing node can be specified by typing its name or picking it from a table.
Option TOP specifies the top node of the current tree, which also is the name of
the current tree.  Option  CURRENT  specifies the current node in the history of
the node  queries.  Option LAST gives the last current  node, BACK  identifies a
node queried earlier by given steps in the history.

For default  queries, logical tables  'cnc_query_sort',  'cnc_query_select'  and
'cnc_query_results'  are used for query editing and results output respectively.
In this case, the  display  table  names are same as the  logical  table  names.
Attributes for the default query are taken from the query pages  associated with
the node being  queried.  For the  results,  the title  strings  of the  results
logical  table are generated  using the attribute  values of the history  nodes,
starting at the current node and going back to the top node.

A classification privilege of 4 is required to use this command.


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

^QUERY_TREE_ELEMENTS NODE QUERY_CREATE_CLASSIFICATION CLASSIFICATION Cnc_menu_show_elements
QUERY_TREE_ELEMENTS function

--->(QUERY_TREE_ELEMENTS)-->|node query name|-->|elem query name|-->{node}-->

{node}

---+->|name|-------------+--->
   |                     |
   +->(TOP)--------------+
   |                     |
   +->(LAST)-------------+
   |                     |
   +->(CURRENT)----------+
   |                     |
   +->(BACK)-->|steps|---+

Query  elements  of the child  classes of a node in the  current  classification
tree.  For the class  selection, a named node query is used after which, element
selection is performed  on these  classes  using named  element  query.  Classes
selected can be direct or indirect children of the given node.

An existing node can be specified by typing its name or picking it from a table.
Option TOP specifies the top node of the current tree, which also is the name of
the current tree.  Option  CURRENT  specifies the current node in the history of
the node  queries.  Option LAST gives the last current  node, BACK  identifies a
node queried earlier by given steps in the history.

For default  queries, logical tables  'cnc_query_sort',  'cnc_query_select'  and
'cnc_query_results'  are used for query editing and results output respectively.
In this case, the  display  table  names are same as the  logical  table  names.
Attributes for the default query are taken from the query pages  associated with
the node being  queried.  For the  results,  the title  strings  of the  results
logical  table are generated  using the attribute  values of the history  nodes,
starting at the current node and going back to the top node.

A classification privilege of 4 is required to use this command.


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

^QUERY_TREE_PARENT_NODE NODE QUERY_CREATE_CLASSIFICATION CLASSIFICATION Cnc_menu_show_parents
QUERY_TREE_PARENT_NODE function

				                  +<---------+
				                  |          |
--->(QUERY_TREE_PARENT_NODE)-->|node query name|--+->{node}--+->(END)--->

{node}

---+->|name|-------------+--->
   |                     |
   +->(TOP)--------------+
   |                     |
   +->(LAST)-------------+
   |                     |
   +->(CURRENT)----------+
   |                     |
   +->(BACK)-->|steps|---+

Query  parents of a node in the current  classification  tree using a named node
query.

An existing node can be specified by typing its name or picking it from a table.
Option TOP specifies the top node of the current tree, which also is the name of
the current tree.  Option  CURRENT  specifies the current node in the history of
the node  queries.  Option LAST gives the last current  node, BACK  identifies a
node queried earlier by given steps in the history.

For default  queries, logical tables  'cnc_query_sort',  'cnc_query_select'  and
'cnc_query_results'  are used for query editing and results output respectively.
In this case, the  display  table  names are same as the  logical  table  names.
Attributes for the default query are taken from the query pages  associated with
the node being  queried.  For the  results,  the title  strings  of the  results
logical  table are generated  using the attribute  values of the history  nodes,
starting at the current node and going back to the top node.

A classification privilege of 4 is required to use this command.


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

^REMOVE_TREE DEFINE_TREE TREE CLASSIFICATION
REMOVE_TREE command

--->(REMOVE_TREE)--+-------------+-->|tree name|-->(CONFIRM)--->
	           |             |
	           +>(RECURSIVE)-+

Remove a  classification  tree from the database.  When the RECURSIVE  option is
given,  the tree with all its nodes is  deleted,  otherwise  only a tree with no
user created  nodes can be deleted.  Removing a tree having user created  nodes,
without the RECURSIVE option results in an error.

A classification privilege of 1 is required to use this command.


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

^REMOVE_TREE_LINK CREATE_TREE_LINK TREE CLASSIFICATION
REMOVE_TREE_LINK command

--->(REMOVE_TREE_LINK)->{parent node}-->{child node}--->

{parent node}

---+->|name|-------------+--->
   |                     |
   +->(TOP)--------------+
   |                     |
   +->(LAST)-------------+
   |                     |
   +->(CURRENT)----------+
   |                     |
   +->(BACK)-->|steps|---+

{child node}

---+->|name|-------------+--->
   |                     |
   +->(TOP)--------------+
   |                     |
   +->(LAST)-------------+
   |                     |
   +->(CURRENT)----------+
   |                     |
   +->(BACK)-->|steps|---+
   |                     |
   +->{select condition}-+

{select condition}

--->(SELECT)-+---------------+-->(CONFIRM)--->
	     v	             |   
	     +->{expression}-+   
	     ^               |
	     +--(AND)<-------+
	     ^               |
	     +--(OR)<--------+

{expression}

-->|attribute name|->+-------->+->+->|value|->+----->
                     |         |  |           |
                     +->(=)--->+  +->(NULL)-->+
                     |         |
                     +->(<>)-->+
                     |         |
                     +->(>)--->+
                     |         |
                     +->(<)--->+
                     |         |
                     +->(>=)-->+
                     |         |
                     +->(<=)-->+

Remove  an  existing  link  between  a parent  and a child  node in the  current
classification  tree.  If the child node has only one parent  node, the link can
not be deleted.

An existing node can be specified by typing its name or picking it from a table.
Option TOP specifies the top node of the current tree, which also is the name of
the current tree.  Option  CURRENT  specifies the current node in the history of
the node  queries.  Option LAST gives the last current  node, BACK  identifies a
node queried earlier by given steps in the history.

More than one child node can also be selected  using the SELECT  option, and the
selection can be based on the nodal attributes.  Wildcards are allowed inside of
'value' if the comparison  value is a string and  comparison  operator is '=' or
'<>'.  Wildcard '*' is used to match an  aribtrary  long search  pattern and '?'
matches exactly one arbitrary character.

A classification privilege of 2 is required to use this command.


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

^REMOVE_TREE_NODE CREATE_TREE_NODE NODE CLASSIFICATION
REMOVE_TREE_NODE command

--->(REMOVE_TREE_NODE)-+---------------+-->{node}-->(CONFIRM)-->
		       |               |
		       +->(RECURSIVE)--+

{node}

---+->|name|-------------+--->
   |                     |
   +->(TOP)--------------+
   |                     |
   +->(LAST)-------------+
   |                     |
   +->(CURRENT)----------+
   |                     |
   +->(BACK)-->|steps|---+
   |                     |
   +->{select condition}-+

{select condition}

--->(SELECT)-+---------------+-->(CONFIRM)--->
	     v	             |   
	     +->{expression}-+   
	     ^               |
	     +--(AND)<-------+
	     ^               |
	     +--(OR)<--------+

{expression}

-->|attribute name|->+-------->+->+->|value|->+----->
                     |         |  |           |
                     +->(=)--->+  +->(NULL)-->+
                     |         |
                     +->(<>)-->+
                     |         |
                     +->(>)--->+
                     |         |
                     +->(<)--->+
                     |         |
                     +->(>=)-->+
                     |         |
                     +->(<=)-->+

Remove nodes from the current  classification  tree.  Option RECURSIVE removes a
node and its  children  all the way to the leaf nodes.  Any child with  multiple
parent  nodes  is not  removed,  but  only  the  link is  deleted.  Without  the
RECURSIVE  option, removal of a node having  children  results in an error.  All
the links to the node to be removed are deleted.

An existing node can be specified by typing its name or picking it from a table.
Option TOP specifies the top node of the current tree, which also is the name of
the current tree.  Option  CURRENT  specifies the current node in the history of
the node  queries.  Option LAST gives the last current  node, BACK  identifies a
node queried earlier by given steps in the history.

Multiple  nodes can also be selected for deletion  using SELECT  option, and the
selection can be based on the nodal attributes.  Wildcards are allowed inside of
'value' if the comparison  value is a string and  comparison  operator is '=' or
'<>'.  Wildcard '*' is used to match an  aribtrary  long search  pattern and '?'
matches exactly one arbitrary character.

A classification privilege of 2 is required to use this command.


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

^UPDATE_TREE_NODE CREATE_TREE_NODE NODE CLASSIFICATION
UPDATE_TREE_NODE command

--->(UPDATE_TREE_NODE)->{node}->{attribute list}--->

{node}

---+->|name|-------------+--->
   |                     |
   +->(TOP)--------------+
   |                     |
   +->(LAST)-------------+
   |                     |
   +->(CURRENT)----------+
   |                     |
   +->(BACK)-->|steps|---+
   |                     |
   +->{select condition}-+

{select condition}

--->(SELECT)-+---------------+-->(CONFIRM)--->
	     v	             |   
	     +->{expression}-+   
	     ^               |
	     +--(AND)<-------+
	     ^               |
	     +--(OR)<--------+

{expression}

-->|attribute name|->+-------->+->+->|value|->+----->
                     |         |  |           |
                     +->(=)--->+  +->(NULL)-->+
                     |         |
                     +->(<>)-->+
                     |         |
                     +->(>)--->+
                     |         |
                     +->(<)--->+
                     |         |
                     +->(>=)-->+
                     |         |
                     +->(<=)-->+

{attribute list}

   +<----------------------------------------+
   |                                         |
---+->|attribute name|-+-->|attribute value|-+-->(CONFIRM)--->
   |                   |                     |
   |                   +-->(NULL)------------+
   |
   |           +<-------------------+
   |           |                    |
   +->(PROMPT)-+->|attribute value|-+---->
               |                    |
               +->(NULL)------------+

Update node attribute values in the current classification tree.  System defined
attributes NAME and TYPE can not be updated by the user.

An existing node can be specified by typing its name or picking it from a table.
Option TOP specifies the top node of the current tree, which also is the name of
the current tree.  Option  CURRENT  specifies the current node in the history of
the node  queries.  Option LAST gives the last current  node, BACK  identifies a
node queried earlier by given steps in the history.

Multiple nodes can also be selected  using SELECT  option, and the selection can
be based on the nodal  attributes.  Wildcards  are allowed  inside of 'value' if
the  comparison  value  is a  string  and  comparison  operator  is '=' or '<>'.
Wildcard '*' is used to match an aribtrary  long search pattern and '?'  matches
exactly one arbitrary character.

Node attribute  values can be set by giving the attribute name and the attribute
value.  With the PROMPT option, system prompts for the attribute  values, one at
a time.  Initially, all attribute values are set to NULL.

A classification privilege of 2 is required to use this command.


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

^SHOW_TREES TREE CLASSIFICATION
SHOW_TREES function

--->(SHOW_TREES)--->|tree name pattern|---->

Show names of classification tree(s) in the database.  The current tree, if any,
is hilighted.  All the names  matching the tree name pattern are displayed.  The
tree name pattern can have '*' to match  arbitrarily  long character  string and
'?'  for matching exactly one arbitrary character in any position.

A classification privilege of 4 is required to use this command.


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

^Cnc_show_display_tables CLASSIFICATION
LAST_TABLE menu

The result table of the last classification query is shown, however no new query
is done on the database.  So the shown values are really only the results of the
query done in the past and may have changed meanwhile through other users.

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



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

^BOM 
^Sm_bom_menu
BOM menu

The BOM menu allow the user to access the Bill of Materials Application
of HP-DMS.  BOM allows the user to create, format, and edit a bill of
materials from the data in the database.

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

^BOM_ADD_PART BOM ADD ADD_PART STRUCTURE_NUMBER
BOM_ADD_PART command

-->(BOM_ADD_PART)-->+------{parent part}---------->+--->+
                    |                              |    |
                    +-(STRUCTURE_NUMBER)-|string|->+    |
                                                        |
                    +<----------<--------------<--------+
                    |
                    +<----------<--------------<------------+ 
                    |                                       |
                    +------{child part}----------->+-|qty|->+->
                    |                              |
                    +-(STRUCTURE_NUMBER)-|string|->+

{child part}
{parent part}

-->|part name|->+------------------------------------>+->
                |                                     |
                +-(SEL_OLD)->+-|old rev|--|old vers|->+
                             |                        |
                             +-|old revision string|->+
                             |                        |
                             +-|old version number|-->+

Add qty of child  part to a parent  assembly.  Parent  and/or  child part may be
specified in two ways:  by name or by structure number.

Specifying  parent  and  child  parts by name may be done at any  time,  without
opening a part with the BOM_OPEN  command.  The current  revision and version of
the part with the specified name is selected  unless the SEL_OLD option is used,
in which case a specific  revision  and/or  version of the part is selected.  If
the named  part is the  member of a class  which  does not have  revisioning  or
versioning, the SEL_OLD option has no meaning.

Specifying  the parent or child part by structure  number  requires  that a part
structure be loaded into the BOM Editor with the  BOM_OPEN  command and that the
specified  structure  numbers  exist in the  parts  structure.  This is  because
structure  numbers only have  meaning  within a part  structure.  When a part is
identified  by structure  number the specific  revision  and version of the part
already in the part  structure is selected.  This differs from parts  identified
by name where the current  revision and version of the part is selected,  unless
the SEL_OLD option is used.

Any child part  elements that added to the parent part will have their  'in-use'
flags set on the  database for data  consistency  between the BOM Editor and the
database.  The  parent  part  becomes  the  implied   parent  for  further  part
additions.  When the BOM Editor is in assembly  mode the open assembly is always
the implied  parent for  BOM_ADD_PART.  The assembly mode is activated  with the
BOM_ASSEMBLY_MODE command.


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

^BOM_ASSEMBLY_MODE BOM ASSEMBLY ASSEMBLIES
BOM_ASSEMBLY_MODE command

-->(BOM_ASSEMBLY_MODE)->+--(ON)--->+--->
                        |          |
                        +--(OFF)-->+

Activate or deactivate the Bill Of Materials  Editor  assembly mode.  The editor
assembly mode differs from the default full tree mode in several respects.  When
a part is  opened  with  the  BOM_OPEN  command  only  the  parent  part and its
immediate  child  parts  are  queried  from  the  database,   providing   better
performance over the full tree mode, where the entire part tree is queried.  The
single level that is shown in the editor table alse  provides a simpler  picture
of the part, similar to that shown in the full tree mode when  BOM_DISPLAY_DEPTH
is  used  with a depth  of one  (1).  The  operation  of the  editing  commands:
BOM_ADD_PART,  BOM_REMOVE_PART,  and  BOM_SET_QUANTITY  also change.  The parent
part of the open  assembly is the implied  parent for all of the edit  commands,
simplifying the editing process.

Default on powerup: OFF


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

^BOM_CLOSE BOM CLOSE
BOM_CLOSE command

-->(BOM_CLOSE)-->

Close all part trees or  assemblies  currently  open in the BOM Module and clear
the 'in-use' flag for all elements present in the BOM Module.


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

^BOM_DISPLAY_DEPTH BOM ALL
BOM_DISPLAY_DEPTH function

-->(BOM_DISPLAY_DEPTH)->+--|depth|->+-->
                        |           |
                        +--(ALL)--->+

Limit the depth of the  displayed  part  structure in the BOM Editor to depth or
show the entire structure by selecting ALL.

This command may be combined with the BOM_NAME_INDENT,  BOM_SHOW and BOM_FLATTEN
functions to produce different reports.

Default on powerup: ALL


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

^BOM_EDITOR_DISPLAY_TABLE BOM
BOM_EDITOR_DISPLAY_TABLE command

-->(BOM_EDITOR_DISPLAY_TABLE)---|display table name|----->

Declare the display table created in the configuration macro file 'bom_setup' to
the BOM Editor application to use as the BOM Editor display table.


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

^BOM_EDITOR_QUERY_PAGE BOM QUERY_PAGE PAGE PAGING BOM ADD
BOM_EDITOR_QUERY_PAGE command

-->(BOM_EDITOR_QUERY_PAGE)-+-------->+->+-------------------->+--(END)-->
                           |         |  |                     |
                           +--(ADD)->+  +<-|query-page-name|<-+

Clear and unsecure the existing BOM Editor  query-pages  and  optionally add new
query-pages  or append  new  query-pages  to the  existing  ones.  New pages are
secured against deletion until they are removed from the BOM Editor.

EXAMPLES:

    BOM_EDITOR_QUERY_PAGE END

    Removes the existing query-pages.

    BOM_EDITOR_QUERY_PAGE 'page1' 'page2' END

    Removes existing  query-pages and add two new query-pages, named 'page1' and
    'page2' as new pages.  The query pages  'page1' and  'page2'  must have been
    previously created with the MAKE_QUERY_PAGE command.

    BOM_EDITOR_QUERY_PAGE ADD 'page1' 'page2' END

    Keep the existing  query-pages and append two new query-pages, named 'page1'
    and  'page2', as new pages.  The query pages  'page1' and 'page2'  must have
    been previously created with the MAKE_QUERY_PAGE command.

This  command  can only be run when the BOM  Editor is empty (ie.  before a part
has been opened with BOM_OPEN or after executing BOM_CLOSE).


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

^BOM_EDITOR_FORMAT BOM 
BOM_EDITOR_FORMAT function

-->(BOM_EDITOR_FORMAT)->+--(FLAT)----->+-->
                        |              |
                        +--(EXPLODED)->+
                        |              |
                        +--(INDENTED)->+

Change the display format of the part structure in the BOM Editor.

The FLAT option  causes the  display of the BOM Editor to contain a single  line
for each unique  displayed  part together with the total quantity of the part in
the structure.

The EXPLODED  option causes the display of the BOM Editor to contain an exploded
view of the part  structure.  In the exploded  view the full part  hierarchy  is
visible.

The INDENTED  option causes the display of the BOM Editor to contain an exploded
view  of the  part  structure.  The  column  of the  Editor  that  displays  the
attribute  NAME  will be  indented  for each  level  that a part is in the  part
hierarchy.  The amount of indent is selectable with the BOM_NAME_INDENT command.

Default on powerup: INDENTED


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

^BOM_FLATTEN BOM 
BOM_FLATTEN function

-->(BOM_FLATTEN)->+--(ON)-->+--->
                  |         |
                  +--(OFF)->+

Turns the  flatten  status of the BOM Editor on or off.  Flattening  causes  the
display of the BOM  Editor to  contain a single  entry for each  displayed  part
together with the total quantity of the part in the assembly or part tree.

This   command  may  be  combined   with  the   BOM_NAME_INDENT,   BOM_SHOW  and
BOM_DISPLAY_DEPTH functions to produce different reports.

Default on powerup: OFF


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

^BOM_FORMATTER_OPEN OPEN FORMATTER BOM 
BOM_FORMATTER_OPEN command

-->(BOM_FORMATTER_OPEN)-->{element id}-->(CONFIRM)

{part}

-->|part name|->+------------------------------------>+->
                |                                     |
                +-(SEL_OLD)->+-|old rev|--|old vers|->+
                             |                        |
                             +-|old revision string|->+
                             |                        |
                             +-|old version number|-->+

Open the database part tree begining with the element id.  Marks the tree IN USE
until  the user  closes  the part  tree  with  BOM_CLOSE.  The part  tree is NOT
displayed in the BOM editor display table.


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

^BOM_FORMATTER_QUERY_PAGE BOM QUERY_PAGE PAGE PAGING BOM ADD
BOM_FORMATTER_QUERY_PAGE command

-->(BOM_FORMATTER_QUERY_PAGE)-+-------->+->+-------------------->+--(END)-->
                              |         |  |                     |
                              +--(ADD)->+  +<-|query-page-name|<-+

Clear and unsecure the existing BOM Formatter query-pages and optionally add new
query-pages  or append  new  query-pages  to the  existing  ones.  New pages are
secured against deletion until they are removed from the BOM Formatter.

EXAMPLES:

    BOM_FORMATTER_QUERY_PAGE END

    Removes the existing query-pages.

    BOM_FORMATTER_QUERY_PAGE 'page1' 'page2' END

    Removes existing  query-pages and add two new query-pages, named 'page1' and
    'page2' as new pages.  The query pages  'page1' and  'page2'  must have been
    previously created with the MAKE_QUERY_PAGE command.

    BOM_FORMATTER_QUERY_PAGE ADD 'page1' 'page2' END

    Keep the existing  query-pages and append two new query-pages, named 'page1'
    and  'page2', as new pages.  The query pages  'page1' and 'page2'  must have
    been previously created with the MAKE_QUERY_PAGE command.

This  command  can only be run when the BOM  Editor is empty (ie.  before a part
has been opened with BOM_OPEN or after executing BOM_CLOSE).


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

^BOM_HIGHLIGHT_PART Bom_posno
BOM_HIGHLIGHT_PART function


-->(BOM_HIGHLIGHT_PART)-+---|Part Name|---+---(END)-->
                        |                 |
		        +-|Point on Part|-+

BOM_HIGHLIGHT_PART  highlights  all ME 10 parts which match the 'Part  Name', or
the part selected by the picked point.  During the  BOM_HIGHLIGHT_PART  command,
the status line shows the name of the selected  part, and the ME 10 current part
is set to match the selected part.  If more than one part is selected (by giving
a part name), all parts with that name will be highlighted, and the current part
will be set to one of the parts of that name.


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

^BOM_NAME_INDENT BOM
BOM_NAME_INDENT function

-->(BOM_NAME_INDENT)-+-|indent|->+->
                     |           |
                     +--(ON)---->+
                     |           |
                     +--(OFF)--->+

Control the indenting of part names in the BOM Editor and  Formatter.  Indent is
not provided in the BOM Editor when BOM_FLATTEN ON or BOM_EDITOR_FORMAT FLAT are
in effect.  Indent is not available from the BOM Formatter if the BOM_QUERY FLAT
option is used.  Name  indenting in the Editor is  activated  with the ON option
and  turned  off  with  the OFF  option.  Name  indenting  in the  Formatter  is
controlled by the FLAT, INDENTED, and EXPLODED options to BOM_QUERY.  The number
of indent spaces for both the Formatter and the editor are set by entering a new
indent value as a number greater than or equal to one (1) and less than or equal
to twenty (20).

This command may be combined with the BOM_FLATTEN,  BOM_SHOW,  BOM_EDITOR_FORMAT
and BOM_DISPLAY_DEPTH functions to produce different reports.

Default on powerup: 2 space per level, ON


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

^BOM_OPEN BOM OPEN BOM_OPEN_AND_SHOW 
BOM_OPEN command

-->(BOM_OPEN)---{part}----(CONFIRM)------->

{part}

-->|part name|->+------------------------------------>+->
                |                                     |
                +-(SEL_OLD)->+-|old rev|--|old vers|->+
                             |                        |
                             +-|old revision string|->+
                             |                        |
                             +-|old version number|-->+

Load a part tree or  single-level  assembly into the BOM Editor.  A part must be
loaded  into the BOM  Editor  before  the  STRUCTURE_NUMBER  option  in  editing
commands  will be  accepted.  The parts that are read into the BOM  Editor  will
have their  'in-use'  flags set on the  database.  This provides  some  security
against concurrent changes by other users to the parts that have been loaded.


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

^BOM_PARTS_ONLY BOM
BOM_PARTS_ONLY command

-->(BOM_PARTS_ONLY)->+--(ON)--->+--->
                     |          |
                     +--(OFF)-->+

Configure  the  BOM  Editor  to  allow  parts  only  to be  displayed  and  part
relationships  edited  or to allow  all  relationships  in the  structure  to be
displayed and edited.  This command can only be run when the BOM Editor is empty
(ie.  before a part has been opened or after executing BOM_CLOSE).

Default on powerup: ON


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

^BOM_QUERY FORMATTER BOM Bom_set_query_type Bom_set_query_depth Bom_set_query_part
BOM_QUERY command

-->(BOM_QUERY)-+--------------+->|Destination LTAB|--->+
	      | 	     |			      |
	      +-(USE_TITLES)-+			      |
						      |
       +----------------------<-----------------------+
       |
       +------->--------------+--+------->-----------+--+-->(FLAT)----+-->
       |		      |  |		     |	|	      |
       +->(DEPTH)->+->(depth)-+  +--->(LEAF_PARTS)---+	+->(EXPLODED)-+
		   |	      |  |		     |	|	      |
		   +-->(ALL)--+  +->(ASSEMBLY_PARTS)-+	+->(INDENTED)-+
				 |		     |
				 +------>(ALL)-------+

BOM_QUERY  copies the  'current'  element and its  children  from the BOM to the
logical  table given as the  destination  LTAB.  Data from the BOM is written to
the  logical  table  based on the union of all the  query  sets  defined  to the
formatter through the BOM_FORMATTER_QUERY_PAGE command.  If a database attribute
is in one of the  formatter  query  sets, the value for that  attribute  will be
written to the logical  table.  To create an empty  column,  use a  non-existent
attribute name in the query page.

If the USE_TITLES qualifier is given, then the attributes will be written to the
destination  logical table based on the logical table titles.  For  instance, if
the first title string in the logical table was NAME, then the value of the NAME
database  attributes  would be written to the first column of the logical table.
Without the TITLE  qualifier,  all attributes  currently  used by either the BOM
editor or the BOM  formatter  will be written  to the  logical  table,  with the
attribute name in the logical table title for that column.

If no depth is given, then all  children of the  specified  part will be loaded.
If the part type  (LEAF_PARTS  or  ASSEMBLY_PARTS)  is given, then only parts of
that type will be  displayed.  If no part type is given,  then all  children  of
part name which are 'parts' will be extracted.  (An element is a 'part' if it is
stored in a 'parts' class).

EXPLODED lists the complete parts list with all its part names as left justified
strings.  If the title 'STRUCTURE  NUMBER' is listed in the output table, then a
structure  number will be output to  indicate  the part's  position in the tree.
INDENTED   implies  an  exploded  parts  list  with  the  parts  list  hierarchy
illustrated  by leading spaces in the part names.  INDENTED may also include the
structure  numbers if the string  'POSITION'  is one of the titles in the source
table.

BOM_QUERY first checks if the BOM_FORMATTER_OPEN command has been used to open a
part  tree.  If it has, then that tree is used.  If  BOM_FORMATTER_OPEN  has not
been used, then it checks if the  BOM_OPEN  command  has  opened a part tree and
uses that tree.  If neither  BOM_FORMATTER_OPEN  nor BOM_OPEN have been used, an
error message is reported and BOM_QUERY aborts.


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

^BOM_REFRESH_EDITOR BOM
BOM_REFRESH_EDITOR function

-->(BOM_REFRESH_EDITOR)->

Cause the editor to refresh.  This command is useful if query  configuration  is
changed  interactively  and  the  user  desires  to see  the  new  configuration
displayed.


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

^BOM_REMOVE_PART BOM STRUCTURE_NUMBER ALL
BOM_REMOVE_PART command

                      +<---------------<---------------<--------------+
                      |                                               |
-->(BOM_REMOVE_PART)->+---{parent part}---{child part}--->+->+-|qty|->+-->
                      |                                   |  |        |
                      +----(STRUCTURE_NUMBER)----|sn|---->+  +-(ALL)->+

{child part}
{parent part}

-->|part name|->+------------------------------------>+->
                |                                     |
                +-(SEL_OLD)->+-|old rev|--|old vers|->+
                             |                        |
                             +-|old revision string|->+
                             |                        |
                             +-|old version number|-->+

Remove qty or all of part from parent part.  If qty exceeds the actual  quantity
of part in parent part, quantity  removed  defaults to ALL.  The parent and part
may be specified  directly by name, or implicitly by structure  number if a part
structure  has been loaded into the BOM Editor with the BOM_OPEN  command.  When
the BOM Editor is in  assembly  mode,  using  BOM_ASSEMBLY_MODE  ON, the  opened
assembly is always the implied parent for BOM_REMOVE_PART.


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

^BOM_SET_QUANTITY BOM SET_QUANTITY QUANTITY STRUCTURE_NUMBER
BOM_SET_QUANTITY command

-->(BOM_SET_QUANTITY)-->+---{parent part}----{child part}-->+--|new qty|--->
                        |                                   |
                        +----(STRUCTURE_NUMBER)----|sn|---->+

{child part}
{parent part}

-->|part name|->+------------------------------------>+->
                |                                     |
                +-(SEL_OLD)->+-|old rev|--|old vers|->+
                             |                        |
                             +-|old revision string|->+
                             |                        |
                             +-|old version number|-->+

Change the  quantity of a child part in a parent part to new qty.  If new qty is
equal to or less than zero, all  relationships  between part and parent part are
removed.  The parent and part may be specified  directly by name, or  implicitly
by structure number if a part structure has been loaded into the BOM Editor with
the  BOM_OPEN  command.  When the BOM  Editor  is in  assembly  mode,  set  with
BOM_ASSEMBLY_MODE   ON,  the  top  part  is  always  the   implied   parent  for
BOM_SET_QUANTITY.


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

^BOM_SHOW BOM ALL
BOM_SHOW function

-->(BOM_SHOW)->+--(ALL)------------>+--->
               |                    |
               +--(LEAF_PARTS)----->+
               |                    |
               +--(ASSEMBLY_PARTS)->+

Select parts that are visible in the BOM Editor  based on whether  they  contain
subparts  or not.  All parts are  displayed  if the ALL option is  selected.  If
display  of only leaf parts  (those  with no child  parts) is  desired,  use the
LEAF_PARTS  option.  If display of only assembly parts (those that contain child
parts) is desired, use the ASSEMBLY_PARTS option.

This  command  may  be  combined  with  the  BOM_FLATTEN,   BOM_NAME_INDENT  and
BOM_DISPLAY_DEPTH functions to produce different reports.

Default on powerup: ALL


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

^FORMAT_TABLE FORMATTER LTAB BOM Bom_set_default_page Bom_generate
FORMAT_TABLE command

-->(FORMAT_TABLE)--|source LTAB|--|format definition query page|-+
  						                 |
   +----------------------------<--------------------------------+
   |
   +------------------------->---------+-->+
   |				       |   |
   +-+-(HORIZONTAL)-+--+---(ON)-----+--+   |
   | |		    |  |	    |  |   |
   | +-(VERTICAL)---+  +---(OFF)----+  |   |
   |		       |	    |  |   |
   |		       +--|color|---+  |   |
   |		       |	    |  |   |
   |		       +-|linetype|-+  |   v
   |				       |   |
   +-(TITLE)-+--(ON)---+----->---------+   |
   |	     |	       |	       |   |
   |	     +--(OFF)--+	       |   |
   |				       |   |
   +-------------------------<---------+   |
					   |
   +-------------------<-------------------+
   |
   +--+-(DRAWING)-+--------+-+-----------------------+-|location point|--+-->
      |           |        | |		             |                   |
      |           +--(UP)--+ +-(SUBPART)-|part name|-+                   |
      | 	  |	   |			                         |
      | 	  +-(DOWN)-+			                         |
      | 					                         |
      +-{outputspecifier}------------------------------------------------+

FORMAT_TABLE  generates  output from the source  logical  table using the format
specified by the format  definition  query page (created with  MAKE_QUERY_PAGE).
The output can be to the  currently  loaded ME 10  drawing, to the screen, to an
external file, or to the prompt list.

If the  HORIZONTAL  or  VERTICAL  qualifier  is  given,  exactly  one  option is
expected.  If that option is either a color or a linetype, then the line will be
drawn in the specified color/linetype.

If the HORIZONTAL  (VERTICAL)  qualifier is not given, no HORIZONTAL  (VERTICAL)
lines  will be  generated.  If output is to the  screen and  VERTICAL  lines are
specified,  the fields will be separated by the  characters ' | '.  If output is
to the screen and  horizontal  lines are specified,  every output line will have
'-'  characters  across  its entire  length.  If output is to be written  to the
drawing with  VERTICAL  lines, an area the width of a single  character  will be
placed  between  fields and the line will be  centered in that space.  The first
(and last)  vertical  lines will be placed at the edge of an area half the width
of a space.  If output is to the drawing and horizontal lines are specified, the
horizontal lines will be approximately centered between the text lines.

When  FORMAT_TABLE  output is sent to the drawing  (DRAWING  option), the output
table text is controlled by the current text settings in ME 10.

	ME 10 Command	FORMAT_TABLE Effect
	===============	===================
	TEXT_ADJUST	Adjust of entire output table
	TEXT_ANGLE	Angle of entire text block
	TEXT_LINESPACE	Distance between lines in text block
	TEXT_RATIO	Height to width ratio of characters (and table)
	TEXT_SIZE	Height of characters in output table

The SUBPART  qualifier  gives the name of a subpart into which the  FORMAT_TABLE
output should be written.  If the subpart does not exist, it will be created.  A
new subpart  will be created with the given name, so long as a path to the newly
created subpart exists.  If the ME 10 drawing only contained a single part 'Top'
and the option  SUBPART  '/depth/2'  were used, the  FORMAT_TABLE  command would
abort.

{output  specifier} is as defined  throughout ME 10, either  SCREEN, a file name
with optional DEL_OLD or APPEND, or PROMPT_LINE.


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

^MAKE_QUERY_PAGE QUERY_PAGE PAGE PAGING BOM
MAKE_QUERY_PAGE command

                              +---------------------<-------------------+
                              |                                         |
                              V                                         |
->(MAKE_QUERY_PAGE)--|qpname|-+(ATTRIBUTE)---|attrname|---|colwidth|--->+
                                                                        |
    +<--------------------<-----------------------<---------------------+
    |                                                                   |
    +------------------------------>+  +----------------------------->+ |
    |                               |  |                              | |
    +-|DISP COLOR|->+-------------->+->+-|DISP_TEXT|->+-------------->+>+
                    |               |                 |               | |
                    +-|BCKG COLOR|->+                 +|ACTION_TEXT|->+ |
                                                                        |
    +---------------------<-----------------------<---------------------+
    |                                                                   |
    |                                         +----------<------------+ |
    |                                         V                       | |
    +(COLUMN)+-------------------------->+--->+-(LEFT)--------------->+>+->(END)
             |                           |    |                       |  
             +|DISP COLOR|+------------->+    +-(RIGHT)-------------->+
                          |              |    |                       |
	                  +|BCKG COLOR|->+    +-(CENTER)------------->+
			                      |                       |
			                      +-(FORMAT)-|PRECISION|->+ 
					      |                       |
					      +-|ACTION_TEXT|-------->+
					      |                       |
					      +-|LOG_TAB_COL|-------->+
					    
Create a new named query page for use with DMS applications.  Here is an example
showing the minimum form of this command:

EXAMPLE:

    MAKE_QUERY_PAGE 'page1' ATTRIBUTE 'att1' 15

                            ATTRIBUTE 'att2' 10 
                    END

    This creates a query page whose name is 'page1'  containing two  attributes:
    'att1' and 'att2'.  The width of the column containing att1 is 15 characters
    and the  width  of the  column  containing  att2 is 10  characters.  Default
    values are assigned  for all of the other title and column  settings.  These
    defaults are:

    Title Settings:
      Action Text: 'att1' for title 1 and 'att2' for title 2
      Display Text: 'att1' for title 1 and 'att2' for title 2
      Disp Color:  BLACK
      Bckg Color:   CYAN 
    
    Column Settings:
      Disp Color: Green
      Bckg Color: Black
      Justification: LEFT
      Format precision: 3 decimal places
      Action Text: Contents of corresponding column in logical table
      Log_tab_col: Set by paging code 
    
As many attibutes as required may be added to a query-page  but the columns will
be squeezed to fit into the  display  table  layout to which the  query-page  is
attached.  An example of a full query page specification follows:

EXAMPLE:
    MAKE_QUERY_PAGE 'page2' ATTRIBUTE 'att1' 15 'Att1' 'LINE' BLUE BLACK 
                            COLUMN RED MAGENTA RIGHT FORMAT 5

                            ATTRIBUTE 'att2' 10 'Att2' 'LINE' GREEN YELLOW
                            COLUMN BLACK WHITE CENTER FORMAT 2
                    END

    Here no action text has been  specified  for the column, it will be assigned
    by the  paging  code when pages are  assigned.  The action  text for the two
    titles will invoke the LINE command.  The default  colors for the titles and
    the  display  columns  have  been  overridden,  as have the  column  default
    justification and format.


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

^REMOVE_QUERY_PAGE QUERY_PAGE PAGE PAGING BOM ALL
REMOVE_QUERY_PAGE command

-->(REMOVE_QUERY_PAGE)->+--|query-page-name|->+-(CONFIRM)
 		        |                     |
                        +---(ALL)------------>+

Destroy a specific named query page, if it is unsecured, or any unsecured  query
pages that have been created if the ALL option is used.


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

^SHOW_TABLE_PAGE QUERY_PAGE PAGE PAGING BOM Tb_show_data
SHOW_TABLE_PAGE command

-->(SHOW_TABLE_PAGE)-->+-(FIRST)---->+--|display-table-name|-->
                       |             |
                       +-(LAST)----->+
                       |             |
                       +-(NEXT)----->+
                       |             |
                       +-(PREVIOUS)->+
                       |             |
                       +-(CURRENT)-->+
                       |             |
                       +-|page_num|->+

Display a query-page that has been attached to the specified display table.

================================================================================
^HIDDEN2D 
^Tm_2d_hidden_line 
^Sm_2d_hidden_line
^Sm_screen_2d_hl_1
HIDDEN-2D-CAPABILITIES

Description
------------

The 2D HIDDEN-LINE  module is used during the creation of an assembly drawing to
automatically generate lines indicating hidden drawing features.

To create an assembly  drawing the surfaces of the assembly  have to be defined.
Each such surface has to have a logical level.  This level is called z-value and
can be thought of as the  absolute  position of the surface in the  z-direction.
Faces can partially obscure or completely cover other faces depending upon their
z-values.  In simple terms, faces can be imagined as  infinitely  thin pieces of
paper, laid one on top of another.

Individual geometry elements can also be assigned a z-value.  Therefore they can
be (partially) covered by faces with a greater z-value.  Construction  geometry,
texts,  dimensions  and leader lines cannot get assigned a z-value by the hidden
line assignment  commands and are therefore  always visible.  Geometry  elements
without  z-value are  automatically  positioned  below the lowest z-value of the
assembly  drawing.  Parts cannot  normally be assigned a z-value, the  exception
being  shared  parts.  The  absolute  z-value for  elements  of shared  parts is
computed as the sum of the  relative  z-value of their  shared  parent parts and
their own relative z-value.

Hatches are treated as surfaces.  They might have a z-value which  defines their
absolute  position in the  z-direction.  Therefore  hatches  that are  partially
covered are  displayed  as  expected,  i.e.  partially  hidden.  Hatches  with a
greater z-value might cover other faces or hatches with a lower z-value.

Note that  z-values  have no units.  They  remain  unaffected  by changes in the
system units.

If the 2D HIDDEN  LINE  module is enabled, a "current  z-value"  is added to the
current info.  Therefore each newly generated element is automatically  assigned
a z-value (the current z-value).  This value can be changed  interactively.  The
z-value of an element may also be changed or set explicitly.

There are two  modes to  produce  an  assembly  drawing:  the view  mode and the
hidden  line  generation  mode.  View mode shows a hidden  line  display  of the
assembly on the screen  without  computing the hidden lines.  It does not change
the geometry or the parts  structure.  Therefore it is possible to assign and to
change  z-values  of  elements  during   construction  time.  Modifications  are
possible  at any time and are  displayed  by the next  redraw.  The hidden  line
generation  mode is  designed  for  finishing.  In  contrast  to the view  mode,
geometry is modified ( elements will be split,  splines will be converted,  etc.
) and the parts structure is completely smashed.  Shared parts will be unshared.
The linetype and color of the hidden elements is user definable.


Remark: 2D HIDDEN LINE and display lists
------

  Simultaneous  use of 2D  HIDDEN  LINE  view mode and  2D display  lists in the
  same viewport is not possible.

================================================================================
^HL_GEN_ALL_PART ABOVE BELOW SAME HOLES
HL_GEN_ALL_PART command

                                  +---------------------------+ 
                                  v                           ^ 
->(HL_GEN_ALL_PART)--+->(HOLES)-+-+->|select|--->{z_location}-+-->
                     v          ^        
                     +->(ALL)---+  


{z_location}

----+----------+->|z_value|---------------+-->
    v                                     ^  
    +->(ABOVE)-+--+-->|face with z-value|-+ 
    |          |  v                       ^
    +->(BELOW)-+  +-->|elem with z-value|-+ 
    |          |  |                       |
    +->(SAME)--+  +-->|reference z-value|-+


This command allows easy z-value setting and face generation for a whole part.

The ALL option is used to generate  faces  automatically  in the selected  part.
The algorithm tries to find the maximum number of faces in this part.


The HOLES option is also used to generate  faces  automatically  in the selected
part.  The algorithm  differs from the ALL option search algorithm by generating
only faces that have no contour forming the inner contour of another face.

Note:
-----

The  algorithm  to find all faces  (with  holes) in a part  delivers  the result
expected if:

	- the  contours  have no gaps

	- each  vertex of a contour is a vertex of all  elements  at that  point
	  (i.e.  all elements belonging to a contour are correctly split)

  	- identical elements which occur multiply are removed

	- each  contour  is  completely  separated  from  other  contours,  i.e.
	  contours do not overlap/touch each other

If these  prerequisites  are not fulfilled the results are not  predictable.  In
this case the use of the HL_GENERATE_FACE command with options AUTO or MANUAL is
recommended.

The  z_location  defines a specific  z-value  which is  assigned  to each  newly
created face and to each  geometry in the part.  There are three ways to specify
this z-value:

  - if a number is specified, the newly generated  faces and all elements in the
    selected  part  (  with  the  exception  of  construction  geometry,  texts,
    dimensions  and  leaderlines  ) get assigned  this number as their  relative
    z-value

  - if a relational  option ( ABOVE,  BELOW or SAME ) and a reference  element /
    z-value are  specified, the absolute  z-value of the faces which are created
    and of all  elements  in the  selected  part (  exceptions  see  above  ) is
    computed by taking the absolute  z-value of the  reference  element ( option
    SAME  )  or   adding  (   option   ABOVE  )  the   relation   offset  (  see
    HL_SET_RELATION_OFFSET  ) to this value or  subtracting ( option BELOW ) the
    relation offset from this value.


================================================================================
^HL_SET_Z_VALUE
^ABOVE
^BELOW
^SAME
^BETWEEN SHARED_PART
HL_SET_Z_VALUE command

                       +------------+   +---------------------------+
                       ^            v   v                           ^ 
->(HL_SET_Z_VALUE) --+-+->(ELEMENT)-+-+-+->|select|-->{z_location}--+-->
                     v                ^        
                     +->(SHARED_PART)-+       



{z_location}

      +->(KEEP)-+
      ^         v
----+-+---------+->|z_value|---------------+-------------------------+-->
    v                                      ^                         |
    +->(NONE)------------------------------+                         |
    |                                      |                         |
    +->(ABOVE)-+--+-->|face with z-value|--+                         |
    |          |  v                        ^                         |
    +->(BELOW)-+  +-->|elem with z-value|--+                         |
    |          |  |                        |                         |
    +->(SAME)--+  +-->|reference z-value|--+                         |
    |                                                                |
    +->(BETWEEN)--+                                                  |
		  |                                                  |
    +-------------+                                                  |
    |                                                                |
    +-+->|face with lower z-value|-+-+->|face with upper z-value|-+-+
      v                            ^ v                            ^
      +->|elem with lower z-value|-+ +->|elem with upper z-value|-+
      |                            | |                            |
      +->|reference z-value|-------+ +->|reference z-value|-------+


This command is used to assign z-values to elements or shared parts or to change
them.  Construction  geometry,  texts,  dimensions  and  leaderlines  cannot get
assigned a z-value by HL_SET_Z_VALUE.

There are two ways to assign a z-value:

  - Specifying a z-value (real number) which becomes the new relative z-value of
    the specified  elements ( for the difference  between  relative and absolute
    z-values of elements, see HIDDEN2D ).

  - Establishing  a relation to an element  (not a part).  This  relation  gives
    information  about the position of the selected set of elements ( only those
    that have been  assigned a z-value  before ) with  respect to the  reference
    element which must already have been assigned a z-value.  As an  alternative
    to the reference element, a number might be specified.

The  elements to which a z-value is to be assigned are selected  using the usual
ME10/ME30 selection techniques.

With option ELEMENT ( the default ) a z-value is assigned to elements.

The option  SHARED_PART is used to assign a z-value to an occurrence of a shared
part.  Unshared subparts cannot be assigned a z-value.

If a  part  is  selected  without  using  the  option  SHARED_PART  the  z-value
assignment is done to each element of that part.  This process works recursively
downwards.

The option  NONE is used to delete a z-value of a elements  or  occurrence  of a
shared part.

The options SAME, ABOVE and BELOW require the selection of a reference element.

Using option SAME without option  SHARED_PART,  the selected  elements that have
already got a z-value at least get assigned  the same  z-value as the  reference
element.  This means that the element with the smallest  z-value of all selected
elements gets the same z-value as the reference  element, the other elements get
a z-value so that their old  z-value  distance  to the  element  with the lowest
z-value is kept.  If the option  SHARED_PART is also  specified,  the z-value of
the selected shared part is changed so that all elements  belonging to that part
and all  elements  in its  subparts  have  the same  z-value  or  higher  as the
reference element.

Using option ABOVE without option  SHARED_PART, the selected elements which have
already  got a  z-value  get  assigned  a z-value  equal to the  z-value  of the
reference   element   plus   the   value   of   the   relation   offset   (  see
HL_SET_RELATION_OFFSET ).  This means that the element with the smallest z-value
of all selected  elements  gets the z-value of the  reference  element  plus the
value of the relation offset, the other elements get a z-value so that their old
z-value  distance  to the  element  with the lowest  z-value is kept.  If option
SHARED_PART  is also  specified,  the  z-value of the  selected  shared  part is
changed so that all  elements  belonging  to that part and all  elements  in its
subparts  have a z-value equal to the z-value of the reference  element plus the
value of the relation offset.

Using option BELOW without option  SHARED_PART, the selected  elements that have
already got a z-value get assigned at most the z-value of the reference  element
minus the value of the  relation  offset ( see  HL_SET_RELATION_OFFSET  ).  This
means that the element with the biggest  z-value of all selected  elements  gets
the z-value of the reference element minus the value of the relation offset, the
other  elements get a z-value so that their old z-value  distance to the element
with the biggest z-value is kept.  If option  SHARED_PART is also specified, the
z-value of the selected shared part is changed so that all elements belonging to
that part and all elements in its subparts have at most the same z-value as that
of the reference element minus the value of the relation offset.

Using option BETWEEN without option SHARED_PART, the selected elements that have
already  got a z-value  get  assigned a z-value at least equal to the z-value of
the reference  element  selected first plus the value of the relation offset and
at most equal to the z-value of the reference  element  selected  last minus the
value  of the  relation  offset  ( see  HL_SET_RELATION_OFFSET  ).  This  option
differs  from option  ABOVE with  regard to the check for option  BETWEEN if the
element with the smallest  and the one with the biggest  z_value of all selected
elements fit into the specified range.  If option SHARED_PART is also specified,
the  z-value  of the  selected  shared  part is  changed  so that  all  elements
belonging  to that  part and all  elements  in its  subparts  have at least  the
z-value of the reference  element  selected first plus the value of the relation
offset and at most the z-value of the reference  element selected last minus the
value of the relation offset.

The option KEEP has to be used if an already  assigned  z-value of a elements is
not to be overwritten ( default:  z-value is overwritten ).  It can only be used
together with the specification of a relative z-value.


================================================================================
^HL_INQ_Z_VALUE MINIMUM MAXIMUM RANGE FIRST NEXT SHARED_PART
HL_INQ_Z_VALUE function


                           +->(SHARED_PART)-+ +->(RELATIVE)-+          
                           ^                v ^             v
---->(HL_INQ_Z_VALUE)---+->+----------------+-+-------------+->|elem|----+--->
                        v                                                ^
                        +------->(MINIMUM)-------------------------------+
                        |                                                |
                        +------->(MAXIMUM)-------------------------------+
                        |                                                |
                        +------->(RANGE)---------------------------------+
                        |                                                |
                        +------->(FIRST)---------------------------------+
                        |                                                |
                        +------->(NEXT)----------------------------------+


HL_INQ_Z_VALUE returns the absolute or relative z-value of the selected element,
the minimum or maximum  z-value of the entire  assembly view ( options  MINIMUM,
MAXIMUM ) or the  minimum,  maximum  and  range of the  entire  assembly  view (
options RANGE, FIRST, NEXT ).

If the specified  element has not been assigned a z-value or the entire assembly
has no z-value specification and the options MINIMUM, MAXIMUM or RANGE are used,
an error beep is returned.

With option  SHARED_PART,  HL_INQ_Z_VALUE  returns  the z-value of the  selected
occurrence of a shared part.

With  option  RELATIVE,  HL_INQ_Z_VALUE  returns  the  relative  z-value  of the
selected element or shared part.

With  option  RANGE,  HL_INQ_Z_VALUE  returns the  absolute  minimum and maximum
z-value of the entire assembly drawing.  This option also fills an internal data
structure with all absolute  z-values used in the whole drawing.  Afterwards the
user can access this internal data structure using HL_INQ_Z_VALUE  together with
the options FIRST ( returns  always the minimum  z-value ) and NEXT (returns all
z-values from the successor of the minimum z-value to the maximum  z-value).  If
you use option  NEXT after the maximum  z-value  was  returned  an error beep is
returned.

If the system is used  interactively, the returned z-values are written into the
keyboard input buffer so it can be used as input without retyping.

The returned  z-value is also written into the system  inquiry  array.  The data
can then be retrieved with INQ (see INQ).

	+-----------------------------------------------------------+
	|  <inq_index>  |  result                                   |
	+-----------------------------------------------------------+
	|    1          |  120 (implicit inquiry code)              |
	|               |                                           |
	|    2          |  mode of z-value inquiry ( 1..9 )         |
	|               |  1, if the absolute z-value of an element |
	|               |     is inquired                           |
	|               |  2, if the relative z-value of an element |
	|               |     is inquired                           |
	|               |  3, if the absolute z-value of a shared   |
	|               |     part is inquired                      |
	|               |  4, if the relative z-value of a shared   |
	|               |     part is inquired                      |
	|               |  5, if the minimum  z-value of the entire |
	|               |     assembly drawing is inquired          |
	|               |  6, if the maximum  z-value of the entire |
	|               |     assembly drawing is inquired          |
	|               |  7, if the absolute z-value range of a    |
	|               |     drawing is inquired (initialization). |
	|               |     As values the minimum and the         |
	|               |     maximum value are returned in inq -   |
	|               |     index 3 and 4.                        |
	|               |  8, if the absolute z-value range of a    |
	|               |     drawing was inquired before with mode |
	|               |     7 and now the first element of this   |
	|               |     list is inquired (the minimum z-value)|
	|               |  9, if the absolute z-value range of a    |
	|               |     drawing was inquired before with mode |
	|               |     7 and now all elements of this list   |
	|               |     are inquired one after the other      |
	|               |     (from successor of minimum to maximum)|
	|               |                                           |
	|    3          |  z-value corresponding to mode            |
	|               |                                           |
	|    4          |  z-value corresponding to mode            |
	|               |  ( only used in case of mode 7 )          |
	|               |                                           |
	+-----------------------------------------------------------+


================================================================================
^HL_SET_CURR_Z_VALUE ABOVE BELOW SAME
HL_SET_CURR_Z_VALUE function


->(HL_SET_CURR_Z_VALUE) ---> {z_location} --->


{z_location}

----+----------+->|z_value|---------------+-->
    v                                     ^  
    +->(ABOVE)-+--+-->|face with z-value|-+ 
    |          |  v                       ^
    +->(BELOW)-+  +-->|elem with z-value|-+ 
    |          |  |                       |
    +->(SAME)--+  +-->|reference z-value|-+


This function defines a specific z-value which is assigned to each newly created
elements by default.  The default value of the current  z-value is 0.  There are
two ways to specify the current z-value:

  - Specifying a number which becomes the new current z-value.

  - Specifying  a  relational  option ( ABOVE,  BELOW or SAME ) and a  reference
    element / z-value.  The new current  z-value  depends on the  z-value of the
    currently  active  part.  First an absolute  current  z-value is computed by
    taking the  absolute  z-value of the  reference  element ( option  SAME ) or
    adding ( option ABOVE ) the relation offset ( see  HL_SET_RELATION_OFFSET  )
    to this value or subtracting ( option BELOW ) the relation  offset from this
    value.  Then this absolute current z-value is converted into the active part
    so that if a new  element in the active  part is created it really  gets the
    computed absolute z-value.


================================================================================
^HL_INQ_CURR_Z_VALUE
HL_INQ_CURR_Z_VALUE function


---->(HL_INQ_CURR_Z_VALUE)--->


This  function  returns  the current  z-value  which is  assigned  to each newly
created elements by default.

If the system is used  interactively,  the value is  written  into the  keyboard
input buffer so it can be used as input without retyping.

The returned  z-value is also written into the system  inquiry  array.  The data
can then be retrieved with INQ (see INQ).

	+-----------------------------------------------------------+
	|  <inq_index>  |  result                                   |
	+-----------------------------------------------------------+
	|    1          |  121 (implicit inquiry code)              |
	|               |                                           |
	|    2          |  current z-value                          |
	|               |                                           |
	+-----------------------------------------------------------+


================================================================================
^HL_SET_RELATION_OFFSET
HL_SET_RELATION_OFFSET function


->(HL_SET_RELATION_OFFSET) --->|z_value|--->


This function  defines an offset in the  z-direction  which is used to compute a
z-value  specified as an  ABOVE/BELOW/BETWEEN  relation to another element.  The
relation  offset  value is  added/subtracted  from the  absolute  z-value of the
reference element.


================================================================================
^HL_INQ_RELATION_OFFSET
HL_INQ_RELATION_OFFSET function


---->(HL_INQ_RELATION_OFFSET)--->


This function returns the current relation offset in the z-direction.

If the system is used  interactively,  the value is  written  into the  keyboard
input buffer so it can be used as input without retyping.

The returned  z-value is also written into the system  inquiry  array.  The data
can then be retrieved with INQ (see INQ).

	+-----------------------------------------------------------+
	|  <inq_index>  |  result                                   |
	+-----------------------------------------------------------+
	|    1          |  124 (implicit inquiry code)              |
	|               |                                           |
	|    2          |  current relation offset value            |
	|               |                                           |
	+-----------------------------------------------------------+


================================================================================
^HL_SET_LOAD_VALUE ABOVE BELOW SAME
HL_SET_LOAD_VALUE function


->(HL_SET_LOAD_VALUE) -+-> {z_location} -+->
		       v                 ^
		       +->(NONE)---------+


{z_location}

----+----------+->|z_value|---------------+-->
    v                                     ^  
    +->(ABOVE)-+--+-->|face with z-value|-+ 
    |          |  v                       ^
    +->(BELOW)-+  +-->|elem with z-value|-+ 
    |          |  |                       |
    +->(SAME)--+  +-->|reference z-value|-+


This  function is used to define a load offset in the  z-direction  or a z-value
for elements that are loaded afterwards.  As default, no load offset and no load
z-value are specified.

Setting a load z-value  might be done by  specifying a number which  becomes the
new current load  z-value.  All elements  loaded  afterwards  get assigned  this
z-value as their relative z-value.

Setting a load offset in the  z-direction  is done by  specifying  a  relational
option ( ABOVE,  BELOW or SAME ) and a  reference  element  /  z-value.  The new
current load offset is computed by taking the absolute  z-value of the reference
element ( option  SAME ) or adding ( option  ABOVE ) the  relation  offset ( see
HL_SET_RELATION_OFFSET  ) to this  value or  subtracting  (  option  BELOW ) the
relation offset from this value.  All elements loaded  afterwards and which have
already been assigned a z-value are handled in the following way:

- using option  SAME, the elements  get assigned a z-value at least equal to the
  z-value  of the  reference  element.  This  means  that the  element  with the
  smallest z-value of all loaded elements gets the same z-value as the reference
  element,  the other  elements  get a  z-value  so that  their  former  z-value
  distance to the element with the lowest z-value is kept.

- using option  ABOVE, the elements get assigned a z-value at least equal to the
  z-value of the reference  element plus the value of the relation  offset ( see
  HL_SET_RELATION_OFFSET  ).  This  means  that the  element  with the  smallest
  z-value of all loaded elements gets the z-value of the reference  element plus
  the value of the  relation  offset, the other  elements  get a z-value so that
  their former z-value distance to the element with the lowest z-value is kept.

- using  option  BELOW, the elements get assigned a z-value at most equal to the
  z-value of the reference  element minus the value of the relation offset ( see
  HL_SET_RELATION_OFFSET  ).  This  means  that  the  element  with the  biggest
  z-value of all loaded elements gets the z-value of the reference element minus
  the value of the  relation  offset, the other  elements  get a z-value so that
  their former z-value distance to the element with the biggest z-value is kept.

With option NONE, the user resets the load offset so that all elements which are
loaded afterwards keep their original z-value.


================================================================================
^HL_INQ_LOAD_VALUE
HL_INQ_LOAD_VALUE function


---->(HL_INQ_LOAD_VALUE)--->


This  function  returns the mode in which the load value / offset was  specified
and the value itself.  The mode is also returned because the way the load offset
value works depends on the mode too ( see HL_SET_LOAD_VALUE ).

If the  system  is used  interactively,  the two  values  are  written  into the
keyboard input buffer so they can be used as input without retyping.

The returned  values are also written into the system  inquiry  array.  The data
can then be retrieved with INQ (see INQ).

	+-----------------------------------------------------------+
	|  <inq_index>  |  result                                   |
	+-----------------------------------------------------------+
	|    1          |  122 (implicit inquiry code)              |
	|               |                                           |
	|    2          |  mode in which  load value was set (1..5) |
	|               |  1, if none load value / offset is set    |
	|               |  2, if a relative z-value for elements    |
	|               |     loaded afterwards was specified       |
	|               |  3, if option ABOVE and a load offset     |
	|               |     were specified                        |
	|               |  4, if option BELOW and a load offset     |
	|               |     were specified                        |
	|               |  5, if option SAME  and a load offset     |
	|               |     were specified                        |
	|               |                                           |
	|    3          |  current load value / offset              |
	|               |  ( for mode 3..4 value is the sum of the  |
	|               |    former specified load value and the    |
	|               |    value of the relation offset at time   |
	|               |    of setting )                           |
	|               |                                           |
	+-----------------------------------------------------------+


================================================================================
^HL_GENERATE_FACE ABOVE BELOW SAME HOLES
HL_GENERATE_FACE command

			               +------------------------------------+
			               |                                    |
                                       | +---------(UNDO)--------+          | 
        	                       v v                       ^          ^
->(HL_GENERATE_FACE)----+-+->(AUTO)-+--+-+--->| pnt in face |----+----------+-+
		        v v         ^                                         |
		        | +---------+                                         |
		        |                                                     |
		        |            +--------------------------------------+ |
		        |            |                                      | |
		        |            | +-----------(UNDO)-----------------+ | |
		        |            | |                                  | | |
		        |            | |          +------------+          | | |
		        |            v v          v            |          ^ ^ |
		        +->(MANUAL)--+-+->|point|-+-->|point|--+-->(END)--+-+-+
		        |                         |            ^              |
		        |                         +-->(UNDO)---+              |
		        |                         v            ^              |
		        |                         +-->(VERTEX)-+              |
		        |                                                     |
		        |                                                     |
		        +->(ALL)--------------------------------------------+-+
		        |                                                     |
		        +->(HOLES)--------------------------------------------+
                                                                              |
  +---------------------------------------------------------------------------+
  |
  | +---------------+
  | ^               v
  +-+->{z_location}-+--->


{z_location}

----+----------+->|z_value|---------------+-->
    v                                     ^  
    +->(ABOVE)-+--+-->|face with z-value|-+ 
    |          |  v                       ^
    +->(BELOW)-+  +-->|elem with z-value|-+ 
    |          |  |                       |
    +->(SAME)--+  +-->|reference z-value|-+


This  command is used to specify  covering  faces.  A covering  face  covers all
geometry with a lower  z-value.  The covering face is given a default face color
as   set  by   HL_DEFAULT_FACE_COLOR.  This   color   may   be   changed   using
HL_SET_FACE_COLOR  command.  Since  hatches  are  treated  in  the  same  way as
covering  faces, it is impossible to specify a face at a location  where a hatch
is already defined.  In a viewport where the hidden line redraw mode is on ( see
HL_REDRAW_MODE ) the user gets visual feedback about the newly created  covering
faces.

With AUTO , a point  inside a face must be  specified.  The inner  contours  are
found automatically.  Automatic face selection works only if :

        - All elements of the contours are in the active part.
        - The contour has no gaps.
        - Each vertex of the contour is a vertex of all elements there.

Using  MANUAL,  the points of the face  boundaries  can be  specified  manually.
First the outer  contour  has to be  specified,  then the  inner  contours.  The
points selected do not have to lie on any geometry  elements.  In order to build
up a contour  with  elements, a vertex of an element  must be  specified  first.
Thereafter, the elements making up the contour can be selected by a simple pick.
The system allows skipping elements along a contour as long as not more than one
elements  after any branch point is skipped.  All elements must be in the active
part.  With the END command the  definition of the face is finished.  It is used
when all face  boundaries,  i.e.  the outer contour and all inner  contours, are
defined.

The ALL option is used to generate faces automatically in the current part.  The
algorithm  tries to find a  maximum  number  of faces  in the  current  part but
ignores different  z-values if they exist.  Therefore this option should only be
used in parts where all elements have the same z-value.


The HOLES  option is also used to generate  faces  automatically  in the current
part.  The algorithm  differs from the ALL option search algorithm by generating
only faces that have no contour  forming the inner contour of another face.  The
algorithm  ignores  different  z-values if they  exist.  Therefore  this  option
should only be used in parts where all elements have the same z-value.

Note:
-----

The  algorithm  to find all faces  (with  holes) in a part  delivers  the result
expected if:

	- the  contours  have no gaps

	- each  vertex of a contour is a vertex of all  elements  at that  point
	  (i.e.  all elements belonging to a contour are correctly split)

  	- identical elements which occur multiply are removed

	- each  contour  is  completely  separated  from  other  contours,  i.e.
	  contours do not overlap/touch each other

If these  prerequisites  are not fulfilled the results are not  predictable.  In
this case the use of the HL_GENERATE_FACE command with options AUTO or MANUAL is
recommended.

UNDO works as follows : 

    - AUTO   :  the last face specified will be removed

    - MANUAL : during  creation  of a contour,  points will be  removed.  Having
	       finished  the  definition  of a face ( END command ) UNDO removes
	       the entire face.

    - ALL    :  all faces generated automatically will be removed.

    - HOLES  :  all faces generated automatically will be removed.



The  z_location  defines a specific  z-value  which is  assigned  to each  newly
created face.  There are three ways to specify this z-value:

  - if no z_location is specified,  the newly  generated  faces get assigned the
    current z-value as their relative z-value

  - if a number is specified as the  z_location, the newly  generated  faces get
    assigned this number as their relative z-value

  - if a relational  option ( ABOVE,  BELOW or SAME ) and a reference  element /
    z-value are specified the absolute  z-value of the faces created  afterwards
    is computed by taking the absolute z-value of the reference element ( option
    SAME  )  or   adding  (   option   ABOVE  )  the   relation   offset  (  see
    HL_SET_RELATION_OFFSET  ) to this value or  subtracting ( option BELOW ) the
    relation offset from this value.


================================================================================
^HL_DELETE_FACE DELETE_HATCH
HL_DELETE_FACE command



                      +------------------------------+
                      | +--------(UNDO)----------+   |
                      | |                        |   |
                      v v                        ^   ^
->(HL_DELETE_FACE) ---+-+-+-->| pnt in face |--+-+---+-->
			  v                    ^
			  +-->(ALL)------------+


HL_DELETE_FACE  deletes  covering  faces.  The  faces  selected  must  be in the
current part and they have to be without hatch.

With  option ALL, all  covering  faces in the  current  part  without  hatch are
deleted.

A covering face with a hatch in it might be deleted by DELETE_HATCH.


================================================================================
^HL_REDRAW_MODE
HL_REDRAW_MODE function


->(HL_REDRAW_MODE) ---+---(ON)---+---| viewport selection |--->
		      |          |
		      +---(OFF)--+

{viewport selection }


This function switches between the usual redraw mode and the special hidden-line
redraw  mode.  If  HL_REDRAW_MODE  is turned  ON, the redraw  function  uses the
covering faces information and the z-value  information and displays the drawing
partially  covered  (  depending  on that  z-value  information  ).  This  means
HL_REDRAW_MODE ON causes the transition to the view mode.  If  HL_REDRAW_MODE is
turned OFF, the usual ME10/ME30 redraw is used.  HL_REDRAW_MODE not only affects
the redraw itself but also all window functions like WINDOW FIT, WINDOW PAN etc.
To  indicate  hidden  mode, an '- H -' is  displayed  after the part name in the
viewports for which HL_REDRAW_MODE is turned ON.

Note that it is not possible to use 2D display  lists and  HL_REDRAW_MODE  ON in
the same viewport.



================================================================================
^HL_DEFAULT_FACE_COLOR
HL_DEFAULT_FACE_COLOR function


->(HL_DEFAULT_FACE_COLOR) --+-|color|--+-->
                            v          ^
			    +->(RESET)-+
			     

This function sets the default face color; this is the color that is assigned as
face color to faces generated afterwards.  See COLOR for a list of colors.

With option  RESET the default  face color is reset, this means no face color is
assigned to the faces generated afterwards.


================================================================================
^HL_SET_FACE_COLOR
HL_SET_FACE_COLOR command

                       +------------------------------------------+
		       |                                          |
                       |              +-------------------------+ |
                       v              v                         ^ ^
->(HL_SET_FACE_COLOR) -+-+->|color|-+-+-+-->|face selection|--+-+-+->
		         v          ^ v                       ^
		         +->(NONE)--+ +-->(ALL)---------------+


HL_SET_FACE_COLOR  sets or changes the (  background ) color of covering  faces.
See color functions for specifying the desired color.

Only if the hidden  line redraw mode is turned on ( see  HL_REDRAW_MODE  ON ) is
the color of the covering faces shown.

With option ALL, all covering faces in the current part ( those without and with
hatches ) are given the new color.

With option NONE, the color of a covering face can be deleted so that afterwards
the face is drawing in viewport background color.


================================================================================
^HL_INQ_FACE_COLOR
HL_INQ_FACE_COLOR function


---->(HL_INQ_FACE_COLOR)--->|point on face|--->

HL_INQ_FACE_COLOR  returns the rgb - color - value ( integer ) of the  specified
face.  If the face  color  has not been  specified  explicitly  ( i.e.  the face
color is equal to the viewport background color ), a beep is returned.

If the system is used  interactively,  the value is  written  into the  keyboard
input buffer so it can be used as input without retyping.

The returned  z-value is also written into the system  inquiry  array.  The data
can then be retrieved with INQ (see INQ).

	+-----------------------------------------------------------+
	|  <inq_index>  |  result                                   |
	+-----------------------------------------------------------+
	|    1          |  123 (implicit inquiry code)              |
	|               |                                           |
	|    2          |  rgb - color of selected face             |
	|               |                                           |
	+-----------------------------------------------------------+


================================================================================
^HL_VISUALIZE
^HL_SHOW_FACES
^HL_SHOW_Z_LEVEL
^FACES
HL_VISUALIZE function


---->(HL_VISUALIZE)---+-----------+------+----------+-------------------+
                      v           ^      v          ^                   |
                      +->(GLOBAL)-+      +->(FACES)-+                   |
                                                                        |
  +---------------------------------------------------------------------+
  |
  +-+->|lower z-pos|-|upper z-pos|-+--+->|color|-+--->
    v                              ^  v          ^
    +-->(ALL)----------------------+  +->(ON)----+
                                      |          |
				      +->(OFF)---+

{z_pos}

----+->|z_value|-----------+-->
    v                      ^ 
    +->|face with z-value|-+ 
    |                      |
    +->|elem with z-value|-+ 


The function HL_VISUALIZE allows you selectively to view all elements on certain
z-values or to show faces on certain levels in different colors.  Items that are
turned  off are not drawn on the  screen and can  therefore  not be caught to or
selected.  Items set to a particular  color are drawn in that color; they revert
to their original color using the ON option ( see also SHOW ).

With  the  input  of a lower  and an upper  absolute  z-value  limit,  the  user
specifies  the z-value  range of the elements  which should be colored or turned
on/off.

The option GLOBAL specifies that the elements in all parts are to be considered.
By default, only the elements in the current part are considered.

The option ALL is used to refer to all  elements in the  assembly  drawing  that
have been  assigned  any z-value.  For example, ALL  together  with ON shows the
complete  assembly drawing in the original  colors.  ALL together with OFF shows
only those elements that have not been assigned a z-value.

The option FACES specifies that only faces should be colored or turned on/off.

Limitation:  
if the drawing  contains shared parts with different  z-values the result of the
HL_VISUALIZE  might be  incorrect:  the show settings only refer to elements not
to  parts.  Imagine  that  there is a face that has the  relative  z-value 0 and
belongs to a shared part.  Furthermore, there are two occurrences of this shared
part:  one with z-value 1 and one with z-value 6.  Then the one view of the face
lies on  absolute  z-value  1 and the other  view of this face lies on  absolute
z-value 6.  Though you will see both faces if you specify

  HL_VISUALIZE  GLOBAL FACES 1 2.

                                     
================================================================================
^HL_GENERATE_HIDDEN NO_BACKUP
HL_GENERATE_HIDDEN command


->(HL_GENERATE_HIDDEN) --+--------------+->(CONFIRM)--->
			 v              ^
			 +->(NO_BACKUP)-+

This command causes transition to the hidden line generation mode.  In this mode
the  hidden  lines  are  computed.  To  generate  hidden  lines,  geometry  is -
according  to the  z-value  information  of faces and  geometry  -  modified  by
splitting  the  geometry  elements and  inserting  new  elements.  Additionally,
splines  are  converted  and  shared  parts  are  unshared.  The 2D parts  tree,
starting at the current part, will be completely  smashed.  In order to make the
hidden lines  invisible, a function is  available to allow you to turn on or off
of the hidden lines (see HL_SHOW_HIDDEN function).

HL_GENERATE_HIDDEN is not reversible.

First, a backup of the complete  2D-drawing is made and stored in "workfile.hid"
(  compressed  MI ).  If the backup  fails, the process  described  above is not
done.

The qualifier NO_BACKUP suppresses this automatic backup.


================================================================================
^HL_SET_LINETYPE
HL_SET_LINETYPE function


->(HL_SET_LINETYPE) --- |linetype| -->


This  function  sets the  linetype  for the  hidden  lines  created  afterwards.
HL_SET_LINETYPE only affects the HL_GENERATE_HIDDEN  command.  If not specified,
the  default  linetype  for hidden  lines is  DASHED.  See  LINEPATTERN  for the
possible linetypes.


================================================================================
^HL_CHANGE_LTYPE
Hl_change_ltype macro


->(Hl_change_ltype) --- |linetype| -->


Hl_change_ltype  changes  the  linetype  for all hidden  lines  computed  by the
HL_GENERATE_HIDDEN  command  before.  If no hidden lines exist, this command has
no effect.  See LINEPATTERN for the possible linetypes.


================================================================================
^HL_SET_COLOR
HL_SET_COLOR function


->(HL_SET_COLOR) -+--|color| --+->
                  v            ^
                  +->(RESET)---+


This  function  sets  the  color  for  the  hidden  lines  created   afterwards.
HL_SET_COLOR only affects the HL_GENERATE_HIDDEN command.  If not specified, the
hidden lines are created in the same color as the original lines.  See COLOR for
a list of colors.

Option RESET resets the color setting to the default.


================================================================================
^HL_CHANGE_COLOR
Hl_change_color macro


->(Hl_change_color) --- |color| -->


Hl_change_color  changes  the color  for all  hidden  lines  computed  using the
HL_GENERATE_HIDDEN  command.  If no hidden  lines  exist,  this  command  has no
effect.  See COLOR for a list of colors.


================================================================================
^HL_SHOW_HIDDEN
Hl_show_hidden macro


->(Hl_show_hidden) ---+--> (ON) ---+--->
		      v            ^
		      +--> (OFF) --+


This macro shows the hidden lines computed using the HL_GENERATE_HIDDEN  command
( option ON ) or makes them  invisible  ( option  OFF).  By default,  the hidden
lines are visible.

================================================================================
================================================================================
^V_POINT
V_POINT	macro

		    ,-------------------------------------------------------,
		    |		      ,--------------------------------,    |
		    v		      v				       |    |
->(V_POINT)-(V_MODE)+-->(TWO_PTS)-----+-->|sup.	point|--->|end point|--+----+-->
		    |							    |
		    |		      ,----------------------------------,  |
		    |		      v				         |  ^
		    +-->(HORIZONTAL)--+-|sup. point|----+--|end	point|-+-+->+
		    |				        |	       |    |
		    |					+--|distance|--+    ^
		    |						            |
		    |		      ,----------------------------------,  |
		    |		      v				         |  |
		    +-->(VERTICAL)----+-|sup. point|----+--|end	point|-+-+->+
		    |					|	       |    |
		    |					+---|distance|-+    ^
		    |							    |
		    |			,--------------------------------,  |
		    |			v			         |  |
		    +-->(INTERSECTION)--+->|const_elem1|--|const_elem2|--+->+
		    |							    |
		    |		     ,-----------+----<-------------------, |
		    |		     v		 v		          | |
		    '->(PT_ANG_DIST)-+>|sup pnt|-+-|angle|--+--+-|length|-+-'
						 |	    |  |          |
						 '-|point|--'  '-|point|--'




V_POINT	creates	support	points where elements can be related in	variation design
mode. Each V_POINT itself is related to	an existing support point. You indicate
where the support point	should be. These points	are not	part of	your drawing.

V_MODE ('VARIABLE' or 'FIX') defines if	the defined length or angle parameters
are fix	or variable. If V_MODE is equal	to 'VARIABLE'  the parameter can  be
defined	as a number, expression, string	like 'D1' or string expression like
'(R1+D4/2)'.

TWO_PTS	creates	a support point	with the given support point and end point.
Instead	of the end point a horizontal and vertical length can be specified.
PARAMETER:D,D

HORIZONTAL and VERTICAL	create	horizontal and vertical	support	points related
to an existing support point. The end point is projected accordingly.  Instead
of an end point, you can enter a length.
PARAMETER:D

INTERSECTION creates a support point related to	an intersection	of two
construction elements.

PT_ANG_DIST  creates a support point from the given support point, at the given
angle with respect to the X axis, and with the given length.   The angle or the
length may be specified	with points.
PARAMETER:A,D

Only possible in VARIATION DESIGN mode.
================================================================================
^V_LINE
V_LINE macro

		    ,--------------------------------------------------------,
		    |		     ,--------------------------------,      |
		    v		     v			              |      |
->(V_LINE)-(V_MODE)-+->(TWO_PTS)-----+-->|begin	point|-->|end point|--+------+->
		    |							     ^
		    |		      ,-----------------------------------,  |
		    |		      v					  |  |
		    +-->(HORIZONTAL)--+-|begin point|----+--|end point|-+-+->+
		    |					 |	        |    |
		    |					 +---|distance|-+    |
		    |		      ,-----------------------------------,  |
		    |		      v				          |  |
		    +-->(VERTICAL)----+-|begin point|----+--|end point|-+-+->+
		    |					 |	        |    |
		    |					 +---|distance|-+    |
		    |						             |
		    |			,----------------------------------, |
		    |			v				   | |
		    +-->(PERPENDICULAR)-+->|elem|-->--|pnt1|----+-|pnt2|-+-+>+
		    |						|	 ^   |
		    |						'|length|'   |
		    |							     |
		    |				   ,------------,	     |
		    |				   v		|	     |
		    +-->(POLYGON)-->|start point|--+-->|point|--+----------->+
		    |							     |
		    |		       ,------------<-----------,	     |
		    |		       v			|	     |
		    +-->(RECTANGLE)----+->|point 1|-->|point 2|-+----------->+
		    |							     |
		    |			'------------<---------------,	     |
		    |			|			     |	     |
		    +-->(TAN_PT)--------+-->|app tang pnt|-->|point|-+------>+
		    |							     |
		    |		     ,---------------<-------------------,   |
		    |		     v					 |   |
		    +-->(TAN2)-------+->|app tang pnt|-->|app tang pnt|--+-->+
		    |							     |
		    |		     ,-----------+----<--------------------, |
		    |		     v		 v			   | |
		    '->(PT_ANG_DIST)-+>|beg pnt|-+-|angle|--+---+-|length|-+-'
						 |	    |   |	   |
						 '-|point|--'   '-|point|--'


V_LINE creates lines.

V_MODE ('VARIABLE' or 'FIX') defines if	the defined length or angle parameters
are fix	or variable.  If V_MODE	is equal to 'VARIABLE' the parameter can be
defined	as a number, expression, string	like 'D1' or string expression like
'(R1+D4/2)'.

TWO_PTS	creates	a line with the	given begin and	end points.  If	the selected end
point is an existing support point, no horizontal or vertical length parameter
is created and the end point is	connected to this support point.  If no	start
support	point exists, a	support	point relative to the origin is	created	(V_MODE
dependent).
PARAMETER:D,D

HORIZONTAL and VERTICAL	create horizontal and vertical	lines  with  the  given
begin  and  end	points;	the end	point is projected accordingly.	  Instead of an
end point, you can enter a length.  If the selected end	 point is an existing
support	point, no horizontal or	vertical length	parameter is created and the end
point is connected to this support point.  If no start support point exists, a
support	point relative to the origin is	created	(V_MODE	dependent).
PARAMETER:D

PERPENDICULAR  creates	a  line	perpendicular to the identified	element	through
the start or end point (pnt1) of this element. Only lines, fillets or arcs can
be selected. The end of	the line must be specified either by pnt2 or a length.
PARAMETER:D

RECTANGLE makes	 a  rectangle  parallel	 to  the  axes	of  the	 current  input
coordinate system.  The	two input points are at	opposite corners of the
rectangle.  The	rectangle is really just four independent lines.  If the
selected end point is an existing support point, no horizontal or vertical
length parameter is created and	the end	point is connected to this support
point.	If no start support point exists, a support point relative to the origin
is created (V_MODE dependent).
PARAMETER:D,D

POLYGON	 creates  a  sequence  of  connected  lines  with the given end	points.
POLYGON	is only	an input aid; the lines	created	are independent.

TAN_PT creates a line tangential to the	selected element, from that element  to
the  given support  point.  The	 approximate tangent point is used both	to
identify the element and to determine which tangent  is	 desired.  The	element
may  be	a c_circle or circle.

TAN2 makes a line tangent to two curved	elements.   Again, the approximate tan-
gent points determine which tangent solution is	used.

PT_ANG_DIST  creates a line from the given start point,	at the given angle with
respect	to the X axis, and with	the given length.   The	angle or the length may
be specified with points.  If no start support point exists, a support point
relative to the	origin is created (V_MODE dependent).
PARAMETER:A,D

Only possible in VARIATION DESIGN mode.
================================================================================
^V_CHAMFER DIST_ANG
V_CHAMFER macro
							 ,-------------------,
							 v		     |
->(V_CHAMFER)-(V_MODE)->-(DIST_ANG)+->|distance|-|angle|-+->|elem1|->|elem2|-+->
				   ^					     |
				   '-----------------------------------------'



V_CHAMFER creates a chamfer.  Internally, all chamfers are just	lines.
PARAMETER:D,A

V_MODE ('VARIABLE' or 'FIX') specifies if the defined length or	angle parameters
are fix	or variable.  If V_MODE	is equal to 'VARIABLE' the parameter can be
defined	as a number, expression, string	like 'D1' or string expression like
'(D1+D4/2)'.

V_CHAMFER accepts a distance and an angle, these values	are remembered as
defaults, even after you have left the command.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_FILLET
V_FILLET macro

		       ,-----------------------------------------------------,
		       |	    ,--------------------------------------, |
		       v	    v					   ^ ^
-->(V_FILLET)-(V_MODE)-+->|radius|--+-|pnt on 1st elem|->|pnt on 2nd elem|-+-+->



V_FILLET makes a fillet	with  the  given  radius  tangent  to  the  two
selected elements. Both	elements need a	common vertex point.
Note: V_FILLET is only possible	on elements with a common intersection point.
PARAMETER:R

V_MODE ('VARIABLE' or 'FIX') defines if	the defined radius parameters are fix or
variable.  If V_MODE is	equal to 'VARIABLE' the	parameter can be defined as a
number,	expression, string like	'R1' or	string expression like '(R1+D4/2)'.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_CIRCLE
V_CIRCLE macro

						     ,---------------,
						     v		     |
->(V_CIRCLE)-(V_MODE)+--->(CENTER)--->|center point|-+-|per point|-+-+-------+->
		     |				     |		   |	     |
		     |				     +--|radius|---+	     |
		     |							     |
		     |				     ,---------------------, |
		     |				     v			   | |
		     +->(PARALLEL)->|pt	on cir elem|-+->|pnt on	new circ|-++>+
						     v			  ^
						     +-----|distance|-----+



V_CIRCLE creates a circle.

V_MODE ('VARIABLE' or 'FIX') defines if	the defined length or angle parameters
are fix	or variable.  If V_MODE	is equal to 'VARIABLE' the parameter can be
defined	as a number, expression, string	like 'R1' or string expression like
'(R1+D4/2)'.

CENTER	creates	 a  circle  with  the  given  center  and radius or center and
peripheral point. If the selected peripheral point is an existing  support
point, no radius parameter is created and the peripheral point is connected to
this support point.
PARAMETER:R

PARALLEL makes a new circle parallel to	the given circle/arc/fillet through the
given point or at the given distance.	Positive distances mean	 that  the  new
circle will be outside the old one, and	negative distances, inside.
PARAMETER:D

Only possible in VARIATION DESIGN mode.
================================================================================
^V_OVERDRAW
V_OVERDRAW macro
				  ,-------------------,
				  v		      ^
---->(V_overdraw)---|begin pt|----+--->|pt on elem|---+-->



V_OVERDRAW lets	you draw a series of connected lines and  arcs over construction
geometry.   You	 first	indicate  the begin point of the contour.  You can
select an existing support point or two	construction elements. If two
construction elements are selected the intersection point is taken.  Then, for
each line or arc that you want,	you identify either  a	c_line	or  a c_circle
for  the  contour  to  follow. The end point of	the line or arc	is automatically
calculated with	the intersection of the	next selected element.	When you
identify a  c_circle,  there  are  two	possible  directions  for  the contour.
The system  chooses  the direction suggested by	your identification point. If a
selected element is an existing	support	point V_OVERDRAW stops and a new begin
point can be selected.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_SPLITTING
V_SPLITTING macro

-->(V_SPLITTING)--+---(ON)----+--------->
		  |	      |
		  '---(OFF)---'


V_SPLITTING turns automatic splitting and merging ON or	OFF.

Automatic splitting/merging has	the following effects:

 -- Whenever a new element is created, the system checks to see	if its	end
    points  lie	 on  other  elements.	If so, it splits the other elements
    there if possible.

 -- With CIRCLE	TAN2_PT,  the  resulting  "circle"  is	actually  two  arcs
    forming a circle, whose vertices are the tangent points.


These operations keep contours clean (important	for automatic hatching), at the
expense	 of  search  time,  which  can	be considerable	in a viewport with many
elements.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_C_LINE
V_C_LINE macro

		      ,-----------------------------------------------------,
		      |		     ,------------------------------------, |
		      v		     v					  | |
->(V_C_LINE)-(V_MODE)-+-->(TWO_PTS)--+>|exist.sub.pt1|-|exist.sub.pt2|----+-+-->
		      |							    |
		      |			,--------------------------------,  |
		      |			v				 |  |
		      +-->(HORIZONTAL)--+--+--->|point|-----+-------------->+
		      |							    |
		      |			,--------------------------------,  |
		      |			v				 |  |
		      +-->(VERTICAL)----+--+--->|point|-----+-------------->+
		      |							    |
		      |				   ,-----------------,	    |
		      |				   v		     |	    |
		      +->(PARALLEL)-+---|dist|--->-+-|elem|-->|pnt|--+---+->+
		      |		    v					 |  |
		      |		    |			   +---<-----+	 |  |
		      |		    |			   |	     |	 |  |
		      |		    '------------>--|elem|-+->|pnt|--+---'  |
		      |							    |
		      |							    |
		      |			  ,----------------------------,    |
		      |			  v			       |    |
		      +-->(PERPENDICULAR)-+->|element|-->-|pnt|--------+----+
		      |							    |
		      |		   ,-------------------------------------,  |
		      |		   v					 ^  |
		      '-->(TAN_PT)-+->|app tang	pnt|-+-|exist.sub.point|-+>-+
		      |				     v			 ^  |
		      |				     '-|angle|-----------'  |
		      |							    |
		      |		 ,----------------------------------,	    |
		      |		 v				    |	    |
		      +-->(TAN2)-+-|app	tang pnt|-->|app tang pnt|--+------>+
		      |							    |
		      |				,-----------------------,   |
		      |				v			|   |
		      '-->(PT_ANG)-->|beg pnt|--'-->|angle|--+----------+---'
						v	     |
						'--|point|---'


V_C_LINE creates construction lines.

V_MODE ('VARIABLE' or 'FIX') defines if	the defined length or angle parameters
are fix	or variable.  If V_MODE	is equal to 'VARIABLE' the parameter can be
defined	as a number, expression, string	like 'D1' or string expression like
'(D1+D4/2)'.

TWO_PTS	creates	a c_line through two existing support points.

VERTICAL and HORIZONTAL	create vertical	or horizontal c_lines through the given
support	points.	If no support point exists, a support point is created relative
to the origin (V_MODE dependent).

PARALLEL creates c_lines  parallel to a	given c_line or	line.	There  are  two
ways to	use this option.   With	method 1, you identify the element to which the
new c_line should be parallel,	then you indicate points through which the  new
c_lines	 should	 go.   With  method  2,	 you  enter distances, then identify an
element, then indicate which side of the element is to	be  the	 positive  one.
The distances are all measured from the	existing element.
PARAMETER:D

PERPENDICULAR  creates	a  c_line through the given support point perpendicular
of the given element. The c_line has to	intersect the selected element.

TAN_PT makes a c_line tangential to the	selected element and either through the
given point or at the given angle.  The	approximate tangent point is used  both
to identify the	element	and to determine which tangent is desired.  The	element
may be a c_circle or circle.

TAN2  creates  a  c_line  tangential  to two elements.	 Again,	the approximate
tangent	points determine  which	 tangent  is  desired.	 The  elements	may  be
c_circles or  circles.

PT_ANG creates a c_line	through	the given start	support	point at the given
angle, which may also be specified by a	point. If the start support point
doesn't	exist, a support point is created relative to the origin (V_MODE
dependent).
PARAMETER:A

Only possible in VARIATION DESIGN mode.
================================================================================
^V_C_CIRCLE V_CIRCLE
V_C_CIRCLE macro

		       ,------------------------------------------------------,
		       |				 ,-------------,      |
		       v				 v	       |      |
->(V_C_CIRCLE)-(V_MODE)+--->(CENTER)----->|center point|-->|per	point|-+------+>
		       |				   |--radius-|	      |
		       |						      |
		       |	    ,------------------<------------------,   |
		       |	    v					  |   |
		       +-(DIAMETER)-+-->|exist.sub.pt1|--|exist.sub.pt2|--+---+
		       |						      |
		       |			       ,--------------------, |
		       |			       v		    | |
		       +>(PARALLEL)->|pnt on cir elem|-+-|pnt on new circ|-++>+
		       |			       |		    | |
		       |			       +-----|distance|-----+ |
		       |						      |
		       |						      |
		       |	  ,------------------<----------------------, |
		       |	  v					    | |
		       +>(TAN2_PT)+|apptang pnt1|-|apptang pnt2|-+->|radius|+-+
		       |						      |
		       |						      |
		       |	      ,-------------------------------------, |
		       |	      v					    | |
		       '>(TAN_CENTER)-+--|apptan point|---|center|----------+-'


V_C_CIRCLE creates construction	circles.

V_MODE ('VARIABLE' or 'FIX') defines if	the defined length or angle parameters
are fix	or variable.  If V_MODE	is equal to 'VARIABLE' the parameter can be
defined	as a number, expression, string	like 'R1' or string expression like

CENTER	creates	 a  c_circle  with  the	 given	center and radius or center and
peripheral point. If the selected peripheral point is an existing  support
point, no radius parameter is created and the peripheral point is connected to
this support point. If the center is not an existing support point a support
point relative to the origin is	created.
PARAMETER:R

DIAMETER creates a c_circle with the given support points at the end of	a
diameter.

PARALLEL makes a new c_circle concentric to the	given element through the given
point or at the	given distance.	  Positive distances mean that the new c_circle
will be	outside	the element, and negative distances, inside.   The element  may
be a circle, arc, fillet, or c_circle.
PARAMETER:D

TAN2_PT	 makes	a  c_circle  tangential	 to  two other elements, with the given
radius.	The selected elements can be c_lines, c_circles	or circle. If the two
elements are parallel c_lines or concentric circles/c_circles TAN2_PT are not
possible.
PARAMETER:R

TAN_CENTER creates a c_circle tangential to the	identified element with	the
given center (existing support point). The identified element can be a c_line,
c_circle or circle.

With  the  tangential  options,	the approximate	tangent	points are used	both to
identify the elements and to decide which tangential circle was	intended.

Because	 of  limited  accuracy	in  the	algorithms that	calculate tangents, the
system occasionally announces that the requested tangent does not  exist,  when
in fact	it does.   In these cases, try varying the input points, or use	another
option to construct the	circle.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_MIRROR
V_MIRROR macro

-->(V_MIRROR)-+--+(TWO_PTS)+---|pnt1|---|pnt2|--+-+--|geo cmpnt|--+-->
	      |					| ^		  v
	      '->-(HORIZONTAL)-|pnt|------------' '---------------'
	      |					|
	      '->-(VERTICAL)---|pnt|------------'


V_MIRROR  mirrors  the	elements across	a given	line or	point.	The points need
to exist in the	drawing.

With TWO_PTS, you give two existing support points on the mirror line.

HORIZONTAL and VERTICAL	mirror about  horizontal  and  vertical	 mirror	 lines,
respectively.  The input is a point on the line.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_HATCH
V_HATCH	macro

	    ,---------------------------------------------,
	    |						  |
	    v						  |
->(V_HATCH)-+--|point on elem|---|pnt in face |-----------+---->


V_HATCH	creates	hatches, possibly with inner contours.

You indicate an	element	and a point to the side	of the face.  The inner	contours
are found automatically.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_HATCH_ANGLE
V_HATCH_ANGLE macro

---->(V_HATCH_ANGLE)---->|value|---->


V_HATCH_ANGLE sets the current hatch angle.   This angle  is  used  for	 all
new hatches, and is the	angle between the X axis and the hatch pattern.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_HATCH_DIST
V_HATCH_DIST macro

-->(V_HATCH_DIST)---->|value|---->


V_HATCH_DIST sets the current hatch  distance.	 This  distance	 is  usually
the distance between hatch lines.  This	affects	new hatches.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_TEXT
V_TEXT macro

	     ,-----------------------------------,
	     |		       ,--------------,	 |
	     v		       v	      |	 |
-->(V_TEXT)--+---->|string|----+---->|point|--+--+-->

V_TEXT creates texts.

The appearance of the text is affected by  TEXT_ANGLE,	TEXT_FILL,  TEXT_FRAME,
TEXT_RATIO, TEXT_SIZE, and TEXT_SLANT, not to  mention the  text  fonts
themselves,  which  are	 definable  with DEFINE_FONT and CHAR_LAYOUT. If no
support	point exists, a	support	point relative to the origin is	created.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_TEXT_ADJUST
V_TEXT_ADJUST macro

-->(V_TEXT_ADJUST)-->|number|-->


V_TEXT_ADJUST specifies	the position of	the  text  origin  for	new  texts.
The origin  is a vertex	point, visible and catchable with SHOW VERTEX ON, which
can be useful for alignment.

The number gives the location point according to the following pattern:

	     7	8  9
	     4	5  6
	     1	2  3

For example, if	the text is a capital letter:

       1  lower	left corner of letter
       5  center of letter
       9  upper	right corner of	letter

The default adjust value is 1.


Adjust points 1, 2, and	3 are always on	the text baseline, below  which,  in  a
conventional  font, letters like 'g' and 'j' extend.  Adjust points 7, 8, and 9
are determined by the height of	the characters in the  text,  and  not	by  the
default	height of the font (see	DEFINE_FONT).

Only possible in VARIATION DESIGN mode.
================================================================================
^V_TEXT_ANGLE
V_TEXT_ANGLE macro

-->(V_TEXT_ANGLE)-+->|angle|-------------+-->
		  |			 ^
		  '-->|point|-->|point|--'


V_TEXT_ANGLE  specifies	 the  current text angle, which	is measured between the
X axis and the text baseline.	The angle can also be specified	with two
points.	 This angle is used for	all new	texts.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_TEXT_SIZE
V_TEXT_SIZE macro

-->(V_TEXT_SIZE)-->|number|-->


V_TEXT_SIZE sets the current text height, which	is used	for new	texts.	As
usual, this number is in user units.   The text	size  is  normally  the	 height
of  a capital letter (see DEFINE_FONT).	 The default is	3.5 mm.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_TEXT_RATIO
V_TEXT_RATIO macro

-->(V_TEXT_RATIO)-->|number|-->


V_TEXT_RATIO  sets  the	current	ratio of character width to height.   This is
the ratio used for new texts.	The default is 1.  The text height is determined
by V_TEXT_SIZE.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_CREATEVAR_CONST
V_CREATEVAR_CONST macro

->(V_CREATEVAR_CONST)---+------|number|----+---->
			|		   ^
			'--|expression|----'


V_CREATEVAR_CONST allows you to	define values to system	created	constand
variable. Only numbers or expressions are allowed as values.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_LOAD
V_LOAD macro

-->(V_LOAD)---->|file name|--->


V_LOAD loads a stored  base model of a variation part with the named file. Files
are stored with	V_STORE. The length of the file	name is	limited	to 14
characters.

In VARIATION DESIGN mode not possible.
================================================================================
^V_STORE  DEL_OLD
V_STORE	macro

-->(V_STORE)--->+-------------->+->|file name|--->
		|		|
		`-->(DEL_OLD)-->'


V_STORE	stores the base	model of a variation part, the variation program
V_VARIATION_PROG, the environment data,	the original parameter settings	and the
two macros V_prog_start	and V_prog_end	to the named file. If the named	file
already	exists,	you must use the DEL_OLD option. The length of the file	name is
limited	to 14 characters.  Files are readable with V_LOAD.

In VARIATION DESIGN mode not possible.
================================================================================
^V_SAVE_TABLE
V_SAVE_TABLE macro

---->(V_SAVE_TABLE)---->|string|---->


V_SAVE_TABLE saves the current settings	of the variation table.	 (see also
V_INPUT_TABLE).	 V_SAVE_TABLE could not	be used	inside macros.

In VARIATION DESIGN mode not possible.
================================================================================
^V_INPUT_TABLE
V_INPUT_TABLE macro

---->(V_INPUT_TABLE)---->|string|---->


V_INPUT_TABLE load a stored Variable table and activates it (see also
V_SAVE_TABLE).	V_INPUT_TABLE can not be used inside macros.

In VARIATION DESIGN mode not possible.
================================================================================
^V_VERSION
VERSION	function

-->(V_VERSION)-->


V_VERSION displays version information about the variation design module.
================================================================================
^V_VARIATION_START
V_VARIATION_START macro

->(V_VARIATION_START)----|partname|---->|origin	point|-->


V_VARIATION_START starts the VARIATION DESIGN mode. The	current	environment
settings are stored and	are part of the	VARIATION DESIGN DATA.
================================================================================
^V_VARIATION_END
V_VARIATION_END macro

->(V_VARIATION_END)---->


V_VARIATION_END	ends the VARIATION DESIGN mode.
================================================================================
^V_VARIATION_RESTART
V_VARIATION_RESTART macro

->(V_VARIATION_RESTART)---|cmpnt of a variation	part|---->


V_VARIATION_RESTART allows you to restart an existing variation	part to	modify
it or to add new elements to the variation model.

In VARIATION DESIGN mode not possible.
================================================================================
^V_VARIATION_BREAK
V_VARIATION_BREAK macro

->(V_VARIATION_BREAK)------>


V_VARIATION_BREAK cancels the variation	mode back to the normal	mode.  It
deletes	all inputs done	in VARIATION DESIGN MODE.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_DELETE
V_DELETE macro

		 ,--------------------------------------,
		 v					|
-->(V_DELETE)----+------|point on element|--|CONFIRM|---+-->


V_DELETE deletes the selected element after CONFIRM. Elements with  references
to the selected	element	are also deleted.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_DELETE_ALL CLEAR_ALL
V_DELETE_ALL macro

-->(V_DELETE_ALL)------|CONFIRM|----->


V_DELETE_ALL deletes all elements defined in variation design mode.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_UNDO
V_UNDO macro

-->(V_UNDO)---->


V_UNDO deletes the last	element. V_UNDO	can be used up to the first element
entry.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_SETVAR
V_SETVAR macro

->(V_SETVAR)------>


V_SETVAR provides the graphic interactive way, in form of a table, to redefine
parameter values of an existing	variation model	in case	of a variation.
Possible parameter values can be :

		      *	a number
		      *	an expression
		      *	a string like 'D5'
		      *	a string expression like '(D5+R2)'


In VARIATION DESIGN mode not possible.
================================================================================
^V_RESETVAR
V_RESETVAR macro

->(V_RESETVAR)------>


V_RESETVAR activates the original parameter values of an existing variation
model if you have changed it and you want to change back to the	original
parameter values.

In VARIATION DESIGN mode not possible.
================================================================================
^V_CHANGE_LABEL_POS
V_CHANGE_LABEL_POS macro


->(V_CHANGE_LABEL_POS)--+--|point on LABEL|--|new LABEL	position|-+--->
			^					  |
			'-----------------------------------------'


V_CHANGE_LABEL_POS repositions the LABEL (text)	position.
================================================================================
^V_LABEL_SIZE
V_LABEL_SIZE macro

-->(V_LABEL_SIZE)-->|number|-->


V_LABEL_SIZE sets the current label height, which is used for labels.  As usual,
this number is in user units.
================================================================================
^V_CHANGE_LABEL_SIZE
V_CHANGE_LABEL_SIZE macro

				     ,----------------,
				     v		      |
-->(V_CHANGE_LABEL_SIZE)-->|number|--+->|pt on LABEL|-+->
				     |		      |
				     '->|pts of	box|--^


V_CHANGE_LABEL_SIZE changes the	character size of the selected LABEL text. The
number given is	the new	label height. The label	width is  updated  according to
the element's text ratio (see TEXT_RATIO).
================================================================================
^V_SHOW_LABEL
V_SHOW_LABEL macro

				       ,----------------,
				       v		|
--->(V_SHOW_LABEL)--->+--->(OFF)-->+-->+-|pt on	LABEL|--+--+->
		      |		       |		^  |
		      |		       '->|pts of box|--'  ^
		      |					   |
		      '----(ON)----------------------------'


V_SHOW_LABEL OFF allows	you to selectively turn	off labels  or	to  show all
labels ON.
================================================================================
^V_GET_INFO_CONST
V_GET_INFO_CONST macro

-->(V_GET_INFO_CONST)---|pnt on	element|-->


V_GET_INFO_CONST shows you the constraints and dependencies of the selected
element.
================================================================================
^V_SETVAR_FEEDBACK
V_SETVAR_FEEDBACK  macro

-->(V_SETVAR_FEEDBACK )->-+-(ON)-->-+---->
			  |	    ^
			  '-(OFF)---'


V_SETVAR_FEEDBACK ON/OFF switches the constraint feedback for V_VARSET on or
off.  Default is ON. Set in var_defaults.
================================================================================
^V_DRAW
V_DRAW macro

->(V_DRAW)------>


V_DRAW creates a new part related to the activated variation model and draws 
the  the  new  calculated image of the variation model,   based on the actual 
parameter settings.

In VARIATION DESIGN mode not possible.
================================================================================
^V_VARIATION_PROG
V_VARIATION_PROG macro

V_VARIATION_PROG includes the variation	program	like:

DEFINE V_variation_prog
  LOCAL	**
  LOCAL	**
  {V_VERSION}
  {create date}
  {ME10 VERSION}
  V_prog_start {customizable}
  *
  * {elements}
  *
  V_prog_end   {customizable}
END_DEFINE


The macros V_prog_start	and V_prog_end are customizeable and can be modified by
the user. V_STORE saves	these macros and V_LOAD	activates it. With
V_VARIATION_START these	macros are initialized.
================================================================================
^V_CURRENT_DIM_TEXTS
V_CURRENT_DIM_TEXTS macro


->(V_CURRENT_DIM_TEXTS)--|size|---->


V_CURRENT_DIM_TEXTS  specifies the text height of  new dimensions.
default: 3.5mm

Only possible in VARIATION DESIGN mode.
================================================================================
^V_DIM_TEXT_ORIENTATION
V_DIM_TEXT_ORIENTATION macro

-->(V_DIM_TEXT_ORIENTATION)---+---(HORIZONTAL)------+----->
			      |			    |
			      +---(VERTICAL)--------+
			      |			    |
			      +---(PERPENDICULAR)---+
			      |			    |
			      +---(PARALLEL)--------+


V_DIM_TEXT_ORIENTATION	specifies the orientation of the texts of new
dimensions.  They may be horizontal, vertical or parallel to the dimension line,
or perpendicular to it.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_DIM_TEXT_LOCATION
V_DIM_TEXT_LOCATION macro

-->(V_DIM_TEXT_LOCATION)-----+---(BELOW)---+----->
			     |		   |
			     +---(ON)------+
			     |		   |
			     +---(ABOVE)---+


V_DIM_TEXT_LOCATION specifies that the text for	new dimensions should  be
below, on, or above the	dimension line.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_DIM_DATUM_STEP
V_DIM_DATUM_STEP macro

-->(V_DIM_DATUM_STEP)---|number|--->


V_DIM_DATUM_STEP specifies the space between dimension lines of	a datum
dimension. This	value is used for new datum dimensions.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_DIM_MIN_SPACE
V_DIM_MIN_SPACE	 macro

-->(V_DIM_MIN_SPACE)---|number|--->


V_DIM_MIN_SPACE	sets the minimum space between the geometry and	the dimension
lines for new dimensions.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_CURRENT_DIM_UNITS
V_CURRENT_DIM_UNITS macro


 -->(V_CURRENT_DIM_UNITS)--+-(MM)----------->---+----->
			   v			|
			   +-(MT)------------>--+
		           |    	        |
		           +-(CM)------------>--+
		           |			|
            		   +-(KM)------------>--+
	            	   |			|
		           +-(INCHES)-------->--+
		           |			|
		           +-(FRACT_INCH)---->--+
		           |			|
		           +-(FT_FRACT_INCH)->--+
		           |			|
		           +-(FT_FRACT_IN_SIGN)>+
		           |			|
		           +-(FT_FRACT_IN_TEXT)>+
		           |			|
		           +-(DEGREE)---------->+
		           |			|
		           +-(RADIAN)---------->+
		           |			|
		           +-(DEG_MIN_SEC)----->+



V_CURRENT_DIM_UNITS specifies the dimension units for MAIN_DIM you want to work 
with.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_DIM_PREFIX 
V_DIM_PREFIX macro

-->(V_DIM_PREFIX)---|'string'|---------->

V_DIM_PREFIX allows you to add a  prefix  string  to  a  dimension  text.
This command should be used before the correspondent dimension command and
is only active for these next command.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_DIM_POSTFIX 
V_DIM_POSTFIX macro

-->(V_DIM_POSTFIX)-----|'string'|------->

V_DIM_POSTFIX allows you to add a  postfix  string  to  a  dimension  text.
This command should be used before the correspondent dimension command and
is only active for these next command.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_DIM_ANGLE 
V_DIM_ANGLE macro


                                    +--------------------<-------------------+
                                    |                                        |
->(V_DIM_ANGLE)-+-----(DIRECT)----+-+-|line_1|----|line_2|--|location_pnt|---+->
                ^                 |
                +---(OPPOSITE)----+
                |                 |
                +--(ADJACENT_POS)-+
                |                 |
                +--(ADJACENT_NEG)-+

V_DIM_ANGLE creates an angle  dimension. You identify two lines, then a location
point for the  dimension  text. The lines must not be parallel  and the location
point must not be at the intersection of the two lines.

To specify how the two arms of an angle should be dimensioned use the following
options:
DIRECT, OPPOSITE,  ADJACENT_POS, and ADJACENT_NEG.  The four different positions
are:

                         DIRECT
                      \          /
                       .2        .1
                        \      /
                         \    /
           ADJACENT_POS   \  /  ADJACENT_NEG
                           \/

                        OPPOSITE


Only possible in VARIATION DESIGN mode.
================================================================================
^V_DIM_ARC
V_DIM_ARC macro

		,----------------------------------,
		v				   |
-->(V_DIM_ARC)--+---|elem_1|--|elem_2|--|loc_pnt|--+--->



DIM_ARC	creates	an arc dimension.  You identify	the end	points of an arc (or of
two arcs, as long as they have the same	center and  radius),  then  indicate  a
point for the dimension	text.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_DIM_DATUM_LONG
V_DIM_DATUM_LONG macro


->(V_DIM_DATUM_LONG)--{1}---+---{2}-->-+->
			    |	       ^
			    '---{3}----'

{1}---+-(PARALLEL)------>--------------+---->
      |				       |
      +-(HORIZONTAL)---->--------------+
      |				       |
      +-(VERTICAL)------>--------------+
      |				       |
      +-(PARALLEL)------>--------------+
      |				       |
      +-(PERPEND_TO_LINE)-->----|line|-+
      |				       |
      '-(PARALLEL_TO_LINE)->----|line|-'


{2}--->--+(AUTO)+-|beg_elem|--|end_elem|--|loc_pnt|--+----->-----------+-->
	 v	^				     v		       ^
	 '------'				     | +---<---------+ |
						     | |	     | |
						     '-+-|end_elem|--+-'

			       ,---------------<---------,
			       |			 |
{3}--->--(MANUAL)--|beg_elem|--+--|end_elem|--|loc_pnt|--+----->



V_DIM_DATUM_LONG creates datum dimensioning with a long	base line. The dimension
between	any two	points may be  HORIZONTAL,  VERTICAL,  PARALLEL, PERPEND_TO_LINE
or PARALLEL_TO_LINE.

With both MANUAL and AUTO, beg_elem and	end_elem are the begin and end	points
of  the	dimension,  and	 loc_pnt  is  the  location of the dimension line.  With
AUTO (the default), you	give loc_pnt only once;	the system then	 automatically
chooses	 the lpnt  for	subsequent  dimensions.	  With	MANUAL,	 you  give  an
loc_pnt	for each dimension.  It	is possible to mix AUTO	and MANUAL within the
same command.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_DIM_DATUM_SHORT
V_DIM_DATUM_SHORT macro


->(V_DIM_DATUM_SHORT)--{1}---+---{2}-->-+->
			     |		^
			     '---{3}----'

{1}--->-(PARALLEL)------>--------------+---->
      |				       |
      +-(HORIZONTAL)---->--------------+
      |				       |
      +-(VERTICAL)------>--------------+
      |				       |
      +-(PARALLEL)------>--------------+
      |				       |
      +(PERPEND_TO_LINE)-->-----|line|-+
      |				       |
      +(PARALLEL_TO_LINE)->-----|line|-+


{2}--->--+(AUTO)+-|beg_elem|--|end_elem|--|loc_pnt|--+----->-----------+-->
	 v	^				     v		       ^
	 '------'				     | +---<---------+ |
						     | |	     | |
						     '-+-|end_elem|--+-'

      ,--------------<---------,
      |			       |
{3}---+--(MANUAL)--|beg_elem|--+--|end_elem|--|loc_pnt|-------->


V_DIM_DATUM_SHORT creates datum	dimensioning with a short base line. The
dimension between any two points may be	 HORIZONTAL,  VERTICAL,	 PARALLEL,
PERPEND_TO_LINE	or PARALLEL_TO_LINE.

With both MANUAL and AUTO, beg_elem and	end_elem are the begin and end	points
of  the	dimension,  and	 loc_pnt  is  the  location of the dimension line.  With
AUTO (the default), you	give loc_pnt only once;	the system then	 automatically
chooses	 the lpnt  for	subsequent  dimensions.	  With	MANUAL,	 you  give  an
loc_pnt	for each dimension.  It	is possible to mix AUTO	and MANUAL within the
same command.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_DIM_DIAMETER
V_DIM_DIAMETER macro

					  +-----------<--------------------+
					  |				   |
-->(V_DIM_DIAMETER)-+-(CENTER_LINE)----+--+-----|arc|-----|loc_pnt|--------+--->
		    v		       |
		    '-(NO_CENTER_LINE)-'


V_DIM_DIAMETER	creates	a diameter dimension. You first	identify a circle, arc,
or fillet, then	indicate the text location.

CENTER_LINE/NO_CENTER_LINE  controls whether a diameter	line is	present
(CENTER_LINE) or not (NO_CENTER_LINE).

Only possible in VARIATION DESIGN mode.
================================================================================
^V_DIM_LINE
V_DIM_LINE macro

					 ,---------<---------------------,
					 |				 ^
-->(V_DIM_LINE)	---{1}-------------------v-|elem_1|-->|elem_2|->|loc_pnt|+>


       ->{1}-----+-(PARALLEL)--+---------+-----------+---->
		 |	       |	 |	     |
		 v	       +-|angle|-+	     |
		 |				     |
		 +-(HORIZONTAL)----------------------+
		 |				     |
		 +-(VERTICAL)------------------------+
		 |				     |
		 +---(PERPEND_TO_LINE)--------|line|-+
		 |				     |
		 +---(PARALLEL_TO_LINE)--|line|------+



V_DIM_LINE creates line	dimensions. The	dimension between any two points may be
HORIZONTAL, VERTICAL, PARALLEL,	PERPEND_TO_LINE	or PARALLEL_TO_LINE. With
PARALLEL, the extension	line angle can be set between -60 and 60 degrees; the
default	 is  0 degrees,	producing the usual perpendicular extension lines.

Only possible in VARIATION DESIGN mode.
================================================================================
^V_DIM_RADIUS
V_DIM_RADIUS macro

					,---------<----------------------,
					|				 |
-->(V_DIM_RADIUS)-+-(CENTER_LINE)->--+--+-----|arc|-----|loc_pnt|--------+--->
		  |		     ^
		  '-(NO_CENTER_LINE)-'



V_DIM_RADIUS  creates a	radius dimension. You first identify an	arc, circle, or
fillet,	then indicate the dimension text location. (see	also DIM_RADIUS)

CENTER_LINE/NO_CENTER_LINE specifies how new radius dimensions are drawn.
CENTER_LINE means  that	the  radius  line  is extended to the center;
NO_CENTER_LINEF, that it stops at the element being dimensioned.

Only possible in VARIATION DESIGN mode.
================================================================================
^Tm_variation_design
^Sm_variation_design
^VARIO_CHECK
^VARIO_LOAD_SUB
^VARIO_STORE_SUB
Tm_variation_design macro

VARIATION DESIGN (sometimes called parametric or modular design) allows you to 
change the shape, dimensions, and so on, of a component.



