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)