NODAL

The comprehensive PS Nodal manual

Please regard this as a historic document. Not all the features that are described in this legacy man-page, will necessarily be available in your particular Nodal distribution.

NODAL(local)

NAME
       Nodal   -   high-level programming language for accelerator controls

SYNOPSIS
       nodal [option...]  [nodal command]

DESCRIPTION
       The Nodal starts the Nodal language interpreter according to the speci-
       fication given by the Options and Parameters.

       The Nodal language is a high-level programming language with  two  spe-
       cial features. The first is a syntax which supports multi-computer net-
       work programming. The second is the extensive string  handling  feature
       which is required to support good programs for operator interface.

       Nodal is an interpretive language based on FOCAL and SNOBOL4, with some
       influence from BASIC.

OPTIONS
       During the start-up phase, the nodal command parameter (if  it  exists)
       is  taken as a command line, and it is executed.  It is strongly recom-
       manded to enclose the nodal command with quotation characters (see UNIX
       shell).   This  feature  must  be  used to customize the environment of
       Nodal servers ( IMEX, EXEC and FILE ), because they are not sensible to
       NODAL_INIT environment variable.

       By default, nodal starts an interactive session.

       The various options described below select other running conditions.

       The following options specify the running conditions :

       -DFsize size
              Redefine  the  size  of  the  Nodal Defined Functions Area.  The
              actual size is given by the following argument. It represent the
              requested  size  in  kilo double bytes. This value must be posi-
              tive. If it is larger than the maximum allowed, or less than the
              minimum, the extremum value is used.

              Example : nodal -DFsize 16

-display hostname:number
-d hostname:number
       The  display  option specifies the display screen on which the X Server
       is to accept requests from Nodal  (the  X  clients).   If  the  display
       option  is  not  specified, X uses the display screen specified by your
       DISPLAY environment variable.  The display option has the format  host-
       name:number.
       hostname  Specifies  the  name of the host machine on which the display
                 is connected.  You can specify the name  unix  or  leave  the
                 field blank to use UNIX IPC, or the name of your host machine
                 to use TCP.
       number    Specifies the number of the display on that host machine.
                 The default is :0.

-filedriven
-f     Start nodal as an autonomous process, disconnected from the parent ter-
       minal  group.  The nodal type is declared to be file_driven.  The stan-
       dard output is always connected to the standard output of the parent.
       This facility is normally provided to start a  file-driven  nodal  pro-
       gram.  The  result is exactly the same as the nodal START function. The
       resulting process is less  depending  on  the  parent  than  a  process
       started in shell background mode with the metacharacter & at the end of
       a C shell command line.

       Example: nodal -f run my_program.nod
       run my_program as an autonomous process.

       server and filedriven are incompatible options, and server  has  prior-
       ity.

-help
-h
-?     Prints out a summary of command line options.

-history
-hist  To force the "reloading the past history". The past history is reloaded
       from the last saved history in the file .nodal_history  (or  nodal_his-
       tory for MS-DOS) in the directory defined by the HOME environment vari-
       able.  The history list is normally saved into .nodal_history file when
       Nodal exit. It is not saved if the option -nohistory is used, or if the
       environment variable HOME is not defined.
       An other way to force the reload of  the  history  is  the  environment
       variable NODAL_HISTORY (see ENVIRONMENT VARIABLES chapter).

       The reload history facility is only effective for interactive Nodal.

-name application name
-n application name
       The name option specifies the name of the Nodal application.

       These  options  (display and name)  are only available for Unix version
       generated with X Window facilities.

-nohistory
-nohist
       To prevent the reloading of history list from the  saved  history  file
       when Nodal start and the saving of the current history when Nodal exit.

-op_machine accelerator_name
       Define the operational account  environment  (the  accelerator  class),
       this  value  is  used  to  build the Read Only string Nodal environment
       variable OPMACH.  This option overwrite the value  of  the  Unix  shell
       environment variable OP_MACHINE if it exists.

       Example: nodal -op_machine LPI

-pls pls_line_name pls_line_number
       Define a read only Nodal environment variables called PLSLIN (string) :
       pls line name and OPTSEL (numerical) : pls line value, which  have  the
       value of the option (the following argument).  The string is setup with
       the first part of the option value (up to the first  space  character),
       and  the  value  with  the following part taken as an integer value. If
       only a single string is given, it is taken as the name, and if it is an
       integer value, it is taken also as the pls line value.
       At  CERN PS this variable handle normally the name and the value of the
       current Pls line option selected to run the program.
       This option will overwrite the pls line defined by  the  PLS_LINE  Unix
       shell environment variable if it exists.
       The  first  token from the first part of the option will be used to try
       to setup the PLSTLG Read only environment variable if the  pls_telegram
       is not defined.

       Example: nodal -pls "CPS.USER.SFT 33"

-pls_telegram telegram_name
       Define  a  read  only  Nodal  environment variables called PLSTLG : pls
       telegram number, which is the telegram environment for the  PLS  condi-
       tion  (currently CPS = 0, PSB = 1, LPI = 2 ...).  This option overwrite
       the value of the Unix shell environment  variable  PLS_TELEGRAM  if  it
       exists.

       Example: nodal -pls_telegram PSB

-server server_class
-s     Start the Nodal network server specified by server name parameter(s).
       More  than one server can be started at the same time if the parameters
       list contains all the server names.
       The currently available Nodal network servers are the Immediate Execute
       server  (  server  name  = IMEX , Remote Execute server ( server name =
       EXEC ) and Nodal File server (only on Unix computers ) ( server name  =
       FILE ).

       In  the  case  of PC MS-DOS system, when either IMEX or EXEC server are
       started, both services IMEX and EXEC are provided and  some  restricted
       interactive  Nodal  facility  are also available with a fixed 32k Nodal
       words working area.  For more detail on the special case of  PC  MS-DOS
       refer  to  the  dedicated chapter on PC MS-DOS at the end of this docu-
       ment.

       Example: nodal -s IMEX EXEC
       If the servers are not yet running they are started. A short message is
       printed on the standard output device.

       server  and  filedriven are incompatible options, and server has prior-
       ity.

-specialIO
-spIO  Make the special IO Nodal functions (private functions) visible.
       These functions are an extension of the user functions (which  is  dis-
       played  by  the LUST call). These special IO functions can be dangerous
       for the integrity of the system, and must be used only by the  special-
       ist and are normally foreseen for special debugging case.
       These  functions  are  not  documented in the present manual or on line
       facility, you must refer to your Nodal  Lynx-OS  functions  dealer  for
       informations.
       The number of functions which are in this list is displayed by the LUST
       call when this option is in use.  These functions are at the end of the
       sequential linear list.

       This facility is only useful on Lynx-OS systems.

-trace
-t     Put the trace condition on.
       For  interactive Nodal (default mode) a printout is produced during the
       start-up phase which gives :
       - the name of the terminal, as specified by the TERM environment  vari-
         able, and the device name
       - the  keyboard  escape  sequences,  as extracted from the termcap data
         base ( "kl kr ku kd kh is" entries are extracted ).
       For Nodal network server , the trace prints the major network events.

-WAsize size
       Redefine the size of the Nodal Working Area. The actual size  is  given
       by the following argument. It represent the requested size in kilo dou-
       ble bytes. This value must be positive. If it is larger than the  maxi-
       mum allowed, or less than the minimum, the extremum value is used.

       Example: nodal -WAsize 180

-wset working_set_name
       Define  a read only string Nodal environment variable called WSET which
       as the value of the  option  (the  following  argument).   At  CERN  PS
       attache also the named working set.
       This  option  will overwrite the working set defined by the WORKING_SET
       Unix shell environment variable if it exists.

       Example: nodal -wset LPI:LIL-HF

-xterm X_terminal_window_name
-xterm environment variable X_terminal_window identifier
       The xterm option specifies the name of the X terminal  emulator  window
       or  the  name  of  an environment variable which provide the X terminal
       window identifier numerical value, over which Nodal  is  running.  This
       name will be used to retrieve the window identifier when X window Nodal
       facility will be used.
       If this option is used, the Xdisplay on which the Xterm is running must
       be  the  same  as the one specified by display option or by the DISPLAY
       global environment variable.
       This option is normally used by the console manager to  start  a  Nodal
       application, and must be used only with great care by hand.

REFERENCE MANUAL
       The  reference  manual  for Nodal language is  The Nodal System For the
       SPS, CERN 78-07 ( CERN yellow report ).  In this manual, any  implemen-
       tation detail is not relevant for the UNIX and C version.

       The main variations from this reference (restrictions or additions) are
       described in the following chapters.

UNIX ENVIRONMENT VARIABLES
       The UNIX environment variables used by Nodal are :

       EDITOR to specify the page editor (full  screen  editor)  used  by  ped
              facility.

       EQM_PROP_NAME
              to  overwrite the full path name of the symbol file used to load
              equipment  access  symbol  (properties  and  equipment   modules
              names).
              The default full file name path is defined from the global envi-
              ronment directory (or its  default  value)  as  defined  by  the
              NODALPATH  environment  variable.  The default file name in this
              directory is property_eqm_list.

       FTP_ETC for MS-DOS systems
              this variable defines the directory path for the PC/TCP services
              and  for  the  ND48_hosts configuration files. The files used by
              the PC/TCP socket library are : "PROTOCOL" and "SERVICES" (  ref
              the  "PC/TCP Socket Libraries Reference Guide paragraph 1.1.4 ).
              For the ND48 computer configuration file : "ND48_hosts"  ref  to
              the source file : ipaddr_filter.c

       NODAL_FILE_SERVER
              to  specify  the default remote computer and directory to be use
              for Nodal file access. This  default  mechanism  apply  only  to
              Nodal files. And particularly the default directory does not act
              on system call ( remote sh shell access ).
              The Nodal function which used the default  remote  computer  and
              directory are : LOAD, OLD, LDEF, OVERLAY, RUN, CHAIN, SAVE, SDEF
              and for one of the two files of FCOPY function.
              Only Unix system can be used as a Nodal File Server.

              This feature is useful only for system (like OS9) which does not
              provide access to network distributed file system.

       NODAL_HISTORY
              to  define  the "reload past history" strategy. A positive value
              will force to reload  the  last  saved  history  from  the  file
              .nodal_history  (or  nodal_history  for MS-DOS) in the directory
              defined by the HOME environment variable.  A negative value will
              not  reload the past history, excepted if the option -history is
              used.
              If the environment variable HOME does not exist, or is empty, no
              saving  and  restoring  are done.  If the variable NODAL_HISTORY
              does not exist, the history is by default reloaded, and the size
              is the default history list size is used.
              The  absolute  value will define the minimum size of the history
              list. Its maximum size is limited to 200 lines.   A  zero  value
              will not reload the past history (the history list will be empty
              on Nodal start).  If the variable NODAL_HISTORY does not  exist,
              the  history is by default reloaded, and the size is the default
              history list size is used.
              The other way to force the reload of the history is  the  option
              flag -history (see OPTIONS chapter).
              The  history  list  is by default saved into .nodal_history file
              when Nodal exit. If the option -nohistory is  used,  not  saving
              and reloading are done.
              The  history  save  file  is  a  standard text file which can be
              manipulated with any of the normal ascii file editing tools.

              The reload history facility is only  effective  for  interactive
              Nodal.

       NODAL_INIT
              to  specify  an  initial command to Nodal in order to customized
              the environment. The main use of this facility  is  normally  to
              load  external  functions and data in the Nodal environment, and
              more generaly to customize automatically the  Nodal  environment
              to  the  user  needs.   The  value of the NODAL_INIT variable is
              taken as a pure Nodal command line and it is executed initially,
              even before the nodal command parameter.
              The  defined  functions  (global  from shared memory segment, or
              local) and the global data which are linked or  loaded  by  this
              command  are declared as non volatile (frozen) and are no erased
              by ZDEF command. This provide a way to defined the stable  envi-
              ronment of the program.
              If  some  error is detected during the execution of this initial
              command the execution of this command line it  stopped  at  this
              point,  an  error  message is printed and the start up procedure
              continues normally.

              For interactive Nodal, it is  also  possible  to  customize  the
              environment  with  the  .nodal_profile  file in the current user
              home directory (as defined by the HOME environment variable).

       NODAL_MAN_PATH
              to define the full directory path name where to find the nodal "
              man  page"  file : nodal.man, or to define the full path name of
              the man page file.  This path is used by the MAN function.   The
              default  directory  for  the nodal.man file is /usr/man/manl/ or
              the current directory.  Ref to MAN function description for more
              information.

       NODALPATH
              to  define the full directory path name where to find the global
              environment files for Nodal. These files  are  property_eqm_list
              and ps_console_emul.uid.
              If  this  environment  variable  is not defined, or is empty the
              default directory path  is  /mcr/nodal  (or  /dsc/bin/nodal  for
              Lynx-OS) or /usr/local/nodal.

       PLS_LINE
              To  define a read only string Nodal environment variables called
              PLSLIN (string) : the pls line name and OPTSEL (numerical) : pls
              line  value,  which  have the value of the environment variable.
              The string is setup with the first part of the option value  (up
              to  the first space character), and the value with the following
              part taken as an integer value.  If  only  a  single  string  is
              given,  it  is taken as the name, and if it is an integer value,
              it is taken also as the pls line value.
              At CERN PS this variable handle normally the name of the current
              Pls line option selected to run the program.
              The  first  token of the string will be used to try to setup the
              PLSTLG Read only environment variable if the pls_telegram is not
              defined.
              This value can be overwritten by the -pls Nodal option.

       PS_CONSOLE_EMUL_UID
              to  overwrite  the  full path name of the console emulation user
              interface definition UID file.
              The default full file name path is defined from the global envi-
              ronment  directory  (or  its  default  value)  as defined by the
              NODALPATH environment variable. The default file  name  in  this
              directory is ps_console_emul.uid.

       PS_SCREEN_EMUL_UID
              to  overwrite the full path name of the console screen emulation
              user interface definition UID file, used by the XPSINIT and PSS-
              CREEN Nodal functions.
              The default full file name path is defined from the global envi-
              ronment directory (or its  default  value)  as  defined  by  the
              NODALPATH  environment  variable.  The default file name in this
              directory is ps_screen_emul.uid.

       PS_XNODAL_UTIL_UID
              to overwrite the full path name of the console convenient window
              and graphic definition UID file.
              The default full file name path is defined from the global envi-
              ronment directory (or its  default  value)  as  defined  by  the
              NODALPATH  environment  variable.  The default file name in this
              directory is plot_screen_utl.uid.

       TERM   to specify the terminal type, used by  line  editing.   If  this
              environment variable is not defined, or if no entry exist in the
              termcap terminal data base, a default  vt200  terminal  type  is
              assumed.

       WORKING_SET
              To  define  a read only string Nodal environment variable called
              WSET which as the value of the option (the following  argument).
              At CERN PS attache also the named working set.
              This value can be overwritten by the -wset Nodal option.

       SOS_CONSOLE
              To define the connection between work-station and CERN PS opera-
              tor console. SOS_CONSOLE gives  the  SOS  Console  number.   The
              default connection is defined in the Oracle PS Control data base
              (with the network menu application, by the menu 7.   "Sos  Work-
              stations")  and  is available through the DBRT on-line read only
              data base.

NODAL ENVIRONMENT VARIABLES
       The Nodal environment variables are a set of variables which  are  cre-
       ated  during  the  start-up  of  Nodal according to the general context
       defined to run the program. These variables are  private  variables  to
       the  Nodal  process,  and their life time is the life time of the Nodal
       process itself. They cannot be erase by Nodal commands like erase, old.
       The initial set of Nodal environment variables can be later on enriched
       when some specialized context is fetched by specific function call (for
       example  by  the  psconsole  emulation context fetch facility). In this
       case these extra variables are normally destroyed by the function which
       destroy  the context (for example by xpurge which destroy the psconsole
       emulation context).
       These variables are normally read only variables.

SPECIAL FILES
       Three classes of special files are used by Nodal :
       common set up files, private environment definition files,  and  tempo-
       rary files.

       1 - Common set up files

       nodal.man
              The  nodal  man page, in /usr/man/manl (this man page file) , is
              used by the MAN function for on line help. This function extract
              from  this file the needed paragraph, and display it through the
              nroff and more process.

       property_eqm_list
              If the configuration provides equipment access facility the file
              property_eqm_list  in  the  global environment directory (or its
              default value) as defined by the NODALPATH environment  variable
              is read during initialization.
              This  file  provide  the  equipment  symbols value, for property
              names and equipment module names (if remote access to  equipment
              is used).
              This  file  name can be overwritten by the value of the environ-
              ment variable EQM_PROP_NAME.

              The format of a line of this ascii file is : 3 mandatory  fields
              separated by one or more space character.
              i)  the  symbol type value (1 for property, 2 for equipment mod-
                  ule).
              ii) the name of the symbol (max 8 characters, in upper case).
              iii)
                  the symbol value (an integer value).
              The remaining part of the  line  if  it  exist  is  taken  as  a
              description text.
              Any  line  which does follows this format specification or which
              starts with the ’#’ character in the first column is taken as  a
              comment line : it is completely ignored.

              Example of lines:
              2 POW 3  general power converter equipment module
              1 CCV 256

       /tmp/NODAL/NODAL_IPC
              Empty file used for IPC key generation by the UNIX function ftok
              for shared memory segments used by global  variables  and  func-
              tions.  (ref to Global Data and Shared Functions chapter).

       ps_console_emul.uid
              this  file  in  the global environment directory (or its default
              value) as defined by the NODALPATH environment variable is  read
              during console emulation package initialization.
              This  file describes the Motif user interface definition for the
              console emulation facility.  This file is loaded by the PSCONSOL
              function.
              This  file  name  can be overwritten by the environment variable
              PS_CONSOLE_EMUL_UID .

              This file is a UID file produced by the UIL Motif compiler.   It
              must  follow  some strict rules imposed by the console emulation
              and screens package to define a correct user interface  for  the
              console emulation package.

       ps_screen_emul.uid
              this  file  in  the global environment directory (or its default
              value) as defined by the NODALPATH environment variable is  read
              when  a  standard  Nodal  user  interface  definition is load by
              XPSINIT.
              This file describes the Motif user interface definition for  the
              optional screens emulation facility. These screens can be latter
              fetched by PSSCREENfunction.
              This file name can be overwritten by  the  environment  variable
              PS_SCREEN_EMUL_UID .

              This  file is a UID file produced by the UIL Motif compiler.  It
              must follow some strict rules imposed by the  console  emulation
              and  screens  package to define a correct user interface for the
              screen emulation package.

       plot_screen_utl.uid
              this file in the global environment directory  (or  its  default
              value)  as defined by the NODALPATH environment variable is read
              during initial calls to window and graphic convenient  functions
              like XPLOT.
              This  file  describes  the  Motif  user interface definition for
              these convenient functions.
              This file name can be overwritten by  the  environment  variable
              PS_XNODAL_UTIL_UID .

              This  file is a UID file produced by the UIL Motif compiler.  It
              must follow some strict rules imposed by the  console  emulation
              and  screens  package to define a correct user interface for the
              console emulation package.

       /etc/ND48_hosts
              this file, if it exit, define the configuration of special ND 48
              bits  computers.  If it does not exit the configuration is taken
              from a default description as  defined  in  the  ipaddr_filter.c
              source file.
              For  MS-DOS  system  this  file  is  $(FTP_ETC)\ND48_hosts or by
              default if FTP_ETC is not defined : C:\etc\ND48_hosts

              This file is a pure ASCII file consisting of 3 types of lines :
              - empty or comment (when the first non space character is #) :
                ignored
              - range  of  special  computer IP address : defined by a pair of
                computer identifiers separated by one or  more  space  charac-
                ters.
              - single special computer : a single computer identifier
              The  2  last types of lines can be ended by a comment (beginning
              by #).

              A computer identifier can be either  its  IP  address  in  dot
              notation  or  one  of  the  official  computer names or alias as
              defined in the computer hosts data base.

              For Nodal start-up it is more efficient  to  use  the  IP  dot
              address notation.

              Example of /etc/ND48_hosts file

              #  list  of  ND  48  bits computers ( /etc/ND48_hosts file ) for
              CERN/PS
              192.91.236.230    192.91.236.254   # range [nd48-fst, nd48-lst]
              128.141.2.39    # cons6
              128.141.2.40    # cons7
              128.141.1.4     # prdev

       2 - Private environment definition and profiling files

       These special files in the current user home directory (as  defined  by
       the  HOMEenvironment  variable) are used by Nodal during start up and
       shut down.

       .nodal_profile
              used for profiling of the Nodal environment (only executed  when
              Nodal  start  in interactive mode). This file must be a standard
              text file, produced by any normal UNIX text editor.  The  format
              of the file produced by the LEARN function is perfectly suitable
              for this profile file.
              The content of this file must be a suite of Nodal command  line.
              Any line longer than 80 characters will be truncated to 80 with-
              out any notice.
              Any error which occur during the profiling will stop the profile
              process at this point.

       .nodal_history
              This  file is automatically produce at the end of a Nodal inter-
              active session.  It content a copy of the current history  list.
              This  file will by the input to reload the history list on start
              up of Nodal if this feature is activated by the -history  option
              of with the NODAL_HISTORY environment variable.
              This  file is a standard text file which can be manipulated with
              any of the normal UNIX tools, especially for editing. Its format
              is compatible with the learn and profile files.

       3 - Temporary files

       /tmp/nod_ped_xxxx.tmp
              The  full  screen editor function PED use this temporary file in
              /tmp directory (in fact from the directory defined  by  P_tmpdir
              from  /usr/include/stdio.h).   In  the file name the xxxx is the
              current pid of the Nodal process. This file is erase  on  normal
              completion of the editing session.
              On  UNIX  System V this file is named /tmp/ned_xxxx.tmp in order
              to fulfill the 14 characters maximum file name constraint.

       sed_temporary_file
              A temporary file created by tmpnam C standard  library  routine,
              is  use by the MAN function call to generate a commands file for
              the sed embedded editing session. This file is created using the
              path-name  defined  as  P_tmpdir  in  the <stdio.h> header file.
              Refer to man page tmpnam 3s for detail informations.

       4 - UNIX socket special files for process synchronization

       /tmp/NODAL/EVENT_CLIENT_xxxx
              The special UNIX domain socket file name used for UDP communica-
              tion  with  the local_event_server for soft synchronization with
              the process, (Ref to the chapter Process synchronization.   xxxx
              is  the pid number of the client Nodal program.  These files can
              be distroyed when the client Nodal (or other program) is no more
              running.

       /tmp/NODAL/LOCAL_EVENT_SERVER
              The special UNIX domain socket file name used for UDP communica-
              tion with the local_event_server for soft  synchronization  with
              the  process,  (Ref  to  the chapter Process synchronization and
              local_event_server man page).  This file  is  the  name  of  the
              AF_UNIX socket where subscription for process event must be send
              by client for the local_event_server process.

SOCKET PORT NUMBER
       Nodal use TCP and UDP communications for Remote execution, soft process
       synchronization  and  for  the  obsolete remote Nodal file server (only
       useful when no NFS file system is available).
       The current values of the port number  for  the  various  services  are
       retrieved  by the get service entry library call getservbyname. If this
       service is not defined in the network data base the  default  value  is
       used.

       1 - Remote execution
                 Nodal  remote  execution and immediate execution (EXECUTE and
                 IMEX command) used TCP communication with  the  remote  Nodal
                 server  trough  the  ports (the default values are defined in
                 target.h header file) :
                 nodal_EXEC default value 1789 (N_EXEC_port)
                 nodal_IMEX default value 1989 (N_IMEX_port)

       2 - Soft process synchronization
                 Nodal use now (from April 1998) the Dtmrt daemon  service  to
                 provide the soft process synchronization facility.  This dae-
                 mon is normaly started by inetd.
                 Refere to the  dtmrt  documentation  (by  Julian  Lewis  CERN
                 PS/CO)  for  more  info on the socket and port in use by this
                 service.
                 The old local_event_server and  global_event_server  are  not
                 any more in use.

       3 - Remote file (obsolete service)
                 Nodal  remote  file  access  used  TCP communication with the
                 remote Nodal server trough the ports (the default values  are
                 defined in target.h header file) :
                 nodal_FILE default value 1990 (N_FILE_port)

LINE EDITING
       The  line  editing facility is provided for video terminals.  A minimum
       of cursor control capability (back-space and overwrite) are  requested.

       Two  levels  are  available  : direct control characters and cursor and
       editing keypad.

       Control character commands :

       delete the character on the left of cursor.

       redo the last command.

       toggles the insert mode.

       return to beginning of the line.

       back space on character.

       skip to next character.

       end of current input (line feed).

       move backwards through the history or edit list.

       go forward through the history or edit list.

       end of current input (carriage return).

       reprint.

       delete the character under the cursor.

       kill the complete input.

       erase last word if the cursor is at the end of the line.

       escape from the current input (escape).

       Facilities available through control characters defined by the tty gen-
       eral terminal interface ( use the UNIX command stty all to see the cur-
       rent setting of control characters) :

       erase     Delete the character on the left of cursor, result in

       kill      kill the complete input, result in

       rprnt     reprint input, result in

       werase    erase last word if the cursor is at  the  end  of  the  line,
                 result in

       Facilities available through cursor and editing keypad :

       <-          back space on character, result in
                   Entry  kl  must  be defined in the termacp record entry for
                   the terminal type.

       ->          skip to next character, result in
                   Entry kr must be defined in the termacp  record  entry  for
                   the terminal type.

       up arrow    move  backwards  through  the  history  list  or edit list,
                   result in
                   Entry ku must be defined in the termacp  record  entry  for
                   the terminal type.

       down arrow  move  forward through the history list or edit list, result
                   in
                   Entry kd must be defined in the termacp  record  entry  for
                   the terminal type.

       Delete      delete the character under the cursor, result in
                   Only available for vt200, tdv, and Pericom pa terminal type
                   family.

       Home        return to beginning of the line, result in
                   Entry kh must be defined in the termacp  record  entry  for
                   the terminal type.

       Insert      toggles the insert mode, result in
                   Only available for vt200, tdv, and Pericom pa terminal type
                   family.

TERMINAL INTERFACE recommanded setting
       To be able to use the full capability of the line editing  facility  of
       Nodal we advice to use the following rules :

       -  Do not use any of the Nodal line editing control characters for ter-
          minal interrupt characters.
          The usual setting intr = , susp = / , quit = , stop = / , is a  good
          one.

       -  Use the same control characters for line editing as Nodal does.
          The  tty(4)  default setting kill = , werase = , rprnt = , flush = ,
          lnext = , eof = , and the usual erase = (  =  backspace),  are  well
          compatible.

       The current setting of the terminal driver can be printed with
    stty  all  command. The Nodal function STTY give an overview of the actual
    terminal status.
    The setting is usually  done  during  login  procedure  with  tset(1)  and
    stty(1).

EXTENDED DATA TYPES
       The  standard numerical Data Types is double-precision (64 bits) float-
       ing point, in native computer format for internal representation and in
       IEEE standard format for external ( files and network ) representation.
       In the external representation the bytes and words are in  the  natural
       network order.

       Nodal  numeric  arrays  (declared  by Dimension command) accept all the
       basic numeric scalar C data types :
       Integer value : byte (8 bits), short (16 bits), long(32 bits), and  the
       Nodal  integer  which  is a short integer (16 bits).  Short and integer
       types refers to the same short integer type.
       Floating point value : float (32 bits), double (64 bits), and the Nodal
       default  type ( or real) which is a double precision floating point (64
       bits).
       The qualifier for the dimension command to  be  used  for  the  various
       types or arrays are (minimum abbreviation is in upper case) :
       Byte,  SHort, Integer, Long, Float, Double, Real (and String for arrays
       of strings)

       The copy function provides a way to convert and transfer data from  any
       type of numerical arrays to any destination numerical arrays.  Refer to
       copy function description).  Converting from  double  (real)  to  float
       arrays  can result in lost of accuracy of the data without any warning.
       The copy provides also the capability to convert and  transfer  from  a
       Nodal  string  (seen as an array of bytes) to numerical values and vice
       versa. Remember that the maximum size of a Nodal string is  80  charac-
       ters.  If the destination element is a Nodal string, the actual size of
       the string can be extended up to the maximum of 80 characters,  but  it
       is  not allowed to copy after the current end of the destination string
       (maximum at the end of the destination string).

       To specify a value with bit 15 on, the 32 bits notation must  be  used.
       If  not  the  sign  bit  is automatically extended (example set mask. =
       [[0FFFF).

       Example:
           dim-long la(3,5); set la(1,4)=[[f234a678
           % set la(1,4) to -231430536
           set v = [[08000; % only bit 15 set

       The precision condition of + or - 5e-8 in a IF statement does not apply
       on integer values.

       Read-only strings and read-only string-array are availables.
       To turn a variable (numerical, string or array) into a read only state,
       the convenient function RONLY is provided.

       16 and 32 bits binary printing formats

              The print control character ’?’ produces a binary print (a 0  or
              a 1 for each bit of the value).  The number in the range [-38768
              .. 65535] are printed in 16 bits  format.  Number  outside  this
              range  are  printed  in 32 bits format.  The ’??’ can be used to
              force the 32 bits binary printing format.

32 BITS LOGICAL AND BIT FUNCTIONS
       All the logical functions (AND IOR NEG XOR)  and  bit  patern  function
       (BIT) apply to 32 bits words.
       The shift function (SHIFT) can be done on 32 bits range.
       Remember  that  to define a mask value with the bit 15 on, the extended
       32 bits notation must be used (example set mask. = [[0FFFF).

RELATIONAL AND LOGICAL OPERATORS
       The relational operators of Nodal are
       > (greater than), < (less than), = (equal to),  >=  (greater  or  equal
       to), <= (less than or equal to), <> (not equal)
       For  this  set  of  operators if the two arithmetic expressions are not
       pure integer values (in the 32 bits domain)  the  two  expressions  are
       considered  equal  if  the  difference between them is less than + or -
       5E-8 relative to the first one.

       The new relational operators :
       == (equal), != (not equal), >>  (greater  than),  <<  (less  than)  >>=
       (greater or equal to) and <<= (less than or equal to)
       do not apply any approximation of the values in the comparison.

       A condition may be the "OR" of several relational expressions.

INTERRUPT SIGNAL PROCESSING
       On Interrupt signal a Nodal block (or line) can be executed in order to
       stop in a controlled way the current processing.  At the  end  of  this
       processing  Nodal  falls down in command mode and wait for command from
       the user. Refer to INTRBLK function for detailed informations.

       The interrupt signal can be generated by the intr key (normally key) of
       the terminal keyboard. The STTY call can be used to display the current
       setting of the terminal driver.

       When Nodal goes into command mode, any previously registered  interrupt
       block is discarded.

       Some  care must be taken in the coding of the interrupt block, and spe-
       cially any interactive action must be avoided, and the processing  must
       be short enough. Particularly wait time must be limited to a maximum of
       1.2 second.

TERMINATION PROCESSING
       On termination request condition a Nodal block (or line)  can  be  exe-
       cuted in order to shut-down in a controlled way the current processing.
       The termination request can be triggered either by a call to QUIT Nodal
       command  or by an external termination request like signals or destroy-
       ing of the main Nodal window.  This processing does not take place when
       the  external  termination results from a Quit or a Kill signals. These
       cases are understood as  absolute  termination  case  which  cannot  be
       avoided by any processing.
       The  termination processing is constrained by a 10 seconds time-out. If
       this time is overrun Nodal will be immediately ended.
       This facility is activated only when the termination  Nodal  block  (or
       line)  was  registered  by  the  QUITBLK  routine. This facility is not
       usable for the Nodal servers.
       It is strongly recommended to use the termination  processing  facility
       in  all  Nodal  programs  to  smoothly close down any processing and to
       notify to the console manager the termination of the process. The  ter-
       mination processing is executed by the QUIT command.
       The commands LIST and LISV display the registered termination block.

       Some  care  must  be  taken in the coding of the termination block, and
       specially any interactive action must be avoided,  and  the  processing
       must be short enough. Particularly keyboard interaction is not allowed,
       and wait time is limited to  a  maximum  of  1.2  second.  It  is  also
       strongly recommanded to avoid any X Window action with the exception of
       the XPURGE call.  In any case all the user interface  and  there  asso-
       ciate resources are quitly destroyed during ending processing.

       The  termination  block must not be called explicitly, but only implic-
       itly by the QUIT command.
       If for special case it must be called explicitly just before  the  QUIT
       command, the termination block must, in this case, include a QUITBLK(0)
       call to disconnect the termination processing.  This call will  prevent
       a  second  termination block execution implicitly done by the following
       QUIT command.

SELF-LEARNING and REPLAY
       An SELF-LEARNING and REPLAY facility  is  provided  to  facilitate  the
       building of sequences of commands. This is normally the case for debug-
       ging and testing session.
       During an interactive  session  of  Nodal  any  normal  terminal  input
       (excepted  the  editing  commands)  can  be  recorded into a file to be
       replayed or edited and replayed. Terminal inputs into Xwindow  are  not
       normal  terminal  input.  In fact the recorded input are the input done
       with ASK and  $ASK functions with Nodal command (typed after the  Nodal
       prompt).
       To  start  an self-learning session the function LEARN must be used, to
       replay the registered commands the function REPLAY  is  available.  The
       recording or replay session can be suspended either by interrupt signal
       (normally or Escape), or by a Nodal error which is  not  trapped.   The
       session can be restarted with the the RESUME function.
       A  session can be closed by the STOP function. An self-learning session
       can be resume with the LEARN (which will append at the end of the  file
       the  new  recorded  inputs). A stopped replay session cannot be resumed
       from the middle of the file. It can be only replayed completely.
       For more information refer to the description of the functions in  this
       manual.

       The file produced by LEARN is a standard text file which can be manipu-
       lated with any of the normal UNIX tools, for editing in particular.

DEFINED FUNCTIONS
       The numeric variable FLAG created for DEFINE-FUN  and  DEFINE-STR  does
       not  use  the convention as describes in the Nodal yellow report. A new
       convention is used (to be compatible with the CERN / SL Nodal) :
       - read is 0 (old value 1)
       - write is 1 (old value -1)
       - call is -1 (old value 0)

       Global Defined functions are available  with  shared  memory  facility.
       Ref  to  chapter GLOBAL DATA and SHARED FUNCTIONS for detailed informa-
       tions.

GLOBAL DATA and SHARED FUNCTIONS
       Global data and shared functions (Nodal defined functions)  are  avail-
       able to concurrent processes (executing programs) of the same computer.
       This facility use the shared memory feature of UNIX system V  IPC.  The
       sharing  of  memory  provides  the  fastest  means  for exchanging data
       between processes.

       To be used by a Nodal program Global data or Shared functions  must  be
       created  (one  time)  and linked to Nodal process. Up to 27 global data
       segments and 27 shared function segments are  simultaneously  available
       in  a  given  computer. The identifier of these segments is done with a
       single alphabetic character ( a ... z or A ... Z ).  A Shared  function
       memory  segment start with the magic number (short int) -4 and a Global
       data memory segment with the magic number -3.  After this magic  number
       the  structure of the segment is the standard Nodal linked list of ele-
       ments. For a string variable the space allocated is  always  set-up  to
       support the maximum size of a Nodal string (80 characters).
       The  IPC  key  use  to identify the shared memory segment are generated
       with  the  UNIX  routine  ftok  (file  to  key)  from  the  empty  file
       /tmp/NODAL/NODAL_IPC  which  is  automatically  created  if it does not
       exist. The id character of ftok is  the  single  alphabetic  identifier
       character  of the segment converted into lower case for shared function
       segments, and into uppercase for global data segments.

       The content of these segments can be save into files,  for  re-creation
       or to reload their content.

       Shared functions
              The  content  of  a  shared function segment is identical to the
              content of Nodal defined function area  (defined  functions  and
              data).   Strings  and  string  arrays are available for read and
              write operation. In case of string array write, the string  ele-
              ment  of  the  array  must  exist  and the new string must be of
              exactly the same size as the target string. This limitation does
              not exist for simple Nodal string.
              Shared  functions  must be linked by LINKDF function call before
              loading private defined functions (by LDEF). The already  linked
              shared  functions  are  not unlinked by later LDEF. Unlinking is
              done with ZDEF command.
              Operation permissions is determined by the access permissions of
              the shared memory segment.

       Global Data
              Any  Nodal  data  type  are  allowed  in  Global Data segments :
              scalars and arrays, numericals and strings, read-write and read-
              only.   The  name  of  these data elements are restricted to the
              Nodal system name (name with more than 2 characters, without dot
              ’.’).   When  a  Global data segment is created or reloaded from
              the content of a Nodal file the element of this file  must  have
              system  name  or  name which are eligible to be transformed into
              system name during loading process.  Shuch name  must  had  more
              than 2 alphabetic characters, and dot ’.’.  The name transforma-
              tion process remove the dot ’.’ at the end of the name  and  the
              embedded dot ’.’ are converted into column ’:’.
              Operation permissions is determined by the access permissions of
              the shared memory segment.

COMPUTER IDENTIFIER
       The computer identifier used by network facilities  is  the  unique  IP
       address  of  the  computer. In network functions this identifier can be
       replaced by the computer name or one of its alias.

       The computer identifier must never be generated outside the ipaddr  and
       local  functions.  The  ipaddr  function  accepts  as  parameter the IP
       address of the computer in the "." notation (  ex  :  128.141.7.74  for
       CERN priam ).
       It  is a good practice for efficient program execution and maintenance,
       to initialize the various computer identifier to be  used  with  ipaddr
       and local function during initialization phase of the program.

       The  Nodal  indirection facility $variable_name can be used to point to
       the actual computer identifier ( value or name string ).
       The local computer can be accessed with the predefined  name  local  or
       and empty string example:
           <>local_file_name
           ()local_Imex_call
           :local_file"
       The  default Nodal file server can be accessed with the predefined name
       server.

       Example:
           set ci = ipaddr("priam")
           $set cp = "ci"
           EXECUTE ($cp) 20
           IMEX (server) @ls *.nod
           load <>local_program
           old local:local_program

FILE NAME and IDENTIFIER
       File name using tilde convention are expanded according to the standard
       use  : ~user_name into user initial directory path, ~/ into the current
       user initial directory.
       The file identifier used by file  access  routines  is  stream  pointer
       associated  with  the  file by open_file functions. The file descriptor
       number is not used for file access.

NETWORK FILE SYNTAX
       The syntax for network file name used the pair of  characters  <  >  as
       separator for the computer identifier.
       The   standard   network   file   syntax  of  Unix  :  computer_identi-
       fier:file_path_name is also supported.
       Network file access is allowed only for atomic  file  access  (  atomic
       access = open, access, close within the same function ). Also it is not
       allowed for Open, Rwdata Nodal functions, which does not provide atomic
       access  to  the  file.  For Fcopy one of the two files can be a network
       file.

HISTORY LIST
       Nodal maintains a history list into which it places any commands. It is
       possible move backwards and forward through the list in order to repeat
       and or to modify previous commands. The  up arrow  and  down-arrow  (or
       control  characters) are used to move through the list. The function
       hist prints the content of the list together with the command  sequence
       number. The last command re-done is not included in the history list.
       The ! history mechanism invocation metacharacter is available to redo
       a command. If the argument of the redo ! metacharacter is a positive
       integer value, this value is the number of the command to redo.  If the
       value is a negative integer, it is the relative number. The !! is
       equivalent to !-1 which is the repeat last command.
       The default depth of the history list is 20 commands. It is extended to
       the size of the terminal window on start-up. The history list is always
       saved into .nodal_history file in the directory defined by the HOME
       environment variable. The "saved  history list" can be reloaded on Nodal
       start-up according to the value of the environment variable NODAL_HISTORY
       or the -history option.

ASYNCHRONOUS PROCESSING
       Nodal (during a simple terminal  session)  provide  some  facility  for
       asynchronous  processing  of  various  events. Much more facilities are
       available when Nodal is run in X Window environment (ref the  paragraph
       on this subject in the X Window Facilities chapter for this case).
       The  sources  of  events  which can be registered and to which Nodal is
       sensible are the Process events, Asynchronous equipment acquisition and
       the  XTIMER.  The function calls XEVTCB, AQCCBK and XTIMER must be used
       to register theses events processing (refer to the corresponding  chap-
       ters for the detail description).
       Nodal  executes the call back processing when it is sleeping : during a
       keyboard input, or a wait time (interruptible or not),  or  during  the
       background processing in a manner transparent for this processing.
       The  processing of the call backs can be suspended and resumed with the
       ASYNCFZ calls. When the flag is set no call back processing is done  on
       reception  of  asynchronous  events. This is a way to easely frozen the
       display produced by the running programs.

       The normal flow  of  the  Nodal  program  (called  background)  can  be
       affected  from asynchronous processing on certain circumstances. If the
       background is in wait for terminal I/O (by ASK or $ASK), or in  a  sus-
       pended state (by XWAIT) it can be resumed before the natural completion
       of the action (time-out or end-of-line) by a Nodal event generated from
       a Nodal callback with the WAKEUP call.
       The other I/O wait states and suspend (by WAIT-TIME) are not sensitives
       to the Nodal wakeup events.
       Of course it is possible to  share  state  variables  between  callback
       block and background to be sensitive in the background to callback pro-
       cessing.  But it is a better practice in normal  circumstances  to  use
       XWAIT and WAKEUP functions.
       Refer  to  XWAIT,  WAKEUP  and REASON functions descriptions for detail
       informations.

EQUIPMENT ACCESS
       The equipment access facility is available from Nodal but it  is  obvi-
       ously  strongly dependent on the capability of the local control system
       and on the privileges of the computer on which Nodal is running.
       The capability of this access is purely driven by data read during ini-
       tialization  phase  of  Nodal,  from  the ascii file .property_eqm_list
       (refer to special files paragraph) and from  a  call  to  configuration
       procedure.

       At  CERN  PS  DSC computers have direct access to their local equipment
       modules through calls to the General Module call package.  Workstations
       and central general purpose servers have direct access to all equipment
       modules known is the control system through calls to  Remote  Equipment
       Access package and Real Time Data Base facilities.  This access provide
       to Nodal program the illusion than all equipments are local to the cur-
       rent computer.

       The  facility  provides  single equipment single data, single equipment
       multi data and multi equipments multi data access methods. A  call  can
       access  only  a  single class of equipment (a single Equipment Module).
       These access are provides by two series of call  which  are  either  by
       Equipment  module  name  (Ex  : POW(...) , APOW(...) ), or by a generic
       function call (Ex : SCALL(pow,...) , ACALL(pow,...) ), where the  first
       parameter  is the Equipment Module Identifier (its name or its number).
       It also offers on line informations on equipments and various functions
       to  translate name into value and vice-versa. Refer to paragraph Equip-
       ment access in the Analytical index for an complete list of facilities.

       In the Nodal Extended facilities chapter the two descriptions Aeqp, Eqp
       are generic routines description. "eqp" must be replaced by the name of
       an  existing equipment module to be the description of an actual facil-
       ity.

       The parameters Equipment_Module and Property can be  defined  by  there
       name or by and numerical expression. The Property name can be qualifyed
       with a Suffix separated from the name by the dash character _.  exam-
       ple:  CCV_DBREF CCV_DBDAT to access the CCV reference value stored in
       the data base.

ASYNCHRONOUS EQUIPMENT ACQUISITION FACILITY (AQC or MDR)
       The Asynchronous Equipment Acquisition facility  provided  by  the  Aqc
       package  (also  called the MDR facility is available to Nodal through a
       set of routines which does the subscription and controls the status  of
       the acquisition process.

       The  notification  of  the  arrival of a new set of acquisition data is
       done by an event which can be process by a Nodal call back.  This  call
       back can be used either within a running Motif user environment.
       This  facility is also available during a simple terminal Nodal session
       (without the X Motif environment in use).
       Communication between the call back processing and the  background  can
       be done with the WAKEUP routine call.

       To read equipment data which are acquired by this asynchronous facility
       the standard equipment access method of Nodal must  be  used  with  the
       property  flagged  by the BMDR suffix (ex : CCV_MDR), or in the case of
       property defined by its value, with the MDR suffix value  added  (ex  :
       symbol(CCV) + symbol(MDR) ).

WORKING SET
       The  complementary information for equipment access is the working set,
       at least in the CERN / PS control system.

       A working set is a collection of equipment descriptors selected accord-
       ing  to operational criteria, which provides a logical set of equipment
       for data driven programs. The Working Set exist in two flavors, the Old
       style  Working Set for compatibility with the old PS ND control system,
       and the New style Working Set. The emulations of the working  set  rou-
       tines are only available for the Old Style. Some of the new style Work-
       ing Set provided also and old style view.

       The working set to be attached when Nodal start must be defined  either
       with  the  WORKING_SET  Unix  environment  variable,  or with the -wset
       option (the option if used  will  overwrite  the  environment  variable
       value).

       The  LISENV  function display the current working set attached, if any,
       and some informations.
       WSETINFO and LISWSET display informations  on  the  currently  attached
       Working Set and on availables Working Set.

       The  following  Nodal  functions are availables to access data from any
       style of Working Set : OBPAR, NEWWSET EQPWSET, EQPFILTR and NEXTEQP.

       The functions to access only the new style Working Set  are  :  WSETLST
       and EQPWSAR.

       The  functions (including emulation routines) to access old style Work-
       ing Set are : NNFEC, NNSWT, FSNEM, FSEEQ, FSEIP

       The recommended access to working set data  is  the  sequential  access
       method to a subset (or the all set) of elements of the attached working
       set.  The subset is dynamically selected by a  filter  defined  by  the
       user.   Functions which provide this feature are : EQPFILTR (define the
       filter and open the sequential  access)  and  NEXTEQP  to  sequentially
       extract  element.  The  EQPFILTR  as  the  capability to build array of
       equipment numbers which can be directly used by  the  equipment  access
       methods.

       The  working  set  facilities are fully available for console emulation
       facility.  They are not (yet ?) available on LYNX-OS systems.

SOFT PROCESS SYNCHRONIZATION
       Nodal on UNIX workstation, and when X Window environment  is  activated
       offered   a   soft   process   synchronization   facility.   In  normal
       circumstances the synchronization must be done within 100  millisecond,
       but  by  the  non real-time property of UNIX OS no guaranty is given on
       this figure.
       This service use now (from April 1998)  the  service  provided  by  the
       Dtmrt  daemon  which  dispatches  process events to the various clients
       which have issued a subscriptions.
       The old facility : local_event_server and global_event_server  are  not
       any more in use.

       An  event  is defined by a pls_telegram, also called a machine (defined
       by tgm package : curently CPS = 0, PSB = 1, LPI = 2, ADE = 3, SPS =  4,
       LHC  =  5) a pulse number and a PLS condition. Only a very small number
       of pulses are available for each machine. By convention the pulse 0  is
       always  available  and  it  is the arrival of the PLS telegram (NEXT_TG
       event).
       The pls condition is done by the value of the USER group.  The PLS con-
       dition can be ignored (always true) by the pls condition value -1.
       The updated list of available machines and events can be displayed by a
       call to the LISTGM without argument.

       This facility, which is available when a X user  interface  is  fetched
       (by  a  call to XINIT or PSCONSOL), provided to Nodal by the capability
       to connect a callback to a defined event (ref XEVTCB and XEVTACT  Nodal
       function call).
       This facility, including the call back, is also available during a sim-
       ple terminal session Nodal (without the X Motif environment in use).
       Communication between the call back processing and the  background  can
       be done with the WAKEUP routine call.

       A  maximum  of  7 events can be subscribed for a single process. In the
       case of the CERN PS console emulation the service is also provided  for
       the  EVENT  MWAIT  Nodal  calls. And access to the telegram data (group
       valuse)is provided by the PLS Nodal call The old telegram style is  not
       any more available, and the old encoding must not be any more used.

LYNX OS and OS9 VERSION
       Nodal  is  available  for  LYNX  OS and OS9 systems.  Some restrictions
       exist for these versions. Refer to the dedicated chapters at the end of
       this document.

X WINDOW FACILITIES
       X  Window facilities are available to Nodal for the Unix version gener-
       ated with X11 options included.

       The X Window user interface must be fetched from a uid description file
       with xinit function.  A new user interface cannot be fetched before the
       destruction of the current one with the xpurge generic function.
       The binding between an instance of a widget  and  Nodal  identifier  is
       done  by the user parameter of the create_widgetclass_proc procedure in
       the UIL file. The value of this parameter must be in the range 1 to the
       maximum number of widget instances allowed for the class.  The value of
       this parameter is the value  of  the  small  integer  Nodal  identifier
       parameter  to  be used for the various function call which identify the
       instance in the class.
       The generic Nodal function XFETCHL (fetch literal value from UID  file)
       can  be used to bind a name to the identifier value, if this literal is
       exported in the UIL file.  The generic Nodal  function  XIDENT  can  be
       used  also  to  retrieve  the ident of the named widget, and vice-versa
       with XNAME.

       Nodal gives access to the widget resources and  methods  by  a  set  of
       generic  functions  (function  with  X prefix), and by dedicated widget
       class convenient functions.

       Only a subset of all the widget classes provided by the OSF Motif Xwin-
       dow toolkit are available to Nodal.
       For  each  classes  of  widgets  a maximum number of widget instance is
       allowed.
       For widget with action a callback mechanism is provided  to  execute  a
       Nodal block (or a line) as a callback of the action (refer to the para-
       graph on asynchronous processing).

ASYNCHRONOUS PROCESSING IN X WINDOW ENVIRONMENT
       X Window and its associated toolkit, in particular OSF Motif provides a
       mechanism  for  asynchronous  processing of events. These events result
       normally of user interaction on display or from interclient  communica-
       tion.  The  mechanism  in the toolkit is called callback. This facility
       was made available to Nodal. A Nodal block (or a line)  can  be  regis-
       tered (with XCALLBK) for a widget to execute asynchronously a dedicated
       processing, this facility is called Nodal callback.   For  the  various
       classes  of  widget  the action (callback reason) which triggered Nodal
       callback are defined in the widget classes description in this document
       (Motif widget class chapter).
       An  other source of events for which a Nodal callback can be registered
       is the timer. Its callback is not registered for a given wigdet but  it
       is  directly  registered  during  creation of the timer by XTIMER call.
       Only a single timer resource is available. This timer can be  automati-
       cally  rearmed  on  completion.  refer  to  XTIMER  routine  for detail
       description.
       Two other sources of events can be issued  by  the  Process  Event  and
       Asynchronous Acquisition facility.

       The  normal  flow  of  the  Nodal  program  (called  background) can be
       affected from asynchronous processing on certain circumstance.  If  the
       background  is  in  wait for terminal IO (by ASK or $ASK), or in a sus-
       pended state (by XWAIT) it can be resume before the natural  completion
       of  the  action  (time-out  or end-of-line) by a Nodal event.  They are
       issued either from Nodal callback with the WAKEUP call or by the kernel
       if the user interface is destroyed by a XPURGE call.
       The  other IO wait and suspend (by WAIT-TIME) states are not sensitives
       to Nodal events.
       Of course it is possible to share state variable between callback block
       and  background  to be sensitive in the background to callback process-
       ing.  But it is a better practice in normal circumstances to use  XWAIT
       and WAKEUP functions.
       Refer  to  XWAIT,  WAKEUP  and REASON functions descriptions for detail
       informations.

       A subset of this facility is  available  for  simple  terminal  session
       Nodal (refer to the ASYNCHRONOUS PROCESSING chapter).

INTERPROCESS EVENTS AND MESSAGES
       Together with the X Window facilities an events and messages facilities
       is available for interprocess communication.  This  facility  used  the
       interclient  communication  mechanism  provided  by  X11 client message
       events. Detail informations on X events are available in the  X  Window
       system  and  Xlib  manuals.  These details must not be known to use the
       facility from and within Nodal.
       The facility provides the capability to send an event with a short mes-
       sage  to  a  named target process. In the target the received event and
       messages can be processed either  synchronously  or  asynchronously  by
       Nodal  callback  The  message embedded in an event is supported by a 20
       bytes entity viewed as either a string of maxi 20 characters, or  array
       of 20 single byte, 10 short, or 5 long integers numbers.
       For  asynchronous  processing the Nodal callback can be attached to the
       main_window instance (index 1) of the main widget class. In  this  case
       receiving  a  client  message  event  results in execution of the Nodal
       callback block (or line).  Various messages are queued by X Window pro-
       tocol.
       As  a  benefit  of  the  X  Window  the facility is available for local
       (within the same computer) or across the  communication  network  in  a
       transparent manner.
       The Nodal functions which support this facility are : XCONCT XDISCT and
       XSEVENT to send a message to other process, and XREVENT and XREVTYPE to
       process the receiving events.

       To send a client message event from compiled program
       To  send  an  event  from  a  compiled process only the Xlib (C library
       interface to X Window protocol) is needed.
       Informations requested by the sender are ported by 2  entities  of  the
       receiver X server.
       i)  The  binding of the receiver process name into a unique resource ID
       called an ATOM. This information is very static but the ATOM  value  is
       only valid for the receiver X sever.
       ii)  a  Property,  of  type  defined  by  the process name ATOM, in the
       default root window of the receiver display provides the receiver  pro-
       cess  window  to  which  the client message event must be sent. If this
       property in the default root window does not exist,  or  its  value  is
       NULL, the receiver named process does not exist.

       The  process  name  for  Nodal  is  build  as XNodal uid_file_name. The
       uid_file_name is the parameter of XINIT function  call  to  create  the
       user  interface  from the uid description file. It is assumed that this
       name is unique in the X server.  With these informations  a  sender  is
       able  to  know  if the receiver process is currently alive and where to
       send the event.

       The client message event parameters must be setup according to the fol-
       lowing convention :

       format
              8  for  a  string of maxi 20 characters (ended by a null char if
                 the length is less than 20).
              8  for 20 bytes integers (single byte) in range of -128 ... 127
              16 for 10 short integers (double bytes)
              32 for 5 long integers (quadruple bytes)

       message_type
              XA_STRING     for a string
              XA_INTEGER    for arrays (small, short,  or  long)  of  integers
                            number.

       The following example provides a frame of how to proceed to send a mes-
       sage from a C program.
               ...  display = XOpenDisplay(display_name); receiver_name_atom =
              XInternAtom(display, receiver_name, TRUE);
               ...

              /* each time a message must be send */
               ...   cc  = XGetWindowProperty(display, DefaultRootWindow(fdis-
              play),            receiver_name_atom, 0,  1,  FALSE,  XA_WINDOW,
                          &type,  &format, &nitems, &left, &retdata); if ( (cc
              != Success) || (type != XA_WINDOW)
                     || (retdata == NULL) || (*retdata == NULL) ) {
                  if ( retdata != NULL ) XFree(retdata);          /*  receiver
              not alive */
                  XCloseDisplay(display);
                  ...
                  return(error_condition);
                  }
               ...  event.format = 8;     /* or 16 or 32 */ event.message_type
              = XA_STRING;  /* or XA_INTEGER  */  cc  =  XSend  Event(display,
              *retdata, TRUE, XtAllEvents, &event); XFlush(display);
               ...  /* end of send event loop */

              XCloseDisplay(display);
               ...  Notice than XGetWindowProperty is called just before send-
              ing the event in order to  check  if  the  receiver  process  is
              alive.
              It is good practice to trap possible errors during access to the
              display with local error handlers installed with XSetIOErrorHan-
              dler  and XSetErrorHandler calls and with suitable XSynchronize.

MOTIF WIDGET CLASSES
       The current widget classes available are :

       Main   widget class name Main (case insensitive), function prefix  Mai.

              The main class is a generic name for any top level window object
              and Dialog popup widgets.  On the top level windows only  global
              actions, like temporary erase it from the screen (iconifyed) (by
              XDISAB function) are allowed.
              The top level object main_window is assumed to exist in the  UID
              file,  and it is fetched on initialization by the XINIT routine.
              The other top level widgets objects and Dialog popup widgets can
              be later on fetched with the XFETCHW routine.

              When an object which is not a top level widget like Dialog popup
              widget is fetched by XFETCHW, it is  not  made  visible  on  the
              screen.  It  must  be made visible explicitly by a call to XENAB
              after possible change of some of the resources (with XSETRS) and
              callback connections (with XCALLBK or XCBKARR).

              The  main_window  top level object has special properties. It is
              the master which controls the visibility of all the  windows  of
              the  Nodal program on the screen.  Dropping the main_window wid-
              get into icon, and back into normal state (by XDISAB  and  XENAB
              functions)  will  be applied automatically to all top level win-
              dows and dialog popup widgets of the program.  If this window is
              closed  (by  the  window manager) the all program will be ended,
              and if a quit block is registered, it will be executed (refer to
              chapter on termination processing).

              No  creation  callback procedure is needed for this class of top
              level object.

              A Nodal callback can be  connected  to  the  main_window  widget
              (index 1) of this class to handle arrival of user message event.
              This event is used to implement  the  Interprocess  Nodal  event
              facility  (ref  to  the  paragraph on interprocess event in this
              document).
              The Dialog popup widgets can handle multiple callbacks which can
              be  connected  individually  with  the XCBKARR function call, or
              globally with the XCALLBK function call.

              The Nodal functions  XREVENT  and  XREVTYPE  provide  convenient
              Nodal interface to the main widgets (for event message).

              Top level widget resources handle by XGETRS, XSETRS :

              cursor  item type : string variable, get or set the default cur-
                      sor shape ( ref to XmRowColumn man page for the list  of
                      available cursor shape names ).

              and  the  inherited  resources  of  the Core class and XmManager
              class (ref for the list of these inherited resources at the  end
              of this chapter).

              For  the  Dialog popup widget resources handle by XGETRS, XSETRS
              refers to the Dialog widget description paragraphs.

              The maximum number of instances in this class is 24  (use  XINFO
              function for the updated value).

              The  position  of  the toplevel window of the main widget can be
              defined in the UIL definition file with the following convention
              :
              If  XmNx or XmNy resource(s) of the widget is (are) defined with
              a non zero value, the fetch procedure request the window manager
              (which  is  assumed  to be the Motif Window Manager) to position
              the toplevel window at  the  defined  position  on  the  display
              screen.   This  positioning  does  not take care of the possible
              decorations done by the window manager around the toplevel  win-
              dow.
              To  enforce  a  0,0  position -1,-1 values must be used. The 0,0
              values (default values for XmNx and XmNy resources leave freedom
              to the window manager to position the window on the screen.  The
              values of the resources are taken as pixels values.
              If the position is enforced, this position will be re-used  when
              the window is de-iconified.

       Messagedialog
              The MessageDialogBox widget pseudo class for Main class.

              The  MessageDialogBox  widget objects (UIL objects : XmErrorDia-
              log,  XmInformationDialog,  XmMessageDialog,   XmQuestionDialog,
              XmWarningDialog, and XmWorkingDialog) are only available as Main
              class instance.  They are fetched on the screen by  the  XFETCHW
              function  call.  XDISAB function call removes it explicitly from
              the screen, and they may bring again with XENAB or XFETCHW.

              MessageDialog supports multiple callbacks. The Callback  reasons
              XmCR_OK, XmCR_CANCEL and XmCR_HELP can result in Nodal callback,
              if connection was made by the function XCALLBK  (global  connec-
              tion) which connects all these reasons to the Nodal block, or by
              the function XCBKARR which allows a specific connection  of  the
              callback reasons.
              The  call  back  reason  value  can  be evaluated form the names
              (CR_OK, CR_CANCEL, CR_HELP) with the XSYMBOL function call.
              If no callback are connected to the XmCR_HELP reason,  the  HELP
              button is not displayed.

              Widget resources handle by XGETRS, XSETRS :

              messag  widget  resource name : XmNmessageString, parameter type
                      : string variable

              dialog  widget resource name : XmNdialogType, item type : numer-
                      ical variable.
                      The  value  of the dialog variable can be evaluated from
                      the possible names with the XSYMBOL function call.
                      The type names are :  DIALOG_ERROR,  DIALOG_INFORMATION,
                      DIALOG_MESSAGE, DIALOG_QUESTION, DIALOG_WARNING and DIA-
                      LOG_WORKING". The type name is not case sensitive.

              and the inherited resources of the Core class (ref for the  list
              of these inherited resources at the end of this chapter).

              Refer to XmMessageBox man pages for detailed explanations.

              The  Dialog  Box  convenient function call XMESSAGE must be pre-
              ferred for normal use of Message Dialog Box.  It  is  much  more
              simpler to use. Only some sophisticated case must be handle with
              this facility.

       Selectiondialog
              The SelectionDialogBox widget pseudo class for Main class.

              The SelectionDialogBox widget objects (UIL  objects  :  XmSelec-
              tionDialog  and XmPromptDialog) are only available as Main class
              instance.  They are fetched on the screen by the  XFETCHW  func-
              tion  call.  XDISAB function call removes it explicitly from the
              screen, and they may bring again with XENAB or XFETCHW.

              SelectionDialog supports multiple callbacks. The  Callback  rea-
              sons    XmCR_OK,    XmCR_CANCEL,   XmCR_HELP,   XmCR_APPLY   and
              XmCR_NO_MATCH can result in Nodal callback,  if  connection  was
              made  by the function XCALLBK (global connection) which connects
              all these reasons to the Nodal block, or by the function XCBKARR
              which allows a specific connection of the callback reasons.
              The  call  back  reason  value  can  be evaluated form the names
              (CR_OK, CR_CANCEL, CR_HELP, CR_APPLY and CR_NO_MATCH)  with  the
              XSYMBOL function call.
              If  no  callback are connected to the XmCR_HELP reason, the HELP
              button is not displayed.

              Widget resources handle by XGETRS, XSETRS :

              text    widget resource name : XmNtextString, parameter  type  :
                      string variable

              label   widget  resource name : XmNselectionLabelString, parame-
                      ter type : string variable

              listit  widget resource name  :  XmNlistItems  and  XmNlistItem-
                      Count,  parameter type : string array variable, set only
                      facility.
                      The order of the items in the list area is the order  of
                      the  string  in  the string array, which is the order in
                      which they are created, and not the order of the  string
                      index.

              and  the inherited resources of the Core class and Manager class
              (ref for the list of these inherited resources  at  the  end  of
              this chapter).

              Refer to XmSelectionBox man pages for detailed explanations.

              The Dialog Box convenient function call XSELECTB or XPROMPT must
              be preferred for normal use of Selection Dialog  Box.  They  are
              much  more  simpler to use. Only some sophisticated case must be
              handle with this facility.

       Fileselectiondialog
              The FileSelectionDialogBox widget pseudo class for Main class.

              The FileSelectionDialogBox widget objects (UIL object : XmFileS-
              electionDialog) are only available as Main class instance.  They
              are fetched on the screen by the XFETCHW function  call.  XDISAB
              function  call  removes  it explicitly from the screen, and they
              may bring again with XENAB or XFETCHW.

              FileSelectionDialog supports multiple  callbacks.  The  Callback
              reasons   XmCR_OK,   XmCR_CANCEL,   XmCR_HELP,   XmCR_APPLY  and
              XmCR_NO_MATCH can result in Nodal callback,  if  connection  was
              made  by the function XCALLBK (global connection) which connects
              all these reasons to the Nodal block, or by the function XCBKARR
              which allows a specific connection of the callback reasons.
              The  call  back  reason  value  can  be evaluated form the names
              (CR_OK, CR_CANCEL, CR_HELP, CR_APPLY and CR_NO_MATCH)  with  the
              XSYMBOL function call.
              If  no  callback are connected to the XmCR_HELP reason, the HELP
              button is not displayed.

              Widget resources handle by XGETRS, XSETRS :

              select  widget resource name  :  XmNdirSpec,  parameter  type  :
                      string variable

              direct  widget  resource  name  : XmNdirectory, parameter type :
                      string variable

              filter  widget resource name  :  XmNpattern,  parameter  type  :
                      string variable

              and  the inherited resources of the Core class and Manager class
              (ref for the list of these inherited resources  at  the  end  of
              this chapter).

              Refer to XmFileSelectionBox man pages for detailed explanations.

              The Dialog Box convenient function call XFILE must be  preferred
              for  normal use of Selection Dialog Box. It is much more simpler
              to use. Only some sophisticated case must be  handle  with  this
              facility.

       Menu   widget  class name Menu (case insensitive), function prefix Mnu.

              The various Menu Motif widget flavor  :  MenuBar,  PulldownMenu,
              PopupMenu,  MenuOption are available.  No Nodal convenient func-
              tion is provided, only the generic XGETRS and XSETRS can be used
              to modify the menus.
              The  UIL  creation callback procedure ( parameter of MrmNcreate-
              Callback) to be used is create_menu_proc.
              No Nodal callback facility is available.  Menus are used  mainly
              to  dynamically  kept  trace  of  the cascading actions on there
              embedded buttons.

              Widget resources handle by XGETRS, XSETRS :

              label   widget resource name : XmNlabelString, parameter type  :
                      string variable

              cursor  item  type  :  string, get or set the menu cursor shape,
                      results in XmGetCursor or  XmSetCursor  call  (  ref  to
                      XmRowColumn  man  page  for the list of available cursor
                      shape names ).

              and the inherited resources of  the  Core  class  and  XmManager
              class  (ref for the list of these inherited resources at the end
              of this chapter).

              Refer  to  XmRowColumn,   XmCreateMenuBar,   XmCreateOptionMenu,
              XmCreatePopupMenu   and   XmCreatePulldownMenu   man  pages  for
              detailed explanations.
              The maximum number of instances in this class is 32  (use  XINFO
              function for the updated value).

       Button widget  class  name  Button  (case insensitive), function prefix
              But.

              The various Button Motif widget flavor : PushButton,  ToggleBut-
              ton  and  CascadeButton,  are available.  PushButton can be pro-
              vided with predefined actions facilities.  This is done by  spe-
              cial  creation  callback  procedures  (ex : create_hardcopy_but-
              ton_proc).
              The UIL standard creation callback procedure ( parameter of Mrm-
              NcreateCallback)  to  be  used  is create_button_proc.  Creation
              callback  procedure  for  window  hardcopy  PushButton  is  cre-
              ate_hardcopy_button_proc. Shuch button, when activated will pro-
              duce a hardcopy of the application window on the printer.
              The Callback reason  XmCR_ACTIVATE  and  XmCR_VALUE_CHANGED  can
              result  in  a Nodal callback, if it was connected by the generic
              function XCALLBK.

              The Nodal functions BUTVAL, BUTINV, BUTACT,  BUTCAS  and  BUTMNU
              provide convenient Nodal interface to the button widgets.

              Widget resources handle by XGETRS, XSETRS :

              label   widget  resource  name  :  XmNlabelString,  item  type :
                      string variable.

              menu    widget resource name : XmNsubMenu, item type : numerical
                      variable  (ID of a PullDown Menu), only for Cascade But-
                      ton.

              and the inherited resources of the Core  class  and  XmPrimitive
              class  (ref for the list of these inherited resources at the end
              of this chapter).

              Refer to XmCascadeButton, XmPushButton  and  XmToggleButton  man
              pages for detailed explanations.
              The  maximum number of instances in this class is 100 (use XINFO
              function for the updated value).

       Scale  widget class name Scale (case insensitive), function prefix Sca.

              The  UIL  creation callback procedure ( parameter of MrmNcreate-
              Callback) to be used is create_scale_proc.
              The Callback reason XmCR_VALUE_CHANGED can  result  in  a  Nodal
              callback, if it was connected by the generic function XCALLBK.

              The  Nodal  functions SCAVAL and SCAACT provide convenient Nodal
              interface to the scale widgets.

              Widget resources handle by XGETRS, XSETRS :

              title   widget resource  name  :  XmNtitleString,  item  type  :
                      string variable

              min     widget resource name : XmNminimum, item type : numerical
                      variable

              max     widget resource name : XmNmaximum, item type : numerical
                      variable

              sensit  widget resource name : XmNsensitive, item type : numeri-
                      cal variable (0 = False or 1 = True)

              showva  widget resource name : XmNshowValue, item type : numeri-
                      cal variable (0 = False or 1 = True)

              and  the  inherited  resources  of  the Core class and XmManager
              class (ref for the list of these inherited resources at the  end
              of this chapter).

              Refer to XmScale man pages for detailed explanations.
              The  maximum  number  of instances in this class is 4 (use XINFO
              function for the updated value).

       Draw or Drawingarea
              widget class name Draw (case insensitive).  function prefix Drw.

              The  DrawingArea  Motif widget is provided as the support widget
              for Video screen emulation facility.  These  video  screens  are
              used as semi-graphic video screen or as the character background
              of the touch-screen.  The semi-graphic video screen is available
              in  two  version : the large screen with user loadable character
              set and the small one without user loadable characters.
              The main use of this facility is the Console  Emulation  package
              which  provide  and  emulation  of  the  display and interaction
              resources of the CERN PS ND-consoles for Nodal programs.
              The UIL creation callback procedure ( parameter  of  MrmNcreate-
              Callback) to be used is create_draw_proc.
              The  Callback  reason XmCR_INPUT can result in a Nodal callback,
              if it was connected by the generic function XCALLBK, and will be
              activated by Mouse Button 3 relase if the video screen cursor is
              active within the pointed window.
              The  standard  X  selection  mechanism  is  available   on   the
              DrawingArea  widget  to  transfer strings. It use the XA_PRIMARY
              selection type.  Draging on the screen define the selected area,
              double  click selects the word, and triple click selects the all
              line. The selection cannot be extended over multi lines.
              This facility can be used to transfer strings of characters with
              terminal  emulators  as well as Motif widgets which support this
              convention, and also of course between DrawingArea  screen.  But
              the  DrawingArea  can receive selected string only when they are
              in TVEDIT processing. The selection is received by Mouse  Button
              2 relased, according to the Motif Style Guide.

              The  Nodal functions WRITE, POSIT, SDMOUT, SDMIN, PIXIN, PIXOUT,
              TVEDIT, TVREAD, KENABL, KDSABL, KCURC, KCURL, BITMAP and  DRWACT
              provide  convenient  Nodal interface to the drawing area widgets
              (for the video screen handling).

              Widget resources handle by XGETRS and XSETRS are  the  inherited
              resources  of  the  Core  class and XmManager class (ref for the
              list of these inherited resources at the end of this chapter).

              Refer to XmDrawingArea man pages for detailed explanations.
              The maximum number of instances in this class is  8  (use  XINFO
              function for the updated value).

       Label  widget  class  name  Label  (case insensitive).  function prefix
              Lab.

              The Label Motif widget is available, in is two type Label string
              and Label Pixmap.
              The  UIL  creation callback procedure ( parameter of MrmNcreate-
              Callback) to be used is create_label_proc.
              No Nodal callback facility is available.  Labels are used mainly
              to  display  dynamic  text  or  pixmap  with  the possibility of
              attached PopupMenu.

              The Nodal function LABSTRG provide convenient Nodal interface to
              read and write the label of a Label string widget.

              Widget resources handle by XGETRS, XSETRS :

              label   widget  resource  name  :  XmNlabelString,  item  type :
                      string variable (only for String label type)

              pixmap  widget resource  name  :  XmNlabelPixmap,  item  type  :
                      string variable (only for Pixmap label type)

              and  the  inherited  resources of the Core class and XmPrimitive
              class (ref for the list of these inherited resources at the  end
              of this chapter).

              The Pixmap defined by its name, if it is not already registered,
              is either fetched from the UID file  (it  must  be  an  exported
              ICON),  or  created  by the XmGetPixmap function. A list of cur-
              rently available Pixmap is  internally  maintained.  The  Pixmap
              which  are loaded by UID at the creation of the widget are named
              "default_pixmap_x", where x is the index into the internal list.

              Refer  to  the  various  XmLabel man pages for detailed explana-
              tions.
              The maximum number of instances in this class is 128 (use  XINFO
              function for the updated value).

       Knob   widget widget class name Knob, (case insensitive), function pre-
              fix Knb.

              The knob widget (CERN PS widget) is available.
              The UIL creation callback procedure ( parameter  of  MrmNcreate-
              Callback) to be used is create_knob_proc.
              The  Callback  reason  XmCR_VALUE_CHANGED  can result in a Nodal
              callback, if it was connected by the generic function XCALLBK.

              The Nodal functions KNBVAL, KNBACT and KNBACQ provide convenient
              Nodal interface to the knob widgets.

              Widget resources handle by XGETRS, XSETRS :

              format  widget  resource  name  :  XmNformat, item type : string
                      variable

              min     widget resource name : XmNminValue, item type :  numeri-
                      cal variable.

              max     widget  resource name : XmNmaxValue, item type : numeri-
                      cal variable

              and the inherited resources of  the  Core  class  and  XmManager
              class  (ref for the list of these inherited resources at the end
              of this chapter).

              Refer to XmWheelSwitch man pages for detailed explanations.
              The maximum number of instances in this class is  8  (use  XINFO
              function for the updated value).

       Graph and Plot
              widget  class  name  Graph and Plot, function prefix Plt.  (case
              insensitive).

              The Graph-Plot data formater widget (CERN PS widget)  is  avail-
              able.
              The  UIL creation callback procedures ( parameter of MrmNcreate-
              Callback) to be used are create_graph_proc and create_plot_proc.
              The  Callback  reason XmCR_ACTIVATE, outside a zooming case, can
              result in a Nodal callback, if it was connected by  the  generic
              function  XCALLBK.  The position of the cursor at the XmCR_ACTI-
              VATE event can be read then by GRHXYP function.

              The Nodal functions GRHACT and GRHXYP provide  convenient  Nodal
              interface  to  the  graph  widgets.  The Nodal functions PLTIDN,
              PLTXY, PLTX, PLTY and PLTSXY provide convenient Nodal  interface
              to the graph-plot widgets.

              Some quick prototyping facility for Graph display is provided by
              the XPLOT function call. It also provide a Nodal code  generator
              to setup and to update the Graph / Plot Nodal widgets.

              Widget resources handle by XGETRS, XSETRS for Graph :

              title   widget  resource  name  :  XmNtitle,  item type : string
                      variable

              xtitle  widget resource name : XmNxTitle,  item  type  :  string
                      variable

              ytitle  widget  resource  name  :  XmNyTitle, item type : string
                      variable

              xorigi  widget resource name : XmNxOrigin, item type : numerical
                      variable

              yorigi  widget resource name : XmNyOrigin, item type : numerical
                      variable

              xmin    widget resource name : XmNxMin, item  type  :  numerical
                      variable

              xmax    widget  resource  name  : XmNxMax, item type : numerical
                      variable

              ymin    widget resource name : XmNyMin, item  type  :  numerical
                      variable

              ymax    widget  resource  name  : XmNyMax, item type : numerical
                      variable

              xautos  widget resource name  :  XmNxAutoScaling,  item  type  :
                      numerical variable (0 = False or 1 = True)

              yautos  widget  resource  name  :  XmNyAutoScaling,  item type :
                      numerical variable (0 = False or 1 = True)

              foregr  widget resource name : XmNgraphForeground, item  type  :
                      string variable

              backgr  widget  resource  name : XmNgraphBackground, item type :
                      string variable

              slegen  widget resource name : XmNshowLegend, item type : numer-
                      ical variable (0 = False or 1 = True)

              and  the inherited resources of the Core class (ref for the list
              of these inherited resources at the end of this chapter).

              Widget resources handle by XGETRS, XSETRS for Plot :

              title   widget resource name :  XmNtitle,  item  type  :  string
                      variable

              xshare  widget resource name : XmNuseGraphX, item type : numeri-
                      cal variable (0 = False or 1 = True)

              yshare  widget resource name : XmNuseGraphY, item type : numeri-
                      cal variable (0 = False or 1 = True)

              color   widget  resource  name  :  XmNcolor,  item type : string
                      variable

              hilico  widget resource name : XmNhighlightColor,  item  type  :
                      string variable

              hilipo  widget  resource  name  : XmNhighlightPoint, item type :
                      numerical variable

              style   widget resource name : XmNstyle, item type  :  numerical
                      variable

              marker  widget  resource name : XmNmarker, item type : numerical
                      variable

              linest  widget resource name : XmNlineStyle, item type : numeri-
                      cal variable

              The currently set of symbols available for the graph plot widget
              are the following for the resources :
              Nb : The PLTIDN function call must be used to  define  the  wid-
              get_id for the XGETRS and XSETRS calls.

              PlotStyle point line bar

              LineStyle Continue  Dotted  Dot_dashed  Short_dashed Long_dashed
                        Odd_dashed

              Marker    Point Square Circle Round Rect None

              General   HighlightNone false true

              Notice than the  name  of  these  symbols  are  case  sensitive,
              excepted  for  the  FALSE  and TRUE which are not case sensitive
              names.
              The conversion between these symbols names  and  values  (to  be
              used in XSETRS call)is done by the XSYMBOL routine.

              Refer to XmGraph and XmPlot man pages for detailed explanations.
              The maximum number of instances in this class is  4  graphs  and
              within each graph a maximum of 4 plots.  (use XINFO function for
              the updated value).

              Graph and Plot control buttons :

              XmToggleButton created with the MrmNcreateCallback  procedure  :
              create_graphzoombutton_proc  can  be used to control the zooming
              of a graph ( the graph is defined by the create procedure param-
              eter value : graph_index ).
              XmToggleButton  created  with the MrmNcreateCallback procedure :
              create_plotcontrolbutton_proc can be used to control  the  visi-
              bility  of  a given plot of a graph ( the plot is defined by the
              create procedure parameter value :
              (graph_index-1)*nb_plot_per_graph + plot_index ).

       Digit  widget class name Digit,  (case  insensitive),  function  prefix
              Dig.

              The Digit data formater widget (CERN PS widget) is available.
              The  UIL  creation callback procedure ( parameter of MrmNcreate-
              Callback) to be used is create_digit_proc.
              The Callback reason XmCR_ACTIVATE can result in  a  Nodal  call-
              back, if it was connected by the generic function XCALLBK.

              The Nodal functions DIGACT, DIGVAL, DIGVCA, DIGVIA, DIGVAR, DIG-
              CAR, DIGCOL, DIGIAR, DIGSVC and DIGMES provide convenient  Nodal
              interface to the digit widgets.

              It must be remember than the dynamic color control is only work-
              ing on color display. On black and white it is just ignored. The
              inverted  video  dynamic  control  is  working on both color and
              black and white display.

              Widget resources handle by XGETRS, XSETRS :

              title   widget resource name :  XmNtitle,  item  type  :  string
                      variable

              format  widget  resource  name  :  XmNformat, item type : string
                      variable

              usemes  widget resource name : XmNuseMessage, item type : numer-
                      ical variable (0 = False or 1 = True)

              usesep  widget  resource  name  :  XmNuseSeparator,  item type :
                      numerical variable (0 = False or 1 = True)

              confor  widget resource name : XmNconformToContent, item type  :
                      numerical variable (0 = False or 1 = True)

              and  the  inherited  resources of the Core class and XmPrimitive
              class (ref for the list of these inherited resources at the  end
              of this chapter).

              Refer to XmDigit man pages for detailed explanations.
              The  maximum  number of instances in this class is 12 (use XINFO
              function for the updated value).

       Some generic resources are also availables for XGETRS, XSETRS,  accord-
       ing to the inheritance of the widget.

       Resources  handle  by  XGETRS,  XSETRS  for widget inheriting from Core
       class :

              bcolor  widget resource name : XmNbackground, item type : string
                      variable

              bpixma  widget  resource name : XmNbackgroundPixmap, item type :
                      string variable

              cdepth  widget resource name : XmNdepth, item type  :  numerical
                      variable (Get only)

              height  widget  resource name : XmNheight, item type : numerical
                      variable (Get only)

              width   widget resource name : XmNwidth, item type  :  numerical
                      variable (Get only)

              xposit  widget resource name : XmNx, item type : numerical vari-
                      able

              yposit  widget resource name : XmNy, item type : numerical vari-
                      able

       Resources  handle by XGETRS, XSETRS for widget inheriting from XmPrimi-
       tive class :

              fcolor  widget resource name : XmNforeground, item type : string
                      variable

              hcolor  widget  resource  name  : XmNhighlightColor, item type :
                      string variable

              hpixma  widget resource name : XmNhighlightPixmap, item  type  :
                      string variable

              traver  widget  resource  name  :  XmNtraversalOn,  item  type :
                      numerical variable (0 = False or 1 = True)

              userda  widget resource name : XmNuserData, item type :  numeri-
                      cal variable

       Resources handle by XGETRS, XSETRS for widget inheriting from XmManager
       class :

              fcolor  widget resource name : XmNforeground, item type : string
                      variable

              hcolor  widget  resource  name  : XmNhighlightColor, item type :
                      string variable

              hpixma  widget resource name : XmNhighlightPixmap, item  type  :
                      string variable

              userda  widget  resource name : XmNuserData, item type : numeri-
                      cal variable

PS ND-CONSOLE EMULATION
       At CERN PS a special user interface and a set of Nodal routines provide
       an  emulation  of  the PS ND-console display and interactives resources
       for Nodal programs.

       This facility provide a full emulation of the video character and semi-
       graphic  screens,  with  the tacker ball cursor (video cursor), and the
       user touch-screen.  The graphic facility is not fully emulated,  but  a
       set  of 1 to 4 graphs (each graph is equipped with 2 plots) is provided
       in a graphic screen.  The Nodal functions available to use this graphic
       facility  are the functions set of the Graph-Plot widgets. They are not
       the specific Nodal interface as provided for the HP graphic  translator
       of the CERN PS ND-consoles.

       The function which load this special emulation user interface and build
       the various dedicated environment variables is PSCONSOL. This  function
       allows  also  to  load an secondary UID file to complement the standard
       user interface UID description file.
       The standard UID user interface description file  is  read  by  default
       from  /usr/local/util/nodal/ps_console_emul.uid.   The Unix environment
       variable PS_CONSOLE_EMUL_UID can be defined to overwrite the full  path
       name of the emulation user interface description file.

       The  PSCONSOL  function call describes the resources which are brought.
       This resources includes the large color video semi-graphic screen, 1 to
       4 character video screens, the user touch-screen, knobs (not yet imple-
       mented), and the graphic screen equipped with 1 to  4  graph-plot  dis-
       plays.   The  tracker ball, emulated by the work station mouse is auto-
       matically available as soon as 1 video screen is fetched.
       The video screen size is 64 (horizontal) by 24  (vertical)  characters.
       The  background character video screen of the touch-screen is 56 (hori-
       zontal) by 20 (vertical) characters instead of the  48  by  24  in  the
       original PS ND-console.

       The  Multi  Wait  facility  emulation  use  the asynchronous processing
       tools, and the group / value descriptor (the wakeup reason  value)  are
       encoded  into  a  Nodal  event (ref WAKEUP function) with the following
       convention : the group is in the upper 16 bits, the value in the  lower
       16 bits of the event descriptor :
       (wakeup reason = (group_nb * 65538) + value).
       Remember  that  the  last  registered event descriptor can be retrieved
       with the REASON call.
       Any user call to the WAKEUP function results in an event  of  the  user
       group (USERGR).

       The Nodal functions set available to use the video screen are the func-
       tion set of the Drawing Area  widget  class  :  WRITE,  POSIT,  SDMOUT,
       SDMIN,  PIXIN,  PIXOUT,  TVEDIT,  TVREAD, KENABL, KDSABL, KCURC, KCURL,
       BITMAP and DRWACT
       The Nodal functions set which are only availables when  this  emulation
       user  interface  is  loaded are : COLOUR, BANDW, LEGLUN, GRAPH, LEGEND,
       MWAIT, BUTS, EVENT and GRAPHSZ.
       The following Nodal environment variables are also defined according to
       the actual resources brought :
       predefined  control  character  string  for  video screen : RED, GREEN,
       BLUE, WHITE, LBLUE, MAGENT, YELLOW, BLACK, BACKGR, INVERT, ERASE
       multi wait groups identifier values  :  BALLGR,  TPGR,  TRIGER,  KNVGR,
       EVENGR and USERGR.
       These Nodal environment variables set is erased when the emulation user
       interface is destroyed with the XPURGE function call.

NODAL EXTENDED FACILITIES
       Facilities which are available in the current implementation. For  some
       of  these functions or commands more details are available in the Nodal
       Refence Manual.
       An analytical list is provided at the end of the document.

       @      issue a sh shell command.  The remaining part  of  the  line  is
              given  to  the   UNIX system(3) standard C routine.  nodal waits
              until the shell has completed.
              On MS-DOS system, only the external DOS commands are executed by
              the  system function call (ref MS-DOS documentation for the list
              of external commands).
              Example: @ ls -l *.nod

       %      the remaining part of the line is a comment
              Example: set v=1; % initialize v variable

       ?      call the Nodal help facility.
              See also man description.

       ?off   switch the Nodal program trace feature OFF.
              The qualifier SYSTEM (or SYS or KERNEL) can be  use  to  dynami-
              cally  turn  OFF the kernel trace condition (as defined normally
              by the -trace option.
              Example:
                  ?off
                  ?off kernel

       ?on    switch the Nodal program trace feature ON.
              The qualifier SYSTEM (or SYS or KERNEL) can be  use  to  dynami-
              cally turn ON the kernel trace condition (as defined normally by
              the -trace option.
              Example:
                  ?on
                  ?on kernel

       !      redo a command (form the history list) specified by the  parame-
              ter value. A positive value is the number of the command, a neg-
              ative value is its relative position, a ! value is equivalent to
              -1 (redo the last command).
              This meta command can be used only in immediate mode.
              Example:
                  !38  =  redo command line 38
                  !-4  =  redo the 4th previous command
                  !!   =  redo the last command (equivalent to !-1)
                  !xyz =  redo the command starting with xyz

       $ask   The  $ask Nodal command types a column for each string required;
              the user types a string to define each variable.  If the  string
              variable  exists,  the  content of this variable is edited, else
              the string variable is created.
              The $ASK can be terminated by a WAKEUP call from  a  Nodal  call
              back.  In this case the returned value is zero (0), and the REA-
              SON is not zero.
              Example: $ask "string 1 " s1 "string 2 " s2

       $do    The $do Nodal command executes the command stored in the string.
              Example: $do strg.

       $if    The  $if  Nodal  command executes the remaining part of the line
              according to the validity  of  the  string  lexical  comparison.
              This  lexical  comparison  is  done on the basis of the internal
              encoding of characters (normally ASCII encoding).  All the  com-
              parison  operators  :  =  >  <  >=  <= <> == != >> << are avail-
              ables (ref if command).

              The three branches version of the  $IF  command  allows  program
              jumps  to be controlled by the sign of a string expression. This
              expression  can  be  only   a   lexical   subtraction   of   two
              concatenations.   If the value is less equal or greater to zero,
              the control is passed to the first, second  or  third  specifyed
              lines.  If  the  corresponding  line number is missing, the next
              command is executed.
              Example:
                  $if ST = "string"; do 50
                  $if (ST-"string1") 10, 50, 60

       $match The $match Nodal command matches the string with the pattern, if
              the match fails GOTO to the specifyed program line.
              Example: $match STR1 P1 : 50.10

       $pattern
              The $pattern Nodal command creates the pattern variable from the
              given expression.
              Example: $pattern P1 = "XYZ"

       $set   The $set Nodal command sets the string variable to the result of
              the  concatenation. If the variable does not already exist it is
              created.
              If the concatenation expression is just a string  function  call
              an  exception  line  number  can  be  specifyed  for the case of
              "String Function failure" error return.
              Example:      $set st = "zxc" v1      $set  st  =  string_func-
              tion(x):60.90

       $value The  $value  Nodal  command  exits from the Nodal defined string
              function with the concatenation as function value.
              Example: $value "xyz"

       Abort  pattern. If tried cause the complete failure of the $MATCH.

       Abs    return the absolute value.
              Example: set ab = abs(z)

       Acall  multi equipments (equipment number), multi data  per  equipment,
              equipment  access  array  call. New uniform array call access to
              equipment.  This call is single equipment class  (single  Equip-
              ment  module)  call,  as  well as all the equipment access Nodal
              facilities.

              Parameters list :
              - eqm = name or number of the equipment module.
              - equip_array = equipment number array (int or long), array size
                = number of equipments.
              - property = property name (with optional suffix) or value.
              - pls = pls line condition.
              - global_coco = global completion code.
              - data_array  =  data  array, 2 dimension array, 1st dimension =
                number of data per equipment, 2nd dimension = number of equip-
                ments.  The type of array depends on the property called.
              - rw = read (1) or write (-1) flag.
              - coco_array  = completion code array (int or long), size = num-
                ber of equipment.

              The actual size of equip_array define the number of equipment in
              use   during  this  multi  equipment  call.   The  size  of  the
              coco_array and  the  second  dimension  of  data_array  must  be
              greater  or  equal to the number of equipment in use during this
              call (= the size of the equip_array).
              If their is only 1 data per equipment, the data_array can  be  a
              single  dimension array, and it size must be greater or equal to
              the number of equipment in the call.
              The equip_array array (eqp_list parameter) as returned  by  EQP-
              FILTR  (or  FSEEQ) working set call can be used directly to exe-
              cute this call.  The EQPFILTR (or FSEEQ) routines  adjust  auto-
              matically  the  actual size of the array to the actual number of
              equipments.
              Ref to the called equipment module  documentation  to  find  the
              data array type, and the number of data per equipment.
              Example:
                  acall(eqm, equip_array, property, pls,
                    global_coco, data_array, rw, coco_array)

       Acos   returns the arc cosine in the range 0 to pi.
              Example: set y = acos(x)

       Acosh  returns the arc hyperbolic cosine.
              Example: set y = acosh(x)

       Affine do  an  affine  transformation of the array (of real (double) or
              float.  The affine transformation is  defined  by  a  couple  of
              object,  image  points.  These  elements  have  not be necessary
              inside the domain of the array.
              ( object1 -o-> image1 , object2 -o-> image2).
              The image array overwrites the object array.  Example:
                  affine(array, o1, i1, o2, i2)
                  % the transformation y = alpha*x + beta can be defined with
                  affine(array, 0, beta, 1, alpha+beta)

       Aeqm   Old fation multi equipments,  multi  data  per  equipment  array
              equipment  access  call.   This  call  is single equipment class
              (single Equipment module) call, as well  as  all  the  equipment
              access Nodal facilities.
              This function is provided for compatibility with the old control
              system, and must not be any more used.
              The ACALL which provide a more simpler and more  uniform  inter-
              face to array call must be used.

              Parameters list :
              - eqm = name or number of the equipment module.
              - data_array  = data array (actual type depends on the EQM), 1st
                value = number of data for 1 equipment.
              - rw = read (1) or write (-1) flag.
              - equip_array = equipment number  array  (short  or  long),  1st
                value = number of equipment.
              - property = property (with optional suffix) name or value.
              - pls = pls line condition.
              - coco_array  = completion code array (short or long), 1st value
                = global completion code.

              The size of eqm_number_array and coco_array must  >=  number  of
              equipment +1.
              The  size of data_array must be >= (number_of_data_per_equipment
              * number_of_equipment) +1.
              Example:
                  aeqm(eqm, data_array, rw, equip_array, property,
                    pls, coco_array)

       Aeqp   multi equipments,  multi  data  per  equipment  array  equipment
              access call.  This call is single equipment class (single Equip-
              ment module) call, as well as all  the  equipment  access  Nodal
              facilities.
              This access method, or ACALL function must be used as a replace-
              ment for the obsolete AEQM call.

              Parameters list :
              - equip_array = equipment number array (int  or  long),  size  =
                number of equipments.
              - property = property name (with optional suffix) or value.
              - pls = pls line condition.
              - global_coco = global completion code.
              - data_array  =  2  dimension  array, 1st dimension => number of
                data per equipment, 2nd dimension = number of equipments.  The
                type of array depends on the property called.
              - rw = read (1) or write (-1) flag.
              - coco_array = completion code array (int or long), size => num-
                ber of equipment.

              The actual size of equip_array define the number of equipment in
              use   during  this  multi  equipment  call.   The  size  of  the
              coco_array and  the  second  dimension  of  data_array  must  be
              greater  or  equal to the number of equipment in use during this
              call (= the size of the equip_array).
              If their is only 1 data per equipment, the data_array can  be  a
              single  dimension array, and it size must be greater or equal to
              the number of equipment in the call.
              The equip_array array (eqp_list parameter) as returned  by  EQP-
              FILTR  (or  FSEEQ) working set call can be used directly to exe-
              cute this call.  The EQPFILTR (or FSEEQ) routines  adjust  auto-
              matically  the  actual size of the array to the actual number of
              equipments.
              Ref to the called equipment module  documentation  to  find  the
              data array type, and the number of data per equipment.
              Example:
                  aeqp(equip_array, property, pls,
                    global_coco, data_array, rw, coco_array)

       This description is the generic description for array call by Equipment
       Module name. The actual call is got by the substitution  of  ’aeqp’  by
       the actual equipment module name (ex : ’apow’).

       Alpha  return the alphabet in upper case (A ... Z)
              Example: $set st = alpha

       Alrmess
              return  the  string  for the given Alarm code in the given Alarm
              class.
              The main alarm class are defined as following, actual list  must
              be taken from dbrt documentation.
               -  1 : General information (e.g. bit significance)
               -  2 : Warning for non-fatal fault condition
               -  3 : Analog value tolerance fault
               -  4 : Equipment status error (e.g. NOT ON)
               -  5 : Equipment status corresponds not to control
               -  6 : Interlocks from outside the equipment
               -  7 : Internal hardware fault
               -  8 : Interface between GM and equipment
               - 15 : General Module completion code
               - 16 : CAMAC or SOS fault
               - 17 : VME fault
               - 18 : Alarm group description
               - 19 : Message related to the alarm system itself
               - 20 : Message related to Protocole answer system
              Example: $set st = alrmess(class, code)

       Anamp  PS ND-console emulation function.
              Get the PLS line names of a PLS group. Use the old telegram num-
              ber convention (0=PSB, 1=CPS, 2=LPI).
              For the read_write parameter, only read (= 1) is emulated.
              For the number_of_line parameter, on entry only the value  1  is
              emulated,  on  return form the function this value is the number
              of PLS lines in the group (defined by the 1st_line  parameter  =
              the 1st, or any line within the group).
              the  PLS  line  names are returned concatenated 5 characters for
              each lines. A maximum of 16 lines in a group  is  allowed.   The
              SUBS can be used to extract the individual line names.
              Detailed  specifications  are available in PS/CO/Note 81-18 Rev,
              12.8.1982 : The PLS Data Table Access (DTA) E.N. and  Associated
              PLS ICCI Functions

              For  new applications it is strongly recommended to use the PLS-
              GDESC, PLSGROUP, PLSLNAME functions.
              Example:
                  anamp(old_teleg_nb, read_write, number_of_lines,
                    1st_line, line_names, coco)

       And    does logical AND.
              Example: set z = and(m,n)

       Any    match  any  single  character  contained  in  the  concatenation
              (parameter).

       Apage  PS  SOS multiplexor system, read a page form the pages data-base
              file.  Function compatibles with the APAGE ICCI call in the  old
              PS ND system.
              On  workstation  this  function  is  manly  foreseen  as  a test
              facility to check the content and the access to  the  SOS  pages
              data-base.
              The  only  command  implemented is the read command (value = 3).
              For more information refere to the sos man page on-line documen-
              tation.
              The legends are returned in a short array (12 rows, 24 columns),
              where the first character is in the most significant byte  of  a
              short.  Each column handles one legend.
              In  the  pages data-base the analogic home page is page # 1, the
              video home page is the page # 901.

              Example:
                  dim-i lg(12,24); dim-i nx(24);
                  set lp=0; set sp=0; set cc=0
                  APAGE(3, 901, lp, sp, lg, nx, cc)

       Apropos
              provided on line help for Nodal feature as specified by the key-
              word parameter.  This function list the functions, commands, and
              other facilities related to the subject (the parameter). This is
              done by extraction of the relevant information from the Analyti-
              cal Index of the Nodal man page.
              The keyword can be any word (or part of  a  word)  used  in  the
              paragraph title of the Analytical Index chapter of the Nodal man
              page file.  It can be also a word in used in the  keyword  extra
              line of the paragraph title.
              A  list  of all the paragraph title and the extra keyword can be
              get by a
              This function is only available on Unix system  for  interactive
              Nodal, and the output must be connected to standard output (std-
              out = odev).  It assumes the availability of the UNIX man  util-
              ity program.
              The  Nodal man page nroff file is assumed to be the file defined
              by NODAL_MAN_PATH environment variable, or the file : nodal.man,
              in the directory defined by NODAL_MAN_PATH, or in the sub-direc-
              tory  manl  of  the  directory  defined  by   MANPATH,   or   in
              /usr/man/manl/  standard manpage directory for the local facili-
              ties.

              In the Nodal man page file the sujects of a  paragraph  (defined
              by  the  title  words)  can  be extended by a nroff comment line
              begining by keyword with the list of subjects (in  lower  case).
              The paragraphe must be ended by a blank line.
              Without  subject  parameter, the APROPOS call is equivalent to a
              MAN apropos call and print this help information.
              Example:
                  apropos array; % print the  list  of  functions  related  to
              arrays
                  apropos ?; % print the list possible keywords

       Aqccbk Asynchronous equipment access facility.  Connects the arrival of
              data to the callback Nodal block (or line).  This block will  be
              executed  when the local Aqc server will signal the availability
              of a new data set. The data must be accessed with the  equipment
              access  routines  with  the  property flagged by the MDR suffix.
              The acquisition lists must be started  previously  to  make  the
              connection.
              Any  previously  connected  block  can be disconnected by a call
              with a zero block / line number. A call  to  AQCSTOP  (stop  the
              current  asynchronous  access)  or to XINIT, PSCONSOL, XPURGE (X
              Window interface initialization and destroy) routines disconnect
              also any previous connections.
              This function cannot be called from a Nodal callback.
              Function only available on UNIX system.

              This  facility  is  available during a X Nodal session (when a X
              Window user interface is loaded with XINIT, PSCONSOL) or  during
              a simple terminal session Nodal (without the X Motif environment
              in use).
              Example: aqccbk(block_number)

       Aqcermes
              Asynchronous equipment access facility.  Returns the error  mes-
              sage string for the given Aqc error code (as retuned by AQCSTART
              or AQCSTOP calls).
              Example: ty aqcermes(coco)

       Aqcfec Asynchronous equipment access facility.   Creates  an  Aqc  sub-
              scription list for a predefined list in a ND120 FEC (CERN PS old
              control system).  A maximum of 1 of this list can be defined. If
              the  predefined  list  accepts  a dynamic equipment number, this
              equipment number can be defined during the call, else a 0  value
              must be used.
              Example: aqcfec(PSB, "display_xxx", 0)

       Aqcfreez
              Asynchronous  equipment  access facility.  Suspends the acquisi-
              tion process of data. The acquisition can be resumed latter with
              a call to AQCUNFRZ call.
              Example: ty aqcfreez

       Aqcinfo
              Asynchronous  equipment  access  facility.  Displays the content
              and the status of the currently defined Aqc lists.
              Example: aqcinfo % display the currently defined AQC lists

       Aqcstart
              Asynchronous equipment access  facility.   Ends  the  definition
              process  of  Aqc  lists  and  starts the process of asynchronous
              acquisition for the given PLS condition.
              Returns the error code of abnormal condition detected by the Aqc
              package.  When Nodal is started with the trace flag (-t), errors
              information are displayed on stderr.
              To redefine new Aqc lists after a call to AQCSTART, the acquisi-
              tion  must be stopped and the lists destroyed previously by AQC-
              STOP call.
              Example: set cc = aqcstart(pls_line)

       Aqcstop
              Asynchronous  equipment  access  facility.   Stops  asynchronous
              acquisition  process  and  destroy the Aqc lists.  Any call back
              Nodal block connected are also disconnected.
              After this call a new sequence of subscription (AQCSUBS) can  be
              issued to redefined new Aqc lits.
              Returns the error code of abnormal condition detected by the Aqc
              package.  When Nodal is started with the trace flag (-t), errors
              information are displayed on stderr.
              Example: set cc = aqcstop

       Aqcsubs
              Asynchronous equipment access facility.  Subscribes to the asyn-
              chronous equipment acquisition for an  equipment  element  or  a
              list of equipment elements.  An equipment acquisition element is
              defined by an equipment qualified by a property, data type, data
              size.   These elements are dispatched to the Aqc lists according
              to the Aqc package rules.
              A single equipment can be defined by its OB name or by the  dou-
              blet equipment module (defined by name or value), equipment num-
              ber.
              A list of equipment is defined by the equipment module  (defined
              by  name  or value), and a long array of equipment numbers. This
              long array can be built from working set by EQPFILTR call.   The
              same equipment, for the same property can be subscribed only for
              one set of data type, size qualifiers.
              A maximum of 256 equipment elements can  be  subscribed,  for  a
              maximum  of 32 Aqc lists. An Aqc list is a set of equipment ele-
              ments for the same front  end  processor  (DSC),  and  the  same
              equipment module.
              The  property  can  be defined by its name or its value. It must
              not includes any suffix. Only properties which result in  acqui-
              sition are meaningful.
              The data type, size qualifiers doublet is by default Nodal Real,
              1 or can be defined by a Nodal numeric array (or variable).   If
              the array is a 2 dimensions array, the data size is taken as the
              first dimension size (number of ) according to the convention of
              AEQP (multi equipments, multi data per equipment array equipment
              access call).  The data type is  defined  by  the  type  of  the
              numerical array, (or Real for a numerical variable).
              Example:
                  aqcsubs("ob_name", property)
                  aqcsubs(eqm_name, eqp_number, property, array)
                  set sz = eqpfiltr(pow,,,,ar); dim va(sz)
                  aqcsubs(pow, ar, ccv, va)
                  aqcsubs(pow, ar, aqn, va)

       Aqcunfrz
              Asynchronous equipment access facility.  Resumes the acquisition
              process of data previously suspended by a call to AQCFREEZ  rou-
              tine.
              Example: ty aqcunfrz

       Aqcycle
              Asynchronous  equipment access facility.  Returns the cycle num-
              ber (as defined in the PLS telegram) of the last  data  received
              from  the Aqc server, to be used for pulse identification within
              a supercycle.
              If no asynchronous acquisitions are active, a  device  not  con-
              nected error is returned.
              Example: set cy = aqcycle

       Arb    match any  character or character string.

       Arg    array of 16 integers global variable.
              Example: set arg(3) = 123.456

       Arrins insert  the  data  at  the  specified  position in the numerical
              array. All the elements which follow  the  insertion  point  are
              moved forward, the last one of the array is lost.

              The  size  of  the significant data in the array (3rd parameter)
              can be used to improve the  performance  of  insertion,  when  a
              large array is partially filled with data.
              If this parameter is >= 0 only the significant data are moved. A
              value < 0 (or obviously if it is larger than the actual size  of
              the array) means that all the data are significant.

              A  dual  dimension array can be used, but it is seen as a single
              dimension array by this function (ref DIMENSION command).
              Example: set arrins(array_name, position, size) = data

       Arsize returns the array size (number of  elements)  for  numerical  or
              string array.
              Example: set as = arsize(array_name)

       Ascii  return  the ASCII code of the string. If the string is more than
              a single character the code is the sum of the codes of all char-
              acters.
              Example: set as = ascii("@")

       Asin   returns the arc sine in the range -pi/2 to pi/2.
              Example: set y = asin(x)

       Asinh  returns the arc hyperbolic sine.
              This function is available only on UNIX systems.
              Example: set y = asinh(x)

       Ask    The ask Nodal command types the promt concatenation (if defined)
              then types a column for each value required. The user  types  an
              expression, its numerical value is given to the variable.
              The  ASK  can  be  terminated by a WAKEUP call from a Nodal call
              back.  In this case the returned value is zero (0), and the REA-
              SON is not zero.
              Example: Ask "value of v1 " v1 "... of v2 " v2 "... of v3 "v3

       Asyncfz
              read,  write  or  flip  the state of the asynchronous processing
              frozen flag; A call will flip the current state of the flag, and
              read or write call will read or set the state of the flag.
              When  this  flag  is set, asynchronous events will not result in
              execution of the associated Nodal call back. The events are  not
              queued,  they  are just forgotten. This facility is mainly fore-
              seen to suspend temporarily the updating of displays.
              Example:
                  asyncfz; % flip the state
                  set asyncfz = 1; % set the flag, suspend call-backs
                  set asyncfz = 0; % reset the flag, resume call-backs
                  set fg = asyncfz; % read the current state

       At2    returns the arc tangent of x/y in the range -pi/2 to pi/2.
              Example: set t = at2(x,y)

       Atan   returns the arc tangent in the range -pi/2 to pi/2.
              Example: set y = atan(x)

       Atanh  returns the arc hyperbolic tangent.
              This function is available only on UNIX systems.
              Example: set y = atanh(x)

       Background
              PS ND-console emulation environment read only string variable.
              Prefix background color, video screen control character.

       Ballgr PS ND-console emulation environment read only numeric  variable.
              Predefined event group of video cursor validation event.

       Bandw  PS  ND-console  emulation function.  Return the video identifier
              of one of the emulated small video character screen.
              The value returned by this function can be changed  between  two
              instanciation  (done  with  PSCONSOL call) of the console emula-
              tion.
              Example: write(bandw(1)) concatenation

       Bessel returns the Bessel functions of the first and second  kinds  for
              real arguments and integer orders.  The function selectors are :
              j0 j1 jn y0 y1 yn
              This function is available only on UNIX systems.
              Example:
                  set y = bessel(j0, x)
                  set y = bessel(jn, n, x)

       Bit    reads or set a given bit in a  parameter  (seen  as  an  integer
              value)
              Example:
                  set bit(nb, data) = 1
                  set z = bit(nb, data)

       Bitmap DrawingArea  (video  screen)  widget  class convenient function.
              Edit a user defined bitmap  character  on  the  specified  semi-
              graphic  video  screen.  A  user character is a bitmap of 8 x 15
              pixels.
              If the character code parameter is omited, the character  to  be
              edited  is  interactively chosen from the screen with the mouse.
              In this case the 2 top lines is temporarily overwrite  with  the
              128 currently loaded user defined bitmap character set.
              To  select  the  character  to be edited click on the character.
              When the edition is done, the new drawing of  the  character  is
              applied to the display.
              The  edited  bitmap character set must be saved with SDMIN func-
              tion call.
              This function is available only for interactive Nodal.

              This function assume the availability of  the  bitmap  X  window
              utility program.

              Function only available on UNIX system with X11 window facility.
              Example:
                  bitmap(video_ident, char_code)
                  bitmap(video_ident); % select interactively

       Black  PS ND-console emulation environment read only string variable.
              Black color video screen control character.

       Blue   PS ND-console emulation environment read only string variable.
              Blue color video screen control character.

       Break  match up to but not including any break character  contained  in
              the concatenation (parameter).

       Butact Button  widget class convenient function.  Return the last acti-
              vated Button identifier.  Future call will return a 0 value.  If
              no Button was activated a 0 value is returned.
              Function only available on UNIX system with X11 window facility.
              Example:
                  set button_id = butact;
                  % return the last activated Button widget

       Butcas Button widget class convenient function.  Return  the  preceding
              activated Button identifier in the cascade.  Return a 0 value if
              it is already the top of the cascade.
              Only callable during Nodal call-back.
              Function only available on UNIX system with X11 window facility.
              Example:
                  set button_id = butcas(button_id);
                  % return the preceding Button

       Butinv Button  widget  class  convenient  function.  Exchange the fore-
              ground and background color of the Button label.
              Function only available on UNIX system with X11 window facility.
              Example: butinv(button_id)

       Butmnu Button  widget class convenient function.  Return the Menu iden-
              tifier to which the Button belongs.
              Function only available on UNIX system with X11 window facility.
              Example: set menu_id = butmnu(button_id)

       Buts   PS  ND-console emulation function.  Immediately read event ident
              from the given group. This call does not suspend the caller.  If
              not  event  is pending in the given group, the function return a
              zero (0) value.
              Example: set event_id = buts(group_nb)

       Butval Button widget class convenient function.  Read or write the cur-
              rent Button value (ON = 1, OFF = 0).
              Function only available on UNIX system with X11 window facility.
              Example:
                  set val = butval(button_id);
                  set butval(button_id) = val;

       Call   The call Nodal command transfers the control  to  the  specifyed
              subroutine. The CALL keyword can be left out to call the subrou-
              tine.
              Example:
                  call close(stream)
                  close(stream)

       Chain  run consecutive files retaining data in the Nodal text buffer.
              Example: chain prog1 prog2 prog3

       Close  close an opened file (stream). A  CLOSE(-1)  or  CLOSE(-2)  will
              close any registered (by OPEN) opened file.
              Example: close(stream)

       Clrkb  flush any pending character from the terminal input buffer. This
              function is applied to idev stream if it is connected to a  ter-
              minal driver.
              Example: clrkb

       Colour PS  ND-console  emulation function.  return the video identifier
              of the emulated  color  video  semi-graphic  screen.  The  value
              returned  by this function can be changed between tow instancia-
              tion (done with PSCONSOL call) of the console emulation.
              Example: write(colour) concatenation

       Copy   copy  source array to  destination  array  from  source  element
              start  to destination element start. The copy is terminated when
              either array is exhausted. String array are not allowed. One  of
              the 2 arrays can be replaced with a Nodal string (seen as a byte
              array).
              Example:
                  copy(SA, DA, 1, 10)
                  % Copy from SA(1).. into DA(10)..

       Cos    return the cosine of x (in radians).
              Example: set y = cos(x)

       Cosh   return the hyperbolic cosine.
              This function is available only on UNIX systems.
              Example: set y = cosh(x)

       Cpinfo display the official computer name string  associated  with  the
              computer  name or alias, its IP address, and extra notice in the
              case of special communication protocol to access  this  machine;
              for  example  for  the  ND100 computer which does not accept the
              IEEE floating point format.
              synopsis : cpinfo("priam")

       Cpname return the official computer name  string  associated  with  the
              computer identifier. Alias names are not returned.
              Example:
                  type cpname(local);
                  % print the local computer name

       Ctime  return  the  current  time  and  date  string as provided by the
              ctime(3) standard C Unix library function.
              If a parameter is provided, it is assumed to be a time value, in
              the  standard UNIX reference (the time in seconds since 00:00:00
              GMT, January 1, 1970) and convert this value into  the  ctime(3)
              string.
              Example:
                  type ctime;
                  % print the current date and time
                  set v = 732563401; type ctime(v)
                  % convert into date and time

       Data   Dump  Nodal  variables.  If a list of variable is given as argu-
              ment, these variables are dumped, if not all the current list of
              Nodal variables are dumped.
              The  dump  of  the  variable  header is in decimal for the size,
              type, and the 3 extra short words. the name  is  dump  as  ASCII
              character,  and  in octal : the 6 value enclosed in parenthesis.
              The body of the variable is dumped as  unsigned  short  word  in
              hexadecimal.
              Example:
                  data;  % dump the variables
                  data v1 v2; % dump variables v1 and v2
                  data(v1,v2); % dump variables v1 and v2

       Date   return the current date in ISO format ( MM-DD-HH:MM:SS )
              Example: $set da = date

       Dbdat  Equipment  access property suffix to access the Date of the Ref-
              erence value stored in the on line data base.
              Example: CCV_DBDAT

       Dbdref Equipment access  property  suffix  to  access  Reference  value
              (stored in the on line data base.
              Example: CCV_DBREF

       Define The  define  Nodal  command  defines  a  subroutine (no returned
              value), a function or a string function. The body of the routine
              is the content of the text buffer.
              Example:
                  def-fun func; % a function without parameter
                  def-cal subf(r-x, s-st)
                  def-str strfun(r-x, v-y)

       Digact Digit  widget  class  convenient function.  Return the activated
              digit line.  This function is only callable during execution  of
              a callback block (or line).
              Function only available on UNIX system with X11 window facility.
              Example:
                  set digit = digact(line_nb);
                  % return the activated digit widget, and the pointed line

       Digcar Digit widget class convenient function.  Loads the color parame-
              ter  array.  The size of the color array must be the same as the
              current setting of the widget colorParameterType  resource  done
              by DIGSVC function call.
              The color_array can be any numerical array type. This array data
              are Nodal indexes (1 to max_color) in the color list  loaded  by
              DIGCOL function.
              Remember  that  the  dynamic  color control is only working on a
              color display.
              Function only available on UNIX system with X11 window facility.
              Example: digcar(digit, color_list_array);

       Digcol Digit    widget    class    convenient   function.    Load   the
              color_list_arrays.  The  foreground_array  and  background_array
              are  string_arrays of color_names.  If the name cannot be trans-
              lated into a Pixel value or if  no  string  is  assigned  to  an
              index, the default widget foreground or background color (Pixel)
              is used.  The color_name must be one of the exported color value
              defined in the UIL file or one of the valid X11 predefined color
              name (ref to X11 man page and /usr/lib/X11/rgb.txt file)
              Function only available on UNIX system with X11 window facility.
              Example: digcol(digit, foreground_array, background_array);

       Digiar Digit  widget  class  convenient  function.   Loads the inverted
              video flag array.  The size of the  inverted  video  flag  array
              must  be  the same as the current setting of the widget colorPa-
              rameterType resource done by DIGSVC function call.
              The flag_array can be any numerical array type. This array  data
              are  0  value  for  normal  video,  and not 0 value for inverted
              video.
              The inverted video control is working on both  color  and  black
              and white display.
              Function only available on UNIX system with X11 window facility.
              Example: digiar(digit, inverted_video_flag_array);

       Digmes Digit widget class convenient function.  Load the digit  message
              list form the Nodal string array.
              Function only available on UNIX system with X11 window facility.
              Example: digmes(digit, string_array);

       Digsvc Digit widget class convenient  function.   Configure  the  Digit
              widget  according  to  the  parameters list.  It sets the widget
              resources which describe the parameters according  to  the  type
              and  size of the value_array.  All the values are declared to be
              valid input (ref to XmDigit description).
              If the format parameter string is not empty, set the  format  as
              defined  by this string, else set the format according to a rea-
              sonable default for the type of value_array.
              The value_array can be int, long, real or  string  Nodal  array.
              If  it  is a string array it size is defined as the value of the
              upper index, and not as it standard Nodal_array_size value.
              During further call to update the widget with  the  array  calls
              (DIGVCA, DIGVIA, DIGVAR, DIGCAR, DIGIAR), the size of the arrays
              value_array, color_array, and inverted_video_flag_array must  be
              equal  to  the  size  of  the value_array defined by this DIGSVC
              call.  The type of the value_array must be also the same as  the
              type defined by this call.
              Function only available on UNIX system with X11 window facility.
              Example: digsvc(digit, value_array, format);

       Digval Digit widget class convenient function.  Load  and  display  the
              value  on  the defined line with the defined color (the color is
              the index in the color list) and in invert color if  the  invert
              parameter  is  not  zero.  The value type must match the current
              setting of the widget resources (done with digsvc or by the  UIL
              file).
              The value can be  numerical value or string.
              Function only available on UNIX system with X11 window facility.
              Example: digval(digit, line, value, color_index, invert);

       Digvar Digit widget class convenient function.  Load  and  display  the
              value_array.   The value_array type and size must match the cur-
              rent setting of the widget resources (done with digsvc or by the
              UIL file).
              The  value_array  can  be int, long, real or string Nodal array.
              In case of string array if a string is not defined for  a  given
              index it is taken as an empty string.
              Function only available on UNIX system with X11 window facility.
              Example: digvar(digit, value_array);

       Digvca Digit widget class convenient function.  Loads  the  value_array
              and  the color_array and redraw the digit.  The value_array type
              and size and the color_array size must match the current setting
              of the widget resources (done with DIGSVC or by the UIL file).
              The  value_array  can  be int, long, real or string Nodal array.
              In case of string array if a string is not defined for  a  given
              index it is taken as an empty string.
              The color_array can be any numerical array type. This array data
              are Nodal indexes (1 to max_color) of the color list  loaded  by
              DIGCOL function.
              Remember  that  the  dynamic  color control is only working on a
              color display.
              Function only available on UNIX system with X11 window facility.
              Example: digvca(digit, value_array, color_array);

       Digvia Digit  widget  class convenient function.  Loads the value_array
              and the inverted video flag array and  redraw  the  digit.   The
              value_array and the flag_array type and size must match the cur-
              rent setting of the widget resources (done with digsvc or by the
              UIL file).
              The  value_array  can  be int, long, real or string Nodal array.
              In case of string array if a string is not defined for  a  given
              index it is taken as an empty string.
              The flag_array can be any numerical array type.
              Function only available on UNIX system with X11 window facility.
              Example: digvca(digit, value_array, video_flag_array);

       Dimension
              The dimension Nodal command creates a  array  according  to  the
              qualifier.  This  qualifier  to be used for the various types or
              arrays are (minimum abbreviation is in upper case) :
              Byte, SHort, Integer, Long, Float, Double, Real (and String  for
              arrays of strings).
              SHort and Integer types refer to the same short integer type (16
              bits).  This feature is for compatibility with the previous ver-
              sion  of  Nodal  on  mini  and  micro processors like ND-100 and
              TMS9900.
              For numerical array, the 1 or 2 dimensions of the array must  be
              defined.  For string array no dimension specification is needed.
              The two dimension numerical arrays are ROW,  COLUMN  array,  the
              first  subscript is the ROW, the second is the COLUMN.  They are
              stored by column, the first subscript (ROW) varies most rapidly.
              They  can  be  accessed as a single dimensional array, for which
              the index is :
              row_index + (column_index -1)*nb_of_row
              for DIM A(3,5)  A(1,2) is equivalent to A(4) : 4 = 1  +  (2-1)*3
              Example:
                  dimension AR(5,7); /* array of 5 rows of 7 columns */
                  dimension R(34)
                  dimension-I S(34)
                  dimension-S st

       Do     The  do  Nodal command executes a separated group of the program
              as a subroutine. An error exception handling  can  be  specified
              with the "!" syntax. This exception block is seen as an implicit
              GOTO in case of an error.
              Example: Do 10!90

       Drwact DrawingArea (video screen)  widget  class  convenient  function.
              Return  the  last activated DrawingArea identifier.  Future call
              will return a 0 value. If no DrawingArea was activated a 0 value
              is returned.
              Function only available on UNIX system with X11 window facility.
              Example:
                  set screen_id = drwact
                  % return the last activated screen widget

       Dscboot
              Return the DIGIO member number and data to be use in a TRIG call
              to initiate a DSC reboot of the DSC defined by its name.
              The DSC name can be get by a DSCLST function call.

              The  function  return  value  out  of range error if no data are
              defined for the given DSC name in dbrt.  Example:
                  set di.gio = 0
                  set data = dscboot(dsc, di.gio)

       Dsceqm build a list of Equipment module numbers which are in the  given
              DSC.
              The  lists is returned in long arrays, which is created if it do
              not exits already. Returns the number of equipment  module  num-
              bers in the list (size of the long array).
              To  convert  in  string (for printing for example) the equipment
              module number, the function SYMBS with category parameter = 2 is
              available.   To  convert  an  Equipment module name in Equipment
              module number, the function SYMBOL is provided.
              Remember that equipment module call can  be  done  by  Equipment
              module  number  with  the  generic  functions SCALL for a single
              equipment call and ACALL for a multi equipments call.

              On a DSC the local equipment module list is build, the parameter
              DSC  name  is ignored. In this case, for better legibility is it
              strongly advise to use the  "local"  value  for  the  DSC  name.
              Example: set nb = dsceqm(dsc_name, long_array_name)

       Dsceqp build a list of Equipment member (member value) which are in the
              given DSC for the given Equipment module. The  Equipment  Module
              can be defined by its name or its number.
              The  lists is returned in long arrays, which is created if it do
              not exits already. Returns the number of  equipment  numbers  in
              the list (size of the long array).
              Remember  that  Equipment  call  can be done by Equipment module
              number with the generic functions SCALL for a  single  equipment
              call and ACALL for a multi equipments call.

              On a DSC the local equipment module list is build, the parameter
              DSC name is ignored. In this case, for better legibility  is  it
              strongly  advise  to  use  the  "local"  value for the DSC name.
              Example:
                  set nb = dsceqm(dsc_name, EQM_name, long_array_name)
                  set nb = dsceqm(dsc_name, EQM_value, long_array_name)

       Dsclst build a list of DSC names and comments for the  given  Accelera-
              tor.  The lists are returned in string arrays, which are created
              if they do not exits already. Returns the number of names in the
              string arrays (size of the string array).

              The  Accelerator  is  define  by a small magic number defined in
              dbrt.h include file.
              The major values of the accelarator magic number are :
              1 : CLIC Test Facility
              2 : Proton Linac
              3 : Lead Linac
              4 : Proton Synchrotron Booster
              5 : CERN Proton Synchrotron
              6 : LEP Injector
              7 : Antiproton Accumulator
              10: General services
              13: RFQ test facility
              14: East experimental Area

              Up-to-date values can be get with a ’’lisdsc ?’’ call.

              Example: set nb = dsclst(accele_nb, string_array_name)

       Dsper  PS ND-console emulation function. Display program error message.
              Example: dsper(string1, string2)

       Edit   Nodal  command  for  editing  one  or  more lines of program.  A
              series of lines or groups of lines can  edited  in  one  go.  An
              optional  patern  can  be specified to edit only the lines which
              match this condition.  The up-arrow and down-arrow can  be  used
              to move across the lines to be edited. The end of edition condi-
              tion is either when the  complete  line/group  specification  is
              exhausted,  or  on  abort  character  (  escape character or tty
              interrupt character ). Refer to the Line editing paragraphe  for
              the editing character functions.

              The syntax of the Edit command is :
              edit [{line-number | group-number}] [filtering-pattern]
              examples :
                  edit 10 30.12 20    edit group 10, line 30.12 group 20
                  ed                  edit all the Nodal text buffer
                  ed  10.40  20  "for"    edit  line 10.40, line with "for" in
              block 20
                  ed "zizi"           edit all the line containing "zizi"

       Emmess return the error message string for the Equipment  module  error
              code
              Example: $set em = emmess(EQM_error_code)

       End    The  end  Nodal command terminates the program execution without
              leaving Nodal.
              Example: End

       Eqm    Old fation single equipment, single data equipment  access  call
              by  equipment number.  This call is single equipment class (sin-
              gle Equipment module) call, as well as all the equipment  access
              Nodal facilities.
              This function is provided for compatibility with the old control
              system, and must not be any more used.
              The SCALL which provide a more simpler  and  more  uniform  call
              must be used.

              Parameters list :
              - eqm = name or number of the equipment module.
              - data = value to be read or written
              - rw = read (1) or write (-1) flag.
              - equip_number = equipment number.
              - property = property name (with optional suffix) or value.
              - pls = pls line condition.
              - coco = completion code.

              Example: eqp(eqm, data, rw, equip_number, property, pls, coco)

       Eqp    single equipment, single or multi data equipment access call.

              Parameters list :
              - equip_number = equipment number.
              - property = property name (with optional suffix) or value.
              - pls = pls line condition.
              - coco = completion code.

              For multi data call : extra parameters
              - data_array  = data array, 1 dimension array, size =  number of
                data.  For byte array a Nodal string can be used (see bellow).
                The type of array depends on the property called.
              - rw  = read (1) or write (-1) flag, (optional, default = read).

              New feature : in case of multi data call of a  byte  array,  the
              array  can be replaced by a Nodal string. On read the content of
              the string is replaced with the data returned by  the  equipment
              module  called  (it  is  assumed  that this data are a string of
              characters).
              For a read call the size of the data is limited to a maximum  of
              80 characters in this case. For write, the data size send to the
              equipment is the size of the string, as returned by  size  func-
              tion  call. For larger array, a byte array must be used.  Ref to
              the called equipment module documentation to find the data array
              type, and the number of data.
              Example:
                  single data call (read, write or call)
                     set eqp(equip_number, property, pls, coco)= value
                     set value = eqp(equip_number, property, pls, coco)
                     eqp(equip_number, property, pls, coco)

                  multi data call
                     eqp(equip_number,     property,    pls,    coco,
              data_array); %read
                     eqp(equip_number,    property,    pls,    coco,
              data_array, 1); %read
                     eqp(equip_number,     property,    pls,    coco,
              data_array, -1); %write
                     $set st=""; eqp(equip_number, property,              pls,
              coco, st, 1); %read

       This description is the generic description for array call by Equipment
       Module name. The actual call is got by the substitution of ’eqp’ by the
       actual equipment module name (ex : ’pow’).

       Eqpdata
              returns major informations on the given equipment.  Informations
              return are (in the order of parameters) :
              equipment name, equipment module name, equipment module  number,
              equipment  number,  front  end  computer  name  which drive this
              equipment, front end computer identifier number, local equipment
              number.

              To select the defined equipment the following rule will be apply
              :
              - If the equipment name is not an empty string, this name define
              the  equipment.  - Else if equipment module name is not an empty
              string, the equipment is defined by  the  equipment_module_name,
              equipment  number_doublet.   -  Else the equipment is defined by
              the equipment_module_number, equipment_number doublet.

              Parameters list :
              - eqp_name = equipment name (OB name) (4).
              - eqm_name = equipment module name.
              - eqm_no = equipment module number.
              - eqp_no = equipment number.
              - string_array = equipment data, string array values (1) (2).
              - long_array = equipment data, long  integer  array  values  (1)
                (3).

                Note  (1) : refer to dbrt package documentation for the detail
                content of the float, long and string arrays  (see  DbrtEqInfo
                record structure description).
                These  arrays  are  automatically created with the appropriate
                type and size by the EQPDATA call,  if  they  do  not  already
                exit.

                Note (2) : the main string in the string_array are :
                 - 1 : equipment name.
                 - 2 : equipment name alias.
                 - 3 : Fec or DSC name which handle this equipment.
                 - 4 : data value units name.
                 - 5 : short description.

                Note (3) : the main value stored in the long_array are :
                 - 1 : accelerator number
                 - 2 : class number
                 - 3 : member number in class
                 - 4 : FEC number (or old FEC number)
                 - 5 : local equipment number for FEC
                 - 6 : gfa  1=EQGFA, 2=GFALINK, else 0
                 - 7 : bus  1=IBCAMAC; 2=IBVME, else 0 (not used)
                 - 8 : 16 bits acq. to physical units
                 - 9 : alarm group number (old alarm system)

                Note  (4) : the equipment name string (OB name) is case sensi-
                tive.

              Example:
                  $set eqp.na="btp.dhz10"; $set eqm.na="";
                  set eqm.no=0; set eqp.no=0;
                  eqpdata(eqp.na,   eqm.na,   eqm.no,    eqp.no,
              string_array, long_array)

                  $set eqp.na=""; $set eqm.na="pow"; set eqp.no=3435
                  eqpdata(eqp.na,    eqm.na,    eqm.no,   eqp.no,
              string_array, long_array)

                  $s eqp.na=""; $s eqm.na=""; set eqm.no=3; set eqp.no=3435
                  eqpdata(eqp.na,   eqm.na,   eqm.no,    eqp.no,
              string_array, long_array)

       Eqpfiltr
              returns  the  number  of  equipment  in the attached working set
              which agree with the selection filter. The pointers for  sequen-
              tial extraction of equipment descriptors are reset to the begin-
              ning of the working set.  If at least one equipment agreed  with
              the  filter  the  sequential access is opened and can be started
              with the NEXTEQP routine call.
              If a filter on equipment module is defined, this call can  build
              an array of the selected equipment number suitable for new style
              equipment array call (ACALL or  Aeqp)  or  for  subscription  to
              asynchronous equipment access facility with AQCSUBS.
              The  filter  can be defined for the 3 main fileds of the working
              sets and for the computer (DSC or ND120 FEC)  which  handle  the
              equipment :
              Equipment Module, equipment array ID (for new style Working Set)
              sub Working Set (for old style Working Set) and the  Accelerator
              (or  FEC  in  the old working set terminology) and the DSC name.
              The no filtering condition is specifyed by a -1  value  for  the
              working  set  fileds  (Equipment Module, sub Working Set and the
              Accelerator) and by a 0 (zero) IP address in  "."  notation  for
              the DSC name (ex : "0.0.0.0") or a missing parameter.
              The  over-all  filtering  condition  is the logical and of the 4
              filters. The equipments which agreed with the 4 conditions  will
              be selected.

              The equipment module filter (mandatory parameter) can be defined
              by the equipment_module_name or the equipment_module_number,  no
              filter value = -1
              The  equipment  array  ID  or  sub  working set filter (optional
              parameter) can be defined only by its number, default value : -1
              = no filter
              The  accelerator  filter  (optional parameter) can be defined by
              the name or the number, default value : -1  = no filter
              The DSC filter (optional parameter) can be defined by  a  string
              of  the (network) name of the computer, or its IP address in "."
              notation, default value : string of null IP address "0.0.0.0" or
              "0"  = no filter
              Equipment  name  and  accelerator name names are not case sensi-
              tive, computer (DSC or ND120 FEC) name string is case sensitive.

              If  a  name  for equipment array is provided, and if a filter on
              equipment module is defined and the selection  is  not  empty  a
              long-array of equipment number is build.  The size of this array
              is the number of selected equipment.  If this name is an already
              existing  Nodal variable, it must be a long-array variable, else
              an "WRONG variable type" error is returned.  The  size  of  this
              array  is  adjusted to the actual number of selected equipments.
              This array can be directly used in  an  Equipment  access  Array
              call, new style : ACALL or Aeqp.

              After  a new attachement of a working set (with NEWWSET function
              call) the selection must be re-done with this routine to restart
              a sequential access to the list of equipments.
              synopsis   :   set   nb_eqp  =  eqpfiltr(eqm_name,  sub_wset_nb,
                          accel_name, dsc, eqp_array)
                         set nb_eqp = eqpfiltr(eqm_nb,,accel_nb)
                         set nb_eqp = eqpfiltr(eqm_nb,eqm_arr_id,accel_nb)
                         set nb_eqp = eqpfiltr(eqm_nb,,,,a.eqm)
                         set nb_eqp = eqpfiltr(eqm_nb,,,"dlilpowc",a.eqm)
                         set nb_eqp = eqpfiltr(eqm_nb,,,"192.91.236.102")

       Eqpinfo
              prints major informations on the given equipment (defined by its
              name or by its equipment_module_name, equipment_number or by its
              equipment_module_number, equipment_number).
              Example:
                  eqpinfo("equipment_name")
                  eqpinfo(pow, 3435)
                  eqpinfo(3, 3256)
                  eqpinfo equipment_name
                  eqpinfo pow, 3435
                  eqpinfo 3, 3256

       Eqpname
              returns the equipment name. The equipment can be defined by  its
              equipment_module_name, equipment_number or by its equipment_mod-
              ule_number, equipment_number).
              Example:
                  $set st = eqpname(eqm_name, equipment_number)
                  $set st = eqpname(eqm_number, equipment_number)

       Eqpwsar
              returns the number of equipment array ID in the attached working
              set  for the given equipment module. The equipment module can be
              defined by its name or its value.  If the working set is  empty,
              or  no  array  for  the  given  equipment module, it returns a 0
              value.  If it is not empty, a long-array of equipment  array  ID
              is  built.   The  size  of this array is the number of equipment
              array ID.  If this name is an already existing  Nodal  variable,
              it  must be a long-array variable, else an "WRONG variable type"
              error is returned.  The size of this array is  adjusted  to  the
              actual number of equipment array ID for the given equipment mod-
              ule in the working set.

              This facility is not available for the old style Working Set.
              synopsis : set nb_arr = eqpwsar(eqm, eqm_array_id)

       Eqpwset
              returns the number of equipment modules in the attached  working
              set.   If the working set is empty, it returns a 0 value.  If it
              is not empty, a long-array of equipment module numbers is built.
              The  size  of this array is the number of equipment modules.  If
              this name is an already existing Nodal variable, it  must  be  a
              long-array  variable,  else  an  "WRONG  variable type" error is
              returned.  The size of this array is adjusted to the actual num-
              ber of equipment modules in the working set.
              synopsis : set nb_eqm = eqpwset(eqm_array)

       Erase  The  erase  Nodal  command  erases  variable(s)  and  or program
              line(s).
              Any number of variable name, line number, group number  or  line
              range can be given as command parameters. Space character is the
              separator.  A line range is specified by a doublet of line  num-
              ber  (or  group  number) separated by a comma , character, and
              enclosed in a pair of round bracket characters ().
              The reserved names : ALL ALLP and ALLV stand for "erase all pro-
              gram  and  variables",  "erase all program lines" and "erase all
              variables".
              If no parameter is given, the default is erase ALLV.  example  :
              erase va 1.2 (30.4 , 50) 90 st

       Erase  PS ND-console emulation environment read only string variable.
              Erase screen, video screen control character.

       Erf    returns the error function of the argument, defined as :
              {2 over sqrt pi} int from 0 to x e sup {- t sup 2} dt .
              This function is available only on UNIX systems.
              Example: set y = erf(x)

       Erfc   returns the 1.0 - error function of the argument, because of the
              extreme loss of relative accuracy if erf(x) is called for  large
              x and the result subtracted from 1.0
              This function is available only on UNIX systems.
              Example: set y = erfc(x)

       Ermes  return the error message string for the given Nodal error code
              Example: $set em = ermes(error_code)

       Error  return  the  last error code or provokes Nodal error. A value of
              -4 can be used to trigger a break condition of the program.

              The value 0 can be used to clear error conditions  and  specialy
              the  registered  error messages for software packages (like TGM,
              DTM, DBRT, EQUIP ...). This call reset also  the  errno,  regis-
              tered system error number.
              Example:
                  set er = error
                  set error = 33; %trigger error : UNauthorised action
                  set error = 0; %clear error

       Errout print  on  output device the last Nodal error detected, with the
              line number, in the same format as the default Nodal error  han-
              dler does.
              Example: errout

       Eval   evaluate the string as a numerical expression.
              example set z = eval(string)

       Evengr PS  ND-console emulation environment read only numeric variable.
              Predefined event group of machine events.

       Event  PS ND-console emulation function.  Register a wait request for a
              given  accelerator  event  defined  by  the  triplet machine_nb,
              pulse_nb, pls_line_nb. Return the  group  ident  of  this  event
              class.
              The  machine number is defined by tgm package (curently CPS = 0,
              PSB = 1, LPI = 2, ADE = 3, SPS = 4, LHC = 5)  This  is  the  new
              machine number convention.
              The  pulse  number is a small integer which defined which of the
              Dtmrt event to be use.  By convention  the  pulse  0  is  always
              available  and  it  is  the arrival of the PLS telegram (NEXT_TG
              event).  The END_CYCLE (pulse 1) is also provided by Dtmrt  dae-
              mon.
              The  pls  condition  is  defined by the value of the USER group.
              The PLS condition can be ignored (always true) by the pls condi-
              tion value -1.

              The machine currently available are :
              CPS = 0, PSB = 1, LPI = 2, ADE = 3, SPS = 4, LHC = 5
              The events are : NEXT_TG = 0, END_CYCLE = 1
              The  updated  list  of available machines and events can be dis-
              played by a call to the LISTGM without argument.
              example   :   set   group_id   =   event(machine_nb,   pulse_nb,
              pls_line_nb)

       Execute
              The execute Nodal command sends the specifyed Nodal group of the
              user program together with the variables to the computer  to  be
              executed by the EXECUTE Nodal server.
              The  computer  can  be  specifyed  by  its  network name, its IP
              address in "."  notation or by the IP address value as  returned
              by  the  IPADDR  function call. This value can be the value of a
              simple (scalar) variable,  but  cannot  be  the  result  of  any
              expression, which exclude a value from an array. The indirection
              (by $variable) can be used.
              Example: Execute (computer) 10 a b

       Exp    return the exponential.
              Example: set y = exp(x)

       Fail   pattern. If tried cause pattern  mismatch  and  so  cause  other
              alternatives to be tried.

       Fcopy  copy  the  source_file  to  the  destination_file.  One of the 2
              specified files can be a network file, the other one must  be  a
              local  file.   When  the  copy is not across the network no data
              conversion is done on the content of the  file.  Only  the  byte
              orders  for  text  files  is  preserved.  To transfer data files
              between computers of different type can produce in very  strange
              results.
              The End Of Line character on OS9 is not the same as on Unix sys-
              tems, and this EOL character is not converted during transfer.
              Also it is recommanded to use as much as  possible  the  ftp  or
              tftp facilities to do network file transfer.
              Example: fcopy(source_file_name, dest_file_name)

       Fft    performs  (Fast)  Fourier  Transform  on  an  array of dimension
              DATA(2, N) where :
              for Cartesian representation DATA(1,i)  is  the  real  part  and
              DATA(2,i) is the imaginary part of a complex number,
              for  polar representation DATA(1,i) is the modulus and DATA(2,i)
              is angle (in radian from -pi to pi) of a complex number.
              The output is overwritten on the input.

              The Fourier Transforms are defined in the following way :

              Forward Fourier Transform :          1  N-1
               F(u) = --- SUM f(x) exp(-j * 2 * PI * (ux/N))          N  x=0
              Reverse Fourier Transform :         N-1
               f(x) = SUM F(u) exp( j * 2 * PI * (ux/N))         u=0

              The direction of the transform is given by the sign of the  sec-
              ond parameter (<0 for forward, >0 for reverse).
              The  absolute value of the second parameter specifies the condi-
              tion of the transform.
              The 1 value stands for cartesian representation of complex  num-
              bers and use the optimum algorithm for the transform.
              The 101 value stands for polar representation of complex numbers
              and use the optimum algorithm for the transform.
              The values 2 (and 102), 3 (and 103), 4 (and 104) can be used  to
              force  the  selection of the Cooley and Tukey, Singleton or dis-
              crete Fourier transform algorithms.  Values  102,  103  and  104
              stand for polar data representation.

              The  optimum  Fourier Transform algorithm is chosen according to
              the following criteria :
              If the number of data is a pure  power  of  2,  the  Cooley  and
              Tukey’s algorithm is used;
              else  the  R. C. Singleton’s algorithm (mixed-radix fast Fourier
              transform algorithm), is used if  the  decomposition  criterions
              are  satisfied  ( the maximum prime factor of N (number of data)
              must be less or equal to 23, the number of  prime  factor  of  N
              must  be less than 210, and if the square-free portion K of N as
              two or more prime factors, then 210 must be greater than K. More
              detail can be found in CERN Computer Center Program Library rou-
              tine D702 ).
              else the discrete Fourier transform algorithm is used.
              The speed of the transform depend considerably on the  algorithm
              selected.
              A maximum of 2048 data is allowed, except for the case of Cooley
              and Tukey’s algorithm (the number of data is a pure power of 2).

              In  polar  data  representation, if the modulus of the result is
              less than 1.0E-12, modulus and angle are forced to 0.0,  and  if
              the  angle  is  less than 1.0E-12 radian, the angle is forced to
              0.0 radian.

              If just the modulus of the  transformed  signal  is  needed  the
              function SPECTRUM can be used.  Example: fft(data, -1)

       Fileno return the file descriptor number value associated with the file
              stream parameter.
              Example: set fd = fileno(file_stream)

       Filesl PS X Window Motif environment read only string variable.
              This variable is existing only when a X Window user  environment
              is  loaded  by XINIT or PSCONSOL functions call. It is destroyed
              when the Window user environment is destroyed by XPURGE call.
              This variable handles the name of the selected  file  name  done
              with  the  Dialog  popup  file selection widget created with the
              convenient function call XFILLE. If the Cancel button is pushed,
              the content of this variable is cleared (null length string).

       Find   find index of the given concatenation in the string array
              If not found, a -1 value is returned.
              Example: set x = find(string_array, "truc")

       First  get  the first element of an array which agree to the condition.
              If no element is found the array size +1 is returned.
              The comparaison is done with the aproximation of + or -  5E8  on
              the  array  element.  The boolean operators set is : = > < >= <=
              <> == != >> << >>= <<=
              The new expressions  comparison  operators  ’==’  (equal),  ’!=’
              (not-equal), ’>>’ (greater), ’<<’ (less) ’>>’ (greater) and ’<<’
              (less) never  apply  approximation  in  the  comparison  of  the
              expressions.
              synopsis :
                  set  z = first(array [boolean operator] [expression] ) exam-
              ple :
                  set z = first(ar < 3*v)

       Fnswt  working set function, return the sub working set information for
              the attached working set, and for a given machine.

              Parameters list :
              - fec_no = machine number (identifier).
              - swset_nb = number of sub working set is the list array.
              - swset_list = int array of sub working set list.
              - coco = completion code.

              The swset_list int arrays must be created with a size greater or
              equal to 10 elements.

              The fec_no parameter is normally returned  by  the  NNFEC  call.
              Example: fnswt(fec_no, swset_nb, swset_list, coco)

       For    The  for Nodal command executes in a loop, with automatic incre-
              ment (or decrement) of the FOR variable, the remaining  part  of
              the  line.  The ROF command can be used for breaking out the FOR
              loop.
              Example: for i=20, -2, 0; set v=func(i); if v < 0; rof

       Fpt    return the fractional part.
              Example: set y = fpt(x)

       Fromc  return the  caller IP address (=  caller  computer  identifier).
              Return 0 if it is not called within a Nodal server.
              Example: set X = fromc

       Fseeq  working  set  function, return the equipment number list for the
              attached working set, a given machine, a subworking_set  and  an
              equipment module number.

              Parameters list :
              - fec_no = machine number (identifier).
              - swset_no = sub working set identifier.
              - eqm_no = equipment module number.
              - eqp_nb = number of equipment for this equipment module in this
                subworking set
              - eqp_list = int (short) array of equipments.
              - coco = completion code.

              The eqp_list int array must be created with a  size  greater  or
              equal  to  200  elements.  On return from the call its effective
              size is adjusted to the number of equipments, in a suitable  way
              to be used directly for ACALL equipment access array call.

              The fec_no parameter is normally returned by the NNFEC call.
              The swset_no parameter is normally returned by the FNSWT call.
              The  eqm_no  parameter  is  normally returned by the FSNEM call.
              Example:
                  fseeq(fec_no, swset_no, eqm_no, eqp_nb, eqp_list, coco))

       Fseip  working set  function,  return  data  on  an  equipment  of  the
              attached  working  set  specified by a given machine, a subwork-
              ing_set, an equipment module number, and the index of the equip-
              ment.

              Parameters list :
              - fec_no = machine number (identifier).
              - swset_no = sub working set identifier.
              - eqm_no = equipment module number.
              - seq_no = index of the equipment (1 = the 1st equipment).
              - ob_name = equipment name string reference
              - unit_name = physical units name reference string
              - data_array = long array of equipment data.
              - coco = completion code.

              The  data_array  long arrays must be created with a size greater
              or equal to 10 elements.

              The fec_no parameter is normally returned by the NNFEC call.
              The swset_no parameter is normally returned by the FNSWT call.
              The swset_no parameter is normally returned by the FSEEQ call.
              The seq_no parameter  must  be  in  the  range  [1...eqp_nb]  as
              returned by the FSEEQ call.  Example:
                  fseip(fec_no, swset_no, eqm_no, seq_no,
                    ob_name, unit_name, data_array, coco))

       Fsnem  working  set  function, return the equipment module list for the
              attached working set, a given machine and a subworking_set.

              Parameters list :
              - fec_no = machine number (identifier).
              - swset_no = sub working set identifier.
              - eqm_nb = number of equipment module in this sub working set
              - eqm_list = int (short) array of equipments module number.
              - parnb_list = number of equipment for each equipment module.
              - coco = completion code.

              The eqp_list and parnb_list int arrays must be  created  with  a
              size greater or equal to 10 elements.

              The fec_nb parameter is normally returned by the NNFEC call.
              The  swset_no  parameter is normally returned by the FNSWT call.
              Example:
                  fsnem(fec_no, swset_no, eqm_nb,
                    eqm_list, parnb_list, coco))

       Getenv read the named Unix  environment  variable,  returns  it  string
              value.
              Example: $set en.v = getenv(env_variable_name)

       Getuc  read the current user identifier codes (uid and gid) of the run-
              ning Nodal, uid is returned in the first parameter, gid  in  the
              second.
              Example: set ui=0; set gi=0; getuc(ui, gi);

       Goto   The  goto  Nodal  command transfers the control to the specifyed
              (by a number or a variable) Nodal line.  A GOTO outside the cur-
              rent block is not allowed within a DO call.
              Example:
                  goto 12.80
                  goto v

       Graph  PS  ND-console emulation function.  Return the identifier of the
              main  widget  which  support  the  graphic  screens.  The  value
              returned  by this function can be changed between two instancia-
              tions (done with PSCONSOL call) of the console emulation.
              This function will be used to do global action on the  top-level
              (main  widget)  of  the graphs. Individual graph are referred by
              the ident values 1 .. 4.
              Example: xdisab(main, graph); % iconify the graph screen

       Graphsz
              PS ND-console  emulation  function.   Change  the  size  of  the
              graphic display screen. The new size cannot be smaller that 50 x
              50 pixels, or larger that 1024 x 1024 pixels.
              Example: graphsz(width, height)

       Grhact Graph widget class convenient function.  Return the  last  acti-
              vated  Graph  identifier.  Future call will return a 0 value. If
              no Graph was activated a 0 value is returned.
              Function only available on UNIX system with X11 window facility.
              Example:
                  set graph_id = grhact
                  % return the last activated Graph widget

       Grhxyp Graph  widget class convenient function.  Return the position of
              the cursor as registered at the last Graph cursor ACTIVATE event
              for the defined graph.
              Function only available on UNIX system with X11 window facility.
              Example:
                  grhxyp(graph_id, x, y);
                  % read the registered position of cursor

       Green  PS ND-console emulation environment read only string variable.
              Green colour video screen control character.

       Help   Nodal help command facility. When called without  any  following
              keyword it prints Nodal commands and their minimum abbreviation.
              When called whit a following keyword ( a Nodal command, a  Nodal
              function  name  or a Nodal meta character command ) it gives on-
              line help for this keyword as provided by the man function.  For
              more information see man description.
              Example:
                  help ped
                  ? ped

       Header return the address of the Nodal element
              Example: set hd = header(name)

       History
              Print  on  the  output device , the content of the history list.
              The sequence number is printed in front of commands.  h  or  any
              other abbreviation can be used.
              This command is available only for interactive Nodal.
              Example: h

       Idev   set or read command device assignment.
              Example: set id = idev

       Ident  Return a string which define the computer environment which runs
              nodal.  This string includes :
              - name of the program : Nodal,
              - version and revision number of nodal,
              - date of the compilation ( in format  ’month-day_of_month-year’
              ).
              - operating system name,
              - operating system version or flavor,
              - computer or processor type,
              And if the version of nodal includes network facility,
              - computer name ( host name ),
              - computer IP address.
              The  various fields of the string are separated by a space char-
              acter.

              Example:
                  ty ident; % print :
                   Nodal 2.0 DEC-02-1989 UNIX ultrix Vax cernvax 128.141.1.74
                    on Cern Priam computer.

       If     The if Nodal command allows the execution of the remainder of  a
              line  of commands to be conditional on the validity of a logical
              expression.  The condition may be the "OR"  of  several  logical
              expression.    The  first  arithmetic  expression  must  not  be
              enclosed in brackets to avoid confusion with the branching IF.
              In arithmetic expressions comparison, if at least one of the two
              value is not an integer value, the two expression are considered
              equal if the difference between them is less than +  or  -  5E-8
              relative to the first.  If the two expression are integer values
              (zero fractional part), no approximation is done during the com-
              parison.

              The comparison operators set is :
               =  >  <  >=  <= <> == != >> << ,  for :
              equal,  greater,  less,  greater-or-equal,  less-or-equal,  not-
              equal, and without approximation equal, not-equal, greater, less
              The  new  expressions  comparison  operators  ’==’ (equal), ’!=’
              (not-equal), ’>>’ (greater), ’<<’ (less) ’>>’ (greater) and ’<<’
              (less)  never  apply  approximation  in  the  comparison  of the
              expressions.

              The three branches version of  the  IF  command  allows  program
              jumps  to be controlled by the sign of an arithmetic expression.
              If the value is less equal or greater to zero,  the  control  is
              passed  to  the  first,  second or third specifyed lines. If the
              corresponding line number is missing, the next command  is  exe-
              cuted.
              Example:
                  if a=1 or a=5; set a = a+10
                  if (a-10) 50.10, 50.30, 52
                  if (a-10) 50.10, 50.30; set v=a

       Imex   The Imex Nodal command sends the command to the defined computer
              for immediate execution (by the IMEX Nodal server).  The  result
              (a string) is typed on the terminal where IMEX command is given.
              The computer can be specifyed by its network name, it IP address
              in  "."   notation or by the IP address value as returned by the
              IPADDR function call.  Example: imex (dsctest) liseqm

       Inbt   input a byte from a file.  If the input  file  (stream)  is  not
              specified, read the byte from Idev.
              Inbt  can be use to read immediately a single character from the
              keyboard.  It does not wait for the end_of_input  key  (normally
              Return key).
              Example:
                  set b = inbt(stream)
                  set b = inbt; % read from idev

       Inpc   input  a  single  character  from  a  file.   If  the input file
              (stream) is not specified, read the character from Idev.
              Inpc can be use to read immediately a single character from  the
              keyboard.   It  does not wait for the end_of_input key (normally
              Return key).
              Example:
                  $set c = inpc(stream)
                  $set c = inpc; % read from idev

       Input  input a line from a file.  If the input  file  (stream)  is  not
              specified, read the line from Idev.
              Example:
                  $set st = input(stream)
                  $set st = input; % read from idev

       Int    return the integer part.
              Example: set i = int(x)

       Intrblk
              register  a  Nodal  block  (or line) to be executed on interrupt
              event (ex INT signal ) just before falling back in command mode.
              The  interrupt signal can be generated by the intr key (normally
              key) of the terminal keyboard. The STTY call can be used to dis-
              play the current setting of the terminal.

              When  Nodal  goes  into  command mode, any previously registered
              interrupt block is discarded.

              Some care must be taken in the coding of  the  interrupt  block,
              and  specially  any  interactive action must be avoided, and the
              processing must be short enough. Particularly wait time must  be
              limited to a maximum of 1.2 second.

              If  the block number is zero (0), any previously registered quit
              block is discarded.  Example: intrblk(92); % execute  block  92
              on interrupt event

       Invert PS ND-console emulation environment read only string variable.
              Invert video, video screen control character.

       Ior    does logical inclusive OR
              Example: set z = ior(m,n)

       Ipaddr return the computer identifier for the specified computer_name .
              The identifier is the unic IP address of the computer. The  com-
              puter  name  can  be either the official computer name or one of
              its alias as defined by the IP network data  base.   It  can  be
              defined also by the IP address value in the "." notation.
              Using  the functions ipaddr ( or local ) is the only safe way to
              generate computer identifier as requested for efficient  use  of
              IMEX and EXECUTE facilities.
              Example:
                  set ad = ipaddr(computer_name)
                  set ad = ipaddr("128.141.1.74"); % CERN priam

       Ipcinfo
              Print significant status information on Inter Process Communica-
              tion in use. Currently  only  Shared  memory  are  available  to
              Nodal,  either  as  Shared functions or Global variable segment.
              The file which was used to create the  memory  segment  and  the
              user identifier of the owner of the segment are displayed.
              If  the segment is linked and frozen this property is displayed.
              More detailed  information  on  shared  memory  segment  can  be
              obtained  with  the  UNIX  command  ipcs  -m (ref to the ipc man
              page).
              Example: ipcinfo

       Ipstrg return the computer identifier as the standard string  represen-
              tation of the IP address ( ex : 128.141.1.74 ).
              Example:
                   type ipstrg(local);  % print the local computer IP address

       Kcurc  DrawingArea  (video  screen)  widget  class convenient function.
              Read or write the video cursor column position.
              The video cursor must be connected to a screen.

              Function only available on UNIX system with X11 window facility.
              Example:
                  set cl = kcurc
                  set kcurc = cl

       Kcurl  DrawingArea  (video  screen)  widget  class convenient function.
              Read or write the video cursor line position.
              The video cursor must be connected to a screen.

              Function only available on UNIX system with X11 window facility.
              Example:
                  set ln = kcurl
                  set kcurl = ln

       Kenabl DrawingArea  (video  screen)  widget  class convenient function.
              Connect the video cursor to the given video screen.
              If the cursor was already connected to  another  screen,  it  is
              disconnected before the new connection.
              When  the  video  cursor is connected to a screen and the screen
              has the focus, the video cursor is moved by the Mouse with  But-
              ton 1 down.
              The video cursor validation event is generated on Mouse Button 3
              release.   This  event  triggers  the  Nodal  callback  on   the
              DrawingArea widget if a Nodal callback is connected.

              Function only available on UNIX system with X11 window facility.
              Example: kenabl(video_ident)

       Kdsabl DrawingArea (video screen)  widget  class  convenient  function.
              Disconnect the video cursor from any video screen.
              The  video_ident  parameter  is always ignored, and is optional.
              This parameter is only provided for compatibility with the PS ND
              Nodal.

              Function only available on UNIX system with X11 window facility.
              Example:
                  kdsabl
                  kdsabl(video_ident)

       Knbact Knob (wheelswitch) widget class convenient function.  Return the
              last  activated  knob  identifier.   Future call will return a 0
              value. If no Knob was activated a 0 value is returned.
              Function only available on UNIX system with X11 window facility.
              Example:
                  set knob_id = knbact;
                  % return the last activated knob widget

       Knbacq Knob  (wheelswitch) widget class convenient function.  Write the
              acquisition value.
              Function not yet implemented
              Function only available on UNIX system with X11 window facility.

       Knbval Knob  (wheelswitch)  widget  class convenient function.  Read or
              write the current knob value.
              Function only available on UNIX system with X11 window facility.
              Example:
                  set val = knbval(knob_id);
                  set knbval(knob_id) = val;

       Knvgr  PS  ND-console emulation environment read only numeric variable.
              Predefined event group of knob validation event.

       Labstrg
              Label widget class convenient function.  Read or write the  cur-
              rent label of a Label string widget.
              Function only available on UNIX system with X11 window facility.
              Example:
                  $set st = labstrg(label_id);
                  $set labstrg(label_id) = string;

       Lblue  PS ND-console emulation environment read only string variable.
              Light-blue color video screen control character.

       Ldef   The load Nodal  command  loads  the  content  of  the  specified
              file(s) into the defined function area.  Before loading the pre-
              vious content of this defined function area is cleared, but  the
              linked Shared functions are not released.
              When  LDEF was used to load defined function area future linking
              of Shared function segments is not allowed  before  a  clear  by
              ZDEF Nodal command.
              Example: ldef deffile1 deffile2

       Learn  start a session of self-learning.  Records on the specified file
              all normal inputs done from the keyboard.  The input for editing
              session are not recorded (Edit or Ped).  The file can be re-used
              later on by the Replay function.
              The file is opened for append : the newly recorded commands  are
              adds  at  the end if the file already exit, if not a new file is
              created.  One input is recorded in the file as a string of char-
              acter  terminated  by  a  new-line.  The file can be manipulated
              (specially for edition) by the normal Unix tools.
              The default file name type is .cmd
              Example: learn("file_name");

       Legend PS ND-console emulation function.  Define the label of a  button
              of the touch-screen. If the label string is not empty the button
              is enabled with the defined label, if it is empty the button  is
              disabled  and erased.  If the first character in the string is a
              control invert character, background and foreground color of the
              button  label  are  swapped and is not necessary to redefine the
              label of the button.
              Button number zero (0) refer to the touch-screen title. An empty
              string in this case erase and disable all buttons.
              Example:
                  $set legend(0) = title
                  $set legend(button_nb) = button_label_concatenation
                  $set legend(button_nb) = invert; % invert video

       Leglun PS  ND-console  emulation function.  return the video identifier
              of the  emulated  user  touch-screen  video  screen.  The  value
              returned  by this function can be changed between tow instancia-
              tion (done with PSCONSOL call) of the console emulation.
              Example: write(leglun) concatenation

       Len    length match. Match any string of the given length.

       Linkdf Attach and link Shared functions of the list of Shared functions
              segments.  The  segments  must have created with LSHMDF function
              previously.
              The function is successfully executed only if no  local  defined
              functions  are already loaded (by LDEF). Remember that ZDEF com-
              mand remove all loaded and / or linked defined  functions  which
              are  not frozen.  When the Shared functions are linked, they can
              be used as standard defined functions, but they are  visible  to
              all  process,  are  the life time of the embedded exported  data
              element is the life time of their shared memory segments.
              Example:
                  Linkdf a b; % link shared functions from segments a and b

       Linkgd Attach and link Global Data of the list of Global Data segments.
              The  segments must have created with LSHMGD function previously.
              When the Global Data are linked, they can be  used  as  standard
              data,  but  they are visible to all process, are their life time
              is the life time of their shared memory segments.
              Example:
                  Linkgd a b; % link global data from segments a and b

       Lisa   display the list of mathematical functions.
              Example: lisa

       Lisc   display the list of known  computers.  An  *  notice  a  special
              floating point format (ND-100 48 bits) computer.

              An optional filter can be used to list only a subset of the com-
              puter list.  This filter can be either  an  IP  address  in  "."
              notation  with none zero value in the bytes which build the fil-
              ter, or a computer name. In this case the filter is the IP  net-
              work of the class of the given computer.
              Example:
                  lisc
                  lisc 128.141.0.0
                  lisc dxcern

       Lisd   Without  parameter  list,  displays the current define functions
              available.  With a list of Shared functions segment  identifiers
              (the  single alphabetic character) displays the content of these
              segments.  These segment does not need to be linked to the Nodal
              process.
              Example:
                  lisd; lisd a b;
                  %list available define functions and segment a and b

       Lisdsc Print  list of DSC as defined in dbrt database.  If an accelera-
              tor name is defined list the DSC for this accelerator.   Whitout
              an accelerator name parameter, the list is only for the acceler-
              ator which are not test facility.
              A ? as parameter produce a short help on the syntax, and the up-
              to-date list of accelerators (with the corresponding value).
              Example:
                  lisdsc
                  lisdsc ?
                  lisdsc cps

       Lisenv display  the  list  of  the environment variables. They are also
              called static variables. These variables are automatically  set-
              up  by  the system on start up of Nodal, or during special envi-
              ronment set-up like by the specific function PSCONSOL.

              This function displays also information on the  current  working
              set attached, if any.
              Example: lisenv

       Liseqm list  the Equipment modules names which are accessible from this
              computer.  In the case of a work-station, the  configuration  of
              defined DSC can be listed.
              In  general,  in  the  CERN PS control system a workstation or a
              server gives access to all Equipment modules  available  in  the
              control  network, but a DSC (equipment front end computer) gives
              access only to the local equipment modules of this computer.
              On DSC for the Equipment Modules which provide the MBLIST  prop-
              erty, the list of local equipment (number) is also displayed.
              The  way in which the list of equipment module is sorted is con-
              trol by an optional parameter : ALPHA or  NUM.  The  default  is
              ALPHAbetically  ordering.  A ’?’ can be used as optional parame-
              ter, which gives a quick help information.

              To display from a work-station the equipment configuration of  a
              given  DSC, the network name of the DSC must be given at the end
              of the option list. By default for each  equipment  module,  the
              list  of  equipment number and related OB name is displayed. The
              NUMB (or NUMBER) can be used to display the  list  of  equipment
              number only, or NAME for the list of OB name only.
              This  facility assumes that in each DSC the equipment module DSC
              or DSCPM is available, and the OB name of the equipment of  this
              module,  or  one  of its alias names, is the network name of the
              DSC.
              Example:
                  liseqm
                  liseqm ?
                  liseqm num
                  liseqm dlinpow2
                  liseqm numb dlinpow2
                  liseqm name dlinpow2

       Liserv list the informations on the allocated Nodal File Server  as  it
              is defined by the NODAL_FILE_SERVER environment variable.
              Example: liserv

       Lisfst list  the  statistic of function calls from the beginning of the
              Nodal session. Only the already called functions are listed.
              Example: lisfst

       Lisg   list Global variables. If no parameter list is given,  the  cur-
              rently  attached Global Data are displayed. If a list of segment
              identifiers (the single alphabetic character) is  provided,  the
              content  of  these  Global  Data shared memory segments are dis-
              played. These segment does not need to be linked  to  the  Nodal
              process.
              Example:
                  lisg; lisg a b;
                  %list linked global and segment a and b

       Lisindex
              list  Nodal  command  names  and  resident  function names in an
              alphabetical order.
              Example: lisindex

       Lisprop
              list the Equipment Modules properties.
              The way in which the displayed list is sorted is control  by  an
              optional  parameter  : ALPHA or NUM. The default is ALPHAbetical
              ordering.  A ’?’ can be used as optional parameter, which  gives
              a quick help information.
              Example: lisprop

       Lisr   display  the  list  of  standard functions and an alphabetically
              sorted list of all the resident function names.

              The abbreviation in the parameter list (if any) have the follow-
              ing meaning :

              rv =  a read only floating point value.

              iv =  a read only integer (16 bits short int) value.

              lv =  read only long (32 bits long int) value.

              sv =  a read only string concatenation value.

              nr =  a name of an existing Nodal data element.

              rr =  an existing Nodal variable (floating point).

              ir =  an  existing Nodal variable (floating point), seen as a 16
                    bits short integer.

              lr =  an existing Nodal variable (floating point), seen as a  32
                    bits long integer.

              sr =  a name of an existing Nodal string variable.

              ar =  a name of an existing Nodal numerical array.

              nm =  a  Nodal  syntax  name (maxi 8 characters, not case sensi-
                    tive).

              fp =  a variable parameter type (free and string free  functions
                    only).

              ... = beginning of 0, 1 or more parameters list (free and string
                    free functions only).

              ?? =  unknown element type.

              Example: lisr

       List   The list Nodal command types on output device the entire current
              program or the specified block(s) or line(s).  Example:
                  list
                  list 10 20.3 99

       Lisv   displays  the currently defined user variables.  If a program is
              loaded, the name of the program file is also displayed.
              Example: lisv

       Listgm prints information of the Tgm package : PLS groups and line, and
              User Matrix content.

              Without  parameter  displays  the current list of telegram names
              and numbers, the list of available machine events,  the  current
              subscriptions to Dtmrt services and the list of event call backs
              assigned.

              With the telegram  name  (or  number)  parameter,  displays  the
              defined list of groups for the given telegram.
              The  information for each group is : the group number, the group
              name,  the  group   type   (pat   for   bit_pattern,   num   for
              numeric_value,  exc  for exclusive), the group treatment (SD for
              standard, RT for run_time), the first line  in  the  group,  the
              size (number of bits), and the comment.

              With  the  telegram  name (or number) and the group name parame-
              ters, displays the content of this group (lines names  and  num-
              ber).

              If the reserved word matrix is used for the group name, the con-
              tent of the User Matrix for the given user line (by name or num-
              ber)  is  displayed.  When  no  user line is specified, the USER
              group is displayed with a notice for the  lines  for  which  the
              user matrix is defined.
              If  the  reserved  keyword  ALL is use for a user line name, The
              User Matrix content is displayed for  all  the  User  lines  for
              which it is defined.

              If  one  of  the reserved words scycle or super are used for the
              group name, the content of the normal super cycle for the  given
              machine  is  displayed  (only the user group is displayed).  The
              reserved word spare can be used as a qualifier in order to  dis-
              play the spare super cycle in stead of the normal one.
              On  the displayed super cycle, the first line is the first cycle
              in the super cycle for the given machine (the  first  after  the
              start_super_cycle  timing  event). The basic period number (BP#)
              is referenced to the start super cycle, and it is the  value  of
              the  basic  period number group, also called cycle group, in the
              telegram.
              The global basic period number (gBP#) is referenced  to  a  unic
              global  pseudo start super cycle. The cycles which have the same
              gBP# are executed at the same real time in  the  PS  accelerator
              complex.
              The  basic  period  number  (and the offset) can be used to know
              when the synchronization between the machines takes place.

              Notice : a string can be used to specify  the  parameters  list,
              and the
              To work properly the Tgm package requests that the TGMPATH envi-
              ronment variable must be correctly defined.   More  informations
              on Tgm package are available in the tgm man pages.
              Example:
                  listgm
                  listgm cps
                  listgm 0
                  listgm cps user
                  listgm 0 user
                  listgm("cps.user")
                  listgm("cps, user")
                  $set st="cps.user", listgm st
                  listgm cps matrix md
                  listgm "cps matrix md"
                  listgm cps scycle
                  listgm cps scycle spare
                  listgm psb super

       Liswset
              prints the list of working sets. The printout includes the work-
              ing set number, name and comment.
              The print condition is defined by a parameters list which can be
              either  a  number,  or a string variable or literal, or directly
              the arguments which follow the function name on Nodal line.
              If another Nodal command or comments must be given in  the  same
              Nodal line, the syntax with string must be used.

              The parameters list is either :

              - A working set number

              Or the working set name filter :

              - The  working-set group flag : new or old, (by default : new ).

              - A filter for the working set name  which  is  a  Unix  regular
                expression.   (regular  expression  syntax  is describe in man
                page ed(1)).  If no expression is provided,  the  all  working
                set list (new or old) is printed.

                This  two  parameters of the list must be separated by a comma
                (,) or a space followed by zero or more space characters.
                Before any evaluation the  parameters  list  is  converted  to
                upper case.

                Remember that to match only the initial segment of the name, a
                circumflex (^) must be used as the first character of the reg-
                ular expression.
              Example:
                  liswset, % list all new working-sets
                  liswset "^LPI";  % list working-sets for LPI
                  liswset old;  % list old working-sets
                  liswset new, LIN
                  $set st = "^EPA"; liswset st

       Load   The  Load  Nodal command loads the contents ot the file into the
              working area. The file can contain data or program line(s).  The
              working  area  is  not cleared and any corresponding elements in
              the working area are deleted and replaced by  the  corresponding
              ones of the file.  Example: load file_name

       Loc    return  the  content  of the address, seen as a short integer (2
              bytes).  If the address value is  outside  the  virtual  address
              space of Nodal, a system error is returned.
              On  MSDOS  system some care must be taken in address evaluation,
              because the address arithmetic is not monotonous  across  memory
              segments in MSDOS.
              Example: set l = loc(address)

       Local  returns  the   computer  identifier  of  the calling computer (=
              local IP address).  Return an error if the  IP  address  is  not
              defined.
              Example: type ipstrg(local)

       Log    return  the natural logarithm as provided by the log(3) standard
              C library function.
              Example: set ln = log(x)

       Log10  return the base 10 logarithm as provided by the  log10(3)  stan-
              dard C library function.
              Example: set lg = log10(x)

       Long   return the expression in a 32 bits representation.  This feature
              is useful to force 32 bits representation of  16  bits  integer.
              (range : -32768 .. 32767). The returned value is either a number
              or a string according to the context.
              If the returned value is a string, the expression can be  quali-
              fied  by  the  formating prefix ’]’ (for octal), ’]]’ (for hexa)
              and ’?’ (for binary).
              Example: type long(]]-10);  % print ’FFFFFFF6 ’

       Lqfit  compute and return the linear square estimators alpha  and  beta
              which  approximate the data defined by the two arrays Y and X by
              the relation Y(X) = alpha + beta*(X). The elements for which the
              approximation   is  evaluated  are  in  the  Nodal  index  range
              [1st_index ... last_index].
              The X and Y arrays must be of the same  type  Real  (Double)  or
              Float, and of the same size. These arrays are assumed to be sin-
              gle dimension arrays.
              If the X array is the Y array (same Nodal element), the X  value
              for  a given Y element is taken as the "distance to the 1st ele-
              ment" of the Y array, which is the Nodal index value -1
              Example:
                  lqfit(y_array, x_array, 1st_index, Last_index, alpha, beta)
                  lqfit(y_array, y_array, 1st, last, alpha, beta);
                  % special case : X values are : (1st-1), 1st, ... last-1)

       Lshmdf Create and/or load the Shared functions segment from the content
              of the Nodal file. The file must had been created with SDEF com-
              mand.
              On creation access permission is set to read/write for any class
              of users.
              The same Nodal element as in the normal defined function area of
              Nodal can be loaded into the Shared functions segments : define-
              function,  define-call  and define-string, and any any variables
              (scalar or array, numerical or string, read-write or read-only).
              Any  other  Nodal  element  (like  Nodal line) are just ignored.
              String are available for read and write with a length up to  the
              Nodal  maximum  (80 characters). String array are also available
              for read-write, but on write the array string element must  pre-
              exist,  and  the size of the string to be save in the array must
              be the same as the current size of the target string element.
              The owner of the shared memory segment can reload (with  Lshmdf)
              the  segment.  The size of the segment is automatically adjusted
              to the need.  Other users can only change  the  value  of  read-
              write variables.
              Example:
                  lshmdf(a, "define1");
                  % load shared functions segment A from define1.nod

       Lshmgd Create  and/or  load the Global data segment from the content of
              the Nodal  file.   On  creation  access  permission  is  set  to
              read/write for any class of users.
              Only variables (scalar or array, numerical or string, read-write
              or read-only) are loaded from the file, any other Nodal  element
              (like Nodal line) are just ignored. To be loaded a variable must
              had a Nodal system name (more than 2 alphabetic characters with-
              out  dot (’.’), or a name which can transformed into system name
              during the loading process.  String are available for  read  and
              write  with  a  length  up to the Nodal maximum (80 characters).
              String array are also available for read-write, but on write the
              array  string element must pre-exist, and the size of the string
              to be save in the array must be the same as the current size  of
              the target string element.
              The  owner of the shared memory segment can reload (with Lshmgd)
              the segment with a new set of variables. The size of the segment
              is  automatically  adjusted  to  the need.  Other users can only
              change the value of read-write variables.
              During the loading procedure the variables name are  transformed
              into  system  variable name by removing any dot (’.’) at the end
              of the name and transforming  embedded  dot  (’.’)  into  column
              (’:’).  The transformed name must be a Nodal system name.  exam-
              ple :
                  lshmgd(a, "global1");
                  % load Global data segment A from global1.nod

       Lust   list the user functions, which  are  normally  specific  to  the
              local  environment, and an alphabetically sorted list of all the
              resident function names.
              Refer to LISR for parameter list abbreviation meaning.

       Magent PS ND-console emulation environment read only string variable.
              Magenta color video screen control character.

       Maiact Main widget class convenient function.  Return  the  last  acti-
              vated  Main  widget  identifier.   Future  call  will return a 0
              value. If no Main was activated a 0 value is returned.
              Dialog widgets can be activated by user action on there buttons.
              The main_window can be activated by the reception of the arrival
              of user message  event.  The  other  top  level  cannot  receive
              action.
              Function only available on UNIX system with X11 window facility.
              Example:
                  set main_id = maiact;
                  % return the last activated Main widget

       Man    provided on line help for the specified Nodal Function  or  Com-
              mand.  This function is only available on Unix system for inter-
              active Nodal, and the output must be connected to standard  out-
              put  (stdout  =  odev).  It assumes the availability of the UNIX
              man utility program.
              This feature is given by dynamic extraction of  the  information
              from  the  Nodal  man  page.  The  Nodal  man page nroff file is
              assumed to be the file  defined  by  NODAL_MAN_PATH  environment
              variable,  or  the file : nodal.1, (or nodal.man), in the direc-
              tory defined by NODAL_MAN_PATH. If this  variable  is  not  pro-
              vided,  the  nodal  man page is assume to be in the subdirectory
              man1 of the trees structure defined by MANPATH for man pages  or
              of the default local man pages directory tree.
              On ULTRIX the default for local man pages is /usr/man/manl/.
              In the Nodal man page file the documentation for the Nodal Func-
              tion must begin by a line : \fBFunction_name\fP , with the first
              letter  of  the  name in upper case, and the rest of the name in
              lower case.  The paragraphe of the function  documentation  must
              be ended by a blank line.

              The  reserved  keywords index, option, special_file and unix_var
              can be used to display the connected Nodal man page chapter,  or
              part of it, if a 2nd parameter specifies a special item.
              If  this second parameter is the ’?’ character, the list of item
              or subject from this chapter is displayed.

              The reserved keywords chapter can be used to display any chapter
              of the Nodal man page.  The chapter is defined by the 2nd param-
              eter, which can be any word in used in the title of the chapter.
              If this second parameter is the ’?’ character, the list of chap-
              ter title is displayed.

              The reserved keyword nodal can be used to display the full Nodal
              on-line  documentation. It is equivalent to the Unix command man
              nodal.

              Man can be call by the help Nodal command.
              This function is available only on UNIX systems.
              Example:
                  man ped; % print the documentation on Ped function
                  help ped
                  ? ped
                  man index
                  man option ?
                  man option -WAsize
                  man chapter LYNX

       Max    find the maximum value of an array
              Example: set ma = max(array)

       Mdr    Equipment access property suffix to read the equipment data from
              the  Asynchronous  equipment  access  facility  (Aqc package, or
              MDR).
              Example: AQN_MDR

       Min    find the minimum value of an array
              Example: set mi = min(array)

       Mod    return X modulo Y
              Example: set mo = mod(x,y)

       Mwait  PS ND-console emulation function.  Wait for  events  and  return
              the wake-up event group and the event ident in the group.
              Any  call  WAKEUP from a callback block to wakeup the background
              processing will result in a group value equal to USERGR and  the
              event_ident equal to the wakeup reason parameter value.
              Process termination requested by the console manager is not han-
              dle by this facility, but a quit block must be  registered  with
              QUITBLK to do the suitable processing.
              Example: set event_id = mwait(group_nb)

       Nampl  PS ND-console emulation function.
              Convert  pls  line  number  into line name. Use the old telegram
              number convention (0=PSB, 1=CPS, 2=LPI).
              For the read_write parameter, only read (= 1) is emulated.
              For the direc(tion) parameter, only number_to_name (= 1) is emu-
              lated.
              the  PLS  line  name  is  returned in line_name, as 5 characters
              string, with trailing spaces characters if needed, or  truncated
              to 5 characters.
              Detailed  specification  are  available in PS/CO/Note 81-18 Rev,
              12.8.1982 : The PLS Data Table Access (DTA) E.N. and  Associated
              PLS ICCI Functions

              For  new applications it is strongly recommended to use the PLS-
              GDESC, PLSGROUP, PLSLNAME functions.
              Example:
                  nampl(old_teleg_nb,   read_write,    direc,         line_nb,
              line_name, coco)

       Neg    returns the 1’s complement.
              Example: set z = neg(m)

       Newwset
              working  set  function,  attach a new working set defined by its
              name or its number.
              To be authorized, a working set must  have  been  attached  when
              Nodal  was started by the WORKING_SET Unix environment variable,
              or by the -wset option.  Example:
                  newwset(new_working_set_name)
                  newwset(new_working_set_number)

       Nexteqp
              return the next equipment in  the  attached  working  set  which
              agree to the selection filter as defined by the EQPFILTR routine
              call.
              The selected equipment is  defined  by  the  accelerator  number
              (accel_no)  or the FEC number for the old style Working Set, the
              equipment_array_id (array_id) for the new style Working Set,  or
              the sub-working set number for the old style, the equipment mod-
              ule number (eqm_no),  the  equipment  number  (eqp_no)  and  the
              numerical  value of the IP address (ip_addr) of the handling DSC
              (or ND120 FEC). These parameters must be  existing  Nodal  vari-
              ables.
              The first attempt to get the next equipment when the end of Wok-
              ing Set was  reached,  will  return  the  "resources  exhausted"
              error,  future attempts will return "UNauthorised action" error.
              If the sequential access was not initialized (by EQPFILTR)  call
              the "UNauthorised action" error is returned.

              After  a new attachement of a working set (with NEWWSET function
              call) or after  having  exhausted  the  current  selection,  the
              selection  must  be  re-done  with  EQPFILTR  call  to restart a
              sequential access to the list of equipments.
              synopsis : nexteqp(accel_no, array_id, eqm_no, eqp_no, ip_addr)

       Nnfec  working set  function,  return  the  list  of  machines  in  the
              attached working set.

              Parameters list :
              - fec_nb = number of machines in the working set.
              - fec_list = long array of machine number (identifier).
              - coco = completion code.

              The  fec_list long arrays must be created with a size greater or
              equal to 10 elements.  Example: fseip(fec_nb, fec_list)

       Nodlin get or create a nodal line.
              Example: $set st = nodlin(10.2)

       Notany match any single character not contained  in  the  concatenation
              (parameter).

       Ntype  return the current running mode of Nodal.
              0 = Nodal interactive
              1 = file driven Nodal
              3 = EXEC network server
              5 = IMEX network server

              Example: set ty =ntype

       Num    return the string "0123456789".
              Example: $set st = num

       Obpar  working set function, return data on an equipment defined by its
              name.

              Parameters list :
              - ob_name = equipment name
              - unit_name = physical units name reference string
              - data_array = long array of equipment data.
              - coco = completion code.

              The data_array long arrays must be created with a  size  greater
              or equal to 10 elements.

              Example: obpar(ob_name, unit_name, data_array, coco))

       Odev   set  or  read output device assignment. The output device can be
              assigned to a registered opened (for write or append)  file,  to
              stdout,  or  to a special output device like a DrawingArea video
              screen widget.
              A registered opened file is a file opened by a OPEN call.
              Example:
                  set od = odev
                  set odev = open("w", file_name)

       Old    The old Nodal command flushes the working area and loads program
              (and data) from the file.  Example: old file_name

       Open   The  open  Nodal  command copies the body (program lines) of the
              defined function into the working area and delete  the  function
              from the list of defined functions.
              Example: open function

       Open   The open Nodal function opens a named file for read ("R"), write
              ("W") or append ("A").  Return the stream number
              Example: set fi = open("R", file_name)

       Openknob
              requests a knob to control the specifyed equipment.  The  equip-
              ment  can  be  defined  by  its  name or by the doublet { equip-
              ment_module_name, equipment_number } or by the doublet {  equip-
              ment_module_number, equipment_number }.

              This  function  assumes the availability of the knob server, and
              the command knobs_open. This environment is  automatically  pro-
              vided when Nodal is running in the PS Control environment (exam-
              ple : lpiop) for one of the accelerators of the CERN PS complex.
              Example:
                  openknob("HR.DVT13")
                  openknob(POW, 8025)
                  openknob(3, 8025)

       Opmach Nodal environment read only string variable.
              Current  operational  account  name,  as  defined by -op_machine
              option or by the OP_MACHINE unix environment variable.

       Optsel Nodal environment read only numerical variable.
              Current pls line value, as defined by  -pls  option  or  by  the
              PLS_LINE unix environment variable.

       Outbt  output a byte to a file (stream).
              Example: set outbt(stream) = z

       Outc   output a string to a file (stream).  If the output file (stream)
              is not specified, write the byte on Odev.
              Example:
                  $set outc(stream) = st
                  $set outc = st; % write on odev

       Output output a  string  followed  by  new-line  character  to  a  file
              (stream).   If  the output file (stream) is not specified, write
              the string on Odev.
              Example:
                  $set output(stream) = st
                  $set output = st; % write on odev

       Overlay
              The overlay Nodal command runs the program stored on the file as
              an  overlay  in  the working area. The program disappears after-
              wards. The numerical value of the parameters (up to a maximum of
              16) are stored in ARG(1), ARG(2) .... The STRARG string function
              can be used to pass a string parameter to the  overlay  program.
              Any legal numerical expression, separated by commas, can be used
              to specify the parameters list.
              Example: overlay file exp1, exp2

       Ped    page editor facility
              Ped starts a session of your favorite page editor on all, or  on
              a  subset,  of  the  Nodal  text buffer.  Ped can also takes its
              input from a symbolic (ascii) text file. That is the case if the
              1st  parameter  of  the Ped is not a line or block number, but a
              file name ( ~ file syntax can be used ).  In this case the edit-
              ing  is  done  on  the source file, and the Nodal text buffer is
              reload from the edited file at the end of editing  session.  The
              default file type is .text.
              The  page  editor  used is specified by the environment variable
              EDITOR (mandatory).

              To specify the region to be edited, a mixture of block and  line
              number  separated by space character follows the ped command. By
              default the complete text buffer  is  edited.  Remember  that  a
              Nodal line is strictly limited to 80 characters, any line longer
              will be truncated to the maximum size,  and  a  warning  message
              will be printed when the text buffer is update.
              The  editing  session uses temporary file in the /tmp/ directory
              when editing from the Nodal text buffer.

              This function is available only for interactive  Nodal  on  UNIX
              systems.  examples :
                  ped             edit all the Nodal text buffer
                  ped 10 12 20    edit block 10, 12 and 20
                  ped 10 12.24 50 edit blocks 10 and 50 and line 12.24
                  ped file_name   edit from the ascii file file_name.text

       Pie    return PIE value.
              Example: set pi = pie

       Pixin  DrawingArea  (video  screen)  widget  class convenient function.
              Dump the video semi-graphic or character screen content into the
              specified  array.   The  array variable is automatically created
              with the suitable type (byte) and size if  it  does  not  exist,
              otherwise  if  the  array already exit it must be of the correct
              type (byte) and  the  exact  size.   This  array  can  be  later
              reloaded totally or partially with Pixout function call.
              Function only available on UNIX system with X11 window facility.
              Example: pixin(video_ident, image_array);

       Pixout DrawingArea (video screen)  widget  class  convenient  function.
              Overwrite a video screen from the specified array (produced by a
              PIXIN call).  If the dumped video image assume  a  user  defined
              bitmap  character  set,  this  character set must be loaded with
              SDMOUT before, in order to have a correct result.
              Partial reload can be done  with  the  two  optional  parameters
              first_line and nb_of_line.
              The  PS  ND-console old video dump array can be loaded with this
              function, but for efficiency and maintenance it is strongly rec-
              ommended  to  convert  this old format into the new one with the
              following commands :
              pixout(video_id,      image_array);      erase      image_array;
              pixin(video_id, image_array)
              Function only available on UNIX system with X11 window facility.
              Example:
                  pixout(video_ident, image_array);
                  pixout(video_ident, image_array, first_line, nb_of_line);

       Pls    Return the PLS telegram for the requested machine (CPS = 0,  PSB
              = 1, LPI = 2, ADE = 3, SPS = 4, LHC = 5)
              The  array  to receive the telegram must be and integer array of
              24 or 32 elements.
              The updated list of available machines and events  can  be  dis-
              played by a call to the LISTGM without argument.
              If no subscription to the process event message was already done
              by a call to PLSUSER or PLS or XEVTCB functions, a  subscription
              is done to the Dtmrt daemon and the array is set to 0.
              As any other subscription to asynchronous processing, it will be
              erased by a call to a context switch function : XPURGE or XINIT.
              A call with the machine number equal to -1 display localy infor-
              mation on available machines and events and registrations.
              Warning : the data returned are the values of the various groups
              of  the  machine  telegram. This is completely uncompatible with
              the encoding in use by the old telegram distribution.
              It is strongly recommanded to use  the  function  PLSUSER  which
              return the current active user (or 0).
              Example:
                  dim-integer telegram(32); pls(machine_nb, telegram)
                  pls(-1, telegram); % local informations

       Plstlg Nodal environment read only numerical variable.
              Current pls telegram value, (currently CPS = 0, PSB = 1, LPI = 2
              ...).  as defined by -pls_telegram or -telegram option or by the
              PLS_TELEGRAM unix environment variable.
              If  the  pls_telegram  is  not defined, the first token from the
              pls_line name string will be used to try to setup PLSTLG.

       Plslin Nodal environment read only string variable.
              Current pls line name, as defined  by  -pls  option  or  by  the
              PLS_LINE unix environment variable.

       Plsgdesc
              return data descriptor of a PLS telegram group for the requested
              machine (0 = CPS, 1 = PSB, 2 = LPI ...).  The  updated  list  of
              available  machines and events can be displayed by a call to the
              LISTGM without argument.
              The descriptor data are returned in a long_array of 6  elements.
              This  array  is  created if it does not exist already. The group
              can be defined by its group number value : if the  group  number
              is  > 0 on entry, or by the group name : 3rd para (if group num-
              ber <= 0).
              The group name is returned in the  group_name  string  reference
              parameter  when  the  group  is defined by number, and the group
              number is returned as the  function  value  when  the  group  is
              defined by its name.

              The values stored in the group descriptor long_array are :
               - 1 : group type (0= pattern, 1= numeric, 2= exclusive)
               - 2 : group treatment (0= standard, 1= run_time)
               - 3 : first line number of the group
               - 4 : default value
               - 5 : maximum value
               - 6 : minimum value

              More  informations  on  Tgm package are available in the tgm man
              pages.  Example:
                  $set gn=""; plsgdesc(0, 5, st, gd.arr); % group  defined  by
              number
                  $set gn="user";
                  set gr = plsgdesc(1, 0, gn, gd.arr); % group defined by name

       Plsgroup
              return the names of the PLS groups for the requested machine  (0
              =  CPS,  1  =  PSB, 2 = LPI ...).  The updated list of available
              machines and events can be displayed by a  call  to  the  LISTGM
              without argument.
              If the machine number parameter is -1 the names of the available
              machine is returned.
              The names are returned in a string array which is created if  it
              does  not exit already. The index of a name is the group number.
              The function value returns the number of groups.

              More informations on Tgm package are available in  the  tgm  man
              pages.  Example:
                  set mc = plsgroup(-1, mc.sar); % machines names
                  set nb = plsgroup(0, gn.sar); % CPS groups names

       Plslname
              return the line names of the PLS group (defined by its name) for
              the requested machine (0 = CPS, 1 = PSB,  2  =  LPI  ...).   The
              updated  list  of available machines and events can be displayed
              by a call to the LISTGM without argument.
              The names are returned in a string array which is created if  it
              does  not  exit already. The index of a name is the line number.
              The function value returns the first line number  of  the  group
              (which is the index of the first name in the string array).  The
              number of lines in the group is also returns in  the  number  of
              line parameter.

              In  the  case  of  numerical_value  group  (group  without lines
              attached) a 0 is returned as function value, and in  the  number
              of lines.

              More  informations  on  Tgm package are available in the tgm man
              pages.  Example:
                  set nb = 0; set fl = plslname(0, "user", ln.sar, nb)
                  for i=fl, fl+nb-1; ty i ln.sar(i) !

       Plsolusr
              !!!!!!!!! This function is not any more implemented !!!!!!!!!

              Return the old USER line number corresponding to the  given  new
              USER  line  number. This is meaningful only for the CPS machine,
              during the transition periode (1995, 1996) where there is the  2
              groups OLDUSER and USER defined for thr CPS.
              The  relation  between  the new lines to the old ones is defined
              staticaly in the dbrt read only control data base.  Example:
                  set ur.old = plsolusr(ur.new)

       Plsuser
              Return the current active user  line  (from  the  telegram  user
              group)  for  the  requested  machine  (0 = CPS, 1 = PSB, 2 = LPI
              ...).  The machine number use the new CERN PS control  accelera-
              tor  number  convention.   The  function return also the current
              cycle number and the current super cycle number as  provided  by
              the telegram.
              The  updated  list  of available machines and events can be dis-
              played by a call to the LISTGM without argument.
              If no subscription to the process event message was already done
              by  a call to PLSUSER or PLS or XEVTCB functions, a subscription
              is done to the Dtmrt daemon and the array is set to 0.
              As any other subscription to asynchronous processing, it will be
              erased by a call to a context switch function : XPURGE or XINIT.
              Example:
                  set cy.cle = 0; set su.per = 0
                  set us.er = plsuser(0, cy.cle, su.per); % CPS

       Pltidn Graph Plot widget class convenient function.  Return the  widget
              identifier value to be used in X generic functions.
              Function only available on UNIX system with X11 window facility.
              synopsis : set gp = pltidn(graph_nb, plot_nb);

       Pltsxy Graph Plot widget class convenient  function.   Set  the  widget
              resources which describe the x and y parameters according to the
              type and size of the x_array and y_array.  The  resources  which
              are set are :
              - the number of points passed (XmNxPointNum & XmNyPointNum),
              - the type of the data element (XmNxType & XmNyType),
              - the Min and Max values (XmNxMin, XmNxMax & XmNyMin, XmNyMax ),
              The setting is done on the graph widget and the number of  point
              on  the  plot  widget. If the coordinate is shared the number of
              point is also set in the graph widget.
              The x_array and y_array can be int, long,  real.   The  extremum
              values  found  in  the  array are used to define the Min and Max
              values.

              If only one array parameter is given, the Y axis is set  accord-
              ing to the array, and the X axis is set as integer values from 1
              to the size of the (Y) array. This facility provide an easy  way
              to  setup  a  graph to plot an array as function of the index of
              the data.
              Function only available on UNIX system with X11 window facility.
              Example:
                  pltsxy(graph, plot, x_array, y_array);
                  pltsxy(graph, plot, y_array); % x = 1...n

       Pltx   Graph  Plot  widget  class convenient function.  Draw a new plot
              according to the xarray values.  The y values are  not  changed.
              The  type of x_array must fit to the current setting of the wid-
              get resources.
              Function only available on UNIX system with X11 window facility.
              Example: pltx(graph, plot, x_array);

       Pltxy  Graph  Plot  widget  class convenient function.  Draw a new plot
              according to the  x_array  and  y_array  values.   The  type  of
              x_array  and y_array must fit to the current setting of the wid-
              get resources.
              Function only available on UNIX system with X11 window facility.
              Example: pltxy(graph, plot, x_array, y_array);

       Plty   Graph  Plot  widget  class convenient function.  Draw a new plot
              according to the y_array values.  The x values are not  changed.
              The  type of y_array must fit to the current setting of the wid-
              get resources.
              Function only available on UNIX system with X11 window facility.
              Example: plty(graph, plot, y_array);

       Pos    position match. Match the specified position in string.

       Posit  convenient  function  which  generate  a string for write cursor
              position on a video character  screen  (a  drawing  area  widget
              facility). This function is normally used in a concatenation for
              the WRITE function.
              Function only available on UNIX system with X11 window facility.
              Example: $set st = posit(column_nb, line_nb);

       Psconsol
              PS  ND-console emulation function.  Fetch the PS ND-console emu-
              lation user interface and set up the Nodal environment for  this
              emulation.
              This  function  must  be  called  before any attempt to call any
              other functions or to read any Nodal  environment  variables  of
              the PS ND-console emulation.

              The  parameters  define the requested resources, and the comple-
              mentary user interface definition UID file  (optional  parameter
              2nd_uidle).   The  main  user interface definition UID file name
              can  be  overwrite  with  the  environment  variable  :  PS_CON-
              SOLE_EMUL_UID
              Any  of  the  parameters  can be omited, the default value is no
              change  in  the.   resource  state,  the  initial  state  is  no
              resource.

              The parameter values are :

              main        1 = main color screen, 0 = no main color.

              black&white bits 1..4 on for black and white screen 1..4 (ex 5 =
                          b&w screen 1 and 3).

              user_tp     1 = user touch screen, 0 = no screen.

              knobs       number of graph of knobs (1..4), 0 no knob.
                          not yet implemented, parameter ignored.

              graphic     number of graph of the screen (1..4), 0  no  graphic
                          screen.

              The  function can be recalled to fetch new resources (the exist-
              ing one must no be redefined), or to change the number of  graph
              on the graphic screen.
              Any registered call backs are removed by the call to XPURGE.
              Example:
                  psconsol(main, black&white, usert_tp, graphic_screen,
                    knobs, 2nd_uid_file)

       Psscreen
              PS  ND-console  screen  emulation function.  Fetch a main window
              for one (or more) emulated screen, and set environment for these
              screens.
              This  function can be called only after an emulation user inter-
              face was fetched by PSCONSOL for the PS console emulation or  by
              XPSINIT for a standard application frame.
              The  parameters  define  the requested screen resources.  Any of
              the parameters can be omited, the default value is no change  in
              the.  resource state, the initial state is no resource.

              The parameter values are :

              main        1 = main color screen, 0 = no main color.

              black&white bits 1..4 on for black and white screen 1..4 (ex 5 =
                          b&w screen 1 and 3).

              user_tp     1 = user touch screen, 0 = no screen.

              graphic     number of graph of the screen (1..4), 0  no  graphic
                          screen.

              The  function can be recalled to fetch new resources (the exist-
              ing one must no be redefined), or to change the number of  graph
              on the graphic screen.
              Any registered call backs are removed by the call to XPURGE.
              Example:
                  psscreen(main, black&white, usert_tp, graphic_screen)

       Quit   The  quit  Nodal  command  terminates of the current program and
              normal exit from Nodal.
              If a Quit block is is allocated by the QUITBLK call, this  block
              will be executed before ending the program.
              Remember  that in normal programs the termination block must not
              be called explicitly, but only implicitly by the QUIT command.
              Example: quit

       Quitblk
              register a Nodal block (or line) to be executed on program  ter-
              mination event (ex TERM signal or QUIT command).
              The quit block is not executed when the termination is caused by
              a Quit or a Kill signals. These cases are understood as absolute
              termination case which cannot be avoided by any processing.
              It  is  strongly  recommended  to use the termination processing
              facility in all Nodal programs to smoothly close down  any  pro-
              cessing  and to notify to the console manager the termination of
              the process. The termination block is executed by the QUIT Nodal
              command.
              Some  care must be taken in the coding of the termination block,
              and specially any interactive action must be  avoided,  and  the
              processing  must be short enough. Particularly keyboard interac-
              tion is not allowed, and wait time is limited to  a  maximum  of
              1.2 second. The maximum time allowed to the termination process-
              ing is 10 seconds, which is monitored by a  time-out.   If  this
              time is overrun Nodal will be immediately ended.

              If  the block number is zero (0), any previously registered quit
              block is erased.
              The commands LIST and LISV display  the  registered  termination
              block.

              The  termination  block  must not be called explicitly in normal
              programs, but only implicitly by the QUIT command.
              If for special case it must be called explicitly just before the
              QUIT  command, the termination block must, in this case, include
              a QUITBLK(0) call  to  disconnect  the  termination  processing.
              This  call  will  prevent  a  second termination block execution
              implicitly done by the following QUIT command.  Example:  quit-
              blk(90); % execute block 90 on termination

       Rand   return successive pseudo-random numbers in the range from 0.0 to
              1.0
              Example: set K = rand

       Random return successive pseudo-random numbers in the range from  0  to
              (2 **31) -1 as provided by the random(3) standard C Unix library
              function.  This function can be used as a random bit patern gen-
              erator, but the bit 31 is never set.
              Example: set K = random

       Reason read the last registered Nodal event reason. The reason value is
              the value of the parameter of the Wakeup call, excepted for  the
              following special cases.
              1)  reason  value  =  0 is the natural wake-up case (time out or
              terminal input)
              2) reason value = -1 : destruction of user interface by XPURGE
              3) The PS Console Emulation is used, and some of the interactive
              tools is activated.  In this case the reason value is :
              (group_nb * 65538) + value.

              The  Reason  is  very useful to check the condition of returning
              from waiting from terminal input ASK or $ASK call.
              callable only outside Nodal callback
              Function only available on UNIX system with X11 window facility.
              Example: set re = reason

       Red    PS ND-console emulation environment read only string variable.
              Red color video screen control character.

       Remit  The  remit  Nodal  command  sends  data item back to the program
              which issue the EXECUTE command.
              If this command is not executed by the Nodal Exec server  it  is
              taken  as a RETURN from a DO command. This feature allows remote
              execution as well as local of blocks of the program.

       Replay replay a  suite  of  commands  previously  registered  within  a
              Learn("file_name")  session or build with a text editor.  A line
              (terminated by the new-line character must not  be  larger  than
              255 characters. Any characters after the 80th are ignored.  If a
              Nodal error which is not trapped (by a Do  x:y  command)  occurs
              during  the  Replay  session, it is suspended. It can be resumed
              with the Resume function later on.
              The default file name type is .cmd
              Example: Replay(file_name);

       Resume resume an self-learning or replay session after dropping back in
              interactive  mode as a consequence of an interrupt ( or escape )
              or a Nodal error not trapped (by a Do x:y command).
              example Resume;

       Return The return Nodal command returns from a DO group execution.
              Example: return

       Rof    The rof Nodal command breaks out of  FOR  loop(s)  of  the  same
              Nodal program line.  Goes to the next line after the FOR.
              Example: for i=1,10; for j=5,20; ty i j; if i*j>100; rof

       Ronly  convert  a variable in read only variable. The variable can be a
              real variable, a numerical array, a string or  a  string  array.
              The  name of the variable must have more than 2 alphabetic char-
              acters.
              example set v.rny=pie; ronly(v.rny)

       Route  PS SOS multiplexor system, signal routing and  package  initial-
              ization function.
              The  command parameter define the action to be done.  The detail
              of the use and the meaning of the parameters p2 to p7 is defined
              in  detail in the SOS Module Documentation or in the on line sos
              man pages or in PS/CO/Note 82-35 SOS Routing Module (SRM).

              The value of command parameter are :
              0 : direct single-word CAMAC control
              1 : software restart (total or partial)
              2 : initialise agglomeration
              3 : refresh agglom. memory, updating s/w copy
              4 : release reservation of the ’route’ to the trace
              5 : reserve the ’route’ connected to the trace
              6 : disconnect whatever is connected to the trace
              7 : connect analogue signal to the trace
              8 : replace signal by reference (or vice-versa)
              9 : swap the signals connected to the two traces
              10: print (on TREES log) the route up to the trace
              11: make connection in single agglom for local observer
              12: disconnect whatever is connected to the TV
              13: connect specified signal to spec’d TV
              14: find out what signal is connected to the trace/TV
              15: change s/w tracing mode

              Example:
                  route(command, p2, p3, p4, p5, p6, p7, cc)

       Rpos   reverse position match. Match the  specified  position  (counted
              from the end) in string.

       Rtab   reverse  tab  match. Match up to the specified position (counted
              from the end) in string.

       Run    The run Nodal command runs the currently loaded  program.  If  a
              line  (or  a  block)  number  is  specifyed  in a pair of square
              bracket, start execution from the specifyed line,  or  from  the
              beginning of the block.
              If  a  file  name is given load this program (data and text) and
              starts.
              Example: run [10] file_name

       Rwdata read or write Fortran Format Data. Called as : RF!RL!WF!WL!AF!AL
              R W A for Read Write Append
              F for file-name (file opened first, close afterwards).
              L  for  stream  number  (file  already  opened  and  will be not
              closed).
              The second parameter is file-name (concatenation) or stream-num-
              ber (real value).
              The  following  parameters  are  a list of variable or arrays to
              receive the data.
              Example: rwdata("RF", file-name, data1, data2)

       Save   The save Nodal command saves program (or / and  data)  on  file.
              Specific  block  number  can  be specifyed and list of variables
              also. The predefined keyword ALLP and ALLV can be used to  spec-
              ify  the all currently loaded program and all the existing vari-
              ables in the text buffer.
              Example:
                  save file_name
                  save file_name 2 VA VB VC
                  save file_name ALLP VA VB VC

       Scaact Scale widget class convenient function.  Return the  last  acti-
              vated  Scale  identifier.  Future call will return a 0 value. If
              no Scale was activated a 0 value is returned.
              Function only available on UNIX system with X11 window facility.
              Example:
                  set scale_id = scaact;
                  % return the last activated Scale widget

       Scaval Scale  widget class convenient function.  Read the current Scale
              value.
              Function only available on UNIX system with X11 window facility.
              Example: set val = scaval(scale_id);

       Scall  single equipment, single or multi data equipment access call.
              This  access  method must be used as a replacement for the obso-
              lete EQM call.

              Parameters list :
              - eqm = name or number of the equipment module.
              - equip_number = equipment number.
              - property = property name (with optional suffix) or value.
              - pls = pls line condition.
              - coco = completion code.

              For multi data call : extra parameters
              - data_array = data array, 1 dimension array, size =  number  of
                data.  For byte array a Nodal string can be used (see bellow).
                The type of array depends on the property called.
              - rw = read (1) or write (-1) flag, (optional, default =  read).

              Ref  to  the  called  equipment module documentation to find the
              data array type, and the number of data.

              New feature : in case of multi data call of a  byte  array,  the
              array  can be replaced by a Nodal string. On read the content of
              the string is replaced with the data returned by  the  equipment
              module  called  (it  is  assumed  that this data are a string of
              characters).
              For a read call the size of the data is limited to a maximum  of
              80 characters in this case. For write, the data size send to the
              equipment is the size of the string, as returned by  size  func-
              tion call. For larger array, a byte array must be used.
              Example:
                  % single data call (read, write or call)
                     set scall(eqm, equip_number, property, pls, coco)= value
                     set value = scall(eqm, equip_number, property, pls, coco)
                     scall(eqm, equip_number, property, pls, coco)

                  % multi data call
                     scall(eqm,  equip_number,  property,  pls,  coco,
              data_array); %read
                     scall(eqm,   equip_number,  property,  pls,  coco,
              data_array, 1); %read
                     scall(eqm,  equip_number,  property,  pls,  coco,
              data_array, -1); %write
                     $set  st="";  scall(eqm,  equip_number,  property,
              pls, coco, st, 1); %read

       Sccs   reports version and revision ID form SCCS management system  for
              the major components of Nodal.
              Example: sccs

       Sdef   The  sdef Nodal command saves on file the content of the defined
              function area.
              Example: sdef file_name

       Set    The set Nodal command sets the numerical variable to  the  value
              of  the  expression.  If the variable does not already exist, it
              is created.
              Example: set V = A+B

       Sdmin  DrawingArea (video screen)  widget  class  convenient  function.
              Dump  the user defined bitmap 128 characters set into the speci-
              fied array.  The array variable is  automatically  created  with
              the  suitable  type (byte) and size if it does not exist, other-
              wise if the array already exit it must be of  the  correct  type
              (byte) and the exact size. This array can be later reloaded with
              Sdmout function call.  On character is defined as a bitmap of  8
              x 15 pixel.
              Some informations on the character set can be extracted from the
              array by copying the first 80 bytes of the array into a  string.
              The  following  example show a way to extract and loock at these
              informations.  $set st = strmsz;  %generate  a  80  char  string
              copy(array_name,  st,  1,  1); type st !; % display the char set
              info
              Function only available on UNIX system with X11 window facility.
              Example: sdmin(user_defined_character_array);

       Sdmout DrawingArea  (video  screen)  widget  class convenient function.
              Load a user defined bitmap 128 characters set from the specified
              array.   This user defined bitmap character set is global to all
              semi-graphic video screens available in the user interface.   On
              character is defined as a bitmap of 8 x 15 pixel.
              When  the  character set is loaded, these characters can be dis-
              played on the semi-graphic screen with the WRITE function  using
              the 021 prefix control character, or they can be edited with the
              Bitmap function.
              The PS ND-console old user defined character set  array  can  be
              loaded with this function, but for efficiency and maintenance it
              is strongly recommended to convert this old format into the  new
              one with the following commands :
              sdmout(array-name); erase array_name; sdmin(array_name)
              Function only available on UNIX system with X11 window facility.
              Example: sdmout(user_defined_character_array);

       Select PS X Window Motif environment read only string variable.
              This variable is existing only when a X Window user  environment
              is  loaded  by XINIT or PSCONSOL functions call. It is destroyed
              when the Window user environment is destroyed by XPURGE call.
              This variable handles the name of the selected  item  done  with
              the  Dialog  popup  selection widget created with the convenient
              function call XSELECTB.  It handles also the answer  given  with
              Dialog  popup prompt widget created with the convenient function
              call XPROMPT.  If the Cancel button is pushed,  the  content  of
              this variable is cleared (null length string).

       Serase returns  the  convenient  string  to  be sent to the terminal to
              erase the screen and position the cursor in the home position.
              Example: ty serase

       Server return the computer identifier ( its IP address)  of  the  Nodal
              File  Server  if  a server is allocated by the NODAL_FILE_SERVER
              environment variable.
              Example: set sv = server

       Setuc  set the current Nodal user identifier codes (uid and gid) of the
              running  Nodal,  new value of uid is in the first parameter, new
              gid in the second. This function must be used normally only  for
              access  to Norsk Data Real Time Nodal environment. This function
              does not set the real or the effective user ID’s.
              Example: set ui=-31616; set gi=0; setuc(ui, gi);

       Sgn    return +1 or -1 according to the sign of X
              Example: set s = sgn(x)

       Shift  return a logical shift of the  parameter  (seen  as  an  integer
              value).   The nb is an expression evaluated and rounded to inte-
              ger. A positive value results in a left shift, a negative  in  a
              right shift.
              Example: set z = shift(data, nb)

       Sin    return the sine of x (in radians).
              Example: set y = sin(x)

       Sinh   return the hyperbolic sine.
              This function is available only on UNIX systems.
              Example: set y = sinh(x)

       Size   return the number of characters in the concatenation.
              Example: set sz = size(string)

       Smooth smooth  the given raw data array (real or float array) using the
              cubic spline interpolating function.  It  is  assumed  that  the
              abscissa  of the point are uniformed distributed, and there val-
              ues are taken as the "Nodal index minus one" in the data  array.
              The smoothed data are returned in the output array which must be
              of the same type and size as the raw  data  array.  The  routine
              returns  the  abscissa of the upper point of the smoothed curve,
              the mean (1st momentum) and the standard deviation (square  root
              of the 2nd momentum).
              the  smoothed  curve  with  the raw data. A large value ( > 20 )
              give a strong coupling, and a weak smoothing, a low value ( <  1
              ) give a weak coupling and a strong smoothing of the result.
              If the del_bad_points flag is set (value <> 0) then the abnormal
              point deletion is performed (only if the size of  the  raw  data
              array is less than 100 elements).
              The  processing  class parameter define extra data processing as
              following :
              class 0 : the momentum parameters of the smoothed data are  com-
              puted  only for the kernel part of the data (a window of 2 times
              the size of the half height around the maximum of  the  smoothed
              curve).
              class  1  :  the base line on the left and the right size of the
              curve is removed. The momentum are then computed  for  the  cor-
              rected curve.
              class 2 : no special processing is done to compute the momentum.
              After a call to SMOOTH calls to SMOOTHDA can be done to retrieve
              interpolated points.
              A resource exhausted Nodal error can be returned if there is not
              enough dynamic memory available for the processing.
              Example:
                  set x.ofmax = smooth(raw_array, smooth_array, mean, sigma
                  weighting, del_bad_points, processing_class)

       Smoothda
              return a set of uniformly distributed interpolated points  on  a
              smoothed curve. The smoothed curve is defined by a previous call
              to SMOOTH. The interpolated points are returned into x_array and
              y_array  which must be of the same type (real or float) and same
              size.  The number of points  is  defined  by  the  size  of  the
              arrays,  and  they  are uniformly distributed in x between x min
              and x max. The value of x extremum can  be  any  values  in  the
              range  of  the  definition  of  the  smoothed  curve  (  0.0  to
              "size_of_raw_data_array -1" ).
              The value of the function on return is the maximum  y  value  of
              the  smoothed curve ( the y value of the x value returned by the
              call to SMOOTH ).
              If a call to SMOOTH was not done to define the smooth  curve,  a
              Nodal error UNauthorised action is generated.
              Example:
                  set y.max = smoothda(x_array, y_array, x.min, x.max)

       Sort   sort string array in ascending (+) or descending (-) order.
              Example: sort(str_arr, +); sort(str_arr, -)

       Soser  PS  SOS  multiplexor system, convert a SOS error code into read-
              able message.  Function compatibles with the SOSER ICCI call  in
              the old PS ND system.

              Example:
                  $set st=""; soser(cc, st); ty st !

       Sosaggst
              display  on your terminal the status of the given SOS agglomera-
              tion, or of all existing agglomerations (agglomeration parameter
              value = -1).
              If  the  parameter is a valid signal number the connection state
              of this signal is displayed (only for Village or Town  signals).

              A  value  of  -2 can be used to display a short status report of
              all agglomerations. This report errors  in  any  agglomerations,
              and  the  number  of  used output bus lines for VILLAGE and TOWN
              agglomerations.

              A value of -3 produce the same result as  -2,  but  it  use  the
              sos_status access method (available only on workstation).

              A  value  of  -4 can be used to display a short status report of
              console scope triggers.

              A value of -5 can be used to display the connections  which  are
              done  through  the  agglomeration of the last registered No Free
              Lane by your running version of Nodal.
              This will never be the last No Free Lane agglomeration  detected
              by   another   program  (or  console).  In  this  case  use  the
              -100-agglo_nb method for the suspected overloaded agglomeration.
              The  overwiev of the agglomeration satus can be printed with the
              -2 value.

              A value in the range -101 ... -163 can  be  used  to  display  a
              report  of  the connections done through the agglomeration 1 ...
              63

              If some error is detected in the SOS crate (by a  refresh  scan)
              the error status is displayed.

              Example:
                  sosaggst(57)      display for agglomeration 57
                  sosaggst(-1)      display for all existing agglomerations
                  sosaggst(-2)       short  report for all existing agglomera-
              tions
                  sosaggst(-4)      status of console scope triggers
                  sosaggst(-5)      connections through the last agglo  of  No
              Free Lane
                  sosaggst(-103)    connections through agglomeration 3
                  sosaggst(22556)   display the connection state of the signal

       Sosinfo
              display on your terminal the status of the SOS system for a con-
              sole, or for a signal (analog or TV) of the console.
              Without parameter a short help is produced, and the list of con-
              soles equipe with SOS system is displayed. If the workstation is
              attached  to a console, the attachement is marked in the list of
              consoles with a right arrow.
              If the console is note specified, the attached console is taken.
              If  no  trace  nor TV is specified, the global status of SOS for
              the console is displayed, else the detail of the connection  for
              the signal is printed.
              For  more informations on the attachement of a work station to a
              console refere to the paragraph about SOS_CONSOLE UNIX  environ-
              ment variables.

              Example:
                  sosinfo           help and list od consoles
                  sosinfo cons4     console 4, global status
                  sosinfo cons2 b   console 2, analog trace B
                  sosinfo c9 4      console 9, TV 4
                  sosinfo 1         attached console, TV 1

       Span   match  the longest run of characters contained in the concatena-
              tion (the parameter), starting from the current cursor position.

       Spectrum
              compute the frequency spectrum of the signal defined by its mag-
              nitude : a real array A(N) of N elements.  The output  is  over-
              written on the input.
              This  function call the FFT function for data which are the mag-
              nitude value taken as pure real number (imaginary value 0).

              The returned spectrum values are two time the modulus  value  of
              the  returned FFT values. Only the first (N+1)/2 values are sig-
              nificant in the returned array.

              If the magnitude and the phase of the signal is  needed,  it  is
              better  to  use  the  FFT  routine in polar mode which provide a
              direct access to these values.

              Refer to the FFT function description for more detailed informa-
              tions.
              Example: spectrum(data_array)

       Spool  send the file to the lpr printer spooler.
              Example: spool(file_name)

       Sqr    return the square root of X
              Example: set y = sqr(x)

       Squeez reduce  the Nodal program to the minimum abbreviation and remove
              all comments.
              Example: squeez

       Sread  PS SOS multiplexor system, read agglomeration or signal data.
              The command parameter define the data to be read, and the number
              contains the agglomeration or signal number value. The data must
              be an existing array of 24 short (or Nodal  integer).  The  data
              structure  returned  by the call is defined in detail in the SOS
              Module Documentation or in the on  line  sos  man  pages  or  in
              PS/CO/Note 82-35 SOS Routing Module (SRM).

              The value of command parameter are :
              1 : read static data (part 1) for specified agglomeration.
              2 : read static data (part 2) for specified agglomeration.
              3 : read  dynamic  data for specified agglomeration (i.e., soft-
                  ware copy of h/w memory registers).
              4 : read signal data for specified signal.

              Example:
                  set cc = 0; dim-i da(24);
                  sread(command, number, da, cc)

       Sshmdf Save the Shared functions segment into  the  Nodal  file.   This
              file  can be re-used for later reloading or recreation of Shared
              functions segment, or by other Nodal processing. It will content
              element as produced by a SDEF command.  Example:
                  sshmdf(a, "define1");
                  % save shared functions segment A into define1.nod

       Sshmgd Save the Global data segment into the Nodal file.  This file can
              be re-used for later reloading or recreation of Global data seg-
              ment,  or by other Nodal processing. It will content only system
              name Nodal data elements.  Example:
                  sshmgd(a, "global1");
                  % save Global data segment A into global1.nod

       Start  start a new copy of Nodal running the specified file. If a block
              number  is  specified  ( [block_number] ), the program starts at
              the beginning of the specified block. The default file  type  is
              .nod  . This execution mode is the equivalent of the file driven
              Nodal context on the Norsk Data computers.
              Example:
                  start("my_program.nod")
                  start("[2] my_program") % start my_program.nod from block 2

       Stderr return the file stream value associated with standard error.
              Example: set er = stderr

       Stdin  return the file stream value associated with standard input.
              Example: set in = stdin

       Stdout return the file stream value associated with standard output.
              Example: set ou = stdout

       Stop   close down an self-learning session or  a  replay  session.   An
              stopped   self-learning   session   can  be  resumed  by  a  new
              Learn("file_name") command.  The new  recorded  inputs  will  be
              appended  at  the  end  of the file.  A Replay session cannot be
              restarted in the middle of the file.
              Example: Stop;

       Strmsz predefined string of maximum size  (filled  with  space  charac-
              ters).

       Strarg Nodal string global variable.
              Example: $set strarg = "toto"

       Stty   reports  some  characteristics of the terminal as defined by the
              terminal type and termcap data base, and according to  the  set-
              ting of the terminal driver ( done by stty command ).
              Example: stty

       Subs   return or set the specified substring of given concatenation.
              synopsis : $set sb = subs(begin_index, end_index, string)

       Svddir return  the  path  name (string) of the default directory on the
              Nodal  File  Server  if   a   server   is   allocated   by   the
              NODAL_FILE_SERVER environment variable and the default directory
              specified.
              Example: $set dd = svddir

       Symbol returns the value of a Nodal symbol name of the local configura-
              tion.   Currently  only the Equipment property symbols (property
              or suffix) are handled by this function.
              Example: set cv = symbol(ccv); % value of CCV property

       Symbs  returns the name (string) of an equipment related symbol defined
              by  the  symbol category and the symbol value (and integer). The
              currently defined categorys are : fecs (category = 0) old  ND120
              FEC,  EQM  Properties  (category  =  1),  Classes (category = 2)
              equipment modules, Columns (category = 3) equipment modules data
              table columns, Accelerators (category = 4), Eqlabels (category =
              5) various equipment symbols and labels.
              Example: $set cv = symbs(category, value);

       System issue a sh shell command.  The string parameter value  is  given
              to  the   UNIX  system(3) standard C routine.  Nodal waits until
              the shell has completed.
              On MS-DOS system, only the external DOS commands are executed by
              the  system function call (ref MS-DOS documentation for the list
              of external commands).
              Example: system("ls -l *.nod")

       Tab    tab match. Match up to the specified position in string.

       Tan    return trigonometric tangent of X (radians).
              Example: set y = tan(x)

       Tanh   returns the hyperbolic tangent.
              This function is available only on UNIX systems.
              Example: set y = tanh(x)

       Time   return the computer time in second. The resolution is not better
              than milliseconds.

              If  no  parameter  is provided to the function, the current com-
              puter time is returned, with the fraction part of the second  as
              available in the computer.

              If  an array of 6 Nodal integer (16 bit short) or Nodal long (32
              bit long), the  time  corresponding  to  this  date  /  hour  is
              returned.  This data can be to compute any time difference or as
              an input to the CTIME function.  In this case there is no  deci-
              mal fraction part in the returned time value.

              The format of the 6 integer array is :
              1 year  : the year value [1970...] (on MS-DOS system [1980...]).
              2 month : month of year [1..12]
              3 day : day of month [1..31]
              4 hours : hour of the day [0..23]
              5 minutes : minute of the hour [0..59]
              6 seconds : second of the minute [0..59]

              If some value is out of valid range the error value out of range
              (error code 37) is returned.

              Example:
               set ti = time
               dim-i da(6); set da(1) = 1995; set da(2) = 1; sert da(3) = 5
               set da(4) = 13; set da(5) = 40; set da(6) = 21
               set ti.1 = time(da)

       Tpgr   PS  ND-console emulation environment read only numeric variable.
              Predefined event group  of  user  touch  screen  button  pressed
              event.

       Triger PS  ND-console emulation environment read only numeric variable.
              Predefined event group of software trigger group  (receive  mes-
              sage event).

       Turbo  convert the program in a semi compiled way. Gives an increase of
              performance up to 30%. Any editing or modification of code  will
              kill the compiled version.
              With  the new processor power and the intensive use of hash cod-
              ing of internal tables this facility do not provide  significant
              increase  in  speed.  It will be in the near future not any more
              supported.
              example turbo

       Twait  wait for the specified time, specified in seconds. Action  iden-
              tical to the WAIT-TIME Nodal command.
              example twait(2.5)

       Tvedit DrawingArea  (video  screen)  widget  class convenient function.
              Interactively edit the string in a window on video character  or
              semi-graphic  screen and possibly returns the edited window con-
              tent.
              The end of edition break strategy can be specified, it is either
              the  standard  return (CR)or new-line (LF) (default value, break
              strategy = 0) or the first printing character or a  return  (CR)
              or new-line (LF) (break strategy = 1).
              If  the break strategy is 1 (printing character break), the edit
              window size must be 1 character.

              For the returned string, any  character  of  the  edited  window
              which  is  not  an  ISO-latin  font character is replaced with a
              space character.

              Any pending wakeup reason or event is registered and results  in
              string_function-failure  error  return,  which can be trapped in
              the Nodal program by the ’:’ syntax.
              The REASON function can be used to retrieve the registered event
              which  results  in  the  abnormal end. Remember that the group /
              value numbers are encoded in this way : group in  the  upper  16
              bits,  value  in  the  lower 16 bits of the value retuned by the
              REASON call.

              During the editing session the video screen is able to receive X
              Window  selection.  The  selection is received by Mouse Button 2
              relased, according to the Motif Style Guide.

              During the all editing session the video cursor is disable, even
              if  it was attached to an other video screen, and it is restored
              in is initial state at the end of the edition. With this feature
              the  tvedit  session  is not interruptible by the Mouse Button 3
              (cursor validation button).

              The available editing key and control characters are :

              BackSpace back space on character or erase the character on  the
                        left of the cursor according to the tty setting.

              Left      back space on character

              Insert    toggle insert state

              Right     move on character to the right

              Delete    delete the character on the left of the cursor

              Remove    delete the character under the cursor

              Any  of  the  parameters  which  define  the  edit window can by
              omited, the default value are the current  write  position,  and
              window  up  to the end of the line. the break strategy parameter
              can be omited, the default value is break on CR or LF.

              Function only available on UNIX system with X11 window facility.
              Example:
                  tvedit(video_ident,    line_nb,    column_nb,    nb_of_char,
              break_strategy)
                  $set   st   =   tvedit(video_ident,   line_nb,    column_nb,
              nb_of_char)
                  $set st = tvedit(video_ident,,, nb_of_char) : 10.90)

       Tvread DrawingArea  (video  screen)  widget  class convenient function.
              Extract the string from a line of the video screen,  and  return
              it.
              Any character of the line which is not an ISO-latin font charac-
              ter is returned as a space character.

              Function only available on UNIX system with X11 window facility.
              Example: tvread(video_ident, line_nb)

       Type   The type Nodal command types out on ODEV the list of items. This
              list can contain expressions, strings and control sequences such
              as :
              ! for new line
              %X for format change
              &X for X spaces characters.
              Example: type "result = "%10.04 A+B !

       Ucase  convert the string parameter in upper case.
              Example: ty ucase("qwerty")

       Usergr PS  ND-console emulation environment read only numeric variable.
              Predefined event group of user WAKEUP call event.

       Value  The value Nodal command exits from the  Nodal  defined  function
              returning the expression value as the function value.
              Example: value A

       Wait   The  wait  Nodal  command waits for the data to be remitted from
              the EXECUTE in the specifyed computer.
              Currently the EXECUTE command is synchronous,  and  consequently
              the WAIT command is just ignored.
              Example: wait(CPS)

       Wait-time
              The  wait-time Nodal command waits for the specifyed (in second)
              amount of time.  In a Nodal call  back  processing  the  maximum
              amount of time is 0.500 second.  This wait state cannot be ended
              by a wakeup event.
              Example: wait-time 2.5

       Wakeup issues a Nodal event. This event wakes up  the  background  pro-
              cessing  from  XWAIT  or  other wait for terminal input : ASK or
              $ASK.  Nodal event will be generated only if  WAKEUP  is  called
              from  a  Nodal  callback.  The Nodal event will be registered by
              XWAIT, ASK, $ASK or MWAIT call.  The WAIT-TIME is not  sensitive
              to  the  Nodal  events.  The last registered reason value can be
              read later on by REASON function call.

              reason value must be > 0 and < 32768.
              <= 0 values are reserved for system wakeup-events :
               0 = natural wake-up (time-out or end of input)
              -1 = user interface destroyed by XPURGE
              This facility is available during a X  nodal  session  (X  Motif
              user interface loaded) or a simple terminal session Nodal (with-
              out the X Motif user interface in use).
              Example: wakeup(10); % wakeup background with reason 10

       What   print short information about one or  more  Nodal  element  name
              given in parameter.
              Refer  to lisr for parameter list abbreviation meaning for func-
              tions.
              Example:
                  what(name1, name2, ... )
                  what name1 name2 ...

       While  The while Nodal command allows the execution of the remainder of
              a  line  of commands in a loop until the condition is not longer
              true.  The condition may be the "OR" of several logical  expres-
              sion.
              In arithmetic expressions comparison, if at least one of the two
              value is not an integer value, the two expression are considered
              equal  if  the  difference between them is less than + or - 5E-8
              relative to the first.  If the two expression are integer values
              (zero fractional part), no approximation is done during the com-
              parison.
              The new expressions  comparison  operators  == (equal), !=
              (not-equal), >> (greater), << (less) >>= (greater or
              equal) and <<= (less or equal) never apply approximation in
              the comparison of the expressions.
              Example: while a=1 or a=5; do 80

       White  PS ND-console emulation environment read only string variable.
              White color video screen control character.

       Write  DrawingArea  (video  screen)  widget  class convenient function.
              Write a string concatenation on a video screen (a  drawing  area
              widget),  or  on  a  registered  opened  for write file (by OPEN
              call), or on stdout.
              The position (line and column) and color (foreground  and  back-
              ground) parameters are optional, and if they are omited the cur-
              rent default value is used.  These parameter can be also defined
              by  control  characters  sequences  in the concatenation itself.
              The default value for the position is the  writer  position  and
              the  colors  of the last write action (after a screen erase this
              position is the top left corner : line_nb = 1; column_nb  =  1).
              A  zero  value for the position is the default value, a -1 value
              for color is the default. The color can  be  defined  either  by
              their  number value (0 to 7, and -1) or by their predefined name
              or by the control character string (a 1 character string).   The
              currently  predefined  color  names are red, green, blue, white,
              lblue, magenta, yellow and black

              The control character  function  are  the  following  (value  in
              octal):

              0   color red.

              1   color green.

              2   color blue.

              3   color white.

              4   color light blue.

              5   color magenta.

              6   color yellow.

              7   color black.

              010 home  position (line = 1, column = 1) top left corner of the
                  screen.

              011 column position (x position), the next character define  the
                  column_nb value.

              012 new line.

              013 line  position  (y  position), the next character define the
                  line_nb value.

              014 erase screen and redefine the default foreground  and  back-
                  ground  colors  from  the  DrawArea  widget resources fcolor
                  (XmNbackground) and fcolor (XmNforeground). These  resources
                  can be set with XSETRS function call.

              015 carriage return (set column position to 1).

              017 swap foreground and background colors.

              020 define  background color, the color code is the next charac-
                  ter.

              021 predefined special character or bitmap character, the  char-
                  acter code is the next character.

              024 save the write context : current position and colors.

              025 restore the saved write context.

              026 use  alternated  font  (normally DEC technical) for the next
                  character.

              027 erase n lines from the current position. Only the  remaining
                  part  of  the  current line is erased, and the n-1 following
                  lines.

              031 move the write position 1 step right.

              032 move the write position 1 step left.

              034 move the write position 1 step up.

              035 move the write position 1 step down.

              036 draw a box around a rectangle of x * y (the 2  next  charac-
                  ters),  the  top left corner of this inside rectangle is the
                  current position.

              The Convenient functions POSIT is provided to generate position-
              ing control characters string : \[11 column_nb \[13 line_nb.
              Nodal  environment  variables  RED,  GREEN,  BLUE, WHITE, LBLUE,
              MAGENT, YELLOW, BLACK, BACKGR, INVERT and ERASE are  defined  if
              the PS console emulation is activated.

              The  character  code  is  interpreted according to the following
              rule (ASCII character code are given in octal value) :

              - normal character (not prefixed by control character)
                0 .. 037    control function as defined before.
                040 .. 0177 character code from the normal font.
                0200 .. 0237
                            (console emulation case) : special  predefined  PS
                            character set.
                            (normal case) : character from normal font.
                0240 .. 0377
                            character code from the normal font.

              - character  prefixed  by  a  021  control character (special or
                bitmap)
                0 .. 037    special predefined PS character set.
                040 .. 0237 user defined bitmap character set.

              - character prefixed by a 026 control character (alternate font)
                0 .. 0337   character code from the alternate font.

              The  write  function  can  be  used to write string an on opened
              stream. In this case control characters (excepted new line)  can
              result  in  strange effects, and the optionals parameters (posi-
              tion and color) are ignored.
              Function only available on UNIX system with X11 window facility.
              Example:
                  write(device,  line_nb,  column_nb,  foreground_color, back-
              ground_color)concatenation
                  write(device,,, foreground_color,  background_color)concate-
              nation; % default position
                  write(device,  line_nb,  column_nb)concatenation;  % default
              color
                  write(device)concatenation; % default position & color
                  write(device,,,,)concatenation; % default position & color
                  write(odev)concatenation; % write on odev

       Wset   PS environment read only string variable.
              Current attached working set name. This value is updated by  the
              NEWWSET function call.

       Wsetinfo
              display  the  content of the currently attached working set (the
              default) or the named working set. It can be named by  its  name
              or by its number.
              Example:
                  wsetinfo % display the currently attached working set
                  wsetinfo(working_set_name)
                  wsetinfo working_set_name
                  wsetinfo(working_set_number)
                  wsetinfo working_set_number

       Wsetlst
              extract a list of working sets according to the filtering condi-
              tion.  The list is returned in a string array, which is  created
              if  it  does  not  exits already. Returns the number of selected
              working set ( = to the array size of  the  string  array).  This
              function acts only on the new PS working sets.

              The  filter  for  the working set name is a Unix regular expres-
              sion.  (regular  expression  syntax  is  describe  in  man  page
              ed(1)).   If  no  regular  expression  is provided (empty filter
              string parameter), all the existing working sets are selected.
              Before any evaluation the filter is converted to upper case.

              Remember that to match only the initial segment of the  name,  a
              circumflex  (^) must be used as the first character of the regu-
              lar expression.
              Example:
                  set nb = wsetlst("^LPI", star);  % working-sets for LPI
                  set nb = wsetlst("", star);  % all working-sets

       Xcallbk
              X window  generic  function.   Connect  to  the  defined  widget
              instance the callback Nodal block (or line).  This block will be
              executed when the widget action takes place.
              If the widget_id number is -1, all the instancied widget will be
              connected.
              If the nodal block_number is 0 any previously connected block is
              disconnected.
              Function only available on UNIX system with X11 window facility.
              Example: xcallbk(widget_class, widget_id, block_number);

       Xcbkarr
              X  window  generic  function.  Connect the multiple callbacks of
              the defined widget instance to the Nodal blocks or lines. Before
              connecting  the callback to blocks all previous callback connec-
              tions (global or individual) are discarded.
              The callback connections are defined by an real array of n by  2
              where  the value array(i,1) describe the callback reason and the
              value array(i,2) define the callback Nodal block or line number.
              The  reason  value  must in the set of reasons which are allowed
              for the widget class, this values can be evaluated from the name
              with the XSYMBOL function call.
              This  function  is  only  allowed on widget classes which accept
              multiple callbacks. Refer to the widget classes descriptions for
              the reasons which are accepted.
              To  disconnect  any callback the simplest way is to call XCALLBK
              with a 0 block number.
              Function only available on UNIX system with X11 window facility.
              Example:
                  dim ck(3,2)
                  set ck(1,1) = xsymbol("CR_OK"); set ck(1,2) = 90.10
                  set ck(1,1) = xsymbol("CR_CANCEL"); set ck(2,2) = 90.20
                  set ck(1,1) = xsymbol("CR_HELP"); set ck(3,2) = 92
                  xcbkarr(widget_class, widget_id, ck);

       Xcbreaso
              X  window  generic  function.   Returns  the callback reason, or
              CR_NONE if this is  directly  triggered  by  an  X  event  (like
              arrival of a user message).  The value of the most used callback
              reason can be evaluated from the name with the XSYMBOL  function
              call.
              This function is mainly foreseen to be used in the processing of
              callbacks of widgets which have multiple sources of action  like
              the Dialog popup widgets with a global callback connection (done
              with XCAALBK call).
              This function can be called only within a call back  processing.
              Function only available on UNIX system with X11 window facility.
              Example: set rs = xcbreaso; if rs = xsymbol("CR_OK") ...

       Xclinfo
              X window generic function.  Print significant status information
              of  a  class  of widgets in the current user interface. The same
              information can be printed with the Xinfo function call.
              Function only available on UNIX system with X11 window facility.
              Example: xclinfo(widget_class)

       Xcolor X  window generic function.  Load the color and return the color
              pixel value.  The  color  symbol  string  must  be  one  of  the
              exported color value defined in the UIL file or one of the valid
              X11  predefined  color  name  (ref   to   X11   man   page   and
              /usr/lib/X11/rgb.txt file)
              Function only available on UNIX system with X11 window facility.
              Example: set color_array(i) = xcolor("yellow");

       Xconct Open a channel to a target client program  to  send  event  mes-
              sages.   The  function returns the communication channel identi-
              fier to be used to send event  messages  with  Xsevent  function
              call.   If  the  connection  cannot be established, a 0 value is
              returned.
              Function only available on UNIX system with X11 window facility.
              Example: set cl = xconct(display_name, program_name)

       Xdcolor
              returns the depth of the root window of the display screen. This
              value is 1 for a black and white display, and greater that 1 for
              a color screen.
              The user interface must be fetched before calling this function.
              Function only available on UNIX system with X11 window facility.
              Example: set cl= xdcolor

       Xdisab X  window  generic  function.  Make the selected widget instance
              invisible. It can be later on make visible with xenab  function.
              If  it  is  applied  to  the  main class, all the user interface
              became invisible.

              Nb : For the Plot CERN PS widget, the PLTIDN function call  must
              be used to define the widget_id.

              Function only available on UNIX system with X11 window facility.
              Example: xdisab(widget_class, widget_id);

       Xdisct Close down a channel connection  for  event  message  previously
              opened with Xconct call. The allocated resource is purged.
              Function only available on UNIX system with X11 window facility.
              Example: xdisct(channel_ident)

       Xenab  X window generic function.  Make the  selected  widget  instance
              visible.  Normally  it was previously made invisible with xdisab
              function. If it is applied to  the  main  class,  all  the  user
              interface became visible.

              Nb  : For the Plot CERN PS widget, the PLTIDN function call must
              be used to define the widget_id.

              Function only available on UNIX system with X11 window facility.
              Example: xenab(widget_class, widget_id);

       Xfetchl
              X window generic function.  Fetch a named literal value from the
              UID file. The value must be exported in the UIL file. Only char,
              integer, boolean, float, double and string can be fetched.
              Function only available on UNIX system with X11 window facility.
              Example: xfetchl("variable_name, nodal_item");

       Xevtact
              X window process event function.  Return the last activated pro-
              cess  event  id,  the  process event id is defined in the XEVTCB
              call.  Future call will return a 0 value. If  no  Process  Event
              was activated a 0 value is returned.
              Function only available on UNIX system with X11 window facility.
              Example:
                  set event_id = xevtact;
                  % return the last activated process event

       Xevtcb X window process event function.  Connect a Nodal callback block
              (or  line) to the specified process event.  The pls condition is
              define by the USER group value.  A value of -1 as pls_line  num-
              ber means to ignore the pls line condition.
              The  pulse number specified the machine event. By convention the
              pulse number zero is the arrival of the pls telegram event,  the
              other  available  values  can  be  displayed by a call to LISTGM
              without parameter.
              The legal values for machine number are : 0 = CPS, 1 = PSB, 2  =
              LPI  ....  The machine number use the new CERN PS control accel-
              erator  number  convention.   The  updated  list  of   available
              machines  and  events  can  be displayed by a call to the LISTGM
              without argument.
              To disconnect a previous callback a nodal_block number of 0 must
              be used.
              A subscription is done to the Dtmrt daemon for the needed event.
              The event_id must be in the  range  [1...7].  This  id  will  be
              returned  by  future  call  to XEVTACT to identified the current
              active process event.
              More than one call back can be executed on  the  arrival  of  an
              event. The execution order is define by the event_id in increas-
              ing order.
              This function cannot be called from a Nodal callback.
              Function only available on UNIX system.

              This facility is available during a X Nodal session  (when  a  X
              Window  user interface is loaded with XINIT, PSCONSOL) or during
              a simple terminal session Nodal (without the X Motif environment
              in use).  Example:
                  xevtcb(event_id, machine_nb, pulse, pls_line, nodal_block)

       Xfetchw
              X  window  generic  function.  Load a top level widget hierarchy
              defined by its UIL name and returns it widget identifier.
              If the hierarchy is already fetched, it will make it visible  on
              the  screen (managed) only if it is a top level widget.  Else it
              must be made visible explicitly by a call  to  XENAB.   In  this
              later  case  the  only  useful feature is to retrieve the widget
              ident value.

              This widget hierarchy is instancied as a Main class  Nodal  wid-
              get.

              When an object which is not a top level widget like Dialog popup
              widget is fetched by XFETCHW, it is  not  made  visible  on  the
              screen.   Else  it  must be explicitly make visible by a call to
              XENAB after possible change  of  some  of  the  resources  (with
              XSETRS) and callback connections (with XCALLBK or XCBKARR).
              This facility can be used for XmMessageBox.
              If  Nodal  was started with the /-t trace flag, some information
              will be printed on stderr device about inconsistency in the  UIL
              description (widget identifier out of range, duplication of wid-
              get with the same id, creation widget procedure is the wrong one
              for the widget class).
              Function only available on UNIX system with X11 window facility.
              Example: set main_id = xfetchw("top_level_name");

       Xfile  X Dialog popup convenient function.  Bring  on  the  screen  the
              FileSelectionDialog  box  with the text disposed as the selected
              file (default answer).  If the text is empty, the default selec-
              tion  as provided by the File Selection Box is disposed into the
              selection area.  To empty the default answer a string of just  a
              null character must be used.  It can be build by : $set st = \0
              When  the OK button is activated, the answer (the selected file)
              is stored into the RO string environment variable FILESL.
              When the CANCEL button is activated, the RO  string  environment
              variable FILESL is cleared (null length string).
              If the callback block number is not equal to zero, this callback
              block will be executed when the OK button or the  CANCEL  button
              is  pushed. The length of the FILESL string variable can be used
              to select which action was done.

              If a more sophisticated use of the File  Selection Dialog  popup
              is  needed, a XmFileSelectionDialog Box main widget must be used
              and created with the XFETCHW function call. This way  provide  a
              multiple  callback  facility  and  a  better  control  on widget
              resources.
              Function only available on UNIX system with X11 window facility.
              Example:
                  $set xfile(filter, callback_block) = text

       Xframupd
              X window convenient function to update the standard dynamic wid-
              gets of the Nodal application user interface frame.  Updates the
              current  date display and the pls display. This function must be
              called when a new set of data are displayed on the screen.   The
              date  background color define the data status, as defined by the
              color convention :
              1 = normal state, 4 = warning, 5 = error, 6 = unknown state
              0 = do not change the background color
              The cycle number (in the current super cycle) can be fetch  when
              the data are provided by MDR facility by the AQCYCLE function.
              If  the  standard  widget for these displays are not provided by
              the current user interface, a  Device  Not  Connected  error  is
              returned.
              Function only available on UNIX system with X11 window facility.
              Example: xframupd(date_bg_color, cycle_number);

       Xgetrs X window generic function.  Read  a  widget  resource  parameter
              value,  returns  the  value  in  the  Nodal  item.   The list of
              resources available (the selection parameter) is detailed in the
              widget class description paragraph.

              Nb  : For the Plot CERN PS widget, the PLTIDN function call must
              be used to define the widget_id.

              Function only available on UNIX system with X11 window facility.
              Example:
                  xgetrs(widget_class, widget_id, selection, item);

       Xinfo  X window generic function.  Without extra parameters, print sig-
              nificant status information on all the X Window widgets  in  the
              current  user  interface.  If  no  user  interface are currently
              loaded the maximum number of widget instances for each class are
              printed.

              With  a suite of class names (one or more) print informations on
              the current status of widgets in the  specified  classes.   This
              command  can  be qualified with the keyword ALL, which will pro-
              duce the information for all the widgets, from  the  application
              hierarchy (the normal one) and from the utility hierarchy.

              The  keyword  CRTBUT  can be used to display the defined list of
              Nodal control and command menu buttons. These special classes of
              buttons  are  used  by the application frames, console emulation
              and graphic utility windows.

              Function only available on UNIX system with X11 window facility.
              Example:
                  xinfo  % print global info on all widget classes
                  xinfo main button scale
                  xinfo ALL graph
                  xinfo CRTBUT

       Xident X  window  generic function.  Return the widget Nodal identifier
              value of the named widget instance. A widget is defined  by  the
              class  name,  and a string of the widget name, as defined in the
              User Interface Definition file.
              Function only available on UNIX system with X11 window facility.
              Example: set wi.ml = xident(label, "message_label")

       Xinit  X  window  generic function.  Load and create the user interface
              hierarchy according to the description in  the  UID_file(s).  No
              user  interface  must  be  already loaded. The user interface is
              displayed on the attached display.
              The current user interface can  be  distroyed  with  the  XPURGE
              function call in order to reload a new one.
              The  main UIL interface description file must include at least a
              top level XmMainWindow widget  hierarchy  called  "main_window",
              which  is  fetched  and  managed during the initialization.  The
              other top level widget can be later on fetched  by  the  XFETCHW
              function.
              If  Nodal  was started with the /-t trace flag, some information
              will be printed on stderr device about inconsistency in the  UIL
              description (widget identifier out of range, duplication of wid-
              get with the same id, creation widget procedure is the wrong one
              for the widget class).
              Function only available on UNIX system with X11 window facility.

              Any registered call backs are removed by the call to XPURGE.
              Example:
                  xinit("my_application_main_uid_file");
                  xinit("main_uid_file, secondary_uid_file");

       Xmessage
              X Dialog popup convenient function.  Bring  on  the  screen  the
              MessageDialog box of the defined type with the string concatena-
              tion displayed as the message text. Only the OK button is avail-
              able.   The  type  of  MessageBox can be evaluated from the name
              with XSYMBOL function call.  The  available  types  are  :  DIA-
              LOG_ERROR DIALOG_INFORMATION DIALOG_MESSAGE DIALOG_QUESTION DIA-
              LOG_WARNING DIALOG_WORKING
              If the callback block number is not equal to zero, this callback
              block will be executed when the OK button is pushed.

              If  a  more  sophisticated  use  of  the Message Dialog popup is
              needed, a Dialog Box  (XmErrorDialog,  XmInformationDialog  ...)
              main  widget  must be used and created with the XFETCHW function
              call. This way provide a multiple callback facility and a better
              control on widget resources.
              Function only available on UNIX system with X11 window facility.
              Example:
                  $set xmessage(xsymbol("DIALOG_WARNING"),  callback_block)  =
              text

       Xname  X  window generic function.  Return the widget Nodal name string
              of the given widget instance.
              Function only available on UNIX system with X11 window facility.
              Example: $set wi.nam = xname(label, 3)

       Xor    return the exclusive OR value of two evaluated arguments.
              Example: set x = xor(a, b)

       Xplot  X window and graphic convenient function to plot data.
              An  easy  way  to  plot  in a dedicated graphic window the graph
              defined by array(s).  During the first call the setting  of  the
              graph/plot widgets is done according to the array(s) provided in
              the parameter list.  If two arrays are given , they are taken as
              the Y and X coordinates of the plot. If only one is given, the X
              axis is defined as integer 1 to Y array size.
              Up to four plots can be put on the graph. The X  coordinates  (X
              axis)  are  common  to the four plots. Y values are independent,
              but the size of the arrays must be the same.
              During further call to XPLOT is the array is the same as one  of
              the  already plotted arrays, the new data overwrite the previous
              values, else if there is still some plots available (in the max-
              imum of four), the array is added to the current plots.

              Some  interactions  with the graph are provided by the menu bar,
              in particular the window can be destroyed (close)  in  order  to
              redo a completely new graph.
              With  the  Customize  push  down menu the user can interactively
              modify the graph. From the customization panel, with the  Gener-
              ate  Code  action button, a Nodal block of code can be generated
              automatically to setup (and update) graph widgets  according  to
              the  current  graph definition. The code can be generated either
              for XPLOT graph style or for standard graph / plots  Nodal  wid-
              gets.   The  generation of Nodal code facility is only available
              when Nodal is in command mode (waiting on the Nodal prompt for a
              user command).  and not when Nodal run a program.

              If  needed  this  function execute an implicit XINIT call, which
              set set Nodal in X window mode, and by this way all the  already
              registered asynchronous processing are discarded and must be re-
              issued.
              The file name from which the specific user interface is  fetched
              is  by  default  plot_screen_utl  in /usr/local/nodal directory.
              The full file name path can be redefined  with  the  environment
              variable  PS_XNODAL_UTIL_UID,  and  the  default  directory with
              NODALPATH.
              Example:
                  xplot(yarray, xarray)
                  xplot(yar2)

       Xposinfo
              X window generic function.  Print  significant  geometrical  and
              hierarchical  informations  for  the given widget in the current
              user interface. The list goes from the given widget back to  the
              top_level  in  the  hierarchy.  The  Global position is given in
              relation to the top_level window of the application.

              Nb : For the Plot CERN PS widget, the PLTIDN function call  must
              be used to define the widget_id.

              Function only available on UNIX system with X11 window facility.
              Example: xposinfo(widget_class, widget_id)

       Xprompt
              X Dialog popup convenient function.  Bring  on  the  screen  the
              PromptDialog  box  with  the  text disposed as the selected text
              (default answer). Only the  OK  button  and  CANCEL  button  are
              available.
              When the OK button is activated, the answer (the selection text)
              is stored into the RO string environment variable SELECT.
              When the CANCEL button is activated, the RO  string  environment
              variable SELECT is cleared (null length string).
              If the callback block number is not equal to zero, this callback
              block will be executed when the OK button or the  CANCEL  button
              is  pushed. The length of the SELECT string variable can be used
              to select which action was done.

              If a more sophisticated  use  of  the  Prompt  Dialog  popup  is
              needed,  a  XmPromptDialog Box main widget must be used and cre-
              ated with the XFETCHW function call. This way provide a multiple
              callback facility and a better control on widget resources.
              Function only available on UNIX system with X11 window facility.
              Example:
                  $set xprompt(selection_label, callback_block) = text

       Xpsinit
              PS ND-console standard user interface frame function.  Fetch the
              user interface of a standard X window application and set up the
              Nodal environment for this application.
              This function must be called before  any  attempt  to  call  any
              other  functions  or  to read any Nodal environment variables of
              the PS standard X window application.

              The parameters define the application user interface  definition
              UID  file,  and  the complementary user interface definition UID
              file  (optional  parameter  2nd_uidle).   The  application  user
              interface  definition  UID file must be derivated from the stan-
              dard Nodal user interface frame file :
              /usr/local/nodal/nodal_frame.uil

              The screens emulation user interface definition is also  fetched
              from  the file ps_screen_emul.uid .  This file name can be over-
              write with the environment variable : PS_SCREEN_EMUL_UID.   Lat-
              ter,  emulated  video  or graphic screens can be fetched by PSS-
              CREEN function calls.
              This screens definition user interface file is loaded before the
              second (optional) user UID file.
              Example: xpsinit(my_applic.uid, 2nd_uid_file)

       Xpurge X  window generic function.  Destroy the current user interface.
              All the associated resources are lost. A new user interface  can
              be loaded after.
              Function only available on UNIX system with X11 window facility.

              This facility is available during a X  nodal  session  (X  Motif
              user  interface  loaded)  or  a  simple  terminal  session Nodal
              (without the X Motif user interface in use).
              Any registered call backs are removed by the call to XPURGE.
              Example: xpurge

       Xrevent
              Read the last received event message. The message data parameter
              must  of a type (string, integer array of 20 or 10 or long array
              of 5) which matches with the message type to be read.  The  mes-
              sage  type can be assessed with the Xrevtype function. The func-
              tion returns also the message sequence number as computed by the
              receiver.
              A  Nodal  callback  block  (or line) can be attached to the main
              window (widget class name : main, widget number : 1) by  Xcallbk
              to be activated on receiving an event message.
              Function only available on UNIX system with X11 window facility.
              Example: xrevent(message_data, message_sequence_number)

       Xrevtype
              Read the last received event message type  and  statistics.  The
              message  type  can  be  used to select the suitable message data
              variable type for xrevent. Returns  also  the  message  sequence
              number,  the  message time stamp and a new message flg (1 if the
              message is no yet read, 0 otherwise). The message time stamp  is
              the  time value (in seconds) of the computer when the message is
              received.
              Function only available on UNIX system with X11 window facility.
              This  facility  is  available  during a X nodal session (X Motif
              user interface loaded) or a simple terminal session Nodal (with-
              out the X Motif user interface in use).
              Example:
                  xrevtype(message_type, message_sequence_number,
                    message_time_stamp, new_message_flg)

       Xrselect
              X  window  generic  function.   Read  the  selection if any, and
              returns the selected string to caller.  If no selection, or  not
              a string returns and empty string.
              Example: $set st = Xrselect

       Xselectb
              X  Dialog  popup  convenient  function.  Bring on the screen the
              SelectionDialog box with the text disposed as the selected  text
              (default  answer).   The  item list is defined by the content of
              the item string_array. The order of the  item  in  the  list  is
              given  by  the  order of the strings in the array and not by the
              string index value.  In order to retrieve the  item  index  from
              the  answer  (in the SELECT environment variable) a call to FIND
              function can be used.
              Only the OK button and CANCEL button are available.
              When the OK button is activated, the answer (the selection text)
              is stored into the RO string environment variable SELECT.
              When  the  CANCEL button is activated, the RO string environment
              variable SELECT is cleared (null length string).
              If the callback block number is not equal to zero, this callback
              block  will  be executed when the OK button or the CANCEL button
              is pushed. The length of the SELECT string variable can be  used
              to select which action was done.

              If  a  more  sophisticated  use of the Selection Dialog popup is
              needed, a XmSelectionDialog Box main widget  must  be  used  and
              created  with the XFETCHW function call. This way provide a mul-
              tiple  callback  facility  and  a  better  control   on   widget
              resources.
              Function only available on UNIX system with X11 window facility.
              Example:
                  dim_st it
                  $set it(10) = "1st item"
                  $set it(3) = "2nd item"
                  $set it(1) = "3rd item"
                  $set xselectb(selection_label, item_array, callback_block) =
              text

       Xsensit
              X window generic function.  Read or write the Sensitive resource
              of a widget. The FALSE value is a 0 value, a TRUE is 1  (or  any
              non  zero).  A  widget  which is not sensitive will not react on
              event type  KeyPress,  KeyRelease,  ButtonPress,  ButtonRelease,
              MotionNotifiy,   LeaveNotify,  FocusIn,  FocusOut.  XINFO  gives
              information on UnSensitive widget. More information on sensitive
              widget  resource  can  be found in X Toolkit Intrinsics - C Lan-
              guage Interface manual.
              This facility is very useful for buttons.  It  will  allowed  to
              disable  temporarily  the action of the button, without removing
              the button from the screen. It can be used also with  the  other
              widgets  which  handles user interaction.  Unsensitive widget is
              normally signaled on the screen by a visual effect.
              This function cannot be applyed on Main widget class.
              Function only available on UNIX system with X11 window facility.
              Example:
                  set Xsensit(widget_class, widget_id) = 0;
                  set Xsensit(widget_class, widget_id) = 1;

       Xsetrs X  window  generic  function.   Set  a widget resource parameter
              value from the Nodal item.  The list of resources available (the
              selection parameter) is detailed in the widget class description
              paragraph.

              Nb : For the Plot (CERN PS widget),  the  PLTIDN  function  call
              must be used to define the widget_id.

              Function only available on UNIX system with X11 window facility.
              Example: Xsetrs(widget_class, widget_id, selection, item);

       Xsevent
              Send an event message to the channel. The channel ident  is  the
              value  returned by the Xconct call. The message parameter is the
              string or the array (integer array or long array)  to  be  send.
              The  message  type  is  a  value which qualify the message to be
              send.

              The current message type are :
              0 : implicit type. Actual type  set  according  to  the  message
                  variable type.
              1 : string of characters (maximum of 20 characters).
              2 : small  integer array (array of 20 integers in range -128 ...
                  127).
              3 : integer array (array of 10 integers).
              4 : long array ( array of 5 long integers).

              Function only available on UNIX system with X11 window facility.
              Example: xsevent(channel_ident, message, message_type)

       Xsymbol
              X  window  generic  function.   Return the value of a predefined
              widget symbol.  The current symbol lists available  cover  graph
              and   plot   widget  symbols  (case  sensitive)  for  PlotStyle,
              LineStyle, Marker and general  symbols  HighlightNone,  and  the
              boolean values (case insensitive) TRUE and FALSE.
              This  function  is normally used in conjunction with the XGETRS,
              XSETRS functions.
              Function only available on UNIX system with X11 window facility.
              Example:
                  set m.typ = xsymbol("Square")
                  xsetrs(graph, graph_id, plot_id, Marker, m.typ)

       Xtimer Setup  or disable a timer. When the time is over the Nodal call-
              back block (or line) as  defined  by  callback  Nodalblocknumber
              parameter is executed.
              if  repeat_flag  <>  0 : the timer is automatically re-armed. It
              must be explicitly disarmed to be stopped.
              In a similar way as for widget callback if callback  Nodalblock-
              number = 0 : the timer is disabled.
              A  duration  less than 0.250 sec is not allowed (in order to not
              overload the computer).
              Only one Xtimer resource is available.
              An interrupt signal (generated by Ctrl C) distroy the Timer.
              Function only available on UNIX system with X11 window facility.
              Example:
                  Xtimer(duration, repeat_flag, callback_Nodalblocknumber)

       Xwait  wait  to be wake-up by a Nodal event from a callback or by time-
              out.  Return the reason which trigger the wake-up.   This  func-
              tion does also the registration of any pending Nodal event.  The
              parameter specify the duration of maximum time  to  wait  (time-
              out).
              if duration < 0 : no time-out (indefinite wait), only for inter-
              active Nodal.
              duration = 0 ( < 0.01 s) : just to  check  for  pending  wakeup-
              event.
              duration > 0 : wait for maximum time duration.
              XWAIT cannot be called from a Nodal callback.
              Refer  to  REASON  description  for the decoding of the returned
              reason parameter.
              Function only available on UNIX system.
              This facility is available during a X  nodal  session  (X  Motif
              user interface loaded) or a simple terminal session Nodal (with-
              out the X Motif user interface in use).
              Example: set re = xwait(duration)

       Yellow PS ND-console emulation environment read only string variable.
              Yellow color video screen control character.

       Zdef   The zdef Nodal command clears  the  defined  function  area  and
              unlink any Shared functions segments linked which are not frozen
              (ref NODAL_INIT environment variable).
              Example: zdef

CAMAC and VME access facilities.
       Facility available in a VME chassis in the Device Stub Controller (DSC)
       configuration running Lynx OS or OS9.  It provides simple and low level
       access to VME and CAMAC modules.  The CAMAC acces is done  through  the
       CAMAC  serial  highway  driver  SDVME  PS 80385 CO for LYNX OS, and the
       CAMAC branch highway driver VME module CES CBD8210 for OS9.

       CAMAC facilities

       Camconf
              get CAMAC loop configuration. This configuration must be defined
              by  the  DSCIOconfig facility (ref PS/CO Note 93-82).  The input
              for the definition is in the /etc/rc.local file.

              Syntax:
                     camconf(L, SZ, AR)

              Where:
                     L =   CAMAC loop number for which  the  configuration  is
                           requested.
                     SZ =  Return  the  number  of  CAMAC  crates  in the loop
                           (which is the number of  significant  data  in  the
                           CAMAC_crate_number_array).
                     AR =  Long array of CAMAC crate numbers. The size of this
                           array must be large enought  to  receive  the  loop
                           configuration.

       Camdr  perform a sequence of CAMAC transactions.

              Syntax:
                     camdr(V, CD, RP, CA, CC)

              Where:
                     V  =  Long array of data, array size >= CD array size.
                     CD =  Long array of encoded LCNAF, array size = number of
                           transactions.
                     RP =  Define mode of CAMAC transaction check :
                           > 0 max RP retry on  each  action  while  Q  false,
                               check Q response.
                           = 0 no retry, check Q response.
                           < 0 no retry, ignore Q response.
                     CA =  Long  array  of  completion codes (equipment access
                           error convention), array size >= CD array size.
                           0   no error
                           170 no X response
                     CC =  Global Completion Code (equipment access error con-
                           vention).
                           0   no error
                           68  one error at least.

              GCAMAD must be used to encode CAMAC LCNAF address / function.
              The  number  of  CAMAC transactions is implicitly defined by the
              array size of the CD array (encoded CNAF), the array size of the
              data  long  array  and  the completion code must equal or larger
              that the CD array size.

       Gcamad encod a CNAF CAMAC address / function.
              This is intended to set up the CD array in  CAMDR,  MCAMT  func-
              tions.   It  can be used also to test the supported CAMAC branch
              driver VME module.

              Syntax:
                     Set CA = gcamad(L, C, N, A, F)

              Where:
                     L = CAMAC Loop (or Branch) number.
                     C = Crate number.
                     N = Module Slot number.
                     A = Subaddress in the CAMAC module.
                     F = CAMAC function code.

       Mcamt  perform a CAMAC block access (single  CAMAC  function,  multiple
              data).

              Syntax:

              Where:
                     V  =  Data  long  array, the size of the array define the
                           number of CAMAC transactions.
                     CD =  Encoded Camac LCNAF address / function.
                     RP =  Define mode of CAMAC transaction check :
                           > 0 max RP retry on  each  action  while  Q  false,
                               check Q response.
                           = 0 no retry, check Q response.
                           < 0 no retry, ignore Q response.
                     NB =  returned number of successful CAMAC transaction.
                     CC =  completion  code  (equipment  access  error conven-
                           tion).
                           0   no error.
                           169 Q checked, and no Q response.
                           170 no X response.

              GCAMAD must be used to encode CAMAC LCNAF address / function.
              The number of CAMAC transactions is implicitly  defined  by  the
              array size of the V data long array.

       Scam   perform a Read or Write CAMAC access

              Syntax:
                     Set V = scam(L, C, N, A, F, QX); % read or control
                     Set scam(L, C, N, A, F, QX) = V; % write

              Where:
                     L  =  CAMAC Loop (or Branch) number.
                     C  =  Crate number in the Loop.
                     N  =  Module Slot number in the crate.
                     A  =  Subaddress in the CAMAC module
                     F  =  Code of CAMAC function to be performed.
                     QX =  Q and X response of required CAMAC access:
                           bit 15 =
                                   Q  response,  1 = Q, 0 = no Q (and the sign
                                   of QX : QX <0 = Q, QX >= 0 no Q response)
                           bit 14 =
                                   X response, 1 = X, 0 = no X

       VME facilities

       The standard access routine to do VME transactions  is  the  VME  func-
       tions.

       The  VMETEST  (and  VMEDIS  for  OS9) function can be used for easy and
       quick test of a VME chassis. They provide an overall check of the  main
       functions of the VME bus.

       Vme    perform a Read or Write single VME data access.

              Syntax:
                     Set V = vme(AM, B, O, SZ); read from VME
                     Set vme(AM, B ,O, SZ) = V; write to VME

              Where:
                     AM =  Address Modifier.  This value is used :
                           - to  issue the value of VME Address Modifier lines
                             during the VME transaction.
                           - to define the maximum  acceptable  value  of  the
                             base address.
                           - to  check if the effective address is in the cor-
                             rect range,  according  to  VME  addressing  case
                             (Short, Standard or Extended).

                           The  only  VME  function  which can be executed are
                           data access.  No supervisor transaction can be done
                           from  Nodal  because the running state of Nodal, as
                           any normal application, is always user mode.

                           The corresponding AM values are  (hexadecimal  val-
                           ues) :
                           [[29 = Short  non  privileged  data access, 16 bits
                                  address.
                           [[39 = Standard non privileged data access, 24 bits
                                  address.
                           [[09 = Extended non privileged data access, 32 bits
                                  address.

                     B  =  VME Base Address. This value must be in  the  range
                           defined  by  the  Address  Modifier  parameter (AM)
                           value :
                           0 .. FFFF     Short data access (16  bits  address,
                                         AM = [[29).
                           0 .. FFFFFF   Standard   data   access   (24   bits
                                         address, AM = [[39).
                           0 .. FFFFFFFF Extended   data   access   (32   bits
                                         address, AM = [[09).

                           Normally  this  VME  Base  Address  must be used to
                           define the VME module address, as  defined  by  the
                           module address jumpers or switches (ref to the mod-
                           ule data sheet).

                     O  =  Offset relative to the VME Base Address.
                           Normally this Offset must be used to define the VME
                           module  registers  displacement  (ref to the module
                           data sheet).
                           The effective VME address is :
                           VME Base Address + Offset value.

                           This effective address must be within the VME  win-
                           dow,  which  is for the LYNX OS systems a 64k bytes
                           address space starting at 64k boundary.
                           In the case of Extended data  access  the  LYNX  OS
                           reduce  the  VME space to a subrange which is func-
                           tion of the actual hardware configuration  (ref  to
                           the VME chassis processor data sheet for this limi-
                           tation).

                     SZ =  VME access data size :
                           1 = single-byte access.
                           2 = double-byte access.
                           4 = quad-byte access.

                     The data size to be used depends on the target VME module
                     (ref to the module data sheet).

       Vmeadd Return  the VME Base Address and the Address Modifier of a given
              module, as defined in the local configuration.   The  module  is
              defined by its module type name and its index.
              These  VME  Base Address and the Address Modifier can be used in
              later VME calls.
              The function call VMECONF can be use to get  modules  types  and
              index of all the modules of the local configuration.

              Syntax:
                     set B = vmeadd(MT, MI, AM)

              Where:
                     MT =  Module type name.
                     MI =  Module  index  for the type in the local configura-
                           tion.
                     AM =  Address Modifier returned (can be directly used  in
                           VME call).
                     B  =  VME  Base Address returned (can be directly used in
                           VME call).

              The current DSC configuration can be displayed  by  the  showioc
              service program.

       Vmeconf
              Return the module type and index in the type of the nth VME con-
              figuration item of the local DSC. The item number goes from 1 to
              max.  Any attempt to call VMECONF for an item number larger than
              the current local maxi returns an DEVICE not connected error.
              These Module type and index can be used in later VMEADD calls.

              Syntax:
                     $set MT = vmeconf(NB, MI)

              Where:
                     NB =  Item number of the local configuration (in range  1
                           .. max ).
                     MI =  Returned  module  index  for  the type in the local
                           configuration.
                     MT =  Module type name (as defined  in  the  Oracle  Data
                           Base).

              The  current  DSC  configuration can be displayed by the showioc
              service program.

       Vmedis Function to Read / Write VME display module CES VMDIS8003 (func-
              tion currently only available on OS9 system).
              This is intended to make reachable this module to allow checking
              of the VME transactions.
              Consult the VMEdisplay CES VMDIS8003 data sheet for more  infor-
              mations.

              Syntax:
                     Set V = vmedis(I, SZ); % read
                     Set vmedis(ADD, SZ) = V; % write

              Where:
                     I  Liseqm=
                           Index of register to be read
                     AD =  VME address for the VME cycle.
                     SZ =  Size of transfer: it can be = 1, 2 or 4 (byte, word
                           or long)
                     AV =  Data for the VME cycle.

       Vmemngt
              Close VME window(s) which was implicitly opened for VME transac-
              tions by previous VME function calls.
              It is a good practice to close any VME windows which are not any
              more used, this will free system resources.

              Syntax:
                     vmemngt(AM, B)

              Where:
                     AM =  VME address modifier as defined in the VME calls.
                     B  =  VME base address as defined in the VME calls.

       Vmetest
              perform a quick test of the main functions of the VME bus  (test
              a  VME  crate).  This function returns a bit patern which is the
              result of the bus check.

              Syntax:
                     Set C = vmetest(P, T)

              Where:
                     P = print flag,
                         0 = no printout
                         1 = verbose printout of the results of the test(s)
                     T = test to be done
                         0 = execute all the tests 1 .. 8 in sequence
                         1 = test VME data lines D00 .. D31
                         2 = test diaphony on data lines
                         3 = test DS0 line with a Single BYTE(1) access
                         4 = test DS1 line with a Single BYTE(0) access
                         5 = test A1 line with a Single BYTE(2) access
                         6 = test LWORD line with a Quad BYTE(0-3) access
                         7 = test address lines A02 .. A23 with Quad BYTE(0-3)
                             access
                         8 = test  address lines A23 .. A31with Quad BYTE(0-3)
                             access
                     C = returned value : the test completion bit patern
                         bit 0 = 1
                                 bus error during VME transaction.  when  this
                                 error occurs, it ends immediately the test.
                         bit 1 = 1
                                 data lines D00 .. D31 error
                         bit 2 = 1
                                 address  lines  A1  .. A31, DS0, DS1 or LWORD
                                 lines error.

              According to the specification of the SAC module,  the  test  of
              the  Data  lines  must  be  done  before any test of the Address
              lines. The Data lines tests assume that the basic  VME  protocol
              is working, with the Address Modifier lines working properly.

              This  facility  assume the availability of the CERN SAC VME mod-
              ule, and its associated Lynx-OS driver. If  the  driver  is  not
              installed,  or  is  not running, the Nodal error DEVICE not con-
              nected is returned.
              More information on the VME bus is available in The VMEbus Hand-
              book  A  User’s Guide to the IEEE 1014 and IEC 821 Microcomputer
              BUS, VITA Publication.

LYNX OS VERSION
       Nodal is available for LYNX OS RT-UNIX systems on VME and  PC  systems.
       This  version  is  very similar to the UNIX version, but a few restric-
       tions exist for this version.
       - X window  facilities  are  not  available,  in  future  they  can  be
         included.
         Man  function  is  not available. The man UNIX utility program is not
         distributed with LYNX OS.
       - Equipment access is restricted to the equipments under the control of
         the  local  processor. Some functions of the equipment access package
         which need access to the DBRT on line data base are not available.

       VME and CAMAC facilities are  available  on  LYNX  VME  systems.  CAMAC
       assume the availability of CAMAC Serial Highway Driver (SDVME) VME mod-
       ule and its associated software packages.

PC MS-DOS VERSION
       Nodal is available for MS-DOS systems on IBM-PC systems.  This  version
       is  similar  to  the  UNIX  version,  but with some restrictions in the
       extended facilities.

       - X window facilities are not available, no plan exists to  include  MS
         Window facilities.
         Man  function  is not available. A compatible program to the man UNIX
         utility does not exist in MS-DOS.
       - No Equipment access and no hardware access are provided in the  stan-
         dard distribution.
       - No  shared  memory facility and no process synchronization are avail-
         able.
       - Only IMEX and EXEC remote servers are supported, file server  is  not
         available.

       When  any  of the IMEX or EXEC server is started, both IMEX and EXECUTE
       services are provided, and working spaces are defined as  for  an  EXEC
       server  case. At the same time some interactif Nodal facility is avail-
       able. The working area space is defined  as  32k  words.   The  Defined
       function  area  is  the  same  as  for the server case (by default EXEC
       server case).  Some care must be taken in  order  to  not  disturb  the
       server  processing  for  interactif programming.  This interactive pro-
       cessing is surveyed by a pseudo time-out, and if some processing is too
       long  a  "resources exhausted" error is retuned.  These constraints are
       the result of the single program capability of MS-DOS  system,  and  by
       the  way  servers (IMEX and EXEC) and interactive services are provided
       by the same Nodal process.
       The interactive working area allocated is a fixed 32k Nodal words. This
       value cannot be changed by Nodal start parameters.
       To  stop and exit the Nodal IMEX / EXEC server the QUIT command must be
       executed interactively two time in less than 10 seconds.
       This version assume the availability of the PCTCP software package in a
       version greater or equal to V2.2 (PCTCPAPI development kit).

       This  version  was  developed  in collaboration between CERN Geneva and
       IHEP Protvino.

OS9 VERSION
       Nodal is available for OS9 systems. But  some  restrictions  exist  for
       this version.

       - Full  screen  editor facility ( PED function ) is normally not avail-
         able.
       - Output of a carriage return character to terminal always result in  a
         new  line  (  carriage-return & line-feed). This is a property of the
         Sequential Character File manager (SCF).  Also  for  this  point  OS9
         Nodal does not behave like in Unix environment ( where new line char-
         acter is line feed ).
       - Output to terminal from file driven Nodal can be  harmful.  This  can
         result  in a dead lock situation between this program and the program
         doing keyboard input.
       - Only one network Nodal server can be started by  Nodal  command  with
         the -s option. In order to start all the servers, the command must be
         repeated for every one of them.
       - No File server is available. It is assumed that OS9 system has little
         local  file  storage  facility, and  no permanent local mass storage.
         The default Nodal file server mechanism is foreseen for this case.
       - No equipment access facility is provided.

       VME and CAMAC facilities are available on OS9 systems. CAMAC assume the
       availability of CAMAC Branch Driver and it associated software package.

       This version was developed in collaboration  between  CERN  Geneva  and
       SINCROTRONE lab Triestre.

VERSION RELEASE
       Current released version : 2.7, July 17 1995
       Last update of the Nodal man page (version $Revision: 27.19 $) : $Date:
       1998/04/01 16:32:47 $
       Nodal sources are managed by SCCS in /ps/src/share/mcr/nodal directory

NEW FEATURES
       The features which was introduced in Nodal between the 26 November 1992
       and the 19 November 1993 manual edition are :

       - AQCYCLE MDR acquisition cycle number
       - LISWSET list the defined working sets
       - EQPWSET list the attached working set content
       - LABSTRG Read or write the label of a label_string widget
       - XIDENT , XNAME widget name / ident conversions
       - GETENV read a named Unix environment variable
       - The maximum number of Digit widgets is set to 12
       - OPMACH environment variable and -op_machine option
       - PLSTLG environment variable and -pls_telegram option
       - Help option with "-?"
       - PS_SCREEN_EMUL_UID environment variable and file (default name :
         ps_screen_emul.uil)
       - LISC optional filter parameter
       - XFRAMUPD Update the standard widgets in the user interface frame
       - XPSINIT Fetch a standard user interface
       - PSSCREEN Add more screens on the user interface
       - FFT and SPECTRUM for any data size (up to 2048)
       - LISEQM LISPROP can list in alphabetic or numeric order (default
         alpha)
       - LISEQM on DSC provide the list of equipment number, (if the EQM pro-
         vide the MBLIST property).
       - LISEQM can list on Workstation the configuration of DSCs
       - WSETLST extract a list of working set according to filter
       - PLTSXY with option for setting of X from 1 to N (only 1 array : Y)
       - XPLOT an easy plot facility
       - ANAMP, NAMPL : emulation of old PLS functions
       - LISTGM display PLS, Tgm tables and super cycles
       - PLSGROUP, PLSGDESC, PLSLNAME : PLS, Tgm functions
       - CTIME can also convert a time value
       - ?ON ?OFF can be use to dynamicly turn on / off the trace flag
       - INTRBLK : call back block on interrupt event
       - Automatic code generation for graph / plot in XPLOT customize menu
         and Graph Customize button in Xnodal facility.
       - IMEX and EXECUTE in MS-DOS are multipurpose servers (with interactif
         capability)
       - Full support for new style working set
       - EQPWSAR extract the equipment array id list form the attached working
         set
       - specialIO option for Lynx-OS IO debugging facilities
       - VMETEST quick and easy VME bus checkout
       - SOS multiplexor APAGE, ROUTE, SOSER and SREAD functions

       The  new  features introduced in Nodal from the time of the 19 November
       1993 edition of manual (last paper edition) :

       - Extended MAN facility : OPTION, CHAPTER, SPECIAL_FILE, UNIX_VAR
       - APROPOS : get the list of Nodal item according to a keyword
       - ?? : 32 bits binary printing control character.
       - SOSINFO : display status of the connected SOS signal to a console
       - SOSAGGST : display status of the SOS agglomeration(s)
       - DSCBOOT : get the data to reboot the given DSC
       - DSCLST : list of DSC for the given ’Accelerator’
       - LISDSC : print the list of defined DSC
       - DSCEQM : array of the equipment module in the given DSC
       - DSCEQP : array of the equipment number in the DSC for the given EQM
       - ARRINS : insert a data into an array
       - Full set of comparison operator without approximation
       - PLSOLUSR : convert the new CPS user line number in old user line num-
         ber
       - ALRMESS : get the string for the alarm code

AUTHORS
       Gerard Cuisinier / Fabien Perriollat (kernel) Fabien.Perriollat@cern.ch
       Fabien Perriollat (X11 window facilities) Fabien.Perriollat@cern.ch
       Alain Gagnaire (CAMAC & VME facilities) Alain.Gagnaire@cern.ch

       CERN PS division, 1211 Geneva 23, Switzerland.

SEE ALSO
       bitmap(1X), ctime(3),  csh(1),  environ(7),  intro(3n),  ipcs(1),  net-
       work(5),    local_event_server(ps),   global_event_server(ps),   sh(1),
       stty(1), system(3), tgm(local), tty(4),  termio(4),  termios(4),  term-
       cap(5), tset(1), X(1X)

ANALYTICAL INDEX
       Array  Arrins Arsize Copy Dimension First Max Min

       Array of Equipment
              Dsceqm Dsceqp Eqpfiltr Eqpwsar Eqpwset Nexteqp Wsetlst

       Asynchronous Equipment acquisition (Aqc or MDR package)
              Aqccbk Aqcermes Aqcfec Aqcfreez Aqcinfo Aqcstart Aqcstop Aqcsubs
              Aqcunfrz Aqcycle Eqpfiltr Eqpwsar Eqpwset Lisv

       Asynchronous processing
              $ask Aqccbk Ask Asyncfz Intrblk Lisv Openknob  Plsolusr  Plsuser
              Plstlg  Psconsol  Reason Tvedit Wakeup Wait-time Xcallbk Xcbkarr
              Xcbreaso Xevtcb Xinfo Xinit Xpurge Xtimer Xwait

       Bit    And Bit Ior Neg Shift Xor

       Boolean operators
              Or = <> > < >= <= == != >> << >>= <<=

       CAMAC IO
              Camdr Camconf Gcamad Mcamt Scam

       CERN PS Widget Digit
              Digact Digcar Digcol Digiar Digmes Digsvc Digval  Digvar  Digvca
              Digvia

       CERN PS Widget Graph and Plot
              Affine  Grhact Grhxyp Lqfit Pltidn Pltsxy Pltx Pltxy Plty Smooth
              Smoothda Xplot

       CERN PS Widget Wheelswitch
              Knbacq Knbact Knbval

       Condition, comparison and relation
              $if if while = <> < > <= >= == != << >> <<= >>=

       Convenient function for window and graphic
              Xplot

       Data conversion
              ? ?? [ [[ ] ]] %x.y Copy Eval Long Ronly

       Date and Time
              Ctime Date Time Wait-time Xtimer

       DSC facility
              Dscboot Dsceqm Dsceqp Dsclst lisdsc Liseqm

       Debugging and tracing
              ! ?on ?off Aqcinfo Cpinfo Data  Eqpinfo  Ipcinfo  Lisdsc  Listgm
              Sosaggst Sosinfo Wsetinfo Xclinfo Xinfo Xposinfo

       DSC IO Camdr  Camconf Gcamad Mcamt Scam Vme Vmeadd Vmeconf Vmedis Vmem-
              ngt Vmetest

       Editing and typing
              Erase History Learn Nodlin Ped Replay Resume Squeez Stop

       Equipment access
              Acall Aeqm Alrmess Dsceqm Dsceqp  Emmess  Eqm  Eqpdata  Eqpfiltr
              Eqpinfo  Eqpname Eqpwsar Eqpwset Liseqm Lisprop Nexteqp Openknob
              Optsel Plslin Plstlg Plsolusr Plsuser Scall Symbol Symbs
              Eqp(1) Aeqp(1)

              (1) nota : Eqp & Aeqp are generic names, they do not  correspond
              to  actual facility. Eqp and eqp must be replaced by the name of
              an equipment module to describe an existing facility. Ex : Pow &
              Apow

       Environment variables
              Strmsz
              Plslin(3) Opmach(3) Optsel(3) Plstlg(3) Wset(3)
              Filesl(1) Select(1)
              Red(2)  Green(2)  Blue(2)  White(2) Lblue(2) Magent(2) Yellow(2)
              Black(2)  Backgr(2)   Invert(2)   Erase(2)   Ballgr(2)   Tpgr(2)
              Triger(2) Knvgr(2) Evengr(2) Usergr(2)

              (1)  variables which exist only when a X Window user environment
              is loaded.
              (2) variables which exist only when the PS Console  emulation  X
              Window user environment is loaded.
              (3) variables which exit only if some options are defined, or if
              environment variables are setup.

       Error  Alrmess Do Dsper Erf Erfc Emmess Ermes Error Errout

       File IO
              Close Clrkb Fcopy Fileno Idev Inbt Inpc Input  Odev  Open  Outbt
              Outc  Output Rwdata Serase Server Spool Svddir Stderr Stdin Std-
              out

       Global variables
              Arg Ipcinfo Linkgd Lisg Lshmgd Optsel Plslin SShmgd Strarg

       Keyboard and screen IO
              Clrkb Serase Stty Stderr Stdin Stdout Idev Odev

       Information on subsytems
              Aqcinfo Cpinfo Data Eqpinfo Ident Ipcinfo  Lisdsc  Listgm  Ntype
              Sccs Sosaggst Sosinfo Stty Wsetinfo Xclinfo Xinfo Xposinfo

       List of items
              Data  Lisa  Lisc  Lisd  Lisdsc  Lisenv Liseqm Liserv Lisfst Lisg
              Lisindex Lisprop Lisr Listgm Liswset Lust Man What

       Main widget
              Maiact Xrevent Xrevtype

       Mathematical
              Abs Acos Acosh Affine Asin Asinh At2 Atan Atanh Bessel Cos  Cosh
              Erf  Erfc Exp Fft Fpt Int Lisa Log Log10 Lqfit Mod Pie Rand Ran-
              dom Sgn Sin Sinh Smooth Smoothda Spectrum Sqr Tan Tanh

       Miscellaneous
              Affine Ctime Dscboot Dsclst Getenv Getuc  Header  Intrblk  Learn
              Loc Lqfit Ntype Openknob Quit Quitblk Reason Replay Resume Setuc
              Symbs Smooth Smoothda System Error Errout Time

       Motif Dialog popup convenient functions
              Xfile Xmessage Xprompt Xselectb

       Motif Nodal widget Classes
              Button Digit Drawingarea Fileselectiondialog(1) Graph Knob Label
              Main Messagedialog(1) Menu Plot Scale Selectiondialog(1)

              (1) pseudo widget class to be used only in a Main class.

       Motif widget Button
              Butact Butcas Butinv Butmnu Butval

       Motif widget DrawingArea (video screen)
              Bitmap  Drwact  Kcurc  Kcurl  Kdsabl  Kenabl  Pixin Pixout Posit
              Tvedit Tvread Sdmin Sdmout Write

       Motif widget Label
              Labstrg

       Motif widget Scale
              Scaact Scaval

       Network
              Cpinfo Cpname Fromc Ident Ipaddr Ipstrg Lisc Liserv Local Server

       Nodal commands
              $ask  $do  $if  $match  $pattern $set $value ? ?off ?on Ask Call
              Data Define Dimension Do Edit End Erase Execute  For  Goto  Help
              History  If  Imex Ldef Lisd List Lisv Load Old Open Overlay Quit
              Remit Return Rof Run Save Sdef Set Type Value Wait While Zdef

       Pattern matching
              Abort Any Arb Break Fail Len Notany Pos Rpos Rtab Span Tab

       PLS and TGM
              Anamp Event Nampl Listgm Pls Plsgdesc Plsgroup Plslname Plsolusr
              Plsuser

       Process event synchronization
              Aqccbk  Event  Lisv  Mwait  Pls  Plstlg Plsolusr Plsuser Xevtact
              Xevtcb Xinfo

       Program control
              Aqccbk Chain Erase Ermes Error Errout Event Getuc Intrblk  Mwait
              Ntype Pls Plstlg Plsolusr Plsuser Quit Quitblk Remit Setuc Start
              System Time Turbo Twait Wakeup Wait-time Xconct  Xdisct  Xevtact
              Xevtcb Xsevent Xtimer Xwait

       Property suffix
              DBDAT DBREF MDR

       PS ND-console emulation
              Bandw  Buts Colour Dsper Event Graph Graphsz Legend Leglun Mwait
              Pls Psconsol Psscreen Twait
              Backgr Ballgr Black Blue Evenrg Erase Green Invert  Knvgr  Lblue
              Magent Red Tpgr Triger Usergr White Yellow
              Bitmap Clrkb Drwact Kcurc Kcurl Kdsabl Kenabl Pixin Pixout Posit
              Quitblk Tvedit Tvread Sdmin Sdmout Spool Write
              Anamp Fnswt Fseeq Fseip Fsnem Nampl Newwset Nnfec  Obpar  Optsel
              Plslin Wset Wsetinfo

       Standard X window user interface frame
              Psscreen Xframupd Xpsinit

       Status information
              Aqcinfo  Cpinfo Data Eqpinfo Ident Ipcinfo Lisa Lisc Lisd Lisdsc
              Lisenv Liseqm Liserv Lisfst Lisg Lisindex  Lisprop  Lisr  Listgm
              Liswset Lust Man Ntype Pls Sccs Stty What Wsetinfo Xclinfo Xinfo
              Xposinfo

       Shared functions
              Linkdf Lisd Lshmdf Sshmdf Zdef

       SOS multiplexor functions
              Apage Route Sosaggst Soser Sosinfo Sread

       String Alpha Ascii Cpinfo Cpname Ctime  Date  Ermes  Eval  Find  Getenv
              Ident Ipstrg Num Plslin Symbs Serase Size Sort Strmsz Subs Ucase
              Wset

       VME IO Vme Vmeadd Vmeconf Vmedis Vmemngt Vmetest

       Working set
              Dsceqm Dsceqp Dsclst Eqpfiltr Eqpwsar Eqpwset Fnswt Fseeq  Fseip
              Fsnem Liswset Newwset Nexteqp Nnfec Obpar Wset Wsetinfo Wsetlst

       X Window general
              Filesl  Psscreen  Select Wakeup Xcallbk Xcbkarr Xcbreaso Xclinfo
              Xcolor Xconct Xdcolor Xdisab Xdisct Xenab Xevtact Xevtcb Xfetchl
              Xfetchw  Xfile Xframupd Xgetrs Xident Xinfo Xinit Xmessage Xname
              Xplot Xposinfo Xprompt Xpsinit Xpurge Xrevent Xrevtype  Xrselect
              Xselectb Xsensit Xsetrs Xsevent Xsymbol Xtimer Xwait

                                                                  NODAL(local)